
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

mp_size_t __gmpn_hgcd_matrix_adjust
                    (hgcd_matrix *M,mp_size_t n,mp_ptr ap,mp_ptr bp,mp_size_t p,mp_ptr tp)

{
  mp_ptr prodp;
  mp_srcptr pmVar1;
  undefined *puVar2;
  int iVar3;
  int iVar4;
  mp_ptr pmVar5;
  mp_limb_t mVar6;
  int iVar7;
  uint uVar8;
  uint uVar9;
  mp_ptr pmVar10;
  uint uVar11;
  uint local_38;
  
  iVar7 = M->n;
  prodp = tp + iVar7 + p;
  pmVar1 = M->p[1][1];
  if (iVar7 < p) {
    __gmpn_mul(tp,ap,p,pmVar1,iVar7);
    __gmpn_mul(prodp,ap,p,M->p[1][0],M->n);
  }
  else {
    __gmpn_mul(tp,pmVar1,iVar7,ap,p);
    __gmpn_mul(prodp,M->p[1][0],M->n,ap,p);
  }
  puVar2 = PTR___gmpn_cpuvec_0009dd94;
  (**(code **)(PTR___gmpn_cpuvec_0009dd94 + 0x28))(ap,tp,p);
  iVar7 = M->n;
  iVar3 = n - p;
  local_38 = 0;
  if (iVar7 != 0) {
    pmVar10 = ap + p;
    local_38 = __gmpn_add_n(pmVar10,pmVar10,tp + p,iVar7);
    if (local_38 == 0) {
LAB_00058ac0:
      iVar7 = M->n;
    }
    else {
      if (iVar7 < iVar3) {
        mVar6 = pmVar10[iVar7] + 1;
        pmVar10[iVar7] = mVar6;
        if (mVar6 != 0) {
          local_38 = 0;
          iVar7 = M->n;
          goto LAB_000586a5;
        }
        if (iVar7 + 1 < iVar3) {
          pmVar5 = pmVar10 + iVar7 + 1;
          *pmVar5 = *pmVar5 + 1;
          mVar6 = *pmVar5;
          local_38 = 0;
          iVar7 = iVar7 + 2;
          while (mVar6 == 0) {
            if (iVar3 == iVar7) goto LAB_00058aa3;
            mVar6 = pmVar10[iVar7] + 1;
            pmVar10[iVar7] = mVar6;
            iVar7 = iVar7 + 1;
          }
          goto LAB_00058ac0;
        }
      }
LAB_00058aa3:
      local_38 = 1;
      iVar7 = M->n;
    }
  }
LAB_000586a5:
  pmVar1 = M->p[0][1];
  if (iVar7 < p) {
    __gmpn_mul(tp,bp,p,pmVar1,iVar7);
    iVar7 = M->n;
  }
  else {
    __gmpn_mul(tp,pmVar1,iVar7,bp,p);
    iVar7 = M->n;
  }
  iVar4 = iVar7 + p;
  if (iVar4 != 0) {
    iVar7 = __gmpn_sub_n(ap,ap,tp,iVar4);
    if (iVar7 != 0) {
      if (n <= iVar4) {
LAB_00058815:
        local_38 = local_38 - 1;
        iVar7 = M->n;
        goto LAB_000586d8;
      }
      mVar6 = ap[iVar4];
      ap[iVar4] = mVar6 - 1;
      if (mVar6 == 0) {
        if (n <= iVar4 + 1) goto LAB_00058815;
        mVar6 = ap[iVar4 + 1];
        ap[iVar4 + 1] = mVar6 - 1;
        iVar7 = iVar4 + 2;
        while (mVar6 == 0) {
          if (iVar7 == n) goto LAB_00058815;
          mVar6 = ap[iVar7];
          ap[iVar7] = mVar6 - 1;
          iVar7 = iVar7 + 1;
        }
      }
    }
    iVar7 = M->n;
  }
LAB_000586d8:
  pmVar1 = M->p[0][0];
  if (iVar7 < p) {
    __gmpn_mul(tp,bp,p,pmVar1,iVar7);
  }
  else {
    __gmpn_mul(tp,pmVar1,iVar7,bp,p);
  }
  (**(code **)(puVar2 + 0x28))(bp,tp,p);
  iVar7 = M->n;
  uVar11 = local_38;
  if (iVar7 == 0) {
    uVar9 = 0;
    if (p != 0) {
LAB_00058955:
      uVar8 = 0;
      uVar9 = 0xffffffff;
      uVar11 = 0xffffffff;
LAB_0005895f:
      iVar7 = __gmpn_sub_n(bp,bp,prodp,p);
      if (iVar7 != 0) {
        if (n <= p) goto LAB_0005872a;
        mVar6 = bp[p];
        bp[p] = mVar6 - 1;
        if (mVar6 == 0) {
          if (n <= p + 1) goto LAB_0005872a;
          mVar6 = bp[p + 1];
          bp[p + 1] = mVar6 - 1;
          iVar7 = p + 2;
          while (mVar6 == 0) {
            if (iVar7 == n) goto LAB_0005872a;
            mVar6 = bp[iVar7];
            bp[iVar7] = mVar6 - 1;
            iVar7 = iVar7 + 1;
          }
        }
      }
      uVar9 = uVar8;
      uVar11 = local_38 | uVar8;
    }
  }
  else {
    pmVar10 = bp + p;
    iVar4 = __gmpn_add_n(pmVar10,pmVar10,tp + p,iVar7);
    if (iVar4 != 0) {
      if (iVar7 < iVar3) {
        pmVar5 = pmVar10 + iVar7;
        *pmVar5 = *pmVar5 + 1;
        if (*pmVar5 == 0) {
          if (iVar3 <= iVar7 + 1) goto LAB_000588e3;
          pmVar5 = pmVar10 + iVar7 + 1;
          *pmVar5 = *pmVar5 + 1;
          mVar6 = *pmVar5;
          iVar7 = iVar7 + 2;
          while (mVar6 == 0) {
            if (iVar3 == iVar7) goto LAB_000588e3;
            mVar6 = pmVar10[iVar7] + 1;
            pmVar10[iVar7] = mVar6;
            iVar7 = iVar7 + 1;
          }
        }
        goto LAB_00058940;
      }
LAB_000588e3:
      uVar9 = 1;
      p = p + M->n;
      if (p == 0) goto LAB_000588f5;
      uVar9 = 0;
      uVar8 = 1;
      goto LAB_0005895f;
    }
LAB_00058940:
    uVar9 = 0;
    p = p + M->n;
    if (p != 0) goto LAB_00058955;
  }
LAB_0005872a:
  if (uVar11 == 0) {
    if (ap[n + 0x3fffffff] == 0) {
      n = n - (uint)(bp[n + 0x3fffffff] == 0);
    }
    return n;
  }
LAB_000588f5:
  ap[n] = local_38;
  bp[n] = uVar9;
  return n + 1;
}



int __regparm2
__gmpn_hgcd_matrix_adjust
          (undefined4 param_1,undefined4 param_2,int param_3,int param_4,int param_5,int param_6,
          int param_7)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  uint uVar5;
  int unaff_EBX;
  int *piVar6;
  int iVar7;
  uint uVar8;
  int iVar9;
  int iVar10;
  uint uVar11;
  int unaff_retaddr;
  uint local_3c;
  
  entry(param_2,0x585f9);
  iVar2 = *(int *)(unaff_retaddr + 4);
  iVar3 = param_7 + (iVar2 + param_6) * 4;
  if (iVar2 < param_6) {
    __gmpn_mul(param_7,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x14),iVar2);
    __gmpn_mul(iVar3,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x10),
               *(undefined4 *)(unaff_retaddr + 4));
  }
  else {
    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0x14),iVar2,param_4,param_6);
    __gmpn_mul(iVar3,*(undefined4 *)(unaff_retaddr + 0x10),*(undefined4 *)(unaff_retaddr + 4),
               param_4,param_6);
  }
  iVar7 = *(int *)(unaff_EBX + 0x4579b);
  (**(code **)(iVar7 + 0x28))(param_4,param_7,param_6);
  iVar10 = *(int *)(unaff_retaddr + 4);
  iVar2 = param_6 * 4;
  iVar1 = param_3 - param_6;
  local_3c = 0;
  if (iVar10 != 0) {
    iVar4 = iVar2 + param_4;
    local_3c = __gmpn_add_n(iVar4,iVar4,iVar2 + param_7,iVar10);
    if (local_3c == 0) {
LAB_00058ac0:
      iVar10 = *(int *)(unaff_retaddr + 4);
    }
    else {
      if (iVar10 < iVar1) {
        piVar6 = (int *)(iVar4 + iVar10 * 4);
        iVar9 = *piVar6 + 1;
        *piVar6 = iVar9;
        if (iVar9 != 0) {
          local_3c = 0;
          iVar10 = *(int *)(unaff_retaddr + 4);
          goto LAB_000586a5;
        }
        if (iVar10 + 1 < iVar1) {
          iVar9 = iVar10 + 2;
          piVar6 = (int *)(iVar10 * 4 + 4 + iVar4);
          *piVar6 = *piVar6 + 1;
          iVar10 = *piVar6;
          local_3c = 0;
          while (iVar10 == 0) {
            if (iVar1 == iVar9) goto LAB_00058aa3;
            iVar10 = iVar9 * 4;
            iVar9 = iVar9 + 1;
            iVar10 = *(int *)(iVar4 + iVar10) + 1;
            *(int *)(iVar4 + -4 + iVar9 * 4) = iVar10;
          }
          goto LAB_00058ac0;
        }
      }
LAB_00058aa3:
      local_3c = 1;
      iVar10 = *(int *)(unaff_retaddr + 4);
    }
  }
LAB_000586a5:
  if (iVar10 < param_6) {
    __gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 0xc),iVar10);
    iVar10 = *(int *)(unaff_retaddr + 4);
  }
  else {
    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0xc),iVar10,param_5,param_6);
    iVar10 = *(int *)(unaff_retaddr + 4);
  }
  iVar4 = iVar10 + param_6;
  if (iVar4 != 0) {
    iVar10 = __gmpn_sub_n(param_4,param_4,param_7,iVar4);
    if (iVar10 != 0) {
      if (param_3 <= iVar4) {
LAB_00058815:
        local_3c = local_3c - 1;
        iVar10 = *(int *)(unaff_retaddr + 4);
        goto LAB_000586d8;
      }
      piVar6 = (int *)(param_4 + iVar4 * 4);
      iVar10 = *piVar6;
      *piVar6 = iVar10 + -1;
      if (iVar10 == 0) {
        if (param_3 <= iVar4 + 1) goto LAB_00058815;
        iVar9 = iVar4 + 2;
        piVar6 = (int *)(param_4 + (iVar4 + 1) * 4);
        iVar10 = *piVar6;
        *piVar6 = iVar10 + -1;
        while (iVar10 == 0) {
          if (iVar9 == param_3) goto LAB_00058815;
          iVar10 = *(int *)(param_4 + iVar9 * 4);
          iVar9 = iVar9 + 1;
          *(int *)(param_4 + -4 + iVar9 * 4) = iVar10 + -1;
        }
      }
    }
    iVar10 = *(int *)(unaff_retaddr + 4);
  }
LAB_000586d8:
  if (iVar10 < param_6) {
    __gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 8),iVar10);
  }
  else {
    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 8),iVar10,param_5,param_6);
  }
  (**(code **)(iVar7 + 0x28))(param_5,param_7,param_6);
  iVar7 = *(int *)(unaff_retaddr + 4);
  uVar11 = local_3c;
  if (iVar7 == 0) {
    uVar8 = 0;
    if (param_6 != 0) {
LAB_00058955:
      uVar5 = 0;
      uVar8 = 0xffffffff;
      uVar11 = 0xffffffff;
LAB_0005895f:
      iVar3 = __gmpn_sub_n(param_5,param_5,iVar3,param_6);
      if (iVar3 != 0) {
        if (param_3 <= param_6) goto LAB_0005872a;
        piVar6 = (int *)(param_5 + param_6 * 4);
        iVar3 = *piVar6;
        *piVar6 = iVar3 + -1;
        if (iVar3 == 0) {
          if (param_3 <= param_6 + 1) goto LAB_0005872a;
          piVar6 = (int *)(param_6 * 4 + 4 + param_5);
          param_6 = param_6 + 2;
          iVar3 = *piVar6;
          *piVar6 = iVar3 + -1;
          while (iVar3 == 0) {
            if (param_6 == param_3) goto LAB_0005872a;
            iVar3 = *(int *)(param_5 + param_6 * 4);
            param_6 = param_6 + 1;
            *(int *)(param_5 + -4 + param_6 * 4) = iVar3 + -1;
          }
        }
      }
      uVar8 = uVar5;
      uVar11 = local_3c | uVar5;
    }
  }
  else {
    iVar10 = iVar2 + param_5;
    iVar2 = __gmpn_add_n(iVar10,iVar10,iVar2 + param_7,iVar7);
    if (iVar2 != 0) {
      if (iVar7 < iVar1) {
        piVar6 = (int *)(iVar10 + iVar7 * 4);
        *piVar6 = *piVar6 + 1;
        if (*piVar6 == 0) {
          if (iVar1 <= iVar7 + 1) goto LAB_000588e3;
          piVar6 = (int *)(iVar7 * 4 + 4 + iVar10);
          iVar7 = iVar7 + 2;
          *piVar6 = *piVar6 + 1;
          iVar2 = *piVar6;
          while (iVar2 == 0) {
            if (iVar1 == iVar7) goto LAB_000588e3;
            iVar2 = iVar7 * 4;
            iVar7 = iVar7 + 1;
            iVar2 = *(int *)(iVar10 + iVar2) + 1;
            *(int *)(iVar10 + -4 + iVar7 * 4) = iVar2;
          }
        }
        goto LAB_00058940;
      }
LAB_000588e3:
      uVar8 = 1;
      param_6 = param_6 + *(int *)(unaff_retaddr + 4);
      if (param_6 == 0) goto LAB_000588f5;
      uVar8 = 0;
      uVar5 = 1;
      goto LAB_0005895f;
    }
LAB_00058940:
    uVar8 = 0;
    param_6 = param_6 + *(int *)(unaff_retaddr + 4);
    if (param_6 != 0) goto LAB_00058955;
  }
LAB_0005872a:
  if (uVar11 == 0) {
    if (*(int *)(param_4 + (param_3 + 0x3fffffff) * 4) == 0) {
      param_3 = param_3 - (uint)(*(int *)(param_5 + (param_3 + 0x3fffffff) * 4) == 0);
    }
    return param_3;
  }
LAB_000588f5:
  *(uint *)(param_4 + param_3 * 4) = local_3c;
  *(uint *)(param_5 + param_3 * 4) = uVar8;
  return param_3 + 1;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x0001c340
ADD EBX,0x45a07
SUB ESP,0x2c
MOV EAX,dword ptr [ESP + 0x40]
MOV ESI,dword ptr [ESP + 0x50]
MOV EBP,dword ptr [ESP + 0x54]
MOV ECX,dword ptr [ESP + 0x40]
MOV EAX,dword ptr [EAX + 0x4]
LEA EDX,[EAX + ESI*0x1]
LEA EDI,[EBP + EDX*0x4]
MOV EDX,dword ptr [ECX + 0x14]
MOV dword ptr [ESP + 0x10],EDI
CMP EAX,ESI
JL 0x00058830
SUB ESP,0xc
PUSH ESI
PUSH dword ptr [ESP + 0x58]
PUSH EAX
PUSH EDX
PUSH EBP
CALL 0x0001bbe0
ADD ESP,0x14
PUSH ESI
PUSH dword ptr [ESP + 0x58]
MOV EAX,dword ptr [ESP + 0x54]
PUSH dword ptr [EAX + 0x4]
MOV EAX,dword ptr [ESP + 0x58]
PUSH dword ptr [EAX + 0x10]
PUSH EDI
CALL 0x0001bbe0
ADD ESP,0x20
MOV EAX,dword ptr [EBX + 0xfffffd94]
SUB ESP,0x4
MOV dword ptr [ESP + 0xc],EAX
PUSH ESI
PUSH EBP
PUSH dword ptr [ESP + 0x54]
CALL dword ptr [EAX + 0x28]
MOV EAX,dword ptr [ESP + 0x50]
MOV EDI,dword ptr [EAX + 0x4]
LEA EAX,[ESI*0x4 + 0x0]
MOV dword ptr [ESP + 0x24],EAX
ADD EAX,EBP
MOV dword ptr [ESP + 0x28],EAX
MOV EAX,dword ptr [ESP + 0x54]
SUB EAX,ESI
MOV dword ptr [ESP + 0x1c],EAX
ADD ESP,0x10
MOV dword ptr [ESP + 0x4],0x0
TEST EDI,EDI
JNZ 0x00058a20
MOV EAX,dword ptr [ESP + 0x40]
MOV EAX,dword ptr [EAX + 0xc]
CMP ESI,EDI
JLE 0x00058760
SUB ESP,0xc
PUSH EDI
PUSH EAX
PUSH ESI
PUSH dword ptr [ESP + 0x64]
PUSH EBP
CALL 0x0001bbe0
ADD ESP,0x20
MOV EAX,dword ptr [ESP + 0x40]
MOV EAX,dword ptr [EAX + 0x4]
MOV EDI,EAX
ADD EDI,ESI
JNZ 0x00058784
MOV ECX,dword ptr [ESP + 0x40]
MOV EDX,dword ptr [ECX + 0x8]
CMP ESI,EAX
JG 0x00058920
SUB ESP,0xc
PUSH ESI
PUSH dword ptr [ESP + 0x5c]
PUSH EAX
PUSH EDX
PUSH EBP
CALL 0x0001bbe0
ADD ESP,0x20
SUB ESP,0x4
PUSH ESI
PUSH EBP
PUSH dword ptr [ESP + 0x58]
MOV EAX,dword ptr [ESP + 0x18]
CALL dword ptr [EAX + 0x28]
MOV EAX,dword ptr [ESP + 0x50]
ADD ESP,0x10
MOV EBP,dword ptr [EAX + 0x4]
TEST EBP,EBP
JNZ 0x00058870
MOV EDI,dword ptr [ESP + 0x4]
XOR ECX,ECX
ADD ESI,EBP
JNZ 0x00058955
TEST EDI,EDI
JNZ 0x000588f5
MOV EAX,dword ptr [ESP + 0x44]
MOV EBX,dword ptr [ESP + 0x48]
LEA EDX,[EAX + 0x3fffffff]
MOV ECX,dword ptr [EBX + EDX*0x4]
TEST ECX,ECX
JNZ 0x00058752
MOV EBX,dword ptr [ESP + 0x4c]
CMP dword ptr [EBX + EDX*0x4],0x1
SBB EAX,0x0
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0xc
PUSH ESI
PUSH dword ptr [ESP + 0x5c]
PUSH EDI
PUSH EAX
PUSH EBP
CALL 0x0001bbe0
ADD ESP,0x20
MOV EAX,dword ptr [ESP + 0x40]
MOV EAX,dword ptr [EAX + 0x4]
MOV EDI,EAX
ADD EDI,ESI
JZ 0x000586d8
PUSH EDI
PUSH EBP
PUSH dword ptr [ESP + 0x50]
PUSH dword ptr [ESP + 0x54]
CALL 0x0001b390
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00058a14
CMP EDI,dword ptr [ESP + 0x44]
JGE 0x00058815
MOV EAX,dword ptr [ESP + 0x48]
LEA ECX,[EDI + 0x1]
MOV dword ptr [ESP + 0x1c],ECX
LEA EDX,[EAX + EDI*0x4]
MOV EAX,dword ptr [EDX]
LEA ECX,[EAX + -0x1]
MOV dword ptr [EDX],ECX
TEST EAX,EAX
JNZ 0x00058a14
LEA ECX,[EDI + 0x1]
CMP dword ptr [ESP + 0x44],ECX
JLE 0x00058815
MOV EAX,dword ptr [ESP + 0x48]
ADD EDI,0x2
LEA EDX,[EAX + ECX*0x4]
MOV EAX,dword ptr [EDX]
LEA ECX,[EAX + -0x1]
MOV dword ptr [EDX],ECX
TEST EAX,EAX
JNZ 0x00058a14
MOV dword ptr [ESP + 0x50],ESI
MOV EDX,dword ptr [ESP + 0x48]
MOV ESI,dword ptr [ESP + 0x44]
JMP 0x0005880d
MOV EAX,dword ptr [EDX + EDI*0x4]
ADD EDI,0x1
LEA ECX,[EAX + -0x1]
MOV dword ptr [EDX + EDI*0x4 + -0x4],ECX
TEST EAX,EAX
JNZ 0x00058a10
CMP EDI,ESI
JNZ 0x000587f8
MOV ESI,dword ptr [ESP + 0x50]
MOV EAX,dword ptr [ESP + 0x40]
SUB dword ptr [ESP + 0x4],0x1
MOV EAX,dword ptr [EAX + 0x4]
JMP 0x000586d8
SUB ESP,0xc
PUSH EAX
PUSH EDX
PUSH ESI
PUSH dword ptr [ESP + 0x60]
PUSH EBP
CALL 0x0001bbe0
ADD ESP,0x14
MOV EAX,dword ptr [ESP + 0x4c]
PUSH dword ptr [EAX + 0x4]
MOV EAX,dword ptr [ESP + 0x50]
PUSH dword ptr [EAX + 0x10]
PUSH ESI
PUSH dword ptr [ESP + 0x60]
PUSH dword ptr [ESP + 0x2c]
CALL 0x0001bbe0
ADD ESP,0x20
JMP 0x0005865a
MOV EDI,dword ptr [ESP + 0x14]
ADD EDI,dword ptr [ESP + 0x4c]
PUSH EBP
PUSH dword ptr [ESP + 0x1c]
PUSH EDI
PUSH EDI
CALL 0x0001ba30
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00058940
CMP dword ptr [ESP + 0xc],EBP
JLE 0x000588e3
LEA EAX,[EBP*0x4 + 0x0]
LEA EDX,[EBP + 0x1]
LEA ECX,[EDI + EAX*0x1]
MOV dword ptr [ESP + 0x8],EDX
ADD dword ptr [ECX],0x1
JNZ 0x00058940
ADD EAX,0x4
LEA EDX,[EBP + 0x1]
CMP dword ptr [ESP + 0xc],EDX
JLE 0x000588e3
ADD EAX,EDI
ADD EBP,0x2
MOV EDX,dword ptr [ESP + 0xc]
ADD dword ptr [EAX],0x1
JZ 0x000588df
JMP 0x00058940
MOV EAX,dword ptr [EDI + EBP*0x4]
ADD EBP,0x1
ADD EAX,0x1
MOV dword ptr [EDI + EBP*0x4 + -0x4],EAX
JNZ 0x00058940
CMP EDX,EBP
JNZ 0x000588d0
MOV EAX,dword ptr [ESP + 0x40]
MOV ECX,0x1
ADD ESI,dword ptr [EAX + 0x4]
JNZ 0x00058ae0
MOV EBX,dword ptr [ESP + 0x44]
MOV EAX,dword ptr [ESP + 0x48]
MOV EDX,dword ptr [ESP + 0x4]
MOV dword ptr [EAX + EBX*0x4],EDX
MOV EAX,dword ptr [ESP + 0x4c]
MOV dword ptr [EAX + EBX*0x4],ECX
ADD ESP,0x2c
MOV EAX,EBX
ADD EAX,0x1
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0xc
PUSH EAX
PUSH EDX
PUSH ESI
PUSH dword ptr [ESP + 0x64]
PUSH EBP
CALL 0x0001bbe0
ADD ESP,0x20
JMP 0x000586fa
MOV EAX,dword ptr [ESP + 0x40]
MOV EDI,dword ptr [ESP + 0x4]
XOR ECX,ECX
MOV EBP,dword ptr [EAX + 0x4]
ADD ESI,EBP
JZ 0x0005872a
MOV EDI,0xffffffff
MOV EBP,0xffffffff
MOV dword ptr [ESP + 0x8],ECX
PUSH ESI
PUSH dword ptr [ESP + 0x14]
PUSH dword ptr [ESP + 0x54]
PUSH dword ptr [ESP + 0x58]
CALL 0x0001b390
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x8]
TEST EAX,EAX
JZ 0x00058ad4
CMP dword ptr [ESP + 0x44],ESI
JLE 0x00058a01
MOV EBX,dword ptr [ESP + 0x4c]
LEA EAX,[ESI*0x4 + 0x0]
MOV dword ptr [ESP + 0x8],EAX
ADD EBX,EAX
LEA EAX,[ESI + 0x1]
MOV EDX,dword ptr [EBX]
MOV dword ptr [ESP + 0xc],EAX
LEA EAX,[EDX + -0x1]
MOV dword ptr [EBX],EAX
TEST EDX,EDX
JNZ 0x00058ad4
MOV EAX,dword ptr [ESP + 0x8]
LEA EBX,[ESI + 0x1]
ADD EAX,0x4
CMP dword ptr [ESP + 0x44],EBX
JLE 0x00058a01
ADD EAX,dword ptr [ESP + 0x4c]
ADD ESI,0x2
MOV EDX,dword ptr [EAX]
LEA EBX,[EDX + -0x1]
MOV dword ptr [EAX],EBX
TEST EDX,EDX
JNZ 0x00058ad4
MOV EBX,dword ptr [ESP + 0x44]
MOV EDX,dword ptr [ESP + 0x4c]
MOV dword ptr [ESP + 0x8],ECX
JMP 0x000589fd
MOV EAX,dword ptr [EDX + ESI*0x4]
ADD ESI,0x1
LEA ECX,[EAX + -0x1]
MOV dword ptr [EDX + ESI*0x4 + -0x4],ECX
TEST EAX,EAX
JNZ 0x00058ad0
CMP ESI,EBX
JNZ 0x000589e8
MOV ECX,EBP
JMP 0x0005872a
MOV ESI,dword ptr [ESP + 0x50]
MOV EAX,dword ptr [ESP + 0x40]
MOV EAX,dword ptr [EAX + 0x4]
JMP 0x000586d8
MOV ECX,dword ptr [ESP + 0x14]
ADD ECX,dword ptr [ESP + 0x48]
PUSH EDI
PUSH dword ptr [ESP + 0x1c]
PUSH ECX
PUSH ECX
MOV dword ptr [ESP + 0x2c],ECX
CALL 0x0001ba30
MOV dword ptr [ESP + 0x14],EAX
ADD ESP,0x10
TEST EAX,EAX
MOV ECX,dword ptr [ESP + 0x1c]
JZ 0x00058ac0
CMP EDI,dword ptr [ESP + 0xc]
JGE 0x00058aa3
LEA EAX,[EDI*0x4 + 0x0]
LEA EDX,[ECX + EAX*0x1]
MOV dword ptr [ESP + 0x1c],EAX
MOV EAX,dword ptr [EDX]
ADD EAX,0x1
MOV dword ptr [ESP + 0x4],EAX
MOV dword ptr [EDX],EAX
JNZ 0x00058af0
MOV EDX,dword ptr [ESP + 0x1c]
LEA EAX,[EDI + 0x1]
ADD EDX,0x4
CMP dword ptr [ESP + 0xc],EAX
JLE 0x00058aa3
MOV EAX,EDX
ADD EDI,0x2
MOV EDX,dword ptr [ESP + 0xc]
ADD EAX,ECX
ADD dword ptr [EAX],0x1
JZ 0x00058a9f
JMP 0x00058ac0
MOV EAX,dword ptr [ECX + EDI*0x4]
ADD EDI,0x1
ADD EAX,0x1
MOV dword ptr [ECX + EDI*0x4 + -0x4],EAX
JNZ 0x00058ac0
CMP EDX,EDI
JNZ 0x00058a90
MOV EAX,dword ptr [ESP + 0x40]
MOV dword ptr [ESP + 0x4],0x1
MOV EDI,dword ptr [EAX + 0x4]
JMP 0x000586a5
MOV EAX,dword ptr [ESP + 0x40]
MOV EDI,dword ptr [EAX + 0x4]
JMP 0x000586a5
MOV ECX,dword ptr [ESP + 0x8]
MOV EDI,dword ptr [ESP + 0x4]
OR EDI,ECX
JMP 0x0005872a
MOV EDI,dword ptr [ESP + 0x4]
XOR EBP,EBP
MOV ECX,0x1
JMP 0x0005895f
MOV EAX,dword ptr [ESP + 0x40]
MOV dword ptr [ESP + 0x4],0x0
MOV EDI,dword ptr [EAX + 0x4]
JMP 0x000586a5
(translation_unit "int __regparm2\n__gmpn_hgcd_matrix_adjust\n          (undefined4 param_1,undefined4 param_2,int param_3,int param_4,int param_5,int param_6,\n          int param_7)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  uint uVar5;\n  int unaff_EBX;\n  int *piVar6;\n  int iVar7;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  int unaff_retaddr;\n  uint local_3c;\n  \n  entry(param_2,0x585f9);\n  iVar2 = *(int *)(unaff_retaddr + 4);\n  iVar3 = param_7 + (iVar2 + param_6) * 4;\n  if (iVar2 < param_6) {\n    __gmpn_mul(param_7,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x14),iVar2);\n    __gmpn_mul(iVar3,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x10),\n               *(undefined4 *)(unaff_retaddr + 4));\n  }\n  else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0x14),iVar2,param_4,param_6);\n    __gmpn_mul(iVar3,*(undefined4 *)(unaff_retaddr + 0x10),*(undefined4 *)(unaff_retaddr + 4),\n               param_4,param_6);\n  }\n  iVar7 = *(int *)(unaff_EBX + 0x4579b);\n  (**(code **)(iVar7 + 0x28))(param_4,param_7,param_6);\n  iVar10 = *(int *)(unaff_retaddr + 4);\n  iVar2 = param_6 * 4;\n  iVar1 = param_3 - param_6;\n  local_3c = 0;\n  if (iVar10 != 0) {\n    iVar4 = iVar2 + param_4;\n    local_3c = __gmpn_add_n(iVar4,iVar4,iVar2 + param_7,iVar10);\n    if (local_3c == 0) {\nLAB_00058ac0:\n      iVar10 = *(int *)(unaff_retaddr + 4);\n    }\n    else {\n      if (iVar10 < iVar1) {\n        piVar6 = (int *)(iVar4 + iVar10 * 4);\n        iVar9 = *piVar6 + 1;\n        *piVar6 = iVar9;\n        if (iVar9 != 0) {\n          local_3c = 0;\n          iVar10 = *(int *)(unaff_retaddr + 4);\n          goto LAB_000586a5;\n        }\n        if (iVar10 + 1 < iVar1) {\n          iVar9 = iVar10 + 2;\n          piVar6 = (int *)(iVar10 * 4 + 4 + iVar4);\n          *piVar6 = *piVar6 + 1;\n          iVar10 = *piVar6;\n          local_3c = 0;\n          while (iVar10 == 0) {\n            if (iVar1 == iVar9) goto LAB_00058aa3;\n            iVar10 = iVar9 * 4;\n            iVar9 = iVar9 + 1;\n            iVar10 = *(int *)(iVar4 + iVar10) + 1;\n            *(int *)(iVar4 + -4 + iVar9 * 4) = iVar10;\n          }\n          goto LAB_00058ac0;\n        }\n      }\nLAB_00058aa3:\n      local_3c = 1;\n      iVar10 = *(int *)(unaff_retaddr + 4);\n    }\n  }\nLAB_000586a5:\n  if (iVar10 < param_6) {\n    __gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 0xc),iVar10);\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }\n  else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0xc),iVar10,param_5,param_6);\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }\n  iVar4 = iVar10 + param_6;\n  if (iVar4 != 0) {\n    iVar10 = __gmpn_sub_n(param_4,param_4,param_7,iVar4);\n    if (iVar10 != 0) {\n      if (param_3 <= iVar4) {\nLAB_00058815:\n        local_3c = local_3c - 1;\n        iVar10 = *(int *)(unaff_retaddr + 4);\n        goto LAB_000586d8;\n      }\n      piVar6 = (int *)(param_4 + iVar4 * 4);\n      iVar10 = *piVar6;\n      *piVar6 = iVar10 + -1;\n      if (iVar10 == 0) {\n        if (param_3 <= iVar4 + 1) goto LAB_00058815;\n        iVar9 = iVar4 + 2;\n        piVar6 = (int *)(param_4 + (iVar4 + 1) * 4);\n        iVar10 = *piVar6;\n        *piVar6 = iVar10 + -1;\n        while (iVar10 == 0) {\n          if (iVar9 == param_3) goto LAB_00058815;\n          iVar10 = *(int *)(param_4 + iVar9 * 4);\n          iVar9 = iVar9 + 1;\n          *(int *)(param_4 + -4 + iVar9 * 4) = iVar10 + -1;\n        }\n      }\n    }\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }\nLAB_000586d8:\n  if (iVar10 < param_6) {\n    __gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 8),iVar10);\n  }\n  else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 8),iVar10,param_5,param_6);\n  }\n  (**(code **)(iVar7 + 0x28))(param_5,param_7,param_6);\n  iVar7 = *(int *)(unaff_retaddr + 4);\n  uVar11 = local_3c;\n  if (iVar7 == 0) {\n    uVar8 = 0;\n    if (param_6 != 0) {\nLAB_00058955:\n      uVar5 = 0;\n      uVar8 = 0xffffffff;\n      uVar11 = 0xffffffff;\nLAB_0005895f:\n      iVar3 = __gmpn_sub_n(param_5,param_5,iVar3,param_6);\n      if (iVar3 != 0) {\n        if (param_3 <= param_6) goto LAB_0005872a;\n        piVar6 = (int *)(param_5 + param_6 * 4);\n        iVar3 = *piVar6;\n        *piVar6 = iVar3 + -1;\n        if (iVar3 == 0) {\n          if (param_3 <= param_6 + 1) goto LAB_0005872a;\n          piVar6 = (int *)(param_6 * 4 + 4 + param_5);\n          param_6 = param_6 + 2;\n          iVar3 = *piVar6;\n          *piVar6 = iVar3 + -1;\n          while (iVar3 == 0) {\n            if (param_6 == param_3) goto LAB_0005872a;\n            iVar3 = *(int *)(param_5 + param_6 * 4);\n            param_6 = param_6 + 1;\n            *(int *)(param_5 + -4 + param_6 * 4) = iVar3 + -1;\n          }\n        }\n      }\n      uVar8 = uVar5;\n      uVar11 = local_3c | uVar5;\n    }\n  }\n  else {\n    iVar10 = iVar2 + param_5;\n    iVar2 = __gmpn_add_n(iVar10,iVar10,iVar2 + param_7,iVar7);\n    if (iVar2 != 0) {\n      if (iVar7 < iVar1) {\n        piVar6 = (int *)(iVar10 + iVar7 * 4);\n        *piVar6 = *piVar6 + 1;\n        if (*piVar6 == 0) {\n          if (iVar1 <= iVar7 + 1) goto LAB_000588e3;\n          piVar6 = (int *)(iVar7 * 4 + 4 + iVar10);\n          iVar7 = iVar7 + 2;\n          *piVar6 = *piVar6 + 1;\n          iVar2 = *piVar6;\n          while (iVar2 == 0) {\n            if (iVar1 == iVar7) goto LAB_000588e3;\n            iVar2 = iVar7 * 4;\n            iVar7 = iVar7 + 1;\n            iVar2 = *(int *)(iVar10 + iVar2) + 1;\n            *(int *)(iVar10 + -4 + iVar7 * 4) = iVar2;\n          }\n        }\n        goto LAB_00058940;\n      }\nLAB_000588e3:\n      uVar8 = 1;\n      param_6 = param_6 + *(int *)(unaff_retaddr + 4);\n      if (param_6 == 0) goto LAB_000588f5;\n      uVar8 = 0;\n      uVar5 = 1;\n      goto LAB_0005895f;\n    }\nLAB_00058940:\n    uVar8 = 0;\n    param_6 = param_6 + *(int *)(unaff_retaddr + 4);\n    if (param_6 != 0) goto LAB_00058955;\n  }\nLAB_0005872a:\n  if (uVar11 == 0) {\n    if (*(int *)(param_4 + (param_3 + 0x3fffffff) * 4) == 0) {\n      param_3 = param_3 - (uint)(*(int *)(param_5 + (param_3 + 0x3fffffff) * 4) == 0);\n    }\n    return param_3;\n  }\nLAB_000588f5:\n  *(uint *)(param_4 + param_3 * 4) = local_3c;\n  *(uint *)(param_5 + param_3 * 4) = uVar8;\n  return param_3 + 1;\n}\n\n" (function_definition "int __regparm2\n__gmpn_hgcd_matrix_adjust\n          (undefined4 param_1,undefined4 param_2,int param_3,int param_4,int param_5,int param_6,\n          int param_7)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  uint uVar5;\n  int unaff_EBX;\n  int *piVar6;\n  int iVar7;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  int unaff_retaddr;\n  uint local_3c;\n  \n  entry(param_2,0x585f9);\n  iVar2 = *(int *)(unaff_retaddr + 4);\n  iVar3 = param_7 + (iVar2 + param_6) * 4;\n  if (iVar2 < param_6) {\n    __gmpn_mul(param_7,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x14),iVar2);\n    __gmpn_mul(iVar3,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x10),\n               *(undefined4 *)(unaff_retaddr + 4));\n  }\n  else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0x14),iVar2,param_4,param_6);\n    __gmpn_mul(iVar3,*(undefined4 *)(unaff_retaddr + 0x10),*(undefined4 *)(unaff_retaddr + 4),\n               param_4,param_6);\n  }\n  iVar7 = *(int *)(unaff_EBX + 0x4579b);\n  (**(code **)(iVar7 + 0x28))(param_4,param_7,param_6);\n  iVar10 = *(int *)(unaff_retaddr + 4);\n  iVar2 = param_6 * 4;\n  iVar1 = param_3 - param_6;\n  local_3c = 0;\n  if (iVar10 != 0) {\n    iVar4 = iVar2 + param_4;\n    local_3c = __gmpn_add_n(iVar4,iVar4,iVar2 + param_7,iVar10);\n    if (local_3c == 0) {\nLAB_00058ac0:\n      iVar10 = *(int *)(unaff_retaddr + 4);\n    }\n    else {\n      if (iVar10 < iVar1) {\n        piVar6 = (int *)(iVar4 + iVar10 * 4);\n        iVar9 = *piVar6 + 1;\n        *piVar6 = iVar9;\n        if (iVar9 != 0) {\n          local_3c = 0;\n          iVar10 = *(int *)(unaff_retaddr + 4);\n          goto LAB_000586a5;\n        }\n        if (iVar10 + 1 < iVar1) {\n          iVar9 = iVar10 + 2;\n          piVar6 = (int *)(iVar10 * 4 + 4 + iVar4);\n          *piVar6 = *piVar6 + 1;\n          iVar10 = *piVar6;\n          local_3c = 0;\n          while (iVar10 == 0) {\n            if (iVar1 == iVar9) goto LAB_00058aa3;\n            iVar10 = iVar9 * 4;\n            iVar9 = iVar9 + 1;\n            iVar10 = *(int *)(iVar4 + iVar10) + 1;\n            *(int *)(iVar4 + -4 + iVar9 * 4) = iVar10;\n          }\n          goto LAB_00058ac0;\n        }\n      }\nLAB_00058aa3:\n      local_3c = 1;\n      iVar10 = *(int *)(unaff_retaddr + 4);\n    }\n  }\nLAB_000586a5:\n  if (iVar10 < param_6) {\n    __gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 0xc),iVar10);\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }\n  else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0xc),iVar10,param_5,param_6);\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }\n  iVar4 = iVar10 + param_6;\n  if (iVar4 != 0) {\n    iVar10 = __gmpn_sub_n(param_4,param_4,param_7,iVar4);\n    if (iVar10 != 0) {\n      if (param_3 <= iVar4) {\nLAB_00058815:\n        local_3c = local_3c - 1;\n        iVar10 = *(int *)(unaff_retaddr + 4);\n        goto LAB_000586d8;\n      }\n      piVar6 = (int *)(param_4 + iVar4 * 4);\n      iVar10 = *piVar6;\n      *piVar6 = iVar10 + -1;\n      if (iVar10 == 0) {\n        if (param_3 <= iVar4 + 1) goto LAB_00058815;\n        iVar9 = iVar4 + 2;\n        piVar6 = (int *)(param_4 + (iVar4 + 1) * 4);\n        iVar10 = *piVar6;\n        *piVar6 = iVar10 + -1;\n        while (iVar10 == 0) {\n          if (iVar9 == param_3) goto LAB_00058815;\n          iVar10 = *(int *)(param_4 + iVar9 * 4);\n          iVar9 = iVar9 + 1;\n          *(int *)(param_4 + -4 + iVar9 * 4) = iVar10 + -1;\n        }\n      }\n    }\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }\nLAB_000586d8:\n  if (iVar10 < param_6) {\n    __gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 8),iVar10);\n  }\n  else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 8),iVar10,param_5,param_6);\n  }\n  (**(code **)(iVar7 + 0x28))(param_5,param_7,param_6);\n  iVar7 = *(int *)(unaff_retaddr + 4);\n  uVar11 = local_3c;\n  if (iVar7 == 0) {\n    uVar8 = 0;\n    if (param_6 != 0) {\nLAB_00058955:\n      uVar5 = 0;\n      uVar8 = 0xffffffff;\n      uVar11 = 0xffffffff;\nLAB_0005895f:\n      iVar3 = __gmpn_sub_n(param_5,param_5,iVar3,param_6);\n      if (iVar3 != 0) {\n        if (param_3 <= param_6) goto LAB_0005872a;\n        piVar6 = (int *)(param_5 + param_6 * 4);\n        iVar3 = *piVar6;\n        *piVar6 = iVar3 + -1;\n        if (iVar3 == 0) {\n          if (param_3 <= param_6 + 1) goto LAB_0005872a;\n          piVar6 = (int *)(param_6 * 4 + 4 + param_5);\n          param_6 = param_6 + 2;\n          iVar3 = *piVar6;\n          *piVar6 = iVar3 + -1;\n          while (iVar3 == 0) {\n            if (param_6 == param_3) goto LAB_0005872a;\n            iVar3 = *(int *)(param_5 + param_6 * 4);\n            param_6 = param_6 + 1;\n            *(int *)(param_5 + -4 + param_6 * 4) = iVar3 + -1;\n          }\n        }\n      }\n      uVar8 = uVar5;\n      uVar11 = local_3c | uVar5;\n    }\n  }\n  else {\n    iVar10 = iVar2 + param_5;\n    iVar2 = __gmpn_add_n(iVar10,iVar10,iVar2 + param_7,iVar7);\n    if (iVar2 != 0) {\n      if (iVar7 < iVar1) {\n        piVar6 = (int *)(iVar10 + iVar7 * 4);\n        *piVar6 = *piVar6 + 1;\n        if (*piVar6 == 0) {\n          if (iVar1 <= iVar7 + 1) goto LAB_000588e3;\n          piVar6 = (int *)(iVar7 * 4 + 4 + iVar10);\n          iVar7 = iVar7 + 2;\n          *piVar6 = *piVar6 + 1;\n          iVar2 = *piVar6;\n          while (iVar2 == 0) {\n            if (iVar1 == iVar7) goto LAB_000588e3;\n            iVar2 = iVar7 * 4;\n            iVar7 = iVar7 + 1;\n            iVar2 = *(int *)(iVar10 + iVar2) + 1;\n            *(int *)(iVar10 + -4 + iVar7 * 4) = iVar2;\n          }\n        }\n        goto LAB_00058940;\n      }\nLAB_000588e3:\n      uVar8 = 1;\n      param_6 = param_6 + *(int *)(unaff_retaddr + 4);\n      if (param_6 == 0) goto LAB_000588f5;\n      uVar8 = 0;\n      uVar5 = 1;\n      goto LAB_0005895f;\n    }\nLAB_00058940:\n    uVar8 = 0;\n    param_6 = param_6 + *(int *)(unaff_retaddr + 4);\n    if (param_6 != 0) goto LAB_00058955;\n  }\nLAB_0005872a:\n  if (uVar11 == 0) {\n    if (*(int *)(param_4 + (param_3 + 0x3fffffff) * 4) == 0) {\n      param_3 = param_3 - (uint)(*(int *)(param_5 + (param_3 + 0x3fffffff) * 4) == 0);\n    }\n    return param_3;\n  }\nLAB_000588f5:\n  *(uint *)(param_4 + param_3 * 4) = local_3c;\n  *(uint *)(param_5 + param_3 * 4) = uVar8;\n  return param_3 + 1;\n}" primitive_type (ERROR "__regparm2" identifier) (function_declarator "__gmpn_hgcd_matrix_adjust\n          (undefined4 param_1,undefined4 param_2,int param_3,int param_4,int param_5,int param_6,\n          int param_7)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,int param_3,int param_4,int param_5,int param_6,\n          int param_7)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "int param_6" primitive_type identifier) , (parameter_declaration "int param_7" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  uint uVar5;\n  int unaff_EBX;\n  int *piVar6;\n  int iVar7;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  int unaff_retaddr;\n  uint local_3c;\n  \n  entry(param_2,0x585f9);\n  iVar2 = *(int *)(unaff_retaddr + 4);\n  iVar3 = param_7 + (iVar2 + param_6) * 4;\n  if (iVar2 < param_6) {\n    __gmpn_mul(param_7,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x14),iVar2);\n    __gmpn_mul(iVar3,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x10),\n               *(undefined4 *)(unaff_retaddr + 4));\n  }\n  else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0x14),iVar2,param_4,param_6);\n    __gmpn_mul(iVar3,*(undefined4 *)(unaff_retaddr + 0x10),*(undefined4 *)(unaff_retaddr + 4),\n               param_4,param_6);\n  }\n  iVar7 = *(int *)(unaff_EBX + 0x4579b);\n  (**(code **)(iVar7 + 0x28))(param_4,param_7,param_6);\n  iVar10 = *(int *)(unaff_retaddr + 4);\n  iVar2 = param_6 * 4;\n  iVar1 = param_3 - param_6;\n  local_3c = 0;\n  if (iVar10 != 0) {\n    iVar4 = iVar2 + param_4;\n    local_3c = __gmpn_add_n(iVar4,iVar4,iVar2 + param_7,iVar10);\n    if (local_3c == 0) {\nLAB_00058ac0:\n      iVar10 = *(int *)(unaff_retaddr + 4);\n    }\n    else {\n      if (iVar10 < iVar1) {\n        piVar6 = (int *)(iVar4 + iVar10 * 4);\n        iVar9 = *piVar6 + 1;\n        *piVar6 = iVar9;\n        if (iVar9 != 0) {\n          local_3c = 0;\n          iVar10 = *(int *)(unaff_retaddr + 4);\n          goto LAB_000586a5;\n        }\n        if (iVar10 + 1 < iVar1) {\n          iVar9 = iVar10 + 2;\n          piVar6 = (int *)(iVar10 * 4 + 4 + iVar4);\n          *piVar6 = *piVar6 + 1;\n          iVar10 = *piVar6;\n          local_3c = 0;\n          while (iVar10 == 0) {\n            if (iVar1 == iVar9) goto LAB_00058aa3;\n            iVar10 = iVar9 * 4;\n            iVar9 = iVar9 + 1;\n            iVar10 = *(int *)(iVar4 + iVar10) + 1;\n            *(int *)(iVar4 + -4 + iVar9 * 4) = iVar10;\n          }\n          goto LAB_00058ac0;\n        }\n      }\nLAB_00058aa3:\n      local_3c = 1;\n      iVar10 = *(int *)(unaff_retaddr + 4);\n    }\n  }\nLAB_000586a5:\n  if (iVar10 < param_6) {\n    __gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 0xc),iVar10);\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }\n  else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0xc),iVar10,param_5,param_6);\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }\n  iVar4 = iVar10 + param_6;\n  if (iVar4 != 0) {\n    iVar10 = __gmpn_sub_n(param_4,param_4,param_7,iVar4);\n    if (iVar10 != 0) {\n      if (param_3 <= iVar4) {\nLAB_00058815:\n        local_3c = local_3c - 1;\n        iVar10 = *(int *)(unaff_retaddr + 4);\n        goto LAB_000586d8;\n      }\n      piVar6 = (int *)(param_4 + iVar4 * 4);\n      iVar10 = *piVar6;\n      *piVar6 = iVar10 + -1;\n      if (iVar10 == 0) {\n        if (param_3 <= iVar4 + 1) goto LAB_00058815;\n        iVar9 = iVar4 + 2;\n        piVar6 = (int *)(param_4 + (iVar4 + 1) * 4);\n        iVar10 = *piVar6;\n        *piVar6 = iVar10 + -1;\n        while (iVar10 == 0) {\n          if (iVar9 == param_3) goto LAB_00058815;\n          iVar10 = *(int *)(param_4 + iVar9 * 4);\n          iVar9 = iVar9 + 1;\n          *(int *)(param_4 + -4 + iVar9 * 4) = iVar10 + -1;\n        }\n      }\n    }\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }\nLAB_000586d8:\n  if (iVar10 < param_6) {\n    __gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 8),iVar10);\n  }\n  else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 8),iVar10,param_5,param_6);\n  }\n  (**(code **)(iVar7 + 0x28))(param_5,param_7,param_6);\n  iVar7 = *(int *)(unaff_retaddr + 4);\n  uVar11 = local_3c;\n  if (iVar7 == 0) {\n    uVar8 = 0;\n    if (param_6 != 0) {\nLAB_00058955:\n      uVar5 = 0;\n      uVar8 = 0xffffffff;\n      uVar11 = 0xffffffff;\nLAB_0005895f:\n      iVar3 = __gmpn_sub_n(param_5,param_5,iVar3,param_6);\n      if (iVar3 != 0) {\n        if (param_3 <= param_6) goto LAB_0005872a;\n        piVar6 = (int *)(param_5 + param_6 * 4);\n        iVar3 = *piVar6;\n        *piVar6 = iVar3 + -1;\n        if (iVar3 == 0) {\n          if (param_3 <= param_6 + 1) goto LAB_0005872a;\n          piVar6 = (int *)(param_6 * 4 + 4 + param_5);\n          param_6 = param_6 + 2;\n          iVar3 = *piVar6;\n          *piVar6 = iVar3 + -1;\n          while (iVar3 == 0) {\n            if (param_6 == param_3) goto LAB_0005872a;\n            iVar3 = *(int *)(param_5 + param_6 * 4);\n            param_6 = param_6 + 1;\n            *(int *)(param_5 + -4 + param_6 * 4) = iVar3 + -1;\n          }\n        }\n      }\n      uVar8 = uVar5;\n      uVar11 = local_3c | uVar5;\n    }\n  }\n  else {\n    iVar10 = iVar2 + param_5;\n    iVar2 = __gmpn_add_n(iVar10,iVar10,iVar2 + param_7,iVar7);\n    if (iVar2 != 0) {\n      if (iVar7 < iVar1) {\n        piVar6 = (int *)(iVar10 + iVar7 * 4);\n        *piVar6 = *piVar6 + 1;\n        if (*piVar6 == 0) {\n          if (iVar1 <= iVar7 + 1) goto LAB_000588e3;\n          piVar6 = (int *)(iVar7 * 4 + 4 + iVar10);\n          iVar7 = iVar7 + 2;\n          *piVar6 = *piVar6 + 1;\n          iVar2 = *piVar6;\n          while (iVar2 == 0) {\n            if (iVar1 == iVar7) goto LAB_000588e3;\n            iVar2 = iVar7 * 4;\n            iVar7 = iVar7 + 1;\n            iVar2 = *(int *)(iVar10 + iVar2) + 1;\n            *(int *)(iVar10 + -4 + iVar7 * 4) = iVar2;\n          }\n        }\n        goto LAB_00058940;\n      }\nLAB_000588e3:\n      uVar8 = 1;\n      param_6 = param_6 + *(int *)(unaff_retaddr + 4);\n      if (param_6 == 0) goto LAB_000588f5;\n      uVar8 = 0;\n      uVar5 = 1;\n      goto LAB_0005895f;\n    }\nLAB_00058940:\n    uVar8 = 0;\n    param_6 = param_6 + *(int *)(unaff_retaddr + 4);\n    if (param_6 != 0) goto LAB_00058955;\n  }\nLAB_0005872a:\n  if (uVar11 == 0) {\n    if (*(int *)(param_4 + (param_3 + 0x3fffffff) * 4) == 0) {\n      param_3 = param_3 - (uint)(*(int *)(param_5 + (param_3 + 0x3fffffff) * 4) == 0);\n    }\n    return param_3;\n  }\nLAB_000588f5:\n  *(uint *)(param_4 + param_3 * 4) = local_3c;\n  *(uint *)(param_5 + param_3 * 4) = uVar8;\n  return param_3 + 1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int unaff_EBX;" primitive_type identifier ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "int unaff_retaddr;" primitive_type identifier ;) (declaration "uint local_3c;" type_identifier identifier ;) (expression_statement "entry(param_2,0x585f9);" (call_expression "entry(param_2,0x585f9)" identifier (argument_list "(param_2,0x585f9)" ( identifier , number_literal ))) ;) (expression_statement "iVar2 = *(int *)(unaff_retaddr + 4);" (assignment_expression "iVar2 = *(int *)(unaff_retaddr + 4)" identifier = (pointer_expression "*(int *)(unaff_retaddr + 4)" * (cast_expression "(int *)(unaff_retaddr + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + 4)" ( (binary_expression "unaff_retaddr + 4" identifier + number_literal) ))))) ;) (expression_statement "iVar3 = param_7 + (iVar2 + param_6) * 4;" (assignment_expression "iVar3 = param_7 + (iVar2 + param_6) * 4" identifier = (binary_expression "param_7 + (iVar2 + param_6) * 4" identifier + (binary_expression "(iVar2 + param_6) * 4" (parenthesized_expression "(iVar2 + param_6)" ( (binary_expression "iVar2 + param_6" identifier + identifier) )) * number_literal))) ;) (if_statement "if (iVar2 < param_6) {\n    __gmpn_mul(param_7,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x14),iVar2);\n    __gmpn_mul(iVar3,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x10),\n               *(undefined4 *)(unaff_retaddr + 4));\n  }\n  else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0x14),iVar2,param_4,param_6);\n    __gmpn_mul(iVar3,*(undefined4 *)(unaff_retaddr + 0x10),*(undefined4 *)(unaff_retaddr + 4),\n               param_4,param_6);\n  }" if (parenthesized_expression "(iVar2 < param_6)" ( (binary_expression "iVar2 < param_6" identifier < identifier) )) (compound_statement "{\n    __gmpn_mul(param_7,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x14),iVar2);\n    __gmpn_mul(iVar3,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x10),\n               *(undefined4 *)(unaff_retaddr + 4));\n  }" { (expression_statement "__gmpn_mul(param_7,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x14),iVar2);" (call_expression "__gmpn_mul(param_7,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x14),iVar2)" identifier (argument_list "(param_7,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x14),iVar2)" ( identifier , identifier , identifier , (pointer_expression "*(undefined4 *)(unaff_retaddr + 0x14)" * (cast_expression "(undefined4 *)(unaff_retaddr + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + 0x14)" ( (binary_expression "unaff_retaddr + 0x14" identifier + number_literal) )))) , identifier ))) ;) (expression_statement "__gmpn_mul(iVar3,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x10),\n               *(undefined4 *)(unaff_retaddr + 4));" (call_expression "__gmpn_mul(iVar3,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x10),\n               *(undefined4 *)(unaff_retaddr + 4))" identifier (argument_list "(iVar3,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x10),\n               *(undefined4 *)(unaff_retaddr + 4))" ( identifier , identifier , identifier , (pointer_expression "*(undefined4 *)(unaff_retaddr + 0x10)" * (cast_expression "(undefined4 *)(unaff_retaddr + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + 0x10)" ( (binary_expression "unaff_retaddr + 0x10" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(unaff_retaddr + 4)" * (cast_expression "(undefined4 *)(unaff_retaddr + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + 4)" ( (binary_expression "unaff_retaddr + 4" identifier + number_literal) )))) ))) ;) }) (else_clause "else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0x14),iVar2,param_4,param_6);\n    __gmpn_mul(iVar3,*(undefined4 *)(unaff_retaddr + 0x10),*(undefined4 *)(unaff_retaddr + 4),\n               param_4,param_6);\n  }" else (compound_statement "{\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0x14),iVar2,param_4,param_6);\n    __gmpn_mul(iVar3,*(undefined4 *)(unaff_retaddr + 0x10),*(undefined4 *)(unaff_retaddr + 4),\n               param_4,param_6);\n  }" { (expression_statement "__gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0x14),iVar2,param_4,param_6);" (call_expression "__gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0x14),iVar2,param_4,param_6)" identifier (argument_list "(param_7,*(undefined4 *)(unaff_retaddr + 0x14),iVar2,param_4,param_6)" ( identifier , (pointer_expression "*(undefined4 *)(unaff_retaddr + 0x14)" * (cast_expression "(undefined4 *)(unaff_retaddr + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + 0x14)" ( (binary_expression "unaff_retaddr + 0x14" identifier + number_literal) )))) , identifier , identifier , identifier ))) ;) (expression_statement "__gmpn_mul(iVar3,*(undefined4 *)(unaff_retaddr + 0x10),*(undefined4 *)(unaff_retaddr + 4),\n               param_4,param_6);" (call_expression "__gmpn_mul(iVar3,*(undefined4 *)(unaff_retaddr + 0x10),*(undefined4 *)(unaff_retaddr + 4),\n               param_4,param_6)" identifier (argument_list "(iVar3,*(undefined4 *)(unaff_retaddr + 0x10),*(undefined4 *)(unaff_retaddr + 4),\n               param_4,param_6)" ( identifier , (pointer_expression "*(undefined4 *)(unaff_retaddr + 0x10)" * (cast_expression "(undefined4 *)(unaff_retaddr + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + 0x10)" ( (binary_expression "unaff_retaddr + 0x10" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(unaff_retaddr + 4)" * (cast_expression "(undefined4 *)(unaff_retaddr + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + 4)" ( (binary_expression "unaff_retaddr + 4" identifier + number_literal) )))) , identifier , identifier ))) ;) }))) (expression_statement "iVar7 = *(int *)(unaff_EBX + 0x4579b);" (assignment_expression "iVar7 = *(int *)(unaff_EBX + 0x4579b)" identifier = (pointer_expression "*(int *)(unaff_EBX + 0x4579b)" * (cast_expression "(int *)(unaff_EBX + 0x4579b)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBX + 0x4579b)" ( (binary_expression "unaff_EBX + 0x4579b" identifier + number_literal) ))))) ;) (expression_statement "(**(code **)(iVar7 + 0x28))(param_4,param_7,param_6);" (call_expression "(**(code **)(iVar7 + 0x28))(param_4,param_7,param_6)" (parenthesized_expression "(**(code **)(iVar7 + 0x28))" ( (pointer_expression "**(code **)(iVar7 + 0x28)" * (pointer_expression "*(code **)(iVar7 + 0x28)" * (cast_expression "(code **)(iVar7 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7 + 0x28)" ( (binary_expression "iVar7 + 0x28" identifier + number_literal) ))))) )) (argument_list "(param_4,param_7,param_6)" ( identifier , identifier , identifier ))) ;) (expression_statement "iVar10 = *(int *)(unaff_retaddr + 4);" (assignment_expression "iVar10 = *(int *)(unaff_retaddr + 4)" identifier = (pointer_expression "*(int *)(unaff_retaddr + 4)" * (cast_expression "(int *)(unaff_retaddr + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + 4)" ( (binary_expression "unaff_retaddr + 4" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = param_6 * 4;" (assignment_expression "iVar2 = param_6 * 4" identifier = (binary_expression "param_6 * 4" identifier * number_literal)) ;) (expression_statement "iVar1 = param_3 - param_6;" (assignment_expression "iVar1 = param_3 - param_6" identifier = (binary_expression "param_3 - param_6" identifier - identifier)) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (if_statement "if (iVar10 != 0) {\n    iVar4 = iVar2 + param_4;\n    local_3c = __gmpn_add_n(iVar4,iVar4,iVar2 + param_7,iVar10);\n    if (local_3c == 0) {\nLAB_00058ac0:\n      iVar10 = *(int *)(unaff_retaddr + 4);\n    }\n    else {\n      if (iVar10 < iVar1) {\n        piVar6 = (int *)(iVar4 + iVar10 * 4);\n        iVar9 = *piVar6 + 1;\n        *piVar6 = iVar9;\n        if (iVar9 != 0) {\n          local_3c = 0;\n          iVar10 = *(int *)(unaff_retaddr + 4);\n          goto LAB_000586a5;\n        }\n        if (iVar10 + 1 < iVar1) {\n          iVar9 = iVar10 + 2;\n          piVar6 = (int *)(iVar10 * 4 + 4 + iVar4);\n          *piVar6 = *piVar6 + 1;\n          iVar10 = *piVar6;\n          local_3c = 0;\n          while (iVar10 == 0) {\n            if (iVar1 == iVar9) goto LAB_00058aa3;\n            iVar10 = iVar9 * 4;\n            iVar9 = iVar9 + 1;\n            iVar10 = *(int *)(iVar4 + iVar10) + 1;\n            *(int *)(iVar4 + -4 + iVar9 * 4) = iVar10;\n          }\n          goto LAB_00058ac0;\n        }\n      }\nLAB_00058aa3:\n      local_3c = 1;\n      iVar10 = *(int *)(unaff_retaddr + 4);\n    }\n  }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar4 = iVar2 + param_4;\n    local_3c = __gmpn_add_n(iVar4,iVar4,iVar2 + param_7,iVar10);\n    if (local_3c == 0) {\nLAB_00058ac0:\n      iVar10 = *(int *)(unaff_retaddr + 4);\n    }\n    else {\n      if (iVar10 < iVar1) {\n        piVar6 = (int *)(iVar4 + iVar10 * 4);\n        iVar9 = *piVar6 + 1;\n        *piVar6 = iVar9;\n        if (iVar9 != 0) {\n          local_3c = 0;\n          iVar10 = *(int *)(unaff_retaddr + 4);\n          goto LAB_000586a5;\n        }\n        if (iVar10 + 1 < iVar1) {\n          iVar9 = iVar10 + 2;\n          piVar6 = (int *)(iVar10 * 4 + 4 + iVar4);\n          *piVar6 = *piVar6 + 1;\n          iVar10 = *piVar6;\n          local_3c = 0;\n          while (iVar10 == 0) {\n            if (iVar1 == iVar9) goto LAB_00058aa3;\n            iVar10 = iVar9 * 4;\n            iVar9 = iVar9 + 1;\n            iVar10 = *(int *)(iVar4 + iVar10) + 1;\n            *(int *)(iVar4 + -4 + iVar9 * 4) = iVar10;\n          }\n          goto LAB_00058ac0;\n        }\n      }\nLAB_00058aa3:\n      local_3c = 1;\n      iVar10 = *(int *)(unaff_retaddr + 4);\n    }\n  }" { (expression_statement "iVar4 = iVar2 + param_4;" (assignment_expression "iVar4 = iVar2 + param_4" identifier = (binary_expression "iVar2 + param_4" identifier + identifier)) ;) (expression_statement "local_3c = __gmpn_add_n(iVar4,iVar4,iVar2 + param_7,iVar10);" (assignment_expression "local_3c = __gmpn_add_n(iVar4,iVar4,iVar2 + param_7,iVar10)" identifier = (call_expression "__gmpn_add_n(iVar4,iVar4,iVar2 + param_7,iVar10)" identifier (argument_list "(iVar4,iVar4,iVar2 + param_7,iVar10)" ( identifier , identifier , (binary_expression "iVar2 + param_7" identifier + identifier) , identifier )))) ;) (if_statement "if (local_3c == 0) {\nLAB_00058ac0:\n      iVar10 = *(int *)(unaff_retaddr + 4);\n    }\n    else {\n      if (iVar10 < iVar1) {\n        piVar6 = (int *)(iVar4 + iVar10 * 4);\n        iVar9 = *piVar6 + 1;\n        *piVar6 = iVar9;\n        if (iVar9 != 0) {\n          local_3c = 0;\n          iVar10 = *(int *)(unaff_retaddr + 4);\n          goto LAB_000586a5;\n        }\n        if (iVar10 + 1 < iVar1) {\n          iVar9 = iVar10 + 2;\n          piVar6 = (int *)(iVar10 * 4 + 4 + iVar4);\n          *piVar6 = *piVar6 + 1;\n          iVar10 = *piVar6;\n          local_3c = 0;\n          while (iVar10 == 0) {\n            if (iVar1 == iVar9) goto LAB_00058aa3;\n            iVar10 = iVar9 * 4;\n            iVar9 = iVar9 + 1;\n            iVar10 = *(int *)(iVar4 + iVar10) + 1;\n            *(int *)(iVar4 + -4 + iVar9 * 4) = iVar10;\n          }\n          goto LAB_00058ac0;\n        }\n      }\nLAB_00058aa3:\n      local_3c = 1;\n      iVar10 = *(int *)(unaff_retaddr + 4);\n    }" if (parenthesized_expression "(local_3c == 0)" ( (binary_expression "local_3c == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00058ac0:\n      iVar10 = *(int *)(unaff_retaddr + 4);\n    }" { (labeled_statement "LAB_00058ac0:\n      iVar10 = *(int *)(unaff_retaddr + 4);" statement_identifier : (expression_statement "iVar10 = *(int *)(unaff_retaddr + 4);" (assignment_expression "iVar10 = *(int *)(unaff_retaddr + 4)" identifier = (pointer_expression "*(int *)(unaff_retaddr + 4)" * (cast_expression "(int *)(unaff_retaddr + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + 4)" ( (binary_expression "unaff_retaddr + 4" identifier + number_literal) ))))) ;)) }) (else_clause "else {\n      if (iVar10 < iVar1) {\n        piVar6 = (int *)(iVar4 + iVar10 * 4);\n        iVar9 = *piVar6 + 1;\n        *piVar6 = iVar9;\n        if (iVar9 != 0) {\n          local_3c = 0;\n          iVar10 = *(int *)(unaff_retaddr + 4);\n          goto LAB_000586a5;\n        }\n        if (iVar10 + 1 < iVar1) {\n          iVar9 = iVar10 + 2;\n          piVar6 = (int *)(iVar10 * 4 + 4 + iVar4);\n          *piVar6 = *piVar6 + 1;\n          iVar10 = *piVar6;\n          local_3c = 0;\n          while (iVar10 == 0) {\n            if (iVar1 == iVar9) goto LAB_00058aa3;\n            iVar10 = iVar9 * 4;\n            iVar9 = iVar9 + 1;\n            iVar10 = *(int *)(iVar4 + iVar10) + 1;\n            *(int *)(iVar4 + -4 + iVar9 * 4) = iVar10;\n          }\n          goto LAB_00058ac0;\n        }\n      }\nLAB_00058aa3:\n      local_3c = 1;\n      iVar10 = *(int *)(unaff_retaddr + 4);\n    }" else (compound_statement "{\n      if (iVar10 < iVar1) {\n        piVar6 = (int *)(iVar4 + iVar10 * 4);\n        iVar9 = *piVar6 + 1;\n        *piVar6 = iVar9;\n        if (iVar9 != 0) {\n          local_3c = 0;\n          iVar10 = *(int *)(unaff_retaddr + 4);\n          goto LAB_000586a5;\n        }\n        if (iVar10 + 1 < iVar1) {\n          iVar9 = iVar10 + 2;\n          piVar6 = (int *)(iVar10 * 4 + 4 + iVar4);\n          *piVar6 = *piVar6 + 1;\n          iVar10 = *piVar6;\n          local_3c = 0;\n          while (iVar10 == 0) {\n            if (iVar1 == iVar9) goto LAB_00058aa3;\n            iVar10 = iVar9 * 4;\n            iVar9 = iVar9 + 1;\n            iVar10 = *(int *)(iVar4 + iVar10) + 1;\n            *(int *)(iVar4 + -4 + iVar9 * 4) = iVar10;\n          }\n          goto LAB_00058ac0;\n        }\n      }\nLAB_00058aa3:\n      local_3c = 1;\n      iVar10 = *(int *)(unaff_retaddr + 4);\n    }" { (if_statement "if (iVar10 < iVar1) {\n        piVar6 = (int *)(iVar4 + iVar10 * 4);\n        iVar9 = *piVar6 + 1;\n        *piVar6 = iVar9;\n        if (iVar9 != 0) {\n          local_3c = 0;\n          iVar10 = *(int *)(unaff_retaddr + 4);\n          goto LAB_000586a5;\n        }\n        if (iVar10 + 1 < iVar1) {\n          iVar9 = iVar10 + 2;\n          piVar6 = (int *)(iVar10 * 4 + 4 + iVar4);\n          *piVar6 = *piVar6 + 1;\n          iVar10 = *piVar6;\n          local_3c = 0;\n          while (iVar10 == 0) {\n            if (iVar1 == iVar9) goto LAB_00058aa3;\n            iVar10 = iVar9 * 4;\n            iVar9 = iVar9 + 1;\n            iVar10 = *(int *)(iVar4 + iVar10) + 1;\n            *(int *)(iVar4 + -4 + iVar9 * 4) = iVar10;\n          }\n          goto LAB_00058ac0;\n        }\n      }" if (parenthesized_expression "(iVar10 < iVar1)" ( (binary_expression "iVar10 < iVar1" identifier < identifier) )) (compound_statement "{\n        piVar6 = (int *)(iVar4 + iVar10 * 4);\n        iVar9 = *piVar6 + 1;\n        *piVar6 = iVar9;\n        if (iVar9 != 0) {\n          local_3c = 0;\n          iVar10 = *(int *)(unaff_retaddr + 4);\n          goto LAB_000586a5;\n        }\n        if (iVar10 + 1 < iVar1) {\n          iVar9 = iVar10 + 2;\n          piVar6 = (int *)(iVar10 * 4 + 4 + iVar4);\n          *piVar6 = *piVar6 + 1;\n          iVar10 = *piVar6;\n          local_3c = 0;\n          while (iVar10 == 0) {\n            if (iVar1 == iVar9) goto LAB_00058aa3;\n            iVar10 = iVar9 * 4;\n            iVar9 = iVar9 + 1;\n            iVar10 = *(int *)(iVar4 + iVar10) + 1;\n            *(int *)(iVar4 + -4 + iVar9 * 4) = iVar10;\n          }\n          goto LAB_00058ac0;\n        }\n      }" { (expression_statement "piVar6 = (int *)(iVar4 + iVar10 * 4);" (assignment_expression "piVar6 = (int *)(iVar4 + iVar10 * 4)" identifier = (cast_expression "(int *)(iVar4 + iVar10 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + iVar10 * 4)" ( (binary_expression "iVar4 + iVar10 * 4" identifier + (binary_expression "iVar10 * 4" identifier * number_literal)) )))) ;) (expression_statement "iVar9 = *piVar6 + 1;" (assignment_expression "iVar9 = *piVar6 + 1" identifier = (binary_expression "*piVar6 + 1" (pointer_expression "*piVar6" * identifier) + number_literal)) ;) (expression_statement "*piVar6 = iVar9;" (assignment_expression "*piVar6 = iVar9" (pointer_expression "*piVar6" * identifier) = identifier) ;) (if_statement "if (iVar9 != 0) {\n          local_3c = 0;\n          iVar10 = *(int *)(unaff_retaddr + 4);\n          goto LAB_000586a5;\n        }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n          local_3c = 0;\n          iVar10 = *(int *)(unaff_retaddr + 4);\n          goto LAB_000586a5;\n        }" { (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "iVar10 = *(int *)(unaff_retaddr + 4);" (assignment_expression "iVar10 = *(int *)(unaff_retaddr + 4)" identifier = (pointer_expression "*(int *)(unaff_retaddr + 4)" * (cast_expression "(int *)(unaff_retaddr + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + 4)" ( (binary_expression "unaff_retaddr + 4" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_000586a5;" goto statement_identifier ;) })) (if_statement "if (iVar10 + 1 < iVar1) {\n          iVar9 = iVar10 + 2;\n          piVar6 = (int *)(iVar10 * 4 + 4 + iVar4);\n          *piVar6 = *piVar6 + 1;\n          iVar10 = *piVar6;\n          local_3c = 0;\n          while (iVar10 == 0) {\n            if (iVar1 == iVar9) goto LAB_00058aa3;\n            iVar10 = iVar9 * 4;\n            iVar9 = iVar9 + 1;\n            iVar10 = *(int *)(iVar4 + iVar10) + 1;\n            *(int *)(iVar4 + -4 + iVar9 * 4) = iVar10;\n          }\n          goto LAB_00058ac0;\n        }" if (parenthesized_expression "(iVar10 + 1 < iVar1)" ( (binary_expression "iVar10 + 1 < iVar1" (binary_expression "iVar10 + 1" identifier + number_literal) < identifier) )) (compound_statement "{\n          iVar9 = iVar10 + 2;\n          piVar6 = (int *)(iVar10 * 4 + 4 + iVar4);\n          *piVar6 = *piVar6 + 1;\n          iVar10 = *piVar6;\n          local_3c = 0;\n          while (iVar10 == 0) {\n            if (iVar1 == iVar9) goto LAB_00058aa3;\n            iVar10 = iVar9 * 4;\n            iVar9 = iVar9 + 1;\n            iVar10 = *(int *)(iVar4 + iVar10) + 1;\n            *(int *)(iVar4 + -4 + iVar9 * 4) = iVar10;\n          }\n          goto LAB_00058ac0;\n        }" { (expression_statement "iVar9 = iVar10 + 2;" (assignment_expression "iVar9 = iVar10 + 2" identifier = (binary_expression "iVar10 + 2" identifier + number_literal)) ;) (expression_statement "piVar6 = (int *)(iVar10 * 4 + 4 + iVar4);" (assignment_expression "piVar6 = (int *)(iVar10 * 4 + 4 + iVar4)" identifier = (cast_expression "(int *)(iVar10 * 4 + 4 + iVar4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 * 4 + 4 + iVar4)" ( (binary_expression "iVar10 * 4 + 4 + iVar4" (binary_expression "iVar10 * 4 + 4" (binary_expression "iVar10 * 4" identifier * number_literal) + number_literal) + identifier) )))) ;) (expression_statement "*piVar6 = *piVar6 + 1;" (assignment_expression "*piVar6 = *piVar6 + 1" (pointer_expression "*piVar6" * identifier) = (binary_expression "*piVar6 + 1" (pointer_expression "*piVar6" * identifier) + number_literal)) ;) (expression_statement "iVar10 = *piVar6;" (assignment_expression "iVar10 = *piVar6" identifier = (pointer_expression "*piVar6" * identifier)) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (while_statement "while (iVar10 == 0) {\n            if (iVar1 == iVar9) goto LAB_00058aa3;\n            iVar10 = iVar9 * 4;\n            iVar9 = iVar9 + 1;\n            iVar10 = *(int *)(iVar4 + iVar10) + 1;\n            *(int *)(iVar4 + -4 + iVar9 * 4) = iVar10;\n          }" while (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\n            if (iVar1 == iVar9) goto LAB_00058aa3;\n            iVar10 = iVar9 * 4;\n            iVar9 = iVar9 + 1;\n            iVar10 = *(int *)(iVar4 + iVar10) + 1;\n            *(int *)(iVar4 + -4 + iVar9 * 4) = iVar10;\n          }" { (if_statement "if (iVar1 == iVar9) goto LAB_00058aa3;" if (parenthesized_expression "(iVar1 == iVar9)" ( (binary_expression "iVar1 == iVar9" identifier == identifier) )) (goto_statement "goto LAB_00058aa3;" goto statement_identifier ;)) (expression_statement "iVar10 = iVar9 * 4;" (assignment_expression "iVar10 = iVar9 * 4" identifier = (binary_expression "iVar9 * 4" identifier * number_literal)) ;) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) (expression_statement "iVar10 = *(int *)(iVar4 + iVar10) + 1;" (assignment_expression "iVar10 = *(int *)(iVar4 + iVar10) + 1" identifier = (binary_expression "*(int *)(iVar4 + iVar10) + 1" (pointer_expression "*(int *)(iVar4 + iVar10)" * (cast_expression "(int *)(iVar4 + iVar10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + iVar10)" ( (binary_expression "iVar4 + iVar10" identifier + identifier) )))) + number_literal)) ;) (expression_statement "*(int *)(iVar4 + -4 + iVar9 * 4) = iVar10;" (assignment_expression "*(int *)(iVar4 + -4 + iVar9 * 4) = iVar10" (pointer_expression "*(int *)(iVar4 + -4 + iVar9 * 4)" * (cast_expression "(int *)(iVar4 + -4 + iVar9 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -4 + iVar9 * 4)" ( (binary_expression "iVar4 + -4 + iVar9 * 4" (binary_expression "iVar4 + -4" identifier + number_literal) + (binary_expression "iVar9 * 4" identifier * number_literal)) )))) = identifier) ;) })) (goto_statement "goto LAB_00058ac0;" goto statement_identifier ;) })) })) (labeled_statement "LAB_00058aa3:\n      local_3c = 1;" statement_identifier : (expression_statement "local_3c = 1;" (assignment_expression "local_3c = 1" identifier = number_literal) ;)) (expression_statement "iVar10 = *(int *)(unaff_retaddr + 4);" (assignment_expression "iVar10 = *(int *)(unaff_retaddr + 4)" identifier = (pointer_expression "*(int *)(unaff_retaddr + 4)" * (cast_expression "(int *)(unaff_retaddr + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + 4)" ( (binary_expression "unaff_retaddr + 4" identifier + number_literal) ))))) ;) }))) })) (labeled_statement "LAB_000586a5:\n  if (iVar10 < param_6) {\n    __gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 0xc),iVar10);\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }\n  else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0xc),iVar10,param_5,param_6);\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }" statement_identifier : (if_statement "if (iVar10 < param_6) {\n    __gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 0xc),iVar10);\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }\n  else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0xc),iVar10,param_5,param_6);\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }" if (parenthesized_expression "(iVar10 < param_6)" ( (binary_expression "iVar10 < param_6" identifier < identifier) )) (compound_statement "{\n    __gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 0xc),iVar10);\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }" { (expression_statement "__gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 0xc),iVar10);" (call_expression "__gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 0xc),iVar10)" identifier (argument_list "(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 0xc),iVar10)" ( identifier , identifier , identifier , (pointer_expression "*(undefined4 *)(unaff_retaddr + 0xc)" * (cast_expression "(undefined4 *)(unaff_retaddr + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + 0xc)" ( (binary_expression "unaff_retaddr + 0xc" identifier + number_literal) )))) , identifier ))) ;) (expression_statement "iVar10 = *(int *)(unaff_retaddr + 4);" (assignment_expression "iVar10 = *(int *)(unaff_retaddr + 4)" identifier = (pointer_expression "*(int *)(unaff_retaddr + 4)" * (cast_expression "(int *)(unaff_retaddr + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + 4)" ( (binary_expression "unaff_retaddr + 4" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0xc),iVar10,param_5,param_6);\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }" else (compound_statement "{\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0xc),iVar10,param_5,param_6);\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }" { (expression_statement "__gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0xc),iVar10,param_5,param_6);" (call_expression "__gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0xc),iVar10,param_5,param_6)" identifier (argument_list "(param_7,*(undefined4 *)(unaff_retaddr + 0xc),iVar10,param_5,param_6)" ( identifier , (pointer_expression "*(undefined4 *)(unaff_retaddr + 0xc)" * (cast_expression "(undefined4 *)(unaff_retaddr + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + 0xc)" ( (binary_expression "unaff_retaddr + 0xc" identifier + number_literal) )))) , identifier , identifier , identifier ))) ;) (expression_statement "iVar10 = *(int *)(unaff_retaddr + 4);" (assignment_expression "iVar10 = *(int *)(unaff_retaddr + 4)" identifier = (pointer_expression "*(int *)(unaff_retaddr + 4)" * (cast_expression "(int *)(unaff_retaddr + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + 4)" ( (binary_expression "unaff_retaddr + 4" identifier + number_literal) ))))) ;) })))) (expression_statement "iVar4 = iVar10 + param_6;" (assignment_expression "iVar4 = iVar10 + param_6" identifier = (binary_expression "iVar10 + param_6" identifier + identifier)) ;) (if_statement "if (iVar4 != 0) {\n    iVar10 = __gmpn_sub_n(param_4,param_4,param_7,iVar4);\n    if (iVar10 != 0) {\n      if (param_3 <= iVar4) {\nLAB_00058815:\n        local_3c = local_3c - 1;\n        iVar10 = *(int *)(unaff_retaddr + 4);\n        goto LAB_000586d8;\n      }\n      piVar6 = (int *)(param_4 + iVar4 * 4);\n      iVar10 = *piVar6;\n      *piVar6 = iVar10 + -1;\n      if (iVar10 == 0) {\n        if (param_3 <= iVar4 + 1) goto LAB_00058815;\n        iVar9 = iVar4 + 2;\n        piVar6 = (int *)(param_4 + (iVar4 + 1) * 4);\n        iVar10 = *piVar6;\n        *piVar6 = iVar10 + -1;\n        while (iVar10 == 0) {\n          if (iVar9 == param_3) goto LAB_00058815;\n          iVar10 = *(int *)(param_4 + iVar9 * 4);\n          iVar9 = iVar9 + 1;\n          *(int *)(param_4 + -4 + iVar9 * 4) = iVar10 + -1;\n        }\n      }\n    }\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar10 = __gmpn_sub_n(param_4,param_4,param_7,iVar4);\n    if (iVar10 != 0) {\n      if (param_3 <= iVar4) {\nLAB_00058815:\n        local_3c = local_3c - 1;\n        iVar10 = *(int *)(unaff_retaddr + 4);\n        goto LAB_000586d8;\n      }\n      piVar6 = (int *)(param_4 + iVar4 * 4);\n      iVar10 = *piVar6;\n      *piVar6 = iVar10 + -1;\n      if (iVar10 == 0) {\n        if (param_3 <= iVar4 + 1) goto LAB_00058815;\n        iVar9 = iVar4 + 2;\n        piVar6 = (int *)(param_4 + (iVar4 + 1) * 4);\n        iVar10 = *piVar6;\n        *piVar6 = iVar10 + -1;\n        while (iVar10 == 0) {\n          if (iVar9 == param_3) goto LAB_00058815;\n          iVar10 = *(int *)(param_4 + iVar9 * 4);\n          iVar9 = iVar9 + 1;\n          *(int *)(param_4 + -4 + iVar9 * 4) = iVar10 + -1;\n        }\n      }\n    }\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }" { (expression_statement "iVar10 = __gmpn_sub_n(param_4,param_4,param_7,iVar4);" (assignment_expression "iVar10 = __gmpn_sub_n(param_4,param_4,param_7,iVar4)" identifier = (call_expression "__gmpn_sub_n(param_4,param_4,param_7,iVar4)" identifier (argument_list "(param_4,param_4,param_7,iVar4)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar10 != 0) {\n      if (param_3 <= iVar4) {\nLAB_00058815:\n        local_3c = local_3c - 1;\n        iVar10 = *(int *)(unaff_retaddr + 4);\n        goto LAB_000586d8;\n      }\n      piVar6 = (int *)(param_4 + iVar4 * 4);\n      iVar10 = *piVar6;\n      *piVar6 = iVar10 + -1;\n      if (iVar10 == 0) {\n        if (param_3 <= iVar4 + 1) goto LAB_00058815;\n        iVar9 = iVar4 + 2;\n        piVar6 = (int *)(param_4 + (iVar4 + 1) * 4);\n        iVar10 = *piVar6;\n        *piVar6 = iVar10 + -1;\n        while (iVar10 == 0) {\n          if (iVar9 == param_3) goto LAB_00058815;\n          iVar10 = *(int *)(param_4 + iVar9 * 4);\n          iVar9 = iVar9 + 1;\n          *(int *)(param_4 + -4 + iVar9 * 4) = iVar10 + -1;\n        }\n      }\n    }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n      if (param_3 <= iVar4) {\nLAB_00058815:\n        local_3c = local_3c - 1;\n        iVar10 = *(int *)(unaff_retaddr + 4);\n        goto LAB_000586d8;\n      }\n      piVar6 = (int *)(param_4 + iVar4 * 4);\n      iVar10 = *piVar6;\n      *piVar6 = iVar10 + -1;\n      if (iVar10 == 0) {\n        if (param_3 <= iVar4 + 1) goto LAB_00058815;\n        iVar9 = iVar4 + 2;\n        piVar6 = (int *)(param_4 + (iVar4 + 1) * 4);\n        iVar10 = *piVar6;\n        *piVar6 = iVar10 + -1;\n        while (iVar10 == 0) {\n          if (iVar9 == param_3) goto LAB_00058815;\n          iVar10 = *(int *)(param_4 + iVar9 * 4);\n          iVar9 = iVar9 + 1;\n          *(int *)(param_4 + -4 + iVar9 * 4) = iVar10 + -1;\n        }\n      }\n    }" { (if_statement "if (param_3 <= iVar4) {\nLAB_00058815:\n        local_3c = local_3c - 1;\n        iVar10 = *(int *)(unaff_retaddr + 4);\n        goto LAB_000586d8;\n      }" if (parenthesized_expression "(param_3 <= iVar4)" ( (binary_expression "param_3 <= iVar4" identifier <= identifier) )) (compound_statement "{\nLAB_00058815:\n        local_3c = local_3c - 1;\n        iVar10 = *(int *)(unaff_retaddr + 4);\n        goto LAB_000586d8;\n      }" { (labeled_statement "LAB_00058815:\n        local_3c = local_3c - 1;" statement_identifier : (expression_statement "local_3c = local_3c - 1;" (assignment_expression "local_3c = local_3c - 1" identifier = (binary_expression "local_3c - 1" identifier - number_literal)) ;)) (expression_statement "iVar10 = *(int *)(unaff_retaddr + 4);" (assignment_expression "iVar10 = *(int *)(unaff_retaddr + 4)" identifier = (pointer_expression "*(int *)(unaff_retaddr + 4)" * (cast_expression "(int *)(unaff_retaddr + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + 4)" ( (binary_expression "unaff_retaddr + 4" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_000586d8;" goto statement_identifier ;) })) (expression_statement "piVar6 = (int *)(param_4 + iVar4 * 4);" (assignment_expression "piVar6 = (int *)(param_4 + iVar4 * 4)" identifier = (cast_expression "(int *)(param_4 + iVar4 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + iVar4 * 4)" ( (binary_expression "param_4 + iVar4 * 4" identifier + (binary_expression "iVar4 * 4" identifier * number_literal)) )))) ;) (expression_statement "iVar10 = *piVar6;" (assignment_expression "iVar10 = *piVar6" identifier = (pointer_expression "*piVar6" * identifier)) ;) (expression_statement "*piVar6 = iVar10 + -1;" (assignment_expression "*piVar6 = iVar10 + -1" (pointer_expression "*piVar6" * identifier) = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (if_statement "if (iVar10 == 0) {\n        if (param_3 <= iVar4 + 1) goto LAB_00058815;\n        iVar9 = iVar4 + 2;\n        piVar6 = (int *)(param_4 + (iVar4 + 1) * 4);\n        iVar10 = *piVar6;\n        *piVar6 = iVar10 + -1;\n        while (iVar10 == 0) {\n          if (iVar9 == param_3) goto LAB_00058815;\n          iVar10 = *(int *)(param_4 + iVar9 * 4);\n          iVar9 = iVar9 + 1;\n          *(int *)(param_4 + -4 + iVar9 * 4) = iVar10 + -1;\n        }\n      }" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\n        if (param_3 <= iVar4 + 1) goto LAB_00058815;\n        iVar9 = iVar4 + 2;\n        piVar6 = (int *)(param_4 + (iVar4 + 1) * 4);\n        iVar10 = *piVar6;\n        *piVar6 = iVar10 + -1;\n        while (iVar10 == 0) {\n          if (iVar9 == param_3) goto LAB_00058815;\n          iVar10 = *(int *)(param_4 + iVar9 * 4);\n          iVar9 = iVar9 + 1;\n          *(int *)(param_4 + -4 + iVar9 * 4) = iVar10 + -1;\n        }\n      }" { (if_statement "if (param_3 <= iVar4 + 1) goto LAB_00058815;" if (parenthesized_expression "(param_3 <= iVar4 + 1)" ( (binary_expression "param_3 <= iVar4 + 1" identifier <= (binary_expression "iVar4 + 1" identifier + number_literal)) )) (goto_statement "goto LAB_00058815;" goto statement_identifier ;)) (expression_statement "iVar9 = iVar4 + 2;" (assignment_expression "iVar9 = iVar4 + 2" identifier = (binary_expression "iVar4 + 2" identifier + number_literal)) ;) (expression_statement "piVar6 = (int *)(param_4 + (iVar4 + 1) * 4);" (assignment_expression "piVar6 = (int *)(param_4 + (iVar4 + 1) * 4)" identifier = (cast_expression "(int *)(param_4 + (iVar4 + 1) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + (iVar4 + 1) * 4)" ( (binary_expression "param_4 + (iVar4 + 1) * 4" identifier + (binary_expression "(iVar4 + 1) * 4" (parenthesized_expression "(iVar4 + 1)" ( (binary_expression "iVar4 + 1" identifier + number_literal) )) * number_literal)) )))) ;) (expression_statement "iVar10 = *piVar6;" (assignment_expression "iVar10 = *piVar6" identifier = (pointer_expression "*piVar6" * identifier)) ;) (expression_statement "*piVar6 = iVar10 + -1;" (assignment_expression "*piVar6 = iVar10 + -1" (pointer_expression "*piVar6" * identifier) = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (while_statement "while (iVar10 == 0) {\n          if (iVar9 == param_3) goto LAB_00058815;\n          iVar10 = *(int *)(param_4 + iVar9 * 4);\n          iVar9 = iVar9 + 1;\n          *(int *)(param_4 + -4 + iVar9 * 4) = iVar10 + -1;\n        }" while (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\n          if (iVar9 == param_3) goto LAB_00058815;\n          iVar10 = *(int *)(param_4 + iVar9 * 4);\n          iVar9 = iVar9 + 1;\n          *(int *)(param_4 + -4 + iVar9 * 4) = iVar10 + -1;\n        }" { (if_statement "if (iVar9 == param_3) goto LAB_00058815;" if (parenthesized_expression "(iVar9 == param_3)" ( (binary_expression "iVar9 == param_3" identifier == identifier) )) (goto_statement "goto LAB_00058815;" goto statement_identifier ;)) (expression_statement "iVar10 = *(int *)(param_4 + iVar9 * 4);" (assignment_expression "iVar10 = *(int *)(param_4 + iVar9 * 4)" identifier = (pointer_expression "*(int *)(param_4 + iVar9 * 4)" * (cast_expression "(int *)(param_4 + iVar9 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + iVar9 * 4)" ( (binary_expression "param_4 + iVar9 * 4" identifier + (binary_expression "iVar9 * 4" identifier * number_literal)) ))))) ;) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) (expression_statement "*(int *)(param_4 + -4 + iVar9 * 4) = iVar10 + -1;" (assignment_expression "*(int *)(param_4 + -4 + iVar9 * 4) = iVar10 + -1" (pointer_expression "*(int *)(param_4 + -4 + iVar9 * 4)" * (cast_expression "(int *)(param_4 + -4 + iVar9 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + -4 + iVar9 * 4)" ( (binary_expression "param_4 + -4 + iVar9 * 4" (binary_expression "param_4 + -4" identifier + number_literal) + (binary_expression "iVar9 * 4" identifier * number_literal)) )))) = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) })) })) })) (expression_statement "iVar10 = *(int *)(unaff_retaddr + 4);" (assignment_expression "iVar10 = *(int *)(unaff_retaddr + 4)" identifier = (pointer_expression "*(int *)(unaff_retaddr + 4)" * (cast_expression "(int *)(unaff_retaddr + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + 4)" ( (binary_expression "unaff_retaddr + 4" identifier + number_literal) ))))) ;) })) (labeled_statement "LAB_000586d8:\n  if (iVar10 < param_6) {\n    __gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 8),iVar10);\n  }\n  else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 8),iVar10,param_5,param_6);\n  }" statement_identifier : (if_statement "if (iVar10 < param_6) {\n    __gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 8),iVar10);\n  }\n  else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 8),iVar10,param_5,param_6);\n  }" if (parenthesized_expression "(iVar10 < param_6)" ( (binary_expression "iVar10 < param_6" identifier < identifier) )) (compound_statement "{\n    __gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 8),iVar10);\n  }" { (expression_statement "__gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 8),iVar10);" (call_expression "__gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 8),iVar10)" identifier (argument_list "(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 8),iVar10)" ( identifier , identifier , identifier , (pointer_expression "*(undefined4 *)(unaff_retaddr + 8)" * (cast_expression "(undefined4 *)(unaff_retaddr + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + 8)" ( (binary_expression "unaff_retaddr + 8" identifier + number_literal) )))) , identifier ))) ;) }) (else_clause "else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 8),iVar10,param_5,param_6);\n  }" else (compound_statement "{\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 8),iVar10,param_5,param_6);\n  }" { (expression_statement "__gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 8),iVar10,param_5,param_6);" (call_expression "__gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 8),iVar10,param_5,param_6)" identifier (argument_list "(param_7,*(undefined4 *)(unaff_retaddr + 8),iVar10,param_5,param_6)" ( identifier , (pointer_expression "*(undefined4 *)(unaff_retaddr + 8)" * (cast_expression "(undefined4 *)(unaff_retaddr + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + 8)" ( (binary_expression "unaff_retaddr + 8" identifier + number_literal) )))) , identifier , identifier , identifier ))) ;) })))) (expression_statement "(**(code **)(iVar7 + 0x28))(param_5,param_7,param_6);" (call_expression "(**(code **)(iVar7 + 0x28))(param_5,param_7,param_6)" (parenthesized_expression "(**(code **)(iVar7 + 0x28))" ( (pointer_expression "**(code **)(iVar7 + 0x28)" * (pointer_expression "*(code **)(iVar7 + 0x28)" * (cast_expression "(code **)(iVar7 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7 + 0x28)" ( (binary_expression "iVar7 + 0x28" identifier + number_literal) ))))) )) (argument_list "(param_5,param_7,param_6)" ( identifier , identifier , identifier ))) ;) (expression_statement "iVar7 = *(int *)(unaff_retaddr + 4);" (assignment_expression "iVar7 = *(int *)(unaff_retaddr + 4)" identifier = (pointer_expression "*(int *)(unaff_retaddr + 4)" * (cast_expression "(int *)(unaff_retaddr + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + 4)" ( (binary_expression "unaff_retaddr + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar11 = local_3c;" (assignment_expression "uVar11 = local_3c" identifier = identifier) ;) (if_statement "if (iVar7 == 0) {\n    uVar8 = 0;\n    if (param_6 != 0) {\nLAB_00058955:\n      uVar5 = 0;\n      uVar8 = 0xffffffff;\n      uVar11 = 0xffffffff;\nLAB_0005895f:\n      iVar3 = __gmpn_sub_n(param_5,param_5,iVar3,param_6);\n      if (iVar3 != 0) {\n        if (param_3 <= param_6) goto LAB_0005872a;\n        piVar6 = (int *)(param_5 + param_6 * 4);\n        iVar3 = *piVar6;\n        *piVar6 = iVar3 + -1;\n        if (iVar3 == 0) {\n          if (param_3 <= param_6 + 1) goto LAB_0005872a;\n          piVar6 = (int *)(param_6 * 4 + 4 + param_5);\n          param_6 = param_6 + 2;\n          iVar3 = *piVar6;\n          *piVar6 = iVar3 + -1;\n          while (iVar3 == 0) {\n            if (param_6 == param_3) goto LAB_0005872a;\n            iVar3 = *(int *)(param_5 + param_6 * 4);\n            param_6 = param_6 + 1;\n            *(int *)(param_5 + -4 + param_6 * 4) = iVar3 + -1;\n          }\n        }\n      }\n      uVar8 = uVar5;\n      uVar11 = local_3c | uVar5;\n    }\n  }\n  else {\n    iVar10 = iVar2 + param_5;\n    iVar2 = __gmpn_add_n(iVar10,iVar10,iVar2 + param_7,iVar7);\n    if (iVar2 != 0) {\n      if (iVar7 < iVar1) {\n        piVar6 = (int *)(iVar10 + iVar7 * 4);\n        *piVar6 = *piVar6 + 1;\n        if (*piVar6 == 0) {\n          if (iVar1 <= iVar7 + 1) goto LAB_000588e3;\n          piVar6 = (int *)(iVar7 * 4 + 4 + iVar10);\n          iVar7 = iVar7 + 2;\n          *piVar6 = *piVar6 + 1;\n          iVar2 = *piVar6;\n          while (iVar2 == 0) {\n            if (iVar1 == iVar7) goto LAB_000588e3;\n            iVar2 = iVar7 * 4;\n            iVar7 = iVar7 + 1;\n            iVar2 = *(int *)(iVar10 + iVar2) + 1;\n            *(int *)(iVar10 + -4 + iVar7 * 4) = iVar2;\n          }\n        }\n        goto LAB_00058940;\n      }\nLAB_000588e3:\n      uVar8 = 1;\n      param_6 = param_6 + *(int *)(unaff_retaddr + 4);\n      if (param_6 == 0) goto LAB_000588f5;\n      uVar8 = 0;\n      uVar5 = 1;\n      goto LAB_0005895f;\n    }\nLAB_00058940:\n    uVar8 = 0;\n    param_6 = param_6 + *(int *)(unaff_retaddr + 4);\n    if (param_6 != 0) goto LAB_00058955;\n  }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar8 = 0;\n    if (param_6 != 0) {\nLAB_00058955:\n      uVar5 = 0;\n      uVar8 = 0xffffffff;\n      uVar11 = 0xffffffff;\nLAB_0005895f:\n      iVar3 = __gmpn_sub_n(param_5,param_5,iVar3,param_6);\n      if (iVar3 != 0) {\n        if (param_3 <= param_6) goto LAB_0005872a;\n        piVar6 = (int *)(param_5 + param_6 * 4);\n        iVar3 = *piVar6;\n        *piVar6 = iVar3 + -1;\n        if (iVar3 == 0) {\n          if (param_3 <= param_6 + 1) goto LAB_0005872a;\n          piVar6 = (int *)(param_6 * 4 + 4 + param_5);\n          param_6 = param_6 + 2;\n          iVar3 = *piVar6;\n          *piVar6 = iVar3 + -1;\n          while (iVar3 == 0) {\n            if (param_6 == param_3) goto LAB_0005872a;\n            iVar3 = *(int *)(param_5 + param_6 * 4);\n            param_6 = param_6 + 1;\n            *(int *)(param_5 + -4 + param_6 * 4) = iVar3 + -1;\n          }\n        }\n      }\n      uVar8 = uVar5;\n      uVar11 = local_3c | uVar5;\n    }\n  }" { (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (if_statement "if (param_6 != 0) {\nLAB_00058955:\n      uVar5 = 0;\n      uVar8 = 0xffffffff;\n      uVar11 = 0xffffffff;\nLAB_0005895f:\n      iVar3 = __gmpn_sub_n(param_5,param_5,iVar3,param_6);\n      if (iVar3 != 0) {\n        if (param_3 <= param_6) goto LAB_0005872a;\n        piVar6 = (int *)(param_5 + param_6 * 4);\n        iVar3 = *piVar6;\n        *piVar6 = iVar3 + -1;\n        if (iVar3 == 0) {\n          if (param_3 <= param_6 + 1) goto LAB_0005872a;\n          piVar6 = (int *)(param_6 * 4 + 4 + param_5);\n          param_6 = param_6 + 2;\n          iVar3 = *piVar6;\n          *piVar6 = iVar3 + -1;\n          while (iVar3 == 0) {\n            if (param_6 == param_3) goto LAB_0005872a;\n            iVar3 = *(int *)(param_5 + param_6 * 4);\n            param_6 = param_6 + 1;\n            *(int *)(param_5 + -4 + param_6 * 4) = iVar3 + -1;\n          }\n        }\n      }\n      uVar8 = uVar5;\n      uVar11 = local_3c | uVar5;\n    }" if (parenthesized_expression "(param_6 != 0)" ( (binary_expression "param_6 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_00058955:\n      uVar5 = 0;\n      uVar8 = 0xffffffff;\n      uVar11 = 0xffffffff;\nLAB_0005895f:\n      iVar3 = __gmpn_sub_n(param_5,param_5,iVar3,param_6);\n      if (iVar3 != 0) {\n        if (param_3 <= param_6) goto LAB_0005872a;\n        piVar6 = (int *)(param_5 + param_6 * 4);\n        iVar3 = *piVar6;\n        *piVar6 = iVar3 + -1;\n        if (iVar3 == 0) {\n          if (param_3 <= param_6 + 1) goto LAB_0005872a;\n          piVar6 = (int *)(param_6 * 4 + 4 + param_5);\n          param_6 = param_6 + 2;\n          iVar3 = *piVar6;\n          *piVar6 = iVar3 + -1;\n          while (iVar3 == 0) {\n            if (param_6 == param_3) goto LAB_0005872a;\n            iVar3 = *(int *)(param_5 + param_6 * 4);\n            param_6 = param_6 + 1;\n            *(int *)(param_5 + -4 + param_6 * 4) = iVar3 + -1;\n          }\n        }\n      }\n      uVar8 = uVar5;\n      uVar11 = local_3c | uVar5;\n    }" { (labeled_statement "LAB_00058955:\n      uVar5 = 0;" statement_identifier : (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;)) (expression_statement "uVar8 = 0xffffffff;" (assignment_expression "uVar8 = 0xffffffff" identifier = number_literal) ;) (expression_statement "uVar11 = 0xffffffff;" (assignment_expression "uVar11 = 0xffffffff" identifier = number_literal) ;) (labeled_statement "LAB_0005895f:\n      iVar3 = __gmpn_sub_n(param_5,param_5,iVar3,param_6);" statement_identifier : (expression_statement "iVar3 = __gmpn_sub_n(param_5,param_5,iVar3,param_6);" (assignment_expression "iVar3 = __gmpn_sub_n(param_5,param_5,iVar3,param_6)" identifier = (call_expression "__gmpn_sub_n(param_5,param_5,iVar3,param_6)" identifier (argument_list "(param_5,param_5,iVar3,param_6)" ( identifier , identifier , identifier , identifier )))) ;)) (if_statement "if (iVar3 != 0) {\n        if (param_3 <= param_6) goto LAB_0005872a;\n        piVar6 = (int *)(param_5 + param_6 * 4);\n        iVar3 = *piVar6;\n        *piVar6 = iVar3 + -1;\n        if (iVar3 == 0) {\n          if (param_3 <= param_6 + 1) goto LAB_0005872a;\n          piVar6 = (int *)(param_6 * 4 + 4 + param_5);\n          param_6 = param_6 + 2;\n          iVar3 = *piVar6;\n          *piVar6 = iVar3 + -1;\n          while (iVar3 == 0) {\n            if (param_6 == param_3) goto LAB_0005872a;\n            iVar3 = *(int *)(param_5 + param_6 * 4);\n            param_6 = param_6 + 1;\n            *(int *)(param_5 + -4 + param_6 * 4) = iVar3 + -1;\n          }\n        }\n      }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n        if (param_3 <= param_6) goto LAB_0005872a;\n        piVar6 = (int *)(param_5 + param_6 * 4);\n        iVar3 = *piVar6;\n        *piVar6 = iVar3 + -1;\n        if (iVar3 == 0) {\n          if (param_3 <= param_6 + 1) goto LAB_0005872a;\n          piVar6 = (int *)(param_6 * 4 + 4 + param_5);\n          param_6 = param_6 + 2;\n          iVar3 = *piVar6;\n          *piVar6 = iVar3 + -1;\n          while (iVar3 == 0) {\n            if (param_6 == param_3) goto LAB_0005872a;\n            iVar3 = *(int *)(param_5 + param_6 * 4);\n            param_6 = param_6 + 1;\n            *(int *)(param_5 + -4 + param_6 * 4) = iVar3 + -1;\n          }\n        }\n      }" { (if_statement "if (param_3 <= param_6) goto LAB_0005872a;" if (parenthesized_expression "(param_3 <= param_6)" ( (binary_expression "param_3 <= param_6" identifier <= identifier) )) (goto_statement "goto LAB_0005872a;" goto statement_identifier ;)) (expression_statement "piVar6 = (int *)(param_5 + param_6 * 4);" (assignment_expression "piVar6 = (int *)(param_5 + param_6 * 4)" identifier = (cast_expression "(int *)(param_5 + param_6 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + param_6 * 4)" ( (binary_expression "param_5 + param_6 * 4" identifier + (binary_expression "param_6 * 4" identifier * number_literal)) )))) ;) (expression_statement "iVar3 = *piVar6;" (assignment_expression "iVar3 = *piVar6" identifier = (pointer_expression "*piVar6" * identifier)) ;) (expression_statement "*piVar6 = iVar3 + -1;" (assignment_expression "*piVar6 = iVar3 + -1" (pointer_expression "*piVar6" * identifier) = (binary_expression "iVar3 + -1" identifier + number_literal)) ;) (if_statement "if (iVar3 == 0) {\n          if (param_3 <= param_6 + 1) goto LAB_0005872a;\n          piVar6 = (int *)(param_6 * 4 + 4 + param_5);\n          param_6 = param_6 + 2;\n          iVar3 = *piVar6;\n          *piVar6 = iVar3 + -1;\n          while (iVar3 == 0) {\n            if (param_6 == param_3) goto LAB_0005872a;\n            iVar3 = *(int *)(param_5 + param_6 * 4);\n            param_6 = param_6 + 1;\n            *(int *)(param_5 + -4 + param_6 * 4) = iVar3 + -1;\n          }\n        }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n          if (param_3 <= param_6 + 1) goto LAB_0005872a;\n          piVar6 = (int *)(param_6 * 4 + 4 + param_5);\n          param_6 = param_6 + 2;\n          iVar3 = *piVar6;\n          *piVar6 = iVar3 + -1;\n          while (iVar3 == 0) {\n            if (param_6 == param_3) goto LAB_0005872a;\n            iVar3 = *(int *)(param_5 + param_6 * 4);\n            param_6 = param_6 + 1;\n            *(int *)(param_5 + -4 + param_6 * 4) = iVar3 + -1;\n          }\n        }" { (if_statement "if (param_3 <= param_6 + 1) goto LAB_0005872a;" if (parenthesized_expression "(param_3 <= param_6 + 1)" ( (binary_expression "param_3 <= param_6 + 1" identifier <= (binary_expression "param_6 + 1" identifier + number_literal)) )) (goto_statement "goto LAB_0005872a;" goto statement_identifier ;)) (expression_statement "piVar6 = (int *)(param_6 * 4 + 4 + param_5);" (assignment_expression "piVar6 = (int *)(param_6 * 4 + 4 + param_5)" identifier = (cast_expression "(int *)(param_6 * 4 + 4 + param_5)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 * 4 + 4 + param_5)" ( (binary_expression "param_6 * 4 + 4 + param_5" (binary_expression "param_6 * 4 + 4" (binary_expression "param_6 * 4" identifier * number_literal) + number_literal) + identifier) )))) ;) (expression_statement "param_6 = param_6 + 2;" (assignment_expression "param_6 = param_6 + 2" identifier = (binary_expression "param_6 + 2" identifier + number_literal)) ;) (expression_statement "iVar3 = *piVar6;" (assignment_expression "iVar3 = *piVar6" identifier = (pointer_expression "*piVar6" * identifier)) ;) (expression_statement "*piVar6 = iVar3 + -1;" (assignment_expression "*piVar6 = iVar3 + -1" (pointer_expression "*piVar6" * identifier) = (binary_expression "iVar3 + -1" identifier + number_literal)) ;) (while_statement "while (iVar3 == 0) {\n            if (param_6 == param_3) goto LAB_0005872a;\n            iVar3 = *(int *)(param_5 + param_6 * 4);\n            param_6 = param_6 + 1;\n            *(int *)(param_5 + -4 + param_6 * 4) = iVar3 + -1;\n          }" while (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n            if (param_6 == param_3) goto LAB_0005872a;\n            iVar3 = *(int *)(param_5 + param_6 * 4);\n            param_6 = param_6 + 1;\n            *(int *)(param_5 + -4 + param_6 * 4) = iVar3 + -1;\n          }" { (if_statement "if (param_6 == param_3) goto LAB_0005872a;" if (parenthesized_expression "(param_6 == param_3)" ( (binary_expression "param_6 == param_3" identifier == identifier) )) (goto_statement "goto LAB_0005872a;" goto statement_identifier ;)) (expression_statement "iVar3 = *(int *)(param_5 + param_6 * 4);" (assignment_expression "iVar3 = *(int *)(param_5 + param_6 * 4)" identifier = (pointer_expression "*(int *)(param_5 + param_6 * 4)" * (cast_expression "(int *)(param_5 + param_6 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + param_6 * 4)" ( (binary_expression "param_5 + param_6 * 4" identifier + (binary_expression "param_6 * 4" identifier * number_literal)) ))))) ;) (expression_statement "param_6 = param_6 + 1;" (assignment_expression "param_6 = param_6 + 1" identifier = (binary_expression "param_6 + 1" identifier + number_literal)) ;) (expression_statement "*(int *)(param_5 + -4 + param_6 * 4) = iVar3 + -1;" (assignment_expression "*(int *)(param_5 + -4 + param_6 * 4) = iVar3 + -1" (pointer_expression "*(int *)(param_5 + -4 + param_6 * 4)" * (cast_expression "(int *)(param_5 + -4 + param_6 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + -4 + param_6 * 4)" ( (binary_expression "param_5 + -4 + param_6 * 4" (binary_expression "param_5 + -4" identifier + number_literal) + (binary_expression "param_6 * 4" identifier * number_literal)) )))) = (binary_expression "iVar3 + -1" identifier + number_literal)) ;) })) })) })) (expression_statement "uVar8 = uVar5;" (assignment_expression "uVar8 = uVar5" identifier = identifier) ;) (expression_statement "uVar11 = local_3c | uVar5;" (assignment_expression "uVar11 = local_3c | uVar5" identifier = (binary_expression "local_3c | uVar5" identifier | identifier)) ;) })) }) (else_clause "else {\n    iVar10 = iVar2 + param_5;\n    iVar2 = __gmpn_add_n(iVar10,iVar10,iVar2 + param_7,iVar7);\n    if (iVar2 != 0) {\n      if (iVar7 < iVar1) {\n        piVar6 = (int *)(iVar10 + iVar7 * 4);\n        *piVar6 = *piVar6 + 1;\n        if (*piVar6 == 0) {\n          if (iVar1 <= iVar7 + 1) goto LAB_000588e3;\n          piVar6 = (int *)(iVar7 * 4 + 4 + iVar10);\n          iVar7 = iVar7 + 2;\n          *piVar6 = *piVar6 + 1;\n          iVar2 = *piVar6;\n          while (iVar2 == 0) {\n            if (iVar1 == iVar7) goto LAB_000588e3;\n            iVar2 = iVar7 * 4;\n            iVar7 = iVar7 + 1;\n            iVar2 = *(int *)(iVar10 + iVar2) + 1;\n            *(int *)(iVar10 + -4 + iVar7 * 4) = iVar2;\n          }\n        }\n        goto LAB_00058940;\n      }\nLAB_000588e3:\n      uVar8 = 1;\n      param_6 = param_6 + *(int *)(unaff_retaddr + 4);\n      if (param_6 == 0) goto LAB_000588f5;\n      uVar8 = 0;\n      uVar5 = 1;\n      goto LAB_0005895f;\n    }\nLAB_00058940:\n    uVar8 = 0;\n    param_6 = param_6 + *(int *)(unaff_retaddr + 4);\n    if (param_6 != 0) goto LAB_00058955;\n  }" else (compound_statement "{\n    iVar10 = iVar2 + param_5;\n    iVar2 = __gmpn_add_n(iVar10,iVar10,iVar2 + param_7,iVar7);\n    if (iVar2 != 0) {\n      if (iVar7 < iVar1) {\n        piVar6 = (int *)(iVar10 + iVar7 * 4);\n        *piVar6 = *piVar6 + 1;\n        if (*piVar6 == 0) {\n          if (iVar1 <= iVar7 + 1) goto LAB_000588e3;\n          piVar6 = (int *)(iVar7 * 4 + 4 + iVar10);\n          iVar7 = iVar7 + 2;\n          *piVar6 = *piVar6 + 1;\n          iVar2 = *piVar6;\n          while (iVar2 == 0) {\n            if (iVar1 == iVar7) goto LAB_000588e3;\n            iVar2 = iVar7 * 4;\n            iVar7 = iVar7 + 1;\n            iVar2 = *(int *)(iVar10 + iVar2) + 1;\n            *(int *)(iVar10 + -4 + iVar7 * 4) = iVar2;\n          }\n        }\n        goto LAB_00058940;\n      }\nLAB_000588e3:\n      uVar8 = 1;\n      param_6 = param_6 + *(int *)(unaff_retaddr + 4);\n      if (param_6 == 0) goto LAB_000588f5;\n      uVar8 = 0;\n      uVar5 = 1;\n      goto LAB_0005895f;\n    }\nLAB_00058940:\n    uVar8 = 0;\n    param_6 = param_6 + *(int *)(unaff_retaddr + 4);\n    if (param_6 != 0) goto LAB_00058955;\n  }" { (expression_statement "iVar10 = iVar2 + param_5;" (assignment_expression "iVar10 = iVar2 + param_5" identifier = (binary_expression "iVar2 + param_5" identifier + identifier)) ;) (expression_statement "iVar2 = __gmpn_add_n(iVar10,iVar10,iVar2 + param_7,iVar7);" (assignment_expression "iVar2 = __gmpn_add_n(iVar10,iVar10,iVar2 + param_7,iVar7)" identifier = (call_expression "__gmpn_add_n(iVar10,iVar10,iVar2 + param_7,iVar7)" identifier (argument_list "(iVar10,iVar10,iVar2 + param_7,iVar7)" ( identifier , identifier , (binary_expression "iVar2 + param_7" identifier + identifier) , identifier )))) ;) (if_statement "if (iVar2 != 0) {\n      if (iVar7 < iVar1) {\n        piVar6 = (int *)(iVar10 + iVar7 * 4);\n        *piVar6 = *piVar6 + 1;\n        if (*piVar6 == 0) {\n          if (iVar1 <= iVar7 + 1) goto LAB_000588e3;\n          piVar6 = (int *)(iVar7 * 4 + 4 + iVar10);\n          iVar7 = iVar7 + 2;\n          *piVar6 = *piVar6 + 1;\n          iVar2 = *piVar6;\n          while (iVar2 == 0) {\n            if (iVar1 == iVar7) goto LAB_000588e3;\n            iVar2 = iVar7 * 4;\n            iVar7 = iVar7 + 1;\n            iVar2 = *(int *)(iVar10 + iVar2) + 1;\n            *(int *)(iVar10 + -4 + iVar7 * 4) = iVar2;\n          }\n        }\n        goto LAB_00058940;\n      }\nLAB_000588e3:\n      uVar8 = 1;\n      param_6 = param_6 + *(int *)(unaff_retaddr + 4);\n      if (param_6 == 0) goto LAB_000588f5;\n      uVar8 = 0;\n      uVar5 = 1;\n      goto LAB_0005895f;\n    }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      if (iVar7 < iVar1) {\n        piVar6 = (int *)(iVar10 + iVar7 * 4);\n        *piVar6 = *piVar6 + 1;\n        if (*piVar6 == 0) {\n          if (iVar1 <= iVar7 + 1) goto LAB_000588e3;\n          piVar6 = (int *)(iVar7 * 4 + 4 + iVar10);\n          iVar7 = iVar7 + 2;\n          *piVar6 = *piVar6 + 1;\n          iVar2 = *piVar6;\n          while (iVar2 == 0) {\n            if (iVar1 == iVar7) goto LAB_000588e3;\n            iVar2 = iVar7 * 4;\n            iVar7 = iVar7 + 1;\n            iVar2 = *(int *)(iVar10 + iVar2) + 1;\n            *(int *)(iVar10 + -4 + iVar7 * 4) = iVar2;\n          }\n        }\n        goto LAB_00058940;\n      }\nLAB_000588e3:\n      uVar8 = 1;\n      param_6 = param_6 + *(int *)(unaff_retaddr + 4);\n      if (param_6 == 0) goto LAB_000588f5;\n      uVar8 = 0;\n      uVar5 = 1;\n      goto LAB_0005895f;\n    }" { (if_statement "if (iVar7 < iVar1) {\n        piVar6 = (int *)(iVar10 + iVar7 * 4);\n        *piVar6 = *piVar6 + 1;\n        if (*piVar6 == 0) {\n          if (iVar1 <= iVar7 + 1) goto LAB_000588e3;\n          piVar6 = (int *)(iVar7 * 4 + 4 + iVar10);\n          iVar7 = iVar7 + 2;\n          *piVar6 = *piVar6 + 1;\n          iVar2 = *piVar6;\n          while (iVar2 == 0) {\n            if (iVar1 == iVar7) goto LAB_000588e3;\n            iVar2 = iVar7 * 4;\n            iVar7 = iVar7 + 1;\n            iVar2 = *(int *)(iVar10 + iVar2) + 1;\n            *(int *)(iVar10 + -4 + iVar7 * 4) = iVar2;\n          }\n        }\n        goto LAB_00058940;\n      }" if (parenthesized_expression "(iVar7 < iVar1)" ( (binary_expression "iVar7 < iVar1" identifier < identifier) )) (compound_statement "{\n        piVar6 = (int *)(iVar10 + iVar7 * 4);\n        *piVar6 = *piVar6 + 1;\n        if (*piVar6 == 0) {\n          if (iVar1 <= iVar7 + 1) goto LAB_000588e3;\n          piVar6 = (int *)(iVar7 * 4 + 4 + iVar10);\n          iVar7 = iVar7 + 2;\n          *piVar6 = *piVar6 + 1;\n          iVar2 = *piVar6;\n          while (iVar2 == 0) {\n            if (iVar1 == iVar7) goto LAB_000588e3;\n            iVar2 = iVar7 * 4;\n            iVar7 = iVar7 + 1;\n            iVar2 = *(int *)(iVar10 + iVar2) + 1;\n            *(int *)(iVar10 + -4 + iVar7 * 4) = iVar2;\n          }\n        }\n        goto LAB_00058940;\n      }" { (expression_statement "piVar6 = (int *)(iVar10 + iVar7 * 4);" (assignment_expression "piVar6 = (int *)(iVar10 + iVar7 * 4)" identifier = (cast_expression "(int *)(iVar10 + iVar7 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + iVar7 * 4)" ( (binary_expression "iVar10 + iVar7 * 4" identifier + (binary_expression "iVar7 * 4" identifier * number_literal)) )))) ;) (expression_statement "*piVar6 = *piVar6 + 1;" (assignment_expression "*piVar6 = *piVar6 + 1" (pointer_expression "*piVar6" * identifier) = (binary_expression "*piVar6 + 1" (pointer_expression "*piVar6" * identifier) + number_literal)) ;) (if_statement "if (*piVar6 == 0) {\n          if (iVar1 <= iVar7 + 1) goto LAB_000588e3;\n          piVar6 = (int *)(iVar7 * 4 + 4 + iVar10);\n          iVar7 = iVar7 + 2;\n          *piVar6 = *piVar6 + 1;\n          iVar2 = *piVar6;\n          while (iVar2 == 0) {\n            if (iVar1 == iVar7) goto LAB_000588e3;\n            iVar2 = iVar7 * 4;\n            iVar7 = iVar7 + 1;\n            iVar2 = *(int *)(iVar10 + iVar2) + 1;\n            *(int *)(iVar10 + -4 + iVar7 * 4) = iVar2;\n          }\n        }" if (parenthesized_expression "(*piVar6 == 0)" ( (binary_expression "*piVar6 == 0" (pointer_expression "*piVar6" * identifier) == number_literal) )) (compound_statement "{\n          if (iVar1 <= iVar7 + 1) goto LAB_000588e3;\n          piVar6 = (int *)(iVar7 * 4 + 4 + iVar10);\n          iVar7 = iVar7 + 2;\n          *piVar6 = *piVar6 + 1;\n          iVar2 = *piVar6;\n          while (iVar2 == 0) {\n            if (iVar1 == iVar7) goto LAB_000588e3;\n            iVar2 = iVar7 * 4;\n            iVar7 = iVar7 + 1;\n            iVar2 = *(int *)(iVar10 + iVar2) + 1;\n            *(int *)(iVar10 + -4 + iVar7 * 4) = iVar2;\n          }\n        }" { (if_statement "if (iVar1 <= iVar7 + 1) goto LAB_000588e3;" if (parenthesized_expression "(iVar1 <= iVar7 + 1)" ( (binary_expression "iVar1 <= iVar7 + 1" identifier <= (binary_expression "iVar7 + 1" identifier + number_literal)) )) (goto_statement "goto LAB_000588e3;" goto statement_identifier ;)) (expression_statement "piVar6 = (int *)(iVar7 * 4 + 4 + iVar10);" (assignment_expression "piVar6 = (int *)(iVar7 * 4 + 4 + iVar10)" identifier = (cast_expression "(int *)(iVar7 * 4 + 4 + iVar10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 * 4 + 4 + iVar10)" ( (binary_expression "iVar7 * 4 + 4 + iVar10" (binary_expression "iVar7 * 4 + 4" (binary_expression "iVar7 * 4" identifier * number_literal) + number_literal) + identifier) )))) ;) (expression_statement "iVar7 = iVar7 + 2;" (assignment_expression "iVar7 = iVar7 + 2" identifier = (binary_expression "iVar7 + 2" identifier + number_literal)) ;) (expression_statement "*piVar6 = *piVar6 + 1;" (assignment_expression "*piVar6 = *piVar6 + 1" (pointer_expression "*piVar6" * identifier) = (binary_expression "*piVar6 + 1" (pointer_expression "*piVar6" * identifier) + number_literal)) ;) (expression_statement "iVar2 = *piVar6;" (assignment_expression "iVar2 = *piVar6" identifier = (pointer_expression "*piVar6" * identifier)) ;) (while_statement "while (iVar2 == 0) {\n            if (iVar1 == iVar7) goto LAB_000588e3;\n            iVar2 = iVar7 * 4;\n            iVar7 = iVar7 + 1;\n            iVar2 = *(int *)(iVar10 + iVar2) + 1;\n            *(int *)(iVar10 + -4 + iVar7 * 4) = iVar2;\n          }" while (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n            if (iVar1 == iVar7) goto LAB_000588e3;\n            iVar2 = iVar7 * 4;\n            iVar7 = iVar7 + 1;\n            iVar2 = *(int *)(iVar10 + iVar2) + 1;\n            *(int *)(iVar10 + -4 + iVar7 * 4) = iVar2;\n          }" { (if_statement "if (iVar1 == iVar7) goto LAB_000588e3;" if (parenthesized_expression "(iVar1 == iVar7)" ( (binary_expression "iVar1 == iVar7" identifier == identifier) )) (goto_statement "goto LAB_000588e3;" goto statement_identifier ;)) (expression_statement "iVar2 = iVar7 * 4;" (assignment_expression "iVar2 = iVar7 * 4" identifier = (binary_expression "iVar7 * 4" identifier * number_literal)) ;) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "iVar2 = *(int *)(iVar10 + iVar2) + 1;" (assignment_expression "iVar2 = *(int *)(iVar10 + iVar2) + 1" identifier = (binary_expression "*(int *)(iVar10 + iVar2) + 1" (pointer_expression "*(int *)(iVar10 + iVar2)" * (cast_expression "(int *)(iVar10 + iVar2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + iVar2)" ( (binary_expression "iVar10 + iVar2" identifier + identifier) )))) + number_literal)) ;) (expression_statement "*(int *)(iVar10 + -4 + iVar7 * 4) = iVar2;" (assignment_expression "*(int *)(iVar10 + -4 + iVar7 * 4) = iVar2" (pointer_expression "*(int *)(iVar10 + -4 + iVar7 * 4)" * (cast_expression "(int *)(iVar10 + -4 + iVar7 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + -4 + iVar7 * 4)" ( (binary_expression "iVar10 + -4 + iVar7 * 4" (binary_expression "iVar10 + -4" identifier + number_literal) + (binary_expression "iVar7 * 4" identifier * number_literal)) )))) = identifier) ;) })) })) (goto_statement "goto LAB_00058940;" goto statement_identifier ;) })) (labeled_statement "LAB_000588e3:\n      uVar8 = 1;" statement_identifier : (expression_statement "uVar8 = 1;" (assignment_expression "uVar8 = 1" identifier = number_literal) ;)) (expression_statement "param_6 = param_6 + *(int *)(unaff_retaddr + 4);" (assignment_expression "param_6 = param_6 + *(int *)(unaff_retaddr + 4)" identifier = (binary_expression "param_6 + *(int *)(unaff_retaddr + 4)" identifier + (pointer_expression "*(int *)(unaff_retaddr + 4)" * (cast_expression "(int *)(unaff_retaddr + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + 4)" ( (binary_expression "unaff_retaddr + 4" identifier + number_literal) )))))) ;) (if_statement "if (param_6 == 0) goto LAB_000588f5;" if (parenthesized_expression "(param_6 == 0)" ( (binary_expression "param_6 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000588f5;" goto statement_identifier ;)) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_0005895f;" goto statement_identifier ;) })) (labeled_statement "LAB_00058940:\n    uVar8 = 0;" statement_identifier : (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;)) (expression_statement "param_6 = param_6 + *(int *)(unaff_retaddr + 4);" (assignment_expression "param_6 = param_6 + *(int *)(unaff_retaddr + 4)" identifier = (binary_expression "param_6 + *(int *)(unaff_retaddr + 4)" identifier + (pointer_expression "*(int *)(unaff_retaddr + 4)" * (cast_expression "(int *)(unaff_retaddr + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + 4)" ( (binary_expression "unaff_retaddr + 4" identifier + number_literal) )))))) ;) (if_statement "if (param_6 != 0) goto LAB_00058955;" if (parenthesized_expression "(param_6 != 0)" ( (binary_expression "param_6 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00058955;" goto statement_identifier ;)) }))) (labeled_statement "LAB_0005872a:\n  if (uVar11 == 0) {\n    if (*(int *)(param_4 + (param_3 + 0x3fffffff) * 4) == 0) {\n      param_3 = param_3 - (uint)(*(int *)(param_5 + (param_3 + 0x3fffffff) * 4) == 0);\n    }\n    return param_3;\n  }" statement_identifier : (if_statement "if (uVar11 == 0) {\n    if (*(int *)(param_4 + (param_3 + 0x3fffffff) * 4) == 0) {\n      param_3 = param_3 - (uint)(*(int *)(param_5 + (param_3 + 0x3fffffff) * 4) == 0);\n    }\n    return param_3;\n  }" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (compound_statement "{\n    if (*(int *)(param_4 + (param_3 + 0x3fffffff) * 4) == 0) {\n      param_3 = param_3 - (uint)(*(int *)(param_5 + (param_3 + 0x3fffffff) * 4) == 0);\n    }\n    return param_3;\n  }" { (if_statement "if (*(int *)(param_4 + (param_3 + 0x3fffffff) * 4) == 0) {\n      param_3 = param_3 - (uint)(*(int *)(param_5 + (param_3 + 0x3fffffff) * 4) == 0);\n    }" if (parenthesized_expression "(*(int *)(param_4 + (param_3 + 0x3fffffff) * 4) == 0)" ( (binary_expression "*(int *)(param_4 + (param_3 + 0x3fffffff) * 4) == 0" (pointer_expression "*(int *)(param_4 + (param_3 + 0x3fffffff) * 4)" * (cast_expression "(int *)(param_4 + (param_3 + 0x3fffffff) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + (param_3 + 0x3fffffff) * 4)" ( (binary_expression "param_4 + (param_3 + 0x3fffffff) * 4" identifier + (binary_expression "(param_3 + 0x3fffffff) * 4" (parenthesized_expression "(param_3 + 0x3fffffff)" ( (binary_expression "param_3 + 0x3fffffff" identifier + number_literal) )) * number_literal)) )))) == number_literal) )) (compound_statement "{\n      param_3 = param_3 - (uint)(*(int *)(param_5 + (param_3 + 0x3fffffff) * 4) == 0);\n    }" { (expression_statement "param_3 = param_3 - (uint)(*(int *)(param_5 + (param_3 + 0x3fffffff) * 4) == 0);" (assignment_expression "param_3 = param_3 - (uint)(*(int *)(param_5 + (param_3 + 0x3fffffff) * 4) == 0)" identifier = (binary_expression "param_3 - (uint)(*(int *)(param_5 + (param_3 + 0x3fffffff) * 4) == 0)" identifier - (call_expression "(uint)(*(int *)(param_5 + (param_3 + 0x3fffffff) * 4) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(param_5 + (param_3 + 0x3fffffff) * 4) == 0)" ( (binary_expression "*(int *)(param_5 + (param_3 + 0x3fffffff) * 4) == 0" (pointer_expression "*(int *)(param_5 + (param_3 + 0x3fffffff) * 4)" * (cast_expression "(int *)(param_5 + (param_3 + 0x3fffffff) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + (param_3 + 0x3fffffff) * 4)" ( (binary_expression "param_5 + (param_3 + 0x3fffffff) * 4" identifier + (binary_expression "(param_3 + 0x3fffffff) * 4" (parenthesized_expression "(param_3 + 0x3fffffff)" ( (binary_expression "param_3 + 0x3fffffff" identifier + number_literal) )) * number_literal)) )))) == number_literal) ))))) ;) })) (return_statement "return param_3;" return identifier ;) }))) (labeled_statement "LAB_000588f5:\n  *(uint *)(param_4 + param_3 * 4) = local_3c;" statement_identifier : (expression_statement "*(uint *)(param_4 + param_3 * 4) = local_3c;" (assignment_expression "*(uint *)(param_4 + param_3 * 4) = local_3c" (pointer_expression "*(uint *)(param_4 + param_3 * 4)" * (cast_expression "(uint *)(param_4 + param_3 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + param_3 * 4)" ( (binary_expression "param_4 + param_3 * 4" identifier + (binary_expression "param_3 * 4" identifier * number_literal)) )))) = identifier) ;)) (expression_statement "*(uint *)(param_5 + param_3 * 4) = uVar8;" (assignment_expression "*(uint *)(param_5 + param_3 * 4) = uVar8" (pointer_expression "*(uint *)(param_5 + param_3 * 4)" * (cast_expression "(uint *)(param_5 + param_3 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + param_3 * 4)" ( (binary_expression "param_5 + param_3 * 4" identifier + (binary_expression "param_3 * 4" identifier * number_literal)) )))) = identifier) ;) (return_statement "return param_3 + 1;" return (binary_expression "param_3 + 1" identifier + number_literal) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nmp_size_t __gmpn_hgcd_matrix_adjust\n                    (hgcd_matrix *M,mp_size_t n,mp_ptr ap,mp_ptr bp,mp_size_t p,mp_ptr tp)\n\n{\n  mp_ptr prodp;\n  mp_srcptr pmVar1;\n  undefined *puVar2;\n  int iVar3;\n  int iVar4;\n  mp_ptr pmVar5;\n  mp_limb_t mVar6;\n  int iVar7;\n  uint uVar8;\n  uint uVar9;\n  mp_ptr pmVar10;\n  uint uVar11;\n  uint local_38;\n  \n  iVar7 = M->n;\n  prodp = tp + iVar7 + p;\n  pmVar1 = M->p[1][1];\n  if (iVar7 < p) {\n    __gmpn_mul(tp,ap,p,pmVar1,iVar7);\n    __gmpn_mul(prodp,ap,p,M->p[1][0],M->n);\n  }\n  else {\n    __gmpn_mul(tp,pmVar1,iVar7,ap,p);\n    __gmpn_mul(prodp,M->p[1][0],M->n,ap,p);\n  }\n  puVar2 = PTR___gmpn_cpuvec_0009dd94;\n  (**(code **)(PTR___gmpn_cpuvec_0009dd94 + 0x28))(ap,tp,p);\n  iVar7 = M->n;\n  iVar3 = n - p;\n  local_38 = 0;\n  if (iVar7 != 0) {\n    pmVar10 = ap + p;\n    local_38 = __gmpn_add_n(pmVar10,pmVar10,tp + p,iVar7);\n    if (local_38 == 0) {\nLAB_00058ac0:\n      iVar7 = M->n;\n    }\n    else {\n      if (iVar7 < iVar3) {\n        mVar6 = pmVar10[iVar7] + 1;\n        pmVar10[iVar7] = mVar6;\n        if (mVar6 != 0) {\n          local_38 = 0;\n          iVar7 = M->n;\n          goto LAB_000586a5;\n        }\n        if (iVar7 + 1 < iVar3) {\n          pmVar5 = pmVar10 + iVar7 + 1;\n          *pmVar5 = *pmVar5 + 1;\n          mVar6 = *pmVar5;\n          local_38 = 0;\n          iVar7 = iVar7 + 2;\n          while (mVar6 == 0) {\n            if (iVar3 == iVar7) goto LAB_00058aa3;\n            mVar6 = pmVar10[iVar7] + 1;\n            pmVar10[iVar7] = mVar6;\n            iVar7 = iVar7 + 1;\n          }\n          goto LAB_00058ac0;\n        }\n      }\nLAB_00058aa3:\n      local_38 = 1;\n      iVar7 = M->n;\n    }\n  }\nLAB_000586a5:\n  pmVar1 = M->p[0][1];\n  if (iVar7 < p) {\n    __gmpn_mul(tp,bp,p,pmVar1,iVar7);\n    iVar7 = M->n;\n  }\n  else {\n    __gmpn_mul(tp,pmVar1,iVar7,bp,p);\n    iVar7 = M->n;\n  }\n  iVar4 = iVar7 + p;\n  if (iVar4 != 0) {\n    iVar7 = __gmpn_sub_n(ap,ap,tp,iVar4);\n    if (iVar7 != 0) {\n      if (n <= iVar4) {\nLAB_00058815:\n        local_38 = local_38 - 1;\n        iVar7 = M->n;\n        goto LAB_000586d8;\n      }\n      mVar6 = ap[iVar4];\n      ap[iVar4] = mVar6 - 1;\n      if (mVar6 == 0) {\n        if (n <= iVar4 + 1) goto LAB_00058815;\n        mVar6 = ap[iVar4 + 1];\n        ap[iVar4 + 1] = mVar6 - 1;\n        iVar7 = iVar4 + 2;\n        while (mVar6 == 0) {\n          if (iVar7 == n) goto LAB_00058815;\n          mVar6 = ap[iVar7];\n          ap[iVar7] = mVar6 - 1;\n          iVar7 = iVar7 + 1;\n        }\n      }\n    }\n    iVar7 = M->n;\n  }\nLAB_000586d8:\n  pmVar1 = M->p[0][0];\n  if (iVar7 < p) {\n    __gmpn_mul(tp,bp,p,pmVar1,iVar7);\n  }\n  else {\n    __gmpn_mul(tp,pmVar1,iVar7,bp,p);\n  }\n  (**(code **)(puVar2 + 0x28))(bp,tp,p);\n  iVar7 = M->n;\n  uVar11 = local_38;\n  if (iVar7 == 0) {\n    uVar9 = 0;\n    if (p != 0) {\nLAB_00058955:\n      uVar8 = 0;\n      uVar9 = 0xffffffff;\n      uVar11 = 0xffffffff;\nLAB_0005895f:\n      iVar7 = __gmpn_sub_n(bp,bp,prodp,p);\n      if (iVar7 != 0) {\n        if (n <= p) goto LAB_0005872a;\n        mVar6 = bp[p];\n        bp[p] = mVar6 - 1;\n        if (mVar6 == 0) {\n          if (n <= p + 1) goto LAB_0005872a;\n          mVar6 = bp[p + 1];\n          bp[p + 1] = mVar6 - 1;\n          iVar7 = p + 2;\n          while (mVar6 == 0) {\n            if (iVar7 == n) goto LAB_0005872a;\n            mVar6 = bp[iVar7];\n            bp[iVar7] = mVar6 - 1;\n            iVar7 = iVar7 + 1;\n          }\n        }\n      }\n      uVar9 = uVar8;\n      uVar11 = local_38 | uVar8;\n    }\n  }\n  else {\n    pmVar10 = bp + p;\n    iVar4 = __gmpn_add_n(pmVar10,pmVar10,tp + p,iVar7);\n    if (iVar4 != 0) {\n      if (iVar7 < iVar3) {\n        pmVar5 = pmVar10 + iVar7;\n        *pmVar5 = *pmVar5 + 1;\n        if (*pmVar5 == 0) {\n          if (iVar3 <= iVar7 + 1) goto LAB_000588e3;\n          pmVar5 = pmVar10 + iVar7 + 1;\n          *pmVar5 = *pmVar5 + 1;\n          mVar6 = *pmVar5;\n          iVar7 = iVar7 + 2;\n          while (mVar6 == 0) {\n            if (iVar3 == iVar7) goto LAB_000588e3;\n            mVar6 = pmVar10[iVar7] + 1;\n            pmVar10[iVar7] = mVar6;\n            iVar7 = iVar7 + 1;\n          }\n        }\n        goto LAB_00058940;\n      }\nLAB_000588e3:\n      uVar9 = 1;\n      p = p + M->n;\n      if (p == 0) goto LAB_000588f5;\n      uVar9 = 0;\n      uVar8 = 1;\n      goto LAB_0005895f;\n    }\nLAB_00058940:\n    uVar9 = 0;\n    p = p + M->n;\n    if (p != 0) goto LAB_00058955;\n  }\nLAB_0005872a:\n  if (uVar11 == 0) {\n    if (ap[n + 0x3fffffff] == 0) {\n      n = n - (uint)(bp[n + 0x3fffffff] == 0);\n    }\n    return n;\n  }\nLAB_000588f5:\n  ap[n] = local_38;\n  bp[n] = uVar9;\n  return n + 1;\n}\n\n" comment (function_definition "mp_size_t __gmpn_hgcd_matrix_adjust\n                    (hgcd_matrix *M,mp_size_t n,mp_ptr ap,mp_ptr bp,mp_size_t p,mp_ptr tp)\n\n{\n  mp_ptr prodp;\n  mp_srcptr pmVar1;\n  undefined *puVar2;\n  int iVar3;\n  int iVar4;\n  mp_ptr pmVar5;\n  mp_limb_t mVar6;\n  int iVar7;\n  uint uVar8;\n  uint uVar9;\n  mp_ptr pmVar10;\n  uint uVar11;\n  uint local_38;\n  \n  iVar7 = M->n;\n  prodp = tp + iVar7 + p;\n  pmVar1 = M->p[1][1];\n  if (iVar7 < p) {\n    __gmpn_mul(tp,ap,p,pmVar1,iVar7);\n    __gmpn_mul(prodp,ap,p,M->p[1][0],M->n);\n  }\n  else {\n    __gmpn_mul(tp,pmVar1,iVar7,ap,p);\n    __gmpn_mul(prodp,M->p[1][0],M->n,ap,p);\n  }\n  puVar2 = PTR___gmpn_cpuvec_0009dd94;\n  (**(code **)(PTR___gmpn_cpuvec_0009dd94 + 0x28))(ap,tp,p);\n  iVar7 = M->n;\n  iVar3 = n - p;\n  local_38 = 0;\n  if (iVar7 != 0) {\n    pmVar10 = ap + p;\n    local_38 = __gmpn_add_n(pmVar10,pmVar10,tp + p,iVar7);\n    if (local_38 == 0) {\nLAB_00058ac0:\n      iVar7 = M->n;\n    }\n    else {\n      if (iVar7 < iVar3) {\n        mVar6 = pmVar10[iVar7] + 1;\n        pmVar10[iVar7] = mVar6;\n        if (mVar6 != 0) {\n          local_38 = 0;\n          iVar7 = M->n;\n          goto LAB_000586a5;\n        }\n        if (iVar7 + 1 < iVar3) {\n          pmVar5 = pmVar10 + iVar7 + 1;\n          *pmVar5 = *pmVar5 + 1;\n          mVar6 = *pmVar5;\n          local_38 = 0;\n          iVar7 = iVar7 + 2;\n          while (mVar6 == 0) {\n            if (iVar3 == iVar7) goto LAB_00058aa3;\n            mVar6 = pmVar10[iVar7] + 1;\n            pmVar10[iVar7] = mVar6;\n            iVar7 = iVar7 + 1;\n          }\n          goto LAB_00058ac0;\n        }\n      }\nLAB_00058aa3:\n      local_38 = 1;\n      iVar7 = M->n;\n    }\n  }\nLAB_000586a5:\n  pmVar1 = M->p[0][1];\n  if (iVar7 < p) {\n    __gmpn_mul(tp,bp,p,pmVar1,iVar7);\n    iVar7 = M->n;\n  }\n  else {\n    __gmpn_mul(tp,pmVar1,iVar7,bp,p);\n    iVar7 = M->n;\n  }\n  iVar4 = iVar7 + p;\n  if (iVar4 != 0) {\n    iVar7 = __gmpn_sub_n(ap,ap,tp,iVar4);\n    if (iVar7 != 0) {\n      if (n <= iVar4) {\nLAB_00058815:\n        local_38 = local_38 - 1;\n        iVar7 = M->n;\n        goto LAB_000586d8;\n      }\n      mVar6 = ap[iVar4];\n      ap[iVar4] = mVar6 - 1;\n      if (mVar6 == 0) {\n        if (n <= iVar4 + 1) goto LAB_00058815;\n        mVar6 = ap[iVar4 + 1];\n        ap[iVar4 + 1] = mVar6 - 1;\n        iVar7 = iVar4 + 2;\n        while (mVar6 == 0) {\n          if (iVar7 == n) goto LAB_00058815;\n          mVar6 = ap[iVar7];\n          ap[iVar7] = mVar6 - 1;\n          iVar7 = iVar7 + 1;\n        }\n      }\n    }\n    iVar7 = M->n;\n  }\nLAB_000586d8:\n  pmVar1 = M->p[0][0];\n  if (iVar7 < p) {\n    __gmpn_mul(tp,bp,p,pmVar1,iVar7);\n  }\n  else {\n    __gmpn_mul(tp,pmVar1,iVar7,bp,p);\n  }\n  (**(code **)(puVar2 + 0x28))(bp,tp,p);\n  iVar7 = M->n;\n  uVar11 = local_38;\n  if (iVar7 == 0) {\n    uVar9 = 0;\n    if (p != 0) {\nLAB_00058955:\n      uVar8 = 0;\n      uVar9 = 0xffffffff;\n      uVar11 = 0xffffffff;\nLAB_0005895f:\n      iVar7 = __gmpn_sub_n(bp,bp,prodp,p);\n      if (iVar7 != 0) {\n        if (n <= p) goto LAB_0005872a;\n        mVar6 = bp[p];\n        bp[p] = mVar6 - 1;\n        if (mVar6 == 0) {\n          if (n <= p + 1) goto LAB_0005872a;\n          mVar6 = bp[p + 1];\n          bp[p + 1] = mVar6 - 1;\n          iVar7 = p + 2;\n          while (mVar6 == 0) {\n            if (iVar7 == n) goto LAB_0005872a;\n            mVar6 = bp[iVar7];\n            bp[iVar7] = mVar6 - 1;\n            iVar7 = iVar7 + 1;\n          }\n        }\n      }\n      uVar9 = uVar8;\n      uVar11 = local_38 | uVar8;\n    }\n  }\n  else {\n    pmVar10 = bp + p;\n    iVar4 = __gmpn_add_n(pmVar10,pmVar10,tp + p,iVar7);\n    if (iVar4 != 0) {\n      if (iVar7 < iVar3) {\n        pmVar5 = pmVar10 + iVar7;\n        *pmVar5 = *pmVar5 + 1;\n        if (*pmVar5 == 0) {\n          if (iVar3 <= iVar7 + 1) goto LAB_000588e3;\n          pmVar5 = pmVar10 + iVar7 + 1;\n          *pmVar5 = *pmVar5 + 1;\n          mVar6 = *pmVar5;\n          iVar7 = iVar7 + 2;\n          while (mVar6 == 0) {\n            if (iVar3 == iVar7) goto LAB_000588e3;\n            mVar6 = pmVar10[iVar7] + 1;\n            pmVar10[iVar7] = mVar6;\n            iVar7 = iVar7 + 1;\n          }\n        }\n        goto LAB_00058940;\n      }\nLAB_000588e3:\n      uVar9 = 1;\n      p = p + M->n;\n      if (p == 0) goto LAB_000588f5;\n      uVar9 = 0;\n      uVar8 = 1;\n      goto LAB_0005895f;\n    }\nLAB_00058940:\n    uVar9 = 0;\n    p = p + M->n;\n    if (p != 0) goto LAB_00058955;\n  }\nLAB_0005872a:\n  if (uVar11 == 0) {\n    if (ap[n + 0x3fffffff] == 0) {\n      n = n - (uint)(bp[n + 0x3fffffff] == 0);\n    }\n    return n;\n  }\nLAB_000588f5:\n  ap[n] = local_38;\n  bp[n] = uVar9;\n  return n + 1;\n}" type_identifier (function_declarator "__gmpn_hgcd_matrix_adjust\n                    (hgcd_matrix *M,mp_size_t n,mp_ptr ap,mp_ptr bp,mp_size_t p,mp_ptr tp)" identifier (parameter_list "(hgcd_matrix *M,mp_size_t n,mp_ptr ap,mp_ptr bp,mp_size_t p,mp_ptr tp)" ( (parameter_declaration "hgcd_matrix *M" type_identifier (pointer_declarator "*M" * identifier)) , (parameter_declaration "mp_size_t n" type_identifier identifier) , (parameter_declaration "mp_ptr ap" type_identifier identifier) , (parameter_declaration "mp_ptr bp" type_identifier identifier) , (parameter_declaration "mp_size_t p" type_identifier identifier) , (parameter_declaration "mp_ptr tp" type_identifier identifier) ))) (compound_statement "{\n  mp_ptr prodp;\n  mp_srcptr pmVar1;\n  undefined *puVar2;\n  int iVar3;\n  int iVar4;\n  mp_ptr pmVar5;\n  mp_limb_t mVar6;\n  int iVar7;\n  uint uVar8;\n  uint uVar9;\n  mp_ptr pmVar10;\n  uint uVar11;\n  uint local_38;\n  \n  iVar7 = M->n;\n  prodp = tp + iVar7 + p;\n  pmVar1 = M->p[1][1];\n  if (iVar7 < p) {\n    __gmpn_mul(tp,ap,p,pmVar1,iVar7);\n    __gmpn_mul(prodp,ap,p,M->p[1][0],M->n);\n  }\n  else {\n    __gmpn_mul(tp,pmVar1,iVar7,ap,p);\n    __gmpn_mul(prodp,M->p[1][0],M->n,ap,p);\n  }\n  puVar2 = PTR___gmpn_cpuvec_0009dd94;\n  (**(code **)(PTR___gmpn_cpuvec_0009dd94 + 0x28))(ap,tp,p);\n  iVar7 = M->n;\n  iVar3 = n - p;\n  local_38 = 0;\n  if (iVar7 != 0) {\n    pmVar10 = ap + p;\n    local_38 = __gmpn_add_n(pmVar10,pmVar10,tp + p,iVar7);\n    if (local_38 == 0) {\nLAB_00058ac0:\n      iVar7 = M->n;\n    }\n    else {\n      if (iVar7 < iVar3) {\n        mVar6 = pmVar10[iVar7] + 1;\n        pmVar10[iVar7] = mVar6;\n        if (mVar6 != 0) {\n          local_38 = 0;\n          iVar7 = M->n;\n          goto LAB_000586a5;\n        }\n        if (iVar7 + 1 < iVar3) {\n          pmVar5 = pmVar10 + iVar7 + 1;\n          *pmVar5 = *pmVar5 + 1;\n          mVar6 = *pmVar5;\n          local_38 = 0;\n          iVar7 = iVar7 + 2;\n          while (mVar6 == 0) {\n            if (iVar3 == iVar7) goto LAB_00058aa3;\n            mVar6 = pmVar10[iVar7] + 1;\n            pmVar10[iVar7] = mVar6;\n            iVar7 = iVar7 + 1;\n          }\n          goto LAB_00058ac0;\n        }\n      }\nLAB_00058aa3:\n      local_38 = 1;\n      iVar7 = M->n;\n    }\n  }\nLAB_000586a5:\n  pmVar1 = M->p[0][1];\n  if (iVar7 < p) {\n    __gmpn_mul(tp,bp,p,pmVar1,iVar7);\n    iVar7 = M->n;\n  }\n  else {\n    __gmpn_mul(tp,pmVar1,iVar7,bp,p);\n    iVar7 = M->n;\n  }\n  iVar4 = iVar7 + p;\n  if (iVar4 != 0) {\n    iVar7 = __gmpn_sub_n(ap,ap,tp,iVar4);\n    if (iVar7 != 0) {\n      if (n <= iVar4) {\nLAB_00058815:\n        local_38 = local_38 - 1;\n        iVar7 = M->n;\n        goto LAB_000586d8;\n      }\n      mVar6 = ap[iVar4];\n      ap[iVar4] = mVar6 - 1;\n      if (mVar6 == 0) {\n        if (n <= iVar4 + 1) goto LAB_00058815;\n        mVar6 = ap[iVar4 + 1];\n        ap[iVar4 + 1] = mVar6 - 1;\n        iVar7 = iVar4 + 2;\n        while (mVar6 == 0) {\n          if (iVar7 == n) goto LAB_00058815;\n          mVar6 = ap[iVar7];\n          ap[iVar7] = mVar6 - 1;\n          iVar7 = iVar7 + 1;\n        }\n      }\n    }\n    iVar7 = M->n;\n  }\nLAB_000586d8:\n  pmVar1 = M->p[0][0];\n  if (iVar7 < p) {\n    __gmpn_mul(tp,bp,p,pmVar1,iVar7);\n  }\n  else {\n    __gmpn_mul(tp,pmVar1,iVar7,bp,p);\n  }\n  (**(code **)(puVar2 + 0x28))(bp,tp,p);\n  iVar7 = M->n;\n  uVar11 = local_38;\n  if (iVar7 == 0) {\n    uVar9 = 0;\n    if (p != 0) {\nLAB_00058955:\n      uVar8 = 0;\n      uVar9 = 0xffffffff;\n      uVar11 = 0xffffffff;\nLAB_0005895f:\n      iVar7 = __gmpn_sub_n(bp,bp,prodp,p);\n      if (iVar7 != 0) {\n        if (n <= p) goto LAB_0005872a;\n        mVar6 = bp[p];\n        bp[p] = mVar6 - 1;\n        if (mVar6 == 0) {\n          if (n <= p + 1) goto LAB_0005872a;\n          mVar6 = bp[p + 1];\n          bp[p + 1] = mVar6 - 1;\n          iVar7 = p + 2;\n          while (mVar6 == 0) {\n            if (iVar7 == n) goto LAB_0005872a;\n            mVar6 = bp[iVar7];\n            bp[iVar7] = mVar6 - 1;\n            iVar7 = iVar7 + 1;\n          }\n        }\n      }\n      uVar9 = uVar8;\n      uVar11 = local_38 | uVar8;\n    }\n  }\n  else {\n    pmVar10 = bp + p;\n    iVar4 = __gmpn_add_n(pmVar10,pmVar10,tp + p,iVar7);\n    if (iVar4 != 0) {\n      if (iVar7 < iVar3) {\n        pmVar5 = pmVar10 + iVar7;\n        *pmVar5 = *pmVar5 + 1;\n        if (*pmVar5 == 0) {\n          if (iVar3 <= iVar7 + 1) goto LAB_000588e3;\n          pmVar5 = pmVar10 + iVar7 + 1;\n          *pmVar5 = *pmVar5 + 1;\n          mVar6 = *pmVar5;\n          iVar7 = iVar7 + 2;\n          while (mVar6 == 0) {\n            if (iVar3 == iVar7) goto LAB_000588e3;\n            mVar6 = pmVar10[iVar7] + 1;\n            pmVar10[iVar7] = mVar6;\n            iVar7 = iVar7 + 1;\n          }\n        }\n        goto LAB_00058940;\n      }\nLAB_000588e3:\n      uVar9 = 1;\n      p = p + M->n;\n      if (p == 0) goto LAB_000588f5;\n      uVar9 = 0;\n      uVar8 = 1;\n      goto LAB_0005895f;\n    }\nLAB_00058940:\n    uVar9 = 0;\n    p = p + M->n;\n    if (p != 0) goto LAB_00058955;\n  }\nLAB_0005872a:\n  if (uVar11 == 0) {\n    if (ap[n + 0x3fffffff] == 0) {\n      n = n - (uint)(bp[n + 0x3fffffff] == 0);\n    }\n    return n;\n  }\nLAB_000588f5:\n  ap[n] = local_38;\n  bp[n] = uVar9;\n  return n + 1;\n}" { (declaration "mp_ptr prodp;" type_identifier identifier ;) (declaration "mp_srcptr pmVar1;" type_identifier identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "mp_ptr pmVar5;" type_identifier identifier ;) (declaration "mp_limb_t mVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type 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 local_38;" type_identifier identifier ;) (expression_statement "iVar7 = M->n;" (assignment_expression "iVar7 = M->n" identifier = (field_expression "M->n" identifier -> field_identifier)) ;) (expression_statement "prodp = tp + iVar7 + p;" (assignment_expression "prodp = tp + iVar7 + p" identifier = (binary_expression "tp + iVar7 + p" (binary_expression "tp + iVar7" identifier + identifier) + identifier)) ;) (expression_statement "pmVar1 = M->p[1][1];" (assignment_expression "pmVar1 = M->p[1][1]" identifier = (subscript_expression "M->p[1][1]" (subscript_expression "M->p[1]" (field_expression "M->p" identifier -> field_identifier) [ number_literal ]) [ number_literal ])) ;) (if_statement "if (iVar7 < p) {\n    __gmpn_mul(tp,ap,p,pmVar1,iVar7);\n    __gmpn_mul(prodp,ap,p,M->p[1][0],M->n);\n  }\n  else {\n    __gmpn_mul(tp,pmVar1,iVar7,ap,p);\n    __gmpn_mul(prodp,M->p[1][0],M->n,ap,p);\n  }" if (parenthesized_expression "(iVar7 < p)" ( (binary_expression "iVar7 < p" identifier < identifier) )) (compound_statement "{\n    __gmpn_mul(tp,ap,p,pmVar1,iVar7);\n    __gmpn_mul(prodp,ap,p,M->p[1][0],M->n);\n  }" { (expression_statement "__gmpn_mul(tp,ap,p,pmVar1,iVar7);" (call_expression "__gmpn_mul(tp,ap,p,pmVar1,iVar7)" identifier (argument_list "(tp,ap,p,pmVar1,iVar7)" ( identifier , identifier , identifier , identifier , identifier ))) ;) (expression_statement "__gmpn_mul(prodp,ap,p,M->p[1][0],M->n);" (call_expression "__gmpn_mul(prodp,ap,p,M->p[1][0],M->n)" identifier (argument_list "(prodp,ap,p,M->p[1][0],M->n)" ( identifier , identifier , identifier , (subscript_expression "M->p[1][0]" (subscript_expression "M->p[1]" (field_expression "M->p" identifier -> field_identifier) [ number_literal ]) [ number_literal ]) , (field_expression "M->n" identifier -> field_identifier) ))) ;) }) (else_clause "else {\n    __gmpn_mul(tp,pmVar1,iVar7,ap,p);\n    __gmpn_mul(prodp,M->p[1][0],M->n,ap,p);\n  }" else (compound_statement "{\n    __gmpn_mul(tp,pmVar1,iVar7,ap,p);\n    __gmpn_mul(prodp,M->p[1][0],M->n,ap,p);\n  }" { (expression_statement "__gmpn_mul(tp,pmVar1,iVar7,ap,p);" (call_expression "__gmpn_mul(tp,pmVar1,iVar7,ap,p)" identifier (argument_list "(tp,pmVar1,iVar7,ap,p)" ( identifier , identifier , identifier , identifier , identifier ))) ;) (expression_statement "__gmpn_mul(prodp,M->p[1][0],M->n,ap,p);" (call_expression "__gmpn_mul(prodp,M->p[1][0],M->n,ap,p)" identifier (argument_list "(prodp,M->p[1][0],M->n,ap,p)" ( identifier , (subscript_expression "M->p[1][0]" (subscript_expression "M->p[1]" (field_expression "M->p" identifier -> field_identifier) [ number_literal ]) [ number_literal ]) , (field_expression "M->n" identifier -> field_identifier) , identifier , identifier ))) ;) }))) (expression_statement "puVar2 = PTR___gmpn_cpuvec_0009dd94;" (assignment_expression "puVar2 = PTR___gmpn_cpuvec_0009dd94" identifier = identifier) ;) (expression_statement "(**(code **)(PTR___gmpn_cpuvec_0009dd94 + 0x28))(ap,tp,p);" (call_expression "(**(code **)(PTR___gmpn_cpuvec_0009dd94 + 0x28))(ap,tp,p)" (parenthesized_expression "(**(code **)(PTR___gmpn_cpuvec_0009dd94 + 0x28))" ( (pointer_expression "**(code **)(PTR___gmpn_cpuvec_0009dd94 + 0x28)" * (pointer_expression "*(code **)(PTR___gmpn_cpuvec_0009dd94 + 0x28)" * (cast_expression "(code **)(PTR___gmpn_cpuvec_0009dd94 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(PTR___gmpn_cpuvec_0009dd94 + 0x28)" ( (binary_expression "PTR___gmpn_cpuvec_0009dd94 + 0x28" identifier + number_literal) ))))) )) (argument_list "(ap,tp,p)" ( identifier , identifier , identifier ))) ;) (expression_statement "iVar7 = M->n;" (assignment_expression "iVar7 = M->n" identifier = (field_expression "M->n" identifier -> field_identifier)) ;) (expression_statement "iVar3 = n - p;" (assignment_expression "iVar3 = n - p" identifier = (binary_expression "n - p" identifier - identifier)) ;) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (if_statement "if (iVar7 != 0) {\n    pmVar10 = ap + p;\n    local_38 = __gmpn_add_n(pmVar10,pmVar10,tp + p,iVar7);\n    if (local_38 == 0) {\nLAB_00058ac0:\n      iVar7 = M->n;\n    }\n    else {\n      if (iVar7 < iVar3) {\n        mVar6 = pmVar10[iVar7] + 1;\n        pmVar10[iVar7] = mVar6;\n        if (mVar6 != 0) {\n          local_38 = 0;\n          iVar7 = M->n;\n          goto LAB_000586a5;\n        }\n        if (iVar7 + 1 < iVar3) {\n          pmVar5 = pmVar10 + iVar7 + 1;\n          *pmVar5 = *pmVar5 + 1;\n          mVar6 = *pmVar5;\n          local_38 = 0;\n          iVar7 = iVar7 + 2;\n          while (mVar6 == 0) {\n            if (iVar3 == iVar7) goto LAB_00058aa3;\n            mVar6 = pmVar10[iVar7] + 1;\n            pmVar10[iVar7] = mVar6;\n            iVar7 = iVar7 + 1;\n          }\n          goto LAB_00058ac0;\n        }\n      }\nLAB_00058aa3:\n      local_38 = 1;\n      iVar7 = M->n;\n    }\n  }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n    pmVar10 = ap + p;\n    local_38 = __gmpn_add_n(pmVar10,pmVar10,tp + p,iVar7);\n    if (local_38 == 0) {\nLAB_00058ac0:\n      iVar7 = M->n;\n    }\n    else {\n      if (iVar7 < iVar3) {\n        mVar6 = pmVar10[iVar7] + 1;\n        pmVar10[iVar7] = mVar6;\n        if (mVar6 != 0) {\n          local_38 = 0;\n          iVar7 = M->n;\n          goto LAB_000586a5;\n        }\n        if (iVar7 + 1 < iVar3) {\n          pmVar5 = pmVar10 + iVar7 + 1;\n          *pmVar5 = *pmVar5 + 1;\n          mVar6 = *pmVar5;\n          local_38 = 0;\n          iVar7 = iVar7 + 2;\n          while (mVar6 == 0) {\n            if (iVar3 == iVar7) goto LAB_00058aa3;\n            mVar6 = pmVar10[iVar7] + 1;\n            pmVar10[iVar7] = mVar6;\n            iVar7 = iVar7 + 1;\n          }\n          goto LAB_00058ac0;\n        }\n      }\nLAB_00058aa3:\n      local_38 = 1;\n      iVar7 = M->n;\n    }\n  }" { (expression_statement "pmVar10 = ap + p;" (assignment_expression "pmVar10 = ap + p" identifier = (binary_expression "ap + p" identifier + identifier)) ;) (expression_statement "local_38 = __gmpn_add_n(pmVar10,pmVar10,tp + p,iVar7);" (assignment_expression "local_38 = __gmpn_add_n(pmVar10,pmVar10,tp + p,iVar7)" identifier = (call_expression "__gmpn_add_n(pmVar10,pmVar10,tp + p,iVar7)" identifier (argument_list "(pmVar10,pmVar10,tp + p,iVar7)" ( identifier , identifier , (binary_expression "tp + p" identifier + identifier) , identifier )))) ;) (if_statement "if (local_38 == 0) {\nLAB_00058ac0:\n      iVar7 = M->n;\n    }\n    else {\n      if (iVar7 < iVar3) {\n        mVar6 = pmVar10[iVar7] + 1;\n        pmVar10[iVar7] = mVar6;\n        if (mVar6 != 0) {\n          local_38 = 0;\n          iVar7 = M->n;\n          goto LAB_000586a5;\n        }\n        if (iVar7 + 1 < iVar3) {\n          pmVar5 = pmVar10 + iVar7 + 1;\n          *pmVar5 = *pmVar5 + 1;\n          mVar6 = *pmVar5;\n          local_38 = 0;\n          iVar7 = iVar7 + 2;\n          while (mVar6 == 0) {\n            if (iVar3 == iVar7) goto LAB_00058aa3;\n            mVar6 = pmVar10[iVar7] + 1;\n            pmVar10[iVar7] = mVar6;\n            iVar7 = iVar7 + 1;\n          }\n          goto LAB_00058ac0;\n        }\n      }\nLAB_00058aa3:\n      local_38 = 1;\n      iVar7 = M->n;\n    }" if (parenthesized_expression "(local_38 == 0)" ( (binary_expression "local_38 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00058ac0:\n      iVar7 = M->n;\n    }" { (labeled_statement "LAB_00058ac0:\n      iVar7 = M->n;" statement_identifier : (expression_statement "iVar7 = M->n;" (assignment_expression "iVar7 = M->n" identifier = (field_expression "M->n" identifier -> field_identifier)) ;)) }) (else_clause "else {\n      if (iVar7 < iVar3) {\n        mVar6 = pmVar10[iVar7] + 1;\n        pmVar10[iVar7] = mVar6;\n        if (mVar6 != 0) {\n          local_38 = 0;\n          iVar7 = M->n;\n          goto LAB_000586a5;\n        }\n        if (iVar7 + 1 < iVar3) {\n          pmVar5 = pmVar10 + iVar7 + 1;\n          *pmVar5 = *pmVar5 + 1;\n          mVar6 = *pmVar5;\n          local_38 = 0;\n          iVar7 = iVar7 + 2;\n          while (mVar6 == 0) {\n            if (iVar3 == iVar7) goto LAB_00058aa3;\n            mVar6 = pmVar10[iVar7] + 1;\n            pmVar10[iVar7] = mVar6;\n            iVar7 = iVar7 + 1;\n          }\n          goto LAB_00058ac0;\n        }\n      }\nLAB_00058aa3:\n      local_38 = 1;\n      iVar7 = M->n;\n    }" else (compound_statement "{\n      if (iVar7 < iVar3) {\n        mVar6 = pmVar10[iVar7] + 1;\n        pmVar10[iVar7] = mVar6;\n        if (mVar6 != 0) {\n          local_38 = 0;\n          iVar7 = M->n;\n          goto LAB_000586a5;\n        }\n        if (iVar7 + 1 < iVar3) {\n          pmVar5 = pmVar10 + iVar7 + 1;\n          *pmVar5 = *pmVar5 + 1;\n          mVar6 = *pmVar5;\n          local_38 = 0;\n          iVar7 = iVar7 + 2;\n          while (mVar6 == 0) {\n            if (iVar3 == iVar7) goto LAB_00058aa3;\n            mVar6 = pmVar10[iVar7] + 1;\n            pmVar10[iVar7] = mVar6;\n            iVar7 = iVar7 + 1;\n          }\n          goto LAB_00058ac0;\n        }\n      }\nLAB_00058aa3:\n      local_38 = 1;\n      iVar7 = M->n;\n    }" { (if_statement "if (iVar7 < iVar3) {\n        mVar6 = pmVar10[iVar7] + 1;\n        pmVar10[iVar7] = mVar6;\n        if (mVar6 != 0) {\n          local_38 = 0;\n          iVar7 = M->n;\n          goto LAB_000586a5;\n        }\n        if (iVar7 + 1 < iVar3) {\n          pmVar5 = pmVar10 + iVar7 + 1;\n          *pmVar5 = *pmVar5 + 1;\n          mVar6 = *pmVar5;\n          local_38 = 0;\n          iVar7 = iVar7 + 2;\n          while (mVar6 == 0) {\n            if (iVar3 == iVar7) goto LAB_00058aa3;\n            mVar6 = pmVar10[iVar7] + 1;\n            pmVar10[iVar7] = mVar6;\n            iVar7 = iVar7 + 1;\n          }\n          goto LAB_00058ac0;\n        }\n      }" if (parenthesized_expression "(iVar7 < iVar3)" ( (binary_expression "iVar7 < iVar3" identifier < identifier) )) (compound_statement "{\n        mVar6 = pmVar10[iVar7] + 1;\n        pmVar10[iVar7] = mVar6;\n        if (mVar6 != 0) {\n          local_38 = 0;\n          iVar7 = M->n;\n          goto LAB_000586a5;\n        }\n        if (iVar7 + 1 < iVar3) {\n          pmVar5 = pmVar10 + iVar7 + 1;\n          *pmVar5 = *pmVar5 + 1;\n          mVar6 = *pmVar5;\n          local_38 = 0;\n          iVar7 = iVar7 + 2;\n          while (mVar6 == 0) {\n            if (iVar3 == iVar7) goto LAB_00058aa3;\n            mVar6 = pmVar10[iVar7] + 1;\n            pmVar10[iVar7] = mVar6;\n            iVar7 = iVar7 + 1;\n          }\n          goto LAB_00058ac0;\n        }\n      }" { (expression_statement "mVar6 = pmVar10[iVar7] + 1;" (assignment_expression "mVar6 = pmVar10[iVar7] + 1" identifier = (binary_expression "pmVar10[iVar7] + 1" (subscript_expression "pmVar10[iVar7]" identifier [ identifier ]) + number_literal)) ;) (expression_statement "pmVar10[iVar7] = mVar6;" (assignment_expression "pmVar10[iVar7] = mVar6" (subscript_expression "pmVar10[iVar7]" identifier [ identifier ]) = identifier) ;) (if_statement "if (mVar6 != 0) {\n          local_38 = 0;\n          iVar7 = M->n;\n          goto LAB_000586a5;\n        }" if (parenthesized_expression "(mVar6 != 0)" ( (binary_expression "mVar6 != 0" identifier != number_literal) )) (compound_statement "{\n          local_38 = 0;\n          iVar7 = M->n;\n          goto LAB_000586a5;\n        }" { (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "iVar7 = M->n;" (assignment_expression "iVar7 = M->n" identifier = (field_expression "M->n" identifier -> field_identifier)) ;) (goto_statement "goto LAB_000586a5;" goto statement_identifier ;) })) (if_statement "if (iVar7 + 1 < iVar3) {\n          pmVar5 = pmVar10 + iVar7 + 1;\n          *pmVar5 = *pmVar5 + 1;\n          mVar6 = *pmVar5;\n          local_38 = 0;\n          iVar7 = iVar7 + 2;\n          while (mVar6 == 0) {\n            if (iVar3 == iVar7) goto LAB_00058aa3;\n            mVar6 = pmVar10[iVar7] + 1;\n            pmVar10[iVar7] = mVar6;\n            iVar7 = iVar7 + 1;\n          }\n          goto LAB_00058ac0;\n        }" if (parenthesized_expression "(iVar7 + 1 < iVar3)" ( (binary_expression "iVar7 + 1 < iVar3" (binary_expression "iVar7 + 1" identifier + number_literal) < identifier) )) (compound_statement "{\n          pmVar5 = pmVar10 + iVar7 + 1;\n          *pmVar5 = *pmVar5 + 1;\n          mVar6 = *pmVar5;\n          local_38 = 0;\n          iVar7 = iVar7 + 2;\n          while (mVar6 == 0) {\n            if (iVar3 == iVar7) goto LAB_00058aa3;\n            mVar6 = pmVar10[iVar7] + 1;\n            pmVar10[iVar7] = mVar6;\n            iVar7 = iVar7 + 1;\n          }\n          goto LAB_00058ac0;\n        }" { (expression_statement "pmVar5 = pmVar10 + iVar7 + 1;" (assignment_expression "pmVar5 = pmVar10 + iVar7 + 1" identifier = (binary_expression "pmVar10 + iVar7 + 1" (binary_expression "pmVar10 + iVar7" identifier + identifier) + number_literal)) ;) (expression_statement "*pmVar5 = *pmVar5 + 1;" (assignment_expression "*pmVar5 = *pmVar5 + 1" (pointer_expression "*pmVar5" * identifier) = (binary_expression "*pmVar5 + 1" (pointer_expression "*pmVar5" * identifier) + number_literal)) ;) (expression_statement "mVar6 = *pmVar5;" (assignment_expression "mVar6 = *pmVar5" identifier = (pointer_expression "*pmVar5" * identifier)) ;) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "iVar7 = iVar7 + 2;" (assignment_expression "iVar7 = iVar7 + 2" identifier = (binary_expression "iVar7 + 2" identifier + number_literal)) ;) (while_statement "while (mVar6 == 0) {\n            if (iVar3 == iVar7) goto LAB_00058aa3;\n            mVar6 = pmVar10[iVar7] + 1;\n            pmVar10[iVar7] = mVar6;\n            iVar7 = iVar7 + 1;\n          }" while (parenthesized_expression "(mVar6 == 0)" ( (binary_expression "mVar6 == 0" identifier == number_literal) )) (compound_statement "{\n            if (iVar3 == iVar7) goto LAB_00058aa3;\n            mVar6 = pmVar10[iVar7] + 1;\n            pmVar10[iVar7] = mVar6;\n            iVar7 = iVar7 + 1;\n          }" { (if_statement "if (iVar3 == iVar7) goto LAB_00058aa3;" if (parenthesized_expression "(iVar3 == iVar7)" ( (binary_expression "iVar3 == iVar7" identifier == identifier) )) (goto_statement "goto LAB_00058aa3;" goto statement_identifier ;)) (expression_statement "mVar6 = pmVar10[iVar7] + 1;" (assignment_expression "mVar6 = pmVar10[iVar7] + 1" identifier = (binary_expression "pmVar10[iVar7] + 1" (subscript_expression "pmVar10[iVar7]" identifier [ identifier ]) + number_literal)) ;) (expression_statement "pmVar10[iVar7] = mVar6;" (assignment_expression "pmVar10[iVar7] = mVar6" (subscript_expression "pmVar10[iVar7]" identifier [ identifier ]) = identifier) ;) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) })) (goto_statement "goto LAB_00058ac0;" goto statement_identifier ;) })) })) (labeled_statement "LAB_00058aa3:\n      local_38 = 1;" statement_identifier : (expression_statement "local_38 = 1;" (assignment_expression "local_38 = 1" identifier = number_literal) ;)) (expression_statement "iVar7 = M->n;" (assignment_expression "iVar7 = M->n" identifier = (field_expression "M->n" identifier -> field_identifier)) ;) }))) })) (labeled_statement "LAB_000586a5:\n  pmVar1 = M->p[0][1];" statement_identifier : (expression_statement "pmVar1 = M->p[0][1];" (assignment_expression "pmVar1 = M->p[0][1]" identifier = (subscript_expression "M->p[0][1]" (subscript_expression "M->p[0]" (field_expression "M->p" identifier -> field_identifier) [ number_literal ]) [ number_literal ])) ;)) (if_statement "if (iVar7 < p) {\n    __gmpn_mul(tp,bp,p,pmVar1,iVar7);\n    iVar7 = M->n;\n  }\n  else {\n    __gmpn_mul(tp,pmVar1,iVar7,bp,p);\n    iVar7 = M->n;\n  }" if (parenthesized_expression "(iVar7 < p)" ( (binary_expression "iVar7 < p" identifier < identifier) )) (compound_statement "{\n    __gmpn_mul(tp,bp,p,pmVar1,iVar7);\n    iVar7 = M->n;\n  }" { (expression_statement "__gmpn_mul(tp,bp,p,pmVar1,iVar7);" (call_expression "__gmpn_mul(tp,bp,p,pmVar1,iVar7)" identifier (argument_list "(tp,bp,p,pmVar1,iVar7)" ( identifier , identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar7 = M->n;" (assignment_expression "iVar7 = M->n" identifier = (field_expression "M->n" identifier -> field_identifier)) ;) }) (else_clause "else {\n    __gmpn_mul(tp,pmVar1,iVar7,bp,p);\n    iVar7 = M->n;\n  }" else (compound_statement "{\n    __gmpn_mul(tp,pmVar1,iVar7,bp,p);\n    iVar7 = M->n;\n  }" { (expression_statement "__gmpn_mul(tp,pmVar1,iVar7,bp,p);" (call_expression "__gmpn_mul(tp,pmVar1,iVar7,bp,p)" identifier (argument_list "(tp,pmVar1,iVar7,bp,p)" ( identifier , identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar7 = M->n;" (assignment_expression "iVar7 = M->n" identifier = (field_expression "M->n" identifier -> field_identifier)) ;) }))) (expression_statement "iVar4 = iVar7 + p;" (assignment_expression "iVar4 = iVar7 + p" identifier = (binary_expression "iVar7 + p" identifier + identifier)) ;) (if_statement "if (iVar4 != 0) {\n    iVar7 = __gmpn_sub_n(ap,ap,tp,iVar4);\n    if (iVar7 != 0) {\n      if (n <= iVar4) {\nLAB_00058815:\n        local_38 = local_38 - 1;\n        iVar7 = M->n;\n        goto LAB_000586d8;\n      }\n      mVar6 = ap[iVar4];\n      ap[iVar4] = mVar6 - 1;\n      if (mVar6 == 0) {\n        if (n <= iVar4 + 1) goto LAB_00058815;\n        mVar6 = ap[iVar4 + 1];\n        ap[iVar4 + 1] = mVar6 - 1;\n        iVar7 = iVar4 + 2;\n        while (mVar6 == 0) {\n          if (iVar7 == n) goto LAB_00058815;\n          mVar6 = ap[iVar7];\n          ap[iVar7] = mVar6 - 1;\n          iVar7 = iVar7 + 1;\n        }\n      }\n    }\n    iVar7 = M->n;\n  }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar7 = __gmpn_sub_n(ap,ap,tp,iVar4);\n    if (iVar7 != 0) {\n      if (n <= iVar4) {\nLAB_00058815:\n        local_38 = local_38 - 1;\n        iVar7 = M->n;\n        goto LAB_000586d8;\n      }\n      mVar6 = ap[iVar4];\n      ap[iVar4] = mVar6 - 1;\n      if (mVar6 == 0) {\n        if (n <= iVar4 + 1) goto LAB_00058815;\n        mVar6 = ap[iVar4 + 1];\n        ap[iVar4 + 1] = mVar6 - 1;\n        iVar7 = iVar4 + 2;\n        while (mVar6 == 0) {\n          if (iVar7 == n) goto LAB_00058815;\n          mVar6 = ap[iVar7];\n          ap[iVar7] = mVar6 - 1;\n          iVar7 = iVar7 + 1;\n        }\n      }\n    }\n    iVar7 = M->n;\n  }" { (expression_statement "iVar7 = __gmpn_sub_n(ap,ap,tp,iVar4);" (assignment_expression "iVar7 = __gmpn_sub_n(ap,ap,tp,iVar4)" identifier = (call_expression "__gmpn_sub_n(ap,ap,tp,iVar4)" identifier (argument_list "(ap,ap,tp,iVar4)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar7 != 0) {\n      if (n <= iVar4) {\nLAB_00058815:\n        local_38 = local_38 - 1;\n        iVar7 = M->n;\n        goto LAB_000586d8;\n      }\n      mVar6 = ap[iVar4];\n      ap[iVar4] = mVar6 - 1;\n      if (mVar6 == 0) {\n        if (n <= iVar4 + 1) goto LAB_00058815;\n        mVar6 = ap[iVar4 + 1];\n        ap[iVar4 + 1] = mVar6 - 1;\n        iVar7 = iVar4 + 2;\n        while (mVar6 == 0) {\n          if (iVar7 == n) goto LAB_00058815;\n          mVar6 = ap[iVar7];\n          ap[iVar7] = mVar6 - 1;\n          iVar7 = iVar7 + 1;\n        }\n      }\n    }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n      if (n <= iVar4) {\nLAB_00058815:\n        local_38 = local_38 - 1;\n        iVar7 = M->n;\n        goto LAB_000586d8;\n      }\n      mVar6 = ap[iVar4];\n      ap[iVar4] = mVar6 - 1;\n      if (mVar6 == 0) {\n        if (n <= iVar4 + 1) goto LAB_00058815;\n        mVar6 = ap[iVar4 + 1];\n        ap[iVar4 + 1] = mVar6 - 1;\n        iVar7 = iVar4 + 2;\n        while (mVar6 == 0) {\n          if (iVar7 == n) goto LAB_00058815;\n          mVar6 = ap[iVar7];\n          ap[iVar7] = mVar6 - 1;\n          iVar7 = iVar7 + 1;\n        }\n      }\n    }" { (if_statement "if (n <= iVar4) {\nLAB_00058815:\n        local_38 = local_38 - 1;\n        iVar7 = M->n;\n        goto LAB_000586d8;\n      }" if (parenthesized_expression "(n <= iVar4)" ( (binary_expression "n <= iVar4" identifier <= identifier) )) (compound_statement "{\nLAB_00058815:\n        local_38 = local_38 - 1;\n        iVar7 = M->n;\n        goto LAB_000586d8;\n      }" { (labeled_statement "LAB_00058815:\n        local_38 = local_38 - 1;" statement_identifier : (expression_statement "local_38 = local_38 - 1;" (assignment_expression "local_38 = local_38 - 1" identifier = (binary_expression "local_38 - 1" identifier - number_literal)) ;)) (expression_statement "iVar7 = M->n;" (assignment_expression "iVar7 = M->n" identifier = (field_expression "M->n" identifier -> field_identifier)) ;) (goto_statement "goto LAB_000586d8;" goto statement_identifier ;) })) (expression_statement "mVar6 = ap[iVar4];" (assignment_expression "mVar6 = ap[iVar4]" identifier = (subscript_expression "ap[iVar4]" identifier [ identifier ])) ;) (expression_statement "ap[iVar4] = mVar6 - 1;" (assignment_expression "ap[iVar4] = mVar6 - 1" (subscript_expression "ap[iVar4]" identifier [ identifier ]) = (binary_expression "mVar6 - 1" identifier - number_literal)) ;) (if_statement "if (mVar6 == 0) {\n        if (n <= iVar4 + 1) goto LAB_00058815;\n        mVar6 = ap[iVar4 + 1];\n        ap[iVar4 + 1] = mVar6 - 1;\n        iVar7 = iVar4 + 2;\n        while (mVar6 == 0) {\n          if (iVar7 == n) goto LAB_00058815;\n          mVar6 = ap[iVar7];\n          ap[iVar7] = mVar6 - 1;\n          iVar7 = iVar7 + 1;\n        }\n      }" if (parenthesized_expression "(mVar6 == 0)" ( (binary_expression "mVar6 == 0" identifier == number_literal) )) (compound_statement "{\n        if (n <= iVar4 + 1) goto LAB_00058815;\n        mVar6 = ap[iVar4 + 1];\n        ap[iVar4 + 1] = mVar6 - 1;\n        iVar7 = iVar4 + 2;\n        while (mVar6 == 0) {\n          if (iVar7 == n) goto LAB_00058815;\n          mVar6 = ap[iVar7];\n          ap[iVar7] = mVar6 - 1;\n          iVar7 = iVar7 + 1;\n        }\n      }" { (if_statement "if (n <= iVar4 + 1) goto LAB_00058815;" if (parenthesized_expression "(n <= iVar4 + 1)" ( (binary_expression "n <= iVar4 + 1" identifier <= (binary_expression "iVar4 + 1" identifier + number_literal)) )) (goto_statement "goto LAB_00058815;" goto statement_identifier ;)) (expression_statement "mVar6 = ap[iVar4 + 1];" (assignment_expression "mVar6 = ap[iVar4 + 1]" identifier = (subscript_expression "ap[iVar4 + 1]" identifier [ (binary_expression "iVar4 + 1" identifier + number_literal) ])) ;) (expression_statement "ap[iVar4 + 1] = mVar6 - 1;" (assignment_expression "ap[iVar4 + 1] = mVar6 - 1" (subscript_expression "ap[iVar4 + 1]" identifier [ (binary_expression "iVar4 + 1" identifier + number_literal) ]) = (binary_expression "mVar6 - 1" identifier - number_literal)) ;) (expression_statement "iVar7 = iVar4 + 2;" (assignment_expression "iVar7 = iVar4 + 2" identifier = (binary_expression "iVar4 + 2" identifier + number_literal)) ;) (while_statement "while (mVar6 == 0) {\n          if (iVar7 == n) goto LAB_00058815;\n          mVar6 = ap[iVar7];\n          ap[iVar7] = mVar6 - 1;\n          iVar7 = iVar7 + 1;\n        }" while (parenthesized_expression "(mVar6 == 0)" ( (binary_expression "mVar6 == 0" identifier == number_literal) )) (compound_statement "{\n          if (iVar7 == n) goto LAB_00058815;\n          mVar6 = ap[iVar7];\n          ap[iVar7] = mVar6 - 1;\n          iVar7 = iVar7 + 1;\n        }" { (if_statement "if (iVar7 == n) goto LAB_00058815;" if (parenthesized_expression "(iVar7 == n)" ( (binary_expression "iVar7 == n" identifier == identifier) )) (goto_statement "goto LAB_00058815;" goto statement_identifier ;)) (expression_statement "mVar6 = ap[iVar7];" (assignment_expression "mVar6 = ap[iVar7]" identifier = (subscript_expression "ap[iVar7]" identifier [ identifier ])) ;) (expression_statement "ap[iVar7] = mVar6 - 1;" (assignment_expression "ap[iVar7] = mVar6 - 1" (subscript_expression "ap[iVar7]" identifier [ identifier ]) = (binary_expression "mVar6 - 1" identifier - number_literal)) ;) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) })) })) })) (expression_statement "iVar7 = M->n;" (assignment_expression "iVar7 = M->n" identifier = (field_expression "M->n" identifier -> field_identifier)) ;) })) (labeled_statement "LAB_000586d8:\n  pmVar1 = M->p[0][0];" statement_identifier : (expression_statement "pmVar1 = M->p[0][0];" (assignment_expression "pmVar1 = M->p[0][0]" identifier = (subscript_expression "M->p[0][0]" (subscript_expression "M->p[0]" (field_expression "M->p" identifier -> field_identifier) [ number_literal ]) [ number_literal ])) ;)) (if_statement "if (iVar7 < p) {\n    __gmpn_mul(tp,bp,p,pmVar1,iVar7);\n  }\n  else {\n    __gmpn_mul(tp,pmVar1,iVar7,bp,p);\n  }" if (parenthesized_expression "(iVar7 < p)" ( (binary_expression "iVar7 < p" identifier < identifier) )) (compound_statement "{\n    __gmpn_mul(tp,bp,p,pmVar1,iVar7);\n  }" { (expression_statement "__gmpn_mul(tp,bp,p,pmVar1,iVar7);" (call_expression "__gmpn_mul(tp,bp,p,pmVar1,iVar7)" identifier (argument_list "(tp,bp,p,pmVar1,iVar7)" ( identifier , identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n    __gmpn_mul(tp,pmVar1,iVar7,bp,p);\n  }" else (compound_statement "{\n    __gmpn_mul(tp,pmVar1,iVar7,bp,p);\n  }" { (expression_statement "__gmpn_mul(tp,pmVar1,iVar7,bp,p);" (call_expression "__gmpn_mul(tp,pmVar1,iVar7,bp,p)" identifier (argument_list "(tp,pmVar1,iVar7,bp,p)" ( identifier , identifier , identifier , identifier , identifier ))) ;) }))) (expression_statement "(**(code **)(puVar2 + 0x28))(bp,tp,p);" (call_expression "(**(code **)(puVar2 + 0x28))(bp,tp,p)" (parenthesized_expression "(**(code **)(puVar2 + 0x28))" ( (pointer_expression "**(code **)(puVar2 + 0x28)" * (pointer_expression "*(code **)(puVar2 + 0x28)" * (cast_expression "(code **)(puVar2 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar2 + 0x28)" ( (binary_expression "puVar2 + 0x28" identifier + number_literal) ))))) )) (argument_list "(bp,tp,p)" ( identifier , identifier , identifier ))) ;) (expression_statement "iVar7 = M->n;" (assignment_expression "iVar7 = M->n" identifier = (field_expression "M->n" identifier -> field_identifier)) ;) (expression_statement "uVar11 = local_38;" (assignment_expression "uVar11 = local_38" identifier = identifier) ;) (if_statement "if (iVar7 == 0) {\n    uVar9 = 0;\n    if (p != 0) {\nLAB_00058955:\n      uVar8 = 0;\n      uVar9 = 0xffffffff;\n      uVar11 = 0xffffffff;\nLAB_0005895f:\n      iVar7 = __gmpn_sub_n(bp,bp,prodp,p);\n      if (iVar7 != 0) {\n        if (n <= p) goto LAB_0005872a;\n        mVar6 = bp[p];\n        bp[p] = mVar6 - 1;\n        if (mVar6 == 0) {\n          if (n <= p + 1) goto LAB_0005872a;\n          mVar6 = bp[p + 1];\n          bp[p + 1] = mVar6 - 1;\n          iVar7 = p + 2;\n          while (mVar6 == 0) {\n            if (iVar7 == n) goto LAB_0005872a;\n            mVar6 = bp[iVar7];\n            bp[iVar7] = mVar6 - 1;\n            iVar7 = iVar7 + 1;\n          }\n        }\n      }\n      uVar9 = uVar8;\n      uVar11 = local_38 | uVar8;\n    }\n  }\n  else {\n    pmVar10 = bp + p;\n    iVar4 = __gmpn_add_n(pmVar10,pmVar10,tp + p,iVar7);\n    if (iVar4 != 0) {\n      if (iVar7 < iVar3) {\n        pmVar5 = pmVar10 + iVar7;\n        *pmVar5 = *pmVar5 + 1;\n        if (*pmVar5 == 0) {\n          if (iVar3 <= iVar7 + 1) goto LAB_000588e3;\n          pmVar5 = pmVar10 + iVar7 + 1;\n          *pmVar5 = *pmVar5 + 1;\n          mVar6 = *pmVar5;\n          iVar7 = iVar7 + 2;\n          while (mVar6 == 0) {\n            if (iVar3 == iVar7) goto LAB_000588e3;\n            mVar6 = pmVar10[iVar7] + 1;\n            pmVar10[iVar7] = mVar6;\n            iVar7 = iVar7 + 1;\n          }\n        }\n        goto LAB_00058940;\n      }\nLAB_000588e3:\n      uVar9 = 1;\n      p = p + M->n;\n      if (p == 0) goto LAB_000588f5;\n      uVar9 = 0;\n      uVar8 = 1;\n      goto LAB_0005895f;\n    }\nLAB_00058940:\n    uVar9 = 0;\n    p = p + M->n;\n    if (p != 0) goto LAB_00058955;\n  }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar9 = 0;\n    if (p != 0) {\nLAB_00058955:\n      uVar8 = 0;\n      uVar9 = 0xffffffff;\n      uVar11 = 0xffffffff;\nLAB_0005895f:\n      iVar7 = __gmpn_sub_n(bp,bp,prodp,p);\n      if (iVar7 != 0) {\n        if (n <= p) goto LAB_0005872a;\n        mVar6 = bp[p];\n        bp[p] = mVar6 - 1;\n        if (mVar6 == 0) {\n          if (n <= p + 1) goto LAB_0005872a;\n          mVar6 = bp[p + 1];\n          bp[p + 1] = mVar6 - 1;\n          iVar7 = p + 2;\n          while (mVar6 == 0) {\n            if (iVar7 == n) goto LAB_0005872a;\n            mVar6 = bp[iVar7];\n            bp[iVar7] = mVar6 - 1;\n            iVar7 = iVar7 + 1;\n          }\n        }\n      }\n      uVar9 = uVar8;\n      uVar11 = local_38 | uVar8;\n    }\n  }" { (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) (if_statement "if (p != 0) {\nLAB_00058955:\n      uVar8 = 0;\n      uVar9 = 0xffffffff;\n      uVar11 = 0xffffffff;\nLAB_0005895f:\n      iVar7 = __gmpn_sub_n(bp,bp,prodp,p);\n      if (iVar7 != 0) {\n        if (n <= p) goto LAB_0005872a;\n        mVar6 = bp[p];\n        bp[p] = mVar6 - 1;\n        if (mVar6 == 0) {\n          if (n <= p + 1) goto LAB_0005872a;\n          mVar6 = bp[p + 1];\n          bp[p + 1] = mVar6 - 1;\n          iVar7 = p + 2;\n          while (mVar6 == 0) {\n            if (iVar7 == n) goto LAB_0005872a;\n            mVar6 = bp[iVar7];\n            bp[iVar7] = mVar6 - 1;\n            iVar7 = iVar7 + 1;\n          }\n        }\n      }\n      uVar9 = uVar8;\n      uVar11 = local_38 | uVar8;\n    }" if (parenthesized_expression "(p != 0)" ( (binary_expression "p != 0" identifier != number_literal) )) (compound_statement "{\nLAB_00058955:\n      uVar8 = 0;\n      uVar9 = 0xffffffff;\n      uVar11 = 0xffffffff;\nLAB_0005895f:\n      iVar7 = __gmpn_sub_n(bp,bp,prodp,p);\n      if (iVar7 != 0) {\n        if (n <= p) goto LAB_0005872a;\n        mVar6 = bp[p];\n        bp[p] = mVar6 - 1;\n        if (mVar6 == 0) {\n          if (n <= p + 1) goto LAB_0005872a;\n          mVar6 = bp[p + 1];\n          bp[p + 1] = mVar6 - 1;\n          iVar7 = p + 2;\n          while (mVar6 == 0) {\n            if (iVar7 == n) goto LAB_0005872a;\n            mVar6 = bp[iVar7];\n            bp[iVar7] = mVar6 - 1;\n            iVar7 = iVar7 + 1;\n          }\n        }\n      }\n      uVar9 = uVar8;\n      uVar11 = local_38 | uVar8;\n    }" { (labeled_statement "LAB_00058955:\n      uVar8 = 0;" statement_identifier : (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;)) (expression_statement "uVar9 = 0xffffffff;" (assignment_expression "uVar9 = 0xffffffff" identifier = number_literal) ;) (expression_statement "uVar11 = 0xffffffff;" (assignment_expression "uVar11 = 0xffffffff" identifier = number_literal) ;) (labeled_statement "LAB_0005895f:\n      iVar7 = __gmpn_sub_n(bp,bp,prodp,p);" statement_identifier : (expression_statement "iVar7 = __gmpn_sub_n(bp,bp,prodp,p);" (assignment_expression "iVar7 = __gmpn_sub_n(bp,bp,prodp,p)" identifier = (call_expression "__gmpn_sub_n(bp,bp,prodp,p)" identifier (argument_list "(bp,bp,prodp,p)" ( identifier , identifier , identifier , identifier )))) ;)) (if_statement "if (iVar7 != 0) {\n        if (n <= p) goto LAB_0005872a;\n        mVar6 = bp[p];\n        bp[p] = mVar6 - 1;\n        if (mVar6 == 0) {\n          if (n <= p + 1) goto LAB_0005872a;\n          mVar6 = bp[p + 1];\n          bp[p + 1] = mVar6 - 1;\n          iVar7 = p + 2;\n          while (mVar6 == 0) {\n            if (iVar7 == n) goto LAB_0005872a;\n            mVar6 = bp[iVar7];\n            bp[iVar7] = mVar6 - 1;\n            iVar7 = iVar7 + 1;\n          }\n        }\n      }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n        if (n <= p) goto LAB_0005872a;\n        mVar6 = bp[p];\n        bp[p] = mVar6 - 1;\n        if (mVar6 == 0) {\n          if (n <= p + 1) goto LAB_0005872a;\n          mVar6 = bp[p + 1];\n          bp[p + 1] = mVar6 - 1;\n          iVar7 = p + 2;\n          while (mVar6 == 0) {\n            if (iVar7 == n) goto LAB_0005872a;\n            mVar6 = bp[iVar7];\n            bp[iVar7] = mVar6 - 1;\n            iVar7 = iVar7 + 1;\n          }\n        }\n      }" { (if_statement "if (n <= p) goto LAB_0005872a;" if (parenthesized_expression "(n <= p)" ( (binary_expression "n <= p" identifier <= identifier) )) (goto_statement "goto LAB_0005872a;" goto statement_identifier ;)) (expression_statement "mVar6 = bp[p];" (assignment_expression "mVar6 = bp[p]" identifier = (subscript_expression "bp[p]" identifier [ identifier ])) ;) (expression_statement "bp[p] = mVar6 - 1;" (assignment_expression "bp[p] = mVar6 - 1" (subscript_expression "bp[p]" identifier [ identifier ]) = (binary_expression "mVar6 - 1" identifier - number_literal)) ;) (if_statement "if (mVar6 == 0) {\n          if (n <= p + 1) goto LAB_0005872a;\n          mVar6 = bp[p + 1];\n          bp[p + 1] = mVar6 - 1;\n          iVar7 = p + 2;\n          while (mVar6 == 0) {\n            if (iVar7 == n) goto LAB_0005872a;\n            mVar6 = bp[iVar7];\n            bp[iVar7] = mVar6 - 1;\n            iVar7 = iVar7 + 1;\n          }\n        }" if (parenthesized_expression "(mVar6 == 0)" ( (binary_expression "mVar6 == 0" identifier == number_literal) )) (compound_statement "{\n          if (n <= p + 1) goto LAB_0005872a;\n          mVar6 = bp[p + 1];\n          bp[p + 1] = mVar6 - 1;\n          iVar7 = p + 2;\n          while (mVar6 == 0) {\n            if (iVar7 == n) goto LAB_0005872a;\n            mVar6 = bp[iVar7];\n            bp[iVar7] = mVar6 - 1;\n            iVar7 = iVar7 + 1;\n          }\n        }" { (if_statement "if (n <= p + 1) goto LAB_0005872a;" if (parenthesized_expression "(n <= p + 1)" ( (binary_expression "n <= p + 1" identifier <= (binary_expression "p + 1" identifier + number_literal)) )) (goto_statement "goto LAB_0005872a;" goto statement_identifier ;)) (expression_statement "mVar6 = bp[p + 1];" (assignment_expression "mVar6 = bp[p + 1]" identifier = (subscript_expression "bp[p + 1]" identifier [ (binary_expression "p + 1" identifier + number_literal) ])) ;) (expression_statement "bp[p + 1] = mVar6 - 1;" (assignment_expression "bp[p + 1] = mVar6 - 1" (subscript_expression "bp[p + 1]" identifier [ (binary_expression "p + 1" identifier + number_literal) ]) = (binary_expression "mVar6 - 1" identifier - number_literal)) ;) (expression_statement "iVar7 = p + 2;" (assignment_expression "iVar7 = p + 2" identifier = (binary_expression "p + 2" identifier + number_literal)) ;) (while_statement "while (mVar6 == 0) {\n            if (iVar7 == n) goto LAB_0005872a;\n            mVar6 = bp[iVar7];\n            bp[iVar7] = mVar6 - 1;\n            iVar7 = iVar7 + 1;\n          }" while (parenthesized_expression "(mVar6 == 0)" ( (binary_expression "mVar6 == 0" identifier == number_literal) )) (compound_statement "{\n            if (iVar7 == n) goto LAB_0005872a;\n            mVar6 = bp[iVar7];\n            bp[iVar7] = mVar6 - 1;\n            iVar7 = iVar7 + 1;\n          }" { (if_statement "if (iVar7 == n) goto LAB_0005872a;" if (parenthesized_expression "(iVar7 == n)" ( (binary_expression "iVar7 == n" identifier == identifier) )) (goto_statement "goto LAB_0005872a;" goto statement_identifier ;)) (expression_statement "mVar6 = bp[iVar7];" (assignment_expression "mVar6 = bp[iVar7]" identifier = (subscript_expression "bp[iVar7]" identifier [ identifier ])) ;) (expression_statement "bp[iVar7] = mVar6 - 1;" (assignment_expression "bp[iVar7] = mVar6 - 1" (subscript_expression "bp[iVar7]" identifier [ identifier ]) = (binary_expression "mVar6 - 1" identifier - number_literal)) ;) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) })) })) })) (expression_statement "uVar9 = uVar8;" (assignment_expression "uVar9 = uVar8" identifier = identifier) ;) (expression_statement "uVar11 = local_38 | uVar8;" (assignment_expression "uVar11 = local_38 | uVar8" identifier = (binary_expression "local_38 | uVar8" identifier | identifier)) ;) })) }) (else_clause "else {\n    pmVar10 = bp + p;\n    iVar4 = __gmpn_add_n(pmVar10,pmVar10,tp + p,iVar7);\n    if (iVar4 != 0) {\n      if (iVar7 < iVar3) {\n        pmVar5 = pmVar10 + iVar7;\n        *pmVar5 = *pmVar5 + 1;\n        if (*pmVar5 == 0) {\n          if (iVar3 <= iVar7 + 1) goto LAB_000588e3;\n          pmVar5 = pmVar10 + iVar7 + 1;\n          *pmVar5 = *pmVar5 + 1;\n          mVar6 = *pmVar5;\n          iVar7 = iVar7 + 2;\n          while (mVar6 == 0) {\n            if (iVar3 == iVar7) goto LAB_000588e3;\n            mVar6 = pmVar10[iVar7] + 1;\n            pmVar10[iVar7] = mVar6;\n            iVar7 = iVar7 + 1;\n          }\n        }\n        goto LAB_00058940;\n      }\nLAB_000588e3:\n      uVar9 = 1;\n      p = p + M->n;\n      if (p == 0) goto LAB_000588f5;\n      uVar9 = 0;\n      uVar8 = 1;\n      goto LAB_0005895f;\n    }\nLAB_00058940:\n    uVar9 = 0;\n    p = p + M->n;\n    if (p != 0) goto LAB_00058955;\n  }" else (compound_statement "{\n    pmVar10 = bp + p;\n    iVar4 = __gmpn_add_n(pmVar10,pmVar10,tp + p,iVar7);\n    if (iVar4 != 0) {\n      if (iVar7 < iVar3) {\n        pmVar5 = pmVar10 + iVar7;\n        *pmVar5 = *pmVar5 + 1;\n        if (*pmVar5 == 0) {\n          if (iVar3 <= iVar7 + 1) goto LAB_000588e3;\n          pmVar5 = pmVar10 + iVar7 + 1;\n          *pmVar5 = *pmVar5 + 1;\n          mVar6 = *pmVar5;\n          iVar7 = iVar7 + 2;\n          while (mVar6 == 0) {\n            if (iVar3 == iVar7) goto LAB_000588e3;\n            mVar6 = pmVar10[iVar7] + 1;\n            pmVar10[iVar7] = mVar6;\n            iVar7 = iVar7 + 1;\n          }\n        }\n        goto LAB_00058940;\n      }\nLAB_000588e3:\n      uVar9 = 1;\n      p = p + M->n;\n      if (p == 0) goto LAB_000588f5;\n      uVar9 = 0;\n      uVar8 = 1;\n      goto LAB_0005895f;\n    }\nLAB_00058940:\n    uVar9 = 0;\n    p = p + M->n;\n    if (p != 0) goto LAB_00058955;\n  }" { (expression_statement "pmVar10 = bp + p;" (assignment_expression "pmVar10 = bp + p" identifier = (binary_expression "bp + p" identifier + identifier)) ;) (expression_statement "iVar4 = __gmpn_add_n(pmVar10,pmVar10,tp + p,iVar7);" (assignment_expression "iVar4 = __gmpn_add_n(pmVar10,pmVar10,tp + p,iVar7)" identifier = (call_expression "__gmpn_add_n(pmVar10,pmVar10,tp + p,iVar7)" identifier (argument_list "(pmVar10,pmVar10,tp + p,iVar7)" ( identifier , identifier , (binary_expression "tp + p" identifier + identifier) , identifier )))) ;) (if_statement "if (iVar4 != 0) {\n      if (iVar7 < iVar3) {\n        pmVar5 = pmVar10 + iVar7;\n        *pmVar5 = *pmVar5 + 1;\n        if (*pmVar5 == 0) {\n          if (iVar3 <= iVar7 + 1) goto LAB_000588e3;\n          pmVar5 = pmVar10 + iVar7 + 1;\n          *pmVar5 = *pmVar5 + 1;\n          mVar6 = *pmVar5;\n          iVar7 = iVar7 + 2;\n          while (mVar6 == 0) {\n            if (iVar3 == iVar7) goto LAB_000588e3;\n            mVar6 = pmVar10[iVar7] + 1;\n            pmVar10[iVar7] = mVar6;\n            iVar7 = iVar7 + 1;\n          }\n        }\n        goto LAB_00058940;\n      }\nLAB_000588e3:\n      uVar9 = 1;\n      p = p + M->n;\n      if (p == 0) goto LAB_000588f5;\n      uVar9 = 0;\n      uVar8 = 1;\n      goto LAB_0005895f;\n    }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n      if (iVar7 < iVar3) {\n        pmVar5 = pmVar10 + iVar7;\n        *pmVar5 = *pmVar5 + 1;\n        if (*pmVar5 == 0) {\n          if (iVar3 <= iVar7 + 1) goto LAB_000588e3;\n          pmVar5 = pmVar10 + iVar7 + 1;\n          *pmVar5 = *pmVar5 + 1;\n          mVar6 = *pmVar5;\n          iVar7 = iVar7 + 2;\n          while (mVar6 == 0) {\n            if (iVar3 == iVar7) goto LAB_000588e3;\n            mVar6 = pmVar10[iVar7] + 1;\n            pmVar10[iVar7] = mVar6;\n            iVar7 = iVar7 + 1;\n          }\n        }\n        goto LAB_00058940;\n      }\nLAB_000588e3:\n      uVar9 = 1;\n      p = p + M->n;\n      if (p == 0) goto LAB_000588f5;\n      uVar9 = 0;\n      uVar8 = 1;\n      goto LAB_0005895f;\n    }" { (if_statement "if (iVar7 < iVar3) {\n        pmVar5 = pmVar10 + iVar7;\n        *pmVar5 = *pmVar5 + 1;\n        if (*pmVar5 == 0) {\n          if (iVar3 <= iVar7 + 1) goto LAB_000588e3;\n          pmVar5 = pmVar10 + iVar7 + 1;\n          *pmVar5 = *pmVar5 + 1;\n          mVar6 = *pmVar5;\n          iVar7 = iVar7 + 2;\n          while (mVar6 == 0) {\n            if (iVar3 == iVar7) goto LAB_000588e3;\n            mVar6 = pmVar10[iVar7] + 1;\n            pmVar10[iVar7] = mVar6;\n            iVar7 = iVar7 + 1;\n          }\n        }\n        goto LAB_00058940;\n      }" if (parenthesized_expression "(iVar7 < iVar3)" ( (binary_expression "iVar7 < iVar3" identifier < identifier) )) (compound_statement "{\n        pmVar5 = pmVar10 + iVar7;\n        *pmVar5 = *pmVar5 + 1;\n        if (*pmVar5 == 0) {\n          if (iVar3 <= iVar7 + 1) goto LAB_000588e3;\n          pmVar5 = pmVar10 + iVar7 + 1;\n          *pmVar5 = *pmVar5 + 1;\n          mVar6 = *pmVar5;\n          iVar7 = iVar7 + 2;\n          while (mVar6 == 0) {\n            if (iVar3 == iVar7) goto LAB_000588e3;\n            mVar6 = pmVar10[iVar7] + 1;\n            pmVar10[iVar7] = mVar6;\n            iVar7 = iVar7 + 1;\n          }\n        }\n        goto LAB_00058940;\n      }" { (expression_statement "pmVar5 = pmVar10 + iVar7;" (assignment_expression "pmVar5 = pmVar10 + iVar7" identifier = (binary_expression "pmVar10 + iVar7" identifier + identifier)) ;) (expression_statement "*pmVar5 = *pmVar5 + 1;" (assignment_expression "*pmVar5 = *pmVar5 + 1" (pointer_expression "*pmVar5" * identifier) = (binary_expression "*pmVar5 + 1" (pointer_expression "*pmVar5" * identifier) + number_literal)) ;) (if_statement "if (*pmVar5 == 0) {\n          if (iVar3 <= iVar7 + 1) goto LAB_000588e3;\n          pmVar5 = pmVar10 + iVar7 + 1;\n          *pmVar5 = *pmVar5 + 1;\n          mVar6 = *pmVar5;\n          iVar7 = iVar7 + 2;\n          while (mVar6 == 0) {\n            if (iVar3 == iVar7) goto LAB_000588e3;\n            mVar6 = pmVar10[iVar7] + 1;\n            pmVar10[iVar7] = mVar6;\n            iVar7 = iVar7 + 1;\n          }\n        }" if (parenthesized_expression "(*pmVar5 == 0)" ( (binary_expression "*pmVar5 == 0" (pointer_expression "*pmVar5" * identifier) == number_literal) )) (compound_statement "{\n          if (iVar3 <= iVar7 + 1) goto LAB_000588e3;\n          pmVar5 = pmVar10 + iVar7 + 1;\n          *pmVar5 = *pmVar5 + 1;\n          mVar6 = *pmVar5;\n          iVar7 = iVar7 + 2;\n          while (mVar6 == 0) {\n            if (iVar3 == iVar7) goto LAB_000588e3;\n            mVar6 = pmVar10[iVar7] + 1;\n            pmVar10[iVar7] = mVar6;\n            iVar7 = iVar7 + 1;\n          }\n        }" { (if_statement "if (iVar3 <= iVar7 + 1) goto LAB_000588e3;" if (parenthesized_expression "(iVar3 <= iVar7 + 1)" ( (binary_expression "iVar3 <= iVar7 + 1" identifier <= (binary_expression "iVar7 + 1" identifier + number_literal)) )) (goto_statement "goto LAB_000588e3;" goto statement_identifier ;)) (expression_statement "pmVar5 = pmVar10 + iVar7 + 1;" (assignment_expression "pmVar5 = pmVar10 + iVar7 + 1" identifier = (binary_expression "pmVar10 + iVar7 + 1" (binary_expression "pmVar10 + iVar7" identifier + identifier) + number_literal)) ;) (expression_statement "*pmVar5 = *pmVar5 + 1;" (assignment_expression "*pmVar5 = *pmVar5 + 1" (pointer_expression "*pmVar5" * identifier) = (binary_expression "*pmVar5 + 1" (pointer_expression "*pmVar5" * identifier) + number_literal)) ;) (expression_statement "mVar6 = *pmVar5;" (assignment_expression "mVar6 = *pmVar5" identifier = (pointer_expression "*pmVar5" * identifier)) ;) (expression_statement "iVar7 = iVar7 + 2;" (assignment_expression "iVar7 = iVar7 + 2" identifier = (binary_expression "iVar7 + 2" identifier + number_literal)) ;) (while_statement "while (mVar6 == 0) {\n            if (iVar3 == iVar7) goto LAB_000588e3;\n            mVar6 = pmVar10[iVar7] + 1;\n            pmVar10[iVar7] = mVar6;\n            iVar7 = iVar7 + 1;\n          }" while (parenthesized_expression "(mVar6 == 0)" ( (binary_expression "mVar6 == 0" identifier == number_literal) )) (compound_statement "{\n            if (iVar3 == iVar7) goto LAB_000588e3;\n            mVar6 = pmVar10[iVar7] + 1;\n            pmVar10[iVar7] = mVar6;\n            iVar7 = iVar7 + 1;\n          }" { (if_statement "if (iVar3 == iVar7) goto LAB_000588e3;" if (parenthesized_expression "(iVar3 == iVar7)" ( (binary_expression "iVar3 == iVar7" identifier == identifier) )) (goto_statement "goto LAB_000588e3;" goto statement_identifier ;)) (expression_statement "mVar6 = pmVar10[iVar7] + 1;" (assignment_expression "mVar6 = pmVar10[iVar7] + 1" identifier = (binary_expression "pmVar10[iVar7] + 1" (subscript_expression "pmVar10[iVar7]" identifier [ identifier ]) + number_literal)) ;) (expression_statement "pmVar10[iVar7] = mVar6;" (assignment_expression "pmVar10[iVar7] = mVar6" (subscript_expression "pmVar10[iVar7]" identifier [ identifier ]) = identifier) ;) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) })) })) (goto_statement "goto LAB_00058940;" goto statement_identifier ;) })) (labeled_statement "LAB_000588e3:\n      uVar9 = 1;" statement_identifier : (expression_statement "uVar9 = 1;" (assignment_expression "uVar9 = 1" identifier = number_literal) ;)) (expression_statement "p = p + M->n;" (assignment_expression "p = p + M->n" identifier = (binary_expression "p + M->n" identifier + (field_expression "M->n" identifier -> field_identifier))) ;) (if_statement "if (p == 0) goto LAB_000588f5;" if (parenthesized_expression "(p == 0)" ( (binary_expression "p == 0" identifier == number_literal) )) (goto_statement "goto LAB_000588f5;" goto statement_identifier ;)) (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) (expression_statement "uVar8 = 1;" (assignment_expression "uVar8 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_0005895f;" goto statement_identifier ;) })) (labeled_statement "LAB_00058940:\n    uVar9 = 0;" statement_identifier : (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;)) (expression_statement "p = p + M->n;" (assignment_expression "p = p + M->n" identifier = (binary_expression "p + M->n" identifier + (field_expression "M->n" identifier -> field_identifier))) ;) (if_statement "if (p != 0) goto LAB_00058955;" if (parenthesized_expression "(p != 0)" ( (binary_expression "p != 0" identifier != number_literal) )) (goto_statement "goto LAB_00058955;" goto statement_identifier ;)) }))) (labeled_statement "LAB_0005872a:\n  if (uVar11 == 0) {\n    if (ap[n + 0x3fffffff] == 0) {\n      n = n - (uint)(bp[n + 0x3fffffff] == 0);\n    }\n    return n;\n  }" statement_identifier : (if_statement "if (uVar11 == 0) {\n    if (ap[n + 0x3fffffff] == 0) {\n      n = n - (uint)(bp[n + 0x3fffffff] == 0);\n    }\n    return n;\n  }" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (compound_statement "{\n    if (ap[n + 0x3fffffff] == 0) {\n      n = n - (uint)(bp[n + 0x3fffffff] == 0);\n    }\n    return n;\n  }" { (if_statement "if (ap[n + 0x3fffffff] == 0) {\n      n = n - (uint)(bp[n + 0x3fffffff] == 0);\n    }" if (parenthesized_expression "(ap[n + 0x3fffffff] == 0)" ( (binary_expression "ap[n + 0x3fffffff] == 0" (subscript_expression "ap[n + 0x3fffffff]" identifier [ (binary_expression "n + 0x3fffffff" identifier + number_literal) ]) == number_literal) )) (compound_statement "{\n      n = n - (uint)(bp[n + 0x3fffffff] == 0);\n    }" { (expression_statement "n = n - (uint)(bp[n + 0x3fffffff] == 0);" (assignment_expression "n = n - (uint)(bp[n + 0x3fffffff] == 0)" identifier = (binary_expression "n - (uint)(bp[n + 0x3fffffff] == 0)" identifier - (call_expression "(uint)(bp[n + 0x3fffffff] == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bp[n + 0x3fffffff] == 0)" ( (binary_expression "bp[n + 0x3fffffff] == 0" (subscript_expression "bp[n + 0x3fffffff]" identifier [ (binary_expression "n + 0x3fffffff" identifier + number_literal) ]) == number_literal) ))))) ;) })) (return_statement "return n;" return identifier ;) }))) (labeled_statement "LAB_000588f5:\n  ap[n] = local_38;" statement_identifier : (expression_statement "ap[n] = local_38;" (assignment_expression "ap[n] = local_38" (subscript_expression "ap[n]" identifier [ identifier ]) = identifier) ;)) (expression_statement "bp[n] = uVar9;" (assignment_expression "bp[n] = uVar9" (subscript_expression "bp[n]" identifier [ identifier ]) = identifier) ;) (return_statement "return n + 1;" return (binary_expression "n + 1" identifier + number_literal) ;) })))
(translation_unit "int __regparm2\n__gmpn_hgcd_matrix_adjust\n          (undefined4 param_1,undefined4 param_2,int param_3,int param_4,int param_5,int param_6,\n          int param_7)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  uint uVar5;\n  int unaff_EBX;\n  int *piVar6;\n  int iVar7;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  int unaff_retaddr;\n  uint local_3c;\n  \n  entry(param_2,0x585f9);\n  iVar2 = *(int *)(unaff_retaddr + 4);\n  iVar3 = param_7 + (iVar2 + param_6) * 4;\n  if (iVar2 < param_6) {\n    __gmpn_mul(param_7,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x14),iVar2);\n    __gmpn_mul(iVar3,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x10),\n               *(undefined4 *)(unaff_retaddr + 4));\n  }\n  else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0x14),iVar2,param_4,param_6);\n    __gmpn_mul(iVar3,*(undefined4 *)(unaff_retaddr + 0x10),*(undefined4 *)(unaff_retaddr + 4),\n               param_4,param_6);\n  }\n  iVar7 = *(int *)(unaff_EBX + 0x4579b);\n  (**(code **)(iVar7 + 0x28))(param_4,param_7,param_6);\n  iVar10 = *(int *)(unaff_retaddr + 4);\n  iVar2 = param_6 * 4;\n  iVar1 = param_3 - param_6;\n  local_3c = 0;\n  if (iVar10 != 0) {\n    iVar4 = iVar2 + param_4;\n    local_3c = __gmpn_add_n(iVar4,iVar4,iVar2 + param_7,iVar10);\n    if (local_3c == 0) {\nLAB_00058ac0:\n      iVar10 = *(int *)(unaff_retaddr + 4);\n    }\n    else {\n      if (iVar10 < iVar1) {\n        piVar6 = (int *)(iVar4 + iVar10 * 4);\n        iVar9 = *piVar6 + 1;\n        *piVar6 = iVar9;\n        if (iVar9 != 0) {\n          local_3c = 0;\n          iVar10 = *(int *)(unaff_retaddr + 4);\n          goto LAB_000586a5;\n        }\n        if (iVar10 + 1 < iVar1) {\n          iVar9 = iVar10 + 2;\n          piVar6 = (int *)(iVar10 * 4 + 4 + iVar4);\n          *piVar6 = *piVar6 + 1;\n          iVar10 = *piVar6;\n          local_3c = 0;\n          while (iVar10 == 0) {\n            if (iVar1 == iVar9) goto LAB_00058aa3;\n            iVar10 = iVar9 * 4;\n            iVar9 = iVar9 + 1;\n            iVar10 = *(int *)(iVar4 + iVar10) + 1;\n            *(int *)(iVar4 + -4 + iVar9 * 4) = iVar10;\n          }\n          goto LAB_00058ac0;\n        }\n      }\nLAB_00058aa3:\n      local_3c = 1;\n      iVar10 = *(int *)(unaff_retaddr + 4);\n    }\n  }\nLAB_000586a5:\n  if (iVar10 < param_6) {\n    __gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 0xc),iVar10);\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }\n  else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0xc),iVar10,param_5,param_6);\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }\n  iVar4 = iVar10 + param_6;\n  if (iVar4 != 0) {\n    iVar10 = __gmpn_sub_n(param_4,param_4,param_7,iVar4);\n    if (iVar10 != 0) {\n      if (param_3 <= iVar4) {\nLAB_00058815:\n        local_3c = local_3c - 1;\n        iVar10 = *(int *)(unaff_retaddr + 4);\n        goto LAB_000586d8;\n      }\n      piVar6 = (int *)(param_4 + iVar4 * 4);\n      iVar10 = *piVar6;\n      *piVar6 = iVar10 + -1;\n      if (iVar10 == 0) {\n        if (param_3 <= iVar4 + 1) goto LAB_00058815;\n        iVar9 = iVar4 + 2;\n        piVar6 = (int *)(param_4 + (iVar4 + 1) * 4);\n        iVar10 = *piVar6;\n        *piVar6 = iVar10 + -1;\n        while (iVar10 == 0) {\n          if (iVar9 == param_3) goto LAB_00058815;\n          iVar10 = *(int *)(param_4 + iVar9 * 4);\n          iVar9 = iVar9 + 1;\n          *(int *)(param_4 + -4 + iVar9 * 4) = iVar10 + -1;\n        }\n      }\n    }\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }\nLAB_000586d8:\n  if (iVar10 < param_6) {\n    __gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 8),iVar10);\n  }\n  else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 8),iVar10,param_5,param_6);\n  }\n  (**(code **)(iVar7 + 0x28))(param_5,param_7,param_6);\n  iVar7 = *(int *)(unaff_retaddr + 4);\n  uVar11 = local_3c;\n  if (iVar7 == 0) {\n    uVar8 = 0;\n    if (param_6 != 0) {\nLAB_00058955:\n      uVar5 = 0;\n      uVar8 = 0xffffffff;\n      uVar11 = 0xffffffff;\nLAB_0005895f:\n      iVar3 = __gmpn_sub_n(param_5,param_5,iVar3,param_6);\n      if (iVar3 != 0) {\n        if (param_3 <= param_6) goto LAB_0005872a;\n        piVar6 = (int *)(param_5 + param_6 * 4);\n        iVar3 = *piVar6;\n        *piVar6 = iVar3 + -1;\n        if (iVar3 == 0) {\n          if (param_3 <= param_6 + 1) goto LAB_0005872a;\n          piVar6 = (int *)(param_6 * 4 + 4 + param_5);\n          param_6 = param_6 + 2;\n          iVar3 = *piVar6;\n          *piVar6 = iVar3 + -1;\n          while (iVar3 == 0) {\n            if (param_6 == param_3) goto LAB_0005872a;\n            iVar3 = *(int *)(param_5 + param_6 * 4);\n            param_6 = param_6 + 1;\n            *(int *)(param_5 + -4 + param_6 * 4) = iVar3 + -1;\n          }\n        }\n      }\n      uVar8 = uVar5;\n      uVar11 = local_3c | uVar5;\n    }\n  }\n  else {\n    iVar10 = iVar2 + param_5;\n    iVar2 = __gmpn_add_n(iVar10,iVar10,iVar2 + param_7,iVar7);\n    if (iVar2 != 0) {\n      if (iVar7 < iVar1) {\n        piVar6 = (int *)(iVar10 + iVar7 * 4);\n        *piVar6 = *piVar6 + 1;\n        if (*piVar6 == 0) {\n          if (iVar1 <= iVar7 + 1) goto LAB_000588e3;\n          piVar6 = (int *)(iVar7 * 4 + 4 + iVar10);\n          iVar7 = iVar7 + 2;\n          *piVar6 = *piVar6 + 1;\n          iVar2 = *piVar6;\n          while (iVar2 == 0) {\n            if (iVar1 == iVar7) goto LAB_000588e3;\n            iVar2 = iVar7 * 4;\n            iVar7 = iVar7 + 1;\n            iVar2 = *(int *)(iVar10 + iVar2) + 1;\n            *(int *)(iVar10 + -4 + iVar7 * 4) = iVar2;\n          }\n        }\n        goto LAB_00058940;\n      }\nLAB_000588e3:\n      uVar8 = 1;\n      param_6 = param_6 + *(int *)(unaff_retaddr + 4);\n      if (param_6 == 0) goto LAB_000588f5;\n      uVar8 = 0;\n      uVar5 = 1;\n      goto LAB_0005895f;\n    }\nLAB_00058940:\n    uVar8 = 0;\n    param_6 = param_6 + *(int *)(unaff_retaddr + 4);\n    if (param_6 != 0) goto LAB_00058955;\n  }\nLAB_0005872a:\n  if (uVar11 == 0) {\n    if (*(int *)(param_4 + (param_3 + 0x3fffffff) * 4) == 0) {\n      param_3 = param_3 - (uint)(*(int *)(param_5 + (param_3 + 0x3fffffff) * 4) == 0);\n    }\n    return param_3;\n  }\nLAB_000588f5:\n  *(uint *)(param_4 + param_3 * 4) = local_3c;\n  *(uint *)(param_5 + param_3 * 4) = uVar8;\n  return param_3 + 1;\n}\n\n" (function_definition "int __regparm2\n__gmpn_hgcd_matrix_adjust\n          (undefined4 param_1,undefined4 param_2,int param_3,int param_4,int param_5,int param_6,\n          int param_7)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  uint uVar5;\n  int unaff_EBX;\n  int *piVar6;\n  int iVar7;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  int unaff_retaddr;\n  uint local_3c;\n  \n  entry(param_2,0x585f9);\n  iVar2 = *(int *)(unaff_retaddr + 4);\n  iVar3 = param_7 + (iVar2 + param_6) * 4;\n  if (iVar2 < param_6) {\n    __gmpn_mul(param_7,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x14),iVar2);\n    __gmpn_mul(iVar3,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x10),\n               *(undefined4 *)(unaff_retaddr + 4));\n  }\n  else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0x14),iVar2,param_4,param_6);\n    __gmpn_mul(iVar3,*(undefined4 *)(unaff_retaddr + 0x10),*(undefined4 *)(unaff_retaddr + 4),\n               param_4,param_6);\n  }\n  iVar7 = *(int *)(unaff_EBX + 0x4579b);\n  (**(code **)(iVar7 + 0x28))(param_4,param_7,param_6);\n  iVar10 = *(int *)(unaff_retaddr + 4);\n  iVar2 = param_6 * 4;\n  iVar1 = param_3 - param_6;\n  local_3c = 0;\n  if (iVar10 != 0) {\n    iVar4 = iVar2 + param_4;\n    local_3c = __gmpn_add_n(iVar4,iVar4,iVar2 + param_7,iVar10);\n    if (local_3c == 0) {\nLAB_00058ac0:\n      iVar10 = *(int *)(unaff_retaddr + 4);\n    }\n    else {\n      if (iVar10 < iVar1) {\n        piVar6 = (int *)(iVar4 + iVar10 * 4);\n        iVar9 = *piVar6 + 1;\n        *piVar6 = iVar9;\n        if (iVar9 != 0) {\n          local_3c = 0;\n          iVar10 = *(int *)(unaff_retaddr + 4);\n          goto LAB_000586a5;\n        }\n        if (iVar10 + 1 < iVar1) {\n          iVar9 = iVar10 + 2;\n          piVar6 = (int *)(iVar10 * 4 + 4 + iVar4);\n          *piVar6 = *piVar6 + 1;\n          iVar10 = *piVar6;\n          local_3c = 0;\n          while (iVar10 == 0) {\n            if (iVar1 == iVar9) goto LAB_00058aa3;\n            iVar10 = iVar9 * 4;\n            iVar9 = iVar9 + 1;\n            iVar10 = *(int *)(iVar4 + iVar10) + 1;\n            *(int *)(iVar4 + -4 + iVar9 * 4) = iVar10;\n          }\n          goto LAB_00058ac0;\n        }\n      }\nLAB_00058aa3:\n      local_3c = 1;\n      iVar10 = *(int *)(unaff_retaddr + 4);\n    }\n  }\nLAB_000586a5:\n  if (iVar10 < param_6) {\n    __gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 0xc),iVar10);\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }\n  else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0xc),iVar10,param_5,param_6);\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }\n  iVar4 = iVar10 + param_6;\n  if (iVar4 != 0) {\n    iVar10 = __gmpn_sub_n(param_4,param_4,param_7,iVar4);\n    if (iVar10 != 0) {\n      if (param_3 <= iVar4) {\nLAB_00058815:\n        local_3c = local_3c - 1;\n        iVar10 = *(int *)(unaff_retaddr + 4);\n        goto LAB_000586d8;\n      }\n      piVar6 = (int *)(param_4 + iVar4 * 4);\n      iVar10 = *piVar6;\n      *piVar6 = iVar10 + -1;\n      if (iVar10 == 0) {\n        if (param_3 <= iVar4 + 1) goto LAB_00058815;\n        iVar9 = iVar4 + 2;\n        piVar6 = (int *)(param_4 + (iVar4 + 1) * 4);\n        iVar10 = *piVar6;\n        *piVar6 = iVar10 + -1;\n        while (iVar10 == 0) {\n          if (iVar9 == param_3) goto LAB_00058815;\n          iVar10 = *(int *)(param_4 + iVar9 * 4);\n          iVar9 = iVar9 + 1;\n          *(int *)(param_4 + -4 + iVar9 * 4) = iVar10 + -1;\n        }\n      }\n    }\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }\nLAB_000586d8:\n  if (iVar10 < param_6) {\n    __gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 8),iVar10);\n  }\n  else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 8),iVar10,param_5,param_6);\n  }\n  (**(code **)(iVar7 + 0x28))(param_5,param_7,param_6);\n  iVar7 = *(int *)(unaff_retaddr + 4);\n  uVar11 = local_3c;\n  if (iVar7 == 0) {\n    uVar8 = 0;\n    if (param_6 != 0) {\nLAB_00058955:\n      uVar5 = 0;\n      uVar8 = 0xffffffff;\n      uVar11 = 0xffffffff;\nLAB_0005895f:\n      iVar3 = __gmpn_sub_n(param_5,param_5,iVar3,param_6);\n      if (iVar3 != 0) {\n        if (param_3 <= param_6) goto LAB_0005872a;\n        piVar6 = (int *)(param_5 + param_6 * 4);\n        iVar3 = *piVar6;\n        *piVar6 = iVar3 + -1;\n        if (iVar3 == 0) {\n          if (param_3 <= param_6 + 1) goto LAB_0005872a;\n          piVar6 = (int *)(param_6 * 4 + 4 + param_5);\n          param_6 = param_6 + 2;\n          iVar3 = *piVar6;\n          *piVar6 = iVar3 + -1;\n          while (iVar3 == 0) {\n            if (param_6 == param_3) goto LAB_0005872a;\n            iVar3 = *(int *)(param_5 + param_6 * 4);\n            param_6 = param_6 + 1;\n            *(int *)(param_5 + -4 + param_6 * 4) = iVar3 + -1;\n          }\n        }\n      }\n      uVar8 = uVar5;\n      uVar11 = local_3c | uVar5;\n    }\n  }\n  else {\n    iVar10 = iVar2 + param_5;\n    iVar2 = __gmpn_add_n(iVar10,iVar10,iVar2 + param_7,iVar7);\n    if (iVar2 != 0) {\n      if (iVar7 < iVar1) {\n        piVar6 = (int *)(iVar10 + iVar7 * 4);\n        *piVar6 = *piVar6 + 1;\n        if (*piVar6 == 0) {\n          if (iVar1 <= iVar7 + 1) goto LAB_000588e3;\n          piVar6 = (int *)(iVar7 * 4 + 4 + iVar10);\n          iVar7 = iVar7 + 2;\n          *piVar6 = *piVar6 + 1;\n          iVar2 = *piVar6;\n          while (iVar2 == 0) {\n            if (iVar1 == iVar7) goto LAB_000588e3;\n            iVar2 = iVar7 * 4;\n            iVar7 = iVar7 + 1;\n            iVar2 = *(int *)(iVar10 + iVar2) + 1;\n            *(int *)(iVar10 + -4 + iVar7 * 4) = iVar2;\n          }\n        }\n        goto LAB_00058940;\n      }\nLAB_000588e3:\n      uVar8 = 1;\n      param_6 = param_6 + *(int *)(unaff_retaddr + 4);\n      if (param_6 == 0) goto LAB_000588f5;\n      uVar8 = 0;\n      uVar5 = 1;\n      goto LAB_0005895f;\n    }\nLAB_00058940:\n    uVar8 = 0;\n    param_6 = param_6 + *(int *)(unaff_retaddr + 4);\n    if (param_6 != 0) goto LAB_00058955;\n  }\nLAB_0005872a:\n  if (uVar11 == 0) {\n    if (*(int *)(param_4 + (param_3 + 0x3fffffff) * 4) == 0) {\n      param_3 = param_3 - (uint)(*(int *)(param_5 + (param_3 + 0x3fffffff) * 4) == 0);\n    }\n    return param_3;\n  }\nLAB_000588f5:\n  *(uint *)(param_4 + param_3 * 4) = local_3c;\n  *(uint *)(param_5 + param_3 * 4) = uVar8;\n  return param_3 + 1;\n}" primitive_type (ERROR "__regparm2" identifier) (function_declarator "__gmpn_hgcd_matrix_adjust\n          (undefined4 param_1,undefined4 param_2,int param_3,int param_4,int param_5,int param_6,\n          int param_7)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,int param_3,int param_4,int param_5,int param_6,\n          int param_7)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "int param_6" primitive_type identifier) , (parameter_declaration "int param_7" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  uint uVar5;\n  int unaff_EBX;\n  int *piVar6;\n  int iVar7;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  int unaff_retaddr;\n  uint local_3c;\n  \n  entry(param_2,0x585f9);\n  iVar2 = *(int *)(unaff_retaddr + 4);\n  iVar3 = param_7 + (iVar2 + param_6) * 4;\n  if (iVar2 < param_6) {\n    __gmpn_mul(param_7,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x14),iVar2);\n    __gmpn_mul(iVar3,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x10),\n               *(undefined4 *)(unaff_retaddr + 4));\n  }\n  else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0x14),iVar2,param_4,param_6);\n    __gmpn_mul(iVar3,*(undefined4 *)(unaff_retaddr + 0x10),*(undefined4 *)(unaff_retaddr + 4),\n               param_4,param_6);\n  }\n  iVar7 = *(int *)(unaff_EBX + 0x4579b);\n  (**(code **)(iVar7 + 0x28))(param_4,param_7,param_6);\n  iVar10 = *(int *)(unaff_retaddr + 4);\n  iVar2 = param_6 * 4;\n  iVar1 = param_3 - param_6;\n  local_3c = 0;\n  if (iVar10 != 0) {\n    iVar4 = iVar2 + param_4;\n    local_3c = __gmpn_add_n(iVar4,iVar4,iVar2 + param_7,iVar10);\n    if (local_3c == 0) {\nLAB_00058ac0:\n      iVar10 = *(int *)(unaff_retaddr + 4);\n    }\n    else {\n      if (iVar10 < iVar1) {\n        piVar6 = (int *)(iVar4 + iVar10 * 4);\n        iVar9 = *piVar6 + 1;\n        *piVar6 = iVar9;\n        if (iVar9 != 0) {\n          local_3c = 0;\n          iVar10 = *(int *)(unaff_retaddr + 4);\n          goto LAB_000586a5;\n        }\n        if (iVar10 + 1 < iVar1) {\n          iVar9 = iVar10 + 2;\n          piVar6 = (int *)(iVar10 * 4 + 4 + iVar4);\n          *piVar6 = *piVar6 + 1;\n          iVar10 = *piVar6;\n          local_3c = 0;\n          while (iVar10 == 0) {\n            if (iVar1 == iVar9) goto LAB_00058aa3;\n            iVar10 = iVar9 * 4;\n            iVar9 = iVar9 + 1;\n            iVar10 = *(int *)(iVar4 + iVar10) + 1;\n            *(int *)(iVar4 + -4 + iVar9 * 4) = iVar10;\n          }\n          goto LAB_00058ac0;\n        }\n      }\nLAB_00058aa3:\n      local_3c = 1;\n      iVar10 = *(int *)(unaff_retaddr + 4);\n    }\n  }\nLAB_000586a5:\n  if (iVar10 < param_6) {\n    __gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 0xc),iVar10);\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }\n  else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0xc),iVar10,param_5,param_6);\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }\n  iVar4 = iVar10 + param_6;\n  if (iVar4 != 0) {\n    iVar10 = __gmpn_sub_n(param_4,param_4,param_7,iVar4);\n    if (iVar10 != 0) {\n      if (param_3 <= iVar4) {\nLAB_00058815:\n        local_3c = local_3c - 1;\n        iVar10 = *(int *)(unaff_retaddr + 4);\n        goto LAB_000586d8;\n      }\n      piVar6 = (int *)(param_4 + iVar4 * 4);\n      iVar10 = *piVar6;\n      *piVar6 = iVar10 + -1;\n      if (iVar10 == 0) {\n        if (param_3 <= iVar4 + 1) goto LAB_00058815;\n        iVar9 = iVar4 + 2;\n        piVar6 = (int *)(param_4 + (iVar4 + 1) * 4);\n        iVar10 = *piVar6;\n        *piVar6 = iVar10 + -1;\n        while (iVar10 == 0) {\n          if (iVar9 == param_3) goto LAB_00058815;\n          iVar10 = *(int *)(param_4 + iVar9 * 4);\n          iVar9 = iVar9 + 1;\n          *(int *)(param_4 + -4 + iVar9 * 4) = iVar10 + -1;\n        }\n      }\n    }\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }\nLAB_000586d8:\n  if (iVar10 < param_6) {\n    __gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 8),iVar10);\n  }\n  else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 8),iVar10,param_5,param_6);\n  }\n  (**(code **)(iVar7 + 0x28))(param_5,param_7,param_6);\n  iVar7 = *(int *)(unaff_retaddr + 4);\n  uVar11 = local_3c;\n  if (iVar7 == 0) {\n    uVar8 = 0;\n    if (param_6 != 0) {\nLAB_00058955:\n      uVar5 = 0;\n      uVar8 = 0xffffffff;\n      uVar11 = 0xffffffff;\nLAB_0005895f:\n      iVar3 = __gmpn_sub_n(param_5,param_5,iVar3,param_6);\n      if (iVar3 != 0) {\n        if (param_3 <= param_6) goto LAB_0005872a;\n        piVar6 = (int *)(param_5 + param_6 * 4);\n        iVar3 = *piVar6;\n        *piVar6 = iVar3 + -1;\n        if (iVar3 == 0) {\n          if (param_3 <= param_6 + 1) goto LAB_0005872a;\n          piVar6 = (int *)(param_6 * 4 + 4 + param_5);\n          param_6 = param_6 + 2;\n          iVar3 = *piVar6;\n          *piVar6 = iVar3 + -1;\n          while (iVar3 == 0) {\n            if (param_6 == param_3) goto LAB_0005872a;\n            iVar3 = *(int *)(param_5 + param_6 * 4);\n            param_6 = param_6 + 1;\n            *(int *)(param_5 + -4 + param_6 * 4) = iVar3 + -1;\n          }\n        }\n      }\n      uVar8 = uVar5;\n      uVar11 = local_3c | uVar5;\n    }\n  }\n  else {\n    iVar10 = iVar2 + param_5;\n    iVar2 = __gmpn_add_n(iVar10,iVar10,iVar2 + param_7,iVar7);\n    if (iVar2 != 0) {\n      if (iVar7 < iVar1) {\n        piVar6 = (int *)(iVar10 + iVar7 * 4);\n        *piVar6 = *piVar6 + 1;\n        if (*piVar6 == 0) {\n          if (iVar1 <= iVar7 + 1) goto LAB_000588e3;\n          piVar6 = (int *)(iVar7 * 4 + 4 + iVar10);\n          iVar7 = iVar7 + 2;\n          *piVar6 = *piVar6 + 1;\n          iVar2 = *piVar6;\n          while (iVar2 == 0) {\n            if (iVar1 == iVar7) goto LAB_000588e3;\n            iVar2 = iVar7 * 4;\n            iVar7 = iVar7 + 1;\n            iVar2 = *(int *)(iVar10 + iVar2) + 1;\n            *(int *)(iVar10 + -4 + iVar7 * 4) = iVar2;\n          }\n        }\n        goto LAB_00058940;\n      }\nLAB_000588e3:\n      uVar8 = 1;\n      param_6 = param_6 + *(int *)(unaff_retaddr + 4);\n      if (param_6 == 0) goto LAB_000588f5;\n      uVar8 = 0;\n      uVar5 = 1;\n      goto LAB_0005895f;\n    }\nLAB_00058940:\n    uVar8 = 0;\n    param_6 = param_6 + *(int *)(unaff_retaddr + 4);\n    if (param_6 != 0) goto LAB_00058955;\n  }\nLAB_0005872a:\n  if (uVar11 == 0) {\n    if (*(int *)(param_4 + (param_3 + 0x3fffffff) * 4) == 0) {\n      param_3 = param_3 - (uint)(*(int *)(param_5 + (param_3 + 0x3fffffff) * 4) == 0);\n    }\n    return param_3;\n  }\nLAB_000588f5:\n  *(uint *)(param_4 + param_3 * 4) = local_3c;\n  *(uint *)(param_5 + param_3 * 4) = uVar8;\n  return param_3 + 1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int unaff_EBX;" primitive_type identifier ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "int unaff_retaddr;" primitive_type identifier ;) (declaration "uint local_3c;" type_identifier identifier ;) (expression_statement "entry(param_2,0x585f9);" (call_expression "entry(param_2,0x585f9)" identifier (argument_list "(param_2,0x585f9)" ( identifier , number_literal ))) ;) (expression_statement "iVar2 = *(int *)(unaff_retaddr + 4);" (assignment_expression "iVar2 = *(int *)(unaff_retaddr + 4)" identifier = (pointer_expression "*(int *)(unaff_retaddr + 4)" * (cast_expression "(int *)(unaff_retaddr + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + 4)" ( (binary_expression "unaff_retaddr + 4" identifier + number_literal) ))))) ;) (expression_statement "iVar3 = param_7 + (iVar2 + param_6) * 4;" (assignment_expression "iVar3 = param_7 + (iVar2 + param_6) * 4" identifier = (binary_expression "param_7 + (iVar2 + param_6) * 4" identifier + (binary_expression "(iVar2 + param_6) * 4" (parenthesized_expression "(iVar2 + param_6)" ( (binary_expression "iVar2 + param_6" identifier + identifier) )) * number_literal))) ;) (if_statement "if (iVar2 < param_6) {\n    __gmpn_mul(param_7,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x14),iVar2);\n    __gmpn_mul(iVar3,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x10),\n               *(undefined4 *)(unaff_retaddr + 4));\n  }\n  else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0x14),iVar2,param_4,param_6);\n    __gmpn_mul(iVar3,*(undefined4 *)(unaff_retaddr + 0x10),*(undefined4 *)(unaff_retaddr + 4),\n               param_4,param_6);\n  }" if (parenthesized_expression "(iVar2 < param_6)" ( (binary_expression "iVar2 < param_6" identifier < identifier) )) (compound_statement "{\n    __gmpn_mul(param_7,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x14),iVar2);\n    __gmpn_mul(iVar3,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x10),\n               *(undefined4 *)(unaff_retaddr + 4));\n  }" { (expression_statement "__gmpn_mul(param_7,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x14),iVar2);" (call_expression "__gmpn_mul(param_7,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x14),iVar2)" identifier (argument_list "(param_7,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x14),iVar2)" ( identifier , identifier , identifier , (pointer_expression "*(undefined4 *)(unaff_retaddr + 0x14)" * (cast_expression "(undefined4 *)(unaff_retaddr + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + 0x14)" ( (binary_expression "unaff_retaddr + 0x14" identifier + number_literal) )))) , identifier ))) ;) (expression_statement "__gmpn_mul(iVar3,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x10),\n               *(undefined4 *)(unaff_retaddr + 4));" (call_expression "__gmpn_mul(iVar3,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x10),\n               *(undefined4 *)(unaff_retaddr + 4))" identifier (argument_list "(iVar3,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x10),\n               *(undefined4 *)(unaff_retaddr + 4))" ( identifier , identifier , identifier , (pointer_expression "*(undefined4 *)(unaff_retaddr + 0x10)" * (cast_expression "(undefined4 *)(unaff_retaddr + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + 0x10)" ( (binary_expression "unaff_retaddr + 0x10" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(unaff_retaddr + 4)" * (cast_expression "(undefined4 *)(unaff_retaddr + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + 4)" ( (binary_expression "unaff_retaddr + 4" identifier + number_literal) )))) ))) ;) }) (else_clause "else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0x14),iVar2,param_4,param_6);\n    __gmpn_mul(iVar3,*(undefined4 *)(unaff_retaddr + 0x10),*(undefined4 *)(unaff_retaddr + 4),\n               param_4,param_6);\n  }" else (compound_statement "{\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0x14),iVar2,param_4,param_6);\n    __gmpn_mul(iVar3,*(undefined4 *)(unaff_retaddr + 0x10),*(undefined4 *)(unaff_retaddr + 4),\n               param_4,param_6);\n  }" { (expression_statement "__gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0x14),iVar2,param_4,param_6);" (call_expression "__gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0x14),iVar2,param_4,param_6)" identifier (argument_list "(param_7,*(undefined4 *)(unaff_retaddr + 0x14),iVar2,param_4,param_6)" ( identifier , (pointer_expression "*(undefined4 *)(unaff_retaddr + 0x14)" * (cast_expression "(undefined4 *)(unaff_retaddr + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + 0x14)" ( (binary_expression "unaff_retaddr + 0x14" identifier + number_literal) )))) , identifier , identifier , identifier ))) ;) (expression_statement "__gmpn_mul(iVar3,*(undefined4 *)(unaff_retaddr + 0x10),*(undefined4 *)(unaff_retaddr + 4),\n               param_4,param_6);" (call_expression "__gmpn_mul(iVar3,*(undefined4 *)(unaff_retaddr + 0x10),*(undefined4 *)(unaff_retaddr + 4),\n               param_4,param_6)" identifier (argument_list "(iVar3,*(undefined4 *)(unaff_retaddr + 0x10),*(undefined4 *)(unaff_retaddr + 4),\n               param_4,param_6)" ( identifier , (pointer_expression "*(undefined4 *)(unaff_retaddr + 0x10)" * (cast_expression "(undefined4 *)(unaff_retaddr + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + 0x10)" ( (binary_expression "unaff_retaddr + 0x10" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(unaff_retaddr + 4)" * (cast_expression "(undefined4 *)(unaff_retaddr + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + 4)" ( (binary_expression "unaff_retaddr + 4" identifier + number_literal) )))) , identifier , identifier ))) ;) }))) (expression_statement "iVar7 = *(int *)(unaff_EBX + 0x4579b);" (assignment_expression "iVar7 = *(int *)(unaff_EBX + 0x4579b)" identifier = (pointer_expression "*(int *)(unaff_EBX + 0x4579b)" * (cast_expression "(int *)(unaff_EBX + 0x4579b)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBX + 0x4579b)" ( (binary_expression "unaff_EBX + 0x4579b" identifier + number_literal) ))))) ;) (expression_statement "(**(code **)(iVar7 + 0x28))(param_4,param_7,param_6);" (call_expression "(**(code **)(iVar7 + 0x28))(param_4,param_7,param_6)" (parenthesized_expression "(**(code **)(iVar7 + 0x28))" ( (pointer_expression "**(code **)(iVar7 + 0x28)" * (pointer_expression "*(code **)(iVar7 + 0x28)" * (cast_expression "(code **)(iVar7 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7 + 0x28)" ( (binary_expression "iVar7 + 0x28" identifier + number_literal) ))))) )) (argument_list "(param_4,param_7,param_6)" ( identifier , identifier , identifier ))) ;) (expression_statement "iVar10 = *(int *)(unaff_retaddr + 4);" (assignment_expression "iVar10 = *(int *)(unaff_retaddr + 4)" identifier = (pointer_expression "*(int *)(unaff_retaddr + 4)" * (cast_expression "(int *)(unaff_retaddr + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + 4)" ( (binary_expression "unaff_retaddr + 4" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = param_6 * 4;" (assignment_expression "iVar2 = param_6 * 4" identifier = (binary_expression "param_6 * 4" identifier * number_literal)) ;) (expression_statement "iVar1 = param_3 - param_6;" (assignment_expression "iVar1 = param_3 - param_6" identifier = (binary_expression "param_3 - param_6" identifier - identifier)) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (if_statement "if (iVar10 != 0) {\n    iVar4 = iVar2 + param_4;\n    local_3c = __gmpn_add_n(iVar4,iVar4,iVar2 + param_7,iVar10);\n    if (local_3c == 0) {\nLAB_00058ac0:\n      iVar10 = *(int *)(unaff_retaddr + 4);\n    }\n    else {\n      if (iVar10 < iVar1) {\n        piVar6 = (int *)(iVar4 + iVar10 * 4);\n        iVar9 = *piVar6 + 1;\n        *piVar6 = iVar9;\n        if (iVar9 != 0) {\n          local_3c = 0;\n          iVar10 = *(int *)(unaff_retaddr + 4);\n          goto LAB_000586a5;\n        }\n        if (iVar10 + 1 < iVar1) {\n          iVar9 = iVar10 + 2;\n          piVar6 = (int *)(iVar10 * 4 + 4 + iVar4);\n          *piVar6 = *piVar6 + 1;\n          iVar10 = *piVar6;\n          local_3c = 0;\n          while (iVar10 == 0) {\n            if (iVar1 == iVar9) goto LAB_00058aa3;\n            iVar10 = iVar9 * 4;\n            iVar9 = iVar9 + 1;\n            iVar10 = *(int *)(iVar4 + iVar10) + 1;\n            *(int *)(iVar4 + -4 + iVar9 * 4) = iVar10;\n          }\n          goto LAB_00058ac0;\n        }\n      }\nLAB_00058aa3:\n      local_3c = 1;\n      iVar10 = *(int *)(unaff_retaddr + 4);\n    }\n  }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar4 = iVar2 + param_4;\n    local_3c = __gmpn_add_n(iVar4,iVar4,iVar2 + param_7,iVar10);\n    if (local_3c == 0) {\nLAB_00058ac0:\n      iVar10 = *(int *)(unaff_retaddr + 4);\n    }\n    else {\n      if (iVar10 < iVar1) {\n        piVar6 = (int *)(iVar4 + iVar10 * 4);\n        iVar9 = *piVar6 + 1;\n        *piVar6 = iVar9;\n        if (iVar9 != 0) {\n          local_3c = 0;\n          iVar10 = *(int *)(unaff_retaddr + 4);\n          goto LAB_000586a5;\n        }\n        if (iVar10 + 1 < iVar1) {\n          iVar9 = iVar10 + 2;\n          piVar6 = (int *)(iVar10 * 4 + 4 + iVar4);\n          *piVar6 = *piVar6 + 1;\n          iVar10 = *piVar6;\n          local_3c = 0;\n          while (iVar10 == 0) {\n            if (iVar1 == iVar9) goto LAB_00058aa3;\n            iVar10 = iVar9 * 4;\n            iVar9 = iVar9 + 1;\n            iVar10 = *(int *)(iVar4 + iVar10) + 1;\n            *(int *)(iVar4 + -4 + iVar9 * 4) = iVar10;\n          }\n          goto LAB_00058ac0;\n        }\n      }\nLAB_00058aa3:\n      local_3c = 1;\n      iVar10 = *(int *)(unaff_retaddr + 4);\n    }\n  }" { (expression_statement "iVar4 = iVar2 + param_4;" (assignment_expression "iVar4 = iVar2 + param_4" identifier = (binary_expression "iVar2 + param_4" identifier + identifier)) ;) (expression_statement "local_3c = __gmpn_add_n(iVar4,iVar4,iVar2 + param_7,iVar10);" (assignment_expression "local_3c = __gmpn_add_n(iVar4,iVar4,iVar2 + param_7,iVar10)" identifier = (call_expression "__gmpn_add_n(iVar4,iVar4,iVar2 + param_7,iVar10)" identifier (argument_list "(iVar4,iVar4,iVar2 + param_7,iVar10)" ( identifier , identifier , (binary_expression "iVar2 + param_7" identifier + identifier) , identifier )))) ;) (if_statement "if (local_3c == 0) {\nLAB_00058ac0:\n      iVar10 = *(int *)(unaff_retaddr + 4);\n    }\n    else {\n      if (iVar10 < iVar1) {\n        piVar6 = (int *)(iVar4 + iVar10 * 4);\n        iVar9 = *piVar6 + 1;\n        *piVar6 = iVar9;\n        if (iVar9 != 0) {\n          local_3c = 0;\n          iVar10 = *(int *)(unaff_retaddr + 4);\n          goto LAB_000586a5;\n        }\n        if (iVar10 + 1 < iVar1) {\n          iVar9 = iVar10 + 2;\n          piVar6 = (int *)(iVar10 * 4 + 4 + iVar4);\n          *piVar6 = *piVar6 + 1;\n          iVar10 = *piVar6;\n          local_3c = 0;\n          while (iVar10 == 0) {\n            if (iVar1 == iVar9) goto LAB_00058aa3;\n            iVar10 = iVar9 * 4;\n            iVar9 = iVar9 + 1;\n            iVar10 = *(int *)(iVar4 + iVar10) + 1;\n            *(int *)(iVar4 + -4 + iVar9 * 4) = iVar10;\n          }\n          goto LAB_00058ac0;\n        }\n      }\nLAB_00058aa3:\n      local_3c = 1;\n      iVar10 = *(int *)(unaff_retaddr + 4);\n    }" if (parenthesized_expression "(local_3c == 0)" ( (binary_expression "local_3c == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00058ac0:\n      iVar10 = *(int *)(unaff_retaddr + 4);\n    }" { (labeled_statement "LAB_00058ac0:\n      iVar10 = *(int *)(unaff_retaddr + 4);" statement_identifier : (expression_statement "iVar10 = *(int *)(unaff_retaddr + 4);" (assignment_expression "iVar10 = *(int *)(unaff_retaddr + 4)" identifier = (pointer_expression "*(int *)(unaff_retaddr + 4)" * (cast_expression "(int *)(unaff_retaddr + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + 4)" ( (binary_expression "unaff_retaddr + 4" identifier + number_literal) ))))) ;)) }) (else_clause "else {\n      if (iVar10 < iVar1) {\n        piVar6 = (int *)(iVar4 + iVar10 * 4);\n        iVar9 = *piVar6 + 1;\n        *piVar6 = iVar9;\n        if (iVar9 != 0) {\n          local_3c = 0;\n          iVar10 = *(int *)(unaff_retaddr + 4);\n          goto LAB_000586a5;\n        }\n        if (iVar10 + 1 < iVar1) {\n          iVar9 = iVar10 + 2;\n          piVar6 = (int *)(iVar10 * 4 + 4 + iVar4);\n          *piVar6 = *piVar6 + 1;\n          iVar10 = *piVar6;\n          local_3c = 0;\n          while (iVar10 == 0) {\n            if (iVar1 == iVar9) goto LAB_00058aa3;\n            iVar10 = iVar9 * 4;\n            iVar9 = iVar9 + 1;\n            iVar10 = *(int *)(iVar4 + iVar10) + 1;\n            *(int *)(iVar4 + -4 + iVar9 * 4) = iVar10;\n          }\n          goto LAB_00058ac0;\n        }\n      }\nLAB_00058aa3:\n      local_3c = 1;\n      iVar10 = *(int *)(unaff_retaddr + 4);\n    }" else (compound_statement "{\n      if (iVar10 < iVar1) {\n        piVar6 = (int *)(iVar4 + iVar10 * 4);\n        iVar9 = *piVar6 + 1;\n        *piVar6 = iVar9;\n        if (iVar9 != 0) {\n          local_3c = 0;\n          iVar10 = *(int *)(unaff_retaddr + 4);\n          goto LAB_000586a5;\n        }\n        if (iVar10 + 1 < iVar1) {\n          iVar9 = iVar10 + 2;\n          piVar6 = (int *)(iVar10 * 4 + 4 + iVar4);\n          *piVar6 = *piVar6 + 1;\n          iVar10 = *piVar6;\n          local_3c = 0;\n          while (iVar10 == 0) {\n            if (iVar1 == iVar9) goto LAB_00058aa3;\n            iVar10 = iVar9 * 4;\n            iVar9 = iVar9 + 1;\n            iVar10 = *(int *)(iVar4 + iVar10) + 1;\n            *(int *)(iVar4 + -4 + iVar9 * 4) = iVar10;\n          }\n          goto LAB_00058ac0;\n        }\n      }\nLAB_00058aa3:\n      local_3c = 1;\n      iVar10 = *(int *)(unaff_retaddr + 4);\n    }" { (if_statement "if (iVar10 < iVar1) {\n        piVar6 = (int *)(iVar4 + iVar10 * 4);\n        iVar9 = *piVar6 + 1;\n        *piVar6 = iVar9;\n        if (iVar9 != 0) {\n          local_3c = 0;\n          iVar10 = *(int *)(unaff_retaddr + 4);\n          goto LAB_000586a5;\n        }\n        if (iVar10 + 1 < iVar1) {\n          iVar9 = iVar10 + 2;\n          piVar6 = (int *)(iVar10 * 4 + 4 + iVar4);\n          *piVar6 = *piVar6 + 1;\n          iVar10 = *piVar6;\n          local_3c = 0;\n          while (iVar10 == 0) {\n            if (iVar1 == iVar9) goto LAB_00058aa3;\n            iVar10 = iVar9 * 4;\n            iVar9 = iVar9 + 1;\n            iVar10 = *(int *)(iVar4 + iVar10) + 1;\n            *(int *)(iVar4 + -4 + iVar9 * 4) = iVar10;\n          }\n          goto LAB_00058ac0;\n        }\n      }" if (parenthesized_expression "(iVar10 < iVar1)" ( (binary_expression "iVar10 < iVar1" identifier < identifier) )) (compound_statement "{\n        piVar6 = (int *)(iVar4 + iVar10 * 4);\n        iVar9 = *piVar6 + 1;\n        *piVar6 = iVar9;\n        if (iVar9 != 0) {\n          local_3c = 0;\n          iVar10 = *(int *)(unaff_retaddr + 4);\n          goto LAB_000586a5;\n        }\n        if (iVar10 + 1 < iVar1) {\n          iVar9 = iVar10 + 2;\n          piVar6 = (int *)(iVar10 * 4 + 4 + iVar4);\n          *piVar6 = *piVar6 + 1;\n          iVar10 = *piVar6;\n          local_3c = 0;\n          while (iVar10 == 0) {\n            if (iVar1 == iVar9) goto LAB_00058aa3;\n            iVar10 = iVar9 * 4;\n            iVar9 = iVar9 + 1;\n            iVar10 = *(int *)(iVar4 + iVar10) + 1;\n            *(int *)(iVar4 + -4 + iVar9 * 4) = iVar10;\n          }\n          goto LAB_00058ac0;\n        }\n      }" { (expression_statement "piVar6 = (int *)(iVar4 + iVar10 * 4);" (assignment_expression "piVar6 = (int *)(iVar4 + iVar10 * 4)" identifier = (cast_expression "(int *)(iVar4 + iVar10 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + iVar10 * 4)" ( (binary_expression "iVar4 + iVar10 * 4" identifier + (binary_expression "iVar10 * 4" identifier * number_literal)) )))) ;) (expression_statement "iVar9 = *piVar6 + 1;" (assignment_expression "iVar9 = *piVar6 + 1" identifier = (binary_expression "*piVar6 + 1" (pointer_expression "*piVar6" * identifier) + number_literal)) ;) (expression_statement "*piVar6 = iVar9;" (assignment_expression "*piVar6 = iVar9" (pointer_expression "*piVar6" * identifier) = identifier) ;) (if_statement "if (iVar9 != 0) {\n          local_3c = 0;\n          iVar10 = *(int *)(unaff_retaddr + 4);\n          goto LAB_000586a5;\n        }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n          local_3c = 0;\n          iVar10 = *(int *)(unaff_retaddr + 4);\n          goto LAB_000586a5;\n        }" { (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "iVar10 = *(int *)(unaff_retaddr + 4);" (assignment_expression "iVar10 = *(int *)(unaff_retaddr + 4)" identifier = (pointer_expression "*(int *)(unaff_retaddr + 4)" * (cast_expression "(int *)(unaff_retaddr + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + 4)" ( (binary_expression "unaff_retaddr + 4" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_000586a5;" goto statement_identifier ;) })) (if_statement "if (iVar10 + 1 < iVar1) {\n          iVar9 = iVar10 + 2;\n          piVar6 = (int *)(iVar10 * 4 + 4 + iVar4);\n          *piVar6 = *piVar6 + 1;\n          iVar10 = *piVar6;\n          local_3c = 0;\n          while (iVar10 == 0) {\n            if (iVar1 == iVar9) goto LAB_00058aa3;\n            iVar10 = iVar9 * 4;\n            iVar9 = iVar9 + 1;\n            iVar10 = *(int *)(iVar4 + iVar10) + 1;\n            *(int *)(iVar4 + -4 + iVar9 * 4) = iVar10;\n          }\n          goto LAB_00058ac0;\n        }" if (parenthesized_expression "(iVar10 + 1 < iVar1)" ( (binary_expression "iVar10 + 1 < iVar1" (binary_expression "iVar10 + 1" identifier + number_literal) < identifier) )) (compound_statement "{\n          iVar9 = iVar10 + 2;\n          piVar6 = (int *)(iVar10 * 4 + 4 + iVar4);\n          *piVar6 = *piVar6 + 1;\n          iVar10 = *piVar6;\n          local_3c = 0;\n          while (iVar10 == 0) {\n            if (iVar1 == iVar9) goto LAB_00058aa3;\n            iVar10 = iVar9 * 4;\n            iVar9 = iVar9 + 1;\n            iVar10 = *(int *)(iVar4 + iVar10) + 1;\n            *(int *)(iVar4 + -4 + iVar9 * 4) = iVar10;\n          }\n          goto LAB_00058ac0;\n        }" { (expression_statement "iVar9 = iVar10 + 2;" (assignment_expression "iVar9 = iVar10 + 2" identifier = (binary_expression "iVar10 + 2" identifier + number_literal)) ;) (expression_statement "piVar6 = (int *)(iVar10 * 4 + 4 + iVar4);" (assignment_expression "piVar6 = (int *)(iVar10 * 4 + 4 + iVar4)" identifier = (cast_expression "(int *)(iVar10 * 4 + 4 + iVar4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 * 4 + 4 + iVar4)" ( (binary_expression "iVar10 * 4 + 4 + iVar4" (binary_expression "iVar10 * 4 + 4" (binary_expression "iVar10 * 4" identifier * number_literal) + number_literal) + identifier) )))) ;) (expression_statement "*piVar6 = *piVar6 + 1;" (assignment_expression "*piVar6 = *piVar6 + 1" (pointer_expression "*piVar6" * identifier) = (binary_expression "*piVar6 + 1" (pointer_expression "*piVar6" * identifier) + number_literal)) ;) (expression_statement "iVar10 = *piVar6;" (assignment_expression "iVar10 = *piVar6" identifier = (pointer_expression "*piVar6" * identifier)) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (while_statement "while (iVar10 == 0) {\n            if (iVar1 == iVar9) goto LAB_00058aa3;\n            iVar10 = iVar9 * 4;\n            iVar9 = iVar9 + 1;\n            iVar10 = *(int *)(iVar4 + iVar10) + 1;\n            *(int *)(iVar4 + -4 + iVar9 * 4) = iVar10;\n          }" while (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\n            if (iVar1 == iVar9) goto LAB_00058aa3;\n            iVar10 = iVar9 * 4;\n            iVar9 = iVar9 + 1;\n            iVar10 = *(int *)(iVar4 + iVar10) + 1;\n            *(int *)(iVar4 + -4 + iVar9 * 4) = iVar10;\n          }" { (if_statement "if (iVar1 == iVar9) goto LAB_00058aa3;" if (parenthesized_expression "(iVar1 == iVar9)" ( (binary_expression "iVar1 == iVar9" identifier == identifier) )) (goto_statement "goto LAB_00058aa3;" goto statement_identifier ;)) (expression_statement "iVar10 = iVar9 * 4;" (assignment_expression "iVar10 = iVar9 * 4" identifier = (binary_expression "iVar9 * 4" identifier * number_literal)) ;) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) (expression_statement "iVar10 = *(int *)(iVar4 + iVar10) + 1;" (assignment_expression "iVar10 = *(int *)(iVar4 + iVar10) + 1" identifier = (binary_expression "*(int *)(iVar4 + iVar10) + 1" (pointer_expression "*(int *)(iVar4 + iVar10)" * (cast_expression "(int *)(iVar4 + iVar10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + iVar10)" ( (binary_expression "iVar4 + iVar10" identifier + identifier) )))) + number_literal)) ;) (expression_statement "*(int *)(iVar4 + -4 + iVar9 * 4) = iVar10;" (assignment_expression "*(int *)(iVar4 + -4 + iVar9 * 4) = iVar10" (pointer_expression "*(int *)(iVar4 + -4 + iVar9 * 4)" * (cast_expression "(int *)(iVar4 + -4 + iVar9 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -4 + iVar9 * 4)" ( (binary_expression "iVar4 + -4 + iVar9 * 4" (binary_expression "iVar4 + -4" identifier + number_literal) + (binary_expression "iVar9 * 4" identifier * number_literal)) )))) = identifier) ;) })) (goto_statement "goto LAB_00058ac0;" goto statement_identifier ;) })) })) (labeled_statement "LAB_00058aa3:\n      local_3c = 1;" statement_identifier : (expression_statement "local_3c = 1;" (assignment_expression "local_3c = 1" identifier = number_literal) ;)) (expression_statement "iVar10 = *(int *)(unaff_retaddr + 4);" (assignment_expression "iVar10 = *(int *)(unaff_retaddr + 4)" identifier = (pointer_expression "*(int *)(unaff_retaddr + 4)" * (cast_expression "(int *)(unaff_retaddr + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + 4)" ( (binary_expression "unaff_retaddr + 4" identifier + number_literal) ))))) ;) }))) })) (labeled_statement "LAB_000586a5:\n  if (iVar10 < param_6) {\n    __gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 0xc),iVar10);\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }\n  else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0xc),iVar10,param_5,param_6);\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }" statement_identifier : (if_statement "if (iVar10 < param_6) {\n    __gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 0xc),iVar10);\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }\n  else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0xc),iVar10,param_5,param_6);\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }" if (parenthesized_expression "(iVar10 < param_6)" ( (binary_expression "iVar10 < param_6" identifier < identifier) )) (compound_statement "{\n    __gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 0xc),iVar10);\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }" { (expression_statement "__gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 0xc),iVar10);" (call_expression "__gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 0xc),iVar10)" identifier (argument_list "(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 0xc),iVar10)" ( identifier , identifier , identifier , (pointer_expression "*(undefined4 *)(unaff_retaddr + 0xc)" * (cast_expression "(undefined4 *)(unaff_retaddr + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + 0xc)" ( (binary_expression "unaff_retaddr + 0xc" identifier + number_literal) )))) , identifier ))) ;) (expression_statement "iVar10 = *(int *)(unaff_retaddr + 4);" (assignment_expression "iVar10 = *(int *)(unaff_retaddr + 4)" identifier = (pointer_expression "*(int *)(unaff_retaddr + 4)" * (cast_expression "(int *)(unaff_retaddr + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + 4)" ( (binary_expression "unaff_retaddr + 4" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0xc),iVar10,param_5,param_6);\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }" else (compound_statement "{\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0xc),iVar10,param_5,param_6);\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }" { (expression_statement "__gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0xc),iVar10,param_5,param_6);" (call_expression "__gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0xc),iVar10,param_5,param_6)" identifier (argument_list "(param_7,*(undefined4 *)(unaff_retaddr + 0xc),iVar10,param_5,param_6)" ( identifier , (pointer_expression "*(undefined4 *)(unaff_retaddr + 0xc)" * (cast_expression "(undefined4 *)(unaff_retaddr + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + 0xc)" ( (binary_expression "unaff_retaddr + 0xc" identifier + number_literal) )))) , identifier , identifier , identifier ))) ;) (expression_statement "iVar10 = *(int *)(unaff_retaddr + 4);" (assignment_expression "iVar10 = *(int *)(unaff_retaddr + 4)" identifier = (pointer_expression "*(int *)(unaff_retaddr + 4)" * (cast_expression "(int *)(unaff_retaddr + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + 4)" ( (binary_expression "unaff_retaddr + 4" identifier + number_literal) ))))) ;) })))) (expression_statement "iVar4 = iVar10 + param_6;" (assignment_expression "iVar4 = iVar10 + param_6" identifier = (binary_expression "iVar10 + param_6" identifier + identifier)) ;) (if_statement "if (iVar4 != 0) {\n    iVar10 = __gmpn_sub_n(param_4,param_4,param_7,iVar4);\n    if (iVar10 != 0) {\n      if (param_3 <= iVar4) {\nLAB_00058815:\n        local_3c = local_3c - 1;\n        iVar10 = *(int *)(unaff_retaddr + 4);\n        goto LAB_000586d8;\n      }\n      piVar6 = (int *)(param_4 + iVar4 * 4);\n      iVar10 = *piVar6;\n      *piVar6 = iVar10 + -1;\n      if (iVar10 == 0) {\n        if (param_3 <= iVar4 + 1) goto LAB_00058815;\n        iVar9 = iVar4 + 2;\n        piVar6 = (int *)(param_4 + (iVar4 + 1) * 4);\n        iVar10 = *piVar6;\n        *piVar6 = iVar10 + -1;\n        while (iVar10 == 0) {\n          if (iVar9 == param_3) goto LAB_00058815;\n          iVar10 = *(int *)(param_4 + iVar9 * 4);\n          iVar9 = iVar9 + 1;\n          *(int *)(param_4 + -4 + iVar9 * 4) = iVar10 + -1;\n        }\n      }\n    }\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar10 = __gmpn_sub_n(param_4,param_4,param_7,iVar4);\n    if (iVar10 != 0) {\n      if (param_3 <= iVar4) {\nLAB_00058815:\n        local_3c = local_3c - 1;\n        iVar10 = *(int *)(unaff_retaddr + 4);\n        goto LAB_000586d8;\n      }\n      piVar6 = (int *)(param_4 + iVar4 * 4);\n      iVar10 = *piVar6;\n      *piVar6 = iVar10 + -1;\n      if (iVar10 == 0) {\n        if (param_3 <= iVar4 + 1) goto LAB_00058815;\n        iVar9 = iVar4 + 2;\n        piVar6 = (int *)(param_4 + (iVar4 + 1) * 4);\n        iVar10 = *piVar6;\n        *piVar6 = iVar10 + -1;\n        while (iVar10 == 0) {\n          if (iVar9 == param_3) goto LAB_00058815;\n          iVar10 = *(int *)(param_4 + iVar9 * 4);\n          iVar9 = iVar9 + 1;\n          *(int *)(param_4 + -4 + iVar9 * 4) = iVar10 + -1;\n        }\n      }\n    }\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }" { (expression_statement "iVar10 = __gmpn_sub_n(param_4,param_4,param_7,iVar4);" (assignment_expression "iVar10 = __gmpn_sub_n(param_4,param_4,param_7,iVar4)" identifier = (call_expression "__gmpn_sub_n(param_4,param_4,param_7,iVar4)" identifier (argument_list "(param_4,param_4,param_7,iVar4)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar10 != 0) {\n      if (param_3 <= iVar4) {\nLAB_00058815:\n        local_3c = local_3c - 1;\n        iVar10 = *(int *)(unaff_retaddr + 4);\n        goto LAB_000586d8;\n      }\n      piVar6 = (int *)(param_4 + iVar4 * 4);\n      iVar10 = *piVar6;\n      *piVar6 = iVar10 + -1;\n      if (iVar10 == 0) {\n        if (param_3 <= iVar4 + 1) goto LAB_00058815;\n        iVar9 = iVar4 + 2;\n        piVar6 = (int *)(param_4 + (iVar4 + 1) * 4);\n        iVar10 = *piVar6;\n        *piVar6 = iVar10 + -1;\n        while (iVar10 == 0) {\n          if (iVar9 == param_3) goto LAB_00058815;\n          iVar10 = *(int *)(param_4 + iVar9 * 4);\n          iVar9 = iVar9 + 1;\n          *(int *)(param_4 + -4 + iVar9 * 4) = iVar10 + -1;\n        }\n      }\n    }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n      if (param_3 <= iVar4) {\nLAB_00058815:\n        local_3c = local_3c - 1;\n        iVar10 = *(int *)(unaff_retaddr + 4);\n        goto LAB_000586d8;\n      }\n      piVar6 = (int *)(param_4 + iVar4 * 4);\n      iVar10 = *piVar6;\n      *piVar6 = iVar10 + -1;\n      if (iVar10 == 0) {\n        if (param_3 <= iVar4 + 1) goto LAB_00058815;\n        iVar9 = iVar4 + 2;\n        piVar6 = (int *)(param_4 + (iVar4 + 1) * 4);\n        iVar10 = *piVar6;\n        *piVar6 = iVar10 + -1;\n        while (iVar10 == 0) {\n          if (iVar9 == param_3) goto LAB_00058815;\n          iVar10 = *(int *)(param_4 + iVar9 * 4);\n          iVar9 = iVar9 + 1;\n          *(int *)(param_4 + -4 + iVar9 * 4) = iVar10 + -1;\n        }\n      }\n    }" { (if_statement "if (param_3 <= iVar4) {\nLAB_00058815:\n        local_3c = local_3c - 1;\n        iVar10 = *(int *)(unaff_retaddr + 4);\n        goto LAB_000586d8;\n      }" if (parenthesized_expression "(param_3 <= iVar4)" ( (binary_expression "param_3 <= iVar4" identifier <= identifier) )) (compound_statement "{\nLAB_00058815:\n        local_3c = local_3c - 1;\n        iVar10 = *(int *)(unaff_retaddr + 4);\n        goto LAB_000586d8;\n      }" { (labeled_statement "LAB_00058815:\n        local_3c = local_3c - 1;" statement_identifier : (expression_statement "local_3c = local_3c - 1;" (assignment_expression "local_3c = local_3c - 1" identifier = (binary_expression "local_3c - 1" identifier - number_literal)) ;)) (expression_statement "iVar10 = *(int *)(unaff_retaddr + 4);" (assignment_expression "iVar10 = *(int *)(unaff_retaddr + 4)" identifier = (pointer_expression "*(int *)(unaff_retaddr + 4)" * (cast_expression "(int *)(unaff_retaddr + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + 4)" ( (binary_expression "unaff_retaddr + 4" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_000586d8;" goto statement_identifier ;) })) (expression_statement "piVar6 = (int *)(param_4 + iVar4 * 4);" (assignment_expression "piVar6 = (int *)(param_4 + iVar4 * 4)" identifier = (cast_expression "(int *)(param_4 + iVar4 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + iVar4 * 4)" ( (binary_expression "param_4 + iVar4 * 4" identifier + (binary_expression "iVar4 * 4" identifier * number_literal)) )))) ;) (expression_statement "iVar10 = *piVar6;" (assignment_expression "iVar10 = *piVar6" identifier = (pointer_expression "*piVar6" * identifier)) ;) (expression_statement "*piVar6 = iVar10 + -1;" (assignment_expression "*piVar6 = iVar10 + -1" (pointer_expression "*piVar6" * identifier) = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (if_statement "if (iVar10 == 0) {\n        if (param_3 <= iVar4 + 1) goto LAB_00058815;\n        iVar9 = iVar4 + 2;\n        piVar6 = (int *)(param_4 + (iVar4 + 1) * 4);\n        iVar10 = *piVar6;\n        *piVar6 = iVar10 + -1;\n        while (iVar10 == 0) {\n          if (iVar9 == param_3) goto LAB_00058815;\n          iVar10 = *(int *)(param_4 + iVar9 * 4);\n          iVar9 = iVar9 + 1;\n          *(int *)(param_4 + -4 + iVar9 * 4) = iVar10 + -1;\n        }\n      }" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\n        if (param_3 <= iVar4 + 1) goto LAB_00058815;\n        iVar9 = iVar4 + 2;\n        piVar6 = (int *)(param_4 + (iVar4 + 1) * 4);\n        iVar10 = *piVar6;\n        *piVar6 = iVar10 + -1;\n        while (iVar10 == 0) {\n          if (iVar9 == param_3) goto LAB_00058815;\n          iVar10 = *(int *)(param_4 + iVar9 * 4);\n          iVar9 = iVar9 + 1;\n          *(int *)(param_4 + -4 + iVar9 * 4) = iVar10 + -1;\n        }\n      }" { (if_statement "if (param_3 <= iVar4 + 1) goto LAB_00058815;" if (parenthesized_expression "(param_3 <= iVar4 + 1)" ( (binary_expression "param_3 <= iVar4 + 1" identifier <= (binary_expression "iVar4 + 1" identifier + number_literal)) )) (goto_statement "goto LAB_00058815;" goto statement_identifier ;)) (expression_statement "iVar9 = iVar4 + 2;" (assignment_expression "iVar9 = iVar4 + 2" identifier = (binary_expression "iVar4 + 2" identifier + number_literal)) ;) (expression_statement "piVar6 = (int *)(param_4 + (iVar4 + 1) * 4);" (assignment_expression "piVar6 = (int *)(param_4 + (iVar4 + 1) * 4)" identifier = (cast_expression "(int *)(param_4 + (iVar4 + 1) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + (iVar4 + 1) * 4)" ( (binary_expression "param_4 + (iVar4 + 1) * 4" identifier + (binary_expression "(iVar4 + 1) * 4" (parenthesized_expression "(iVar4 + 1)" ( (binary_expression "iVar4 + 1" identifier + number_literal) )) * number_literal)) )))) ;) (expression_statement "iVar10 = *piVar6;" (assignment_expression "iVar10 = *piVar6" identifier = (pointer_expression "*piVar6" * identifier)) ;) (expression_statement "*piVar6 = iVar10 + -1;" (assignment_expression "*piVar6 = iVar10 + -1" (pointer_expression "*piVar6" * identifier) = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (while_statement "while (iVar10 == 0) {\n          if (iVar9 == param_3) goto LAB_00058815;\n          iVar10 = *(int *)(param_4 + iVar9 * 4);\n          iVar9 = iVar9 + 1;\n          *(int *)(param_4 + -4 + iVar9 * 4) = iVar10 + -1;\n        }" while (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\n          if (iVar9 == param_3) goto LAB_00058815;\n          iVar10 = *(int *)(param_4 + iVar9 * 4);\n          iVar9 = iVar9 + 1;\n          *(int *)(param_4 + -4 + iVar9 * 4) = iVar10 + -1;\n        }" { (if_statement "if (iVar9 == param_3) goto LAB_00058815;" if (parenthesized_expression "(iVar9 == param_3)" ( (binary_expression "iVar9 == param_3" identifier == identifier) )) (goto_statement "goto LAB_00058815;" goto statement_identifier ;)) (expression_statement "iVar10 = *(int *)(param_4 + iVar9 * 4);" (assignment_expression "iVar10 = *(int *)(param_4 + iVar9 * 4)" identifier = (pointer_expression "*(int *)(param_4 + iVar9 * 4)" * (cast_expression "(int *)(param_4 + iVar9 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + iVar9 * 4)" ( (binary_expression "param_4 + iVar9 * 4" identifier + (binary_expression "iVar9 * 4" identifier * number_literal)) ))))) ;) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) (expression_statement "*(int *)(param_4 + -4 + iVar9 * 4) = iVar10 + -1;" (assignment_expression "*(int *)(param_4 + -4 + iVar9 * 4) = iVar10 + -1" (pointer_expression "*(int *)(param_4 + -4 + iVar9 * 4)" * (cast_expression "(int *)(param_4 + -4 + iVar9 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + -4 + iVar9 * 4)" ( (binary_expression "param_4 + -4 + iVar9 * 4" (binary_expression "param_4 + -4" identifier + number_literal) + (binary_expression "iVar9 * 4" identifier * number_literal)) )))) = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) })) })) })) (expression_statement "iVar10 = *(int *)(unaff_retaddr + 4);" (assignment_expression "iVar10 = *(int *)(unaff_retaddr + 4)" identifier = (pointer_expression "*(int *)(unaff_retaddr + 4)" * (cast_expression "(int *)(unaff_retaddr + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + 4)" ( (binary_expression "unaff_retaddr + 4" identifier + number_literal) ))))) ;) })) (labeled_statement "LAB_000586d8:\n  if (iVar10 < param_6) {\n    __gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 8),iVar10);\n  }\n  else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 8),iVar10,param_5,param_6);\n  }" statement_identifier : (if_statement "if (iVar10 < param_6) {\n    __gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 8),iVar10);\n  }\n  else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 8),iVar10,param_5,param_6);\n  }" if (parenthesized_expression "(iVar10 < param_6)" ( (binary_expression "iVar10 < param_6" identifier < identifier) )) (compound_statement "{\n    __gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 8),iVar10);\n  }" { (expression_statement "__gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 8),iVar10);" (call_expression "__gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 8),iVar10)" identifier (argument_list "(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 8),iVar10)" ( identifier , identifier , identifier , (pointer_expression "*(undefined4 *)(unaff_retaddr + 8)" * (cast_expression "(undefined4 *)(unaff_retaddr + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + 8)" ( (binary_expression "unaff_retaddr + 8" identifier + number_literal) )))) , identifier ))) ;) }) (else_clause "else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 8),iVar10,param_5,param_6);\n  }" else (compound_statement "{\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 8),iVar10,param_5,param_6);\n  }" { (expression_statement "__gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 8),iVar10,param_5,param_6);" (call_expression "__gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 8),iVar10,param_5,param_6)" identifier (argument_list "(param_7,*(undefined4 *)(unaff_retaddr + 8),iVar10,param_5,param_6)" ( identifier , (pointer_expression "*(undefined4 *)(unaff_retaddr + 8)" * (cast_expression "(undefined4 *)(unaff_retaddr + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + 8)" ( (binary_expression "unaff_retaddr + 8" identifier + number_literal) )))) , identifier , identifier , identifier ))) ;) })))) (expression_statement "(**(code **)(iVar7 + 0x28))(param_5,param_7,param_6);" (call_expression "(**(code **)(iVar7 + 0x28))(param_5,param_7,param_6)" (parenthesized_expression "(**(code **)(iVar7 + 0x28))" ( (pointer_expression "**(code **)(iVar7 + 0x28)" * (pointer_expression "*(code **)(iVar7 + 0x28)" * (cast_expression "(code **)(iVar7 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7 + 0x28)" ( (binary_expression "iVar7 + 0x28" identifier + number_literal) ))))) )) (argument_list "(param_5,param_7,param_6)" ( identifier , identifier , identifier ))) ;) (expression_statement "iVar7 = *(int *)(unaff_retaddr + 4);" (assignment_expression "iVar7 = *(int *)(unaff_retaddr + 4)" identifier = (pointer_expression "*(int *)(unaff_retaddr + 4)" * (cast_expression "(int *)(unaff_retaddr + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + 4)" ( (binary_expression "unaff_retaddr + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar11 = local_3c;" (assignment_expression "uVar11 = local_3c" identifier = identifier) ;) (if_statement "if (iVar7 == 0) {\n    uVar8 = 0;\n    if (param_6 != 0) {\nLAB_00058955:\n      uVar5 = 0;\n      uVar8 = 0xffffffff;\n      uVar11 = 0xffffffff;\nLAB_0005895f:\n      iVar3 = __gmpn_sub_n(param_5,param_5,iVar3,param_6);\n      if (iVar3 != 0) {\n        if (param_3 <= param_6) goto LAB_0005872a;\n        piVar6 = (int *)(param_5 + param_6 * 4);\n        iVar3 = *piVar6;\n        *piVar6 = iVar3 + -1;\n        if (iVar3 == 0) {\n          if (param_3 <= param_6 + 1) goto LAB_0005872a;\n          piVar6 = (int *)(param_6 * 4 + 4 + param_5);\n          param_6 = param_6 + 2;\n          iVar3 = *piVar6;\n          *piVar6 = iVar3 + -1;\n          while (iVar3 == 0) {\n            if (param_6 == param_3) goto LAB_0005872a;\n            iVar3 = *(int *)(param_5 + param_6 * 4);\n            param_6 = param_6 + 1;\n            *(int *)(param_5 + -4 + param_6 * 4) = iVar3 + -1;\n          }\n        }\n      }\n      uVar8 = uVar5;\n      uVar11 = local_3c | uVar5;\n    }\n  }\n  else {\n    iVar10 = iVar2 + param_5;\n    iVar2 = __gmpn_add_n(iVar10,iVar10,iVar2 + param_7,iVar7);\n    if (iVar2 != 0) {\n      if (iVar7 < iVar1) {\n        piVar6 = (int *)(iVar10 + iVar7 * 4);\n        *piVar6 = *piVar6 + 1;\n        if (*piVar6 == 0) {\n          if (iVar1 <= iVar7 + 1) goto LAB_000588e3;\n          piVar6 = (int *)(iVar7 * 4 + 4 + iVar10);\n          iVar7 = iVar7 + 2;\n          *piVar6 = *piVar6 + 1;\n          iVar2 = *piVar6;\n          while (iVar2 == 0) {\n            if (iVar1 == iVar7) goto LAB_000588e3;\n            iVar2 = iVar7 * 4;\n            iVar7 = iVar7 + 1;\n            iVar2 = *(int *)(iVar10 + iVar2) + 1;\n            *(int *)(iVar10 + -4 + iVar7 * 4) = iVar2;\n          }\n        }\n        goto LAB_00058940;\n      }\nLAB_000588e3:\n      uVar8 = 1;\n      param_6 = param_6 + *(int *)(unaff_retaddr + 4);\n      if (param_6 == 0) goto LAB_000588f5;\n      uVar8 = 0;\n      uVar5 = 1;\n      goto LAB_0005895f;\n    }\nLAB_00058940:\n    uVar8 = 0;\n    param_6 = param_6 + *(int *)(unaff_retaddr + 4);\n    if (param_6 != 0) goto LAB_00058955;\n  }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar8 = 0;\n    if (param_6 != 0) {\nLAB_00058955:\n      uVar5 = 0;\n      uVar8 = 0xffffffff;\n      uVar11 = 0xffffffff;\nLAB_0005895f:\n      iVar3 = __gmpn_sub_n(param_5,param_5,iVar3,param_6);\n      if (iVar3 != 0) {\n        if (param_3 <= param_6) goto LAB_0005872a;\n        piVar6 = (int *)(param_5 + param_6 * 4);\n        iVar3 = *piVar6;\n        *piVar6 = iVar3 + -1;\n        if (iVar3 == 0) {\n          if (param_3 <= param_6 + 1) goto LAB_0005872a;\n          piVar6 = (int *)(param_6 * 4 + 4 + param_5);\n          param_6 = param_6 + 2;\n          iVar3 = *piVar6;\n          *piVar6 = iVar3 + -1;\n          while (iVar3 == 0) {\n            if (param_6 == param_3) goto LAB_0005872a;\n            iVar3 = *(int *)(param_5 + param_6 * 4);\n            param_6 = param_6 + 1;\n            *(int *)(param_5 + -4 + param_6 * 4) = iVar3 + -1;\n          }\n        }\n      }\n      uVar8 = uVar5;\n      uVar11 = local_3c | uVar5;\n    }\n  }" { (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (if_statement "if (param_6 != 0) {\nLAB_00058955:\n      uVar5 = 0;\n      uVar8 = 0xffffffff;\n      uVar11 = 0xffffffff;\nLAB_0005895f:\n      iVar3 = __gmpn_sub_n(param_5,param_5,iVar3,param_6);\n      if (iVar3 != 0) {\n        if (param_3 <= param_6) goto LAB_0005872a;\n        piVar6 = (int *)(param_5 + param_6 * 4);\n        iVar3 = *piVar6;\n        *piVar6 = iVar3 + -1;\n        if (iVar3 == 0) {\n          if (param_3 <= param_6 + 1) goto LAB_0005872a;\n          piVar6 = (int *)(param_6 * 4 + 4 + param_5);\n          param_6 = param_6 + 2;\n          iVar3 = *piVar6;\n          *piVar6 = iVar3 + -1;\n          while (iVar3 == 0) {\n            if (param_6 == param_3) goto LAB_0005872a;\n            iVar3 = *(int *)(param_5 + param_6 * 4);\n            param_6 = param_6 + 1;\n            *(int *)(param_5 + -4 + param_6 * 4) = iVar3 + -1;\n          }\n        }\n      }\n      uVar8 = uVar5;\n      uVar11 = local_3c | uVar5;\n    }" if (parenthesized_expression "(param_6 != 0)" ( (binary_expression "param_6 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_00058955:\n      uVar5 = 0;\n      uVar8 = 0xffffffff;\n      uVar11 = 0xffffffff;\nLAB_0005895f:\n      iVar3 = __gmpn_sub_n(param_5,param_5,iVar3,param_6);\n      if (iVar3 != 0) {\n        if (param_3 <= param_6) goto LAB_0005872a;\n        piVar6 = (int *)(param_5 + param_6 * 4);\n        iVar3 = *piVar6;\n        *piVar6 = iVar3 + -1;\n        if (iVar3 == 0) {\n          if (param_3 <= param_6 + 1) goto LAB_0005872a;\n          piVar6 = (int *)(param_6 * 4 + 4 + param_5);\n          param_6 = param_6 + 2;\n          iVar3 = *piVar6;\n          *piVar6 = iVar3 + -1;\n          while (iVar3 == 0) {\n            if (param_6 == param_3) goto LAB_0005872a;\n            iVar3 = *(int *)(param_5 + param_6 * 4);\n            param_6 = param_6 + 1;\n            *(int *)(param_5 + -4 + param_6 * 4) = iVar3 + -1;\n          }\n        }\n      }\n      uVar8 = uVar5;\n      uVar11 = local_3c | uVar5;\n    }" { (labeled_statement "LAB_00058955:\n      uVar5 = 0;" statement_identifier : (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;)) (expression_statement "uVar8 = 0xffffffff;" (assignment_expression "uVar8 = 0xffffffff" identifier = number_literal) ;) (expression_statement "uVar11 = 0xffffffff;" (assignment_expression "uVar11 = 0xffffffff" identifier = number_literal) ;) (labeled_statement "LAB_0005895f:\n      iVar3 = __gmpn_sub_n(param_5,param_5,iVar3,param_6);" statement_identifier : (expression_statement "iVar3 = __gmpn_sub_n(param_5,param_5,iVar3,param_6);" (assignment_expression "iVar3 = __gmpn_sub_n(param_5,param_5,iVar3,param_6)" identifier = (call_expression "__gmpn_sub_n(param_5,param_5,iVar3,param_6)" identifier (argument_list "(param_5,param_5,iVar3,param_6)" ( identifier , identifier , identifier , identifier )))) ;)) (if_statement "if (iVar3 != 0) {\n        if (param_3 <= param_6) goto LAB_0005872a;\n        piVar6 = (int *)(param_5 + param_6 * 4);\n        iVar3 = *piVar6;\n        *piVar6 = iVar3 + -1;\n        if (iVar3 == 0) {\n          if (param_3 <= param_6 + 1) goto LAB_0005872a;\n          piVar6 = (int *)(param_6 * 4 + 4 + param_5);\n          param_6 = param_6 + 2;\n          iVar3 = *piVar6;\n          *piVar6 = iVar3 + -1;\n          while (iVar3 == 0) {\n            if (param_6 == param_3) goto LAB_0005872a;\n            iVar3 = *(int *)(param_5 + param_6 * 4);\n            param_6 = param_6 + 1;\n            *(int *)(param_5 + -4 + param_6 * 4) = iVar3 + -1;\n          }\n        }\n      }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n        if (param_3 <= param_6) goto LAB_0005872a;\n        piVar6 = (int *)(param_5 + param_6 * 4);\n        iVar3 = *piVar6;\n        *piVar6 = iVar3 + -1;\n        if (iVar3 == 0) {\n          if (param_3 <= param_6 + 1) goto LAB_0005872a;\n          piVar6 = (int *)(param_6 * 4 + 4 + param_5);\n          param_6 = param_6 + 2;\n          iVar3 = *piVar6;\n          *piVar6 = iVar3 + -1;\n          while (iVar3 == 0) {\n            if (param_6 == param_3) goto LAB_0005872a;\n            iVar3 = *(int *)(param_5 + param_6 * 4);\n            param_6 = param_6 + 1;\n            *(int *)(param_5 + -4 + param_6 * 4) = iVar3 + -1;\n          }\n        }\n      }" { (if_statement "if (param_3 <= param_6) goto LAB_0005872a;" if (parenthesized_expression "(param_3 <= param_6)" ( (binary_expression "param_3 <= param_6" identifier <= identifier) )) (goto_statement "goto LAB_0005872a;" goto statement_identifier ;)) (expression_statement "piVar6 = (int *)(param_5 + param_6 * 4);" (assignment_expression "piVar6 = (int *)(param_5 + param_6 * 4)" identifier = (cast_expression "(int *)(param_5 + param_6 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + param_6 * 4)" ( (binary_expression "param_5 + param_6 * 4" identifier + (binary_expression "param_6 * 4" identifier * number_literal)) )))) ;) (expression_statement "iVar3 = *piVar6;" (assignment_expression "iVar3 = *piVar6" identifier = (pointer_expression "*piVar6" * identifier)) ;) (expression_statement "*piVar6 = iVar3 + -1;" (assignment_expression "*piVar6 = iVar3 + -1" (pointer_expression "*piVar6" * identifier) = (binary_expression "iVar3 + -1" identifier + number_literal)) ;) (if_statement "if (iVar3 == 0) {\n          if (param_3 <= param_6 + 1) goto LAB_0005872a;\n          piVar6 = (int *)(param_6 * 4 + 4 + param_5);\n          param_6 = param_6 + 2;\n          iVar3 = *piVar6;\n          *piVar6 = iVar3 + -1;\n          while (iVar3 == 0) {\n            if (param_6 == param_3) goto LAB_0005872a;\n            iVar3 = *(int *)(param_5 + param_6 * 4);\n            param_6 = param_6 + 1;\n            *(int *)(param_5 + -4 + param_6 * 4) = iVar3 + -1;\n          }\n        }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n          if (param_3 <= param_6 + 1) goto LAB_0005872a;\n          piVar6 = (int *)(param_6 * 4 + 4 + param_5);\n          param_6 = param_6 + 2;\n          iVar3 = *piVar6;\n          *piVar6 = iVar3 + -1;\n          while (iVar3 == 0) {\n            if (param_6 == param_3) goto LAB_0005872a;\n            iVar3 = *(int *)(param_5 + param_6 * 4);\n            param_6 = param_6 + 1;\n            *(int *)(param_5 + -4 + param_6 * 4) = iVar3 + -1;\n          }\n        }" { (if_statement "if (param_3 <= param_6 + 1) goto LAB_0005872a;" if (parenthesized_expression "(param_3 <= param_6 + 1)" ( (binary_expression "param_3 <= param_6 + 1" identifier <= (binary_expression "param_6 + 1" identifier + number_literal)) )) (goto_statement "goto LAB_0005872a;" goto statement_identifier ;)) (expression_statement "piVar6 = (int *)(param_6 * 4 + 4 + param_5);" (assignment_expression "piVar6 = (int *)(param_6 * 4 + 4 + param_5)" identifier = (cast_expression "(int *)(param_6 * 4 + 4 + param_5)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 * 4 + 4 + param_5)" ( (binary_expression "param_6 * 4 + 4 + param_5" (binary_expression "param_6 * 4 + 4" (binary_expression "param_6 * 4" identifier * number_literal) + number_literal) + identifier) )))) ;) (expression_statement "param_6 = param_6 + 2;" (assignment_expression "param_6 = param_6 + 2" identifier = (binary_expression "param_6 + 2" identifier + number_literal)) ;) (expression_statement "iVar3 = *piVar6;" (assignment_expression "iVar3 = *piVar6" identifier = (pointer_expression "*piVar6" * identifier)) ;) (expression_statement "*piVar6 = iVar3 + -1;" (assignment_expression "*piVar6 = iVar3 + -1" (pointer_expression "*piVar6" * identifier) = (binary_expression "iVar3 + -1" identifier + number_literal)) ;) (while_statement "while (iVar3 == 0) {\n            if (param_6 == param_3) goto LAB_0005872a;\n            iVar3 = *(int *)(param_5 + param_6 * 4);\n            param_6 = param_6 + 1;\n            *(int *)(param_5 + -4 + param_6 * 4) = iVar3 + -1;\n          }" while (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n            if (param_6 == param_3) goto LAB_0005872a;\n            iVar3 = *(int *)(param_5 + param_6 * 4);\n            param_6 = param_6 + 1;\n            *(int *)(param_5 + -4 + param_6 * 4) = iVar3 + -1;\n          }" { (if_statement "if (param_6 == param_3) goto LAB_0005872a;" if (parenthesized_expression "(param_6 == param_3)" ( (binary_expression "param_6 == param_3" identifier == identifier) )) (goto_statement "goto LAB_0005872a;" goto statement_identifier ;)) (expression_statement "iVar3 = *(int *)(param_5 + param_6 * 4);" (assignment_expression "iVar3 = *(int *)(param_5 + param_6 * 4)" identifier = (pointer_expression "*(int *)(param_5 + param_6 * 4)" * (cast_expression "(int *)(param_5 + param_6 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + param_6 * 4)" ( (binary_expression "param_5 + param_6 * 4" identifier + (binary_expression "param_6 * 4" identifier * number_literal)) ))))) ;) (expression_statement "param_6 = param_6 + 1;" (assignment_expression "param_6 = param_6 + 1" identifier = (binary_expression "param_6 + 1" identifier + number_literal)) ;) (expression_statement "*(int *)(param_5 + -4 + param_6 * 4) = iVar3 + -1;" (assignment_expression "*(int *)(param_5 + -4 + param_6 * 4) = iVar3 + -1" (pointer_expression "*(int *)(param_5 + -4 + param_6 * 4)" * (cast_expression "(int *)(param_5 + -4 + param_6 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + -4 + param_6 * 4)" ( (binary_expression "param_5 + -4 + param_6 * 4" (binary_expression "param_5 + -4" identifier + number_literal) + (binary_expression "param_6 * 4" identifier * number_literal)) )))) = (binary_expression "iVar3 + -1" identifier + number_literal)) ;) })) })) })) (expression_statement "uVar8 = uVar5;" (assignment_expression "uVar8 = uVar5" identifier = identifier) ;) (expression_statement "uVar11 = local_3c | uVar5;" (assignment_expression "uVar11 = local_3c | uVar5" identifier = (binary_expression "local_3c | uVar5" identifier | identifier)) ;) })) }) (else_clause "else {\n    iVar10 = iVar2 + param_5;\n    iVar2 = __gmpn_add_n(iVar10,iVar10,iVar2 + param_7,iVar7);\n    if (iVar2 != 0) {\n      if (iVar7 < iVar1) {\n        piVar6 = (int *)(iVar10 + iVar7 * 4);\n        *piVar6 = *piVar6 + 1;\n        if (*piVar6 == 0) {\n          if (iVar1 <= iVar7 + 1) goto LAB_000588e3;\n          piVar6 = (int *)(iVar7 * 4 + 4 + iVar10);\n          iVar7 = iVar7 + 2;\n          *piVar6 = *piVar6 + 1;\n          iVar2 = *piVar6;\n          while (iVar2 == 0) {\n            if (iVar1 == iVar7) goto LAB_000588e3;\n            iVar2 = iVar7 * 4;\n            iVar7 = iVar7 + 1;\n            iVar2 = *(int *)(iVar10 + iVar2) + 1;\n            *(int *)(iVar10 + -4 + iVar7 * 4) = iVar2;\n          }\n        }\n        goto LAB_00058940;\n      }\nLAB_000588e3:\n      uVar8 = 1;\n      param_6 = param_6 + *(int *)(unaff_retaddr + 4);\n      if (param_6 == 0) goto LAB_000588f5;\n      uVar8 = 0;\n      uVar5 = 1;\n      goto LAB_0005895f;\n    }\nLAB_00058940:\n    uVar8 = 0;\n    param_6 = param_6 + *(int *)(unaff_retaddr + 4);\n    if (param_6 != 0) goto LAB_00058955;\n  }" else (compound_statement "{\n    iVar10 = iVar2 + param_5;\n    iVar2 = __gmpn_add_n(iVar10,iVar10,iVar2 + param_7,iVar7);\n    if (iVar2 != 0) {\n      if (iVar7 < iVar1) {\n        piVar6 = (int *)(iVar10 + iVar7 * 4);\n        *piVar6 = *piVar6 + 1;\n        if (*piVar6 == 0) {\n          if (iVar1 <= iVar7 + 1) goto LAB_000588e3;\n          piVar6 = (int *)(iVar7 * 4 + 4 + iVar10);\n          iVar7 = iVar7 + 2;\n          *piVar6 = *piVar6 + 1;\n          iVar2 = *piVar6;\n          while (iVar2 == 0) {\n            if (iVar1 == iVar7) goto LAB_000588e3;\n            iVar2 = iVar7 * 4;\n            iVar7 = iVar7 + 1;\n            iVar2 = *(int *)(iVar10 + iVar2) + 1;\n            *(int *)(iVar10 + -4 + iVar7 * 4) = iVar2;\n          }\n        }\n        goto LAB_00058940;\n      }\nLAB_000588e3:\n      uVar8 = 1;\n      param_6 = param_6 + *(int *)(unaff_retaddr + 4);\n      if (param_6 == 0) goto LAB_000588f5;\n      uVar8 = 0;\n      uVar5 = 1;\n      goto LAB_0005895f;\n    }\nLAB_00058940:\n    uVar8 = 0;\n    param_6 = param_6 + *(int *)(unaff_retaddr + 4);\n    if (param_6 != 0) goto LAB_00058955;\n  }" { (expression_statement "iVar10 = iVar2 + param_5;" (assignment_expression "iVar10 = iVar2 + param_5" identifier = (binary_expression "iVar2 + param_5" identifier + identifier)) ;) (expression_statement "iVar2 = __gmpn_add_n(iVar10,iVar10,iVar2 + param_7,iVar7);" (assignment_expression "iVar2 = __gmpn_add_n(iVar10,iVar10,iVar2 + param_7,iVar7)" identifier = (call_expression "__gmpn_add_n(iVar10,iVar10,iVar2 + param_7,iVar7)" identifier (argument_list "(iVar10,iVar10,iVar2 + param_7,iVar7)" ( identifier , identifier , (binary_expression "iVar2 + param_7" identifier + identifier) , identifier )))) ;) (if_statement "if (iVar2 != 0) {\n      if (iVar7 < iVar1) {\n        piVar6 = (int *)(iVar10 + iVar7 * 4);\n        *piVar6 = *piVar6 + 1;\n        if (*piVar6 == 0) {\n          if (iVar1 <= iVar7 + 1) goto LAB_000588e3;\n          piVar6 = (int *)(iVar7 * 4 + 4 + iVar10);\n          iVar7 = iVar7 + 2;\n          *piVar6 = *piVar6 + 1;\n          iVar2 = *piVar6;\n          while (iVar2 == 0) {\n            if (iVar1 == iVar7) goto LAB_000588e3;\n            iVar2 = iVar7 * 4;\n            iVar7 = iVar7 + 1;\n            iVar2 = *(int *)(iVar10 + iVar2) + 1;\n            *(int *)(iVar10 + -4 + iVar7 * 4) = iVar2;\n          }\n        }\n        goto LAB_00058940;\n      }\nLAB_000588e3:\n      uVar8 = 1;\n      param_6 = param_6 + *(int *)(unaff_retaddr + 4);\n      if (param_6 == 0) goto LAB_000588f5;\n      uVar8 = 0;\n      uVar5 = 1;\n      goto LAB_0005895f;\n    }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      if (iVar7 < iVar1) {\n        piVar6 = (int *)(iVar10 + iVar7 * 4);\n        *piVar6 = *piVar6 + 1;\n        if (*piVar6 == 0) {\n          if (iVar1 <= iVar7 + 1) goto LAB_000588e3;\n          piVar6 = (int *)(iVar7 * 4 + 4 + iVar10);\n          iVar7 = iVar7 + 2;\n          *piVar6 = *piVar6 + 1;\n          iVar2 = *piVar6;\n          while (iVar2 == 0) {\n            if (iVar1 == iVar7) goto LAB_000588e3;\n            iVar2 = iVar7 * 4;\n            iVar7 = iVar7 + 1;\n            iVar2 = *(int *)(iVar10 + iVar2) + 1;\n            *(int *)(iVar10 + -4 + iVar7 * 4) = iVar2;\n          }\n        }\n        goto LAB_00058940;\n      }\nLAB_000588e3:\n      uVar8 = 1;\n      param_6 = param_6 + *(int *)(unaff_retaddr + 4);\n      if (param_6 == 0) goto LAB_000588f5;\n      uVar8 = 0;\n      uVar5 = 1;\n      goto LAB_0005895f;\n    }" { (if_statement "if (iVar7 < iVar1) {\n        piVar6 = (int *)(iVar10 + iVar7 * 4);\n        *piVar6 = *piVar6 + 1;\n        if (*piVar6 == 0) {\n          if (iVar1 <= iVar7 + 1) goto LAB_000588e3;\n          piVar6 = (int *)(iVar7 * 4 + 4 + iVar10);\n          iVar7 = iVar7 + 2;\n          *piVar6 = *piVar6 + 1;\n          iVar2 = *piVar6;\n          while (iVar2 == 0) {\n            if (iVar1 == iVar7) goto LAB_000588e3;\n            iVar2 = iVar7 * 4;\n            iVar7 = iVar7 + 1;\n            iVar2 = *(int *)(iVar10 + iVar2) + 1;\n            *(int *)(iVar10 + -4 + iVar7 * 4) = iVar2;\n          }\n        }\n        goto LAB_00058940;\n      }" if (parenthesized_expression "(iVar7 < iVar1)" ( (binary_expression "iVar7 < iVar1" identifier < identifier) )) (compound_statement "{\n        piVar6 = (int *)(iVar10 + iVar7 * 4);\n        *piVar6 = *piVar6 + 1;\n        if (*piVar6 == 0) {\n          if (iVar1 <= iVar7 + 1) goto LAB_000588e3;\n          piVar6 = (int *)(iVar7 * 4 + 4 + iVar10);\n          iVar7 = iVar7 + 2;\n          *piVar6 = *piVar6 + 1;\n          iVar2 = *piVar6;\n          while (iVar2 == 0) {\n            if (iVar1 == iVar7) goto LAB_000588e3;\n            iVar2 = iVar7 * 4;\n            iVar7 = iVar7 + 1;\n            iVar2 = *(int *)(iVar10 + iVar2) + 1;\n            *(int *)(iVar10 + -4 + iVar7 * 4) = iVar2;\n          }\n        }\n        goto LAB_00058940;\n      }" { (expression_statement "piVar6 = (int *)(iVar10 + iVar7 * 4);" (assignment_expression "piVar6 = (int *)(iVar10 + iVar7 * 4)" identifier = (cast_expression "(int *)(iVar10 + iVar7 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + iVar7 * 4)" ( (binary_expression "iVar10 + iVar7 * 4" identifier + (binary_expression "iVar7 * 4" identifier * number_literal)) )))) ;) (expression_statement "*piVar6 = *piVar6 + 1;" (assignment_expression "*piVar6 = *piVar6 + 1" (pointer_expression "*piVar6" * identifier) = (binary_expression "*piVar6 + 1" (pointer_expression "*piVar6" * identifier) + number_literal)) ;) (if_statement "if (*piVar6 == 0) {\n          if (iVar1 <= iVar7 + 1) goto LAB_000588e3;\n          piVar6 = (int *)(iVar7 * 4 + 4 + iVar10);\n          iVar7 = iVar7 + 2;\n          *piVar6 = *piVar6 + 1;\n          iVar2 = *piVar6;\n          while (iVar2 == 0) {\n            if (iVar1 == iVar7) goto LAB_000588e3;\n            iVar2 = iVar7 * 4;\n            iVar7 = iVar7 + 1;\n            iVar2 = *(int *)(iVar10 + iVar2) + 1;\n            *(int *)(iVar10 + -4 + iVar7 * 4) = iVar2;\n          }\n        }" if (parenthesized_expression "(*piVar6 == 0)" ( (binary_expression "*piVar6 == 0" (pointer_expression "*piVar6" * identifier) == number_literal) )) (compound_statement "{\n          if (iVar1 <= iVar7 + 1) goto LAB_000588e3;\n          piVar6 = (int *)(iVar7 * 4 + 4 + iVar10);\n          iVar7 = iVar7 + 2;\n          *piVar6 = *piVar6 + 1;\n          iVar2 = *piVar6;\n          while (iVar2 == 0) {\n            if (iVar1 == iVar7) goto LAB_000588e3;\n            iVar2 = iVar7 * 4;\n            iVar7 = iVar7 + 1;\n            iVar2 = *(int *)(iVar10 + iVar2) + 1;\n            *(int *)(iVar10 + -4 + iVar7 * 4) = iVar2;\n          }\n        }" { (if_statement "if (iVar1 <= iVar7 + 1) goto LAB_000588e3;" if (parenthesized_expression "(iVar1 <= iVar7 + 1)" ( (binary_expression "iVar1 <= iVar7 + 1" identifier <= (binary_expression "iVar7 + 1" identifier + number_literal)) )) (goto_statement "goto LAB_000588e3;" goto statement_identifier ;)) (expression_statement "piVar6 = (int *)(iVar7 * 4 + 4 + iVar10);" (assignment_expression "piVar6 = (int *)(iVar7 * 4 + 4 + iVar10)" identifier = (cast_expression "(int *)(iVar7 * 4 + 4 + iVar10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 * 4 + 4 + iVar10)" ( (binary_expression "iVar7 * 4 + 4 + iVar10" (binary_expression "iVar7 * 4 + 4" (binary_expression "iVar7 * 4" identifier * number_literal) + number_literal) + identifier) )))) ;) (expression_statement "iVar7 = iVar7 + 2;" (assignment_expression "iVar7 = iVar7 + 2" identifier = (binary_expression "iVar7 + 2" identifier + number_literal)) ;) (expression_statement "*piVar6 = *piVar6 + 1;" (assignment_expression "*piVar6 = *piVar6 + 1" (pointer_expression "*piVar6" * identifier) = (binary_expression "*piVar6 + 1" (pointer_expression "*piVar6" * identifier) + number_literal)) ;) (expression_statement "iVar2 = *piVar6;" (assignment_expression "iVar2 = *piVar6" identifier = (pointer_expression "*piVar6" * identifier)) ;) (while_statement "while (iVar2 == 0) {\n            if (iVar1 == iVar7) goto LAB_000588e3;\n            iVar2 = iVar7 * 4;\n            iVar7 = iVar7 + 1;\n            iVar2 = *(int *)(iVar10 + iVar2) + 1;\n            *(int *)(iVar10 + -4 + iVar7 * 4) = iVar2;\n          }" while (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n            if (iVar1 == iVar7) goto LAB_000588e3;\n            iVar2 = iVar7 * 4;\n            iVar7 = iVar7 + 1;\n            iVar2 = *(int *)(iVar10 + iVar2) + 1;\n            *(int *)(iVar10 + -4 + iVar7 * 4) = iVar2;\n          }" { (if_statement "if (iVar1 == iVar7) goto LAB_000588e3;" if (parenthesized_expression "(iVar1 == iVar7)" ( (binary_expression "iVar1 == iVar7" identifier == identifier) )) (goto_statement "goto LAB_000588e3;" goto statement_identifier ;)) (expression_statement "iVar2 = iVar7 * 4;" (assignment_expression "iVar2 = iVar7 * 4" identifier = (binary_expression "iVar7 * 4" identifier * number_literal)) ;) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "iVar2 = *(int *)(iVar10 + iVar2) + 1;" (assignment_expression "iVar2 = *(int *)(iVar10 + iVar2) + 1" identifier = (binary_expression "*(int *)(iVar10 + iVar2) + 1" (pointer_expression "*(int *)(iVar10 + iVar2)" * (cast_expression "(int *)(iVar10 + iVar2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + iVar2)" ( (binary_expression "iVar10 + iVar2" identifier + identifier) )))) + number_literal)) ;) (expression_statement "*(int *)(iVar10 + -4 + iVar7 * 4) = iVar2;" (assignment_expression "*(int *)(iVar10 + -4 + iVar7 * 4) = iVar2" (pointer_expression "*(int *)(iVar10 + -4 + iVar7 * 4)" * (cast_expression "(int *)(iVar10 + -4 + iVar7 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + -4 + iVar7 * 4)" ( (binary_expression "iVar10 + -4 + iVar7 * 4" (binary_expression "iVar10 + -4" identifier + number_literal) + (binary_expression "iVar7 * 4" identifier * number_literal)) )))) = identifier) ;) })) })) (goto_statement "goto LAB_00058940;" goto statement_identifier ;) })) (labeled_statement "LAB_000588e3:\n      uVar8 = 1;" statement_identifier : (expression_statement "uVar8 = 1;" (assignment_expression "uVar8 = 1" identifier = number_literal) ;)) (expression_statement "param_6 = param_6 + *(int *)(unaff_retaddr + 4);" (assignment_expression "param_6 = param_6 + *(int *)(unaff_retaddr + 4)" identifier = (binary_expression "param_6 + *(int *)(unaff_retaddr + 4)" identifier + (pointer_expression "*(int *)(unaff_retaddr + 4)" * (cast_expression "(int *)(unaff_retaddr + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + 4)" ( (binary_expression "unaff_retaddr + 4" identifier + number_literal) )))))) ;) (if_statement "if (param_6 == 0) goto LAB_000588f5;" if (parenthesized_expression "(param_6 == 0)" ( (binary_expression "param_6 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000588f5;" goto statement_identifier ;)) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_0005895f;" goto statement_identifier ;) })) (labeled_statement "LAB_00058940:\n    uVar8 = 0;" statement_identifier : (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;)) (expression_statement "param_6 = param_6 + *(int *)(unaff_retaddr + 4);" (assignment_expression "param_6 = param_6 + *(int *)(unaff_retaddr + 4)" identifier = (binary_expression "param_6 + *(int *)(unaff_retaddr + 4)" identifier + (pointer_expression "*(int *)(unaff_retaddr + 4)" * (cast_expression "(int *)(unaff_retaddr + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + 4)" ( (binary_expression "unaff_retaddr + 4" identifier + number_literal) )))))) ;) (if_statement "if (param_6 != 0) goto LAB_00058955;" if (parenthesized_expression "(param_6 != 0)" ( (binary_expression "param_6 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00058955;" goto statement_identifier ;)) }))) (labeled_statement "LAB_0005872a:\n  if (uVar11 == 0) {\n    if (*(int *)(param_4 + (param_3 + 0x3fffffff) * 4) == 0) {\n      param_3 = param_3 - (uint)(*(int *)(param_5 + (param_3 + 0x3fffffff) * 4) == 0);\n    }\n    return param_3;\n  }" statement_identifier : (if_statement "if (uVar11 == 0) {\n    if (*(int *)(param_4 + (param_3 + 0x3fffffff) * 4) == 0) {\n      param_3 = param_3 - (uint)(*(int *)(param_5 + (param_3 + 0x3fffffff) * 4) == 0);\n    }\n    return param_3;\n  }" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (compound_statement "{\n    if (*(int *)(param_4 + (param_3 + 0x3fffffff) * 4) == 0) {\n      param_3 = param_3 - (uint)(*(int *)(param_5 + (param_3 + 0x3fffffff) * 4) == 0);\n    }\n    return param_3;\n  }" { (if_statement "if (*(int *)(param_4 + (param_3 + 0x3fffffff) * 4) == 0) {\n      param_3 = param_3 - (uint)(*(int *)(param_5 + (param_3 + 0x3fffffff) * 4) == 0);\n    }" if (parenthesized_expression "(*(int *)(param_4 + (param_3 + 0x3fffffff) * 4) == 0)" ( (binary_expression "*(int *)(param_4 + (param_3 + 0x3fffffff) * 4) == 0" (pointer_expression "*(int *)(param_4 + (param_3 + 0x3fffffff) * 4)" * (cast_expression "(int *)(param_4 + (param_3 + 0x3fffffff) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + (param_3 + 0x3fffffff) * 4)" ( (binary_expression "param_4 + (param_3 + 0x3fffffff) * 4" identifier + (binary_expression "(param_3 + 0x3fffffff) * 4" (parenthesized_expression "(param_3 + 0x3fffffff)" ( (binary_expression "param_3 + 0x3fffffff" identifier + number_literal) )) * number_literal)) )))) == number_literal) )) (compound_statement "{\n      param_3 = param_3 - (uint)(*(int *)(param_5 + (param_3 + 0x3fffffff) * 4) == 0);\n    }" { (expression_statement "param_3 = param_3 - (uint)(*(int *)(param_5 + (param_3 + 0x3fffffff) * 4) == 0);" (assignment_expression "param_3 = param_3 - (uint)(*(int *)(param_5 + (param_3 + 0x3fffffff) * 4) == 0)" identifier = (binary_expression "param_3 - (uint)(*(int *)(param_5 + (param_3 + 0x3fffffff) * 4) == 0)" identifier - (call_expression "(uint)(*(int *)(param_5 + (param_3 + 0x3fffffff) * 4) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(param_5 + (param_3 + 0x3fffffff) * 4) == 0)" ( (binary_expression "*(int *)(param_5 + (param_3 + 0x3fffffff) * 4) == 0" (pointer_expression "*(int *)(param_5 + (param_3 + 0x3fffffff) * 4)" * (cast_expression "(int *)(param_5 + (param_3 + 0x3fffffff) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + (param_3 + 0x3fffffff) * 4)" ( (binary_expression "param_5 + (param_3 + 0x3fffffff) * 4" identifier + (binary_expression "(param_3 + 0x3fffffff) * 4" (parenthesized_expression "(param_3 + 0x3fffffff)" ( (binary_expression "param_3 + 0x3fffffff" identifier + number_literal) )) * number_literal)) )))) == number_literal) ))))) ;) })) (return_statement "return param_3;" return identifier ;) }))) (labeled_statement "LAB_000588f5:\n  *(uint *)(param_4 + param_3 * 4) = local_3c;" statement_identifier : (expression_statement "*(uint *)(param_4 + param_3 * 4) = local_3c;" (assignment_expression "*(uint *)(param_4 + param_3 * 4) = local_3c" (pointer_expression "*(uint *)(param_4 + param_3 * 4)" * (cast_expression "(uint *)(param_4 + param_3 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + param_3 * 4)" ( (binary_expression "param_4 + param_3 * 4" identifier + (binary_expression "param_3 * 4" identifier * number_literal)) )))) = identifier) ;)) (expression_statement "*(uint *)(param_5 + param_3 * 4) = uVar8;" (assignment_expression "*(uint *)(param_5 + param_3 * 4) = uVar8" (pointer_expression "*(uint *)(param_5 + param_3 * 4)" * (cast_expression "(uint *)(param_5 + param_3 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + param_3 * 4)" ( (binary_expression "param_5 + param_3 * 4" identifier + (binary_expression "param_3 * 4" identifier * number_literal)) )))) = identifier) ;) (return_statement "return param_3 + 1;" return (binary_expression "param_3 + 1" identifier + number_literal) ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT + IDENT) )) * LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , IDENT ))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression IDENT + IDENT) , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT * LIT) + LIT) + IDENT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) )))) = IDENT) ;) })) (goto_statement goto statement_identifier ;) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (binary_expression IDENT + LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) )))) = (binary_expression IDENT + LIT)) ;) })) })) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , IDENT , IDENT ))) ;) })))) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (binary_expression IDENT + LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT * LIT) + LIT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) )))) = (binary_expression IDENT + LIT)) ;) })) })) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | IDENT)) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression IDENT + IDENT) , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (binary_expression IDENT + LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT * LIT) + LIT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) )))) = IDENT) ;) })) })) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = (binary_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) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = (binary_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) )) (goto_statement goto statement_identifier ;)) }))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT)) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT)) )))) == LIT) ))))) ;) })) (return_statement return IDENT ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = IDENT) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = IDENT) ;) (return_statement return (binary_expression IDENT + LIT) ;) })))
(function_definition "int __regparm2\n__gmpn_hgcd_matrix_adjust\n          (undefined4 param_1,undefined4 param_2,int param_3,int param_4,int param_5,int param_6,\n          int param_7)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  uint uVar5;\n  int unaff_EBX;\n  int *piVar6;\n  int iVar7;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  int unaff_retaddr;\n  uint local_3c;\n  \n  entry(param_2,0x585f9);\n  iVar2 = *(int *)(unaff_retaddr + 4);\n  iVar3 = param_7 + (iVar2 + param_6) * 4;\n  if (iVar2 < param_6) {\n    __gmpn_mul(param_7,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x14),iVar2);\n    __gmpn_mul(iVar3,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x10),\n               *(undefined4 *)(unaff_retaddr + 4));\n  }\n  else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0x14),iVar2,param_4,param_6);\n    __gmpn_mul(iVar3,*(undefined4 *)(unaff_retaddr + 0x10),*(undefined4 *)(unaff_retaddr + 4),\n               param_4,param_6);\n  }\n  iVar7 = *(int *)(unaff_EBX + 0x4579b);\n  (**(code **)(iVar7 + 0x28))(param_4,param_7,param_6);\n  iVar10 = *(int *)(unaff_retaddr + 4);\n  iVar2 = param_6 * 4;\n  iVar1 = param_3 - param_6;\n  local_3c = 0;\n  if (iVar10 != 0) {\n    iVar4 = iVar2 + param_4;\n    local_3c = __gmpn_add_n(iVar4,iVar4,iVar2 + param_7,iVar10);\n    if (local_3c == 0) {\nLAB_00058ac0:\n      iVar10 = *(int *)(unaff_retaddr + 4);\n    }\n    else {\n      if (iVar10 < iVar1) {\n        piVar6 = (int *)(iVar4 + iVar10 * 4);\n        iVar9 = *piVar6 + 1;\n        *piVar6 = iVar9;\n        if (iVar9 != 0) {\n          local_3c = 0;\n          iVar10 = *(int *)(unaff_retaddr + 4);\n          goto LAB_000586a5;\n        }\n        if (iVar10 + 1 < iVar1) {\n          iVar9 = iVar10 + 2;\n          piVar6 = (int *)(iVar10 * 4 + 4 + iVar4);\n          *piVar6 = *piVar6 + 1;\n          iVar10 = *piVar6;\n          local_3c = 0;\n          while (iVar10 == 0) {\n            if (iVar1 == iVar9) goto LAB_00058aa3;\n            iVar10 = iVar9 * 4;\n            iVar9 = iVar9 + 1;\n            iVar10 = *(int *)(iVar4 + iVar10) + 1;\n            *(int *)(iVar4 + -4 + iVar9 * 4) = iVar10;\n          }\n          goto LAB_00058ac0;\n        }\n      }\nLAB_00058aa3:\n      local_3c = 1;\n      iVar10 = *(int *)(unaff_retaddr + 4);\n    }\n  }\nLAB_000586a5:\n  if (iVar10 < param_6) {\n    __gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 0xc),iVar10);\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }\n  else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0xc),iVar10,param_5,param_6);\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }\n  iVar4 = iVar10 + param_6;\n  if (iVar4 != 0) {\n    iVar10 = __gmpn_sub_n(param_4,param_4,param_7,iVar4);\n    if (iVar10 != 0) {\n      if (param_3 <= iVar4) {\nLAB_00058815:\n        local_3c = local_3c - 1;\n        iVar10 = *(int *)(unaff_retaddr + 4);\n        goto LAB_000586d8;\n      }\n      piVar6 = (int *)(param_4 + iVar4 * 4);\n      iVar10 = *piVar6;\n      *piVar6 = iVar10 + -1;\n      if (iVar10 == 0) {\n        if (param_3 <= iVar4 + 1) goto LAB_00058815;\n        iVar9 = iVar4 + 2;\n        piVar6 = (int *)(param_4 + (iVar4 + 1) * 4);\n        iVar10 = *piVar6;\n        *piVar6 = iVar10 + -1;\n        while (iVar10 == 0) {\n          if (iVar9 == param_3) goto LAB_00058815;\n          iVar10 = *(int *)(param_4 + iVar9 * 4);\n          iVar9 = iVar9 + 1;\n          *(int *)(param_4 + -4 + iVar9 * 4) = iVar10 + -1;\n        }\n      }\n    }\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }\nLAB_000586d8:\n  if (iVar10 < param_6) {\n    __gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 8),iVar10);\n  }\n  else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 8),iVar10,param_5,param_6);\n  }\n  (**(code **)(iVar7 + 0x28))(param_5,param_7,param_6);\n  iVar7 = *(int *)(unaff_retaddr + 4);\n  uVar11 = local_3c;\n  if (iVar7 == 0) {\n    uVar8 = 0;\n    if (param_6 != 0) {\nLAB_00058955:\n      uVar5 = 0;\n      uVar8 = 0xffffffff;\n      uVar11 = 0xffffffff;\nLAB_0005895f:\n      iVar3 = __gmpn_sub_n(param_5,param_5,iVar3,param_6);\n      if (iVar3 != 0) {\n        if (param_3 <= param_6) goto LAB_0005872a;\n        piVar6 = (int *)(param_5 + param_6 * 4);\n        iVar3 = *piVar6;\n        *piVar6 = iVar3 + -1;\n        if (iVar3 == 0) {\n          if (param_3 <= param_6 + 1) goto LAB_0005872a;\n          piVar6 = (int *)(param_6 * 4 + 4 + param_5);\n          param_6 = param_6 + 2;\n          iVar3 = *piVar6;\n          *piVar6 = iVar3 + -1;\n          while (iVar3 == 0) {\n            if (param_6 == param_3) goto LAB_0005872a;\n            iVar3 = *(int *)(param_5 + param_6 * 4);\n            param_6 = param_6 + 1;\n            *(int *)(param_5 + -4 + param_6 * 4) = iVar3 + -1;\n          }\n        }\n      }\n      uVar8 = uVar5;\n      uVar11 = local_3c | uVar5;\n    }\n  }\n  else {\n    iVar10 = iVar2 + param_5;\n    iVar2 = __gmpn_add_n(iVar10,iVar10,iVar2 + param_7,iVar7);\n    if (iVar2 != 0) {\n      if (iVar7 < iVar1) {\n        piVar6 = (int *)(iVar10 + iVar7 * 4);\n        *piVar6 = *piVar6 + 1;\n        if (*piVar6 == 0) {\n          if (iVar1 <= iVar7 + 1) goto LAB_000588e3;\n          piVar6 = (int *)(iVar7 * 4 + 4 + iVar10);\n          iVar7 = iVar7 + 2;\n          *piVar6 = *piVar6 + 1;\n          iVar2 = *piVar6;\n          while (iVar2 == 0) {\n            if (iVar1 == iVar7) goto LAB_000588e3;\n            iVar2 = iVar7 * 4;\n            iVar7 = iVar7 + 1;\n            iVar2 = *(int *)(iVar10 + iVar2) + 1;\n            *(int *)(iVar10 + -4 + iVar7 * 4) = iVar2;\n          }\n        }\n        goto LAB_00058940;\n      }\nLAB_000588e3:\n      uVar8 = 1;\n      param_6 = param_6 + *(int *)(unaff_retaddr + 4);\n      if (param_6 == 0) goto LAB_000588f5;\n      uVar8 = 0;\n      uVar5 = 1;\n      goto LAB_0005895f;\n    }\nLAB_00058940:\n    uVar8 = 0;\n    param_6 = param_6 + *(int *)(unaff_retaddr + 4);\n    if (param_6 != 0) goto LAB_00058955;\n  }\nLAB_0005872a:\n  if (uVar11 == 0) {\n    if (*(int *)(param_4 + (param_3 + 0x3fffffff) * 4) == 0) {\n      param_3 = param_3 - (uint)(*(int *)(param_5 + (param_3 + 0x3fffffff) * 4) == 0);\n    }\n    return param_3;\n  }\nLAB_000588f5:\n  *(uint *)(param_4 + param_3 * 4) = local_3c;\n  *(uint *)(param_5 + param_3 * 4) = uVar8;\n  return param_3 + 1;\n}" (primitive_type "int") (ERROR "__regparm2" (identifier "__regparm2")) (function_declarator "__gmpn_hgcd_matrix_adjust\n          (undefined4 param_1,undefined4 param_2,int param_3,int param_4,int param_5,int param_6,\n          int param_7)" (identifier "__gmpn_hgcd_matrix_adjust") (parameter_list "(undefined4 param_1,undefined4 param_2,int param_3,int param_4,int param_5,int param_6,\n          int param_7)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) (, ",") (parameter_declaration "int param_5" (primitive_type "int") (identifier "param_5")) (, ",") (parameter_declaration "int param_6" (primitive_type "int") (identifier "param_6")) (, ",") (parameter_declaration "int param_7" (primitive_type "int") (identifier "param_7")) () ")"))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  uint uVar5;\n  int unaff_EBX;\n  int *piVar6;\n  int iVar7;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  int unaff_retaddr;\n  uint local_3c;\n  \n  entry(param_2,0x585f9);\n  iVar2 = *(int *)(unaff_retaddr + 4);\n  iVar3 = param_7 + (iVar2 + param_6) * 4;\n  if (iVar2 < param_6) {\n    __gmpn_mul(param_7,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x14),iVar2);\n    __gmpn_mul(iVar3,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x10),\n               *(undefined4 *)(unaff_retaddr + 4));\n  }\n  else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0x14),iVar2,param_4,param_6);\n    __gmpn_mul(iVar3,*(undefined4 *)(unaff_retaddr + 0x10),*(undefined4 *)(unaff_retaddr + 4),\n               param_4,param_6);\n  }\n  iVar7 = *(int *)(unaff_EBX + 0x4579b);\n  (**(code **)(iVar7 + 0x28))(param_4,param_7,param_6);\n  iVar10 = *(int *)(unaff_retaddr + 4);\n  iVar2 = param_6 * 4;\n  iVar1 = param_3 - param_6;\n  local_3c = 0;\n  if (iVar10 != 0) {\n    iVar4 = iVar2 + param_4;\n    local_3c = __gmpn_add_n(iVar4,iVar4,iVar2 + param_7,iVar10);\n    if (local_3c == 0) {\nLAB_00058ac0:\n      iVar10 = *(int *)(unaff_retaddr + 4);\n    }\n    else {\n      if (iVar10 < iVar1) {\n        piVar6 = (int *)(iVar4 + iVar10 * 4);\n        iVar9 = *piVar6 + 1;\n        *piVar6 = iVar9;\n        if (iVar9 != 0) {\n          local_3c = 0;\n          iVar10 = *(int *)(unaff_retaddr + 4);\n          goto LAB_000586a5;\n        }\n        if (iVar10 + 1 < iVar1) {\n          iVar9 = iVar10 + 2;\n          piVar6 = (int *)(iVar10 * 4 + 4 + iVar4);\n          *piVar6 = *piVar6 + 1;\n          iVar10 = *piVar6;\n          local_3c = 0;\n          while (iVar10 == 0) {\n            if (iVar1 == iVar9) goto LAB_00058aa3;\n            iVar10 = iVar9 * 4;\n            iVar9 = iVar9 + 1;\n            iVar10 = *(int *)(iVar4 + iVar10) + 1;\n            *(int *)(iVar4 + -4 + iVar9 * 4) = iVar10;\n          }\n          goto LAB_00058ac0;\n        }\n      }\nLAB_00058aa3:\n      local_3c = 1;\n      iVar10 = *(int *)(unaff_retaddr + 4);\n    }\n  }\nLAB_000586a5:\n  if (iVar10 < param_6) {\n    __gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 0xc),iVar10);\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }\n  else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0xc),iVar10,param_5,param_6);\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }\n  iVar4 = iVar10 + param_6;\n  if (iVar4 != 0) {\n    iVar10 = __gmpn_sub_n(param_4,param_4,param_7,iVar4);\n    if (iVar10 != 0) {\n      if (param_3 <= iVar4) {\nLAB_00058815:\n        local_3c = local_3c - 1;\n        iVar10 = *(int *)(unaff_retaddr + 4);\n        goto LAB_000586d8;\n      }\n      piVar6 = (int *)(param_4 + iVar4 * 4);\n      iVar10 = *piVar6;\n      *piVar6 = iVar10 + -1;\n      if (iVar10 == 0) {\n        if (param_3 <= iVar4 + 1) goto LAB_00058815;\n        iVar9 = iVar4 + 2;\n        piVar6 = (int *)(param_4 + (iVar4 + 1) * 4);\n        iVar10 = *piVar6;\n        *piVar6 = iVar10 + -1;\n        while (iVar10 == 0) {\n          if (iVar9 == param_3) goto LAB_00058815;\n          iVar10 = *(int *)(param_4 + iVar9 * 4);\n          iVar9 = iVar9 + 1;\n          *(int *)(param_4 + -4 + iVar9 * 4) = iVar10 + -1;\n        }\n      }\n    }\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }\nLAB_000586d8:\n  if (iVar10 < param_6) {\n    __gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 8),iVar10);\n  }\n  else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 8),iVar10,param_5,param_6);\n  }\n  (**(code **)(iVar7 + 0x28))(param_5,param_7,param_6);\n  iVar7 = *(int *)(unaff_retaddr + 4);\n  uVar11 = local_3c;\n  if (iVar7 == 0) {\n    uVar8 = 0;\n    if (param_6 != 0) {\nLAB_00058955:\n      uVar5 = 0;\n      uVar8 = 0xffffffff;\n      uVar11 = 0xffffffff;\nLAB_0005895f:\n      iVar3 = __gmpn_sub_n(param_5,param_5,iVar3,param_6);\n      if (iVar3 != 0) {\n        if (param_3 <= param_6) goto LAB_0005872a;\n        piVar6 = (int *)(param_5 + param_6 * 4);\n        iVar3 = *piVar6;\n        *piVar6 = iVar3 + -1;\n        if (iVar3 == 0) {\n          if (param_3 <= param_6 + 1) goto LAB_0005872a;\n          piVar6 = (int *)(param_6 * 4 + 4 + param_5);\n          param_6 = param_6 + 2;\n          iVar3 = *piVar6;\n          *piVar6 = iVar3 + -1;\n          while (iVar3 == 0) {\n            if (param_6 == param_3) goto LAB_0005872a;\n            iVar3 = *(int *)(param_5 + param_6 * 4);\n            param_6 = param_6 + 1;\n            *(int *)(param_5 + -4 + param_6 * 4) = iVar3 + -1;\n          }\n        }\n      }\n      uVar8 = uVar5;\n      uVar11 = local_3c | uVar5;\n    }\n  }\n  else {\n    iVar10 = iVar2 + param_5;\n    iVar2 = __gmpn_add_n(iVar10,iVar10,iVar2 + param_7,iVar7);\n    if (iVar2 != 0) {\n      if (iVar7 < iVar1) {\n        piVar6 = (int *)(iVar10 + iVar7 * 4);\n        *piVar6 = *piVar6 + 1;\n        if (*piVar6 == 0) {\n          if (iVar1 <= iVar7 + 1) goto LAB_000588e3;\n          piVar6 = (int *)(iVar7 * 4 + 4 + iVar10);\n          iVar7 = iVar7 + 2;\n          *piVar6 = *piVar6 + 1;\n          iVar2 = *piVar6;\n          while (iVar2 == 0) {\n            if (iVar1 == iVar7) goto LAB_000588e3;\n            iVar2 = iVar7 * 4;\n            iVar7 = iVar7 + 1;\n            iVar2 = *(int *)(iVar10 + iVar2) + 1;\n            *(int *)(iVar10 + -4 + iVar7 * 4) = iVar2;\n          }\n        }\n        goto LAB_00058940;\n      }\nLAB_000588e3:\n      uVar8 = 1;\n      param_6 = param_6 + *(int *)(unaff_retaddr + 4);\n      if (param_6 == 0) goto LAB_000588f5;\n      uVar8 = 0;\n      uVar5 = 1;\n      goto LAB_0005895f;\n    }\nLAB_00058940:\n    uVar8 = 0;\n    param_6 = param_6 + *(int *)(unaff_retaddr + 4);\n    if (param_6 != 0) goto LAB_00058955;\n  }\nLAB_0005872a:\n  if (uVar11 == 0) {\n    if (*(int *)(param_4 + (param_3 + 0x3fffffff) * 4) == 0) {\n      param_3 = param_3 - (uint)(*(int *)(param_5 + (param_3 + 0x3fffffff) * 4) == 0);\n    }\n    return param_3;\n  }\nLAB_000588f5:\n  *(uint *)(param_4 + param_3 * 4) = local_3c;\n  *(uint *)(param_5 + param_3 * 4) = uVar8;\n  return param_3 + 1;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "int unaff_EBX;" (primitive_type "int") (identifier "unaff_EBX") (; ";")) (declaration "int *piVar6;" (primitive_type "int") (pointer_declarator "*piVar6" (* "*") (identifier "piVar6")) (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "int unaff_retaddr;" (primitive_type "int") (identifier "unaff_retaddr") (; ";")) (declaration "uint local_3c;" (type_identifier "uint") (identifier "local_3c") (; ";")) (expression_statement "entry(param_2,0x585f9);" (call_expression "entry(param_2,0x585f9)" (identifier "entry") (argument_list "(param_2,0x585f9)" (( "(") (identifier "param_2") (, ",") (number_literal "0x585f9") () ")"))) (; ";")) (expression_statement "iVar2 = *(int *)(unaff_retaddr + 4);" (assignment_expression "iVar2 = *(int *)(unaff_retaddr + 4)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(unaff_retaddr + 4)" (* "*") (cast_expression "(int *)(unaff_retaddr + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_retaddr + 4)" (( "(") (binary_expression "unaff_retaddr + 4" (identifier "unaff_retaddr") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "iVar3 = param_7 + (iVar2 + param_6) * 4;" (assignment_expression "iVar3 = param_7 + (iVar2 + param_6) * 4" (identifier "iVar3") (= "=") (binary_expression "param_7 + (iVar2 + param_6) * 4" (identifier "param_7") (+ "+") (binary_expression "(iVar2 + param_6) * 4" (parenthesized_expression "(iVar2 + param_6)" (( "(") (binary_expression "iVar2 + param_6" (identifier "iVar2") (+ "+") (identifier "param_6")) () ")")) (* "*") (number_literal "4")))) (; ";")) (if_statement "if (iVar2 < param_6) {\n    __gmpn_mul(param_7,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x14),iVar2);\n    __gmpn_mul(iVar3,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x10),\n               *(undefined4 *)(unaff_retaddr + 4));\n  }\n  else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0x14),iVar2,param_4,param_6);\n    __gmpn_mul(iVar3,*(undefined4 *)(unaff_retaddr + 0x10),*(undefined4 *)(unaff_retaddr + 4),\n               param_4,param_6);\n  }" (if "if") (parenthesized_expression "(iVar2 < param_6)" (( "(") (binary_expression "iVar2 < param_6" (identifier "iVar2") (< "<") (identifier "param_6")) () ")")) (compound_statement "{\n    __gmpn_mul(param_7,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x14),iVar2);\n    __gmpn_mul(iVar3,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x10),\n               *(undefined4 *)(unaff_retaddr + 4));\n  }" ({ "{") (expression_statement "__gmpn_mul(param_7,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x14),iVar2);" (call_expression "__gmpn_mul(param_7,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x14),iVar2)" (identifier "__gmpn_mul") (argument_list "(param_7,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x14),iVar2)" (( "(") (identifier "param_7") (, ",") (identifier "param_4") (, ",") (identifier "param_6") (, ",") (pointer_expression "*(undefined4 *)(unaff_retaddr + 0x14)" (* "*") (cast_expression "(undefined4 *)(unaff_retaddr + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_retaddr + 0x14)" (( "(") (binary_expression "unaff_retaddr + 0x14" (identifier "unaff_retaddr") (+ "+") (number_literal "0x14")) () ")")))) (, ",") (identifier "iVar2") () ")"))) (; ";")) (expression_statement "__gmpn_mul(iVar3,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x10),\n               *(undefined4 *)(unaff_retaddr + 4));" (call_expression "__gmpn_mul(iVar3,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x10),\n               *(undefined4 *)(unaff_retaddr + 4))" (identifier "__gmpn_mul") (argument_list "(iVar3,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x10),\n               *(undefined4 *)(unaff_retaddr + 4))" (( "(") (identifier "iVar3") (, ",") (identifier "param_4") (, ",") (identifier "param_6") (, ",") (pointer_expression "*(undefined4 *)(unaff_retaddr + 0x10)" (* "*") (cast_expression "(undefined4 *)(unaff_retaddr + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_retaddr + 0x10)" (( "(") (binary_expression "unaff_retaddr + 0x10" (identifier "unaff_retaddr") (+ "+") (number_literal "0x10")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(unaff_retaddr + 4)" (* "*") (cast_expression "(undefined4 *)(unaff_retaddr + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_retaddr + 4)" (( "(") (binary_expression "unaff_retaddr + 4" (identifier "unaff_retaddr") (+ "+") (number_literal "4")) () ")")))) () ")"))) (; ";")) (} "}")) (else_clause "else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0x14),iVar2,param_4,param_6);\n    __gmpn_mul(iVar3,*(undefined4 *)(unaff_retaddr + 0x10),*(undefined4 *)(unaff_retaddr + 4),\n               param_4,param_6);\n  }" (else "else") (compound_statement "{\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0x14),iVar2,param_4,param_6);\n    __gmpn_mul(iVar3,*(undefined4 *)(unaff_retaddr + 0x10),*(undefined4 *)(unaff_retaddr + 4),\n               param_4,param_6);\n  }" ({ "{") (expression_statement "__gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0x14),iVar2,param_4,param_6);" (call_expression "__gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0x14),iVar2,param_4,param_6)" (identifier "__gmpn_mul") (argument_list "(param_7,*(undefined4 *)(unaff_retaddr + 0x14),iVar2,param_4,param_6)" (( "(") (identifier "param_7") (, ",") (pointer_expression "*(undefined4 *)(unaff_retaddr + 0x14)" (* "*") (cast_expression "(undefined4 *)(unaff_retaddr + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_retaddr + 0x14)" (( "(") (binary_expression "unaff_retaddr + 0x14" (identifier "unaff_retaddr") (+ "+") (number_literal "0x14")) () ")")))) (, ",") (identifier "iVar2") (, ",") (identifier "param_4") (, ",") (identifier "param_6") () ")"))) (; ";")) (expression_statement "__gmpn_mul(iVar3,*(undefined4 *)(unaff_retaddr + 0x10),*(undefined4 *)(unaff_retaddr + 4),\n               param_4,param_6);" (call_expression "__gmpn_mul(iVar3,*(undefined4 *)(unaff_retaddr + 0x10),*(undefined4 *)(unaff_retaddr + 4),\n               param_4,param_6)" (identifier "__gmpn_mul") (argument_list "(iVar3,*(undefined4 *)(unaff_retaddr + 0x10),*(undefined4 *)(unaff_retaddr + 4),\n               param_4,param_6)" (( "(") (identifier "iVar3") (, ",") (pointer_expression "*(undefined4 *)(unaff_retaddr + 0x10)" (* "*") (cast_expression "(undefined4 *)(unaff_retaddr + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_retaddr + 0x10)" (( "(") (binary_expression "unaff_retaddr + 0x10" (identifier "unaff_retaddr") (+ "+") (number_literal "0x10")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(unaff_retaddr + 4)" (* "*") (cast_expression "(undefined4 *)(unaff_retaddr + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_retaddr + 4)" (( "(") (binary_expression "unaff_retaddr + 4" (identifier "unaff_retaddr") (+ "+") (number_literal "4")) () ")")))) (, ",") (identifier "param_4") (, ",") (identifier "param_6") () ")"))) (; ";")) (} "}")))) (expression_statement "iVar7 = *(int *)(unaff_EBX + 0x4579b);" (assignment_expression "iVar7 = *(int *)(unaff_EBX + 0x4579b)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(unaff_EBX + 0x4579b)" (* "*") (cast_expression "(int *)(unaff_EBX + 0x4579b)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EBX + 0x4579b)" (( "(") (binary_expression "unaff_EBX + 0x4579b" (identifier "unaff_EBX") (+ "+") (number_literal "0x4579b")) () ")"))))) (; ";")) (expression_statement "(**(code **)(iVar7 + 0x28))(param_4,param_7,param_6);" (call_expression "(**(code **)(iVar7 + 0x28))(param_4,param_7,param_6)" (parenthesized_expression "(**(code **)(iVar7 + 0x28))" (( "(") (pointer_expression "**(code **)(iVar7 + 0x28)" (* "*") (pointer_expression "*(code **)(iVar7 + 0x28)" (* "*") (cast_expression "(code **)(iVar7 + 0x28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar7 + 0x28)" (( "(") (binary_expression "iVar7 + 0x28" (identifier "iVar7") (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (argument_list "(param_4,param_7,param_6)" (( "(") (identifier "param_4") (, ",") (identifier "param_7") (, ",") (identifier "param_6") () ")"))) (; ";")) (expression_statement "iVar10 = *(int *)(unaff_retaddr + 4);" (assignment_expression "iVar10 = *(int *)(unaff_retaddr + 4)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(unaff_retaddr + 4)" (* "*") (cast_expression "(int *)(unaff_retaddr + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_retaddr + 4)" (( "(") (binary_expression "unaff_retaddr + 4" (identifier "unaff_retaddr") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "iVar2 = param_6 * 4;" (assignment_expression "iVar2 = param_6 * 4" (identifier "iVar2") (= "=") (binary_expression "param_6 * 4" (identifier "param_6") (* "*") (number_literal "4"))) (; ";")) (expression_statement "iVar1 = param_3 - param_6;" (assignment_expression "iVar1 = param_3 - param_6" (identifier "iVar1") (= "=") (binary_expression "param_3 - param_6" (identifier "param_3") (- "-") (identifier "param_6"))) (; ";")) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" (identifier "local_3c") (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar10 != 0) {\n    iVar4 = iVar2 + param_4;\n    local_3c = __gmpn_add_n(iVar4,iVar4,iVar2 + param_7,iVar10);\n    if (local_3c == 0) {\nLAB_00058ac0:\n      iVar10 = *(int *)(unaff_retaddr + 4);\n    }\n    else {\n      if (iVar10 < iVar1) {\n        piVar6 = (int *)(iVar4 + iVar10 * 4);\n        iVar9 = *piVar6 + 1;\n        *piVar6 = iVar9;\n        if (iVar9 != 0) {\n          local_3c = 0;\n          iVar10 = *(int *)(unaff_retaddr + 4);\n          goto LAB_000586a5;\n        }\n        if (iVar10 + 1 < iVar1) {\n          iVar9 = iVar10 + 2;\n          piVar6 = (int *)(iVar10 * 4 + 4 + iVar4);\n          *piVar6 = *piVar6 + 1;\n          iVar10 = *piVar6;\n          local_3c = 0;\n          while (iVar10 == 0) {\n            if (iVar1 == iVar9) goto LAB_00058aa3;\n            iVar10 = iVar9 * 4;\n            iVar9 = iVar9 + 1;\n            iVar10 = *(int *)(iVar4 + iVar10) + 1;\n            *(int *)(iVar4 + -4 + iVar9 * 4) = iVar10;\n          }\n          goto LAB_00058ac0;\n        }\n      }\nLAB_00058aa3:\n      local_3c = 1;\n      iVar10 = *(int *)(unaff_retaddr + 4);\n    }\n  }" (if "if") (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    iVar4 = iVar2 + param_4;\n    local_3c = __gmpn_add_n(iVar4,iVar4,iVar2 + param_7,iVar10);\n    if (local_3c == 0) {\nLAB_00058ac0:\n      iVar10 = *(int *)(unaff_retaddr + 4);\n    }\n    else {\n      if (iVar10 < iVar1) {\n        piVar6 = (int *)(iVar4 + iVar10 * 4);\n        iVar9 = *piVar6 + 1;\n        *piVar6 = iVar9;\n        if (iVar9 != 0) {\n          local_3c = 0;\n          iVar10 = *(int *)(unaff_retaddr + 4);\n          goto LAB_000586a5;\n        }\n        if (iVar10 + 1 < iVar1) {\n          iVar9 = iVar10 + 2;\n          piVar6 = (int *)(iVar10 * 4 + 4 + iVar4);\n          *piVar6 = *piVar6 + 1;\n          iVar10 = *piVar6;\n          local_3c = 0;\n          while (iVar10 == 0) {\n            if (iVar1 == iVar9) goto LAB_00058aa3;\n            iVar10 = iVar9 * 4;\n            iVar9 = iVar9 + 1;\n            iVar10 = *(int *)(iVar4 + iVar10) + 1;\n            *(int *)(iVar4 + -4 + iVar9 * 4) = iVar10;\n          }\n          goto LAB_00058ac0;\n        }\n      }\nLAB_00058aa3:\n      local_3c = 1;\n      iVar10 = *(int *)(unaff_retaddr + 4);\n    }\n  }" ({ "{") (expression_statement "iVar4 = iVar2 + param_4;" (assignment_expression "iVar4 = iVar2 + param_4" (identifier "iVar4") (= "=") (binary_expression "iVar2 + param_4" (identifier "iVar2") (+ "+") (identifier "param_4"))) (; ";")) (expression_statement "local_3c = __gmpn_add_n(iVar4,iVar4,iVar2 + param_7,iVar10);" (assignment_expression "local_3c = __gmpn_add_n(iVar4,iVar4,iVar2 + param_7,iVar10)" (identifier "local_3c") (= "=") (call_expression "__gmpn_add_n(iVar4,iVar4,iVar2 + param_7,iVar10)" (identifier "__gmpn_add_n") (argument_list "(iVar4,iVar4,iVar2 + param_7,iVar10)" (( "(") (identifier "iVar4") (, ",") (identifier "iVar4") (, ",") (binary_expression "iVar2 + param_7" (identifier "iVar2") (+ "+") (identifier "param_7")) (, ",") (identifier "iVar10") () ")")))) (; ";")) (if_statement "if (local_3c == 0) {\nLAB_00058ac0:\n      iVar10 = *(int *)(unaff_retaddr + 4);\n    }\n    else {\n      if (iVar10 < iVar1) {\n        piVar6 = (int *)(iVar4 + iVar10 * 4);\n        iVar9 = *piVar6 + 1;\n        *piVar6 = iVar9;\n        if (iVar9 != 0) {\n          local_3c = 0;\n          iVar10 = *(int *)(unaff_retaddr + 4);\n          goto LAB_000586a5;\n        }\n        if (iVar10 + 1 < iVar1) {\n          iVar9 = iVar10 + 2;\n          piVar6 = (int *)(iVar10 * 4 + 4 + iVar4);\n          *piVar6 = *piVar6 + 1;\n          iVar10 = *piVar6;\n          local_3c = 0;\n          while (iVar10 == 0) {\n            if (iVar1 == iVar9) goto LAB_00058aa3;\n            iVar10 = iVar9 * 4;\n            iVar9 = iVar9 + 1;\n            iVar10 = *(int *)(iVar4 + iVar10) + 1;\n            *(int *)(iVar4 + -4 + iVar9 * 4) = iVar10;\n          }\n          goto LAB_00058ac0;\n        }\n      }\nLAB_00058aa3:\n      local_3c = 1;\n      iVar10 = *(int *)(unaff_retaddr + 4);\n    }" (if "if") (parenthesized_expression "(local_3c == 0)" (( "(") (binary_expression "local_3c == 0" (identifier "local_3c") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00058ac0:\n      iVar10 = *(int *)(unaff_retaddr + 4);\n    }" ({ "{") (labeled_statement "LAB_00058ac0:\n      iVar10 = *(int *)(unaff_retaddr + 4);" (statement_identifier "LAB_00058ac0") (: ":") (expression_statement "iVar10 = *(int *)(unaff_retaddr + 4);" (assignment_expression "iVar10 = *(int *)(unaff_retaddr + 4)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(unaff_retaddr + 4)" (* "*") (cast_expression "(int *)(unaff_retaddr + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_retaddr + 4)" (( "(") (binary_expression "unaff_retaddr + 4" (identifier "unaff_retaddr") (+ "+") (number_literal "4")) () ")"))))) (; ";"))) (} "}")) (else_clause "else {\n      if (iVar10 < iVar1) {\n        piVar6 = (int *)(iVar4 + iVar10 * 4);\n        iVar9 = *piVar6 + 1;\n        *piVar6 = iVar9;\n        if (iVar9 != 0) {\n          local_3c = 0;\n          iVar10 = *(int *)(unaff_retaddr + 4);\n          goto LAB_000586a5;\n        }\n        if (iVar10 + 1 < iVar1) {\n          iVar9 = iVar10 + 2;\n          piVar6 = (int *)(iVar10 * 4 + 4 + iVar4);\n          *piVar6 = *piVar6 + 1;\n          iVar10 = *piVar6;\n          local_3c = 0;\n          while (iVar10 == 0) {\n            if (iVar1 == iVar9) goto LAB_00058aa3;\n            iVar10 = iVar9 * 4;\n            iVar9 = iVar9 + 1;\n            iVar10 = *(int *)(iVar4 + iVar10) + 1;\n            *(int *)(iVar4 + -4 + iVar9 * 4) = iVar10;\n          }\n          goto LAB_00058ac0;\n        }\n      }\nLAB_00058aa3:\n      local_3c = 1;\n      iVar10 = *(int *)(unaff_retaddr + 4);\n    }" (else "else") (compound_statement "{\n      if (iVar10 < iVar1) {\n        piVar6 = (int *)(iVar4 + iVar10 * 4);\n        iVar9 = *piVar6 + 1;\n        *piVar6 = iVar9;\n        if (iVar9 != 0) {\n          local_3c = 0;\n          iVar10 = *(int *)(unaff_retaddr + 4);\n          goto LAB_000586a5;\n        }\n        if (iVar10 + 1 < iVar1) {\n          iVar9 = iVar10 + 2;\n          piVar6 = (int *)(iVar10 * 4 + 4 + iVar4);\n          *piVar6 = *piVar6 + 1;\n          iVar10 = *piVar6;\n          local_3c = 0;\n          while (iVar10 == 0) {\n            if (iVar1 == iVar9) goto LAB_00058aa3;\n            iVar10 = iVar9 * 4;\n            iVar9 = iVar9 + 1;\n            iVar10 = *(int *)(iVar4 + iVar10) + 1;\n            *(int *)(iVar4 + -4 + iVar9 * 4) = iVar10;\n          }\n          goto LAB_00058ac0;\n        }\n      }\nLAB_00058aa3:\n      local_3c = 1;\n      iVar10 = *(int *)(unaff_retaddr + 4);\n    }" ({ "{") (if_statement "if (iVar10 < iVar1) {\n        piVar6 = (int *)(iVar4 + iVar10 * 4);\n        iVar9 = *piVar6 + 1;\n        *piVar6 = iVar9;\n        if (iVar9 != 0) {\n          local_3c = 0;\n          iVar10 = *(int *)(unaff_retaddr + 4);\n          goto LAB_000586a5;\n        }\n        if (iVar10 + 1 < iVar1) {\n          iVar9 = iVar10 + 2;\n          piVar6 = (int *)(iVar10 * 4 + 4 + iVar4);\n          *piVar6 = *piVar6 + 1;\n          iVar10 = *piVar6;\n          local_3c = 0;\n          while (iVar10 == 0) {\n            if (iVar1 == iVar9) goto LAB_00058aa3;\n            iVar10 = iVar9 * 4;\n            iVar9 = iVar9 + 1;\n            iVar10 = *(int *)(iVar4 + iVar10) + 1;\n            *(int *)(iVar4 + -4 + iVar9 * 4) = iVar10;\n          }\n          goto LAB_00058ac0;\n        }\n      }" (if "if") (parenthesized_expression "(iVar10 < iVar1)" (( "(") (binary_expression "iVar10 < iVar1" (identifier "iVar10") (< "<") (identifier "iVar1")) () ")")) (compound_statement "{\n        piVar6 = (int *)(iVar4 + iVar10 * 4);\n        iVar9 = *piVar6 + 1;\n        *piVar6 = iVar9;\n        if (iVar9 != 0) {\n          local_3c = 0;\n          iVar10 = *(int *)(unaff_retaddr + 4);\n          goto LAB_000586a5;\n        }\n        if (iVar10 + 1 < iVar1) {\n          iVar9 = iVar10 + 2;\n          piVar6 = (int *)(iVar10 * 4 + 4 + iVar4);\n          *piVar6 = *piVar6 + 1;\n          iVar10 = *piVar6;\n          local_3c = 0;\n          while (iVar10 == 0) {\n            if (iVar1 == iVar9) goto LAB_00058aa3;\n            iVar10 = iVar9 * 4;\n            iVar9 = iVar9 + 1;\n            iVar10 = *(int *)(iVar4 + iVar10) + 1;\n            *(int *)(iVar4 + -4 + iVar9 * 4) = iVar10;\n          }\n          goto LAB_00058ac0;\n        }\n      }" ({ "{") (expression_statement "piVar6 = (int *)(iVar4 + iVar10 * 4);" (assignment_expression "piVar6 = (int *)(iVar4 + iVar10 * 4)" (identifier "piVar6") (= "=") (cast_expression "(int *)(iVar4 + iVar10 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + iVar10 * 4)" (( "(") (binary_expression "iVar4 + iVar10 * 4" (identifier "iVar4") (+ "+") (binary_expression "iVar10 * 4" (identifier "iVar10") (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "iVar9 = *piVar6 + 1;" (assignment_expression "iVar9 = *piVar6 + 1" (identifier "iVar9") (= "=") (binary_expression "*piVar6 + 1" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*piVar6 = iVar9;" (assignment_expression "*piVar6 = iVar9" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (= "=") (identifier "iVar9")) (; ";")) (if_statement "if (iVar9 != 0) {\n          local_3c = 0;\n          iVar10 = *(int *)(unaff_retaddr + 4);\n          goto LAB_000586a5;\n        }" (if "if") (parenthesized_expression "(iVar9 != 0)" (( "(") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          local_3c = 0;\n          iVar10 = *(int *)(unaff_retaddr + 4);\n          goto LAB_000586a5;\n        }" ({ "{") (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" (identifier "local_3c") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar10 = *(int *)(unaff_retaddr + 4);" (assignment_expression "iVar10 = *(int *)(unaff_retaddr + 4)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(unaff_retaddr + 4)" (* "*") (cast_expression "(int *)(unaff_retaddr + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_retaddr + 4)" (( "(") (binary_expression "unaff_retaddr + 4" (identifier "unaff_retaddr") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (goto_statement "goto LAB_000586a5;" (goto "goto") (statement_identifier "LAB_000586a5") (; ";")) (} "}"))) (if_statement "if (iVar10 + 1 < iVar1) {\n          iVar9 = iVar10 + 2;\n          piVar6 = (int *)(iVar10 * 4 + 4 + iVar4);\n          *piVar6 = *piVar6 + 1;\n          iVar10 = *piVar6;\n          local_3c = 0;\n          while (iVar10 == 0) {\n            if (iVar1 == iVar9) goto LAB_00058aa3;\n            iVar10 = iVar9 * 4;\n            iVar9 = iVar9 + 1;\n            iVar10 = *(int *)(iVar4 + iVar10) + 1;\n            *(int *)(iVar4 + -4 + iVar9 * 4) = iVar10;\n          }\n          goto LAB_00058ac0;\n        }" (if "if") (parenthesized_expression "(iVar10 + 1 < iVar1)" (( "(") (binary_expression "iVar10 + 1 < iVar1" (binary_expression "iVar10 + 1" (identifier "iVar10") (+ "+") (number_literal "1")) (< "<") (identifier "iVar1")) () ")")) (compound_statement "{\n          iVar9 = iVar10 + 2;\n          piVar6 = (int *)(iVar10 * 4 + 4 + iVar4);\n          *piVar6 = *piVar6 + 1;\n          iVar10 = *piVar6;\n          local_3c = 0;\n          while (iVar10 == 0) {\n            if (iVar1 == iVar9) goto LAB_00058aa3;\n            iVar10 = iVar9 * 4;\n            iVar9 = iVar9 + 1;\n            iVar10 = *(int *)(iVar4 + iVar10) + 1;\n            *(int *)(iVar4 + -4 + iVar9 * 4) = iVar10;\n          }\n          goto LAB_00058ac0;\n        }" ({ "{") (expression_statement "iVar9 = iVar10 + 2;" (assignment_expression "iVar9 = iVar10 + 2" (identifier "iVar9") (= "=") (binary_expression "iVar10 + 2" (identifier "iVar10") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "piVar6 = (int *)(iVar10 * 4 + 4 + iVar4);" (assignment_expression "piVar6 = (int *)(iVar10 * 4 + 4 + iVar4)" (identifier "piVar6") (= "=") (cast_expression "(int *)(iVar10 * 4 + 4 + iVar4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 * 4 + 4 + iVar4)" (( "(") (binary_expression "iVar10 * 4 + 4 + iVar4" (binary_expression "iVar10 * 4 + 4" (binary_expression "iVar10 * 4" (identifier "iVar10") (* "*") (number_literal "4")) (+ "+") (number_literal "4")) (+ "+") (identifier "iVar4")) () ")")))) (; ";")) (expression_statement "*piVar6 = *piVar6 + 1;" (assignment_expression "*piVar6 = *piVar6 + 1" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (= "=") (binary_expression "*piVar6 + 1" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar10 = *piVar6;" (assignment_expression "iVar10 = *piVar6" (identifier "iVar10") (= "=") (pointer_expression "*piVar6" (* "*") (identifier "piVar6"))) (; ";")) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" (identifier "local_3c") (= "=") (number_literal "0")) (; ";")) (while_statement "while (iVar10 == 0) {\n            if (iVar1 == iVar9) goto LAB_00058aa3;\n            iVar10 = iVar9 * 4;\n            iVar9 = iVar9 + 1;\n            iVar10 = *(int *)(iVar4 + iVar10) + 1;\n            *(int *)(iVar4 + -4 + iVar9 * 4) = iVar10;\n          }" (while "while") (parenthesized_expression "(iVar10 == 0)" (( "(") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            if (iVar1 == iVar9) goto LAB_00058aa3;\n            iVar10 = iVar9 * 4;\n            iVar9 = iVar9 + 1;\n            iVar10 = *(int *)(iVar4 + iVar10) + 1;\n            *(int *)(iVar4 + -4 + iVar9 * 4) = iVar10;\n          }" ({ "{") (if_statement "if (iVar1 == iVar9) goto LAB_00058aa3;" (if "if") (parenthesized_expression "(iVar1 == iVar9)" (( "(") (binary_expression "iVar1 == iVar9" (identifier "iVar1") (== "==") (identifier "iVar9")) () ")")) (goto_statement "goto LAB_00058aa3;" (goto "goto") (statement_identifier "LAB_00058aa3") (; ";"))) (expression_statement "iVar10 = iVar9 * 4;" (assignment_expression "iVar10 = iVar9 * 4" (identifier "iVar10") (= "=") (binary_expression "iVar9 * 4" (identifier "iVar9") (* "*") (number_literal "4"))) (; ";")) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" (identifier "iVar9") (= "=") (binary_expression "iVar9 + 1" (identifier "iVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar10 = *(int *)(iVar4 + iVar10) + 1;" (assignment_expression "iVar10 = *(int *)(iVar4 + iVar10) + 1" (identifier "iVar10") (= "=") (binary_expression "*(int *)(iVar4 + iVar10) + 1" (pointer_expression "*(int *)(iVar4 + iVar10)" (* "*") (cast_expression "(int *)(iVar4 + iVar10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + iVar10)" (( "(") (binary_expression "iVar4 + iVar10" (identifier "iVar4") (+ "+") (identifier "iVar10")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(int *)(iVar4 + -4 + iVar9 * 4) = iVar10;" (assignment_expression "*(int *)(iVar4 + -4 + iVar9 * 4) = iVar10" (pointer_expression "*(int *)(iVar4 + -4 + iVar9 * 4)" (* "*") (cast_expression "(int *)(iVar4 + -4 + iVar9 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + -4 + iVar9 * 4)" (( "(") (binary_expression "iVar4 + -4 + iVar9 * 4" (binary_expression "iVar4 + -4" (identifier "iVar4") (+ "+") (number_literal "-4")) (+ "+") (binary_expression "iVar9 * 4" (identifier "iVar9") (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "iVar10")) (; ";")) (} "}"))) (goto_statement "goto LAB_00058ac0;" (goto "goto") (statement_identifier "LAB_00058ac0") (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_00058aa3:\n      local_3c = 1;" (statement_identifier "LAB_00058aa3") (: ":") (expression_statement "local_3c = 1;" (assignment_expression "local_3c = 1" (identifier "local_3c") (= "=") (number_literal "1")) (; ";"))) (expression_statement "iVar10 = *(int *)(unaff_retaddr + 4);" (assignment_expression "iVar10 = *(int *)(unaff_retaddr + 4)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(unaff_retaddr + 4)" (* "*") (cast_expression "(int *)(unaff_retaddr + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_retaddr + 4)" (( "(") (binary_expression "unaff_retaddr + 4" (identifier "unaff_retaddr") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (} "}")))) (} "}"))) (labeled_statement "LAB_000586a5:\n  if (iVar10 < param_6) {\n    __gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 0xc),iVar10);\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }\n  else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0xc),iVar10,param_5,param_6);\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }" (statement_identifier "LAB_000586a5") (: ":") (if_statement "if (iVar10 < param_6) {\n    __gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 0xc),iVar10);\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }\n  else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0xc),iVar10,param_5,param_6);\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }" (if "if") (parenthesized_expression "(iVar10 < param_6)" (( "(") (binary_expression "iVar10 < param_6" (identifier "iVar10") (< "<") (identifier "param_6")) () ")")) (compound_statement "{\n    __gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 0xc),iVar10);\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }" ({ "{") (expression_statement "__gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 0xc),iVar10);" (call_expression "__gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 0xc),iVar10)" (identifier "__gmpn_mul") (argument_list "(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 0xc),iVar10)" (( "(") (identifier "param_7") (, ",") (identifier "param_5") (, ",") (identifier "param_6") (, ",") (pointer_expression "*(undefined4 *)(unaff_retaddr + 0xc)" (* "*") (cast_expression "(undefined4 *)(unaff_retaddr + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_retaddr + 0xc)" (( "(") (binary_expression "unaff_retaddr + 0xc" (identifier "unaff_retaddr") (+ "+") (number_literal "0xc")) () ")")))) (, ",") (identifier "iVar10") () ")"))) (; ";")) (expression_statement "iVar10 = *(int *)(unaff_retaddr + 4);" (assignment_expression "iVar10 = *(int *)(unaff_retaddr + 4)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(unaff_retaddr + 4)" (* "*") (cast_expression "(int *)(unaff_retaddr + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_retaddr + 4)" (( "(") (binary_expression "unaff_retaddr + 4" (identifier "unaff_retaddr") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0xc),iVar10,param_5,param_6);\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }" (else "else") (compound_statement "{\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0xc),iVar10,param_5,param_6);\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }" ({ "{") (expression_statement "__gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0xc),iVar10,param_5,param_6);" (call_expression "__gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0xc),iVar10,param_5,param_6)" (identifier "__gmpn_mul") (argument_list "(param_7,*(undefined4 *)(unaff_retaddr + 0xc),iVar10,param_5,param_6)" (( "(") (identifier "param_7") (, ",") (pointer_expression "*(undefined4 *)(unaff_retaddr + 0xc)" (* "*") (cast_expression "(undefined4 *)(unaff_retaddr + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_retaddr + 0xc)" (( "(") (binary_expression "unaff_retaddr + 0xc" (identifier "unaff_retaddr") (+ "+") (number_literal "0xc")) () ")")))) (, ",") (identifier "iVar10") (, ",") (identifier "param_5") (, ",") (identifier "param_6") () ")"))) (; ";")) (expression_statement "iVar10 = *(int *)(unaff_retaddr + 4);" (assignment_expression "iVar10 = *(int *)(unaff_retaddr + 4)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(unaff_retaddr + 4)" (* "*") (cast_expression "(int *)(unaff_retaddr + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_retaddr + 4)" (( "(") (binary_expression "unaff_retaddr + 4" (identifier "unaff_retaddr") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (} "}"))))) (expression_statement "iVar4 = iVar10 + param_6;" (assignment_expression "iVar4 = iVar10 + param_6" (identifier "iVar4") (= "=") (binary_expression "iVar10 + param_6" (identifier "iVar10") (+ "+") (identifier "param_6"))) (; ";")) (if_statement "if (iVar4 != 0) {\n    iVar10 = __gmpn_sub_n(param_4,param_4,param_7,iVar4);\n    if (iVar10 != 0) {\n      if (param_3 <= iVar4) {\nLAB_00058815:\n        local_3c = local_3c - 1;\n        iVar10 = *(int *)(unaff_retaddr + 4);\n        goto LAB_000586d8;\n      }\n      piVar6 = (int *)(param_4 + iVar4 * 4);\n      iVar10 = *piVar6;\n      *piVar6 = iVar10 + -1;\n      if (iVar10 == 0) {\n        if (param_3 <= iVar4 + 1) goto LAB_00058815;\n        iVar9 = iVar4 + 2;\n        piVar6 = (int *)(param_4 + (iVar4 + 1) * 4);\n        iVar10 = *piVar6;\n        *piVar6 = iVar10 + -1;\n        while (iVar10 == 0) {\n          if (iVar9 == param_3) goto LAB_00058815;\n          iVar10 = *(int *)(param_4 + iVar9 * 4);\n          iVar9 = iVar9 + 1;\n          *(int *)(param_4 + -4 + iVar9 * 4) = iVar10 + -1;\n        }\n      }\n    }\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }" (if "if") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    iVar10 = __gmpn_sub_n(param_4,param_4,param_7,iVar4);\n    if (iVar10 != 0) {\n      if (param_3 <= iVar4) {\nLAB_00058815:\n        local_3c = local_3c - 1;\n        iVar10 = *(int *)(unaff_retaddr + 4);\n        goto LAB_000586d8;\n      }\n      piVar6 = (int *)(param_4 + iVar4 * 4);\n      iVar10 = *piVar6;\n      *piVar6 = iVar10 + -1;\n      if (iVar10 == 0) {\n        if (param_3 <= iVar4 + 1) goto LAB_00058815;\n        iVar9 = iVar4 + 2;\n        piVar6 = (int *)(param_4 + (iVar4 + 1) * 4);\n        iVar10 = *piVar6;\n        *piVar6 = iVar10 + -1;\n        while (iVar10 == 0) {\n          if (iVar9 == param_3) goto LAB_00058815;\n          iVar10 = *(int *)(param_4 + iVar9 * 4);\n          iVar9 = iVar9 + 1;\n          *(int *)(param_4 + -4 + iVar9 * 4) = iVar10 + -1;\n        }\n      }\n    }\n    iVar10 = *(int *)(unaff_retaddr + 4);\n  }" ({ "{") (expression_statement "iVar10 = __gmpn_sub_n(param_4,param_4,param_7,iVar4);" (assignment_expression "iVar10 = __gmpn_sub_n(param_4,param_4,param_7,iVar4)" (identifier "iVar10") (= "=") (call_expression "__gmpn_sub_n(param_4,param_4,param_7,iVar4)" (identifier "__gmpn_sub_n") (argument_list "(param_4,param_4,param_7,iVar4)" (( "(") (identifier "param_4") (, ",") (identifier "param_4") (, ",") (identifier "param_7") (, ",") (identifier "iVar4") () ")")))) (; ";")) (if_statement "if (iVar10 != 0) {\n      if (param_3 <= iVar4) {\nLAB_00058815:\n        local_3c = local_3c - 1;\n        iVar10 = *(int *)(unaff_retaddr + 4);\n        goto LAB_000586d8;\n      }\n      piVar6 = (int *)(param_4 + iVar4 * 4);\n      iVar10 = *piVar6;\n      *piVar6 = iVar10 + -1;\n      if (iVar10 == 0) {\n        if (param_3 <= iVar4 + 1) goto LAB_00058815;\n        iVar9 = iVar4 + 2;\n        piVar6 = (int *)(param_4 + (iVar4 + 1) * 4);\n        iVar10 = *piVar6;\n        *piVar6 = iVar10 + -1;\n        while (iVar10 == 0) {\n          if (iVar9 == param_3) goto LAB_00058815;\n          iVar10 = *(int *)(param_4 + iVar9 * 4);\n          iVar9 = iVar9 + 1;\n          *(int *)(param_4 + -4 + iVar9 * 4) = iVar10 + -1;\n        }\n      }\n    }" (if "if") (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if (param_3 <= iVar4) {\nLAB_00058815:\n        local_3c = local_3c - 1;\n        iVar10 = *(int *)(unaff_retaddr + 4);\n        goto LAB_000586d8;\n      }\n      piVar6 = (int *)(param_4 + iVar4 * 4);\n      iVar10 = *piVar6;\n      *piVar6 = iVar10 + -1;\n      if (iVar10 == 0) {\n        if (param_3 <= iVar4 + 1) goto LAB_00058815;\n        iVar9 = iVar4 + 2;\n        piVar6 = (int *)(param_4 + (iVar4 + 1) * 4);\n        iVar10 = *piVar6;\n        *piVar6 = iVar10 + -1;\n        while (iVar10 == 0) {\n          if (iVar9 == param_3) goto LAB_00058815;\n          iVar10 = *(int *)(param_4 + iVar9 * 4);\n          iVar9 = iVar9 + 1;\n          *(int *)(param_4 + -4 + iVar9 * 4) = iVar10 + -1;\n        }\n      }\n    }" ({ "{") (if_statement "if (param_3 <= iVar4) {\nLAB_00058815:\n        local_3c = local_3c - 1;\n        iVar10 = *(int *)(unaff_retaddr + 4);\n        goto LAB_000586d8;\n      }" (if "if") (parenthesized_expression "(param_3 <= iVar4)" (( "(") (binary_expression "param_3 <= iVar4" (identifier "param_3") (<= "<=") (identifier "iVar4")) () ")")) (compound_statement "{\nLAB_00058815:\n        local_3c = local_3c - 1;\n        iVar10 = *(int *)(unaff_retaddr + 4);\n        goto LAB_000586d8;\n      }" ({ "{") (labeled_statement "LAB_00058815:\n        local_3c = local_3c - 1;" (statement_identifier "LAB_00058815") (: ":") (expression_statement "local_3c = local_3c - 1;" (assignment_expression "local_3c = local_3c - 1" (identifier "local_3c") (= "=") (binary_expression "local_3c - 1" (identifier "local_3c") (- "-") (number_literal "1"))) (; ";"))) (expression_statement "iVar10 = *(int *)(unaff_retaddr + 4);" (assignment_expression "iVar10 = *(int *)(unaff_retaddr + 4)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(unaff_retaddr + 4)" (* "*") (cast_expression "(int *)(unaff_retaddr + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_retaddr + 4)" (( "(") (binary_expression "unaff_retaddr + 4" (identifier "unaff_retaddr") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (goto_statement "goto LAB_000586d8;" (goto "goto") (statement_identifier "LAB_000586d8") (; ";")) (} "}"))) (expression_statement "piVar6 = (int *)(param_4 + iVar4 * 4);" (assignment_expression "piVar6 = (int *)(param_4 + iVar4 * 4)" (identifier "piVar6") (= "=") (cast_expression "(int *)(param_4 + iVar4 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + iVar4 * 4)" (( "(") (binary_expression "param_4 + iVar4 * 4" (identifier "param_4") (+ "+") (binary_expression "iVar4 * 4" (identifier "iVar4") (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "iVar10 = *piVar6;" (assignment_expression "iVar10 = *piVar6" (identifier "iVar10") (= "=") (pointer_expression "*piVar6" (* "*") (identifier "piVar6"))) (; ";")) (expression_statement "*piVar6 = iVar10 + -1;" (assignment_expression "*piVar6 = iVar10 + -1" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (= "=") (binary_expression "iVar10 + -1" (identifier "iVar10") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar10 == 0) {\n        if (param_3 <= iVar4 + 1) goto LAB_00058815;\n        iVar9 = iVar4 + 2;\n        piVar6 = (int *)(param_4 + (iVar4 + 1) * 4);\n        iVar10 = *piVar6;\n        *piVar6 = iVar10 + -1;\n        while (iVar10 == 0) {\n          if (iVar9 == param_3) goto LAB_00058815;\n          iVar10 = *(int *)(param_4 + iVar9 * 4);\n          iVar9 = iVar9 + 1;\n          *(int *)(param_4 + -4 + iVar9 * 4) = iVar10 + -1;\n        }\n      }" (if "if") (parenthesized_expression "(iVar10 == 0)" (( "(") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        if (param_3 <= iVar4 + 1) goto LAB_00058815;\n        iVar9 = iVar4 + 2;\n        piVar6 = (int *)(param_4 + (iVar4 + 1) * 4);\n        iVar10 = *piVar6;\n        *piVar6 = iVar10 + -1;\n        while (iVar10 == 0) {\n          if (iVar9 == param_3) goto LAB_00058815;\n          iVar10 = *(int *)(param_4 + iVar9 * 4);\n          iVar9 = iVar9 + 1;\n          *(int *)(param_4 + -4 + iVar9 * 4) = iVar10 + -1;\n        }\n      }" ({ "{") (if_statement "if (param_3 <= iVar4 + 1) goto LAB_00058815;" (if "if") (parenthesized_expression "(param_3 <= iVar4 + 1)" (( "(") (binary_expression "param_3 <= iVar4 + 1" (identifier "param_3") (<= "<=") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1"))) () ")")) (goto_statement "goto LAB_00058815;" (goto "goto") (statement_identifier "LAB_00058815") (; ";"))) (expression_statement "iVar9 = iVar4 + 2;" (assignment_expression "iVar9 = iVar4 + 2" (identifier "iVar9") (= "=") (binary_expression "iVar4 + 2" (identifier "iVar4") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "piVar6 = (int *)(param_4 + (iVar4 + 1) * 4);" (assignment_expression "piVar6 = (int *)(param_4 + (iVar4 + 1) * 4)" (identifier "piVar6") (= "=") (cast_expression "(int *)(param_4 + (iVar4 + 1) * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + (iVar4 + 1) * 4)" (( "(") (binary_expression "param_4 + (iVar4 + 1) * 4" (identifier "param_4") (+ "+") (binary_expression "(iVar4 + 1) * 4" (parenthesized_expression "(iVar4 + 1)" (( "(") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "iVar10 = *piVar6;" (assignment_expression "iVar10 = *piVar6" (identifier "iVar10") (= "=") (pointer_expression "*piVar6" (* "*") (identifier "piVar6"))) (; ";")) (expression_statement "*piVar6 = iVar10 + -1;" (assignment_expression "*piVar6 = iVar10 + -1" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (= "=") (binary_expression "iVar10 + -1" (identifier "iVar10") (+ "+") (number_literal "-1"))) (; ";")) (while_statement "while (iVar10 == 0) {\n          if (iVar9 == param_3) goto LAB_00058815;\n          iVar10 = *(int *)(param_4 + iVar9 * 4);\n          iVar9 = iVar9 + 1;\n          *(int *)(param_4 + -4 + iVar9 * 4) = iVar10 + -1;\n        }" (while "while") (parenthesized_expression "(iVar10 == 0)" (( "(") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          if (iVar9 == param_3) goto LAB_00058815;\n          iVar10 = *(int *)(param_4 + iVar9 * 4);\n          iVar9 = iVar9 + 1;\n          *(int *)(param_4 + -4 + iVar9 * 4) = iVar10 + -1;\n        }" ({ "{") (if_statement "if (iVar9 == param_3) goto LAB_00058815;" (if "if") (parenthesized_expression "(iVar9 == param_3)" (( "(") (binary_expression "iVar9 == param_3" (identifier "iVar9") (== "==") (identifier "param_3")) () ")")) (goto_statement "goto LAB_00058815;" (goto "goto") (statement_identifier "LAB_00058815") (; ";"))) (expression_statement "iVar10 = *(int *)(param_4 + iVar9 * 4);" (assignment_expression "iVar10 = *(int *)(param_4 + iVar9 * 4)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(param_4 + iVar9 * 4)" (* "*") (cast_expression "(int *)(param_4 + iVar9 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + iVar9 * 4)" (( "(") (binary_expression "param_4 + iVar9 * 4" (identifier "param_4") (+ "+") (binary_expression "iVar9 * 4" (identifier "iVar9") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" (identifier "iVar9") (= "=") (binary_expression "iVar9 + 1" (identifier "iVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(int *)(param_4 + -4 + iVar9 * 4) = iVar10 + -1;" (assignment_expression "*(int *)(param_4 + -4 + iVar9 * 4) = iVar10 + -1" (pointer_expression "*(int *)(param_4 + -4 + iVar9 * 4)" (* "*") (cast_expression "(int *)(param_4 + -4 + iVar9 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + -4 + iVar9 * 4)" (( "(") (binary_expression "param_4 + -4 + iVar9 * 4" (binary_expression "param_4 + -4" (identifier "param_4") (+ "+") (number_literal "-4")) (+ "+") (binary_expression "iVar9 * 4" (identifier "iVar9") (* "*") (number_literal "4"))) () ")")))) (= "=") (binary_expression "iVar10 + -1" (identifier "iVar10") (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (} "}"))) (} "}"))) (expression_statement "iVar10 = *(int *)(unaff_retaddr + 4);" (assignment_expression "iVar10 = *(int *)(unaff_retaddr + 4)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(unaff_retaddr + 4)" (* "*") (cast_expression "(int *)(unaff_retaddr + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_retaddr + 4)" (( "(") (binary_expression "unaff_retaddr + 4" (identifier "unaff_retaddr") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (} "}"))) (labeled_statement "LAB_000586d8:\n  if (iVar10 < param_6) {\n    __gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 8),iVar10);\n  }\n  else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 8),iVar10,param_5,param_6);\n  }" (statement_identifier "LAB_000586d8") (: ":") (if_statement "if (iVar10 < param_6) {\n    __gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 8),iVar10);\n  }\n  else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 8),iVar10,param_5,param_6);\n  }" (if "if") (parenthesized_expression "(iVar10 < param_6)" (( "(") (binary_expression "iVar10 < param_6" (identifier "iVar10") (< "<") (identifier "param_6")) () ")")) (compound_statement "{\n    __gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 8),iVar10);\n  }" ({ "{") (expression_statement "__gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 8),iVar10);" (call_expression "__gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 8),iVar10)" (identifier "__gmpn_mul") (argument_list "(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 8),iVar10)" (( "(") (identifier "param_7") (, ",") (identifier "param_5") (, ",") (identifier "param_6") (, ",") (pointer_expression "*(undefined4 *)(unaff_retaddr + 8)" (* "*") (cast_expression "(undefined4 *)(unaff_retaddr + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_retaddr + 8)" (( "(") (binary_expression "unaff_retaddr + 8" (identifier "unaff_retaddr") (+ "+") (number_literal "8")) () ")")))) (, ",") (identifier "iVar10") () ")"))) (; ";")) (} "}")) (else_clause "else {\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 8),iVar10,param_5,param_6);\n  }" (else "else") (compound_statement "{\n    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 8),iVar10,param_5,param_6);\n  }" ({ "{") (expression_statement "__gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 8),iVar10,param_5,param_6);" (call_expression "__gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 8),iVar10,param_5,param_6)" (identifier "__gmpn_mul") (argument_list "(param_7,*(undefined4 *)(unaff_retaddr + 8),iVar10,param_5,param_6)" (( "(") (identifier "param_7") (, ",") (pointer_expression "*(undefined4 *)(unaff_retaddr + 8)" (* "*") (cast_expression "(undefined4 *)(unaff_retaddr + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_retaddr + 8)" (( "(") (binary_expression "unaff_retaddr + 8" (identifier "unaff_retaddr") (+ "+") (number_literal "8")) () ")")))) (, ",") (identifier "iVar10") (, ",") (identifier "param_5") (, ",") (identifier "param_6") () ")"))) (; ";")) (} "}"))))) (expression_statement "(**(code **)(iVar7 + 0x28))(param_5,param_7,param_6);" (call_expression "(**(code **)(iVar7 + 0x28))(param_5,param_7,param_6)" (parenthesized_expression "(**(code **)(iVar7 + 0x28))" (( "(") (pointer_expression "**(code **)(iVar7 + 0x28)" (* "*") (pointer_expression "*(code **)(iVar7 + 0x28)" (* "*") (cast_expression "(code **)(iVar7 + 0x28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar7 + 0x28)" (( "(") (binary_expression "iVar7 + 0x28" (identifier "iVar7") (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (argument_list "(param_5,param_7,param_6)" (( "(") (identifier "param_5") (, ",") (identifier "param_7") (, ",") (identifier "param_6") () ")"))) (; ";")) (expression_statement "iVar7 = *(int *)(unaff_retaddr + 4);" (assignment_expression "iVar7 = *(int *)(unaff_retaddr + 4)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(unaff_retaddr + 4)" (* "*") (cast_expression "(int *)(unaff_retaddr + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_retaddr + 4)" (( "(") (binary_expression "unaff_retaddr + 4" (identifier "unaff_retaddr") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "uVar11 = local_3c;" (assignment_expression "uVar11 = local_3c" (identifier "uVar11") (= "=") (identifier "local_3c")) (; ";")) (if_statement "if (iVar7 == 0) {\n    uVar8 = 0;\n    if (param_6 != 0) {\nLAB_00058955:\n      uVar5 = 0;\n      uVar8 = 0xffffffff;\n      uVar11 = 0xffffffff;\nLAB_0005895f:\n      iVar3 = __gmpn_sub_n(param_5,param_5,iVar3,param_6);\n      if (iVar3 != 0) {\n        if (param_3 <= param_6) goto LAB_0005872a;\n        piVar6 = (int *)(param_5 + param_6 * 4);\n        iVar3 = *piVar6;\n        *piVar6 = iVar3 + -1;\n        if (iVar3 == 0) {\n          if (param_3 <= param_6 + 1) goto LAB_0005872a;\n          piVar6 = (int *)(param_6 * 4 + 4 + param_5);\n          param_6 = param_6 + 2;\n          iVar3 = *piVar6;\n          *piVar6 = iVar3 + -1;\n          while (iVar3 == 0) {\n            if (param_6 == param_3) goto LAB_0005872a;\n            iVar3 = *(int *)(param_5 + param_6 * 4);\n            param_6 = param_6 + 1;\n            *(int *)(param_5 + -4 + param_6 * 4) = iVar3 + -1;\n          }\n        }\n      }\n      uVar8 = uVar5;\n      uVar11 = local_3c | uVar5;\n    }\n  }\n  else {\n    iVar10 = iVar2 + param_5;\n    iVar2 = __gmpn_add_n(iVar10,iVar10,iVar2 + param_7,iVar7);\n    if (iVar2 != 0) {\n      if (iVar7 < iVar1) {\n        piVar6 = (int *)(iVar10 + iVar7 * 4);\n        *piVar6 = *piVar6 + 1;\n        if (*piVar6 == 0) {\n          if (iVar1 <= iVar7 + 1) goto LAB_000588e3;\n          piVar6 = (int *)(iVar7 * 4 + 4 + iVar10);\n          iVar7 = iVar7 + 2;\n          *piVar6 = *piVar6 + 1;\n          iVar2 = *piVar6;\n          while (iVar2 == 0) {\n            if (iVar1 == iVar7) goto LAB_000588e3;\n            iVar2 = iVar7 * 4;\n            iVar7 = iVar7 + 1;\n            iVar2 = *(int *)(iVar10 + iVar2) + 1;\n            *(int *)(iVar10 + -4 + iVar7 * 4) = iVar2;\n          }\n        }\n        goto LAB_00058940;\n      }\nLAB_000588e3:\n      uVar8 = 1;\n      param_6 = param_6 + *(int *)(unaff_retaddr + 4);\n      if (param_6 == 0) goto LAB_000588f5;\n      uVar8 = 0;\n      uVar5 = 1;\n      goto LAB_0005895f;\n    }\nLAB_00058940:\n    uVar8 = 0;\n    param_6 = param_6 + *(int *)(unaff_retaddr + 4);\n    if (param_6 != 0) goto LAB_00058955;\n  }" (if "if") (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar8 = 0;\n    if (param_6 != 0) {\nLAB_00058955:\n      uVar5 = 0;\n      uVar8 = 0xffffffff;\n      uVar11 = 0xffffffff;\nLAB_0005895f:\n      iVar3 = __gmpn_sub_n(param_5,param_5,iVar3,param_6);\n      if (iVar3 != 0) {\n        if (param_3 <= param_6) goto LAB_0005872a;\n        piVar6 = (int *)(param_5 + param_6 * 4);\n        iVar3 = *piVar6;\n        *piVar6 = iVar3 + -1;\n        if (iVar3 == 0) {\n          if (param_3 <= param_6 + 1) goto LAB_0005872a;\n          piVar6 = (int *)(param_6 * 4 + 4 + param_5);\n          param_6 = param_6 + 2;\n          iVar3 = *piVar6;\n          *piVar6 = iVar3 + -1;\n          while (iVar3 == 0) {\n            if (param_6 == param_3) goto LAB_0005872a;\n            iVar3 = *(int *)(param_5 + param_6 * 4);\n            param_6 = param_6 + 1;\n            *(int *)(param_5 + -4 + param_6 * 4) = iVar3 + -1;\n          }\n        }\n      }\n      uVar8 = uVar5;\n      uVar11 = local_3c | uVar5;\n    }\n  }" ({ "{") (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" (identifier "uVar8") (= "=") (number_literal "0")) (; ";")) (if_statement "if (param_6 != 0) {\nLAB_00058955:\n      uVar5 = 0;\n      uVar8 = 0xffffffff;\n      uVar11 = 0xffffffff;\nLAB_0005895f:\n      iVar3 = __gmpn_sub_n(param_5,param_5,iVar3,param_6);\n      if (iVar3 != 0) {\n        if (param_3 <= param_6) goto LAB_0005872a;\n        piVar6 = (int *)(param_5 + param_6 * 4);\n        iVar3 = *piVar6;\n        *piVar6 = iVar3 + -1;\n        if (iVar3 == 0) {\n          if (param_3 <= param_6 + 1) goto LAB_0005872a;\n          piVar6 = (int *)(param_6 * 4 + 4 + param_5);\n          param_6 = param_6 + 2;\n          iVar3 = *piVar6;\n          *piVar6 = iVar3 + -1;\n          while (iVar3 == 0) {\n            if (param_6 == param_3) goto LAB_0005872a;\n            iVar3 = *(int *)(param_5 + param_6 * 4);\n            param_6 = param_6 + 1;\n            *(int *)(param_5 + -4 + param_6 * 4) = iVar3 + -1;\n          }\n        }\n      }\n      uVar8 = uVar5;\n      uVar11 = local_3c | uVar5;\n    }" (if "if") (parenthesized_expression "(param_6 != 0)" (( "(") (binary_expression "param_6 != 0" (identifier "param_6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00058955:\n      uVar5 = 0;\n      uVar8 = 0xffffffff;\n      uVar11 = 0xffffffff;\nLAB_0005895f:\n      iVar3 = __gmpn_sub_n(param_5,param_5,iVar3,param_6);\n      if (iVar3 != 0) {\n        if (param_3 <= param_6) goto LAB_0005872a;\n        piVar6 = (int *)(param_5 + param_6 * 4);\n        iVar3 = *piVar6;\n        *piVar6 = iVar3 + -1;\n        if (iVar3 == 0) {\n          if (param_3 <= param_6 + 1) goto LAB_0005872a;\n          piVar6 = (int *)(param_6 * 4 + 4 + param_5);\n          param_6 = param_6 + 2;\n          iVar3 = *piVar6;\n          *piVar6 = iVar3 + -1;\n          while (iVar3 == 0) {\n            if (param_6 == param_3) goto LAB_0005872a;\n            iVar3 = *(int *)(param_5 + param_6 * 4);\n            param_6 = param_6 + 1;\n            *(int *)(param_5 + -4 + param_6 * 4) = iVar3 + -1;\n          }\n        }\n      }\n      uVar8 = uVar5;\n      uVar11 = local_3c | uVar5;\n    }" ({ "{") (labeled_statement "LAB_00058955:\n      uVar5 = 0;" (statement_identifier "LAB_00058955") (: ":") (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" (identifier "uVar5") (= "=") (number_literal "0")) (; ";"))) (expression_statement "uVar8 = 0xffffffff;" (assignment_expression "uVar8 = 0xffffffff" (identifier "uVar8") (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "uVar11 = 0xffffffff;" (assignment_expression "uVar11 = 0xffffffff" (identifier "uVar11") (= "=") (number_literal "0xffffffff")) (; ";")) (labeled_statement "LAB_0005895f:\n      iVar3 = __gmpn_sub_n(param_5,param_5,iVar3,param_6);" (statement_identifier "LAB_0005895f") (: ":") (expression_statement "iVar3 = __gmpn_sub_n(param_5,param_5,iVar3,param_6);" (assignment_expression "iVar3 = __gmpn_sub_n(param_5,param_5,iVar3,param_6)" (identifier "iVar3") (= "=") (call_expression "__gmpn_sub_n(param_5,param_5,iVar3,param_6)" (identifier "__gmpn_sub_n") (argument_list "(param_5,param_5,iVar3,param_6)" (( "(") (identifier "param_5") (, ",") (identifier "param_5") (, ",") (identifier "iVar3") (, ",") (identifier "param_6") () ")")))) (; ";"))) (if_statement "if (iVar3 != 0) {\n        if (param_3 <= param_6) goto LAB_0005872a;\n        piVar6 = (int *)(param_5 + param_6 * 4);\n        iVar3 = *piVar6;\n        *piVar6 = iVar3 + -1;\n        if (iVar3 == 0) {\n          if (param_3 <= param_6 + 1) goto LAB_0005872a;\n          piVar6 = (int *)(param_6 * 4 + 4 + param_5);\n          param_6 = param_6 + 2;\n          iVar3 = *piVar6;\n          *piVar6 = iVar3 + -1;\n          while (iVar3 == 0) {\n            if (param_6 == param_3) goto LAB_0005872a;\n            iVar3 = *(int *)(param_5 + param_6 * 4);\n            param_6 = param_6 + 1;\n            *(int *)(param_5 + -4 + param_6 * 4) = iVar3 + -1;\n          }\n        }\n      }" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        if (param_3 <= param_6) goto LAB_0005872a;\n        piVar6 = (int *)(param_5 + param_6 * 4);\n        iVar3 = *piVar6;\n        *piVar6 = iVar3 + -1;\n        if (iVar3 == 0) {\n          if (param_3 <= param_6 + 1) goto LAB_0005872a;\n          piVar6 = (int *)(param_6 * 4 + 4 + param_5);\n          param_6 = param_6 + 2;\n          iVar3 = *piVar6;\n          *piVar6 = iVar3 + -1;\n          while (iVar3 == 0) {\n            if (param_6 == param_3) goto LAB_0005872a;\n            iVar3 = *(int *)(param_5 + param_6 * 4);\n            param_6 = param_6 + 1;\n            *(int *)(param_5 + -4 + param_6 * 4) = iVar3 + -1;\n          }\n        }\n      }" ({ "{") (if_statement "if (param_3 <= param_6) goto LAB_0005872a;" (if "if") (parenthesized_expression "(param_3 <= param_6)" (( "(") (binary_expression "param_3 <= param_6" (identifier "param_3") (<= "<=") (identifier "param_6")) () ")")) (goto_statement "goto LAB_0005872a;" (goto "goto") (statement_identifier "LAB_0005872a") (; ";"))) (expression_statement "piVar6 = (int *)(param_5 + param_6 * 4);" (assignment_expression "piVar6 = (int *)(param_5 + param_6 * 4)" (identifier "piVar6") (= "=") (cast_expression "(int *)(param_5 + param_6 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + param_6 * 4)" (( "(") (binary_expression "param_5 + param_6 * 4" (identifier "param_5") (+ "+") (binary_expression "param_6 * 4" (identifier "param_6") (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "iVar3 = *piVar6;" (assignment_expression "iVar3 = *piVar6" (identifier "iVar3") (= "=") (pointer_expression "*piVar6" (* "*") (identifier "piVar6"))) (; ";")) (expression_statement "*piVar6 = iVar3 + -1;" (assignment_expression "*piVar6 = iVar3 + -1" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (= "=") (binary_expression "iVar3 + -1" (identifier "iVar3") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar3 == 0) {\n          if (param_3 <= param_6 + 1) goto LAB_0005872a;\n          piVar6 = (int *)(param_6 * 4 + 4 + param_5);\n          param_6 = param_6 + 2;\n          iVar3 = *piVar6;\n          *piVar6 = iVar3 + -1;\n          while (iVar3 == 0) {\n            if (param_6 == param_3) goto LAB_0005872a;\n            iVar3 = *(int *)(param_5 + param_6 * 4);\n            param_6 = param_6 + 1;\n            *(int *)(param_5 + -4 + param_6 * 4) = iVar3 + -1;\n          }\n        }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          if (param_3 <= param_6 + 1) goto LAB_0005872a;\n          piVar6 = (int *)(param_6 * 4 + 4 + param_5);\n          param_6 = param_6 + 2;\n          iVar3 = *piVar6;\n          *piVar6 = iVar3 + -1;\n          while (iVar3 == 0) {\n            if (param_6 == param_3) goto LAB_0005872a;\n            iVar3 = *(int *)(param_5 + param_6 * 4);\n            param_6 = param_6 + 1;\n            *(int *)(param_5 + -4 + param_6 * 4) = iVar3 + -1;\n          }\n        }" ({ "{") (if_statement "if (param_3 <= param_6 + 1) goto LAB_0005872a;" (if "if") (parenthesized_expression "(param_3 <= param_6 + 1)" (( "(") (binary_expression "param_3 <= param_6 + 1" (identifier "param_3") (<= "<=") (binary_expression "param_6 + 1" (identifier "param_6") (+ "+") (number_literal "1"))) () ")")) (goto_statement "goto LAB_0005872a;" (goto "goto") (statement_identifier "LAB_0005872a") (; ";"))) (expression_statement "piVar6 = (int *)(param_6 * 4 + 4 + param_5);" (assignment_expression "piVar6 = (int *)(param_6 * 4 + 4 + param_5)" (identifier "piVar6") (= "=") (cast_expression "(int *)(param_6 * 4 + 4 + param_5)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 * 4 + 4 + param_5)" (( "(") (binary_expression "param_6 * 4 + 4 + param_5" (binary_expression "param_6 * 4 + 4" (binary_expression "param_6 * 4" (identifier "param_6") (* "*") (number_literal "4")) (+ "+") (number_literal "4")) (+ "+") (identifier "param_5")) () ")")))) (; ";")) (expression_statement "param_6 = param_6 + 2;" (assignment_expression "param_6 = param_6 + 2" (identifier "param_6") (= "=") (binary_expression "param_6 + 2" (identifier "param_6") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "iVar3 = *piVar6;" (assignment_expression "iVar3 = *piVar6" (identifier "iVar3") (= "=") (pointer_expression "*piVar6" (* "*") (identifier "piVar6"))) (; ";")) (expression_statement "*piVar6 = iVar3 + -1;" (assignment_expression "*piVar6 = iVar3 + -1" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (= "=") (binary_expression "iVar3 + -1" (identifier "iVar3") (+ "+") (number_literal "-1"))) (; ";")) (while_statement "while (iVar3 == 0) {\n            if (param_6 == param_3) goto LAB_0005872a;\n            iVar3 = *(int *)(param_5 + param_6 * 4);\n            param_6 = param_6 + 1;\n            *(int *)(param_5 + -4 + param_6 * 4) = iVar3 + -1;\n          }" (while "while") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            if (param_6 == param_3) goto LAB_0005872a;\n            iVar3 = *(int *)(param_5 + param_6 * 4);\n            param_6 = param_6 + 1;\n            *(int *)(param_5 + -4 + param_6 * 4) = iVar3 + -1;\n          }" ({ "{") (if_statement "if (param_6 == param_3) goto LAB_0005872a;" (if "if") (parenthesized_expression "(param_6 == param_3)" (( "(") (binary_expression "param_6 == param_3" (identifier "param_6") (== "==") (identifier "param_3")) () ")")) (goto_statement "goto LAB_0005872a;" (goto "goto") (statement_identifier "LAB_0005872a") (; ";"))) (expression_statement "iVar3 = *(int *)(param_5 + param_6 * 4);" (assignment_expression "iVar3 = *(int *)(param_5 + param_6 * 4)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(param_5 + param_6 * 4)" (* "*") (cast_expression "(int *)(param_5 + param_6 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + param_6 * 4)" (( "(") (binary_expression "param_5 + param_6 * 4" (identifier "param_5") (+ "+") (binary_expression "param_6 * 4" (identifier "param_6") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "param_6 = param_6 + 1;" (assignment_expression "param_6 = param_6 + 1" (identifier "param_6") (= "=") (binary_expression "param_6 + 1" (identifier "param_6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(int *)(param_5 + -4 + param_6 * 4) = iVar3 + -1;" (assignment_expression "*(int *)(param_5 + -4 + param_6 * 4) = iVar3 + -1" (pointer_expression "*(int *)(param_5 + -4 + param_6 * 4)" (* "*") (cast_expression "(int *)(param_5 + -4 + param_6 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + -4 + param_6 * 4)" (( "(") (binary_expression "param_5 + -4 + param_6 * 4" (binary_expression "param_5 + -4" (identifier "param_5") (+ "+") (number_literal "-4")) (+ "+") (binary_expression "param_6 * 4" (identifier "param_6") (* "*") (number_literal "4"))) () ")")))) (= "=") (binary_expression "iVar3 + -1" (identifier "iVar3") (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (} "}"))) (} "}"))) (expression_statement "uVar8 = uVar5;" (assignment_expression "uVar8 = uVar5" (identifier "uVar8") (= "=") (identifier "uVar5")) (; ";")) (expression_statement "uVar11 = local_3c | uVar5;" (assignment_expression "uVar11 = local_3c | uVar5" (identifier "uVar11") (= "=") (binary_expression "local_3c | uVar5" (identifier "local_3c") (| "|") (identifier "uVar5"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    iVar10 = iVar2 + param_5;\n    iVar2 = __gmpn_add_n(iVar10,iVar10,iVar2 + param_7,iVar7);\n    if (iVar2 != 0) {\n      if (iVar7 < iVar1) {\n        piVar6 = (int *)(iVar10 + iVar7 * 4);\n        *piVar6 = *piVar6 + 1;\n        if (*piVar6 == 0) {\n          if (iVar1 <= iVar7 + 1) goto LAB_000588e3;\n          piVar6 = (int *)(iVar7 * 4 + 4 + iVar10);\n          iVar7 = iVar7 + 2;\n          *piVar6 = *piVar6 + 1;\n          iVar2 = *piVar6;\n          while (iVar2 == 0) {\n            if (iVar1 == iVar7) goto LAB_000588e3;\n            iVar2 = iVar7 * 4;\n            iVar7 = iVar7 + 1;\n            iVar2 = *(int *)(iVar10 + iVar2) + 1;\n            *(int *)(iVar10 + -4 + iVar7 * 4) = iVar2;\n          }\n        }\n        goto LAB_00058940;\n      }\nLAB_000588e3:\n      uVar8 = 1;\n      param_6 = param_6 + *(int *)(unaff_retaddr + 4);\n      if (param_6 == 0) goto LAB_000588f5;\n      uVar8 = 0;\n      uVar5 = 1;\n      goto LAB_0005895f;\n    }\nLAB_00058940:\n    uVar8 = 0;\n    param_6 = param_6 + *(int *)(unaff_retaddr + 4);\n    if (param_6 != 0) goto LAB_00058955;\n  }" (else "else") (compound_statement "{\n    iVar10 = iVar2 + param_5;\n    iVar2 = __gmpn_add_n(iVar10,iVar10,iVar2 + param_7,iVar7);\n    if (iVar2 != 0) {\n      if (iVar7 < iVar1) {\n        piVar6 = (int *)(iVar10 + iVar7 * 4);\n        *piVar6 = *piVar6 + 1;\n        if (*piVar6 == 0) {\n          if (iVar1 <= iVar7 + 1) goto LAB_000588e3;\n          piVar6 = (int *)(iVar7 * 4 + 4 + iVar10);\n          iVar7 = iVar7 + 2;\n          *piVar6 = *piVar6 + 1;\n          iVar2 = *piVar6;\n          while (iVar2 == 0) {\n            if (iVar1 == iVar7) goto LAB_000588e3;\n            iVar2 = iVar7 * 4;\n            iVar7 = iVar7 + 1;\n            iVar2 = *(int *)(iVar10 + iVar2) + 1;\n            *(int *)(iVar10 + -4 + iVar7 * 4) = iVar2;\n          }\n        }\n        goto LAB_00058940;\n      }\nLAB_000588e3:\n      uVar8 = 1;\n      param_6 = param_6 + *(int *)(unaff_retaddr + 4);\n      if (param_6 == 0) goto LAB_000588f5;\n      uVar8 = 0;\n      uVar5 = 1;\n      goto LAB_0005895f;\n    }\nLAB_00058940:\n    uVar8 = 0;\n    param_6 = param_6 + *(int *)(unaff_retaddr + 4);\n    if (param_6 != 0) goto LAB_00058955;\n  }" ({ "{") (expression_statement "iVar10 = iVar2 + param_5;" (assignment_expression "iVar10 = iVar2 + param_5" (identifier "iVar10") (= "=") (binary_expression "iVar2 + param_5" (identifier "iVar2") (+ "+") (identifier "param_5"))) (; ";")) (expression_statement "iVar2 = __gmpn_add_n(iVar10,iVar10,iVar2 + param_7,iVar7);" (assignment_expression "iVar2 = __gmpn_add_n(iVar10,iVar10,iVar2 + param_7,iVar7)" (identifier "iVar2") (= "=") (call_expression "__gmpn_add_n(iVar10,iVar10,iVar2 + param_7,iVar7)" (identifier "__gmpn_add_n") (argument_list "(iVar10,iVar10,iVar2 + param_7,iVar7)" (( "(") (identifier "iVar10") (, ",") (identifier "iVar10") (, ",") (binary_expression "iVar2 + param_7" (identifier "iVar2") (+ "+") (identifier "param_7")) (, ",") (identifier "iVar7") () ")")))) (; ";")) (if_statement "if (iVar2 != 0) {\n      if (iVar7 < iVar1) {\n        piVar6 = (int *)(iVar10 + iVar7 * 4);\n        *piVar6 = *piVar6 + 1;\n        if (*piVar6 == 0) {\n          if (iVar1 <= iVar7 + 1) goto LAB_000588e3;\n          piVar6 = (int *)(iVar7 * 4 + 4 + iVar10);\n          iVar7 = iVar7 + 2;\n          *piVar6 = *piVar6 + 1;\n          iVar2 = *piVar6;\n          while (iVar2 == 0) {\n            if (iVar1 == iVar7) goto LAB_000588e3;\n            iVar2 = iVar7 * 4;\n            iVar7 = iVar7 + 1;\n            iVar2 = *(int *)(iVar10 + iVar2) + 1;\n            *(int *)(iVar10 + -4 + iVar7 * 4) = iVar2;\n          }\n        }\n        goto LAB_00058940;\n      }\nLAB_000588e3:\n      uVar8 = 1;\n      param_6 = param_6 + *(int *)(unaff_retaddr + 4);\n      if (param_6 == 0) goto LAB_000588f5;\n      uVar8 = 0;\n      uVar5 = 1;\n      goto LAB_0005895f;\n    }" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if (iVar7 < iVar1) {\n        piVar6 = (int *)(iVar10 + iVar7 * 4);\n        *piVar6 = *piVar6 + 1;\n        if (*piVar6 == 0) {\n          if (iVar1 <= iVar7 + 1) goto LAB_000588e3;\n          piVar6 = (int *)(iVar7 * 4 + 4 + iVar10);\n          iVar7 = iVar7 + 2;\n          *piVar6 = *piVar6 + 1;\n          iVar2 = *piVar6;\n          while (iVar2 == 0) {\n            if (iVar1 == iVar7) goto LAB_000588e3;\n            iVar2 = iVar7 * 4;\n            iVar7 = iVar7 + 1;\n            iVar2 = *(int *)(iVar10 + iVar2) + 1;\n            *(int *)(iVar10 + -4 + iVar7 * 4) = iVar2;\n          }\n        }\n        goto LAB_00058940;\n      }\nLAB_000588e3:\n      uVar8 = 1;\n      param_6 = param_6 + *(int *)(unaff_retaddr + 4);\n      if (param_6 == 0) goto LAB_000588f5;\n      uVar8 = 0;\n      uVar5 = 1;\n      goto LAB_0005895f;\n    }" ({ "{") (if_statement "if (iVar7 < iVar1) {\n        piVar6 = (int *)(iVar10 + iVar7 * 4);\n        *piVar6 = *piVar6 + 1;\n        if (*piVar6 == 0) {\n          if (iVar1 <= iVar7 + 1) goto LAB_000588e3;\n          piVar6 = (int *)(iVar7 * 4 + 4 + iVar10);\n          iVar7 = iVar7 + 2;\n          *piVar6 = *piVar6 + 1;\n          iVar2 = *piVar6;\n          while (iVar2 == 0) {\n            if (iVar1 == iVar7) goto LAB_000588e3;\n            iVar2 = iVar7 * 4;\n            iVar7 = iVar7 + 1;\n            iVar2 = *(int *)(iVar10 + iVar2) + 1;\n            *(int *)(iVar10 + -4 + iVar7 * 4) = iVar2;\n          }\n        }\n        goto LAB_00058940;\n      }" (if "if") (parenthesized_expression "(iVar7 < iVar1)" (( "(") (binary_expression "iVar7 < iVar1" (identifier "iVar7") (< "<") (identifier "iVar1")) () ")")) (compound_statement "{\n        piVar6 = (int *)(iVar10 + iVar7 * 4);\n        *piVar6 = *piVar6 + 1;\n        if (*piVar6 == 0) {\n          if (iVar1 <= iVar7 + 1) goto LAB_000588e3;\n          piVar6 = (int *)(iVar7 * 4 + 4 + iVar10);\n          iVar7 = iVar7 + 2;\n          *piVar6 = *piVar6 + 1;\n          iVar2 = *piVar6;\n          while (iVar2 == 0) {\n            if (iVar1 == iVar7) goto LAB_000588e3;\n            iVar2 = iVar7 * 4;\n            iVar7 = iVar7 + 1;\n            iVar2 = *(int *)(iVar10 + iVar2) + 1;\n            *(int *)(iVar10 + -4 + iVar7 * 4) = iVar2;\n          }\n        }\n        goto LAB_00058940;\n      }" ({ "{") (expression_statement "piVar6 = (int *)(iVar10 + iVar7 * 4);" (assignment_expression "piVar6 = (int *)(iVar10 + iVar7 * 4)" (identifier "piVar6") (= "=") (cast_expression "(int *)(iVar10 + iVar7 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + iVar7 * 4)" (( "(") (binary_expression "iVar10 + iVar7 * 4" (identifier "iVar10") (+ "+") (binary_expression "iVar7 * 4" (identifier "iVar7") (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "*piVar6 = *piVar6 + 1;" (assignment_expression "*piVar6 = *piVar6 + 1" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (= "=") (binary_expression "*piVar6 + 1" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (*piVar6 == 0) {\n          if (iVar1 <= iVar7 + 1) goto LAB_000588e3;\n          piVar6 = (int *)(iVar7 * 4 + 4 + iVar10);\n          iVar7 = iVar7 + 2;\n          *piVar6 = *piVar6 + 1;\n          iVar2 = *piVar6;\n          while (iVar2 == 0) {\n            if (iVar1 == iVar7) goto LAB_000588e3;\n            iVar2 = iVar7 * 4;\n            iVar7 = iVar7 + 1;\n            iVar2 = *(int *)(iVar10 + iVar2) + 1;\n            *(int *)(iVar10 + -4 + iVar7 * 4) = iVar2;\n          }\n        }" (if "if") (parenthesized_expression "(*piVar6 == 0)" (( "(") (binary_expression "*piVar6 == 0" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          if (iVar1 <= iVar7 + 1) goto LAB_000588e3;\n          piVar6 = (int *)(iVar7 * 4 + 4 + iVar10);\n          iVar7 = iVar7 + 2;\n          *piVar6 = *piVar6 + 1;\n          iVar2 = *piVar6;\n          while (iVar2 == 0) {\n            if (iVar1 == iVar7) goto LAB_000588e3;\n            iVar2 = iVar7 * 4;\n            iVar7 = iVar7 + 1;\n            iVar2 = *(int *)(iVar10 + iVar2) + 1;\n            *(int *)(iVar10 + -4 + iVar7 * 4) = iVar2;\n          }\n        }" ({ "{") (if_statement "if (iVar1 <= iVar7 + 1) goto LAB_000588e3;" (if "if") (parenthesized_expression "(iVar1 <= iVar7 + 1)" (( "(") (binary_expression "iVar1 <= iVar7 + 1" (identifier "iVar1") (<= "<=") (binary_expression "iVar7 + 1" (identifier "iVar7") (+ "+") (number_literal "1"))) () ")")) (goto_statement "goto LAB_000588e3;" (goto "goto") (statement_identifier "LAB_000588e3") (; ";"))) (expression_statement "piVar6 = (int *)(iVar7 * 4 + 4 + iVar10);" (assignment_expression "piVar6 = (int *)(iVar7 * 4 + 4 + iVar10)" (identifier "piVar6") (= "=") (cast_expression "(int *)(iVar7 * 4 + 4 + iVar10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 * 4 + 4 + iVar10)" (( "(") (binary_expression "iVar7 * 4 + 4 + iVar10" (binary_expression "iVar7 * 4 + 4" (binary_expression "iVar7 * 4" (identifier "iVar7") (* "*") (number_literal "4")) (+ "+") (number_literal "4")) (+ "+") (identifier "iVar10")) () ")")))) (; ";")) (expression_statement "iVar7 = iVar7 + 2;" (assignment_expression "iVar7 = iVar7 + 2" (identifier "iVar7") (= "=") (binary_expression "iVar7 + 2" (identifier "iVar7") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "*piVar6 = *piVar6 + 1;" (assignment_expression "*piVar6 = *piVar6 + 1" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (= "=") (binary_expression "*piVar6 + 1" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar2 = *piVar6;" (assignment_expression "iVar2 = *piVar6" (identifier "iVar2") (= "=") (pointer_expression "*piVar6" (* "*") (identifier "piVar6"))) (; ";")) (while_statement "while (iVar2 == 0) {\n            if (iVar1 == iVar7) goto LAB_000588e3;\n            iVar2 = iVar7 * 4;\n            iVar7 = iVar7 + 1;\n            iVar2 = *(int *)(iVar10 + iVar2) + 1;\n            *(int *)(iVar10 + -4 + iVar7 * 4) = iVar2;\n          }" (while "while") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            if (iVar1 == iVar7) goto LAB_000588e3;\n            iVar2 = iVar7 * 4;\n            iVar7 = iVar7 + 1;\n            iVar2 = *(int *)(iVar10 + iVar2) + 1;\n            *(int *)(iVar10 + -4 + iVar7 * 4) = iVar2;\n          }" ({ "{") (if_statement "if (iVar1 == iVar7) goto LAB_000588e3;" (if "if") (parenthesized_expression "(iVar1 == iVar7)" (( "(") (binary_expression "iVar1 == iVar7" (identifier "iVar1") (== "==") (identifier "iVar7")) () ")")) (goto_statement "goto LAB_000588e3;" (goto "goto") (statement_identifier "LAB_000588e3") (; ";"))) (expression_statement "iVar2 = iVar7 * 4;" (assignment_expression "iVar2 = iVar7 * 4" (identifier "iVar2") (= "=") (binary_expression "iVar7 * 4" (identifier "iVar7") (* "*") (number_literal "4"))) (; ";")) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" (identifier "iVar7") (= "=") (binary_expression "iVar7 + 1" (identifier "iVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar2 = *(int *)(iVar10 + iVar2) + 1;" (assignment_expression "iVar2 = *(int *)(iVar10 + iVar2) + 1" (identifier "iVar2") (= "=") (binary_expression "*(int *)(iVar10 + iVar2) + 1" (pointer_expression "*(int *)(iVar10 + iVar2)" (* "*") (cast_expression "(int *)(iVar10 + iVar2)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + iVar2)" (( "(") (binary_expression "iVar10 + iVar2" (identifier "iVar10") (+ "+") (identifier "iVar2")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(int *)(iVar10 + -4 + iVar7 * 4) = iVar2;" (assignment_expression "*(int *)(iVar10 + -4 + iVar7 * 4) = iVar2" (pointer_expression "*(int *)(iVar10 + -4 + iVar7 * 4)" (* "*") (cast_expression "(int *)(iVar10 + -4 + iVar7 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + -4 + iVar7 * 4)" (( "(") (binary_expression "iVar10 + -4 + iVar7 * 4" (binary_expression "iVar10 + -4" (identifier "iVar10") (+ "+") (number_literal "-4")) (+ "+") (binary_expression "iVar7 * 4" (identifier "iVar7") (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "iVar2")) (; ";")) (} "}"))) (} "}"))) (goto_statement "goto LAB_00058940;" (goto "goto") (statement_identifier "LAB_00058940") (; ";")) (} "}"))) (labeled_statement "LAB_000588e3:\n      uVar8 = 1;" (statement_identifier "LAB_000588e3") (: ":") (expression_statement "uVar8 = 1;" (assignment_expression "uVar8 = 1" (identifier "uVar8") (= "=") (number_literal "1")) (; ";"))) (expression_statement "param_6 = param_6 + *(int *)(unaff_retaddr + 4);" (assignment_expression "param_6 = param_6 + *(int *)(unaff_retaddr + 4)" (identifier "param_6") (= "=") (binary_expression "param_6 + *(int *)(unaff_retaddr + 4)" (identifier "param_6") (+ "+") (pointer_expression "*(int *)(unaff_retaddr + 4)" (* "*") (cast_expression "(int *)(unaff_retaddr + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_retaddr + 4)" (( "(") (binary_expression "unaff_retaddr + 4" (identifier "unaff_retaddr") (+ "+") (number_literal "4")) () ")")))))) (; ";")) (if_statement "if (param_6 == 0) goto LAB_000588f5;" (if "if") (parenthesized_expression "(param_6 == 0)" (( "(") (binary_expression "param_6 == 0" (identifier "param_6") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000588f5;" (goto "goto") (statement_identifier "LAB_000588f5") (; ";"))) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" (identifier "uVar8") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" (identifier "uVar5") (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_0005895f;" (goto "goto") (statement_identifier "LAB_0005895f") (; ";")) (} "}"))) (labeled_statement "LAB_00058940:\n    uVar8 = 0;" (statement_identifier "LAB_00058940") (: ":") (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" (identifier "uVar8") (= "=") (number_literal "0")) (; ";"))) (expression_statement "param_6 = param_6 + *(int *)(unaff_retaddr + 4);" (assignment_expression "param_6 = param_6 + *(int *)(unaff_retaddr + 4)" (identifier "param_6") (= "=") (binary_expression "param_6 + *(int *)(unaff_retaddr + 4)" (identifier "param_6") (+ "+") (pointer_expression "*(int *)(unaff_retaddr + 4)" (* "*") (cast_expression "(int *)(unaff_retaddr + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_retaddr + 4)" (( "(") (binary_expression "unaff_retaddr + 4" (identifier "unaff_retaddr") (+ "+") (number_literal "4")) () ")")))))) (; ";")) (if_statement "if (param_6 != 0) goto LAB_00058955;" (if "if") (parenthesized_expression "(param_6 != 0)" (( "(") (binary_expression "param_6 != 0" (identifier "param_6") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00058955;" (goto "goto") (statement_identifier "LAB_00058955") (; ";"))) (} "}")))) (labeled_statement "LAB_0005872a:\n  if (uVar11 == 0) {\n    if (*(int *)(param_4 + (param_3 + 0x3fffffff) * 4) == 0) {\n      param_3 = param_3 - (uint)(*(int *)(param_5 + (param_3 + 0x3fffffff) * 4) == 0);\n    }\n    return param_3;\n  }" (statement_identifier "LAB_0005872a") (: ":") (if_statement "if (uVar11 == 0) {\n    if (*(int *)(param_4 + (param_3 + 0x3fffffff) * 4) == 0) {\n      param_3 = param_3 - (uint)(*(int *)(param_5 + (param_3 + 0x3fffffff) * 4) == 0);\n    }\n    return param_3;\n  }" (if "if") (parenthesized_expression "(uVar11 == 0)" (( "(") (binary_expression "uVar11 == 0" (identifier "uVar11") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if (*(int *)(param_4 + (param_3 + 0x3fffffff) * 4) == 0) {\n      param_3 = param_3 - (uint)(*(int *)(param_5 + (param_3 + 0x3fffffff) * 4) == 0);\n    }\n    return param_3;\n  }" ({ "{") (if_statement "if (*(int *)(param_4 + (param_3 + 0x3fffffff) * 4) == 0) {\n      param_3 = param_3 - (uint)(*(int *)(param_5 + (param_3 + 0x3fffffff) * 4) == 0);\n    }" (if "if") (parenthesized_expression "(*(int *)(param_4 + (param_3 + 0x3fffffff) * 4) == 0)" (( "(") (binary_expression "*(int *)(param_4 + (param_3 + 0x3fffffff) * 4) == 0" (pointer_expression "*(int *)(param_4 + (param_3 + 0x3fffffff) * 4)" (* "*") (cast_expression "(int *)(param_4 + (param_3 + 0x3fffffff) * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + (param_3 + 0x3fffffff) * 4)" (( "(") (binary_expression "param_4 + (param_3 + 0x3fffffff) * 4" (identifier "param_4") (+ "+") (binary_expression "(param_3 + 0x3fffffff) * 4" (parenthesized_expression "(param_3 + 0x3fffffff)" (( "(") (binary_expression "param_3 + 0x3fffffff" (identifier "param_3") (+ "+") (number_literal "0x3fffffff")) () ")")) (* "*") (number_literal "4"))) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      param_3 = param_3 - (uint)(*(int *)(param_5 + (param_3 + 0x3fffffff) * 4) == 0);\n    }" ({ "{") (expression_statement "param_3 = param_3 - (uint)(*(int *)(param_5 + (param_3 + 0x3fffffff) * 4) == 0);" (assignment_expression "param_3 = param_3 - (uint)(*(int *)(param_5 + (param_3 + 0x3fffffff) * 4) == 0)" (identifier "param_3") (= "=") (binary_expression "param_3 - (uint)(*(int *)(param_5 + (param_3 + 0x3fffffff) * 4) == 0)" (identifier "param_3") (- "-") (call_expression "(uint)(*(int *)(param_5 + (param_3 + 0x3fffffff) * 4) == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(int *)(param_5 + (param_3 + 0x3fffffff) * 4) == 0)" (( "(") (binary_expression "*(int *)(param_5 + (param_3 + 0x3fffffff) * 4) == 0" (pointer_expression "*(int *)(param_5 + (param_3 + 0x3fffffff) * 4)" (* "*") (cast_expression "(int *)(param_5 + (param_3 + 0x3fffffff) * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + (param_3 + 0x3fffffff) * 4)" (( "(") (binary_expression "param_5 + (param_3 + 0x3fffffff) * 4" (identifier "param_5") (+ "+") (binary_expression "(param_3 + 0x3fffffff) * 4" (parenthesized_expression "(param_3 + 0x3fffffff)" (( "(") (binary_expression "param_3 + 0x3fffffff" (identifier "param_3") (+ "+") (number_literal "0x3fffffff")) () ")")) (* "*") (number_literal "4"))) () ")")))) (== "==") (number_literal "0")) () ")"))))) (; ";")) (} "}"))) (return_statement "return param_3;" (return "return") (identifier "param_3") (; ";")) (} "}")))) (labeled_statement "LAB_000588f5:\n  *(uint *)(param_4 + param_3 * 4) = local_3c;" (statement_identifier "LAB_000588f5") (: ":") (expression_statement "*(uint *)(param_4 + param_3 * 4) = local_3c;" (assignment_expression "*(uint *)(param_4 + param_3 * 4) = local_3c" (pointer_expression "*(uint *)(param_4 + param_3 * 4)" (* "*") (cast_expression "(uint *)(param_4 + param_3 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + param_3 * 4)" (( "(") (binary_expression "param_4 + param_3 * 4" (identifier "param_4") (+ "+") (binary_expression "param_3 * 4" (identifier "param_3") (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "local_3c")) (; ";"))) (expression_statement "*(uint *)(param_5 + param_3 * 4) = uVar8;" (assignment_expression "*(uint *)(param_5 + param_3 * 4) = uVar8" (pointer_expression "*(uint *)(param_5 + param_3 * 4)" (* "*") (cast_expression "(uint *)(param_5 + param_3 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + param_3 * 4)" (( "(") (binary_expression "param_5 + param_3 * 4" (identifier "param_5") (+ "+") (binary_expression "param_3 * 4" (identifier "param_3") (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "uVar8")) (; ";")) (return_statement "return param_3 + 1;" (return "return") (binary_expression "param_3 + 1" (identifier "param_3") (+ "+") (number_literal "1")) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

type_1 function_1
                    (type_2 *M,type_1 var_6,type_3 var_7,type_3 var_17,type_1 var_3,type_3 var_1)

{
  type_3 prodp;
  type_4 pmVar1;
  type_5 *var_15;
  int var_10;
  int var_13;
  type_3 pmVar5;
  type_6 var_11;
  int var_2;
  type_7 var_16;
  type_7 uVar9;
  type_3 var_12;
  type_7 var_18;
  type_7 var_9;
  
  var_2 = M->var_6;
  prodp = var_1 + var_2 + var_3;
  pmVar1 = M->var_3[1][1];
  if (var_2 < var_3) {
    var_4(var_1,var_7,var_3,pmVar1,var_2);
    var_4(prodp,var_7,var_3,M->var_3[1][0],M->var_6);
  }
  else {
    var_4(var_1,pmVar1,var_2,var_7,var_3);
    var_4(prodp,M->var_3[1][0],M->var_6,var_7,var_3);
  }
  var_15 = var_5;
  (**(type_8 **)(var_5 + 0x28))(var_7,var_1,var_3);
  var_2 = M->var_6;
  var_10 = var_6 - var_3;
  var_9 = 0;
  if (var_2 != 0) {
    var_12 = var_7 + var_3;
    var_9 = var_8(var_12,var_12,var_1 + var_3,var_2);
    if (var_9 == 0) {
LAB_00058ac0:
      var_2 = M->var_6;
    }
    else {
      if (var_2 < var_10) {
        var_11 = var_12[var_2] + 1;
        var_12[var_2] = var_11;
        if (var_11 != 0) {
          var_9 = 0;
          var_2 = M->var_6;
          goto LAB_000586a5;
        }
        if (var_2 + 1 < var_10) {
          pmVar5 = var_12 + var_2 + 1;
          *pmVar5 = *pmVar5 + 1;
          var_11 = *pmVar5;
          var_9 = 0;
          var_2 = var_2 + 2;
          while (var_11 == 0) {
            if (var_10 == var_2) goto LAB_00058aa3;
            var_11 = var_12[var_2] + 1;
            var_12[var_2] = var_11;
            var_2 = var_2 + 1;
          }
          goto LAB_00058ac0;
        }
      }
LAB_00058aa3:
      var_9 = 1;
      var_2 = M->var_6;
    }
  }
LAB_000586a5:
  pmVar1 = M->var_3[0][1];
  if (var_2 < var_3) {
    var_4(var_1,var_17,var_3,pmVar1,var_2);
    var_2 = M->var_6;
  }
  else {
    var_4(var_1,pmVar1,var_2,var_17,var_3);
    var_2 = M->var_6;
  }
  var_13 = var_2 + var_3;
  if (var_13 != 0) {
    var_2 = var_14(var_7,var_7,var_1,var_13);
    if (var_2 != 0) {
      if (var_6 <= var_13) {
LAB_00058815:
        var_9 = var_9 - 1;
        var_2 = M->var_6;
        goto LAB_000586d8;
      }
      var_11 = var_7[var_13];
      var_7[var_13] = var_11 - 1;
      if (var_11 == 0) {
        if (var_6 <= var_13 + 1) goto LAB_00058815;
        var_11 = var_7[var_13 + 1];
        var_7[var_13 + 1] = var_11 - 1;
        var_2 = var_13 + 2;
        while (var_11 == 0) {
          if (var_2 == var_6) goto LAB_00058815;
          var_11 = var_7[var_2];
          var_7[var_2] = var_11 - 1;
          var_2 = var_2 + 1;
        }
      }
    }
    var_2 = M->var_6;
  }
LAB_000586d8:
  pmVar1 = M->var_3[0][0];
  if (var_2 < var_3) {
    var_4(var_1,var_17,var_3,pmVar1,var_2);
  }
  else {
    var_4(var_1,pmVar1,var_2,var_17,var_3);
  }
  (**(type_8 **)(var_15 + 0x28))(var_17,var_1,var_3);
  var_2 = M->var_6;
  var_18 = var_9;
  if (var_2 == 0) {
    uVar9 = 0;
    if (var_3 != 0) {
LAB_00058955:
      var_16 = 0;
      uVar9 = 0xffffffff;
      var_18 = 0xffffffff;
LAB_0005895f:
      var_2 = var_14(var_17,var_17,prodp,var_3);
      if (var_2 != 0) {
        if (var_6 <= var_3) goto LAB_0005872a;
        var_11 = var_17[var_3];
        var_17[var_3] = var_11 - 1;
        if (var_11 == 0) {
          if (var_6 <= var_3 + 1) goto LAB_0005872a;
          var_11 = var_17[var_3 + 1];
          var_17[var_3 + 1] = var_11 - 1;
          var_2 = var_3 + 2;
          while (var_11 == 0) {
            if (var_2 == var_6) goto LAB_0005872a;
            var_11 = var_17[var_2];
            var_17[var_2] = var_11 - 1;
            var_2 = var_2 + 1;
          }
        }
      }
      uVar9 = var_16;
      var_18 = var_9 | var_16;
    }
  }
  else {
    var_12 = var_17 + var_3;
    var_13 = var_8(var_12,var_12,var_1 + var_3,var_2);
    if (var_13 != 0) {
      if (var_2 < var_10) {
        pmVar5 = var_12 + var_2;
        *pmVar5 = *pmVar5 + 1;
        if (*pmVar5 == 0) {
          if (var_10 <= var_2 + 1) goto LAB_000588e3;
          pmVar5 = var_12 + var_2 + 1;
          *pmVar5 = *pmVar5 + 1;
          var_11 = *pmVar5;
          var_2 = var_2 + 2;
          while (var_11 == 0) {
            if (var_10 == var_2) goto LAB_000588e3;
            var_11 = var_12[var_2] + 1;
            var_12[var_2] = var_11;
            var_2 = var_2 + 1;
          }
        }
        goto LAB_00058940;
      }
LAB_000588e3:
      uVar9 = 1;
      var_3 = var_3 + M->var_6;
      if (var_3 == 0) goto LAB_000588f5;
      uVar9 = 0;
      var_16 = 1;
      goto LAB_0005895f;
    }
LAB_00058940:
    uVar9 = 0;
    var_3 = var_3 + M->var_6;
    if (var_3 != 0) goto LAB_00058955;
  }
LAB_0005872a:
  if (var_18 == 0) {
    if (var_7[var_6 + 0x3fffffff] == 0) {
      var_6 = var_6 - (type_7)(var_17[var_6 + 0x3fffffff] == 0);
    }
    return var_6;
  }
LAB_000588f5:
  var_7[var_6] = var_9;
  var_17[var_6] = uVar9;
  return var_6 + 1;
}


(translation_unit (function_definition type: (primitive_type) (ERROR (identifier)) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (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: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (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))))) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (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))))) (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))))))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (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))))) (identifier) (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (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))))) (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))))) (identifier) (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (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: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (binary_expression left: (identifier) right: (identifier)) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (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))))))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (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))))))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)) right: (identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (while_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))))) right: (identifier))))) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (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))))) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (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))))) (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (while_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))))) right: (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (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))))) (identifier))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (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))))) (identifier) (identifier) (identifier)))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (while_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))))) right: (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (binary_expression left: (identifier) right: (identifier)) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (while_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))))) right: (identifier))))))) (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: (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (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: (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (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) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (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: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))))) right: (number_literal))))))))) (return_statement (identifier))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) right: (identifier))) (return_statement (binary_expression left: (identifier) right: (number_literal))))))

int __regparm2
MASKED
          (undefined4 param_1,undefined4 param_2,int param_3,int param_4,int param_5,int param_6,
          int param_7)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  uint uVar5;
  int unaff_EBX;
  int *piVar6;
  int iVar7;
  uint uVar8;
  int iVar9;
  int iVar10;
  uint uVar11;
  int unaff_retaddr;
  uint local_3c;
  
  entry(param_2,0x585f9);
  iVar2 = *(int *)(unaff_retaddr + 4);
  iVar3 = param_7 + (iVar2 + param_6) * 4;
  if (iVar2 < param_6) {
    __gmpn_mul(param_7,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x14),iVar2);
    __gmpn_mul(iVar3,param_4,param_6,*(undefined4 *)(unaff_retaddr + 0x10),
               *(undefined4 *)(unaff_retaddr + 4));
  }
  else {
    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0x14),iVar2,param_4,param_6);
    __gmpn_mul(iVar3,*(undefined4 *)(unaff_retaddr + 0x10),*(undefined4 *)(unaff_retaddr + 4),
               param_4,param_6);
  }
  iVar7 = *(int *)(unaff_EBX + 0x4579b);
  (**(code **)(iVar7 + 0x28))(param_4,param_7,param_6);
  iVar10 = *(int *)(unaff_retaddr + 4);
  iVar2 = param_6 * 4;
  iVar1 = param_3 - param_6;
  local_3c = 0;
  if (iVar10 != 0) {
    iVar4 = iVar2 + param_4;
    local_3c = __gmpn_add_n(iVar4,iVar4,iVar2 + param_7,iVar10);
    if (local_3c == 0) {
LAB_00058ac0:
      iVar10 = *(int *)(unaff_retaddr + 4);
    }
    else {
      if (iVar10 < iVar1) {
        piVar6 = (int *)(iVar4 + iVar10 * 4);
        iVar9 = *piVar6 + 1;
        *piVar6 = iVar9;
        if (iVar9 != 0) {
          local_3c = 0;
          iVar10 = *(int *)(unaff_retaddr + 4);
          goto LAB_000586a5;
        }
        if (iVar10 + 1 < iVar1) {
          iVar9 = iVar10 + 2;
          piVar6 = (int *)(iVar10 * 4 + 4 + iVar4);
          *piVar6 = *piVar6 + 1;
          iVar10 = *piVar6;
          local_3c = 0;
          while (iVar10 == 0) {
            if (iVar1 == iVar9) goto LAB_00058aa3;
            iVar10 = iVar9 * 4;
            iVar9 = iVar9 + 1;
            iVar10 = *(int *)(iVar4 + iVar10) + 1;
            *(int *)(iVar4 + -4 + iVar9 * 4) = iVar10;
          }
          goto LAB_00058ac0;
        }
      }
LAB_00058aa3:
      local_3c = 1;
      iVar10 = *(int *)(unaff_retaddr + 4);
    }
  }
LAB_000586a5:
  if (iVar10 < param_6) {
    __gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 0xc),iVar10);
    iVar10 = *(int *)(unaff_retaddr + 4);
  }
  else {
    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 0xc),iVar10,param_5,param_6);
    iVar10 = *(int *)(unaff_retaddr + 4);
  }
  iVar4 = iVar10 + param_6;
  if (iVar4 != 0) {
    iVar10 = __gmpn_sub_n(param_4,param_4,param_7,iVar4);
    if (iVar10 != 0) {
      if (param_3 <= iVar4) {
LAB_00058815:
        local_3c = local_3c - 1;
        iVar10 = *(int *)(unaff_retaddr + 4);
        goto LAB_000586d8;
      }
      piVar6 = (int *)(param_4 + iVar4 * 4);
      iVar10 = *piVar6;
      *piVar6 = iVar10 + -1;
      if (iVar10 == 0) {
        if (param_3 <= iVar4 + 1) goto LAB_00058815;
        iVar9 = iVar4 + 2;
        piVar6 = (int *)(param_4 + (iVar4 + 1) * 4);
        iVar10 = *piVar6;
        *piVar6 = iVar10 + -1;
        while (iVar10 == 0) {
          if (iVar9 == param_3) goto LAB_00058815;
          iVar10 = *(int *)(param_4 + iVar9 * 4);
          iVar9 = iVar9 + 1;
          *(int *)(param_4 + -4 + iVar9 * 4) = iVar10 + -1;
        }
      }
    }
    iVar10 = *(int *)(unaff_retaddr + 4);
  }
LAB_000586d8:
  if (iVar10 < param_6) {
    __gmpn_mul(param_7,param_5,param_6,*(undefined4 *)(unaff_retaddr + 8),iVar10);
  }
  else {
    __gmpn_mul(param_7,*(undefined4 *)(unaff_retaddr + 8),iVar10,param_5,param_6);
  }
  (**(code **)(iVar7 + 0x28))(param_5,param_7,param_6);
  iVar7 = *(int *)(unaff_retaddr + 4);
  uVar11 = local_3c;
  if (iVar7 == 0) {
    uVar8 = 0;
    if (param_6 != 0) {
LAB_00058955:
      uVar5 = 0;
      uVar8 = 0xffffffff;
      uVar11 = 0xffffffff;
LAB_0005895f:
      iVar3 = __gmpn_sub_n(param_5,param_5,iVar3,param_6);
      if (iVar3 != 0) {
        if (param_3 <= param_6) goto LAB_0005872a;
        piVar6 = (int *)(param_5 + param_6 * 4);
        iVar3 = *piVar6;
        *piVar6 = iVar3 + -1;
        if (iVar3 == 0) {
          if (param_3 <= param_6 + 1) goto LAB_0005872a;
          piVar6 = (int *)(param_6 * 4 + 4 + param_5);
          param_6 = param_6 + 2;
          iVar3 = *piVar6;
          *piVar6 = iVar3 + -1;
          while (iVar3 == 0) {
            if (param_6 == param_3) goto LAB_0005872a;
            iVar3 = *(int *)(param_5 + param_6 * 4);
            param_6 = param_6 + 1;
            *(int *)(param_5 + -4 + param_6 * 4) = iVar3 + -1;
          }
        }
      }
      uVar8 = uVar5;
      uVar11 = local_3c | uVar5;
    }
  }
  else {
    iVar10 = iVar2 + param_5;
    iVar2 = __gmpn_add_n(iVar10,iVar10,iVar2 + param_7,iVar7);
    if (iVar2 != 0) {
      if (iVar7 < iVar1) {
        piVar6 = (int *)(iVar10 + iVar7 * 4);
        *piVar6 = *piVar6 + 1;
        if (*piVar6 == 0) {
          if (iVar1 <= iVar7 + 1) goto LAB_000588e3;
          piVar6 = (int *)(iVar7 * 4 + 4 + iVar10);
          iVar7 = iVar7 + 2;
          *piVar6 = *piVar6 + 1;
          iVar2 = *piVar6;
          while (iVar2 == 0) {
            if (iVar1 == iVar7) goto LAB_000588e3;
            iVar2 = iVar7 * 4;
            iVar7 = iVar7 + 1;
            iVar2 = *(int *)(iVar10 + iVar2) + 1;
            *(int *)(iVar10 + -4 + iVar7 * 4) = iVar2;
          }
        }
        goto LAB_00058940;
      }
LAB_000588e3:
      uVar8 = 1;
      param_6 = param_6 + *(int *)(unaff_retaddr + 4);
      if (param_6 == 0) goto LAB_000588f5;
      uVar8 = 0;
      uVar5 = 1;
      goto LAB_0005895f;
    }
LAB_00058940:
    uVar8 = 0;
    param_6 = param_6 + *(int *)(unaff_retaddr + 4);
    if (param_6 != 0) goto LAB_00058955;
  }
LAB_0005872a:
  if (uVar11 == 0) {
    if (*(int *)(param_4 + (param_3 + 0x3fffffff) * 4) == 0) {
      param_3 = param_3 - (uint)(*(int *)(param_5 + (param_3 + 0x3fffffff) * 4) == 0);
    }
    return param_3;
  }
LAB_000588f5:
  *(uint *)(param_4 + param_3 * 4) = local_3c;
  *(uint *)(param_5 + param_3 * 4) = uVar8;
  return param_3 + 1;
}

