
int __gmpn_jacobi_n(mp_ptr ap,mp_ptr bp,mp_size_t n,uint bits)

{
  bool bVar1;
  int iVar2;
  int iVar3;
  undefined *puVar4;
  undefined *puVar5;
  mp_ptr pmVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  mp_ptr pmVar10;
  uint uVar11;
  uint uVar12;
  mp_ptr pmVar13;
  mp_limb_t mVar14;
  uint uVar15;
  int iVar16;
  mp_ptr pmVar17;
  int iVar18;
  undefined *puVar19;
  undefined1 *puVar20;
  uint local_resc;
  undefined1 auStack_80 [32];
  tmp_reentrant_t *__tmp_marker;
  hgcd_matrix M;
  
  puVar19 = PTR___stack_chk_guard_0009d540;
  puVar20 = auStack_80;
  iVar2 = *(int *)PTR___stack_chk_guard_0009d540;
  local_resc = bits;
  if (n < 1000) {
    uVar15 = n << 2;
    __tmp_marker = (tmp_reentrant_t *)0x0;
    if (uVar15 < 0x7f01) goto LAB_0005471c;
LAB_00054ab8:
    __tmp_marker = (tmp_reentrant_t *)0x0;
    pmVar6 = (mp_ptr)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker);
  }
  else {
    uVar15 = (uint)(n << 1) / 3;
    iVar18 = n - uVar15;
    iVar3 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)(iVar18);
    iVar16 = n + uVar15 + -1;
    if (iVar16 < iVar3) {
      iVar16 = iVar3;
    }
    iVar16 = ((iVar18 + 1) / 2 + 1) * 4 + iVar16;
    if (iVar16 < n) {
      iVar16 = n;
    }
    uVar15 = iVar16 << 2;
    __tmp_marker = (tmp_reentrant_t *)0x0;
    if (0x7f00 < uVar15) goto LAB_00054ab8;
LAB_0005471c:
    __tmp_marker = (tmp_reentrant_t *)0x0;
    iVar16 = -(uVar15 + 7 & 0xfffffff8);
    puVar20 = auStack_80 + iVar16;
    pmVar6 = (mp_ptr)((int)&M + iVar16 + -0x1c);
  }
  if (n < 1000) {
    bVar1 = n < 3;
  }
  else {
    puVar4 = PTR_LAB_0009d07c + 0x45d0;
    do {
      uVar15 = (uint)(n << 1) / 3;
      iVar16 = n - uVar15;
      (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M,iVar16,pmVar6);
      *(uint **)(puVar20 + 0x10) = &local_resc;
      *(mp_ptr *)(puVar20 + 0x14) = pmVar6 + ((iVar16 + 1) / 2 + 1) * 4;
      iVar3 = (*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)(ap + uVar15,bp + uVar15,iVar16,&M);
      if (iVar3 < 1) {
        bits = 0;
        *(mp_ptr *)(puVar20 + 0x18) = pmVar6;
        *(uint **)(puVar20 + 0x14) = &local_resc;
        *(undefined **)(puVar20 + 0x10) = puVar4;
        pmVar10 = bp;
        n = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(ap,bp,n);
        if (n == 0) goto LAB_00054840;
      }
      else {
        *(mp_ptr *)(puVar20 + 0x14) = pmVar6 + ((iVar16 + 1) / 2 + 1) * 4;
        *(uint *)(puVar20 + 0x10) = uVar15;
        bits = (uint)bp;
        n = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M,uVar15 + iVar3,ap);
      }
      bVar1 = n < 3;
    } while (999 < n);
  }
  puVar4 = PTR___gmpn_clz_tab_0009d18c;
  if (!bVar1) {
    puVar5 = PTR_LAB_0009d07c + 0x45d0;
    pmVar13 = ap;
    do {
      while( true ) {
        pmVar17 = pmVar6;
        uVar15 = pmVar13[n + 0x3fffffff];
        uVar8 = bp[n + 0x3fffffff];
        uVar9 = uVar15 | uVar8;
        uVar12 = bp[n + 0x3ffffffe];
        uVar7 = pmVar13[n + 0x3ffffffe];
        if (-1 < (int)uVar9) {
          if (uVar9 < 0x10000) {
            iVar16 = 0;
            if (0xff < uVar9) {
              iVar16 = 0x18;
            }
            iVar3 = 9;
            if (0xff >= uVar9) {
              iVar3 = 1;
            }
          }
          else {
            iVar16 = 0x10;
            if (0xffffff < uVar9) {
              iVar16 = 8;
            }
            iVar3 = 0x19;
            if (0xffffff >= uVar9) {
              iVar3 = 0x11;
            }
          }
          uVar9 = iVar16 - (uint)(byte)puVar4[uVar9 >> iVar3];
          uVar11 = 0x20 - uVar9;
          uVar15 = uVar15 << (uVar9 & 0x1f) | uVar7 >> (uVar11 & 0x1f);
          uVar7 = pmVar13[n + 0x3ffffffd] >> (uVar11 & 0x1f) | uVar7 << (uVar9 & 0x1f);
          uVar8 = uVar8 << (uVar9 & 0x1f) | uVar12 >> (uVar11 & 0x1f);
          uVar12 = bp[n + 0x3ffffffd] >> (uVar11 & 0x1f) | uVar12 << (uVar9 & 0x1f);
        }
        *(uint **)(puVar20 + 0x14) = &local_resc;
        *(hgcd_matrix **)(puVar20 + 0x10) = &M;
        iVar16 = (*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar15,uVar7,uVar8,uVar12);
        if (iVar16 != 0) break;
        bits = 0;
        *(mp_ptr *)(puVar20 + 0x18) = pmVar17;
        *(uint **)(puVar20 + 0x14) = &local_resc;
        *(undefined **)(puVar20 + 0x10) = puVar5;
        pmVar10 = bp;
        n = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(pmVar13,bp,n);
        if (n == 0) goto LAB_00054840;
        ap = pmVar13;
        pmVar6 = pmVar17;
        if (n < 3) goto LAB_00054a30;
      }
      *(mp_size_t *)(puVar20 + 0x10) = n;
      bits = (uint)bp;
      n = (*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488)(&M,pmVar17,pmVar13);
      ap = pmVar17;
      pmVar6 = pmVar13;
      pmVar13 = pmVar17;
    } while (2 < n);
  }
LAB_00054a30:
  pmVar6 = ap;
  pmVar10 = bp;
  if (0xf < local_resc) {
    pmVar6 = bp;
    pmVar10 = ap;
  }
  if (n == 1) {
    mVar14 = *pmVar6;
    pmVar10 = (mp_ptr)*pmVar10;
    if (__tmp_marker != (tmp_reentrant_t *)0x0) {
      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();
    }
    if (pmVar10 == (mp_ptr)&DAT_00000001) {
      iVar16 = (local_resc & 1) * -2 + 1;
    }
    else {
      iVar16 = (*(code *)PTR___gmpn_jacobi_base_0009d408)(mVar14,pmVar10,local_resc << 1);
    }
  }
  else {
    iVar16 = (*(code *)PTR___gmpn_jacobi_2_0009d324)(pmVar6,pmVar10,local_resc & 1);
    if (__tmp_marker != (tmp_reentrant_t *)0x0) {
      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();
    }
  }
  goto LAB_0005486c;
LAB_00054840:
  if (__tmp_marker != (tmp_reentrant_t *)0x0) {
    (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();
  }
  if (local_resc == 0x1f) {
    iVar16 = 0;
  }
  else {
    iVar16 = (local_resc & 1) * -2 + 1;
  }
LAB_0005486c:
  if (iVar2 == *(int *)puVar19) {
    return iVar16;
  }
  puVar19 = PTR___stack_chk_fail_0009d4d0;
  (*(code *)PTR___stack_chk_fail_0009d4d0)();
  if (pmVar10 == (mp_ptr)0x0) {
    return 0x7fff0000;
  }
  uVar15 = (int)pmVar10 * 0x20;
  if (0x7fffffff - bits < uVar15) {
    return 0;
  }
  iVar2 = iVar2 + (int)pmVar10 * 4;
  uVar7 = *(uint *)(iVar2 + -4);
  if (uVar7 < 0x10000) {
    iVar16 = 0x20;
    if (0xff < uVar7) {
      iVar16 = 0x18;
    }
    iVar3 = 9;
    if (0xff >= uVar7) {
      iVar3 = 1;
    }
    uVar8 = iVar16 - (uint)*(byte *)(*(int *)(puVar19 + 0x4862c) + (uVar7 >> iVar3));
    iVar16 = uVar8 + 1;
joined_r0x00054cbc:
    uVar11 = uVar7 << (uVar8 & 0x1f);
    uVar12 = uVar11 >> 0xb;
    iVar16 = bits + (uVar15 - iVar16);
    if ((int)uVar8 < 0xb) {
      iVar3 = iVar2 + -4;
      uVar7 = uVar11 << 0x15;
      uVar9 = 0xb - uVar8;
    }
    else {
      if ((int)pmVar10 < 2) {
        uVar7 = 0;
        goto LAB_00054c48;
      }
      iVar3 = iVar2 + -8;
      uVar7 = *(uint *)(iVar2 + -8) << (uVar8 - 0xb & 0x1f);
      pmVar10 = (mp_ptr)((int)pmVar10 + -1);
      uVar9 = 0x2b - uVar8;
      uVar12 = (uVar11 | *(uint *)(iVar2 + -8) >> (-uVar8 & 0x1f)) >> 0xb;
    }
  }
  else {
    if (uVar7 < 0x1000000) {
      iVar16 = -(uint)*(byte *)(*(int *)(puVar19 + 0x4862c) + (uVar7 >> 0x11));
      uVar8 = iVar16 + 0x10;
      iVar16 = iVar16 + 0x11;
      goto joined_r0x00054cbc;
    }
    iVar3 = iVar2 + -4;
    iVar2 = -(uint)*(byte *)(*(int *)(puVar19 + 0x4862c) + (uVar7 >> 0x19));
    uVar9 = iVar2 + 8;
    uVar7 = uVar7 << (uVar9 & 0x1f);
    uVar12 = uVar7 >> 0xb;
    iVar16 = bits + (uVar15 - (iVar2 + 9));
    uVar7 = uVar7 << 0x15;
    uVar9 = 0xb - uVar9;
  }
  if (((int)uVar9 < 0x20) && (1 < (int)pmVar10)) {
    uVar7 = uVar7 | *(uint *)(iVar3 + -4) >> (uVar9 & 0x1f);
  }
LAB_00054c48:
  if (0x3ff < iVar16) {
    return 0;
  }
  if (iVar16 < -0x3fe) {
    if (iVar16 < -0x432) {
      return uVar7;
    }
    if ((int)(-iVar16 - 0x3feU) < 0x20) {
      uVar15 = iVar16 + 0x41e;
      uVar7 = uVar7 >> (-iVar16 - 0x3feU & 0x1f);
    }
    else {
      uVar7 = uVar12 >> (-iVar16 - 0x41eU & 0x1f);
      if (-iVar16 - 0x41eU == 0) {
        return uVar7;
      }
      uVar15 = iVar16 + 0x43e;
      uVar12 = 0;
    }
    uVar7 = uVar7 | uVar12 << (uVar15 & 0x1f);
  }
  return uVar7;
}



uint __gmpn_jacobi_n(int *param_1,int *param_2,int param_3,int *param_4)

{
  bool bVar1;
  int iVar2;
  undefined *puVar3;
  undefined *puVar4;
  int *piVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  int *piVar9;
  uint uVar10;
  uint uVar11;
  int *piVar12;
  uint uVar13;
  int iVar14;
  int *piVar15;
  int iVar16;
  undefined *puVar17;
  undefined1 *puVar18;
  int *local_resc;
  undefined1 auStack_80 [32];
  int local_48;
  undefined1 auStack_44 [24];
  int local_2c;
  
  puVar17 = PTR___stack_chk_guard_0009d540;
  puVar18 = auStack_80;
  local_2c = *(int *)PTR___stack_chk_guard_0009d540;
  local_resc = param_4;
  if (param_3 < 1000) {
    uVar13 = param_3 << 2;
    local_48 = 0;
    if (uVar13 < 0x7f01) goto LAB_0005471c;
LAB_00054ab8:
    local_48 = 0;
    piVar5 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_48);
  }
  else {
    uVar13 = (uint)(param_3 << 1) / 3;
    iVar16 = param_3 - uVar13;
    iVar2 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)(iVar16);
    iVar14 = param_3 + uVar13 + -1;
    if (iVar14 < iVar2) {
      iVar14 = iVar2;
    }
    iVar14 = ((iVar16 + 1) / 2 + 1) * 4 + iVar14;
    if (iVar14 < param_3) {
      iVar14 = param_3;
    }
    uVar13 = iVar14 << 2;
    local_48 = 0;
    if (0x7f00 < uVar13) goto LAB_00054ab8;
LAB_0005471c:
    local_48 = 0;
    iVar14 = -(uVar13 + 7 & 0xfffffff8);
    puVar18 = auStack_80 + iVar14;
    piVar5 = (int *)(auStack_44 + iVar14 + -0x1c);
  }
  if (param_3 < 1000) {
    bVar1 = param_3 < 3;
  }
  else {
    puVar3 = PTR_LAB_0009d07c + 0x45d0;
    do {
      uVar13 = (uint)(param_3 << 1) / 3;
      iVar14 = param_3 - uVar13;
      (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar14,piVar5);
      *(int ***)(puVar18 + 0x10) = &local_resc;
      *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;
      iVar2 = (*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)
                        (param_1 + uVar13,param_2 + uVar13,iVar14,auStack_44);
      if (iVar2 < 1) {
        param_4 = (int *)0x0;
        *(int **)(puVar18 + 0x18) = piVar5;
        *(int ***)(puVar18 + 0x14) = &local_resc;
        *(undefined **)(puVar18 + 0x10) = puVar3;
        piVar9 = param_2;
        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_1,param_2,param_3);
        if (param_3 == 0) goto LAB_00054840;
      }
      else {
        *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;
        *(uint *)(puVar18 + 0x10) = uVar13;
        param_4 = param_2;
        param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)
                            (auStack_44,uVar13 + iVar2,param_1);
      }
      bVar1 = param_3 < 3;
    } while (999 < param_3);
  }
  puVar3 = PTR___gmpn_clz_tab_0009d18c;
  if (!bVar1) {
    puVar4 = PTR_LAB_0009d07c + 0x45d0;
    piVar12 = param_1;
    do {
      while( true ) {
        piVar15 = piVar5;
        uVar13 = piVar12[param_3 + 0x3fffffff];
        uVar7 = param_2[param_3 + 0x3fffffff];
        uVar8 = uVar13 | uVar7;
        uVar11 = param_2[param_3 + 0x3ffffffe];
        uVar6 = piVar12[param_3 + 0x3ffffffe];
        if (-1 < (int)uVar8) {
          if (uVar8 < 0x10000) {
            iVar14 = 0;
            if (0xff < uVar8) {
              iVar14 = 0x18;
            }
            iVar2 = 9;
            if (0xff >= uVar8) {
              iVar2 = 1;
            }
          }
          else {
            iVar14 = 0x10;
            if (0xffffff < uVar8) {
              iVar14 = 8;
            }
            iVar2 = 0x19;
            if (0xffffff >= uVar8) {
              iVar2 = 0x11;
            }
          }
          uVar8 = iVar14 - (uint)(byte)puVar3[uVar8 >> iVar2];
          uVar10 = 0x20 - uVar8;
          uVar13 = uVar13 << (uVar8 & 0x1f) | uVar6 >> (uVar10 & 0x1f);
          uVar6 = (uint)piVar12[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar6 << (uVar8 & 0x1f);
          uVar7 = uVar7 << (uVar8 & 0x1f) | uVar11 >> (uVar10 & 0x1f);
          uVar11 = (uint)param_2[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar11 << (uVar8 & 0x1f)
          ;
        }
        *(int ***)(puVar18 + 0x14) = &local_resc;
        *(undefined1 **)(puVar18 + 0x10) = auStack_44;
        iVar14 = (*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar13,uVar6,uVar7,uVar11);
        if (iVar14 != 0) break;
        param_4 = (int *)0x0;
        *(int **)(puVar18 + 0x18) = piVar15;
        *(int ***)(puVar18 + 0x14) = &local_resc;
        *(undefined **)(puVar18 + 0x10) = puVar4;
        piVar9 = param_2;
        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(piVar12,param_2,param_3);
        if (param_3 == 0) goto LAB_00054840;
        param_1 = piVar12;
        piVar5 = piVar15;
        if (param_3 < 3) goto LAB_00054a30;
      }
      *(int *)(puVar18 + 0x10) = param_3;
      param_4 = param_2;
      param_3 = (*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488)
                          (auStack_44,piVar15,piVar12);
      param_1 = piVar15;
      piVar5 = piVar12;
      piVar12 = piVar15;
    } while (2 < param_3);
  }
LAB_00054a30:
  piVar5 = param_1;
  piVar9 = param_2;
  if ((int *)0xf < local_resc) {
    piVar5 = param_2;
    piVar9 = param_1;
  }
  if (param_3 == 1) {
    iVar14 = *piVar5;
    piVar9 = (int *)*piVar9;
    if (local_48 != 0) {
      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();
    }
    if (piVar9 == (int *)0x1) {
      uVar13 = ((uint)local_resc & 1) * -2 + 1;
    }
    else {
      uVar13 = (*(code *)PTR___gmpn_jacobi_base_0009d408)(iVar14,piVar9,(int)local_resc << 1);
    }
  }
  else {
    uVar13 = (*(code *)PTR___gmpn_jacobi_2_0009d324)(piVar5,piVar9,(uint)local_resc & 1);
    if (local_48 != 0) {
      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();
    }
  }
  goto LAB_0005486c;
LAB_00054840:
  if (local_48 != 0) {
    (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();
  }
  if (local_resc == (int *)0x1f) {
    uVar13 = 0;
  }
  else {
    uVar13 = ((uint)local_resc & 1) * -2 + 1;
  }
LAB_0005486c:
  if (local_2c == *(int *)puVar17) {
    return uVar13;
  }
  puVar17 = PTR___stack_chk_fail_0009d4d0;
  (*(code *)PTR___stack_chk_fail_0009d4d0)();
  if (piVar9 == (int *)0x0) {
    return 0x7fff0000;
  }
  uVar13 = (int)piVar9 * 0x20;
  if (0x7fffffffU - (int)param_4 < uVar13) {
    return 0;
  }
  local_2c = local_2c + (int)piVar9 * 4;
  uVar6 = *(uint *)(local_2c + -4);
  if (uVar6 < 0x10000) {
    iVar14 = 0x20;
    if (0xff < uVar6) {
      iVar14 = 0x18;
    }
    iVar2 = 9;
    if (0xff >= uVar6) {
      iVar2 = 1;
    }
    uVar7 = iVar14 - (uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> iVar2));
    iVar14 = uVar7 + 1;
joined_r0x00054cbc:
    uVar10 = uVar6 << (uVar7 & 0x1f);
    uVar11 = uVar10 >> 0xb;
    iVar14 = (int)param_4 + (uVar13 - iVar14);
    if ((int)uVar7 < 0xb) {
      iVar2 = local_2c + -4;
      uVar6 = uVar10 << 0x15;
      uVar8 = 0xb - uVar7;
    }
    else {
      if ((int)piVar9 < 2) {
        uVar6 = 0;
        goto LAB_00054c48;
      }
      iVar2 = local_2c + -8;
      uVar6 = *(uint *)(local_2c + -8) << (uVar7 - 0xb & 0x1f);
      piVar9 = (int *)((int)piVar9 + -1);
      uVar8 = 0x2b - uVar7;
      uVar11 = (uVar10 | *(uint *)(local_2c + -8) >> (-uVar7 & 0x1f)) >> 0xb;
    }
  }
  else {
    if (uVar6 < 0x1000000) {
      iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x11));
      uVar7 = iVar14 + 0x10;
      iVar14 = iVar14 + 0x11;
      goto joined_r0x00054cbc;
    }
    iVar2 = local_2c + -4;
    iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x19));
    uVar8 = iVar14 + 8;
    uVar6 = uVar6 << (uVar8 & 0x1f);
    uVar11 = uVar6 >> 0xb;
    iVar14 = (int)param_4 + (uVar13 - (iVar14 + 9));
    uVar6 = uVar6 << 0x15;
    uVar8 = 0xb - uVar8;
  }
  if (((int)uVar8 < 0x20) && (1 < (int)piVar9)) {
    uVar6 = uVar6 | *(uint *)(iVar2 + -4) >> (uVar8 & 0x1f);
  }
LAB_00054c48:
  if (0x3ff < iVar14) {
    return 0;
  }
  if (iVar14 < -0x3fe) {
    if (iVar14 < -0x432) {
      return uVar6;
    }
    if ((int)(-iVar14 - 0x3feU) < 0x20) {
      uVar13 = iVar14 + 0x41e;
      uVar6 = uVar6 >> (-iVar14 - 0x3feU & 0x1f);
    }
    else {
      uVar6 = uVar11 >> (-iVar14 - 0x41eU & 0x1f);
      if (-iVar14 - 0x41eU == 0) {
        return uVar6;
      }
      uVar13 = iVar14 + 0x43e;
      uVar11 = 0;
    }
    uVar6 = uVar6 | uVar11 << (uVar13 & 0x1f);
  }
  return uVar6;
}


lui gp,0x5
addiu gp,gp,0xa04
addu gp,gp,t9
addiu sp,sp,-0x80
lw v0,-0x7b00(gp)
sw s8,0x78(sp)
or s8,sp,zero
sw s3,0x64(sp)
slti s3,a2,0x3e8
sw v0,0x28(s8)
sw s6,0x70(sp)
or s6,a2,zero
sw s1,0x5c(sp)
or s1,a1,zero
sw s0,0x58(sp)
or s0,a0,zero
sw ra,0x7c(sp)
sw s7,0x74(sp)
sw s5,0x6c(sp)
sw s4,0x68(sp)
sw s2,0x60(sp)
sw gp,0x20(sp)
sw a3,0x8c(s8)
lw v0,0x0(v0)
sw v0,0x54(s8)
bne s3,zero,0x00054aa8
_or a1,a2,zero
lui v0,0xaaaa
lw t9,-0x7bdc(gp)
sll s2,a2,0x1
ori v0,v0,0xaaab
multu s2,v0
mfhi s2
srl s2,s2,0x1
subu s4,a2,s2
addu s2,s6,s2
or a0,s4,zero
jalr t9
_addiu s4,s4,0x1
addiu s2,s2,-0x1
lw gp,0x20(s8)
srl a0,s4,0x1f
slt a1,s2,v0
addu a0,a0,s4
movn s2,v0,a1
sra a0,a0,0x1
addiu a0,a0,0x1
sll a1,a0,0x2
addu s2,a1,s2
slt a1,s2,s6
movn s2,s6,a1
or a1,s2,zero
sll a1,a1,0x2
sltiu v0,a1,0x7f01
beq v0,zero,0x00054ab8
_sw zero,0x38(s8)
addiu a1,a1,0x7
srl a1,a1,0x3
sll a1,a1,0x3
subu sp,sp,a1
addiu s2,sp,0x20
bne s3,zero,0x000548b4
_lw v0,-0x7fc4(gp)
addiu s5,s8,0x3c
addiu s3,s8,0x8c
addiu v0,v0,0x45d0
sw v0,0x2c(s8)
lui v0,0xaaaa
ori v0,v0,0xaaab
b 0x0005478c
_sw v0,0x30(s8)
lw t9,-0x7c98(gp)
addu a1,s7,v0
sw s4,0x14(sp)
or a3,s1,zero
sw s7,0x10(sp)
or a2,s0,zero
jalr t9
_or a0,s5,zero
lw gp,0x20(s8)
or s6,v0,zero
slti v0,s6,0x3e8
bne v0,zero,0x000548b8
_slti v0,s6,0x3
lw v0,0x30(s8)
sll s7,s6,0x1
lw t9,-0x7c84(gp)
or a2,s2,zero
or a0,s5,zero
multu s7,v0
mfhi s7
srl s7,s7,0x1
subu v0,s6,s7
or a1,v0,zero
jalr t9
_sw v0,0x34(s8)
sll a0,s7,0x2
lw v0,0x34(s8)
or a3,s5,zero
lw gp,0x20(s8)
addu a1,s1,a0
addu a0,s0,a0
sw s3,0x10(sp)
addiu a2,v0,0x1
srl s4,a2,0x1f
lw t9,-0x7f58(gp)
addu s4,s4,a2
or a2,v0,zero
sra s4,s4,0x1
addiu s4,s4,0x1
sll s4,s4,0x4
addu s4,s2,s4
jalr t9
_sw s4,0x14(sp)
bgtz v0,0x00054758
_lw gp,0x20(s8)
lw v0,0x2c(s8)
or a3,zero,zero
lw t9,-0x7f28(gp)
or a2,s6,zero
sw s2,0x18(sp)
or a1,s1,zero
sw s3,0x14(sp)
or a0,s0,zero
jalr t9
_sw v0,0x10(sp)
lw gp,0x20(s8)
bne v0,zero,0x00054780
_or s6,v0,zero
lw a0,0x38(s8)
bne a0,zero,0x00054ad8
_lw t9,-0x7a28(gp)
lw v0,0x8c(s8)
li v1,0x1f
beq v0,v1,0x00054ad0
_nop
andi v0,v0,0x1
sll v1,v0,0x1
li v0,0x1
subu v0,v0,v1
lw v1,0x28(s8)
lw a0,0x54(s8)
lw v1,0x0(v1)
bne a0,v1,0x00054b4c
_lw t9,-0x7b70(gp)
or sp,s8,zero
lw ra,0x7c(sp)
lw s8,0x78(sp)
lw s7,0x74(sp)
lw s6,0x70(sp)
lw s5,0x6c(sp)
lw s4,0x68(sp)
lw s3,0x64(sp)
lw s2,0x60(sp)
lw s1,0x5c(sp)
lw s0,0x58(sp)
jr ra
_addiu sp,sp,0x80
slti v0,s6,0x3
bne v0,zero,0x00054a30
_lw v0,-0x7fc4(gp)
lui s4,0x3fff
lw s7,-0x7eb4(gp)
addiu s5,s8,0x3c
addiu s3,s8,0x8c
addiu v0,v0,0x45d0
ori s4,s4,0xffff
b 0x00054918
_sw v0,0x34(s8)
lw t9,-0x7bb8(gp)
or a2,s0,zero
sw s6,0x10(sp)
or a1,s2,zero
or a0,s5,zero
jalr t9
_or a3,s1,zero
or a0,s0,zero
or s6,v0,zero
lw gp,0x20(s8)
slti v0,s6,0x3
or s0,s2,zero
bne v0,zero,0x00054a30
_or s2,a0,zero
addu v0,s6,s4
sll v0,v0,0x2
addu a0,s0,v0
addu a2,s1,v0
addiu a1,v0,-0x4
lw a0,0x0(a0)
lw a2,0x0(a2)
addu a3,s1,a1
addu t2,s0,a1
or t1,a0,a2
lw a3,0x0(a3)
bltz t1,0x000549d8
_lw a1,0x0(t2)
lui v1,0x1
sltu t2,t1,v1
beq t2,zero,0x00054a84
_lui t2,0x100
li t3,0x18
li t4,0x20
sltiu t2,t1,0x100
movz t4,t3,t2
li t5,0x1
li t3,0x9
movn t3,t5,t2
or t2,t3,zero
srlv t1,t1,t2
addiu v0,v0,-0x8
addu t1,s7,t1
addu t2,s0,v0
addu v0,s1,v0
lbu t1,0x0(t1)
lw t3,0x0(t2)
lw t2,0x0(v0)
subu v0,t4,t1
li t1,0x20
sllv a0,a0,v0
subu t1,t1,v0
sllv a2,a2,v0
srlv t5,a1,t1
srlv t4,a3,t1
srlv t3,t3,t1
sllv a1,a1,v0
srlv t1,t2,t1
sllv v0,a3,v0
or a0,a0,t5
or a1,t3,a1
or a2,a2,t4
or a3,t1,v0
lw t9,-0x7d28(gp)
sw s3,0x14(sp)
jalr t9
_sw s5,0x10(sp)
bne v0,zero,0x000548e0
_lw gp,0x20(s8)
lw v0,0x34(s8)
or a3,zero,zero
lw t9,-0x7f28(gp)
or a2,s6,zero
sw s2,0x18(sp)
or a1,s1,zero
sw s3,0x14(sp)
or a0,s0,zero
jalr t9
_sw v0,0x10(sp)
lw gp,0x20(s8)
beq v0,zero,0x00054840
_or s6,v0,zero
slti v0,s6,0x3
beq v0,zero,0x0005491c
_addu v0,s6,s4
lw a2,0x8c(s8)
sltiu v0,a2,0x10
bne v0,zero,0x00054a50
_li v0,0x1
or v0,s0,zero
or s0,s1,zero
or s1,v0,zero
li v0,0x1
bne s6,v0,0x00054ae8
_lw a0,0x38(s8)
lw s0,0x0(s0)
bne a0,zero,0x00054b30
_lw a1,0x0(s1)
li v0,0x1
beq a1,v0,0x00054b20
_lw t9,-0x7c38(gp)
sll a2,a2,0x1
jalr t9
_or a0,s0,zero
b 0x0005486c
_lw gp,0x20(s8)
li t3,0x8
li t4,0x10
sltu t2,t1,t2
movz t4,t3,t2
li t5,0x11
li t3,0x19
movn t3,t5,t2
b 0x0005497c
_or t2,t3,zero
sll a1,a1,0x2
sltiu v0,a1,0x7f01
bne v0,zero,0x0005471c
_sw zero,0x38(s8)
lw t9,-0x7d50(gp)
jalr t9
_addiu a0,s8,0x38
lw gp,0x20(s8)
b 0x00054730
_or s2,v0,zero
b 0x0005486c
_or v0,zero,zero
jalr t9
_nop
b 0x0005484c
_lw gp,0x20(s8)
lw t9,-0x7d1c(gp)
or a0,s0,zero
andi a2,a2,0x1
jalr t9
_or a1,s1,zero
lw a0,0x38(s8)
beq a0,zero,0x0005486c
_lw gp,0x20(s8)
lw t9,-0x7a28(gp)
jalr t9
_sw v0,0x34(s8)
lw gp,0x20(s8)
b 0x0005486c
_lw v0,0x34(s8)
andi v0,a2,0x1
sll v0,v0,0x1
b 0x0005486c
_subu v0,a1,v0
lw t9,-0x7a28(gp)
jalr t9
_sw a1,0x34(s8)
lw gp,0x20(s8)
lw a2,0x8c(s8)
b 0x00054a64
_lw a1,0x34(s8)
jalr t9
_nop
nop
nop
nop
(translation_unit "uint __gmpn_jacobi_n(int *param_1,int *param_2,int param_3,int *param_4)\n\n{\n  bool bVar1;\n  int iVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  int *piVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  int *piVar9;\n  uint uVar10;\n  uint uVar11;\n  int *piVar12;\n  uint uVar13;\n  int iVar14;\n  int *piVar15;\n  int iVar16;\n  undefined *puVar17;\n  undefined1 *puVar18;\n  int *local_resc;\n  undefined1 auStack_80 [32];\n  int local_48;\n  undefined1 auStack_44 [24];\n  int local_2c;\n  \n  puVar17 = PTR___stack_chk_guard_0009d540;\n  puVar18 = auStack_80;\n  local_2c = *(int *)PTR___stack_chk_guard_0009d540;\n  local_resc = param_4;\n  if (param_3 < 1000) {\n    uVar13 = param_3 << 2;\n    local_48 = 0;\n    if (uVar13 < 0x7f01) goto LAB_0005471c;\nLAB_00054ab8:\n    local_48 = 0;\n    piVar5 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_48);\n  }\n  else {\n    uVar13 = (uint)(param_3 << 1) / 3;\n    iVar16 = param_3 - uVar13;\n    iVar2 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)(iVar16);\n    iVar14 = param_3 + uVar13 + -1;\n    if (iVar14 < iVar2) {\n      iVar14 = iVar2;\n    }\n    iVar14 = ((iVar16 + 1) / 2 + 1) * 4 + iVar14;\n    if (iVar14 < param_3) {\n      iVar14 = param_3;\n    }\n    uVar13 = iVar14 << 2;\n    local_48 = 0;\n    if (0x7f00 < uVar13) goto LAB_00054ab8;\nLAB_0005471c:\n    local_48 = 0;\n    iVar14 = -(uVar13 + 7 & 0xfffffff8);\n    puVar18 = auStack_80 + iVar14;\n    piVar5 = (int *)(auStack_44 + iVar14 + -0x1c);\n  }\n  if (param_3 < 1000) {\n    bVar1 = param_3 < 3;\n  }\n  else {\n    puVar3 = PTR_LAB_0009d07c + 0x45d0;\n    do {\n      uVar13 = (uint)(param_3 << 1) / 3;\n      iVar14 = param_3 - uVar13;\n      (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar14,piVar5);\n      *(int ***)(puVar18 + 0x10) = &local_resc;\n      *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n      iVar2 = (*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)\n                        (param_1 + uVar13,param_2 + uVar13,iVar14,auStack_44);\n      if (iVar2 < 1) {\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar5;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar3;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_1,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n      }\n      else {\n        *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n        *(uint *)(puVar18 + 0x10) = uVar13;\n        param_4 = param_2;\n        param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                            (auStack_44,uVar13 + iVar2,param_1);\n      }\n      bVar1 = param_3 < 3;\n    } while (999 < param_3);\n  }\n  puVar3 = PTR___gmpn_clz_tab_0009d18c;\n  if (!bVar1) {\n    puVar4 = PTR_LAB_0009d07c + 0x45d0;\n    piVar12 = param_1;\n    do {\n      while( true ) {\n        piVar15 = piVar5;\n        uVar13 = piVar12[param_3 + 0x3fffffff];\n        uVar7 = param_2[param_3 + 0x3fffffff];\n        uVar8 = uVar13 | uVar7;\n        uVar11 = param_2[param_3 + 0x3ffffffe];\n        uVar6 = piVar12[param_3 + 0x3ffffffe];\n        if (-1 < (int)uVar8) {\n          if (uVar8 < 0x10000) {\n            iVar14 = 0;\n            if (0xff < uVar8) {\n              iVar14 = 0x18;\n            }\n            iVar2 = 9;\n            if (0xff >= uVar8) {\n              iVar2 = 1;\n            }\n          }\n          else {\n            iVar14 = 0x10;\n            if (0xffffff < uVar8) {\n              iVar14 = 8;\n            }\n            iVar2 = 0x19;\n            if (0xffffff >= uVar8) {\n              iVar2 = 0x11;\n            }\n          }\n          uVar8 = iVar14 - (uint)(byte)puVar3[uVar8 >> iVar2];\n          uVar10 = 0x20 - uVar8;\n          uVar13 = uVar13 << (uVar8 & 0x1f) | uVar6 >> (uVar10 & 0x1f);\n          uVar6 = (uint)piVar12[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar6 << (uVar8 & 0x1f);\n          uVar7 = uVar7 << (uVar8 & 0x1f) | uVar11 >> (uVar10 & 0x1f);\n          uVar11 = (uint)param_2[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar11 << (uVar8 & 0x1f)\n          ;\n        }\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined1 **)(puVar18 + 0x10) = auStack_44;\n        iVar14 = (*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar13,uVar6,uVar7,uVar11);\n        if (iVar14 != 0) break;\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar15;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar4;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(piVar12,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n        param_1 = piVar12;\n        piVar5 = piVar15;\n        if (param_3 < 3) goto LAB_00054a30;\n      }\n      *(int *)(puVar18 + 0x10) = param_3;\n      param_4 = param_2;\n      param_3 = (*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488)\n                          (auStack_44,piVar15,piVar12);\n      param_1 = piVar15;\n      piVar5 = piVar12;\n      piVar12 = piVar15;\n    } while (2 < param_3);\n  }\nLAB_00054a30:\n  piVar5 = param_1;\n  piVar9 = param_2;\n  if ((int *)0xf < local_resc) {\n    piVar5 = param_2;\n    piVar9 = param_1;\n  }\n  if (param_3 == 1) {\n    iVar14 = *piVar5;\n    piVar9 = (int *)*piVar9;\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n    if (piVar9 == (int *)0x1) {\n      uVar13 = ((uint)local_resc & 1) * -2 + 1;\n    }\n    else {\n      uVar13 = (*(code *)PTR___gmpn_jacobi_base_0009d408)(iVar14,piVar9,(int)local_resc << 1);\n    }\n  }\n  else {\n    uVar13 = (*(code *)PTR___gmpn_jacobi_2_0009d324)(piVar5,piVar9,(uint)local_resc & 1);\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n  }\n  goto LAB_0005486c;\nLAB_00054840:\n  if (local_48 != 0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n  }\n  if (local_resc == (int *)0x1f) {\n    uVar13 = 0;\n  }\n  else {\n    uVar13 = ((uint)local_resc & 1) * -2 + 1;\n  }\nLAB_0005486c:\n  if (local_2c == *(int *)puVar17) {\n    return uVar13;\n  }\n  puVar17 = PTR___stack_chk_fail_0009d4d0;\n  (*(code *)PTR___stack_chk_fail_0009d4d0)();\n  if (piVar9 == (int *)0x0) {\n    return 0x7fff0000;\n  }\n  uVar13 = (int)piVar9 * 0x20;\n  if (0x7fffffffU - (int)param_4 < uVar13) {\n    return 0;\n  }\n  local_2c = local_2c + (int)piVar9 * 4;\n  uVar6 = *(uint *)(local_2c + -4);\n  if (uVar6 < 0x10000) {\n    iVar14 = 0x20;\n    if (0xff < uVar6) {\n      iVar14 = 0x18;\n    }\n    iVar2 = 9;\n    if (0xff >= uVar6) {\n      iVar2 = 1;\n    }\n    uVar7 = iVar14 - (uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> iVar2));\n    iVar14 = uVar7 + 1;\njoined_r0x00054cbc:\n    uVar10 = uVar6 << (uVar7 & 0x1f);\n    uVar11 = uVar10 >> 0xb;\n    iVar14 = (int)param_4 + (uVar13 - iVar14);\n    if ((int)uVar7 < 0xb) {\n      iVar2 = local_2c + -4;\n      uVar6 = uVar10 << 0x15;\n      uVar8 = 0xb - uVar7;\n    }\n    else {\n      if ((int)piVar9 < 2) {\n        uVar6 = 0;\n        goto LAB_00054c48;\n      }\n      iVar2 = local_2c + -8;\n      uVar6 = *(uint *)(local_2c + -8) << (uVar7 - 0xb & 0x1f);\n      piVar9 = (int *)((int)piVar9 + -1);\n      uVar8 = 0x2b - uVar7;\n      uVar11 = (uVar10 | *(uint *)(local_2c + -8) >> (-uVar7 & 0x1f)) >> 0xb;\n    }\n  }\n  else {\n    if (uVar6 < 0x1000000) {\n      iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x11));\n      uVar7 = iVar14 + 0x10;\n      iVar14 = iVar14 + 0x11;\n      goto joined_r0x00054cbc;\n    }\n    iVar2 = local_2c + -4;\n    iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x19));\n    uVar8 = iVar14 + 8;\n    uVar6 = uVar6 << (uVar8 & 0x1f);\n    uVar11 = uVar6 >> 0xb;\n    iVar14 = (int)param_4 + (uVar13 - (iVar14 + 9));\n    uVar6 = uVar6 << 0x15;\n    uVar8 = 0xb - uVar8;\n  }\n  if (((int)uVar8 < 0x20) && (1 < (int)piVar9)) {\n    uVar6 = uVar6 | *(uint *)(iVar2 + -4) >> (uVar8 & 0x1f);\n  }\nLAB_00054c48:\n  if (0x3ff < iVar14) {\n    return 0;\n  }\n  if (iVar14 < -0x3fe) {\n    if (iVar14 < -0x432) {\n      return uVar6;\n    }\n    if ((int)(-iVar14 - 0x3feU) < 0x20) {\n      uVar13 = iVar14 + 0x41e;\n      uVar6 = uVar6 >> (-iVar14 - 0x3feU & 0x1f);\n    }\n    else {\n      uVar6 = uVar11 >> (-iVar14 - 0x41eU & 0x1f);\n      if (-iVar14 - 0x41eU == 0) {\n        return uVar6;\n      }\n      uVar13 = iVar14 + 0x43e;\n      uVar11 = 0;\n    }\n    uVar6 = uVar6 | uVar11 << (uVar13 & 0x1f);\n  }\n  return uVar6;\n}\n\n" (function_definition "uint __gmpn_jacobi_n(int *param_1,int *param_2,int param_3,int *param_4)\n\n{\n  bool bVar1;\n  int iVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  int *piVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  int *piVar9;\n  uint uVar10;\n  uint uVar11;\n  int *piVar12;\n  uint uVar13;\n  int iVar14;\n  int *piVar15;\n  int iVar16;\n  undefined *puVar17;\n  undefined1 *puVar18;\n  int *local_resc;\n  undefined1 auStack_80 [32];\n  int local_48;\n  undefined1 auStack_44 [24];\n  int local_2c;\n  \n  puVar17 = PTR___stack_chk_guard_0009d540;\n  puVar18 = auStack_80;\n  local_2c = *(int *)PTR___stack_chk_guard_0009d540;\n  local_resc = param_4;\n  if (param_3 < 1000) {\n    uVar13 = param_3 << 2;\n    local_48 = 0;\n    if (uVar13 < 0x7f01) goto LAB_0005471c;\nLAB_00054ab8:\n    local_48 = 0;\n    piVar5 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_48);\n  }\n  else {\n    uVar13 = (uint)(param_3 << 1) / 3;\n    iVar16 = param_3 - uVar13;\n    iVar2 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)(iVar16);\n    iVar14 = param_3 + uVar13 + -1;\n    if (iVar14 < iVar2) {\n      iVar14 = iVar2;\n    }\n    iVar14 = ((iVar16 + 1) / 2 + 1) * 4 + iVar14;\n    if (iVar14 < param_3) {\n      iVar14 = param_3;\n    }\n    uVar13 = iVar14 << 2;\n    local_48 = 0;\n    if (0x7f00 < uVar13) goto LAB_00054ab8;\nLAB_0005471c:\n    local_48 = 0;\n    iVar14 = -(uVar13 + 7 & 0xfffffff8);\n    puVar18 = auStack_80 + iVar14;\n    piVar5 = (int *)(auStack_44 + iVar14 + -0x1c);\n  }\n  if (param_3 < 1000) {\n    bVar1 = param_3 < 3;\n  }\n  else {\n    puVar3 = PTR_LAB_0009d07c + 0x45d0;\n    do {\n      uVar13 = (uint)(param_3 << 1) / 3;\n      iVar14 = param_3 - uVar13;\n      (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar14,piVar5);\n      *(int ***)(puVar18 + 0x10) = &local_resc;\n      *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n      iVar2 = (*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)\n                        (param_1 + uVar13,param_2 + uVar13,iVar14,auStack_44);\n      if (iVar2 < 1) {\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar5;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar3;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_1,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n      }\n      else {\n        *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n        *(uint *)(puVar18 + 0x10) = uVar13;\n        param_4 = param_2;\n        param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                            (auStack_44,uVar13 + iVar2,param_1);\n      }\n      bVar1 = param_3 < 3;\n    } while (999 < param_3);\n  }\n  puVar3 = PTR___gmpn_clz_tab_0009d18c;\n  if (!bVar1) {\n    puVar4 = PTR_LAB_0009d07c + 0x45d0;\n    piVar12 = param_1;\n    do {\n      while( true ) {\n        piVar15 = piVar5;\n        uVar13 = piVar12[param_3 + 0x3fffffff];\n        uVar7 = param_2[param_3 + 0x3fffffff];\n        uVar8 = uVar13 | uVar7;\n        uVar11 = param_2[param_3 + 0x3ffffffe];\n        uVar6 = piVar12[param_3 + 0x3ffffffe];\n        if (-1 < (int)uVar8) {\n          if (uVar8 < 0x10000) {\n            iVar14 = 0;\n            if (0xff < uVar8) {\n              iVar14 = 0x18;\n            }\n            iVar2 = 9;\n            if (0xff >= uVar8) {\n              iVar2 = 1;\n            }\n          }\n          else {\n            iVar14 = 0x10;\n            if (0xffffff < uVar8) {\n              iVar14 = 8;\n            }\n            iVar2 = 0x19;\n            if (0xffffff >= uVar8) {\n              iVar2 = 0x11;\n            }\n          }\n          uVar8 = iVar14 - (uint)(byte)puVar3[uVar8 >> iVar2];\n          uVar10 = 0x20 - uVar8;\n          uVar13 = uVar13 << (uVar8 & 0x1f) | uVar6 >> (uVar10 & 0x1f);\n          uVar6 = (uint)piVar12[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar6 << (uVar8 & 0x1f);\n          uVar7 = uVar7 << (uVar8 & 0x1f) | uVar11 >> (uVar10 & 0x1f);\n          uVar11 = (uint)param_2[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar11 << (uVar8 & 0x1f)\n          ;\n        }\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined1 **)(puVar18 + 0x10) = auStack_44;\n        iVar14 = (*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar13,uVar6,uVar7,uVar11);\n        if (iVar14 != 0) break;\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar15;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar4;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(piVar12,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n        param_1 = piVar12;\n        piVar5 = piVar15;\n        if (param_3 < 3) goto LAB_00054a30;\n      }\n      *(int *)(puVar18 + 0x10) = param_3;\n      param_4 = param_2;\n      param_3 = (*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488)\n                          (auStack_44,piVar15,piVar12);\n      param_1 = piVar15;\n      piVar5 = piVar12;\n      piVar12 = piVar15;\n    } while (2 < param_3);\n  }\nLAB_00054a30:\n  piVar5 = param_1;\n  piVar9 = param_2;\n  if ((int *)0xf < local_resc) {\n    piVar5 = param_2;\n    piVar9 = param_1;\n  }\n  if (param_3 == 1) {\n    iVar14 = *piVar5;\n    piVar9 = (int *)*piVar9;\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n    if (piVar9 == (int *)0x1) {\n      uVar13 = ((uint)local_resc & 1) * -2 + 1;\n    }\n    else {\n      uVar13 = (*(code *)PTR___gmpn_jacobi_base_0009d408)(iVar14,piVar9,(int)local_resc << 1);\n    }\n  }\n  else {\n    uVar13 = (*(code *)PTR___gmpn_jacobi_2_0009d324)(piVar5,piVar9,(uint)local_resc & 1);\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n  }\n  goto LAB_0005486c;\nLAB_00054840:\n  if (local_48 != 0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n  }\n  if (local_resc == (int *)0x1f) {\n    uVar13 = 0;\n  }\n  else {\n    uVar13 = ((uint)local_resc & 1) * -2 + 1;\n  }\nLAB_0005486c:\n  if (local_2c == *(int *)puVar17) {\n    return uVar13;\n  }\n  puVar17 = PTR___stack_chk_fail_0009d4d0;\n  (*(code *)PTR___stack_chk_fail_0009d4d0)();\n  if (piVar9 == (int *)0x0) {\n    return 0x7fff0000;\n  }\n  uVar13 = (int)piVar9 * 0x20;\n  if (0x7fffffffU - (int)param_4 < uVar13) {\n    return 0;\n  }\n  local_2c = local_2c + (int)piVar9 * 4;\n  uVar6 = *(uint *)(local_2c + -4);\n  if (uVar6 < 0x10000) {\n    iVar14 = 0x20;\n    if (0xff < uVar6) {\n      iVar14 = 0x18;\n    }\n    iVar2 = 9;\n    if (0xff >= uVar6) {\n      iVar2 = 1;\n    }\n    uVar7 = iVar14 - (uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> iVar2));\n    iVar14 = uVar7 + 1;\njoined_r0x00054cbc:\n    uVar10 = uVar6 << (uVar7 & 0x1f);\n    uVar11 = uVar10 >> 0xb;\n    iVar14 = (int)param_4 + (uVar13 - iVar14);\n    if ((int)uVar7 < 0xb) {\n      iVar2 = local_2c + -4;\n      uVar6 = uVar10 << 0x15;\n      uVar8 = 0xb - uVar7;\n    }\n    else {\n      if ((int)piVar9 < 2) {\n        uVar6 = 0;\n        goto LAB_00054c48;\n      }\n      iVar2 = local_2c + -8;\n      uVar6 = *(uint *)(local_2c + -8) << (uVar7 - 0xb & 0x1f);\n      piVar9 = (int *)((int)piVar9 + -1);\n      uVar8 = 0x2b - uVar7;\n      uVar11 = (uVar10 | *(uint *)(local_2c + -8) >> (-uVar7 & 0x1f)) >> 0xb;\n    }\n  }\n  else {\n    if (uVar6 < 0x1000000) {\n      iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x11));\n      uVar7 = iVar14 + 0x10;\n      iVar14 = iVar14 + 0x11;\n      goto joined_r0x00054cbc;\n    }\n    iVar2 = local_2c + -4;\n    iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x19));\n    uVar8 = iVar14 + 8;\n    uVar6 = uVar6 << (uVar8 & 0x1f);\n    uVar11 = uVar6 >> 0xb;\n    iVar14 = (int)param_4 + (uVar13 - (iVar14 + 9));\n    uVar6 = uVar6 << 0x15;\n    uVar8 = 0xb - uVar8;\n  }\n  if (((int)uVar8 < 0x20) && (1 < (int)piVar9)) {\n    uVar6 = uVar6 | *(uint *)(iVar2 + -4) >> (uVar8 & 0x1f);\n  }\nLAB_00054c48:\n  if (0x3ff < iVar14) {\n    return 0;\n  }\n  if (iVar14 < -0x3fe) {\n    if (iVar14 < -0x432) {\n      return uVar6;\n    }\n    if ((int)(-iVar14 - 0x3feU) < 0x20) {\n      uVar13 = iVar14 + 0x41e;\n      uVar6 = uVar6 >> (-iVar14 - 0x3feU & 0x1f);\n    }\n    else {\n      uVar6 = uVar11 >> (-iVar14 - 0x41eU & 0x1f);\n      if (-iVar14 - 0x41eU == 0) {\n        return uVar6;\n      }\n      uVar13 = iVar14 + 0x43e;\n      uVar11 = 0;\n    }\n    uVar6 = uVar6 | uVar11 << (uVar13 & 0x1f);\n  }\n  return uVar6;\n}" type_identifier (function_declarator "__gmpn_jacobi_n(int *param_1,int *param_2,int param_3,int *param_4)" identifier (parameter_list "(int *param_1,int *param_2,int param_3,int *param_4)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  bool bVar1;\n  int iVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  int *piVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  int *piVar9;\n  uint uVar10;\n  uint uVar11;\n  int *piVar12;\n  uint uVar13;\n  int iVar14;\n  int *piVar15;\n  int iVar16;\n  undefined *puVar17;\n  undefined1 *puVar18;\n  int *local_resc;\n  undefined1 auStack_80 [32];\n  int local_48;\n  undefined1 auStack_44 [24];\n  int local_2c;\n  \n  puVar17 = PTR___stack_chk_guard_0009d540;\n  puVar18 = auStack_80;\n  local_2c = *(int *)PTR___stack_chk_guard_0009d540;\n  local_resc = param_4;\n  if (param_3 < 1000) {\n    uVar13 = param_3 << 2;\n    local_48 = 0;\n    if (uVar13 < 0x7f01) goto LAB_0005471c;\nLAB_00054ab8:\n    local_48 = 0;\n    piVar5 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_48);\n  }\n  else {\n    uVar13 = (uint)(param_3 << 1) / 3;\n    iVar16 = param_3 - uVar13;\n    iVar2 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)(iVar16);\n    iVar14 = param_3 + uVar13 + -1;\n    if (iVar14 < iVar2) {\n      iVar14 = iVar2;\n    }\n    iVar14 = ((iVar16 + 1) / 2 + 1) * 4 + iVar14;\n    if (iVar14 < param_3) {\n      iVar14 = param_3;\n    }\n    uVar13 = iVar14 << 2;\n    local_48 = 0;\n    if (0x7f00 < uVar13) goto LAB_00054ab8;\nLAB_0005471c:\n    local_48 = 0;\n    iVar14 = -(uVar13 + 7 & 0xfffffff8);\n    puVar18 = auStack_80 + iVar14;\n    piVar5 = (int *)(auStack_44 + iVar14 + -0x1c);\n  }\n  if (param_3 < 1000) {\n    bVar1 = param_3 < 3;\n  }\n  else {\n    puVar3 = PTR_LAB_0009d07c + 0x45d0;\n    do {\n      uVar13 = (uint)(param_3 << 1) / 3;\n      iVar14 = param_3 - uVar13;\n      (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar14,piVar5);\n      *(int ***)(puVar18 + 0x10) = &local_resc;\n      *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n      iVar2 = (*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)\n                        (param_1 + uVar13,param_2 + uVar13,iVar14,auStack_44);\n      if (iVar2 < 1) {\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar5;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar3;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_1,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n      }\n      else {\n        *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n        *(uint *)(puVar18 + 0x10) = uVar13;\n        param_4 = param_2;\n        param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                            (auStack_44,uVar13 + iVar2,param_1);\n      }\n      bVar1 = param_3 < 3;\n    } while (999 < param_3);\n  }\n  puVar3 = PTR___gmpn_clz_tab_0009d18c;\n  if (!bVar1) {\n    puVar4 = PTR_LAB_0009d07c + 0x45d0;\n    piVar12 = param_1;\n    do {\n      while( true ) {\n        piVar15 = piVar5;\n        uVar13 = piVar12[param_3 + 0x3fffffff];\n        uVar7 = param_2[param_3 + 0x3fffffff];\n        uVar8 = uVar13 | uVar7;\n        uVar11 = param_2[param_3 + 0x3ffffffe];\n        uVar6 = piVar12[param_3 + 0x3ffffffe];\n        if (-1 < (int)uVar8) {\n          if (uVar8 < 0x10000) {\n            iVar14 = 0;\n            if (0xff < uVar8) {\n              iVar14 = 0x18;\n            }\n            iVar2 = 9;\n            if (0xff >= uVar8) {\n              iVar2 = 1;\n            }\n          }\n          else {\n            iVar14 = 0x10;\n            if (0xffffff < uVar8) {\n              iVar14 = 8;\n            }\n            iVar2 = 0x19;\n            if (0xffffff >= uVar8) {\n              iVar2 = 0x11;\n            }\n          }\n          uVar8 = iVar14 - (uint)(byte)puVar3[uVar8 >> iVar2];\n          uVar10 = 0x20 - uVar8;\n          uVar13 = uVar13 << (uVar8 & 0x1f) | uVar6 >> (uVar10 & 0x1f);\n          uVar6 = (uint)piVar12[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar6 << (uVar8 & 0x1f);\n          uVar7 = uVar7 << (uVar8 & 0x1f) | uVar11 >> (uVar10 & 0x1f);\n          uVar11 = (uint)param_2[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar11 << (uVar8 & 0x1f)\n          ;\n        }\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined1 **)(puVar18 + 0x10) = auStack_44;\n        iVar14 = (*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar13,uVar6,uVar7,uVar11);\n        if (iVar14 != 0) break;\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar15;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar4;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(piVar12,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n        param_1 = piVar12;\n        piVar5 = piVar15;\n        if (param_3 < 3) goto LAB_00054a30;\n      }\n      *(int *)(puVar18 + 0x10) = param_3;\n      param_4 = param_2;\n      param_3 = (*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488)\n                          (auStack_44,piVar15,piVar12);\n      param_1 = piVar15;\n      piVar5 = piVar12;\n      piVar12 = piVar15;\n    } while (2 < param_3);\n  }\nLAB_00054a30:\n  piVar5 = param_1;\n  piVar9 = param_2;\n  if ((int *)0xf < local_resc) {\n    piVar5 = param_2;\n    piVar9 = param_1;\n  }\n  if (param_3 == 1) {\n    iVar14 = *piVar5;\n    piVar9 = (int *)*piVar9;\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n    if (piVar9 == (int *)0x1) {\n      uVar13 = ((uint)local_resc & 1) * -2 + 1;\n    }\n    else {\n      uVar13 = (*(code *)PTR___gmpn_jacobi_base_0009d408)(iVar14,piVar9,(int)local_resc << 1);\n    }\n  }\n  else {\n    uVar13 = (*(code *)PTR___gmpn_jacobi_2_0009d324)(piVar5,piVar9,(uint)local_resc & 1);\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n  }\n  goto LAB_0005486c;\nLAB_00054840:\n  if (local_48 != 0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n  }\n  if (local_resc == (int *)0x1f) {\n    uVar13 = 0;\n  }\n  else {\n    uVar13 = ((uint)local_resc & 1) * -2 + 1;\n  }\nLAB_0005486c:\n  if (local_2c == *(int *)puVar17) {\n    return uVar13;\n  }\n  puVar17 = PTR___stack_chk_fail_0009d4d0;\n  (*(code *)PTR___stack_chk_fail_0009d4d0)();\n  if (piVar9 == (int *)0x0) {\n    return 0x7fff0000;\n  }\n  uVar13 = (int)piVar9 * 0x20;\n  if (0x7fffffffU - (int)param_4 < uVar13) {\n    return 0;\n  }\n  local_2c = local_2c + (int)piVar9 * 4;\n  uVar6 = *(uint *)(local_2c + -4);\n  if (uVar6 < 0x10000) {\n    iVar14 = 0x20;\n    if (0xff < uVar6) {\n      iVar14 = 0x18;\n    }\n    iVar2 = 9;\n    if (0xff >= uVar6) {\n      iVar2 = 1;\n    }\n    uVar7 = iVar14 - (uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> iVar2));\n    iVar14 = uVar7 + 1;\njoined_r0x00054cbc:\n    uVar10 = uVar6 << (uVar7 & 0x1f);\n    uVar11 = uVar10 >> 0xb;\n    iVar14 = (int)param_4 + (uVar13 - iVar14);\n    if ((int)uVar7 < 0xb) {\n      iVar2 = local_2c + -4;\n      uVar6 = uVar10 << 0x15;\n      uVar8 = 0xb - uVar7;\n    }\n    else {\n      if ((int)piVar9 < 2) {\n        uVar6 = 0;\n        goto LAB_00054c48;\n      }\n      iVar2 = local_2c + -8;\n      uVar6 = *(uint *)(local_2c + -8) << (uVar7 - 0xb & 0x1f);\n      piVar9 = (int *)((int)piVar9 + -1);\n      uVar8 = 0x2b - uVar7;\n      uVar11 = (uVar10 | *(uint *)(local_2c + -8) >> (-uVar7 & 0x1f)) >> 0xb;\n    }\n  }\n  else {\n    if (uVar6 < 0x1000000) {\n      iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x11));\n      uVar7 = iVar14 + 0x10;\n      iVar14 = iVar14 + 0x11;\n      goto joined_r0x00054cbc;\n    }\n    iVar2 = local_2c + -4;\n    iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x19));\n    uVar8 = iVar14 + 8;\n    uVar6 = uVar6 << (uVar8 & 0x1f);\n    uVar11 = uVar6 >> 0xb;\n    iVar14 = (int)param_4 + (uVar13 - (iVar14 + 9));\n    uVar6 = uVar6 << 0x15;\n    uVar8 = 0xb - uVar8;\n  }\n  if (((int)uVar8 < 0x20) && (1 < (int)piVar9)) {\n    uVar6 = uVar6 | *(uint *)(iVar2 + -4) >> (uVar8 & 0x1f);\n  }\nLAB_00054c48:\n  if (0x3ff < iVar14) {\n    return 0;\n  }\n  if (iVar14 < -0x3fe) {\n    if (iVar14 < -0x432) {\n      return uVar6;\n    }\n    if ((int)(-iVar14 - 0x3feU) < 0x20) {\n      uVar13 = iVar14 + 0x41e;\n      uVar6 = uVar6 >> (-iVar14 - 0x3feU & 0x1f);\n    }\n    else {\n      uVar6 = uVar11 >> (-iVar14 - 0x41eU & 0x1f);\n      if (-iVar14 - 0x41eU == 0) {\n        return uVar6;\n      }\n      uVar13 = iVar14 + 0x43e;\n      uVar11 = 0;\n    }\n    uVar6 = uVar6 | uVar11 << (uVar13 & 0x1f);\n  }\n  return uVar6;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "int *piVar12;" primitive_type (pointer_declarator "*piVar12" * identifier) ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "int *piVar15;" primitive_type (pointer_declarator "*piVar15" * identifier) ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "undefined *puVar17;" type_identifier (pointer_declarator "*puVar17" * identifier) ;) (declaration "undefined1 *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "int *local_resc;" primitive_type (pointer_declarator "*local_resc" * identifier) ;) (declaration "undefined1 auStack_80 [32];" type_identifier (array_declarator "auStack_80 [32]" identifier [ number_literal ]) ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "undefined1 auStack_44 [24];" type_identifier (array_declarator "auStack_44 [24]" identifier [ number_literal ]) ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar17 = PTR___stack_chk_guard_0009d540;" (assignment_expression "puVar17 = PTR___stack_chk_guard_0009d540" identifier = identifier) ;) (expression_statement "puVar18 = auStack_80;" (assignment_expression "puVar18 = auStack_80" 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 "local_resc = param_4;" (assignment_expression "local_resc = param_4" identifier = identifier) ;) (if_statement "if (param_3 < 1000) {\n    uVar13 = param_3 << 2;\n    local_48 = 0;\n    if (uVar13 < 0x7f01) goto LAB_0005471c;\nLAB_00054ab8:\n    local_48 = 0;\n    piVar5 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_48);\n  }\n  else {\n    uVar13 = (uint)(param_3 << 1) / 3;\n    iVar16 = param_3 - uVar13;\n    iVar2 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)(iVar16);\n    iVar14 = param_3 + uVar13 + -1;\n    if (iVar14 < iVar2) {\n      iVar14 = iVar2;\n    }\n    iVar14 = ((iVar16 + 1) / 2 + 1) * 4 + iVar14;\n    if (iVar14 < param_3) {\n      iVar14 = param_3;\n    }\n    uVar13 = iVar14 << 2;\n    local_48 = 0;\n    if (0x7f00 < uVar13) goto LAB_00054ab8;\nLAB_0005471c:\n    local_48 = 0;\n    iVar14 = -(uVar13 + 7 & 0xfffffff8);\n    puVar18 = auStack_80 + iVar14;\n    piVar5 = (int *)(auStack_44 + iVar14 + -0x1c);\n  }" if (parenthesized_expression "(param_3 < 1000)" ( (binary_expression "param_3 < 1000" identifier < number_literal) )) (compound_statement "{\n    uVar13 = param_3 << 2;\n    local_48 = 0;\n    if (uVar13 < 0x7f01) goto LAB_0005471c;\nLAB_00054ab8:\n    local_48 = 0;\n    piVar5 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_48);\n  }" { (expression_statement "uVar13 = param_3 << 2;" (assignment_expression "uVar13 = param_3 << 2" identifier = (binary_expression "param_3 << 2" identifier << number_literal)) ;) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (if_statement "if (uVar13 < 0x7f01) goto LAB_0005471c;" if (parenthesized_expression "(uVar13 < 0x7f01)" ( (binary_expression "uVar13 < 0x7f01" identifier < number_literal) )) (goto_statement "goto LAB_0005471c;" goto statement_identifier ;)) (labeled_statement "LAB_00054ab8:\n    local_48 = 0;" statement_identifier : (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;)) (expression_statement "piVar5 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_48);" (assignment_expression "piVar5 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_48)" identifier = (cast_expression "(int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_48)" (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_48)" ( (pointer_expression "&local_48" & identifier) ))))) ;) }) (else_clause "else {\n    uVar13 = (uint)(param_3 << 1) / 3;\n    iVar16 = param_3 - uVar13;\n    iVar2 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)(iVar16);\n    iVar14 = param_3 + uVar13 + -1;\n    if (iVar14 < iVar2) {\n      iVar14 = iVar2;\n    }\n    iVar14 = ((iVar16 + 1) / 2 + 1) * 4 + iVar14;\n    if (iVar14 < param_3) {\n      iVar14 = param_3;\n    }\n    uVar13 = iVar14 << 2;\n    local_48 = 0;\n    if (0x7f00 < uVar13) goto LAB_00054ab8;\nLAB_0005471c:\n    local_48 = 0;\n    iVar14 = -(uVar13 + 7 & 0xfffffff8);\n    puVar18 = auStack_80 + iVar14;\n    piVar5 = (int *)(auStack_44 + iVar14 + -0x1c);\n  }" else (compound_statement "{\n    uVar13 = (uint)(param_3 << 1) / 3;\n    iVar16 = param_3 - uVar13;\n    iVar2 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)(iVar16);\n    iVar14 = param_3 + uVar13 + -1;\n    if (iVar14 < iVar2) {\n      iVar14 = iVar2;\n    }\n    iVar14 = ((iVar16 + 1) / 2 + 1) * 4 + iVar14;\n    if (iVar14 < param_3) {\n      iVar14 = param_3;\n    }\n    uVar13 = iVar14 << 2;\n    local_48 = 0;\n    if (0x7f00 < uVar13) goto LAB_00054ab8;\nLAB_0005471c:\n    local_48 = 0;\n    iVar14 = -(uVar13 + 7 & 0xfffffff8);\n    puVar18 = auStack_80 + iVar14;\n    piVar5 = (int *)(auStack_44 + iVar14 + -0x1c);\n  }" { (expression_statement "uVar13 = (uint)(param_3 << 1) / 3;" (assignment_expression "uVar13 = (uint)(param_3 << 1) / 3" identifier = (binary_expression "(uint)(param_3 << 1) / 3" (call_expression "(uint)(param_3 << 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_3 << 1)" ( (binary_expression "param_3 << 1" identifier << number_literal) ))) / number_literal)) ;) (expression_statement "iVar16 = param_3 - uVar13;" (assignment_expression "iVar16 = param_3 - uVar13" identifier = (binary_expression "param_3 - uVar13" identifier - identifier)) ;) (expression_statement "iVar2 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)(iVar16);" (assignment_expression "iVar2 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)(iVar16)" identifier = (call_expression "(*(code *)PTR___gmpn_hgcd_itch_0009d464)(iVar16)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_itch_0009d464)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_itch_0009d464" * (cast_expression "(code *)PTR___gmpn_hgcd_itch_0009d464" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar16)" ( identifier )))) ;) (expression_statement "iVar14 = param_3 + uVar13 + -1;" (assignment_expression "iVar14 = param_3 + uVar13 + -1" identifier = (binary_expression "param_3 + uVar13 + -1" (binary_expression "param_3 + uVar13" identifier + identifier) + number_literal)) ;) (if_statement "if (iVar14 < iVar2) {\n      iVar14 = iVar2;\n    }" if (parenthesized_expression "(iVar14 < iVar2)" ( (binary_expression "iVar14 < iVar2" identifier < identifier) )) (compound_statement "{\n      iVar14 = iVar2;\n    }" { (expression_statement "iVar14 = iVar2;" (assignment_expression "iVar14 = iVar2" identifier = identifier) ;) })) (expression_statement "iVar14 = ((iVar16 + 1) / 2 + 1) * 4 + iVar14;" (assignment_expression "iVar14 = ((iVar16 + 1) / 2 + 1) * 4 + iVar14" identifier = (binary_expression "((iVar16 + 1) / 2 + 1) * 4 + iVar14" (binary_expression "((iVar16 + 1) / 2 + 1) * 4" (parenthesized_expression "((iVar16 + 1) / 2 + 1)" ( (binary_expression "(iVar16 + 1) / 2 + 1" (binary_expression "(iVar16 + 1) / 2" (parenthesized_expression "(iVar16 + 1)" ( (binary_expression "iVar16 + 1" identifier + number_literal) )) / number_literal) + number_literal) )) * number_literal) + identifier)) ;) (if_statement "if (iVar14 < param_3) {\n      iVar14 = param_3;\n    }" if (parenthesized_expression "(iVar14 < param_3)" ( (binary_expression "iVar14 < param_3" identifier < identifier) )) (compound_statement "{\n      iVar14 = param_3;\n    }" { (expression_statement "iVar14 = param_3;" (assignment_expression "iVar14 = param_3" identifier = identifier) ;) })) (expression_statement "uVar13 = iVar14 << 2;" (assignment_expression "uVar13 = iVar14 << 2" identifier = (binary_expression "iVar14 << 2" identifier << number_literal)) ;) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (if_statement "if (0x7f00 < uVar13) goto LAB_00054ab8;" if (parenthesized_expression "(0x7f00 < uVar13)" ( (binary_expression "0x7f00 < uVar13" number_literal < identifier) )) (goto_statement "goto LAB_00054ab8;" goto statement_identifier ;)) (labeled_statement "LAB_0005471c:\n    local_48 = 0;" statement_identifier : (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;)) (expression_statement "iVar14 = -(uVar13 + 7 & 0xfffffff8);" (assignment_expression "iVar14 = -(uVar13 + 7 & 0xfffffff8)" identifier = (unary_expression "-(uVar13 + 7 & 0xfffffff8)" - (parenthesized_expression "(uVar13 + 7 & 0xfffffff8)" ( (binary_expression "uVar13 + 7 & 0xfffffff8" (binary_expression "uVar13 + 7" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar18 = auStack_80 + iVar14;" (assignment_expression "puVar18 = auStack_80 + iVar14" identifier = (binary_expression "auStack_80 + iVar14" identifier + identifier)) ;) (expression_statement "piVar5 = (int *)(auStack_44 + iVar14 + -0x1c);" (assignment_expression "piVar5 = (int *)(auStack_44 + iVar14 + -0x1c)" identifier = (cast_expression "(int *)(auStack_44 + iVar14 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auStack_44 + iVar14 + -0x1c)" ( (binary_expression "auStack_44 + iVar14 + -0x1c" (binary_expression "auStack_44 + iVar14" identifier + identifier) + number_literal) )))) ;) }))) (if_statement "if (param_3 < 1000) {\n    bVar1 = param_3 < 3;\n  }\n  else {\n    puVar3 = PTR_LAB_0009d07c + 0x45d0;\n    do {\n      uVar13 = (uint)(param_3 << 1) / 3;\n      iVar14 = param_3 - uVar13;\n      (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar14,piVar5);\n      *(int ***)(puVar18 + 0x10) = &local_resc;\n      *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n      iVar2 = (*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)\n                        (param_1 + uVar13,param_2 + uVar13,iVar14,auStack_44);\n      if (iVar2 < 1) {\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar5;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar3;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_1,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n      }\n      else {\n        *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n        *(uint *)(puVar18 + 0x10) = uVar13;\n        param_4 = param_2;\n        param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                            (auStack_44,uVar13 + iVar2,param_1);\n      }\n      bVar1 = param_3 < 3;\n    } while (999 < param_3);\n  }" if (parenthesized_expression "(param_3 < 1000)" ( (binary_expression "param_3 < 1000" identifier < number_literal) )) (compound_statement "{\n    bVar1 = param_3 < 3;\n  }" { (expression_statement "bVar1 = param_3 < 3;" (assignment_expression "bVar1 = param_3 < 3" identifier = (binary_expression "param_3 < 3" identifier < number_literal)) ;) }) (else_clause "else {\n    puVar3 = PTR_LAB_0009d07c + 0x45d0;\n    do {\n      uVar13 = (uint)(param_3 << 1) / 3;\n      iVar14 = param_3 - uVar13;\n      (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar14,piVar5);\n      *(int ***)(puVar18 + 0x10) = &local_resc;\n      *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n      iVar2 = (*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)\n                        (param_1 + uVar13,param_2 + uVar13,iVar14,auStack_44);\n      if (iVar2 < 1) {\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar5;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar3;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_1,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n      }\n      else {\n        *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n        *(uint *)(puVar18 + 0x10) = uVar13;\n        param_4 = param_2;\n        param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                            (auStack_44,uVar13 + iVar2,param_1);\n      }\n      bVar1 = param_3 < 3;\n    } while (999 < param_3);\n  }" else (compound_statement "{\n    puVar3 = PTR_LAB_0009d07c + 0x45d0;\n    do {\n      uVar13 = (uint)(param_3 << 1) / 3;\n      iVar14 = param_3 - uVar13;\n      (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar14,piVar5);\n      *(int ***)(puVar18 + 0x10) = &local_resc;\n      *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n      iVar2 = (*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)\n                        (param_1 + uVar13,param_2 + uVar13,iVar14,auStack_44);\n      if (iVar2 < 1) {\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar5;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar3;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_1,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n      }\n      else {\n        *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n        *(uint *)(puVar18 + 0x10) = uVar13;\n        param_4 = param_2;\n        param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                            (auStack_44,uVar13 + iVar2,param_1);\n      }\n      bVar1 = param_3 < 3;\n    } while (999 < param_3);\n  }" { (expression_statement "puVar3 = PTR_LAB_0009d07c + 0x45d0;" (assignment_expression "puVar3 = PTR_LAB_0009d07c + 0x45d0" identifier = (binary_expression "PTR_LAB_0009d07c + 0x45d0" identifier + number_literal)) ;) (do_statement "do {\n      uVar13 = (uint)(param_3 << 1) / 3;\n      iVar14 = param_3 - uVar13;\n      (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar14,piVar5);\n      *(int ***)(puVar18 + 0x10) = &local_resc;\n      *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n      iVar2 = (*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)\n                        (param_1 + uVar13,param_2 + uVar13,iVar14,auStack_44);\n      if (iVar2 < 1) {\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar5;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar3;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_1,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n      }\n      else {\n        *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n        *(uint *)(puVar18 + 0x10) = uVar13;\n        param_4 = param_2;\n        param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                            (auStack_44,uVar13 + iVar2,param_1);\n      }\n      bVar1 = param_3 < 3;\n    } while (999 < param_3);" do (compound_statement "{\n      uVar13 = (uint)(param_3 << 1) / 3;\n      iVar14 = param_3 - uVar13;\n      (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar14,piVar5);\n      *(int ***)(puVar18 + 0x10) = &local_resc;\n      *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n      iVar2 = (*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)\n                        (param_1 + uVar13,param_2 + uVar13,iVar14,auStack_44);\n      if (iVar2 < 1) {\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar5;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar3;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_1,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n      }\n      else {\n        *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n        *(uint *)(puVar18 + 0x10) = uVar13;\n        param_4 = param_2;\n        param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                            (auStack_44,uVar13 + iVar2,param_1);\n      }\n      bVar1 = param_3 < 3;\n    }" { (expression_statement "uVar13 = (uint)(param_3 << 1) / 3;" (assignment_expression "uVar13 = (uint)(param_3 << 1) / 3" identifier = (binary_expression "(uint)(param_3 << 1) / 3" (call_expression "(uint)(param_3 << 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_3 << 1)" ( (binary_expression "param_3 << 1" identifier << number_literal) ))) / number_literal)) ;) (expression_statement "iVar14 = param_3 - uVar13;" (assignment_expression "iVar14 = param_3 - uVar13" identifier = (binary_expression "param_3 - uVar13" identifier - identifier)) ;) (expression_statement "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar14,piVar5);" (call_expression "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar14,piVar5)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc" * (cast_expression "(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_44,iVar14,piVar5)" ( identifier , identifier , identifier ))) ;) (expression_statement "*(int ***)(puVar18 + 0x10) = &local_resc;" (assignment_expression "*(int ***)(puVar18 + 0x10) = &local_resc" (pointer_expression "*(int ***)(puVar18 + 0x10)" * (cast_expression "(int ***)(puVar18 + 0x10)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar18 + 0x10)" ( (binary_expression "puVar18 + 0x10" identifier + number_literal) )))) = (pointer_expression "&local_resc" & identifier)) ;) (expression_statement "*(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;" (assignment_expression "*(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4" (pointer_expression "*(int **)(puVar18 + 0x14)" * (cast_expression "(int **)(puVar18 + 0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x14)" ( (binary_expression "puVar18 + 0x14" identifier + number_literal) )))) = (binary_expression "piVar5 + ((iVar14 + 1) / 2 + 1) * 4" identifier + (binary_expression "((iVar14 + 1) / 2 + 1) * 4" (parenthesized_expression "((iVar14 + 1) / 2 + 1)" ( (binary_expression "(iVar14 + 1) / 2 + 1" (binary_expression "(iVar14 + 1) / 2" (parenthesized_expression "(iVar14 + 1)" ( (binary_expression "iVar14 + 1" identifier + number_literal) )) / number_literal) + number_literal) )) * number_literal))) ;) (expression_statement "iVar2 = (*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)\n                        (param_1 + uVar13,param_2 + uVar13,iVar14,auStack_44);" (assignment_expression "iVar2 = (*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)\n                        (param_1 + uVar13,param_2 + uVar13,iVar14,auStack_44)" identifier = (call_expression "(*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)\n                        (param_1 + uVar13,param_2 + uVar13,iVar14,auStack_44)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8" * (cast_expression "(code *)PTR___gmpn_hgcd_jacobi_0009d0e8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1 + uVar13,param_2 + uVar13,iVar14,auStack_44)" ( (binary_expression "param_1 + uVar13" identifier + identifier) , (binary_expression "param_2 + uVar13" identifier + identifier) , identifier , identifier )))) ;) (if_statement "if (iVar2 < 1) {\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar5;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar3;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_1,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n      }\n      else {\n        *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n        *(uint *)(puVar18 + 0x10) = uVar13;\n        param_4 = param_2;\n        param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                            (auStack_44,uVar13 + iVar2,param_1);\n      }" if (parenthesized_expression "(iVar2 < 1)" ( (binary_expression "iVar2 < 1" identifier < number_literal) )) (compound_statement "{\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar5;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar3;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_1,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n      }" { (expression_statement "param_4 = (int *)0x0;" (assignment_expression "param_4 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*(int **)(puVar18 + 0x18) = piVar5;" (assignment_expression "*(int **)(puVar18 + 0x18) = piVar5" (pointer_expression "*(int **)(puVar18 + 0x18)" * (cast_expression "(int **)(puVar18 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x18)" ( (binary_expression "puVar18 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int ***)(puVar18 + 0x14) = &local_resc;" (assignment_expression "*(int ***)(puVar18 + 0x14) = &local_resc" (pointer_expression "*(int ***)(puVar18 + 0x14)" * (cast_expression "(int ***)(puVar18 + 0x14)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar18 + 0x14)" ( (binary_expression "puVar18 + 0x14" identifier + number_literal) )))) = (pointer_expression "&local_resc" & identifier)) ;) (expression_statement "*(undefined **)(puVar18 + 0x10) = puVar3;" (assignment_expression "*(undefined **)(puVar18 + 0x10) = puVar3" (pointer_expression "*(undefined **)(puVar18 + 0x10)" * (cast_expression "(undefined **)(puVar18 + 0x10)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x10)" ( (binary_expression "puVar18 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar9 = param_2;" (assignment_expression "piVar9 = param_2" identifier = identifier) ;) (expression_statement "param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_1,param_2,param_3);" (assignment_expression "param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_1,param_2,param_3)" identifier = (call_expression "(*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_1,param_2,param_3)" (parenthesized_expression "(*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)" ( (pointer_expression "*(code *)PTR___gmpn_gcd_subdiv_step_0009d118" * (cast_expression "(code *)PTR___gmpn_gcd_subdiv_step_0009d118" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,param_2,param_3)" ( identifier , identifier , identifier )))) ;) (if_statement "if (param_3 == 0) goto LAB_00054840;" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00054840;" goto statement_identifier ;)) }) (else_clause "else {\n        *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n        *(uint *)(puVar18 + 0x10) = uVar13;\n        param_4 = param_2;\n        param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                            (auStack_44,uVar13 + iVar2,param_1);\n      }" else (compound_statement "{\n        *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n        *(uint *)(puVar18 + 0x10) = uVar13;\n        param_4 = param_2;\n        param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                            (auStack_44,uVar13 + iVar2,param_1);\n      }" { (expression_statement "*(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;" (assignment_expression "*(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4" (pointer_expression "*(int **)(puVar18 + 0x14)" * (cast_expression "(int **)(puVar18 + 0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x14)" ( (binary_expression "puVar18 + 0x14" identifier + number_literal) )))) = (binary_expression "piVar5 + ((iVar14 + 1) / 2 + 1) * 4" identifier + (binary_expression "((iVar14 + 1) / 2 + 1) * 4" (parenthesized_expression "((iVar14 + 1) / 2 + 1)" ( (binary_expression "(iVar14 + 1) / 2 + 1" (binary_expression "(iVar14 + 1) / 2" (parenthesized_expression "(iVar14 + 1)" ( (binary_expression "iVar14 + 1" identifier + number_literal) )) / number_literal) + number_literal) )) * number_literal))) ;) (expression_statement "*(uint *)(puVar18 + 0x10) = uVar13;" (assignment_expression "*(uint *)(puVar18 + 0x10) = uVar13" (pointer_expression "*(uint *)(puVar18 + 0x10)" * (cast_expression "(uint *)(puVar18 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar18 + 0x10)" ( (binary_expression "puVar18 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_4 = param_2;" (assignment_expression "param_4 = param_2" identifier = identifier) ;) (expression_statement "param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                            (auStack_44,uVar13 + iVar2,param_1);" (assignment_expression "param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                            (auStack_44,uVar13 + iVar2,param_1)" identifier = (call_expression "(*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                            (auStack_44,uVar13 + iVar2,param_1)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8" * (cast_expression "(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_44,uVar13 + iVar2,param_1)" ( identifier , (binary_expression "uVar13 + iVar2" identifier + identifier) , identifier )))) ;) }))) (expression_statement "bVar1 = param_3 < 3;" (assignment_expression "bVar1 = param_3 < 3" identifier = (binary_expression "param_3 < 3" identifier < number_literal)) ;) }) while (parenthesized_expression "(999 < param_3)" ( (binary_expression "999 < param_3" number_literal < identifier) )) ;) }))) (expression_statement "puVar3 = PTR___gmpn_clz_tab_0009d18c;" (assignment_expression "puVar3 = PTR___gmpn_clz_tab_0009d18c" identifier = identifier) ;) (if_statement "if (!bVar1) {\n    puVar4 = PTR_LAB_0009d07c + 0x45d0;\n    piVar12 = param_1;\n    do {\n      while( true ) {\n        piVar15 = piVar5;\n        uVar13 = piVar12[param_3 + 0x3fffffff];\n        uVar7 = param_2[param_3 + 0x3fffffff];\n        uVar8 = uVar13 | uVar7;\n        uVar11 = param_2[param_3 + 0x3ffffffe];\n        uVar6 = piVar12[param_3 + 0x3ffffffe];\n        if (-1 < (int)uVar8) {\n          if (uVar8 < 0x10000) {\n            iVar14 = 0;\n            if (0xff < uVar8) {\n              iVar14 = 0x18;\n            }\n            iVar2 = 9;\n            if (0xff >= uVar8) {\n              iVar2 = 1;\n            }\n          }\n          else {\n            iVar14 = 0x10;\n            if (0xffffff < uVar8) {\n              iVar14 = 8;\n            }\n            iVar2 = 0x19;\n            if (0xffffff >= uVar8) {\n              iVar2 = 0x11;\n            }\n          }\n          uVar8 = iVar14 - (uint)(byte)puVar3[uVar8 >> iVar2];\n          uVar10 = 0x20 - uVar8;\n          uVar13 = uVar13 << (uVar8 & 0x1f) | uVar6 >> (uVar10 & 0x1f);\n          uVar6 = (uint)piVar12[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar6 << (uVar8 & 0x1f);\n          uVar7 = uVar7 << (uVar8 & 0x1f) | uVar11 >> (uVar10 & 0x1f);\n          uVar11 = (uint)param_2[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar11 << (uVar8 & 0x1f)\n          ;\n        }\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined1 **)(puVar18 + 0x10) = auStack_44;\n        iVar14 = (*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar13,uVar6,uVar7,uVar11);\n        if (iVar14 != 0) break;\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar15;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar4;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(piVar12,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n        param_1 = piVar12;\n        piVar5 = piVar15;\n        if (param_3 < 3) goto LAB_00054a30;\n      }\n      *(int *)(puVar18 + 0x10) = param_3;\n      param_4 = param_2;\n      param_3 = (*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488)\n                          (auStack_44,piVar15,piVar12);\n      param_1 = piVar15;\n      piVar5 = piVar12;\n      piVar12 = piVar15;\n    } while (2 < param_3);\n  }" if (parenthesized_expression "(!bVar1)" ( (unary_expression "!bVar1" ! identifier) )) (compound_statement "{\n    puVar4 = PTR_LAB_0009d07c + 0x45d0;\n    piVar12 = param_1;\n    do {\n      while( true ) {\n        piVar15 = piVar5;\n        uVar13 = piVar12[param_3 + 0x3fffffff];\n        uVar7 = param_2[param_3 + 0x3fffffff];\n        uVar8 = uVar13 | uVar7;\n        uVar11 = param_2[param_3 + 0x3ffffffe];\n        uVar6 = piVar12[param_3 + 0x3ffffffe];\n        if (-1 < (int)uVar8) {\n          if (uVar8 < 0x10000) {\n            iVar14 = 0;\n            if (0xff < uVar8) {\n              iVar14 = 0x18;\n            }\n            iVar2 = 9;\n            if (0xff >= uVar8) {\n              iVar2 = 1;\n            }\n          }\n          else {\n            iVar14 = 0x10;\n            if (0xffffff < uVar8) {\n              iVar14 = 8;\n            }\n            iVar2 = 0x19;\n            if (0xffffff >= uVar8) {\n              iVar2 = 0x11;\n            }\n          }\n          uVar8 = iVar14 - (uint)(byte)puVar3[uVar8 >> iVar2];\n          uVar10 = 0x20 - uVar8;\n          uVar13 = uVar13 << (uVar8 & 0x1f) | uVar6 >> (uVar10 & 0x1f);\n          uVar6 = (uint)piVar12[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar6 << (uVar8 & 0x1f);\n          uVar7 = uVar7 << (uVar8 & 0x1f) | uVar11 >> (uVar10 & 0x1f);\n          uVar11 = (uint)param_2[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar11 << (uVar8 & 0x1f)\n          ;\n        }\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined1 **)(puVar18 + 0x10) = auStack_44;\n        iVar14 = (*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar13,uVar6,uVar7,uVar11);\n        if (iVar14 != 0) break;\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar15;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar4;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(piVar12,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n        param_1 = piVar12;\n        piVar5 = piVar15;\n        if (param_3 < 3) goto LAB_00054a30;\n      }\n      *(int *)(puVar18 + 0x10) = param_3;\n      param_4 = param_2;\n      param_3 = (*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488)\n                          (auStack_44,piVar15,piVar12);\n      param_1 = piVar15;\n      piVar5 = piVar12;\n      piVar12 = piVar15;\n    } while (2 < param_3);\n  }" { (expression_statement "puVar4 = PTR_LAB_0009d07c + 0x45d0;" (assignment_expression "puVar4 = PTR_LAB_0009d07c + 0x45d0" identifier = (binary_expression "PTR_LAB_0009d07c + 0x45d0" identifier + number_literal)) ;) (expression_statement "piVar12 = param_1;" (assignment_expression "piVar12 = param_1" identifier = identifier) ;) (do_statement "do {\n      while( true ) {\n        piVar15 = piVar5;\n        uVar13 = piVar12[param_3 + 0x3fffffff];\n        uVar7 = param_2[param_3 + 0x3fffffff];\n        uVar8 = uVar13 | uVar7;\n        uVar11 = param_2[param_3 + 0x3ffffffe];\n        uVar6 = piVar12[param_3 + 0x3ffffffe];\n        if (-1 < (int)uVar8) {\n          if (uVar8 < 0x10000) {\n            iVar14 = 0;\n            if (0xff < uVar8) {\n              iVar14 = 0x18;\n            }\n            iVar2 = 9;\n            if (0xff >= uVar8) {\n              iVar2 = 1;\n            }\n          }\n          else {\n            iVar14 = 0x10;\n            if (0xffffff < uVar8) {\n              iVar14 = 8;\n            }\n            iVar2 = 0x19;\n            if (0xffffff >= uVar8) {\n              iVar2 = 0x11;\n            }\n          }\n          uVar8 = iVar14 - (uint)(byte)puVar3[uVar8 >> iVar2];\n          uVar10 = 0x20 - uVar8;\n          uVar13 = uVar13 << (uVar8 & 0x1f) | uVar6 >> (uVar10 & 0x1f);\n          uVar6 = (uint)piVar12[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar6 << (uVar8 & 0x1f);\n          uVar7 = uVar7 << (uVar8 & 0x1f) | uVar11 >> (uVar10 & 0x1f);\n          uVar11 = (uint)param_2[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar11 << (uVar8 & 0x1f)\n          ;\n        }\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined1 **)(puVar18 + 0x10) = auStack_44;\n        iVar14 = (*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar13,uVar6,uVar7,uVar11);\n        if (iVar14 != 0) break;\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar15;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar4;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(piVar12,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n        param_1 = piVar12;\n        piVar5 = piVar15;\n        if (param_3 < 3) goto LAB_00054a30;\n      }\n      *(int *)(puVar18 + 0x10) = param_3;\n      param_4 = param_2;\n      param_3 = (*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488)\n                          (auStack_44,piVar15,piVar12);\n      param_1 = piVar15;\n      piVar5 = piVar12;\n      piVar12 = piVar15;\n    } while (2 < param_3);" do (compound_statement "{\n      while( true ) {\n        piVar15 = piVar5;\n        uVar13 = piVar12[param_3 + 0x3fffffff];\n        uVar7 = param_2[param_3 + 0x3fffffff];\n        uVar8 = uVar13 | uVar7;\n        uVar11 = param_2[param_3 + 0x3ffffffe];\n        uVar6 = piVar12[param_3 + 0x3ffffffe];\n        if (-1 < (int)uVar8) {\n          if (uVar8 < 0x10000) {\n            iVar14 = 0;\n            if (0xff < uVar8) {\n              iVar14 = 0x18;\n            }\n            iVar2 = 9;\n            if (0xff >= uVar8) {\n              iVar2 = 1;\n            }\n          }\n          else {\n            iVar14 = 0x10;\n            if (0xffffff < uVar8) {\n              iVar14 = 8;\n            }\n            iVar2 = 0x19;\n            if (0xffffff >= uVar8) {\n              iVar2 = 0x11;\n            }\n          }\n          uVar8 = iVar14 - (uint)(byte)puVar3[uVar8 >> iVar2];\n          uVar10 = 0x20 - uVar8;\n          uVar13 = uVar13 << (uVar8 & 0x1f) | uVar6 >> (uVar10 & 0x1f);\n          uVar6 = (uint)piVar12[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar6 << (uVar8 & 0x1f);\n          uVar7 = uVar7 << (uVar8 & 0x1f) | uVar11 >> (uVar10 & 0x1f);\n          uVar11 = (uint)param_2[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar11 << (uVar8 & 0x1f)\n          ;\n        }\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined1 **)(puVar18 + 0x10) = auStack_44;\n        iVar14 = (*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar13,uVar6,uVar7,uVar11);\n        if (iVar14 != 0) break;\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar15;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar4;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(piVar12,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n        param_1 = piVar12;\n        piVar5 = piVar15;\n        if (param_3 < 3) goto LAB_00054a30;\n      }\n      *(int *)(puVar18 + 0x10) = param_3;\n      param_4 = param_2;\n      param_3 = (*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488)\n                          (auStack_44,piVar15,piVar12);\n      param_1 = piVar15;\n      piVar5 = piVar12;\n      piVar12 = piVar15;\n    }" { (while_statement "while( true ) {\n        piVar15 = piVar5;\n        uVar13 = piVar12[param_3 + 0x3fffffff];\n        uVar7 = param_2[param_3 + 0x3fffffff];\n        uVar8 = uVar13 | uVar7;\n        uVar11 = param_2[param_3 + 0x3ffffffe];\n        uVar6 = piVar12[param_3 + 0x3ffffffe];\n        if (-1 < (int)uVar8) {\n          if (uVar8 < 0x10000) {\n            iVar14 = 0;\n            if (0xff < uVar8) {\n              iVar14 = 0x18;\n            }\n            iVar2 = 9;\n            if (0xff >= uVar8) {\n              iVar2 = 1;\n            }\n          }\n          else {\n            iVar14 = 0x10;\n            if (0xffffff < uVar8) {\n              iVar14 = 8;\n            }\n            iVar2 = 0x19;\n            if (0xffffff >= uVar8) {\n              iVar2 = 0x11;\n            }\n          }\n          uVar8 = iVar14 - (uint)(byte)puVar3[uVar8 >> iVar2];\n          uVar10 = 0x20 - uVar8;\n          uVar13 = uVar13 << (uVar8 & 0x1f) | uVar6 >> (uVar10 & 0x1f);\n          uVar6 = (uint)piVar12[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar6 << (uVar8 & 0x1f);\n          uVar7 = uVar7 << (uVar8 & 0x1f) | uVar11 >> (uVar10 & 0x1f);\n          uVar11 = (uint)param_2[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar11 << (uVar8 & 0x1f)\n          ;\n        }\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined1 **)(puVar18 + 0x10) = auStack_44;\n        iVar14 = (*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar13,uVar6,uVar7,uVar11);\n        if (iVar14 != 0) break;\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar15;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar4;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(piVar12,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n        param_1 = piVar12;\n        piVar5 = piVar15;\n        if (param_3 < 3) goto LAB_00054a30;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        piVar15 = piVar5;\n        uVar13 = piVar12[param_3 + 0x3fffffff];\n        uVar7 = param_2[param_3 + 0x3fffffff];\n        uVar8 = uVar13 | uVar7;\n        uVar11 = param_2[param_3 + 0x3ffffffe];\n        uVar6 = piVar12[param_3 + 0x3ffffffe];\n        if (-1 < (int)uVar8) {\n          if (uVar8 < 0x10000) {\n            iVar14 = 0;\n            if (0xff < uVar8) {\n              iVar14 = 0x18;\n            }\n            iVar2 = 9;\n            if (0xff >= uVar8) {\n              iVar2 = 1;\n            }\n          }\n          else {\n            iVar14 = 0x10;\n            if (0xffffff < uVar8) {\n              iVar14 = 8;\n            }\n            iVar2 = 0x19;\n            if (0xffffff >= uVar8) {\n              iVar2 = 0x11;\n            }\n          }\n          uVar8 = iVar14 - (uint)(byte)puVar3[uVar8 >> iVar2];\n          uVar10 = 0x20 - uVar8;\n          uVar13 = uVar13 << (uVar8 & 0x1f) | uVar6 >> (uVar10 & 0x1f);\n          uVar6 = (uint)piVar12[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar6 << (uVar8 & 0x1f);\n          uVar7 = uVar7 << (uVar8 & 0x1f) | uVar11 >> (uVar10 & 0x1f);\n          uVar11 = (uint)param_2[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar11 << (uVar8 & 0x1f)\n          ;\n        }\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined1 **)(puVar18 + 0x10) = auStack_44;\n        iVar14 = (*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar13,uVar6,uVar7,uVar11);\n        if (iVar14 != 0) break;\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar15;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar4;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(piVar12,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n        param_1 = piVar12;\n        piVar5 = piVar15;\n        if (param_3 < 3) goto LAB_00054a30;\n      }" { (expression_statement "piVar15 = piVar5;" (assignment_expression "piVar15 = piVar5" identifier = identifier) ;) (expression_statement "uVar13 = piVar12[param_3 + 0x3fffffff];" (assignment_expression "uVar13 = piVar12[param_3 + 0x3fffffff]" identifier = (subscript_expression "piVar12[param_3 + 0x3fffffff]" identifier [ (binary_expression "param_3 + 0x3fffffff" identifier + number_literal) ])) ;) (expression_statement "uVar7 = param_2[param_3 + 0x3fffffff];" (assignment_expression "uVar7 = param_2[param_3 + 0x3fffffff]" identifier = (subscript_expression "param_2[param_3 + 0x3fffffff]" identifier [ (binary_expression "param_3 + 0x3fffffff" identifier + number_literal) ])) ;) (expression_statement "uVar8 = uVar13 | uVar7;" (assignment_expression "uVar8 = uVar13 | uVar7" identifier = (binary_expression "uVar13 | uVar7" identifier | identifier)) ;) (expression_statement "uVar11 = param_2[param_3 + 0x3ffffffe];" (assignment_expression "uVar11 = param_2[param_3 + 0x3ffffffe]" identifier = (subscript_expression "param_2[param_3 + 0x3ffffffe]" identifier [ (binary_expression "param_3 + 0x3ffffffe" identifier + number_literal) ])) ;) (expression_statement "uVar6 = piVar12[param_3 + 0x3ffffffe];" (assignment_expression "uVar6 = piVar12[param_3 + 0x3ffffffe]" identifier = (subscript_expression "piVar12[param_3 + 0x3ffffffe]" identifier [ (binary_expression "param_3 + 0x3ffffffe" identifier + number_literal) ])) ;) (if_statement "if (-1 < (int)uVar8) {\n          if (uVar8 < 0x10000) {\n            iVar14 = 0;\n            if (0xff < uVar8) {\n              iVar14 = 0x18;\n            }\n            iVar2 = 9;\n            if (0xff >= uVar8) {\n              iVar2 = 1;\n            }\n          }\n          else {\n            iVar14 = 0x10;\n            if (0xffffff < uVar8) {\n              iVar14 = 8;\n            }\n            iVar2 = 0x19;\n            if (0xffffff >= uVar8) {\n              iVar2 = 0x11;\n            }\n          }\n          uVar8 = iVar14 - (uint)(byte)puVar3[uVar8 >> iVar2];\n          uVar10 = 0x20 - uVar8;\n          uVar13 = uVar13 << (uVar8 & 0x1f) | uVar6 >> (uVar10 & 0x1f);\n          uVar6 = (uint)piVar12[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar6 << (uVar8 & 0x1f);\n          uVar7 = uVar7 << (uVar8 & 0x1f) | uVar11 >> (uVar10 & 0x1f);\n          uVar11 = (uint)param_2[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar11 << (uVar8 & 0x1f)\n          ;\n        }" if (parenthesized_expression "(-1 < (int)uVar8)" ( (binary_expression "-1 < (int)uVar8" number_literal < (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          if (uVar8 < 0x10000) {\n            iVar14 = 0;\n            if (0xff < uVar8) {\n              iVar14 = 0x18;\n            }\n            iVar2 = 9;\n            if (0xff >= uVar8) {\n              iVar2 = 1;\n            }\n          }\n          else {\n            iVar14 = 0x10;\n            if (0xffffff < uVar8) {\n              iVar14 = 8;\n            }\n            iVar2 = 0x19;\n            if (0xffffff >= uVar8) {\n              iVar2 = 0x11;\n            }\n          }\n          uVar8 = iVar14 - (uint)(byte)puVar3[uVar8 >> iVar2];\n          uVar10 = 0x20 - uVar8;\n          uVar13 = uVar13 << (uVar8 & 0x1f) | uVar6 >> (uVar10 & 0x1f);\n          uVar6 = (uint)piVar12[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar6 << (uVar8 & 0x1f);\n          uVar7 = uVar7 << (uVar8 & 0x1f) | uVar11 >> (uVar10 & 0x1f);\n          uVar11 = (uint)param_2[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar11 << (uVar8 & 0x1f)\n          ;\n        }" { (if_statement "if (uVar8 < 0x10000) {\n            iVar14 = 0;\n            if (0xff < uVar8) {\n              iVar14 = 0x18;\n            }\n            iVar2 = 9;\n            if (0xff >= uVar8) {\n              iVar2 = 1;\n            }\n          }\n          else {\n            iVar14 = 0x10;\n            if (0xffffff < uVar8) {\n              iVar14 = 8;\n            }\n            iVar2 = 0x19;\n            if (0xffffff >= uVar8) {\n              iVar2 = 0x11;\n            }\n          }" if (parenthesized_expression "(uVar8 < 0x10000)" ( (binary_expression "uVar8 < 0x10000" identifier < number_literal) )) (compound_statement "{\n            iVar14 = 0;\n            if (0xff < uVar8) {\n              iVar14 = 0x18;\n            }\n            iVar2 = 9;\n            if (0xff >= uVar8) {\n              iVar2 = 1;\n            }\n          }" { (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) (if_statement "if (0xff < uVar8) {\n              iVar14 = 0x18;\n            }" if (parenthesized_expression "(0xff < uVar8)" ( (binary_expression "0xff < uVar8" number_literal < identifier) )) (compound_statement "{\n              iVar14 = 0x18;\n            }" { (expression_statement "iVar14 = 0x18;" (assignment_expression "iVar14 = 0x18" identifier = number_literal) ;) })) (expression_statement "iVar2 = 9;" (assignment_expression "iVar2 = 9" identifier = number_literal) ;) (if_statement "if (0xff >= uVar8) {\n              iVar2 = 1;\n            }" if (parenthesized_expression "(0xff >= uVar8)" ( (binary_expression "0xff >= uVar8" number_literal >= identifier) )) (compound_statement "{\n              iVar2 = 1;\n            }" { (expression_statement "iVar2 = 1;" (assignment_expression "iVar2 = 1" identifier = number_literal) ;) })) }) (else_clause "else {\n            iVar14 = 0x10;\n            if (0xffffff < uVar8) {\n              iVar14 = 8;\n            }\n            iVar2 = 0x19;\n            if (0xffffff >= uVar8) {\n              iVar2 = 0x11;\n            }\n          }" else (compound_statement "{\n            iVar14 = 0x10;\n            if (0xffffff < uVar8) {\n              iVar14 = 8;\n            }\n            iVar2 = 0x19;\n            if (0xffffff >= uVar8) {\n              iVar2 = 0x11;\n            }\n          }" { (expression_statement "iVar14 = 0x10;" (assignment_expression "iVar14 = 0x10" identifier = number_literal) ;) (if_statement "if (0xffffff < uVar8) {\n              iVar14 = 8;\n            }" if (parenthesized_expression "(0xffffff < uVar8)" ( (binary_expression "0xffffff < uVar8" number_literal < identifier) )) (compound_statement "{\n              iVar14 = 8;\n            }" { (expression_statement "iVar14 = 8;" (assignment_expression "iVar14 = 8" identifier = number_literal) ;) })) (expression_statement "iVar2 = 0x19;" (assignment_expression "iVar2 = 0x19" identifier = number_literal) ;) (if_statement "if (0xffffff >= uVar8) {\n              iVar2 = 0x11;\n            }" if (parenthesized_expression "(0xffffff >= uVar8)" ( (binary_expression "0xffffff >= uVar8" number_literal >= identifier) )) (compound_statement "{\n              iVar2 = 0x11;\n            }" { (expression_statement "iVar2 = 0x11;" (assignment_expression "iVar2 = 0x11" identifier = number_literal) ;) })) }))) (expression_statement "uVar8 = iVar14 - (uint)(byte)puVar3[uVar8 >> iVar2];" (assignment_expression "uVar8 = iVar14 - (uint)(byte)puVar3[uVar8 >> iVar2]" identifier = (binary_expression "iVar14 - (uint)(byte)puVar3[uVar8 >> iVar2]" identifier - (cast_expression "(uint)(byte)puVar3[uVar8 >> iVar2]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)puVar3[uVar8 >> iVar2]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar3[uVar8 >> iVar2]" identifier [ (binary_expression "uVar8 >> iVar2" identifier >> identifier) ]))))) ;) (expression_statement "uVar10 = 0x20 - uVar8;" (assignment_expression "uVar10 = 0x20 - uVar8" identifier = (binary_expression "0x20 - uVar8" number_literal - identifier)) ;) (expression_statement "uVar13 = uVar13 << (uVar8 & 0x1f) | uVar6 >> (uVar10 & 0x1f);" (assignment_expression "uVar13 = uVar13 << (uVar8 & 0x1f) | uVar6 >> (uVar10 & 0x1f)" identifier = (binary_expression "uVar13 << (uVar8 & 0x1f) | uVar6 >> (uVar10 & 0x1f)" (binary_expression "uVar13 << (uVar8 & 0x1f)" identifier << (parenthesized_expression "(uVar8 & 0x1f)" ( (binary_expression "uVar8 & 0x1f" identifier & number_literal) ))) | (binary_expression "uVar6 >> (uVar10 & 0x1f)" identifier >> (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) ))))) ;) (expression_statement "uVar6 = (uint)piVar12[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar6 << (uVar8 & 0x1f);" (assignment_expression "uVar6 = (uint)piVar12[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar6 << (uVar8 & 0x1f)" identifier = (binary_expression "(uint)piVar12[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar6 << (uVar8 & 0x1f)" (binary_expression "(uint)piVar12[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f)" (cast_expression "(uint)piVar12[param_3 + 0x3ffffffd]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar12[param_3 + 0x3ffffffd]" identifier [ (binary_expression "param_3 + 0x3ffffffd" identifier + number_literal) ])) >> (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) ))) | (binary_expression "uVar6 << (uVar8 & 0x1f)" identifier << (parenthesized_expression "(uVar8 & 0x1f)" ( (binary_expression "uVar8 & 0x1f" identifier & number_literal) ))))) ;) (expression_statement "uVar7 = uVar7 << (uVar8 & 0x1f) | uVar11 >> (uVar10 & 0x1f);" (assignment_expression "uVar7 = uVar7 << (uVar8 & 0x1f) | uVar11 >> (uVar10 & 0x1f)" identifier = (binary_expression "uVar7 << (uVar8 & 0x1f) | uVar11 >> (uVar10 & 0x1f)" (binary_expression "uVar7 << (uVar8 & 0x1f)" identifier << (parenthesized_expression "(uVar8 & 0x1f)" ( (binary_expression "uVar8 & 0x1f" identifier & number_literal) ))) | (binary_expression "uVar11 >> (uVar10 & 0x1f)" identifier >> (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) ))))) ;) (expression_statement "uVar11 = (uint)param_2[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar11 << (uVar8 & 0x1f)\n          ;" (assignment_expression "uVar11 = (uint)param_2[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar11 << (uVar8 & 0x1f)" identifier = (binary_expression "(uint)param_2[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar11 << (uVar8 & 0x1f)" (binary_expression "(uint)param_2[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f)" (cast_expression "(uint)param_2[param_3 + 0x3ffffffd]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[param_3 + 0x3ffffffd]" identifier [ (binary_expression "param_3 + 0x3ffffffd" identifier + number_literal) ])) >> (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) ))) | (binary_expression "uVar11 << (uVar8 & 0x1f)" identifier << (parenthesized_expression "(uVar8 & 0x1f)" ( (binary_expression "uVar8 & 0x1f" identifier & number_literal) ))))) ;) })) (expression_statement "*(int ***)(puVar18 + 0x14) = &local_resc;" (assignment_expression "*(int ***)(puVar18 + 0x14) = &local_resc" (pointer_expression "*(int ***)(puVar18 + 0x14)" * (cast_expression "(int ***)(puVar18 + 0x14)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar18 + 0x14)" ( (binary_expression "puVar18 + 0x14" identifier + number_literal) )))) = (pointer_expression "&local_resc" & identifier)) ;) (expression_statement "*(undefined1 **)(puVar18 + 0x10) = auStack_44;" (assignment_expression "*(undefined1 **)(puVar18 + 0x10) = auStack_44" (pointer_expression "*(undefined1 **)(puVar18 + 0x10)" * (cast_expression "(undefined1 **)(puVar18 + 0x10)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x10)" ( (binary_expression "puVar18 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar14 = (*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar13,uVar6,uVar7,uVar11);" (assignment_expression "iVar14 = (*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar13,uVar6,uVar7,uVar11)" identifier = (call_expression "(*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar13,uVar6,uVar7,uVar11)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd2_jacobi_0009d318" * (cast_expression "(code *)PTR___gmpn_hgcd2_jacobi_0009d318" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar13,uVar6,uVar7,uVar11)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar14 != 0) break;" if (parenthesized_expression "(iVar14 != 0)" ( (binary_expression "iVar14 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "param_4 = (int *)0x0;" (assignment_expression "param_4 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*(int **)(puVar18 + 0x18) = piVar15;" (assignment_expression "*(int **)(puVar18 + 0x18) = piVar15" (pointer_expression "*(int **)(puVar18 + 0x18)" * (cast_expression "(int **)(puVar18 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x18)" ( (binary_expression "puVar18 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int ***)(puVar18 + 0x14) = &local_resc;" (assignment_expression "*(int ***)(puVar18 + 0x14) = &local_resc" (pointer_expression "*(int ***)(puVar18 + 0x14)" * (cast_expression "(int ***)(puVar18 + 0x14)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar18 + 0x14)" ( (binary_expression "puVar18 + 0x14" identifier + number_literal) )))) = (pointer_expression "&local_resc" & identifier)) ;) (expression_statement "*(undefined **)(puVar18 + 0x10) = puVar4;" (assignment_expression "*(undefined **)(puVar18 + 0x10) = puVar4" (pointer_expression "*(undefined **)(puVar18 + 0x10)" * (cast_expression "(undefined **)(puVar18 + 0x10)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x10)" ( (binary_expression "puVar18 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar9 = param_2;" (assignment_expression "piVar9 = param_2" identifier = identifier) ;) (expression_statement "param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(piVar12,param_2,param_3);" (assignment_expression "param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(piVar12,param_2,param_3)" identifier = (call_expression "(*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(piVar12,param_2,param_3)" (parenthesized_expression "(*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)" ( (pointer_expression "*(code *)PTR___gmpn_gcd_subdiv_step_0009d118" * (cast_expression "(code *)PTR___gmpn_gcd_subdiv_step_0009d118" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar12,param_2,param_3)" ( identifier , identifier , identifier )))) ;) (if_statement "if (param_3 == 0) goto LAB_00054840;" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00054840;" goto statement_identifier ;)) (expression_statement "param_1 = piVar12;" (assignment_expression "param_1 = piVar12" identifier = identifier) ;) (expression_statement "piVar5 = piVar15;" (assignment_expression "piVar5 = piVar15" identifier = identifier) ;) (if_statement "if (param_3 < 3) goto LAB_00054a30;" if (parenthesized_expression "(param_3 < 3)" ( (binary_expression "param_3 < 3" identifier < number_literal) )) (goto_statement "goto LAB_00054a30;" goto statement_identifier ;)) })) (expression_statement "*(int *)(puVar18 + 0x10) = param_3;" (assignment_expression "*(int *)(puVar18 + 0x10) = param_3" (pointer_expression "*(int *)(puVar18 + 0x10)" * (cast_expression "(int *)(puVar18 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar18 + 0x10)" ( (binary_expression "puVar18 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_4 = param_2;" (assignment_expression "param_4 = param_2" identifier = identifier) ;) (expression_statement "param_3 = (*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488)\n                          (auStack_44,piVar15,piVar12);" (assignment_expression "param_3 = (*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488)\n                          (auStack_44,piVar15,piVar12)" identifier = (call_expression "(*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488)\n                          (auStack_44,piVar15,piVar12)" (parenthesized_expression "(*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488)" ( (pointer_expression "*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488" * (cast_expression "(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_44,piVar15,piVar12)" ( identifier , identifier , identifier )))) ;) (expression_statement "param_1 = piVar15;" (assignment_expression "param_1 = piVar15" identifier = identifier) ;) (expression_statement "piVar5 = piVar12;" (assignment_expression "piVar5 = piVar12" identifier = identifier) ;) (expression_statement "piVar12 = piVar15;" (assignment_expression "piVar12 = piVar15" identifier = identifier) ;) }) while (parenthesized_expression "(2 < param_3)" ( (binary_expression "2 < param_3" number_literal < identifier) )) ;) })) (labeled_statement "LAB_00054a30:\n  piVar5 = param_1;" statement_identifier : (expression_statement "piVar5 = param_1;" (assignment_expression "piVar5 = param_1" identifier = identifier) ;)) (expression_statement "piVar9 = param_2;" (assignment_expression "piVar9 = param_2" identifier = identifier) ;) (if_statement "if ((int *)0xf < local_resc) {\n    piVar5 = param_2;\n    piVar9 = param_1;\n  }" if (parenthesized_expression "((int *)0xf < local_resc)" ( (binary_expression "(int *)0xf < local_resc" (cast_expression "(int *)0xf" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) < identifier) )) (compound_statement "{\n    piVar5 = param_2;\n    piVar9 = param_1;\n  }" { (expression_statement "piVar5 = param_2;" (assignment_expression "piVar5 = param_2" identifier = identifier) ;) (expression_statement "piVar9 = param_1;" (assignment_expression "piVar9 = param_1" identifier = identifier) ;) })) (if_statement "if (param_3 == 1) {\n    iVar14 = *piVar5;\n    piVar9 = (int *)*piVar9;\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n    if (piVar9 == (int *)0x1) {\n      uVar13 = ((uint)local_resc & 1) * -2 + 1;\n    }\n    else {\n      uVar13 = (*(code *)PTR___gmpn_jacobi_base_0009d408)(iVar14,piVar9,(int)local_resc << 1);\n    }\n  }\n  else {\n    uVar13 = (*(code *)PTR___gmpn_jacobi_2_0009d324)(piVar5,piVar9,(uint)local_resc & 1);\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n  }" if (parenthesized_expression "(param_3 == 1)" ( (binary_expression "param_3 == 1" identifier == number_literal) )) (compound_statement "{\n    iVar14 = *piVar5;\n    piVar9 = (int *)*piVar9;\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n    if (piVar9 == (int *)0x1) {\n      uVar13 = ((uint)local_resc & 1) * -2 + 1;\n    }\n    else {\n      uVar13 = (*(code *)PTR___gmpn_jacobi_base_0009d408)(iVar14,piVar9,(int)local_resc << 1);\n    }\n  }" { (expression_statement "iVar14 = *piVar5;" (assignment_expression "iVar14 = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;) (expression_statement "piVar9 = (int *)*piVar9;" (assignment_expression "piVar9 = (int *)*piVar9" identifier = (cast_expression "(int *)*piVar9" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar9" * identifier))) ;) (if_statement "if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }" if (parenthesized_expression "(local_48 != 0)" ( (binary_expression "local_48 != 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 "()" ( ))) ;) })) (if_statement "if (piVar9 == (int *)0x1) {\n      uVar13 = ((uint)local_resc & 1) * -2 + 1;\n    }\n    else {\n      uVar13 = (*(code *)PTR___gmpn_jacobi_base_0009d408)(iVar14,piVar9,(int)local_resc << 1);\n    }" if (parenthesized_expression "(piVar9 == (int *)0x1)" ( (binary_expression "piVar9 == (int *)0x1" identifier == (cast_expression "(int *)0x1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar13 = ((uint)local_resc & 1) * -2 + 1;\n    }" { (expression_statement "uVar13 = ((uint)local_resc & 1) * -2 + 1;" (assignment_expression "uVar13 = ((uint)local_resc & 1) * -2 + 1" identifier = (binary_expression "((uint)local_resc & 1) * -2 + 1" (binary_expression "((uint)local_resc & 1) * -2" (parenthesized_expression "((uint)local_resc & 1)" ( (binary_expression "(uint)local_resc & 1" (cast_expression "(uint)local_resc" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) * number_literal) + number_literal)) ;) }) (else_clause "else {\n      uVar13 = (*(code *)PTR___gmpn_jacobi_base_0009d408)(iVar14,piVar9,(int)local_resc << 1);\n    }" else (compound_statement "{\n      uVar13 = (*(code *)PTR___gmpn_jacobi_base_0009d408)(iVar14,piVar9,(int)local_resc << 1);\n    }" { (expression_statement "uVar13 = (*(code *)PTR___gmpn_jacobi_base_0009d408)(iVar14,piVar9,(int)local_resc << 1);" (assignment_expression "uVar13 = (*(code *)PTR___gmpn_jacobi_base_0009d408)(iVar14,piVar9,(int)local_resc << 1)" identifier = (call_expression "(*(code *)PTR___gmpn_jacobi_base_0009d408)(iVar14,piVar9,(int)local_resc << 1)" (parenthesized_expression "(*(code *)PTR___gmpn_jacobi_base_0009d408)" ( (pointer_expression "*(code *)PTR___gmpn_jacobi_base_0009d408" * (cast_expression "(code *)PTR___gmpn_jacobi_base_0009d408" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar14,piVar9,(int)local_resc << 1)" ( identifier , identifier , (binary_expression "(int)local_resc << 1" (cast_expression "(int)local_resc" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) )))) ;) }))) }) (else_clause "else {\n    uVar13 = (*(code *)PTR___gmpn_jacobi_2_0009d324)(piVar5,piVar9,(uint)local_resc & 1);\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n  }" else (compound_statement "{\n    uVar13 = (*(code *)PTR___gmpn_jacobi_2_0009d324)(piVar5,piVar9,(uint)local_resc & 1);\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n  }" { (expression_statement "uVar13 = (*(code *)PTR___gmpn_jacobi_2_0009d324)(piVar5,piVar9,(uint)local_resc & 1);" (assignment_expression "uVar13 = (*(code *)PTR___gmpn_jacobi_2_0009d324)(piVar5,piVar9,(uint)local_resc & 1)" identifier = (call_expression "(*(code *)PTR___gmpn_jacobi_2_0009d324)(piVar5,piVar9,(uint)local_resc & 1)" (parenthesized_expression "(*(code *)PTR___gmpn_jacobi_2_0009d324)" ( (pointer_expression "*(code *)PTR___gmpn_jacobi_2_0009d324" * (cast_expression "(code *)PTR___gmpn_jacobi_2_0009d324" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar5,piVar9,(uint)local_resc & 1)" ( identifier , identifier , (binary_expression "(uint)local_resc & 1" (cast_expression "(uint)local_resc" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) ;) (if_statement "if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }" if (parenthesized_expression "(local_48 != 0)" ( (binary_expression "local_48 != 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 "()" ( ))) ;) })) }))) (goto_statement "goto LAB_0005486c;" goto statement_identifier ;) (labeled_statement "LAB_00054840:\n  if (local_48 != 0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n  }" statement_identifier : (if_statement "if (local_48 != 0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n  }" if (parenthesized_expression "(local_48 != 0)" ( (binary_expression "local_48 != 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 "()" ( ))) ;) }))) (if_statement "if (local_resc == (int *)0x1f) {\n    uVar13 = 0;\n  }\n  else {\n    uVar13 = ((uint)local_resc & 1) * -2 + 1;\n  }" if (parenthesized_expression "(local_resc == (int *)0x1f)" ( (binary_expression "local_resc == (int *)0x1f" identifier == (cast_expression "(int *)0x1f" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar13 = 0;\n  }" { (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    uVar13 = ((uint)local_resc & 1) * -2 + 1;\n  }" else (compound_statement "{\n    uVar13 = ((uint)local_resc & 1) * -2 + 1;\n  }" { (expression_statement "uVar13 = ((uint)local_resc & 1) * -2 + 1;" (assignment_expression "uVar13 = ((uint)local_resc & 1) * -2 + 1" identifier = (binary_expression "((uint)local_resc & 1) * -2 + 1" (binary_expression "((uint)local_resc & 1) * -2" (parenthesized_expression "((uint)local_resc & 1)" ( (binary_expression "(uint)local_resc & 1" (cast_expression "(uint)local_resc" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) * number_literal) + number_literal)) ;) }))) (labeled_statement "LAB_0005486c:\n  if (local_2c == *(int *)puVar17) {\n    return uVar13;\n  }" statement_identifier : (if_statement "if (local_2c == *(int *)puVar17) {\n    return uVar13;\n  }" if (parenthesized_expression "(local_2c == *(int *)puVar17)" ( (binary_expression "local_2c == *(int *)puVar17" identifier == (pointer_expression "*(int *)puVar17" * (cast_expression "(int *)puVar17" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return uVar13;\n  }" { (return_statement "return uVar13;" return identifier ;) }))) (expression_statement "puVar17 = PTR___stack_chk_fail_0009d4d0;" (assignment_expression "puVar17 = PTR___stack_chk_fail_0009d4d0" 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 "()" ( ))) ;) (if_statement "if (piVar9 == (int *)0x0) {\n    return 0x7fff0000;\n  }" if (parenthesized_expression "(piVar9 == (int *)0x0)" ( (binary_expression "piVar9 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return 0x7fff0000;\n  }" { (return_statement "return 0x7fff0000;" return number_literal ;) })) (expression_statement "uVar13 = (int)piVar9 * 0x20;" (assignment_expression "uVar13 = (int)piVar9 * 0x20" identifier = (binary_expression "(int)piVar9 * 0x20" (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (if_statement "if (0x7fffffffU - (int)param_4 < uVar13) {\n    return 0;\n  }" if (parenthesized_expression "(0x7fffffffU - (int)param_4 < uVar13)" ( (binary_expression "0x7fffffffU - (int)param_4 < uVar13" (binary_expression "0x7fffffffU - (int)param_4" number_literal - (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier)) < identifier) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "local_2c = local_2c + (int)piVar9 * 4;" (assignment_expression "local_2c = local_2c + (int)piVar9 * 4" identifier = (binary_expression "local_2c + (int)piVar9 * 4" identifier + (binary_expression "(int)piVar9 * 4" (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal))) ;) (expression_statement "uVar6 = *(uint *)(local_2c + -4);" (assignment_expression "uVar6 = *(uint *)(local_2c + -4)" identifier = (pointer_expression "*(uint *)(local_2c + -4)" * (cast_expression "(uint *)(local_2c + -4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + -4)" ( (binary_expression "local_2c + -4" identifier + number_literal) ))))) ;) (if_statement "if (uVar6 < 0x10000) {\n    iVar14 = 0x20;\n    if (0xff < uVar6) {\n      iVar14 = 0x18;\n    }\n    iVar2 = 9;\n    if (0xff >= uVar6) {\n      iVar2 = 1;\n    }\n    uVar7 = iVar14 - (uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> iVar2));\n    iVar14 = uVar7 + 1;\njoined_r0x00054cbc:\n    uVar10 = uVar6 << (uVar7 & 0x1f);\n    uVar11 = uVar10 >> 0xb;\n    iVar14 = (int)param_4 + (uVar13 - iVar14);\n    if ((int)uVar7 < 0xb) {\n      iVar2 = local_2c + -4;\n      uVar6 = uVar10 << 0x15;\n      uVar8 = 0xb - uVar7;\n    }\n    else {\n      if ((int)piVar9 < 2) {\n        uVar6 = 0;\n        goto LAB_00054c48;\n      }\n      iVar2 = local_2c + -8;\n      uVar6 = *(uint *)(local_2c + -8) << (uVar7 - 0xb & 0x1f);\n      piVar9 = (int *)((int)piVar9 + -1);\n      uVar8 = 0x2b - uVar7;\n      uVar11 = (uVar10 | *(uint *)(local_2c + -8) >> (-uVar7 & 0x1f)) >> 0xb;\n    }\n  }\n  else {\n    if (uVar6 < 0x1000000) {\n      iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x11));\n      uVar7 = iVar14 + 0x10;\n      iVar14 = iVar14 + 0x11;\n      goto joined_r0x00054cbc;\n    }\n    iVar2 = local_2c + -4;\n    iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x19));\n    uVar8 = iVar14 + 8;\n    uVar6 = uVar6 << (uVar8 & 0x1f);\n    uVar11 = uVar6 >> 0xb;\n    iVar14 = (int)param_4 + (uVar13 - (iVar14 + 9));\n    uVar6 = uVar6 << 0x15;\n    uVar8 = 0xb - uVar8;\n  }" if (parenthesized_expression "(uVar6 < 0x10000)" ( (binary_expression "uVar6 < 0x10000" identifier < number_literal) )) (compound_statement "{\n    iVar14 = 0x20;\n    if (0xff < uVar6) {\n      iVar14 = 0x18;\n    }\n    iVar2 = 9;\n    if (0xff >= uVar6) {\n      iVar2 = 1;\n    }\n    uVar7 = iVar14 - (uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> iVar2));\n    iVar14 = uVar7 + 1;\njoined_r0x00054cbc:\n    uVar10 = uVar6 << (uVar7 & 0x1f);\n    uVar11 = uVar10 >> 0xb;\n    iVar14 = (int)param_4 + (uVar13 - iVar14);\n    if ((int)uVar7 < 0xb) {\n      iVar2 = local_2c + -4;\n      uVar6 = uVar10 << 0x15;\n      uVar8 = 0xb - uVar7;\n    }\n    else {\n      if ((int)piVar9 < 2) {\n        uVar6 = 0;\n        goto LAB_00054c48;\n      }\n      iVar2 = local_2c + -8;\n      uVar6 = *(uint *)(local_2c + -8) << (uVar7 - 0xb & 0x1f);\n      piVar9 = (int *)((int)piVar9 + -1);\n      uVar8 = 0x2b - uVar7;\n      uVar11 = (uVar10 | *(uint *)(local_2c + -8) >> (-uVar7 & 0x1f)) >> 0xb;\n    }\n  }" { (expression_statement "iVar14 = 0x20;" (assignment_expression "iVar14 = 0x20" identifier = number_literal) ;) (if_statement "if (0xff < uVar6) {\n      iVar14 = 0x18;\n    }" if (parenthesized_expression "(0xff < uVar6)" ( (binary_expression "0xff < uVar6" number_literal < identifier) )) (compound_statement "{\n      iVar14 = 0x18;\n    }" { (expression_statement "iVar14 = 0x18;" (assignment_expression "iVar14 = 0x18" identifier = number_literal) ;) })) (expression_statement "iVar2 = 9;" (assignment_expression "iVar2 = 9" identifier = number_literal) ;) (if_statement "if (0xff >= uVar6) {\n      iVar2 = 1;\n    }" if (parenthesized_expression "(0xff >= uVar6)" ( (binary_expression "0xff >= uVar6" number_literal >= identifier) )) (compound_statement "{\n      iVar2 = 1;\n    }" { (expression_statement "iVar2 = 1;" (assignment_expression "iVar2 = 1" identifier = number_literal) ;) })) (expression_statement "uVar7 = iVar14 - (uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> iVar2));" (assignment_expression "uVar7 = iVar14 - (uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> iVar2))" identifier = (binary_expression "iVar14 - (uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> iVar2))" identifier - (binary_expression "(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> iVar2))" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> iVar2))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar17 + 0x4862c) + (uVar6 >> iVar2))" ( (binary_expression "*(int *)(puVar17 + 0x4862c) + (uVar6 >> iVar2)" (pointer_expression "*(int *)(puVar17 + 0x4862c)" * (cast_expression "(int *)(puVar17 + 0x4862c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + 0x4862c)" ( (binary_expression "puVar17 + 0x4862c" identifier + number_literal) )))) + (parenthesized_expression "(uVar6 >> iVar2)" ( (binary_expression "uVar6 >> iVar2" identifier >> identifier) ))) )))))) ;) (expression_statement "iVar14 = uVar7 + 1;" (assignment_expression "iVar14 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (labeled_statement "joined_r0x00054cbc:\n    uVar10 = uVar6 << (uVar7 & 0x1f);" statement_identifier : (expression_statement "uVar10 = uVar6 << (uVar7 & 0x1f);" (assignment_expression "uVar10 = uVar6 << (uVar7 & 0x1f)" identifier = (binary_expression "uVar6 << (uVar7 & 0x1f)" identifier << (parenthesized_expression "(uVar7 & 0x1f)" ( (binary_expression "uVar7 & 0x1f" identifier & number_literal) )))) ;)) (expression_statement "uVar11 = uVar10 >> 0xb;" (assignment_expression "uVar11 = uVar10 >> 0xb" identifier = (binary_expression "uVar10 >> 0xb" identifier >> number_literal)) ;) (expression_statement "iVar14 = (int)param_4 + (uVar13 - iVar14);" (assignment_expression "iVar14 = (int)param_4 + (uVar13 - iVar14)" identifier = (binary_expression "(int)param_4 + (uVar13 - iVar14)" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(uVar13 - iVar14)" ( (binary_expression "uVar13 - iVar14" identifier - identifier) )))) ;) (if_statement "if ((int)uVar7 < 0xb) {\n      iVar2 = local_2c + -4;\n      uVar6 = uVar10 << 0x15;\n      uVar8 = 0xb - uVar7;\n    }\n    else {\n      if ((int)piVar9 < 2) {\n        uVar6 = 0;\n        goto LAB_00054c48;\n      }\n      iVar2 = local_2c + -8;\n      uVar6 = *(uint *)(local_2c + -8) << (uVar7 - 0xb & 0x1f);\n      piVar9 = (int *)((int)piVar9 + -1);\n      uVar8 = 0x2b - uVar7;\n      uVar11 = (uVar10 | *(uint *)(local_2c + -8) >> (-uVar7 & 0x1f)) >> 0xb;\n    }" if (parenthesized_expression "((int)uVar7 < 0xb)" ( (binary_expression "(int)uVar7 < 0xb" (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      iVar2 = local_2c + -4;\n      uVar6 = uVar10 << 0x15;\n      uVar8 = 0xb - uVar7;\n    }" { (expression_statement "iVar2 = local_2c + -4;" (assignment_expression "iVar2 = local_2c + -4" identifier = (binary_expression "local_2c + -4" identifier + number_literal)) ;) (expression_statement "uVar6 = uVar10 << 0x15;" (assignment_expression "uVar6 = uVar10 << 0x15" identifier = (binary_expression "uVar10 << 0x15" identifier << number_literal)) ;) (expression_statement "uVar8 = 0xb - uVar7;" (assignment_expression "uVar8 = 0xb - uVar7" identifier = (binary_expression "0xb - uVar7" number_literal - identifier)) ;) }) (else_clause "else {\n      if ((int)piVar9 < 2) {\n        uVar6 = 0;\n        goto LAB_00054c48;\n      }\n      iVar2 = local_2c + -8;\n      uVar6 = *(uint *)(local_2c + -8) << (uVar7 - 0xb & 0x1f);\n      piVar9 = (int *)((int)piVar9 + -1);\n      uVar8 = 0x2b - uVar7;\n      uVar11 = (uVar10 | *(uint *)(local_2c + -8) >> (-uVar7 & 0x1f)) >> 0xb;\n    }" else (compound_statement "{\n      if ((int)piVar9 < 2) {\n        uVar6 = 0;\n        goto LAB_00054c48;\n      }\n      iVar2 = local_2c + -8;\n      uVar6 = *(uint *)(local_2c + -8) << (uVar7 - 0xb & 0x1f);\n      piVar9 = (int *)((int)piVar9 + -1);\n      uVar8 = 0x2b - uVar7;\n      uVar11 = (uVar10 | *(uint *)(local_2c + -8) >> (-uVar7 & 0x1f)) >> 0xb;\n    }" { (if_statement "if ((int)piVar9 < 2) {\n        uVar6 = 0;\n        goto LAB_00054c48;\n      }" if (parenthesized_expression "((int)piVar9 < 2)" ( (binary_expression "(int)piVar9 < 2" (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        uVar6 = 0;\n        goto LAB_00054c48;\n      }" { (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00054c48;" goto statement_identifier ;) })) (expression_statement "iVar2 = local_2c + -8;" (assignment_expression "iVar2 = local_2c + -8" identifier = (binary_expression "local_2c + -8" identifier + number_literal)) ;) (expression_statement "uVar6 = *(uint *)(local_2c + -8) << (uVar7 - 0xb & 0x1f);" (assignment_expression "uVar6 = *(uint *)(local_2c + -8) << (uVar7 - 0xb & 0x1f)" identifier = (binary_expression "*(uint *)(local_2c + -8) << (uVar7 - 0xb & 0x1f)" (pointer_expression "*(uint *)(local_2c + -8)" * (cast_expression "(uint *)(local_2c + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + -8)" ( (binary_expression "local_2c + -8" identifier + number_literal) )))) << (parenthesized_expression "(uVar7 - 0xb & 0x1f)" ( (binary_expression "uVar7 - 0xb & 0x1f" (binary_expression "uVar7 - 0xb" identifier - number_literal) & number_literal) )))) ;) (expression_statement "piVar9 = (int *)((int)piVar9 + -1);" (assignment_expression "piVar9 = (int *)((int)piVar9 + -1)" identifier = (cast_expression "(int *)((int)piVar9 + -1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar9 + -1)" ( (binary_expression "(int)piVar9 + -1" (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "uVar8 = 0x2b - uVar7;" (assignment_expression "uVar8 = 0x2b - uVar7" identifier = (binary_expression "0x2b - uVar7" number_literal - identifier)) ;) (expression_statement "uVar11 = (uVar10 | *(uint *)(local_2c + -8) >> (-uVar7 & 0x1f)) >> 0xb;" (assignment_expression "uVar11 = (uVar10 | *(uint *)(local_2c + -8) >> (-uVar7 & 0x1f)) >> 0xb" identifier = (binary_expression "(uVar10 | *(uint *)(local_2c + -8) >> (-uVar7 & 0x1f)) >> 0xb" (parenthesized_expression "(uVar10 | *(uint *)(local_2c + -8) >> (-uVar7 & 0x1f))" ( (binary_expression "uVar10 | *(uint *)(local_2c + -8) >> (-uVar7 & 0x1f)" identifier | (binary_expression "*(uint *)(local_2c + -8) >> (-uVar7 & 0x1f)" (pointer_expression "*(uint *)(local_2c + -8)" * (cast_expression "(uint *)(local_2c + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + -8)" ( (binary_expression "local_2c + -8" identifier + number_literal) )))) >> (parenthesized_expression "(-uVar7 & 0x1f)" ( (binary_expression "-uVar7 & 0x1f" (unary_expression "-uVar7" - identifier) & number_literal) )))) )) >> number_literal)) ;) }))) }) (else_clause "else {\n    if (uVar6 < 0x1000000) {\n      iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x11));\n      uVar7 = iVar14 + 0x10;\n      iVar14 = iVar14 + 0x11;\n      goto joined_r0x00054cbc;\n    }\n    iVar2 = local_2c + -4;\n    iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x19));\n    uVar8 = iVar14 + 8;\n    uVar6 = uVar6 << (uVar8 & 0x1f);\n    uVar11 = uVar6 >> 0xb;\n    iVar14 = (int)param_4 + (uVar13 - (iVar14 + 9));\n    uVar6 = uVar6 << 0x15;\n    uVar8 = 0xb - uVar8;\n  }" else (compound_statement "{\n    if (uVar6 < 0x1000000) {\n      iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x11));\n      uVar7 = iVar14 + 0x10;\n      iVar14 = iVar14 + 0x11;\n      goto joined_r0x00054cbc;\n    }\n    iVar2 = local_2c + -4;\n    iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x19));\n    uVar8 = iVar14 + 8;\n    uVar6 = uVar6 << (uVar8 & 0x1f);\n    uVar11 = uVar6 >> 0xb;\n    iVar14 = (int)param_4 + (uVar13 - (iVar14 + 9));\n    uVar6 = uVar6 << 0x15;\n    uVar8 = 0xb - uVar8;\n  }" { (if_statement "if (uVar6 < 0x1000000) {\n      iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x11));\n      uVar7 = iVar14 + 0x10;\n      iVar14 = iVar14 + 0x11;\n      goto joined_r0x00054cbc;\n    }" if (parenthesized_expression "(uVar6 < 0x1000000)" ( (binary_expression "uVar6 < 0x1000000" identifier < number_literal) )) (compound_statement "{\n      iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x11));\n      uVar7 = iVar14 + 0x10;\n      iVar14 = iVar14 + 0x11;\n      goto joined_r0x00054cbc;\n    }" { (expression_statement "iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x11));" (assignment_expression "iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x11))" identifier = (binary_expression "-(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x11))" (unary_expression "-(uint)" - (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x11))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x11))" ( (binary_expression "*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x11)" (pointer_expression "*(int *)(puVar17 + 0x4862c)" * (cast_expression "(int *)(puVar17 + 0x4862c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + 0x4862c)" ( (binary_expression "puVar17 + 0x4862c" identifier + number_literal) )))) + (parenthesized_expression "(uVar6 >> 0x11)" ( (binary_expression "uVar6 >> 0x11" identifier >> number_literal) ))) ))))) ;) (expression_statement "uVar7 = iVar14 + 0x10;" (assignment_expression "uVar7 = iVar14 + 0x10" identifier = (binary_expression "iVar14 + 0x10" identifier + number_literal)) ;) (expression_statement "iVar14 = iVar14 + 0x11;" (assignment_expression "iVar14 = iVar14 + 0x11" identifier = (binary_expression "iVar14 + 0x11" identifier + number_literal)) ;) (goto_statement "goto joined_r0x00054cbc;" goto statement_identifier ;) })) (expression_statement "iVar2 = local_2c + -4;" (assignment_expression "iVar2 = local_2c + -4" identifier = (binary_expression "local_2c + -4" identifier + number_literal)) ;) (expression_statement "iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x19));" (assignment_expression "iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x19))" identifier = (binary_expression "-(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x19))" (unary_expression "-(uint)" - (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x19))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x19))" ( (binary_expression "*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x19)" (pointer_expression "*(int *)(puVar17 + 0x4862c)" * (cast_expression "(int *)(puVar17 + 0x4862c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + 0x4862c)" ( (binary_expression "puVar17 + 0x4862c" identifier + number_literal) )))) + (parenthesized_expression "(uVar6 >> 0x19)" ( (binary_expression "uVar6 >> 0x19" identifier >> number_literal) ))) ))))) ;) (expression_statement "uVar8 = iVar14 + 8;" (assignment_expression "uVar8 = iVar14 + 8" identifier = (binary_expression "iVar14 + 8" identifier + number_literal)) ;) (expression_statement "uVar6 = uVar6 << (uVar8 & 0x1f);" (assignment_expression "uVar6 = uVar6 << (uVar8 & 0x1f)" identifier = (binary_expression "uVar6 << (uVar8 & 0x1f)" identifier << (parenthesized_expression "(uVar8 & 0x1f)" ( (binary_expression "uVar8 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar11 = uVar6 >> 0xb;" (assignment_expression "uVar11 = uVar6 >> 0xb" identifier = (binary_expression "uVar6 >> 0xb" identifier >> number_literal)) ;) (expression_statement "iVar14 = (int)param_4 + (uVar13 - (iVar14 + 9));" (assignment_expression "iVar14 = (int)param_4 + (uVar13 - (iVar14 + 9))" identifier = (binary_expression "(int)param_4 + (uVar13 - (iVar14 + 9))" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(uVar13 - (iVar14 + 9))" ( (binary_expression "uVar13 - (iVar14 + 9)" identifier - (parenthesized_expression "(iVar14 + 9)" ( (binary_expression "iVar14 + 9" identifier + number_literal) ))) )))) ;) (expression_statement "uVar6 = uVar6 << 0x15;" (assignment_expression "uVar6 = uVar6 << 0x15" identifier = (binary_expression "uVar6 << 0x15" identifier << number_literal)) ;) (expression_statement "uVar8 = 0xb - uVar8;" (assignment_expression "uVar8 = 0xb - uVar8" identifier = (binary_expression "0xb - uVar8" number_literal - identifier)) ;) }))) (if_statement "if (((int)uVar8 < 0x20) && (1 < (int)piVar9)) {\n    uVar6 = uVar6 | *(uint *)(iVar2 + -4) >> (uVar8 & 0x1f);\n  }" if (parenthesized_expression "(((int)uVar8 < 0x20) && (1 < (int)piVar9))" ( (binary_expression "((int)uVar8 < 0x20) && (1 < (int)piVar9)" (parenthesized_expression "((int)uVar8 < 0x20)" ( (binary_expression "(int)uVar8 < 0x20" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) && (parenthesized_expression "(1 < (int)piVar9)" ( (binary_expression "1 < (int)piVar9" number_literal < (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n    uVar6 = uVar6 | *(uint *)(iVar2 + -4) >> (uVar8 & 0x1f);\n  }" { (expression_statement "uVar6 = uVar6 | *(uint *)(iVar2 + -4) >> (uVar8 & 0x1f);" (assignment_expression "uVar6 = uVar6 | *(uint *)(iVar2 + -4) >> (uVar8 & 0x1f)" identifier = (binary_expression "uVar6 | *(uint *)(iVar2 + -4) >> (uVar8 & 0x1f)" identifier | (binary_expression "*(uint *)(iVar2 + -4) >> (uVar8 & 0x1f)" (pointer_expression "*(uint *)(iVar2 + -4)" * (cast_expression "(uint *)(iVar2 + -4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + -4)" ( (binary_expression "iVar2 + -4" identifier + number_literal) )))) >> (parenthesized_expression "(uVar8 & 0x1f)" ( (binary_expression "uVar8 & 0x1f" identifier & number_literal) ))))) ;) })) (labeled_statement "LAB_00054c48:\n  if (0x3ff < iVar14) {\n    return 0;\n  }" statement_identifier : (if_statement "if (0x3ff < iVar14) {\n    return 0;\n  }" if (parenthesized_expression "(0x3ff < iVar14)" ( (binary_expression "0x3ff < iVar14" number_literal < identifier) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) }))) (if_statement "if (iVar14 < -0x3fe) {\n    if (iVar14 < -0x432) {\n      return uVar6;\n    }\n    if ((int)(-iVar14 - 0x3feU) < 0x20) {\n      uVar13 = iVar14 + 0x41e;\n      uVar6 = uVar6 >> (-iVar14 - 0x3feU & 0x1f);\n    }\n    else {\n      uVar6 = uVar11 >> (-iVar14 - 0x41eU & 0x1f);\n      if (-iVar14 - 0x41eU == 0) {\n        return uVar6;\n      }\n      uVar13 = iVar14 + 0x43e;\n      uVar11 = 0;\n    }\n    uVar6 = uVar6 | uVar11 << (uVar13 & 0x1f);\n  }" if (parenthesized_expression "(iVar14 < -0x3fe)" ( (binary_expression "iVar14 < -0x3fe" identifier < number_literal) )) (compound_statement "{\n    if (iVar14 < -0x432) {\n      return uVar6;\n    }\n    if ((int)(-iVar14 - 0x3feU) < 0x20) {\n      uVar13 = iVar14 + 0x41e;\n      uVar6 = uVar6 >> (-iVar14 - 0x3feU & 0x1f);\n    }\n    else {\n      uVar6 = uVar11 >> (-iVar14 - 0x41eU & 0x1f);\n      if (-iVar14 - 0x41eU == 0) {\n        return uVar6;\n      }\n      uVar13 = iVar14 + 0x43e;\n      uVar11 = 0;\n    }\n    uVar6 = uVar6 | uVar11 << (uVar13 & 0x1f);\n  }" { (if_statement "if (iVar14 < -0x432) {\n      return uVar6;\n    }" if (parenthesized_expression "(iVar14 < -0x432)" ( (binary_expression "iVar14 < -0x432" identifier < number_literal) )) (compound_statement "{\n      return uVar6;\n    }" { (return_statement "return uVar6;" return identifier ;) })) (if_statement "if ((int)(-iVar14 - 0x3feU) < 0x20) {\n      uVar13 = iVar14 + 0x41e;\n      uVar6 = uVar6 >> (-iVar14 - 0x3feU & 0x1f);\n    }\n    else {\n      uVar6 = uVar11 >> (-iVar14 - 0x41eU & 0x1f);\n      if (-iVar14 - 0x41eU == 0) {\n        return uVar6;\n      }\n      uVar13 = iVar14 + 0x43e;\n      uVar11 = 0;\n    }" if (parenthesized_expression "((int)(-iVar14 - 0x3feU) < 0x20)" ( (binary_expression "(int)(-iVar14 - 0x3feU) < 0x20" (cast_expression "(int)(-iVar14 - 0x3feU)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(-iVar14 - 0x3feU)" ( (binary_expression "-iVar14 - 0x3feU" (unary_expression "-iVar14" - identifier) - number_literal) ))) < number_literal) )) (compound_statement "{\n      uVar13 = iVar14 + 0x41e;\n      uVar6 = uVar6 >> (-iVar14 - 0x3feU & 0x1f);\n    }" { (expression_statement "uVar13 = iVar14 + 0x41e;" (assignment_expression "uVar13 = iVar14 + 0x41e" identifier = (binary_expression "iVar14 + 0x41e" identifier + number_literal)) ;) (expression_statement "uVar6 = uVar6 >> (-iVar14 - 0x3feU & 0x1f);" (assignment_expression "uVar6 = uVar6 >> (-iVar14 - 0x3feU & 0x1f)" identifier = (binary_expression "uVar6 >> (-iVar14 - 0x3feU & 0x1f)" identifier >> (parenthesized_expression "(-iVar14 - 0x3feU & 0x1f)" ( (binary_expression "-iVar14 - 0x3feU & 0x1f" (binary_expression "-iVar14 - 0x3feU" (unary_expression "-iVar14" - identifier) - number_literal) & number_literal) )))) ;) }) (else_clause "else {\n      uVar6 = uVar11 >> (-iVar14 - 0x41eU & 0x1f);\n      if (-iVar14 - 0x41eU == 0) {\n        return uVar6;\n      }\n      uVar13 = iVar14 + 0x43e;\n      uVar11 = 0;\n    }" else (compound_statement "{\n      uVar6 = uVar11 >> (-iVar14 - 0x41eU & 0x1f);\n      if (-iVar14 - 0x41eU == 0) {\n        return uVar6;\n      }\n      uVar13 = iVar14 + 0x43e;\n      uVar11 = 0;\n    }" { (expression_statement "uVar6 = uVar11 >> (-iVar14 - 0x41eU & 0x1f);" (assignment_expression "uVar6 = uVar11 >> (-iVar14 - 0x41eU & 0x1f)" identifier = (binary_expression "uVar11 >> (-iVar14 - 0x41eU & 0x1f)" identifier >> (parenthesized_expression "(-iVar14 - 0x41eU & 0x1f)" ( (binary_expression "-iVar14 - 0x41eU & 0x1f" (binary_expression "-iVar14 - 0x41eU" (unary_expression "-iVar14" - identifier) - number_literal) & number_literal) )))) ;) (if_statement "if (-iVar14 - 0x41eU == 0) {\n        return uVar6;\n      }" if (parenthesized_expression "(-iVar14 - 0x41eU == 0)" ( (binary_expression "-iVar14 - 0x41eU == 0" (binary_expression "-iVar14 - 0x41eU" (unary_expression "-iVar14" - identifier) - number_literal) == number_literal) )) (compound_statement "{\n        return uVar6;\n      }" { (return_statement "return uVar6;" return identifier ;) })) (expression_statement "uVar13 = iVar14 + 0x43e;" (assignment_expression "uVar13 = iVar14 + 0x43e" identifier = (binary_expression "iVar14 + 0x43e" identifier + number_literal)) ;) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) }))) (expression_statement "uVar6 = uVar6 | uVar11 << (uVar13 & 0x1f);" (assignment_expression "uVar6 = uVar6 | uVar11 << (uVar13 & 0x1f)" identifier = (binary_expression "uVar6 | uVar11 << (uVar13 & 0x1f)" identifier | (binary_expression "uVar11 << (uVar13 & 0x1f)" identifier << (parenthesized_expression "(uVar13 & 0x1f)" ( (binary_expression "uVar13 & 0x1f" identifier & number_literal) ))))) ;) })) (return_statement "return uVar6;" return identifier ;) })))
(translation_unit "int __gmpn_jacobi_n(mp_ptr ap,mp_ptr bp,mp_size_t n,uint bits)\n\n{\n  bool bVar1;\n  int iVar2;\n  int iVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  mp_ptr pmVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  mp_ptr pmVar10;\n  uint uVar11;\n  uint uVar12;\n  mp_ptr pmVar13;\n  mp_limb_t mVar14;\n  uint uVar15;\n  int iVar16;\n  mp_ptr pmVar17;\n  int iVar18;\n  undefined *puVar19;\n  undefined1 *puVar20;\n  uint local_resc;\n  undefined1 auStack_80 [32];\n  tmp_reentrant_t *__tmp_marker;\n  hgcd_matrix M;\n  \n  puVar19 = PTR___stack_chk_guard_0009d540;\n  puVar20 = auStack_80;\n  iVar2 = *(int *)PTR___stack_chk_guard_0009d540;\n  local_resc = bits;\n  if (n < 1000) {\n    uVar15 = n << 2;\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    if (uVar15 < 0x7f01) goto LAB_0005471c;\nLAB_00054ab8:\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    pmVar6 = (mp_ptr)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker);\n  }\n  else {\n    uVar15 = (uint)(n << 1) / 3;\n    iVar18 = n - uVar15;\n    iVar3 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)(iVar18);\n    iVar16 = n + uVar15 + -1;\n    if (iVar16 < iVar3) {\n      iVar16 = iVar3;\n    }\n    iVar16 = ((iVar18 + 1) / 2 + 1) * 4 + iVar16;\n    if (iVar16 < n) {\n      iVar16 = n;\n    }\n    uVar15 = iVar16 << 2;\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    if (0x7f00 < uVar15) goto LAB_00054ab8;\nLAB_0005471c:\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    iVar16 = -(uVar15 + 7 & 0xfffffff8);\n    puVar20 = auStack_80 + iVar16;\n    pmVar6 = (mp_ptr)((int)&M + iVar16 + -0x1c);\n  }\n  if (n < 1000) {\n    bVar1 = n < 3;\n  }\n  else {\n    puVar4 = PTR_LAB_0009d07c + 0x45d0;\n    do {\n      uVar15 = (uint)(n << 1) / 3;\n      iVar16 = n - uVar15;\n      (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M,iVar16,pmVar6);\n      *(uint **)(puVar20 + 0x10) = &local_resc;\n      *(mp_ptr *)(puVar20 + 0x14) = pmVar6 + ((iVar16 + 1) / 2 + 1) * 4;\n      iVar3 = (*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)(ap + uVar15,bp + uVar15,iVar16,&M);\n      if (iVar3 < 1) {\n        bits = 0;\n        *(mp_ptr *)(puVar20 + 0x18) = pmVar6;\n        *(uint **)(puVar20 + 0x14) = &local_resc;\n        *(undefined **)(puVar20 + 0x10) = puVar4;\n        pmVar10 = bp;\n        n = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(ap,bp,n);\n        if (n == 0) goto LAB_00054840;\n      }\n      else {\n        *(mp_ptr *)(puVar20 + 0x14) = pmVar6 + ((iVar16 + 1) / 2 + 1) * 4;\n        *(uint *)(puVar20 + 0x10) = uVar15;\n        bits = (uint)bp;\n        n = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M,uVar15 + iVar3,ap);\n      }\n      bVar1 = n < 3;\n    } while (999 < n);\n  }\n  puVar4 = PTR___gmpn_clz_tab_0009d18c;\n  if (!bVar1) {\n    puVar5 = PTR_LAB_0009d07c + 0x45d0;\n    pmVar13 = ap;\n    do {\n      while( true ) {\n        pmVar17 = pmVar6;\n        uVar15 = pmVar13[n + 0x3fffffff];\n        uVar8 = bp[n + 0x3fffffff];\n        uVar9 = uVar15 | uVar8;\n        uVar12 = bp[n + 0x3ffffffe];\n        uVar7 = pmVar13[n + 0x3ffffffe];\n        if (-1 < (int)uVar9) {\n          if (uVar9 < 0x10000) {\n            iVar16 = 0;\n            if (0xff < uVar9) {\n              iVar16 = 0x18;\n            }\n            iVar3 = 9;\n            if (0xff >= uVar9) {\n              iVar3 = 1;\n            }\n          }\n          else {\n            iVar16 = 0x10;\n            if (0xffffff < uVar9) {\n              iVar16 = 8;\n            }\n            iVar3 = 0x19;\n            if (0xffffff >= uVar9) {\n              iVar3 = 0x11;\n            }\n          }\n          uVar9 = iVar16 - (uint)(byte)puVar4[uVar9 >> iVar3];\n          uVar11 = 0x20 - uVar9;\n          uVar15 = uVar15 << (uVar9 & 0x1f) | uVar7 >> (uVar11 & 0x1f);\n          uVar7 = pmVar13[n + 0x3ffffffd] >> (uVar11 & 0x1f) | uVar7 << (uVar9 & 0x1f);\n          uVar8 = uVar8 << (uVar9 & 0x1f) | uVar12 >> (uVar11 & 0x1f);\n          uVar12 = bp[n + 0x3ffffffd] >> (uVar11 & 0x1f) | uVar12 << (uVar9 & 0x1f);\n        }\n        *(uint **)(puVar20 + 0x14) = &local_resc;\n        *(hgcd_matrix **)(puVar20 + 0x10) = &M;\n        iVar16 = (*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar15,uVar7,uVar8,uVar12);\n        if (iVar16 != 0) break;\n        bits = 0;\n        *(mp_ptr *)(puVar20 + 0x18) = pmVar17;\n        *(uint **)(puVar20 + 0x14) = &local_resc;\n        *(undefined **)(puVar20 + 0x10) = puVar5;\n        pmVar10 = bp;\n        n = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(pmVar13,bp,n);\n        if (n == 0) goto LAB_00054840;\n        ap = pmVar13;\n        pmVar6 = pmVar17;\n        if (n < 3) goto LAB_00054a30;\n      }\n      *(mp_size_t *)(puVar20 + 0x10) = n;\n      bits = (uint)bp;\n      n = (*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488)(&M,pmVar17,pmVar13);\n      ap = pmVar17;\n      pmVar6 = pmVar13;\n      pmVar13 = pmVar17;\n    } while (2 < n);\n  }\nLAB_00054a30:\n  pmVar6 = ap;\n  pmVar10 = bp;\n  if (0xf < local_resc) {\n    pmVar6 = bp;\n    pmVar10 = ap;\n  }\n  if (n == 1) {\n    mVar14 = *pmVar6;\n    pmVar10 = (mp_ptr)*pmVar10;\n    if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n    if (pmVar10 == (mp_ptr)&DAT_00000001) {\n      iVar16 = (local_resc & 1) * -2 + 1;\n    }\n    else {\n      iVar16 = (*(code *)PTR___gmpn_jacobi_base_0009d408)(mVar14,pmVar10,local_resc << 1);\n    }\n  }\n  else {\n    iVar16 = (*(code *)PTR___gmpn_jacobi_2_0009d324)(pmVar6,pmVar10,local_resc & 1);\n    if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n  }\n  goto LAB_0005486c;\nLAB_00054840:\n  if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n  }\n  if (local_resc == 0x1f) {\n    iVar16 = 0;\n  }\n  else {\n    iVar16 = (local_resc & 1) * -2 + 1;\n  }\nLAB_0005486c:\n  if (iVar2 == *(int *)puVar19) {\n    return iVar16;\n  }\n  puVar19 = PTR___stack_chk_fail_0009d4d0;\n  (*(code *)PTR___stack_chk_fail_0009d4d0)();\n  if (pmVar10 == (mp_ptr)0x0) {\n    return 0x7fff0000;\n  }\n  uVar15 = (int)pmVar10 * 0x20;\n  if (0x7fffffff - bits < uVar15) {\n    return 0;\n  }\n  iVar2 = iVar2 + (int)pmVar10 * 4;\n  uVar7 = *(uint *)(iVar2 + -4);\n  if (uVar7 < 0x10000) {\n    iVar16 = 0x20;\n    if (0xff < uVar7) {\n      iVar16 = 0x18;\n    }\n    iVar3 = 9;\n    if (0xff >= uVar7) {\n      iVar3 = 1;\n    }\n    uVar8 = iVar16 - (uint)*(byte *)(*(int *)(puVar19 + 0x4862c) + (uVar7 >> iVar3));\n    iVar16 = uVar8 + 1;\njoined_r0x00054cbc:\n    uVar11 = uVar7 << (uVar8 & 0x1f);\n    uVar12 = uVar11 >> 0xb;\n    iVar16 = bits + (uVar15 - iVar16);\n    if ((int)uVar8 < 0xb) {\n      iVar3 = iVar2 + -4;\n      uVar7 = uVar11 << 0x15;\n      uVar9 = 0xb - uVar8;\n    }\n    else {\n      if ((int)pmVar10 < 2) {\n        uVar7 = 0;\n        goto LAB_00054c48;\n      }\n      iVar3 = iVar2 + -8;\n      uVar7 = *(uint *)(iVar2 + -8) << (uVar8 - 0xb & 0x1f);\n      pmVar10 = (mp_ptr)((int)pmVar10 + -1);\n      uVar9 = 0x2b - uVar8;\n      uVar12 = (uVar11 | *(uint *)(iVar2 + -8) >> (-uVar8 & 0x1f)) >> 0xb;\n    }\n  }\n  else {\n    if (uVar7 < 0x1000000) {\n      iVar16 = -(uint)*(byte *)(*(int *)(puVar19 + 0x4862c) + (uVar7 >> 0x11));\n      uVar8 = iVar16 + 0x10;\n      iVar16 = iVar16 + 0x11;\n      goto joined_r0x00054cbc;\n    }\n    iVar3 = iVar2 + -4;\n    iVar2 = -(uint)*(byte *)(*(int *)(puVar19 + 0x4862c) + (uVar7 >> 0x19));\n    uVar9 = iVar2 + 8;\n    uVar7 = uVar7 << (uVar9 & 0x1f);\n    uVar12 = uVar7 >> 0xb;\n    iVar16 = bits + (uVar15 - (iVar2 + 9));\n    uVar7 = uVar7 << 0x15;\n    uVar9 = 0xb - uVar9;\n  }\n  if (((int)uVar9 < 0x20) && (1 < (int)pmVar10)) {\n    uVar7 = uVar7 | *(uint *)(iVar3 + -4) >> (uVar9 & 0x1f);\n  }\nLAB_00054c48:\n  if (0x3ff < iVar16) {\n    return 0;\n  }\n  if (iVar16 < -0x3fe) {\n    if (iVar16 < -0x432) {\n      return uVar7;\n    }\n    if ((int)(-iVar16 - 0x3feU) < 0x20) {\n      uVar15 = iVar16 + 0x41e;\n      uVar7 = uVar7 >> (-iVar16 - 0x3feU & 0x1f);\n    }\n    else {\n      uVar7 = uVar12 >> (-iVar16 - 0x41eU & 0x1f);\n      if (-iVar16 - 0x41eU == 0) {\n        return uVar7;\n      }\n      uVar15 = iVar16 + 0x43e;\n      uVar12 = 0;\n    }\n    uVar7 = uVar7 | uVar12 << (uVar15 & 0x1f);\n  }\n  return uVar7;\n}\n\n" (function_definition "int __gmpn_jacobi_n(mp_ptr ap,mp_ptr bp,mp_size_t n,uint bits)\n\n{\n  bool bVar1;\n  int iVar2;\n  int iVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  mp_ptr pmVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  mp_ptr pmVar10;\n  uint uVar11;\n  uint uVar12;\n  mp_ptr pmVar13;\n  mp_limb_t mVar14;\n  uint uVar15;\n  int iVar16;\n  mp_ptr pmVar17;\n  int iVar18;\n  undefined *puVar19;\n  undefined1 *puVar20;\n  uint local_resc;\n  undefined1 auStack_80 [32];\n  tmp_reentrant_t *__tmp_marker;\n  hgcd_matrix M;\n  \n  puVar19 = PTR___stack_chk_guard_0009d540;\n  puVar20 = auStack_80;\n  iVar2 = *(int *)PTR___stack_chk_guard_0009d540;\n  local_resc = bits;\n  if (n < 1000) {\n    uVar15 = n << 2;\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    if (uVar15 < 0x7f01) goto LAB_0005471c;\nLAB_00054ab8:\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    pmVar6 = (mp_ptr)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker);\n  }\n  else {\n    uVar15 = (uint)(n << 1) / 3;\n    iVar18 = n - uVar15;\n    iVar3 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)(iVar18);\n    iVar16 = n + uVar15 + -1;\n    if (iVar16 < iVar3) {\n      iVar16 = iVar3;\n    }\n    iVar16 = ((iVar18 + 1) / 2 + 1) * 4 + iVar16;\n    if (iVar16 < n) {\n      iVar16 = n;\n    }\n    uVar15 = iVar16 << 2;\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    if (0x7f00 < uVar15) goto LAB_00054ab8;\nLAB_0005471c:\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    iVar16 = -(uVar15 + 7 & 0xfffffff8);\n    puVar20 = auStack_80 + iVar16;\n    pmVar6 = (mp_ptr)((int)&M + iVar16 + -0x1c);\n  }\n  if (n < 1000) {\n    bVar1 = n < 3;\n  }\n  else {\n    puVar4 = PTR_LAB_0009d07c + 0x45d0;\n    do {\n      uVar15 = (uint)(n << 1) / 3;\n      iVar16 = n - uVar15;\n      (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M,iVar16,pmVar6);\n      *(uint **)(puVar20 + 0x10) = &local_resc;\n      *(mp_ptr *)(puVar20 + 0x14) = pmVar6 + ((iVar16 + 1) / 2 + 1) * 4;\n      iVar3 = (*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)(ap + uVar15,bp + uVar15,iVar16,&M);\n      if (iVar3 < 1) {\n        bits = 0;\n        *(mp_ptr *)(puVar20 + 0x18) = pmVar6;\n        *(uint **)(puVar20 + 0x14) = &local_resc;\n        *(undefined **)(puVar20 + 0x10) = puVar4;\n        pmVar10 = bp;\n        n = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(ap,bp,n);\n        if (n == 0) goto LAB_00054840;\n      }\n      else {\n        *(mp_ptr *)(puVar20 + 0x14) = pmVar6 + ((iVar16 + 1) / 2 + 1) * 4;\n        *(uint *)(puVar20 + 0x10) = uVar15;\n        bits = (uint)bp;\n        n = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M,uVar15 + iVar3,ap);\n      }\n      bVar1 = n < 3;\n    } while (999 < n);\n  }\n  puVar4 = PTR___gmpn_clz_tab_0009d18c;\n  if (!bVar1) {\n    puVar5 = PTR_LAB_0009d07c + 0x45d0;\n    pmVar13 = ap;\n    do {\n      while( true ) {\n        pmVar17 = pmVar6;\n        uVar15 = pmVar13[n + 0x3fffffff];\n        uVar8 = bp[n + 0x3fffffff];\n        uVar9 = uVar15 | uVar8;\n        uVar12 = bp[n + 0x3ffffffe];\n        uVar7 = pmVar13[n + 0x3ffffffe];\n        if (-1 < (int)uVar9) {\n          if (uVar9 < 0x10000) {\n            iVar16 = 0;\n            if (0xff < uVar9) {\n              iVar16 = 0x18;\n            }\n            iVar3 = 9;\n            if (0xff >= uVar9) {\n              iVar3 = 1;\n            }\n          }\n          else {\n            iVar16 = 0x10;\n            if (0xffffff < uVar9) {\n              iVar16 = 8;\n            }\n            iVar3 = 0x19;\n            if (0xffffff >= uVar9) {\n              iVar3 = 0x11;\n            }\n          }\n          uVar9 = iVar16 - (uint)(byte)puVar4[uVar9 >> iVar3];\n          uVar11 = 0x20 - uVar9;\n          uVar15 = uVar15 << (uVar9 & 0x1f) | uVar7 >> (uVar11 & 0x1f);\n          uVar7 = pmVar13[n + 0x3ffffffd] >> (uVar11 & 0x1f) | uVar7 << (uVar9 & 0x1f);\n          uVar8 = uVar8 << (uVar9 & 0x1f) | uVar12 >> (uVar11 & 0x1f);\n          uVar12 = bp[n + 0x3ffffffd] >> (uVar11 & 0x1f) | uVar12 << (uVar9 & 0x1f);\n        }\n        *(uint **)(puVar20 + 0x14) = &local_resc;\n        *(hgcd_matrix **)(puVar20 + 0x10) = &M;\n        iVar16 = (*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar15,uVar7,uVar8,uVar12);\n        if (iVar16 != 0) break;\n        bits = 0;\n        *(mp_ptr *)(puVar20 + 0x18) = pmVar17;\n        *(uint **)(puVar20 + 0x14) = &local_resc;\n        *(undefined **)(puVar20 + 0x10) = puVar5;\n        pmVar10 = bp;\n        n = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(pmVar13,bp,n);\n        if (n == 0) goto LAB_00054840;\n        ap = pmVar13;\n        pmVar6 = pmVar17;\n        if (n < 3) goto LAB_00054a30;\n      }\n      *(mp_size_t *)(puVar20 + 0x10) = n;\n      bits = (uint)bp;\n      n = (*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488)(&M,pmVar17,pmVar13);\n      ap = pmVar17;\n      pmVar6 = pmVar13;\n      pmVar13 = pmVar17;\n    } while (2 < n);\n  }\nLAB_00054a30:\n  pmVar6 = ap;\n  pmVar10 = bp;\n  if (0xf < local_resc) {\n    pmVar6 = bp;\n    pmVar10 = ap;\n  }\n  if (n == 1) {\n    mVar14 = *pmVar6;\n    pmVar10 = (mp_ptr)*pmVar10;\n    if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n    if (pmVar10 == (mp_ptr)&DAT_00000001) {\n      iVar16 = (local_resc & 1) * -2 + 1;\n    }\n    else {\n      iVar16 = (*(code *)PTR___gmpn_jacobi_base_0009d408)(mVar14,pmVar10,local_resc << 1);\n    }\n  }\n  else {\n    iVar16 = (*(code *)PTR___gmpn_jacobi_2_0009d324)(pmVar6,pmVar10,local_resc & 1);\n    if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n  }\n  goto LAB_0005486c;\nLAB_00054840:\n  if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n  }\n  if (local_resc == 0x1f) {\n    iVar16 = 0;\n  }\n  else {\n    iVar16 = (local_resc & 1) * -2 + 1;\n  }\nLAB_0005486c:\n  if (iVar2 == *(int *)puVar19) {\n    return iVar16;\n  }\n  puVar19 = PTR___stack_chk_fail_0009d4d0;\n  (*(code *)PTR___stack_chk_fail_0009d4d0)();\n  if (pmVar10 == (mp_ptr)0x0) {\n    return 0x7fff0000;\n  }\n  uVar15 = (int)pmVar10 * 0x20;\n  if (0x7fffffff - bits < uVar15) {\n    return 0;\n  }\n  iVar2 = iVar2 + (int)pmVar10 * 4;\n  uVar7 = *(uint *)(iVar2 + -4);\n  if (uVar7 < 0x10000) {\n    iVar16 = 0x20;\n    if (0xff < uVar7) {\n      iVar16 = 0x18;\n    }\n    iVar3 = 9;\n    if (0xff >= uVar7) {\n      iVar3 = 1;\n    }\n    uVar8 = iVar16 - (uint)*(byte *)(*(int *)(puVar19 + 0x4862c) + (uVar7 >> iVar3));\n    iVar16 = uVar8 + 1;\njoined_r0x00054cbc:\n    uVar11 = uVar7 << (uVar8 & 0x1f);\n    uVar12 = uVar11 >> 0xb;\n    iVar16 = bits + (uVar15 - iVar16);\n    if ((int)uVar8 < 0xb) {\n      iVar3 = iVar2 + -4;\n      uVar7 = uVar11 << 0x15;\n      uVar9 = 0xb - uVar8;\n    }\n    else {\n      if ((int)pmVar10 < 2) {\n        uVar7 = 0;\n        goto LAB_00054c48;\n      }\n      iVar3 = iVar2 + -8;\n      uVar7 = *(uint *)(iVar2 + -8) << (uVar8 - 0xb & 0x1f);\n      pmVar10 = (mp_ptr)((int)pmVar10 + -1);\n      uVar9 = 0x2b - uVar8;\n      uVar12 = (uVar11 | *(uint *)(iVar2 + -8) >> (-uVar8 & 0x1f)) >> 0xb;\n    }\n  }\n  else {\n    if (uVar7 < 0x1000000) {\n      iVar16 = -(uint)*(byte *)(*(int *)(puVar19 + 0x4862c) + (uVar7 >> 0x11));\n      uVar8 = iVar16 + 0x10;\n      iVar16 = iVar16 + 0x11;\n      goto joined_r0x00054cbc;\n    }\n    iVar3 = iVar2 + -4;\n    iVar2 = -(uint)*(byte *)(*(int *)(puVar19 + 0x4862c) + (uVar7 >> 0x19));\n    uVar9 = iVar2 + 8;\n    uVar7 = uVar7 << (uVar9 & 0x1f);\n    uVar12 = uVar7 >> 0xb;\n    iVar16 = bits + (uVar15 - (iVar2 + 9));\n    uVar7 = uVar7 << 0x15;\n    uVar9 = 0xb - uVar9;\n  }\n  if (((int)uVar9 < 0x20) && (1 < (int)pmVar10)) {\n    uVar7 = uVar7 | *(uint *)(iVar3 + -4) >> (uVar9 & 0x1f);\n  }\nLAB_00054c48:\n  if (0x3ff < iVar16) {\n    return 0;\n  }\n  if (iVar16 < -0x3fe) {\n    if (iVar16 < -0x432) {\n      return uVar7;\n    }\n    if ((int)(-iVar16 - 0x3feU) < 0x20) {\n      uVar15 = iVar16 + 0x41e;\n      uVar7 = uVar7 >> (-iVar16 - 0x3feU & 0x1f);\n    }\n    else {\n      uVar7 = uVar12 >> (-iVar16 - 0x41eU & 0x1f);\n      if (-iVar16 - 0x41eU == 0) {\n        return uVar7;\n      }\n      uVar15 = iVar16 + 0x43e;\n      uVar12 = 0;\n    }\n    uVar7 = uVar7 | uVar12 << (uVar15 & 0x1f);\n  }\n  return uVar7;\n}" primitive_type (function_declarator "__gmpn_jacobi_n(mp_ptr ap,mp_ptr bp,mp_size_t n,uint bits)" identifier (parameter_list "(mp_ptr ap,mp_ptr bp,mp_size_t n,uint bits)" ( (parameter_declaration "mp_ptr ap" type_identifier identifier) , (parameter_declaration "mp_ptr bp" type_identifier identifier) , (parameter_declaration "mp_size_t n" type_identifier identifier) , (parameter_declaration "uint bits" type_identifier identifier) ))) (compound_statement "{\n  bool bVar1;\n  int iVar2;\n  int iVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  mp_ptr pmVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  mp_ptr pmVar10;\n  uint uVar11;\n  uint uVar12;\n  mp_ptr pmVar13;\n  mp_limb_t mVar14;\n  uint uVar15;\n  int iVar16;\n  mp_ptr pmVar17;\n  int iVar18;\n  undefined *puVar19;\n  undefined1 *puVar20;\n  uint local_resc;\n  undefined1 auStack_80 [32];\n  tmp_reentrant_t *__tmp_marker;\n  hgcd_matrix M;\n  \n  puVar19 = PTR___stack_chk_guard_0009d540;\n  puVar20 = auStack_80;\n  iVar2 = *(int *)PTR___stack_chk_guard_0009d540;\n  local_resc = bits;\n  if (n < 1000) {\n    uVar15 = n << 2;\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    if (uVar15 < 0x7f01) goto LAB_0005471c;\nLAB_00054ab8:\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    pmVar6 = (mp_ptr)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker);\n  }\n  else {\n    uVar15 = (uint)(n << 1) / 3;\n    iVar18 = n - uVar15;\n    iVar3 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)(iVar18);\n    iVar16 = n + uVar15 + -1;\n    if (iVar16 < iVar3) {\n      iVar16 = iVar3;\n    }\n    iVar16 = ((iVar18 + 1) / 2 + 1) * 4 + iVar16;\n    if (iVar16 < n) {\n      iVar16 = n;\n    }\n    uVar15 = iVar16 << 2;\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    if (0x7f00 < uVar15) goto LAB_00054ab8;\nLAB_0005471c:\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    iVar16 = -(uVar15 + 7 & 0xfffffff8);\n    puVar20 = auStack_80 + iVar16;\n    pmVar6 = (mp_ptr)((int)&M + iVar16 + -0x1c);\n  }\n  if (n < 1000) {\n    bVar1 = n < 3;\n  }\n  else {\n    puVar4 = PTR_LAB_0009d07c + 0x45d0;\n    do {\n      uVar15 = (uint)(n << 1) / 3;\n      iVar16 = n - uVar15;\n      (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M,iVar16,pmVar6);\n      *(uint **)(puVar20 + 0x10) = &local_resc;\n      *(mp_ptr *)(puVar20 + 0x14) = pmVar6 + ((iVar16 + 1) / 2 + 1) * 4;\n      iVar3 = (*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)(ap + uVar15,bp + uVar15,iVar16,&M);\n      if (iVar3 < 1) {\n        bits = 0;\n        *(mp_ptr *)(puVar20 + 0x18) = pmVar6;\n        *(uint **)(puVar20 + 0x14) = &local_resc;\n        *(undefined **)(puVar20 + 0x10) = puVar4;\n        pmVar10 = bp;\n        n = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(ap,bp,n);\n        if (n == 0) goto LAB_00054840;\n      }\n      else {\n        *(mp_ptr *)(puVar20 + 0x14) = pmVar6 + ((iVar16 + 1) / 2 + 1) * 4;\n        *(uint *)(puVar20 + 0x10) = uVar15;\n        bits = (uint)bp;\n        n = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M,uVar15 + iVar3,ap);\n      }\n      bVar1 = n < 3;\n    } while (999 < n);\n  }\n  puVar4 = PTR___gmpn_clz_tab_0009d18c;\n  if (!bVar1) {\n    puVar5 = PTR_LAB_0009d07c + 0x45d0;\n    pmVar13 = ap;\n    do {\n      while( true ) {\n        pmVar17 = pmVar6;\n        uVar15 = pmVar13[n + 0x3fffffff];\n        uVar8 = bp[n + 0x3fffffff];\n        uVar9 = uVar15 | uVar8;\n        uVar12 = bp[n + 0x3ffffffe];\n        uVar7 = pmVar13[n + 0x3ffffffe];\n        if (-1 < (int)uVar9) {\n          if (uVar9 < 0x10000) {\n            iVar16 = 0;\n            if (0xff < uVar9) {\n              iVar16 = 0x18;\n            }\n            iVar3 = 9;\n            if (0xff >= uVar9) {\n              iVar3 = 1;\n            }\n          }\n          else {\n            iVar16 = 0x10;\n            if (0xffffff < uVar9) {\n              iVar16 = 8;\n            }\n            iVar3 = 0x19;\n            if (0xffffff >= uVar9) {\n              iVar3 = 0x11;\n            }\n          }\n          uVar9 = iVar16 - (uint)(byte)puVar4[uVar9 >> iVar3];\n          uVar11 = 0x20 - uVar9;\n          uVar15 = uVar15 << (uVar9 & 0x1f) | uVar7 >> (uVar11 & 0x1f);\n          uVar7 = pmVar13[n + 0x3ffffffd] >> (uVar11 & 0x1f) | uVar7 << (uVar9 & 0x1f);\n          uVar8 = uVar8 << (uVar9 & 0x1f) | uVar12 >> (uVar11 & 0x1f);\n          uVar12 = bp[n + 0x3ffffffd] >> (uVar11 & 0x1f) | uVar12 << (uVar9 & 0x1f);\n        }\n        *(uint **)(puVar20 + 0x14) = &local_resc;\n        *(hgcd_matrix **)(puVar20 + 0x10) = &M;\n        iVar16 = (*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar15,uVar7,uVar8,uVar12);\n        if (iVar16 != 0) break;\n        bits = 0;\n        *(mp_ptr *)(puVar20 + 0x18) = pmVar17;\n        *(uint **)(puVar20 + 0x14) = &local_resc;\n        *(undefined **)(puVar20 + 0x10) = puVar5;\n        pmVar10 = bp;\n        n = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(pmVar13,bp,n);\n        if (n == 0) goto LAB_00054840;\n        ap = pmVar13;\n        pmVar6 = pmVar17;\n        if (n < 3) goto LAB_00054a30;\n      }\n      *(mp_size_t *)(puVar20 + 0x10) = n;\n      bits = (uint)bp;\n      n = (*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488)(&M,pmVar17,pmVar13);\n      ap = pmVar17;\n      pmVar6 = pmVar13;\n      pmVar13 = pmVar17;\n    } while (2 < n);\n  }\nLAB_00054a30:\n  pmVar6 = ap;\n  pmVar10 = bp;\n  if (0xf < local_resc) {\n    pmVar6 = bp;\n    pmVar10 = ap;\n  }\n  if (n == 1) {\n    mVar14 = *pmVar6;\n    pmVar10 = (mp_ptr)*pmVar10;\n    if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n    if (pmVar10 == (mp_ptr)&DAT_00000001) {\n      iVar16 = (local_resc & 1) * -2 + 1;\n    }\n    else {\n      iVar16 = (*(code *)PTR___gmpn_jacobi_base_0009d408)(mVar14,pmVar10,local_resc << 1);\n    }\n  }\n  else {\n    iVar16 = (*(code *)PTR___gmpn_jacobi_2_0009d324)(pmVar6,pmVar10,local_resc & 1);\n    if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n  }\n  goto LAB_0005486c;\nLAB_00054840:\n  if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n  }\n  if (local_resc == 0x1f) {\n    iVar16 = 0;\n  }\n  else {\n    iVar16 = (local_resc & 1) * -2 + 1;\n  }\nLAB_0005486c:\n  if (iVar2 == *(int *)puVar19) {\n    return iVar16;\n  }\n  puVar19 = PTR___stack_chk_fail_0009d4d0;\n  (*(code *)PTR___stack_chk_fail_0009d4d0)();\n  if (pmVar10 == (mp_ptr)0x0) {\n    return 0x7fff0000;\n  }\n  uVar15 = (int)pmVar10 * 0x20;\n  if (0x7fffffff - bits < uVar15) {\n    return 0;\n  }\n  iVar2 = iVar2 + (int)pmVar10 * 4;\n  uVar7 = *(uint *)(iVar2 + -4);\n  if (uVar7 < 0x10000) {\n    iVar16 = 0x20;\n    if (0xff < uVar7) {\n      iVar16 = 0x18;\n    }\n    iVar3 = 9;\n    if (0xff >= uVar7) {\n      iVar3 = 1;\n    }\n    uVar8 = iVar16 - (uint)*(byte *)(*(int *)(puVar19 + 0x4862c) + (uVar7 >> iVar3));\n    iVar16 = uVar8 + 1;\njoined_r0x00054cbc:\n    uVar11 = uVar7 << (uVar8 & 0x1f);\n    uVar12 = uVar11 >> 0xb;\n    iVar16 = bits + (uVar15 - iVar16);\n    if ((int)uVar8 < 0xb) {\n      iVar3 = iVar2 + -4;\n      uVar7 = uVar11 << 0x15;\n      uVar9 = 0xb - uVar8;\n    }\n    else {\n      if ((int)pmVar10 < 2) {\n        uVar7 = 0;\n        goto LAB_00054c48;\n      }\n      iVar3 = iVar2 + -8;\n      uVar7 = *(uint *)(iVar2 + -8) << (uVar8 - 0xb & 0x1f);\n      pmVar10 = (mp_ptr)((int)pmVar10 + -1);\n      uVar9 = 0x2b - uVar8;\n      uVar12 = (uVar11 | *(uint *)(iVar2 + -8) >> (-uVar8 & 0x1f)) >> 0xb;\n    }\n  }\n  else {\n    if (uVar7 < 0x1000000) {\n      iVar16 = -(uint)*(byte *)(*(int *)(puVar19 + 0x4862c) + (uVar7 >> 0x11));\n      uVar8 = iVar16 + 0x10;\n      iVar16 = iVar16 + 0x11;\n      goto joined_r0x00054cbc;\n    }\n    iVar3 = iVar2 + -4;\n    iVar2 = -(uint)*(byte *)(*(int *)(puVar19 + 0x4862c) + (uVar7 >> 0x19));\n    uVar9 = iVar2 + 8;\n    uVar7 = uVar7 << (uVar9 & 0x1f);\n    uVar12 = uVar7 >> 0xb;\n    iVar16 = bits + (uVar15 - (iVar2 + 9));\n    uVar7 = uVar7 << 0x15;\n    uVar9 = 0xb - uVar9;\n  }\n  if (((int)uVar9 < 0x20) && (1 < (int)pmVar10)) {\n    uVar7 = uVar7 | *(uint *)(iVar3 + -4) >> (uVar9 & 0x1f);\n  }\nLAB_00054c48:\n  if (0x3ff < iVar16) {\n    return 0;\n  }\n  if (iVar16 < -0x3fe) {\n    if (iVar16 < -0x432) {\n      return uVar7;\n    }\n    if ((int)(-iVar16 - 0x3feU) < 0x20) {\n      uVar15 = iVar16 + 0x41e;\n      uVar7 = uVar7 >> (-iVar16 - 0x3feU & 0x1f);\n    }\n    else {\n      uVar7 = uVar12 >> (-iVar16 - 0x41eU & 0x1f);\n      if (-iVar16 - 0x41eU == 0) {\n        return uVar7;\n      }\n      uVar15 = iVar16 + 0x43e;\n      uVar12 = 0;\n    }\n    uVar7 = uVar7 | uVar12 << (uVar15 & 0x1f);\n  }\n  return uVar7;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type 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 "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "mp_ptr pmVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "mp_ptr pmVar13;" type_identifier identifier ;) (declaration "mp_limb_t mVar14;" type_identifier identifier ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "mp_ptr pmVar17;" type_identifier identifier ;) (declaration "int iVar18;" primitive_type identifier ;) (declaration "undefined *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "undefined1 *puVar20;" type_identifier (pointer_declarator "*puVar20" * identifier) ;) (declaration "uint local_resc;" type_identifier identifier ;) (declaration "undefined1 auStack_80 [32];" type_identifier (array_declarator "auStack_80 [32]" identifier [ number_literal ]) ;) (declaration "tmp_reentrant_t *__tmp_marker;" type_identifier (pointer_declarator "*__tmp_marker" * identifier) ;) (declaration "hgcd_matrix M;" type_identifier identifier ;) (expression_statement "puVar19 = PTR___stack_chk_guard_0009d540;" (assignment_expression "puVar19 = PTR___stack_chk_guard_0009d540" identifier = identifier) ;) (expression_statement "puVar20 = auStack_80;" (assignment_expression "puVar20 = auStack_80" identifier = identifier) ;) (expression_statement "iVar2 = *(int *)PTR___stack_chk_guard_0009d540;" (assignment_expression "iVar2 = *(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 "local_resc = bits;" (assignment_expression "local_resc = bits" identifier = identifier) ;) (if_statement "if (n < 1000) {\n    uVar15 = n << 2;\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    if (uVar15 < 0x7f01) goto LAB_0005471c;\nLAB_00054ab8:\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    pmVar6 = (mp_ptr)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker);\n  }\n  else {\n    uVar15 = (uint)(n << 1) / 3;\n    iVar18 = n - uVar15;\n    iVar3 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)(iVar18);\n    iVar16 = n + uVar15 + -1;\n    if (iVar16 < iVar3) {\n      iVar16 = iVar3;\n    }\n    iVar16 = ((iVar18 + 1) / 2 + 1) * 4 + iVar16;\n    if (iVar16 < n) {\n      iVar16 = n;\n    }\n    uVar15 = iVar16 << 2;\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    if (0x7f00 < uVar15) goto LAB_00054ab8;\nLAB_0005471c:\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    iVar16 = -(uVar15 + 7 & 0xfffffff8);\n    puVar20 = auStack_80 + iVar16;\n    pmVar6 = (mp_ptr)((int)&M + iVar16 + -0x1c);\n  }" if (parenthesized_expression "(n < 1000)" ( (binary_expression "n < 1000" identifier < number_literal) )) (compound_statement "{\n    uVar15 = n << 2;\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    if (uVar15 < 0x7f01) goto LAB_0005471c;\nLAB_00054ab8:\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    pmVar6 = (mp_ptr)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker);\n  }" { (expression_statement "uVar15 = n << 2;" (assignment_expression "uVar15 = n << 2" identifier = (binary_expression "n << 2" 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)) ;) (if_statement "if (uVar15 < 0x7f01) goto LAB_0005471c;" if (parenthesized_expression "(uVar15 < 0x7f01)" ( (binary_expression "uVar15 < 0x7f01" identifier < number_literal) )) (goto_statement "goto LAB_0005471c;" goto statement_identifier ;)) (labeled_statement "LAB_00054ab8:\n    __tmp_marker = (tmp_reentrant_t *)0x0;" statement_identifier : (expression_statement "__tmp_marker = (tmp_reentrant_t *)0x0;" (assignment_expression "__tmp_marker = (tmp_reentrant_t *)0x0" identifier = (cast_expression "(tmp_reentrant_t *)0x0" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "pmVar6 = (mp_ptr)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker);" (assignment_expression "pmVar6 = (mp_ptr)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker)" identifier = (call_expression "(mp_ptr)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&__tmp_marker)" (call_expression "(mp_ptr)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) (argument_list "(&__tmp_marker)" ( (pointer_expression "&__tmp_marker" & identifier) )))) ;) }) (else_clause "else {\n    uVar15 = (uint)(n << 1) / 3;\n    iVar18 = n - uVar15;\n    iVar3 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)(iVar18);\n    iVar16 = n + uVar15 + -1;\n    if (iVar16 < iVar3) {\n      iVar16 = iVar3;\n    }\n    iVar16 = ((iVar18 + 1) / 2 + 1) * 4 + iVar16;\n    if (iVar16 < n) {\n      iVar16 = n;\n    }\n    uVar15 = iVar16 << 2;\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    if (0x7f00 < uVar15) goto LAB_00054ab8;\nLAB_0005471c:\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    iVar16 = -(uVar15 + 7 & 0xfffffff8);\n    puVar20 = auStack_80 + iVar16;\n    pmVar6 = (mp_ptr)((int)&M + iVar16 + -0x1c);\n  }" else (compound_statement "{\n    uVar15 = (uint)(n << 1) / 3;\n    iVar18 = n - uVar15;\n    iVar3 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)(iVar18);\n    iVar16 = n + uVar15 + -1;\n    if (iVar16 < iVar3) {\n      iVar16 = iVar3;\n    }\n    iVar16 = ((iVar18 + 1) / 2 + 1) * 4 + iVar16;\n    if (iVar16 < n) {\n      iVar16 = n;\n    }\n    uVar15 = iVar16 << 2;\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    if (0x7f00 < uVar15) goto LAB_00054ab8;\nLAB_0005471c:\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    iVar16 = -(uVar15 + 7 & 0xfffffff8);\n    puVar20 = auStack_80 + iVar16;\n    pmVar6 = (mp_ptr)((int)&M + iVar16 + -0x1c);\n  }" { (expression_statement "uVar15 = (uint)(n << 1) / 3;" (assignment_expression "uVar15 = (uint)(n << 1) / 3" identifier = (binary_expression "(uint)(n << 1) / 3" (call_expression "(uint)(n << 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(n << 1)" ( (binary_expression "n << 1" identifier << number_literal) ))) / number_literal)) ;) (expression_statement "iVar18 = n - uVar15;" (assignment_expression "iVar18 = n - uVar15" identifier = (binary_expression "n - uVar15" identifier - identifier)) ;) (expression_statement "iVar3 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)(iVar18);" (assignment_expression "iVar3 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)(iVar18)" identifier = (call_expression "(*(code *)PTR___gmpn_hgcd_itch_0009d464)(iVar18)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_itch_0009d464)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_itch_0009d464" * (cast_expression "(code *)PTR___gmpn_hgcd_itch_0009d464" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar18)" ( identifier )))) ;) (expression_statement "iVar16 = n + uVar15 + -1;" (assignment_expression "iVar16 = n + uVar15 + -1" identifier = (binary_expression "n + uVar15 + -1" (binary_expression "n + uVar15" identifier + identifier) + number_literal)) ;) (if_statement "if (iVar16 < iVar3) {\n      iVar16 = iVar3;\n    }" if (parenthesized_expression "(iVar16 < iVar3)" ( (binary_expression "iVar16 < iVar3" identifier < identifier) )) (compound_statement "{\n      iVar16 = iVar3;\n    }" { (expression_statement "iVar16 = iVar3;" (assignment_expression "iVar16 = iVar3" identifier = identifier) ;) })) (expression_statement "iVar16 = ((iVar18 + 1) / 2 + 1) * 4 + iVar16;" (assignment_expression "iVar16 = ((iVar18 + 1) / 2 + 1) * 4 + iVar16" identifier = (binary_expression "((iVar18 + 1) / 2 + 1) * 4 + iVar16" (binary_expression "((iVar18 + 1) / 2 + 1) * 4" (parenthesized_expression "((iVar18 + 1) / 2 + 1)" ( (binary_expression "(iVar18 + 1) / 2 + 1" (binary_expression "(iVar18 + 1) / 2" (parenthesized_expression "(iVar18 + 1)" ( (binary_expression "iVar18 + 1" identifier + number_literal) )) / number_literal) + number_literal) )) * number_literal) + identifier)) ;) (if_statement "if (iVar16 < n) {\n      iVar16 = n;\n    }" if (parenthesized_expression "(iVar16 < n)" ( (binary_expression "iVar16 < n" identifier < identifier) )) (compound_statement "{\n      iVar16 = n;\n    }" { (expression_statement "iVar16 = n;" (assignment_expression "iVar16 = n" identifier = identifier) ;) })) (expression_statement "uVar15 = iVar16 << 2;" (assignment_expression "uVar15 = iVar16 << 2" identifier = (binary_expression "iVar16 << 2" 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)) ;) (if_statement "if (0x7f00 < uVar15) goto LAB_00054ab8;" if (parenthesized_expression "(0x7f00 < uVar15)" ( (binary_expression "0x7f00 < uVar15" number_literal < identifier) )) (goto_statement "goto LAB_00054ab8;" goto statement_identifier ;)) (labeled_statement "LAB_0005471c:\n    __tmp_marker = (tmp_reentrant_t *)0x0;" statement_identifier : (expression_statement "__tmp_marker = (tmp_reentrant_t *)0x0;" (assignment_expression "__tmp_marker = (tmp_reentrant_t *)0x0" identifier = (cast_expression "(tmp_reentrant_t *)0x0" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "iVar16 = -(uVar15 + 7 & 0xfffffff8);" (assignment_expression "iVar16 = -(uVar15 + 7 & 0xfffffff8)" identifier = (unary_expression "-(uVar15 + 7 & 0xfffffff8)" - (parenthesized_expression "(uVar15 + 7 & 0xfffffff8)" ( (binary_expression "uVar15 + 7 & 0xfffffff8" (binary_expression "uVar15 + 7" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar20 = auStack_80 + iVar16;" (assignment_expression "puVar20 = auStack_80 + iVar16" identifier = (binary_expression "auStack_80 + iVar16" identifier + identifier)) ;) (expression_statement "pmVar6 = (mp_ptr)((int)&M + iVar16 + -0x1c);" (assignment_expression "pmVar6 = (mp_ptr)((int)&M + iVar16 + -0x1c)" identifier = (call_expression "(mp_ptr)((int)&M + iVar16 + -0x1c)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)&M + iVar16 + -0x1c)" ( (binary_expression "(int)&M + iVar16 + -0x1c" (binary_expression "(int)&M + iVar16" (cast_expression "(int)&M" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&M" & identifier)) + identifier) + number_literal) )))) ;) }))) (if_statement "if (n < 1000) {\n    bVar1 = n < 3;\n  }\n  else {\n    puVar4 = PTR_LAB_0009d07c + 0x45d0;\n    do {\n      uVar15 = (uint)(n << 1) / 3;\n      iVar16 = n - uVar15;\n      (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M,iVar16,pmVar6);\n      *(uint **)(puVar20 + 0x10) = &local_resc;\n      *(mp_ptr *)(puVar20 + 0x14) = pmVar6 + ((iVar16 + 1) / 2 + 1) * 4;\n      iVar3 = (*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)(ap + uVar15,bp + uVar15,iVar16,&M);\n      if (iVar3 < 1) {\n        bits = 0;\n        *(mp_ptr *)(puVar20 + 0x18) = pmVar6;\n        *(uint **)(puVar20 + 0x14) = &local_resc;\n        *(undefined **)(puVar20 + 0x10) = puVar4;\n        pmVar10 = bp;\n        n = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(ap,bp,n);\n        if (n == 0) goto LAB_00054840;\n      }\n      else {\n        *(mp_ptr *)(puVar20 + 0x14) = pmVar6 + ((iVar16 + 1) / 2 + 1) * 4;\n        *(uint *)(puVar20 + 0x10) = uVar15;\n        bits = (uint)bp;\n        n = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M,uVar15 + iVar3,ap);\n      }\n      bVar1 = n < 3;\n    } while (999 < n);\n  }" if (parenthesized_expression "(n < 1000)" ( (binary_expression "n < 1000" identifier < number_literal) )) (compound_statement "{\n    bVar1 = n < 3;\n  }" { (expression_statement "bVar1 = n < 3;" (assignment_expression "bVar1 = n < 3" identifier = (binary_expression "n < 3" identifier < number_literal)) ;) }) (else_clause "else {\n    puVar4 = PTR_LAB_0009d07c + 0x45d0;\n    do {\n      uVar15 = (uint)(n << 1) / 3;\n      iVar16 = n - uVar15;\n      (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M,iVar16,pmVar6);\n      *(uint **)(puVar20 + 0x10) = &local_resc;\n      *(mp_ptr *)(puVar20 + 0x14) = pmVar6 + ((iVar16 + 1) / 2 + 1) * 4;\n      iVar3 = (*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)(ap + uVar15,bp + uVar15,iVar16,&M);\n      if (iVar3 < 1) {\n        bits = 0;\n        *(mp_ptr *)(puVar20 + 0x18) = pmVar6;\n        *(uint **)(puVar20 + 0x14) = &local_resc;\n        *(undefined **)(puVar20 + 0x10) = puVar4;\n        pmVar10 = bp;\n        n = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(ap,bp,n);\n        if (n == 0) goto LAB_00054840;\n      }\n      else {\n        *(mp_ptr *)(puVar20 + 0x14) = pmVar6 + ((iVar16 + 1) / 2 + 1) * 4;\n        *(uint *)(puVar20 + 0x10) = uVar15;\n        bits = (uint)bp;\n        n = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M,uVar15 + iVar3,ap);\n      }\n      bVar1 = n < 3;\n    } while (999 < n);\n  }" else (compound_statement "{\n    puVar4 = PTR_LAB_0009d07c + 0x45d0;\n    do {\n      uVar15 = (uint)(n << 1) / 3;\n      iVar16 = n - uVar15;\n      (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M,iVar16,pmVar6);\n      *(uint **)(puVar20 + 0x10) = &local_resc;\n      *(mp_ptr *)(puVar20 + 0x14) = pmVar6 + ((iVar16 + 1) / 2 + 1) * 4;\n      iVar3 = (*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)(ap + uVar15,bp + uVar15,iVar16,&M);\n      if (iVar3 < 1) {\n        bits = 0;\n        *(mp_ptr *)(puVar20 + 0x18) = pmVar6;\n        *(uint **)(puVar20 + 0x14) = &local_resc;\n        *(undefined **)(puVar20 + 0x10) = puVar4;\n        pmVar10 = bp;\n        n = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(ap,bp,n);\n        if (n == 0) goto LAB_00054840;\n      }\n      else {\n        *(mp_ptr *)(puVar20 + 0x14) = pmVar6 + ((iVar16 + 1) / 2 + 1) * 4;\n        *(uint *)(puVar20 + 0x10) = uVar15;\n        bits = (uint)bp;\n        n = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M,uVar15 + iVar3,ap);\n      }\n      bVar1 = n < 3;\n    } while (999 < n);\n  }" { (expression_statement "puVar4 = PTR_LAB_0009d07c + 0x45d0;" (assignment_expression "puVar4 = PTR_LAB_0009d07c + 0x45d0" identifier = (binary_expression "PTR_LAB_0009d07c + 0x45d0" identifier + number_literal)) ;) (do_statement "do {\n      uVar15 = (uint)(n << 1) / 3;\n      iVar16 = n - uVar15;\n      (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M,iVar16,pmVar6);\n      *(uint **)(puVar20 + 0x10) = &local_resc;\n      *(mp_ptr *)(puVar20 + 0x14) = pmVar6 + ((iVar16 + 1) / 2 + 1) * 4;\n      iVar3 = (*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)(ap + uVar15,bp + uVar15,iVar16,&M);\n      if (iVar3 < 1) {\n        bits = 0;\n        *(mp_ptr *)(puVar20 + 0x18) = pmVar6;\n        *(uint **)(puVar20 + 0x14) = &local_resc;\n        *(undefined **)(puVar20 + 0x10) = puVar4;\n        pmVar10 = bp;\n        n = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(ap,bp,n);\n        if (n == 0) goto LAB_00054840;\n      }\n      else {\n        *(mp_ptr *)(puVar20 + 0x14) = pmVar6 + ((iVar16 + 1) / 2 + 1) * 4;\n        *(uint *)(puVar20 + 0x10) = uVar15;\n        bits = (uint)bp;\n        n = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M,uVar15 + iVar3,ap);\n      }\n      bVar1 = n < 3;\n    } while (999 < n);" do (compound_statement "{\n      uVar15 = (uint)(n << 1) / 3;\n      iVar16 = n - uVar15;\n      (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M,iVar16,pmVar6);\n      *(uint **)(puVar20 + 0x10) = &local_resc;\n      *(mp_ptr *)(puVar20 + 0x14) = pmVar6 + ((iVar16 + 1) / 2 + 1) * 4;\n      iVar3 = (*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)(ap + uVar15,bp + uVar15,iVar16,&M);\n      if (iVar3 < 1) {\n        bits = 0;\n        *(mp_ptr *)(puVar20 + 0x18) = pmVar6;\n        *(uint **)(puVar20 + 0x14) = &local_resc;\n        *(undefined **)(puVar20 + 0x10) = puVar4;\n        pmVar10 = bp;\n        n = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(ap,bp,n);\n        if (n == 0) goto LAB_00054840;\n      }\n      else {\n        *(mp_ptr *)(puVar20 + 0x14) = pmVar6 + ((iVar16 + 1) / 2 + 1) * 4;\n        *(uint *)(puVar20 + 0x10) = uVar15;\n        bits = (uint)bp;\n        n = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M,uVar15 + iVar3,ap);\n      }\n      bVar1 = n < 3;\n    }" { (expression_statement "uVar15 = (uint)(n << 1) / 3;" (assignment_expression "uVar15 = (uint)(n << 1) / 3" identifier = (binary_expression "(uint)(n << 1) / 3" (call_expression "(uint)(n << 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(n << 1)" ( (binary_expression "n << 1" identifier << number_literal) ))) / number_literal)) ;) (expression_statement "iVar16 = n - uVar15;" (assignment_expression "iVar16 = n - uVar15" identifier = (binary_expression "n - uVar15" identifier - identifier)) ;) (expression_statement "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M,iVar16,pmVar6);" (call_expression "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(&M,iVar16,pmVar6)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc" * (cast_expression "(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&M,iVar16,pmVar6)" ( (pointer_expression "&M" & identifier) , identifier , identifier ))) ;) (expression_statement "*(uint **)(puVar20 + 0x10) = &local_resc;" (assignment_expression "*(uint **)(puVar20 + 0x10) = &local_resc" (pointer_expression "*(uint **)(puVar20 + 0x10)" * (cast_expression "(uint **)(puVar20 + 0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + 0x10)" ( (binary_expression "puVar20 + 0x10" identifier + number_literal) )))) = (pointer_expression "&local_resc" & identifier)) ;) (expression_statement "*(mp_ptr *)(puVar20 + 0x14) = pmVar6 + ((iVar16 + 1) / 2 + 1) * 4;" (assignment_expression "*(mp_ptr *)(puVar20 + 0x14) = pmVar6 + ((iVar16 + 1) / 2 + 1) * 4" (pointer_expression "*(mp_ptr *)(puVar20 + 0x14)" * (cast_expression "(mp_ptr *)(puVar20 + 0x14)" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + 0x14)" ( (binary_expression "puVar20 + 0x14" identifier + number_literal) )))) = (binary_expression "pmVar6 + ((iVar16 + 1) / 2 + 1) * 4" identifier + (binary_expression "((iVar16 + 1) / 2 + 1) * 4" (parenthesized_expression "((iVar16 + 1) / 2 + 1)" ( (binary_expression "(iVar16 + 1) / 2 + 1" (binary_expression "(iVar16 + 1) / 2" (parenthesized_expression "(iVar16 + 1)" ( (binary_expression "iVar16 + 1" identifier + number_literal) )) / number_literal) + number_literal) )) * number_literal))) ;) (expression_statement "iVar3 = (*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)(ap + uVar15,bp + uVar15,iVar16,&M);" (assignment_expression "iVar3 = (*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)(ap + uVar15,bp + uVar15,iVar16,&M)" identifier = (call_expression "(*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)(ap + uVar15,bp + uVar15,iVar16,&M)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8" * (cast_expression "(code *)PTR___gmpn_hgcd_jacobi_0009d0e8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(ap + uVar15,bp + uVar15,iVar16,&M)" ( (binary_expression "ap + uVar15" identifier + identifier) , (binary_expression "bp + uVar15" identifier + identifier) , identifier , (pointer_expression "&M" & identifier) )))) ;) (if_statement "if (iVar3 < 1) {\n        bits = 0;\n        *(mp_ptr *)(puVar20 + 0x18) = pmVar6;\n        *(uint **)(puVar20 + 0x14) = &local_resc;\n        *(undefined **)(puVar20 + 0x10) = puVar4;\n        pmVar10 = bp;\n        n = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(ap,bp,n);\n        if (n == 0) goto LAB_00054840;\n      }\n      else {\n        *(mp_ptr *)(puVar20 + 0x14) = pmVar6 + ((iVar16 + 1) / 2 + 1) * 4;\n        *(uint *)(puVar20 + 0x10) = uVar15;\n        bits = (uint)bp;\n        n = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M,uVar15 + iVar3,ap);\n      }" if (parenthesized_expression "(iVar3 < 1)" ( (binary_expression "iVar3 < 1" identifier < number_literal) )) (compound_statement "{\n        bits = 0;\n        *(mp_ptr *)(puVar20 + 0x18) = pmVar6;\n        *(uint **)(puVar20 + 0x14) = &local_resc;\n        *(undefined **)(puVar20 + 0x10) = puVar4;\n        pmVar10 = bp;\n        n = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(ap,bp,n);\n        if (n == 0) goto LAB_00054840;\n      }" { (expression_statement "bits = 0;" (assignment_expression "bits = 0" identifier = number_literal) ;) (expression_statement "*(mp_ptr *)(puVar20 + 0x18) = pmVar6;" (assignment_expression "*(mp_ptr *)(puVar20 + 0x18) = pmVar6" (pointer_expression "*(mp_ptr *)(puVar20 + 0x18)" * (cast_expression "(mp_ptr *)(puVar20 + 0x18)" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + 0x18)" ( (binary_expression "puVar20 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar20 + 0x14) = &local_resc;" (assignment_expression "*(uint **)(puVar20 + 0x14) = &local_resc" (pointer_expression "*(uint **)(puVar20 + 0x14)" * (cast_expression "(uint **)(puVar20 + 0x14)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + 0x14)" ( (binary_expression "puVar20 + 0x14" identifier + number_literal) )))) = (pointer_expression "&local_resc" & identifier)) ;) (expression_statement "*(undefined **)(puVar20 + 0x10) = puVar4;" (assignment_expression "*(undefined **)(puVar20 + 0x10) = puVar4" (pointer_expression "*(undefined **)(puVar20 + 0x10)" * (cast_expression "(undefined **)(puVar20 + 0x10)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + 0x10)" ( (binary_expression "puVar20 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pmVar10 = bp;" (assignment_expression "pmVar10 = bp" identifier = identifier) ;) (expression_statement "n = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(ap,bp,n);" (assignment_expression "n = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(ap,bp,n)" identifier = (call_expression "(*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(ap,bp,n)" (parenthesized_expression "(*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)" ( (pointer_expression "*(code *)PTR___gmpn_gcd_subdiv_step_0009d118" * (cast_expression "(code *)PTR___gmpn_gcd_subdiv_step_0009d118" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(ap,bp,n)" ( identifier , identifier , identifier )))) ;) (if_statement "if (n == 0) goto LAB_00054840;" if (parenthesized_expression "(n == 0)" ( (binary_expression "n == 0" identifier == number_literal) )) (goto_statement "goto LAB_00054840;" goto statement_identifier ;)) }) (else_clause "else {\n        *(mp_ptr *)(puVar20 + 0x14) = pmVar6 + ((iVar16 + 1) / 2 + 1) * 4;\n        *(uint *)(puVar20 + 0x10) = uVar15;\n        bits = (uint)bp;\n        n = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M,uVar15 + iVar3,ap);\n      }" else (compound_statement "{\n        *(mp_ptr *)(puVar20 + 0x14) = pmVar6 + ((iVar16 + 1) / 2 + 1) * 4;\n        *(uint *)(puVar20 + 0x10) = uVar15;\n        bits = (uint)bp;\n        n = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M,uVar15 + iVar3,ap);\n      }" { (expression_statement "*(mp_ptr *)(puVar20 + 0x14) = pmVar6 + ((iVar16 + 1) / 2 + 1) * 4;" (assignment_expression "*(mp_ptr *)(puVar20 + 0x14) = pmVar6 + ((iVar16 + 1) / 2 + 1) * 4" (pointer_expression "*(mp_ptr *)(puVar20 + 0x14)" * (cast_expression "(mp_ptr *)(puVar20 + 0x14)" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + 0x14)" ( (binary_expression "puVar20 + 0x14" identifier + number_literal) )))) = (binary_expression "pmVar6 + ((iVar16 + 1) / 2 + 1) * 4" identifier + (binary_expression "((iVar16 + 1) / 2 + 1) * 4" (parenthesized_expression "((iVar16 + 1) / 2 + 1)" ( (binary_expression "(iVar16 + 1) / 2 + 1" (binary_expression "(iVar16 + 1) / 2" (parenthesized_expression "(iVar16 + 1)" ( (binary_expression "iVar16 + 1" identifier + number_literal) )) / number_literal) + number_literal) )) * number_literal))) ;) (expression_statement "*(uint *)(puVar20 + 0x10) = uVar15;" (assignment_expression "*(uint *)(puVar20 + 0x10) = uVar15" (pointer_expression "*(uint *)(puVar20 + 0x10)" * (cast_expression "(uint *)(puVar20 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + 0x10)" ( (binary_expression "puVar20 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "bits = (uint)bp;" (assignment_expression "bits = (uint)bp" identifier = (cast_expression "(uint)bp" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "n = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M,uVar15 + iVar3,ap);" (assignment_expression "n = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M,uVar15 + iVar3,ap)" identifier = (call_expression "(*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)(&M,uVar15 + iVar3,ap)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8" * (cast_expression "(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&M,uVar15 + iVar3,ap)" ( (pointer_expression "&M" & identifier) , (binary_expression "uVar15 + iVar3" identifier + identifier) , identifier )))) ;) }))) (expression_statement "bVar1 = n < 3;" (assignment_expression "bVar1 = n < 3" identifier = (binary_expression "n < 3" identifier < number_literal)) ;) }) while (parenthesized_expression "(999 < n)" ( (binary_expression "999 < n" number_literal < identifier) )) ;) }))) (expression_statement "puVar4 = PTR___gmpn_clz_tab_0009d18c;" (assignment_expression "puVar4 = PTR___gmpn_clz_tab_0009d18c" identifier = identifier) ;) (if_statement "if (!bVar1) {\n    puVar5 = PTR_LAB_0009d07c + 0x45d0;\n    pmVar13 = ap;\n    do {\n      while( true ) {\n        pmVar17 = pmVar6;\n        uVar15 = pmVar13[n + 0x3fffffff];\n        uVar8 = bp[n + 0x3fffffff];\n        uVar9 = uVar15 | uVar8;\n        uVar12 = bp[n + 0x3ffffffe];\n        uVar7 = pmVar13[n + 0x3ffffffe];\n        if (-1 < (int)uVar9) {\n          if (uVar9 < 0x10000) {\n            iVar16 = 0;\n            if (0xff < uVar9) {\n              iVar16 = 0x18;\n            }\n            iVar3 = 9;\n            if (0xff >= uVar9) {\n              iVar3 = 1;\n            }\n          }\n          else {\n            iVar16 = 0x10;\n            if (0xffffff < uVar9) {\n              iVar16 = 8;\n            }\n            iVar3 = 0x19;\n            if (0xffffff >= uVar9) {\n              iVar3 = 0x11;\n            }\n          }\n          uVar9 = iVar16 - (uint)(byte)puVar4[uVar9 >> iVar3];\n          uVar11 = 0x20 - uVar9;\n          uVar15 = uVar15 << (uVar9 & 0x1f) | uVar7 >> (uVar11 & 0x1f);\n          uVar7 = pmVar13[n + 0x3ffffffd] >> (uVar11 & 0x1f) | uVar7 << (uVar9 & 0x1f);\n          uVar8 = uVar8 << (uVar9 & 0x1f) | uVar12 >> (uVar11 & 0x1f);\n          uVar12 = bp[n + 0x3ffffffd] >> (uVar11 & 0x1f) | uVar12 << (uVar9 & 0x1f);\n        }\n        *(uint **)(puVar20 + 0x14) = &local_resc;\n        *(hgcd_matrix **)(puVar20 + 0x10) = &M;\n        iVar16 = (*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar15,uVar7,uVar8,uVar12);\n        if (iVar16 != 0) break;\n        bits = 0;\n        *(mp_ptr *)(puVar20 + 0x18) = pmVar17;\n        *(uint **)(puVar20 + 0x14) = &local_resc;\n        *(undefined **)(puVar20 + 0x10) = puVar5;\n        pmVar10 = bp;\n        n = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(pmVar13,bp,n);\n        if (n == 0) goto LAB_00054840;\n        ap = pmVar13;\n        pmVar6 = pmVar17;\n        if (n < 3) goto LAB_00054a30;\n      }\n      *(mp_size_t *)(puVar20 + 0x10) = n;\n      bits = (uint)bp;\n      n = (*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488)(&M,pmVar17,pmVar13);\n      ap = pmVar17;\n      pmVar6 = pmVar13;\n      pmVar13 = pmVar17;\n    } while (2 < n);\n  }" if (parenthesized_expression "(!bVar1)" ( (unary_expression "!bVar1" ! identifier) )) (compound_statement "{\n    puVar5 = PTR_LAB_0009d07c + 0x45d0;\n    pmVar13 = ap;\n    do {\n      while( true ) {\n        pmVar17 = pmVar6;\n        uVar15 = pmVar13[n + 0x3fffffff];\n        uVar8 = bp[n + 0x3fffffff];\n        uVar9 = uVar15 | uVar8;\n        uVar12 = bp[n + 0x3ffffffe];\n        uVar7 = pmVar13[n + 0x3ffffffe];\n        if (-1 < (int)uVar9) {\n          if (uVar9 < 0x10000) {\n            iVar16 = 0;\n            if (0xff < uVar9) {\n              iVar16 = 0x18;\n            }\n            iVar3 = 9;\n            if (0xff >= uVar9) {\n              iVar3 = 1;\n            }\n          }\n          else {\n            iVar16 = 0x10;\n            if (0xffffff < uVar9) {\n              iVar16 = 8;\n            }\n            iVar3 = 0x19;\n            if (0xffffff >= uVar9) {\n              iVar3 = 0x11;\n            }\n          }\n          uVar9 = iVar16 - (uint)(byte)puVar4[uVar9 >> iVar3];\n          uVar11 = 0x20 - uVar9;\n          uVar15 = uVar15 << (uVar9 & 0x1f) | uVar7 >> (uVar11 & 0x1f);\n          uVar7 = pmVar13[n + 0x3ffffffd] >> (uVar11 & 0x1f) | uVar7 << (uVar9 & 0x1f);\n          uVar8 = uVar8 << (uVar9 & 0x1f) | uVar12 >> (uVar11 & 0x1f);\n          uVar12 = bp[n + 0x3ffffffd] >> (uVar11 & 0x1f) | uVar12 << (uVar9 & 0x1f);\n        }\n        *(uint **)(puVar20 + 0x14) = &local_resc;\n        *(hgcd_matrix **)(puVar20 + 0x10) = &M;\n        iVar16 = (*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar15,uVar7,uVar8,uVar12);\n        if (iVar16 != 0) break;\n        bits = 0;\n        *(mp_ptr *)(puVar20 + 0x18) = pmVar17;\n        *(uint **)(puVar20 + 0x14) = &local_resc;\n        *(undefined **)(puVar20 + 0x10) = puVar5;\n        pmVar10 = bp;\n        n = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(pmVar13,bp,n);\n        if (n == 0) goto LAB_00054840;\n        ap = pmVar13;\n        pmVar6 = pmVar17;\n        if (n < 3) goto LAB_00054a30;\n      }\n      *(mp_size_t *)(puVar20 + 0x10) = n;\n      bits = (uint)bp;\n      n = (*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488)(&M,pmVar17,pmVar13);\n      ap = pmVar17;\n      pmVar6 = pmVar13;\n      pmVar13 = pmVar17;\n    } while (2 < n);\n  }" { (expression_statement "puVar5 = PTR_LAB_0009d07c + 0x45d0;" (assignment_expression "puVar5 = PTR_LAB_0009d07c + 0x45d0" identifier = (binary_expression "PTR_LAB_0009d07c + 0x45d0" identifier + number_literal)) ;) (expression_statement "pmVar13 = ap;" (assignment_expression "pmVar13 = ap" identifier = identifier) ;) (do_statement "do {\n      while( true ) {\n        pmVar17 = pmVar6;\n        uVar15 = pmVar13[n + 0x3fffffff];\n        uVar8 = bp[n + 0x3fffffff];\n        uVar9 = uVar15 | uVar8;\n        uVar12 = bp[n + 0x3ffffffe];\n        uVar7 = pmVar13[n + 0x3ffffffe];\n        if (-1 < (int)uVar9) {\n          if (uVar9 < 0x10000) {\n            iVar16 = 0;\n            if (0xff < uVar9) {\n              iVar16 = 0x18;\n            }\n            iVar3 = 9;\n            if (0xff >= uVar9) {\n              iVar3 = 1;\n            }\n          }\n          else {\n            iVar16 = 0x10;\n            if (0xffffff < uVar9) {\n              iVar16 = 8;\n            }\n            iVar3 = 0x19;\n            if (0xffffff >= uVar9) {\n              iVar3 = 0x11;\n            }\n          }\n          uVar9 = iVar16 - (uint)(byte)puVar4[uVar9 >> iVar3];\n          uVar11 = 0x20 - uVar9;\n          uVar15 = uVar15 << (uVar9 & 0x1f) | uVar7 >> (uVar11 & 0x1f);\n          uVar7 = pmVar13[n + 0x3ffffffd] >> (uVar11 & 0x1f) | uVar7 << (uVar9 & 0x1f);\n          uVar8 = uVar8 << (uVar9 & 0x1f) | uVar12 >> (uVar11 & 0x1f);\n          uVar12 = bp[n + 0x3ffffffd] >> (uVar11 & 0x1f) | uVar12 << (uVar9 & 0x1f);\n        }\n        *(uint **)(puVar20 + 0x14) = &local_resc;\n        *(hgcd_matrix **)(puVar20 + 0x10) = &M;\n        iVar16 = (*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar15,uVar7,uVar8,uVar12);\n        if (iVar16 != 0) break;\n        bits = 0;\n        *(mp_ptr *)(puVar20 + 0x18) = pmVar17;\n        *(uint **)(puVar20 + 0x14) = &local_resc;\n        *(undefined **)(puVar20 + 0x10) = puVar5;\n        pmVar10 = bp;\n        n = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(pmVar13,bp,n);\n        if (n == 0) goto LAB_00054840;\n        ap = pmVar13;\n        pmVar6 = pmVar17;\n        if (n < 3) goto LAB_00054a30;\n      }\n      *(mp_size_t *)(puVar20 + 0x10) = n;\n      bits = (uint)bp;\n      n = (*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488)(&M,pmVar17,pmVar13);\n      ap = pmVar17;\n      pmVar6 = pmVar13;\n      pmVar13 = pmVar17;\n    } while (2 < n);" do (compound_statement "{\n      while( true ) {\n        pmVar17 = pmVar6;\n        uVar15 = pmVar13[n + 0x3fffffff];\n        uVar8 = bp[n + 0x3fffffff];\n        uVar9 = uVar15 | uVar8;\n        uVar12 = bp[n + 0x3ffffffe];\n        uVar7 = pmVar13[n + 0x3ffffffe];\n        if (-1 < (int)uVar9) {\n          if (uVar9 < 0x10000) {\n            iVar16 = 0;\n            if (0xff < uVar9) {\n              iVar16 = 0x18;\n            }\n            iVar3 = 9;\n            if (0xff >= uVar9) {\n              iVar3 = 1;\n            }\n          }\n          else {\n            iVar16 = 0x10;\n            if (0xffffff < uVar9) {\n              iVar16 = 8;\n            }\n            iVar3 = 0x19;\n            if (0xffffff >= uVar9) {\n              iVar3 = 0x11;\n            }\n          }\n          uVar9 = iVar16 - (uint)(byte)puVar4[uVar9 >> iVar3];\n          uVar11 = 0x20 - uVar9;\n          uVar15 = uVar15 << (uVar9 & 0x1f) | uVar7 >> (uVar11 & 0x1f);\n          uVar7 = pmVar13[n + 0x3ffffffd] >> (uVar11 & 0x1f) | uVar7 << (uVar9 & 0x1f);\n          uVar8 = uVar8 << (uVar9 & 0x1f) | uVar12 >> (uVar11 & 0x1f);\n          uVar12 = bp[n + 0x3ffffffd] >> (uVar11 & 0x1f) | uVar12 << (uVar9 & 0x1f);\n        }\n        *(uint **)(puVar20 + 0x14) = &local_resc;\n        *(hgcd_matrix **)(puVar20 + 0x10) = &M;\n        iVar16 = (*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar15,uVar7,uVar8,uVar12);\n        if (iVar16 != 0) break;\n        bits = 0;\n        *(mp_ptr *)(puVar20 + 0x18) = pmVar17;\n        *(uint **)(puVar20 + 0x14) = &local_resc;\n        *(undefined **)(puVar20 + 0x10) = puVar5;\n        pmVar10 = bp;\n        n = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(pmVar13,bp,n);\n        if (n == 0) goto LAB_00054840;\n        ap = pmVar13;\n        pmVar6 = pmVar17;\n        if (n < 3) goto LAB_00054a30;\n      }\n      *(mp_size_t *)(puVar20 + 0x10) = n;\n      bits = (uint)bp;\n      n = (*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488)(&M,pmVar17,pmVar13);\n      ap = pmVar17;\n      pmVar6 = pmVar13;\n      pmVar13 = pmVar17;\n    }" { (while_statement "while( true ) {\n        pmVar17 = pmVar6;\n        uVar15 = pmVar13[n + 0x3fffffff];\n        uVar8 = bp[n + 0x3fffffff];\n        uVar9 = uVar15 | uVar8;\n        uVar12 = bp[n + 0x3ffffffe];\n        uVar7 = pmVar13[n + 0x3ffffffe];\n        if (-1 < (int)uVar9) {\n          if (uVar9 < 0x10000) {\n            iVar16 = 0;\n            if (0xff < uVar9) {\n              iVar16 = 0x18;\n            }\n            iVar3 = 9;\n            if (0xff >= uVar9) {\n              iVar3 = 1;\n            }\n          }\n          else {\n            iVar16 = 0x10;\n            if (0xffffff < uVar9) {\n              iVar16 = 8;\n            }\n            iVar3 = 0x19;\n            if (0xffffff >= uVar9) {\n              iVar3 = 0x11;\n            }\n          }\n          uVar9 = iVar16 - (uint)(byte)puVar4[uVar9 >> iVar3];\n          uVar11 = 0x20 - uVar9;\n          uVar15 = uVar15 << (uVar9 & 0x1f) | uVar7 >> (uVar11 & 0x1f);\n          uVar7 = pmVar13[n + 0x3ffffffd] >> (uVar11 & 0x1f) | uVar7 << (uVar9 & 0x1f);\n          uVar8 = uVar8 << (uVar9 & 0x1f) | uVar12 >> (uVar11 & 0x1f);\n          uVar12 = bp[n + 0x3ffffffd] >> (uVar11 & 0x1f) | uVar12 << (uVar9 & 0x1f);\n        }\n        *(uint **)(puVar20 + 0x14) = &local_resc;\n        *(hgcd_matrix **)(puVar20 + 0x10) = &M;\n        iVar16 = (*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar15,uVar7,uVar8,uVar12);\n        if (iVar16 != 0) break;\n        bits = 0;\n        *(mp_ptr *)(puVar20 + 0x18) = pmVar17;\n        *(uint **)(puVar20 + 0x14) = &local_resc;\n        *(undefined **)(puVar20 + 0x10) = puVar5;\n        pmVar10 = bp;\n        n = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(pmVar13,bp,n);\n        if (n == 0) goto LAB_00054840;\n        ap = pmVar13;\n        pmVar6 = pmVar17;\n        if (n < 3) goto LAB_00054a30;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        pmVar17 = pmVar6;\n        uVar15 = pmVar13[n + 0x3fffffff];\n        uVar8 = bp[n + 0x3fffffff];\n        uVar9 = uVar15 | uVar8;\n        uVar12 = bp[n + 0x3ffffffe];\n        uVar7 = pmVar13[n + 0x3ffffffe];\n        if (-1 < (int)uVar9) {\n          if (uVar9 < 0x10000) {\n            iVar16 = 0;\n            if (0xff < uVar9) {\n              iVar16 = 0x18;\n            }\n            iVar3 = 9;\n            if (0xff >= uVar9) {\n              iVar3 = 1;\n            }\n          }\n          else {\n            iVar16 = 0x10;\n            if (0xffffff < uVar9) {\n              iVar16 = 8;\n            }\n            iVar3 = 0x19;\n            if (0xffffff >= uVar9) {\n              iVar3 = 0x11;\n            }\n          }\n          uVar9 = iVar16 - (uint)(byte)puVar4[uVar9 >> iVar3];\n          uVar11 = 0x20 - uVar9;\n          uVar15 = uVar15 << (uVar9 & 0x1f) | uVar7 >> (uVar11 & 0x1f);\n          uVar7 = pmVar13[n + 0x3ffffffd] >> (uVar11 & 0x1f) | uVar7 << (uVar9 & 0x1f);\n          uVar8 = uVar8 << (uVar9 & 0x1f) | uVar12 >> (uVar11 & 0x1f);\n          uVar12 = bp[n + 0x3ffffffd] >> (uVar11 & 0x1f) | uVar12 << (uVar9 & 0x1f);\n        }\n        *(uint **)(puVar20 + 0x14) = &local_resc;\n        *(hgcd_matrix **)(puVar20 + 0x10) = &M;\n        iVar16 = (*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar15,uVar7,uVar8,uVar12);\n        if (iVar16 != 0) break;\n        bits = 0;\n        *(mp_ptr *)(puVar20 + 0x18) = pmVar17;\n        *(uint **)(puVar20 + 0x14) = &local_resc;\n        *(undefined **)(puVar20 + 0x10) = puVar5;\n        pmVar10 = bp;\n        n = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(pmVar13,bp,n);\n        if (n == 0) goto LAB_00054840;\n        ap = pmVar13;\n        pmVar6 = pmVar17;\n        if (n < 3) goto LAB_00054a30;\n      }" { (expression_statement "pmVar17 = pmVar6;" (assignment_expression "pmVar17 = pmVar6" identifier = identifier) ;) (expression_statement "uVar15 = pmVar13[n + 0x3fffffff];" (assignment_expression "uVar15 = pmVar13[n + 0x3fffffff]" identifier = (subscript_expression "pmVar13[n + 0x3fffffff]" identifier [ (binary_expression "n + 0x3fffffff" identifier + number_literal) ])) ;) (expression_statement "uVar8 = bp[n + 0x3fffffff];" (assignment_expression "uVar8 = bp[n + 0x3fffffff]" identifier = (subscript_expression "bp[n + 0x3fffffff]" identifier [ (binary_expression "n + 0x3fffffff" identifier + number_literal) ])) ;) (expression_statement "uVar9 = uVar15 | uVar8;" (assignment_expression "uVar9 = uVar15 | uVar8" identifier = (binary_expression "uVar15 | uVar8" identifier | identifier)) ;) (expression_statement "uVar12 = bp[n + 0x3ffffffe];" (assignment_expression "uVar12 = bp[n + 0x3ffffffe]" identifier = (subscript_expression "bp[n + 0x3ffffffe]" identifier [ (binary_expression "n + 0x3ffffffe" identifier + number_literal) ])) ;) (expression_statement "uVar7 = pmVar13[n + 0x3ffffffe];" (assignment_expression "uVar7 = pmVar13[n + 0x3ffffffe]" identifier = (subscript_expression "pmVar13[n + 0x3ffffffe]" identifier [ (binary_expression "n + 0x3ffffffe" identifier + number_literal) ])) ;) (if_statement "if (-1 < (int)uVar9) {\n          if (uVar9 < 0x10000) {\n            iVar16 = 0;\n            if (0xff < uVar9) {\n              iVar16 = 0x18;\n            }\n            iVar3 = 9;\n            if (0xff >= uVar9) {\n              iVar3 = 1;\n            }\n          }\n          else {\n            iVar16 = 0x10;\n            if (0xffffff < uVar9) {\n              iVar16 = 8;\n            }\n            iVar3 = 0x19;\n            if (0xffffff >= uVar9) {\n              iVar3 = 0x11;\n            }\n          }\n          uVar9 = iVar16 - (uint)(byte)puVar4[uVar9 >> iVar3];\n          uVar11 = 0x20 - uVar9;\n          uVar15 = uVar15 << (uVar9 & 0x1f) | uVar7 >> (uVar11 & 0x1f);\n          uVar7 = pmVar13[n + 0x3ffffffd] >> (uVar11 & 0x1f) | uVar7 << (uVar9 & 0x1f);\n          uVar8 = uVar8 << (uVar9 & 0x1f) | uVar12 >> (uVar11 & 0x1f);\n          uVar12 = bp[n + 0x3ffffffd] >> (uVar11 & 0x1f) | uVar12 << (uVar9 & 0x1f);\n        }" if (parenthesized_expression "(-1 < (int)uVar9)" ( (binary_expression "-1 < (int)uVar9" number_literal < (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          if (uVar9 < 0x10000) {\n            iVar16 = 0;\n            if (0xff < uVar9) {\n              iVar16 = 0x18;\n            }\n            iVar3 = 9;\n            if (0xff >= uVar9) {\n              iVar3 = 1;\n            }\n          }\n          else {\n            iVar16 = 0x10;\n            if (0xffffff < uVar9) {\n              iVar16 = 8;\n            }\n            iVar3 = 0x19;\n            if (0xffffff >= uVar9) {\n              iVar3 = 0x11;\n            }\n          }\n          uVar9 = iVar16 - (uint)(byte)puVar4[uVar9 >> iVar3];\n          uVar11 = 0x20 - uVar9;\n          uVar15 = uVar15 << (uVar9 & 0x1f) | uVar7 >> (uVar11 & 0x1f);\n          uVar7 = pmVar13[n + 0x3ffffffd] >> (uVar11 & 0x1f) | uVar7 << (uVar9 & 0x1f);\n          uVar8 = uVar8 << (uVar9 & 0x1f) | uVar12 >> (uVar11 & 0x1f);\n          uVar12 = bp[n + 0x3ffffffd] >> (uVar11 & 0x1f) | uVar12 << (uVar9 & 0x1f);\n        }" { (if_statement "if (uVar9 < 0x10000) {\n            iVar16 = 0;\n            if (0xff < uVar9) {\n              iVar16 = 0x18;\n            }\n            iVar3 = 9;\n            if (0xff >= uVar9) {\n              iVar3 = 1;\n            }\n          }\n          else {\n            iVar16 = 0x10;\n            if (0xffffff < uVar9) {\n              iVar16 = 8;\n            }\n            iVar3 = 0x19;\n            if (0xffffff >= uVar9) {\n              iVar3 = 0x11;\n            }\n          }" if (parenthesized_expression "(uVar9 < 0x10000)" ( (binary_expression "uVar9 < 0x10000" identifier < number_literal) )) (compound_statement "{\n            iVar16 = 0;\n            if (0xff < uVar9) {\n              iVar16 = 0x18;\n            }\n            iVar3 = 9;\n            if (0xff >= uVar9) {\n              iVar3 = 1;\n            }\n          }" { (expression_statement "iVar16 = 0;" (assignment_expression "iVar16 = 0" identifier = number_literal) ;) (if_statement "if (0xff < uVar9) {\n              iVar16 = 0x18;\n            }" if (parenthesized_expression "(0xff < uVar9)" ( (binary_expression "0xff < uVar9" number_literal < identifier) )) (compound_statement "{\n              iVar16 = 0x18;\n            }" { (expression_statement "iVar16 = 0x18;" (assignment_expression "iVar16 = 0x18" identifier = number_literal) ;) })) (expression_statement "iVar3 = 9;" (assignment_expression "iVar3 = 9" identifier = number_literal) ;) (if_statement "if (0xff >= uVar9) {\n              iVar3 = 1;\n            }" if (parenthesized_expression "(0xff >= uVar9)" ( (binary_expression "0xff >= uVar9" number_literal >= identifier) )) (compound_statement "{\n              iVar3 = 1;\n            }" { (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) })) }) (else_clause "else {\n            iVar16 = 0x10;\n            if (0xffffff < uVar9) {\n              iVar16 = 8;\n            }\n            iVar3 = 0x19;\n            if (0xffffff >= uVar9) {\n              iVar3 = 0x11;\n            }\n          }" else (compound_statement "{\n            iVar16 = 0x10;\n            if (0xffffff < uVar9) {\n              iVar16 = 8;\n            }\n            iVar3 = 0x19;\n            if (0xffffff >= uVar9) {\n              iVar3 = 0x11;\n            }\n          }" { (expression_statement "iVar16 = 0x10;" (assignment_expression "iVar16 = 0x10" identifier = number_literal) ;) (if_statement "if (0xffffff < uVar9) {\n              iVar16 = 8;\n            }" if (parenthesized_expression "(0xffffff < uVar9)" ( (binary_expression "0xffffff < uVar9" number_literal < identifier) )) (compound_statement "{\n              iVar16 = 8;\n            }" { (expression_statement "iVar16 = 8;" (assignment_expression "iVar16 = 8" identifier = number_literal) ;) })) (expression_statement "iVar3 = 0x19;" (assignment_expression "iVar3 = 0x19" identifier = number_literal) ;) (if_statement "if (0xffffff >= uVar9) {\n              iVar3 = 0x11;\n            }" if (parenthesized_expression "(0xffffff >= uVar9)" ( (binary_expression "0xffffff >= uVar9" number_literal >= identifier) )) (compound_statement "{\n              iVar3 = 0x11;\n            }" { (expression_statement "iVar3 = 0x11;" (assignment_expression "iVar3 = 0x11" identifier = number_literal) ;) })) }))) (expression_statement "uVar9 = iVar16 - (uint)(byte)puVar4[uVar9 >> iVar3];" (assignment_expression "uVar9 = iVar16 - (uint)(byte)puVar4[uVar9 >> iVar3]" identifier = (binary_expression "iVar16 - (uint)(byte)puVar4[uVar9 >> iVar3]" identifier - (cast_expression "(uint)(byte)puVar4[uVar9 >> iVar3]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)puVar4[uVar9 >> iVar3]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar4[uVar9 >> iVar3]" identifier [ (binary_expression "uVar9 >> iVar3" identifier >> identifier) ]))))) ;) (expression_statement "uVar11 = 0x20 - uVar9;" (assignment_expression "uVar11 = 0x20 - uVar9" identifier = (binary_expression "0x20 - uVar9" number_literal - identifier)) ;) (expression_statement "uVar15 = uVar15 << (uVar9 & 0x1f) | uVar7 >> (uVar11 & 0x1f);" (assignment_expression "uVar15 = uVar15 << (uVar9 & 0x1f) | uVar7 >> (uVar11 & 0x1f)" identifier = (binary_expression "uVar15 << (uVar9 & 0x1f) | uVar7 >> (uVar11 & 0x1f)" (binary_expression "uVar15 << (uVar9 & 0x1f)" identifier << (parenthesized_expression "(uVar9 & 0x1f)" ( (binary_expression "uVar9 & 0x1f" identifier & number_literal) ))) | (binary_expression "uVar7 >> (uVar11 & 0x1f)" identifier >> (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))))) ;) (expression_statement "uVar7 = pmVar13[n + 0x3ffffffd] >> (uVar11 & 0x1f) | uVar7 << (uVar9 & 0x1f);" (assignment_expression "uVar7 = pmVar13[n + 0x3ffffffd] >> (uVar11 & 0x1f) | uVar7 << (uVar9 & 0x1f)" identifier = (binary_expression "pmVar13[n + 0x3ffffffd] >> (uVar11 & 0x1f) | uVar7 << (uVar9 & 0x1f)" (binary_expression "pmVar13[n + 0x3ffffffd] >> (uVar11 & 0x1f)" (subscript_expression "pmVar13[n + 0x3ffffffd]" identifier [ (binary_expression "n + 0x3ffffffd" identifier + number_literal) ]) >> (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))) | (binary_expression "uVar7 << (uVar9 & 0x1f)" identifier << (parenthesized_expression "(uVar9 & 0x1f)" ( (binary_expression "uVar9 & 0x1f" identifier & number_literal) ))))) ;) (expression_statement "uVar8 = uVar8 << (uVar9 & 0x1f) | uVar12 >> (uVar11 & 0x1f);" (assignment_expression "uVar8 = uVar8 << (uVar9 & 0x1f) | uVar12 >> (uVar11 & 0x1f)" identifier = (binary_expression "uVar8 << (uVar9 & 0x1f) | uVar12 >> (uVar11 & 0x1f)" (binary_expression "uVar8 << (uVar9 & 0x1f)" identifier << (parenthesized_expression "(uVar9 & 0x1f)" ( (binary_expression "uVar9 & 0x1f" identifier & number_literal) ))) | (binary_expression "uVar12 >> (uVar11 & 0x1f)" identifier >> (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))))) ;) (expression_statement "uVar12 = bp[n + 0x3ffffffd] >> (uVar11 & 0x1f) | uVar12 << (uVar9 & 0x1f);" (assignment_expression "uVar12 = bp[n + 0x3ffffffd] >> (uVar11 & 0x1f) | uVar12 << (uVar9 & 0x1f)" identifier = (binary_expression "bp[n + 0x3ffffffd] >> (uVar11 & 0x1f) | uVar12 << (uVar9 & 0x1f)" (binary_expression "bp[n + 0x3ffffffd] >> (uVar11 & 0x1f)" (subscript_expression "bp[n + 0x3ffffffd]" identifier [ (binary_expression "n + 0x3ffffffd" identifier + number_literal) ]) >> (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))) | (binary_expression "uVar12 << (uVar9 & 0x1f)" identifier << (parenthesized_expression "(uVar9 & 0x1f)" ( (binary_expression "uVar9 & 0x1f" identifier & number_literal) ))))) ;) })) (expression_statement "*(uint **)(puVar20 + 0x14) = &local_resc;" (assignment_expression "*(uint **)(puVar20 + 0x14) = &local_resc" (pointer_expression "*(uint **)(puVar20 + 0x14)" * (cast_expression "(uint **)(puVar20 + 0x14)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + 0x14)" ( (binary_expression "puVar20 + 0x14" identifier + number_literal) )))) = (pointer_expression "&local_resc" & identifier)) ;) (expression_statement "*(hgcd_matrix **)(puVar20 + 0x10) = &M;" (assignment_expression "*(hgcd_matrix **)(puVar20 + 0x10) = &M" (pointer_expression "*(hgcd_matrix **)(puVar20 + 0x10)" * (cast_expression "(hgcd_matrix **)(puVar20 + 0x10)" ( (type_descriptor "hgcd_matrix **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + 0x10)" ( (binary_expression "puVar20 + 0x10" identifier + number_literal) )))) = (pointer_expression "&M" & identifier)) ;) (expression_statement "iVar16 = (*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar15,uVar7,uVar8,uVar12);" (assignment_expression "iVar16 = (*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar15,uVar7,uVar8,uVar12)" identifier = (call_expression "(*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar15,uVar7,uVar8,uVar12)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd2_jacobi_0009d318" * (cast_expression "(code *)PTR___gmpn_hgcd2_jacobi_0009d318" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar15,uVar7,uVar8,uVar12)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar16 != 0) break;" if (parenthesized_expression "(iVar16 != 0)" ( (binary_expression "iVar16 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "bits = 0;" (assignment_expression "bits = 0" identifier = number_literal) ;) (expression_statement "*(mp_ptr *)(puVar20 + 0x18) = pmVar17;" (assignment_expression "*(mp_ptr *)(puVar20 + 0x18) = pmVar17" (pointer_expression "*(mp_ptr *)(puVar20 + 0x18)" * (cast_expression "(mp_ptr *)(puVar20 + 0x18)" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + 0x18)" ( (binary_expression "puVar20 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar20 + 0x14) = &local_resc;" (assignment_expression "*(uint **)(puVar20 + 0x14) = &local_resc" (pointer_expression "*(uint **)(puVar20 + 0x14)" * (cast_expression "(uint **)(puVar20 + 0x14)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + 0x14)" ( (binary_expression "puVar20 + 0x14" identifier + number_literal) )))) = (pointer_expression "&local_resc" & identifier)) ;) (expression_statement "*(undefined **)(puVar20 + 0x10) = puVar5;" (assignment_expression "*(undefined **)(puVar20 + 0x10) = puVar5" (pointer_expression "*(undefined **)(puVar20 + 0x10)" * (cast_expression "(undefined **)(puVar20 + 0x10)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + 0x10)" ( (binary_expression "puVar20 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "pmVar10 = bp;" (assignment_expression "pmVar10 = bp" identifier = identifier) ;) (expression_statement "n = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(pmVar13,bp,n);" (assignment_expression "n = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(pmVar13,bp,n)" identifier = (call_expression "(*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(pmVar13,bp,n)" (parenthesized_expression "(*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)" ( (pointer_expression "*(code *)PTR___gmpn_gcd_subdiv_step_0009d118" * (cast_expression "(code *)PTR___gmpn_gcd_subdiv_step_0009d118" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pmVar13,bp,n)" ( identifier , identifier , identifier )))) ;) (if_statement "if (n == 0) goto LAB_00054840;" if (parenthesized_expression "(n == 0)" ( (binary_expression "n == 0" identifier == number_literal) )) (goto_statement "goto LAB_00054840;" goto statement_identifier ;)) (expression_statement "ap = pmVar13;" (assignment_expression "ap = pmVar13" identifier = identifier) ;) (expression_statement "pmVar6 = pmVar17;" (assignment_expression "pmVar6 = pmVar17" identifier = identifier) ;) (if_statement "if (n < 3) goto LAB_00054a30;" if (parenthesized_expression "(n < 3)" ( (binary_expression "n < 3" identifier < number_literal) )) (goto_statement "goto LAB_00054a30;" goto statement_identifier ;)) })) (expression_statement "*(mp_size_t *)(puVar20 + 0x10) = n;" (assignment_expression "*(mp_size_t *)(puVar20 + 0x10) = n" (pointer_expression "*(mp_size_t *)(puVar20 + 0x10)" * (cast_expression "(mp_size_t *)(puVar20 + 0x10)" ( (type_descriptor "mp_size_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + 0x10)" ( (binary_expression "puVar20 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "bits = (uint)bp;" (assignment_expression "bits = (uint)bp" identifier = (cast_expression "(uint)bp" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "n = (*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488)(&M,pmVar17,pmVar13);" (assignment_expression "n = (*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488)(&M,pmVar17,pmVar13)" identifier = (call_expression "(*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488)(&M,pmVar17,pmVar13)" (parenthesized_expression "(*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488)" ( (pointer_expression "*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488" * (cast_expression "(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&M,pmVar17,pmVar13)" ( (pointer_expression "&M" & identifier) , identifier , identifier )))) ;) (expression_statement "ap = pmVar17;" (assignment_expression "ap = pmVar17" identifier = identifier) ;) (expression_statement "pmVar6 = pmVar13;" (assignment_expression "pmVar6 = pmVar13" identifier = identifier) ;) (expression_statement "pmVar13 = pmVar17;" (assignment_expression "pmVar13 = pmVar17" identifier = identifier) ;) }) while (parenthesized_expression "(2 < n)" ( (binary_expression "2 < n" number_literal < identifier) )) ;) })) (labeled_statement "LAB_00054a30:\n  pmVar6 = ap;" statement_identifier : (expression_statement "pmVar6 = ap;" (assignment_expression "pmVar6 = ap" identifier = identifier) ;)) (expression_statement "pmVar10 = bp;" (assignment_expression "pmVar10 = bp" identifier = identifier) ;) (if_statement "if (0xf < local_resc) {\n    pmVar6 = bp;\n    pmVar10 = ap;\n  }" if (parenthesized_expression "(0xf < local_resc)" ( (binary_expression "0xf < local_resc" number_literal < identifier) )) (compound_statement "{\n    pmVar6 = bp;\n    pmVar10 = ap;\n  }" { (expression_statement "pmVar6 = bp;" (assignment_expression "pmVar6 = bp" identifier = identifier) ;) (expression_statement "pmVar10 = ap;" (assignment_expression "pmVar10 = ap" identifier = identifier) ;) })) (if_statement "if (n == 1) {\n    mVar14 = *pmVar6;\n    pmVar10 = (mp_ptr)*pmVar10;\n    if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n    if (pmVar10 == (mp_ptr)&DAT_00000001) {\n      iVar16 = (local_resc & 1) * -2 + 1;\n    }\n    else {\n      iVar16 = (*(code *)PTR___gmpn_jacobi_base_0009d408)(mVar14,pmVar10,local_resc << 1);\n    }\n  }\n  else {\n    iVar16 = (*(code *)PTR___gmpn_jacobi_2_0009d324)(pmVar6,pmVar10,local_resc & 1);\n    if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n  }" if (parenthesized_expression "(n == 1)" ( (binary_expression "n == 1" identifier == number_literal) )) (compound_statement "{\n    mVar14 = *pmVar6;\n    pmVar10 = (mp_ptr)*pmVar10;\n    if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n    if (pmVar10 == (mp_ptr)&DAT_00000001) {\n      iVar16 = (local_resc & 1) * -2 + 1;\n    }\n    else {\n      iVar16 = (*(code *)PTR___gmpn_jacobi_base_0009d408)(mVar14,pmVar10,local_resc << 1);\n    }\n  }" { (expression_statement "mVar14 = *pmVar6;" (assignment_expression "mVar14 = *pmVar6" identifier = (pointer_expression "*pmVar6" * identifier)) ;) (expression_statement "pmVar10 = (mp_ptr)*pmVar10;" (assignment_expression "pmVar10 = (mp_ptr)*pmVar10" identifier = (binary_expression "(mp_ptr)*pmVar10" (parenthesized_expression "(mp_ptr)" ( 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 "()" ( ))) ;) })) (if_statement "if (pmVar10 == (mp_ptr)&DAT_00000001) {\n      iVar16 = (local_resc & 1) * -2 + 1;\n    }\n    else {\n      iVar16 = (*(code *)PTR___gmpn_jacobi_base_0009d408)(mVar14,pmVar10,local_resc << 1);\n    }" if (parenthesized_expression "(pmVar10 == (mp_ptr)&DAT_00000001)" ( (binary_expression "pmVar10 == (mp_ptr)&DAT_00000001" (binary_expression "pmVar10 == (mp_ptr)" identifier == (parenthesized_expression "(mp_ptr)" ( identifier ))) & identifier) )) (compound_statement "{\n      iVar16 = (local_resc & 1) * -2 + 1;\n    }" { (expression_statement "iVar16 = (local_resc & 1) * -2 + 1;" (assignment_expression "iVar16 = (local_resc & 1) * -2 + 1" identifier = (binary_expression "(local_resc & 1) * -2 + 1" (binary_expression "(local_resc & 1) * -2" (parenthesized_expression "(local_resc & 1)" ( (binary_expression "local_resc & 1" identifier & number_literal) )) * number_literal) + number_literal)) ;) }) (else_clause "else {\n      iVar16 = (*(code *)PTR___gmpn_jacobi_base_0009d408)(mVar14,pmVar10,local_resc << 1);\n    }" else (compound_statement "{\n      iVar16 = (*(code *)PTR___gmpn_jacobi_base_0009d408)(mVar14,pmVar10,local_resc << 1);\n    }" { (expression_statement "iVar16 = (*(code *)PTR___gmpn_jacobi_base_0009d408)(mVar14,pmVar10,local_resc << 1);" (assignment_expression "iVar16 = (*(code *)PTR___gmpn_jacobi_base_0009d408)(mVar14,pmVar10,local_resc << 1)" identifier = (call_expression "(*(code *)PTR___gmpn_jacobi_base_0009d408)(mVar14,pmVar10,local_resc << 1)" (parenthesized_expression "(*(code *)PTR___gmpn_jacobi_base_0009d408)" ( (pointer_expression "*(code *)PTR___gmpn_jacobi_base_0009d408" * (cast_expression "(code *)PTR___gmpn_jacobi_base_0009d408" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(mVar14,pmVar10,local_resc << 1)" ( identifier , identifier , (binary_expression "local_resc << 1" identifier << number_literal) )))) ;) }))) }) (else_clause "else {\n    iVar16 = (*(code *)PTR___gmpn_jacobi_2_0009d324)(pmVar6,pmVar10,local_resc & 1);\n    if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n  }" else (compound_statement "{\n    iVar16 = (*(code *)PTR___gmpn_jacobi_2_0009d324)(pmVar6,pmVar10,local_resc & 1);\n    if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n  }" { (expression_statement "iVar16 = (*(code *)PTR___gmpn_jacobi_2_0009d324)(pmVar6,pmVar10,local_resc & 1);" (assignment_expression "iVar16 = (*(code *)PTR___gmpn_jacobi_2_0009d324)(pmVar6,pmVar10,local_resc & 1)" identifier = (call_expression "(*(code *)PTR___gmpn_jacobi_2_0009d324)(pmVar6,pmVar10,local_resc & 1)" (parenthesized_expression "(*(code *)PTR___gmpn_jacobi_2_0009d324)" ( (pointer_expression "*(code *)PTR___gmpn_jacobi_2_0009d324" * (cast_expression "(code *)PTR___gmpn_jacobi_2_0009d324" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pmVar6,pmVar10,local_resc & 1)" ( identifier , identifier , (binary_expression "local_resc & 1" identifier & number_literal) )))) ;) (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 "()" ( ))) ;) })) }))) (goto_statement "goto LAB_0005486c;" goto statement_identifier ;) (labeled_statement "LAB_00054840:\n  if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n  }" statement_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 "()" ( ))) ;) }))) (if_statement "if (local_resc == 0x1f) {\n    iVar16 = 0;\n  }\n  else {\n    iVar16 = (local_resc & 1) * -2 + 1;\n  }" if (parenthesized_expression "(local_resc == 0x1f)" ( (binary_expression "local_resc == 0x1f" identifier == number_literal) )) (compound_statement "{\n    iVar16 = 0;\n  }" { (expression_statement "iVar16 = 0;" (assignment_expression "iVar16 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    iVar16 = (local_resc & 1) * -2 + 1;\n  }" else (compound_statement "{\n    iVar16 = (local_resc & 1) * -2 + 1;\n  }" { (expression_statement "iVar16 = (local_resc & 1) * -2 + 1;" (assignment_expression "iVar16 = (local_resc & 1) * -2 + 1" identifier = (binary_expression "(local_resc & 1) * -2 + 1" (binary_expression "(local_resc & 1) * -2" (parenthesized_expression "(local_resc & 1)" ( (binary_expression "local_resc & 1" identifier & number_literal) )) * number_literal) + number_literal)) ;) }))) (labeled_statement "LAB_0005486c:\n  if (iVar2 == *(int *)puVar19) {\n    return iVar16;\n  }" statement_identifier : (if_statement "if (iVar2 == *(int *)puVar19) {\n    return iVar16;\n  }" if (parenthesized_expression "(iVar2 == *(int *)puVar19)" ( (binary_expression "iVar2 == *(int *)puVar19" identifier == (pointer_expression "*(int *)puVar19" * (cast_expression "(int *)puVar19" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return iVar16;\n  }" { (return_statement "return iVar16;" return identifier ;) }))) (expression_statement "puVar19 = PTR___stack_chk_fail_0009d4d0;" (assignment_expression "puVar19 = PTR___stack_chk_fail_0009d4d0" 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 "()" ( ))) ;) (if_statement "if (pmVar10 == (mp_ptr)0x0) {\n    return 0x7fff0000;\n  }" if (parenthesized_expression "(pmVar10 == (mp_ptr)0x0)" ( (binary_expression "pmVar10 == (mp_ptr)0x0" identifier == (cast_expression "(mp_ptr)0x0" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n    return 0x7fff0000;\n  }" { (return_statement "return 0x7fff0000;" return number_literal ;) })) (expression_statement "uVar15 = (int)pmVar10 * 0x20;" (assignment_expression "uVar15 = (int)pmVar10 * 0x20" identifier = (binary_expression "(int)pmVar10 * 0x20" (cast_expression "(int)pmVar10" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (if_statement "if (0x7fffffff - bits < uVar15) {\n    return 0;\n  }" if (parenthesized_expression "(0x7fffffff - bits < uVar15)" ( (binary_expression "0x7fffffff - bits < uVar15" (binary_expression "0x7fffffff - bits" number_literal - identifier) < identifier) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar2 = iVar2 + (int)pmVar10 * 4;" (assignment_expression "iVar2 = iVar2 + (int)pmVar10 * 4" identifier = (binary_expression "iVar2 + (int)pmVar10 * 4" identifier + (binary_expression "(int)pmVar10 * 4" (cast_expression "(int)pmVar10" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal))) ;) (expression_statement "uVar7 = *(uint *)(iVar2 + -4);" (assignment_expression "uVar7 = *(uint *)(iVar2 + -4)" identifier = (pointer_expression "*(uint *)(iVar2 + -4)" * (cast_expression "(uint *)(iVar2 + -4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + -4)" ( (binary_expression "iVar2 + -4" identifier + number_literal) ))))) ;) (if_statement "if (uVar7 < 0x10000) {\n    iVar16 = 0x20;\n    if (0xff < uVar7) {\n      iVar16 = 0x18;\n    }\n    iVar3 = 9;\n    if (0xff >= uVar7) {\n      iVar3 = 1;\n    }\n    uVar8 = iVar16 - (uint)*(byte *)(*(int *)(puVar19 + 0x4862c) + (uVar7 >> iVar3));\n    iVar16 = uVar8 + 1;\njoined_r0x00054cbc:\n    uVar11 = uVar7 << (uVar8 & 0x1f);\n    uVar12 = uVar11 >> 0xb;\n    iVar16 = bits + (uVar15 - iVar16);\n    if ((int)uVar8 < 0xb) {\n      iVar3 = iVar2 + -4;\n      uVar7 = uVar11 << 0x15;\n      uVar9 = 0xb - uVar8;\n    }\n    else {\n      if ((int)pmVar10 < 2) {\n        uVar7 = 0;\n        goto LAB_00054c48;\n      }\n      iVar3 = iVar2 + -8;\n      uVar7 = *(uint *)(iVar2 + -8) << (uVar8 - 0xb & 0x1f);\n      pmVar10 = (mp_ptr)((int)pmVar10 + -1);\n      uVar9 = 0x2b - uVar8;\n      uVar12 = (uVar11 | *(uint *)(iVar2 + -8) >> (-uVar8 & 0x1f)) >> 0xb;\n    }\n  }\n  else {\n    if (uVar7 < 0x1000000) {\n      iVar16 = -(uint)*(byte *)(*(int *)(puVar19 + 0x4862c) + (uVar7 >> 0x11));\n      uVar8 = iVar16 + 0x10;\n      iVar16 = iVar16 + 0x11;\n      goto joined_r0x00054cbc;\n    }\n    iVar3 = iVar2 + -4;\n    iVar2 = -(uint)*(byte *)(*(int *)(puVar19 + 0x4862c) + (uVar7 >> 0x19));\n    uVar9 = iVar2 + 8;\n    uVar7 = uVar7 << (uVar9 & 0x1f);\n    uVar12 = uVar7 >> 0xb;\n    iVar16 = bits + (uVar15 - (iVar2 + 9));\n    uVar7 = uVar7 << 0x15;\n    uVar9 = 0xb - uVar9;\n  }" if (parenthesized_expression "(uVar7 < 0x10000)" ( (binary_expression "uVar7 < 0x10000" identifier < number_literal) )) (compound_statement "{\n    iVar16 = 0x20;\n    if (0xff < uVar7) {\n      iVar16 = 0x18;\n    }\n    iVar3 = 9;\n    if (0xff >= uVar7) {\n      iVar3 = 1;\n    }\n    uVar8 = iVar16 - (uint)*(byte *)(*(int *)(puVar19 + 0x4862c) + (uVar7 >> iVar3));\n    iVar16 = uVar8 + 1;\njoined_r0x00054cbc:\n    uVar11 = uVar7 << (uVar8 & 0x1f);\n    uVar12 = uVar11 >> 0xb;\n    iVar16 = bits + (uVar15 - iVar16);\n    if ((int)uVar8 < 0xb) {\n      iVar3 = iVar2 + -4;\n      uVar7 = uVar11 << 0x15;\n      uVar9 = 0xb - uVar8;\n    }\n    else {\n      if ((int)pmVar10 < 2) {\n        uVar7 = 0;\n        goto LAB_00054c48;\n      }\n      iVar3 = iVar2 + -8;\n      uVar7 = *(uint *)(iVar2 + -8) << (uVar8 - 0xb & 0x1f);\n      pmVar10 = (mp_ptr)((int)pmVar10 + -1);\n      uVar9 = 0x2b - uVar8;\n      uVar12 = (uVar11 | *(uint *)(iVar2 + -8) >> (-uVar8 & 0x1f)) >> 0xb;\n    }\n  }" { (expression_statement "iVar16 = 0x20;" (assignment_expression "iVar16 = 0x20" identifier = number_literal) ;) (if_statement "if (0xff < uVar7) {\n      iVar16 = 0x18;\n    }" if (parenthesized_expression "(0xff < uVar7)" ( (binary_expression "0xff < uVar7" number_literal < identifier) )) (compound_statement "{\n      iVar16 = 0x18;\n    }" { (expression_statement "iVar16 = 0x18;" (assignment_expression "iVar16 = 0x18" identifier = number_literal) ;) })) (expression_statement "iVar3 = 9;" (assignment_expression "iVar3 = 9" identifier = number_literal) ;) (if_statement "if (0xff >= uVar7) {\n      iVar3 = 1;\n    }" if (parenthesized_expression "(0xff >= uVar7)" ( (binary_expression "0xff >= uVar7" number_literal >= identifier) )) (compound_statement "{\n      iVar3 = 1;\n    }" { (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) })) (expression_statement "uVar8 = iVar16 - (uint)*(byte *)(*(int *)(puVar19 + 0x4862c) + (uVar7 >> iVar3));" (assignment_expression "uVar8 = iVar16 - (uint)*(byte *)(*(int *)(puVar19 + 0x4862c) + (uVar7 >> iVar3))" identifier = (binary_expression "iVar16 - (uint)*(byte *)(*(int *)(puVar19 + 0x4862c) + (uVar7 >> iVar3))" identifier - (binary_expression "(uint)*(byte *)(*(int *)(puVar19 + 0x4862c) + (uVar7 >> iVar3))" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(*(int *)(puVar19 + 0x4862c) + (uVar7 >> iVar3))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar19 + 0x4862c) + (uVar7 >> iVar3))" ( (binary_expression "*(int *)(puVar19 + 0x4862c) + (uVar7 >> iVar3)" (pointer_expression "*(int *)(puVar19 + 0x4862c)" * (cast_expression "(int *)(puVar19 + 0x4862c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + 0x4862c)" ( (binary_expression "puVar19 + 0x4862c" identifier + number_literal) )))) + (parenthesized_expression "(uVar7 >> iVar3)" ( (binary_expression "uVar7 >> iVar3" identifier >> identifier) ))) )))))) ;) (expression_statement "iVar16 = uVar8 + 1;" (assignment_expression "iVar16 = uVar8 + 1" identifier = (binary_expression "uVar8 + 1" identifier + number_literal)) ;) (labeled_statement "joined_r0x00054cbc:\n    uVar11 = uVar7 << (uVar8 & 0x1f);" statement_identifier : (expression_statement "uVar11 = uVar7 << (uVar8 & 0x1f);" (assignment_expression "uVar11 = uVar7 << (uVar8 & 0x1f)" identifier = (binary_expression "uVar7 << (uVar8 & 0x1f)" identifier << (parenthesized_expression "(uVar8 & 0x1f)" ( (binary_expression "uVar8 & 0x1f" identifier & number_literal) )))) ;)) (expression_statement "uVar12 = uVar11 >> 0xb;" (assignment_expression "uVar12 = uVar11 >> 0xb" identifier = (binary_expression "uVar11 >> 0xb" identifier >> number_literal)) ;) (expression_statement "iVar16 = bits + (uVar15 - iVar16);" (assignment_expression "iVar16 = bits + (uVar15 - iVar16)" identifier = (binary_expression "bits + (uVar15 - iVar16)" identifier + (parenthesized_expression "(uVar15 - iVar16)" ( (binary_expression "uVar15 - iVar16" identifier - identifier) )))) ;) (if_statement "if ((int)uVar8 < 0xb) {\n      iVar3 = iVar2 + -4;\n      uVar7 = uVar11 << 0x15;\n      uVar9 = 0xb - uVar8;\n    }\n    else {\n      if ((int)pmVar10 < 2) {\n        uVar7 = 0;\n        goto LAB_00054c48;\n      }\n      iVar3 = iVar2 + -8;\n      uVar7 = *(uint *)(iVar2 + -8) << (uVar8 - 0xb & 0x1f);\n      pmVar10 = (mp_ptr)((int)pmVar10 + -1);\n      uVar9 = 0x2b - uVar8;\n      uVar12 = (uVar11 | *(uint *)(iVar2 + -8) >> (-uVar8 & 0x1f)) >> 0xb;\n    }" if (parenthesized_expression "((int)uVar8 < 0xb)" ( (binary_expression "(int)uVar8 < 0xb" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      iVar3 = iVar2 + -4;\n      uVar7 = uVar11 << 0x15;\n      uVar9 = 0xb - uVar8;\n    }" { (expression_statement "iVar3 = iVar2 + -4;" (assignment_expression "iVar3 = iVar2 + -4" identifier = (binary_expression "iVar2 + -4" identifier + number_literal)) ;) (expression_statement "uVar7 = uVar11 << 0x15;" (assignment_expression "uVar7 = uVar11 << 0x15" identifier = (binary_expression "uVar11 << 0x15" identifier << number_literal)) ;) (expression_statement "uVar9 = 0xb - uVar8;" (assignment_expression "uVar9 = 0xb - uVar8" identifier = (binary_expression "0xb - uVar8" number_literal - identifier)) ;) }) (else_clause "else {\n      if ((int)pmVar10 < 2) {\n        uVar7 = 0;\n        goto LAB_00054c48;\n      }\n      iVar3 = iVar2 + -8;\n      uVar7 = *(uint *)(iVar2 + -8) << (uVar8 - 0xb & 0x1f);\n      pmVar10 = (mp_ptr)((int)pmVar10 + -1);\n      uVar9 = 0x2b - uVar8;\n      uVar12 = (uVar11 | *(uint *)(iVar2 + -8) >> (-uVar8 & 0x1f)) >> 0xb;\n    }" else (compound_statement "{\n      if ((int)pmVar10 < 2) {\n        uVar7 = 0;\n        goto LAB_00054c48;\n      }\n      iVar3 = iVar2 + -8;\n      uVar7 = *(uint *)(iVar2 + -8) << (uVar8 - 0xb & 0x1f);\n      pmVar10 = (mp_ptr)((int)pmVar10 + -1);\n      uVar9 = 0x2b - uVar8;\n      uVar12 = (uVar11 | *(uint *)(iVar2 + -8) >> (-uVar8 & 0x1f)) >> 0xb;\n    }" { (if_statement "if ((int)pmVar10 < 2) {\n        uVar7 = 0;\n        goto LAB_00054c48;\n      }" if (parenthesized_expression "((int)pmVar10 < 2)" ( (binary_expression "(int)pmVar10 < 2" (cast_expression "(int)pmVar10" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        uVar7 = 0;\n        goto LAB_00054c48;\n      }" { (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00054c48;" goto statement_identifier ;) })) (expression_statement "iVar3 = iVar2 + -8;" (assignment_expression "iVar3 = iVar2 + -8" identifier = (binary_expression "iVar2 + -8" identifier + number_literal)) ;) (expression_statement "uVar7 = *(uint *)(iVar2 + -8) << (uVar8 - 0xb & 0x1f);" (assignment_expression "uVar7 = *(uint *)(iVar2 + -8) << (uVar8 - 0xb & 0x1f)" identifier = (binary_expression "*(uint *)(iVar2 + -8) << (uVar8 - 0xb & 0x1f)" (pointer_expression "*(uint *)(iVar2 + -8)" * (cast_expression "(uint *)(iVar2 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + -8)" ( (binary_expression "iVar2 + -8" identifier + number_literal) )))) << (parenthesized_expression "(uVar8 - 0xb & 0x1f)" ( (binary_expression "uVar8 - 0xb & 0x1f" (binary_expression "uVar8 - 0xb" identifier - number_literal) & number_literal) )))) ;) (expression_statement "pmVar10 = (mp_ptr)((int)pmVar10 + -1);" (assignment_expression "pmVar10 = (mp_ptr)((int)pmVar10 + -1)" identifier = (call_expression "(mp_ptr)((int)pmVar10 + -1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar10 + -1)" ( (binary_expression "(int)pmVar10 + -1" (cast_expression "(int)pmVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "uVar9 = 0x2b - uVar8;" (assignment_expression "uVar9 = 0x2b - uVar8" identifier = (binary_expression "0x2b - uVar8" number_literal - identifier)) ;) (expression_statement "uVar12 = (uVar11 | *(uint *)(iVar2 + -8) >> (-uVar8 & 0x1f)) >> 0xb;" (assignment_expression "uVar12 = (uVar11 | *(uint *)(iVar2 + -8) >> (-uVar8 & 0x1f)) >> 0xb" identifier = (binary_expression "(uVar11 | *(uint *)(iVar2 + -8) >> (-uVar8 & 0x1f)) >> 0xb" (parenthesized_expression "(uVar11 | *(uint *)(iVar2 + -8) >> (-uVar8 & 0x1f))" ( (binary_expression "uVar11 | *(uint *)(iVar2 + -8) >> (-uVar8 & 0x1f)" identifier | (binary_expression "*(uint *)(iVar2 + -8) >> (-uVar8 & 0x1f)" (pointer_expression "*(uint *)(iVar2 + -8)" * (cast_expression "(uint *)(iVar2 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + -8)" ( (binary_expression "iVar2 + -8" identifier + number_literal) )))) >> (parenthesized_expression "(-uVar8 & 0x1f)" ( (binary_expression "-uVar8 & 0x1f" (unary_expression "-uVar8" - identifier) & number_literal) )))) )) >> number_literal)) ;) }))) }) (else_clause "else {\n    if (uVar7 < 0x1000000) {\n      iVar16 = -(uint)*(byte *)(*(int *)(puVar19 + 0x4862c) + (uVar7 >> 0x11));\n      uVar8 = iVar16 + 0x10;\n      iVar16 = iVar16 + 0x11;\n      goto joined_r0x00054cbc;\n    }\n    iVar3 = iVar2 + -4;\n    iVar2 = -(uint)*(byte *)(*(int *)(puVar19 + 0x4862c) + (uVar7 >> 0x19));\n    uVar9 = iVar2 + 8;\n    uVar7 = uVar7 << (uVar9 & 0x1f);\n    uVar12 = uVar7 >> 0xb;\n    iVar16 = bits + (uVar15 - (iVar2 + 9));\n    uVar7 = uVar7 << 0x15;\n    uVar9 = 0xb - uVar9;\n  }" else (compound_statement "{\n    if (uVar7 < 0x1000000) {\n      iVar16 = -(uint)*(byte *)(*(int *)(puVar19 + 0x4862c) + (uVar7 >> 0x11));\n      uVar8 = iVar16 + 0x10;\n      iVar16 = iVar16 + 0x11;\n      goto joined_r0x00054cbc;\n    }\n    iVar3 = iVar2 + -4;\n    iVar2 = -(uint)*(byte *)(*(int *)(puVar19 + 0x4862c) + (uVar7 >> 0x19));\n    uVar9 = iVar2 + 8;\n    uVar7 = uVar7 << (uVar9 & 0x1f);\n    uVar12 = uVar7 >> 0xb;\n    iVar16 = bits + (uVar15 - (iVar2 + 9));\n    uVar7 = uVar7 << 0x15;\n    uVar9 = 0xb - uVar9;\n  }" { (if_statement "if (uVar7 < 0x1000000) {\n      iVar16 = -(uint)*(byte *)(*(int *)(puVar19 + 0x4862c) + (uVar7 >> 0x11));\n      uVar8 = iVar16 + 0x10;\n      iVar16 = iVar16 + 0x11;\n      goto joined_r0x00054cbc;\n    }" if (parenthesized_expression "(uVar7 < 0x1000000)" ( (binary_expression "uVar7 < 0x1000000" identifier < number_literal) )) (compound_statement "{\n      iVar16 = -(uint)*(byte *)(*(int *)(puVar19 + 0x4862c) + (uVar7 >> 0x11));\n      uVar8 = iVar16 + 0x10;\n      iVar16 = iVar16 + 0x11;\n      goto joined_r0x00054cbc;\n    }" { (expression_statement "iVar16 = -(uint)*(byte *)(*(int *)(puVar19 + 0x4862c) + (uVar7 >> 0x11));" (assignment_expression "iVar16 = -(uint)*(byte *)(*(int *)(puVar19 + 0x4862c) + (uVar7 >> 0x11))" identifier = (binary_expression "-(uint)*(byte *)(*(int *)(puVar19 + 0x4862c) + (uVar7 >> 0x11))" (unary_expression "-(uint)" - (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)(*(int *)(puVar19 + 0x4862c) + (uVar7 >> 0x11))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar19 + 0x4862c) + (uVar7 >> 0x11))" ( (binary_expression "*(int *)(puVar19 + 0x4862c) + (uVar7 >> 0x11)" (pointer_expression "*(int *)(puVar19 + 0x4862c)" * (cast_expression "(int *)(puVar19 + 0x4862c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + 0x4862c)" ( (binary_expression "puVar19 + 0x4862c" identifier + number_literal) )))) + (parenthesized_expression "(uVar7 >> 0x11)" ( (binary_expression "uVar7 >> 0x11" identifier >> number_literal) ))) ))))) ;) (expression_statement "uVar8 = iVar16 + 0x10;" (assignment_expression "uVar8 = iVar16 + 0x10" identifier = (binary_expression "iVar16 + 0x10" identifier + number_literal)) ;) (expression_statement "iVar16 = iVar16 + 0x11;" (assignment_expression "iVar16 = iVar16 + 0x11" identifier = (binary_expression "iVar16 + 0x11" identifier + number_literal)) ;) (goto_statement "goto joined_r0x00054cbc;" goto statement_identifier ;) })) (expression_statement "iVar3 = iVar2 + -4;" (assignment_expression "iVar3 = iVar2 + -4" identifier = (binary_expression "iVar2 + -4" identifier + number_literal)) ;) (expression_statement "iVar2 = -(uint)*(byte *)(*(int *)(puVar19 + 0x4862c) + (uVar7 >> 0x19));" (assignment_expression "iVar2 = -(uint)*(byte *)(*(int *)(puVar19 + 0x4862c) + (uVar7 >> 0x19))" identifier = (binary_expression "-(uint)*(byte *)(*(int *)(puVar19 + 0x4862c) + (uVar7 >> 0x19))" (unary_expression "-(uint)" - (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)(*(int *)(puVar19 + 0x4862c) + (uVar7 >> 0x19))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar19 + 0x4862c) + (uVar7 >> 0x19))" ( (binary_expression "*(int *)(puVar19 + 0x4862c) + (uVar7 >> 0x19)" (pointer_expression "*(int *)(puVar19 + 0x4862c)" * (cast_expression "(int *)(puVar19 + 0x4862c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + 0x4862c)" ( (binary_expression "puVar19 + 0x4862c" identifier + number_literal) )))) + (parenthesized_expression "(uVar7 >> 0x19)" ( (binary_expression "uVar7 >> 0x19" identifier >> number_literal) ))) ))))) ;) (expression_statement "uVar9 = iVar2 + 8;" (assignment_expression "uVar9 = iVar2 + 8" identifier = (binary_expression "iVar2 + 8" identifier + number_literal)) ;) (expression_statement "uVar7 = uVar7 << (uVar9 & 0x1f);" (assignment_expression "uVar7 = uVar7 << (uVar9 & 0x1f)" identifier = (binary_expression "uVar7 << (uVar9 & 0x1f)" identifier << (parenthesized_expression "(uVar9 & 0x1f)" ( (binary_expression "uVar9 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar12 = uVar7 >> 0xb;" (assignment_expression "uVar12 = uVar7 >> 0xb" identifier = (binary_expression "uVar7 >> 0xb" identifier >> number_literal)) ;) (expression_statement "iVar16 = bits + (uVar15 - (iVar2 + 9));" (assignment_expression "iVar16 = bits + (uVar15 - (iVar2 + 9))" identifier = (binary_expression "bits + (uVar15 - (iVar2 + 9))" identifier + (parenthesized_expression "(uVar15 - (iVar2 + 9))" ( (binary_expression "uVar15 - (iVar2 + 9)" identifier - (parenthesized_expression "(iVar2 + 9)" ( (binary_expression "iVar2 + 9" identifier + number_literal) ))) )))) ;) (expression_statement "uVar7 = uVar7 << 0x15;" (assignment_expression "uVar7 = uVar7 << 0x15" identifier = (binary_expression "uVar7 << 0x15" identifier << number_literal)) ;) (expression_statement "uVar9 = 0xb - uVar9;" (assignment_expression "uVar9 = 0xb - uVar9" identifier = (binary_expression "0xb - uVar9" number_literal - identifier)) ;) }))) (if_statement "if (((int)uVar9 < 0x20) && (1 < (int)pmVar10)) {\n    uVar7 = uVar7 | *(uint *)(iVar3 + -4) >> (uVar9 & 0x1f);\n  }" if (parenthesized_expression "(((int)uVar9 < 0x20) && (1 < (int)pmVar10))" ( (binary_expression "((int)uVar9 < 0x20) && (1 < (int)pmVar10)" (parenthesized_expression "((int)uVar9 < 0x20)" ( (binary_expression "(int)uVar9 < 0x20" (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) && (parenthesized_expression "(1 < (int)pmVar10)" ( (binary_expression "1 < (int)pmVar10" number_literal < (cast_expression "(int)pmVar10" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n    uVar7 = uVar7 | *(uint *)(iVar3 + -4) >> (uVar9 & 0x1f);\n  }" { (expression_statement "uVar7 = uVar7 | *(uint *)(iVar3 + -4) >> (uVar9 & 0x1f);" (assignment_expression "uVar7 = uVar7 | *(uint *)(iVar3 + -4) >> (uVar9 & 0x1f)" identifier = (binary_expression "uVar7 | *(uint *)(iVar3 + -4) >> (uVar9 & 0x1f)" identifier | (binary_expression "*(uint *)(iVar3 + -4) >> (uVar9 & 0x1f)" (pointer_expression "*(uint *)(iVar3 + -4)" * (cast_expression "(uint *)(iVar3 + -4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + -4)" ( (binary_expression "iVar3 + -4" identifier + number_literal) )))) >> (parenthesized_expression "(uVar9 & 0x1f)" ( (binary_expression "uVar9 & 0x1f" identifier & number_literal) ))))) ;) })) (labeled_statement "LAB_00054c48:\n  if (0x3ff < iVar16) {\n    return 0;\n  }" statement_identifier : (if_statement "if (0x3ff < iVar16) {\n    return 0;\n  }" if (parenthesized_expression "(0x3ff < iVar16)" ( (binary_expression "0x3ff < iVar16" number_literal < identifier) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) }))) (if_statement "if (iVar16 < -0x3fe) {\n    if (iVar16 < -0x432) {\n      return uVar7;\n    }\n    if ((int)(-iVar16 - 0x3feU) < 0x20) {\n      uVar15 = iVar16 + 0x41e;\n      uVar7 = uVar7 >> (-iVar16 - 0x3feU & 0x1f);\n    }\n    else {\n      uVar7 = uVar12 >> (-iVar16 - 0x41eU & 0x1f);\n      if (-iVar16 - 0x41eU == 0) {\n        return uVar7;\n      }\n      uVar15 = iVar16 + 0x43e;\n      uVar12 = 0;\n    }\n    uVar7 = uVar7 | uVar12 << (uVar15 & 0x1f);\n  }" if (parenthesized_expression "(iVar16 < -0x3fe)" ( (binary_expression "iVar16 < -0x3fe" identifier < number_literal) )) (compound_statement "{\n    if (iVar16 < -0x432) {\n      return uVar7;\n    }\n    if ((int)(-iVar16 - 0x3feU) < 0x20) {\n      uVar15 = iVar16 + 0x41e;\n      uVar7 = uVar7 >> (-iVar16 - 0x3feU & 0x1f);\n    }\n    else {\n      uVar7 = uVar12 >> (-iVar16 - 0x41eU & 0x1f);\n      if (-iVar16 - 0x41eU == 0) {\n        return uVar7;\n      }\n      uVar15 = iVar16 + 0x43e;\n      uVar12 = 0;\n    }\n    uVar7 = uVar7 | uVar12 << (uVar15 & 0x1f);\n  }" { (if_statement "if (iVar16 < -0x432) {\n      return uVar7;\n    }" if (parenthesized_expression "(iVar16 < -0x432)" ( (binary_expression "iVar16 < -0x432" identifier < number_literal) )) (compound_statement "{\n      return uVar7;\n    }" { (return_statement "return uVar7;" return identifier ;) })) (if_statement "if ((int)(-iVar16 - 0x3feU) < 0x20) {\n      uVar15 = iVar16 + 0x41e;\n      uVar7 = uVar7 >> (-iVar16 - 0x3feU & 0x1f);\n    }\n    else {\n      uVar7 = uVar12 >> (-iVar16 - 0x41eU & 0x1f);\n      if (-iVar16 - 0x41eU == 0) {\n        return uVar7;\n      }\n      uVar15 = iVar16 + 0x43e;\n      uVar12 = 0;\n    }" if (parenthesized_expression "((int)(-iVar16 - 0x3feU) < 0x20)" ( (binary_expression "(int)(-iVar16 - 0x3feU) < 0x20" (cast_expression "(int)(-iVar16 - 0x3feU)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(-iVar16 - 0x3feU)" ( (binary_expression "-iVar16 - 0x3feU" (unary_expression "-iVar16" - identifier) - number_literal) ))) < number_literal) )) (compound_statement "{\n      uVar15 = iVar16 + 0x41e;\n      uVar7 = uVar7 >> (-iVar16 - 0x3feU & 0x1f);\n    }" { (expression_statement "uVar15 = iVar16 + 0x41e;" (assignment_expression "uVar15 = iVar16 + 0x41e" identifier = (binary_expression "iVar16 + 0x41e" identifier + number_literal)) ;) (expression_statement "uVar7 = uVar7 >> (-iVar16 - 0x3feU & 0x1f);" (assignment_expression "uVar7 = uVar7 >> (-iVar16 - 0x3feU & 0x1f)" identifier = (binary_expression "uVar7 >> (-iVar16 - 0x3feU & 0x1f)" identifier >> (parenthesized_expression "(-iVar16 - 0x3feU & 0x1f)" ( (binary_expression "-iVar16 - 0x3feU & 0x1f" (binary_expression "-iVar16 - 0x3feU" (unary_expression "-iVar16" - identifier) - number_literal) & number_literal) )))) ;) }) (else_clause "else {\n      uVar7 = uVar12 >> (-iVar16 - 0x41eU & 0x1f);\n      if (-iVar16 - 0x41eU == 0) {\n        return uVar7;\n      }\n      uVar15 = iVar16 + 0x43e;\n      uVar12 = 0;\n    }" else (compound_statement "{\n      uVar7 = uVar12 >> (-iVar16 - 0x41eU & 0x1f);\n      if (-iVar16 - 0x41eU == 0) {\n        return uVar7;\n      }\n      uVar15 = iVar16 + 0x43e;\n      uVar12 = 0;\n    }" { (expression_statement "uVar7 = uVar12 >> (-iVar16 - 0x41eU & 0x1f);" (assignment_expression "uVar7 = uVar12 >> (-iVar16 - 0x41eU & 0x1f)" identifier = (binary_expression "uVar12 >> (-iVar16 - 0x41eU & 0x1f)" identifier >> (parenthesized_expression "(-iVar16 - 0x41eU & 0x1f)" ( (binary_expression "-iVar16 - 0x41eU & 0x1f" (binary_expression "-iVar16 - 0x41eU" (unary_expression "-iVar16" - identifier) - number_literal) & number_literal) )))) ;) (if_statement "if (-iVar16 - 0x41eU == 0) {\n        return uVar7;\n      }" if (parenthesized_expression "(-iVar16 - 0x41eU == 0)" ( (binary_expression "-iVar16 - 0x41eU == 0" (binary_expression "-iVar16 - 0x41eU" (unary_expression "-iVar16" - identifier) - number_literal) == number_literal) )) (compound_statement "{\n        return uVar7;\n      }" { (return_statement "return uVar7;" return identifier ;) })) (expression_statement "uVar15 = iVar16 + 0x43e;" (assignment_expression "uVar15 = iVar16 + 0x43e" identifier = (binary_expression "iVar16 + 0x43e" identifier + number_literal)) ;) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) }))) (expression_statement "uVar7 = uVar7 | uVar12 << (uVar15 & 0x1f);" (assignment_expression "uVar7 = uVar7 | uVar12 << (uVar15 & 0x1f)" identifier = (binary_expression "uVar7 | uVar12 << (uVar15 & 0x1f)" identifier | (binary_expression "uVar12 << (uVar15 & 0x1f)" identifier << (parenthesized_expression "(uVar15 & 0x1f)" ( (binary_expression "uVar15 & 0x1f" identifier & number_literal) ))))) ;) })) (return_statement "return uVar7;" return identifier ;) })))
(translation_unit "uint __gmpn_jacobi_n(int *param_1,int *param_2,int param_3,int *param_4)\n\n{\n  bool bVar1;\n  int iVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  int *piVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  int *piVar9;\n  uint uVar10;\n  uint uVar11;\n  int *piVar12;\n  uint uVar13;\n  int iVar14;\n  int *piVar15;\n  int iVar16;\n  undefined *puVar17;\n  undefined1 *puVar18;\n  int *local_resc;\n  undefined1 auStack_80 [32];\n  int local_48;\n  undefined1 auStack_44 [24];\n  int local_2c;\n  \n  puVar17 = PTR___stack_chk_guard_0009d540;\n  puVar18 = auStack_80;\n  local_2c = *(int *)PTR___stack_chk_guard_0009d540;\n  local_resc = param_4;\n  if (param_3 < 1000) {\n    uVar13 = param_3 << 2;\n    local_48 = 0;\n    if (uVar13 < 0x7f01) goto LAB_0005471c;\nLAB_00054ab8:\n    local_48 = 0;\n    piVar5 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_48);\n  }\n  else {\n    uVar13 = (uint)(param_3 << 1) / 3;\n    iVar16 = param_3 - uVar13;\n    iVar2 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)(iVar16);\n    iVar14 = param_3 + uVar13 + -1;\n    if (iVar14 < iVar2) {\n      iVar14 = iVar2;\n    }\n    iVar14 = ((iVar16 + 1) / 2 + 1) * 4 + iVar14;\n    if (iVar14 < param_3) {\n      iVar14 = param_3;\n    }\n    uVar13 = iVar14 << 2;\n    local_48 = 0;\n    if (0x7f00 < uVar13) goto LAB_00054ab8;\nLAB_0005471c:\n    local_48 = 0;\n    iVar14 = -(uVar13 + 7 & 0xfffffff8);\n    puVar18 = auStack_80 + iVar14;\n    piVar5 = (int *)(auStack_44 + iVar14 + -0x1c);\n  }\n  if (param_3 < 1000) {\n    bVar1 = param_3 < 3;\n  }\n  else {\n    puVar3 = PTR_LAB_0009d07c + 0x45d0;\n    do {\n      uVar13 = (uint)(param_3 << 1) / 3;\n      iVar14 = param_3 - uVar13;\n      (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar14,piVar5);\n      *(int ***)(puVar18 + 0x10) = &local_resc;\n      *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n      iVar2 = (*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)\n                        (param_1 + uVar13,param_2 + uVar13,iVar14,auStack_44);\n      if (iVar2 < 1) {\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar5;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar3;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_1,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n      }\n      else {\n        *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n        *(uint *)(puVar18 + 0x10) = uVar13;\n        param_4 = param_2;\n        param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                            (auStack_44,uVar13 + iVar2,param_1);\n      }\n      bVar1 = param_3 < 3;\n    } while (999 < param_3);\n  }\n  puVar3 = PTR___gmpn_clz_tab_0009d18c;\n  if (!bVar1) {\n    puVar4 = PTR_LAB_0009d07c + 0x45d0;\n    piVar12 = param_1;\n    do {\n      while( true ) {\n        piVar15 = piVar5;\n        uVar13 = piVar12[param_3 + 0x3fffffff];\n        uVar7 = param_2[param_3 + 0x3fffffff];\n        uVar8 = uVar13 | uVar7;\n        uVar11 = param_2[param_3 + 0x3ffffffe];\n        uVar6 = piVar12[param_3 + 0x3ffffffe];\n        if (-1 < (int)uVar8) {\n          if (uVar8 < 0x10000) {\n            iVar14 = 0;\n            if (0xff < uVar8) {\n              iVar14 = 0x18;\n            }\n            iVar2 = 9;\n            if (0xff >= uVar8) {\n              iVar2 = 1;\n            }\n          }\n          else {\n            iVar14 = 0x10;\n            if (0xffffff < uVar8) {\n              iVar14 = 8;\n            }\n            iVar2 = 0x19;\n            if (0xffffff >= uVar8) {\n              iVar2 = 0x11;\n            }\n          }\n          uVar8 = iVar14 - (uint)(byte)puVar3[uVar8 >> iVar2];\n          uVar10 = 0x20 - uVar8;\n          uVar13 = uVar13 << (uVar8 & 0x1f) | uVar6 >> (uVar10 & 0x1f);\n          uVar6 = (uint)piVar12[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar6 << (uVar8 & 0x1f);\n          uVar7 = uVar7 << (uVar8 & 0x1f) | uVar11 >> (uVar10 & 0x1f);\n          uVar11 = (uint)param_2[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar11 << (uVar8 & 0x1f)\n          ;\n        }\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined1 **)(puVar18 + 0x10) = auStack_44;\n        iVar14 = (*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar13,uVar6,uVar7,uVar11);\n        if (iVar14 != 0) break;\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar15;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar4;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(piVar12,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n        param_1 = piVar12;\n        piVar5 = piVar15;\n        if (param_3 < 3) goto LAB_00054a30;\n      }\n      *(int *)(puVar18 + 0x10) = param_3;\n      param_4 = param_2;\n      param_3 = (*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488)\n                          (auStack_44,piVar15,piVar12);\n      param_1 = piVar15;\n      piVar5 = piVar12;\n      piVar12 = piVar15;\n    } while (2 < param_3);\n  }\nLAB_00054a30:\n  piVar5 = param_1;\n  piVar9 = param_2;\n  if ((int *)0xf < local_resc) {\n    piVar5 = param_2;\n    piVar9 = param_1;\n  }\n  if (param_3 == 1) {\n    iVar14 = *piVar5;\n    piVar9 = (int *)*piVar9;\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n    if (piVar9 == (int *)0x1) {\n      uVar13 = ((uint)local_resc & 1) * -2 + 1;\n    }\n    else {\n      uVar13 = (*(code *)PTR___gmpn_jacobi_base_0009d408)(iVar14,piVar9,(int)local_resc << 1);\n    }\n  }\n  else {\n    uVar13 = (*(code *)PTR___gmpn_jacobi_2_0009d324)(piVar5,piVar9,(uint)local_resc & 1);\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n  }\n  goto LAB_0005486c;\nLAB_00054840:\n  if (local_48 != 0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n  }\n  if (local_resc == (int *)0x1f) {\n    uVar13 = 0;\n  }\n  else {\n    uVar13 = ((uint)local_resc & 1) * -2 + 1;\n  }\nLAB_0005486c:\n  if (local_2c == *(int *)puVar17) {\n    return uVar13;\n  }\n  puVar17 = PTR___stack_chk_fail_0009d4d0;\n  (*(code *)PTR___stack_chk_fail_0009d4d0)();\n  if (piVar9 == (int *)0x0) {\n    return 0x7fff0000;\n  }\n  uVar13 = (int)piVar9 * 0x20;\n  if (0x7fffffffU - (int)param_4 < uVar13) {\n    return 0;\n  }\n  local_2c = local_2c + (int)piVar9 * 4;\n  uVar6 = *(uint *)(local_2c + -4);\n  if (uVar6 < 0x10000) {\n    iVar14 = 0x20;\n    if (0xff < uVar6) {\n      iVar14 = 0x18;\n    }\n    iVar2 = 9;\n    if (0xff >= uVar6) {\n      iVar2 = 1;\n    }\n    uVar7 = iVar14 - (uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> iVar2));\n    iVar14 = uVar7 + 1;\njoined_r0x00054cbc:\n    uVar10 = uVar6 << (uVar7 & 0x1f);\n    uVar11 = uVar10 >> 0xb;\n    iVar14 = (int)param_4 + (uVar13 - iVar14);\n    if ((int)uVar7 < 0xb) {\n      iVar2 = local_2c + -4;\n      uVar6 = uVar10 << 0x15;\n      uVar8 = 0xb - uVar7;\n    }\n    else {\n      if ((int)piVar9 < 2) {\n        uVar6 = 0;\n        goto LAB_00054c48;\n      }\n      iVar2 = local_2c + -8;\n      uVar6 = *(uint *)(local_2c + -8) << (uVar7 - 0xb & 0x1f);\n      piVar9 = (int *)((int)piVar9 + -1);\n      uVar8 = 0x2b - uVar7;\n      uVar11 = (uVar10 | *(uint *)(local_2c + -8) >> (-uVar7 & 0x1f)) >> 0xb;\n    }\n  }\n  else {\n    if (uVar6 < 0x1000000) {\n      iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x11));\n      uVar7 = iVar14 + 0x10;\n      iVar14 = iVar14 + 0x11;\n      goto joined_r0x00054cbc;\n    }\n    iVar2 = local_2c + -4;\n    iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x19));\n    uVar8 = iVar14 + 8;\n    uVar6 = uVar6 << (uVar8 & 0x1f);\n    uVar11 = uVar6 >> 0xb;\n    iVar14 = (int)param_4 + (uVar13 - (iVar14 + 9));\n    uVar6 = uVar6 << 0x15;\n    uVar8 = 0xb - uVar8;\n  }\n  if (((int)uVar8 < 0x20) && (1 < (int)piVar9)) {\n    uVar6 = uVar6 | *(uint *)(iVar2 + -4) >> (uVar8 & 0x1f);\n  }\nLAB_00054c48:\n  if (0x3ff < iVar14) {\n    return 0;\n  }\n  if (iVar14 < -0x3fe) {\n    if (iVar14 < -0x432) {\n      return uVar6;\n    }\n    if ((int)(-iVar14 - 0x3feU) < 0x20) {\n      uVar13 = iVar14 + 0x41e;\n      uVar6 = uVar6 >> (-iVar14 - 0x3feU & 0x1f);\n    }\n    else {\n      uVar6 = uVar11 >> (-iVar14 - 0x41eU & 0x1f);\n      if (-iVar14 - 0x41eU == 0) {\n        return uVar6;\n      }\n      uVar13 = iVar14 + 0x43e;\n      uVar11 = 0;\n    }\n    uVar6 = uVar6 | uVar11 << (uVar13 & 0x1f);\n  }\n  return uVar6;\n}\n\n" (function_definition "uint __gmpn_jacobi_n(int *param_1,int *param_2,int param_3,int *param_4)\n\n{\n  bool bVar1;\n  int iVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  int *piVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  int *piVar9;\n  uint uVar10;\n  uint uVar11;\n  int *piVar12;\n  uint uVar13;\n  int iVar14;\n  int *piVar15;\n  int iVar16;\n  undefined *puVar17;\n  undefined1 *puVar18;\n  int *local_resc;\n  undefined1 auStack_80 [32];\n  int local_48;\n  undefined1 auStack_44 [24];\n  int local_2c;\n  \n  puVar17 = PTR___stack_chk_guard_0009d540;\n  puVar18 = auStack_80;\n  local_2c = *(int *)PTR___stack_chk_guard_0009d540;\n  local_resc = param_4;\n  if (param_3 < 1000) {\n    uVar13 = param_3 << 2;\n    local_48 = 0;\n    if (uVar13 < 0x7f01) goto LAB_0005471c;\nLAB_00054ab8:\n    local_48 = 0;\n    piVar5 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_48);\n  }\n  else {\n    uVar13 = (uint)(param_3 << 1) / 3;\n    iVar16 = param_3 - uVar13;\n    iVar2 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)(iVar16);\n    iVar14 = param_3 + uVar13 + -1;\n    if (iVar14 < iVar2) {\n      iVar14 = iVar2;\n    }\n    iVar14 = ((iVar16 + 1) / 2 + 1) * 4 + iVar14;\n    if (iVar14 < param_3) {\n      iVar14 = param_3;\n    }\n    uVar13 = iVar14 << 2;\n    local_48 = 0;\n    if (0x7f00 < uVar13) goto LAB_00054ab8;\nLAB_0005471c:\n    local_48 = 0;\n    iVar14 = -(uVar13 + 7 & 0xfffffff8);\n    puVar18 = auStack_80 + iVar14;\n    piVar5 = (int *)(auStack_44 + iVar14 + -0x1c);\n  }\n  if (param_3 < 1000) {\n    bVar1 = param_3 < 3;\n  }\n  else {\n    puVar3 = PTR_LAB_0009d07c + 0x45d0;\n    do {\n      uVar13 = (uint)(param_3 << 1) / 3;\n      iVar14 = param_3 - uVar13;\n      (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar14,piVar5);\n      *(int ***)(puVar18 + 0x10) = &local_resc;\n      *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n      iVar2 = (*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)\n                        (param_1 + uVar13,param_2 + uVar13,iVar14,auStack_44);\n      if (iVar2 < 1) {\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar5;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar3;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_1,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n      }\n      else {\n        *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n        *(uint *)(puVar18 + 0x10) = uVar13;\n        param_4 = param_2;\n        param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                            (auStack_44,uVar13 + iVar2,param_1);\n      }\n      bVar1 = param_3 < 3;\n    } while (999 < param_3);\n  }\n  puVar3 = PTR___gmpn_clz_tab_0009d18c;\n  if (!bVar1) {\n    puVar4 = PTR_LAB_0009d07c + 0x45d0;\n    piVar12 = param_1;\n    do {\n      while( true ) {\n        piVar15 = piVar5;\n        uVar13 = piVar12[param_3 + 0x3fffffff];\n        uVar7 = param_2[param_3 + 0x3fffffff];\n        uVar8 = uVar13 | uVar7;\n        uVar11 = param_2[param_3 + 0x3ffffffe];\n        uVar6 = piVar12[param_3 + 0x3ffffffe];\n        if (-1 < (int)uVar8) {\n          if (uVar8 < 0x10000) {\n            iVar14 = 0;\n            if (0xff < uVar8) {\n              iVar14 = 0x18;\n            }\n            iVar2 = 9;\n            if (0xff >= uVar8) {\n              iVar2 = 1;\n            }\n          }\n          else {\n            iVar14 = 0x10;\n            if (0xffffff < uVar8) {\n              iVar14 = 8;\n            }\n            iVar2 = 0x19;\n            if (0xffffff >= uVar8) {\n              iVar2 = 0x11;\n            }\n          }\n          uVar8 = iVar14 - (uint)(byte)puVar3[uVar8 >> iVar2];\n          uVar10 = 0x20 - uVar8;\n          uVar13 = uVar13 << (uVar8 & 0x1f) | uVar6 >> (uVar10 & 0x1f);\n          uVar6 = (uint)piVar12[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar6 << (uVar8 & 0x1f);\n          uVar7 = uVar7 << (uVar8 & 0x1f) | uVar11 >> (uVar10 & 0x1f);\n          uVar11 = (uint)param_2[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar11 << (uVar8 & 0x1f)\n          ;\n        }\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined1 **)(puVar18 + 0x10) = auStack_44;\n        iVar14 = (*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar13,uVar6,uVar7,uVar11);\n        if (iVar14 != 0) break;\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar15;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar4;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(piVar12,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n        param_1 = piVar12;\n        piVar5 = piVar15;\n        if (param_3 < 3) goto LAB_00054a30;\n      }\n      *(int *)(puVar18 + 0x10) = param_3;\n      param_4 = param_2;\n      param_3 = (*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488)\n                          (auStack_44,piVar15,piVar12);\n      param_1 = piVar15;\n      piVar5 = piVar12;\n      piVar12 = piVar15;\n    } while (2 < param_3);\n  }\nLAB_00054a30:\n  piVar5 = param_1;\n  piVar9 = param_2;\n  if ((int *)0xf < local_resc) {\n    piVar5 = param_2;\n    piVar9 = param_1;\n  }\n  if (param_3 == 1) {\n    iVar14 = *piVar5;\n    piVar9 = (int *)*piVar9;\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n    if (piVar9 == (int *)0x1) {\n      uVar13 = ((uint)local_resc & 1) * -2 + 1;\n    }\n    else {\n      uVar13 = (*(code *)PTR___gmpn_jacobi_base_0009d408)(iVar14,piVar9,(int)local_resc << 1);\n    }\n  }\n  else {\n    uVar13 = (*(code *)PTR___gmpn_jacobi_2_0009d324)(piVar5,piVar9,(uint)local_resc & 1);\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n  }\n  goto LAB_0005486c;\nLAB_00054840:\n  if (local_48 != 0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n  }\n  if (local_resc == (int *)0x1f) {\n    uVar13 = 0;\n  }\n  else {\n    uVar13 = ((uint)local_resc & 1) * -2 + 1;\n  }\nLAB_0005486c:\n  if (local_2c == *(int *)puVar17) {\n    return uVar13;\n  }\n  puVar17 = PTR___stack_chk_fail_0009d4d0;\n  (*(code *)PTR___stack_chk_fail_0009d4d0)();\n  if (piVar9 == (int *)0x0) {\n    return 0x7fff0000;\n  }\n  uVar13 = (int)piVar9 * 0x20;\n  if (0x7fffffffU - (int)param_4 < uVar13) {\n    return 0;\n  }\n  local_2c = local_2c + (int)piVar9 * 4;\n  uVar6 = *(uint *)(local_2c + -4);\n  if (uVar6 < 0x10000) {\n    iVar14 = 0x20;\n    if (0xff < uVar6) {\n      iVar14 = 0x18;\n    }\n    iVar2 = 9;\n    if (0xff >= uVar6) {\n      iVar2 = 1;\n    }\n    uVar7 = iVar14 - (uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> iVar2));\n    iVar14 = uVar7 + 1;\njoined_r0x00054cbc:\n    uVar10 = uVar6 << (uVar7 & 0x1f);\n    uVar11 = uVar10 >> 0xb;\n    iVar14 = (int)param_4 + (uVar13 - iVar14);\n    if ((int)uVar7 < 0xb) {\n      iVar2 = local_2c + -4;\n      uVar6 = uVar10 << 0x15;\n      uVar8 = 0xb - uVar7;\n    }\n    else {\n      if ((int)piVar9 < 2) {\n        uVar6 = 0;\n        goto LAB_00054c48;\n      }\n      iVar2 = local_2c + -8;\n      uVar6 = *(uint *)(local_2c + -8) << (uVar7 - 0xb & 0x1f);\n      piVar9 = (int *)((int)piVar9 + -1);\n      uVar8 = 0x2b - uVar7;\n      uVar11 = (uVar10 | *(uint *)(local_2c + -8) >> (-uVar7 & 0x1f)) >> 0xb;\n    }\n  }\n  else {\n    if (uVar6 < 0x1000000) {\n      iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x11));\n      uVar7 = iVar14 + 0x10;\n      iVar14 = iVar14 + 0x11;\n      goto joined_r0x00054cbc;\n    }\n    iVar2 = local_2c + -4;\n    iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x19));\n    uVar8 = iVar14 + 8;\n    uVar6 = uVar6 << (uVar8 & 0x1f);\n    uVar11 = uVar6 >> 0xb;\n    iVar14 = (int)param_4 + (uVar13 - (iVar14 + 9));\n    uVar6 = uVar6 << 0x15;\n    uVar8 = 0xb - uVar8;\n  }\n  if (((int)uVar8 < 0x20) && (1 < (int)piVar9)) {\n    uVar6 = uVar6 | *(uint *)(iVar2 + -4) >> (uVar8 & 0x1f);\n  }\nLAB_00054c48:\n  if (0x3ff < iVar14) {\n    return 0;\n  }\n  if (iVar14 < -0x3fe) {\n    if (iVar14 < -0x432) {\n      return uVar6;\n    }\n    if ((int)(-iVar14 - 0x3feU) < 0x20) {\n      uVar13 = iVar14 + 0x41e;\n      uVar6 = uVar6 >> (-iVar14 - 0x3feU & 0x1f);\n    }\n    else {\n      uVar6 = uVar11 >> (-iVar14 - 0x41eU & 0x1f);\n      if (-iVar14 - 0x41eU == 0) {\n        return uVar6;\n      }\n      uVar13 = iVar14 + 0x43e;\n      uVar11 = 0;\n    }\n    uVar6 = uVar6 | uVar11 << (uVar13 & 0x1f);\n  }\n  return uVar6;\n}" type_identifier (function_declarator "__gmpn_jacobi_n(int *param_1,int *param_2,int param_3,int *param_4)" identifier (parameter_list "(int *param_1,int *param_2,int param_3,int *param_4)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  bool bVar1;\n  int iVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  int *piVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  int *piVar9;\n  uint uVar10;\n  uint uVar11;\n  int *piVar12;\n  uint uVar13;\n  int iVar14;\n  int *piVar15;\n  int iVar16;\n  undefined *puVar17;\n  undefined1 *puVar18;\n  int *local_resc;\n  undefined1 auStack_80 [32];\n  int local_48;\n  undefined1 auStack_44 [24];\n  int local_2c;\n  \n  puVar17 = PTR___stack_chk_guard_0009d540;\n  puVar18 = auStack_80;\n  local_2c = *(int *)PTR___stack_chk_guard_0009d540;\n  local_resc = param_4;\n  if (param_3 < 1000) {\n    uVar13 = param_3 << 2;\n    local_48 = 0;\n    if (uVar13 < 0x7f01) goto LAB_0005471c;\nLAB_00054ab8:\n    local_48 = 0;\n    piVar5 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_48);\n  }\n  else {\n    uVar13 = (uint)(param_3 << 1) / 3;\n    iVar16 = param_3 - uVar13;\n    iVar2 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)(iVar16);\n    iVar14 = param_3 + uVar13 + -1;\n    if (iVar14 < iVar2) {\n      iVar14 = iVar2;\n    }\n    iVar14 = ((iVar16 + 1) / 2 + 1) * 4 + iVar14;\n    if (iVar14 < param_3) {\n      iVar14 = param_3;\n    }\n    uVar13 = iVar14 << 2;\n    local_48 = 0;\n    if (0x7f00 < uVar13) goto LAB_00054ab8;\nLAB_0005471c:\n    local_48 = 0;\n    iVar14 = -(uVar13 + 7 & 0xfffffff8);\n    puVar18 = auStack_80 + iVar14;\n    piVar5 = (int *)(auStack_44 + iVar14 + -0x1c);\n  }\n  if (param_3 < 1000) {\n    bVar1 = param_3 < 3;\n  }\n  else {\n    puVar3 = PTR_LAB_0009d07c + 0x45d0;\n    do {\n      uVar13 = (uint)(param_3 << 1) / 3;\n      iVar14 = param_3 - uVar13;\n      (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar14,piVar5);\n      *(int ***)(puVar18 + 0x10) = &local_resc;\n      *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n      iVar2 = (*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)\n                        (param_1 + uVar13,param_2 + uVar13,iVar14,auStack_44);\n      if (iVar2 < 1) {\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar5;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar3;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_1,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n      }\n      else {\n        *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n        *(uint *)(puVar18 + 0x10) = uVar13;\n        param_4 = param_2;\n        param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                            (auStack_44,uVar13 + iVar2,param_1);\n      }\n      bVar1 = param_3 < 3;\n    } while (999 < param_3);\n  }\n  puVar3 = PTR___gmpn_clz_tab_0009d18c;\n  if (!bVar1) {\n    puVar4 = PTR_LAB_0009d07c + 0x45d0;\n    piVar12 = param_1;\n    do {\n      while( true ) {\n        piVar15 = piVar5;\n        uVar13 = piVar12[param_3 + 0x3fffffff];\n        uVar7 = param_2[param_3 + 0x3fffffff];\n        uVar8 = uVar13 | uVar7;\n        uVar11 = param_2[param_3 + 0x3ffffffe];\n        uVar6 = piVar12[param_3 + 0x3ffffffe];\n        if (-1 < (int)uVar8) {\n          if (uVar8 < 0x10000) {\n            iVar14 = 0;\n            if (0xff < uVar8) {\n              iVar14 = 0x18;\n            }\n            iVar2 = 9;\n            if (0xff >= uVar8) {\n              iVar2 = 1;\n            }\n          }\n          else {\n            iVar14 = 0x10;\n            if (0xffffff < uVar8) {\n              iVar14 = 8;\n            }\n            iVar2 = 0x19;\n            if (0xffffff >= uVar8) {\n              iVar2 = 0x11;\n            }\n          }\n          uVar8 = iVar14 - (uint)(byte)puVar3[uVar8 >> iVar2];\n          uVar10 = 0x20 - uVar8;\n          uVar13 = uVar13 << (uVar8 & 0x1f) | uVar6 >> (uVar10 & 0x1f);\n          uVar6 = (uint)piVar12[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar6 << (uVar8 & 0x1f);\n          uVar7 = uVar7 << (uVar8 & 0x1f) | uVar11 >> (uVar10 & 0x1f);\n          uVar11 = (uint)param_2[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar11 << (uVar8 & 0x1f)\n          ;\n        }\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined1 **)(puVar18 + 0x10) = auStack_44;\n        iVar14 = (*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar13,uVar6,uVar7,uVar11);\n        if (iVar14 != 0) break;\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar15;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar4;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(piVar12,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n        param_1 = piVar12;\n        piVar5 = piVar15;\n        if (param_3 < 3) goto LAB_00054a30;\n      }\n      *(int *)(puVar18 + 0x10) = param_3;\n      param_4 = param_2;\n      param_3 = (*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488)\n                          (auStack_44,piVar15,piVar12);\n      param_1 = piVar15;\n      piVar5 = piVar12;\n      piVar12 = piVar15;\n    } while (2 < param_3);\n  }\nLAB_00054a30:\n  piVar5 = param_1;\n  piVar9 = param_2;\n  if ((int *)0xf < local_resc) {\n    piVar5 = param_2;\n    piVar9 = param_1;\n  }\n  if (param_3 == 1) {\n    iVar14 = *piVar5;\n    piVar9 = (int *)*piVar9;\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n    if (piVar9 == (int *)0x1) {\n      uVar13 = ((uint)local_resc & 1) * -2 + 1;\n    }\n    else {\n      uVar13 = (*(code *)PTR___gmpn_jacobi_base_0009d408)(iVar14,piVar9,(int)local_resc << 1);\n    }\n  }\n  else {\n    uVar13 = (*(code *)PTR___gmpn_jacobi_2_0009d324)(piVar5,piVar9,(uint)local_resc & 1);\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n  }\n  goto LAB_0005486c;\nLAB_00054840:\n  if (local_48 != 0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n  }\n  if (local_resc == (int *)0x1f) {\n    uVar13 = 0;\n  }\n  else {\n    uVar13 = ((uint)local_resc & 1) * -2 + 1;\n  }\nLAB_0005486c:\n  if (local_2c == *(int *)puVar17) {\n    return uVar13;\n  }\n  puVar17 = PTR___stack_chk_fail_0009d4d0;\n  (*(code *)PTR___stack_chk_fail_0009d4d0)();\n  if (piVar9 == (int *)0x0) {\n    return 0x7fff0000;\n  }\n  uVar13 = (int)piVar9 * 0x20;\n  if (0x7fffffffU - (int)param_4 < uVar13) {\n    return 0;\n  }\n  local_2c = local_2c + (int)piVar9 * 4;\n  uVar6 = *(uint *)(local_2c + -4);\n  if (uVar6 < 0x10000) {\n    iVar14 = 0x20;\n    if (0xff < uVar6) {\n      iVar14 = 0x18;\n    }\n    iVar2 = 9;\n    if (0xff >= uVar6) {\n      iVar2 = 1;\n    }\n    uVar7 = iVar14 - (uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> iVar2));\n    iVar14 = uVar7 + 1;\njoined_r0x00054cbc:\n    uVar10 = uVar6 << (uVar7 & 0x1f);\n    uVar11 = uVar10 >> 0xb;\n    iVar14 = (int)param_4 + (uVar13 - iVar14);\n    if ((int)uVar7 < 0xb) {\n      iVar2 = local_2c + -4;\n      uVar6 = uVar10 << 0x15;\n      uVar8 = 0xb - uVar7;\n    }\n    else {\n      if ((int)piVar9 < 2) {\n        uVar6 = 0;\n        goto LAB_00054c48;\n      }\n      iVar2 = local_2c + -8;\n      uVar6 = *(uint *)(local_2c + -8) << (uVar7 - 0xb & 0x1f);\n      piVar9 = (int *)((int)piVar9 + -1);\n      uVar8 = 0x2b - uVar7;\n      uVar11 = (uVar10 | *(uint *)(local_2c + -8) >> (-uVar7 & 0x1f)) >> 0xb;\n    }\n  }\n  else {\n    if (uVar6 < 0x1000000) {\n      iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x11));\n      uVar7 = iVar14 + 0x10;\n      iVar14 = iVar14 + 0x11;\n      goto joined_r0x00054cbc;\n    }\n    iVar2 = local_2c + -4;\n    iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x19));\n    uVar8 = iVar14 + 8;\n    uVar6 = uVar6 << (uVar8 & 0x1f);\n    uVar11 = uVar6 >> 0xb;\n    iVar14 = (int)param_4 + (uVar13 - (iVar14 + 9));\n    uVar6 = uVar6 << 0x15;\n    uVar8 = 0xb - uVar8;\n  }\n  if (((int)uVar8 < 0x20) && (1 < (int)piVar9)) {\n    uVar6 = uVar6 | *(uint *)(iVar2 + -4) >> (uVar8 & 0x1f);\n  }\nLAB_00054c48:\n  if (0x3ff < iVar14) {\n    return 0;\n  }\n  if (iVar14 < -0x3fe) {\n    if (iVar14 < -0x432) {\n      return uVar6;\n    }\n    if ((int)(-iVar14 - 0x3feU) < 0x20) {\n      uVar13 = iVar14 + 0x41e;\n      uVar6 = uVar6 >> (-iVar14 - 0x3feU & 0x1f);\n    }\n    else {\n      uVar6 = uVar11 >> (-iVar14 - 0x41eU & 0x1f);\n      if (-iVar14 - 0x41eU == 0) {\n        return uVar6;\n      }\n      uVar13 = iVar14 + 0x43e;\n      uVar11 = 0;\n    }\n    uVar6 = uVar6 | uVar11 << (uVar13 & 0x1f);\n  }\n  return uVar6;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "int *piVar12;" primitive_type (pointer_declarator "*piVar12" * identifier) ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "int *piVar15;" primitive_type (pointer_declarator "*piVar15" * identifier) ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "undefined *puVar17;" type_identifier (pointer_declarator "*puVar17" * identifier) ;) (declaration "undefined1 *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "int *local_resc;" primitive_type (pointer_declarator "*local_resc" * identifier) ;) (declaration "undefined1 auStack_80 [32];" type_identifier (array_declarator "auStack_80 [32]" identifier [ number_literal ]) ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "undefined1 auStack_44 [24];" type_identifier (array_declarator "auStack_44 [24]" identifier [ number_literal ]) ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar17 = PTR___stack_chk_guard_0009d540;" (assignment_expression "puVar17 = PTR___stack_chk_guard_0009d540" identifier = identifier) ;) (expression_statement "puVar18 = auStack_80;" (assignment_expression "puVar18 = auStack_80" 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 "local_resc = param_4;" (assignment_expression "local_resc = param_4" identifier = identifier) ;) (if_statement "if (param_3 < 1000) {\n    uVar13 = param_3 << 2;\n    local_48 = 0;\n    if (uVar13 < 0x7f01) goto LAB_0005471c;\nLAB_00054ab8:\n    local_48 = 0;\n    piVar5 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_48);\n  }\n  else {\n    uVar13 = (uint)(param_3 << 1) / 3;\n    iVar16 = param_3 - uVar13;\n    iVar2 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)(iVar16);\n    iVar14 = param_3 + uVar13 + -1;\n    if (iVar14 < iVar2) {\n      iVar14 = iVar2;\n    }\n    iVar14 = ((iVar16 + 1) / 2 + 1) * 4 + iVar14;\n    if (iVar14 < param_3) {\n      iVar14 = param_3;\n    }\n    uVar13 = iVar14 << 2;\n    local_48 = 0;\n    if (0x7f00 < uVar13) goto LAB_00054ab8;\nLAB_0005471c:\n    local_48 = 0;\n    iVar14 = -(uVar13 + 7 & 0xfffffff8);\n    puVar18 = auStack_80 + iVar14;\n    piVar5 = (int *)(auStack_44 + iVar14 + -0x1c);\n  }" if (parenthesized_expression "(param_3 < 1000)" ( (binary_expression "param_3 < 1000" identifier < number_literal) )) (compound_statement "{\n    uVar13 = param_3 << 2;\n    local_48 = 0;\n    if (uVar13 < 0x7f01) goto LAB_0005471c;\nLAB_00054ab8:\n    local_48 = 0;\n    piVar5 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_48);\n  }" { (expression_statement "uVar13 = param_3 << 2;" (assignment_expression "uVar13 = param_3 << 2" identifier = (binary_expression "param_3 << 2" identifier << number_literal)) ;) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (if_statement "if (uVar13 < 0x7f01) goto LAB_0005471c;" if (parenthesized_expression "(uVar13 < 0x7f01)" ( (binary_expression "uVar13 < 0x7f01" identifier < number_literal) )) (goto_statement "goto LAB_0005471c;" goto statement_identifier ;)) (labeled_statement "LAB_00054ab8:\n    local_48 = 0;" statement_identifier : (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;)) (expression_statement "piVar5 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_48);" (assignment_expression "piVar5 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_48)" identifier = (cast_expression "(int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_48)" (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_48)" ( (pointer_expression "&local_48" & identifier) ))))) ;) }) (else_clause "else {\n    uVar13 = (uint)(param_3 << 1) / 3;\n    iVar16 = param_3 - uVar13;\n    iVar2 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)(iVar16);\n    iVar14 = param_3 + uVar13 + -1;\n    if (iVar14 < iVar2) {\n      iVar14 = iVar2;\n    }\n    iVar14 = ((iVar16 + 1) / 2 + 1) * 4 + iVar14;\n    if (iVar14 < param_3) {\n      iVar14 = param_3;\n    }\n    uVar13 = iVar14 << 2;\n    local_48 = 0;\n    if (0x7f00 < uVar13) goto LAB_00054ab8;\nLAB_0005471c:\n    local_48 = 0;\n    iVar14 = -(uVar13 + 7 & 0xfffffff8);\n    puVar18 = auStack_80 + iVar14;\n    piVar5 = (int *)(auStack_44 + iVar14 + -0x1c);\n  }" else (compound_statement "{\n    uVar13 = (uint)(param_3 << 1) / 3;\n    iVar16 = param_3 - uVar13;\n    iVar2 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)(iVar16);\n    iVar14 = param_3 + uVar13 + -1;\n    if (iVar14 < iVar2) {\n      iVar14 = iVar2;\n    }\n    iVar14 = ((iVar16 + 1) / 2 + 1) * 4 + iVar14;\n    if (iVar14 < param_3) {\n      iVar14 = param_3;\n    }\n    uVar13 = iVar14 << 2;\n    local_48 = 0;\n    if (0x7f00 < uVar13) goto LAB_00054ab8;\nLAB_0005471c:\n    local_48 = 0;\n    iVar14 = -(uVar13 + 7 & 0xfffffff8);\n    puVar18 = auStack_80 + iVar14;\n    piVar5 = (int *)(auStack_44 + iVar14 + -0x1c);\n  }" { (expression_statement "uVar13 = (uint)(param_3 << 1) / 3;" (assignment_expression "uVar13 = (uint)(param_3 << 1) / 3" identifier = (binary_expression "(uint)(param_3 << 1) / 3" (call_expression "(uint)(param_3 << 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_3 << 1)" ( (binary_expression "param_3 << 1" identifier << number_literal) ))) / number_literal)) ;) (expression_statement "iVar16 = param_3 - uVar13;" (assignment_expression "iVar16 = param_3 - uVar13" identifier = (binary_expression "param_3 - uVar13" identifier - identifier)) ;) (expression_statement "iVar2 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)(iVar16);" (assignment_expression "iVar2 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)(iVar16)" identifier = (call_expression "(*(code *)PTR___gmpn_hgcd_itch_0009d464)(iVar16)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_itch_0009d464)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_itch_0009d464" * (cast_expression "(code *)PTR___gmpn_hgcd_itch_0009d464" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar16)" ( identifier )))) ;) (expression_statement "iVar14 = param_3 + uVar13 + -1;" (assignment_expression "iVar14 = param_3 + uVar13 + -1" identifier = (binary_expression "param_3 + uVar13 + -1" (binary_expression "param_3 + uVar13" identifier + identifier) + number_literal)) ;) (if_statement "if (iVar14 < iVar2) {\n      iVar14 = iVar2;\n    }" if (parenthesized_expression "(iVar14 < iVar2)" ( (binary_expression "iVar14 < iVar2" identifier < identifier) )) (compound_statement "{\n      iVar14 = iVar2;\n    }" { (expression_statement "iVar14 = iVar2;" (assignment_expression "iVar14 = iVar2" identifier = identifier) ;) })) (expression_statement "iVar14 = ((iVar16 + 1) / 2 + 1) * 4 + iVar14;" (assignment_expression "iVar14 = ((iVar16 + 1) / 2 + 1) * 4 + iVar14" identifier = (binary_expression "((iVar16 + 1) / 2 + 1) * 4 + iVar14" (binary_expression "((iVar16 + 1) / 2 + 1) * 4" (parenthesized_expression "((iVar16 + 1) / 2 + 1)" ( (binary_expression "(iVar16 + 1) / 2 + 1" (binary_expression "(iVar16 + 1) / 2" (parenthesized_expression "(iVar16 + 1)" ( (binary_expression "iVar16 + 1" identifier + number_literal) )) / number_literal) + number_literal) )) * number_literal) + identifier)) ;) (if_statement "if (iVar14 < param_3) {\n      iVar14 = param_3;\n    }" if (parenthesized_expression "(iVar14 < param_3)" ( (binary_expression "iVar14 < param_3" identifier < identifier) )) (compound_statement "{\n      iVar14 = param_3;\n    }" { (expression_statement "iVar14 = param_3;" (assignment_expression "iVar14 = param_3" identifier = identifier) ;) })) (expression_statement "uVar13 = iVar14 << 2;" (assignment_expression "uVar13 = iVar14 << 2" identifier = (binary_expression "iVar14 << 2" identifier << number_literal)) ;) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (if_statement "if (0x7f00 < uVar13) goto LAB_00054ab8;" if (parenthesized_expression "(0x7f00 < uVar13)" ( (binary_expression "0x7f00 < uVar13" number_literal < identifier) )) (goto_statement "goto LAB_00054ab8;" goto statement_identifier ;)) (labeled_statement "LAB_0005471c:\n    local_48 = 0;" statement_identifier : (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;)) (expression_statement "iVar14 = -(uVar13 + 7 & 0xfffffff8);" (assignment_expression "iVar14 = -(uVar13 + 7 & 0xfffffff8)" identifier = (unary_expression "-(uVar13 + 7 & 0xfffffff8)" - (parenthesized_expression "(uVar13 + 7 & 0xfffffff8)" ( (binary_expression "uVar13 + 7 & 0xfffffff8" (binary_expression "uVar13 + 7" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar18 = auStack_80 + iVar14;" (assignment_expression "puVar18 = auStack_80 + iVar14" identifier = (binary_expression "auStack_80 + iVar14" identifier + identifier)) ;) (expression_statement "piVar5 = (int *)(auStack_44 + iVar14 + -0x1c);" (assignment_expression "piVar5 = (int *)(auStack_44 + iVar14 + -0x1c)" identifier = (cast_expression "(int *)(auStack_44 + iVar14 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auStack_44 + iVar14 + -0x1c)" ( (binary_expression "auStack_44 + iVar14 + -0x1c" (binary_expression "auStack_44 + iVar14" identifier + identifier) + number_literal) )))) ;) }))) (if_statement "if (param_3 < 1000) {\n    bVar1 = param_3 < 3;\n  }\n  else {\n    puVar3 = PTR_LAB_0009d07c + 0x45d0;\n    do {\n      uVar13 = (uint)(param_3 << 1) / 3;\n      iVar14 = param_3 - uVar13;\n      (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar14,piVar5);\n      *(int ***)(puVar18 + 0x10) = &local_resc;\n      *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n      iVar2 = (*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)\n                        (param_1 + uVar13,param_2 + uVar13,iVar14,auStack_44);\n      if (iVar2 < 1) {\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar5;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar3;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_1,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n      }\n      else {\n        *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n        *(uint *)(puVar18 + 0x10) = uVar13;\n        param_4 = param_2;\n        param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                            (auStack_44,uVar13 + iVar2,param_1);\n      }\n      bVar1 = param_3 < 3;\n    } while (999 < param_3);\n  }" if (parenthesized_expression "(param_3 < 1000)" ( (binary_expression "param_3 < 1000" identifier < number_literal) )) (compound_statement "{\n    bVar1 = param_3 < 3;\n  }" { (expression_statement "bVar1 = param_3 < 3;" (assignment_expression "bVar1 = param_3 < 3" identifier = (binary_expression "param_3 < 3" identifier < number_literal)) ;) }) (else_clause "else {\n    puVar3 = PTR_LAB_0009d07c + 0x45d0;\n    do {\n      uVar13 = (uint)(param_3 << 1) / 3;\n      iVar14 = param_3 - uVar13;\n      (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar14,piVar5);\n      *(int ***)(puVar18 + 0x10) = &local_resc;\n      *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n      iVar2 = (*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)\n                        (param_1 + uVar13,param_2 + uVar13,iVar14,auStack_44);\n      if (iVar2 < 1) {\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar5;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar3;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_1,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n      }\n      else {\n        *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n        *(uint *)(puVar18 + 0x10) = uVar13;\n        param_4 = param_2;\n        param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                            (auStack_44,uVar13 + iVar2,param_1);\n      }\n      bVar1 = param_3 < 3;\n    } while (999 < param_3);\n  }" else (compound_statement "{\n    puVar3 = PTR_LAB_0009d07c + 0x45d0;\n    do {\n      uVar13 = (uint)(param_3 << 1) / 3;\n      iVar14 = param_3 - uVar13;\n      (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar14,piVar5);\n      *(int ***)(puVar18 + 0x10) = &local_resc;\n      *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n      iVar2 = (*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)\n                        (param_1 + uVar13,param_2 + uVar13,iVar14,auStack_44);\n      if (iVar2 < 1) {\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar5;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar3;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_1,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n      }\n      else {\n        *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n        *(uint *)(puVar18 + 0x10) = uVar13;\n        param_4 = param_2;\n        param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                            (auStack_44,uVar13 + iVar2,param_1);\n      }\n      bVar1 = param_3 < 3;\n    } while (999 < param_3);\n  }" { (expression_statement "puVar3 = PTR_LAB_0009d07c + 0x45d0;" (assignment_expression "puVar3 = PTR_LAB_0009d07c + 0x45d0" identifier = (binary_expression "PTR_LAB_0009d07c + 0x45d0" identifier + number_literal)) ;) (do_statement "do {\n      uVar13 = (uint)(param_3 << 1) / 3;\n      iVar14 = param_3 - uVar13;\n      (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar14,piVar5);\n      *(int ***)(puVar18 + 0x10) = &local_resc;\n      *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n      iVar2 = (*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)\n                        (param_1 + uVar13,param_2 + uVar13,iVar14,auStack_44);\n      if (iVar2 < 1) {\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar5;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar3;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_1,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n      }\n      else {\n        *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n        *(uint *)(puVar18 + 0x10) = uVar13;\n        param_4 = param_2;\n        param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                            (auStack_44,uVar13 + iVar2,param_1);\n      }\n      bVar1 = param_3 < 3;\n    } while (999 < param_3);" do (compound_statement "{\n      uVar13 = (uint)(param_3 << 1) / 3;\n      iVar14 = param_3 - uVar13;\n      (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar14,piVar5);\n      *(int ***)(puVar18 + 0x10) = &local_resc;\n      *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n      iVar2 = (*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)\n                        (param_1 + uVar13,param_2 + uVar13,iVar14,auStack_44);\n      if (iVar2 < 1) {\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar5;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar3;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_1,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n      }\n      else {\n        *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n        *(uint *)(puVar18 + 0x10) = uVar13;\n        param_4 = param_2;\n        param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                            (auStack_44,uVar13 + iVar2,param_1);\n      }\n      bVar1 = param_3 < 3;\n    }" { (expression_statement "uVar13 = (uint)(param_3 << 1) / 3;" (assignment_expression "uVar13 = (uint)(param_3 << 1) / 3" identifier = (binary_expression "(uint)(param_3 << 1) / 3" (call_expression "(uint)(param_3 << 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_3 << 1)" ( (binary_expression "param_3 << 1" identifier << number_literal) ))) / number_literal)) ;) (expression_statement "iVar14 = param_3 - uVar13;" (assignment_expression "iVar14 = param_3 - uVar13" identifier = (binary_expression "param_3 - uVar13" identifier - identifier)) ;) (expression_statement "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar14,piVar5);" (call_expression "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar14,piVar5)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc" * (cast_expression "(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_44,iVar14,piVar5)" ( identifier , identifier , identifier ))) ;) (expression_statement "*(int ***)(puVar18 + 0x10) = &local_resc;" (assignment_expression "*(int ***)(puVar18 + 0x10) = &local_resc" (pointer_expression "*(int ***)(puVar18 + 0x10)" * (cast_expression "(int ***)(puVar18 + 0x10)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar18 + 0x10)" ( (binary_expression "puVar18 + 0x10" identifier + number_literal) )))) = (pointer_expression "&local_resc" & identifier)) ;) (expression_statement "*(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;" (assignment_expression "*(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4" (pointer_expression "*(int **)(puVar18 + 0x14)" * (cast_expression "(int **)(puVar18 + 0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x14)" ( (binary_expression "puVar18 + 0x14" identifier + number_literal) )))) = (binary_expression "piVar5 + ((iVar14 + 1) / 2 + 1) * 4" identifier + (binary_expression "((iVar14 + 1) / 2 + 1) * 4" (parenthesized_expression "((iVar14 + 1) / 2 + 1)" ( (binary_expression "(iVar14 + 1) / 2 + 1" (binary_expression "(iVar14 + 1) / 2" (parenthesized_expression "(iVar14 + 1)" ( (binary_expression "iVar14 + 1" identifier + number_literal) )) / number_literal) + number_literal) )) * number_literal))) ;) (expression_statement "iVar2 = (*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)\n                        (param_1 + uVar13,param_2 + uVar13,iVar14,auStack_44);" (assignment_expression "iVar2 = (*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)\n                        (param_1 + uVar13,param_2 + uVar13,iVar14,auStack_44)" identifier = (call_expression "(*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)\n                        (param_1 + uVar13,param_2 + uVar13,iVar14,auStack_44)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8" * (cast_expression "(code *)PTR___gmpn_hgcd_jacobi_0009d0e8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1 + uVar13,param_2 + uVar13,iVar14,auStack_44)" ( (binary_expression "param_1 + uVar13" identifier + identifier) , (binary_expression "param_2 + uVar13" identifier + identifier) , identifier , identifier )))) ;) (if_statement "if (iVar2 < 1) {\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar5;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar3;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_1,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n      }\n      else {\n        *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n        *(uint *)(puVar18 + 0x10) = uVar13;\n        param_4 = param_2;\n        param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                            (auStack_44,uVar13 + iVar2,param_1);\n      }" if (parenthesized_expression "(iVar2 < 1)" ( (binary_expression "iVar2 < 1" identifier < number_literal) )) (compound_statement "{\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar5;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar3;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_1,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n      }" { (expression_statement "param_4 = (int *)0x0;" (assignment_expression "param_4 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*(int **)(puVar18 + 0x18) = piVar5;" (assignment_expression "*(int **)(puVar18 + 0x18) = piVar5" (pointer_expression "*(int **)(puVar18 + 0x18)" * (cast_expression "(int **)(puVar18 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x18)" ( (binary_expression "puVar18 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int ***)(puVar18 + 0x14) = &local_resc;" (assignment_expression "*(int ***)(puVar18 + 0x14) = &local_resc" (pointer_expression "*(int ***)(puVar18 + 0x14)" * (cast_expression "(int ***)(puVar18 + 0x14)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar18 + 0x14)" ( (binary_expression "puVar18 + 0x14" identifier + number_literal) )))) = (pointer_expression "&local_resc" & identifier)) ;) (expression_statement "*(undefined **)(puVar18 + 0x10) = puVar3;" (assignment_expression "*(undefined **)(puVar18 + 0x10) = puVar3" (pointer_expression "*(undefined **)(puVar18 + 0x10)" * (cast_expression "(undefined **)(puVar18 + 0x10)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x10)" ( (binary_expression "puVar18 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar9 = param_2;" (assignment_expression "piVar9 = param_2" identifier = identifier) ;) (expression_statement "param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_1,param_2,param_3);" (assignment_expression "param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_1,param_2,param_3)" identifier = (call_expression "(*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_1,param_2,param_3)" (parenthesized_expression "(*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)" ( (pointer_expression "*(code *)PTR___gmpn_gcd_subdiv_step_0009d118" * (cast_expression "(code *)PTR___gmpn_gcd_subdiv_step_0009d118" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,param_2,param_3)" ( identifier , identifier , identifier )))) ;) (if_statement "if (param_3 == 0) goto LAB_00054840;" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00054840;" goto statement_identifier ;)) }) (else_clause "else {\n        *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n        *(uint *)(puVar18 + 0x10) = uVar13;\n        param_4 = param_2;\n        param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                            (auStack_44,uVar13 + iVar2,param_1);\n      }" else (compound_statement "{\n        *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n        *(uint *)(puVar18 + 0x10) = uVar13;\n        param_4 = param_2;\n        param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                            (auStack_44,uVar13 + iVar2,param_1);\n      }" { (expression_statement "*(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;" (assignment_expression "*(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4" (pointer_expression "*(int **)(puVar18 + 0x14)" * (cast_expression "(int **)(puVar18 + 0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x14)" ( (binary_expression "puVar18 + 0x14" identifier + number_literal) )))) = (binary_expression "piVar5 + ((iVar14 + 1) / 2 + 1) * 4" identifier + (binary_expression "((iVar14 + 1) / 2 + 1) * 4" (parenthesized_expression "((iVar14 + 1) / 2 + 1)" ( (binary_expression "(iVar14 + 1) / 2 + 1" (binary_expression "(iVar14 + 1) / 2" (parenthesized_expression "(iVar14 + 1)" ( (binary_expression "iVar14 + 1" identifier + number_literal) )) / number_literal) + number_literal) )) * number_literal))) ;) (expression_statement "*(uint *)(puVar18 + 0x10) = uVar13;" (assignment_expression "*(uint *)(puVar18 + 0x10) = uVar13" (pointer_expression "*(uint *)(puVar18 + 0x10)" * (cast_expression "(uint *)(puVar18 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar18 + 0x10)" ( (binary_expression "puVar18 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_4 = param_2;" (assignment_expression "param_4 = param_2" identifier = identifier) ;) (expression_statement "param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                            (auStack_44,uVar13 + iVar2,param_1);" (assignment_expression "param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                            (auStack_44,uVar13 + iVar2,param_1)" identifier = (call_expression "(*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                            (auStack_44,uVar13 + iVar2,param_1)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8" * (cast_expression "(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_44,uVar13 + iVar2,param_1)" ( identifier , (binary_expression "uVar13 + iVar2" identifier + identifier) , identifier )))) ;) }))) (expression_statement "bVar1 = param_3 < 3;" (assignment_expression "bVar1 = param_3 < 3" identifier = (binary_expression "param_3 < 3" identifier < number_literal)) ;) }) while (parenthesized_expression "(999 < param_3)" ( (binary_expression "999 < param_3" number_literal < identifier) )) ;) }))) (expression_statement "puVar3 = PTR___gmpn_clz_tab_0009d18c;" (assignment_expression "puVar3 = PTR___gmpn_clz_tab_0009d18c" identifier = identifier) ;) (if_statement "if (!bVar1) {\n    puVar4 = PTR_LAB_0009d07c + 0x45d0;\n    piVar12 = param_1;\n    do {\n      while( true ) {\n        piVar15 = piVar5;\n        uVar13 = piVar12[param_3 + 0x3fffffff];\n        uVar7 = param_2[param_3 + 0x3fffffff];\n        uVar8 = uVar13 | uVar7;\n        uVar11 = param_2[param_3 + 0x3ffffffe];\n        uVar6 = piVar12[param_3 + 0x3ffffffe];\n        if (-1 < (int)uVar8) {\n          if (uVar8 < 0x10000) {\n            iVar14 = 0;\n            if (0xff < uVar8) {\n              iVar14 = 0x18;\n            }\n            iVar2 = 9;\n            if (0xff >= uVar8) {\n              iVar2 = 1;\n            }\n          }\n          else {\n            iVar14 = 0x10;\n            if (0xffffff < uVar8) {\n              iVar14 = 8;\n            }\n            iVar2 = 0x19;\n            if (0xffffff >= uVar8) {\n              iVar2 = 0x11;\n            }\n          }\n          uVar8 = iVar14 - (uint)(byte)puVar3[uVar8 >> iVar2];\n          uVar10 = 0x20 - uVar8;\n          uVar13 = uVar13 << (uVar8 & 0x1f) | uVar6 >> (uVar10 & 0x1f);\n          uVar6 = (uint)piVar12[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar6 << (uVar8 & 0x1f);\n          uVar7 = uVar7 << (uVar8 & 0x1f) | uVar11 >> (uVar10 & 0x1f);\n          uVar11 = (uint)param_2[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar11 << (uVar8 & 0x1f)\n          ;\n        }\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined1 **)(puVar18 + 0x10) = auStack_44;\n        iVar14 = (*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar13,uVar6,uVar7,uVar11);\n        if (iVar14 != 0) break;\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar15;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar4;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(piVar12,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n        param_1 = piVar12;\n        piVar5 = piVar15;\n        if (param_3 < 3) goto LAB_00054a30;\n      }\n      *(int *)(puVar18 + 0x10) = param_3;\n      param_4 = param_2;\n      param_3 = (*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488)\n                          (auStack_44,piVar15,piVar12);\n      param_1 = piVar15;\n      piVar5 = piVar12;\n      piVar12 = piVar15;\n    } while (2 < param_3);\n  }" if (parenthesized_expression "(!bVar1)" ( (unary_expression "!bVar1" ! identifier) )) (compound_statement "{\n    puVar4 = PTR_LAB_0009d07c + 0x45d0;\n    piVar12 = param_1;\n    do {\n      while( true ) {\n        piVar15 = piVar5;\n        uVar13 = piVar12[param_3 + 0x3fffffff];\n        uVar7 = param_2[param_3 + 0x3fffffff];\n        uVar8 = uVar13 | uVar7;\n        uVar11 = param_2[param_3 + 0x3ffffffe];\n        uVar6 = piVar12[param_3 + 0x3ffffffe];\n        if (-1 < (int)uVar8) {\n          if (uVar8 < 0x10000) {\n            iVar14 = 0;\n            if (0xff < uVar8) {\n              iVar14 = 0x18;\n            }\n            iVar2 = 9;\n            if (0xff >= uVar8) {\n              iVar2 = 1;\n            }\n          }\n          else {\n            iVar14 = 0x10;\n            if (0xffffff < uVar8) {\n              iVar14 = 8;\n            }\n            iVar2 = 0x19;\n            if (0xffffff >= uVar8) {\n              iVar2 = 0x11;\n            }\n          }\n          uVar8 = iVar14 - (uint)(byte)puVar3[uVar8 >> iVar2];\n          uVar10 = 0x20 - uVar8;\n          uVar13 = uVar13 << (uVar8 & 0x1f) | uVar6 >> (uVar10 & 0x1f);\n          uVar6 = (uint)piVar12[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar6 << (uVar8 & 0x1f);\n          uVar7 = uVar7 << (uVar8 & 0x1f) | uVar11 >> (uVar10 & 0x1f);\n          uVar11 = (uint)param_2[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar11 << (uVar8 & 0x1f)\n          ;\n        }\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined1 **)(puVar18 + 0x10) = auStack_44;\n        iVar14 = (*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar13,uVar6,uVar7,uVar11);\n        if (iVar14 != 0) break;\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar15;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar4;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(piVar12,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n        param_1 = piVar12;\n        piVar5 = piVar15;\n        if (param_3 < 3) goto LAB_00054a30;\n      }\n      *(int *)(puVar18 + 0x10) = param_3;\n      param_4 = param_2;\n      param_3 = (*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488)\n                          (auStack_44,piVar15,piVar12);\n      param_1 = piVar15;\n      piVar5 = piVar12;\n      piVar12 = piVar15;\n    } while (2 < param_3);\n  }" { (expression_statement "puVar4 = PTR_LAB_0009d07c + 0x45d0;" (assignment_expression "puVar4 = PTR_LAB_0009d07c + 0x45d0" identifier = (binary_expression "PTR_LAB_0009d07c + 0x45d0" identifier + number_literal)) ;) (expression_statement "piVar12 = param_1;" (assignment_expression "piVar12 = param_1" identifier = identifier) ;) (do_statement "do {\n      while( true ) {\n        piVar15 = piVar5;\n        uVar13 = piVar12[param_3 + 0x3fffffff];\n        uVar7 = param_2[param_3 + 0x3fffffff];\n        uVar8 = uVar13 | uVar7;\n        uVar11 = param_2[param_3 + 0x3ffffffe];\n        uVar6 = piVar12[param_3 + 0x3ffffffe];\n        if (-1 < (int)uVar8) {\n          if (uVar8 < 0x10000) {\n            iVar14 = 0;\n            if (0xff < uVar8) {\n              iVar14 = 0x18;\n            }\n            iVar2 = 9;\n            if (0xff >= uVar8) {\n              iVar2 = 1;\n            }\n          }\n          else {\n            iVar14 = 0x10;\n            if (0xffffff < uVar8) {\n              iVar14 = 8;\n            }\n            iVar2 = 0x19;\n            if (0xffffff >= uVar8) {\n              iVar2 = 0x11;\n            }\n          }\n          uVar8 = iVar14 - (uint)(byte)puVar3[uVar8 >> iVar2];\n          uVar10 = 0x20 - uVar8;\n          uVar13 = uVar13 << (uVar8 & 0x1f) | uVar6 >> (uVar10 & 0x1f);\n          uVar6 = (uint)piVar12[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar6 << (uVar8 & 0x1f);\n          uVar7 = uVar7 << (uVar8 & 0x1f) | uVar11 >> (uVar10 & 0x1f);\n          uVar11 = (uint)param_2[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar11 << (uVar8 & 0x1f)\n          ;\n        }\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined1 **)(puVar18 + 0x10) = auStack_44;\n        iVar14 = (*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar13,uVar6,uVar7,uVar11);\n        if (iVar14 != 0) break;\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar15;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar4;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(piVar12,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n        param_1 = piVar12;\n        piVar5 = piVar15;\n        if (param_3 < 3) goto LAB_00054a30;\n      }\n      *(int *)(puVar18 + 0x10) = param_3;\n      param_4 = param_2;\n      param_3 = (*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488)\n                          (auStack_44,piVar15,piVar12);\n      param_1 = piVar15;\n      piVar5 = piVar12;\n      piVar12 = piVar15;\n    } while (2 < param_3);" do (compound_statement "{\n      while( true ) {\n        piVar15 = piVar5;\n        uVar13 = piVar12[param_3 + 0x3fffffff];\n        uVar7 = param_2[param_3 + 0x3fffffff];\n        uVar8 = uVar13 | uVar7;\n        uVar11 = param_2[param_3 + 0x3ffffffe];\n        uVar6 = piVar12[param_3 + 0x3ffffffe];\n        if (-1 < (int)uVar8) {\n          if (uVar8 < 0x10000) {\n            iVar14 = 0;\n            if (0xff < uVar8) {\n              iVar14 = 0x18;\n            }\n            iVar2 = 9;\n            if (0xff >= uVar8) {\n              iVar2 = 1;\n            }\n          }\n          else {\n            iVar14 = 0x10;\n            if (0xffffff < uVar8) {\n              iVar14 = 8;\n            }\n            iVar2 = 0x19;\n            if (0xffffff >= uVar8) {\n              iVar2 = 0x11;\n            }\n          }\n          uVar8 = iVar14 - (uint)(byte)puVar3[uVar8 >> iVar2];\n          uVar10 = 0x20 - uVar8;\n          uVar13 = uVar13 << (uVar8 & 0x1f) | uVar6 >> (uVar10 & 0x1f);\n          uVar6 = (uint)piVar12[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar6 << (uVar8 & 0x1f);\n          uVar7 = uVar7 << (uVar8 & 0x1f) | uVar11 >> (uVar10 & 0x1f);\n          uVar11 = (uint)param_2[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar11 << (uVar8 & 0x1f)\n          ;\n        }\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined1 **)(puVar18 + 0x10) = auStack_44;\n        iVar14 = (*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar13,uVar6,uVar7,uVar11);\n        if (iVar14 != 0) break;\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar15;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar4;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(piVar12,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n        param_1 = piVar12;\n        piVar5 = piVar15;\n        if (param_3 < 3) goto LAB_00054a30;\n      }\n      *(int *)(puVar18 + 0x10) = param_3;\n      param_4 = param_2;\n      param_3 = (*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488)\n                          (auStack_44,piVar15,piVar12);\n      param_1 = piVar15;\n      piVar5 = piVar12;\n      piVar12 = piVar15;\n    }" { (while_statement "while( true ) {\n        piVar15 = piVar5;\n        uVar13 = piVar12[param_3 + 0x3fffffff];\n        uVar7 = param_2[param_3 + 0x3fffffff];\n        uVar8 = uVar13 | uVar7;\n        uVar11 = param_2[param_3 + 0x3ffffffe];\n        uVar6 = piVar12[param_3 + 0x3ffffffe];\n        if (-1 < (int)uVar8) {\n          if (uVar8 < 0x10000) {\n            iVar14 = 0;\n            if (0xff < uVar8) {\n              iVar14 = 0x18;\n            }\n            iVar2 = 9;\n            if (0xff >= uVar8) {\n              iVar2 = 1;\n            }\n          }\n          else {\n            iVar14 = 0x10;\n            if (0xffffff < uVar8) {\n              iVar14 = 8;\n            }\n            iVar2 = 0x19;\n            if (0xffffff >= uVar8) {\n              iVar2 = 0x11;\n            }\n          }\n          uVar8 = iVar14 - (uint)(byte)puVar3[uVar8 >> iVar2];\n          uVar10 = 0x20 - uVar8;\n          uVar13 = uVar13 << (uVar8 & 0x1f) | uVar6 >> (uVar10 & 0x1f);\n          uVar6 = (uint)piVar12[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar6 << (uVar8 & 0x1f);\n          uVar7 = uVar7 << (uVar8 & 0x1f) | uVar11 >> (uVar10 & 0x1f);\n          uVar11 = (uint)param_2[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar11 << (uVar8 & 0x1f)\n          ;\n        }\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined1 **)(puVar18 + 0x10) = auStack_44;\n        iVar14 = (*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar13,uVar6,uVar7,uVar11);\n        if (iVar14 != 0) break;\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar15;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar4;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(piVar12,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n        param_1 = piVar12;\n        piVar5 = piVar15;\n        if (param_3 < 3) goto LAB_00054a30;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        piVar15 = piVar5;\n        uVar13 = piVar12[param_3 + 0x3fffffff];\n        uVar7 = param_2[param_3 + 0x3fffffff];\n        uVar8 = uVar13 | uVar7;\n        uVar11 = param_2[param_3 + 0x3ffffffe];\n        uVar6 = piVar12[param_3 + 0x3ffffffe];\n        if (-1 < (int)uVar8) {\n          if (uVar8 < 0x10000) {\n            iVar14 = 0;\n            if (0xff < uVar8) {\n              iVar14 = 0x18;\n            }\n            iVar2 = 9;\n            if (0xff >= uVar8) {\n              iVar2 = 1;\n            }\n          }\n          else {\n            iVar14 = 0x10;\n            if (0xffffff < uVar8) {\n              iVar14 = 8;\n            }\n            iVar2 = 0x19;\n            if (0xffffff >= uVar8) {\n              iVar2 = 0x11;\n            }\n          }\n          uVar8 = iVar14 - (uint)(byte)puVar3[uVar8 >> iVar2];\n          uVar10 = 0x20 - uVar8;\n          uVar13 = uVar13 << (uVar8 & 0x1f) | uVar6 >> (uVar10 & 0x1f);\n          uVar6 = (uint)piVar12[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar6 << (uVar8 & 0x1f);\n          uVar7 = uVar7 << (uVar8 & 0x1f) | uVar11 >> (uVar10 & 0x1f);\n          uVar11 = (uint)param_2[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar11 << (uVar8 & 0x1f)\n          ;\n        }\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined1 **)(puVar18 + 0x10) = auStack_44;\n        iVar14 = (*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar13,uVar6,uVar7,uVar11);\n        if (iVar14 != 0) break;\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar15;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar4;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(piVar12,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n        param_1 = piVar12;\n        piVar5 = piVar15;\n        if (param_3 < 3) goto LAB_00054a30;\n      }" { (expression_statement "piVar15 = piVar5;" (assignment_expression "piVar15 = piVar5" identifier = identifier) ;) (expression_statement "uVar13 = piVar12[param_3 + 0x3fffffff];" (assignment_expression "uVar13 = piVar12[param_3 + 0x3fffffff]" identifier = (subscript_expression "piVar12[param_3 + 0x3fffffff]" identifier [ (binary_expression "param_3 + 0x3fffffff" identifier + number_literal) ])) ;) (expression_statement "uVar7 = param_2[param_3 + 0x3fffffff];" (assignment_expression "uVar7 = param_2[param_3 + 0x3fffffff]" identifier = (subscript_expression "param_2[param_3 + 0x3fffffff]" identifier [ (binary_expression "param_3 + 0x3fffffff" identifier + number_literal) ])) ;) (expression_statement "uVar8 = uVar13 | uVar7;" (assignment_expression "uVar8 = uVar13 | uVar7" identifier = (binary_expression "uVar13 | uVar7" identifier | identifier)) ;) (expression_statement "uVar11 = param_2[param_3 + 0x3ffffffe];" (assignment_expression "uVar11 = param_2[param_3 + 0x3ffffffe]" identifier = (subscript_expression "param_2[param_3 + 0x3ffffffe]" identifier [ (binary_expression "param_3 + 0x3ffffffe" identifier + number_literal) ])) ;) (expression_statement "uVar6 = piVar12[param_3 + 0x3ffffffe];" (assignment_expression "uVar6 = piVar12[param_3 + 0x3ffffffe]" identifier = (subscript_expression "piVar12[param_3 + 0x3ffffffe]" identifier [ (binary_expression "param_3 + 0x3ffffffe" identifier + number_literal) ])) ;) (if_statement "if (-1 < (int)uVar8) {\n          if (uVar8 < 0x10000) {\n            iVar14 = 0;\n            if (0xff < uVar8) {\n              iVar14 = 0x18;\n            }\n            iVar2 = 9;\n            if (0xff >= uVar8) {\n              iVar2 = 1;\n            }\n          }\n          else {\n            iVar14 = 0x10;\n            if (0xffffff < uVar8) {\n              iVar14 = 8;\n            }\n            iVar2 = 0x19;\n            if (0xffffff >= uVar8) {\n              iVar2 = 0x11;\n            }\n          }\n          uVar8 = iVar14 - (uint)(byte)puVar3[uVar8 >> iVar2];\n          uVar10 = 0x20 - uVar8;\n          uVar13 = uVar13 << (uVar8 & 0x1f) | uVar6 >> (uVar10 & 0x1f);\n          uVar6 = (uint)piVar12[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar6 << (uVar8 & 0x1f);\n          uVar7 = uVar7 << (uVar8 & 0x1f) | uVar11 >> (uVar10 & 0x1f);\n          uVar11 = (uint)param_2[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar11 << (uVar8 & 0x1f)\n          ;\n        }" if (parenthesized_expression "(-1 < (int)uVar8)" ( (binary_expression "-1 < (int)uVar8" number_literal < (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          if (uVar8 < 0x10000) {\n            iVar14 = 0;\n            if (0xff < uVar8) {\n              iVar14 = 0x18;\n            }\n            iVar2 = 9;\n            if (0xff >= uVar8) {\n              iVar2 = 1;\n            }\n          }\n          else {\n            iVar14 = 0x10;\n            if (0xffffff < uVar8) {\n              iVar14 = 8;\n            }\n            iVar2 = 0x19;\n            if (0xffffff >= uVar8) {\n              iVar2 = 0x11;\n            }\n          }\n          uVar8 = iVar14 - (uint)(byte)puVar3[uVar8 >> iVar2];\n          uVar10 = 0x20 - uVar8;\n          uVar13 = uVar13 << (uVar8 & 0x1f) | uVar6 >> (uVar10 & 0x1f);\n          uVar6 = (uint)piVar12[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar6 << (uVar8 & 0x1f);\n          uVar7 = uVar7 << (uVar8 & 0x1f) | uVar11 >> (uVar10 & 0x1f);\n          uVar11 = (uint)param_2[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar11 << (uVar8 & 0x1f)\n          ;\n        }" { (if_statement "if (uVar8 < 0x10000) {\n            iVar14 = 0;\n            if (0xff < uVar8) {\n              iVar14 = 0x18;\n            }\n            iVar2 = 9;\n            if (0xff >= uVar8) {\n              iVar2 = 1;\n            }\n          }\n          else {\n            iVar14 = 0x10;\n            if (0xffffff < uVar8) {\n              iVar14 = 8;\n            }\n            iVar2 = 0x19;\n            if (0xffffff >= uVar8) {\n              iVar2 = 0x11;\n            }\n          }" if (parenthesized_expression "(uVar8 < 0x10000)" ( (binary_expression "uVar8 < 0x10000" identifier < number_literal) )) (compound_statement "{\n            iVar14 = 0;\n            if (0xff < uVar8) {\n              iVar14 = 0x18;\n            }\n            iVar2 = 9;\n            if (0xff >= uVar8) {\n              iVar2 = 1;\n            }\n          }" { (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) (if_statement "if (0xff < uVar8) {\n              iVar14 = 0x18;\n            }" if (parenthesized_expression "(0xff < uVar8)" ( (binary_expression "0xff < uVar8" number_literal < identifier) )) (compound_statement "{\n              iVar14 = 0x18;\n            }" { (expression_statement "iVar14 = 0x18;" (assignment_expression "iVar14 = 0x18" identifier = number_literal) ;) })) (expression_statement "iVar2 = 9;" (assignment_expression "iVar2 = 9" identifier = number_literal) ;) (if_statement "if (0xff >= uVar8) {\n              iVar2 = 1;\n            }" if (parenthesized_expression "(0xff >= uVar8)" ( (binary_expression "0xff >= uVar8" number_literal >= identifier) )) (compound_statement "{\n              iVar2 = 1;\n            }" { (expression_statement "iVar2 = 1;" (assignment_expression "iVar2 = 1" identifier = number_literal) ;) })) }) (else_clause "else {\n            iVar14 = 0x10;\n            if (0xffffff < uVar8) {\n              iVar14 = 8;\n            }\n            iVar2 = 0x19;\n            if (0xffffff >= uVar8) {\n              iVar2 = 0x11;\n            }\n          }" else (compound_statement "{\n            iVar14 = 0x10;\n            if (0xffffff < uVar8) {\n              iVar14 = 8;\n            }\n            iVar2 = 0x19;\n            if (0xffffff >= uVar8) {\n              iVar2 = 0x11;\n            }\n          }" { (expression_statement "iVar14 = 0x10;" (assignment_expression "iVar14 = 0x10" identifier = number_literal) ;) (if_statement "if (0xffffff < uVar8) {\n              iVar14 = 8;\n            }" if (parenthesized_expression "(0xffffff < uVar8)" ( (binary_expression "0xffffff < uVar8" number_literal < identifier) )) (compound_statement "{\n              iVar14 = 8;\n            }" { (expression_statement "iVar14 = 8;" (assignment_expression "iVar14 = 8" identifier = number_literal) ;) })) (expression_statement "iVar2 = 0x19;" (assignment_expression "iVar2 = 0x19" identifier = number_literal) ;) (if_statement "if (0xffffff >= uVar8) {\n              iVar2 = 0x11;\n            }" if (parenthesized_expression "(0xffffff >= uVar8)" ( (binary_expression "0xffffff >= uVar8" number_literal >= identifier) )) (compound_statement "{\n              iVar2 = 0x11;\n            }" { (expression_statement "iVar2 = 0x11;" (assignment_expression "iVar2 = 0x11" identifier = number_literal) ;) })) }))) (expression_statement "uVar8 = iVar14 - (uint)(byte)puVar3[uVar8 >> iVar2];" (assignment_expression "uVar8 = iVar14 - (uint)(byte)puVar3[uVar8 >> iVar2]" identifier = (binary_expression "iVar14 - (uint)(byte)puVar3[uVar8 >> iVar2]" identifier - (cast_expression "(uint)(byte)puVar3[uVar8 >> iVar2]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)puVar3[uVar8 >> iVar2]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar3[uVar8 >> iVar2]" identifier [ (binary_expression "uVar8 >> iVar2" identifier >> identifier) ]))))) ;) (expression_statement "uVar10 = 0x20 - uVar8;" (assignment_expression "uVar10 = 0x20 - uVar8" identifier = (binary_expression "0x20 - uVar8" number_literal - identifier)) ;) (expression_statement "uVar13 = uVar13 << (uVar8 & 0x1f) | uVar6 >> (uVar10 & 0x1f);" (assignment_expression "uVar13 = uVar13 << (uVar8 & 0x1f) | uVar6 >> (uVar10 & 0x1f)" identifier = (binary_expression "uVar13 << (uVar8 & 0x1f) | uVar6 >> (uVar10 & 0x1f)" (binary_expression "uVar13 << (uVar8 & 0x1f)" identifier << (parenthesized_expression "(uVar8 & 0x1f)" ( (binary_expression "uVar8 & 0x1f" identifier & number_literal) ))) | (binary_expression "uVar6 >> (uVar10 & 0x1f)" identifier >> (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) ))))) ;) (expression_statement "uVar6 = (uint)piVar12[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar6 << (uVar8 & 0x1f);" (assignment_expression "uVar6 = (uint)piVar12[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar6 << (uVar8 & 0x1f)" identifier = (binary_expression "(uint)piVar12[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar6 << (uVar8 & 0x1f)" (binary_expression "(uint)piVar12[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f)" (cast_expression "(uint)piVar12[param_3 + 0x3ffffffd]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar12[param_3 + 0x3ffffffd]" identifier [ (binary_expression "param_3 + 0x3ffffffd" identifier + number_literal) ])) >> (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) ))) | (binary_expression "uVar6 << (uVar8 & 0x1f)" identifier << (parenthesized_expression "(uVar8 & 0x1f)" ( (binary_expression "uVar8 & 0x1f" identifier & number_literal) ))))) ;) (expression_statement "uVar7 = uVar7 << (uVar8 & 0x1f) | uVar11 >> (uVar10 & 0x1f);" (assignment_expression "uVar7 = uVar7 << (uVar8 & 0x1f) | uVar11 >> (uVar10 & 0x1f)" identifier = (binary_expression "uVar7 << (uVar8 & 0x1f) | uVar11 >> (uVar10 & 0x1f)" (binary_expression "uVar7 << (uVar8 & 0x1f)" identifier << (parenthesized_expression "(uVar8 & 0x1f)" ( (binary_expression "uVar8 & 0x1f" identifier & number_literal) ))) | (binary_expression "uVar11 >> (uVar10 & 0x1f)" identifier >> (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) ))))) ;) (expression_statement "uVar11 = (uint)param_2[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar11 << (uVar8 & 0x1f)\n          ;" (assignment_expression "uVar11 = (uint)param_2[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar11 << (uVar8 & 0x1f)" identifier = (binary_expression "(uint)param_2[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar11 << (uVar8 & 0x1f)" (binary_expression "(uint)param_2[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f)" (cast_expression "(uint)param_2[param_3 + 0x3ffffffd]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[param_3 + 0x3ffffffd]" identifier [ (binary_expression "param_3 + 0x3ffffffd" identifier + number_literal) ])) >> (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) ))) | (binary_expression "uVar11 << (uVar8 & 0x1f)" identifier << (parenthesized_expression "(uVar8 & 0x1f)" ( (binary_expression "uVar8 & 0x1f" identifier & number_literal) ))))) ;) })) (expression_statement "*(int ***)(puVar18 + 0x14) = &local_resc;" (assignment_expression "*(int ***)(puVar18 + 0x14) = &local_resc" (pointer_expression "*(int ***)(puVar18 + 0x14)" * (cast_expression "(int ***)(puVar18 + 0x14)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar18 + 0x14)" ( (binary_expression "puVar18 + 0x14" identifier + number_literal) )))) = (pointer_expression "&local_resc" & identifier)) ;) (expression_statement "*(undefined1 **)(puVar18 + 0x10) = auStack_44;" (assignment_expression "*(undefined1 **)(puVar18 + 0x10) = auStack_44" (pointer_expression "*(undefined1 **)(puVar18 + 0x10)" * (cast_expression "(undefined1 **)(puVar18 + 0x10)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x10)" ( (binary_expression "puVar18 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar14 = (*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar13,uVar6,uVar7,uVar11);" (assignment_expression "iVar14 = (*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar13,uVar6,uVar7,uVar11)" identifier = (call_expression "(*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar13,uVar6,uVar7,uVar11)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)" ( (pointer_expression "*(code *)PTR___gmpn_hgcd2_jacobi_0009d318" * (cast_expression "(code *)PTR___gmpn_hgcd2_jacobi_0009d318" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar13,uVar6,uVar7,uVar11)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar14 != 0) break;" if (parenthesized_expression "(iVar14 != 0)" ( (binary_expression "iVar14 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "param_4 = (int *)0x0;" (assignment_expression "param_4 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*(int **)(puVar18 + 0x18) = piVar15;" (assignment_expression "*(int **)(puVar18 + 0x18) = piVar15" (pointer_expression "*(int **)(puVar18 + 0x18)" * (cast_expression "(int **)(puVar18 + 0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x18)" ( (binary_expression "puVar18 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int ***)(puVar18 + 0x14) = &local_resc;" (assignment_expression "*(int ***)(puVar18 + 0x14) = &local_resc" (pointer_expression "*(int ***)(puVar18 + 0x14)" * (cast_expression "(int ***)(puVar18 + 0x14)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar18 + 0x14)" ( (binary_expression "puVar18 + 0x14" identifier + number_literal) )))) = (pointer_expression "&local_resc" & identifier)) ;) (expression_statement "*(undefined **)(puVar18 + 0x10) = puVar4;" (assignment_expression "*(undefined **)(puVar18 + 0x10) = puVar4" (pointer_expression "*(undefined **)(puVar18 + 0x10)" * (cast_expression "(undefined **)(puVar18 + 0x10)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + 0x10)" ( (binary_expression "puVar18 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar9 = param_2;" (assignment_expression "piVar9 = param_2" identifier = identifier) ;) (expression_statement "param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(piVar12,param_2,param_3);" (assignment_expression "param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(piVar12,param_2,param_3)" identifier = (call_expression "(*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(piVar12,param_2,param_3)" (parenthesized_expression "(*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)" ( (pointer_expression "*(code *)PTR___gmpn_gcd_subdiv_step_0009d118" * (cast_expression "(code *)PTR___gmpn_gcd_subdiv_step_0009d118" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar12,param_2,param_3)" ( identifier , identifier , identifier )))) ;) (if_statement "if (param_3 == 0) goto LAB_00054840;" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00054840;" goto statement_identifier ;)) (expression_statement "param_1 = piVar12;" (assignment_expression "param_1 = piVar12" identifier = identifier) ;) (expression_statement "piVar5 = piVar15;" (assignment_expression "piVar5 = piVar15" identifier = identifier) ;) (if_statement "if (param_3 < 3) goto LAB_00054a30;" if (parenthesized_expression "(param_3 < 3)" ( (binary_expression "param_3 < 3" identifier < number_literal) )) (goto_statement "goto LAB_00054a30;" goto statement_identifier ;)) })) (expression_statement "*(int *)(puVar18 + 0x10) = param_3;" (assignment_expression "*(int *)(puVar18 + 0x10) = param_3" (pointer_expression "*(int *)(puVar18 + 0x10)" * (cast_expression "(int *)(puVar18 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar18 + 0x10)" ( (binary_expression "puVar18 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_4 = param_2;" (assignment_expression "param_4 = param_2" identifier = identifier) ;) (expression_statement "param_3 = (*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488)\n                          (auStack_44,piVar15,piVar12);" (assignment_expression "param_3 = (*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488)\n                          (auStack_44,piVar15,piVar12)" identifier = (call_expression "(*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488)\n                          (auStack_44,piVar15,piVar12)" (parenthesized_expression "(*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488)" ( (pointer_expression "*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488" * (cast_expression "(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(auStack_44,piVar15,piVar12)" ( identifier , identifier , identifier )))) ;) (expression_statement "param_1 = piVar15;" (assignment_expression "param_1 = piVar15" identifier = identifier) ;) (expression_statement "piVar5 = piVar12;" (assignment_expression "piVar5 = piVar12" identifier = identifier) ;) (expression_statement "piVar12 = piVar15;" (assignment_expression "piVar12 = piVar15" identifier = identifier) ;) }) while (parenthesized_expression "(2 < param_3)" ( (binary_expression "2 < param_3" number_literal < identifier) )) ;) })) (labeled_statement "LAB_00054a30:\n  piVar5 = param_1;" statement_identifier : (expression_statement "piVar5 = param_1;" (assignment_expression "piVar5 = param_1" identifier = identifier) ;)) (expression_statement "piVar9 = param_2;" (assignment_expression "piVar9 = param_2" identifier = identifier) ;) (if_statement "if ((int *)0xf < local_resc) {\n    piVar5 = param_2;\n    piVar9 = param_1;\n  }" if (parenthesized_expression "((int *)0xf < local_resc)" ( (binary_expression "(int *)0xf < local_resc" (cast_expression "(int *)0xf" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) < identifier) )) (compound_statement "{\n    piVar5 = param_2;\n    piVar9 = param_1;\n  }" { (expression_statement "piVar5 = param_2;" (assignment_expression "piVar5 = param_2" identifier = identifier) ;) (expression_statement "piVar9 = param_1;" (assignment_expression "piVar9 = param_1" identifier = identifier) ;) })) (if_statement "if (param_3 == 1) {\n    iVar14 = *piVar5;\n    piVar9 = (int *)*piVar9;\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n    if (piVar9 == (int *)0x1) {\n      uVar13 = ((uint)local_resc & 1) * -2 + 1;\n    }\n    else {\n      uVar13 = (*(code *)PTR___gmpn_jacobi_base_0009d408)(iVar14,piVar9,(int)local_resc << 1);\n    }\n  }\n  else {\n    uVar13 = (*(code *)PTR___gmpn_jacobi_2_0009d324)(piVar5,piVar9,(uint)local_resc & 1);\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n  }" if (parenthesized_expression "(param_3 == 1)" ( (binary_expression "param_3 == 1" identifier == number_literal) )) (compound_statement "{\n    iVar14 = *piVar5;\n    piVar9 = (int *)*piVar9;\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n    if (piVar9 == (int *)0x1) {\n      uVar13 = ((uint)local_resc & 1) * -2 + 1;\n    }\n    else {\n      uVar13 = (*(code *)PTR___gmpn_jacobi_base_0009d408)(iVar14,piVar9,(int)local_resc << 1);\n    }\n  }" { (expression_statement "iVar14 = *piVar5;" (assignment_expression "iVar14 = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;) (expression_statement "piVar9 = (int *)*piVar9;" (assignment_expression "piVar9 = (int *)*piVar9" identifier = (cast_expression "(int *)*piVar9" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar9" * identifier))) ;) (if_statement "if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }" if (parenthesized_expression "(local_48 != 0)" ( (binary_expression "local_48 != 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 "()" ( ))) ;) })) (if_statement "if (piVar9 == (int *)0x1) {\n      uVar13 = ((uint)local_resc & 1) * -2 + 1;\n    }\n    else {\n      uVar13 = (*(code *)PTR___gmpn_jacobi_base_0009d408)(iVar14,piVar9,(int)local_resc << 1);\n    }" if (parenthesized_expression "(piVar9 == (int *)0x1)" ( (binary_expression "piVar9 == (int *)0x1" identifier == (cast_expression "(int *)0x1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar13 = ((uint)local_resc & 1) * -2 + 1;\n    }" { (expression_statement "uVar13 = ((uint)local_resc & 1) * -2 + 1;" (assignment_expression "uVar13 = ((uint)local_resc & 1) * -2 + 1" identifier = (binary_expression "((uint)local_resc & 1) * -2 + 1" (binary_expression "((uint)local_resc & 1) * -2" (parenthesized_expression "((uint)local_resc & 1)" ( (binary_expression "(uint)local_resc & 1" (cast_expression "(uint)local_resc" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) * number_literal) + number_literal)) ;) }) (else_clause "else {\n      uVar13 = (*(code *)PTR___gmpn_jacobi_base_0009d408)(iVar14,piVar9,(int)local_resc << 1);\n    }" else (compound_statement "{\n      uVar13 = (*(code *)PTR___gmpn_jacobi_base_0009d408)(iVar14,piVar9,(int)local_resc << 1);\n    }" { (expression_statement "uVar13 = (*(code *)PTR___gmpn_jacobi_base_0009d408)(iVar14,piVar9,(int)local_resc << 1);" (assignment_expression "uVar13 = (*(code *)PTR___gmpn_jacobi_base_0009d408)(iVar14,piVar9,(int)local_resc << 1)" identifier = (call_expression "(*(code *)PTR___gmpn_jacobi_base_0009d408)(iVar14,piVar9,(int)local_resc << 1)" (parenthesized_expression "(*(code *)PTR___gmpn_jacobi_base_0009d408)" ( (pointer_expression "*(code *)PTR___gmpn_jacobi_base_0009d408" * (cast_expression "(code *)PTR___gmpn_jacobi_base_0009d408" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar14,piVar9,(int)local_resc << 1)" ( identifier , identifier , (binary_expression "(int)local_resc << 1" (cast_expression "(int)local_resc" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) )))) ;) }))) }) (else_clause "else {\n    uVar13 = (*(code *)PTR___gmpn_jacobi_2_0009d324)(piVar5,piVar9,(uint)local_resc & 1);\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n  }" else (compound_statement "{\n    uVar13 = (*(code *)PTR___gmpn_jacobi_2_0009d324)(piVar5,piVar9,(uint)local_resc & 1);\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n  }" { (expression_statement "uVar13 = (*(code *)PTR___gmpn_jacobi_2_0009d324)(piVar5,piVar9,(uint)local_resc & 1);" (assignment_expression "uVar13 = (*(code *)PTR___gmpn_jacobi_2_0009d324)(piVar5,piVar9,(uint)local_resc & 1)" identifier = (call_expression "(*(code *)PTR___gmpn_jacobi_2_0009d324)(piVar5,piVar9,(uint)local_resc & 1)" (parenthesized_expression "(*(code *)PTR___gmpn_jacobi_2_0009d324)" ( (pointer_expression "*(code *)PTR___gmpn_jacobi_2_0009d324" * (cast_expression "(code *)PTR___gmpn_jacobi_2_0009d324" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar5,piVar9,(uint)local_resc & 1)" ( identifier , identifier , (binary_expression "(uint)local_resc & 1" (cast_expression "(uint)local_resc" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) ;) (if_statement "if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }" if (parenthesized_expression "(local_48 != 0)" ( (binary_expression "local_48 != 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 "()" ( ))) ;) })) }))) (goto_statement "goto LAB_0005486c;" goto statement_identifier ;) (labeled_statement "LAB_00054840:\n  if (local_48 != 0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n  }" statement_identifier : (if_statement "if (local_48 != 0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n  }" if (parenthesized_expression "(local_48 != 0)" ( (binary_expression "local_48 != 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 "()" ( ))) ;) }))) (if_statement "if (local_resc == (int *)0x1f) {\n    uVar13 = 0;\n  }\n  else {\n    uVar13 = ((uint)local_resc & 1) * -2 + 1;\n  }" if (parenthesized_expression "(local_resc == (int *)0x1f)" ( (binary_expression "local_resc == (int *)0x1f" identifier == (cast_expression "(int *)0x1f" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar13 = 0;\n  }" { (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    uVar13 = ((uint)local_resc & 1) * -2 + 1;\n  }" else (compound_statement "{\n    uVar13 = ((uint)local_resc & 1) * -2 + 1;\n  }" { (expression_statement "uVar13 = ((uint)local_resc & 1) * -2 + 1;" (assignment_expression "uVar13 = ((uint)local_resc & 1) * -2 + 1" identifier = (binary_expression "((uint)local_resc & 1) * -2 + 1" (binary_expression "((uint)local_resc & 1) * -2" (parenthesized_expression "((uint)local_resc & 1)" ( (binary_expression "(uint)local_resc & 1" (cast_expression "(uint)local_resc" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) * number_literal) + number_literal)) ;) }))) (labeled_statement "LAB_0005486c:\n  if (local_2c == *(int *)puVar17) {\n    return uVar13;\n  }" statement_identifier : (if_statement "if (local_2c == *(int *)puVar17) {\n    return uVar13;\n  }" if (parenthesized_expression "(local_2c == *(int *)puVar17)" ( (binary_expression "local_2c == *(int *)puVar17" identifier == (pointer_expression "*(int *)puVar17" * (cast_expression "(int *)puVar17" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return uVar13;\n  }" { (return_statement "return uVar13;" return identifier ;) }))) (expression_statement "puVar17 = PTR___stack_chk_fail_0009d4d0;" (assignment_expression "puVar17 = PTR___stack_chk_fail_0009d4d0" 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 "()" ( ))) ;) (if_statement "if (piVar9 == (int *)0x0) {\n    return 0x7fff0000;\n  }" if (parenthesized_expression "(piVar9 == (int *)0x0)" ( (binary_expression "piVar9 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return 0x7fff0000;\n  }" { (return_statement "return 0x7fff0000;" return number_literal ;) })) (expression_statement "uVar13 = (int)piVar9 * 0x20;" (assignment_expression "uVar13 = (int)piVar9 * 0x20" identifier = (binary_expression "(int)piVar9 * 0x20" (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (if_statement "if (0x7fffffffU - (int)param_4 < uVar13) {\n    return 0;\n  }" if (parenthesized_expression "(0x7fffffffU - (int)param_4 < uVar13)" ( (binary_expression "0x7fffffffU - (int)param_4 < uVar13" (binary_expression "0x7fffffffU - (int)param_4" number_literal - (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier)) < identifier) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "local_2c = local_2c + (int)piVar9 * 4;" (assignment_expression "local_2c = local_2c + (int)piVar9 * 4" identifier = (binary_expression "local_2c + (int)piVar9 * 4" identifier + (binary_expression "(int)piVar9 * 4" (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal))) ;) (expression_statement "uVar6 = *(uint *)(local_2c + -4);" (assignment_expression "uVar6 = *(uint *)(local_2c + -4)" identifier = (pointer_expression "*(uint *)(local_2c + -4)" * (cast_expression "(uint *)(local_2c + -4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + -4)" ( (binary_expression "local_2c + -4" identifier + number_literal) ))))) ;) (if_statement "if (uVar6 < 0x10000) {\n    iVar14 = 0x20;\n    if (0xff < uVar6) {\n      iVar14 = 0x18;\n    }\n    iVar2 = 9;\n    if (0xff >= uVar6) {\n      iVar2 = 1;\n    }\n    uVar7 = iVar14 - (uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> iVar2));\n    iVar14 = uVar7 + 1;\njoined_r0x00054cbc:\n    uVar10 = uVar6 << (uVar7 & 0x1f);\n    uVar11 = uVar10 >> 0xb;\n    iVar14 = (int)param_4 + (uVar13 - iVar14);\n    if ((int)uVar7 < 0xb) {\n      iVar2 = local_2c + -4;\n      uVar6 = uVar10 << 0x15;\n      uVar8 = 0xb - uVar7;\n    }\n    else {\n      if ((int)piVar9 < 2) {\n        uVar6 = 0;\n        goto LAB_00054c48;\n      }\n      iVar2 = local_2c + -8;\n      uVar6 = *(uint *)(local_2c + -8) << (uVar7 - 0xb & 0x1f);\n      piVar9 = (int *)((int)piVar9 + -1);\n      uVar8 = 0x2b - uVar7;\n      uVar11 = (uVar10 | *(uint *)(local_2c + -8) >> (-uVar7 & 0x1f)) >> 0xb;\n    }\n  }\n  else {\n    if (uVar6 < 0x1000000) {\n      iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x11));\n      uVar7 = iVar14 + 0x10;\n      iVar14 = iVar14 + 0x11;\n      goto joined_r0x00054cbc;\n    }\n    iVar2 = local_2c + -4;\n    iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x19));\n    uVar8 = iVar14 + 8;\n    uVar6 = uVar6 << (uVar8 & 0x1f);\n    uVar11 = uVar6 >> 0xb;\n    iVar14 = (int)param_4 + (uVar13 - (iVar14 + 9));\n    uVar6 = uVar6 << 0x15;\n    uVar8 = 0xb - uVar8;\n  }" if (parenthesized_expression "(uVar6 < 0x10000)" ( (binary_expression "uVar6 < 0x10000" identifier < number_literal) )) (compound_statement "{\n    iVar14 = 0x20;\n    if (0xff < uVar6) {\n      iVar14 = 0x18;\n    }\n    iVar2 = 9;\n    if (0xff >= uVar6) {\n      iVar2 = 1;\n    }\n    uVar7 = iVar14 - (uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> iVar2));\n    iVar14 = uVar7 + 1;\njoined_r0x00054cbc:\n    uVar10 = uVar6 << (uVar7 & 0x1f);\n    uVar11 = uVar10 >> 0xb;\n    iVar14 = (int)param_4 + (uVar13 - iVar14);\n    if ((int)uVar7 < 0xb) {\n      iVar2 = local_2c + -4;\n      uVar6 = uVar10 << 0x15;\n      uVar8 = 0xb - uVar7;\n    }\n    else {\n      if ((int)piVar9 < 2) {\n        uVar6 = 0;\n        goto LAB_00054c48;\n      }\n      iVar2 = local_2c + -8;\n      uVar6 = *(uint *)(local_2c + -8) << (uVar7 - 0xb & 0x1f);\n      piVar9 = (int *)((int)piVar9 + -1);\n      uVar8 = 0x2b - uVar7;\n      uVar11 = (uVar10 | *(uint *)(local_2c + -8) >> (-uVar7 & 0x1f)) >> 0xb;\n    }\n  }" { (expression_statement "iVar14 = 0x20;" (assignment_expression "iVar14 = 0x20" identifier = number_literal) ;) (if_statement "if (0xff < uVar6) {\n      iVar14 = 0x18;\n    }" if (parenthesized_expression "(0xff < uVar6)" ( (binary_expression "0xff < uVar6" number_literal < identifier) )) (compound_statement "{\n      iVar14 = 0x18;\n    }" { (expression_statement "iVar14 = 0x18;" (assignment_expression "iVar14 = 0x18" identifier = number_literal) ;) })) (expression_statement "iVar2 = 9;" (assignment_expression "iVar2 = 9" identifier = number_literal) ;) (if_statement "if (0xff >= uVar6) {\n      iVar2 = 1;\n    }" if (parenthesized_expression "(0xff >= uVar6)" ( (binary_expression "0xff >= uVar6" number_literal >= identifier) )) (compound_statement "{\n      iVar2 = 1;\n    }" { (expression_statement "iVar2 = 1;" (assignment_expression "iVar2 = 1" identifier = number_literal) ;) })) (expression_statement "uVar7 = iVar14 - (uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> iVar2));" (assignment_expression "uVar7 = iVar14 - (uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> iVar2))" identifier = (binary_expression "iVar14 - (uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> iVar2))" identifier - (binary_expression "(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> iVar2))" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> iVar2))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar17 + 0x4862c) + (uVar6 >> iVar2))" ( (binary_expression "*(int *)(puVar17 + 0x4862c) + (uVar6 >> iVar2)" (pointer_expression "*(int *)(puVar17 + 0x4862c)" * (cast_expression "(int *)(puVar17 + 0x4862c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + 0x4862c)" ( (binary_expression "puVar17 + 0x4862c" identifier + number_literal) )))) + (parenthesized_expression "(uVar6 >> iVar2)" ( (binary_expression "uVar6 >> iVar2" identifier >> identifier) ))) )))))) ;) (expression_statement "iVar14 = uVar7 + 1;" (assignment_expression "iVar14 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (labeled_statement "joined_r0x00054cbc:\n    uVar10 = uVar6 << (uVar7 & 0x1f);" statement_identifier : (expression_statement "uVar10 = uVar6 << (uVar7 & 0x1f);" (assignment_expression "uVar10 = uVar6 << (uVar7 & 0x1f)" identifier = (binary_expression "uVar6 << (uVar7 & 0x1f)" identifier << (parenthesized_expression "(uVar7 & 0x1f)" ( (binary_expression "uVar7 & 0x1f" identifier & number_literal) )))) ;)) (expression_statement "uVar11 = uVar10 >> 0xb;" (assignment_expression "uVar11 = uVar10 >> 0xb" identifier = (binary_expression "uVar10 >> 0xb" identifier >> number_literal)) ;) (expression_statement "iVar14 = (int)param_4 + (uVar13 - iVar14);" (assignment_expression "iVar14 = (int)param_4 + (uVar13 - iVar14)" identifier = (binary_expression "(int)param_4 + (uVar13 - iVar14)" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(uVar13 - iVar14)" ( (binary_expression "uVar13 - iVar14" identifier - identifier) )))) ;) (if_statement "if ((int)uVar7 < 0xb) {\n      iVar2 = local_2c + -4;\n      uVar6 = uVar10 << 0x15;\n      uVar8 = 0xb - uVar7;\n    }\n    else {\n      if ((int)piVar9 < 2) {\n        uVar6 = 0;\n        goto LAB_00054c48;\n      }\n      iVar2 = local_2c + -8;\n      uVar6 = *(uint *)(local_2c + -8) << (uVar7 - 0xb & 0x1f);\n      piVar9 = (int *)((int)piVar9 + -1);\n      uVar8 = 0x2b - uVar7;\n      uVar11 = (uVar10 | *(uint *)(local_2c + -8) >> (-uVar7 & 0x1f)) >> 0xb;\n    }" if (parenthesized_expression "((int)uVar7 < 0xb)" ( (binary_expression "(int)uVar7 < 0xb" (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      iVar2 = local_2c + -4;\n      uVar6 = uVar10 << 0x15;\n      uVar8 = 0xb - uVar7;\n    }" { (expression_statement "iVar2 = local_2c + -4;" (assignment_expression "iVar2 = local_2c + -4" identifier = (binary_expression "local_2c + -4" identifier + number_literal)) ;) (expression_statement "uVar6 = uVar10 << 0x15;" (assignment_expression "uVar6 = uVar10 << 0x15" identifier = (binary_expression "uVar10 << 0x15" identifier << number_literal)) ;) (expression_statement "uVar8 = 0xb - uVar7;" (assignment_expression "uVar8 = 0xb - uVar7" identifier = (binary_expression "0xb - uVar7" number_literal - identifier)) ;) }) (else_clause "else {\n      if ((int)piVar9 < 2) {\n        uVar6 = 0;\n        goto LAB_00054c48;\n      }\n      iVar2 = local_2c + -8;\n      uVar6 = *(uint *)(local_2c + -8) << (uVar7 - 0xb & 0x1f);\n      piVar9 = (int *)((int)piVar9 + -1);\n      uVar8 = 0x2b - uVar7;\n      uVar11 = (uVar10 | *(uint *)(local_2c + -8) >> (-uVar7 & 0x1f)) >> 0xb;\n    }" else (compound_statement "{\n      if ((int)piVar9 < 2) {\n        uVar6 = 0;\n        goto LAB_00054c48;\n      }\n      iVar2 = local_2c + -8;\n      uVar6 = *(uint *)(local_2c + -8) << (uVar7 - 0xb & 0x1f);\n      piVar9 = (int *)((int)piVar9 + -1);\n      uVar8 = 0x2b - uVar7;\n      uVar11 = (uVar10 | *(uint *)(local_2c + -8) >> (-uVar7 & 0x1f)) >> 0xb;\n    }" { (if_statement "if ((int)piVar9 < 2) {\n        uVar6 = 0;\n        goto LAB_00054c48;\n      }" if (parenthesized_expression "((int)piVar9 < 2)" ( (binary_expression "(int)piVar9 < 2" (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        uVar6 = 0;\n        goto LAB_00054c48;\n      }" { (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00054c48;" goto statement_identifier ;) })) (expression_statement "iVar2 = local_2c + -8;" (assignment_expression "iVar2 = local_2c + -8" identifier = (binary_expression "local_2c + -8" identifier + number_literal)) ;) (expression_statement "uVar6 = *(uint *)(local_2c + -8) << (uVar7 - 0xb & 0x1f);" (assignment_expression "uVar6 = *(uint *)(local_2c + -8) << (uVar7 - 0xb & 0x1f)" identifier = (binary_expression "*(uint *)(local_2c + -8) << (uVar7 - 0xb & 0x1f)" (pointer_expression "*(uint *)(local_2c + -8)" * (cast_expression "(uint *)(local_2c + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + -8)" ( (binary_expression "local_2c + -8" identifier + number_literal) )))) << (parenthesized_expression "(uVar7 - 0xb & 0x1f)" ( (binary_expression "uVar7 - 0xb & 0x1f" (binary_expression "uVar7 - 0xb" identifier - number_literal) & number_literal) )))) ;) (expression_statement "piVar9 = (int *)((int)piVar9 + -1);" (assignment_expression "piVar9 = (int *)((int)piVar9 + -1)" identifier = (cast_expression "(int *)((int)piVar9 + -1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar9 + -1)" ( (binary_expression "(int)piVar9 + -1" (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "uVar8 = 0x2b - uVar7;" (assignment_expression "uVar8 = 0x2b - uVar7" identifier = (binary_expression "0x2b - uVar7" number_literal - identifier)) ;) (expression_statement "uVar11 = (uVar10 | *(uint *)(local_2c + -8) >> (-uVar7 & 0x1f)) >> 0xb;" (assignment_expression "uVar11 = (uVar10 | *(uint *)(local_2c + -8) >> (-uVar7 & 0x1f)) >> 0xb" identifier = (binary_expression "(uVar10 | *(uint *)(local_2c + -8) >> (-uVar7 & 0x1f)) >> 0xb" (parenthesized_expression "(uVar10 | *(uint *)(local_2c + -8) >> (-uVar7 & 0x1f))" ( (binary_expression "uVar10 | *(uint *)(local_2c + -8) >> (-uVar7 & 0x1f)" identifier | (binary_expression "*(uint *)(local_2c + -8) >> (-uVar7 & 0x1f)" (pointer_expression "*(uint *)(local_2c + -8)" * (cast_expression "(uint *)(local_2c + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + -8)" ( (binary_expression "local_2c + -8" identifier + number_literal) )))) >> (parenthesized_expression "(-uVar7 & 0x1f)" ( (binary_expression "-uVar7 & 0x1f" (unary_expression "-uVar7" - identifier) & number_literal) )))) )) >> number_literal)) ;) }))) }) (else_clause "else {\n    if (uVar6 < 0x1000000) {\n      iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x11));\n      uVar7 = iVar14 + 0x10;\n      iVar14 = iVar14 + 0x11;\n      goto joined_r0x00054cbc;\n    }\n    iVar2 = local_2c + -4;\n    iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x19));\n    uVar8 = iVar14 + 8;\n    uVar6 = uVar6 << (uVar8 & 0x1f);\n    uVar11 = uVar6 >> 0xb;\n    iVar14 = (int)param_4 + (uVar13 - (iVar14 + 9));\n    uVar6 = uVar6 << 0x15;\n    uVar8 = 0xb - uVar8;\n  }" else (compound_statement "{\n    if (uVar6 < 0x1000000) {\n      iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x11));\n      uVar7 = iVar14 + 0x10;\n      iVar14 = iVar14 + 0x11;\n      goto joined_r0x00054cbc;\n    }\n    iVar2 = local_2c + -4;\n    iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x19));\n    uVar8 = iVar14 + 8;\n    uVar6 = uVar6 << (uVar8 & 0x1f);\n    uVar11 = uVar6 >> 0xb;\n    iVar14 = (int)param_4 + (uVar13 - (iVar14 + 9));\n    uVar6 = uVar6 << 0x15;\n    uVar8 = 0xb - uVar8;\n  }" { (if_statement "if (uVar6 < 0x1000000) {\n      iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x11));\n      uVar7 = iVar14 + 0x10;\n      iVar14 = iVar14 + 0x11;\n      goto joined_r0x00054cbc;\n    }" if (parenthesized_expression "(uVar6 < 0x1000000)" ( (binary_expression "uVar6 < 0x1000000" identifier < number_literal) )) (compound_statement "{\n      iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x11));\n      uVar7 = iVar14 + 0x10;\n      iVar14 = iVar14 + 0x11;\n      goto joined_r0x00054cbc;\n    }" { (expression_statement "iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x11));" (assignment_expression "iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x11))" identifier = (binary_expression "-(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x11))" (unary_expression "-(uint)" - (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x11))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x11))" ( (binary_expression "*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x11)" (pointer_expression "*(int *)(puVar17 + 0x4862c)" * (cast_expression "(int *)(puVar17 + 0x4862c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + 0x4862c)" ( (binary_expression "puVar17 + 0x4862c" identifier + number_literal) )))) + (parenthesized_expression "(uVar6 >> 0x11)" ( (binary_expression "uVar6 >> 0x11" identifier >> number_literal) ))) ))))) ;) (expression_statement "uVar7 = iVar14 + 0x10;" (assignment_expression "uVar7 = iVar14 + 0x10" identifier = (binary_expression "iVar14 + 0x10" identifier + number_literal)) ;) (expression_statement "iVar14 = iVar14 + 0x11;" (assignment_expression "iVar14 = iVar14 + 0x11" identifier = (binary_expression "iVar14 + 0x11" identifier + number_literal)) ;) (goto_statement "goto joined_r0x00054cbc;" goto statement_identifier ;) })) (expression_statement "iVar2 = local_2c + -4;" (assignment_expression "iVar2 = local_2c + -4" identifier = (binary_expression "local_2c + -4" identifier + number_literal)) ;) (expression_statement "iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x19));" (assignment_expression "iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x19))" identifier = (binary_expression "-(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x19))" (unary_expression "-(uint)" - (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x19))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x19))" ( (binary_expression "*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x19)" (pointer_expression "*(int *)(puVar17 + 0x4862c)" * (cast_expression "(int *)(puVar17 + 0x4862c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + 0x4862c)" ( (binary_expression "puVar17 + 0x4862c" identifier + number_literal) )))) + (parenthesized_expression "(uVar6 >> 0x19)" ( (binary_expression "uVar6 >> 0x19" identifier >> number_literal) ))) ))))) ;) (expression_statement "uVar8 = iVar14 + 8;" (assignment_expression "uVar8 = iVar14 + 8" identifier = (binary_expression "iVar14 + 8" identifier + number_literal)) ;) (expression_statement "uVar6 = uVar6 << (uVar8 & 0x1f);" (assignment_expression "uVar6 = uVar6 << (uVar8 & 0x1f)" identifier = (binary_expression "uVar6 << (uVar8 & 0x1f)" identifier << (parenthesized_expression "(uVar8 & 0x1f)" ( (binary_expression "uVar8 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar11 = uVar6 >> 0xb;" (assignment_expression "uVar11 = uVar6 >> 0xb" identifier = (binary_expression "uVar6 >> 0xb" identifier >> number_literal)) ;) (expression_statement "iVar14 = (int)param_4 + (uVar13 - (iVar14 + 9));" (assignment_expression "iVar14 = (int)param_4 + (uVar13 - (iVar14 + 9))" identifier = (binary_expression "(int)param_4 + (uVar13 - (iVar14 + 9))" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(uVar13 - (iVar14 + 9))" ( (binary_expression "uVar13 - (iVar14 + 9)" identifier - (parenthesized_expression "(iVar14 + 9)" ( (binary_expression "iVar14 + 9" identifier + number_literal) ))) )))) ;) (expression_statement "uVar6 = uVar6 << 0x15;" (assignment_expression "uVar6 = uVar6 << 0x15" identifier = (binary_expression "uVar6 << 0x15" identifier << number_literal)) ;) (expression_statement "uVar8 = 0xb - uVar8;" (assignment_expression "uVar8 = 0xb - uVar8" identifier = (binary_expression "0xb - uVar8" number_literal - identifier)) ;) }))) (if_statement "if (((int)uVar8 < 0x20) && (1 < (int)piVar9)) {\n    uVar6 = uVar6 | *(uint *)(iVar2 + -4) >> (uVar8 & 0x1f);\n  }" if (parenthesized_expression "(((int)uVar8 < 0x20) && (1 < (int)piVar9))" ( (binary_expression "((int)uVar8 < 0x20) && (1 < (int)piVar9)" (parenthesized_expression "((int)uVar8 < 0x20)" ( (binary_expression "(int)uVar8 < 0x20" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) && (parenthesized_expression "(1 < (int)piVar9)" ( (binary_expression "1 < (int)piVar9" number_literal < (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n    uVar6 = uVar6 | *(uint *)(iVar2 + -4) >> (uVar8 & 0x1f);\n  }" { (expression_statement "uVar6 = uVar6 | *(uint *)(iVar2 + -4) >> (uVar8 & 0x1f);" (assignment_expression "uVar6 = uVar6 | *(uint *)(iVar2 + -4) >> (uVar8 & 0x1f)" identifier = (binary_expression "uVar6 | *(uint *)(iVar2 + -4) >> (uVar8 & 0x1f)" identifier | (binary_expression "*(uint *)(iVar2 + -4) >> (uVar8 & 0x1f)" (pointer_expression "*(uint *)(iVar2 + -4)" * (cast_expression "(uint *)(iVar2 + -4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + -4)" ( (binary_expression "iVar2 + -4" identifier + number_literal) )))) >> (parenthesized_expression "(uVar8 & 0x1f)" ( (binary_expression "uVar8 & 0x1f" identifier & number_literal) ))))) ;) })) (labeled_statement "LAB_00054c48:\n  if (0x3ff < iVar14) {\n    return 0;\n  }" statement_identifier : (if_statement "if (0x3ff < iVar14) {\n    return 0;\n  }" if (parenthesized_expression "(0x3ff < iVar14)" ( (binary_expression "0x3ff < iVar14" number_literal < identifier) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) }))) (if_statement "if (iVar14 < -0x3fe) {\n    if (iVar14 < -0x432) {\n      return uVar6;\n    }\n    if ((int)(-iVar14 - 0x3feU) < 0x20) {\n      uVar13 = iVar14 + 0x41e;\n      uVar6 = uVar6 >> (-iVar14 - 0x3feU & 0x1f);\n    }\n    else {\n      uVar6 = uVar11 >> (-iVar14 - 0x41eU & 0x1f);\n      if (-iVar14 - 0x41eU == 0) {\n        return uVar6;\n      }\n      uVar13 = iVar14 + 0x43e;\n      uVar11 = 0;\n    }\n    uVar6 = uVar6 | uVar11 << (uVar13 & 0x1f);\n  }" if (parenthesized_expression "(iVar14 < -0x3fe)" ( (binary_expression "iVar14 < -0x3fe" identifier < number_literal) )) (compound_statement "{\n    if (iVar14 < -0x432) {\n      return uVar6;\n    }\n    if ((int)(-iVar14 - 0x3feU) < 0x20) {\n      uVar13 = iVar14 + 0x41e;\n      uVar6 = uVar6 >> (-iVar14 - 0x3feU & 0x1f);\n    }\n    else {\n      uVar6 = uVar11 >> (-iVar14 - 0x41eU & 0x1f);\n      if (-iVar14 - 0x41eU == 0) {\n        return uVar6;\n      }\n      uVar13 = iVar14 + 0x43e;\n      uVar11 = 0;\n    }\n    uVar6 = uVar6 | uVar11 << (uVar13 & 0x1f);\n  }" { (if_statement "if (iVar14 < -0x432) {\n      return uVar6;\n    }" if (parenthesized_expression "(iVar14 < -0x432)" ( (binary_expression "iVar14 < -0x432" identifier < number_literal) )) (compound_statement "{\n      return uVar6;\n    }" { (return_statement "return uVar6;" return identifier ;) })) (if_statement "if ((int)(-iVar14 - 0x3feU) < 0x20) {\n      uVar13 = iVar14 + 0x41e;\n      uVar6 = uVar6 >> (-iVar14 - 0x3feU & 0x1f);\n    }\n    else {\n      uVar6 = uVar11 >> (-iVar14 - 0x41eU & 0x1f);\n      if (-iVar14 - 0x41eU == 0) {\n        return uVar6;\n      }\n      uVar13 = iVar14 + 0x43e;\n      uVar11 = 0;\n    }" if (parenthesized_expression "((int)(-iVar14 - 0x3feU) < 0x20)" ( (binary_expression "(int)(-iVar14 - 0x3feU) < 0x20" (cast_expression "(int)(-iVar14 - 0x3feU)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(-iVar14 - 0x3feU)" ( (binary_expression "-iVar14 - 0x3feU" (unary_expression "-iVar14" - identifier) - number_literal) ))) < number_literal) )) (compound_statement "{\n      uVar13 = iVar14 + 0x41e;\n      uVar6 = uVar6 >> (-iVar14 - 0x3feU & 0x1f);\n    }" { (expression_statement "uVar13 = iVar14 + 0x41e;" (assignment_expression "uVar13 = iVar14 + 0x41e" identifier = (binary_expression "iVar14 + 0x41e" identifier + number_literal)) ;) (expression_statement "uVar6 = uVar6 >> (-iVar14 - 0x3feU & 0x1f);" (assignment_expression "uVar6 = uVar6 >> (-iVar14 - 0x3feU & 0x1f)" identifier = (binary_expression "uVar6 >> (-iVar14 - 0x3feU & 0x1f)" identifier >> (parenthesized_expression "(-iVar14 - 0x3feU & 0x1f)" ( (binary_expression "-iVar14 - 0x3feU & 0x1f" (binary_expression "-iVar14 - 0x3feU" (unary_expression "-iVar14" - identifier) - number_literal) & number_literal) )))) ;) }) (else_clause "else {\n      uVar6 = uVar11 >> (-iVar14 - 0x41eU & 0x1f);\n      if (-iVar14 - 0x41eU == 0) {\n        return uVar6;\n      }\n      uVar13 = iVar14 + 0x43e;\n      uVar11 = 0;\n    }" else (compound_statement "{\n      uVar6 = uVar11 >> (-iVar14 - 0x41eU & 0x1f);\n      if (-iVar14 - 0x41eU == 0) {\n        return uVar6;\n      }\n      uVar13 = iVar14 + 0x43e;\n      uVar11 = 0;\n    }" { (expression_statement "uVar6 = uVar11 >> (-iVar14 - 0x41eU & 0x1f);" (assignment_expression "uVar6 = uVar11 >> (-iVar14 - 0x41eU & 0x1f)" identifier = (binary_expression "uVar11 >> (-iVar14 - 0x41eU & 0x1f)" identifier >> (parenthesized_expression "(-iVar14 - 0x41eU & 0x1f)" ( (binary_expression "-iVar14 - 0x41eU & 0x1f" (binary_expression "-iVar14 - 0x41eU" (unary_expression "-iVar14" - identifier) - number_literal) & number_literal) )))) ;) (if_statement "if (-iVar14 - 0x41eU == 0) {\n        return uVar6;\n      }" if (parenthesized_expression "(-iVar14 - 0x41eU == 0)" ( (binary_expression "-iVar14 - 0x41eU == 0" (binary_expression "-iVar14 - 0x41eU" (unary_expression "-iVar14" - identifier) - number_literal) == number_literal) )) (compound_statement "{\n        return uVar6;\n      }" { (return_statement "return uVar6;" return identifier ;) })) (expression_statement "uVar13 = iVar14 + 0x43e;" (assignment_expression "uVar13 = iVar14 + 0x43e" identifier = (binary_expression "iVar14 + 0x43e" identifier + number_literal)) ;) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) }))) (expression_statement "uVar6 = uVar6 | uVar11 << (uVar13 & 0x1f);" (assignment_expression "uVar6 = uVar6 | uVar11 << (uVar13 & 0x1f)" identifier = (binary_expression "uVar6 | uVar11 << (uVar13 & 0x1f)" identifier | (binary_expression "uVar11 << (uVar13 & 0x1f)" identifier << (parenthesized_expression "(uVar13 & 0x1f)" ( (binary_expression "uVar13 & 0x1f" identifier & number_literal) ))))) ;) })) (return_statement "return uVar6;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = 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 = 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 = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = (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) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT << LIT) ))) / LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) / LIT) + LIT) )) * LIT) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = (unary_expression - (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT < LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT << LIT) ))) / LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) / LIT) + LIT) )) * LIT))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + IDENT) , (binary_expression IDENT + IDENT) , 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 *)) ) LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) / LIT) + LIT) )) * LIT))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (binary_expression IDENT + IDENT) , IDENT )))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT < LIT)) ;) }) while (parenthesized_expression ( (binary_expression LIT < IDENT) )) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression IDENT + LIT) ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression IDENT + LIT) ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression IDENT + LIT) ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression IDENT + LIT) ])) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT >= IDENT) )) (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 LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT >= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ (binary_expression IDENT >> IDENT) ]))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) | (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ (binary_expression IDENT + LIT) ])) >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) | (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) | (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ (binary_expression IDENT + LIT) ])) >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) | (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (expression_statement (assignment_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 * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = 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 )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression LIT < IDENT) )) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (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 (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) * LIT) + 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 (cast_expression ( (type_descriptor TYPE) ) IDENT) << 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 (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 ( ))) ;) })) }))) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) }))) (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 = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) * LIT) + LIT)) ;) }))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return IDENT ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) < IDENT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT >= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (parenthesized_expression ( (binary_expression IDENT >> IDENT) ))) )))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression IDENT - IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (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 LIT - IDENT)) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) << (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) & LIT) )))) ;) (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 = (binary_expression LIT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT | (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) >> (parenthesized_expression ( (binary_expression (unary_expression - IDENT) & LIT) )))) )) >> LIT)) ;) }))) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression - (parenthesized_expression ( IDENT ))) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + 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)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression - (parenthesized_expression ( IDENT ))) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (parenthesized_expression ( (binary_expression IDENT >> LIT) ))) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression IDENT - (parenthesized_expression ( (binary_expression IDENT + LIT) ))) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT - IDENT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) && (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))))) ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (return_statement return LIT ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (unary_expression - IDENT) - LIT) ))) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> (parenthesized_expression ( (binary_expression (binary_expression (unary_expression - IDENT) - LIT) & LIT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> (parenthesized_expression ( (binary_expression (binary_expression (unary_expression - IDENT) - LIT) & LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (unary_expression - IDENT) - LIT) == LIT) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))))) ;) })) (return_statement return IDENT ;) })))
(function_definition "uint __gmpn_jacobi_n(int *param_1,int *param_2,int param_3,int *param_4)\n\n{\n  bool bVar1;\n  int iVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  int *piVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  int *piVar9;\n  uint uVar10;\n  uint uVar11;\n  int *piVar12;\n  uint uVar13;\n  int iVar14;\n  int *piVar15;\n  int iVar16;\n  undefined *puVar17;\n  undefined1 *puVar18;\n  int *local_resc;\n  undefined1 auStack_80 [32];\n  int local_48;\n  undefined1 auStack_44 [24];\n  int local_2c;\n  \n  puVar17 = PTR___stack_chk_guard_0009d540;\n  puVar18 = auStack_80;\n  local_2c = *(int *)PTR___stack_chk_guard_0009d540;\n  local_resc = param_4;\n  if (param_3 < 1000) {\n    uVar13 = param_3 << 2;\n    local_48 = 0;\n    if (uVar13 < 0x7f01) goto LAB_0005471c;\nLAB_00054ab8:\n    local_48 = 0;\n    piVar5 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_48);\n  }\n  else {\n    uVar13 = (uint)(param_3 << 1) / 3;\n    iVar16 = param_3 - uVar13;\n    iVar2 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)(iVar16);\n    iVar14 = param_3 + uVar13 + -1;\n    if (iVar14 < iVar2) {\n      iVar14 = iVar2;\n    }\n    iVar14 = ((iVar16 + 1) / 2 + 1) * 4 + iVar14;\n    if (iVar14 < param_3) {\n      iVar14 = param_3;\n    }\n    uVar13 = iVar14 << 2;\n    local_48 = 0;\n    if (0x7f00 < uVar13) goto LAB_00054ab8;\nLAB_0005471c:\n    local_48 = 0;\n    iVar14 = -(uVar13 + 7 & 0xfffffff8);\n    puVar18 = auStack_80 + iVar14;\n    piVar5 = (int *)(auStack_44 + iVar14 + -0x1c);\n  }\n  if (param_3 < 1000) {\n    bVar1 = param_3 < 3;\n  }\n  else {\n    puVar3 = PTR_LAB_0009d07c + 0x45d0;\n    do {\n      uVar13 = (uint)(param_3 << 1) / 3;\n      iVar14 = param_3 - uVar13;\n      (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar14,piVar5);\n      *(int ***)(puVar18 + 0x10) = &local_resc;\n      *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n      iVar2 = (*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)\n                        (param_1 + uVar13,param_2 + uVar13,iVar14,auStack_44);\n      if (iVar2 < 1) {\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar5;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar3;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_1,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n      }\n      else {\n        *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n        *(uint *)(puVar18 + 0x10) = uVar13;\n        param_4 = param_2;\n        param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                            (auStack_44,uVar13 + iVar2,param_1);\n      }\n      bVar1 = param_3 < 3;\n    } while (999 < param_3);\n  }\n  puVar3 = PTR___gmpn_clz_tab_0009d18c;\n  if (!bVar1) {\n    puVar4 = PTR_LAB_0009d07c + 0x45d0;\n    piVar12 = param_1;\n    do {\n      while( true ) {\n        piVar15 = piVar5;\n        uVar13 = piVar12[param_3 + 0x3fffffff];\n        uVar7 = param_2[param_3 + 0x3fffffff];\n        uVar8 = uVar13 | uVar7;\n        uVar11 = param_2[param_3 + 0x3ffffffe];\n        uVar6 = piVar12[param_3 + 0x3ffffffe];\n        if (-1 < (int)uVar8) {\n          if (uVar8 < 0x10000) {\n            iVar14 = 0;\n            if (0xff < uVar8) {\n              iVar14 = 0x18;\n            }\n            iVar2 = 9;\n            if (0xff >= uVar8) {\n              iVar2 = 1;\n            }\n          }\n          else {\n            iVar14 = 0x10;\n            if (0xffffff < uVar8) {\n              iVar14 = 8;\n            }\n            iVar2 = 0x19;\n            if (0xffffff >= uVar8) {\n              iVar2 = 0x11;\n            }\n          }\n          uVar8 = iVar14 - (uint)(byte)puVar3[uVar8 >> iVar2];\n          uVar10 = 0x20 - uVar8;\n          uVar13 = uVar13 << (uVar8 & 0x1f) | uVar6 >> (uVar10 & 0x1f);\n          uVar6 = (uint)piVar12[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar6 << (uVar8 & 0x1f);\n          uVar7 = uVar7 << (uVar8 & 0x1f) | uVar11 >> (uVar10 & 0x1f);\n          uVar11 = (uint)param_2[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar11 << (uVar8 & 0x1f)\n          ;\n        }\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined1 **)(puVar18 + 0x10) = auStack_44;\n        iVar14 = (*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar13,uVar6,uVar7,uVar11);\n        if (iVar14 != 0) break;\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar15;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar4;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(piVar12,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n        param_1 = piVar12;\n        piVar5 = piVar15;\n        if (param_3 < 3) goto LAB_00054a30;\n      }\n      *(int *)(puVar18 + 0x10) = param_3;\n      param_4 = param_2;\n      param_3 = (*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488)\n                          (auStack_44,piVar15,piVar12);\n      param_1 = piVar15;\n      piVar5 = piVar12;\n      piVar12 = piVar15;\n    } while (2 < param_3);\n  }\nLAB_00054a30:\n  piVar5 = param_1;\n  piVar9 = param_2;\n  if ((int *)0xf < local_resc) {\n    piVar5 = param_2;\n    piVar9 = param_1;\n  }\n  if (param_3 == 1) {\n    iVar14 = *piVar5;\n    piVar9 = (int *)*piVar9;\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n    if (piVar9 == (int *)0x1) {\n      uVar13 = ((uint)local_resc & 1) * -2 + 1;\n    }\n    else {\n      uVar13 = (*(code *)PTR___gmpn_jacobi_base_0009d408)(iVar14,piVar9,(int)local_resc << 1);\n    }\n  }\n  else {\n    uVar13 = (*(code *)PTR___gmpn_jacobi_2_0009d324)(piVar5,piVar9,(uint)local_resc & 1);\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n  }\n  goto LAB_0005486c;\nLAB_00054840:\n  if (local_48 != 0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n  }\n  if (local_resc == (int *)0x1f) {\n    uVar13 = 0;\n  }\n  else {\n    uVar13 = ((uint)local_resc & 1) * -2 + 1;\n  }\nLAB_0005486c:\n  if (local_2c == *(int *)puVar17) {\n    return uVar13;\n  }\n  puVar17 = PTR___stack_chk_fail_0009d4d0;\n  (*(code *)PTR___stack_chk_fail_0009d4d0)();\n  if (piVar9 == (int *)0x0) {\n    return 0x7fff0000;\n  }\n  uVar13 = (int)piVar9 * 0x20;\n  if (0x7fffffffU - (int)param_4 < uVar13) {\n    return 0;\n  }\n  local_2c = local_2c + (int)piVar9 * 4;\n  uVar6 = *(uint *)(local_2c + -4);\n  if (uVar6 < 0x10000) {\n    iVar14 = 0x20;\n    if (0xff < uVar6) {\n      iVar14 = 0x18;\n    }\n    iVar2 = 9;\n    if (0xff >= uVar6) {\n      iVar2 = 1;\n    }\n    uVar7 = iVar14 - (uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> iVar2));\n    iVar14 = uVar7 + 1;\njoined_r0x00054cbc:\n    uVar10 = uVar6 << (uVar7 & 0x1f);\n    uVar11 = uVar10 >> 0xb;\n    iVar14 = (int)param_4 + (uVar13 - iVar14);\n    if ((int)uVar7 < 0xb) {\n      iVar2 = local_2c + -4;\n      uVar6 = uVar10 << 0x15;\n      uVar8 = 0xb - uVar7;\n    }\n    else {\n      if ((int)piVar9 < 2) {\n        uVar6 = 0;\n        goto LAB_00054c48;\n      }\n      iVar2 = local_2c + -8;\n      uVar6 = *(uint *)(local_2c + -8) << (uVar7 - 0xb & 0x1f);\n      piVar9 = (int *)((int)piVar9 + -1);\n      uVar8 = 0x2b - uVar7;\n      uVar11 = (uVar10 | *(uint *)(local_2c + -8) >> (-uVar7 & 0x1f)) >> 0xb;\n    }\n  }\n  else {\n    if (uVar6 < 0x1000000) {\n      iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x11));\n      uVar7 = iVar14 + 0x10;\n      iVar14 = iVar14 + 0x11;\n      goto joined_r0x00054cbc;\n    }\n    iVar2 = local_2c + -4;\n    iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x19));\n    uVar8 = iVar14 + 8;\n    uVar6 = uVar6 << (uVar8 & 0x1f);\n    uVar11 = uVar6 >> 0xb;\n    iVar14 = (int)param_4 + (uVar13 - (iVar14 + 9));\n    uVar6 = uVar6 << 0x15;\n    uVar8 = 0xb - uVar8;\n  }\n  if (((int)uVar8 < 0x20) && (1 < (int)piVar9)) {\n    uVar6 = uVar6 | *(uint *)(iVar2 + -4) >> (uVar8 & 0x1f);\n  }\nLAB_00054c48:\n  if (0x3ff < iVar14) {\n    return 0;\n  }\n  if (iVar14 < -0x3fe) {\n    if (iVar14 < -0x432) {\n      return uVar6;\n    }\n    if ((int)(-iVar14 - 0x3feU) < 0x20) {\n      uVar13 = iVar14 + 0x41e;\n      uVar6 = uVar6 >> (-iVar14 - 0x3feU & 0x1f);\n    }\n    else {\n      uVar6 = uVar11 >> (-iVar14 - 0x41eU & 0x1f);\n      if (-iVar14 - 0x41eU == 0) {\n        return uVar6;\n      }\n      uVar13 = iVar14 + 0x43e;\n      uVar11 = 0;\n    }\n    uVar6 = uVar6 | uVar11 << (uVar13 & 0x1f);\n  }\n  return uVar6;\n}" (type_identifier "uint") (function_declarator "__gmpn_jacobi_n(int *param_1,int *param_2,int param_3,int *param_4)" (identifier "__gmpn_jacobi_n") (parameter_list "(int *param_1,int *param_2,int param_3,int *param_4)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "int *param_4" (primitive_type "int") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) () ")"))) (compound_statement "{\n  bool bVar1;\n  int iVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  int *piVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  int *piVar9;\n  uint uVar10;\n  uint uVar11;\n  int *piVar12;\n  uint uVar13;\n  int iVar14;\n  int *piVar15;\n  int iVar16;\n  undefined *puVar17;\n  undefined1 *puVar18;\n  int *local_resc;\n  undefined1 auStack_80 [32];\n  int local_48;\n  undefined1 auStack_44 [24];\n  int local_2c;\n  \n  puVar17 = PTR___stack_chk_guard_0009d540;\n  puVar18 = auStack_80;\n  local_2c = *(int *)PTR___stack_chk_guard_0009d540;\n  local_resc = param_4;\n  if (param_3 < 1000) {\n    uVar13 = param_3 << 2;\n    local_48 = 0;\n    if (uVar13 < 0x7f01) goto LAB_0005471c;\nLAB_00054ab8:\n    local_48 = 0;\n    piVar5 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_48);\n  }\n  else {\n    uVar13 = (uint)(param_3 << 1) / 3;\n    iVar16 = param_3 - uVar13;\n    iVar2 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)(iVar16);\n    iVar14 = param_3 + uVar13 + -1;\n    if (iVar14 < iVar2) {\n      iVar14 = iVar2;\n    }\n    iVar14 = ((iVar16 + 1) / 2 + 1) * 4 + iVar14;\n    if (iVar14 < param_3) {\n      iVar14 = param_3;\n    }\n    uVar13 = iVar14 << 2;\n    local_48 = 0;\n    if (0x7f00 < uVar13) goto LAB_00054ab8;\nLAB_0005471c:\n    local_48 = 0;\n    iVar14 = -(uVar13 + 7 & 0xfffffff8);\n    puVar18 = auStack_80 + iVar14;\n    piVar5 = (int *)(auStack_44 + iVar14 + -0x1c);\n  }\n  if (param_3 < 1000) {\n    bVar1 = param_3 < 3;\n  }\n  else {\n    puVar3 = PTR_LAB_0009d07c + 0x45d0;\n    do {\n      uVar13 = (uint)(param_3 << 1) / 3;\n      iVar14 = param_3 - uVar13;\n      (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar14,piVar5);\n      *(int ***)(puVar18 + 0x10) = &local_resc;\n      *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n      iVar2 = (*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)\n                        (param_1 + uVar13,param_2 + uVar13,iVar14,auStack_44);\n      if (iVar2 < 1) {\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar5;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar3;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_1,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n      }\n      else {\n        *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n        *(uint *)(puVar18 + 0x10) = uVar13;\n        param_4 = param_2;\n        param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                            (auStack_44,uVar13 + iVar2,param_1);\n      }\n      bVar1 = param_3 < 3;\n    } while (999 < param_3);\n  }\n  puVar3 = PTR___gmpn_clz_tab_0009d18c;\n  if (!bVar1) {\n    puVar4 = PTR_LAB_0009d07c + 0x45d0;\n    piVar12 = param_1;\n    do {\n      while( true ) {\n        piVar15 = piVar5;\n        uVar13 = piVar12[param_3 + 0x3fffffff];\n        uVar7 = param_2[param_3 + 0x3fffffff];\n        uVar8 = uVar13 | uVar7;\n        uVar11 = param_2[param_3 + 0x3ffffffe];\n        uVar6 = piVar12[param_3 + 0x3ffffffe];\n        if (-1 < (int)uVar8) {\n          if (uVar8 < 0x10000) {\n            iVar14 = 0;\n            if (0xff < uVar8) {\n              iVar14 = 0x18;\n            }\n            iVar2 = 9;\n            if (0xff >= uVar8) {\n              iVar2 = 1;\n            }\n          }\n          else {\n            iVar14 = 0x10;\n            if (0xffffff < uVar8) {\n              iVar14 = 8;\n            }\n            iVar2 = 0x19;\n            if (0xffffff >= uVar8) {\n              iVar2 = 0x11;\n            }\n          }\n          uVar8 = iVar14 - (uint)(byte)puVar3[uVar8 >> iVar2];\n          uVar10 = 0x20 - uVar8;\n          uVar13 = uVar13 << (uVar8 & 0x1f) | uVar6 >> (uVar10 & 0x1f);\n          uVar6 = (uint)piVar12[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar6 << (uVar8 & 0x1f);\n          uVar7 = uVar7 << (uVar8 & 0x1f) | uVar11 >> (uVar10 & 0x1f);\n          uVar11 = (uint)param_2[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar11 << (uVar8 & 0x1f)\n          ;\n        }\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined1 **)(puVar18 + 0x10) = auStack_44;\n        iVar14 = (*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar13,uVar6,uVar7,uVar11);\n        if (iVar14 != 0) break;\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar15;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar4;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(piVar12,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n        param_1 = piVar12;\n        piVar5 = piVar15;\n        if (param_3 < 3) goto LAB_00054a30;\n      }\n      *(int *)(puVar18 + 0x10) = param_3;\n      param_4 = param_2;\n      param_3 = (*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488)\n                          (auStack_44,piVar15,piVar12);\n      param_1 = piVar15;\n      piVar5 = piVar12;\n      piVar12 = piVar15;\n    } while (2 < param_3);\n  }\nLAB_00054a30:\n  piVar5 = param_1;\n  piVar9 = param_2;\n  if ((int *)0xf < local_resc) {\n    piVar5 = param_2;\n    piVar9 = param_1;\n  }\n  if (param_3 == 1) {\n    iVar14 = *piVar5;\n    piVar9 = (int *)*piVar9;\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n    if (piVar9 == (int *)0x1) {\n      uVar13 = ((uint)local_resc & 1) * -2 + 1;\n    }\n    else {\n      uVar13 = (*(code *)PTR___gmpn_jacobi_base_0009d408)(iVar14,piVar9,(int)local_resc << 1);\n    }\n  }\n  else {\n    uVar13 = (*(code *)PTR___gmpn_jacobi_2_0009d324)(piVar5,piVar9,(uint)local_resc & 1);\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n  }\n  goto LAB_0005486c;\nLAB_00054840:\n  if (local_48 != 0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n  }\n  if (local_resc == (int *)0x1f) {\n    uVar13 = 0;\n  }\n  else {\n    uVar13 = ((uint)local_resc & 1) * -2 + 1;\n  }\nLAB_0005486c:\n  if (local_2c == *(int *)puVar17) {\n    return uVar13;\n  }\n  puVar17 = PTR___stack_chk_fail_0009d4d0;\n  (*(code *)PTR___stack_chk_fail_0009d4d0)();\n  if (piVar9 == (int *)0x0) {\n    return 0x7fff0000;\n  }\n  uVar13 = (int)piVar9 * 0x20;\n  if (0x7fffffffU - (int)param_4 < uVar13) {\n    return 0;\n  }\n  local_2c = local_2c + (int)piVar9 * 4;\n  uVar6 = *(uint *)(local_2c + -4);\n  if (uVar6 < 0x10000) {\n    iVar14 = 0x20;\n    if (0xff < uVar6) {\n      iVar14 = 0x18;\n    }\n    iVar2 = 9;\n    if (0xff >= uVar6) {\n      iVar2 = 1;\n    }\n    uVar7 = iVar14 - (uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> iVar2));\n    iVar14 = uVar7 + 1;\njoined_r0x00054cbc:\n    uVar10 = uVar6 << (uVar7 & 0x1f);\n    uVar11 = uVar10 >> 0xb;\n    iVar14 = (int)param_4 + (uVar13 - iVar14);\n    if ((int)uVar7 < 0xb) {\n      iVar2 = local_2c + -4;\n      uVar6 = uVar10 << 0x15;\n      uVar8 = 0xb - uVar7;\n    }\n    else {\n      if ((int)piVar9 < 2) {\n        uVar6 = 0;\n        goto LAB_00054c48;\n      }\n      iVar2 = local_2c + -8;\n      uVar6 = *(uint *)(local_2c + -8) << (uVar7 - 0xb & 0x1f);\n      piVar9 = (int *)((int)piVar9 + -1);\n      uVar8 = 0x2b - uVar7;\n      uVar11 = (uVar10 | *(uint *)(local_2c + -8) >> (-uVar7 & 0x1f)) >> 0xb;\n    }\n  }\n  else {\n    if (uVar6 < 0x1000000) {\n      iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x11));\n      uVar7 = iVar14 + 0x10;\n      iVar14 = iVar14 + 0x11;\n      goto joined_r0x00054cbc;\n    }\n    iVar2 = local_2c + -4;\n    iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x19));\n    uVar8 = iVar14 + 8;\n    uVar6 = uVar6 << (uVar8 & 0x1f);\n    uVar11 = uVar6 >> 0xb;\n    iVar14 = (int)param_4 + (uVar13 - (iVar14 + 9));\n    uVar6 = uVar6 << 0x15;\n    uVar8 = 0xb - uVar8;\n  }\n  if (((int)uVar8 < 0x20) && (1 < (int)piVar9)) {\n    uVar6 = uVar6 | *(uint *)(iVar2 + -4) >> (uVar8 & 0x1f);\n  }\nLAB_00054c48:\n  if (0x3ff < iVar14) {\n    return 0;\n  }\n  if (iVar14 < -0x3fe) {\n    if (iVar14 < -0x432) {\n      return uVar6;\n    }\n    if ((int)(-iVar14 - 0x3feU) < 0x20) {\n      uVar13 = iVar14 + 0x41e;\n      uVar6 = uVar6 >> (-iVar14 - 0x3feU & 0x1f);\n    }\n    else {\n      uVar6 = uVar11 >> (-iVar14 - 0x41eU & 0x1f);\n      if (-iVar14 - 0x41eU == 0) {\n        return uVar6;\n      }\n      uVar13 = iVar14 + 0x43e;\n      uVar11 = 0;\n    }\n    uVar6 = uVar6 | uVar11 << (uVar13 & 0x1f);\n  }\n  return uVar6;\n}" ({ "{") (declaration "bool bVar1;" (primitive_type "bool") (identifier "bVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "undefined *puVar3;" (type_identifier "undefined") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "undefined *puVar4;" (type_identifier "undefined") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "int *piVar9;" (primitive_type "int") (pointer_declarator "*piVar9" (* "*") (identifier "piVar9")) (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "int *piVar12;" (primitive_type "int") (pointer_declarator "*piVar12" (* "*") (identifier "piVar12")) (; ";")) (declaration "uint uVar13;" (type_identifier "uint") (identifier "uVar13") (; ";")) (declaration "int iVar14;" (primitive_type "int") (identifier "iVar14") (; ";")) (declaration "int *piVar15;" (primitive_type "int") (pointer_declarator "*piVar15" (* "*") (identifier "piVar15")) (; ";")) (declaration "int iVar16;" (primitive_type "int") (identifier "iVar16") (; ";")) (declaration "undefined *puVar17;" (type_identifier "undefined") (pointer_declarator "*puVar17" (* "*") (identifier "puVar17")) (; ";")) (declaration "undefined1 *puVar18;" (type_identifier "undefined1") (pointer_declarator "*puVar18" (* "*") (identifier "puVar18")) (; ";")) (declaration "int *local_resc;" (primitive_type "int") (pointer_declarator "*local_resc" (* "*") (identifier "local_resc")) (; ";")) (declaration "undefined1 auStack_80 [32];" (type_identifier "undefined1") (array_declarator "auStack_80 [32]" (identifier "auStack_80") ([ "[") (number_literal "32") (] "]")) (; ";")) (declaration "int local_48;" (primitive_type "int") (identifier "local_48") (; ";")) (declaration "undefined1 auStack_44 [24];" (type_identifier "undefined1") (array_declarator "auStack_44 [24]" (identifier "auStack_44") ([ "[") (number_literal "24") (] "]")) (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (expression_statement "puVar17 = PTR___stack_chk_guard_0009d540;" (assignment_expression "puVar17 = PTR___stack_chk_guard_0009d540" (identifier "puVar17") (= "=") (identifier "PTR___stack_chk_guard_0009d540")) (; ";")) (expression_statement "puVar18 = auStack_80;" (assignment_expression "puVar18 = auStack_80" (identifier "puVar18") (= "=") (identifier "auStack_80")) (; ";")) (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 "local_resc = param_4;" (assignment_expression "local_resc = param_4" (identifier "local_resc") (= "=") (identifier "param_4")) (; ";")) (if_statement "if (param_3 < 1000) {\n    uVar13 = param_3 << 2;\n    local_48 = 0;\n    if (uVar13 < 0x7f01) goto LAB_0005471c;\nLAB_00054ab8:\n    local_48 = 0;\n    piVar5 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_48);\n  }\n  else {\n    uVar13 = (uint)(param_3 << 1) / 3;\n    iVar16 = param_3 - uVar13;\n    iVar2 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)(iVar16);\n    iVar14 = param_3 + uVar13 + -1;\n    if (iVar14 < iVar2) {\n      iVar14 = iVar2;\n    }\n    iVar14 = ((iVar16 + 1) / 2 + 1) * 4 + iVar14;\n    if (iVar14 < param_3) {\n      iVar14 = param_3;\n    }\n    uVar13 = iVar14 << 2;\n    local_48 = 0;\n    if (0x7f00 < uVar13) goto LAB_00054ab8;\nLAB_0005471c:\n    local_48 = 0;\n    iVar14 = -(uVar13 + 7 & 0xfffffff8);\n    puVar18 = auStack_80 + iVar14;\n    piVar5 = (int *)(auStack_44 + iVar14 + -0x1c);\n  }" (if "if") (parenthesized_expression "(param_3 < 1000)" (( "(") (binary_expression "param_3 < 1000" (identifier "param_3") (< "<") (number_literal "1000")) () ")")) (compound_statement "{\n    uVar13 = param_3 << 2;\n    local_48 = 0;\n    if (uVar13 < 0x7f01) goto LAB_0005471c;\nLAB_00054ab8:\n    local_48 = 0;\n    piVar5 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_48);\n  }" ({ "{") (expression_statement "uVar13 = param_3 << 2;" (assignment_expression "uVar13 = param_3 << 2" (identifier "uVar13") (= "=") (binary_expression "param_3 << 2" (identifier "param_3") (<< "<<") (number_literal "2"))) (; ";")) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" (identifier "local_48") (= "=") (number_literal "0")) (; ";")) (if_statement "if (uVar13 < 0x7f01) goto LAB_0005471c;" (if "if") (parenthesized_expression "(uVar13 < 0x7f01)" (( "(") (binary_expression "uVar13 < 0x7f01" (identifier "uVar13") (< "<") (number_literal "0x7f01")) () ")")) (goto_statement "goto LAB_0005471c;" (goto "goto") (statement_identifier "LAB_0005471c") (; ";"))) (labeled_statement "LAB_00054ab8:\n    local_48 = 0;" (statement_identifier "LAB_00054ab8") (: ":") (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" (identifier "local_48") (= "=") (number_literal "0")) (; ";"))) (expression_statement "piVar5 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_48);" (assignment_expression "piVar5 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_48)" (identifier "piVar5") (= "=") (cast_expression "(int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_48)" (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_48)" (( "(") (pointer_expression "&local_48" (& "&") (identifier "local_48")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n    uVar13 = (uint)(param_3 << 1) / 3;\n    iVar16 = param_3 - uVar13;\n    iVar2 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)(iVar16);\n    iVar14 = param_3 + uVar13 + -1;\n    if (iVar14 < iVar2) {\n      iVar14 = iVar2;\n    }\n    iVar14 = ((iVar16 + 1) / 2 + 1) * 4 + iVar14;\n    if (iVar14 < param_3) {\n      iVar14 = param_3;\n    }\n    uVar13 = iVar14 << 2;\n    local_48 = 0;\n    if (0x7f00 < uVar13) goto LAB_00054ab8;\nLAB_0005471c:\n    local_48 = 0;\n    iVar14 = -(uVar13 + 7 & 0xfffffff8);\n    puVar18 = auStack_80 + iVar14;\n    piVar5 = (int *)(auStack_44 + iVar14 + -0x1c);\n  }" (else "else") (compound_statement "{\n    uVar13 = (uint)(param_3 << 1) / 3;\n    iVar16 = param_3 - uVar13;\n    iVar2 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)(iVar16);\n    iVar14 = param_3 + uVar13 + -1;\n    if (iVar14 < iVar2) {\n      iVar14 = iVar2;\n    }\n    iVar14 = ((iVar16 + 1) / 2 + 1) * 4 + iVar14;\n    if (iVar14 < param_3) {\n      iVar14 = param_3;\n    }\n    uVar13 = iVar14 << 2;\n    local_48 = 0;\n    if (0x7f00 < uVar13) goto LAB_00054ab8;\nLAB_0005471c:\n    local_48 = 0;\n    iVar14 = -(uVar13 + 7 & 0xfffffff8);\n    puVar18 = auStack_80 + iVar14;\n    piVar5 = (int *)(auStack_44 + iVar14 + -0x1c);\n  }" ({ "{") (expression_statement "uVar13 = (uint)(param_3 << 1) / 3;" (assignment_expression "uVar13 = (uint)(param_3 << 1) / 3" (identifier "uVar13") (= "=") (binary_expression "(uint)(param_3 << 1) / 3" (call_expression "(uint)(param_3 << 1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_3 << 1)" (( "(") (binary_expression "param_3 << 1" (identifier "param_3") (<< "<<") (number_literal "1")) () ")"))) (/ "/") (number_literal "3"))) (; ";")) (expression_statement "iVar16 = param_3 - uVar13;" (assignment_expression "iVar16 = param_3 - uVar13" (identifier "iVar16") (= "=") (binary_expression "param_3 - uVar13" (identifier "param_3") (- "-") (identifier "uVar13"))) (; ";")) (expression_statement "iVar2 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)(iVar16);" (assignment_expression "iVar2 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)(iVar16)" (identifier "iVar2") (= "=") (call_expression "(*(code *)PTR___gmpn_hgcd_itch_0009d464)(iVar16)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_itch_0009d464)" (( "(") (pointer_expression "*(code *)PTR___gmpn_hgcd_itch_0009d464" (* "*") (cast_expression "(code *)PTR___gmpn_hgcd_itch_0009d464" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_hgcd_itch_0009d464"))) () ")")) (argument_list "(iVar16)" (( "(") (identifier "iVar16") () ")")))) (; ";")) (expression_statement "iVar14 = param_3 + uVar13 + -1;" (assignment_expression "iVar14 = param_3 + uVar13 + -1" (identifier "iVar14") (= "=") (binary_expression "param_3 + uVar13 + -1" (binary_expression "param_3 + uVar13" (identifier "param_3") (+ "+") (identifier "uVar13")) (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar14 < iVar2) {\n      iVar14 = iVar2;\n    }" (if "if") (parenthesized_expression "(iVar14 < iVar2)" (( "(") (binary_expression "iVar14 < iVar2" (identifier "iVar14") (< "<") (identifier "iVar2")) () ")")) (compound_statement "{\n      iVar14 = iVar2;\n    }" ({ "{") (expression_statement "iVar14 = iVar2;" (assignment_expression "iVar14 = iVar2" (identifier "iVar14") (= "=") (identifier "iVar2")) (; ";")) (} "}"))) (expression_statement "iVar14 = ((iVar16 + 1) / 2 + 1) * 4 + iVar14;" (assignment_expression "iVar14 = ((iVar16 + 1) / 2 + 1) * 4 + iVar14" (identifier "iVar14") (= "=") (binary_expression "((iVar16 + 1) / 2 + 1) * 4 + iVar14" (binary_expression "((iVar16 + 1) / 2 + 1) * 4" (parenthesized_expression "((iVar16 + 1) / 2 + 1)" (( "(") (binary_expression "(iVar16 + 1) / 2 + 1" (binary_expression "(iVar16 + 1) / 2" (parenthesized_expression "(iVar16 + 1)" (( "(") (binary_expression "iVar16 + 1" (identifier "iVar16") (+ "+") (number_literal "1")) () ")")) (/ "/") (number_literal "2")) (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "4")) (+ "+") (identifier "iVar14"))) (; ";")) (if_statement "if (iVar14 < param_3) {\n      iVar14 = param_3;\n    }" (if "if") (parenthesized_expression "(iVar14 < param_3)" (( "(") (binary_expression "iVar14 < param_3" (identifier "iVar14") (< "<") (identifier "param_3")) () ")")) (compound_statement "{\n      iVar14 = param_3;\n    }" ({ "{") (expression_statement "iVar14 = param_3;" (assignment_expression "iVar14 = param_3" (identifier "iVar14") (= "=") (identifier "param_3")) (; ";")) (} "}"))) (expression_statement "uVar13 = iVar14 << 2;" (assignment_expression "uVar13 = iVar14 << 2" (identifier "uVar13") (= "=") (binary_expression "iVar14 << 2" (identifier "iVar14") (<< "<<") (number_literal "2"))) (; ";")) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" (identifier "local_48") (= "=") (number_literal "0")) (; ";")) (if_statement "if (0x7f00 < uVar13) goto LAB_00054ab8;" (if "if") (parenthesized_expression "(0x7f00 < uVar13)" (( "(") (binary_expression "0x7f00 < uVar13" (number_literal "0x7f00") (< "<") (identifier "uVar13")) () ")")) (goto_statement "goto LAB_00054ab8;" (goto "goto") (statement_identifier "LAB_00054ab8") (; ";"))) (labeled_statement "LAB_0005471c:\n    local_48 = 0;" (statement_identifier "LAB_0005471c") (: ":") (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" (identifier "local_48") (= "=") (number_literal "0")) (; ";"))) (expression_statement "iVar14 = -(uVar13 + 7 & 0xfffffff8);" (assignment_expression "iVar14 = -(uVar13 + 7 & 0xfffffff8)" (identifier "iVar14") (= "=") (unary_expression "-(uVar13 + 7 & 0xfffffff8)" (- "-") (parenthesized_expression "(uVar13 + 7 & 0xfffffff8)" (( "(") (binary_expression "uVar13 + 7 & 0xfffffff8" (binary_expression "uVar13 + 7" (identifier "uVar13") (+ "+") (number_literal "7")) (& "&") (number_literal "0xfffffff8")) () ")")))) (; ";")) (expression_statement "puVar18 = auStack_80 + iVar14;" (assignment_expression "puVar18 = auStack_80 + iVar14" (identifier "puVar18") (= "=") (binary_expression "auStack_80 + iVar14" (identifier "auStack_80") (+ "+") (identifier "iVar14"))) (; ";")) (expression_statement "piVar5 = (int *)(auStack_44 + iVar14 + -0x1c);" (assignment_expression "piVar5 = (int *)(auStack_44 + iVar14 + -0x1c)" (identifier "piVar5") (= "=") (cast_expression "(int *)(auStack_44 + iVar14 + -0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(auStack_44 + iVar14 + -0x1c)" (( "(") (binary_expression "auStack_44 + iVar14 + -0x1c" (binary_expression "auStack_44 + iVar14" (identifier "auStack_44") (+ "+") (identifier "iVar14")) (+ "+") (number_literal "-0x1c")) () ")")))) (; ";")) (} "}")))) (if_statement "if (param_3 < 1000) {\n    bVar1 = param_3 < 3;\n  }\n  else {\n    puVar3 = PTR_LAB_0009d07c + 0x45d0;\n    do {\n      uVar13 = (uint)(param_3 << 1) / 3;\n      iVar14 = param_3 - uVar13;\n      (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar14,piVar5);\n      *(int ***)(puVar18 + 0x10) = &local_resc;\n      *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n      iVar2 = (*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)\n                        (param_1 + uVar13,param_2 + uVar13,iVar14,auStack_44);\n      if (iVar2 < 1) {\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar5;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar3;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_1,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n      }\n      else {\n        *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n        *(uint *)(puVar18 + 0x10) = uVar13;\n        param_4 = param_2;\n        param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                            (auStack_44,uVar13 + iVar2,param_1);\n      }\n      bVar1 = param_3 < 3;\n    } while (999 < param_3);\n  }" (if "if") (parenthesized_expression "(param_3 < 1000)" (( "(") (binary_expression "param_3 < 1000" (identifier "param_3") (< "<") (number_literal "1000")) () ")")) (compound_statement "{\n    bVar1 = param_3 < 3;\n  }" ({ "{") (expression_statement "bVar1 = param_3 < 3;" (assignment_expression "bVar1 = param_3 < 3" (identifier "bVar1") (= "=") (binary_expression "param_3 < 3" (identifier "param_3") (< "<") (number_literal "3"))) (; ";")) (} "}")) (else_clause "else {\n    puVar3 = PTR_LAB_0009d07c + 0x45d0;\n    do {\n      uVar13 = (uint)(param_3 << 1) / 3;\n      iVar14 = param_3 - uVar13;\n      (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar14,piVar5);\n      *(int ***)(puVar18 + 0x10) = &local_resc;\n      *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n      iVar2 = (*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)\n                        (param_1 + uVar13,param_2 + uVar13,iVar14,auStack_44);\n      if (iVar2 < 1) {\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar5;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar3;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_1,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n      }\n      else {\n        *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n        *(uint *)(puVar18 + 0x10) = uVar13;\n        param_4 = param_2;\n        param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                            (auStack_44,uVar13 + iVar2,param_1);\n      }\n      bVar1 = param_3 < 3;\n    } while (999 < param_3);\n  }" (else "else") (compound_statement "{\n    puVar3 = PTR_LAB_0009d07c + 0x45d0;\n    do {\n      uVar13 = (uint)(param_3 << 1) / 3;\n      iVar14 = param_3 - uVar13;\n      (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar14,piVar5);\n      *(int ***)(puVar18 + 0x10) = &local_resc;\n      *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n      iVar2 = (*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)\n                        (param_1 + uVar13,param_2 + uVar13,iVar14,auStack_44);\n      if (iVar2 < 1) {\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar5;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar3;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_1,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n      }\n      else {\n        *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n        *(uint *)(puVar18 + 0x10) = uVar13;\n        param_4 = param_2;\n        param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                            (auStack_44,uVar13 + iVar2,param_1);\n      }\n      bVar1 = param_3 < 3;\n    } while (999 < param_3);\n  }" ({ "{") (expression_statement "puVar3 = PTR_LAB_0009d07c + 0x45d0;" (assignment_expression "puVar3 = PTR_LAB_0009d07c + 0x45d0" (identifier "puVar3") (= "=") (binary_expression "PTR_LAB_0009d07c + 0x45d0" (identifier "PTR_LAB_0009d07c") (+ "+") (number_literal "0x45d0"))) (; ";")) (do_statement "do {\n      uVar13 = (uint)(param_3 << 1) / 3;\n      iVar14 = param_3 - uVar13;\n      (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar14,piVar5);\n      *(int ***)(puVar18 + 0x10) = &local_resc;\n      *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n      iVar2 = (*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)\n                        (param_1 + uVar13,param_2 + uVar13,iVar14,auStack_44);\n      if (iVar2 < 1) {\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar5;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar3;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_1,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n      }\n      else {\n        *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n        *(uint *)(puVar18 + 0x10) = uVar13;\n        param_4 = param_2;\n        param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                            (auStack_44,uVar13 + iVar2,param_1);\n      }\n      bVar1 = param_3 < 3;\n    } while (999 < param_3);" (do "do") (compound_statement "{\n      uVar13 = (uint)(param_3 << 1) / 3;\n      iVar14 = param_3 - uVar13;\n      (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar14,piVar5);\n      *(int ***)(puVar18 + 0x10) = &local_resc;\n      *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n      iVar2 = (*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)\n                        (param_1 + uVar13,param_2 + uVar13,iVar14,auStack_44);\n      if (iVar2 < 1) {\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar5;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar3;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_1,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n      }\n      else {\n        *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n        *(uint *)(puVar18 + 0x10) = uVar13;\n        param_4 = param_2;\n        param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                            (auStack_44,uVar13 + iVar2,param_1);\n      }\n      bVar1 = param_3 < 3;\n    }" ({ "{") (expression_statement "uVar13 = (uint)(param_3 << 1) / 3;" (assignment_expression "uVar13 = (uint)(param_3 << 1) / 3" (identifier "uVar13") (= "=") (binary_expression "(uint)(param_3 << 1) / 3" (call_expression "(uint)(param_3 << 1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_3 << 1)" (( "(") (binary_expression "param_3 << 1" (identifier "param_3") (<< "<<") (number_literal "1")) () ")"))) (/ "/") (number_literal "3"))) (; ";")) (expression_statement "iVar14 = param_3 - uVar13;" (assignment_expression "iVar14 = param_3 - uVar13" (identifier "iVar14") (= "=") (binary_expression "param_3 - uVar13" (identifier "param_3") (- "-") (identifier "uVar13"))) (; ";")) (expression_statement "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar14,piVar5);" (call_expression "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar14,piVar5)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)" (( "(") (pointer_expression "*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc" (* "*") (cast_expression "(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_hgcd_matrix_init_0009d3bc"))) () ")")) (argument_list "(auStack_44,iVar14,piVar5)" (( "(") (identifier "auStack_44") (, ",") (identifier "iVar14") (, ",") (identifier "piVar5") () ")"))) (; ";")) (expression_statement "*(int ***)(puVar18 + 0x10) = &local_resc;" (assignment_expression "*(int ***)(puVar18 + 0x10) = &local_resc" (pointer_expression "*(int ***)(puVar18 + 0x10)" (* "*") (cast_expression "(int ***)(puVar18 + 0x10)" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(puVar18 + 0x10)" (( "(") (binary_expression "puVar18 + 0x10" (identifier "puVar18") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (pointer_expression "&local_resc" (& "&") (identifier "local_resc"))) (; ";")) (expression_statement "*(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;" (assignment_expression "*(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4" (pointer_expression "*(int **)(puVar18 + 0x14)" (* "*") (cast_expression "(int **)(puVar18 + 0x14)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar18 + 0x14)" (( "(") (binary_expression "puVar18 + 0x14" (identifier "puVar18") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (binary_expression "piVar5 + ((iVar14 + 1) / 2 + 1) * 4" (identifier "piVar5") (+ "+") (binary_expression "((iVar14 + 1) / 2 + 1) * 4" (parenthesized_expression "((iVar14 + 1) / 2 + 1)" (( "(") (binary_expression "(iVar14 + 1) / 2 + 1" (binary_expression "(iVar14 + 1) / 2" (parenthesized_expression "(iVar14 + 1)" (( "(") (binary_expression "iVar14 + 1" (identifier "iVar14") (+ "+") (number_literal "1")) () ")")) (/ "/") (number_literal "2")) (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "4")))) (; ";")) (expression_statement "iVar2 = (*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)\n                        (param_1 + uVar13,param_2 + uVar13,iVar14,auStack_44);" (assignment_expression "iVar2 = (*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)\n                        (param_1 + uVar13,param_2 + uVar13,iVar14,auStack_44)" (identifier "iVar2") (= "=") (call_expression "(*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)\n                        (param_1 + uVar13,param_2 + uVar13,iVar14,auStack_44)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)" (( "(") (pointer_expression "*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8" (* "*") (cast_expression "(code *)PTR___gmpn_hgcd_jacobi_0009d0e8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_hgcd_jacobi_0009d0e8"))) () ")")) (argument_list "(param_1 + uVar13,param_2 + uVar13,iVar14,auStack_44)" (( "(") (binary_expression "param_1 + uVar13" (identifier "param_1") (+ "+") (identifier "uVar13")) (, ",") (binary_expression "param_2 + uVar13" (identifier "param_2") (+ "+") (identifier "uVar13")) (, ",") (identifier "iVar14") (, ",") (identifier "auStack_44") () ")")))) (; ";")) (if_statement "if (iVar2 < 1) {\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar5;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar3;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_1,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n      }\n      else {\n        *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n        *(uint *)(puVar18 + 0x10) = uVar13;\n        param_4 = param_2;\n        param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                            (auStack_44,uVar13 + iVar2,param_1);\n      }" (if "if") (parenthesized_expression "(iVar2 < 1)" (( "(") (binary_expression "iVar2 < 1" (identifier "iVar2") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar5;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar3;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_1,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n      }" ({ "{") (expression_statement "param_4 = (int *)0x0;" (assignment_expression "param_4 = (int *)0x0" (identifier "param_4") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "*(int **)(puVar18 + 0x18) = piVar5;" (assignment_expression "*(int **)(puVar18 + 0x18) = piVar5" (pointer_expression "*(int **)(puVar18 + 0x18)" (* "*") (cast_expression "(int **)(puVar18 + 0x18)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar18 + 0x18)" (( "(") (binary_expression "puVar18 + 0x18" (identifier "puVar18") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "piVar5")) (; ";")) (expression_statement "*(int ***)(puVar18 + 0x14) = &local_resc;" (assignment_expression "*(int ***)(puVar18 + 0x14) = &local_resc" (pointer_expression "*(int ***)(puVar18 + 0x14)" (* "*") (cast_expression "(int ***)(puVar18 + 0x14)" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(puVar18 + 0x14)" (( "(") (binary_expression "puVar18 + 0x14" (identifier "puVar18") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (pointer_expression "&local_resc" (& "&") (identifier "local_resc"))) (; ";")) (expression_statement "*(undefined **)(puVar18 + 0x10) = puVar3;" (assignment_expression "*(undefined **)(puVar18 + 0x10) = puVar3" (pointer_expression "*(undefined **)(puVar18 + 0x10)" (* "*") (cast_expression "(undefined **)(puVar18 + 0x10)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar18 + 0x10)" (( "(") (binary_expression "puVar18 + 0x10" (identifier "puVar18") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "puVar3")) (; ";")) (expression_statement "piVar9 = param_2;" (assignment_expression "piVar9 = param_2" (identifier "piVar9") (= "=") (identifier "param_2")) (; ";")) (expression_statement "param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_1,param_2,param_3);" (assignment_expression "param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_1,param_2,param_3)" (identifier "param_3") (= "=") (call_expression "(*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_1,param_2,param_3)" (parenthesized_expression "(*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)" (( "(") (pointer_expression "*(code *)PTR___gmpn_gcd_subdiv_step_0009d118" (* "*") (cast_expression "(code *)PTR___gmpn_gcd_subdiv_step_0009d118" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_gcd_subdiv_step_0009d118"))) () ")")) (argument_list "(param_1,param_2,param_3)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "param_3") () ")")))) (; ";")) (if_statement "if (param_3 == 0) goto LAB_00054840;" (if "if") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00054840;" (goto "goto") (statement_identifier "LAB_00054840") (; ";"))) (} "}")) (else_clause "else {\n        *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n        *(uint *)(puVar18 + 0x10) = uVar13;\n        param_4 = param_2;\n        param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                            (auStack_44,uVar13 + iVar2,param_1);\n      }" (else "else") (compound_statement "{\n        *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;\n        *(uint *)(puVar18 + 0x10) = uVar13;\n        param_4 = param_2;\n        param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                            (auStack_44,uVar13 + iVar2,param_1);\n      }" ({ "{") (expression_statement "*(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;" (assignment_expression "*(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4" (pointer_expression "*(int **)(puVar18 + 0x14)" (* "*") (cast_expression "(int **)(puVar18 + 0x14)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar18 + 0x14)" (( "(") (binary_expression "puVar18 + 0x14" (identifier "puVar18") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (binary_expression "piVar5 + ((iVar14 + 1) / 2 + 1) * 4" (identifier "piVar5") (+ "+") (binary_expression "((iVar14 + 1) / 2 + 1) * 4" (parenthesized_expression "((iVar14 + 1) / 2 + 1)" (( "(") (binary_expression "(iVar14 + 1) / 2 + 1" (binary_expression "(iVar14 + 1) / 2" (parenthesized_expression "(iVar14 + 1)" (( "(") (binary_expression "iVar14 + 1" (identifier "iVar14") (+ "+") (number_literal "1")) () ")")) (/ "/") (number_literal "2")) (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "4")))) (; ";")) (expression_statement "*(uint *)(puVar18 + 0x10) = uVar13;" (assignment_expression "*(uint *)(puVar18 + 0x10) = uVar13" (pointer_expression "*(uint *)(puVar18 + 0x10)" (* "*") (cast_expression "(uint *)(puVar18 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar18 + 0x10)" (( "(") (binary_expression "puVar18 + 0x10" (identifier "puVar18") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "uVar13")) (; ";")) (expression_statement "param_4 = param_2;" (assignment_expression "param_4 = param_2" (identifier "param_4") (= "=") (identifier "param_2")) (; ";")) (expression_statement "param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                            (auStack_44,uVar13 + iVar2,param_1);" (assignment_expression "param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                            (auStack_44,uVar13 + iVar2,param_1)" (identifier "param_3") (= "=") (call_expression "(*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)\n                            (auStack_44,uVar13 + iVar2,param_1)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)" (( "(") (pointer_expression "*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8" (* "*") (cast_expression "(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_hgcd_matrix_adjust_0009d3a8"))) () ")")) (argument_list "(auStack_44,uVar13 + iVar2,param_1)" (( "(") (identifier "auStack_44") (, ",") (binary_expression "uVar13 + iVar2" (identifier "uVar13") (+ "+") (identifier "iVar2")) (, ",") (identifier "param_1") () ")")))) (; ";")) (} "}")))) (expression_statement "bVar1 = param_3 < 3;" (assignment_expression "bVar1 = param_3 < 3" (identifier "bVar1") (= "=") (binary_expression "param_3 < 3" (identifier "param_3") (< "<") (number_literal "3"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(999 < param_3)" (( "(") (binary_expression "999 < param_3" (number_literal "999") (< "<") (identifier "param_3")) () ")")) (; ";")) (} "}")))) (expression_statement "puVar3 = PTR___gmpn_clz_tab_0009d18c;" (assignment_expression "puVar3 = PTR___gmpn_clz_tab_0009d18c" (identifier "puVar3") (= "=") (identifier "PTR___gmpn_clz_tab_0009d18c")) (; ";")) (if_statement "if (!bVar1) {\n    puVar4 = PTR_LAB_0009d07c + 0x45d0;\n    piVar12 = param_1;\n    do {\n      while( true ) {\n        piVar15 = piVar5;\n        uVar13 = piVar12[param_3 + 0x3fffffff];\n        uVar7 = param_2[param_3 + 0x3fffffff];\n        uVar8 = uVar13 | uVar7;\n        uVar11 = param_2[param_3 + 0x3ffffffe];\n        uVar6 = piVar12[param_3 + 0x3ffffffe];\n        if (-1 < (int)uVar8) {\n          if (uVar8 < 0x10000) {\n            iVar14 = 0;\n            if (0xff < uVar8) {\n              iVar14 = 0x18;\n            }\n            iVar2 = 9;\n            if (0xff >= uVar8) {\n              iVar2 = 1;\n            }\n          }\n          else {\n            iVar14 = 0x10;\n            if (0xffffff < uVar8) {\n              iVar14 = 8;\n            }\n            iVar2 = 0x19;\n            if (0xffffff >= uVar8) {\n              iVar2 = 0x11;\n            }\n          }\n          uVar8 = iVar14 - (uint)(byte)puVar3[uVar8 >> iVar2];\n          uVar10 = 0x20 - uVar8;\n          uVar13 = uVar13 << (uVar8 & 0x1f) | uVar6 >> (uVar10 & 0x1f);\n          uVar6 = (uint)piVar12[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar6 << (uVar8 & 0x1f);\n          uVar7 = uVar7 << (uVar8 & 0x1f) | uVar11 >> (uVar10 & 0x1f);\n          uVar11 = (uint)param_2[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar11 << (uVar8 & 0x1f)\n          ;\n        }\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined1 **)(puVar18 + 0x10) = auStack_44;\n        iVar14 = (*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar13,uVar6,uVar7,uVar11);\n        if (iVar14 != 0) break;\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar15;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar4;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(piVar12,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n        param_1 = piVar12;\n        piVar5 = piVar15;\n        if (param_3 < 3) goto LAB_00054a30;\n      }\n      *(int *)(puVar18 + 0x10) = param_3;\n      param_4 = param_2;\n      param_3 = (*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488)\n                          (auStack_44,piVar15,piVar12);\n      param_1 = piVar15;\n      piVar5 = piVar12;\n      piVar12 = piVar15;\n    } while (2 < param_3);\n  }" (if "if") (parenthesized_expression "(!bVar1)" (( "(") (unary_expression "!bVar1" (! "!") (identifier "bVar1")) () ")")) (compound_statement "{\n    puVar4 = PTR_LAB_0009d07c + 0x45d0;\n    piVar12 = param_1;\n    do {\n      while( true ) {\n        piVar15 = piVar5;\n        uVar13 = piVar12[param_3 + 0x3fffffff];\n        uVar7 = param_2[param_3 + 0x3fffffff];\n        uVar8 = uVar13 | uVar7;\n        uVar11 = param_2[param_3 + 0x3ffffffe];\n        uVar6 = piVar12[param_3 + 0x3ffffffe];\n        if (-1 < (int)uVar8) {\n          if (uVar8 < 0x10000) {\n            iVar14 = 0;\n            if (0xff < uVar8) {\n              iVar14 = 0x18;\n            }\n            iVar2 = 9;\n            if (0xff >= uVar8) {\n              iVar2 = 1;\n            }\n          }\n          else {\n            iVar14 = 0x10;\n            if (0xffffff < uVar8) {\n              iVar14 = 8;\n            }\n            iVar2 = 0x19;\n            if (0xffffff >= uVar8) {\n              iVar2 = 0x11;\n            }\n          }\n          uVar8 = iVar14 - (uint)(byte)puVar3[uVar8 >> iVar2];\n          uVar10 = 0x20 - uVar8;\n          uVar13 = uVar13 << (uVar8 & 0x1f) | uVar6 >> (uVar10 & 0x1f);\n          uVar6 = (uint)piVar12[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar6 << (uVar8 & 0x1f);\n          uVar7 = uVar7 << (uVar8 & 0x1f) | uVar11 >> (uVar10 & 0x1f);\n          uVar11 = (uint)param_2[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar11 << (uVar8 & 0x1f)\n          ;\n        }\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined1 **)(puVar18 + 0x10) = auStack_44;\n        iVar14 = (*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar13,uVar6,uVar7,uVar11);\n        if (iVar14 != 0) break;\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar15;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar4;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(piVar12,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n        param_1 = piVar12;\n        piVar5 = piVar15;\n        if (param_3 < 3) goto LAB_00054a30;\n      }\n      *(int *)(puVar18 + 0x10) = param_3;\n      param_4 = param_2;\n      param_3 = (*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488)\n                          (auStack_44,piVar15,piVar12);\n      param_1 = piVar15;\n      piVar5 = piVar12;\n      piVar12 = piVar15;\n    } while (2 < param_3);\n  }" ({ "{") (expression_statement "puVar4 = PTR_LAB_0009d07c + 0x45d0;" (assignment_expression "puVar4 = PTR_LAB_0009d07c + 0x45d0" (identifier "puVar4") (= "=") (binary_expression "PTR_LAB_0009d07c + 0x45d0" (identifier "PTR_LAB_0009d07c") (+ "+") (number_literal "0x45d0"))) (; ";")) (expression_statement "piVar12 = param_1;" (assignment_expression "piVar12 = param_1" (identifier "piVar12") (= "=") (identifier "param_1")) (; ";")) (do_statement "do {\n      while( true ) {\n        piVar15 = piVar5;\n        uVar13 = piVar12[param_3 + 0x3fffffff];\n        uVar7 = param_2[param_3 + 0x3fffffff];\n        uVar8 = uVar13 | uVar7;\n        uVar11 = param_2[param_3 + 0x3ffffffe];\n        uVar6 = piVar12[param_3 + 0x3ffffffe];\n        if (-1 < (int)uVar8) {\n          if (uVar8 < 0x10000) {\n            iVar14 = 0;\n            if (0xff < uVar8) {\n              iVar14 = 0x18;\n            }\n            iVar2 = 9;\n            if (0xff >= uVar8) {\n              iVar2 = 1;\n            }\n          }\n          else {\n            iVar14 = 0x10;\n            if (0xffffff < uVar8) {\n              iVar14 = 8;\n            }\n            iVar2 = 0x19;\n            if (0xffffff >= uVar8) {\n              iVar2 = 0x11;\n            }\n          }\n          uVar8 = iVar14 - (uint)(byte)puVar3[uVar8 >> iVar2];\n          uVar10 = 0x20 - uVar8;\n          uVar13 = uVar13 << (uVar8 & 0x1f) | uVar6 >> (uVar10 & 0x1f);\n          uVar6 = (uint)piVar12[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar6 << (uVar8 & 0x1f);\n          uVar7 = uVar7 << (uVar8 & 0x1f) | uVar11 >> (uVar10 & 0x1f);\n          uVar11 = (uint)param_2[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar11 << (uVar8 & 0x1f)\n          ;\n        }\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined1 **)(puVar18 + 0x10) = auStack_44;\n        iVar14 = (*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar13,uVar6,uVar7,uVar11);\n        if (iVar14 != 0) break;\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar15;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar4;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(piVar12,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n        param_1 = piVar12;\n        piVar5 = piVar15;\n        if (param_3 < 3) goto LAB_00054a30;\n      }\n      *(int *)(puVar18 + 0x10) = param_3;\n      param_4 = param_2;\n      param_3 = (*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488)\n                          (auStack_44,piVar15,piVar12);\n      param_1 = piVar15;\n      piVar5 = piVar12;\n      piVar12 = piVar15;\n    } while (2 < param_3);" (do "do") (compound_statement "{\n      while( true ) {\n        piVar15 = piVar5;\n        uVar13 = piVar12[param_3 + 0x3fffffff];\n        uVar7 = param_2[param_3 + 0x3fffffff];\n        uVar8 = uVar13 | uVar7;\n        uVar11 = param_2[param_3 + 0x3ffffffe];\n        uVar6 = piVar12[param_3 + 0x3ffffffe];\n        if (-1 < (int)uVar8) {\n          if (uVar8 < 0x10000) {\n            iVar14 = 0;\n            if (0xff < uVar8) {\n              iVar14 = 0x18;\n            }\n            iVar2 = 9;\n            if (0xff >= uVar8) {\n              iVar2 = 1;\n            }\n          }\n          else {\n            iVar14 = 0x10;\n            if (0xffffff < uVar8) {\n              iVar14 = 8;\n            }\n            iVar2 = 0x19;\n            if (0xffffff >= uVar8) {\n              iVar2 = 0x11;\n            }\n          }\n          uVar8 = iVar14 - (uint)(byte)puVar3[uVar8 >> iVar2];\n          uVar10 = 0x20 - uVar8;\n          uVar13 = uVar13 << (uVar8 & 0x1f) | uVar6 >> (uVar10 & 0x1f);\n          uVar6 = (uint)piVar12[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar6 << (uVar8 & 0x1f);\n          uVar7 = uVar7 << (uVar8 & 0x1f) | uVar11 >> (uVar10 & 0x1f);\n          uVar11 = (uint)param_2[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar11 << (uVar8 & 0x1f)\n          ;\n        }\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined1 **)(puVar18 + 0x10) = auStack_44;\n        iVar14 = (*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar13,uVar6,uVar7,uVar11);\n        if (iVar14 != 0) break;\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar15;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar4;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(piVar12,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n        param_1 = piVar12;\n        piVar5 = piVar15;\n        if (param_3 < 3) goto LAB_00054a30;\n      }\n      *(int *)(puVar18 + 0x10) = param_3;\n      param_4 = param_2;\n      param_3 = (*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488)\n                          (auStack_44,piVar15,piVar12);\n      param_1 = piVar15;\n      piVar5 = piVar12;\n      piVar12 = piVar15;\n    }" ({ "{") (while_statement "while( true ) {\n        piVar15 = piVar5;\n        uVar13 = piVar12[param_3 + 0x3fffffff];\n        uVar7 = param_2[param_3 + 0x3fffffff];\n        uVar8 = uVar13 | uVar7;\n        uVar11 = param_2[param_3 + 0x3ffffffe];\n        uVar6 = piVar12[param_3 + 0x3ffffffe];\n        if (-1 < (int)uVar8) {\n          if (uVar8 < 0x10000) {\n            iVar14 = 0;\n            if (0xff < uVar8) {\n              iVar14 = 0x18;\n            }\n            iVar2 = 9;\n            if (0xff >= uVar8) {\n              iVar2 = 1;\n            }\n          }\n          else {\n            iVar14 = 0x10;\n            if (0xffffff < uVar8) {\n              iVar14 = 8;\n            }\n            iVar2 = 0x19;\n            if (0xffffff >= uVar8) {\n              iVar2 = 0x11;\n            }\n          }\n          uVar8 = iVar14 - (uint)(byte)puVar3[uVar8 >> iVar2];\n          uVar10 = 0x20 - uVar8;\n          uVar13 = uVar13 << (uVar8 & 0x1f) | uVar6 >> (uVar10 & 0x1f);\n          uVar6 = (uint)piVar12[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar6 << (uVar8 & 0x1f);\n          uVar7 = uVar7 << (uVar8 & 0x1f) | uVar11 >> (uVar10 & 0x1f);\n          uVar11 = (uint)param_2[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar11 << (uVar8 & 0x1f)\n          ;\n        }\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined1 **)(puVar18 + 0x10) = auStack_44;\n        iVar14 = (*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar13,uVar6,uVar7,uVar11);\n        if (iVar14 != 0) break;\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar15;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar4;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(piVar12,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n        param_1 = piVar12;\n        piVar5 = piVar15;\n        if (param_3 < 3) goto LAB_00054a30;\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        piVar15 = piVar5;\n        uVar13 = piVar12[param_3 + 0x3fffffff];\n        uVar7 = param_2[param_3 + 0x3fffffff];\n        uVar8 = uVar13 | uVar7;\n        uVar11 = param_2[param_3 + 0x3ffffffe];\n        uVar6 = piVar12[param_3 + 0x3ffffffe];\n        if (-1 < (int)uVar8) {\n          if (uVar8 < 0x10000) {\n            iVar14 = 0;\n            if (0xff < uVar8) {\n              iVar14 = 0x18;\n            }\n            iVar2 = 9;\n            if (0xff >= uVar8) {\n              iVar2 = 1;\n            }\n          }\n          else {\n            iVar14 = 0x10;\n            if (0xffffff < uVar8) {\n              iVar14 = 8;\n            }\n            iVar2 = 0x19;\n            if (0xffffff >= uVar8) {\n              iVar2 = 0x11;\n            }\n          }\n          uVar8 = iVar14 - (uint)(byte)puVar3[uVar8 >> iVar2];\n          uVar10 = 0x20 - uVar8;\n          uVar13 = uVar13 << (uVar8 & 0x1f) | uVar6 >> (uVar10 & 0x1f);\n          uVar6 = (uint)piVar12[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar6 << (uVar8 & 0x1f);\n          uVar7 = uVar7 << (uVar8 & 0x1f) | uVar11 >> (uVar10 & 0x1f);\n          uVar11 = (uint)param_2[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar11 << (uVar8 & 0x1f)\n          ;\n        }\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined1 **)(puVar18 + 0x10) = auStack_44;\n        iVar14 = (*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar13,uVar6,uVar7,uVar11);\n        if (iVar14 != 0) break;\n        param_4 = (int *)0x0;\n        *(int **)(puVar18 + 0x18) = piVar15;\n        *(int ***)(puVar18 + 0x14) = &local_resc;\n        *(undefined **)(puVar18 + 0x10) = puVar4;\n        piVar9 = param_2;\n        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(piVar12,param_2,param_3);\n        if (param_3 == 0) goto LAB_00054840;\n        param_1 = piVar12;\n        piVar5 = piVar15;\n        if (param_3 < 3) goto LAB_00054a30;\n      }" ({ "{") (expression_statement "piVar15 = piVar5;" (assignment_expression "piVar15 = piVar5" (identifier "piVar15") (= "=") (identifier "piVar5")) (; ";")) (expression_statement "uVar13 = piVar12[param_3 + 0x3fffffff];" (assignment_expression "uVar13 = piVar12[param_3 + 0x3fffffff]" (identifier "uVar13") (= "=") (subscript_expression "piVar12[param_3 + 0x3fffffff]" (identifier "piVar12") ([ "[") (binary_expression "param_3 + 0x3fffffff" (identifier "param_3") (+ "+") (number_literal "0x3fffffff")) (] "]"))) (; ";")) (expression_statement "uVar7 = param_2[param_3 + 0x3fffffff];" (assignment_expression "uVar7 = param_2[param_3 + 0x3fffffff]" (identifier "uVar7") (= "=") (subscript_expression "param_2[param_3 + 0x3fffffff]" (identifier "param_2") ([ "[") (binary_expression "param_3 + 0x3fffffff" (identifier "param_3") (+ "+") (number_literal "0x3fffffff")) (] "]"))) (; ";")) (expression_statement "uVar8 = uVar13 | uVar7;" (assignment_expression "uVar8 = uVar13 | uVar7" (identifier "uVar8") (= "=") (binary_expression "uVar13 | uVar7" (identifier "uVar13") (| "|") (identifier "uVar7"))) (; ";")) (expression_statement "uVar11 = param_2[param_3 + 0x3ffffffe];" (assignment_expression "uVar11 = param_2[param_3 + 0x3ffffffe]" (identifier "uVar11") (= "=") (subscript_expression "param_2[param_3 + 0x3ffffffe]" (identifier "param_2") ([ "[") (binary_expression "param_3 + 0x3ffffffe" (identifier "param_3") (+ "+") (number_literal "0x3ffffffe")) (] "]"))) (; ";")) (expression_statement "uVar6 = piVar12[param_3 + 0x3ffffffe];" (assignment_expression "uVar6 = piVar12[param_3 + 0x3ffffffe]" (identifier "uVar6") (= "=") (subscript_expression "piVar12[param_3 + 0x3ffffffe]" (identifier "piVar12") ([ "[") (binary_expression "param_3 + 0x3ffffffe" (identifier "param_3") (+ "+") (number_literal "0x3ffffffe")) (] "]"))) (; ";")) (if_statement "if (-1 < (int)uVar8) {\n          if (uVar8 < 0x10000) {\n            iVar14 = 0;\n            if (0xff < uVar8) {\n              iVar14 = 0x18;\n            }\n            iVar2 = 9;\n            if (0xff >= uVar8) {\n              iVar2 = 1;\n            }\n          }\n          else {\n            iVar14 = 0x10;\n            if (0xffffff < uVar8) {\n              iVar14 = 8;\n            }\n            iVar2 = 0x19;\n            if (0xffffff >= uVar8) {\n              iVar2 = 0x11;\n            }\n          }\n          uVar8 = iVar14 - (uint)(byte)puVar3[uVar8 >> iVar2];\n          uVar10 = 0x20 - uVar8;\n          uVar13 = uVar13 << (uVar8 & 0x1f) | uVar6 >> (uVar10 & 0x1f);\n          uVar6 = (uint)piVar12[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar6 << (uVar8 & 0x1f);\n          uVar7 = uVar7 << (uVar8 & 0x1f) | uVar11 >> (uVar10 & 0x1f);\n          uVar11 = (uint)param_2[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar11 << (uVar8 & 0x1f)\n          ;\n        }" (if "if") (parenthesized_expression "(-1 < (int)uVar8)" (( "(") (binary_expression "-1 < (int)uVar8" (number_literal "-1") (< "<") (cast_expression "(int)uVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar8"))) () ")")) (compound_statement "{\n          if (uVar8 < 0x10000) {\n            iVar14 = 0;\n            if (0xff < uVar8) {\n              iVar14 = 0x18;\n            }\n            iVar2 = 9;\n            if (0xff >= uVar8) {\n              iVar2 = 1;\n            }\n          }\n          else {\n            iVar14 = 0x10;\n            if (0xffffff < uVar8) {\n              iVar14 = 8;\n            }\n            iVar2 = 0x19;\n            if (0xffffff >= uVar8) {\n              iVar2 = 0x11;\n            }\n          }\n          uVar8 = iVar14 - (uint)(byte)puVar3[uVar8 >> iVar2];\n          uVar10 = 0x20 - uVar8;\n          uVar13 = uVar13 << (uVar8 & 0x1f) | uVar6 >> (uVar10 & 0x1f);\n          uVar6 = (uint)piVar12[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar6 << (uVar8 & 0x1f);\n          uVar7 = uVar7 << (uVar8 & 0x1f) | uVar11 >> (uVar10 & 0x1f);\n          uVar11 = (uint)param_2[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar11 << (uVar8 & 0x1f)\n          ;\n        }" ({ "{") (if_statement "if (uVar8 < 0x10000) {\n            iVar14 = 0;\n            if (0xff < uVar8) {\n              iVar14 = 0x18;\n            }\n            iVar2 = 9;\n            if (0xff >= uVar8) {\n              iVar2 = 1;\n            }\n          }\n          else {\n            iVar14 = 0x10;\n            if (0xffffff < uVar8) {\n              iVar14 = 8;\n            }\n            iVar2 = 0x19;\n            if (0xffffff >= uVar8) {\n              iVar2 = 0x11;\n            }\n          }" (if "if") (parenthesized_expression "(uVar8 < 0x10000)" (( "(") (binary_expression "uVar8 < 0x10000" (identifier "uVar8") (< "<") (number_literal "0x10000")) () ")")) (compound_statement "{\n            iVar14 = 0;\n            if (0xff < uVar8) {\n              iVar14 = 0x18;\n            }\n            iVar2 = 9;\n            if (0xff >= uVar8) {\n              iVar2 = 1;\n            }\n          }" ({ "{") (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" (identifier "iVar14") (= "=") (number_literal "0")) (; ";")) (if_statement "if (0xff < uVar8) {\n              iVar14 = 0x18;\n            }" (if "if") (parenthesized_expression "(0xff < uVar8)" (( "(") (binary_expression "0xff < uVar8" (number_literal "0xff") (< "<") (identifier "uVar8")) () ")")) (compound_statement "{\n              iVar14 = 0x18;\n            }" ({ "{") (expression_statement "iVar14 = 0x18;" (assignment_expression "iVar14 = 0x18" (identifier "iVar14") (= "=") (number_literal "0x18")) (; ";")) (} "}"))) (expression_statement "iVar2 = 9;" (assignment_expression "iVar2 = 9" (identifier "iVar2") (= "=") (number_literal "9")) (; ";")) (if_statement "if (0xff >= uVar8) {\n              iVar2 = 1;\n            }" (if "if") (parenthesized_expression "(0xff >= uVar8)" (( "(") (binary_expression "0xff >= uVar8" (number_literal "0xff") (>= ">=") (identifier "uVar8")) () ")")) (compound_statement "{\n              iVar2 = 1;\n            }" ({ "{") (expression_statement "iVar2 = 1;" (assignment_expression "iVar2 = 1" (identifier "iVar2") (= "=") (number_literal "1")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n            iVar14 = 0x10;\n            if (0xffffff < uVar8) {\n              iVar14 = 8;\n            }\n            iVar2 = 0x19;\n            if (0xffffff >= uVar8) {\n              iVar2 = 0x11;\n            }\n          }" (else "else") (compound_statement "{\n            iVar14 = 0x10;\n            if (0xffffff < uVar8) {\n              iVar14 = 8;\n            }\n            iVar2 = 0x19;\n            if (0xffffff >= uVar8) {\n              iVar2 = 0x11;\n            }\n          }" ({ "{") (expression_statement "iVar14 = 0x10;" (assignment_expression "iVar14 = 0x10" (identifier "iVar14") (= "=") (number_literal "0x10")) (; ";")) (if_statement "if (0xffffff < uVar8) {\n              iVar14 = 8;\n            }" (if "if") (parenthesized_expression "(0xffffff < uVar8)" (( "(") (binary_expression "0xffffff < uVar8" (number_literal "0xffffff") (< "<") (identifier "uVar8")) () ")")) (compound_statement "{\n              iVar14 = 8;\n            }" ({ "{") (expression_statement "iVar14 = 8;" (assignment_expression "iVar14 = 8" (identifier "iVar14") (= "=") (number_literal "8")) (; ";")) (} "}"))) (expression_statement "iVar2 = 0x19;" (assignment_expression "iVar2 = 0x19" (identifier "iVar2") (= "=") (number_literal "0x19")) (; ";")) (if_statement "if (0xffffff >= uVar8) {\n              iVar2 = 0x11;\n            }" (if "if") (parenthesized_expression "(0xffffff >= uVar8)" (( "(") (binary_expression "0xffffff >= uVar8" (number_literal "0xffffff") (>= ">=") (identifier "uVar8")) () ")")) (compound_statement "{\n              iVar2 = 0x11;\n            }" ({ "{") (expression_statement "iVar2 = 0x11;" (assignment_expression "iVar2 = 0x11" (identifier "iVar2") (= "=") (number_literal "0x11")) (; ";")) (} "}"))) (} "}")))) (expression_statement "uVar8 = iVar14 - (uint)(byte)puVar3[uVar8 >> iVar2];" (assignment_expression "uVar8 = iVar14 - (uint)(byte)puVar3[uVar8 >> iVar2]" (identifier "uVar8") (= "=") (binary_expression "iVar14 - (uint)(byte)puVar3[uVar8 >> iVar2]" (identifier "iVar14") (- "-") (cast_expression "(uint)(byte)puVar3[uVar8 >> iVar2]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(byte)puVar3[uVar8 >> iVar2]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "puVar3[uVar8 >> iVar2]" (identifier "puVar3") ([ "[") (binary_expression "uVar8 >> iVar2" (identifier "uVar8") (>> ">>") (identifier "iVar2")) (] "]")))))) (; ";")) (expression_statement "uVar10 = 0x20 - uVar8;" (assignment_expression "uVar10 = 0x20 - uVar8" (identifier "uVar10") (= "=") (binary_expression "0x20 - uVar8" (number_literal "0x20") (- "-") (identifier "uVar8"))) (; ";")) (expression_statement "uVar13 = uVar13 << (uVar8 & 0x1f) | uVar6 >> (uVar10 & 0x1f);" (assignment_expression "uVar13 = uVar13 << (uVar8 & 0x1f) | uVar6 >> (uVar10 & 0x1f)" (identifier "uVar13") (= "=") (binary_expression "uVar13 << (uVar8 & 0x1f) | uVar6 >> (uVar10 & 0x1f)" (binary_expression "uVar13 << (uVar8 & 0x1f)" (identifier "uVar13") (<< "<<") (parenthesized_expression "(uVar8 & 0x1f)" (( "(") (binary_expression "uVar8 & 0x1f" (identifier "uVar8") (& "&") (number_literal "0x1f")) () ")"))) (| "|") (binary_expression "uVar6 >> (uVar10 & 0x1f)" (identifier "uVar6") (>> ">>") (parenthesized_expression "(uVar10 & 0x1f)" (( "(") (binary_expression "uVar10 & 0x1f" (identifier "uVar10") (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (expression_statement "uVar6 = (uint)piVar12[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar6 << (uVar8 & 0x1f);" (assignment_expression "uVar6 = (uint)piVar12[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar6 << (uVar8 & 0x1f)" (identifier "uVar6") (= "=") (binary_expression "(uint)piVar12[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar6 << (uVar8 & 0x1f)" (binary_expression "(uint)piVar12[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f)" (cast_expression "(uint)piVar12[param_3 + 0x3ffffffd]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "piVar12[param_3 + 0x3ffffffd]" (identifier "piVar12") ([ "[") (binary_expression "param_3 + 0x3ffffffd" (identifier "param_3") (+ "+") (number_literal "0x3ffffffd")) (] "]"))) (>> ">>") (parenthesized_expression "(uVar10 & 0x1f)" (( "(") (binary_expression "uVar10 & 0x1f" (identifier "uVar10") (& "&") (number_literal "0x1f")) () ")"))) (| "|") (binary_expression "uVar6 << (uVar8 & 0x1f)" (identifier "uVar6") (<< "<<") (parenthesized_expression "(uVar8 & 0x1f)" (( "(") (binary_expression "uVar8 & 0x1f" (identifier "uVar8") (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (expression_statement "uVar7 = uVar7 << (uVar8 & 0x1f) | uVar11 >> (uVar10 & 0x1f);" (assignment_expression "uVar7 = uVar7 << (uVar8 & 0x1f) | uVar11 >> (uVar10 & 0x1f)" (identifier "uVar7") (= "=") (binary_expression "uVar7 << (uVar8 & 0x1f) | uVar11 >> (uVar10 & 0x1f)" (binary_expression "uVar7 << (uVar8 & 0x1f)" (identifier "uVar7") (<< "<<") (parenthesized_expression "(uVar8 & 0x1f)" (( "(") (binary_expression "uVar8 & 0x1f" (identifier "uVar8") (& "&") (number_literal "0x1f")) () ")"))) (| "|") (binary_expression "uVar11 >> (uVar10 & 0x1f)" (identifier "uVar11") (>> ">>") (parenthesized_expression "(uVar10 & 0x1f)" (( "(") (binary_expression "uVar10 & 0x1f" (identifier "uVar10") (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (expression_statement "uVar11 = (uint)param_2[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar11 << (uVar8 & 0x1f)\n          ;" (assignment_expression "uVar11 = (uint)param_2[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar11 << (uVar8 & 0x1f)" (identifier "uVar11") (= "=") (binary_expression "(uint)param_2[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar11 << (uVar8 & 0x1f)" (binary_expression "(uint)param_2[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f)" (cast_expression "(uint)param_2[param_3 + 0x3ffffffd]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_2[param_3 + 0x3ffffffd]" (identifier "param_2") ([ "[") (binary_expression "param_3 + 0x3ffffffd" (identifier "param_3") (+ "+") (number_literal "0x3ffffffd")) (] "]"))) (>> ">>") (parenthesized_expression "(uVar10 & 0x1f)" (( "(") (binary_expression "uVar10 & 0x1f" (identifier "uVar10") (& "&") (number_literal "0x1f")) () ")"))) (| "|") (binary_expression "uVar11 << (uVar8 & 0x1f)" (identifier "uVar11") (<< "<<") (parenthesized_expression "(uVar8 & 0x1f)" (( "(") (binary_expression "uVar8 & 0x1f" (identifier "uVar8") (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (} "}"))) (expression_statement "*(int ***)(puVar18 + 0x14) = &local_resc;" (assignment_expression "*(int ***)(puVar18 + 0x14) = &local_resc" (pointer_expression "*(int ***)(puVar18 + 0x14)" (* "*") (cast_expression "(int ***)(puVar18 + 0x14)" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(puVar18 + 0x14)" (( "(") (binary_expression "puVar18 + 0x14" (identifier "puVar18") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (pointer_expression "&local_resc" (& "&") (identifier "local_resc"))) (; ";")) (expression_statement "*(undefined1 **)(puVar18 + 0x10) = auStack_44;" (assignment_expression "*(undefined1 **)(puVar18 + 0x10) = auStack_44" (pointer_expression "*(undefined1 **)(puVar18 + 0x10)" (* "*") (cast_expression "(undefined1 **)(puVar18 + 0x10)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar18 + 0x10)" (( "(") (binary_expression "puVar18 + 0x10" (identifier "puVar18") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "auStack_44")) (; ";")) (expression_statement "iVar14 = (*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar13,uVar6,uVar7,uVar11);" (assignment_expression "iVar14 = (*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar13,uVar6,uVar7,uVar11)" (identifier "iVar14") (= "=") (call_expression "(*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar13,uVar6,uVar7,uVar11)" (parenthesized_expression "(*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)" (( "(") (pointer_expression "*(code *)PTR___gmpn_hgcd2_jacobi_0009d318" (* "*") (cast_expression "(code *)PTR___gmpn_hgcd2_jacobi_0009d318" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_hgcd2_jacobi_0009d318"))) () ")")) (argument_list "(uVar13,uVar6,uVar7,uVar11)" (( "(") (identifier "uVar13") (, ",") (identifier "uVar6") (, ",") (identifier "uVar7") (, ",") (identifier "uVar11") () ")")))) (; ";")) (if_statement "if (iVar14 != 0) break;" (if "if") (parenthesized_expression "(iVar14 != 0)" (( "(") (binary_expression "iVar14 != 0" (identifier "iVar14") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "param_4 = (int *)0x0;" (assignment_expression "param_4 = (int *)0x0" (identifier "param_4") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "*(int **)(puVar18 + 0x18) = piVar15;" (assignment_expression "*(int **)(puVar18 + 0x18) = piVar15" (pointer_expression "*(int **)(puVar18 + 0x18)" (* "*") (cast_expression "(int **)(puVar18 + 0x18)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar18 + 0x18)" (( "(") (binary_expression "puVar18 + 0x18" (identifier "puVar18") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "piVar15")) (; ";")) (expression_statement "*(int ***)(puVar18 + 0x14) = &local_resc;" (assignment_expression "*(int ***)(puVar18 + 0x14) = &local_resc" (pointer_expression "*(int ***)(puVar18 + 0x14)" (* "*") (cast_expression "(int ***)(puVar18 + 0x14)" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(puVar18 + 0x14)" (( "(") (binary_expression "puVar18 + 0x14" (identifier "puVar18") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (pointer_expression "&local_resc" (& "&") (identifier "local_resc"))) (; ";")) (expression_statement "*(undefined **)(puVar18 + 0x10) = puVar4;" (assignment_expression "*(undefined **)(puVar18 + 0x10) = puVar4" (pointer_expression "*(undefined **)(puVar18 + 0x10)" (* "*") (cast_expression "(undefined **)(puVar18 + 0x10)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar18 + 0x10)" (( "(") (binary_expression "puVar18 + 0x10" (identifier "puVar18") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "puVar4")) (; ";")) (expression_statement "piVar9 = param_2;" (assignment_expression "piVar9 = param_2" (identifier "piVar9") (= "=") (identifier "param_2")) (; ";")) (expression_statement "param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(piVar12,param_2,param_3);" (assignment_expression "param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(piVar12,param_2,param_3)" (identifier "param_3") (= "=") (call_expression "(*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(piVar12,param_2,param_3)" (parenthesized_expression "(*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)" (( "(") (pointer_expression "*(code *)PTR___gmpn_gcd_subdiv_step_0009d118" (* "*") (cast_expression "(code *)PTR___gmpn_gcd_subdiv_step_0009d118" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_gcd_subdiv_step_0009d118"))) () ")")) (argument_list "(piVar12,param_2,param_3)" (( "(") (identifier "piVar12") (, ",") (identifier "param_2") (, ",") (identifier "param_3") () ")")))) (; ";")) (if_statement "if (param_3 == 0) goto LAB_00054840;" (if "if") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00054840;" (goto "goto") (statement_identifier "LAB_00054840") (; ";"))) (expression_statement "param_1 = piVar12;" (assignment_expression "param_1 = piVar12" (identifier "param_1") (= "=") (identifier "piVar12")) (; ";")) (expression_statement "piVar5 = piVar15;" (assignment_expression "piVar5 = piVar15" (identifier "piVar5") (= "=") (identifier "piVar15")) (; ";")) (if_statement "if (param_3 < 3) goto LAB_00054a30;" (if "if") (parenthesized_expression "(param_3 < 3)" (( "(") (binary_expression "param_3 < 3" (identifier "param_3") (< "<") (number_literal "3")) () ")")) (goto_statement "goto LAB_00054a30;" (goto "goto") (statement_identifier "LAB_00054a30") (; ";"))) (} "}"))) (expression_statement "*(int *)(puVar18 + 0x10) = param_3;" (assignment_expression "*(int *)(puVar18 + 0x10) = param_3" (pointer_expression "*(int *)(puVar18 + 0x10)" (* "*") (cast_expression "(int *)(puVar18 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar18 + 0x10)" (( "(") (binary_expression "puVar18 + 0x10" (identifier "puVar18") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "param_3")) (; ";")) (expression_statement "param_4 = param_2;" (assignment_expression "param_4 = param_2" (identifier "param_4") (= "=") (identifier "param_2")) (; ";")) (expression_statement "param_3 = (*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488)\n                          (auStack_44,piVar15,piVar12);" (assignment_expression "param_3 = (*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488)\n                          (auStack_44,piVar15,piVar12)" (identifier "param_3") (= "=") (call_expression "(*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488)\n                          (auStack_44,piVar15,piVar12)" (parenthesized_expression "(*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488)" (( "(") (pointer_expression "*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488" (* "*") (cast_expression "(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_matrix22_mul1_inverse_vector_0009d488"))) () ")")) (argument_list "(auStack_44,piVar15,piVar12)" (( "(") (identifier "auStack_44") (, ",") (identifier "piVar15") (, ",") (identifier "piVar12") () ")")))) (; ";")) (expression_statement "param_1 = piVar15;" (assignment_expression "param_1 = piVar15" (identifier "param_1") (= "=") (identifier "piVar15")) (; ";")) (expression_statement "piVar5 = piVar12;" (assignment_expression "piVar5 = piVar12" (identifier "piVar5") (= "=") (identifier "piVar12")) (; ";")) (expression_statement "piVar12 = piVar15;" (assignment_expression "piVar12 = piVar15" (identifier "piVar12") (= "=") (identifier "piVar15")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(2 < param_3)" (( "(") (binary_expression "2 < param_3" (number_literal "2") (< "<") (identifier "param_3")) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_00054a30:\n  piVar5 = param_1;" (statement_identifier "LAB_00054a30") (: ":") (expression_statement "piVar5 = param_1;" (assignment_expression "piVar5 = param_1" (identifier "piVar5") (= "=") (identifier "param_1")) (; ";"))) (expression_statement "piVar9 = param_2;" (assignment_expression "piVar9 = param_2" (identifier "piVar9") (= "=") (identifier "param_2")) (; ";")) (if_statement "if ((int *)0xf < local_resc) {\n    piVar5 = param_2;\n    piVar9 = param_1;\n  }" (if "if") (parenthesized_expression "((int *)0xf < local_resc)" (( "(") (binary_expression "(int *)0xf < local_resc" (cast_expression "(int *)0xf" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xf")) (< "<") (identifier "local_resc")) () ")")) (compound_statement "{\n    piVar5 = param_2;\n    piVar9 = param_1;\n  }" ({ "{") (expression_statement "piVar5 = param_2;" (assignment_expression "piVar5 = param_2" (identifier "piVar5") (= "=") (identifier "param_2")) (; ";")) (expression_statement "piVar9 = param_1;" (assignment_expression "piVar9 = param_1" (identifier "piVar9") (= "=") (identifier "param_1")) (; ";")) (} "}"))) (if_statement "if (param_3 == 1) {\n    iVar14 = *piVar5;\n    piVar9 = (int *)*piVar9;\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n    if (piVar9 == (int *)0x1) {\n      uVar13 = ((uint)local_resc & 1) * -2 + 1;\n    }\n    else {\n      uVar13 = (*(code *)PTR___gmpn_jacobi_base_0009d408)(iVar14,piVar9,(int)local_resc << 1);\n    }\n  }\n  else {\n    uVar13 = (*(code *)PTR___gmpn_jacobi_2_0009d324)(piVar5,piVar9,(uint)local_resc & 1);\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n  }" (if "if") (parenthesized_expression "(param_3 == 1)" (( "(") (binary_expression "param_3 == 1" (identifier "param_3") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n    iVar14 = *piVar5;\n    piVar9 = (int *)*piVar9;\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n    if (piVar9 == (int *)0x1) {\n      uVar13 = ((uint)local_resc & 1) * -2 + 1;\n    }\n    else {\n      uVar13 = (*(code *)PTR___gmpn_jacobi_base_0009d408)(iVar14,piVar9,(int)local_resc << 1);\n    }\n  }" ({ "{") (expression_statement "iVar14 = *piVar5;" (assignment_expression "iVar14 = *piVar5" (identifier "iVar14") (= "=") (pointer_expression "*piVar5" (* "*") (identifier "piVar5"))) (; ";")) (expression_statement "piVar9 = (int *)*piVar9;" (assignment_expression "piVar9 = (int *)*piVar9" (identifier "piVar9") (= "=") (cast_expression "(int *)*piVar9" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar9" (* "*") (identifier "piVar9")))) (; ";")) (if_statement "if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }" (if "if") (parenthesized_expression "(local_48 != 0)" (( "(") (binary_expression "local_48 != 0" (identifier "local_48") (!= "!=") (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 "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (piVar9 == (int *)0x1) {\n      uVar13 = ((uint)local_resc & 1) * -2 + 1;\n    }\n    else {\n      uVar13 = (*(code *)PTR___gmpn_jacobi_base_0009d408)(iVar14,piVar9,(int)local_resc << 1);\n    }" (if "if") (parenthesized_expression "(piVar9 == (int *)0x1)" (( "(") (binary_expression "piVar9 == (int *)0x1" (identifier "piVar9") (== "==") (cast_expression "(int *)0x1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) () ")")) (compound_statement "{\n      uVar13 = ((uint)local_resc & 1) * -2 + 1;\n    }" ({ "{") (expression_statement "uVar13 = ((uint)local_resc & 1) * -2 + 1;" (assignment_expression "uVar13 = ((uint)local_resc & 1) * -2 + 1" (identifier "uVar13") (= "=") (binary_expression "((uint)local_resc & 1) * -2 + 1" (binary_expression "((uint)local_resc & 1) * -2" (parenthesized_expression "((uint)local_resc & 1)" (( "(") (binary_expression "(uint)local_resc & 1" (cast_expression "(uint)local_resc" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_resc")) (& "&") (number_literal "1")) () ")")) (* "*") (number_literal "-2")) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n      uVar13 = (*(code *)PTR___gmpn_jacobi_base_0009d408)(iVar14,piVar9,(int)local_resc << 1);\n    }" (else "else") (compound_statement "{\n      uVar13 = (*(code *)PTR___gmpn_jacobi_base_0009d408)(iVar14,piVar9,(int)local_resc << 1);\n    }" ({ "{") (expression_statement "uVar13 = (*(code *)PTR___gmpn_jacobi_base_0009d408)(iVar14,piVar9,(int)local_resc << 1);" (assignment_expression "uVar13 = (*(code *)PTR___gmpn_jacobi_base_0009d408)(iVar14,piVar9,(int)local_resc << 1)" (identifier "uVar13") (= "=") (call_expression "(*(code *)PTR___gmpn_jacobi_base_0009d408)(iVar14,piVar9,(int)local_resc << 1)" (parenthesized_expression "(*(code *)PTR___gmpn_jacobi_base_0009d408)" (( "(") (pointer_expression "*(code *)PTR___gmpn_jacobi_base_0009d408" (* "*") (cast_expression "(code *)PTR___gmpn_jacobi_base_0009d408" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_jacobi_base_0009d408"))) () ")")) (argument_list "(iVar14,piVar9,(int)local_resc << 1)" (( "(") (identifier "iVar14") (, ",") (identifier "piVar9") (, ",") (binary_expression "(int)local_resc << 1" (cast_expression "(int)local_resc" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_resc")) (<< "<<") (number_literal "1")) () ")")))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n    uVar13 = (*(code *)PTR___gmpn_jacobi_2_0009d324)(piVar5,piVar9,(uint)local_resc & 1);\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n  }" (else "else") (compound_statement "{\n    uVar13 = (*(code *)PTR___gmpn_jacobi_2_0009d324)(piVar5,piVar9,(uint)local_resc & 1);\n    if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }\n  }" ({ "{") (expression_statement "uVar13 = (*(code *)PTR___gmpn_jacobi_2_0009d324)(piVar5,piVar9,(uint)local_resc & 1);" (assignment_expression "uVar13 = (*(code *)PTR___gmpn_jacobi_2_0009d324)(piVar5,piVar9,(uint)local_resc & 1)" (identifier "uVar13") (= "=") (call_expression "(*(code *)PTR___gmpn_jacobi_2_0009d324)(piVar5,piVar9,(uint)local_resc & 1)" (parenthesized_expression "(*(code *)PTR___gmpn_jacobi_2_0009d324)" (( "(") (pointer_expression "*(code *)PTR___gmpn_jacobi_2_0009d324" (* "*") (cast_expression "(code *)PTR___gmpn_jacobi_2_0009d324" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_jacobi_2_0009d324"))) () ")")) (argument_list "(piVar5,piVar9,(uint)local_resc & 1)" (( "(") (identifier "piVar5") (, ",") (identifier "piVar9") (, ",") (binary_expression "(uint)local_resc & 1" (cast_expression "(uint)local_resc" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_resc")) (& "&") (number_literal "1")) () ")")))) (; ";")) (if_statement "if (local_48 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n    }" (if "if") (parenthesized_expression "(local_48 != 0)" (( "(") (binary_expression "local_48 != 0" (identifier "local_48") (!= "!=") (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 "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}")))) (goto_statement "goto LAB_0005486c;" (goto "goto") (statement_identifier "LAB_0005486c") (; ";")) (labeled_statement "LAB_00054840:\n  if (local_48 != 0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n  }" (statement_identifier "LAB_00054840") (: ":") (if_statement "if (local_48 != 0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();\n  }" (if "if") (parenthesized_expression "(local_48 != 0)" (( "(") (binary_expression "local_48 != 0" (identifier "local_48") (!= "!=") (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 "()" (( "(") () ")"))) (; ";")) (} "}")))) (if_statement "if (local_resc == (int *)0x1f) {\n    uVar13 = 0;\n  }\n  else {\n    uVar13 = ((uint)local_resc & 1) * -2 + 1;\n  }" (if "if") (parenthesized_expression "(local_resc == (int *)0x1f)" (( "(") (binary_expression "local_resc == (int *)0x1f" (identifier "local_resc") (== "==") (cast_expression "(int *)0x1f" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1f"))) () ")")) (compound_statement "{\n    uVar13 = 0;\n  }" ({ "{") (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" (identifier "uVar13") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n    uVar13 = ((uint)local_resc & 1) * -2 + 1;\n  }" (else "else") (compound_statement "{\n    uVar13 = ((uint)local_resc & 1) * -2 + 1;\n  }" ({ "{") (expression_statement "uVar13 = ((uint)local_resc & 1) * -2 + 1;" (assignment_expression "uVar13 = ((uint)local_resc & 1) * -2 + 1" (identifier "uVar13") (= "=") (binary_expression "((uint)local_resc & 1) * -2 + 1" (binary_expression "((uint)local_resc & 1) * -2" (parenthesized_expression "((uint)local_resc & 1)" (( "(") (binary_expression "(uint)local_resc & 1" (cast_expression "(uint)local_resc" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_resc")) (& "&") (number_literal "1")) () ")")) (* "*") (number_literal "-2")) (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (labeled_statement "LAB_0005486c:\n  if (local_2c == *(int *)puVar17) {\n    return uVar13;\n  }" (statement_identifier "LAB_0005486c") (: ":") (if_statement "if (local_2c == *(int *)puVar17) {\n    return uVar13;\n  }" (if "if") (parenthesized_expression "(local_2c == *(int *)puVar17)" (( "(") (binary_expression "local_2c == *(int *)puVar17" (identifier "local_2c") (== "==") (pointer_expression "*(int *)puVar17" (* "*") (cast_expression "(int *)puVar17" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar17")))) () ")")) (compound_statement "{\n    return uVar13;\n  }" ({ "{") (return_statement "return uVar13;" (return "return") (identifier "uVar13") (; ";")) (} "}")))) (expression_statement "puVar17 = PTR___stack_chk_fail_0009d4d0;" (assignment_expression "puVar17 = PTR___stack_chk_fail_0009d4d0" (identifier "puVar17") (= "=") (identifier "PTR___stack_chk_fail_0009d4d0")) (; ";")) (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 "()" (( "(") () ")"))) (; ";")) (if_statement "if (piVar9 == (int *)0x0) {\n    return 0x7fff0000;\n  }" (if "if") (parenthesized_expression "(piVar9 == (int *)0x0)" (( "(") (binary_expression "piVar9 == (int *)0x0" (identifier "piVar9") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    return 0x7fff0000;\n  }" ({ "{") (return_statement "return 0x7fff0000;" (return "return") (number_literal "0x7fff0000") (; ";")) (} "}"))) (expression_statement "uVar13 = (int)piVar9 * 0x20;" (assignment_expression "uVar13 = (int)piVar9 * 0x20" (identifier "uVar13") (= "=") (binary_expression "(int)piVar9 * 0x20" (cast_expression "(int)piVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar9")) (* "*") (number_literal "0x20"))) (; ";")) (if_statement "if (0x7fffffffU - (int)param_4 < uVar13) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(0x7fffffffU - (int)param_4 < uVar13)" (( "(") (binary_expression "0x7fffffffU - (int)param_4 < uVar13" (binary_expression "0x7fffffffU - (int)param_4" (number_literal "0x7fffffffU") (- "-") (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4"))) (< "<") (identifier "uVar13")) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "local_2c = local_2c + (int)piVar9 * 4;" (assignment_expression "local_2c = local_2c + (int)piVar9 * 4" (identifier "local_2c") (= "=") (binary_expression "local_2c + (int)piVar9 * 4" (identifier "local_2c") (+ "+") (binary_expression "(int)piVar9 * 4" (cast_expression "(int)piVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar9")) (* "*") (number_literal "4")))) (; ";")) (expression_statement "uVar6 = *(uint *)(local_2c + -4);" (assignment_expression "uVar6 = *(uint *)(local_2c + -4)" (identifier "uVar6") (= "=") (pointer_expression "*(uint *)(local_2c + -4)" (* "*") (cast_expression "(uint *)(local_2c + -4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_2c + -4)" (( "(") (binary_expression "local_2c + -4" (identifier "local_2c") (+ "+") (number_literal "-4")) () ")"))))) (; ";")) (if_statement "if (uVar6 < 0x10000) {\n    iVar14 = 0x20;\n    if (0xff < uVar6) {\n      iVar14 = 0x18;\n    }\n    iVar2 = 9;\n    if (0xff >= uVar6) {\n      iVar2 = 1;\n    }\n    uVar7 = iVar14 - (uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> iVar2));\n    iVar14 = uVar7 + 1;\njoined_r0x00054cbc:\n    uVar10 = uVar6 << (uVar7 & 0x1f);\n    uVar11 = uVar10 >> 0xb;\n    iVar14 = (int)param_4 + (uVar13 - iVar14);\n    if ((int)uVar7 < 0xb) {\n      iVar2 = local_2c + -4;\n      uVar6 = uVar10 << 0x15;\n      uVar8 = 0xb - uVar7;\n    }\n    else {\n      if ((int)piVar9 < 2) {\n        uVar6 = 0;\n        goto LAB_00054c48;\n      }\n      iVar2 = local_2c + -8;\n      uVar6 = *(uint *)(local_2c + -8) << (uVar7 - 0xb & 0x1f);\n      piVar9 = (int *)((int)piVar9 + -1);\n      uVar8 = 0x2b - uVar7;\n      uVar11 = (uVar10 | *(uint *)(local_2c + -8) >> (-uVar7 & 0x1f)) >> 0xb;\n    }\n  }\n  else {\n    if (uVar6 < 0x1000000) {\n      iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x11));\n      uVar7 = iVar14 + 0x10;\n      iVar14 = iVar14 + 0x11;\n      goto joined_r0x00054cbc;\n    }\n    iVar2 = local_2c + -4;\n    iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x19));\n    uVar8 = iVar14 + 8;\n    uVar6 = uVar6 << (uVar8 & 0x1f);\n    uVar11 = uVar6 >> 0xb;\n    iVar14 = (int)param_4 + (uVar13 - (iVar14 + 9));\n    uVar6 = uVar6 << 0x15;\n    uVar8 = 0xb - uVar8;\n  }" (if "if") (parenthesized_expression "(uVar6 < 0x10000)" (( "(") (binary_expression "uVar6 < 0x10000" (identifier "uVar6") (< "<") (number_literal "0x10000")) () ")")) (compound_statement "{\n    iVar14 = 0x20;\n    if (0xff < uVar6) {\n      iVar14 = 0x18;\n    }\n    iVar2 = 9;\n    if (0xff >= uVar6) {\n      iVar2 = 1;\n    }\n    uVar7 = iVar14 - (uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> iVar2));\n    iVar14 = uVar7 + 1;\njoined_r0x00054cbc:\n    uVar10 = uVar6 << (uVar7 & 0x1f);\n    uVar11 = uVar10 >> 0xb;\n    iVar14 = (int)param_4 + (uVar13 - iVar14);\n    if ((int)uVar7 < 0xb) {\n      iVar2 = local_2c + -4;\n      uVar6 = uVar10 << 0x15;\n      uVar8 = 0xb - uVar7;\n    }\n    else {\n      if ((int)piVar9 < 2) {\n        uVar6 = 0;\n        goto LAB_00054c48;\n      }\n      iVar2 = local_2c + -8;\n      uVar6 = *(uint *)(local_2c + -8) << (uVar7 - 0xb & 0x1f);\n      piVar9 = (int *)((int)piVar9 + -1);\n      uVar8 = 0x2b - uVar7;\n      uVar11 = (uVar10 | *(uint *)(local_2c + -8) >> (-uVar7 & 0x1f)) >> 0xb;\n    }\n  }" ({ "{") (expression_statement "iVar14 = 0x20;" (assignment_expression "iVar14 = 0x20" (identifier "iVar14") (= "=") (number_literal "0x20")) (; ";")) (if_statement "if (0xff < uVar6) {\n      iVar14 = 0x18;\n    }" (if "if") (parenthesized_expression "(0xff < uVar6)" (( "(") (binary_expression "0xff < uVar6" (number_literal "0xff") (< "<") (identifier "uVar6")) () ")")) (compound_statement "{\n      iVar14 = 0x18;\n    }" ({ "{") (expression_statement "iVar14 = 0x18;" (assignment_expression "iVar14 = 0x18" (identifier "iVar14") (= "=") (number_literal "0x18")) (; ";")) (} "}"))) (expression_statement "iVar2 = 9;" (assignment_expression "iVar2 = 9" (identifier "iVar2") (= "=") (number_literal "9")) (; ";")) (if_statement "if (0xff >= uVar6) {\n      iVar2 = 1;\n    }" (if "if") (parenthesized_expression "(0xff >= uVar6)" (( "(") (binary_expression "0xff >= uVar6" (number_literal "0xff") (>= ">=") (identifier "uVar6")) () ")")) (compound_statement "{\n      iVar2 = 1;\n    }" ({ "{") (expression_statement "iVar2 = 1;" (assignment_expression "iVar2 = 1" (identifier "iVar2") (= "=") (number_literal "1")) (; ";")) (} "}"))) (expression_statement "uVar7 = iVar14 - (uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> iVar2));" (assignment_expression "uVar7 = iVar14 - (uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> iVar2))" (identifier "uVar7") (= "=") (binary_expression "iVar14 - (uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> iVar2))" (identifier "iVar14") (- "-") (binary_expression "(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> iVar2))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> iVar2))" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar17 + 0x4862c) + (uVar6 >> iVar2))" (( "(") (binary_expression "*(int *)(puVar17 + 0x4862c) + (uVar6 >> iVar2)" (pointer_expression "*(int *)(puVar17 + 0x4862c)" (* "*") (cast_expression "(int *)(puVar17 + 0x4862c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar17 + 0x4862c)" (( "(") (binary_expression "puVar17 + 0x4862c" (identifier "puVar17") (+ "+") (number_literal "0x4862c")) () ")")))) (+ "+") (parenthesized_expression "(uVar6 >> iVar2)" (( "(") (binary_expression "uVar6 >> iVar2" (identifier "uVar6") (>> ">>") (identifier "iVar2")) () ")"))) () ")")))))) (; ";")) (expression_statement "iVar14 = uVar7 + 1;" (assignment_expression "iVar14 = uVar7 + 1" (identifier "iVar14") (= "=") (binary_expression "uVar7 + 1" (identifier "uVar7") (+ "+") (number_literal "1"))) (; ";")) (labeled_statement "joined_r0x00054cbc:\n    uVar10 = uVar6 << (uVar7 & 0x1f);" (statement_identifier "joined_r0x00054cbc") (: ":") (expression_statement "uVar10 = uVar6 << (uVar7 & 0x1f);" (assignment_expression "uVar10 = uVar6 << (uVar7 & 0x1f)" (identifier "uVar10") (= "=") (binary_expression "uVar6 << (uVar7 & 0x1f)" (identifier "uVar6") (<< "<<") (parenthesized_expression "(uVar7 & 0x1f)" (( "(") (binary_expression "uVar7 & 0x1f" (identifier "uVar7") (& "&") (number_literal "0x1f")) () ")")))) (; ";"))) (expression_statement "uVar11 = uVar10 >> 0xb;" (assignment_expression "uVar11 = uVar10 >> 0xb" (identifier "uVar11") (= "=") (binary_expression "uVar10 >> 0xb" (identifier "uVar10") (>> ">>") (number_literal "0xb"))) (; ";")) (expression_statement "iVar14 = (int)param_4 + (uVar13 - iVar14);" (assignment_expression "iVar14 = (int)param_4 + (uVar13 - iVar14)" (identifier "iVar14") (= "=") (binary_expression "(int)param_4 + (uVar13 - iVar14)" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (+ "+") (parenthesized_expression "(uVar13 - iVar14)" (( "(") (binary_expression "uVar13 - iVar14" (identifier "uVar13") (- "-") (identifier "iVar14")) () ")")))) (; ";")) (if_statement "if ((int)uVar7 < 0xb) {\n      iVar2 = local_2c + -4;\n      uVar6 = uVar10 << 0x15;\n      uVar8 = 0xb - uVar7;\n    }\n    else {\n      if ((int)piVar9 < 2) {\n        uVar6 = 0;\n        goto LAB_00054c48;\n      }\n      iVar2 = local_2c + -8;\n      uVar6 = *(uint *)(local_2c + -8) << (uVar7 - 0xb & 0x1f);\n      piVar9 = (int *)((int)piVar9 + -1);\n      uVar8 = 0x2b - uVar7;\n      uVar11 = (uVar10 | *(uint *)(local_2c + -8) >> (-uVar7 & 0x1f)) >> 0xb;\n    }" (if "if") (parenthesized_expression "((int)uVar7 < 0xb)" (( "(") (binary_expression "(int)uVar7 < 0xb" (cast_expression "(int)uVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar7")) (< "<") (number_literal "0xb")) () ")")) (compound_statement "{\n      iVar2 = local_2c + -4;\n      uVar6 = uVar10 << 0x15;\n      uVar8 = 0xb - uVar7;\n    }" ({ "{") (expression_statement "iVar2 = local_2c + -4;" (assignment_expression "iVar2 = local_2c + -4" (identifier "iVar2") (= "=") (binary_expression "local_2c + -4" (identifier "local_2c") (+ "+") (number_literal "-4"))) (; ";")) (expression_statement "uVar6 = uVar10 << 0x15;" (assignment_expression "uVar6 = uVar10 << 0x15" (identifier "uVar6") (= "=") (binary_expression "uVar10 << 0x15" (identifier "uVar10") (<< "<<") (number_literal "0x15"))) (; ";")) (expression_statement "uVar8 = 0xb - uVar7;" (assignment_expression "uVar8 = 0xb - uVar7" (identifier "uVar8") (= "=") (binary_expression "0xb - uVar7" (number_literal "0xb") (- "-") (identifier "uVar7"))) (; ";")) (} "}")) (else_clause "else {\n      if ((int)piVar9 < 2) {\n        uVar6 = 0;\n        goto LAB_00054c48;\n      }\n      iVar2 = local_2c + -8;\n      uVar6 = *(uint *)(local_2c + -8) << (uVar7 - 0xb & 0x1f);\n      piVar9 = (int *)((int)piVar9 + -1);\n      uVar8 = 0x2b - uVar7;\n      uVar11 = (uVar10 | *(uint *)(local_2c + -8) >> (-uVar7 & 0x1f)) >> 0xb;\n    }" (else "else") (compound_statement "{\n      if ((int)piVar9 < 2) {\n        uVar6 = 0;\n        goto LAB_00054c48;\n      }\n      iVar2 = local_2c + -8;\n      uVar6 = *(uint *)(local_2c + -8) << (uVar7 - 0xb & 0x1f);\n      piVar9 = (int *)((int)piVar9 + -1);\n      uVar8 = 0x2b - uVar7;\n      uVar11 = (uVar10 | *(uint *)(local_2c + -8) >> (-uVar7 & 0x1f)) >> 0xb;\n    }" ({ "{") (if_statement "if ((int)piVar9 < 2) {\n        uVar6 = 0;\n        goto LAB_00054c48;\n      }" (if "if") (parenthesized_expression "((int)piVar9 < 2)" (( "(") (binary_expression "(int)piVar9 < 2" (cast_expression "(int)piVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar9")) (< "<") (number_literal "2")) () ")")) (compound_statement "{\n        uVar6 = 0;\n        goto LAB_00054c48;\n      }" ({ "{") (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" (identifier "uVar6") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_00054c48;" (goto "goto") (statement_identifier "LAB_00054c48") (; ";")) (} "}"))) (expression_statement "iVar2 = local_2c + -8;" (assignment_expression "iVar2 = local_2c + -8" (identifier "iVar2") (= "=") (binary_expression "local_2c + -8" (identifier "local_2c") (+ "+") (number_literal "-8"))) (; ";")) (expression_statement "uVar6 = *(uint *)(local_2c + -8) << (uVar7 - 0xb & 0x1f);" (assignment_expression "uVar6 = *(uint *)(local_2c + -8) << (uVar7 - 0xb & 0x1f)" (identifier "uVar6") (= "=") (binary_expression "*(uint *)(local_2c + -8) << (uVar7 - 0xb & 0x1f)" (pointer_expression "*(uint *)(local_2c + -8)" (* "*") (cast_expression "(uint *)(local_2c + -8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_2c + -8)" (( "(") (binary_expression "local_2c + -8" (identifier "local_2c") (+ "+") (number_literal "-8")) () ")")))) (<< "<<") (parenthesized_expression "(uVar7 - 0xb & 0x1f)" (( "(") (binary_expression "uVar7 - 0xb & 0x1f" (binary_expression "uVar7 - 0xb" (identifier "uVar7") (- "-") (number_literal "0xb")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "piVar9 = (int *)((int)piVar9 + -1);" (assignment_expression "piVar9 = (int *)((int)piVar9 + -1)" (identifier "piVar9") (= "=") (cast_expression "(int *)((int)piVar9 + -1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar9 + -1)" (( "(") (binary_expression "(int)piVar9 + -1" (cast_expression "(int)piVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar9")) (+ "+") (number_literal "-1")) () ")")))) (; ";")) (expression_statement "uVar8 = 0x2b - uVar7;" (assignment_expression "uVar8 = 0x2b - uVar7" (identifier "uVar8") (= "=") (binary_expression "0x2b - uVar7" (number_literal "0x2b") (- "-") (identifier "uVar7"))) (; ";")) (expression_statement "uVar11 = (uVar10 | *(uint *)(local_2c + -8) >> (-uVar7 & 0x1f)) >> 0xb;" (assignment_expression "uVar11 = (uVar10 | *(uint *)(local_2c + -8) >> (-uVar7 & 0x1f)) >> 0xb" (identifier "uVar11") (= "=") (binary_expression "(uVar10 | *(uint *)(local_2c + -8) >> (-uVar7 & 0x1f)) >> 0xb" (parenthesized_expression "(uVar10 | *(uint *)(local_2c + -8) >> (-uVar7 & 0x1f))" (( "(") (binary_expression "uVar10 | *(uint *)(local_2c + -8) >> (-uVar7 & 0x1f)" (identifier "uVar10") (| "|") (binary_expression "*(uint *)(local_2c + -8) >> (-uVar7 & 0x1f)" (pointer_expression "*(uint *)(local_2c + -8)" (* "*") (cast_expression "(uint *)(local_2c + -8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_2c + -8)" (( "(") (binary_expression "local_2c + -8" (identifier "local_2c") (+ "+") (number_literal "-8")) () ")")))) (>> ">>") (parenthesized_expression "(-uVar7 & 0x1f)" (( "(") (binary_expression "-uVar7 & 0x1f" (unary_expression "-uVar7" (- "-") (identifier "uVar7")) (& "&") (number_literal "0x1f")) () ")")))) () ")")) (>> ">>") (number_literal "0xb"))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n    if (uVar6 < 0x1000000) {\n      iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x11));\n      uVar7 = iVar14 + 0x10;\n      iVar14 = iVar14 + 0x11;\n      goto joined_r0x00054cbc;\n    }\n    iVar2 = local_2c + -4;\n    iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x19));\n    uVar8 = iVar14 + 8;\n    uVar6 = uVar6 << (uVar8 & 0x1f);\n    uVar11 = uVar6 >> 0xb;\n    iVar14 = (int)param_4 + (uVar13 - (iVar14 + 9));\n    uVar6 = uVar6 << 0x15;\n    uVar8 = 0xb - uVar8;\n  }" (else "else") (compound_statement "{\n    if (uVar6 < 0x1000000) {\n      iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x11));\n      uVar7 = iVar14 + 0x10;\n      iVar14 = iVar14 + 0x11;\n      goto joined_r0x00054cbc;\n    }\n    iVar2 = local_2c + -4;\n    iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x19));\n    uVar8 = iVar14 + 8;\n    uVar6 = uVar6 << (uVar8 & 0x1f);\n    uVar11 = uVar6 >> 0xb;\n    iVar14 = (int)param_4 + (uVar13 - (iVar14 + 9));\n    uVar6 = uVar6 << 0x15;\n    uVar8 = 0xb - uVar8;\n  }" ({ "{") (if_statement "if (uVar6 < 0x1000000) {\n      iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x11));\n      uVar7 = iVar14 + 0x10;\n      iVar14 = iVar14 + 0x11;\n      goto joined_r0x00054cbc;\n    }" (if "if") (parenthesized_expression "(uVar6 < 0x1000000)" (( "(") (binary_expression "uVar6 < 0x1000000" (identifier "uVar6") (< "<") (number_literal "0x1000000")) () ")")) (compound_statement "{\n      iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x11));\n      uVar7 = iVar14 + 0x10;\n      iVar14 = iVar14 + 0x11;\n      goto joined_r0x00054cbc;\n    }" ({ "{") (expression_statement "iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x11));" (assignment_expression "iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x11))" (identifier "iVar14") (= "=") (binary_expression "-(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x11))" (unary_expression "-(uint)" (- "-") (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")"))) (* "*") (cast_expression "(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x11))" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x11))" (( "(") (binary_expression "*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x11)" (pointer_expression "*(int *)(puVar17 + 0x4862c)" (* "*") (cast_expression "(int *)(puVar17 + 0x4862c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar17 + 0x4862c)" (( "(") (binary_expression "puVar17 + 0x4862c" (identifier "puVar17") (+ "+") (number_literal "0x4862c")) () ")")))) (+ "+") (parenthesized_expression "(uVar6 >> 0x11)" (( "(") (binary_expression "uVar6 >> 0x11" (identifier "uVar6") (>> ">>") (number_literal "0x11")) () ")"))) () ")"))))) (; ";")) (expression_statement "uVar7 = iVar14 + 0x10;" (assignment_expression "uVar7 = iVar14 + 0x10" (identifier "uVar7") (= "=") (binary_expression "iVar14 + 0x10" (identifier "iVar14") (+ "+") (number_literal "0x10"))) (; ";")) (expression_statement "iVar14 = iVar14 + 0x11;" (assignment_expression "iVar14 = iVar14 + 0x11" (identifier "iVar14") (= "=") (binary_expression "iVar14 + 0x11" (identifier "iVar14") (+ "+") (number_literal "0x11"))) (; ";")) (goto_statement "goto joined_r0x00054cbc;" (goto "goto") (statement_identifier "joined_r0x00054cbc") (; ";")) (} "}"))) (expression_statement "iVar2 = local_2c + -4;" (assignment_expression "iVar2 = local_2c + -4" (identifier "iVar2") (= "=") (binary_expression "local_2c + -4" (identifier "local_2c") (+ "+") (number_literal "-4"))) (; ";")) (expression_statement "iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x19));" (assignment_expression "iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x19))" (identifier "iVar14") (= "=") (binary_expression "-(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x19))" (unary_expression "-(uint)" (- "-") (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")"))) (* "*") (cast_expression "(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x19))" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x19))" (( "(") (binary_expression "*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x19)" (pointer_expression "*(int *)(puVar17 + 0x4862c)" (* "*") (cast_expression "(int *)(puVar17 + 0x4862c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar17 + 0x4862c)" (( "(") (binary_expression "puVar17 + 0x4862c" (identifier "puVar17") (+ "+") (number_literal "0x4862c")) () ")")))) (+ "+") (parenthesized_expression "(uVar6 >> 0x19)" (( "(") (binary_expression "uVar6 >> 0x19" (identifier "uVar6") (>> ">>") (number_literal "0x19")) () ")"))) () ")"))))) (; ";")) (expression_statement "uVar8 = iVar14 + 8;" (assignment_expression "uVar8 = iVar14 + 8" (identifier "uVar8") (= "=") (binary_expression "iVar14 + 8" (identifier "iVar14") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "uVar6 = uVar6 << (uVar8 & 0x1f);" (assignment_expression "uVar6 = uVar6 << (uVar8 & 0x1f)" (identifier "uVar6") (= "=") (binary_expression "uVar6 << (uVar8 & 0x1f)" (identifier "uVar6") (<< "<<") (parenthesized_expression "(uVar8 & 0x1f)" (( "(") (binary_expression "uVar8 & 0x1f" (identifier "uVar8") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar11 = uVar6 >> 0xb;" (assignment_expression "uVar11 = uVar6 >> 0xb" (identifier "uVar11") (= "=") (binary_expression "uVar6 >> 0xb" (identifier "uVar6") (>> ">>") (number_literal "0xb"))) (; ";")) (expression_statement "iVar14 = (int)param_4 + (uVar13 - (iVar14 + 9));" (assignment_expression "iVar14 = (int)param_4 + (uVar13 - (iVar14 + 9))" (identifier "iVar14") (= "=") (binary_expression "(int)param_4 + (uVar13 - (iVar14 + 9))" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (+ "+") (parenthesized_expression "(uVar13 - (iVar14 + 9))" (( "(") (binary_expression "uVar13 - (iVar14 + 9)" (identifier "uVar13") (- "-") (parenthesized_expression "(iVar14 + 9)" (( "(") (binary_expression "iVar14 + 9" (identifier "iVar14") (+ "+") (number_literal "9")) () ")"))) () ")")))) (; ";")) (expression_statement "uVar6 = uVar6 << 0x15;" (assignment_expression "uVar6 = uVar6 << 0x15" (identifier "uVar6") (= "=") (binary_expression "uVar6 << 0x15" (identifier "uVar6") (<< "<<") (number_literal "0x15"))) (; ";")) (expression_statement "uVar8 = 0xb - uVar8;" (assignment_expression "uVar8 = 0xb - uVar8" (identifier "uVar8") (= "=") (binary_expression "0xb - uVar8" (number_literal "0xb") (- "-") (identifier "uVar8"))) (; ";")) (} "}")))) (if_statement "if (((int)uVar8 < 0x20) && (1 < (int)piVar9)) {\n    uVar6 = uVar6 | *(uint *)(iVar2 + -4) >> (uVar8 & 0x1f);\n  }" (if "if") (parenthesized_expression "(((int)uVar8 < 0x20) && (1 < (int)piVar9))" (( "(") (binary_expression "((int)uVar8 < 0x20) && (1 < (int)piVar9)" (parenthesized_expression "((int)uVar8 < 0x20)" (( "(") (binary_expression "(int)uVar8 < 0x20" (cast_expression "(int)uVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar8")) (< "<") (number_literal "0x20")) () ")")) (&& "&&") (parenthesized_expression "(1 < (int)piVar9)" (( "(") (binary_expression "1 < (int)piVar9" (number_literal "1") (< "<") (cast_expression "(int)piVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar9"))) () ")"))) () ")")) (compound_statement "{\n    uVar6 = uVar6 | *(uint *)(iVar2 + -4) >> (uVar8 & 0x1f);\n  }" ({ "{") (expression_statement "uVar6 = uVar6 | *(uint *)(iVar2 + -4) >> (uVar8 & 0x1f);" (assignment_expression "uVar6 = uVar6 | *(uint *)(iVar2 + -4) >> (uVar8 & 0x1f)" (identifier "uVar6") (= "=") (binary_expression "uVar6 | *(uint *)(iVar2 + -4) >> (uVar8 & 0x1f)" (identifier "uVar6") (| "|") (binary_expression "*(uint *)(iVar2 + -4) >> (uVar8 & 0x1f)" (pointer_expression "*(uint *)(iVar2 + -4)" (* "*") (cast_expression "(uint *)(iVar2 + -4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + -4)" (( "(") (binary_expression "iVar2 + -4" (identifier "iVar2") (+ "+") (number_literal "-4")) () ")")))) (>> ">>") (parenthesized_expression "(uVar8 & 0x1f)" (( "(") (binary_expression "uVar8 & 0x1f" (identifier "uVar8") (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (} "}"))) (labeled_statement "LAB_00054c48:\n  if (0x3ff < iVar14) {\n    return 0;\n  }" (statement_identifier "LAB_00054c48") (: ":") (if_statement "if (0x3ff < iVar14) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(0x3ff < iVar14)" (( "(") (binary_expression "0x3ff < iVar14" (number_literal "0x3ff") (< "<") (identifier "iVar14")) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))) (if_statement "if (iVar14 < -0x3fe) {\n    if (iVar14 < -0x432) {\n      return uVar6;\n    }\n    if ((int)(-iVar14 - 0x3feU) < 0x20) {\n      uVar13 = iVar14 + 0x41e;\n      uVar6 = uVar6 >> (-iVar14 - 0x3feU & 0x1f);\n    }\n    else {\n      uVar6 = uVar11 >> (-iVar14 - 0x41eU & 0x1f);\n      if (-iVar14 - 0x41eU == 0) {\n        return uVar6;\n      }\n      uVar13 = iVar14 + 0x43e;\n      uVar11 = 0;\n    }\n    uVar6 = uVar6 | uVar11 << (uVar13 & 0x1f);\n  }" (if "if") (parenthesized_expression "(iVar14 < -0x3fe)" (( "(") (binary_expression "iVar14 < -0x3fe" (identifier "iVar14") (< "<") (number_literal "-0x3fe")) () ")")) (compound_statement "{\n    if (iVar14 < -0x432) {\n      return uVar6;\n    }\n    if ((int)(-iVar14 - 0x3feU) < 0x20) {\n      uVar13 = iVar14 + 0x41e;\n      uVar6 = uVar6 >> (-iVar14 - 0x3feU & 0x1f);\n    }\n    else {\n      uVar6 = uVar11 >> (-iVar14 - 0x41eU & 0x1f);\n      if (-iVar14 - 0x41eU == 0) {\n        return uVar6;\n      }\n      uVar13 = iVar14 + 0x43e;\n      uVar11 = 0;\n    }\n    uVar6 = uVar6 | uVar11 << (uVar13 & 0x1f);\n  }" ({ "{") (if_statement "if (iVar14 < -0x432) {\n      return uVar6;\n    }" (if "if") (parenthesized_expression "(iVar14 < -0x432)" (( "(") (binary_expression "iVar14 < -0x432" (identifier "iVar14") (< "<") (number_literal "-0x432")) () ")")) (compound_statement "{\n      return uVar6;\n    }" ({ "{") (return_statement "return uVar6;" (return "return") (identifier "uVar6") (; ";")) (} "}"))) (if_statement "if ((int)(-iVar14 - 0x3feU) < 0x20) {\n      uVar13 = iVar14 + 0x41e;\n      uVar6 = uVar6 >> (-iVar14 - 0x3feU & 0x1f);\n    }\n    else {\n      uVar6 = uVar11 >> (-iVar14 - 0x41eU & 0x1f);\n      if (-iVar14 - 0x41eU == 0) {\n        return uVar6;\n      }\n      uVar13 = iVar14 + 0x43e;\n      uVar11 = 0;\n    }" (if "if") (parenthesized_expression "((int)(-iVar14 - 0x3feU) < 0x20)" (( "(") (binary_expression "(int)(-iVar14 - 0x3feU) < 0x20" (cast_expression "(int)(-iVar14 - 0x3feU)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(-iVar14 - 0x3feU)" (( "(") (binary_expression "-iVar14 - 0x3feU" (unary_expression "-iVar14" (- "-") (identifier "iVar14")) (- "-") (number_literal "0x3feU")) () ")"))) (< "<") (number_literal "0x20")) () ")")) (compound_statement "{\n      uVar13 = iVar14 + 0x41e;\n      uVar6 = uVar6 >> (-iVar14 - 0x3feU & 0x1f);\n    }" ({ "{") (expression_statement "uVar13 = iVar14 + 0x41e;" (assignment_expression "uVar13 = iVar14 + 0x41e" (identifier "uVar13") (= "=") (binary_expression "iVar14 + 0x41e" (identifier "iVar14") (+ "+") (number_literal "0x41e"))) (; ";")) (expression_statement "uVar6 = uVar6 >> (-iVar14 - 0x3feU & 0x1f);" (assignment_expression "uVar6 = uVar6 >> (-iVar14 - 0x3feU & 0x1f)" (identifier "uVar6") (= "=") (binary_expression "uVar6 >> (-iVar14 - 0x3feU & 0x1f)" (identifier "uVar6") (>> ">>") (parenthesized_expression "(-iVar14 - 0x3feU & 0x1f)" (( "(") (binary_expression "-iVar14 - 0x3feU & 0x1f" (binary_expression "-iVar14 - 0x3feU" (unary_expression "-iVar14" (- "-") (identifier "iVar14")) (- "-") (number_literal "0x3feU")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n      uVar6 = uVar11 >> (-iVar14 - 0x41eU & 0x1f);\n      if (-iVar14 - 0x41eU == 0) {\n        return uVar6;\n      }\n      uVar13 = iVar14 + 0x43e;\n      uVar11 = 0;\n    }" (else "else") (compound_statement "{\n      uVar6 = uVar11 >> (-iVar14 - 0x41eU & 0x1f);\n      if (-iVar14 - 0x41eU == 0) {\n        return uVar6;\n      }\n      uVar13 = iVar14 + 0x43e;\n      uVar11 = 0;\n    }" ({ "{") (expression_statement "uVar6 = uVar11 >> (-iVar14 - 0x41eU & 0x1f);" (assignment_expression "uVar6 = uVar11 >> (-iVar14 - 0x41eU & 0x1f)" (identifier "uVar6") (= "=") (binary_expression "uVar11 >> (-iVar14 - 0x41eU & 0x1f)" (identifier "uVar11") (>> ">>") (parenthesized_expression "(-iVar14 - 0x41eU & 0x1f)" (( "(") (binary_expression "-iVar14 - 0x41eU & 0x1f" (binary_expression "-iVar14 - 0x41eU" (unary_expression "-iVar14" (- "-") (identifier "iVar14")) (- "-") (number_literal "0x41eU")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (if_statement "if (-iVar14 - 0x41eU == 0) {\n        return uVar6;\n      }" (if "if") (parenthesized_expression "(-iVar14 - 0x41eU == 0)" (( "(") (binary_expression "-iVar14 - 0x41eU == 0" (binary_expression "-iVar14 - 0x41eU" (unary_expression "-iVar14" (- "-") (identifier "iVar14")) (- "-") (number_literal "0x41eU")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        return uVar6;\n      }" ({ "{") (return_statement "return uVar6;" (return "return") (identifier "uVar6") (; ";")) (} "}"))) (expression_statement "uVar13 = iVar14 + 0x43e;" (assignment_expression "uVar13 = iVar14 + 0x43e" (identifier "uVar13") (= "=") (binary_expression "iVar14 + 0x43e" (identifier "iVar14") (+ "+") (number_literal "0x43e"))) (; ";")) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" (identifier "uVar11") (= "=") (number_literal "0")) (; ";")) (} "}")))) (expression_statement "uVar6 = uVar6 | uVar11 << (uVar13 & 0x1f);" (assignment_expression "uVar6 = uVar6 | uVar11 << (uVar13 & 0x1f)" (identifier "uVar6") (= "=") (binary_expression "uVar6 | uVar11 << (uVar13 & 0x1f)" (identifier "uVar6") (| "|") (binary_expression "uVar11 << (uVar13 & 0x1f)" (identifier "uVar11") (<< "<<") (parenthesized_expression "(uVar13 & 0x1f)" (( "(") (binary_expression "uVar13 & 0x1f" (identifier "uVar13") (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (} "}"))) (return_statement "return uVar6;" (return "return") (identifier "uVar6") (; ";")) (} "}")))
(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (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: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (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: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (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)))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (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))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)) right: (number_literal))) right: (number_literal)) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (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: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)) 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 (binary_expression left: (identifier) right: (identifier)) (binary_expression left: (identifier) right: (identifier)) (identifier) (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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (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))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)) right: (number_literal))) right: (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (identifier)) (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (unary_expression argument: (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: (identifier))) (do_statement body: (compound_statement (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (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: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_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: (number_literal))))) (expression_statement (assignment_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: (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: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (number_literal) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal)))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal)))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (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))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (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))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (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 (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))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal)) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (binary_expression left: (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: (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: (cast_expression type: (type_descriptor type: (type_identifier)) 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)))))))) (goto_statement label: (statement_identifier)) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list)))))) (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: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal)) right: (number_literal))))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) consequence: (compound_statement (return_statement (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (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 (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (identifier))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) 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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (compound_statement (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: (number_literal) right: (identifier))))) alternative: (else_clause (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 (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (number_literal) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (parenthesized_expression (binary_expression left: (unary_expression argument: (identifier)) right: (number_literal)))))) right: (number_literal)))))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (unary_expression argument: (parenthesized_expression (identifier))) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (unary_expression argument: (parenthesized_expression (identifier))) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) 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: (number_literal) right: (identifier))))))) (if_statement condition: (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: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (return_statement (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 (return_statement (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (unary_expression argument: (identifier)) right: (number_literal)))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (binary_expression left: (unary_expression argument: (identifier)) right: (number_literal)) right: (number_literal))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (binary_expression left: (unary_expression argument: (identifier)) right: (number_literal)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (unary_expression argument: (identifier)) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (return_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)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (return_statement (identifier)))))

uint MASKED(int *param_1,int *param_2,int param_3,int *param_4)

{
  bool bVar1;
  int iVar2;
  undefined *puVar3;
  undefined *puVar4;
  int *piVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  int *piVar9;
  uint uVar10;
  uint uVar11;
  int *piVar12;
  uint uVar13;
  int iVar14;
  int *piVar15;
  int iVar16;
  undefined *puVar17;
  undefined1 *puVar18;
  int *local_resc;
  undefined1 auStack_80 [32];
  int local_48;
  undefined1 auStack_44 [24];
  int local_2c;
  
  puVar17 = PTR___stack_chk_guard_0009d540;
  puVar18 = auStack_80;
  local_2c = *(int *)PTR___stack_chk_guard_0009d540;
  local_resc = param_4;
  if (param_3 < 1000) {
    uVar13 = param_3 << 2;
    local_48 = 0;
    if (uVar13 < 0x7f01) goto LAB_0005471c;
LAB_00054ab8:
    local_48 = 0;
    piVar5 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_0009d2f0)(&local_48);
  }
  else {
    uVar13 = (uint)(param_3 << 1) / 3;
    iVar16 = param_3 - uVar13;
    iVar2 = (*(code *)PTR___gmpn_hgcd_itch_0009d464)(iVar16);
    iVar14 = param_3 + uVar13 + -1;
    if (iVar14 < iVar2) {
      iVar14 = iVar2;
    }
    iVar14 = ((iVar16 + 1) / 2 + 1) * 4 + iVar14;
    if (iVar14 < param_3) {
      iVar14 = param_3;
    }
    uVar13 = iVar14 << 2;
    local_48 = 0;
    if (0x7f00 < uVar13) goto LAB_00054ab8;
LAB_0005471c:
    local_48 = 0;
    iVar14 = -(uVar13 + 7 & 0xfffffff8);
    puVar18 = auStack_80 + iVar14;
    piVar5 = (int *)(auStack_44 + iVar14 + -0x1c);
  }
  if (param_3 < 1000) {
    bVar1 = param_3 < 3;
  }
  else {
    puVar3 = PTR_LAB_0009d07c + 0x45d0;
    do {
      uVar13 = (uint)(param_3 << 1) / 3;
      iVar14 = param_3 - uVar13;
      (*(code *)PTR___gmpn_hgcd_matrix_init_0009d3bc)(auStack_44,iVar14,piVar5);
      *(int ***)(puVar18 + 0x10) = &local_resc;
      *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;
      iVar2 = (*(code *)PTR___gmpn_hgcd_jacobi_0009d0e8)
                        (param_1 + uVar13,param_2 + uVar13,iVar14,auStack_44);
      if (iVar2 < 1) {
        param_4 = (int *)0x0;
        *(int **)(puVar18 + 0x18) = piVar5;
        *(int ***)(puVar18 + 0x14) = &local_resc;
        *(undefined **)(puVar18 + 0x10) = puVar3;
        piVar9 = param_2;
        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(param_1,param_2,param_3);
        if (param_3 == 0) goto LAB_00054840;
      }
      else {
        *(int **)(puVar18 + 0x14) = piVar5 + ((iVar14 + 1) / 2 + 1) * 4;
        *(uint *)(puVar18 + 0x10) = uVar13;
        param_4 = param_2;
        param_3 = (*(code *)PTR___gmpn_hgcd_matrix_adjust_0009d3a8)
                            (auStack_44,uVar13 + iVar2,param_1);
      }
      bVar1 = param_3 < 3;
    } while (999 < param_3);
  }
  puVar3 = PTR___gmpn_clz_tab_0009d18c;
  if (!bVar1) {
    puVar4 = PTR_LAB_0009d07c + 0x45d0;
    piVar12 = param_1;
    do {
      while( true ) {
        piVar15 = piVar5;
        uVar13 = piVar12[param_3 + 0x3fffffff];
        uVar7 = param_2[param_3 + 0x3fffffff];
        uVar8 = uVar13 | uVar7;
        uVar11 = param_2[param_3 + 0x3ffffffe];
        uVar6 = piVar12[param_3 + 0x3ffffffe];
        if (-1 < (int)uVar8) {
          if (uVar8 < 0x10000) {
            iVar14 = 0;
            if (0xff < uVar8) {
              iVar14 = 0x18;
            }
            iVar2 = 9;
            if (0xff >= uVar8) {
              iVar2 = 1;
            }
          }
          else {
            iVar14 = 0x10;
            if (0xffffff < uVar8) {
              iVar14 = 8;
            }
            iVar2 = 0x19;
            if (0xffffff >= uVar8) {
              iVar2 = 0x11;
            }
          }
          uVar8 = iVar14 - (uint)(byte)puVar3[uVar8 >> iVar2];
          uVar10 = 0x20 - uVar8;
          uVar13 = uVar13 << (uVar8 & 0x1f) | uVar6 >> (uVar10 & 0x1f);
          uVar6 = (uint)piVar12[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar6 << (uVar8 & 0x1f);
          uVar7 = uVar7 << (uVar8 & 0x1f) | uVar11 >> (uVar10 & 0x1f);
          uVar11 = (uint)param_2[param_3 + 0x3ffffffd] >> (uVar10 & 0x1f) | uVar11 << (uVar8 & 0x1f)
          ;
        }
        *(int ***)(puVar18 + 0x14) = &local_resc;
        *(undefined1 **)(puVar18 + 0x10) = auStack_44;
        iVar14 = (*(code *)PTR___gmpn_hgcd2_jacobi_0009d318)(uVar13,uVar6,uVar7,uVar11);
        if (iVar14 != 0) break;
        param_4 = (int *)0x0;
        *(int **)(puVar18 + 0x18) = piVar15;
        *(int ***)(puVar18 + 0x14) = &local_resc;
        *(undefined **)(puVar18 + 0x10) = puVar4;
        piVar9 = param_2;
        param_3 = (*(code *)PTR___gmpn_gcd_subdiv_step_0009d118)(piVar12,param_2,param_3);
        if (param_3 == 0) goto LAB_00054840;
        param_1 = piVar12;
        piVar5 = piVar15;
        if (param_3 < 3) goto LAB_00054a30;
      }
      *(int *)(puVar18 + 0x10) = param_3;
      param_4 = param_2;
      param_3 = (*(code *)PTR___gmpn_matrix22_mul1_inverse_vector_0009d488)
                          (auStack_44,piVar15,piVar12);
      param_1 = piVar15;
      piVar5 = piVar12;
      piVar12 = piVar15;
    } while (2 < param_3);
  }
LAB_00054a30:
  piVar5 = param_1;
  piVar9 = param_2;
  if ((int *)0xf < local_resc) {
    piVar5 = param_2;
    piVar9 = param_1;
  }
  if (param_3 == 1) {
    iVar14 = *piVar5;
    piVar9 = (int *)*piVar9;
    if (local_48 != 0) {
      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();
    }
    if (piVar9 == (int *)0x1) {
      uVar13 = ((uint)local_resc & 1) * -2 + 1;
    }
    else {
      uVar13 = (*(code *)PTR___gmpn_jacobi_base_0009d408)(iVar14,piVar9,(int)local_resc << 1);
    }
  }
  else {
    uVar13 = (*(code *)PTR___gmpn_jacobi_2_0009d324)(piVar5,piVar9,(uint)local_resc & 1);
    if (local_48 != 0) {
      (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();
    }
  }
  goto LAB_0005486c;
LAB_00054840:
  if (local_48 != 0) {
    (*(code *)PTR___gmp_tmp_reentrant_free_0009d618)();
  }
  if (local_resc == (int *)0x1f) {
    uVar13 = 0;
  }
  else {
    uVar13 = ((uint)local_resc & 1) * -2 + 1;
  }
LAB_0005486c:
  if (local_2c == *(int *)puVar17) {
    return uVar13;
  }
  puVar17 = PTR___stack_chk_fail_0009d4d0;
  (*(code *)PTR___stack_chk_fail_0009d4d0)();
  if (piVar9 == (int *)0x0) {
    return 0x7fff0000;
  }
  uVar13 = (int)piVar9 * 0x20;
  if (0x7fffffffU - (int)param_4 < uVar13) {
    return 0;
  }
  local_2c = local_2c + (int)piVar9 * 4;
  uVar6 = *(uint *)(local_2c + -4);
  if (uVar6 < 0x10000) {
    iVar14 = 0x20;
    if (0xff < uVar6) {
      iVar14 = 0x18;
    }
    iVar2 = 9;
    if (0xff >= uVar6) {
      iVar2 = 1;
    }
    uVar7 = iVar14 - (uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> iVar2));
    iVar14 = uVar7 + 1;
joined_r0x00054cbc:
    uVar10 = uVar6 << (uVar7 & 0x1f);
    uVar11 = uVar10 >> 0xb;
    iVar14 = (int)param_4 + (uVar13 - iVar14);
    if ((int)uVar7 < 0xb) {
      iVar2 = local_2c + -4;
      uVar6 = uVar10 << 0x15;
      uVar8 = 0xb - uVar7;
    }
    else {
      if ((int)piVar9 < 2) {
        uVar6 = 0;
        goto LAB_00054c48;
      }
      iVar2 = local_2c + -8;
      uVar6 = *(uint *)(local_2c + -8) << (uVar7 - 0xb & 0x1f);
      piVar9 = (int *)((int)piVar9 + -1);
      uVar8 = 0x2b - uVar7;
      uVar11 = (uVar10 | *(uint *)(local_2c + -8) >> (-uVar7 & 0x1f)) >> 0xb;
    }
  }
  else {
    if (uVar6 < 0x1000000) {
      iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x11));
      uVar7 = iVar14 + 0x10;
      iVar14 = iVar14 + 0x11;
      goto joined_r0x00054cbc;
    }
    iVar2 = local_2c + -4;
    iVar14 = -(uint)*(byte *)(*(int *)(puVar17 + 0x4862c) + (uVar6 >> 0x19));
    uVar8 = iVar14 + 8;
    uVar6 = uVar6 << (uVar8 & 0x1f);
    uVar11 = uVar6 >> 0xb;
    iVar14 = (int)param_4 + (uVar13 - (iVar14 + 9));
    uVar6 = uVar6 << 0x15;
    uVar8 = 0xb - uVar8;
  }
  if (((int)uVar8 < 0x20) && (1 < (int)piVar9)) {
    uVar6 = uVar6 | *(uint *)(iVar2 + -4) >> (uVar8 & 0x1f);
  }
LAB_00054c48:
  if (0x3ff < iVar14) {
    return 0;
  }
  if (iVar14 < -0x3fe) {
    if (iVar14 < -0x432) {
      return uVar6;
    }
    if ((int)(-iVar14 - 0x3feU) < 0x20) {
      uVar13 = iVar14 + 0x41e;
      uVar6 = uVar6 >> (-iVar14 - 0x3feU & 0x1f);
    }
    else {
      uVar6 = uVar11 >> (-iVar14 - 0x41eU & 0x1f);
      if (-iVar14 - 0x41eU == 0) {
        return uVar6;
      }
      uVar13 = iVar14 + 0x43e;
      uVar11 = 0;
    }
    uVar6 = uVar6 | uVar11 << (uVar13 & 0x1f);
  }
  return uVar6;
}

