
mp_size_t __gmpn_gcd_subdiv_step
                    (mp_ptr ap,mp_ptr bp,mp_size_t n,mp_size_t s,gcd_subdiv_step_hook *hook,
                    void *ctx,mp_ptr tp)

{
  ulong uVar1;
  ulong uVar2;
  long lVar3;
  mp_limb_t mVar4;
  mp_ptr pmVar5;
  mp_size_t mVar6;
  long lVar7;
  long lVar8;
  mp_size_t mVar9;
  mp_ptr pmVar10;
  uint uVar11;
  
  mVar6 = n;
  lVar3 = n;
  pmVar5 = bp;
  if (n < 1) {
LAB_00133136:
    do {
      lVar3 = lVar3 + -1;
      if (lVar3 < 0) {
        if (s != 0) {
          return 0;
        }
        (*hook)(ctx,ap,n,(mp_srcptr)0x0,0,-1);
        return 0;
      }
    } while (ap[lVar3] == bp[lVar3]);
    lVar7 = mVar6;
    mVar9 = n;
    if (bp[lVar3] < ap[lVar3]) {
      uVar11 = 1;
      pmVar5 = ap;
      ap = bp;
    }
    else {
      uVar11 = 0;
    }
  }
  else {
    if (ap[n + -1] != 0) {
      mVar9 = n;
      if (bp[n + -1] == 0) goto LAB_00132fd1;
      goto LAB_00133136;
    }
    do {
      mVar9 = lVar3 + -1;
      if (mVar9 == 0) {
        if (bp[n + -1] == 0) goto LAB_00132fd1;
        uVar11 = 0;
        lVar7 = n;
        goto LAB_00133008;
      }
      lVar7 = lVar3 + -2;
      lVar3 = mVar9;
    } while (ap[lVar7] == 0);
    mVar4 = bp[n + -1];
    while (n = mVar6, mVar4 == 0) {
LAB_00132fd1:
      mVar6 = n + -1;
      if (mVar6 == 0) break;
      mVar4 = bp[n + -2];
    }
    n = mVar9;
    lVar3 = n;
    if (mVar6 == n) goto LAB_00133136;
    uVar11 = 0;
    lVar7 = mVar6;
    mVar9 = n;
    if (mVar6 < n) {
      uVar11 = 1;
      lVar7 = n;
      mVar9 = mVar6;
      pmVar5 = ap;
      ap = bp;
    }
  }
LAB_00133008:
  if (mVar9 <= s) {
    if (s != 0) {
      return 0;
    }
    (*hook)(ctx,pmVar5,lVar7,(mp_srcptr)0x0,0,uVar11 ^ 1);
    return 0;
  }
  pmVar10 = pmVar5;
  if (((mVar9 == 0) || (lVar3 = __gmpn_sub_n(pmVar5,pmVar5,ap,mVar9), lVar3 == 0)) ||
     (lVar7 <= mVar9)) {
LAB_0013301a:
    if (0 < lVar7) {
      mVar4 = pmVar5[lVar7 + -1];
      goto joined_r0x00133029;
    }
LAB_0013321f:
    lVar3 = lVar7;
    if (lVar7 <= s) {
      if ((lVar7 == 0) || (lVar3 = __gmpn_add_n(pmVar5,ap,pmVar5,lVar7), lVar3 == 0))
      goto LAB_00133231;
LAB_0013327a:
      mVar4 = ap[lVar7] + 1;
      pmVar5[lVar7] = mVar4;
      while (lVar7 = lVar7 + 1, mVar4 == 0) {
        if (mVar9 == lVar7) goto LAB_00133408;
        mVar4 = ap[lVar7] + 1;
        pmVar5[lVar7] = mVar4;
      }
LAB_00133231:
      if (ap != pmVar5) {
        if (lVar7 < mVar9) {
          do {
            pmVar5[lVar7] = ap[lVar7];
            lVar7 = lVar7 + 1;
          } while (mVar9 != lVar7);
        }
        return 0;
      }
      return 0;
    }
LAB_00133049:
    lVar8 = mVar9;
    lVar7 = lVar3;
    if (mVar9 == lVar3) {
      do {
        lVar8 = lVar8 + -1;
        if (lVar8 < 0) {
          if (0 < s) {
            (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);
            return 0;
          }
          (*hook)(ctx,pmVar5,lVar3,(mp_srcptr)0x0,0,uVar11);
          return 0;
        }
        uVar1 = ap[lVar8];
        uVar2 = pmVar5[lVar8];
      } while (uVar1 == uVar2);
      if (uVar1 < uVar2 || uVar1 == uVar2) {
        (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);
      }
      else {
        (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);
        uVar11 = uVar11 ^ 1;
        pmVar10 = ap;
        ap = pmVar5;
      }
    }
    else {
      (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);
      if (lVar3 < mVar9) {
        uVar11 = uVar11 ^ 1;
        lVar7 = mVar9;
        mVar9 = lVar3;
        pmVar10 = ap;
        ap = pmVar5;
      }
    }
  }
  else {
    mVar4 = pmVar5[mVar9];
    pmVar5[mVar9] = mVar4 - 1;
    lVar3 = mVar9;
    if (mVar4 == 0) {
      do {
        lVar3 = lVar3 + 1;
        if (lVar7 == lVar3) goto LAB_00133465;
        mVar4 = pmVar5[lVar3];
        pmVar5[lVar3] = mVar4 - 1;
      } while (mVar4 == 0);
      goto LAB_0013301a;
    }
LAB_00133465:
    if (0 < lVar7) {
      lVar3 = lVar7;
      if (pmVar5[lVar7 + -1] == 0) {
        do {
          lVar7 = lVar3 + -1;
          if (lVar7 < 1) goto LAB_0013321f;
          mVar4 = pmVar5[lVar3 + -2];
joined_r0x00133029:
          lVar3 = lVar7;
        } while (mVar4 == 0);
        if (s < lVar7) goto LAB_00133049;
        lVar3 = __gmpn_add_n(pmVar5,ap,pmVar5,lVar7);
        if (lVar3 == 0) goto LAB_00133231;
        if (mVar9 <= lVar7) {
LAB_00133408:
          pmVar5[mVar9] = 1;
          return 0;
        }
        goto LAB_0013327a;
      }
      goto LAB_00133049;
    }
    (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);
  }
  __gmpn_tdiv_qr(tp,pmVar10,0,pmVar10,lVar7,ap,mVar9);
  lVar3 = (lVar7 - mVar9) + 1;
  if (mVar9 < 1) goto LAB_001330fa;
  mVar4 = pmVar10[mVar9 + -1];
  lVar7 = mVar9;
  while ((lVar8 = lVar7, mVar4 == 0 && (lVar8 = lVar7 + -1, lVar8 != 0))) {
    mVar4 = pmVar10[lVar7 + -2];
    lVar7 = lVar8;
  }
  if (s < lVar8) goto LAB_001330fa;
  if (s == 0) {
    (*hook)(ctx,ap,mVar9,tp,lVar3,uVar11);
    return 0;
  }
  pmVar5 = tp;
  if (lVar8 < 1) {
    __gmpn_copyi(pmVar10,ap,mVar9);
  }
  else {
    lVar7 = __gmpn_add_n(pmVar10,ap,pmVar10,lVar8);
    if (lVar7 != 0) {
      if (mVar9 <= lVar8) {
LAB_0013341a:
        pmVar10[mVar9] = 1;
        mVar9 = mVar9 + 1;
        goto LAB_001333ef;
      }
      mVar4 = ap[lVar8] + 1;
      pmVar10[lVar8] = mVar4;
      while (lVar8 = lVar8 + 1, mVar4 == 0) {
        if (mVar9 == lVar8) goto LAB_0013341a;
        mVar4 = ap[lVar8] + 1;
        pmVar10[lVar8] = mVar4;
      }
    }
    if ((ap != pmVar10) && (lVar8 < mVar9)) {
      do {
        pmVar10[lVar8] = ap[lVar8];
        lVar8 = lVar8 + 1;
      } while (mVar9 != lVar8);
    }
  }
LAB_001333ef:
  do {
    mVar4 = *pmVar5;
    *pmVar5 = *pmVar5 - 1;
    pmVar5 = pmVar5 + 1;
  } while (mVar4 == 0);
LAB_001330fa:
  (*hook)(ctx,(mp_srcptr)0x0,0,tp,lVar3,uVar11);
  return mVar9;
}



long __gmpn_gcd_subdiv_step
               (long param_1,long param_2,long param_3,long param_4,code *param_5,undefined8 param_6
               ,long *param_7)

{
  ulong uVar1;
  ulong uVar2;
  long lVar3;
  long lVar4;
  long lVar5;
  long *plVar6;
  long lVar7;
  long lVar8;
  long lVar9;
  long lVar10;
  uint uVar11;
  
  lVar3 = param_3;
  lVar9 = param_3;
  lVar10 = param_2;
  if (param_3 < 1) {
LAB_00133136:
    do {
      lVar9 = lVar9 + -1;
      if (lVar9 < 0) {
        if (param_4 != 0) {
          return 0;
        }
        (*param_5)(param_6,param_1,param_3,0,0,0xffffffff);
        return 0;
      }
      uVar1 = *(ulong *)(param_1 + lVar9 * 8);
      uVar2 = *(ulong *)(param_2 + lVar9 * 8);
    } while (uVar1 == uVar2);
    lVar7 = lVar3;
    lVar9 = param_3;
    if (uVar2 < uVar1) {
      uVar11 = 1;
      lVar10 = param_1;
      param_1 = param_2;
    }
    else {
      uVar11 = 0;
    }
  }
  else {
    lVar7 = param_3 * 8;
    if (*(long *)(param_1 + -8 + lVar7) != 0) {
      if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;
      goto LAB_00133136;
    }
    do {
      lVar9 = lVar9 + -1;
      if (lVar9 == 0) {
        if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;
        uVar11 = 0;
        lVar7 = param_3;
        goto LAB_00133008;
      }
    } while (*(long *)(param_1 + -8 + lVar9 * 8) == 0);
    lVar7 = *(long *)(param_2 + -8 + lVar7);
    while (param_3 = lVar3, lVar7 == 0) {
LAB_00132fd1:
      lVar3 = param_3 + -1;
      if (lVar3 == 0) break;
      lVar7 = *(long *)(param_2 + -8 + lVar3 * 8);
    }
    param_3 = lVar9;
    lVar9 = param_3;
    if (lVar3 == param_3) goto LAB_00133136;
    uVar11 = 0;
    lVar7 = lVar3;
    if (lVar3 < param_3) {
      uVar11 = 1;
      lVar7 = param_3;
      lVar9 = lVar3;
      lVar10 = param_1;
      param_1 = param_2;
    }
  }
LAB_00133008:
  if (lVar9 <= param_4) {
    if (param_4 != 0) {
      return 0;
    }
    (*param_5)(param_6,lVar10,lVar7,0,0,uVar11 ^ 1);
    return 0;
  }
  lVar3 = lVar10;
  if (((lVar9 == 0) || (lVar4 = __gmpn_sub_n(lVar10,lVar10,param_1,lVar9), lVar4 == 0)) ||
     (lVar7 <= lVar9)) {
LAB_0013301a:
    if (0 < lVar7) {
      lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);
      goto joined_r0x00133029;
    }
LAB_0013321f:
    lVar4 = lVar7;
    if (lVar7 <= param_4) {
      if ((lVar7 == 0) || (lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7), lVar3 == 0))
      goto LAB_00133231;
LAB_0013327a:
      lVar3 = lVar7 * 8;
      lVar7 = lVar7 + 1;
      lVar4 = *(long *)(param_1 + lVar3) + 1;
      *(long *)(lVar10 + lVar3) = lVar4;
      while (lVar4 == 0) {
        if (lVar9 == lVar7) goto LAB_00133408;
        lVar3 = lVar7 * 8;
        lVar7 = lVar7 + 1;
        lVar4 = *(long *)(param_1 + lVar3) + 1;
        *(long *)(lVar10 + -8 + lVar7 * 8) = lVar4;
      }
LAB_00133231:
      if (param_1 != lVar10) {
        if (lVar7 < lVar9) {
          do {
            *(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8);
            lVar7 = lVar7 + 1;
          } while (lVar9 != lVar7);
        }
        return 0;
      }
      return 0;
    }
LAB_00133049:
    lVar8 = lVar9;
    lVar7 = lVar4;
    if (lVar9 == lVar4) {
      do {
        lVar8 = lVar8 + -1;
        if (lVar8 < 0) {
          if (0 < param_4) {
            (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);
            return 0;
          }
          (*param_5)(param_6,lVar10,lVar4,0,0,uVar11);
          return 0;
        }
        uVar1 = *(ulong *)(param_1 + lVar8 * 8);
        uVar2 = *(ulong *)(lVar10 + lVar8 * 8);
      } while (uVar1 == uVar2);
      if (uVar1 < uVar2 || uVar1 == uVar2) {
        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);
      }
      else {
        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);
        uVar11 = uVar11 ^ 1;
        lVar3 = param_1;
        param_1 = lVar10;
      }
    }
    else {
      (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);
      if (lVar4 < lVar9) {
        uVar11 = uVar11 ^ 1;
        lVar7 = lVar9;
        lVar9 = lVar4;
        lVar3 = param_1;
        param_1 = lVar10;
      }
    }
  }
  else {
    plVar6 = (long *)(lVar10 + lVar9 * 8);
    lVar8 = *plVar6;
    lVar4 = lVar9 + 1;
    *plVar6 = lVar8 + -1;
    if (lVar8 == 0) {
      do {
        if (lVar7 == lVar4) goto LAB_00133465;
        lVar8 = *(long *)(lVar10 + lVar4 * 8);
        lVar4 = lVar4 + 1;
        *(long *)(lVar10 + -8 + lVar4 * 8) = lVar8 + -1;
      } while (lVar8 == 0);
      goto LAB_0013301a;
    }
LAB_00133465:
    if (0 < lVar7) {
      lVar4 = lVar7;
      if (*(long *)(lVar10 + -8 + lVar7 * 8) == 0) {
        do {
          lVar7 = lVar7 + -1;
          if (lVar7 < 1) goto LAB_0013321f;
          lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);
joined_r0x00133029:
        } while (lVar4 == 0);
        lVar4 = lVar7;
        if (param_4 < lVar7) goto LAB_00133049;
        lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7);
        if (lVar3 == 0) goto LAB_00133231;
        if (lVar9 <= lVar7) {
LAB_00133408:
          *(undefined8 *)(lVar10 + lVar9 * 8) = 1;
          return 0;
        }
        goto LAB_0013327a;
      }
      goto LAB_00133049;
    }
    (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);
  }
  __gmpn_tdiv_qr(param_7,lVar3,0,lVar3,lVar7,param_1,lVar9);
  lVar10 = (lVar7 - lVar9) + 1;
  if (lVar9 < 1) goto LAB_001330fa;
  lVar7 = lVar9 * 8;
  lVar4 = *(long *)(lVar3 + -8 + lVar7);
  lVar8 = lVar9;
  while ((lVar4 == 0 && (lVar8 = lVar8 + -1, lVar8 != 0))) {
    lVar4 = *(long *)(lVar3 + -8 + lVar8 * 8);
  }
  if (param_4 < lVar8) goto LAB_001330fa;
  if (param_4 == 0) {
    (*param_5)(param_6,param_1,lVar9,param_7,lVar10,uVar11);
    return 0;
  }
  plVar6 = param_7;
  if (lVar8 < 1) {
    __gmpn_copyi(lVar3,param_1,lVar9);
  }
  else {
    lVar4 = __gmpn_add_n(lVar3,param_1,lVar3,lVar8);
    if (lVar4 != 0) {
      if (lVar9 <= lVar8) {
LAB_0013341a:
        lVar9 = lVar9 + 1;
        *(undefined8 *)(lVar3 + lVar7) = 1;
        goto LAB_001333ef;
      }
      lVar4 = lVar8 * 8;
      lVar8 = lVar8 + 1;
      lVar5 = *(long *)(param_1 + lVar4) + 1;
      *(long *)(lVar3 + lVar4) = lVar5;
      while (lVar5 == 0) {
        if (lVar9 == lVar8) goto LAB_0013341a;
        lVar4 = lVar8 * 8;
        lVar8 = lVar8 + 1;
        lVar5 = *(long *)(param_1 + lVar4) + 1;
        *(long *)(lVar3 + -8 + lVar8 * 8) = lVar5;
      }
    }
    if ((param_1 != lVar3) && (lVar8 < lVar9)) {
      do {
        *(undefined8 *)(lVar3 + lVar8 * 8) = *(undefined8 *)(param_1 + lVar8 * 8);
        lVar8 = lVar8 + 1;
      } while (lVar9 != lVar8);
    }
  }
LAB_001333ef:
  do {
    lVar3 = *plVar6;
    *plVar6 = *plVar6 + -1;
    plVar6 = plVar6 + 1;
  } while (lVar3 == 0);
LAB_001330fa:
  (*param_5)(param_6,0,0,param_7,lVar10,uVar11);
  return lVar9;
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x28
MOV R13,RDI
MOV R12,RSI
MOV RBX,RDX
MOV R14,RCX
MOV qword ptr [RSP],R8
MOV qword ptr [RSP + 0x8],R9
TEST RDX,RDX
JLE 0x0013312e
LEA RAX,[RDX*0x8]
CMP qword ptr [RDI + RAX*0x1 + -0x8],0x0
JNZ 0x00133534
MOV RBP,RDX
SUB RBP,0x1
JZ 0x00132fc5
CMP qword ptr [R13 + RBP*0x8 + -0x8],0x0
JZ 0x00132fad
CMP qword ptr [R12 + RAX*0x1 + -0x8],0x0
JZ 0x00132fd1
JMP 0x00132fdf
CMP qword ptr [R12 + RAX*0x1 + -0x8],0x0
JNZ 0x0013316f
SUB RBX,0x1
JZ 0x00132fdf
CMP qword ptr [R12 + RBX*0x8 + -0x8],0x0
JZ 0x00132fd1
CMP RBX,RBP
JZ 0x00133133
MOV R15D,0x0
JGE 0x00133008
MOV RAX,RBP
MOV RBP,RBX
MOV RBX,RAX
MOV RAX,R13
MOV R13,R12
MOV R12,RAX
MOV R15D,0x1
CMP RBP,R14
JLE 0x00133188
TEST RBP,RBP
JNZ 0x001331bd
TEST RBX,RBX
JLE 0x0013321f
CMP qword ptr [R12 + RBX*0x8 + -0x8],0x0
JNZ 0x00133040
SUB RBX,0x1
TEST RBX,RBX
JLE 0x0013321f
CMP qword ptr [R12 + RBX*0x8 + -0x8],0x0
JZ 0x0013302b
CMP R14,RBX
JGE 0x0013325b
CMP RBP,RBX
JZ 0x001332b7
MOV R9D,R15D
MOV R8D,0x1
LEA RCX,[0x15f3c0]
MOV EDX,0x0
MOV ESI,0x0
MOV RDI,qword ptr [RSP + 0x8]
MOV RAX,qword ptr [RSP]
CALL RAX
CMP RBP,RBX
JLE 0x00133092
XOR R15D,0x1
MOV RAX,RBP
MOV RBP,RBX
MOV RBX,RAX
MOV RAX,R13
MOV R13,R12
MOV R12,RAX
SUB RSP,0x8
PUSH RBP
MOV R9,R13
MOV R8,RBX
MOV RCX,R12
MOV EDX,0x0
MOV RSI,R12
MOV RDI,qword ptr [RSP + 0x70]
CALL 0x0010b050
SUB RBX,RBP
LEA RAX,[RBX + 0x1]
MOV qword ptr [RSP + 0x20],RAX
ADD RSP,0x10
TEST RBP,RBP
JLE 0x001330fa
LEA RAX,[RBP*0x8]
MOV qword ptr [RSP + 0x18],RAX
CMP qword ptr [R12 + RAX*0x1 + -0x8],0x0
JNZ 0x0013332b
MOV RBX,RBP
SUB RBX,0x1
JZ 0x001330f1
CMP qword ptr [R12 + RBX*0x8 + -0x8],0x0
JZ 0x001330e3
CMP R14,RBX
JGE 0x00133333
MOV R9D,R15D
MOV R8,qword ptr [RSP + 0x10]
MOV RCX,qword ptr [RSP + 0x60]
MOV EDX,0x0
MOV ESI,0x0
MOV RDI,qword ptr [RSP + 0x8]
MOV RAX,qword ptr [RSP]
CALL RAX
MOV RAX,RBP
ADD RSP,0x28
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RBP,RDX
JMP 0x00133136
MOV RDX,RBP
SUB RBP,0x1
JS 0x0013347f
MOV RCX,qword ptr [R13 + RBP*0x8]
MOV RAX,qword ptr [R12 + RBP*0x8]
CMP RCX,RAX
JZ 0x00133136
JBE 0x0013317a
MOV RBP,RDX
MOV RAX,R13
MOV R13,R12
MOV R12,RAX
MOV R15D,0x1
JMP 0x00133008
MOV RDX,RBX
MOV RBP,RBX
JMP 0x00133136
MOV R15D,0x0
JMP 0x00133008
MOV RBP,RDX
MOV R15D,0x0
JMP 0x00133008
MOV EBP,0x0
TEST R14,R14
JNZ 0x0013311c
XOR R15D,0x1
MOV R9D,R15D
MOV R8D,0x0
MOV ECX,0x0
MOV RDX,RBX
MOV RSI,R12
MOV RDI,qword ptr [RSP + 0x8]
MOV RAX,qword ptr [RSP]
CALL RAX
MOV RBP,R14
JMP 0x0013311c
MOV RCX,RBP
MOV RDX,R13
MOV RSI,R12
MOV RDI,R12
CALL 0x0010b440
TEST RAX,RAX
JZ 0x0013301a
CMP RBP,RBX
JGE 0x0013301a
LEA RCX,[R12 + RBP*0x8]
MOV RDX,qword ptr [RCX]
LEA RAX,[RBP + 0x1]
LEA RSI,[RDX + -0x1]
MOV qword ptr [RCX],RSI
TEST RDX,RDX
JNZ 0x00133465
CMP RBX,RAX
JZ 0x00133465
MOV RDX,qword ptr [R12 + RAX*0x8]
ADD RAX,0x1
LEA RCX,[RDX + -0x1]
MOV qword ptr [R12 + RAX*0x8 + -0x8],RCX
TEST RDX,RDX
JZ 0x001331fb
JMP 0x0013301a
CMP R14,RBX
JL 0x00133049
TEST RBX,RBX
JNZ 0x001334b4
CMP R13,R12
JZ 0x001333fe
CMP RBP,RBX
JLE 0x00133251
MOV RAX,qword ptr [R13 + RBX*0x8]
MOV qword ptr [R12 + RBX*0x8],RAX
ADD RBX,0x1
CMP RBP,RBX
JNZ 0x0013323f
MOV EBP,0x0
JMP 0x0013311c
MOV RCX,RBX
MOV RDX,R12
MOV RSI,R13
MOV RDI,R12
CALL 0x0010bb80
TEST RAX,RAX
JZ 0x00133231
CMP RBP,RBX
JLE 0x00133408
LEA RDX,[RBX*0x8]
ADD RBX,0x1
MOV RAX,qword ptr [R13 + RDX*0x1]
ADD RAX,0x1
MOV qword ptr [R12 + RDX*0x1],RAX
JNZ 0x00133231
CMP RBP,RBX
JZ 0x00133408
MOV RAX,qword ptr [R13 + RBX*0x8]
ADD RBX,0x1
ADD RAX,0x1
MOV qword ptr [R12 + RBX*0x8 + -0x8],RAX
JZ 0x00133295
JMP 0x00133231
MOV RAX,RBP
SUB RAX,0x1
JS 0x0013342d
MOV RCX,qword ptr [R13 + RAX*0x8]
MOV RDX,qword ptr [R12 + RAX*0x8]
CMP RCX,RDX
JZ 0x001332ba
JA 0x001334d3
MOV R9D,R15D
MOV R8D,0x1
LEA RCX,[0x15f3c0]
MOV EDX,0x0
MOV ESI,0x0
MOV RDI,qword ptr [RSP + 0x8]
MOV RAX,qword ptr [RSP]
CALL RAX
JMP 0x00133092
MOV R9D,R15D
MOV R8D,0x0
MOV ECX,0x0
MOV RDX,RBX
MOV RSI,R12
MOV RDI,qword ptr [RSP + 0x8]
MOV RAX,qword ptr [RSP]
CALL RAX
MOV EBP,0x0
JMP 0x0013311c
MOV RBX,RBP
JMP 0x001330f1
TEST R14,R14
JZ 0x001333b6
TEST RBX,RBX
JLE 0x001333dc
MOV RCX,RBX
MOV RDX,R12
MOV RSI,R13
MOV RDI,R12
CALL 0x0010bb80
TEST RAX,RAX
JZ 0x00133398
CMP RBP,RBX
JLE 0x0013341a
LEA RDX,[RBX*0x8]
ADD RBX,0x1
MOV RAX,qword ptr [R13 + RDX*0x1]
ADD RAX,0x1
MOV qword ptr [R12 + RDX*0x1],RAX
JNZ 0x00133398
CMP RBP,RBX
JZ 0x0013341a
MOV RAX,qword ptr [R13 + RBX*0x8]
ADD RBX,0x1
ADD RAX,0x1
MOV qword ptr [R12 + RBX*0x8 + -0x8],RAX
JZ 0x0013337b
CMP R13,R12
JZ 0x001333ea
CMP RBP,RBX
JLE 0x001333ea
MOV RAX,qword ptr [R13 + RBX*0x8]
MOV qword ptr [R12 + RBX*0x8],RAX
ADD RBX,0x1
CMP RBP,RBX
JNZ 0x001333a2
JMP 0x001333ea
MOV R9D,R15D
MOV R8,qword ptr [RSP + 0x10]
MOV RCX,qword ptr [RSP + 0x60]
MOV RDX,RBP
MOV RSI,R13
MOV RDI,qword ptr [RSP + 0x8]
MOV RAX,qword ptr [RSP]
CALL RAX
MOV RBP,R14
JMP 0x0013311c
MOV RDX,RBP
MOV RSI,R13
MOV RDI,R12
CALL 0x0010bb70
MOV RAX,qword ptr [RSP + 0x60]
SUB qword ptr [RAX],0x1
LEA RAX,[RAX + 0x8]
JC 0x001333ef
JMP 0x001330fa
MOV EBP,0x0
JMP 0x0013311c
MOV qword ptr [R12 + RBP*0x8],0x1
MOV EBP,0x0
JMP 0x0013311c
ADD RBP,0x1
MOV RAX,qword ptr [RSP + 0x18]
MOV qword ptr [R12 + RAX*0x1],0x1
JMP 0x001333ea
TEST R14,R14
JLE 0x00133302
MOV R9D,R15D
MOV R8D,0x1
LEA RCX,[0x15f3c0]
MOV EDX,0x0
MOV ESI,0x0
MOV RDI,qword ptr [RSP + 0x8]
MOV RAX,qword ptr [RSP]
CALL RAX
MOV EBP,0x0
JMP 0x0013311c
TEST RBX,RBX
JLE 0x0013350a
CMP qword ptr [R12 + RBX*0x8 + -0x8],0x0
JZ 0x0013302b
JMP 0x00133049
MOV EBP,0x0
TEST R14,R14
JNZ 0x0013311c
MOV R9D,0xffffffff
MOV R8D,0x0
MOV ECX,0x0
MOV RSI,R13
MOV RDI,qword ptr [RSP + 0x8]
MOV RAX,qword ptr [RSP]
CALL RAX
MOV RBP,R14
JMP 0x0013311c
MOV RCX,RBX
MOV RDX,R12
MOV RSI,R13
MOV RDI,R12
CALL 0x0010bb80
TEST RAX,RAX
JNZ 0x0013327a
JMP 0x00133231
MOV R9D,R15D
MOV R8D,0x1
LEA RCX,[0x15f3c0]
MOV EDX,0x0
MOV ESI,0x0
MOV RDI,qword ptr [RSP + 0x8]
MOV RAX,qword ptr [RSP]
CALL RAX
XOR R15D,0x1
MOV RAX,R13
MOV R13,R12
MOV R12,RAX
JMP 0x00133092
MOV R9D,R15D
MOV R8D,0x1
LEA RCX,[0x15f3c0]
MOV EDX,0x0
MOV ESI,0x0
MOV RDI,qword ptr [RSP + 0x8]
MOV RAX,qword ptr [RSP]
CALL RAX
JMP 0x00133092
CMP qword ptr [RSI + RAX*0x1 + -0x8],0x0
JNZ 0x00133167
MOV RBP,RDX
JMP 0x00132fd1
(translation_unit "long __gmpn_gcd_subdiv_step\n               (long param_1,long param_2,long param_3,long param_4,code *param_5,undefined8 param_6\n               ,long *param_7)\n\n{\n  ulong uVar1;\n  ulong uVar2;\n  long lVar3;\n  long lVar4;\n  long lVar5;\n  long *plVar6;\n  long lVar7;\n  long lVar8;\n  long lVar9;\n  long lVar10;\n  uint uVar11;\n  \n  lVar3 = param_3;\n  lVar9 = param_3;\n  lVar10 = param_2;\n  if (param_3 < 1) {\nLAB_00133136:\n    do {\n      lVar9 = lVar9 + -1;\n      if (lVar9 < 0) {\n        if (param_4 != 0) {\n          return 0;\n        }\n        (*param_5)(param_6,param_1,param_3,0,0,0xffffffff);\n        return 0;\n      }\n      uVar1 = *(ulong *)(param_1 + lVar9 * 8);\n      uVar2 = *(ulong *)(param_2 + lVar9 * 8);\n    } while (uVar1 == uVar2);\n    lVar7 = lVar3;\n    lVar9 = param_3;\n    if (uVar2 < uVar1) {\n      uVar11 = 1;\n      lVar10 = param_1;\n      param_1 = param_2;\n    }\n    else {\n      uVar11 = 0;\n    }\n  }\n  else {\n    lVar7 = param_3 * 8;\n    if (*(long *)(param_1 + -8 + lVar7) != 0) {\n      if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n      goto LAB_00133136;\n    }\n    do {\n      lVar9 = lVar9 + -1;\n      if (lVar9 == 0) {\n        if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n        uVar11 = 0;\n        lVar7 = param_3;\n        goto LAB_00133008;\n      }\n    } while (*(long *)(param_1 + -8 + lVar9 * 8) == 0);\n    lVar7 = *(long *)(param_2 + -8 + lVar7);\n    while (param_3 = lVar3, lVar7 == 0) {\nLAB_00132fd1:\n      lVar3 = param_3 + -1;\n      if (lVar3 == 0) break;\n      lVar7 = *(long *)(param_2 + -8 + lVar3 * 8);\n    }\n    param_3 = lVar9;\n    lVar9 = param_3;\n    if (lVar3 == param_3) goto LAB_00133136;\n    uVar11 = 0;\n    lVar7 = lVar3;\n    if (lVar3 < param_3) {\n      uVar11 = 1;\n      lVar7 = param_3;\n      lVar9 = lVar3;\n      lVar10 = param_1;\n      param_1 = param_2;\n    }\n  }\nLAB_00133008:\n  if (lVar9 <= param_4) {\n    if (param_4 != 0) {\n      return 0;\n    }\n    (*param_5)(param_6,lVar10,lVar7,0,0,uVar11 ^ 1);\n    return 0;\n  }\n  lVar3 = lVar10;\n  if (((lVar9 == 0) || (lVar4 = __gmpn_sub_n(lVar10,lVar10,param_1,lVar9), lVar4 == 0)) ||\n     (lVar7 <= lVar9)) {\nLAB_0013301a:\n    if (0 < lVar7) {\n      lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\n      goto joined_r0x00133029;\n    }\nLAB_0013321f:\n    lVar4 = lVar7;\n    if (lVar7 <= param_4) {\n      if ((lVar7 == 0) || (lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7), lVar3 == 0))\n      goto LAB_00133231;\nLAB_0013327a:\n      lVar3 = lVar7 * 8;\n      lVar7 = lVar7 + 1;\n      lVar4 = *(long *)(param_1 + lVar3) + 1;\n      *(long *)(lVar10 + lVar3) = lVar4;\n      while (lVar4 == 0) {\n        if (lVar9 == lVar7) goto LAB_00133408;\n        lVar3 = lVar7 * 8;\n        lVar7 = lVar7 + 1;\n        lVar4 = *(long *)(param_1 + lVar3) + 1;\n        *(long *)(lVar10 + -8 + lVar7 * 8) = lVar4;\n      }\nLAB_00133231:\n      if (param_1 != lVar10) {\n        if (lVar7 < lVar9) {\n          do {\n            *(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8);\n            lVar7 = lVar7 + 1;\n          } while (lVar9 != lVar7);\n        }\n        return 0;\n      }\n      return 0;\n    }\nLAB_00133049:\n    lVar8 = lVar9;\n    lVar7 = lVar4;\n    if (lVar9 == lVar4) {\n      do {\n        lVar8 = lVar8 + -1;\n        if (lVar8 < 0) {\n          if (0 < param_4) {\n            (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n            return 0;\n          }\n          (*param_5)(param_6,lVar10,lVar4,0,0,uVar11);\n          return 0;\n        }\n        uVar1 = *(ulong *)(param_1 + lVar8 * 8);\n        uVar2 = *(ulong *)(lVar10 + lVar8 * 8);\n      } while (uVar1 == uVar2);\n      if (uVar1 < uVar2 || uVar1 == uVar2) {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      }\n      else {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n        uVar11 = uVar11 ^ 1;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }\n    }\n    else {\n      (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      if (lVar4 < lVar9) {\n        uVar11 = uVar11 ^ 1;\n        lVar7 = lVar9;\n        lVar9 = lVar4;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }\n    }\n  }\n  else {\n    plVar6 = (long *)(lVar10 + lVar9 * 8);\n    lVar8 = *plVar6;\n    lVar4 = lVar9 + 1;\n    *plVar6 = lVar8 + -1;\n    if (lVar8 == 0) {\n      do {\n        if (lVar7 == lVar4) goto LAB_00133465;\n        lVar8 = *(long *)(lVar10 + lVar4 * 8);\n        lVar4 = lVar4 + 1;\n        *(long *)(lVar10 + -8 + lVar4 * 8) = lVar8 + -1;\n      } while (lVar8 == 0);\n      goto LAB_0013301a;\n    }\nLAB_00133465:\n    if (0 < lVar7) {\n      lVar4 = lVar7;\n      if (*(long *)(lVar10 + -8 + lVar7 * 8) == 0) {\n        do {\n          lVar7 = lVar7 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\njoined_r0x00133029:\n        } while (lVar4 == 0);\n        lVar4 = lVar7;\n        if (param_4 < lVar7) goto LAB_00133049;\n        lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7);\n        if (lVar3 == 0) goto LAB_00133231;\n        if (lVar9 <= lVar7) {\nLAB_00133408:\n          *(undefined8 *)(lVar10 + lVar9 * 8) = 1;\n          return 0;\n        }\n        goto LAB_0013327a;\n      }\n      goto LAB_00133049;\n    }\n    (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n  }\n  __gmpn_tdiv_qr(param_7,lVar3,0,lVar3,lVar7,param_1,lVar9);\n  lVar10 = (lVar7 - lVar9) + 1;\n  if (lVar9 < 1) goto LAB_001330fa;\n  lVar7 = lVar9 * 8;\n  lVar4 = *(long *)(lVar3 + -8 + lVar7);\n  lVar8 = lVar9;\n  while ((lVar4 == 0 && (lVar8 = lVar8 + -1, lVar8 != 0))) {\n    lVar4 = *(long *)(lVar3 + -8 + lVar8 * 8);\n  }\n  if (param_4 < lVar8) goto LAB_001330fa;\n  if (param_4 == 0) {\n    (*param_5)(param_6,param_1,lVar9,param_7,lVar10,uVar11);\n    return 0;\n  }\n  plVar6 = param_7;\n  if (lVar8 < 1) {\n    __gmpn_copyi(lVar3,param_1,lVar9);\n  }\n  else {\n    lVar4 = __gmpn_add_n(lVar3,param_1,lVar3,lVar8);\n    if (lVar4 != 0) {\n      if (lVar9 <= lVar8) {\nLAB_0013341a:\n        lVar9 = lVar9 + 1;\n        *(undefined8 *)(lVar3 + lVar7) = 1;\n        goto LAB_001333ef;\n      }\n      lVar4 = lVar8 * 8;\n      lVar8 = lVar8 + 1;\n      lVar5 = *(long *)(param_1 + lVar4) + 1;\n      *(long *)(lVar3 + lVar4) = lVar5;\n      while (lVar5 == 0) {\n        if (lVar9 == lVar8) goto LAB_0013341a;\n        lVar4 = lVar8 * 8;\n        lVar8 = lVar8 + 1;\n        lVar5 = *(long *)(param_1 + lVar4) + 1;\n        *(long *)(lVar3 + -8 + lVar8 * 8) = lVar5;\n      }\n    }\n    if ((param_1 != lVar3) && (lVar8 < lVar9)) {\n      do {\n        *(undefined8 *)(lVar3 + lVar8 * 8) = *(undefined8 *)(param_1 + lVar8 * 8);\n        lVar8 = lVar8 + 1;\n      } while (lVar9 != lVar8);\n    }\n  }\nLAB_001333ef:\n  do {\n    lVar3 = *plVar6;\n    *plVar6 = *plVar6 + -1;\n    plVar6 = plVar6 + 1;\n  } while (lVar3 == 0);\nLAB_001330fa:\n  (*param_5)(param_6,0,0,param_7,lVar10,uVar11);\n  return lVar9;\n}\n\n" (function_definition "long __gmpn_gcd_subdiv_step\n               (long param_1,long param_2,long param_3,long param_4,code *param_5,undefined8 param_6\n               ,long *param_7)\n\n{\n  ulong uVar1;\n  ulong uVar2;\n  long lVar3;\n  long lVar4;\n  long lVar5;\n  long *plVar6;\n  long lVar7;\n  long lVar8;\n  long lVar9;\n  long lVar10;\n  uint uVar11;\n  \n  lVar3 = param_3;\n  lVar9 = param_3;\n  lVar10 = param_2;\n  if (param_3 < 1) {\nLAB_00133136:\n    do {\n      lVar9 = lVar9 + -1;\n      if (lVar9 < 0) {\n        if (param_4 != 0) {\n          return 0;\n        }\n        (*param_5)(param_6,param_1,param_3,0,0,0xffffffff);\n        return 0;\n      }\n      uVar1 = *(ulong *)(param_1 + lVar9 * 8);\n      uVar2 = *(ulong *)(param_2 + lVar9 * 8);\n    } while (uVar1 == uVar2);\n    lVar7 = lVar3;\n    lVar9 = param_3;\n    if (uVar2 < uVar1) {\n      uVar11 = 1;\n      lVar10 = param_1;\n      param_1 = param_2;\n    }\n    else {\n      uVar11 = 0;\n    }\n  }\n  else {\n    lVar7 = param_3 * 8;\n    if (*(long *)(param_1 + -8 + lVar7) != 0) {\n      if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n      goto LAB_00133136;\n    }\n    do {\n      lVar9 = lVar9 + -1;\n      if (lVar9 == 0) {\n        if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n        uVar11 = 0;\n        lVar7 = param_3;\n        goto LAB_00133008;\n      }\n    } while (*(long *)(param_1 + -8 + lVar9 * 8) == 0);\n    lVar7 = *(long *)(param_2 + -8 + lVar7);\n    while (param_3 = lVar3, lVar7 == 0) {\nLAB_00132fd1:\n      lVar3 = param_3 + -1;\n      if (lVar3 == 0) break;\n      lVar7 = *(long *)(param_2 + -8 + lVar3 * 8);\n    }\n    param_3 = lVar9;\n    lVar9 = param_3;\n    if (lVar3 == param_3) goto LAB_00133136;\n    uVar11 = 0;\n    lVar7 = lVar3;\n    if (lVar3 < param_3) {\n      uVar11 = 1;\n      lVar7 = param_3;\n      lVar9 = lVar3;\n      lVar10 = param_1;\n      param_1 = param_2;\n    }\n  }\nLAB_00133008:\n  if (lVar9 <= param_4) {\n    if (param_4 != 0) {\n      return 0;\n    }\n    (*param_5)(param_6,lVar10,lVar7,0,0,uVar11 ^ 1);\n    return 0;\n  }\n  lVar3 = lVar10;\n  if (((lVar9 == 0) || (lVar4 = __gmpn_sub_n(lVar10,lVar10,param_1,lVar9), lVar4 == 0)) ||\n     (lVar7 <= lVar9)) {\nLAB_0013301a:\n    if (0 < lVar7) {\n      lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\n      goto joined_r0x00133029;\n    }\nLAB_0013321f:\n    lVar4 = lVar7;\n    if (lVar7 <= param_4) {\n      if ((lVar7 == 0) || (lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7), lVar3 == 0))\n      goto LAB_00133231;\nLAB_0013327a:\n      lVar3 = lVar7 * 8;\n      lVar7 = lVar7 + 1;\n      lVar4 = *(long *)(param_1 + lVar3) + 1;\n      *(long *)(lVar10 + lVar3) = lVar4;\n      while (lVar4 == 0) {\n        if (lVar9 == lVar7) goto LAB_00133408;\n        lVar3 = lVar7 * 8;\n        lVar7 = lVar7 + 1;\n        lVar4 = *(long *)(param_1 + lVar3) + 1;\n        *(long *)(lVar10 + -8 + lVar7 * 8) = lVar4;\n      }\nLAB_00133231:\n      if (param_1 != lVar10) {\n        if (lVar7 < lVar9) {\n          do {\n            *(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8);\n            lVar7 = lVar7 + 1;\n          } while (lVar9 != lVar7);\n        }\n        return 0;\n      }\n      return 0;\n    }\nLAB_00133049:\n    lVar8 = lVar9;\n    lVar7 = lVar4;\n    if (lVar9 == lVar4) {\n      do {\n        lVar8 = lVar8 + -1;\n        if (lVar8 < 0) {\n          if (0 < param_4) {\n            (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n            return 0;\n          }\n          (*param_5)(param_6,lVar10,lVar4,0,0,uVar11);\n          return 0;\n        }\n        uVar1 = *(ulong *)(param_1 + lVar8 * 8);\n        uVar2 = *(ulong *)(lVar10 + lVar8 * 8);\n      } while (uVar1 == uVar2);\n      if (uVar1 < uVar2 || uVar1 == uVar2) {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      }\n      else {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n        uVar11 = uVar11 ^ 1;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }\n    }\n    else {\n      (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      if (lVar4 < lVar9) {\n        uVar11 = uVar11 ^ 1;\n        lVar7 = lVar9;\n        lVar9 = lVar4;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }\n    }\n  }\n  else {\n    plVar6 = (long *)(lVar10 + lVar9 * 8);\n    lVar8 = *plVar6;\n    lVar4 = lVar9 + 1;\n    *plVar6 = lVar8 + -1;\n    if (lVar8 == 0) {\n      do {\n        if (lVar7 == lVar4) goto LAB_00133465;\n        lVar8 = *(long *)(lVar10 + lVar4 * 8);\n        lVar4 = lVar4 + 1;\n        *(long *)(lVar10 + -8 + lVar4 * 8) = lVar8 + -1;\n      } while (lVar8 == 0);\n      goto LAB_0013301a;\n    }\nLAB_00133465:\n    if (0 < lVar7) {\n      lVar4 = lVar7;\n      if (*(long *)(lVar10 + -8 + lVar7 * 8) == 0) {\n        do {\n          lVar7 = lVar7 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\njoined_r0x00133029:\n        } while (lVar4 == 0);\n        lVar4 = lVar7;\n        if (param_4 < lVar7) goto LAB_00133049;\n        lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7);\n        if (lVar3 == 0) goto LAB_00133231;\n        if (lVar9 <= lVar7) {\nLAB_00133408:\n          *(undefined8 *)(lVar10 + lVar9 * 8) = 1;\n          return 0;\n        }\n        goto LAB_0013327a;\n      }\n      goto LAB_00133049;\n    }\n    (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n  }\n  __gmpn_tdiv_qr(param_7,lVar3,0,lVar3,lVar7,param_1,lVar9);\n  lVar10 = (lVar7 - lVar9) + 1;\n  if (lVar9 < 1) goto LAB_001330fa;\n  lVar7 = lVar9 * 8;\n  lVar4 = *(long *)(lVar3 + -8 + lVar7);\n  lVar8 = lVar9;\n  while ((lVar4 == 0 && (lVar8 = lVar8 + -1, lVar8 != 0))) {\n    lVar4 = *(long *)(lVar3 + -8 + lVar8 * 8);\n  }\n  if (param_4 < lVar8) goto LAB_001330fa;\n  if (param_4 == 0) {\n    (*param_5)(param_6,param_1,lVar9,param_7,lVar10,uVar11);\n    return 0;\n  }\n  plVar6 = param_7;\n  if (lVar8 < 1) {\n    __gmpn_copyi(lVar3,param_1,lVar9);\n  }\n  else {\n    lVar4 = __gmpn_add_n(lVar3,param_1,lVar3,lVar8);\n    if (lVar4 != 0) {\n      if (lVar9 <= lVar8) {\nLAB_0013341a:\n        lVar9 = lVar9 + 1;\n        *(undefined8 *)(lVar3 + lVar7) = 1;\n        goto LAB_001333ef;\n      }\n      lVar4 = lVar8 * 8;\n      lVar8 = lVar8 + 1;\n      lVar5 = *(long *)(param_1 + lVar4) + 1;\n      *(long *)(lVar3 + lVar4) = lVar5;\n      while (lVar5 == 0) {\n        if (lVar9 == lVar8) goto LAB_0013341a;\n        lVar4 = lVar8 * 8;\n        lVar8 = lVar8 + 1;\n        lVar5 = *(long *)(param_1 + lVar4) + 1;\n        *(long *)(lVar3 + -8 + lVar8 * 8) = lVar5;\n      }\n    }\n    if ((param_1 != lVar3) && (lVar8 < lVar9)) {\n      do {\n        *(undefined8 *)(lVar3 + lVar8 * 8) = *(undefined8 *)(param_1 + lVar8 * 8);\n        lVar8 = lVar8 + 1;\n      } while (lVar9 != lVar8);\n    }\n  }\nLAB_001333ef:\n  do {\n    lVar3 = *plVar6;\n    *plVar6 = *plVar6 + -1;\n    plVar6 = plVar6 + 1;\n  } while (lVar3 == 0);\nLAB_001330fa:\n  (*param_5)(param_6,0,0,param_7,lVar10,uVar11);\n  return lVar9;\n}" (sized_type_specifier "long" long) (function_declarator "__gmpn_gcd_subdiv_step\n               (long param_1,long param_2,long param_3,long param_4,code *param_5,undefined8 param_6\n               ,long *param_7)" identifier (parameter_list "(long param_1,long param_2,long param_3,long param_4,code *param_5,undefined8 param_6\n               ,long *param_7)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_4" (sized_type_specifier "long" long) identifier) , (parameter_declaration "code *param_5" type_identifier (pointer_declarator "*param_5" * identifier)) , (parameter_declaration "undefined8 param_6" type_identifier identifier) , (parameter_declaration "long *param_7" (sized_type_specifier "long" long) (pointer_declarator "*param_7" * identifier)) ))) (compound_statement "{\n  ulong uVar1;\n  ulong uVar2;\n  long lVar3;\n  long lVar4;\n  long lVar5;\n  long *plVar6;\n  long lVar7;\n  long lVar8;\n  long lVar9;\n  long lVar10;\n  uint uVar11;\n  \n  lVar3 = param_3;\n  lVar9 = param_3;\n  lVar10 = param_2;\n  if (param_3 < 1) {\nLAB_00133136:\n    do {\n      lVar9 = lVar9 + -1;\n      if (lVar9 < 0) {\n        if (param_4 != 0) {\n          return 0;\n        }\n        (*param_5)(param_6,param_1,param_3,0,0,0xffffffff);\n        return 0;\n      }\n      uVar1 = *(ulong *)(param_1 + lVar9 * 8);\n      uVar2 = *(ulong *)(param_2 + lVar9 * 8);\n    } while (uVar1 == uVar2);\n    lVar7 = lVar3;\n    lVar9 = param_3;\n    if (uVar2 < uVar1) {\n      uVar11 = 1;\n      lVar10 = param_1;\n      param_1 = param_2;\n    }\n    else {\n      uVar11 = 0;\n    }\n  }\n  else {\n    lVar7 = param_3 * 8;\n    if (*(long *)(param_1 + -8 + lVar7) != 0) {\n      if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n      goto LAB_00133136;\n    }\n    do {\n      lVar9 = lVar9 + -1;\n      if (lVar9 == 0) {\n        if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n        uVar11 = 0;\n        lVar7 = param_3;\n        goto LAB_00133008;\n      }\n    } while (*(long *)(param_1 + -8 + lVar9 * 8) == 0);\n    lVar7 = *(long *)(param_2 + -8 + lVar7);\n    while (param_3 = lVar3, lVar7 == 0) {\nLAB_00132fd1:\n      lVar3 = param_3 + -1;\n      if (lVar3 == 0) break;\n      lVar7 = *(long *)(param_2 + -8 + lVar3 * 8);\n    }\n    param_3 = lVar9;\n    lVar9 = param_3;\n    if (lVar3 == param_3) goto LAB_00133136;\n    uVar11 = 0;\n    lVar7 = lVar3;\n    if (lVar3 < param_3) {\n      uVar11 = 1;\n      lVar7 = param_3;\n      lVar9 = lVar3;\n      lVar10 = param_1;\n      param_1 = param_2;\n    }\n  }\nLAB_00133008:\n  if (lVar9 <= param_4) {\n    if (param_4 != 0) {\n      return 0;\n    }\n    (*param_5)(param_6,lVar10,lVar7,0,0,uVar11 ^ 1);\n    return 0;\n  }\n  lVar3 = lVar10;\n  if (((lVar9 == 0) || (lVar4 = __gmpn_sub_n(lVar10,lVar10,param_1,lVar9), lVar4 == 0)) ||\n     (lVar7 <= lVar9)) {\nLAB_0013301a:\n    if (0 < lVar7) {\n      lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\n      goto joined_r0x00133029;\n    }\nLAB_0013321f:\n    lVar4 = lVar7;\n    if (lVar7 <= param_4) {\n      if ((lVar7 == 0) || (lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7), lVar3 == 0))\n      goto LAB_00133231;\nLAB_0013327a:\n      lVar3 = lVar7 * 8;\n      lVar7 = lVar7 + 1;\n      lVar4 = *(long *)(param_1 + lVar3) + 1;\n      *(long *)(lVar10 + lVar3) = lVar4;\n      while (lVar4 == 0) {\n        if (lVar9 == lVar7) goto LAB_00133408;\n        lVar3 = lVar7 * 8;\n        lVar7 = lVar7 + 1;\n        lVar4 = *(long *)(param_1 + lVar3) + 1;\n        *(long *)(lVar10 + -8 + lVar7 * 8) = lVar4;\n      }\nLAB_00133231:\n      if (param_1 != lVar10) {\n        if (lVar7 < lVar9) {\n          do {\n            *(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8);\n            lVar7 = lVar7 + 1;\n          } while (lVar9 != lVar7);\n        }\n        return 0;\n      }\n      return 0;\n    }\nLAB_00133049:\n    lVar8 = lVar9;\n    lVar7 = lVar4;\n    if (lVar9 == lVar4) {\n      do {\n        lVar8 = lVar8 + -1;\n        if (lVar8 < 0) {\n          if (0 < param_4) {\n            (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n            return 0;\n          }\n          (*param_5)(param_6,lVar10,lVar4,0,0,uVar11);\n          return 0;\n        }\n        uVar1 = *(ulong *)(param_1 + lVar8 * 8);\n        uVar2 = *(ulong *)(lVar10 + lVar8 * 8);\n      } while (uVar1 == uVar2);\n      if (uVar1 < uVar2 || uVar1 == uVar2) {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      }\n      else {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n        uVar11 = uVar11 ^ 1;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }\n    }\n    else {\n      (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      if (lVar4 < lVar9) {\n        uVar11 = uVar11 ^ 1;\n        lVar7 = lVar9;\n        lVar9 = lVar4;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }\n    }\n  }\n  else {\n    plVar6 = (long *)(lVar10 + lVar9 * 8);\n    lVar8 = *plVar6;\n    lVar4 = lVar9 + 1;\n    *plVar6 = lVar8 + -1;\n    if (lVar8 == 0) {\n      do {\n        if (lVar7 == lVar4) goto LAB_00133465;\n        lVar8 = *(long *)(lVar10 + lVar4 * 8);\n        lVar4 = lVar4 + 1;\n        *(long *)(lVar10 + -8 + lVar4 * 8) = lVar8 + -1;\n      } while (lVar8 == 0);\n      goto LAB_0013301a;\n    }\nLAB_00133465:\n    if (0 < lVar7) {\n      lVar4 = lVar7;\n      if (*(long *)(lVar10 + -8 + lVar7 * 8) == 0) {\n        do {\n          lVar7 = lVar7 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\njoined_r0x00133029:\n        } while (lVar4 == 0);\n        lVar4 = lVar7;\n        if (param_4 < lVar7) goto LAB_00133049;\n        lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7);\n        if (lVar3 == 0) goto LAB_00133231;\n        if (lVar9 <= lVar7) {\nLAB_00133408:\n          *(undefined8 *)(lVar10 + lVar9 * 8) = 1;\n          return 0;\n        }\n        goto LAB_0013327a;\n      }\n      goto LAB_00133049;\n    }\n    (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n  }\n  __gmpn_tdiv_qr(param_7,lVar3,0,lVar3,lVar7,param_1,lVar9);\n  lVar10 = (lVar7 - lVar9) + 1;\n  if (lVar9 < 1) goto LAB_001330fa;\n  lVar7 = lVar9 * 8;\n  lVar4 = *(long *)(lVar3 + -8 + lVar7);\n  lVar8 = lVar9;\n  while ((lVar4 == 0 && (lVar8 = lVar8 + -1, lVar8 != 0))) {\n    lVar4 = *(long *)(lVar3 + -8 + lVar8 * 8);\n  }\n  if (param_4 < lVar8) goto LAB_001330fa;\n  if (param_4 == 0) {\n    (*param_5)(param_6,param_1,lVar9,param_7,lVar10,uVar11);\n    return 0;\n  }\n  plVar6 = param_7;\n  if (lVar8 < 1) {\n    __gmpn_copyi(lVar3,param_1,lVar9);\n  }\n  else {\n    lVar4 = __gmpn_add_n(lVar3,param_1,lVar3,lVar8);\n    if (lVar4 != 0) {\n      if (lVar9 <= lVar8) {\nLAB_0013341a:\n        lVar9 = lVar9 + 1;\n        *(undefined8 *)(lVar3 + lVar7) = 1;\n        goto LAB_001333ef;\n      }\n      lVar4 = lVar8 * 8;\n      lVar8 = lVar8 + 1;\n      lVar5 = *(long *)(param_1 + lVar4) + 1;\n      *(long *)(lVar3 + lVar4) = lVar5;\n      while (lVar5 == 0) {\n        if (lVar9 == lVar8) goto LAB_0013341a;\n        lVar4 = lVar8 * 8;\n        lVar8 = lVar8 + 1;\n        lVar5 = *(long *)(param_1 + lVar4) + 1;\n        *(long *)(lVar3 + -8 + lVar8 * 8) = lVar5;\n      }\n    }\n    if ((param_1 != lVar3) && (lVar8 < lVar9)) {\n      do {\n        *(undefined8 *)(lVar3 + lVar8 * 8) = *(undefined8 *)(param_1 + lVar8 * 8);\n        lVar8 = lVar8 + 1;\n      } while (lVar9 != lVar8);\n    }\n  }\nLAB_001333ef:\n  do {\n    lVar3 = *plVar6;\n    *plVar6 = *plVar6 + -1;\n    plVar6 = plVar6 + 1;\n  } while (lVar3 == 0);\nLAB_001330fa:\n  (*param_5)(param_6,0,0,param_7,lVar10,uVar11);\n  return lVar9;\n}" { (declaration "ulong uVar1;" type_identifier identifier ;) (declaration "ulong uVar2;" type_identifier identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar6;" (sized_type_specifier "long" long) (pointer_declarator "*plVar6" * identifier) ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (expression_statement "lVar3 = param_3;" (assignment_expression "lVar3 = param_3" identifier = identifier) ;) (expression_statement "lVar9 = param_3;" (assignment_expression "lVar9 = param_3" identifier = identifier) ;) (expression_statement "lVar10 = param_2;" (assignment_expression "lVar10 = param_2" identifier = identifier) ;) (if_statement "if (param_3 < 1) {\nLAB_00133136:\n    do {\n      lVar9 = lVar9 + -1;\n      if (lVar9 < 0) {\n        if (param_4 != 0) {\n          return 0;\n        }\n        (*param_5)(param_6,param_1,param_3,0,0,0xffffffff);\n        return 0;\n      }\n      uVar1 = *(ulong *)(param_1 + lVar9 * 8);\n      uVar2 = *(ulong *)(param_2 + lVar9 * 8);\n    } while (uVar1 == uVar2);\n    lVar7 = lVar3;\n    lVar9 = param_3;\n    if (uVar2 < uVar1) {\n      uVar11 = 1;\n      lVar10 = param_1;\n      param_1 = param_2;\n    }\n    else {\n      uVar11 = 0;\n    }\n  }\n  else {\n    lVar7 = param_3 * 8;\n    if (*(long *)(param_1 + -8 + lVar7) != 0) {\n      if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n      goto LAB_00133136;\n    }\n    do {\n      lVar9 = lVar9 + -1;\n      if (lVar9 == 0) {\n        if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n        uVar11 = 0;\n        lVar7 = param_3;\n        goto LAB_00133008;\n      }\n    } while (*(long *)(param_1 + -8 + lVar9 * 8) == 0);\n    lVar7 = *(long *)(param_2 + -8 + lVar7);\n    while (param_3 = lVar3, lVar7 == 0) {\nLAB_00132fd1:\n      lVar3 = param_3 + -1;\n      if (lVar3 == 0) break;\n      lVar7 = *(long *)(param_2 + -8 + lVar3 * 8);\n    }\n    param_3 = lVar9;\n    lVar9 = param_3;\n    if (lVar3 == param_3) goto LAB_00133136;\n    uVar11 = 0;\n    lVar7 = lVar3;\n    if (lVar3 < param_3) {\n      uVar11 = 1;\n      lVar7 = param_3;\n      lVar9 = lVar3;\n      lVar10 = param_1;\n      param_1 = param_2;\n    }\n  }" if (parenthesized_expression "(param_3 < 1)" ( (binary_expression "param_3 < 1" identifier < number_literal) )) (compound_statement "{\nLAB_00133136:\n    do {\n      lVar9 = lVar9 + -1;\n      if (lVar9 < 0) {\n        if (param_4 != 0) {\n          return 0;\n        }\n        (*param_5)(param_6,param_1,param_3,0,0,0xffffffff);\n        return 0;\n      }\n      uVar1 = *(ulong *)(param_1 + lVar9 * 8);\n      uVar2 = *(ulong *)(param_2 + lVar9 * 8);\n    } while (uVar1 == uVar2);\n    lVar7 = lVar3;\n    lVar9 = param_3;\n    if (uVar2 < uVar1) {\n      uVar11 = 1;\n      lVar10 = param_1;\n      param_1 = param_2;\n    }\n    else {\n      uVar11 = 0;\n    }\n  }" { (labeled_statement "LAB_00133136:\n    do {\n      lVar9 = lVar9 + -1;\n      if (lVar9 < 0) {\n        if (param_4 != 0) {\n          return 0;\n        }\n        (*param_5)(param_6,param_1,param_3,0,0,0xffffffff);\n        return 0;\n      }\n      uVar1 = *(ulong *)(param_1 + lVar9 * 8);\n      uVar2 = *(ulong *)(param_2 + lVar9 * 8);\n    } while (uVar1 == uVar2);" statement_identifier : (do_statement "do {\n      lVar9 = lVar9 + -1;\n      if (lVar9 < 0) {\n        if (param_4 != 0) {\n          return 0;\n        }\n        (*param_5)(param_6,param_1,param_3,0,0,0xffffffff);\n        return 0;\n      }\n      uVar1 = *(ulong *)(param_1 + lVar9 * 8);\n      uVar2 = *(ulong *)(param_2 + lVar9 * 8);\n    } while (uVar1 == uVar2);" do (compound_statement "{\n      lVar9 = lVar9 + -1;\n      if (lVar9 < 0) {\n        if (param_4 != 0) {\n          return 0;\n        }\n        (*param_5)(param_6,param_1,param_3,0,0,0xffffffff);\n        return 0;\n      }\n      uVar1 = *(ulong *)(param_1 + lVar9 * 8);\n      uVar2 = *(ulong *)(param_2 + lVar9 * 8);\n    }" { (expression_statement "lVar9 = lVar9 + -1;" (assignment_expression "lVar9 = lVar9 + -1" identifier = (binary_expression "lVar9 + -1" identifier + number_literal)) ;) (if_statement "if (lVar9 < 0) {\n        if (param_4 != 0) {\n          return 0;\n        }\n        (*param_5)(param_6,param_1,param_3,0,0,0xffffffff);\n        return 0;\n      }" if (parenthesized_expression "(lVar9 < 0)" ( (binary_expression "lVar9 < 0" identifier < number_literal) )) (compound_statement "{\n        if (param_4 != 0) {\n          return 0;\n        }\n        (*param_5)(param_6,param_1,param_3,0,0,0xffffffff);\n        return 0;\n      }" { (if_statement "if (param_4 != 0) {\n          return 0;\n        }" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "(*param_5)(param_6,param_1,param_3,0,0,0xffffffff);" (call_expression "(*param_5)(param_6,param_1,param_3,0,0,0xffffffff)" (parenthesized_expression "(*param_5)" ( (pointer_expression "*param_5" * identifier) )) (argument_list "(param_6,param_1,param_3,0,0,0xffffffff)" ( identifier , identifier , identifier , number_literal , number_literal , number_literal ))) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar1 = *(ulong *)(param_1 + lVar9 * 8);" (assignment_expression "uVar1 = *(ulong *)(param_1 + lVar9 * 8)" identifier = (pointer_expression "*(ulong *)(param_1 + lVar9 * 8)" * (cast_expression "(ulong *)(param_1 + lVar9 * 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + lVar9 * 8)" ( (binary_expression "param_1 + lVar9 * 8" identifier + (binary_expression "lVar9 * 8" identifier * number_literal)) ))))) ;) (expression_statement "uVar2 = *(ulong *)(param_2 + lVar9 * 8);" (assignment_expression "uVar2 = *(ulong *)(param_2 + lVar9 * 8)" identifier = (pointer_expression "*(ulong *)(param_2 + lVar9 * 8)" * (cast_expression "(ulong *)(param_2 + lVar9 * 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + lVar9 * 8)" ( (binary_expression "param_2 + lVar9 * 8" identifier + (binary_expression "lVar9 * 8" identifier * number_literal)) ))))) ;) }) while (parenthesized_expression "(uVar1 == uVar2)" ( (binary_expression "uVar1 == uVar2" identifier == identifier) )) ;)) (expression_statement "lVar7 = lVar3;" (assignment_expression "lVar7 = lVar3" identifier = identifier) ;) (expression_statement "lVar9 = param_3;" (assignment_expression "lVar9 = param_3" identifier = identifier) ;) (if_statement "if (uVar2 < uVar1) {\n      uVar11 = 1;\n      lVar10 = param_1;\n      param_1 = param_2;\n    }\n    else {\n      uVar11 = 0;\n    }" if (parenthesized_expression "(uVar2 < uVar1)" ( (binary_expression "uVar2 < uVar1" identifier < identifier) )) (compound_statement "{\n      uVar11 = 1;\n      lVar10 = param_1;\n      param_1 = param_2;\n    }" { (expression_statement "uVar11 = 1;" (assignment_expression "uVar11 = 1" identifier = number_literal) ;) (expression_statement "lVar10 = param_1;" (assignment_expression "lVar10 = param_1" identifier = identifier) ;) (expression_statement "param_1 = param_2;" (assignment_expression "param_1 = param_2" identifier = identifier) ;) }) (else_clause "else {\n      uVar11 = 0;\n    }" else (compound_statement "{\n      uVar11 = 0;\n    }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) }))) }) (else_clause "else {\n    lVar7 = param_3 * 8;\n    if (*(long *)(param_1 + -8 + lVar7) != 0) {\n      if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n      goto LAB_00133136;\n    }\n    do {\n      lVar9 = lVar9 + -1;\n      if (lVar9 == 0) {\n        if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n        uVar11 = 0;\n        lVar7 = param_3;\n        goto LAB_00133008;\n      }\n    } while (*(long *)(param_1 + -8 + lVar9 * 8) == 0);\n    lVar7 = *(long *)(param_2 + -8 + lVar7);\n    while (param_3 = lVar3, lVar7 == 0) {\nLAB_00132fd1:\n      lVar3 = param_3 + -1;\n      if (lVar3 == 0) break;\n      lVar7 = *(long *)(param_2 + -8 + lVar3 * 8);\n    }\n    param_3 = lVar9;\n    lVar9 = param_3;\n    if (lVar3 == param_3) goto LAB_00133136;\n    uVar11 = 0;\n    lVar7 = lVar3;\n    if (lVar3 < param_3) {\n      uVar11 = 1;\n      lVar7 = param_3;\n      lVar9 = lVar3;\n      lVar10 = param_1;\n      param_1 = param_2;\n    }\n  }" else (compound_statement "{\n    lVar7 = param_3 * 8;\n    if (*(long *)(param_1 + -8 + lVar7) != 0) {\n      if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n      goto LAB_00133136;\n    }\n    do {\n      lVar9 = lVar9 + -1;\n      if (lVar9 == 0) {\n        if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n        uVar11 = 0;\n        lVar7 = param_3;\n        goto LAB_00133008;\n      }\n    } while (*(long *)(param_1 + -8 + lVar9 * 8) == 0);\n    lVar7 = *(long *)(param_2 + -8 + lVar7);\n    while (param_3 = lVar3, lVar7 == 0) {\nLAB_00132fd1:\n      lVar3 = param_3 + -1;\n      if (lVar3 == 0) break;\n      lVar7 = *(long *)(param_2 + -8 + lVar3 * 8);\n    }\n    param_3 = lVar9;\n    lVar9 = param_3;\n    if (lVar3 == param_3) goto LAB_00133136;\n    uVar11 = 0;\n    lVar7 = lVar3;\n    if (lVar3 < param_3) {\n      uVar11 = 1;\n      lVar7 = param_3;\n      lVar9 = lVar3;\n      lVar10 = param_1;\n      param_1 = param_2;\n    }\n  }" { (expression_statement "lVar7 = param_3 * 8;" (assignment_expression "lVar7 = param_3 * 8" identifier = (binary_expression "param_3 * 8" identifier * number_literal)) ;) (if_statement "if (*(long *)(param_1 + -8 + lVar7) != 0) {\n      if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n      goto LAB_00133136;\n    }" if (parenthesized_expression "(*(long *)(param_1 + -8 + lVar7) != 0)" ( (binary_expression "*(long *)(param_1 + -8 + lVar7) != 0" (pointer_expression "*(long *)(param_1 + -8 + lVar7)" * (cast_expression "(long *)(param_1 + -8 + lVar7)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + -8 + lVar7)" ( (binary_expression "param_1 + -8 + lVar7" (binary_expression "param_1 + -8" identifier + number_literal) + identifier) )))) != number_literal) )) (compound_statement "{\n      if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n      goto LAB_00133136;\n    }" { (if_statement "if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;" if (parenthesized_expression "(*(long *)(param_2 + -8 + lVar7) == 0)" ( (binary_expression "*(long *)(param_2 + -8 + lVar7) == 0" (pointer_expression "*(long *)(param_2 + -8 + lVar7)" * (cast_expression "(long *)(param_2 + -8 + lVar7)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + -8 + lVar7)" ( (binary_expression "param_2 + -8 + lVar7" (binary_expression "param_2 + -8" identifier + number_literal) + identifier) )))) == number_literal) )) (goto_statement "goto LAB_00132fd1;" goto statement_identifier ;)) (goto_statement "goto LAB_00133136;" goto statement_identifier ;) })) (do_statement "do {\n      lVar9 = lVar9 + -1;\n      if (lVar9 == 0) {\n        if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n        uVar11 = 0;\n        lVar7 = param_3;\n        goto LAB_00133008;\n      }\n    } while (*(long *)(param_1 + -8 + lVar9 * 8) == 0);" do (compound_statement "{\n      lVar9 = lVar9 + -1;\n      if (lVar9 == 0) {\n        if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n        uVar11 = 0;\n        lVar7 = param_3;\n        goto LAB_00133008;\n      }\n    }" { (expression_statement "lVar9 = lVar9 + -1;" (assignment_expression "lVar9 = lVar9 + -1" identifier = (binary_expression "lVar9 + -1" identifier + number_literal)) ;) (if_statement "if (lVar9 == 0) {\n        if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n        uVar11 = 0;\n        lVar7 = param_3;\n        goto LAB_00133008;\n      }" if (parenthesized_expression "(lVar9 == 0)" ( (binary_expression "lVar9 == 0" identifier == number_literal) )) (compound_statement "{\n        if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n        uVar11 = 0;\n        lVar7 = param_3;\n        goto LAB_00133008;\n      }" { (if_statement "if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;" if (parenthesized_expression "(*(long *)(param_2 + -8 + lVar7) == 0)" ( (binary_expression "*(long *)(param_2 + -8 + lVar7) == 0" (pointer_expression "*(long *)(param_2 + -8 + lVar7)" * (cast_expression "(long *)(param_2 + -8 + lVar7)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + -8 + lVar7)" ( (binary_expression "param_2 + -8 + lVar7" (binary_expression "param_2 + -8" identifier + number_literal) + identifier) )))) == number_literal) )) (goto_statement "goto LAB_00132fd1;" goto statement_identifier ;)) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (expression_statement "lVar7 = param_3;" (assignment_expression "lVar7 = param_3" identifier = identifier) ;) (goto_statement "goto LAB_00133008;" goto statement_identifier ;) })) }) while (parenthesized_expression "(*(long *)(param_1 + -8 + lVar9 * 8) == 0)" ( (binary_expression "*(long *)(param_1 + -8 + lVar9 * 8) == 0" (pointer_expression "*(long *)(param_1 + -8 + lVar9 * 8)" * (cast_expression "(long *)(param_1 + -8 + lVar9 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + -8 + lVar9 * 8)" ( (binary_expression "param_1 + -8 + lVar9 * 8" (binary_expression "param_1 + -8" identifier + number_literal) + (binary_expression "lVar9 * 8" identifier * number_literal)) )))) == number_literal) )) ;) (expression_statement "lVar7 = *(long *)(param_2 + -8 + lVar7);" (assignment_expression "lVar7 = *(long *)(param_2 + -8 + lVar7)" identifier = (pointer_expression "*(long *)(param_2 + -8 + lVar7)" * (cast_expression "(long *)(param_2 + -8 + lVar7)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + -8 + lVar7)" ( (binary_expression "param_2 + -8 + lVar7" (binary_expression "param_2 + -8" identifier + number_literal) + identifier) ))))) ;) (while_statement "while (param_3 = lVar3, lVar7 == 0) {\nLAB_00132fd1:\n      lVar3 = param_3 + -1;\n      if (lVar3 == 0) break;\n      lVar7 = *(long *)(param_2 + -8 + lVar3 * 8);\n    }" while (parenthesized_expression "(param_3 = lVar3, lVar7 == 0)" ( (comma_expression "param_3 = lVar3, lVar7 == 0" (assignment_expression "param_3 = lVar3" identifier = identifier) , (binary_expression "lVar7 == 0" identifier == number_literal)) )) (compound_statement "{\nLAB_00132fd1:\n      lVar3 = param_3 + -1;\n      if (lVar3 == 0) break;\n      lVar7 = *(long *)(param_2 + -8 + lVar3 * 8);\n    }" { (labeled_statement "LAB_00132fd1:\n      lVar3 = param_3 + -1;" statement_identifier : (expression_statement "lVar3 = param_3 + -1;" (assignment_expression "lVar3 = param_3 + -1" identifier = (binary_expression "param_3 + -1" identifier + number_literal)) ;)) (if_statement "if (lVar3 == 0) break;" if (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar7 = *(long *)(param_2 + -8 + lVar3 * 8);" (assignment_expression "lVar7 = *(long *)(param_2 + -8 + lVar3 * 8)" identifier = (pointer_expression "*(long *)(param_2 + -8 + lVar3 * 8)" * (cast_expression "(long *)(param_2 + -8 + lVar3 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + -8 + lVar3 * 8)" ( (binary_expression "param_2 + -8 + lVar3 * 8" (binary_expression "param_2 + -8" identifier + number_literal) + (binary_expression "lVar3 * 8" identifier * number_literal)) ))))) ;) })) (expression_statement "param_3 = lVar9;" (assignment_expression "param_3 = lVar9" identifier = identifier) ;) (expression_statement "lVar9 = param_3;" (assignment_expression "lVar9 = param_3" identifier = identifier) ;) (if_statement "if (lVar3 == param_3) goto LAB_00133136;" if (parenthesized_expression "(lVar3 == param_3)" ( (binary_expression "lVar3 == param_3" identifier == identifier) )) (goto_statement "goto LAB_00133136;" goto statement_identifier ;)) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (expression_statement "lVar7 = lVar3;" (assignment_expression "lVar7 = lVar3" identifier = identifier) ;) (if_statement "if (lVar3 < param_3) {\n      uVar11 = 1;\n      lVar7 = param_3;\n      lVar9 = lVar3;\n      lVar10 = param_1;\n      param_1 = param_2;\n    }" if (parenthesized_expression "(lVar3 < param_3)" ( (binary_expression "lVar3 < param_3" identifier < identifier) )) (compound_statement "{\n      uVar11 = 1;\n      lVar7 = param_3;\n      lVar9 = lVar3;\n      lVar10 = param_1;\n      param_1 = param_2;\n    }" { (expression_statement "uVar11 = 1;" (assignment_expression "uVar11 = 1" identifier = number_literal) ;) (expression_statement "lVar7 = param_3;" (assignment_expression "lVar7 = param_3" identifier = identifier) ;) (expression_statement "lVar9 = lVar3;" (assignment_expression "lVar9 = lVar3" identifier = identifier) ;) (expression_statement "lVar10 = param_1;" (assignment_expression "lVar10 = param_1" identifier = identifier) ;) (expression_statement "param_1 = param_2;" (assignment_expression "param_1 = param_2" identifier = identifier) ;) })) }))) (labeled_statement "LAB_00133008:\n  if (lVar9 <= param_4) {\n    if (param_4 != 0) {\n      return 0;\n    }\n    (*param_5)(param_6,lVar10,lVar7,0,0,uVar11 ^ 1);\n    return 0;\n  }" statement_identifier : (if_statement "if (lVar9 <= param_4) {\n    if (param_4 != 0) {\n      return 0;\n    }\n    (*param_5)(param_6,lVar10,lVar7,0,0,uVar11 ^ 1);\n    return 0;\n  }" if (parenthesized_expression "(lVar9 <= param_4)" ( (binary_expression "lVar9 <= param_4" identifier <= identifier) )) (compound_statement "{\n    if (param_4 != 0) {\n      return 0;\n    }\n    (*param_5)(param_6,lVar10,lVar7,0,0,uVar11 ^ 1);\n    return 0;\n  }" { (if_statement "if (param_4 != 0) {\n      return 0;\n    }" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "(*param_5)(param_6,lVar10,lVar7,0,0,uVar11 ^ 1);" (call_expression "(*param_5)(param_6,lVar10,lVar7,0,0,uVar11 ^ 1)" (parenthesized_expression "(*param_5)" ( (pointer_expression "*param_5" * identifier) )) (argument_list "(param_6,lVar10,lVar7,0,0,uVar11 ^ 1)" ( identifier , identifier , identifier , number_literal , number_literal , (binary_expression "uVar11 ^ 1" identifier ^ number_literal) ))) ;) (return_statement "return 0;" return number_literal ;) }))) (expression_statement "lVar3 = lVar10;" (assignment_expression "lVar3 = lVar10" identifier = identifier) ;) (if_statement "if (((lVar9 == 0) || (lVar4 = __gmpn_sub_n(lVar10,lVar10,param_1,lVar9), lVar4 == 0)) ||\n     (lVar7 <= lVar9)) {\nLAB_0013301a:\n    if (0 < lVar7) {\n      lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\n      goto joined_r0x00133029;\n    }\nLAB_0013321f:\n    lVar4 = lVar7;\n    if (lVar7 <= param_4) {\n      if ((lVar7 == 0) || (lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7), lVar3 == 0))\n      goto LAB_00133231;\nLAB_0013327a:\n      lVar3 = lVar7 * 8;\n      lVar7 = lVar7 + 1;\n      lVar4 = *(long *)(param_1 + lVar3) + 1;\n      *(long *)(lVar10 + lVar3) = lVar4;\n      while (lVar4 == 0) {\n        if (lVar9 == lVar7) goto LAB_00133408;\n        lVar3 = lVar7 * 8;\n        lVar7 = lVar7 + 1;\n        lVar4 = *(long *)(param_1 + lVar3) + 1;\n        *(long *)(lVar10 + -8 + lVar7 * 8) = lVar4;\n      }\nLAB_00133231:\n      if (param_1 != lVar10) {\n        if (lVar7 < lVar9) {\n          do {\n            *(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8);\n            lVar7 = lVar7 + 1;\n          } while (lVar9 != lVar7);\n        }\n        return 0;\n      }\n      return 0;\n    }\nLAB_00133049:\n    lVar8 = lVar9;\n    lVar7 = lVar4;\n    if (lVar9 == lVar4) {\n      do {\n        lVar8 = lVar8 + -1;\n        if (lVar8 < 0) {\n          if (0 < param_4) {\n            (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n            return 0;\n          }\n          (*param_5)(param_6,lVar10,lVar4,0,0,uVar11);\n          return 0;\n        }\n        uVar1 = *(ulong *)(param_1 + lVar8 * 8);\n        uVar2 = *(ulong *)(lVar10 + lVar8 * 8);\n      } while (uVar1 == uVar2);\n      if (uVar1 < uVar2 || uVar1 == uVar2) {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      }\n      else {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n        uVar11 = uVar11 ^ 1;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }\n    }\n    else {\n      (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      if (lVar4 < lVar9) {\n        uVar11 = uVar11 ^ 1;\n        lVar7 = lVar9;\n        lVar9 = lVar4;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }\n    }\n  }\n  else {\n    plVar6 = (long *)(lVar10 + lVar9 * 8);\n    lVar8 = *plVar6;\n    lVar4 = lVar9 + 1;\n    *plVar6 = lVar8 + -1;\n    if (lVar8 == 0) {\n      do {\n        if (lVar7 == lVar4) goto LAB_00133465;\n        lVar8 = *(long *)(lVar10 + lVar4 * 8);\n        lVar4 = lVar4 + 1;\n        *(long *)(lVar10 + -8 + lVar4 * 8) = lVar8 + -1;\n      } while (lVar8 == 0);\n      goto LAB_0013301a;\n    }\nLAB_00133465:\n    if (0 < lVar7) {\n      lVar4 = lVar7;\n      if (*(long *)(lVar10 + -8 + lVar7 * 8) == 0) {\n        do {\n          lVar7 = lVar7 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\njoined_r0x00133029:\n        } while (lVar4 == 0);\n        lVar4 = lVar7;\n        if (param_4 < lVar7) goto LAB_00133049;\n        lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7);\n        if (lVar3 == 0) goto LAB_00133231;\n        if (lVar9 <= lVar7) {\nLAB_00133408:\n          *(undefined8 *)(lVar10 + lVar9 * 8) = 1;\n          return 0;\n        }\n        goto LAB_0013327a;\n      }\n      goto LAB_00133049;\n    }\n    (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n  }" if (parenthesized_expression "(((lVar9 == 0) || (lVar4 = __gmpn_sub_n(lVar10,lVar10,param_1,lVar9), lVar4 == 0)) ||\n     (lVar7 <= lVar9))" ( (binary_expression "((lVar9 == 0) || (lVar4 = __gmpn_sub_n(lVar10,lVar10,param_1,lVar9), lVar4 == 0)) ||\n     (lVar7 <= lVar9)" (parenthesized_expression "((lVar9 == 0) || (lVar4 = __gmpn_sub_n(lVar10,lVar10,param_1,lVar9), lVar4 == 0))" ( (binary_expression "(lVar9 == 0) || (lVar4 = __gmpn_sub_n(lVar10,lVar10,param_1,lVar9), lVar4 == 0)" (parenthesized_expression "(lVar9 == 0)" ( (binary_expression "lVar9 == 0" identifier == number_literal) )) || (parenthesized_expression "(lVar4 = __gmpn_sub_n(lVar10,lVar10,param_1,lVar9), lVar4 == 0)" ( (comma_expression "lVar4 = __gmpn_sub_n(lVar10,lVar10,param_1,lVar9), lVar4 == 0" (assignment_expression "lVar4 = __gmpn_sub_n(lVar10,lVar10,param_1,lVar9)" identifier = (call_expression "__gmpn_sub_n(lVar10,lVar10,param_1,lVar9)" identifier (argument_list "(lVar10,lVar10,param_1,lVar9)" ( identifier , identifier , identifier , identifier )))) , (binary_expression "lVar4 == 0" identifier == number_literal)) ))) )) || (parenthesized_expression "(lVar7 <= lVar9)" ( (binary_expression "lVar7 <= lVar9" identifier <= identifier) ))) )) (compound_statement "{\nLAB_0013301a:\n    if (0 < lVar7) {\n      lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\n      goto joined_r0x00133029;\n    }\nLAB_0013321f:\n    lVar4 = lVar7;\n    if (lVar7 <= param_4) {\n      if ((lVar7 == 0) || (lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7), lVar3 == 0))\n      goto LAB_00133231;\nLAB_0013327a:\n      lVar3 = lVar7 * 8;\n      lVar7 = lVar7 + 1;\n      lVar4 = *(long *)(param_1 + lVar3) + 1;\n      *(long *)(lVar10 + lVar3) = lVar4;\n      while (lVar4 == 0) {\n        if (lVar9 == lVar7) goto LAB_00133408;\n        lVar3 = lVar7 * 8;\n        lVar7 = lVar7 + 1;\n        lVar4 = *(long *)(param_1 + lVar3) + 1;\n        *(long *)(lVar10 + -8 + lVar7 * 8) = lVar4;\n      }\nLAB_00133231:\n      if (param_1 != lVar10) {\n        if (lVar7 < lVar9) {\n          do {\n            *(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8);\n            lVar7 = lVar7 + 1;\n          } while (lVar9 != lVar7);\n        }\n        return 0;\n      }\n      return 0;\n    }\nLAB_00133049:\n    lVar8 = lVar9;\n    lVar7 = lVar4;\n    if (lVar9 == lVar4) {\n      do {\n        lVar8 = lVar8 + -1;\n        if (lVar8 < 0) {\n          if (0 < param_4) {\n            (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n            return 0;\n          }\n          (*param_5)(param_6,lVar10,lVar4,0,0,uVar11);\n          return 0;\n        }\n        uVar1 = *(ulong *)(param_1 + lVar8 * 8);\n        uVar2 = *(ulong *)(lVar10 + lVar8 * 8);\n      } while (uVar1 == uVar2);\n      if (uVar1 < uVar2 || uVar1 == uVar2) {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      }\n      else {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n        uVar11 = uVar11 ^ 1;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }\n    }\n    else {\n      (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      if (lVar4 < lVar9) {\n        uVar11 = uVar11 ^ 1;\n        lVar7 = lVar9;\n        lVar9 = lVar4;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }\n    }\n  }" { (labeled_statement "LAB_0013301a:\n    if (0 < lVar7) {\n      lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\n      goto joined_r0x00133029;\n    }" statement_identifier : (if_statement "if (0 < lVar7) {\n      lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\n      goto joined_r0x00133029;\n    }" if (parenthesized_expression "(0 < lVar7)" ( (binary_expression "0 < lVar7" number_literal < identifier) )) (compound_statement "{\n      lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\n      goto joined_r0x00133029;\n    }" { (expression_statement "lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);" (assignment_expression "lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8)" identifier = (pointer_expression "*(long *)(lVar10 + -8 + lVar7 * 8)" * (cast_expression "(long *)(lVar10 + -8 + lVar7 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + -8 + lVar7 * 8)" ( (binary_expression "lVar10 + -8 + lVar7 * 8" (binary_expression "lVar10 + -8" identifier + number_literal) + (binary_expression "lVar7 * 8" identifier * number_literal)) ))))) ;) (goto_statement "goto joined_r0x00133029;" goto statement_identifier ;) }))) (labeled_statement "LAB_0013321f:\n    lVar4 = lVar7;" statement_identifier : (expression_statement "lVar4 = lVar7;" (assignment_expression "lVar4 = lVar7" identifier = identifier) ;)) (if_statement "if (lVar7 <= param_4) {\n      if ((lVar7 == 0) || (lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7), lVar3 == 0))\n      goto LAB_00133231;\nLAB_0013327a:\n      lVar3 = lVar7 * 8;\n      lVar7 = lVar7 + 1;\n      lVar4 = *(long *)(param_1 + lVar3) + 1;\n      *(long *)(lVar10 + lVar3) = lVar4;\n      while (lVar4 == 0) {\n        if (lVar9 == lVar7) goto LAB_00133408;\n        lVar3 = lVar7 * 8;\n        lVar7 = lVar7 + 1;\n        lVar4 = *(long *)(param_1 + lVar3) + 1;\n        *(long *)(lVar10 + -8 + lVar7 * 8) = lVar4;\n      }\nLAB_00133231:\n      if (param_1 != lVar10) {\n        if (lVar7 < lVar9) {\n          do {\n            *(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8);\n            lVar7 = lVar7 + 1;\n          } while (lVar9 != lVar7);\n        }\n        return 0;\n      }\n      return 0;\n    }" if (parenthesized_expression "(lVar7 <= param_4)" ( (binary_expression "lVar7 <= param_4" identifier <= identifier) )) (compound_statement "{\n      if ((lVar7 == 0) || (lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7), lVar3 == 0))\n      goto LAB_00133231;\nLAB_0013327a:\n      lVar3 = lVar7 * 8;\n      lVar7 = lVar7 + 1;\n      lVar4 = *(long *)(param_1 + lVar3) + 1;\n      *(long *)(lVar10 + lVar3) = lVar4;\n      while (lVar4 == 0) {\n        if (lVar9 == lVar7) goto LAB_00133408;\n        lVar3 = lVar7 * 8;\n        lVar7 = lVar7 + 1;\n        lVar4 = *(long *)(param_1 + lVar3) + 1;\n        *(long *)(lVar10 + -8 + lVar7 * 8) = lVar4;\n      }\nLAB_00133231:\n      if (param_1 != lVar10) {\n        if (lVar7 < lVar9) {\n          do {\n            *(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8);\n            lVar7 = lVar7 + 1;\n          } while (lVar9 != lVar7);\n        }\n        return 0;\n      }\n      return 0;\n    }" { (if_statement "if ((lVar7 == 0) || (lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7), lVar3 == 0))\n      goto LAB_00133231;" if (parenthesized_expression "((lVar7 == 0) || (lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7), lVar3 == 0))" ( (binary_expression "(lVar7 == 0) || (lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7), lVar3 == 0)" (parenthesized_expression "(lVar7 == 0)" ( (binary_expression "lVar7 == 0" identifier == number_literal) )) || (parenthesized_expression "(lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7), lVar3 == 0)" ( (comma_expression "lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7), lVar3 == 0" (assignment_expression "lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7)" identifier = (call_expression "__gmpn_add_n(lVar10,param_1,lVar10,lVar7)" identifier (argument_list "(lVar10,param_1,lVar10,lVar7)" ( identifier , identifier , identifier , identifier )))) , (binary_expression "lVar3 == 0" identifier == number_literal)) ))) )) (goto_statement "goto LAB_00133231;" goto statement_identifier ;)) (labeled_statement "LAB_0013327a:\n      lVar3 = lVar7 * 8;" statement_identifier : (expression_statement "lVar3 = lVar7 * 8;" (assignment_expression "lVar3 = lVar7 * 8" identifier = (binary_expression "lVar7 * 8" identifier * number_literal)) ;)) (expression_statement "lVar7 = lVar7 + 1;" (assignment_expression "lVar7 = lVar7 + 1" identifier = (binary_expression "lVar7 + 1" identifier + number_literal)) ;) (expression_statement "lVar4 = *(long *)(param_1 + lVar3) + 1;" (assignment_expression "lVar4 = *(long *)(param_1 + lVar3) + 1" identifier = (binary_expression "*(long *)(param_1 + lVar3) + 1" (pointer_expression "*(long *)(param_1 + lVar3)" * (cast_expression "(long *)(param_1 + lVar3)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + lVar3)" ( (binary_expression "param_1 + lVar3" identifier + identifier) )))) + number_literal)) ;) (expression_statement "*(long *)(lVar10 + lVar3) = lVar4;" (assignment_expression "*(long *)(lVar10 + lVar3) = lVar4" (pointer_expression "*(long *)(lVar10 + lVar3)" * (cast_expression "(long *)(lVar10 + lVar3)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + lVar3)" ( (binary_expression "lVar10 + lVar3" identifier + identifier) )))) = identifier) ;) (while_statement "while (lVar4 == 0) {\n        if (lVar9 == lVar7) goto LAB_00133408;\n        lVar3 = lVar7 * 8;\n        lVar7 = lVar7 + 1;\n        lVar4 = *(long *)(param_1 + lVar3) + 1;\n        *(long *)(lVar10 + -8 + lVar7 * 8) = lVar4;\n      }" while (parenthesized_expression "(lVar4 == 0)" ( (binary_expression "lVar4 == 0" identifier == number_literal) )) (compound_statement "{\n        if (lVar9 == lVar7) goto LAB_00133408;\n        lVar3 = lVar7 * 8;\n        lVar7 = lVar7 + 1;\n        lVar4 = *(long *)(param_1 + lVar3) + 1;\n        *(long *)(lVar10 + -8 + lVar7 * 8) = lVar4;\n      }" { (if_statement "if (lVar9 == lVar7) goto LAB_00133408;" if (parenthesized_expression "(lVar9 == lVar7)" ( (binary_expression "lVar9 == lVar7" identifier == identifier) )) (goto_statement "goto LAB_00133408;" goto statement_identifier ;)) (expression_statement "lVar3 = lVar7 * 8;" (assignment_expression "lVar3 = lVar7 * 8" identifier = (binary_expression "lVar7 * 8" identifier * number_literal)) ;) (expression_statement "lVar7 = lVar7 + 1;" (assignment_expression "lVar7 = lVar7 + 1" identifier = (binary_expression "lVar7 + 1" identifier + number_literal)) ;) (expression_statement "lVar4 = *(long *)(param_1 + lVar3) + 1;" (assignment_expression "lVar4 = *(long *)(param_1 + lVar3) + 1" identifier = (binary_expression "*(long *)(param_1 + lVar3) + 1" (pointer_expression "*(long *)(param_1 + lVar3)" * (cast_expression "(long *)(param_1 + lVar3)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + lVar3)" ( (binary_expression "param_1 + lVar3" identifier + identifier) )))) + number_literal)) ;) (expression_statement "*(long *)(lVar10 + -8 + lVar7 * 8) = lVar4;" (assignment_expression "*(long *)(lVar10 + -8 + lVar7 * 8) = lVar4" (pointer_expression "*(long *)(lVar10 + -8 + lVar7 * 8)" * (cast_expression "(long *)(lVar10 + -8 + lVar7 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + -8 + lVar7 * 8)" ( (binary_expression "lVar10 + -8 + lVar7 * 8" (binary_expression "lVar10 + -8" identifier + number_literal) + (binary_expression "lVar7 * 8" identifier * number_literal)) )))) = identifier) ;) })) (labeled_statement "LAB_00133231:\n      if (param_1 != lVar10) {\n        if (lVar7 < lVar9) {\n          do {\n            *(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8);\n            lVar7 = lVar7 + 1;\n          } while (lVar9 != lVar7);\n        }\n        return 0;\n      }" statement_identifier : (if_statement "if (param_1 != lVar10) {\n        if (lVar7 < lVar9) {\n          do {\n            *(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8);\n            lVar7 = lVar7 + 1;\n          } while (lVar9 != lVar7);\n        }\n        return 0;\n      }" if (parenthesized_expression "(param_1 != lVar10)" ( (binary_expression "param_1 != lVar10" identifier != identifier) )) (compound_statement "{\n        if (lVar7 < lVar9) {\n          do {\n            *(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8);\n            lVar7 = lVar7 + 1;\n          } while (lVar9 != lVar7);\n        }\n        return 0;\n      }" { (if_statement "if (lVar7 < lVar9) {\n          do {\n            *(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8);\n            lVar7 = lVar7 + 1;\n          } while (lVar9 != lVar7);\n        }" if (parenthesized_expression "(lVar7 < lVar9)" ( (binary_expression "lVar7 < lVar9" identifier < identifier) )) (compound_statement "{\n          do {\n            *(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8);\n            lVar7 = lVar7 + 1;\n          } while (lVar9 != lVar7);\n        }" { (do_statement "do {\n            *(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8);\n            lVar7 = lVar7 + 1;\n          } while (lVar9 != lVar7);" do (compound_statement "{\n            *(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8);\n            lVar7 = lVar7 + 1;\n          }" { (expression_statement "*(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8);" (assignment_expression "*(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8)" (pointer_expression "*(undefined8 *)(lVar10 + lVar7 * 8)" * (cast_expression "(undefined8 *)(lVar10 + lVar7 * 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + lVar7 * 8)" ( (binary_expression "lVar10 + lVar7 * 8" identifier + (binary_expression "lVar7 * 8" identifier * number_literal)) )))) = (pointer_expression "*(undefined8 *)(param_1 + lVar7 * 8)" * (cast_expression "(undefined8 *)(param_1 + lVar7 * 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + lVar7 * 8)" ( (binary_expression "param_1 + lVar7 * 8" identifier + (binary_expression "lVar7 * 8" identifier * number_literal)) ))))) ;) (expression_statement "lVar7 = lVar7 + 1;" (assignment_expression "lVar7 = lVar7 + 1" identifier = (binary_expression "lVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar9 != lVar7)" ( (binary_expression "lVar9 != lVar7" identifier != identifier) )) ;) })) (return_statement "return 0;" return number_literal ;) }))) (return_statement "return 0;" return number_literal ;) })) (labeled_statement "LAB_00133049:\n    lVar8 = lVar9;" statement_identifier : (expression_statement "lVar8 = lVar9;" (assignment_expression "lVar8 = lVar9" identifier = identifier) ;)) (expression_statement "lVar7 = lVar4;" (assignment_expression "lVar7 = lVar4" identifier = identifier) ;) (if_statement "if (lVar9 == lVar4) {\n      do {\n        lVar8 = lVar8 + -1;\n        if (lVar8 < 0) {\n          if (0 < param_4) {\n            (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n            return 0;\n          }\n          (*param_5)(param_6,lVar10,lVar4,0,0,uVar11);\n          return 0;\n        }\n        uVar1 = *(ulong *)(param_1 + lVar8 * 8);\n        uVar2 = *(ulong *)(lVar10 + lVar8 * 8);\n      } while (uVar1 == uVar2);\n      if (uVar1 < uVar2 || uVar1 == uVar2) {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      }\n      else {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n        uVar11 = uVar11 ^ 1;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }\n    }\n    else {\n      (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      if (lVar4 < lVar9) {\n        uVar11 = uVar11 ^ 1;\n        lVar7 = lVar9;\n        lVar9 = lVar4;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }\n    }" if (parenthesized_expression "(lVar9 == lVar4)" ( (binary_expression "lVar9 == lVar4" identifier == identifier) )) (compound_statement "{\n      do {\n        lVar8 = lVar8 + -1;\n        if (lVar8 < 0) {\n          if (0 < param_4) {\n            (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n            return 0;\n          }\n          (*param_5)(param_6,lVar10,lVar4,0,0,uVar11);\n          return 0;\n        }\n        uVar1 = *(ulong *)(param_1 + lVar8 * 8);\n        uVar2 = *(ulong *)(lVar10 + lVar8 * 8);\n      } while (uVar1 == uVar2);\n      if (uVar1 < uVar2 || uVar1 == uVar2) {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      }\n      else {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n        uVar11 = uVar11 ^ 1;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }\n    }" { (do_statement "do {\n        lVar8 = lVar8 + -1;\n        if (lVar8 < 0) {\n          if (0 < param_4) {\n            (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n            return 0;\n          }\n          (*param_5)(param_6,lVar10,lVar4,0,0,uVar11);\n          return 0;\n        }\n        uVar1 = *(ulong *)(param_1 + lVar8 * 8);\n        uVar2 = *(ulong *)(lVar10 + lVar8 * 8);\n      } while (uVar1 == uVar2);" do (compound_statement "{\n        lVar8 = lVar8 + -1;\n        if (lVar8 < 0) {\n          if (0 < param_4) {\n            (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n            return 0;\n          }\n          (*param_5)(param_6,lVar10,lVar4,0,0,uVar11);\n          return 0;\n        }\n        uVar1 = *(ulong *)(param_1 + lVar8 * 8);\n        uVar2 = *(ulong *)(lVar10 + lVar8 * 8);\n      }" { (expression_statement "lVar8 = lVar8 + -1;" (assignment_expression "lVar8 = lVar8 + -1" identifier = (binary_expression "lVar8 + -1" identifier + number_literal)) ;) (if_statement "if (lVar8 < 0) {\n          if (0 < param_4) {\n            (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n            return 0;\n          }\n          (*param_5)(param_6,lVar10,lVar4,0,0,uVar11);\n          return 0;\n        }" if (parenthesized_expression "(lVar8 < 0)" ( (binary_expression "lVar8 < 0" identifier < number_literal) )) (compound_statement "{\n          if (0 < param_4) {\n            (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n            return 0;\n          }\n          (*param_5)(param_6,lVar10,lVar4,0,0,uVar11);\n          return 0;\n        }" { (if_statement "if (0 < param_4) {\n            (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n            return 0;\n          }" if (parenthesized_expression "(0 < param_4)" ( (binary_expression "0 < param_4" number_literal < identifier) )) (compound_statement "{\n            (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n            return 0;\n          }" { (expression_statement "(*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);" (call_expression "(*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11)" (parenthesized_expression "(*param_5)" ( (pointer_expression "*param_5" * identifier) )) (argument_list "(param_6,0,0,&DAT_0015f3c0,1,uVar11)" ( identifier , number_literal , number_literal , (pointer_expression "&DAT_0015f3c0" & identifier) , number_literal , identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "(*param_5)(param_6,lVar10,lVar4,0,0,uVar11);" (call_expression "(*param_5)(param_6,lVar10,lVar4,0,0,uVar11)" (parenthesized_expression "(*param_5)" ( (pointer_expression "*param_5" * identifier) )) (argument_list "(param_6,lVar10,lVar4,0,0,uVar11)" ( identifier , identifier , identifier , number_literal , number_literal , identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar1 = *(ulong *)(param_1 + lVar8 * 8);" (assignment_expression "uVar1 = *(ulong *)(param_1 + lVar8 * 8)" identifier = (pointer_expression "*(ulong *)(param_1 + lVar8 * 8)" * (cast_expression "(ulong *)(param_1 + lVar8 * 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + lVar8 * 8)" ( (binary_expression "param_1 + lVar8 * 8" identifier + (binary_expression "lVar8 * 8" identifier * number_literal)) ))))) ;) (expression_statement "uVar2 = *(ulong *)(lVar10 + lVar8 * 8);" (assignment_expression "uVar2 = *(ulong *)(lVar10 + lVar8 * 8)" identifier = (pointer_expression "*(ulong *)(lVar10 + lVar8 * 8)" * (cast_expression "(ulong *)(lVar10 + lVar8 * 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + lVar8 * 8)" ( (binary_expression "lVar10 + lVar8 * 8" identifier + (binary_expression "lVar8 * 8" identifier * number_literal)) ))))) ;) }) while (parenthesized_expression "(uVar1 == uVar2)" ( (binary_expression "uVar1 == uVar2" identifier == identifier) )) ;) (if_statement "if (uVar1 < uVar2 || uVar1 == uVar2) {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      }\n      else {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n        uVar11 = uVar11 ^ 1;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }" if (parenthesized_expression "(uVar1 < uVar2 || uVar1 == uVar2)" ( (binary_expression "uVar1 < uVar2 || uVar1 == uVar2" (binary_expression "uVar1 < uVar2" identifier < identifier) || (binary_expression "uVar1 == uVar2" identifier == identifier)) )) (compound_statement "{\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      }" { (expression_statement "(*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);" (call_expression "(*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11)" (parenthesized_expression "(*param_5)" ( (pointer_expression "*param_5" * identifier) )) (argument_list "(param_6,0,0,&DAT_0015f3c0,1,uVar11)" ( identifier , number_literal , number_literal , (pointer_expression "&DAT_0015f3c0" & identifier) , number_literal , identifier ))) ;) }) (else_clause "else {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n        uVar11 = uVar11 ^ 1;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }" else (compound_statement "{\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n        uVar11 = uVar11 ^ 1;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }" { (expression_statement "(*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);" (call_expression "(*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11)" (parenthesized_expression "(*param_5)" ( (pointer_expression "*param_5" * identifier) )) (argument_list "(param_6,0,0,&DAT_0015f3c0,1,uVar11)" ( identifier , number_literal , number_literal , (pointer_expression "&DAT_0015f3c0" & identifier) , number_literal , identifier ))) ;) (expression_statement "uVar11 = uVar11 ^ 1;" (assignment_expression "uVar11 = uVar11 ^ 1" identifier = (binary_expression "uVar11 ^ 1" identifier ^ number_literal)) ;) (expression_statement "lVar3 = param_1;" (assignment_expression "lVar3 = param_1" identifier = identifier) ;) (expression_statement "param_1 = lVar10;" (assignment_expression "param_1 = lVar10" identifier = identifier) ;) }))) }) (else_clause "else {\n      (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      if (lVar4 < lVar9) {\n        uVar11 = uVar11 ^ 1;\n        lVar7 = lVar9;\n        lVar9 = lVar4;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }\n    }" else (compound_statement "{\n      (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      if (lVar4 < lVar9) {\n        uVar11 = uVar11 ^ 1;\n        lVar7 = lVar9;\n        lVar9 = lVar4;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }\n    }" { (expression_statement "(*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);" (call_expression "(*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11)" (parenthesized_expression "(*param_5)" ( (pointer_expression "*param_5" * identifier) )) (argument_list "(param_6,0,0,&DAT_0015f3c0,1,uVar11)" ( identifier , number_literal , number_literal , (pointer_expression "&DAT_0015f3c0" & identifier) , number_literal , identifier ))) ;) (if_statement "if (lVar4 < lVar9) {\n        uVar11 = uVar11 ^ 1;\n        lVar7 = lVar9;\n        lVar9 = lVar4;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }" if (parenthesized_expression "(lVar4 < lVar9)" ( (binary_expression "lVar4 < lVar9" identifier < identifier) )) (compound_statement "{\n        uVar11 = uVar11 ^ 1;\n        lVar7 = lVar9;\n        lVar9 = lVar4;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }" { (expression_statement "uVar11 = uVar11 ^ 1;" (assignment_expression "uVar11 = uVar11 ^ 1" identifier = (binary_expression "uVar11 ^ 1" identifier ^ number_literal)) ;) (expression_statement "lVar7 = lVar9;" (assignment_expression "lVar7 = lVar9" identifier = identifier) ;) (expression_statement "lVar9 = lVar4;" (assignment_expression "lVar9 = lVar4" identifier = identifier) ;) (expression_statement "lVar3 = param_1;" (assignment_expression "lVar3 = param_1" identifier = identifier) ;) (expression_statement "param_1 = lVar10;" (assignment_expression "param_1 = lVar10" identifier = identifier) ;) })) }))) }) (else_clause "else {\n    plVar6 = (long *)(lVar10 + lVar9 * 8);\n    lVar8 = *plVar6;\n    lVar4 = lVar9 + 1;\n    *plVar6 = lVar8 + -1;\n    if (lVar8 == 0) {\n      do {\n        if (lVar7 == lVar4) goto LAB_00133465;\n        lVar8 = *(long *)(lVar10 + lVar4 * 8);\n        lVar4 = lVar4 + 1;\n        *(long *)(lVar10 + -8 + lVar4 * 8) = lVar8 + -1;\n      } while (lVar8 == 0);\n      goto LAB_0013301a;\n    }\nLAB_00133465:\n    if (0 < lVar7) {\n      lVar4 = lVar7;\n      if (*(long *)(lVar10 + -8 + lVar7 * 8) == 0) {\n        do {\n          lVar7 = lVar7 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\njoined_r0x00133029:\n        } while (lVar4 == 0);\n        lVar4 = lVar7;\n        if (param_4 < lVar7) goto LAB_00133049;\n        lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7);\n        if (lVar3 == 0) goto LAB_00133231;\n        if (lVar9 <= lVar7) {\nLAB_00133408:\n          *(undefined8 *)(lVar10 + lVar9 * 8) = 1;\n          return 0;\n        }\n        goto LAB_0013327a;\n      }\n      goto LAB_00133049;\n    }\n    (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n  }" else (compound_statement "{\n    plVar6 = (long *)(lVar10 + lVar9 * 8);\n    lVar8 = *plVar6;\n    lVar4 = lVar9 + 1;\n    *plVar6 = lVar8 + -1;\n    if (lVar8 == 0) {\n      do {\n        if (lVar7 == lVar4) goto LAB_00133465;\n        lVar8 = *(long *)(lVar10 + lVar4 * 8);\n        lVar4 = lVar4 + 1;\n        *(long *)(lVar10 + -8 + lVar4 * 8) = lVar8 + -1;\n      } while (lVar8 == 0);\n      goto LAB_0013301a;\n    }\nLAB_00133465:\n    if (0 < lVar7) {\n      lVar4 = lVar7;\n      if (*(long *)(lVar10 + -8 + lVar7 * 8) == 0) {\n        do {\n          lVar7 = lVar7 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\njoined_r0x00133029:\n        } while (lVar4 == 0);\n        lVar4 = lVar7;\n        if (param_4 < lVar7) goto LAB_00133049;\n        lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7);\n        if (lVar3 == 0) goto LAB_00133231;\n        if (lVar9 <= lVar7) {\nLAB_00133408:\n          *(undefined8 *)(lVar10 + lVar9 * 8) = 1;\n          return 0;\n        }\n        goto LAB_0013327a;\n      }\n      goto LAB_00133049;\n    }\n    (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n  }" { (expression_statement "plVar6 = (long *)(lVar10 + lVar9 * 8);" (assignment_expression "plVar6 = (long *)(lVar10 + lVar9 * 8)" identifier = (cast_expression "(long *)(lVar10 + lVar9 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + lVar9 * 8)" ( (binary_expression "lVar10 + lVar9 * 8" identifier + (binary_expression "lVar9 * 8" identifier * number_literal)) )))) ;) (expression_statement "lVar8 = *plVar6;" (assignment_expression "lVar8 = *plVar6" identifier = (pointer_expression "*plVar6" * identifier)) ;) (expression_statement "lVar4 = lVar9 + 1;" (assignment_expression "lVar4 = lVar9 + 1" identifier = (binary_expression "lVar9 + 1" identifier + number_literal)) ;) (expression_statement "*plVar6 = lVar8 + -1;" (assignment_expression "*plVar6 = lVar8 + -1" (pointer_expression "*plVar6" * identifier) = (binary_expression "lVar8 + -1" identifier + number_literal)) ;) (if_statement "if (lVar8 == 0) {\n      do {\n        if (lVar7 == lVar4) goto LAB_00133465;\n        lVar8 = *(long *)(lVar10 + lVar4 * 8);\n        lVar4 = lVar4 + 1;\n        *(long *)(lVar10 + -8 + lVar4 * 8) = lVar8 + -1;\n      } while (lVar8 == 0);\n      goto LAB_0013301a;\n    }" if (parenthesized_expression "(lVar8 == 0)" ( (binary_expression "lVar8 == 0" identifier == number_literal) )) (compound_statement "{\n      do {\n        if (lVar7 == lVar4) goto LAB_00133465;\n        lVar8 = *(long *)(lVar10 + lVar4 * 8);\n        lVar4 = lVar4 + 1;\n        *(long *)(lVar10 + -8 + lVar4 * 8) = lVar8 + -1;\n      } while (lVar8 == 0);\n      goto LAB_0013301a;\n    }" { (do_statement "do {\n        if (lVar7 == lVar4) goto LAB_00133465;\n        lVar8 = *(long *)(lVar10 + lVar4 * 8);\n        lVar4 = lVar4 + 1;\n        *(long *)(lVar10 + -8 + lVar4 * 8) = lVar8 + -1;\n      } while (lVar8 == 0);" do (compound_statement "{\n        if (lVar7 == lVar4) goto LAB_00133465;\n        lVar8 = *(long *)(lVar10 + lVar4 * 8);\n        lVar4 = lVar4 + 1;\n        *(long *)(lVar10 + -8 + lVar4 * 8) = lVar8 + -1;\n      }" { (if_statement "if (lVar7 == lVar4) goto LAB_00133465;" if (parenthesized_expression "(lVar7 == lVar4)" ( (binary_expression "lVar7 == lVar4" identifier == identifier) )) (goto_statement "goto LAB_00133465;" goto statement_identifier ;)) (expression_statement "lVar8 = *(long *)(lVar10 + lVar4 * 8);" (assignment_expression "lVar8 = *(long *)(lVar10 + lVar4 * 8)" identifier = (pointer_expression "*(long *)(lVar10 + lVar4 * 8)" * (cast_expression "(long *)(lVar10 + lVar4 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + lVar4 * 8)" ( (binary_expression "lVar10 + lVar4 * 8" identifier + (binary_expression "lVar4 * 8" identifier * number_literal)) ))))) ;) (expression_statement "lVar4 = lVar4 + 1;" (assignment_expression "lVar4 = lVar4 + 1" identifier = (binary_expression "lVar4 + 1" identifier + number_literal)) ;) (expression_statement "*(long *)(lVar10 + -8 + lVar4 * 8) = lVar8 + -1;" (assignment_expression "*(long *)(lVar10 + -8 + lVar4 * 8) = lVar8 + -1" (pointer_expression "*(long *)(lVar10 + -8 + lVar4 * 8)" * (cast_expression "(long *)(lVar10 + -8 + lVar4 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + -8 + lVar4 * 8)" ( (binary_expression "lVar10 + -8 + lVar4 * 8" (binary_expression "lVar10 + -8" identifier + number_literal) + (binary_expression "lVar4 * 8" identifier * number_literal)) )))) = (binary_expression "lVar8 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar8 == 0)" ( (binary_expression "lVar8 == 0" identifier == number_literal) )) ;) (goto_statement "goto LAB_0013301a;" goto statement_identifier ;) })) (labeled_statement "LAB_00133465:\n    if (0 < lVar7) {\n      lVar4 = lVar7;\n      if (*(long *)(lVar10 + -8 + lVar7 * 8) == 0) {\n        do {\n          lVar7 = lVar7 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\njoined_r0x00133029:\n        } while (lVar4 == 0);\n        lVar4 = lVar7;\n        if (param_4 < lVar7) goto LAB_00133049;\n        lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7);\n        if (lVar3 == 0) goto LAB_00133231;\n        if (lVar9 <= lVar7) {\nLAB_00133408:\n          *(undefined8 *)(lVar10 + lVar9 * 8) = 1;\n          return 0;\n        }\n        goto LAB_0013327a;\n      }\n      goto LAB_00133049;\n    }" statement_identifier : (if_statement "if (0 < lVar7) {\n      lVar4 = lVar7;\n      if (*(long *)(lVar10 + -8 + lVar7 * 8) == 0) {\n        do {\n          lVar7 = lVar7 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\njoined_r0x00133029:\n        } while (lVar4 == 0);\n        lVar4 = lVar7;\n        if (param_4 < lVar7) goto LAB_00133049;\n        lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7);\n        if (lVar3 == 0) goto LAB_00133231;\n        if (lVar9 <= lVar7) {\nLAB_00133408:\n          *(undefined8 *)(lVar10 + lVar9 * 8) = 1;\n          return 0;\n        }\n        goto LAB_0013327a;\n      }\n      goto LAB_00133049;\n    }" if (parenthesized_expression "(0 < lVar7)" ( (binary_expression "0 < lVar7" number_literal < identifier) )) (compound_statement "{\n      lVar4 = lVar7;\n      if (*(long *)(lVar10 + -8 + lVar7 * 8) == 0) {\n        do {\n          lVar7 = lVar7 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\njoined_r0x00133029:\n        } while (lVar4 == 0);\n        lVar4 = lVar7;\n        if (param_4 < lVar7) goto LAB_00133049;\n        lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7);\n        if (lVar3 == 0) goto LAB_00133231;\n        if (lVar9 <= lVar7) {\nLAB_00133408:\n          *(undefined8 *)(lVar10 + lVar9 * 8) = 1;\n          return 0;\n        }\n        goto LAB_0013327a;\n      }\n      goto LAB_00133049;\n    }" { (expression_statement "lVar4 = lVar7;" (assignment_expression "lVar4 = lVar7" identifier = identifier) ;) (if_statement "if (*(long *)(lVar10 + -8 + lVar7 * 8) == 0) {\n        do {\n          lVar7 = lVar7 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\njoined_r0x00133029:\n        } while (lVar4 == 0);\n        lVar4 = lVar7;\n        if (param_4 < lVar7) goto LAB_00133049;\n        lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7);\n        if (lVar3 == 0) goto LAB_00133231;\n        if (lVar9 <= lVar7) {\nLAB_00133408:\n          *(undefined8 *)(lVar10 + lVar9 * 8) = 1;\n          return 0;\n        }\n        goto LAB_0013327a;\n      }" if (parenthesized_expression "(*(long *)(lVar10 + -8 + lVar7 * 8) == 0)" ( (binary_expression "*(long *)(lVar10 + -8 + lVar7 * 8) == 0" (pointer_expression "*(long *)(lVar10 + -8 + lVar7 * 8)" * (cast_expression "(long *)(lVar10 + -8 + lVar7 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + -8 + lVar7 * 8)" ( (binary_expression "lVar10 + -8 + lVar7 * 8" (binary_expression "lVar10 + -8" identifier + number_literal) + (binary_expression "lVar7 * 8" identifier * number_literal)) )))) == number_literal) )) (compound_statement "{\n        do {\n          lVar7 = lVar7 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\njoined_r0x00133029:\n        } while (lVar4 == 0);\n        lVar4 = lVar7;\n        if (param_4 < lVar7) goto LAB_00133049;\n        lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7);\n        if (lVar3 == 0) goto LAB_00133231;\n        if (lVar9 <= lVar7) {\nLAB_00133408:\n          *(undefined8 *)(lVar10 + lVar9 * 8) = 1;\n          return 0;\n        }\n        goto LAB_0013327a;\n      }" { (do_statement "do {\n          lVar7 = lVar7 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\njoined_r0x00133029:\n        } while (lVar4 == 0);" do (compound_statement "{\n          lVar7 = lVar7 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\njoined_r0x00133029:\n        }" { (expression_statement "lVar7 = lVar7 + -1;" (assignment_expression "lVar7 = lVar7 + -1" identifier = (binary_expression "lVar7 + -1" identifier + number_literal)) ;) (if_statement "if (lVar7 < 1) goto LAB_0013321f;" if (parenthesized_expression "(lVar7 < 1)" ( (binary_expression "lVar7 < 1" identifier < number_literal) )) (goto_statement "goto LAB_0013321f;" goto statement_identifier ;)) (expression_statement "lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);" (assignment_expression "lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8)" identifier = (pointer_expression "*(long *)(lVar10 + -8 + lVar7 * 8)" * (cast_expression "(long *)(lVar10 + -8 + lVar7 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + -8 + lVar7 * 8)" ( (binary_expression "lVar10 + -8 + lVar7 * 8" (binary_expression "lVar10 + -8" identifier + number_literal) + (binary_expression "lVar7 * 8" identifier * number_literal)) ))))) ;) (labeled_statement "joined_r0x00133029:" statement_identifier : (expression_statement "" ;)) }) while (parenthesized_expression "(lVar4 == 0)" ( (binary_expression "lVar4 == 0" identifier == number_literal) )) ;) (expression_statement "lVar4 = lVar7;" (assignment_expression "lVar4 = lVar7" identifier = identifier) ;) (if_statement "if (param_4 < lVar7) goto LAB_00133049;" if (parenthesized_expression "(param_4 < lVar7)" ( (binary_expression "param_4 < lVar7" identifier < identifier) )) (goto_statement "goto LAB_00133049;" goto statement_identifier ;)) (expression_statement "lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7);" (assignment_expression "lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7)" identifier = (call_expression "__gmpn_add_n(lVar10,param_1,lVar10,lVar7)" identifier (argument_list "(lVar10,param_1,lVar10,lVar7)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (lVar3 == 0) goto LAB_00133231;" if (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00133231;" goto statement_identifier ;)) (if_statement "if (lVar9 <= lVar7) {\nLAB_00133408:\n          *(undefined8 *)(lVar10 + lVar9 * 8) = 1;\n          return 0;\n        }" if (parenthesized_expression "(lVar9 <= lVar7)" ( (binary_expression "lVar9 <= lVar7" identifier <= identifier) )) (compound_statement "{\nLAB_00133408:\n          *(undefined8 *)(lVar10 + lVar9 * 8) = 1;\n          return 0;\n        }" { (labeled_statement "LAB_00133408:\n          *(undefined8 *)(lVar10 + lVar9 * 8) = 1;" statement_identifier : (expression_statement "*(undefined8 *)(lVar10 + lVar9 * 8) = 1;" (assignment_expression "*(undefined8 *)(lVar10 + lVar9 * 8) = 1" (pointer_expression "*(undefined8 *)(lVar10 + lVar9 * 8)" * (cast_expression "(undefined8 *)(lVar10 + lVar9 * 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + lVar9 * 8)" ( (binary_expression "lVar10 + lVar9 * 8" identifier + (binary_expression "lVar9 * 8" identifier * number_literal)) )))) = number_literal) ;)) (return_statement "return 0;" return number_literal ;) })) (goto_statement "goto LAB_0013327a;" goto statement_identifier ;) })) (goto_statement "goto LAB_00133049;" goto statement_identifier ;) }))) (expression_statement "(*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);" (call_expression "(*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11)" (parenthesized_expression "(*param_5)" ( (pointer_expression "*param_5" * identifier) )) (argument_list "(param_6,0,0,&DAT_0015f3c0,1,uVar11)" ( identifier , number_literal , number_literal , (pointer_expression "&DAT_0015f3c0" & identifier) , number_literal , identifier ))) ;) }))) (expression_statement "__gmpn_tdiv_qr(param_7,lVar3,0,lVar3,lVar7,param_1,lVar9);" (call_expression "__gmpn_tdiv_qr(param_7,lVar3,0,lVar3,lVar7,param_1,lVar9)" identifier (argument_list "(param_7,lVar3,0,lVar3,lVar7,param_1,lVar9)" ( identifier , identifier , number_literal , identifier , identifier , identifier , identifier ))) ;) (expression_statement "lVar10 = (lVar7 - lVar9) + 1;" (assignment_expression "lVar10 = (lVar7 - lVar9) + 1" identifier = (binary_expression "(lVar7 - lVar9) + 1" (parenthesized_expression "(lVar7 - lVar9)" ( (binary_expression "lVar7 - lVar9" identifier - identifier) )) + number_literal)) ;) (if_statement "if (lVar9 < 1) goto LAB_001330fa;" if (parenthesized_expression "(lVar9 < 1)" ( (binary_expression "lVar9 < 1" identifier < number_literal) )) (goto_statement "goto LAB_001330fa;" goto statement_identifier ;)) (expression_statement "lVar7 = lVar9 * 8;" (assignment_expression "lVar7 = lVar9 * 8" identifier = (binary_expression "lVar9 * 8" identifier * number_literal)) ;) (expression_statement "lVar4 = *(long *)(lVar3 + -8 + lVar7);" (assignment_expression "lVar4 = *(long *)(lVar3 + -8 + lVar7)" identifier = (pointer_expression "*(long *)(lVar3 + -8 + lVar7)" * (cast_expression "(long *)(lVar3 + -8 + lVar7)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + -8 + lVar7)" ( (binary_expression "lVar3 + -8 + lVar7" (binary_expression "lVar3 + -8" identifier + number_literal) + identifier) ))))) ;) (expression_statement "lVar8 = lVar9;" (assignment_expression "lVar8 = lVar9" identifier = identifier) ;) (while_statement "while ((lVar4 == 0 && (lVar8 = lVar8 + -1, lVar8 != 0))) {\n    lVar4 = *(long *)(lVar3 + -8 + lVar8 * 8);\n  }" while (parenthesized_expression "((lVar4 == 0 && (lVar8 = lVar8 + -1, lVar8 != 0)))" ( (parenthesized_expression "(lVar4 == 0 && (lVar8 = lVar8 + -1, lVar8 != 0))" ( (binary_expression "lVar4 == 0 && (lVar8 = lVar8 + -1, lVar8 != 0)" (binary_expression "lVar4 == 0" identifier == number_literal) && (parenthesized_expression "(lVar8 = lVar8 + -1, lVar8 != 0)" ( (comma_expression "lVar8 = lVar8 + -1, lVar8 != 0" (assignment_expression "lVar8 = lVar8 + -1" identifier = (binary_expression "lVar8 + -1" identifier + number_literal)) , (binary_expression "lVar8 != 0" identifier != number_literal)) ))) )) )) (compound_statement "{\n    lVar4 = *(long *)(lVar3 + -8 + lVar8 * 8);\n  }" { (expression_statement "lVar4 = *(long *)(lVar3 + -8 + lVar8 * 8);" (assignment_expression "lVar4 = *(long *)(lVar3 + -8 + lVar8 * 8)" identifier = (pointer_expression "*(long *)(lVar3 + -8 + lVar8 * 8)" * (cast_expression "(long *)(lVar3 + -8 + lVar8 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + -8 + lVar8 * 8)" ( (binary_expression "lVar3 + -8 + lVar8 * 8" (binary_expression "lVar3 + -8" identifier + number_literal) + (binary_expression "lVar8 * 8" identifier * number_literal)) ))))) ;) })) (if_statement "if (param_4 < lVar8) goto LAB_001330fa;" if (parenthesized_expression "(param_4 < lVar8)" ( (binary_expression "param_4 < lVar8" identifier < identifier) )) (goto_statement "goto LAB_001330fa;" goto statement_identifier ;)) (if_statement "if (param_4 == 0) {\n    (*param_5)(param_6,param_1,lVar9,param_7,lVar10,uVar11);\n    return 0;\n  }" if (parenthesized_expression "(param_4 == 0)" ( (binary_expression "param_4 == 0" identifier == number_literal) )) (compound_statement "{\n    (*param_5)(param_6,param_1,lVar9,param_7,lVar10,uVar11);\n    return 0;\n  }" { (expression_statement "(*param_5)(param_6,param_1,lVar9,param_7,lVar10,uVar11);" (call_expression "(*param_5)(param_6,param_1,lVar9,param_7,lVar10,uVar11)" (parenthesized_expression "(*param_5)" ( (pointer_expression "*param_5" * identifier) )) (argument_list "(param_6,param_1,lVar9,param_7,lVar10,uVar11)" ( identifier , identifier , identifier , identifier , identifier , identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "plVar6 = param_7;" (assignment_expression "plVar6 = param_7" identifier = identifier) ;) (if_statement "if (lVar8 < 1) {\n    __gmpn_copyi(lVar3,param_1,lVar9);\n  }\n  else {\n    lVar4 = __gmpn_add_n(lVar3,param_1,lVar3,lVar8);\n    if (lVar4 != 0) {\n      if (lVar9 <= lVar8) {\nLAB_0013341a:\n        lVar9 = lVar9 + 1;\n        *(undefined8 *)(lVar3 + lVar7) = 1;\n        goto LAB_001333ef;\n      }\n      lVar4 = lVar8 * 8;\n      lVar8 = lVar8 + 1;\n      lVar5 = *(long *)(param_1 + lVar4) + 1;\n      *(long *)(lVar3 + lVar4) = lVar5;\n      while (lVar5 == 0) {\n        if (lVar9 == lVar8) goto LAB_0013341a;\n        lVar4 = lVar8 * 8;\n        lVar8 = lVar8 + 1;\n        lVar5 = *(long *)(param_1 + lVar4) + 1;\n        *(long *)(lVar3 + -8 + lVar8 * 8) = lVar5;\n      }\n    }\n    if ((param_1 != lVar3) && (lVar8 < lVar9)) {\n      do {\n        *(undefined8 *)(lVar3 + lVar8 * 8) = *(undefined8 *)(param_1 + lVar8 * 8);\n        lVar8 = lVar8 + 1;\n      } while (lVar9 != lVar8);\n    }\n  }" if (parenthesized_expression "(lVar8 < 1)" ( (binary_expression "lVar8 < 1" identifier < number_literal) )) (compound_statement "{\n    __gmpn_copyi(lVar3,param_1,lVar9);\n  }" { (expression_statement "__gmpn_copyi(lVar3,param_1,lVar9);" (call_expression "__gmpn_copyi(lVar3,param_1,lVar9)" identifier (argument_list "(lVar3,param_1,lVar9)" ( identifier , identifier , identifier ))) ;) }) (else_clause "else {\n    lVar4 = __gmpn_add_n(lVar3,param_1,lVar3,lVar8);\n    if (lVar4 != 0) {\n      if (lVar9 <= lVar8) {\nLAB_0013341a:\n        lVar9 = lVar9 + 1;\n        *(undefined8 *)(lVar3 + lVar7) = 1;\n        goto LAB_001333ef;\n      }\n      lVar4 = lVar8 * 8;\n      lVar8 = lVar8 + 1;\n      lVar5 = *(long *)(param_1 + lVar4) + 1;\n      *(long *)(lVar3 + lVar4) = lVar5;\n      while (lVar5 == 0) {\n        if (lVar9 == lVar8) goto LAB_0013341a;\n        lVar4 = lVar8 * 8;\n        lVar8 = lVar8 + 1;\n        lVar5 = *(long *)(param_1 + lVar4) + 1;\n        *(long *)(lVar3 + -8 + lVar8 * 8) = lVar5;\n      }\n    }\n    if ((param_1 != lVar3) && (lVar8 < lVar9)) {\n      do {\n        *(undefined8 *)(lVar3 + lVar8 * 8) = *(undefined8 *)(param_1 + lVar8 * 8);\n        lVar8 = lVar8 + 1;\n      } while (lVar9 != lVar8);\n    }\n  }" else (compound_statement "{\n    lVar4 = __gmpn_add_n(lVar3,param_1,lVar3,lVar8);\n    if (lVar4 != 0) {\n      if (lVar9 <= lVar8) {\nLAB_0013341a:\n        lVar9 = lVar9 + 1;\n        *(undefined8 *)(lVar3 + lVar7) = 1;\n        goto LAB_001333ef;\n      }\n      lVar4 = lVar8 * 8;\n      lVar8 = lVar8 + 1;\n      lVar5 = *(long *)(param_1 + lVar4) + 1;\n      *(long *)(lVar3 + lVar4) = lVar5;\n      while (lVar5 == 0) {\n        if (lVar9 == lVar8) goto LAB_0013341a;\n        lVar4 = lVar8 * 8;\n        lVar8 = lVar8 + 1;\n        lVar5 = *(long *)(param_1 + lVar4) + 1;\n        *(long *)(lVar3 + -8 + lVar8 * 8) = lVar5;\n      }\n    }\n    if ((param_1 != lVar3) && (lVar8 < lVar9)) {\n      do {\n        *(undefined8 *)(lVar3 + lVar8 * 8) = *(undefined8 *)(param_1 + lVar8 * 8);\n        lVar8 = lVar8 + 1;\n      } while (lVar9 != lVar8);\n    }\n  }" { (expression_statement "lVar4 = __gmpn_add_n(lVar3,param_1,lVar3,lVar8);" (assignment_expression "lVar4 = __gmpn_add_n(lVar3,param_1,lVar3,lVar8)" identifier = (call_expression "__gmpn_add_n(lVar3,param_1,lVar3,lVar8)" identifier (argument_list "(lVar3,param_1,lVar3,lVar8)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (lVar4 != 0) {\n      if (lVar9 <= lVar8) {\nLAB_0013341a:\n        lVar9 = lVar9 + 1;\n        *(undefined8 *)(lVar3 + lVar7) = 1;\n        goto LAB_001333ef;\n      }\n      lVar4 = lVar8 * 8;\n      lVar8 = lVar8 + 1;\n      lVar5 = *(long *)(param_1 + lVar4) + 1;\n      *(long *)(lVar3 + lVar4) = lVar5;\n      while (lVar5 == 0) {\n        if (lVar9 == lVar8) goto LAB_0013341a;\n        lVar4 = lVar8 * 8;\n        lVar8 = lVar8 + 1;\n        lVar5 = *(long *)(param_1 + lVar4) + 1;\n        *(long *)(lVar3 + -8 + lVar8 * 8) = lVar5;\n      }\n    }" if (parenthesized_expression "(lVar4 != 0)" ( (binary_expression "lVar4 != 0" identifier != number_literal) )) (compound_statement "{\n      if (lVar9 <= lVar8) {\nLAB_0013341a:\n        lVar9 = lVar9 + 1;\n        *(undefined8 *)(lVar3 + lVar7) = 1;\n        goto LAB_001333ef;\n      }\n      lVar4 = lVar8 * 8;\n      lVar8 = lVar8 + 1;\n      lVar5 = *(long *)(param_1 + lVar4) + 1;\n      *(long *)(lVar3 + lVar4) = lVar5;\n      while (lVar5 == 0) {\n        if (lVar9 == lVar8) goto LAB_0013341a;\n        lVar4 = lVar8 * 8;\n        lVar8 = lVar8 + 1;\n        lVar5 = *(long *)(param_1 + lVar4) + 1;\n        *(long *)(lVar3 + -8 + lVar8 * 8) = lVar5;\n      }\n    }" { (if_statement "if (lVar9 <= lVar8) {\nLAB_0013341a:\n        lVar9 = lVar9 + 1;\n        *(undefined8 *)(lVar3 + lVar7) = 1;\n        goto LAB_001333ef;\n      }" if (parenthesized_expression "(lVar9 <= lVar8)" ( (binary_expression "lVar9 <= lVar8" identifier <= identifier) )) (compound_statement "{\nLAB_0013341a:\n        lVar9 = lVar9 + 1;\n        *(undefined8 *)(lVar3 + lVar7) = 1;\n        goto LAB_001333ef;\n      }" { (labeled_statement "LAB_0013341a:\n        lVar9 = lVar9 + 1;" statement_identifier : (expression_statement "lVar9 = lVar9 + 1;" (assignment_expression "lVar9 = lVar9 + 1" identifier = (binary_expression "lVar9 + 1" identifier + number_literal)) ;)) (expression_statement "*(undefined8 *)(lVar3 + lVar7) = 1;" (assignment_expression "*(undefined8 *)(lVar3 + lVar7) = 1" (pointer_expression "*(undefined8 *)(lVar3 + lVar7)" * (cast_expression "(undefined8 *)(lVar3 + lVar7)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + lVar7)" ( (binary_expression "lVar3 + lVar7" identifier + identifier) )))) = number_literal) ;) (goto_statement "goto LAB_001333ef;" goto statement_identifier ;) })) (expression_statement "lVar4 = lVar8 * 8;" (assignment_expression "lVar4 = lVar8 * 8" identifier = (binary_expression "lVar8 * 8" identifier * number_literal)) ;) (expression_statement "lVar8 = lVar8 + 1;" (assignment_expression "lVar8 = lVar8 + 1" identifier = (binary_expression "lVar8 + 1" identifier + number_literal)) ;) (expression_statement "lVar5 = *(long *)(param_1 + lVar4) + 1;" (assignment_expression "lVar5 = *(long *)(param_1 + lVar4) + 1" identifier = (binary_expression "*(long *)(param_1 + lVar4) + 1" (pointer_expression "*(long *)(param_1 + lVar4)" * (cast_expression "(long *)(param_1 + lVar4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + lVar4)" ( (binary_expression "param_1 + lVar4" identifier + identifier) )))) + number_literal)) ;) (expression_statement "*(long *)(lVar3 + lVar4) = lVar5;" (assignment_expression "*(long *)(lVar3 + lVar4) = lVar5" (pointer_expression "*(long *)(lVar3 + lVar4)" * (cast_expression "(long *)(lVar3 + lVar4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + lVar4)" ( (binary_expression "lVar3 + lVar4" identifier + identifier) )))) = identifier) ;) (while_statement "while (lVar5 == 0) {\n        if (lVar9 == lVar8) goto LAB_0013341a;\n        lVar4 = lVar8 * 8;\n        lVar8 = lVar8 + 1;\n        lVar5 = *(long *)(param_1 + lVar4) + 1;\n        *(long *)(lVar3 + -8 + lVar8 * 8) = lVar5;\n      }" while (parenthesized_expression "(lVar5 == 0)" ( (binary_expression "lVar5 == 0" identifier == number_literal) )) (compound_statement "{\n        if (lVar9 == lVar8) goto LAB_0013341a;\n        lVar4 = lVar8 * 8;\n        lVar8 = lVar8 + 1;\n        lVar5 = *(long *)(param_1 + lVar4) + 1;\n        *(long *)(lVar3 + -8 + lVar8 * 8) = lVar5;\n      }" { (if_statement "if (lVar9 == lVar8) goto LAB_0013341a;" if (parenthesized_expression "(lVar9 == lVar8)" ( (binary_expression "lVar9 == lVar8" identifier == identifier) )) (goto_statement "goto LAB_0013341a;" goto statement_identifier ;)) (expression_statement "lVar4 = lVar8 * 8;" (assignment_expression "lVar4 = lVar8 * 8" identifier = (binary_expression "lVar8 * 8" identifier * number_literal)) ;) (expression_statement "lVar8 = lVar8 + 1;" (assignment_expression "lVar8 = lVar8 + 1" identifier = (binary_expression "lVar8 + 1" identifier + number_literal)) ;) (expression_statement "lVar5 = *(long *)(param_1 + lVar4) + 1;" (assignment_expression "lVar5 = *(long *)(param_1 + lVar4) + 1" identifier = (binary_expression "*(long *)(param_1 + lVar4) + 1" (pointer_expression "*(long *)(param_1 + lVar4)" * (cast_expression "(long *)(param_1 + lVar4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + lVar4)" ( (binary_expression "param_1 + lVar4" identifier + identifier) )))) + number_literal)) ;) (expression_statement "*(long *)(lVar3 + -8 + lVar8 * 8) = lVar5;" (assignment_expression "*(long *)(lVar3 + -8 + lVar8 * 8) = lVar5" (pointer_expression "*(long *)(lVar3 + -8 + lVar8 * 8)" * (cast_expression "(long *)(lVar3 + -8 + lVar8 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + -8 + lVar8 * 8)" ( (binary_expression "lVar3 + -8 + lVar8 * 8" (binary_expression "lVar3 + -8" identifier + number_literal) + (binary_expression "lVar8 * 8" identifier * number_literal)) )))) = identifier) ;) })) })) (if_statement "if ((param_1 != lVar3) && (lVar8 < lVar9)) {\n      do {\n        *(undefined8 *)(lVar3 + lVar8 * 8) = *(undefined8 *)(param_1 + lVar8 * 8);\n        lVar8 = lVar8 + 1;\n      } while (lVar9 != lVar8);\n    }" if (parenthesized_expression "((param_1 != lVar3) && (lVar8 < lVar9))" ( (binary_expression "(param_1 != lVar3) && (lVar8 < lVar9)" (parenthesized_expression "(param_1 != lVar3)" ( (binary_expression "param_1 != lVar3" identifier != identifier) )) && (parenthesized_expression "(lVar8 < lVar9)" ( (binary_expression "lVar8 < lVar9" identifier < identifier) ))) )) (compound_statement "{\n      do {\n        *(undefined8 *)(lVar3 + lVar8 * 8) = *(undefined8 *)(param_1 + lVar8 * 8);\n        lVar8 = lVar8 + 1;\n      } while (lVar9 != lVar8);\n    }" { (do_statement "do {\n        *(undefined8 *)(lVar3 + lVar8 * 8) = *(undefined8 *)(param_1 + lVar8 * 8);\n        lVar8 = lVar8 + 1;\n      } while (lVar9 != lVar8);" do (compound_statement "{\n        *(undefined8 *)(lVar3 + lVar8 * 8) = *(undefined8 *)(param_1 + lVar8 * 8);\n        lVar8 = lVar8 + 1;\n      }" { (expression_statement "*(undefined8 *)(lVar3 + lVar8 * 8) = *(undefined8 *)(param_1 + lVar8 * 8);" (assignment_expression "*(undefined8 *)(lVar3 + lVar8 * 8) = *(undefined8 *)(param_1 + lVar8 * 8)" (pointer_expression "*(undefined8 *)(lVar3 + lVar8 * 8)" * (cast_expression "(undefined8 *)(lVar3 + lVar8 * 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + lVar8 * 8)" ( (binary_expression "lVar3 + lVar8 * 8" identifier + (binary_expression "lVar8 * 8" identifier * number_literal)) )))) = (pointer_expression "*(undefined8 *)(param_1 + lVar8 * 8)" * (cast_expression "(undefined8 *)(param_1 + lVar8 * 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + lVar8 * 8)" ( (binary_expression "param_1 + lVar8 * 8" identifier + (binary_expression "lVar8 * 8" identifier * number_literal)) ))))) ;) (expression_statement "lVar8 = lVar8 + 1;" (assignment_expression "lVar8 = lVar8 + 1" identifier = (binary_expression "lVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar9 != lVar8)" ( (binary_expression "lVar9 != lVar8" identifier != identifier) )) ;) })) }))) (labeled_statement "LAB_001333ef:\n  do {\n    lVar3 = *plVar6;\n    *plVar6 = *plVar6 + -1;\n    plVar6 = plVar6 + 1;\n  } while (lVar3 == 0);" statement_identifier : (do_statement "do {\n    lVar3 = *plVar6;\n    *plVar6 = *plVar6 + -1;\n    plVar6 = plVar6 + 1;\n  } while (lVar3 == 0);" do (compound_statement "{\n    lVar3 = *plVar6;\n    *plVar6 = *plVar6 + -1;\n    plVar6 = plVar6 + 1;\n  }" { (expression_statement "lVar3 = *plVar6;" (assignment_expression "lVar3 = *plVar6" identifier = (pointer_expression "*plVar6" * identifier)) ;) (expression_statement "*plVar6 = *plVar6 + -1;" (assignment_expression "*plVar6 = *plVar6 + -1" (pointer_expression "*plVar6" * identifier) = (binary_expression "*plVar6 + -1" (pointer_expression "*plVar6" * identifier) + number_literal)) ;) (expression_statement "plVar6 = plVar6 + 1;" (assignment_expression "plVar6 = plVar6 + 1" identifier = (binary_expression "plVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) )) ;)) (labeled_statement "LAB_001330fa:\n  (*param_5)(param_6,0,0,param_7,lVar10,uVar11);" statement_identifier : (expression_statement "(*param_5)(param_6,0,0,param_7,lVar10,uVar11);" (call_expression "(*param_5)(param_6,0,0,param_7,lVar10,uVar11)" (parenthesized_expression "(*param_5)" ( (pointer_expression "*param_5" * identifier) )) (argument_list "(param_6,0,0,param_7,lVar10,uVar11)" ( identifier , number_literal , number_literal , identifier , identifier , identifier ))) ;)) (return_statement "return lVar9;" return identifier ;) })))
(translation_unit "mp_size_t __gmpn_gcd_subdiv_step\n                    (mp_ptr ap,mp_ptr bp,mp_size_t n,mp_size_t s,gcd_subdiv_step_hook *hook,\n                    void *ctx,mp_ptr tp)\n\n{\n  ulong uVar1;\n  ulong uVar2;\n  long lVar3;\n  mp_limb_t mVar4;\n  mp_ptr pmVar5;\n  mp_size_t mVar6;\n  long lVar7;\n  long lVar8;\n  mp_size_t mVar9;\n  mp_ptr pmVar10;\n  uint uVar11;\n  \n  mVar6 = n;\n  lVar3 = n;\n  pmVar5 = bp;\n  if (n < 1) {\nLAB_00133136:\n    do {\n      lVar3 = lVar3 + -1;\n      if (lVar3 < 0) {\n        if (s != 0) {\n          return 0;\n        }\n        (*hook)(ctx,ap,n,(mp_srcptr)0x0,0,-1);\n        return 0;\n      }\n    } while (ap[lVar3] == bp[lVar3]);\n    lVar7 = mVar6;\n    mVar9 = n;\n    if (bp[lVar3] < ap[lVar3]) {\n      uVar11 = 1;\n      pmVar5 = ap;\n      ap = bp;\n    }\n    else {\n      uVar11 = 0;\n    }\n  }\n  else {\n    if (ap[n + -1] != 0) {\n      mVar9 = n;\n      if (bp[n + -1] == 0) goto LAB_00132fd1;\n      goto LAB_00133136;\n    }\n    do {\n      mVar9 = lVar3 + -1;\n      if (mVar9 == 0) {\n        if (bp[n + -1] == 0) goto LAB_00132fd1;\n        uVar11 = 0;\n        lVar7 = n;\n        goto LAB_00133008;\n      }\n      lVar7 = lVar3 + -2;\n      lVar3 = mVar9;\n    } while (ap[lVar7] == 0);\n    mVar4 = bp[n + -1];\n    while (n = mVar6, mVar4 == 0) {\nLAB_00132fd1:\n      mVar6 = n + -1;\n      if (mVar6 == 0) break;\n      mVar4 = bp[n + -2];\n    }\n    n = mVar9;\n    lVar3 = n;\n    if (mVar6 == n) goto LAB_00133136;\n    uVar11 = 0;\n    lVar7 = mVar6;\n    mVar9 = n;\n    if (mVar6 < n) {\n      uVar11 = 1;\n      lVar7 = n;\n      mVar9 = mVar6;\n      pmVar5 = ap;\n      ap = bp;\n    }\n  }\nLAB_00133008:\n  if (mVar9 <= s) {\n    if (s != 0) {\n      return 0;\n    }\n    (*hook)(ctx,pmVar5,lVar7,(mp_srcptr)0x0,0,uVar11 ^ 1);\n    return 0;\n  }\n  pmVar10 = pmVar5;\n  if (((mVar9 == 0) || (lVar3 = __gmpn_sub_n(pmVar5,pmVar5,ap,mVar9), lVar3 == 0)) ||\n     (lVar7 <= mVar9)) {\nLAB_0013301a:\n    if (0 < lVar7) {\n      mVar4 = pmVar5[lVar7 + -1];\n      goto joined_r0x00133029;\n    }\nLAB_0013321f:\n    lVar3 = lVar7;\n    if (lVar7 <= s) {\n      if ((lVar7 == 0) || (lVar3 = __gmpn_add_n(pmVar5,ap,pmVar5,lVar7), lVar3 == 0))\n      goto LAB_00133231;\nLAB_0013327a:\n      mVar4 = ap[lVar7] + 1;\n      pmVar5[lVar7] = mVar4;\n      while (lVar7 = lVar7 + 1, mVar4 == 0) {\n        if (mVar9 == lVar7) goto LAB_00133408;\n        mVar4 = ap[lVar7] + 1;\n        pmVar5[lVar7] = mVar4;\n      }\nLAB_00133231:\n      if (ap != pmVar5) {\n        if (lVar7 < mVar9) {\n          do {\n            pmVar5[lVar7] = ap[lVar7];\n            lVar7 = lVar7 + 1;\n          } while (mVar9 != lVar7);\n        }\n        return 0;\n      }\n      return 0;\n    }\nLAB_00133049:\n    lVar8 = mVar9;\n    lVar7 = lVar3;\n    if (mVar9 == lVar3) {\n      do {\n        lVar8 = lVar8 + -1;\n        if (lVar8 < 0) {\n          if (0 < s) {\n            (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);\n            return 0;\n          }\n          (*hook)(ctx,pmVar5,lVar3,(mp_srcptr)0x0,0,uVar11);\n          return 0;\n        }\n        uVar1 = ap[lVar8];\n        uVar2 = pmVar5[lVar8];\n      } while (uVar1 == uVar2);\n      if (uVar1 < uVar2 || uVar1 == uVar2) {\n        (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);\n      }\n      else {\n        (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);\n        uVar11 = uVar11 ^ 1;\n        pmVar10 = ap;\n        ap = pmVar5;\n      }\n    }\n    else {\n      (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);\n      if (lVar3 < mVar9) {\n        uVar11 = uVar11 ^ 1;\n        lVar7 = mVar9;\n        mVar9 = lVar3;\n        pmVar10 = ap;\n        ap = pmVar5;\n      }\n    }\n  }\n  else {\n    mVar4 = pmVar5[mVar9];\n    pmVar5[mVar9] = mVar4 - 1;\n    lVar3 = mVar9;\n    if (mVar4 == 0) {\n      do {\n        lVar3 = lVar3 + 1;\n        if (lVar7 == lVar3) goto LAB_00133465;\n        mVar4 = pmVar5[lVar3];\n        pmVar5[lVar3] = mVar4 - 1;\n      } while (mVar4 == 0);\n      goto LAB_0013301a;\n    }\nLAB_00133465:\n    if (0 < lVar7) {\n      lVar3 = lVar7;\n      if (pmVar5[lVar7 + -1] == 0) {\n        do {\n          lVar7 = lVar3 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          mVar4 = pmVar5[lVar3 + -2];\njoined_r0x00133029:\n          lVar3 = lVar7;\n        } while (mVar4 == 0);\n        if (s < lVar7) goto LAB_00133049;\n        lVar3 = __gmpn_add_n(pmVar5,ap,pmVar5,lVar7);\n        if (lVar3 == 0) goto LAB_00133231;\n        if (mVar9 <= lVar7) {\nLAB_00133408:\n          pmVar5[mVar9] = 1;\n          return 0;\n        }\n        goto LAB_0013327a;\n      }\n      goto LAB_00133049;\n    }\n    (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);\n  }\n  __gmpn_tdiv_qr(tp,pmVar10,0,pmVar10,lVar7,ap,mVar9);\n  lVar3 = (lVar7 - mVar9) + 1;\n  if (mVar9 < 1) goto LAB_001330fa;\n  mVar4 = pmVar10[mVar9 + -1];\n  lVar7 = mVar9;\n  while ((lVar8 = lVar7, mVar4 == 0 && (lVar8 = lVar7 + -1, lVar8 != 0))) {\n    mVar4 = pmVar10[lVar7 + -2];\n    lVar7 = lVar8;\n  }\n  if (s < lVar8) goto LAB_001330fa;\n  if (s == 0) {\n    (*hook)(ctx,ap,mVar9,tp,lVar3,uVar11);\n    return 0;\n  }\n  pmVar5 = tp;\n  if (lVar8 < 1) {\n    __gmpn_copyi(pmVar10,ap,mVar9);\n  }\n  else {\n    lVar7 = __gmpn_add_n(pmVar10,ap,pmVar10,lVar8);\n    if (lVar7 != 0) {\n      if (mVar9 <= lVar8) {\nLAB_0013341a:\n        pmVar10[mVar9] = 1;\n        mVar9 = mVar9 + 1;\n        goto LAB_001333ef;\n      }\n      mVar4 = ap[lVar8] + 1;\n      pmVar10[lVar8] = mVar4;\n      while (lVar8 = lVar8 + 1, mVar4 == 0) {\n        if (mVar9 == lVar8) goto LAB_0013341a;\n        mVar4 = ap[lVar8] + 1;\n        pmVar10[lVar8] = mVar4;\n      }\n    }\n    if ((ap != pmVar10) && (lVar8 < mVar9)) {\n      do {\n        pmVar10[lVar8] = ap[lVar8];\n        lVar8 = lVar8 + 1;\n      } while (mVar9 != lVar8);\n    }\n  }\nLAB_001333ef:\n  do {\n    mVar4 = *pmVar5;\n    *pmVar5 = *pmVar5 - 1;\n    pmVar5 = pmVar5 + 1;\n  } while (mVar4 == 0);\nLAB_001330fa:\n  (*hook)(ctx,(mp_srcptr)0x0,0,tp,lVar3,uVar11);\n  return mVar9;\n}\n\n" (function_definition "mp_size_t __gmpn_gcd_subdiv_step\n                    (mp_ptr ap,mp_ptr bp,mp_size_t n,mp_size_t s,gcd_subdiv_step_hook *hook,\n                    void *ctx,mp_ptr tp)\n\n{\n  ulong uVar1;\n  ulong uVar2;\n  long lVar3;\n  mp_limb_t mVar4;\n  mp_ptr pmVar5;\n  mp_size_t mVar6;\n  long lVar7;\n  long lVar8;\n  mp_size_t mVar9;\n  mp_ptr pmVar10;\n  uint uVar11;\n  \n  mVar6 = n;\n  lVar3 = n;\n  pmVar5 = bp;\n  if (n < 1) {\nLAB_00133136:\n    do {\n      lVar3 = lVar3 + -1;\n      if (lVar3 < 0) {\n        if (s != 0) {\n          return 0;\n        }\n        (*hook)(ctx,ap,n,(mp_srcptr)0x0,0,-1);\n        return 0;\n      }\n    } while (ap[lVar3] == bp[lVar3]);\n    lVar7 = mVar6;\n    mVar9 = n;\n    if (bp[lVar3] < ap[lVar3]) {\n      uVar11 = 1;\n      pmVar5 = ap;\n      ap = bp;\n    }\n    else {\n      uVar11 = 0;\n    }\n  }\n  else {\n    if (ap[n + -1] != 0) {\n      mVar9 = n;\n      if (bp[n + -1] == 0) goto LAB_00132fd1;\n      goto LAB_00133136;\n    }\n    do {\n      mVar9 = lVar3 + -1;\n      if (mVar9 == 0) {\n        if (bp[n + -1] == 0) goto LAB_00132fd1;\n        uVar11 = 0;\n        lVar7 = n;\n        goto LAB_00133008;\n      }\n      lVar7 = lVar3 + -2;\n      lVar3 = mVar9;\n    } while (ap[lVar7] == 0);\n    mVar4 = bp[n + -1];\n    while (n = mVar6, mVar4 == 0) {\nLAB_00132fd1:\n      mVar6 = n + -1;\n      if (mVar6 == 0) break;\n      mVar4 = bp[n + -2];\n    }\n    n = mVar9;\n    lVar3 = n;\n    if (mVar6 == n) goto LAB_00133136;\n    uVar11 = 0;\n    lVar7 = mVar6;\n    mVar9 = n;\n    if (mVar6 < n) {\n      uVar11 = 1;\n      lVar7 = n;\n      mVar9 = mVar6;\n      pmVar5 = ap;\n      ap = bp;\n    }\n  }\nLAB_00133008:\n  if (mVar9 <= s) {\n    if (s != 0) {\n      return 0;\n    }\n    (*hook)(ctx,pmVar5,lVar7,(mp_srcptr)0x0,0,uVar11 ^ 1);\n    return 0;\n  }\n  pmVar10 = pmVar5;\n  if (((mVar9 == 0) || (lVar3 = __gmpn_sub_n(pmVar5,pmVar5,ap,mVar9), lVar3 == 0)) ||\n     (lVar7 <= mVar9)) {\nLAB_0013301a:\n    if (0 < lVar7) {\n      mVar4 = pmVar5[lVar7 + -1];\n      goto joined_r0x00133029;\n    }\nLAB_0013321f:\n    lVar3 = lVar7;\n    if (lVar7 <= s) {\n      if ((lVar7 == 0) || (lVar3 = __gmpn_add_n(pmVar5,ap,pmVar5,lVar7), lVar3 == 0))\n      goto LAB_00133231;\nLAB_0013327a:\n      mVar4 = ap[lVar7] + 1;\n      pmVar5[lVar7] = mVar4;\n      while (lVar7 = lVar7 + 1, mVar4 == 0) {\n        if (mVar9 == lVar7) goto LAB_00133408;\n        mVar4 = ap[lVar7] + 1;\n        pmVar5[lVar7] = mVar4;\n      }\nLAB_00133231:\n      if (ap != pmVar5) {\n        if (lVar7 < mVar9) {\n          do {\n            pmVar5[lVar7] = ap[lVar7];\n            lVar7 = lVar7 + 1;\n          } while (mVar9 != lVar7);\n        }\n        return 0;\n      }\n      return 0;\n    }\nLAB_00133049:\n    lVar8 = mVar9;\n    lVar7 = lVar3;\n    if (mVar9 == lVar3) {\n      do {\n        lVar8 = lVar8 + -1;\n        if (lVar8 < 0) {\n          if (0 < s) {\n            (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);\n            return 0;\n          }\n          (*hook)(ctx,pmVar5,lVar3,(mp_srcptr)0x0,0,uVar11);\n          return 0;\n        }\n        uVar1 = ap[lVar8];\n        uVar2 = pmVar5[lVar8];\n      } while (uVar1 == uVar2);\n      if (uVar1 < uVar2 || uVar1 == uVar2) {\n        (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);\n      }\n      else {\n        (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);\n        uVar11 = uVar11 ^ 1;\n        pmVar10 = ap;\n        ap = pmVar5;\n      }\n    }\n    else {\n      (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);\n      if (lVar3 < mVar9) {\n        uVar11 = uVar11 ^ 1;\n        lVar7 = mVar9;\n        mVar9 = lVar3;\n        pmVar10 = ap;\n        ap = pmVar5;\n      }\n    }\n  }\n  else {\n    mVar4 = pmVar5[mVar9];\n    pmVar5[mVar9] = mVar4 - 1;\n    lVar3 = mVar9;\n    if (mVar4 == 0) {\n      do {\n        lVar3 = lVar3 + 1;\n        if (lVar7 == lVar3) goto LAB_00133465;\n        mVar4 = pmVar5[lVar3];\n        pmVar5[lVar3] = mVar4 - 1;\n      } while (mVar4 == 0);\n      goto LAB_0013301a;\n    }\nLAB_00133465:\n    if (0 < lVar7) {\n      lVar3 = lVar7;\n      if (pmVar5[lVar7 + -1] == 0) {\n        do {\n          lVar7 = lVar3 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          mVar4 = pmVar5[lVar3 + -2];\njoined_r0x00133029:\n          lVar3 = lVar7;\n        } while (mVar4 == 0);\n        if (s < lVar7) goto LAB_00133049;\n        lVar3 = __gmpn_add_n(pmVar5,ap,pmVar5,lVar7);\n        if (lVar3 == 0) goto LAB_00133231;\n        if (mVar9 <= lVar7) {\nLAB_00133408:\n          pmVar5[mVar9] = 1;\n          return 0;\n        }\n        goto LAB_0013327a;\n      }\n      goto LAB_00133049;\n    }\n    (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);\n  }\n  __gmpn_tdiv_qr(tp,pmVar10,0,pmVar10,lVar7,ap,mVar9);\n  lVar3 = (lVar7 - mVar9) + 1;\n  if (mVar9 < 1) goto LAB_001330fa;\n  mVar4 = pmVar10[mVar9 + -1];\n  lVar7 = mVar9;\n  while ((lVar8 = lVar7, mVar4 == 0 && (lVar8 = lVar7 + -1, lVar8 != 0))) {\n    mVar4 = pmVar10[lVar7 + -2];\n    lVar7 = lVar8;\n  }\n  if (s < lVar8) goto LAB_001330fa;\n  if (s == 0) {\n    (*hook)(ctx,ap,mVar9,tp,lVar3,uVar11);\n    return 0;\n  }\n  pmVar5 = tp;\n  if (lVar8 < 1) {\n    __gmpn_copyi(pmVar10,ap,mVar9);\n  }\n  else {\n    lVar7 = __gmpn_add_n(pmVar10,ap,pmVar10,lVar8);\n    if (lVar7 != 0) {\n      if (mVar9 <= lVar8) {\nLAB_0013341a:\n        pmVar10[mVar9] = 1;\n        mVar9 = mVar9 + 1;\n        goto LAB_001333ef;\n      }\n      mVar4 = ap[lVar8] + 1;\n      pmVar10[lVar8] = mVar4;\n      while (lVar8 = lVar8 + 1, mVar4 == 0) {\n        if (mVar9 == lVar8) goto LAB_0013341a;\n        mVar4 = ap[lVar8] + 1;\n        pmVar10[lVar8] = mVar4;\n      }\n    }\n    if ((ap != pmVar10) && (lVar8 < mVar9)) {\n      do {\n        pmVar10[lVar8] = ap[lVar8];\n        lVar8 = lVar8 + 1;\n      } while (mVar9 != lVar8);\n    }\n  }\nLAB_001333ef:\n  do {\n    mVar4 = *pmVar5;\n    *pmVar5 = *pmVar5 - 1;\n    pmVar5 = pmVar5 + 1;\n  } while (mVar4 == 0);\nLAB_001330fa:\n  (*hook)(ctx,(mp_srcptr)0x0,0,tp,lVar3,uVar11);\n  return mVar9;\n}" type_identifier (function_declarator "__gmpn_gcd_subdiv_step\n                    (mp_ptr ap,mp_ptr bp,mp_size_t n,mp_size_t s,gcd_subdiv_step_hook *hook,\n                    void *ctx,mp_ptr tp)" identifier (parameter_list "(mp_ptr ap,mp_ptr bp,mp_size_t n,mp_size_t s,gcd_subdiv_step_hook *hook,\n                    void *ctx,mp_ptr tp)" ( (parameter_declaration "mp_ptr ap" type_identifier identifier) , (parameter_declaration "mp_ptr bp" type_identifier identifier) , (parameter_declaration "mp_size_t n" type_identifier identifier) , (parameter_declaration "mp_size_t s" type_identifier identifier) , (parameter_declaration "gcd_subdiv_step_hook *hook" type_identifier (pointer_declarator "*hook" * identifier)) , (parameter_declaration "void *ctx" primitive_type (pointer_declarator "*ctx" * identifier)) , (parameter_declaration "mp_ptr tp" type_identifier identifier) ))) (compound_statement "{\n  ulong uVar1;\n  ulong uVar2;\n  long lVar3;\n  mp_limb_t mVar4;\n  mp_ptr pmVar5;\n  mp_size_t mVar6;\n  long lVar7;\n  long lVar8;\n  mp_size_t mVar9;\n  mp_ptr pmVar10;\n  uint uVar11;\n  \n  mVar6 = n;\n  lVar3 = n;\n  pmVar5 = bp;\n  if (n < 1) {\nLAB_00133136:\n    do {\n      lVar3 = lVar3 + -1;\n      if (lVar3 < 0) {\n        if (s != 0) {\n          return 0;\n        }\n        (*hook)(ctx,ap,n,(mp_srcptr)0x0,0,-1);\n        return 0;\n      }\n    } while (ap[lVar3] == bp[lVar3]);\n    lVar7 = mVar6;\n    mVar9 = n;\n    if (bp[lVar3] < ap[lVar3]) {\n      uVar11 = 1;\n      pmVar5 = ap;\n      ap = bp;\n    }\n    else {\n      uVar11 = 0;\n    }\n  }\n  else {\n    if (ap[n + -1] != 0) {\n      mVar9 = n;\n      if (bp[n + -1] == 0) goto LAB_00132fd1;\n      goto LAB_00133136;\n    }\n    do {\n      mVar9 = lVar3 + -1;\n      if (mVar9 == 0) {\n        if (bp[n + -1] == 0) goto LAB_00132fd1;\n        uVar11 = 0;\n        lVar7 = n;\n        goto LAB_00133008;\n      }\n      lVar7 = lVar3 + -2;\n      lVar3 = mVar9;\n    } while (ap[lVar7] == 0);\n    mVar4 = bp[n + -1];\n    while (n = mVar6, mVar4 == 0) {\nLAB_00132fd1:\n      mVar6 = n + -1;\n      if (mVar6 == 0) break;\n      mVar4 = bp[n + -2];\n    }\n    n = mVar9;\n    lVar3 = n;\n    if (mVar6 == n) goto LAB_00133136;\n    uVar11 = 0;\n    lVar7 = mVar6;\n    mVar9 = n;\n    if (mVar6 < n) {\n      uVar11 = 1;\n      lVar7 = n;\n      mVar9 = mVar6;\n      pmVar5 = ap;\n      ap = bp;\n    }\n  }\nLAB_00133008:\n  if (mVar9 <= s) {\n    if (s != 0) {\n      return 0;\n    }\n    (*hook)(ctx,pmVar5,lVar7,(mp_srcptr)0x0,0,uVar11 ^ 1);\n    return 0;\n  }\n  pmVar10 = pmVar5;\n  if (((mVar9 == 0) || (lVar3 = __gmpn_sub_n(pmVar5,pmVar5,ap,mVar9), lVar3 == 0)) ||\n     (lVar7 <= mVar9)) {\nLAB_0013301a:\n    if (0 < lVar7) {\n      mVar4 = pmVar5[lVar7 + -1];\n      goto joined_r0x00133029;\n    }\nLAB_0013321f:\n    lVar3 = lVar7;\n    if (lVar7 <= s) {\n      if ((lVar7 == 0) || (lVar3 = __gmpn_add_n(pmVar5,ap,pmVar5,lVar7), lVar3 == 0))\n      goto LAB_00133231;\nLAB_0013327a:\n      mVar4 = ap[lVar7] + 1;\n      pmVar5[lVar7] = mVar4;\n      while (lVar7 = lVar7 + 1, mVar4 == 0) {\n        if (mVar9 == lVar7) goto LAB_00133408;\n        mVar4 = ap[lVar7] + 1;\n        pmVar5[lVar7] = mVar4;\n      }\nLAB_00133231:\n      if (ap != pmVar5) {\n        if (lVar7 < mVar9) {\n          do {\n            pmVar5[lVar7] = ap[lVar7];\n            lVar7 = lVar7 + 1;\n          } while (mVar9 != lVar7);\n        }\n        return 0;\n      }\n      return 0;\n    }\nLAB_00133049:\n    lVar8 = mVar9;\n    lVar7 = lVar3;\n    if (mVar9 == lVar3) {\n      do {\n        lVar8 = lVar8 + -1;\n        if (lVar8 < 0) {\n          if (0 < s) {\n            (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);\n            return 0;\n          }\n          (*hook)(ctx,pmVar5,lVar3,(mp_srcptr)0x0,0,uVar11);\n          return 0;\n        }\n        uVar1 = ap[lVar8];\n        uVar2 = pmVar5[lVar8];\n      } while (uVar1 == uVar2);\n      if (uVar1 < uVar2 || uVar1 == uVar2) {\n        (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);\n      }\n      else {\n        (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);\n        uVar11 = uVar11 ^ 1;\n        pmVar10 = ap;\n        ap = pmVar5;\n      }\n    }\n    else {\n      (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);\n      if (lVar3 < mVar9) {\n        uVar11 = uVar11 ^ 1;\n        lVar7 = mVar9;\n        mVar9 = lVar3;\n        pmVar10 = ap;\n        ap = pmVar5;\n      }\n    }\n  }\n  else {\n    mVar4 = pmVar5[mVar9];\n    pmVar5[mVar9] = mVar4 - 1;\n    lVar3 = mVar9;\n    if (mVar4 == 0) {\n      do {\n        lVar3 = lVar3 + 1;\n        if (lVar7 == lVar3) goto LAB_00133465;\n        mVar4 = pmVar5[lVar3];\n        pmVar5[lVar3] = mVar4 - 1;\n      } while (mVar4 == 0);\n      goto LAB_0013301a;\n    }\nLAB_00133465:\n    if (0 < lVar7) {\n      lVar3 = lVar7;\n      if (pmVar5[lVar7 + -1] == 0) {\n        do {\n          lVar7 = lVar3 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          mVar4 = pmVar5[lVar3 + -2];\njoined_r0x00133029:\n          lVar3 = lVar7;\n        } while (mVar4 == 0);\n        if (s < lVar7) goto LAB_00133049;\n        lVar3 = __gmpn_add_n(pmVar5,ap,pmVar5,lVar7);\n        if (lVar3 == 0) goto LAB_00133231;\n        if (mVar9 <= lVar7) {\nLAB_00133408:\n          pmVar5[mVar9] = 1;\n          return 0;\n        }\n        goto LAB_0013327a;\n      }\n      goto LAB_00133049;\n    }\n    (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);\n  }\n  __gmpn_tdiv_qr(tp,pmVar10,0,pmVar10,lVar7,ap,mVar9);\n  lVar3 = (lVar7 - mVar9) + 1;\n  if (mVar9 < 1) goto LAB_001330fa;\n  mVar4 = pmVar10[mVar9 + -1];\n  lVar7 = mVar9;\n  while ((lVar8 = lVar7, mVar4 == 0 && (lVar8 = lVar7 + -1, lVar8 != 0))) {\n    mVar4 = pmVar10[lVar7 + -2];\n    lVar7 = lVar8;\n  }\n  if (s < lVar8) goto LAB_001330fa;\n  if (s == 0) {\n    (*hook)(ctx,ap,mVar9,tp,lVar3,uVar11);\n    return 0;\n  }\n  pmVar5 = tp;\n  if (lVar8 < 1) {\n    __gmpn_copyi(pmVar10,ap,mVar9);\n  }\n  else {\n    lVar7 = __gmpn_add_n(pmVar10,ap,pmVar10,lVar8);\n    if (lVar7 != 0) {\n      if (mVar9 <= lVar8) {\nLAB_0013341a:\n        pmVar10[mVar9] = 1;\n        mVar9 = mVar9 + 1;\n        goto LAB_001333ef;\n      }\n      mVar4 = ap[lVar8] + 1;\n      pmVar10[lVar8] = mVar4;\n      while (lVar8 = lVar8 + 1, mVar4 == 0) {\n        if (mVar9 == lVar8) goto LAB_0013341a;\n        mVar4 = ap[lVar8] + 1;\n        pmVar10[lVar8] = mVar4;\n      }\n    }\n    if ((ap != pmVar10) && (lVar8 < mVar9)) {\n      do {\n        pmVar10[lVar8] = ap[lVar8];\n        lVar8 = lVar8 + 1;\n      } while (mVar9 != lVar8);\n    }\n  }\nLAB_001333ef:\n  do {\n    mVar4 = *pmVar5;\n    *pmVar5 = *pmVar5 - 1;\n    pmVar5 = pmVar5 + 1;\n  } while (mVar4 == 0);\nLAB_001330fa:\n  (*hook)(ctx,(mp_srcptr)0x0,0,tp,lVar3,uVar11);\n  return mVar9;\n}" { (declaration "ulong uVar1;" type_identifier identifier ;) (declaration "ulong uVar2;" type_identifier identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "mp_limb_t mVar4;" type_identifier identifier ;) (declaration "mp_ptr pmVar5;" type_identifier identifier ;) (declaration "mp_size_t mVar6;" type_identifier identifier ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "mp_size_t mVar9;" type_identifier identifier ;) (declaration "mp_ptr pmVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (expression_statement "mVar6 = n;" (assignment_expression "mVar6 = n" identifier = identifier) ;) (expression_statement "lVar3 = n;" (assignment_expression "lVar3 = n" identifier = identifier) ;) (expression_statement "pmVar5 = bp;" (assignment_expression "pmVar5 = bp" identifier = identifier) ;) (if_statement "if (n < 1) {\nLAB_00133136:\n    do {\n      lVar3 = lVar3 + -1;\n      if (lVar3 < 0) {\n        if (s != 0) {\n          return 0;\n        }\n        (*hook)(ctx,ap,n,(mp_srcptr)0x0,0,-1);\n        return 0;\n      }\n    } while (ap[lVar3] == bp[lVar3]);\n    lVar7 = mVar6;\n    mVar9 = n;\n    if (bp[lVar3] < ap[lVar3]) {\n      uVar11 = 1;\n      pmVar5 = ap;\n      ap = bp;\n    }\n    else {\n      uVar11 = 0;\n    }\n  }\n  else {\n    if (ap[n + -1] != 0) {\n      mVar9 = n;\n      if (bp[n + -1] == 0) goto LAB_00132fd1;\n      goto LAB_00133136;\n    }\n    do {\n      mVar9 = lVar3 + -1;\n      if (mVar9 == 0) {\n        if (bp[n + -1] == 0) goto LAB_00132fd1;\n        uVar11 = 0;\n        lVar7 = n;\n        goto LAB_00133008;\n      }\n      lVar7 = lVar3 + -2;\n      lVar3 = mVar9;\n    } while (ap[lVar7] == 0);\n    mVar4 = bp[n + -1];\n    while (n = mVar6, mVar4 == 0) {\nLAB_00132fd1:\n      mVar6 = n + -1;\n      if (mVar6 == 0) break;\n      mVar4 = bp[n + -2];\n    }\n    n = mVar9;\n    lVar3 = n;\n    if (mVar6 == n) goto LAB_00133136;\n    uVar11 = 0;\n    lVar7 = mVar6;\n    mVar9 = n;\n    if (mVar6 < n) {\n      uVar11 = 1;\n      lVar7 = n;\n      mVar9 = mVar6;\n      pmVar5 = ap;\n      ap = bp;\n    }\n  }" if (parenthesized_expression "(n < 1)" ( (binary_expression "n < 1" identifier < number_literal) )) (compound_statement "{\nLAB_00133136:\n    do {\n      lVar3 = lVar3 + -1;\n      if (lVar3 < 0) {\n        if (s != 0) {\n          return 0;\n        }\n        (*hook)(ctx,ap,n,(mp_srcptr)0x0,0,-1);\n        return 0;\n      }\n    } while (ap[lVar3] == bp[lVar3]);\n    lVar7 = mVar6;\n    mVar9 = n;\n    if (bp[lVar3] < ap[lVar3]) {\n      uVar11 = 1;\n      pmVar5 = ap;\n      ap = bp;\n    }\n    else {\n      uVar11 = 0;\n    }\n  }" { (labeled_statement "LAB_00133136:\n    do {\n      lVar3 = lVar3 + -1;\n      if (lVar3 < 0) {\n        if (s != 0) {\n          return 0;\n        }\n        (*hook)(ctx,ap,n,(mp_srcptr)0x0,0,-1);\n        return 0;\n      }\n    } while (ap[lVar3] == bp[lVar3]);" statement_identifier : (do_statement "do {\n      lVar3 = lVar3 + -1;\n      if (lVar3 < 0) {\n        if (s != 0) {\n          return 0;\n        }\n        (*hook)(ctx,ap,n,(mp_srcptr)0x0,0,-1);\n        return 0;\n      }\n    } while (ap[lVar3] == bp[lVar3]);" do (compound_statement "{\n      lVar3 = lVar3 + -1;\n      if (lVar3 < 0) {\n        if (s != 0) {\n          return 0;\n        }\n        (*hook)(ctx,ap,n,(mp_srcptr)0x0,0,-1);\n        return 0;\n      }\n    }" { (expression_statement "lVar3 = lVar3 + -1;" (assignment_expression "lVar3 = lVar3 + -1" identifier = (binary_expression "lVar3 + -1" identifier + number_literal)) ;) (if_statement "if (lVar3 < 0) {\n        if (s != 0) {\n          return 0;\n        }\n        (*hook)(ctx,ap,n,(mp_srcptr)0x0,0,-1);\n        return 0;\n      }" if (parenthesized_expression "(lVar3 < 0)" ( (binary_expression "lVar3 < 0" identifier < number_literal) )) (compound_statement "{\n        if (s != 0) {\n          return 0;\n        }\n        (*hook)(ctx,ap,n,(mp_srcptr)0x0,0,-1);\n        return 0;\n      }" { (if_statement "if (s != 0) {\n          return 0;\n        }" if (parenthesized_expression "(s != 0)" ( (binary_expression "s != 0" identifier != number_literal) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "(*hook)(ctx,ap,n,(mp_srcptr)0x0,0,-1);" (call_expression "(*hook)(ctx,ap,n,(mp_srcptr)0x0,0,-1)" (parenthesized_expression "(*hook)" ( (pointer_expression "*hook" * identifier) )) (argument_list "(ctx,ap,n,(mp_srcptr)0x0,0,-1)" ( identifier , identifier , identifier , (cast_expression "(mp_srcptr)0x0" ( (type_descriptor "mp_srcptr" type_identifier) ) number_literal) , number_literal , number_literal ))) ;) (return_statement "return 0;" return number_literal ;) })) }) while (parenthesized_expression "(ap[lVar3] == bp[lVar3])" ( (binary_expression "ap[lVar3] == bp[lVar3]" (subscript_expression "ap[lVar3]" identifier [ identifier ]) == (subscript_expression "bp[lVar3]" identifier [ identifier ])) )) ;)) (expression_statement "lVar7 = mVar6;" (assignment_expression "lVar7 = mVar6" identifier = identifier) ;) (expression_statement "mVar9 = n;" (assignment_expression "mVar9 = n" identifier = identifier) ;) (if_statement "if (bp[lVar3] < ap[lVar3]) {\n      uVar11 = 1;\n      pmVar5 = ap;\n      ap = bp;\n    }\n    else {\n      uVar11 = 0;\n    }" if (parenthesized_expression "(bp[lVar3] < ap[lVar3])" ( (binary_expression "bp[lVar3] < ap[lVar3]" (subscript_expression "bp[lVar3]" identifier [ identifier ]) < (subscript_expression "ap[lVar3]" identifier [ identifier ])) )) (compound_statement "{\n      uVar11 = 1;\n      pmVar5 = ap;\n      ap = bp;\n    }" { (expression_statement "uVar11 = 1;" (assignment_expression "uVar11 = 1" identifier = number_literal) ;) (expression_statement "pmVar5 = ap;" (assignment_expression "pmVar5 = ap" identifier = identifier) ;) (expression_statement "ap = bp;" (assignment_expression "ap = bp" identifier = identifier) ;) }) (else_clause "else {\n      uVar11 = 0;\n    }" else (compound_statement "{\n      uVar11 = 0;\n    }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) }))) }) (else_clause "else {\n    if (ap[n + -1] != 0) {\n      mVar9 = n;\n      if (bp[n + -1] == 0) goto LAB_00132fd1;\n      goto LAB_00133136;\n    }\n    do {\n      mVar9 = lVar3 + -1;\n      if (mVar9 == 0) {\n        if (bp[n + -1] == 0) goto LAB_00132fd1;\n        uVar11 = 0;\n        lVar7 = n;\n        goto LAB_00133008;\n      }\n      lVar7 = lVar3 + -2;\n      lVar3 = mVar9;\n    } while (ap[lVar7] == 0);\n    mVar4 = bp[n + -1];\n    while (n = mVar6, mVar4 == 0) {\nLAB_00132fd1:\n      mVar6 = n + -1;\n      if (mVar6 == 0) break;\n      mVar4 = bp[n + -2];\n    }\n    n = mVar9;\n    lVar3 = n;\n    if (mVar6 == n) goto LAB_00133136;\n    uVar11 = 0;\n    lVar7 = mVar6;\n    mVar9 = n;\n    if (mVar6 < n) {\n      uVar11 = 1;\n      lVar7 = n;\n      mVar9 = mVar6;\n      pmVar5 = ap;\n      ap = bp;\n    }\n  }" else (compound_statement "{\n    if (ap[n + -1] != 0) {\n      mVar9 = n;\n      if (bp[n + -1] == 0) goto LAB_00132fd1;\n      goto LAB_00133136;\n    }\n    do {\n      mVar9 = lVar3 + -1;\n      if (mVar9 == 0) {\n        if (bp[n + -1] == 0) goto LAB_00132fd1;\n        uVar11 = 0;\n        lVar7 = n;\n        goto LAB_00133008;\n      }\n      lVar7 = lVar3 + -2;\n      lVar3 = mVar9;\n    } while (ap[lVar7] == 0);\n    mVar4 = bp[n + -1];\n    while (n = mVar6, mVar4 == 0) {\nLAB_00132fd1:\n      mVar6 = n + -1;\n      if (mVar6 == 0) break;\n      mVar4 = bp[n + -2];\n    }\n    n = mVar9;\n    lVar3 = n;\n    if (mVar6 == n) goto LAB_00133136;\n    uVar11 = 0;\n    lVar7 = mVar6;\n    mVar9 = n;\n    if (mVar6 < n) {\n      uVar11 = 1;\n      lVar7 = n;\n      mVar9 = mVar6;\n      pmVar5 = ap;\n      ap = bp;\n    }\n  }" { (if_statement "if (ap[n + -1] != 0) {\n      mVar9 = n;\n      if (bp[n + -1] == 0) goto LAB_00132fd1;\n      goto LAB_00133136;\n    }" if (parenthesized_expression "(ap[n + -1] != 0)" ( (binary_expression "ap[n + -1] != 0" (subscript_expression "ap[n + -1]" identifier [ (binary_expression "n + -1" identifier + number_literal) ]) != number_literal) )) (compound_statement "{\n      mVar9 = n;\n      if (bp[n + -1] == 0) goto LAB_00132fd1;\n      goto LAB_00133136;\n    }" { (expression_statement "mVar9 = n;" (assignment_expression "mVar9 = n" identifier = identifier) ;) (if_statement "if (bp[n + -1] == 0) goto LAB_00132fd1;" if (parenthesized_expression "(bp[n + -1] == 0)" ( (binary_expression "bp[n + -1] == 0" (subscript_expression "bp[n + -1]" identifier [ (binary_expression "n + -1" identifier + number_literal) ]) == number_literal) )) (goto_statement "goto LAB_00132fd1;" goto statement_identifier ;)) (goto_statement "goto LAB_00133136;" goto statement_identifier ;) })) (do_statement "do {\n      mVar9 = lVar3 + -1;\n      if (mVar9 == 0) {\n        if (bp[n + -1] == 0) goto LAB_00132fd1;\n        uVar11 = 0;\n        lVar7 = n;\n        goto LAB_00133008;\n      }\n      lVar7 = lVar3 + -2;\n      lVar3 = mVar9;\n    } while (ap[lVar7] == 0);" do (compound_statement "{\n      mVar9 = lVar3 + -1;\n      if (mVar9 == 0) {\n        if (bp[n + -1] == 0) goto LAB_00132fd1;\n        uVar11 = 0;\n        lVar7 = n;\n        goto LAB_00133008;\n      }\n      lVar7 = lVar3 + -2;\n      lVar3 = mVar9;\n    }" { (expression_statement "mVar9 = lVar3 + -1;" (assignment_expression "mVar9 = lVar3 + -1" identifier = (binary_expression "lVar3 + -1" identifier + number_literal)) ;) (if_statement "if (mVar9 == 0) {\n        if (bp[n + -1] == 0) goto LAB_00132fd1;\n        uVar11 = 0;\n        lVar7 = n;\n        goto LAB_00133008;\n      }" if (parenthesized_expression "(mVar9 == 0)" ( (binary_expression "mVar9 == 0" identifier == number_literal) )) (compound_statement "{\n        if (bp[n + -1] == 0) goto LAB_00132fd1;\n        uVar11 = 0;\n        lVar7 = n;\n        goto LAB_00133008;\n      }" { (if_statement "if (bp[n + -1] == 0) goto LAB_00132fd1;" if (parenthesized_expression "(bp[n + -1] == 0)" ( (binary_expression "bp[n + -1] == 0" (subscript_expression "bp[n + -1]" identifier [ (binary_expression "n + -1" identifier + number_literal) ]) == number_literal) )) (goto_statement "goto LAB_00132fd1;" goto statement_identifier ;)) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (expression_statement "lVar7 = n;" (assignment_expression "lVar7 = n" identifier = identifier) ;) (goto_statement "goto LAB_00133008;" goto statement_identifier ;) })) (expression_statement "lVar7 = lVar3 + -2;" (assignment_expression "lVar7 = lVar3 + -2" identifier = (binary_expression "lVar3 + -2" identifier + number_literal)) ;) (expression_statement "lVar3 = mVar9;" (assignment_expression "lVar3 = mVar9" identifier = identifier) ;) }) while (parenthesized_expression "(ap[lVar7] == 0)" ( (binary_expression "ap[lVar7] == 0" (subscript_expression "ap[lVar7]" identifier [ identifier ]) == number_literal) )) ;) (expression_statement "mVar4 = bp[n + -1];" (assignment_expression "mVar4 = bp[n + -1]" identifier = (subscript_expression "bp[n + -1]" identifier [ (binary_expression "n + -1" identifier + number_literal) ])) ;) (while_statement "while (n = mVar6, mVar4 == 0) {\nLAB_00132fd1:\n      mVar6 = n + -1;\n      if (mVar6 == 0) break;\n      mVar4 = bp[n + -2];\n    }" while (parenthesized_expression "(n = mVar6, mVar4 == 0)" ( (comma_expression "n = mVar6, mVar4 == 0" (assignment_expression "n = mVar6" identifier = identifier) , (binary_expression "mVar4 == 0" identifier == number_literal)) )) (compound_statement "{\nLAB_00132fd1:\n      mVar6 = n + -1;\n      if (mVar6 == 0) break;\n      mVar4 = bp[n + -2];\n    }" { (labeled_statement "LAB_00132fd1:\n      mVar6 = n + -1;" statement_identifier : (expression_statement "mVar6 = n + -1;" (assignment_expression "mVar6 = n + -1" identifier = (binary_expression "n + -1" identifier + number_literal)) ;)) (if_statement "if (mVar6 == 0) break;" if (parenthesized_expression "(mVar6 == 0)" ( (binary_expression "mVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "mVar4 = bp[n + -2];" (assignment_expression "mVar4 = bp[n + -2]" identifier = (subscript_expression "bp[n + -2]" identifier [ (binary_expression "n + -2" identifier + number_literal) ])) ;) })) (expression_statement "n = mVar9;" (assignment_expression "n = mVar9" identifier = identifier) ;) (expression_statement "lVar3 = n;" (assignment_expression "lVar3 = n" identifier = identifier) ;) (if_statement "if (mVar6 == n) goto LAB_00133136;" if (parenthesized_expression "(mVar6 == n)" ( (binary_expression "mVar6 == n" identifier == identifier) )) (goto_statement "goto LAB_00133136;" goto statement_identifier ;)) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (expression_statement "lVar7 = mVar6;" (assignment_expression "lVar7 = mVar6" identifier = identifier) ;) (expression_statement "mVar9 = n;" (assignment_expression "mVar9 = n" identifier = identifier) ;) (if_statement "if (mVar6 < n) {\n      uVar11 = 1;\n      lVar7 = n;\n      mVar9 = mVar6;\n      pmVar5 = ap;\n      ap = bp;\n    }" if (parenthesized_expression "(mVar6 < n)" ( (binary_expression "mVar6 < n" identifier < identifier) )) (compound_statement "{\n      uVar11 = 1;\n      lVar7 = n;\n      mVar9 = mVar6;\n      pmVar5 = ap;\n      ap = bp;\n    }" { (expression_statement "uVar11 = 1;" (assignment_expression "uVar11 = 1" identifier = number_literal) ;) (expression_statement "lVar7 = n;" (assignment_expression "lVar7 = n" identifier = identifier) ;) (expression_statement "mVar9 = mVar6;" (assignment_expression "mVar9 = mVar6" identifier = identifier) ;) (expression_statement "pmVar5 = ap;" (assignment_expression "pmVar5 = ap" identifier = identifier) ;) (expression_statement "ap = bp;" (assignment_expression "ap = bp" identifier = identifier) ;) })) }))) (labeled_statement "LAB_00133008:\n  if (mVar9 <= s) {\n    if (s != 0) {\n      return 0;\n    }\n    (*hook)(ctx,pmVar5,lVar7,(mp_srcptr)0x0,0,uVar11 ^ 1);\n    return 0;\n  }" statement_identifier : (if_statement "if (mVar9 <= s) {\n    if (s != 0) {\n      return 0;\n    }\n    (*hook)(ctx,pmVar5,lVar7,(mp_srcptr)0x0,0,uVar11 ^ 1);\n    return 0;\n  }" if (parenthesized_expression "(mVar9 <= s)" ( (binary_expression "mVar9 <= s" identifier <= identifier) )) (compound_statement "{\n    if (s != 0) {\n      return 0;\n    }\n    (*hook)(ctx,pmVar5,lVar7,(mp_srcptr)0x0,0,uVar11 ^ 1);\n    return 0;\n  }" { (if_statement "if (s != 0) {\n      return 0;\n    }" if (parenthesized_expression "(s != 0)" ( (binary_expression "s != 0" identifier != number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "(*hook)(ctx,pmVar5,lVar7,(mp_srcptr)0x0,0,uVar11 ^ 1);" (call_expression "(*hook)(ctx,pmVar5,lVar7,(mp_srcptr)0x0,0,uVar11 ^ 1)" (parenthesized_expression "(*hook)" ( (pointer_expression "*hook" * identifier) )) (argument_list "(ctx,pmVar5,lVar7,(mp_srcptr)0x0,0,uVar11 ^ 1)" ( identifier , identifier , identifier , (cast_expression "(mp_srcptr)0x0" ( (type_descriptor "mp_srcptr" type_identifier) ) number_literal) , number_literal , (binary_expression "uVar11 ^ 1" identifier ^ number_literal) ))) ;) (return_statement "return 0;" return number_literal ;) }))) (expression_statement "pmVar10 = pmVar5;" (assignment_expression "pmVar10 = pmVar5" identifier = identifier) ;) (if_statement "if (((mVar9 == 0) || (lVar3 = __gmpn_sub_n(pmVar5,pmVar5,ap,mVar9), lVar3 == 0)) ||\n     (lVar7 <= mVar9)) {\nLAB_0013301a:\n    if (0 < lVar7) {\n      mVar4 = pmVar5[lVar7 + -1];\n      goto joined_r0x00133029;\n    }\nLAB_0013321f:\n    lVar3 = lVar7;\n    if (lVar7 <= s) {\n      if ((lVar7 == 0) || (lVar3 = __gmpn_add_n(pmVar5,ap,pmVar5,lVar7), lVar3 == 0))\n      goto LAB_00133231;\nLAB_0013327a:\n      mVar4 = ap[lVar7] + 1;\n      pmVar5[lVar7] = mVar4;\n      while (lVar7 = lVar7 + 1, mVar4 == 0) {\n        if (mVar9 == lVar7) goto LAB_00133408;\n        mVar4 = ap[lVar7] + 1;\n        pmVar5[lVar7] = mVar4;\n      }\nLAB_00133231:\n      if (ap != pmVar5) {\n        if (lVar7 < mVar9) {\n          do {\n            pmVar5[lVar7] = ap[lVar7];\n            lVar7 = lVar7 + 1;\n          } while (mVar9 != lVar7);\n        }\n        return 0;\n      }\n      return 0;\n    }\nLAB_00133049:\n    lVar8 = mVar9;\n    lVar7 = lVar3;\n    if (mVar9 == lVar3) {\n      do {\n        lVar8 = lVar8 + -1;\n        if (lVar8 < 0) {\n          if (0 < s) {\n            (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);\n            return 0;\n          }\n          (*hook)(ctx,pmVar5,lVar3,(mp_srcptr)0x0,0,uVar11);\n          return 0;\n        }\n        uVar1 = ap[lVar8];\n        uVar2 = pmVar5[lVar8];\n      } while (uVar1 == uVar2);\n      if (uVar1 < uVar2 || uVar1 == uVar2) {\n        (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);\n      }\n      else {\n        (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);\n        uVar11 = uVar11 ^ 1;\n        pmVar10 = ap;\n        ap = pmVar5;\n      }\n    }\n    else {\n      (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);\n      if (lVar3 < mVar9) {\n        uVar11 = uVar11 ^ 1;\n        lVar7 = mVar9;\n        mVar9 = lVar3;\n        pmVar10 = ap;\n        ap = pmVar5;\n      }\n    }\n  }\n  else {\n    mVar4 = pmVar5[mVar9];\n    pmVar5[mVar9] = mVar4 - 1;\n    lVar3 = mVar9;\n    if (mVar4 == 0) {\n      do {\n        lVar3 = lVar3 + 1;\n        if (lVar7 == lVar3) goto LAB_00133465;\n        mVar4 = pmVar5[lVar3];\n        pmVar5[lVar3] = mVar4 - 1;\n      } while (mVar4 == 0);\n      goto LAB_0013301a;\n    }\nLAB_00133465:\n    if (0 < lVar7) {\n      lVar3 = lVar7;\n      if (pmVar5[lVar7 + -1] == 0) {\n        do {\n          lVar7 = lVar3 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          mVar4 = pmVar5[lVar3 + -2];\njoined_r0x00133029:\n          lVar3 = lVar7;\n        } while (mVar4 == 0);\n        if (s < lVar7) goto LAB_00133049;\n        lVar3 = __gmpn_add_n(pmVar5,ap,pmVar5,lVar7);\n        if (lVar3 == 0) goto LAB_00133231;\n        if (mVar9 <= lVar7) {\nLAB_00133408:\n          pmVar5[mVar9] = 1;\n          return 0;\n        }\n        goto LAB_0013327a;\n      }\n      goto LAB_00133049;\n    }\n    (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);\n  }" if (parenthesized_expression "(((mVar9 == 0) || (lVar3 = __gmpn_sub_n(pmVar5,pmVar5,ap,mVar9), lVar3 == 0)) ||\n     (lVar7 <= mVar9))" ( (binary_expression "((mVar9 == 0) || (lVar3 = __gmpn_sub_n(pmVar5,pmVar5,ap,mVar9), lVar3 == 0)) ||\n     (lVar7 <= mVar9)" (parenthesized_expression "((mVar9 == 0) || (lVar3 = __gmpn_sub_n(pmVar5,pmVar5,ap,mVar9), lVar3 == 0))" ( (binary_expression "(mVar9 == 0) || (lVar3 = __gmpn_sub_n(pmVar5,pmVar5,ap,mVar9), lVar3 == 0)" (parenthesized_expression "(mVar9 == 0)" ( (binary_expression "mVar9 == 0" identifier == number_literal) )) || (parenthesized_expression "(lVar3 = __gmpn_sub_n(pmVar5,pmVar5,ap,mVar9), lVar3 == 0)" ( (comma_expression "lVar3 = __gmpn_sub_n(pmVar5,pmVar5,ap,mVar9), lVar3 == 0" (assignment_expression "lVar3 = __gmpn_sub_n(pmVar5,pmVar5,ap,mVar9)" identifier = (call_expression "__gmpn_sub_n(pmVar5,pmVar5,ap,mVar9)" identifier (argument_list "(pmVar5,pmVar5,ap,mVar9)" ( identifier , identifier , identifier , identifier )))) , (binary_expression "lVar3 == 0" identifier == number_literal)) ))) )) || (parenthesized_expression "(lVar7 <= mVar9)" ( (binary_expression "lVar7 <= mVar9" identifier <= identifier) ))) )) (compound_statement "{\nLAB_0013301a:\n    if (0 < lVar7) {\n      mVar4 = pmVar5[lVar7 + -1];\n      goto joined_r0x00133029;\n    }\nLAB_0013321f:\n    lVar3 = lVar7;\n    if (lVar7 <= s) {\n      if ((lVar7 == 0) || (lVar3 = __gmpn_add_n(pmVar5,ap,pmVar5,lVar7), lVar3 == 0))\n      goto LAB_00133231;\nLAB_0013327a:\n      mVar4 = ap[lVar7] + 1;\n      pmVar5[lVar7] = mVar4;\n      while (lVar7 = lVar7 + 1, mVar4 == 0) {\n        if (mVar9 == lVar7) goto LAB_00133408;\n        mVar4 = ap[lVar7] + 1;\n        pmVar5[lVar7] = mVar4;\n      }\nLAB_00133231:\n      if (ap != pmVar5) {\n        if (lVar7 < mVar9) {\n          do {\n            pmVar5[lVar7] = ap[lVar7];\n            lVar7 = lVar7 + 1;\n          } while (mVar9 != lVar7);\n        }\n        return 0;\n      }\n      return 0;\n    }\nLAB_00133049:\n    lVar8 = mVar9;\n    lVar7 = lVar3;\n    if (mVar9 == lVar3) {\n      do {\n        lVar8 = lVar8 + -1;\n        if (lVar8 < 0) {\n          if (0 < s) {\n            (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);\n            return 0;\n          }\n          (*hook)(ctx,pmVar5,lVar3,(mp_srcptr)0x0,0,uVar11);\n          return 0;\n        }\n        uVar1 = ap[lVar8];\n        uVar2 = pmVar5[lVar8];\n      } while (uVar1 == uVar2);\n      if (uVar1 < uVar2 || uVar1 == uVar2) {\n        (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);\n      }\n      else {\n        (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);\n        uVar11 = uVar11 ^ 1;\n        pmVar10 = ap;\n        ap = pmVar5;\n      }\n    }\n    else {\n      (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);\n      if (lVar3 < mVar9) {\n        uVar11 = uVar11 ^ 1;\n        lVar7 = mVar9;\n        mVar9 = lVar3;\n        pmVar10 = ap;\n        ap = pmVar5;\n      }\n    }\n  }" { (labeled_statement "LAB_0013301a:\n    if (0 < lVar7) {\n      mVar4 = pmVar5[lVar7 + -1];\n      goto joined_r0x00133029;\n    }" statement_identifier : (if_statement "if (0 < lVar7) {\n      mVar4 = pmVar5[lVar7 + -1];\n      goto joined_r0x00133029;\n    }" if (parenthesized_expression "(0 < lVar7)" ( (binary_expression "0 < lVar7" number_literal < identifier) )) (compound_statement "{\n      mVar4 = pmVar5[lVar7 + -1];\n      goto joined_r0x00133029;\n    }" { (expression_statement "mVar4 = pmVar5[lVar7 + -1];" (assignment_expression "mVar4 = pmVar5[lVar7 + -1]" identifier = (subscript_expression "pmVar5[lVar7 + -1]" identifier [ (binary_expression "lVar7 + -1" identifier + number_literal) ])) ;) (goto_statement "goto joined_r0x00133029;" goto statement_identifier ;) }))) (labeled_statement "LAB_0013321f:\n    lVar3 = lVar7;" statement_identifier : (expression_statement "lVar3 = lVar7;" (assignment_expression "lVar3 = lVar7" identifier = identifier) ;)) (if_statement "if (lVar7 <= s) {\n      if ((lVar7 == 0) || (lVar3 = __gmpn_add_n(pmVar5,ap,pmVar5,lVar7), lVar3 == 0))\n      goto LAB_00133231;\nLAB_0013327a:\n      mVar4 = ap[lVar7] + 1;\n      pmVar5[lVar7] = mVar4;\n      while (lVar7 = lVar7 + 1, mVar4 == 0) {\n        if (mVar9 == lVar7) goto LAB_00133408;\n        mVar4 = ap[lVar7] + 1;\n        pmVar5[lVar7] = mVar4;\n      }\nLAB_00133231:\n      if (ap != pmVar5) {\n        if (lVar7 < mVar9) {\n          do {\n            pmVar5[lVar7] = ap[lVar7];\n            lVar7 = lVar7 + 1;\n          } while (mVar9 != lVar7);\n        }\n        return 0;\n      }\n      return 0;\n    }" if (parenthesized_expression "(lVar7 <= s)" ( (binary_expression "lVar7 <= s" identifier <= identifier) )) (compound_statement "{\n      if ((lVar7 == 0) || (lVar3 = __gmpn_add_n(pmVar5,ap,pmVar5,lVar7), lVar3 == 0))\n      goto LAB_00133231;\nLAB_0013327a:\n      mVar4 = ap[lVar7] + 1;\n      pmVar5[lVar7] = mVar4;\n      while (lVar7 = lVar7 + 1, mVar4 == 0) {\n        if (mVar9 == lVar7) goto LAB_00133408;\n        mVar4 = ap[lVar7] + 1;\n        pmVar5[lVar7] = mVar4;\n      }\nLAB_00133231:\n      if (ap != pmVar5) {\n        if (lVar7 < mVar9) {\n          do {\n            pmVar5[lVar7] = ap[lVar7];\n            lVar7 = lVar7 + 1;\n          } while (mVar9 != lVar7);\n        }\n        return 0;\n      }\n      return 0;\n    }" { (if_statement "if ((lVar7 == 0) || (lVar3 = __gmpn_add_n(pmVar5,ap,pmVar5,lVar7), lVar3 == 0))\n      goto LAB_00133231;" if (parenthesized_expression "((lVar7 == 0) || (lVar3 = __gmpn_add_n(pmVar5,ap,pmVar5,lVar7), lVar3 == 0))" ( (binary_expression "(lVar7 == 0) || (lVar3 = __gmpn_add_n(pmVar5,ap,pmVar5,lVar7), lVar3 == 0)" (parenthesized_expression "(lVar7 == 0)" ( (binary_expression "lVar7 == 0" identifier == number_literal) )) || (parenthesized_expression "(lVar3 = __gmpn_add_n(pmVar5,ap,pmVar5,lVar7), lVar3 == 0)" ( (comma_expression "lVar3 = __gmpn_add_n(pmVar5,ap,pmVar5,lVar7), lVar3 == 0" (assignment_expression "lVar3 = __gmpn_add_n(pmVar5,ap,pmVar5,lVar7)" identifier = (call_expression "__gmpn_add_n(pmVar5,ap,pmVar5,lVar7)" identifier (argument_list "(pmVar5,ap,pmVar5,lVar7)" ( identifier , identifier , identifier , identifier )))) , (binary_expression "lVar3 == 0" identifier == number_literal)) ))) )) (goto_statement "goto LAB_00133231;" goto statement_identifier ;)) (labeled_statement "LAB_0013327a:\n      mVar4 = ap[lVar7] + 1;" statement_identifier : (expression_statement "mVar4 = ap[lVar7] + 1;" (assignment_expression "mVar4 = ap[lVar7] + 1" identifier = (binary_expression "ap[lVar7] + 1" (subscript_expression "ap[lVar7]" identifier [ identifier ]) + number_literal)) ;)) (expression_statement "pmVar5[lVar7] = mVar4;" (assignment_expression "pmVar5[lVar7] = mVar4" (subscript_expression "pmVar5[lVar7]" identifier [ identifier ]) = identifier) ;) (while_statement "while (lVar7 = lVar7 + 1, mVar4 == 0) {\n        if (mVar9 == lVar7) goto LAB_00133408;\n        mVar4 = ap[lVar7] + 1;\n        pmVar5[lVar7] = mVar4;\n      }" while (parenthesized_expression "(lVar7 = lVar7 + 1, mVar4 == 0)" ( (comma_expression "lVar7 = lVar7 + 1, mVar4 == 0" (assignment_expression "lVar7 = lVar7 + 1" identifier = (binary_expression "lVar7 + 1" identifier + number_literal)) , (binary_expression "mVar4 == 0" identifier == number_literal)) )) (compound_statement "{\n        if (mVar9 == lVar7) goto LAB_00133408;\n        mVar4 = ap[lVar7] + 1;\n        pmVar5[lVar7] = mVar4;\n      }" { (if_statement "if (mVar9 == lVar7) goto LAB_00133408;" if (parenthesized_expression "(mVar9 == lVar7)" ( (binary_expression "mVar9 == lVar7" identifier == identifier) )) (goto_statement "goto LAB_00133408;" goto statement_identifier ;)) (expression_statement "mVar4 = ap[lVar7] + 1;" (assignment_expression "mVar4 = ap[lVar7] + 1" identifier = (binary_expression "ap[lVar7] + 1" (subscript_expression "ap[lVar7]" identifier [ identifier ]) + number_literal)) ;) (expression_statement "pmVar5[lVar7] = mVar4;" (assignment_expression "pmVar5[lVar7] = mVar4" (subscript_expression "pmVar5[lVar7]" identifier [ identifier ]) = identifier) ;) })) (labeled_statement "LAB_00133231:\n      if (ap != pmVar5) {\n        if (lVar7 < mVar9) {\n          do {\n            pmVar5[lVar7] = ap[lVar7];\n            lVar7 = lVar7 + 1;\n          } while (mVar9 != lVar7);\n        }\n        return 0;\n      }" statement_identifier : (if_statement "if (ap != pmVar5) {\n        if (lVar7 < mVar9) {\n          do {\n            pmVar5[lVar7] = ap[lVar7];\n            lVar7 = lVar7 + 1;\n          } while (mVar9 != lVar7);\n        }\n        return 0;\n      }" if (parenthesized_expression "(ap != pmVar5)" ( (binary_expression "ap != pmVar5" identifier != identifier) )) (compound_statement "{\n        if (lVar7 < mVar9) {\n          do {\n            pmVar5[lVar7] = ap[lVar7];\n            lVar7 = lVar7 + 1;\n          } while (mVar9 != lVar7);\n        }\n        return 0;\n      }" { (if_statement "if (lVar7 < mVar9) {\n          do {\n            pmVar5[lVar7] = ap[lVar7];\n            lVar7 = lVar7 + 1;\n          } while (mVar9 != lVar7);\n        }" if (parenthesized_expression "(lVar7 < mVar9)" ( (binary_expression "lVar7 < mVar9" identifier < identifier) )) (compound_statement "{\n          do {\n            pmVar5[lVar7] = ap[lVar7];\n            lVar7 = lVar7 + 1;\n          } while (mVar9 != lVar7);\n        }" { (do_statement "do {\n            pmVar5[lVar7] = ap[lVar7];\n            lVar7 = lVar7 + 1;\n          } while (mVar9 != lVar7);" do (compound_statement "{\n            pmVar5[lVar7] = ap[lVar7];\n            lVar7 = lVar7 + 1;\n          }" { (expression_statement "pmVar5[lVar7] = ap[lVar7];" (assignment_expression "pmVar5[lVar7] = ap[lVar7]" (subscript_expression "pmVar5[lVar7]" identifier [ identifier ]) = (subscript_expression "ap[lVar7]" identifier [ identifier ])) ;) (expression_statement "lVar7 = lVar7 + 1;" (assignment_expression "lVar7 = lVar7 + 1" identifier = (binary_expression "lVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(mVar9 != lVar7)" ( (binary_expression "mVar9 != lVar7" identifier != identifier) )) ;) })) (return_statement "return 0;" return number_literal ;) }))) (return_statement "return 0;" return number_literal ;) })) (labeled_statement "LAB_00133049:\n    lVar8 = mVar9;" statement_identifier : (expression_statement "lVar8 = mVar9;" (assignment_expression "lVar8 = mVar9" identifier = identifier) ;)) (expression_statement "lVar7 = lVar3;" (assignment_expression "lVar7 = lVar3" identifier = identifier) ;) (if_statement "if (mVar9 == lVar3) {\n      do {\n        lVar8 = lVar8 + -1;\n        if (lVar8 < 0) {\n          if (0 < s) {\n            (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);\n            return 0;\n          }\n          (*hook)(ctx,pmVar5,lVar3,(mp_srcptr)0x0,0,uVar11);\n          return 0;\n        }\n        uVar1 = ap[lVar8];\n        uVar2 = pmVar5[lVar8];\n      } while (uVar1 == uVar2);\n      if (uVar1 < uVar2 || uVar1 == uVar2) {\n        (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);\n      }\n      else {\n        (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);\n        uVar11 = uVar11 ^ 1;\n        pmVar10 = ap;\n        ap = pmVar5;\n      }\n    }\n    else {\n      (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);\n      if (lVar3 < mVar9) {\n        uVar11 = uVar11 ^ 1;\n        lVar7 = mVar9;\n        mVar9 = lVar3;\n        pmVar10 = ap;\n        ap = pmVar5;\n      }\n    }" if (parenthesized_expression "(mVar9 == lVar3)" ( (binary_expression "mVar9 == lVar3" identifier == identifier) )) (compound_statement "{\n      do {\n        lVar8 = lVar8 + -1;\n        if (lVar8 < 0) {\n          if (0 < s) {\n            (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);\n            return 0;\n          }\n          (*hook)(ctx,pmVar5,lVar3,(mp_srcptr)0x0,0,uVar11);\n          return 0;\n        }\n        uVar1 = ap[lVar8];\n        uVar2 = pmVar5[lVar8];\n      } while (uVar1 == uVar2);\n      if (uVar1 < uVar2 || uVar1 == uVar2) {\n        (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);\n      }\n      else {\n        (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);\n        uVar11 = uVar11 ^ 1;\n        pmVar10 = ap;\n        ap = pmVar5;\n      }\n    }" { (do_statement "do {\n        lVar8 = lVar8 + -1;\n        if (lVar8 < 0) {\n          if (0 < s) {\n            (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);\n            return 0;\n          }\n          (*hook)(ctx,pmVar5,lVar3,(mp_srcptr)0x0,0,uVar11);\n          return 0;\n        }\n        uVar1 = ap[lVar8];\n        uVar2 = pmVar5[lVar8];\n      } while (uVar1 == uVar2);" do (compound_statement "{\n        lVar8 = lVar8 + -1;\n        if (lVar8 < 0) {\n          if (0 < s) {\n            (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);\n            return 0;\n          }\n          (*hook)(ctx,pmVar5,lVar3,(mp_srcptr)0x0,0,uVar11);\n          return 0;\n        }\n        uVar1 = ap[lVar8];\n        uVar2 = pmVar5[lVar8];\n      }" { (expression_statement "lVar8 = lVar8 + -1;" (assignment_expression "lVar8 = lVar8 + -1" identifier = (binary_expression "lVar8 + -1" identifier + number_literal)) ;) (if_statement "if (lVar8 < 0) {\n          if (0 < s) {\n            (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);\n            return 0;\n          }\n          (*hook)(ctx,pmVar5,lVar3,(mp_srcptr)0x0,0,uVar11);\n          return 0;\n        }" if (parenthesized_expression "(lVar8 < 0)" ( (binary_expression "lVar8 < 0" identifier < number_literal) )) (compound_statement "{\n          if (0 < s) {\n            (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);\n            return 0;\n          }\n          (*hook)(ctx,pmVar5,lVar3,(mp_srcptr)0x0,0,uVar11);\n          return 0;\n        }" { (if_statement "if (0 < s) {\n            (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);\n            return 0;\n          }" if (parenthesized_expression "(0 < s)" ( (binary_expression "0 < s" number_literal < identifier) )) (compound_statement "{\n            (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);\n            return 0;\n          }" { (expression_statement "(*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);" (call_expression "(*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11)" (parenthesized_expression "(*hook)" ( (pointer_expression "*hook" * identifier) )) (argument_list "(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11)" ( identifier , (cast_expression "(mp_srcptr)0x0" ( (type_descriptor "mp_srcptr" type_identifier) ) number_literal) , number_literal , (pointer_expression "&__gmpn_gcd_subdiv_step" & identifier) (ERROR "::one" : : identifier) , number_literal , identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "(*hook)(ctx,pmVar5,lVar3,(mp_srcptr)0x0,0,uVar11);" (call_expression "(*hook)(ctx,pmVar5,lVar3,(mp_srcptr)0x0,0,uVar11)" (parenthesized_expression "(*hook)" ( (pointer_expression "*hook" * identifier) )) (argument_list "(ctx,pmVar5,lVar3,(mp_srcptr)0x0,0,uVar11)" ( identifier , identifier , identifier , (cast_expression "(mp_srcptr)0x0" ( (type_descriptor "mp_srcptr" type_identifier) ) number_literal) , number_literal , identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar1 = ap[lVar8];" (assignment_expression "uVar1 = ap[lVar8]" identifier = (subscript_expression "ap[lVar8]" identifier [ identifier ])) ;) (expression_statement "uVar2 = pmVar5[lVar8];" (assignment_expression "uVar2 = pmVar5[lVar8]" identifier = (subscript_expression "pmVar5[lVar8]" identifier [ identifier ])) ;) }) while (parenthesized_expression "(uVar1 == uVar2)" ( (binary_expression "uVar1 == uVar2" identifier == identifier) )) ;) (if_statement "if (uVar1 < uVar2 || uVar1 == uVar2) {\n        (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);\n      }\n      else {\n        (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);\n        uVar11 = uVar11 ^ 1;\n        pmVar10 = ap;\n        ap = pmVar5;\n      }" if (parenthesized_expression "(uVar1 < uVar2 || uVar1 == uVar2)" ( (binary_expression "uVar1 < uVar2 || uVar1 == uVar2" (binary_expression "uVar1 < uVar2" identifier < identifier) || (binary_expression "uVar1 == uVar2" identifier == identifier)) )) (compound_statement "{\n        (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);\n      }" { (expression_statement "(*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);" (call_expression "(*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11)" (parenthesized_expression "(*hook)" ( (pointer_expression "*hook" * identifier) )) (argument_list "(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11)" ( identifier , (cast_expression "(mp_srcptr)0x0" ( (type_descriptor "mp_srcptr" type_identifier) ) number_literal) , number_literal , (pointer_expression "&__gmpn_gcd_subdiv_step" & identifier) (ERROR "::one" : : identifier) , number_literal , identifier ))) ;) }) (else_clause "else {\n        (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);\n        uVar11 = uVar11 ^ 1;\n        pmVar10 = ap;\n        ap = pmVar5;\n      }" else (compound_statement "{\n        (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);\n        uVar11 = uVar11 ^ 1;\n        pmVar10 = ap;\n        ap = pmVar5;\n      }" { (expression_statement "(*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);" (call_expression "(*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11)" (parenthesized_expression "(*hook)" ( (pointer_expression "*hook" * identifier) )) (argument_list "(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11)" ( identifier , (cast_expression "(mp_srcptr)0x0" ( (type_descriptor "mp_srcptr" type_identifier) ) number_literal) , number_literal , (pointer_expression "&__gmpn_gcd_subdiv_step" & identifier) (ERROR "::one" : : identifier) , number_literal , identifier ))) ;) (expression_statement "uVar11 = uVar11 ^ 1;" (assignment_expression "uVar11 = uVar11 ^ 1" identifier = (binary_expression "uVar11 ^ 1" identifier ^ number_literal)) ;) (expression_statement "pmVar10 = ap;" (assignment_expression "pmVar10 = ap" identifier = identifier) ;) (expression_statement "ap = pmVar5;" (assignment_expression "ap = pmVar5" identifier = identifier) ;) }))) }) (else_clause "else {\n      (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);\n      if (lVar3 < mVar9) {\n        uVar11 = uVar11 ^ 1;\n        lVar7 = mVar9;\n        mVar9 = lVar3;\n        pmVar10 = ap;\n        ap = pmVar5;\n      }\n    }" else (compound_statement "{\n      (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);\n      if (lVar3 < mVar9) {\n        uVar11 = uVar11 ^ 1;\n        lVar7 = mVar9;\n        mVar9 = lVar3;\n        pmVar10 = ap;\n        ap = pmVar5;\n      }\n    }" { (expression_statement "(*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);" (call_expression "(*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11)" (parenthesized_expression "(*hook)" ( (pointer_expression "*hook" * identifier) )) (argument_list "(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11)" ( identifier , (cast_expression "(mp_srcptr)0x0" ( (type_descriptor "mp_srcptr" type_identifier) ) number_literal) , number_literal , (pointer_expression "&__gmpn_gcd_subdiv_step" & identifier) (ERROR "::one" : : identifier) , number_literal , identifier ))) ;) (if_statement "if (lVar3 < mVar9) {\n        uVar11 = uVar11 ^ 1;\n        lVar7 = mVar9;\n        mVar9 = lVar3;\n        pmVar10 = ap;\n        ap = pmVar5;\n      }" if (parenthesized_expression "(lVar3 < mVar9)" ( (binary_expression "lVar3 < mVar9" identifier < identifier) )) (compound_statement "{\n        uVar11 = uVar11 ^ 1;\n        lVar7 = mVar9;\n        mVar9 = lVar3;\n        pmVar10 = ap;\n        ap = pmVar5;\n      }" { (expression_statement "uVar11 = uVar11 ^ 1;" (assignment_expression "uVar11 = uVar11 ^ 1" identifier = (binary_expression "uVar11 ^ 1" identifier ^ number_literal)) ;) (expression_statement "lVar7 = mVar9;" (assignment_expression "lVar7 = mVar9" identifier = identifier) ;) (expression_statement "mVar9 = lVar3;" (assignment_expression "mVar9 = lVar3" identifier = identifier) ;) (expression_statement "pmVar10 = ap;" (assignment_expression "pmVar10 = ap" identifier = identifier) ;) (expression_statement "ap = pmVar5;" (assignment_expression "ap = pmVar5" identifier = identifier) ;) })) }))) }) (else_clause "else {\n    mVar4 = pmVar5[mVar9];\n    pmVar5[mVar9] = mVar4 - 1;\n    lVar3 = mVar9;\n    if (mVar4 == 0) {\n      do {\n        lVar3 = lVar3 + 1;\n        if (lVar7 == lVar3) goto LAB_00133465;\n        mVar4 = pmVar5[lVar3];\n        pmVar5[lVar3] = mVar4 - 1;\n      } while (mVar4 == 0);\n      goto LAB_0013301a;\n    }\nLAB_00133465:\n    if (0 < lVar7) {\n      lVar3 = lVar7;\n      if (pmVar5[lVar7 + -1] == 0) {\n        do {\n          lVar7 = lVar3 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          mVar4 = pmVar5[lVar3 + -2];\njoined_r0x00133029:\n          lVar3 = lVar7;\n        } while (mVar4 == 0);\n        if (s < lVar7) goto LAB_00133049;\n        lVar3 = __gmpn_add_n(pmVar5,ap,pmVar5,lVar7);\n        if (lVar3 == 0) goto LAB_00133231;\n        if (mVar9 <= lVar7) {\nLAB_00133408:\n          pmVar5[mVar9] = 1;\n          return 0;\n        }\n        goto LAB_0013327a;\n      }\n      goto LAB_00133049;\n    }\n    (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);\n  }" else (compound_statement "{\n    mVar4 = pmVar5[mVar9];\n    pmVar5[mVar9] = mVar4 - 1;\n    lVar3 = mVar9;\n    if (mVar4 == 0) {\n      do {\n        lVar3 = lVar3 + 1;\n        if (lVar7 == lVar3) goto LAB_00133465;\n        mVar4 = pmVar5[lVar3];\n        pmVar5[lVar3] = mVar4 - 1;\n      } while (mVar4 == 0);\n      goto LAB_0013301a;\n    }\nLAB_00133465:\n    if (0 < lVar7) {\n      lVar3 = lVar7;\n      if (pmVar5[lVar7 + -1] == 0) {\n        do {\n          lVar7 = lVar3 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          mVar4 = pmVar5[lVar3 + -2];\njoined_r0x00133029:\n          lVar3 = lVar7;\n        } while (mVar4 == 0);\n        if (s < lVar7) goto LAB_00133049;\n        lVar3 = __gmpn_add_n(pmVar5,ap,pmVar5,lVar7);\n        if (lVar3 == 0) goto LAB_00133231;\n        if (mVar9 <= lVar7) {\nLAB_00133408:\n          pmVar5[mVar9] = 1;\n          return 0;\n        }\n        goto LAB_0013327a;\n      }\n      goto LAB_00133049;\n    }\n    (*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);\n  }" { (expression_statement "mVar4 = pmVar5[mVar9];" (assignment_expression "mVar4 = pmVar5[mVar9]" identifier = (subscript_expression "pmVar5[mVar9]" identifier [ identifier ])) ;) (expression_statement "pmVar5[mVar9] = mVar4 - 1;" (assignment_expression "pmVar5[mVar9] = mVar4 - 1" (subscript_expression "pmVar5[mVar9]" identifier [ identifier ]) = (binary_expression "mVar4 - 1" identifier - number_literal)) ;) (expression_statement "lVar3 = mVar9;" (assignment_expression "lVar3 = mVar9" identifier = identifier) ;) (if_statement "if (mVar4 == 0) {\n      do {\n        lVar3 = lVar3 + 1;\n        if (lVar7 == lVar3) goto LAB_00133465;\n        mVar4 = pmVar5[lVar3];\n        pmVar5[lVar3] = mVar4 - 1;\n      } while (mVar4 == 0);\n      goto LAB_0013301a;\n    }" if (parenthesized_expression "(mVar4 == 0)" ( (binary_expression "mVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      do {\n        lVar3 = lVar3 + 1;\n        if (lVar7 == lVar3) goto LAB_00133465;\n        mVar4 = pmVar5[lVar3];\n        pmVar5[lVar3] = mVar4 - 1;\n      } while (mVar4 == 0);\n      goto LAB_0013301a;\n    }" { (do_statement "do {\n        lVar3 = lVar3 + 1;\n        if (lVar7 == lVar3) goto LAB_00133465;\n        mVar4 = pmVar5[lVar3];\n        pmVar5[lVar3] = mVar4 - 1;\n      } while (mVar4 == 0);" do (compound_statement "{\n        lVar3 = lVar3 + 1;\n        if (lVar7 == lVar3) goto LAB_00133465;\n        mVar4 = pmVar5[lVar3];\n        pmVar5[lVar3] = mVar4 - 1;\n      }" { (expression_statement "lVar3 = lVar3 + 1;" (assignment_expression "lVar3 = lVar3 + 1" identifier = (binary_expression "lVar3 + 1" identifier + number_literal)) ;) (if_statement "if (lVar7 == lVar3) goto LAB_00133465;" if (parenthesized_expression "(lVar7 == lVar3)" ( (binary_expression "lVar7 == lVar3" identifier == identifier) )) (goto_statement "goto LAB_00133465;" goto statement_identifier ;)) (expression_statement "mVar4 = pmVar5[lVar3];" (assignment_expression "mVar4 = pmVar5[lVar3]" identifier = (subscript_expression "pmVar5[lVar3]" identifier [ identifier ])) ;) (expression_statement "pmVar5[lVar3] = mVar4 - 1;" (assignment_expression "pmVar5[lVar3] = mVar4 - 1" (subscript_expression "pmVar5[lVar3]" identifier [ identifier ]) = (binary_expression "mVar4 - 1" identifier - number_literal)) ;) }) while (parenthesized_expression "(mVar4 == 0)" ( (binary_expression "mVar4 == 0" identifier == number_literal) )) ;) (goto_statement "goto LAB_0013301a;" goto statement_identifier ;) })) (labeled_statement "LAB_00133465:\n    if (0 < lVar7) {\n      lVar3 = lVar7;\n      if (pmVar5[lVar7 + -1] == 0) {\n        do {\n          lVar7 = lVar3 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          mVar4 = pmVar5[lVar3 + -2];\njoined_r0x00133029:\n          lVar3 = lVar7;\n        } while (mVar4 == 0);\n        if (s < lVar7) goto LAB_00133049;\n        lVar3 = __gmpn_add_n(pmVar5,ap,pmVar5,lVar7);\n        if (lVar3 == 0) goto LAB_00133231;\n        if (mVar9 <= lVar7) {\nLAB_00133408:\n          pmVar5[mVar9] = 1;\n          return 0;\n        }\n        goto LAB_0013327a;\n      }\n      goto LAB_00133049;\n    }" statement_identifier : (if_statement "if (0 < lVar7) {\n      lVar3 = lVar7;\n      if (pmVar5[lVar7 + -1] == 0) {\n        do {\n          lVar7 = lVar3 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          mVar4 = pmVar5[lVar3 + -2];\njoined_r0x00133029:\n          lVar3 = lVar7;\n        } while (mVar4 == 0);\n        if (s < lVar7) goto LAB_00133049;\n        lVar3 = __gmpn_add_n(pmVar5,ap,pmVar5,lVar7);\n        if (lVar3 == 0) goto LAB_00133231;\n        if (mVar9 <= lVar7) {\nLAB_00133408:\n          pmVar5[mVar9] = 1;\n          return 0;\n        }\n        goto LAB_0013327a;\n      }\n      goto LAB_00133049;\n    }" if (parenthesized_expression "(0 < lVar7)" ( (binary_expression "0 < lVar7" number_literal < identifier) )) (compound_statement "{\n      lVar3 = lVar7;\n      if (pmVar5[lVar7 + -1] == 0) {\n        do {\n          lVar7 = lVar3 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          mVar4 = pmVar5[lVar3 + -2];\njoined_r0x00133029:\n          lVar3 = lVar7;\n        } while (mVar4 == 0);\n        if (s < lVar7) goto LAB_00133049;\n        lVar3 = __gmpn_add_n(pmVar5,ap,pmVar5,lVar7);\n        if (lVar3 == 0) goto LAB_00133231;\n        if (mVar9 <= lVar7) {\nLAB_00133408:\n          pmVar5[mVar9] = 1;\n          return 0;\n        }\n        goto LAB_0013327a;\n      }\n      goto LAB_00133049;\n    }" { (expression_statement "lVar3 = lVar7;" (assignment_expression "lVar3 = lVar7" identifier = identifier) ;) (if_statement "if (pmVar5[lVar7 + -1] == 0) {\n        do {\n          lVar7 = lVar3 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          mVar4 = pmVar5[lVar3 + -2];\njoined_r0x00133029:\n          lVar3 = lVar7;\n        } while (mVar4 == 0);\n        if (s < lVar7) goto LAB_00133049;\n        lVar3 = __gmpn_add_n(pmVar5,ap,pmVar5,lVar7);\n        if (lVar3 == 0) goto LAB_00133231;\n        if (mVar9 <= lVar7) {\nLAB_00133408:\n          pmVar5[mVar9] = 1;\n          return 0;\n        }\n        goto LAB_0013327a;\n      }" if (parenthesized_expression "(pmVar5[lVar7 + -1] == 0)" ( (binary_expression "pmVar5[lVar7 + -1] == 0" (subscript_expression "pmVar5[lVar7 + -1]" identifier [ (binary_expression "lVar7 + -1" identifier + number_literal) ]) == number_literal) )) (compound_statement "{\n        do {\n          lVar7 = lVar3 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          mVar4 = pmVar5[lVar3 + -2];\njoined_r0x00133029:\n          lVar3 = lVar7;\n        } while (mVar4 == 0);\n        if (s < lVar7) goto LAB_00133049;\n        lVar3 = __gmpn_add_n(pmVar5,ap,pmVar5,lVar7);\n        if (lVar3 == 0) goto LAB_00133231;\n        if (mVar9 <= lVar7) {\nLAB_00133408:\n          pmVar5[mVar9] = 1;\n          return 0;\n        }\n        goto LAB_0013327a;\n      }" { (do_statement "do {\n          lVar7 = lVar3 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          mVar4 = pmVar5[lVar3 + -2];\njoined_r0x00133029:\n          lVar3 = lVar7;\n        } while (mVar4 == 0);" do (compound_statement "{\n          lVar7 = lVar3 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          mVar4 = pmVar5[lVar3 + -2];\njoined_r0x00133029:\n          lVar3 = lVar7;\n        }" { (expression_statement "lVar7 = lVar3 + -1;" (assignment_expression "lVar7 = lVar3 + -1" identifier = (binary_expression "lVar3 + -1" identifier + number_literal)) ;) (if_statement "if (lVar7 < 1) goto LAB_0013321f;" if (parenthesized_expression "(lVar7 < 1)" ( (binary_expression "lVar7 < 1" identifier < number_literal) )) (goto_statement "goto LAB_0013321f;" goto statement_identifier ;)) (expression_statement "mVar4 = pmVar5[lVar3 + -2];" (assignment_expression "mVar4 = pmVar5[lVar3 + -2]" identifier = (subscript_expression "pmVar5[lVar3 + -2]" identifier [ (binary_expression "lVar3 + -2" identifier + number_literal) ])) ;) (labeled_statement "joined_r0x00133029:\n          lVar3 = lVar7;" statement_identifier : (expression_statement "lVar3 = lVar7;" (assignment_expression "lVar3 = lVar7" identifier = identifier) ;)) }) while (parenthesized_expression "(mVar4 == 0)" ( (binary_expression "mVar4 == 0" identifier == number_literal) )) ;) (if_statement "if (s < lVar7) goto LAB_00133049;" if (parenthesized_expression "(s < lVar7)" ( (binary_expression "s < lVar7" identifier < identifier) )) (goto_statement "goto LAB_00133049;" goto statement_identifier ;)) (expression_statement "lVar3 = __gmpn_add_n(pmVar5,ap,pmVar5,lVar7);" (assignment_expression "lVar3 = __gmpn_add_n(pmVar5,ap,pmVar5,lVar7)" identifier = (call_expression "__gmpn_add_n(pmVar5,ap,pmVar5,lVar7)" identifier (argument_list "(pmVar5,ap,pmVar5,lVar7)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (lVar3 == 0) goto LAB_00133231;" if (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00133231;" goto statement_identifier ;)) (if_statement "if (mVar9 <= lVar7) {\nLAB_00133408:\n          pmVar5[mVar9] = 1;\n          return 0;\n        }" if (parenthesized_expression "(mVar9 <= lVar7)" ( (binary_expression "mVar9 <= lVar7" identifier <= identifier) )) (compound_statement "{\nLAB_00133408:\n          pmVar5[mVar9] = 1;\n          return 0;\n        }" { (labeled_statement "LAB_00133408:\n          pmVar5[mVar9] = 1;" statement_identifier : (expression_statement "pmVar5[mVar9] = 1;" (assignment_expression "pmVar5[mVar9] = 1" (subscript_expression "pmVar5[mVar9]" identifier [ identifier ]) = number_literal) ;)) (return_statement "return 0;" return number_literal ;) })) (goto_statement "goto LAB_0013327a;" goto statement_identifier ;) })) (goto_statement "goto LAB_00133049;" goto statement_identifier ;) }))) (expression_statement "(*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11);" (call_expression "(*hook)(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11)" (parenthesized_expression "(*hook)" ( (pointer_expression "*hook" * identifier) )) (argument_list "(ctx,(mp_srcptr)0x0,0,&__gmpn_gcd_subdiv_step::one,1,uVar11)" ( identifier , (cast_expression "(mp_srcptr)0x0" ( (type_descriptor "mp_srcptr" type_identifier) ) number_literal) , number_literal , (pointer_expression "&__gmpn_gcd_subdiv_step" & identifier) (ERROR "::one" : : identifier) , number_literal , identifier ))) ;) }))) (expression_statement "__gmpn_tdiv_qr(tp,pmVar10,0,pmVar10,lVar7,ap,mVar9);" (call_expression "__gmpn_tdiv_qr(tp,pmVar10,0,pmVar10,lVar7,ap,mVar9)" identifier (argument_list "(tp,pmVar10,0,pmVar10,lVar7,ap,mVar9)" ( identifier , identifier , number_literal , identifier , identifier , identifier , identifier ))) ;) (expression_statement "lVar3 = (lVar7 - mVar9) + 1;" (assignment_expression "lVar3 = (lVar7 - mVar9) + 1" identifier = (binary_expression "(lVar7 - mVar9) + 1" (parenthesized_expression "(lVar7 - mVar9)" ( (binary_expression "lVar7 - mVar9" identifier - identifier) )) + number_literal)) ;) (if_statement "if (mVar9 < 1) goto LAB_001330fa;" if (parenthesized_expression "(mVar9 < 1)" ( (binary_expression "mVar9 < 1" identifier < number_literal) )) (goto_statement "goto LAB_001330fa;" goto statement_identifier ;)) (expression_statement "mVar4 = pmVar10[mVar9 + -1];" (assignment_expression "mVar4 = pmVar10[mVar9 + -1]" identifier = (subscript_expression "pmVar10[mVar9 + -1]" identifier [ (binary_expression "mVar9 + -1" identifier + number_literal) ])) ;) (expression_statement "lVar7 = mVar9;" (assignment_expression "lVar7 = mVar9" identifier = identifier) ;) (while_statement "while ((lVar8 = lVar7, mVar4 == 0 && (lVar8 = lVar7 + -1, lVar8 != 0))) {\n    mVar4 = pmVar10[lVar7 + -2];\n    lVar7 = lVar8;\n  }" while (parenthesized_expression "((lVar8 = lVar7, mVar4 == 0 && (lVar8 = lVar7 + -1, lVar8 != 0)))" ( (parenthesized_expression "(lVar8 = lVar7, mVar4 == 0 && (lVar8 = lVar7 + -1, lVar8 != 0))" ( (comma_expression "lVar8 = lVar7, mVar4 == 0 && (lVar8 = lVar7 + -1, lVar8 != 0)" (assignment_expression "lVar8 = lVar7" identifier = identifier) , (binary_expression "mVar4 == 0 && (lVar8 = lVar7 + -1, lVar8 != 0)" (binary_expression "mVar4 == 0" identifier == number_literal) && (parenthesized_expression "(lVar8 = lVar7 + -1, lVar8 != 0)" ( (comma_expression "lVar8 = lVar7 + -1, lVar8 != 0" (assignment_expression "lVar8 = lVar7 + -1" identifier = (binary_expression "lVar7 + -1" identifier + number_literal)) , (binary_expression "lVar8 != 0" identifier != number_literal)) )))) )) )) (compound_statement "{\n    mVar4 = pmVar10[lVar7 + -2];\n    lVar7 = lVar8;\n  }" { (expression_statement "mVar4 = pmVar10[lVar7 + -2];" (assignment_expression "mVar4 = pmVar10[lVar7 + -2]" identifier = (subscript_expression "pmVar10[lVar7 + -2]" identifier [ (binary_expression "lVar7 + -2" identifier + number_literal) ])) ;) (expression_statement "lVar7 = lVar8;" (assignment_expression "lVar7 = lVar8" identifier = identifier) ;) })) (if_statement "if (s < lVar8) goto LAB_001330fa;" if (parenthesized_expression "(s < lVar8)" ( (binary_expression "s < lVar8" identifier < identifier) )) (goto_statement "goto LAB_001330fa;" goto statement_identifier ;)) (if_statement "if (s == 0) {\n    (*hook)(ctx,ap,mVar9,tp,lVar3,uVar11);\n    return 0;\n  }" if (parenthesized_expression "(s == 0)" ( (binary_expression "s == 0" identifier == number_literal) )) (compound_statement "{\n    (*hook)(ctx,ap,mVar9,tp,lVar3,uVar11);\n    return 0;\n  }" { (expression_statement "(*hook)(ctx,ap,mVar9,tp,lVar3,uVar11);" (call_expression "(*hook)(ctx,ap,mVar9,tp,lVar3,uVar11)" (parenthesized_expression "(*hook)" ( (pointer_expression "*hook" * identifier) )) (argument_list "(ctx,ap,mVar9,tp,lVar3,uVar11)" ( identifier , identifier , identifier , identifier , identifier , identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "pmVar5 = tp;" (assignment_expression "pmVar5 = tp" identifier = identifier) ;) (if_statement "if (lVar8 < 1) {\n    __gmpn_copyi(pmVar10,ap,mVar9);\n  }\n  else {\n    lVar7 = __gmpn_add_n(pmVar10,ap,pmVar10,lVar8);\n    if (lVar7 != 0) {\n      if (mVar9 <= lVar8) {\nLAB_0013341a:\n        pmVar10[mVar9] = 1;\n        mVar9 = mVar9 + 1;\n        goto LAB_001333ef;\n      }\n      mVar4 = ap[lVar8] + 1;\n      pmVar10[lVar8] = mVar4;\n      while (lVar8 = lVar8 + 1, mVar4 == 0) {\n        if (mVar9 == lVar8) goto LAB_0013341a;\n        mVar4 = ap[lVar8] + 1;\n        pmVar10[lVar8] = mVar4;\n      }\n    }\n    if ((ap != pmVar10) && (lVar8 < mVar9)) {\n      do {\n        pmVar10[lVar8] = ap[lVar8];\n        lVar8 = lVar8 + 1;\n      } while (mVar9 != lVar8);\n    }\n  }" if (parenthesized_expression "(lVar8 < 1)" ( (binary_expression "lVar8 < 1" identifier < number_literal) )) (compound_statement "{\n    __gmpn_copyi(pmVar10,ap,mVar9);\n  }" { (expression_statement "__gmpn_copyi(pmVar10,ap,mVar9);" (call_expression "__gmpn_copyi(pmVar10,ap,mVar9)" identifier (argument_list "(pmVar10,ap,mVar9)" ( identifier , identifier , identifier ))) ;) }) (else_clause "else {\n    lVar7 = __gmpn_add_n(pmVar10,ap,pmVar10,lVar8);\n    if (lVar7 != 0) {\n      if (mVar9 <= lVar8) {\nLAB_0013341a:\n        pmVar10[mVar9] = 1;\n        mVar9 = mVar9 + 1;\n        goto LAB_001333ef;\n      }\n      mVar4 = ap[lVar8] + 1;\n      pmVar10[lVar8] = mVar4;\n      while (lVar8 = lVar8 + 1, mVar4 == 0) {\n        if (mVar9 == lVar8) goto LAB_0013341a;\n        mVar4 = ap[lVar8] + 1;\n        pmVar10[lVar8] = mVar4;\n      }\n    }\n    if ((ap != pmVar10) && (lVar8 < mVar9)) {\n      do {\n        pmVar10[lVar8] = ap[lVar8];\n        lVar8 = lVar8 + 1;\n      } while (mVar9 != lVar8);\n    }\n  }" else (compound_statement "{\n    lVar7 = __gmpn_add_n(pmVar10,ap,pmVar10,lVar8);\n    if (lVar7 != 0) {\n      if (mVar9 <= lVar8) {\nLAB_0013341a:\n        pmVar10[mVar9] = 1;\n        mVar9 = mVar9 + 1;\n        goto LAB_001333ef;\n      }\n      mVar4 = ap[lVar8] + 1;\n      pmVar10[lVar8] = mVar4;\n      while (lVar8 = lVar8 + 1, mVar4 == 0) {\n        if (mVar9 == lVar8) goto LAB_0013341a;\n        mVar4 = ap[lVar8] + 1;\n        pmVar10[lVar8] = mVar4;\n      }\n    }\n    if ((ap != pmVar10) && (lVar8 < mVar9)) {\n      do {\n        pmVar10[lVar8] = ap[lVar8];\n        lVar8 = lVar8 + 1;\n      } while (mVar9 != lVar8);\n    }\n  }" { (expression_statement "lVar7 = __gmpn_add_n(pmVar10,ap,pmVar10,lVar8);" (assignment_expression "lVar7 = __gmpn_add_n(pmVar10,ap,pmVar10,lVar8)" identifier = (call_expression "__gmpn_add_n(pmVar10,ap,pmVar10,lVar8)" identifier (argument_list "(pmVar10,ap,pmVar10,lVar8)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (lVar7 != 0) {\n      if (mVar9 <= lVar8) {\nLAB_0013341a:\n        pmVar10[mVar9] = 1;\n        mVar9 = mVar9 + 1;\n        goto LAB_001333ef;\n      }\n      mVar4 = ap[lVar8] + 1;\n      pmVar10[lVar8] = mVar4;\n      while (lVar8 = lVar8 + 1, mVar4 == 0) {\n        if (mVar9 == lVar8) goto LAB_0013341a;\n        mVar4 = ap[lVar8] + 1;\n        pmVar10[lVar8] = mVar4;\n      }\n    }" if (parenthesized_expression "(lVar7 != 0)" ( (binary_expression "lVar7 != 0" identifier != number_literal) )) (compound_statement "{\n      if (mVar9 <= lVar8) {\nLAB_0013341a:\n        pmVar10[mVar9] = 1;\n        mVar9 = mVar9 + 1;\n        goto LAB_001333ef;\n      }\n      mVar4 = ap[lVar8] + 1;\n      pmVar10[lVar8] = mVar4;\n      while (lVar8 = lVar8 + 1, mVar4 == 0) {\n        if (mVar9 == lVar8) goto LAB_0013341a;\n        mVar4 = ap[lVar8] + 1;\n        pmVar10[lVar8] = mVar4;\n      }\n    }" { (if_statement "if (mVar9 <= lVar8) {\nLAB_0013341a:\n        pmVar10[mVar9] = 1;\n        mVar9 = mVar9 + 1;\n        goto LAB_001333ef;\n      }" if (parenthesized_expression "(mVar9 <= lVar8)" ( (binary_expression "mVar9 <= lVar8" identifier <= identifier) )) (compound_statement "{\nLAB_0013341a:\n        pmVar10[mVar9] = 1;\n        mVar9 = mVar9 + 1;\n        goto LAB_001333ef;\n      }" { (labeled_statement "LAB_0013341a:\n        pmVar10[mVar9] = 1;" statement_identifier : (expression_statement "pmVar10[mVar9] = 1;" (assignment_expression "pmVar10[mVar9] = 1" (subscript_expression "pmVar10[mVar9]" identifier [ identifier ]) = number_literal) ;)) (expression_statement "mVar9 = mVar9 + 1;" (assignment_expression "mVar9 = mVar9 + 1" identifier = (binary_expression "mVar9 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_001333ef;" goto statement_identifier ;) })) (expression_statement "mVar4 = ap[lVar8] + 1;" (assignment_expression "mVar4 = ap[lVar8] + 1" identifier = (binary_expression "ap[lVar8] + 1" (subscript_expression "ap[lVar8]" identifier [ identifier ]) + number_literal)) ;) (expression_statement "pmVar10[lVar8] = mVar4;" (assignment_expression "pmVar10[lVar8] = mVar4" (subscript_expression "pmVar10[lVar8]" identifier [ identifier ]) = identifier) ;) (while_statement "while (lVar8 = lVar8 + 1, mVar4 == 0) {\n        if (mVar9 == lVar8) goto LAB_0013341a;\n        mVar4 = ap[lVar8] + 1;\n        pmVar10[lVar8] = mVar4;\n      }" while (parenthesized_expression "(lVar8 = lVar8 + 1, mVar4 == 0)" ( (comma_expression "lVar8 = lVar8 + 1, mVar4 == 0" (assignment_expression "lVar8 = lVar8 + 1" identifier = (binary_expression "lVar8 + 1" identifier + number_literal)) , (binary_expression "mVar4 == 0" identifier == number_literal)) )) (compound_statement "{\n        if (mVar9 == lVar8) goto LAB_0013341a;\n        mVar4 = ap[lVar8] + 1;\n        pmVar10[lVar8] = mVar4;\n      }" { (if_statement "if (mVar9 == lVar8) goto LAB_0013341a;" if (parenthesized_expression "(mVar9 == lVar8)" ( (binary_expression "mVar9 == lVar8" identifier == identifier) )) (goto_statement "goto LAB_0013341a;" goto statement_identifier ;)) (expression_statement "mVar4 = ap[lVar8] + 1;" (assignment_expression "mVar4 = ap[lVar8] + 1" identifier = (binary_expression "ap[lVar8] + 1" (subscript_expression "ap[lVar8]" identifier [ identifier ]) + number_literal)) ;) (expression_statement "pmVar10[lVar8] = mVar4;" (assignment_expression "pmVar10[lVar8] = mVar4" (subscript_expression "pmVar10[lVar8]" identifier [ identifier ]) = identifier) ;) })) })) (if_statement "if ((ap != pmVar10) && (lVar8 < mVar9)) {\n      do {\n        pmVar10[lVar8] = ap[lVar8];\n        lVar8 = lVar8 + 1;\n      } while (mVar9 != lVar8);\n    }" if (parenthesized_expression "((ap != pmVar10) && (lVar8 < mVar9))" ( (binary_expression "(ap != pmVar10) && (lVar8 < mVar9)" (parenthesized_expression "(ap != pmVar10)" ( (binary_expression "ap != pmVar10" identifier != identifier) )) && (parenthesized_expression "(lVar8 < mVar9)" ( (binary_expression "lVar8 < mVar9" identifier < identifier) ))) )) (compound_statement "{\n      do {\n        pmVar10[lVar8] = ap[lVar8];\n        lVar8 = lVar8 + 1;\n      } while (mVar9 != lVar8);\n    }" { (do_statement "do {\n        pmVar10[lVar8] = ap[lVar8];\n        lVar8 = lVar8 + 1;\n      } while (mVar9 != lVar8);" do (compound_statement "{\n        pmVar10[lVar8] = ap[lVar8];\n        lVar8 = lVar8 + 1;\n      }" { (expression_statement "pmVar10[lVar8] = ap[lVar8];" (assignment_expression "pmVar10[lVar8] = ap[lVar8]" (subscript_expression "pmVar10[lVar8]" identifier [ identifier ]) = (subscript_expression "ap[lVar8]" identifier [ identifier ])) ;) (expression_statement "lVar8 = lVar8 + 1;" (assignment_expression "lVar8 = lVar8 + 1" identifier = (binary_expression "lVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(mVar9 != lVar8)" ( (binary_expression "mVar9 != lVar8" identifier != identifier) )) ;) })) }))) (labeled_statement "LAB_001333ef:\n  do {\n    mVar4 = *pmVar5;\n    *pmVar5 = *pmVar5 - 1;\n    pmVar5 = pmVar5 + 1;\n  } while (mVar4 == 0);" statement_identifier : (do_statement "do {\n    mVar4 = *pmVar5;\n    *pmVar5 = *pmVar5 - 1;\n    pmVar5 = pmVar5 + 1;\n  } while (mVar4 == 0);" do (compound_statement "{\n    mVar4 = *pmVar5;\n    *pmVar5 = *pmVar5 - 1;\n    pmVar5 = pmVar5 + 1;\n  }" { (expression_statement "mVar4 = *pmVar5;" (assignment_expression "mVar4 = *pmVar5" identifier = (pointer_expression "*pmVar5" * 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)) ;) (expression_statement "pmVar5 = pmVar5 + 1;" (assignment_expression "pmVar5 = pmVar5 + 1" identifier = (binary_expression "pmVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(mVar4 == 0)" ( (binary_expression "mVar4 == 0" identifier == number_literal) )) ;)) (labeled_statement "LAB_001330fa:\n  (*hook)(ctx,(mp_srcptr)0x0,0,tp,lVar3,uVar11);" statement_identifier : (expression_statement "(*hook)(ctx,(mp_srcptr)0x0,0,tp,lVar3,uVar11);" (call_expression "(*hook)(ctx,(mp_srcptr)0x0,0,tp,lVar3,uVar11)" (parenthesized_expression "(*hook)" ( (pointer_expression "*hook" * identifier) )) (argument_list "(ctx,(mp_srcptr)0x0,0,tp,lVar3,uVar11)" ( identifier , (cast_expression "(mp_srcptr)0x0" ( (type_descriptor "mp_srcptr" type_identifier) ) number_literal) , number_literal , identifier , identifier , identifier ))) ;)) (return_statement "return mVar9;" return identifier ;) })))
(translation_unit "long __gmpn_gcd_subdiv_step\n               (long param_1,long param_2,long param_3,long param_4,code *param_5,undefined8 param_6\n               ,long *param_7)\n\n{\n  ulong uVar1;\n  ulong uVar2;\n  long lVar3;\n  long lVar4;\n  long lVar5;\n  long *plVar6;\n  long lVar7;\n  long lVar8;\n  long lVar9;\n  long lVar10;\n  uint uVar11;\n  \n  lVar3 = param_3;\n  lVar9 = param_3;\n  lVar10 = param_2;\n  if (param_3 < 1) {\nLAB_00133136:\n    do {\n      lVar9 = lVar9 + -1;\n      if (lVar9 < 0) {\n        if (param_4 != 0) {\n          return 0;\n        }\n        (*param_5)(param_6,param_1,param_3,0,0,0xffffffff);\n        return 0;\n      }\n      uVar1 = *(ulong *)(param_1 + lVar9 * 8);\n      uVar2 = *(ulong *)(param_2 + lVar9 * 8);\n    } while (uVar1 == uVar2);\n    lVar7 = lVar3;\n    lVar9 = param_3;\n    if (uVar2 < uVar1) {\n      uVar11 = 1;\n      lVar10 = param_1;\n      param_1 = param_2;\n    }\n    else {\n      uVar11 = 0;\n    }\n  }\n  else {\n    lVar7 = param_3 * 8;\n    if (*(long *)(param_1 + -8 + lVar7) != 0) {\n      if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n      goto LAB_00133136;\n    }\n    do {\n      lVar9 = lVar9 + -1;\n      if (lVar9 == 0) {\n        if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n        uVar11 = 0;\n        lVar7 = param_3;\n        goto LAB_00133008;\n      }\n    } while (*(long *)(param_1 + -8 + lVar9 * 8) == 0);\n    lVar7 = *(long *)(param_2 + -8 + lVar7);\n    while (param_3 = lVar3, lVar7 == 0) {\nLAB_00132fd1:\n      lVar3 = param_3 + -1;\n      if (lVar3 == 0) break;\n      lVar7 = *(long *)(param_2 + -8 + lVar3 * 8);\n    }\n    param_3 = lVar9;\n    lVar9 = param_3;\n    if (lVar3 == param_3) goto LAB_00133136;\n    uVar11 = 0;\n    lVar7 = lVar3;\n    if (lVar3 < param_3) {\n      uVar11 = 1;\n      lVar7 = param_3;\n      lVar9 = lVar3;\n      lVar10 = param_1;\n      param_1 = param_2;\n    }\n  }\nLAB_00133008:\n  if (lVar9 <= param_4) {\n    if (param_4 != 0) {\n      return 0;\n    }\n    (*param_5)(param_6,lVar10,lVar7,0,0,uVar11 ^ 1);\n    return 0;\n  }\n  lVar3 = lVar10;\n  if (((lVar9 == 0) || (lVar4 = __gmpn_sub_n(lVar10,lVar10,param_1,lVar9), lVar4 == 0)) ||\n     (lVar7 <= lVar9)) {\nLAB_0013301a:\n    if (0 < lVar7) {\n      lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\n      goto joined_r0x00133029;\n    }\nLAB_0013321f:\n    lVar4 = lVar7;\n    if (lVar7 <= param_4) {\n      if ((lVar7 == 0) || (lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7), lVar3 == 0))\n      goto LAB_00133231;\nLAB_0013327a:\n      lVar3 = lVar7 * 8;\n      lVar7 = lVar7 + 1;\n      lVar4 = *(long *)(param_1 + lVar3) + 1;\n      *(long *)(lVar10 + lVar3) = lVar4;\n      while (lVar4 == 0) {\n        if (lVar9 == lVar7) goto LAB_00133408;\n        lVar3 = lVar7 * 8;\n        lVar7 = lVar7 + 1;\n        lVar4 = *(long *)(param_1 + lVar3) + 1;\n        *(long *)(lVar10 + -8 + lVar7 * 8) = lVar4;\n      }\nLAB_00133231:\n      if (param_1 != lVar10) {\n        if (lVar7 < lVar9) {\n          do {\n            *(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8);\n            lVar7 = lVar7 + 1;\n          } while (lVar9 != lVar7);\n        }\n        return 0;\n      }\n      return 0;\n    }\nLAB_00133049:\n    lVar8 = lVar9;\n    lVar7 = lVar4;\n    if (lVar9 == lVar4) {\n      do {\n        lVar8 = lVar8 + -1;\n        if (lVar8 < 0) {\n          if (0 < param_4) {\n            (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n            return 0;\n          }\n          (*param_5)(param_6,lVar10,lVar4,0,0,uVar11);\n          return 0;\n        }\n        uVar1 = *(ulong *)(param_1 + lVar8 * 8);\n        uVar2 = *(ulong *)(lVar10 + lVar8 * 8);\n      } while (uVar1 == uVar2);\n      if (uVar1 < uVar2 || uVar1 == uVar2) {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      }\n      else {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n        uVar11 = uVar11 ^ 1;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }\n    }\n    else {\n      (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      if (lVar4 < lVar9) {\n        uVar11 = uVar11 ^ 1;\n        lVar7 = lVar9;\n        lVar9 = lVar4;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }\n    }\n  }\n  else {\n    plVar6 = (long *)(lVar10 + lVar9 * 8);\n    lVar8 = *plVar6;\n    lVar4 = lVar9 + 1;\n    *plVar6 = lVar8 + -1;\n    if (lVar8 == 0) {\n      do {\n        if (lVar7 == lVar4) goto LAB_00133465;\n        lVar8 = *(long *)(lVar10 + lVar4 * 8);\n        lVar4 = lVar4 + 1;\n        *(long *)(lVar10 + -8 + lVar4 * 8) = lVar8 + -1;\n      } while (lVar8 == 0);\n      goto LAB_0013301a;\n    }\nLAB_00133465:\n    if (0 < lVar7) {\n      lVar4 = lVar7;\n      if (*(long *)(lVar10 + -8 + lVar7 * 8) == 0) {\n        do {\n          lVar7 = lVar7 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\njoined_r0x00133029:\n        } while (lVar4 == 0);\n        lVar4 = lVar7;\n        if (param_4 < lVar7) goto LAB_00133049;\n        lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7);\n        if (lVar3 == 0) goto LAB_00133231;\n        if (lVar9 <= lVar7) {\nLAB_00133408:\n          *(undefined8 *)(lVar10 + lVar9 * 8) = 1;\n          return 0;\n        }\n        goto LAB_0013327a;\n      }\n      goto LAB_00133049;\n    }\n    (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n  }\n  __gmpn_tdiv_qr(param_7,lVar3,0,lVar3,lVar7,param_1,lVar9);\n  lVar10 = (lVar7 - lVar9) + 1;\n  if (lVar9 < 1) goto LAB_001330fa;\n  lVar7 = lVar9 * 8;\n  lVar4 = *(long *)(lVar3 + -8 + lVar7);\n  lVar8 = lVar9;\n  while ((lVar4 == 0 && (lVar8 = lVar8 + -1, lVar8 != 0))) {\n    lVar4 = *(long *)(lVar3 + -8 + lVar8 * 8);\n  }\n  if (param_4 < lVar8) goto LAB_001330fa;\n  if (param_4 == 0) {\n    (*param_5)(param_6,param_1,lVar9,param_7,lVar10,uVar11);\n    return 0;\n  }\n  plVar6 = param_7;\n  if (lVar8 < 1) {\n    __gmpn_copyi(lVar3,param_1,lVar9);\n  }\n  else {\n    lVar4 = __gmpn_add_n(lVar3,param_1,lVar3,lVar8);\n    if (lVar4 != 0) {\n      if (lVar9 <= lVar8) {\nLAB_0013341a:\n        lVar9 = lVar9 + 1;\n        *(undefined8 *)(lVar3 + lVar7) = 1;\n        goto LAB_001333ef;\n      }\n      lVar4 = lVar8 * 8;\n      lVar8 = lVar8 + 1;\n      lVar5 = *(long *)(param_1 + lVar4) + 1;\n      *(long *)(lVar3 + lVar4) = lVar5;\n      while (lVar5 == 0) {\n        if (lVar9 == lVar8) goto LAB_0013341a;\n        lVar4 = lVar8 * 8;\n        lVar8 = lVar8 + 1;\n        lVar5 = *(long *)(param_1 + lVar4) + 1;\n        *(long *)(lVar3 + -8 + lVar8 * 8) = lVar5;\n      }\n    }\n    if ((param_1 != lVar3) && (lVar8 < lVar9)) {\n      do {\n        *(undefined8 *)(lVar3 + lVar8 * 8) = *(undefined8 *)(param_1 + lVar8 * 8);\n        lVar8 = lVar8 + 1;\n      } while (lVar9 != lVar8);\n    }\n  }\nLAB_001333ef:\n  do {\n    lVar3 = *plVar6;\n    *plVar6 = *plVar6 + -1;\n    plVar6 = plVar6 + 1;\n  } while (lVar3 == 0);\nLAB_001330fa:\n  (*param_5)(param_6,0,0,param_7,lVar10,uVar11);\n  return lVar9;\n}\n\n" (function_definition "long __gmpn_gcd_subdiv_step\n               (long param_1,long param_2,long param_3,long param_4,code *param_5,undefined8 param_6\n               ,long *param_7)\n\n{\n  ulong uVar1;\n  ulong uVar2;\n  long lVar3;\n  long lVar4;\n  long lVar5;\n  long *plVar6;\n  long lVar7;\n  long lVar8;\n  long lVar9;\n  long lVar10;\n  uint uVar11;\n  \n  lVar3 = param_3;\n  lVar9 = param_3;\n  lVar10 = param_2;\n  if (param_3 < 1) {\nLAB_00133136:\n    do {\n      lVar9 = lVar9 + -1;\n      if (lVar9 < 0) {\n        if (param_4 != 0) {\n          return 0;\n        }\n        (*param_5)(param_6,param_1,param_3,0,0,0xffffffff);\n        return 0;\n      }\n      uVar1 = *(ulong *)(param_1 + lVar9 * 8);\n      uVar2 = *(ulong *)(param_2 + lVar9 * 8);\n    } while (uVar1 == uVar2);\n    lVar7 = lVar3;\n    lVar9 = param_3;\n    if (uVar2 < uVar1) {\n      uVar11 = 1;\n      lVar10 = param_1;\n      param_1 = param_2;\n    }\n    else {\n      uVar11 = 0;\n    }\n  }\n  else {\n    lVar7 = param_3 * 8;\n    if (*(long *)(param_1 + -8 + lVar7) != 0) {\n      if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n      goto LAB_00133136;\n    }\n    do {\n      lVar9 = lVar9 + -1;\n      if (lVar9 == 0) {\n        if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n        uVar11 = 0;\n        lVar7 = param_3;\n        goto LAB_00133008;\n      }\n    } while (*(long *)(param_1 + -8 + lVar9 * 8) == 0);\n    lVar7 = *(long *)(param_2 + -8 + lVar7);\n    while (param_3 = lVar3, lVar7 == 0) {\nLAB_00132fd1:\n      lVar3 = param_3 + -1;\n      if (lVar3 == 0) break;\n      lVar7 = *(long *)(param_2 + -8 + lVar3 * 8);\n    }\n    param_3 = lVar9;\n    lVar9 = param_3;\n    if (lVar3 == param_3) goto LAB_00133136;\n    uVar11 = 0;\n    lVar7 = lVar3;\n    if (lVar3 < param_3) {\n      uVar11 = 1;\n      lVar7 = param_3;\n      lVar9 = lVar3;\n      lVar10 = param_1;\n      param_1 = param_2;\n    }\n  }\nLAB_00133008:\n  if (lVar9 <= param_4) {\n    if (param_4 != 0) {\n      return 0;\n    }\n    (*param_5)(param_6,lVar10,lVar7,0,0,uVar11 ^ 1);\n    return 0;\n  }\n  lVar3 = lVar10;\n  if (((lVar9 == 0) || (lVar4 = __gmpn_sub_n(lVar10,lVar10,param_1,lVar9), lVar4 == 0)) ||\n     (lVar7 <= lVar9)) {\nLAB_0013301a:\n    if (0 < lVar7) {\n      lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\n      goto joined_r0x00133029;\n    }\nLAB_0013321f:\n    lVar4 = lVar7;\n    if (lVar7 <= param_4) {\n      if ((lVar7 == 0) || (lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7), lVar3 == 0))\n      goto LAB_00133231;\nLAB_0013327a:\n      lVar3 = lVar7 * 8;\n      lVar7 = lVar7 + 1;\n      lVar4 = *(long *)(param_1 + lVar3) + 1;\n      *(long *)(lVar10 + lVar3) = lVar4;\n      while (lVar4 == 0) {\n        if (lVar9 == lVar7) goto LAB_00133408;\n        lVar3 = lVar7 * 8;\n        lVar7 = lVar7 + 1;\n        lVar4 = *(long *)(param_1 + lVar3) + 1;\n        *(long *)(lVar10 + -8 + lVar7 * 8) = lVar4;\n      }\nLAB_00133231:\n      if (param_1 != lVar10) {\n        if (lVar7 < lVar9) {\n          do {\n            *(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8);\n            lVar7 = lVar7 + 1;\n          } while (lVar9 != lVar7);\n        }\n        return 0;\n      }\n      return 0;\n    }\nLAB_00133049:\n    lVar8 = lVar9;\n    lVar7 = lVar4;\n    if (lVar9 == lVar4) {\n      do {\n        lVar8 = lVar8 + -1;\n        if (lVar8 < 0) {\n          if (0 < param_4) {\n            (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n            return 0;\n          }\n          (*param_5)(param_6,lVar10,lVar4,0,0,uVar11);\n          return 0;\n        }\n        uVar1 = *(ulong *)(param_1 + lVar8 * 8);\n        uVar2 = *(ulong *)(lVar10 + lVar8 * 8);\n      } while (uVar1 == uVar2);\n      if (uVar1 < uVar2 || uVar1 == uVar2) {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      }\n      else {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n        uVar11 = uVar11 ^ 1;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }\n    }\n    else {\n      (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      if (lVar4 < lVar9) {\n        uVar11 = uVar11 ^ 1;\n        lVar7 = lVar9;\n        lVar9 = lVar4;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }\n    }\n  }\n  else {\n    plVar6 = (long *)(lVar10 + lVar9 * 8);\n    lVar8 = *plVar6;\n    lVar4 = lVar9 + 1;\n    *plVar6 = lVar8 + -1;\n    if (lVar8 == 0) {\n      do {\n        if (lVar7 == lVar4) goto LAB_00133465;\n        lVar8 = *(long *)(lVar10 + lVar4 * 8);\n        lVar4 = lVar4 + 1;\n        *(long *)(lVar10 + -8 + lVar4 * 8) = lVar8 + -1;\n      } while (lVar8 == 0);\n      goto LAB_0013301a;\n    }\nLAB_00133465:\n    if (0 < lVar7) {\n      lVar4 = lVar7;\n      if (*(long *)(lVar10 + -8 + lVar7 * 8) == 0) {\n        do {\n          lVar7 = lVar7 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\njoined_r0x00133029:\n        } while (lVar4 == 0);\n        lVar4 = lVar7;\n        if (param_4 < lVar7) goto LAB_00133049;\n        lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7);\n        if (lVar3 == 0) goto LAB_00133231;\n        if (lVar9 <= lVar7) {\nLAB_00133408:\n          *(undefined8 *)(lVar10 + lVar9 * 8) = 1;\n          return 0;\n        }\n        goto LAB_0013327a;\n      }\n      goto LAB_00133049;\n    }\n    (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n  }\n  __gmpn_tdiv_qr(param_7,lVar3,0,lVar3,lVar7,param_1,lVar9);\n  lVar10 = (lVar7 - lVar9) + 1;\n  if (lVar9 < 1) goto LAB_001330fa;\n  lVar7 = lVar9 * 8;\n  lVar4 = *(long *)(lVar3 + -8 + lVar7);\n  lVar8 = lVar9;\n  while ((lVar4 == 0 && (lVar8 = lVar8 + -1, lVar8 != 0))) {\n    lVar4 = *(long *)(lVar3 + -8 + lVar8 * 8);\n  }\n  if (param_4 < lVar8) goto LAB_001330fa;\n  if (param_4 == 0) {\n    (*param_5)(param_6,param_1,lVar9,param_7,lVar10,uVar11);\n    return 0;\n  }\n  plVar6 = param_7;\n  if (lVar8 < 1) {\n    __gmpn_copyi(lVar3,param_1,lVar9);\n  }\n  else {\n    lVar4 = __gmpn_add_n(lVar3,param_1,lVar3,lVar8);\n    if (lVar4 != 0) {\n      if (lVar9 <= lVar8) {\nLAB_0013341a:\n        lVar9 = lVar9 + 1;\n        *(undefined8 *)(lVar3 + lVar7) = 1;\n        goto LAB_001333ef;\n      }\n      lVar4 = lVar8 * 8;\n      lVar8 = lVar8 + 1;\n      lVar5 = *(long *)(param_1 + lVar4) + 1;\n      *(long *)(lVar3 + lVar4) = lVar5;\n      while (lVar5 == 0) {\n        if (lVar9 == lVar8) goto LAB_0013341a;\n        lVar4 = lVar8 * 8;\n        lVar8 = lVar8 + 1;\n        lVar5 = *(long *)(param_1 + lVar4) + 1;\n        *(long *)(lVar3 + -8 + lVar8 * 8) = lVar5;\n      }\n    }\n    if ((param_1 != lVar3) && (lVar8 < lVar9)) {\n      do {\n        *(undefined8 *)(lVar3 + lVar8 * 8) = *(undefined8 *)(param_1 + lVar8 * 8);\n        lVar8 = lVar8 + 1;\n      } while (lVar9 != lVar8);\n    }\n  }\nLAB_001333ef:\n  do {\n    lVar3 = *plVar6;\n    *plVar6 = *plVar6 + -1;\n    plVar6 = plVar6 + 1;\n  } while (lVar3 == 0);\nLAB_001330fa:\n  (*param_5)(param_6,0,0,param_7,lVar10,uVar11);\n  return lVar9;\n}" (sized_type_specifier "long" long) (function_declarator "__gmpn_gcd_subdiv_step\n               (long param_1,long param_2,long param_3,long param_4,code *param_5,undefined8 param_6\n               ,long *param_7)" identifier (parameter_list "(long param_1,long param_2,long param_3,long param_4,code *param_5,undefined8 param_6\n               ,long *param_7)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_4" (sized_type_specifier "long" long) identifier) , (parameter_declaration "code *param_5" type_identifier (pointer_declarator "*param_5" * identifier)) , (parameter_declaration "undefined8 param_6" type_identifier identifier) , (parameter_declaration "long *param_7" (sized_type_specifier "long" long) (pointer_declarator "*param_7" * identifier)) ))) (compound_statement "{\n  ulong uVar1;\n  ulong uVar2;\n  long lVar3;\n  long lVar4;\n  long lVar5;\n  long *plVar6;\n  long lVar7;\n  long lVar8;\n  long lVar9;\n  long lVar10;\n  uint uVar11;\n  \n  lVar3 = param_3;\n  lVar9 = param_3;\n  lVar10 = param_2;\n  if (param_3 < 1) {\nLAB_00133136:\n    do {\n      lVar9 = lVar9 + -1;\n      if (lVar9 < 0) {\n        if (param_4 != 0) {\n          return 0;\n        }\n        (*param_5)(param_6,param_1,param_3,0,0,0xffffffff);\n        return 0;\n      }\n      uVar1 = *(ulong *)(param_1 + lVar9 * 8);\n      uVar2 = *(ulong *)(param_2 + lVar9 * 8);\n    } while (uVar1 == uVar2);\n    lVar7 = lVar3;\n    lVar9 = param_3;\n    if (uVar2 < uVar1) {\n      uVar11 = 1;\n      lVar10 = param_1;\n      param_1 = param_2;\n    }\n    else {\n      uVar11 = 0;\n    }\n  }\n  else {\n    lVar7 = param_3 * 8;\n    if (*(long *)(param_1 + -8 + lVar7) != 0) {\n      if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n      goto LAB_00133136;\n    }\n    do {\n      lVar9 = lVar9 + -1;\n      if (lVar9 == 0) {\n        if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n        uVar11 = 0;\n        lVar7 = param_3;\n        goto LAB_00133008;\n      }\n    } while (*(long *)(param_1 + -8 + lVar9 * 8) == 0);\n    lVar7 = *(long *)(param_2 + -8 + lVar7);\n    while (param_3 = lVar3, lVar7 == 0) {\nLAB_00132fd1:\n      lVar3 = param_3 + -1;\n      if (lVar3 == 0) break;\n      lVar7 = *(long *)(param_2 + -8 + lVar3 * 8);\n    }\n    param_3 = lVar9;\n    lVar9 = param_3;\n    if (lVar3 == param_3) goto LAB_00133136;\n    uVar11 = 0;\n    lVar7 = lVar3;\n    if (lVar3 < param_3) {\n      uVar11 = 1;\n      lVar7 = param_3;\n      lVar9 = lVar3;\n      lVar10 = param_1;\n      param_1 = param_2;\n    }\n  }\nLAB_00133008:\n  if (lVar9 <= param_4) {\n    if (param_4 != 0) {\n      return 0;\n    }\n    (*param_5)(param_6,lVar10,lVar7,0,0,uVar11 ^ 1);\n    return 0;\n  }\n  lVar3 = lVar10;\n  if (((lVar9 == 0) || (lVar4 = __gmpn_sub_n(lVar10,lVar10,param_1,lVar9), lVar4 == 0)) ||\n     (lVar7 <= lVar9)) {\nLAB_0013301a:\n    if (0 < lVar7) {\n      lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\n      goto joined_r0x00133029;\n    }\nLAB_0013321f:\n    lVar4 = lVar7;\n    if (lVar7 <= param_4) {\n      if ((lVar7 == 0) || (lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7), lVar3 == 0))\n      goto LAB_00133231;\nLAB_0013327a:\n      lVar3 = lVar7 * 8;\n      lVar7 = lVar7 + 1;\n      lVar4 = *(long *)(param_1 + lVar3) + 1;\n      *(long *)(lVar10 + lVar3) = lVar4;\n      while (lVar4 == 0) {\n        if (lVar9 == lVar7) goto LAB_00133408;\n        lVar3 = lVar7 * 8;\n        lVar7 = lVar7 + 1;\n        lVar4 = *(long *)(param_1 + lVar3) + 1;\n        *(long *)(lVar10 + -8 + lVar7 * 8) = lVar4;\n      }\nLAB_00133231:\n      if (param_1 != lVar10) {\n        if (lVar7 < lVar9) {\n          do {\n            *(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8);\n            lVar7 = lVar7 + 1;\n          } while (lVar9 != lVar7);\n        }\n        return 0;\n      }\n      return 0;\n    }\nLAB_00133049:\n    lVar8 = lVar9;\n    lVar7 = lVar4;\n    if (lVar9 == lVar4) {\n      do {\n        lVar8 = lVar8 + -1;\n        if (lVar8 < 0) {\n          if (0 < param_4) {\n            (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n            return 0;\n          }\n          (*param_5)(param_6,lVar10,lVar4,0,0,uVar11);\n          return 0;\n        }\n        uVar1 = *(ulong *)(param_1 + lVar8 * 8);\n        uVar2 = *(ulong *)(lVar10 + lVar8 * 8);\n      } while (uVar1 == uVar2);\n      if (uVar1 < uVar2 || uVar1 == uVar2) {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      }\n      else {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n        uVar11 = uVar11 ^ 1;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }\n    }\n    else {\n      (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      if (lVar4 < lVar9) {\n        uVar11 = uVar11 ^ 1;\n        lVar7 = lVar9;\n        lVar9 = lVar4;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }\n    }\n  }\n  else {\n    plVar6 = (long *)(lVar10 + lVar9 * 8);\n    lVar8 = *plVar6;\n    lVar4 = lVar9 + 1;\n    *plVar6 = lVar8 + -1;\n    if (lVar8 == 0) {\n      do {\n        if (lVar7 == lVar4) goto LAB_00133465;\n        lVar8 = *(long *)(lVar10 + lVar4 * 8);\n        lVar4 = lVar4 + 1;\n        *(long *)(lVar10 + -8 + lVar4 * 8) = lVar8 + -1;\n      } while (lVar8 == 0);\n      goto LAB_0013301a;\n    }\nLAB_00133465:\n    if (0 < lVar7) {\n      lVar4 = lVar7;\n      if (*(long *)(lVar10 + -8 + lVar7 * 8) == 0) {\n        do {\n          lVar7 = lVar7 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\njoined_r0x00133029:\n        } while (lVar4 == 0);\n        lVar4 = lVar7;\n        if (param_4 < lVar7) goto LAB_00133049;\n        lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7);\n        if (lVar3 == 0) goto LAB_00133231;\n        if (lVar9 <= lVar7) {\nLAB_00133408:\n          *(undefined8 *)(lVar10 + lVar9 * 8) = 1;\n          return 0;\n        }\n        goto LAB_0013327a;\n      }\n      goto LAB_00133049;\n    }\n    (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n  }\n  __gmpn_tdiv_qr(param_7,lVar3,0,lVar3,lVar7,param_1,lVar9);\n  lVar10 = (lVar7 - lVar9) + 1;\n  if (lVar9 < 1) goto LAB_001330fa;\n  lVar7 = lVar9 * 8;\n  lVar4 = *(long *)(lVar3 + -8 + lVar7);\n  lVar8 = lVar9;\n  while ((lVar4 == 0 && (lVar8 = lVar8 + -1, lVar8 != 0))) {\n    lVar4 = *(long *)(lVar3 + -8 + lVar8 * 8);\n  }\n  if (param_4 < lVar8) goto LAB_001330fa;\n  if (param_4 == 0) {\n    (*param_5)(param_6,param_1,lVar9,param_7,lVar10,uVar11);\n    return 0;\n  }\n  plVar6 = param_7;\n  if (lVar8 < 1) {\n    __gmpn_copyi(lVar3,param_1,lVar9);\n  }\n  else {\n    lVar4 = __gmpn_add_n(lVar3,param_1,lVar3,lVar8);\n    if (lVar4 != 0) {\n      if (lVar9 <= lVar8) {\nLAB_0013341a:\n        lVar9 = lVar9 + 1;\n        *(undefined8 *)(lVar3 + lVar7) = 1;\n        goto LAB_001333ef;\n      }\n      lVar4 = lVar8 * 8;\n      lVar8 = lVar8 + 1;\n      lVar5 = *(long *)(param_1 + lVar4) + 1;\n      *(long *)(lVar3 + lVar4) = lVar5;\n      while (lVar5 == 0) {\n        if (lVar9 == lVar8) goto LAB_0013341a;\n        lVar4 = lVar8 * 8;\n        lVar8 = lVar8 + 1;\n        lVar5 = *(long *)(param_1 + lVar4) + 1;\n        *(long *)(lVar3 + -8 + lVar8 * 8) = lVar5;\n      }\n    }\n    if ((param_1 != lVar3) && (lVar8 < lVar9)) {\n      do {\n        *(undefined8 *)(lVar3 + lVar8 * 8) = *(undefined8 *)(param_1 + lVar8 * 8);\n        lVar8 = lVar8 + 1;\n      } while (lVar9 != lVar8);\n    }\n  }\nLAB_001333ef:\n  do {\n    lVar3 = *plVar6;\n    *plVar6 = *plVar6 + -1;\n    plVar6 = plVar6 + 1;\n  } while (lVar3 == 0);\nLAB_001330fa:\n  (*param_5)(param_6,0,0,param_7,lVar10,uVar11);\n  return lVar9;\n}" { (declaration "ulong uVar1;" type_identifier identifier ;) (declaration "ulong uVar2;" type_identifier identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar6;" (sized_type_specifier "long" long) (pointer_declarator "*plVar6" * identifier) ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (expression_statement "lVar3 = param_3;" (assignment_expression "lVar3 = param_3" identifier = identifier) ;) (expression_statement "lVar9 = param_3;" (assignment_expression "lVar9 = param_3" identifier = identifier) ;) (expression_statement "lVar10 = param_2;" (assignment_expression "lVar10 = param_2" identifier = identifier) ;) (if_statement "if (param_3 < 1) {\nLAB_00133136:\n    do {\n      lVar9 = lVar9 + -1;\n      if (lVar9 < 0) {\n        if (param_4 != 0) {\n          return 0;\n        }\n        (*param_5)(param_6,param_1,param_3,0,0,0xffffffff);\n        return 0;\n      }\n      uVar1 = *(ulong *)(param_1 + lVar9 * 8);\n      uVar2 = *(ulong *)(param_2 + lVar9 * 8);\n    } while (uVar1 == uVar2);\n    lVar7 = lVar3;\n    lVar9 = param_3;\n    if (uVar2 < uVar1) {\n      uVar11 = 1;\n      lVar10 = param_1;\n      param_1 = param_2;\n    }\n    else {\n      uVar11 = 0;\n    }\n  }\n  else {\n    lVar7 = param_3 * 8;\n    if (*(long *)(param_1 + -8 + lVar7) != 0) {\n      if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n      goto LAB_00133136;\n    }\n    do {\n      lVar9 = lVar9 + -1;\n      if (lVar9 == 0) {\n        if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n        uVar11 = 0;\n        lVar7 = param_3;\n        goto LAB_00133008;\n      }\n    } while (*(long *)(param_1 + -8 + lVar9 * 8) == 0);\n    lVar7 = *(long *)(param_2 + -8 + lVar7);\n    while (param_3 = lVar3, lVar7 == 0) {\nLAB_00132fd1:\n      lVar3 = param_3 + -1;\n      if (lVar3 == 0) break;\n      lVar7 = *(long *)(param_2 + -8 + lVar3 * 8);\n    }\n    param_3 = lVar9;\n    lVar9 = param_3;\n    if (lVar3 == param_3) goto LAB_00133136;\n    uVar11 = 0;\n    lVar7 = lVar3;\n    if (lVar3 < param_3) {\n      uVar11 = 1;\n      lVar7 = param_3;\n      lVar9 = lVar3;\n      lVar10 = param_1;\n      param_1 = param_2;\n    }\n  }" if (parenthesized_expression "(param_3 < 1)" ( (binary_expression "param_3 < 1" identifier < number_literal) )) (compound_statement "{\nLAB_00133136:\n    do {\n      lVar9 = lVar9 + -1;\n      if (lVar9 < 0) {\n        if (param_4 != 0) {\n          return 0;\n        }\n        (*param_5)(param_6,param_1,param_3,0,0,0xffffffff);\n        return 0;\n      }\n      uVar1 = *(ulong *)(param_1 + lVar9 * 8);\n      uVar2 = *(ulong *)(param_2 + lVar9 * 8);\n    } while (uVar1 == uVar2);\n    lVar7 = lVar3;\n    lVar9 = param_3;\n    if (uVar2 < uVar1) {\n      uVar11 = 1;\n      lVar10 = param_1;\n      param_1 = param_2;\n    }\n    else {\n      uVar11 = 0;\n    }\n  }" { (labeled_statement "LAB_00133136:\n    do {\n      lVar9 = lVar9 + -1;\n      if (lVar9 < 0) {\n        if (param_4 != 0) {\n          return 0;\n        }\n        (*param_5)(param_6,param_1,param_3,0,0,0xffffffff);\n        return 0;\n      }\n      uVar1 = *(ulong *)(param_1 + lVar9 * 8);\n      uVar2 = *(ulong *)(param_2 + lVar9 * 8);\n    } while (uVar1 == uVar2);" statement_identifier : (do_statement "do {\n      lVar9 = lVar9 + -1;\n      if (lVar9 < 0) {\n        if (param_4 != 0) {\n          return 0;\n        }\n        (*param_5)(param_6,param_1,param_3,0,0,0xffffffff);\n        return 0;\n      }\n      uVar1 = *(ulong *)(param_1 + lVar9 * 8);\n      uVar2 = *(ulong *)(param_2 + lVar9 * 8);\n    } while (uVar1 == uVar2);" do (compound_statement "{\n      lVar9 = lVar9 + -1;\n      if (lVar9 < 0) {\n        if (param_4 != 0) {\n          return 0;\n        }\n        (*param_5)(param_6,param_1,param_3,0,0,0xffffffff);\n        return 0;\n      }\n      uVar1 = *(ulong *)(param_1 + lVar9 * 8);\n      uVar2 = *(ulong *)(param_2 + lVar9 * 8);\n    }" { (expression_statement "lVar9 = lVar9 + -1;" (assignment_expression "lVar9 = lVar9 + -1" identifier = (binary_expression "lVar9 + -1" identifier + number_literal)) ;) (if_statement "if (lVar9 < 0) {\n        if (param_4 != 0) {\n          return 0;\n        }\n        (*param_5)(param_6,param_1,param_3,0,0,0xffffffff);\n        return 0;\n      }" if (parenthesized_expression "(lVar9 < 0)" ( (binary_expression "lVar9 < 0" identifier < number_literal) )) (compound_statement "{\n        if (param_4 != 0) {\n          return 0;\n        }\n        (*param_5)(param_6,param_1,param_3,0,0,0xffffffff);\n        return 0;\n      }" { (if_statement "if (param_4 != 0) {\n          return 0;\n        }" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "(*param_5)(param_6,param_1,param_3,0,0,0xffffffff);" (call_expression "(*param_5)(param_6,param_1,param_3,0,0,0xffffffff)" (parenthesized_expression "(*param_5)" ( (pointer_expression "*param_5" * identifier) )) (argument_list "(param_6,param_1,param_3,0,0,0xffffffff)" ( identifier , identifier , identifier , number_literal , number_literal , number_literal ))) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar1 = *(ulong *)(param_1 + lVar9 * 8);" (assignment_expression "uVar1 = *(ulong *)(param_1 + lVar9 * 8)" identifier = (pointer_expression "*(ulong *)(param_1 + lVar9 * 8)" * (cast_expression "(ulong *)(param_1 + lVar9 * 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + lVar9 * 8)" ( (binary_expression "param_1 + lVar9 * 8" identifier + (binary_expression "lVar9 * 8" identifier * number_literal)) ))))) ;) (expression_statement "uVar2 = *(ulong *)(param_2 + lVar9 * 8);" (assignment_expression "uVar2 = *(ulong *)(param_2 + lVar9 * 8)" identifier = (pointer_expression "*(ulong *)(param_2 + lVar9 * 8)" * (cast_expression "(ulong *)(param_2 + lVar9 * 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + lVar9 * 8)" ( (binary_expression "param_2 + lVar9 * 8" identifier + (binary_expression "lVar9 * 8" identifier * number_literal)) ))))) ;) }) while (parenthesized_expression "(uVar1 == uVar2)" ( (binary_expression "uVar1 == uVar2" identifier == identifier) )) ;)) (expression_statement "lVar7 = lVar3;" (assignment_expression "lVar7 = lVar3" identifier = identifier) ;) (expression_statement "lVar9 = param_3;" (assignment_expression "lVar9 = param_3" identifier = identifier) ;) (if_statement "if (uVar2 < uVar1) {\n      uVar11 = 1;\n      lVar10 = param_1;\n      param_1 = param_2;\n    }\n    else {\n      uVar11 = 0;\n    }" if (parenthesized_expression "(uVar2 < uVar1)" ( (binary_expression "uVar2 < uVar1" identifier < identifier) )) (compound_statement "{\n      uVar11 = 1;\n      lVar10 = param_1;\n      param_1 = param_2;\n    }" { (expression_statement "uVar11 = 1;" (assignment_expression "uVar11 = 1" identifier = number_literal) ;) (expression_statement "lVar10 = param_1;" (assignment_expression "lVar10 = param_1" identifier = identifier) ;) (expression_statement "param_1 = param_2;" (assignment_expression "param_1 = param_2" identifier = identifier) ;) }) (else_clause "else {\n      uVar11 = 0;\n    }" else (compound_statement "{\n      uVar11 = 0;\n    }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) }))) }) (else_clause "else {\n    lVar7 = param_3 * 8;\n    if (*(long *)(param_1 + -8 + lVar7) != 0) {\n      if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n      goto LAB_00133136;\n    }\n    do {\n      lVar9 = lVar9 + -1;\n      if (lVar9 == 0) {\n        if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n        uVar11 = 0;\n        lVar7 = param_3;\n        goto LAB_00133008;\n      }\n    } while (*(long *)(param_1 + -8 + lVar9 * 8) == 0);\n    lVar7 = *(long *)(param_2 + -8 + lVar7);\n    while (param_3 = lVar3, lVar7 == 0) {\nLAB_00132fd1:\n      lVar3 = param_3 + -1;\n      if (lVar3 == 0) break;\n      lVar7 = *(long *)(param_2 + -8 + lVar3 * 8);\n    }\n    param_3 = lVar9;\n    lVar9 = param_3;\n    if (lVar3 == param_3) goto LAB_00133136;\n    uVar11 = 0;\n    lVar7 = lVar3;\n    if (lVar3 < param_3) {\n      uVar11 = 1;\n      lVar7 = param_3;\n      lVar9 = lVar3;\n      lVar10 = param_1;\n      param_1 = param_2;\n    }\n  }" else (compound_statement "{\n    lVar7 = param_3 * 8;\n    if (*(long *)(param_1 + -8 + lVar7) != 0) {\n      if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n      goto LAB_00133136;\n    }\n    do {\n      lVar9 = lVar9 + -1;\n      if (lVar9 == 0) {\n        if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n        uVar11 = 0;\n        lVar7 = param_3;\n        goto LAB_00133008;\n      }\n    } while (*(long *)(param_1 + -8 + lVar9 * 8) == 0);\n    lVar7 = *(long *)(param_2 + -8 + lVar7);\n    while (param_3 = lVar3, lVar7 == 0) {\nLAB_00132fd1:\n      lVar3 = param_3 + -1;\n      if (lVar3 == 0) break;\n      lVar7 = *(long *)(param_2 + -8 + lVar3 * 8);\n    }\n    param_3 = lVar9;\n    lVar9 = param_3;\n    if (lVar3 == param_3) goto LAB_00133136;\n    uVar11 = 0;\n    lVar7 = lVar3;\n    if (lVar3 < param_3) {\n      uVar11 = 1;\n      lVar7 = param_3;\n      lVar9 = lVar3;\n      lVar10 = param_1;\n      param_1 = param_2;\n    }\n  }" { (expression_statement "lVar7 = param_3 * 8;" (assignment_expression "lVar7 = param_3 * 8" identifier = (binary_expression "param_3 * 8" identifier * number_literal)) ;) (if_statement "if (*(long *)(param_1 + -8 + lVar7) != 0) {\n      if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n      goto LAB_00133136;\n    }" if (parenthesized_expression "(*(long *)(param_1 + -8 + lVar7) != 0)" ( (binary_expression "*(long *)(param_1 + -8 + lVar7) != 0" (pointer_expression "*(long *)(param_1 + -8 + lVar7)" * (cast_expression "(long *)(param_1 + -8 + lVar7)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + -8 + lVar7)" ( (binary_expression "param_1 + -8 + lVar7" (binary_expression "param_1 + -8" identifier + number_literal) + identifier) )))) != number_literal) )) (compound_statement "{\n      if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n      goto LAB_00133136;\n    }" { (if_statement "if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;" if (parenthesized_expression "(*(long *)(param_2 + -8 + lVar7) == 0)" ( (binary_expression "*(long *)(param_2 + -8 + lVar7) == 0" (pointer_expression "*(long *)(param_2 + -8 + lVar7)" * (cast_expression "(long *)(param_2 + -8 + lVar7)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + -8 + lVar7)" ( (binary_expression "param_2 + -8 + lVar7" (binary_expression "param_2 + -8" identifier + number_literal) + identifier) )))) == number_literal) )) (goto_statement "goto LAB_00132fd1;" goto statement_identifier ;)) (goto_statement "goto LAB_00133136;" goto statement_identifier ;) })) (do_statement "do {\n      lVar9 = lVar9 + -1;\n      if (lVar9 == 0) {\n        if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n        uVar11 = 0;\n        lVar7 = param_3;\n        goto LAB_00133008;\n      }\n    } while (*(long *)(param_1 + -8 + lVar9 * 8) == 0);" do (compound_statement "{\n      lVar9 = lVar9 + -1;\n      if (lVar9 == 0) {\n        if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n        uVar11 = 0;\n        lVar7 = param_3;\n        goto LAB_00133008;\n      }\n    }" { (expression_statement "lVar9 = lVar9 + -1;" (assignment_expression "lVar9 = lVar9 + -1" identifier = (binary_expression "lVar9 + -1" identifier + number_literal)) ;) (if_statement "if (lVar9 == 0) {\n        if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n        uVar11 = 0;\n        lVar7 = param_3;\n        goto LAB_00133008;\n      }" if (parenthesized_expression "(lVar9 == 0)" ( (binary_expression "lVar9 == 0" identifier == number_literal) )) (compound_statement "{\n        if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n        uVar11 = 0;\n        lVar7 = param_3;\n        goto LAB_00133008;\n      }" { (if_statement "if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;" if (parenthesized_expression "(*(long *)(param_2 + -8 + lVar7) == 0)" ( (binary_expression "*(long *)(param_2 + -8 + lVar7) == 0" (pointer_expression "*(long *)(param_2 + -8 + lVar7)" * (cast_expression "(long *)(param_2 + -8 + lVar7)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + -8 + lVar7)" ( (binary_expression "param_2 + -8 + lVar7" (binary_expression "param_2 + -8" identifier + number_literal) + identifier) )))) == number_literal) )) (goto_statement "goto LAB_00132fd1;" goto statement_identifier ;)) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (expression_statement "lVar7 = param_3;" (assignment_expression "lVar7 = param_3" identifier = identifier) ;) (goto_statement "goto LAB_00133008;" goto statement_identifier ;) })) }) while (parenthesized_expression "(*(long *)(param_1 + -8 + lVar9 * 8) == 0)" ( (binary_expression "*(long *)(param_1 + -8 + lVar9 * 8) == 0" (pointer_expression "*(long *)(param_1 + -8 + lVar9 * 8)" * (cast_expression "(long *)(param_1 + -8 + lVar9 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + -8 + lVar9 * 8)" ( (binary_expression "param_1 + -8 + lVar9 * 8" (binary_expression "param_1 + -8" identifier + number_literal) + (binary_expression "lVar9 * 8" identifier * number_literal)) )))) == number_literal) )) ;) (expression_statement "lVar7 = *(long *)(param_2 + -8 + lVar7);" (assignment_expression "lVar7 = *(long *)(param_2 + -8 + lVar7)" identifier = (pointer_expression "*(long *)(param_2 + -8 + lVar7)" * (cast_expression "(long *)(param_2 + -8 + lVar7)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + -8 + lVar7)" ( (binary_expression "param_2 + -8 + lVar7" (binary_expression "param_2 + -8" identifier + number_literal) + identifier) ))))) ;) (while_statement "while (param_3 = lVar3, lVar7 == 0) {\nLAB_00132fd1:\n      lVar3 = param_3 + -1;\n      if (lVar3 == 0) break;\n      lVar7 = *(long *)(param_2 + -8 + lVar3 * 8);\n    }" while (parenthesized_expression "(param_3 = lVar3, lVar7 == 0)" ( (comma_expression "param_3 = lVar3, lVar7 == 0" (assignment_expression "param_3 = lVar3" identifier = identifier) , (binary_expression "lVar7 == 0" identifier == number_literal)) )) (compound_statement "{\nLAB_00132fd1:\n      lVar3 = param_3 + -1;\n      if (lVar3 == 0) break;\n      lVar7 = *(long *)(param_2 + -8 + lVar3 * 8);\n    }" { (labeled_statement "LAB_00132fd1:\n      lVar3 = param_3 + -1;" statement_identifier : (expression_statement "lVar3 = param_3 + -1;" (assignment_expression "lVar3 = param_3 + -1" identifier = (binary_expression "param_3 + -1" identifier + number_literal)) ;)) (if_statement "if (lVar3 == 0) break;" if (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar7 = *(long *)(param_2 + -8 + lVar3 * 8);" (assignment_expression "lVar7 = *(long *)(param_2 + -8 + lVar3 * 8)" identifier = (pointer_expression "*(long *)(param_2 + -8 + lVar3 * 8)" * (cast_expression "(long *)(param_2 + -8 + lVar3 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + -8 + lVar3 * 8)" ( (binary_expression "param_2 + -8 + lVar3 * 8" (binary_expression "param_2 + -8" identifier + number_literal) + (binary_expression "lVar3 * 8" identifier * number_literal)) ))))) ;) })) (expression_statement "param_3 = lVar9;" (assignment_expression "param_3 = lVar9" identifier = identifier) ;) (expression_statement "lVar9 = param_3;" (assignment_expression "lVar9 = param_3" identifier = identifier) ;) (if_statement "if (lVar3 == param_3) goto LAB_00133136;" if (parenthesized_expression "(lVar3 == param_3)" ( (binary_expression "lVar3 == param_3" identifier == identifier) )) (goto_statement "goto LAB_00133136;" goto statement_identifier ;)) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (expression_statement "lVar7 = lVar3;" (assignment_expression "lVar7 = lVar3" identifier = identifier) ;) (if_statement "if (lVar3 < param_3) {\n      uVar11 = 1;\n      lVar7 = param_3;\n      lVar9 = lVar3;\n      lVar10 = param_1;\n      param_1 = param_2;\n    }" if (parenthesized_expression "(lVar3 < param_3)" ( (binary_expression "lVar3 < param_3" identifier < identifier) )) (compound_statement "{\n      uVar11 = 1;\n      lVar7 = param_3;\n      lVar9 = lVar3;\n      lVar10 = param_1;\n      param_1 = param_2;\n    }" { (expression_statement "uVar11 = 1;" (assignment_expression "uVar11 = 1" identifier = number_literal) ;) (expression_statement "lVar7 = param_3;" (assignment_expression "lVar7 = param_3" identifier = identifier) ;) (expression_statement "lVar9 = lVar3;" (assignment_expression "lVar9 = lVar3" identifier = identifier) ;) (expression_statement "lVar10 = param_1;" (assignment_expression "lVar10 = param_1" identifier = identifier) ;) (expression_statement "param_1 = param_2;" (assignment_expression "param_1 = param_2" identifier = identifier) ;) })) }))) (labeled_statement "LAB_00133008:\n  if (lVar9 <= param_4) {\n    if (param_4 != 0) {\n      return 0;\n    }\n    (*param_5)(param_6,lVar10,lVar7,0,0,uVar11 ^ 1);\n    return 0;\n  }" statement_identifier : (if_statement "if (lVar9 <= param_4) {\n    if (param_4 != 0) {\n      return 0;\n    }\n    (*param_5)(param_6,lVar10,lVar7,0,0,uVar11 ^ 1);\n    return 0;\n  }" if (parenthesized_expression "(lVar9 <= param_4)" ( (binary_expression "lVar9 <= param_4" identifier <= identifier) )) (compound_statement "{\n    if (param_4 != 0) {\n      return 0;\n    }\n    (*param_5)(param_6,lVar10,lVar7,0,0,uVar11 ^ 1);\n    return 0;\n  }" { (if_statement "if (param_4 != 0) {\n      return 0;\n    }" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "(*param_5)(param_6,lVar10,lVar7,0,0,uVar11 ^ 1);" (call_expression "(*param_5)(param_6,lVar10,lVar7,0,0,uVar11 ^ 1)" (parenthesized_expression "(*param_5)" ( (pointer_expression "*param_5" * identifier) )) (argument_list "(param_6,lVar10,lVar7,0,0,uVar11 ^ 1)" ( identifier , identifier , identifier , number_literal , number_literal , (binary_expression "uVar11 ^ 1" identifier ^ number_literal) ))) ;) (return_statement "return 0;" return number_literal ;) }))) (expression_statement "lVar3 = lVar10;" (assignment_expression "lVar3 = lVar10" identifier = identifier) ;) (if_statement "if (((lVar9 == 0) || (lVar4 = __gmpn_sub_n(lVar10,lVar10,param_1,lVar9), lVar4 == 0)) ||\n     (lVar7 <= lVar9)) {\nLAB_0013301a:\n    if (0 < lVar7) {\n      lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\n      goto joined_r0x00133029;\n    }\nLAB_0013321f:\n    lVar4 = lVar7;\n    if (lVar7 <= param_4) {\n      if ((lVar7 == 0) || (lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7), lVar3 == 0))\n      goto LAB_00133231;\nLAB_0013327a:\n      lVar3 = lVar7 * 8;\n      lVar7 = lVar7 + 1;\n      lVar4 = *(long *)(param_1 + lVar3) + 1;\n      *(long *)(lVar10 + lVar3) = lVar4;\n      while (lVar4 == 0) {\n        if (lVar9 == lVar7) goto LAB_00133408;\n        lVar3 = lVar7 * 8;\n        lVar7 = lVar7 + 1;\n        lVar4 = *(long *)(param_1 + lVar3) + 1;\n        *(long *)(lVar10 + -8 + lVar7 * 8) = lVar4;\n      }\nLAB_00133231:\n      if (param_1 != lVar10) {\n        if (lVar7 < lVar9) {\n          do {\n            *(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8);\n            lVar7 = lVar7 + 1;\n          } while (lVar9 != lVar7);\n        }\n        return 0;\n      }\n      return 0;\n    }\nLAB_00133049:\n    lVar8 = lVar9;\n    lVar7 = lVar4;\n    if (lVar9 == lVar4) {\n      do {\n        lVar8 = lVar8 + -1;\n        if (lVar8 < 0) {\n          if (0 < param_4) {\n            (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n            return 0;\n          }\n          (*param_5)(param_6,lVar10,lVar4,0,0,uVar11);\n          return 0;\n        }\n        uVar1 = *(ulong *)(param_1 + lVar8 * 8);\n        uVar2 = *(ulong *)(lVar10 + lVar8 * 8);\n      } while (uVar1 == uVar2);\n      if (uVar1 < uVar2 || uVar1 == uVar2) {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      }\n      else {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n        uVar11 = uVar11 ^ 1;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }\n    }\n    else {\n      (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      if (lVar4 < lVar9) {\n        uVar11 = uVar11 ^ 1;\n        lVar7 = lVar9;\n        lVar9 = lVar4;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }\n    }\n  }\n  else {\n    plVar6 = (long *)(lVar10 + lVar9 * 8);\n    lVar8 = *plVar6;\n    lVar4 = lVar9 + 1;\n    *plVar6 = lVar8 + -1;\n    if (lVar8 == 0) {\n      do {\n        if (lVar7 == lVar4) goto LAB_00133465;\n        lVar8 = *(long *)(lVar10 + lVar4 * 8);\n        lVar4 = lVar4 + 1;\n        *(long *)(lVar10 + -8 + lVar4 * 8) = lVar8 + -1;\n      } while (lVar8 == 0);\n      goto LAB_0013301a;\n    }\nLAB_00133465:\n    if (0 < lVar7) {\n      lVar4 = lVar7;\n      if (*(long *)(lVar10 + -8 + lVar7 * 8) == 0) {\n        do {\n          lVar7 = lVar7 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\njoined_r0x00133029:\n        } while (lVar4 == 0);\n        lVar4 = lVar7;\n        if (param_4 < lVar7) goto LAB_00133049;\n        lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7);\n        if (lVar3 == 0) goto LAB_00133231;\n        if (lVar9 <= lVar7) {\nLAB_00133408:\n          *(undefined8 *)(lVar10 + lVar9 * 8) = 1;\n          return 0;\n        }\n        goto LAB_0013327a;\n      }\n      goto LAB_00133049;\n    }\n    (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n  }" if (parenthesized_expression "(((lVar9 == 0) || (lVar4 = __gmpn_sub_n(lVar10,lVar10,param_1,lVar9), lVar4 == 0)) ||\n     (lVar7 <= lVar9))" ( (binary_expression "((lVar9 == 0) || (lVar4 = __gmpn_sub_n(lVar10,lVar10,param_1,lVar9), lVar4 == 0)) ||\n     (lVar7 <= lVar9)" (parenthesized_expression "((lVar9 == 0) || (lVar4 = __gmpn_sub_n(lVar10,lVar10,param_1,lVar9), lVar4 == 0))" ( (binary_expression "(lVar9 == 0) || (lVar4 = __gmpn_sub_n(lVar10,lVar10,param_1,lVar9), lVar4 == 0)" (parenthesized_expression "(lVar9 == 0)" ( (binary_expression "lVar9 == 0" identifier == number_literal) )) || (parenthesized_expression "(lVar4 = __gmpn_sub_n(lVar10,lVar10,param_1,lVar9), lVar4 == 0)" ( (comma_expression "lVar4 = __gmpn_sub_n(lVar10,lVar10,param_1,lVar9), lVar4 == 0" (assignment_expression "lVar4 = __gmpn_sub_n(lVar10,lVar10,param_1,lVar9)" identifier = (call_expression "__gmpn_sub_n(lVar10,lVar10,param_1,lVar9)" identifier (argument_list "(lVar10,lVar10,param_1,lVar9)" ( identifier , identifier , identifier , identifier )))) , (binary_expression "lVar4 == 0" identifier == number_literal)) ))) )) || (parenthesized_expression "(lVar7 <= lVar9)" ( (binary_expression "lVar7 <= lVar9" identifier <= identifier) ))) )) (compound_statement "{\nLAB_0013301a:\n    if (0 < lVar7) {\n      lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\n      goto joined_r0x00133029;\n    }\nLAB_0013321f:\n    lVar4 = lVar7;\n    if (lVar7 <= param_4) {\n      if ((lVar7 == 0) || (lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7), lVar3 == 0))\n      goto LAB_00133231;\nLAB_0013327a:\n      lVar3 = lVar7 * 8;\n      lVar7 = lVar7 + 1;\n      lVar4 = *(long *)(param_1 + lVar3) + 1;\n      *(long *)(lVar10 + lVar3) = lVar4;\n      while (lVar4 == 0) {\n        if (lVar9 == lVar7) goto LAB_00133408;\n        lVar3 = lVar7 * 8;\n        lVar7 = lVar7 + 1;\n        lVar4 = *(long *)(param_1 + lVar3) + 1;\n        *(long *)(lVar10 + -8 + lVar7 * 8) = lVar4;\n      }\nLAB_00133231:\n      if (param_1 != lVar10) {\n        if (lVar7 < lVar9) {\n          do {\n            *(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8);\n            lVar7 = lVar7 + 1;\n          } while (lVar9 != lVar7);\n        }\n        return 0;\n      }\n      return 0;\n    }\nLAB_00133049:\n    lVar8 = lVar9;\n    lVar7 = lVar4;\n    if (lVar9 == lVar4) {\n      do {\n        lVar8 = lVar8 + -1;\n        if (lVar8 < 0) {\n          if (0 < param_4) {\n            (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n            return 0;\n          }\n          (*param_5)(param_6,lVar10,lVar4,0,0,uVar11);\n          return 0;\n        }\n        uVar1 = *(ulong *)(param_1 + lVar8 * 8);\n        uVar2 = *(ulong *)(lVar10 + lVar8 * 8);\n      } while (uVar1 == uVar2);\n      if (uVar1 < uVar2 || uVar1 == uVar2) {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      }\n      else {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n        uVar11 = uVar11 ^ 1;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }\n    }\n    else {\n      (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      if (lVar4 < lVar9) {\n        uVar11 = uVar11 ^ 1;\n        lVar7 = lVar9;\n        lVar9 = lVar4;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }\n    }\n  }" { (labeled_statement "LAB_0013301a:\n    if (0 < lVar7) {\n      lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\n      goto joined_r0x00133029;\n    }" statement_identifier : (if_statement "if (0 < lVar7) {\n      lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\n      goto joined_r0x00133029;\n    }" if (parenthesized_expression "(0 < lVar7)" ( (binary_expression "0 < lVar7" number_literal < identifier) )) (compound_statement "{\n      lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\n      goto joined_r0x00133029;\n    }" { (expression_statement "lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);" (assignment_expression "lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8)" identifier = (pointer_expression "*(long *)(lVar10 + -8 + lVar7 * 8)" * (cast_expression "(long *)(lVar10 + -8 + lVar7 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + -8 + lVar7 * 8)" ( (binary_expression "lVar10 + -8 + lVar7 * 8" (binary_expression "lVar10 + -8" identifier + number_literal) + (binary_expression "lVar7 * 8" identifier * number_literal)) ))))) ;) (goto_statement "goto joined_r0x00133029;" goto statement_identifier ;) }))) (labeled_statement "LAB_0013321f:\n    lVar4 = lVar7;" statement_identifier : (expression_statement "lVar4 = lVar7;" (assignment_expression "lVar4 = lVar7" identifier = identifier) ;)) (if_statement "if (lVar7 <= param_4) {\n      if ((lVar7 == 0) || (lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7), lVar3 == 0))\n      goto LAB_00133231;\nLAB_0013327a:\n      lVar3 = lVar7 * 8;\n      lVar7 = lVar7 + 1;\n      lVar4 = *(long *)(param_1 + lVar3) + 1;\n      *(long *)(lVar10 + lVar3) = lVar4;\n      while (lVar4 == 0) {\n        if (lVar9 == lVar7) goto LAB_00133408;\n        lVar3 = lVar7 * 8;\n        lVar7 = lVar7 + 1;\n        lVar4 = *(long *)(param_1 + lVar3) + 1;\n        *(long *)(lVar10 + -8 + lVar7 * 8) = lVar4;\n      }\nLAB_00133231:\n      if (param_1 != lVar10) {\n        if (lVar7 < lVar9) {\n          do {\n            *(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8);\n            lVar7 = lVar7 + 1;\n          } while (lVar9 != lVar7);\n        }\n        return 0;\n      }\n      return 0;\n    }" if (parenthesized_expression "(lVar7 <= param_4)" ( (binary_expression "lVar7 <= param_4" identifier <= identifier) )) (compound_statement "{\n      if ((lVar7 == 0) || (lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7), lVar3 == 0))\n      goto LAB_00133231;\nLAB_0013327a:\n      lVar3 = lVar7 * 8;\n      lVar7 = lVar7 + 1;\n      lVar4 = *(long *)(param_1 + lVar3) + 1;\n      *(long *)(lVar10 + lVar3) = lVar4;\n      while (lVar4 == 0) {\n        if (lVar9 == lVar7) goto LAB_00133408;\n        lVar3 = lVar7 * 8;\n        lVar7 = lVar7 + 1;\n        lVar4 = *(long *)(param_1 + lVar3) + 1;\n        *(long *)(lVar10 + -8 + lVar7 * 8) = lVar4;\n      }\nLAB_00133231:\n      if (param_1 != lVar10) {\n        if (lVar7 < lVar9) {\n          do {\n            *(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8);\n            lVar7 = lVar7 + 1;\n          } while (lVar9 != lVar7);\n        }\n        return 0;\n      }\n      return 0;\n    }" { (if_statement "if ((lVar7 == 0) || (lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7), lVar3 == 0))\n      goto LAB_00133231;" if (parenthesized_expression "((lVar7 == 0) || (lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7), lVar3 == 0))" ( (binary_expression "(lVar7 == 0) || (lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7), lVar3 == 0)" (parenthesized_expression "(lVar7 == 0)" ( (binary_expression "lVar7 == 0" identifier == number_literal) )) || (parenthesized_expression "(lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7), lVar3 == 0)" ( (comma_expression "lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7), lVar3 == 0" (assignment_expression "lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7)" identifier = (call_expression "__gmpn_add_n(lVar10,param_1,lVar10,lVar7)" identifier (argument_list "(lVar10,param_1,lVar10,lVar7)" ( identifier , identifier , identifier , identifier )))) , (binary_expression "lVar3 == 0" identifier == number_literal)) ))) )) (goto_statement "goto LAB_00133231;" goto statement_identifier ;)) (labeled_statement "LAB_0013327a:\n      lVar3 = lVar7 * 8;" statement_identifier : (expression_statement "lVar3 = lVar7 * 8;" (assignment_expression "lVar3 = lVar7 * 8" identifier = (binary_expression "lVar7 * 8" identifier * number_literal)) ;)) (expression_statement "lVar7 = lVar7 + 1;" (assignment_expression "lVar7 = lVar7 + 1" identifier = (binary_expression "lVar7 + 1" identifier + number_literal)) ;) (expression_statement "lVar4 = *(long *)(param_1 + lVar3) + 1;" (assignment_expression "lVar4 = *(long *)(param_1 + lVar3) + 1" identifier = (binary_expression "*(long *)(param_1 + lVar3) + 1" (pointer_expression "*(long *)(param_1 + lVar3)" * (cast_expression "(long *)(param_1 + lVar3)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + lVar3)" ( (binary_expression "param_1 + lVar3" identifier + identifier) )))) + number_literal)) ;) (expression_statement "*(long *)(lVar10 + lVar3) = lVar4;" (assignment_expression "*(long *)(lVar10 + lVar3) = lVar4" (pointer_expression "*(long *)(lVar10 + lVar3)" * (cast_expression "(long *)(lVar10 + lVar3)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + lVar3)" ( (binary_expression "lVar10 + lVar3" identifier + identifier) )))) = identifier) ;) (while_statement "while (lVar4 == 0) {\n        if (lVar9 == lVar7) goto LAB_00133408;\n        lVar3 = lVar7 * 8;\n        lVar7 = lVar7 + 1;\n        lVar4 = *(long *)(param_1 + lVar3) + 1;\n        *(long *)(lVar10 + -8 + lVar7 * 8) = lVar4;\n      }" while (parenthesized_expression "(lVar4 == 0)" ( (binary_expression "lVar4 == 0" identifier == number_literal) )) (compound_statement "{\n        if (lVar9 == lVar7) goto LAB_00133408;\n        lVar3 = lVar7 * 8;\n        lVar7 = lVar7 + 1;\n        lVar4 = *(long *)(param_1 + lVar3) + 1;\n        *(long *)(lVar10 + -8 + lVar7 * 8) = lVar4;\n      }" { (if_statement "if (lVar9 == lVar7) goto LAB_00133408;" if (parenthesized_expression "(lVar9 == lVar7)" ( (binary_expression "lVar9 == lVar7" identifier == identifier) )) (goto_statement "goto LAB_00133408;" goto statement_identifier ;)) (expression_statement "lVar3 = lVar7 * 8;" (assignment_expression "lVar3 = lVar7 * 8" identifier = (binary_expression "lVar7 * 8" identifier * number_literal)) ;) (expression_statement "lVar7 = lVar7 + 1;" (assignment_expression "lVar7 = lVar7 + 1" identifier = (binary_expression "lVar7 + 1" identifier + number_literal)) ;) (expression_statement "lVar4 = *(long *)(param_1 + lVar3) + 1;" (assignment_expression "lVar4 = *(long *)(param_1 + lVar3) + 1" identifier = (binary_expression "*(long *)(param_1 + lVar3) + 1" (pointer_expression "*(long *)(param_1 + lVar3)" * (cast_expression "(long *)(param_1 + lVar3)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + lVar3)" ( (binary_expression "param_1 + lVar3" identifier + identifier) )))) + number_literal)) ;) (expression_statement "*(long *)(lVar10 + -8 + lVar7 * 8) = lVar4;" (assignment_expression "*(long *)(lVar10 + -8 + lVar7 * 8) = lVar4" (pointer_expression "*(long *)(lVar10 + -8 + lVar7 * 8)" * (cast_expression "(long *)(lVar10 + -8 + lVar7 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + -8 + lVar7 * 8)" ( (binary_expression "lVar10 + -8 + lVar7 * 8" (binary_expression "lVar10 + -8" identifier + number_literal) + (binary_expression "lVar7 * 8" identifier * number_literal)) )))) = identifier) ;) })) (labeled_statement "LAB_00133231:\n      if (param_1 != lVar10) {\n        if (lVar7 < lVar9) {\n          do {\n            *(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8);\n            lVar7 = lVar7 + 1;\n          } while (lVar9 != lVar7);\n        }\n        return 0;\n      }" statement_identifier : (if_statement "if (param_1 != lVar10) {\n        if (lVar7 < lVar9) {\n          do {\n            *(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8);\n            lVar7 = lVar7 + 1;\n          } while (lVar9 != lVar7);\n        }\n        return 0;\n      }" if (parenthesized_expression "(param_1 != lVar10)" ( (binary_expression "param_1 != lVar10" identifier != identifier) )) (compound_statement "{\n        if (lVar7 < lVar9) {\n          do {\n            *(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8);\n            lVar7 = lVar7 + 1;\n          } while (lVar9 != lVar7);\n        }\n        return 0;\n      }" { (if_statement "if (lVar7 < lVar9) {\n          do {\n            *(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8);\n            lVar7 = lVar7 + 1;\n          } while (lVar9 != lVar7);\n        }" if (parenthesized_expression "(lVar7 < lVar9)" ( (binary_expression "lVar7 < lVar9" identifier < identifier) )) (compound_statement "{\n          do {\n            *(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8);\n            lVar7 = lVar7 + 1;\n          } while (lVar9 != lVar7);\n        }" { (do_statement "do {\n            *(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8);\n            lVar7 = lVar7 + 1;\n          } while (lVar9 != lVar7);" do (compound_statement "{\n            *(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8);\n            lVar7 = lVar7 + 1;\n          }" { (expression_statement "*(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8);" (assignment_expression "*(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8)" (pointer_expression "*(undefined8 *)(lVar10 + lVar7 * 8)" * (cast_expression "(undefined8 *)(lVar10 + lVar7 * 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + lVar7 * 8)" ( (binary_expression "lVar10 + lVar7 * 8" identifier + (binary_expression "lVar7 * 8" identifier * number_literal)) )))) = (pointer_expression "*(undefined8 *)(param_1 + lVar7 * 8)" * (cast_expression "(undefined8 *)(param_1 + lVar7 * 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + lVar7 * 8)" ( (binary_expression "param_1 + lVar7 * 8" identifier + (binary_expression "lVar7 * 8" identifier * number_literal)) ))))) ;) (expression_statement "lVar7 = lVar7 + 1;" (assignment_expression "lVar7 = lVar7 + 1" identifier = (binary_expression "lVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar9 != lVar7)" ( (binary_expression "lVar9 != lVar7" identifier != identifier) )) ;) })) (return_statement "return 0;" return number_literal ;) }))) (return_statement "return 0;" return number_literal ;) })) (labeled_statement "LAB_00133049:\n    lVar8 = lVar9;" statement_identifier : (expression_statement "lVar8 = lVar9;" (assignment_expression "lVar8 = lVar9" identifier = identifier) ;)) (expression_statement "lVar7 = lVar4;" (assignment_expression "lVar7 = lVar4" identifier = identifier) ;) (if_statement "if (lVar9 == lVar4) {\n      do {\n        lVar8 = lVar8 + -1;\n        if (lVar8 < 0) {\n          if (0 < param_4) {\n            (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n            return 0;\n          }\n          (*param_5)(param_6,lVar10,lVar4,0,0,uVar11);\n          return 0;\n        }\n        uVar1 = *(ulong *)(param_1 + lVar8 * 8);\n        uVar2 = *(ulong *)(lVar10 + lVar8 * 8);\n      } while (uVar1 == uVar2);\n      if (uVar1 < uVar2 || uVar1 == uVar2) {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      }\n      else {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n        uVar11 = uVar11 ^ 1;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }\n    }\n    else {\n      (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      if (lVar4 < lVar9) {\n        uVar11 = uVar11 ^ 1;\n        lVar7 = lVar9;\n        lVar9 = lVar4;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }\n    }" if (parenthesized_expression "(lVar9 == lVar4)" ( (binary_expression "lVar9 == lVar4" identifier == identifier) )) (compound_statement "{\n      do {\n        lVar8 = lVar8 + -1;\n        if (lVar8 < 0) {\n          if (0 < param_4) {\n            (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n            return 0;\n          }\n          (*param_5)(param_6,lVar10,lVar4,0,0,uVar11);\n          return 0;\n        }\n        uVar1 = *(ulong *)(param_1 + lVar8 * 8);\n        uVar2 = *(ulong *)(lVar10 + lVar8 * 8);\n      } while (uVar1 == uVar2);\n      if (uVar1 < uVar2 || uVar1 == uVar2) {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      }\n      else {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n        uVar11 = uVar11 ^ 1;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }\n    }" { (do_statement "do {\n        lVar8 = lVar8 + -1;\n        if (lVar8 < 0) {\n          if (0 < param_4) {\n            (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n            return 0;\n          }\n          (*param_5)(param_6,lVar10,lVar4,0,0,uVar11);\n          return 0;\n        }\n        uVar1 = *(ulong *)(param_1 + lVar8 * 8);\n        uVar2 = *(ulong *)(lVar10 + lVar8 * 8);\n      } while (uVar1 == uVar2);" do (compound_statement "{\n        lVar8 = lVar8 + -1;\n        if (lVar8 < 0) {\n          if (0 < param_4) {\n            (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n            return 0;\n          }\n          (*param_5)(param_6,lVar10,lVar4,0,0,uVar11);\n          return 0;\n        }\n        uVar1 = *(ulong *)(param_1 + lVar8 * 8);\n        uVar2 = *(ulong *)(lVar10 + lVar8 * 8);\n      }" { (expression_statement "lVar8 = lVar8 + -1;" (assignment_expression "lVar8 = lVar8 + -1" identifier = (binary_expression "lVar8 + -1" identifier + number_literal)) ;) (if_statement "if (lVar8 < 0) {\n          if (0 < param_4) {\n            (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n            return 0;\n          }\n          (*param_5)(param_6,lVar10,lVar4,0,0,uVar11);\n          return 0;\n        }" if (parenthesized_expression "(lVar8 < 0)" ( (binary_expression "lVar8 < 0" identifier < number_literal) )) (compound_statement "{\n          if (0 < param_4) {\n            (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n            return 0;\n          }\n          (*param_5)(param_6,lVar10,lVar4,0,0,uVar11);\n          return 0;\n        }" { (if_statement "if (0 < param_4) {\n            (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n            return 0;\n          }" if (parenthesized_expression "(0 < param_4)" ( (binary_expression "0 < param_4" number_literal < identifier) )) (compound_statement "{\n            (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n            return 0;\n          }" { (expression_statement "(*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);" (call_expression "(*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11)" (parenthesized_expression "(*param_5)" ( (pointer_expression "*param_5" * identifier) )) (argument_list "(param_6,0,0,&DAT_0015f3c0,1,uVar11)" ( identifier , number_literal , number_literal , (pointer_expression "&DAT_0015f3c0" & identifier) , number_literal , identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "(*param_5)(param_6,lVar10,lVar4,0,0,uVar11);" (call_expression "(*param_5)(param_6,lVar10,lVar4,0,0,uVar11)" (parenthesized_expression "(*param_5)" ( (pointer_expression "*param_5" * identifier) )) (argument_list "(param_6,lVar10,lVar4,0,0,uVar11)" ( identifier , identifier , identifier , number_literal , number_literal , identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar1 = *(ulong *)(param_1 + lVar8 * 8);" (assignment_expression "uVar1 = *(ulong *)(param_1 + lVar8 * 8)" identifier = (pointer_expression "*(ulong *)(param_1 + lVar8 * 8)" * (cast_expression "(ulong *)(param_1 + lVar8 * 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + lVar8 * 8)" ( (binary_expression "param_1 + lVar8 * 8" identifier + (binary_expression "lVar8 * 8" identifier * number_literal)) ))))) ;) (expression_statement "uVar2 = *(ulong *)(lVar10 + lVar8 * 8);" (assignment_expression "uVar2 = *(ulong *)(lVar10 + lVar8 * 8)" identifier = (pointer_expression "*(ulong *)(lVar10 + lVar8 * 8)" * (cast_expression "(ulong *)(lVar10 + lVar8 * 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + lVar8 * 8)" ( (binary_expression "lVar10 + lVar8 * 8" identifier + (binary_expression "lVar8 * 8" identifier * number_literal)) ))))) ;) }) while (parenthesized_expression "(uVar1 == uVar2)" ( (binary_expression "uVar1 == uVar2" identifier == identifier) )) ;) (if_statement "if (uVar1 < uVar2 || uVar1 == uVar2) {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      }\n      else {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n        uVar11 = uVar11 ^ 1;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }" if (parenthesized_expression "(uVar1 < uVar2 || uVar1 == uVar2)" ( (binary_expression "uVar1 < uVar2 || uVar1 == uVar2" (binary_expression "uVar1 < uVar2" identifier < identifier) || (binary_expression "uVar1 == uVar2" identifier == identifier)) )) (compound_statement "{\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      }" { (expression_statement "(*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);" (call_expression "(*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11)" (parenthesized_expression "(*param_5)" ( (pointer_expression "*param_5" * identifier) )) (argument_list "(param_6,0,0,&DAT_0015f3c0,1,uVar11)" ( identifier , number_literal , number_literal , (pointer_expression "&DAT_0015f3c0" & identifier) , number_literal , identifier ))) ;) }) (else_clause "else {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n        uVar11 = uVar11 ^ 1;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }" else (compound_statement "{\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n        uVar11 = uVar11 ^ 1;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }" { (expression_statement "(*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);" (call_expression "(*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11)" (parenthesized_expression "(*param_5)" ( (pointer_expression "*param_5" * identifier) )) (argument_list "(param_6,0,0,&DAT_0015f3c0,1,uVar11)" ( identifier , number_literal , number_literal , (pointer_expression "&DAT_0015f3c0" & identifier) , number_literal , identifier ))) ;) (expression_statement "uVar11 = uVar11 ^ 1;" (assignment_expression "uVar11 = uVar11 ^ 1" identifier = (binary_expression "uVar11 ^ 1" identifier ^ number_literal)) ;) (expression_statement "lVar3 = param_1;" (assignment_expression "lVar3 = param_1" identifier = identifier) ;) (expression_statement "param_1 = lVar10;" (assignment_expression "param_1 = lVar10" identifier = identifier) ;) }))) }) (else_clause "else {\n      (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      if (lVar4 < lVar9) {\n        uVar11 = uVar11 ^ 1;\n        lVar7 = lVar9;\n        lVar9 = lVar4;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }\n    }" else (compound_statement "{\n      (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      if (lVar4 < lVar9) {\n        uVar11 = uVar11 ^ 1;\n        lVar7 = lVar9;\n        lVar9 = lVar4;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }\n    }" { (expression_statement "(*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);" (call_expression "(*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11)" (parenthesized_expression "(*param_5)" ( (pointer_expression "*param_5" * identifier) )) (argument_list "(param_6,0,0,&DAT_0015f3c0,1,uVar11)" ( identifier , number_literal , number_literal , (pointer_expression "&DAT_0015f3c0" & identifier) , number_literal , identifier ))) ;) (if_statement "if (lVar4 < lVar9) {\n        uVar11 = uVar11 ^ 1;\n        lVar7 = lVar9;\n        lVar9 = lVar4;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }" if (parenthesized_expression "(lVar4 < lVar9)" ( (binary_expression "lVar4 < lVar9" identifier < identifier) )) (compound_statement "{\n        uVar11 = uVar11 ^ 1;\n        lVar7 = lVar9;\n        lVar9 = lVar4;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }" { (expression_statement "uVar11 = uVar11 ^ 1;" (assignment_expression "uVar11 = uVar11 ^ 1" identifier = (binary_expression "uVar11 ^ 1" identifier ^ number_literal)) ;) (expression_statement "lVar7 = lVar9;" (assignment_expression "lVar7 = lVar9" identifier = identifier) ;) (expression_statement "lVar9 = lVar4;" (assignment_expression "lVar9 = lVar4" identifier = identifier) ;) (expression_statement "lVar3 = param_1;" (assignment_expression "lVar3 = param_1" identifier = identifier) ;) (expression_statement "param_1 = lVar10;" (assignment_expression "param_1 = lVar10" identifier = identifier) ;) })) }))) }) (else_clause "else {\n    plVar6 = (long *)(lVar10 + lVar9 * 8);\n    lVar8 = *plVar6;\n    lVar4 = lVar9 + 1;\n    *plVar6 = lVar8 + -1;\n    if (lVar8 == 0) {\n      do {\n        if (lVar7 == lVar4) goto LAB_00133465;\n        lVar8 = *(long *)(lVar10 + lVar4 * 8);\n        lVar4 = lVar4 + 1;\n        *(long *)(lVar10 + -8 + lVar4 * 8) = lVar8 + -1;\n      } while (lVar8 == 0);\n      goto LAB_0013301a;\n    }\nLAB_00133465:\n    if (0 < lVar7) {\n      lVar4 = lVar7;\n      if (*(long *)(lVar10 + -8 + lVar7 * 8) == 0) {\n        do {\n          lVar7 = lVar7 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\njoined_r0x00133029:\n        } while (lVar4 == 0);\n        lVar4 = lVar7;\n        if (param_4 < lVar7) goto LAB_00133049;\n        lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7);\n        if (lVar3 == 0) goto LAB_00133231;\n        if (lVar9 <= lVar7) {\nLAB_00133408:\n          *(undefined8 *)(lVar10 + lVar9 * 8) = 1;\n          return 0;\n        }\n        goto LAB_0013327a;\n      }\n      goto LAB_00133049;\n    }\n    (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n  }" else (compound_statement "{\n    plVar6 = (long *)(lVar10 + lVar9 * 8);\n    lVar8 = *plVar6;\n    lVar4 = lVar9 + 1;\n    *plVar6 = lVar8 + -1;\n    if (lVar8 == 0) {\n      do {\n        if (lVar7 == lVar4) goto LAB_00133465;\n        lVar8 = *(long *)(lVar10 + lVar4 * 8);\n        lVar4 = lVar4 + 1;\n        *(long *)(lVar10 + -8 + lVar4 * 8) = lVar8 + -1;\n      } while (lVar8 == 0);\n      goto LAB_0013301a;\n    }\nLAB_00133465:\n    if (0 < lVar7) {\n      lVar4 = lVar7;\n      if (*(long *)(lVar10 + -8 + lVar7 * 8) == 0) {\n        do {\n          lVar7 = lVar7 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\njoined_r0x00133029:\n        } while (lVar4 == 0);\n        lVar4 = lVar7;\n        if (param_4 < lVar7) goto LAB_00133049;\n        lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7);\n        if (lVar3 == 0) goto LAB_00133231;\n        if (lVar9 <= lVar7) {\nLAB_00133408:\n          *(undefined8 *)(lVar10 + lVar9 * 8) = 1;\n          return 0;\n        }\n        goto LAB_0013327a;\n      }\n      goto LAB_00133049;\n    }\n    (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n  }" { (expression_statement "plVar6 = (long *)(lVar10 + lVar9 * 8);" (assignment_expression "plVar6 = (long *)(lVar10 + lVar9 * 8)" identifier = (cast_expression "(long *)(lVar10 + lVar9 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + lVar9 * 8)" ( (binary_expression "lVar10 + lVar9 * 8" identifier + (binary_expression "lVar9 * 8" identifier * number_literal)) )))) ;) (expression_statement "lVar8 = *plVar6;" (assignment_expression "lVar8 = *plVar6" identifier = (pointer_expression "*plVar6" * identifier)) ;) (expression_statement "lVar4 = lVar9 + 1;" (assignment_expression "lVar4 = lVar9 + 1" identifier = (binary_expression "lVar9 + 1" identifier + number_literal)) ;) (expression_statement "*plVar6 = lVar8 + -1;" (assignment_expression "*plVar6 = lVar8 + -1" (pointer_expression "*plVar6" * identifier) = (binary_expression "lVar8 + -1" identifier + number_literal)) ;) (if_statement "if (lVar8 == 0) {\n      do {\n        if (lVar7 == lVar4) goto LAB_00133465;\n        lVar8 = *(long *)(lVar10 + lVar4 * 8);\n        lVar4 = lVar4 + 1;\n        *(long *)(lVar10 + -8 + lVar4 * 8) = lVar8 + -1;\n      } while (lVar8 == 0);\n      goto LAB_0013301a;\n    }" if (parenthesized_expression "(lVar8 == 0)" ( (binary_expression "lVar8 == 0" identifier == number_literal) )) (compound_statement "{\n      do {\n        if (lVar7 == lVar4) goto LAB_00133465;\n        lVar8 = *(long *)(lVar10 + lVar4 * 8);\n        lVar4 = lVar4 + 1;\n        *(long *)(lVar10 + -8 + lVar4 * 8) = lVar8 + -1;\n      } while (lVar8 == 0);\n      goto LAB_0013301a;\n    }" { (do_statement "do {\n        if (lVar7 == lVar4) goto LAB_00133465;\n        lVar8 = *(long *)(lVar10 + lVar4 * 8);\n        lVar4 = lVar4 + 1;\n        *(long *)(lVar10 + -8 + lVar4 * 8) = lVar8 + -1;\n      } while (lVar8 == 0);" do (compound_statement "{\n        if (lVar7 == lVar4) goto LAB_00133465;\n        lVar8 = *(long *)(lVar10 + lVar4 * 8);\n        lVar4 = lVar4 + 1;\n        *(long *)(lVar10 + -8 + lVar4 * 8) = lVar8 + -1;\n      }" { (if_statement "if (lVar7 == lVar4) goto LAB_00133465;" if (parenthesized_expression "(lVar7 == lVar4)" ( (binary_expression "lVar7 == lVar4" identifier == identifier) )) (goto_statement "goto LAB_00133465;" goto statement_identifier ;)) (expression_statement "lVar8 = *(long *)(lVar10 + lVar4 * 8);" (assignment_expression "lVar8 = *(long *)(lVar10 + lVar4 * 8)" identifier = (pointer_expression "*(long *)(lVar10 + lVar4 * 8)" * (cast_expression "(long *)(lVar10 + lVar4 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + lVar4 * 8)" ( (binary_expression "lVar10 + lVar4 * 8" identifier + (binary_expression "lVar4 * 8" identifier * number_literal)) ))))) ;) (expression_statement "lVar4 = lVar4 + 1;" (assignment_expression "lVar4 = lVar4 + 1" identifier = (binary_expression "lVar4 + 1" identifier + number_literal)) ;) (expression_statement "*(long *)(lVar10 + -8 + lVar4 * 8) = lVar8 + -1;" (assignment_expression "*(long *)(lVar10 + -8 + lVar4 * 8) = lVar8 + -1" (pointer_expression "*(long *)(lVar10 + -8 + lVar4 * 8)" * (cast_expression "(long *)(lVar10 + -8 + lVar4 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + -8 + lVar4 * 8)" ( (binary_expression "lVar10 + -8 + lVar4 * 8" (binary_expression "lVar10 + -8" identifier + number_literal) + (binary_expression "lVar4 * 8" identifier * number_literal)) )))) = (binary_expression "lVar8 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar8 == 0)" ( (binary_expression "lVar8 == 0" identifier == number_literal) )) ;) (goto_statement "goto LAB_0013301a;" goto statement_identifier ;) })) (labeled_statement "LAB_00133465:\n    if (0 < lVar7) {\n      lVar4 = lVar7;\n      if (*(long *)(lVar10 + -8 + lVar7 * 8) == 0) {\n        do {\n          lVar7 = lVar7 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\njoined_r0x00133029:\n        } while (lVar4 == 0);\n        lVar4 = lVar7;\n        if (param_4 < lVar7) goto LAB_00133049;\n        lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7);\n        if (lVar3 == 0) goto LAB_00133231;\n        if (lVar9 <= lVar7) {\nLAB_00133408:\n          *(undefined8 *)(lVar10 + lVar9 * 8) = 1;\n          return 0;\n        }\n        goto LAB_0013327a;\n      }\n      goto LAB_00133049;\n    }" statement_identifier : (if_statement "if (0 < lVar7) {\n      lVar4 = lVar7;\n      if (*(long *)(lVar10 + -8 + lVar7 * 8) == 0) {\n        do {\n          lVar7 = lVar7 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\njoined_r0x00133029:\n        } while (lVar4 == 0);\n        lVar4 = lVar7;\n        if (param_4 < lVar7) goto LAB_00133049;\n        lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7);\n        if (lVar3 == 0) goto LAB_00133231;\n        if (lVar9 <= lVar7) {\nLAB_00133408:\n          *(undefined8 *)(lVar10 + lVar9 * 8) = 1;\n          return 0;\n        }\n        goto LAB_0013327a;\n      }\n      goto LAB_00133049;\n    }" if (parenthesized_expression "(0 < lVar7)" ( (binary_expression "0 < lVar7" number_literal < identifier) )) (compound_statement "{\n      lVar4 = lVar7;\n      if (*(long *)(lVar10 + -8 + lVar7 * 8) == 0) {\n        do {\n          lVar7 = lVar7 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\njoined_r0x00133029:\n        } while (lVar4 == 0);\n        lVar4 = lVar7;\n        if (param_4 < lVar7) goto LAB_00133049;\n        lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7);\n        if (lVar3 == 0) goto LAB_00133231;\n        if (lVar9 <= lVar7) {\nLAB_00133408:\n          *(undefined8 *)(lVar10 + lVar9 * 8) = 1;\n          return 0;\n        }\n        goto LAB_0013327a;\n      }\n      goto LAB_00133049;\n    }" { (expression_statement "lVar4 = lVar7;" (assignment_expression "lVar4 = lVar7" identifier = identifier) ;) (if_statement "if (*(long *)(lVar10 + -8 + lVar7 * 8) == 0) {\n        do {\n          lVar7 = lVar7 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\njoined_r0x00133029:\n        } while (lVar4 == 0);\n        lVar4 = lVar7;\n        if (param_4 < lVar7) goto LAB_00133049;\n        lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7);\n        if (lVar3 == 0) goto LAB_00133231;\n        if (lVar9 <= lVar7) {\nLAB_00133408:\n          *(undefined8 *)(lVar10 + lVar9 * 8) = 1;\n          return 0;\n        }\n        goto LAB_0013327a;\n      }" if (parenthesized_expression "(*(long *)(lVar10 + -8 + lVar7 * 8) == 0)" ( (binary_expression "*(long *)(lVar10 + -8 + lVar7 * 8) == 0" (pointer_expression "*(long *)(lVar10 + -8 + lVar7 * 8)" * (cast_expression "(long *)(lVar10 + -8 + lVar7 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + -8 + lVar7 * 8)" ( (binary_expression "lVar10 + -8 + lVar7 * 8" (binary_expression "lVar10 + -8" identifier + number_literal) + (binary_expression "lVar7 * 8" identifier * number_literal)) )))) == number_literal) )) (compound_statement "{\n        do {\n          lVar7 = lVar7 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\njoined_r0x00133029:\n        } while (lVar4 == 0);\n        lVar4 = lVar7;\n        if (param_4 < lVar7) goto LAB_00133049;\n        lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7);\n        if (lVar3 == 0) goto LAB_00133231;\n        if (lVar9 <= lVar7) {\nLAB_00133408:\n          *(undefined8 *)(lVar10 + lVar9 * 8) = 1;\n          return 0;\n        }\n        goto LAB_0013327a;\n      }" { (do_statement "do {\n          lVar7 = lVar7 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\njoined_r0x00133029:\n        } while (lVar4 == 0);" do (compound_statement "{\n          lVar7 = lVar7 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\njoined_r0x00133029:\n        }" { (expression_statement "lVar7 = lVar7 + -1;" (assignment_expression "lVar7 = lVar7 + -1" identifier = (binary_expression "lVar7 + -1" identifier + number_literal)) ;) (if_statement "if (lVar7 < 1) goto LAB_0013321f;" if (parenthesized_expression "(lVar7 < 1)" ( (binary_expression "lVar7 < 1" identifier < number_literal) )) (goto_statement "goto LAB_0013321f;" goto statement_identifier ;)) (expression_statement "lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);" (assignment_expression "lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8)" identifier = (pointer_expression "*(long *)(lVar10 + -8 + lVar7 * 8)" * (cast_expression "(long *)(lVar10 + -8 + lVar7 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + -8 + lVar7 * 8)" ( (binary_expression "lVar10 + -8 + lVar7 * 8" (binary_expression "lVar10 + -8" identifier + number_literal) + (binary_expression "lVar7 * 8" identifier * number_literal)) ))))) ;) (labeled_statement "joined_r0x00133029:" statement_identifier : (expression_statement "" ;)) }) while (parenthesized_expression "(lVar4 == 0)" ( (binary_expression "lVar4 == 0" identifier == number_literal) )) ;) (expression_statement "lVar4 = lVar7;" (assignment_expression "lVar4 = lVar7" identifier = identifier) ;) (if_statement "if (param_4 < lVar7) goto LAB_00133049;" if (parenthesized_expression "(param_4 < lVar7)" ( (binary_expression "param_4 < lVar7" identifier < identifier) )) (goto_statement "goto LAB_00133049;" goto statement_identifier ;)) (expression_statement "lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7);" (assignment_expression "lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7)" identifier = (call_expression "__gmpn_add_n(lVar10,param_1,lVar10,lVar7)" identifier (argument_list "(lVar10,param_1,lVar10,lVar7)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (lVar3 == 0) goto LAB_00133231;" if (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00133231;" goto statement_identifier ;)) (if_statement "if (lVar9 <= lVar7) {\nLAB_00133408:\n          *(undefined8 *)(lVar10 + lVar9 * 8) = 1;\n          return 0;\n        }" if (parenthesized_expression "(lVar9 <= lVar7)" ( (binary_expression "lVar9 <= lVar7" identifier <= identifier) )) (compound_statement "{\nLAB_00133408:\n          *(undefined8 *)(lVar10 + lVar9 * 8) = 1;\n          return 0;\n        }" { (labeled_statement "LAB_00133408:\n          *(undefined8 *)(lVar10 + lVar9 * 8) = 1;" statement_identifier : (expression_statement "*(undefined8 *)(lVar10 + lVar9 * 8) = 1;" (assignment_expression "*(undefined8 *)(lVar10 + lVar9 * 8) = 1" (pointer_expression "*(undefined8 *)(lVar10 + lVar9 * 8)" * (cast_expression "(undefined8 *)(lVar10 + lVar9 * 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + lVar9 * 8)" ( (binary_expression "lVar10 + lVar9 * 8" identifier + (binary_expression "lVar9 * 8" identifier * number_literal)) )))) = number_literal) ;)) (return_statement "return 0;" return number_literal ;) })) (goto_statement "goto LAB_0013327a;" goto statement_identifier ;) })) (goto_statement "goto LAB_00133049;" goto statement_identifier ;) }))) (expression_statement "(*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);" (call_expression "(*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11)" (parenthesized_expression "(*param_5)" ( (pointer_expression "*param_5" * identifier) )) (argument_list "(param_6,0,0,&DAT_0015f3c0,1,uVar11)" ( identifier , number_literal , number_literal , (pointer_expression "&DAT_0015f3c0" & identifier) , number_literal , identifier ))) ;) }))) (expression_statement "__gmpn_tdiv_qr(param_7,lVar3,0,lVar3,lVar7,param_1,lVar9);" (call_expression "__gmpn_tdiv_qr(param_7,lVar3,0,lVar3,lVar7,param_1,lVar9)" identifier (argument_list "(param_7,lVar3,0,lVar3,lVar7,param_1,lVar9)" ( identifier , identifier , number_literal , identifier , identifier , identifier , identifier ))) ;) (expression_statement "lVar10 = (lVar7 - lVar9) + 1;" (assignment_expression "lVar10 = (lVar7 - lVar9) + 1" identifier = (binary_expression "(lVar7 - lVar9) + 1" (parenthesized_expression "(lVar7 - lVar9)" ( (binary_expression "lVar7 - lVar9" identifier - identifier) )) + number_literal)) ;) (if_statement "if (lVar9 < 1) goto LAB_001330fa;" if (parenthesized_expression "(lVar9 < 1)" ( (binary_expression "lVar9 < 1" identifier < number_literal) )) (goto_statement "goto LAB_001330fa;" goto statement_identifier ;)) (expression_statement "lVar7 = lVar9 * 8;" (assignment_expression "lVar7 = lVar9 * 8" identifier = (binary_expression "lVar9 * 8" identifier * number_literal)) ;) (expression_statement "lVar4 = *(long *)(lVar3 + -8 + lVar7);" (assignment_expression "lVar4 = *(long *)(lVar3 + -8 + lVar7)" identifier = (pointer_expression "*(long *)(lVar3 + -8 + lVar7)" * (cast_expression "(long *)(lVar3 + -8 + lVar7)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + -8 + lVar7)" ( (binary_expression "lVar3 + -8 + lVar7" (binary_expression "lVar3 + -8" identifier + number_literal) + identifier) ))))) ;) (expression_statement "lVar8 = lVar9;" (assignment_expression "lVar8 = lVar9" identifier = identifier) ;) (while_statement "while ((lVar4 == 0 && (lVar8 = lVar8 + -1, lVar8 != 0))) {\n    lVar4 = *(long *)(lVar3 + -8 + lVar8 * 8);\n  }" while (parenthesized_expression "((lVar4 == 0 && (lVar8 = lVar8 + -1, lVar8 != 0)))" ( (parenthesized_expression "(lVar4 == 0 && (lVar8 = lVar8 + -1, lVar8 != 0))" ( (binary_expression "lVar4 == 0 && (lVar8 = lVar8 + -1, lVar8 != 0)" (binary_expression "lVar4 == 0" identifier == number_literal) && (parenthesized_expression "(lVar8 = lVar8 + -1, lVar8 != 0)" ( (comma_expression "lVar8 = lVar8 + -1, lVar8 != 0" (assignment_expression "lVar8 = lVar8 + -1" identifier = (binary_expression "lVar8 + -1" identifier + number_literal)) , (binary_expression "lVar8 != 0" identifier != number_literal)) ))) )) )) (compound_statement "{\n    lVar4 = *(long *)(lVar3 + -8 + lVar8 * 8);\n  }" { (expression_statement "lVar4 = *(long *)(lVar3 + -8 + lVar8 * 8);" (assignment_expression "lVar4 = *(long *)(lVar3 + -8 + lVar8 * 8)" identifier = (pointer_expression "*(long *)(lVar3 + -8 + lVar8 * 8)" * (cast_expression "(long *)(lVar3 + -8 + lVar8 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + -8 + lVar8 * 8)" ( (binary_expression "lVar3 + -8 + lVar8 * 8" (binary_expression "lVar3 + -8" identifier + number_literal) + (binary_expression "lVar8 * 8" identifier * number_literal)) ))))) ;) })) (if_statement "if (param_4 < lVar8) goto LAB_001330fa;" if (parenthesized_expression "(param_4 < lVar8)" ( (binary_expression "param_4 < lVar8" identifier < identifier) )) (goto_statement "goto LAB_001330fa;" goto statement_identifier ;)) (if_statement "if (param_4 == 0) {\n    (*param_5)(param_6,param_1,lVar9,param_7,lVar10,uVar11);\n    return 0;\n  }" if (parenthesized_expression "(param_4 == 0)" ( (binary_expression "param_4 == 0" identifier == number_literal) )) (compound_statement "{\n    (*param_5)(param_6,param_1,lVar9,param_7,lVar10,uVar11);\n    return 0;\n  }" { (expression_statement "(*param_5)(param_6,param_1,lVar9,param_7,lVar10,uVar11);" (call_expression "(*param_5)(param_6,param_1,lVar9,param_7,lVar10,uVar11)" (parenthesized_expression "(*param_5)" ( (pointer_expression "*param_5" * identifier) )) (argument_list "(param_6,param_1,lVar9,param_7,lVar10,uVar11)" ( identifier , identifier , identifier , identifier , identifier , identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "plVar6 = param_7;" (assignment_expression "plVar6 = param_7" identifier = identifier) ;) (if_statement "if (lVar8 < 1) {\n    __gmpn_copyi(lVar3,param_1,lVar9);\n  }\n  else {\n    lVar4 = __gmpn_add_n(lVar3,param_1,lVar3,lVar8);\n    if (lVar4 != 0) {\n      if (lVar9 <= lVar8) {\nLAB_0013341a:\n        lVar9 = lVar9 + 1;\n        *(undefined8 *)(lVar3 + lVar7) = 1;\n        goto LAB_001333ef;\n      }\n      lVar4 = lVar8 * 8;\n      lVar8 = lVar8 + 1;\n      lVar5 = *(long *)(param_1 + lVar4) + 1;\n      *(long *)(lVar3 + lVar4) = lVar5;\n      while (lVar5 == 0) {\n        if (lVar9 == lVar8) goto LAB_0013341a;\n        lVar4 = lVar8 * 8;\n        lVar8 = lVar8 + 1;\n        lVar5 = *(long *)(param_1 + lVar4) + 1;\n        *(long *)(lVar3 + -8 + lVar8 * 8) = lVar5;\n      }\n    }\n    if ((param_1 != lVar3) && (lVar8 < lVar9)) {\n      do {\n        *(undefined8 *)(lVar3 + lVar8 * 8) = *(undefined8 *)(param_1 + lVar8 * 8);\n        lVar8 = lVar8 + 1;\n      } while (lVar9 != lVar8);\n    }\n  }" if (parenthesized_expression "(lVar8 < 1)" ( (binary_expression "lVar8 < 1" identifier < number_literal) )) (compound_statement "{\n    __gmpn_copyi(lVar3,param_1,lVar9);\n  }" { (expression_statement "__gmpn_copyi(lVar3,param_1,lVar9);" (call_expression "__gmpn_copyi(lVar3,param_1,lVar9)" identifier (argument_list "(lVar3,param_1,lVar9)" ( identifier , identifier , identifier ))) ;) }) (else_clause "else {\n    lVar4 = __gmpn_add_n(lVar3,param_1,lVar3,lVar8);\n    if (lVar4 != 0) {\n      if (lVar9 <= lVar8) {\nLAB_0013341a:\n        lVar9 = lVar9 + 1;\n        *(undefined8 *)(lVar3 + lVar7) = 1;\n        goto LAB_001333ef;\n      }\n      lVar4 = lVar8 * 8;\n      lVar8 = lVar8 + 1;\n      lVar5 = *(long *)(param_1 + lVar4) + 1;\n      *(long *)(lVar3 + lVar4) = lVar5;\n      while (lVar5 == 0) {\n        if (lVar9 == lVar8) goto LAB_0013341a;\n        lVar4 = lVar8 * 8;\n        lVar8 = lVar8 + 1;\n        lVar5 = *(long *)(param_1 + lVar4) + 1;\n        *(long *)(lVar3 + -8 + lVar8 * 8) = lVar5;\n      }\n    }\n    if ((param_1 != lVar3) && (lVar8 < lVar9)) {\n      do {\n        *(undefined8 *)(lVar3 + lVar8 * 8) = *(undefined8 *)(param_1 + lVar8 * 8);\n        lVar8 = lVar8 + 1;\n      } while (lVar9 != lVar8);\n    }\n  }" else (compound_statement "{\n    lVar4 = __gmpn_add_n(lVar3,param_1,lVar3,lVar8);\n    if (lVar4 != 0) {\n      if (lVar9 <= lVar8) {\nLAB_0013341a:\n        lVar9 = lVar9 + 1;\n        *(undefined8 *)(lVar3 + lVar7) = 1;\n        goto LAB_001333ef;\n      }\n      lVar4 = lVar8 * 8;\n      lVar8 = lVar8 + 1;\n      lVar5 = *(long *)(param_1 + lVar4) + 1;\n      *(long *)(lVar3 + lVar4) = lVar5;\n      while (lVar5 == 0) {\n        if (lVar9 == lVar8) goto LAB_0013341a;\n        lVar4 = lVar8 * 8;\n        lVar8 = lVar8 + 1;\n        lVar5 = *(long *)(param_1 + lVar4) + 1;\n        *(long *)(lVar3 + -8 + lVar8 * 8) = lVar5;\n      }\n    }\n    if ((param_1 != lVar3) && (lVar8 < lVar9)) {\n      do {\n        *(undefined8 *)(lVar3 + lVar8 * 8) = *(undefined8 *)(param_1 + lVar8 * 8);\n        lVar8 = lVar8 + 1;\n      } while (lVar9 != lVar8);\n    }\n  }" { (expression_statement "lVar4 = __gmpn_add_n(lVar3,param_1,lVar3,lVar8);" (assignment_expression "lVar4 = __gmpn_add_n(lVar3,param_1,lVar3,lVar8)" identifier = (call_expression "__gmpn_add_n(lVar3,param_1,lVar3,lVar8)" identifier (argument_list "(lVar3,param_1,lVar3,lVar8)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (lVar4 != 0) {\n      if (lVar9 <= lVar8) {\nLAB_0013341a:\n        lVar9 = lVar9 + 1;\n        *(undefined8 *)(lVar3 + lVar7) = 1;\n        goto LAB_001333ef;\n      }\n      lVar4 = lVar8 * 8;\n      lVar8 = lVar8 + 1;\n      lVar5 = *(long *)(param_1 + lVar4) + 1;\n      *(long *)(lVar3 + lVar4) = lVar5;\n      while (lVar5 == 0) {\n        if (lVar9 == lVar8) goto LAB_0013341a;\n        lVar4 = lVar8 * 8;\n        lVar8 = lVar8 + 1;\n        lVar5 = *(long *)(param_1 + lVar4) + 1;\n        *(long *)(lVar3 + -8 + lVar8 * 8) = lVar5;\n      }\n    }" if (parenthesized_expression "(lVar4 != 0)" ( (binary_expression "lVar4 != 0" identifier != number_literal) )) (compound_statement "{\n      if (lVar9 <= lVar8) {\nLAB_0013341a:\n        lVar9 = lVar9 + 1;\n        *(undefined8 *)(lVar3 + lVar7) = 1;\n        goto LAB_001333ef;\n      }\n      lVar4 = lVar8 * 8;\n      lVar8 = lVar8 + 1;\n      lVar5 = *(long *)(param_1 + lVar4) + 1;\n      *(long *)(lVar3 + lVar4) = lVar5;\n      while (lVar5 == 0) {\n        if (lVar9 == lVar8) goto LAB_0013341a;\n        lVar4 = lVar8 * 8;\n        lVar8 = lVar8 + 1;\n        lVar5 = *(long *)(param_1 + lVar4) + 1;\n        *(long *)(lVar3 + -8 + lVar8 * 8) = lVar5;\n      }\n    }" { (if_statement "if (lVar9 <= lVar8) {\nLAB_0013341a:\n        lVar9 = lVar9 + 1;\n        *(undefined8 *)(lVar3 + lVar7) = 1;\n        goto LAB_001333ef;\n      }" if (parenthesized_expression "(lVar9 <= lVar8)" ( (binary_expression "lVar9 <= lVar8" identifier <= identifier) )) (compound_statement "{\nLAB_0013341a:\n        lVar9 = lVar9 + 1;\n        *(undefined8 *)(lVar3 + lVar7) = 1;\n        goto LAB_001333ef;\n      }" { (labeled_statement "LAB_0013341a:\n        lVar9 = lVar9 + 1;" statement_identifier : (expression_statement "lVar9 = lVar9 + 1;" (assignment_expression "lVar9 = lVar9 + 1" identifier = (binary_expression "lVar9 + 1" identifier + number_literal)) ;)) (expression_statement "*(undefined8 *)(lVar3 + lVar7) = 1;" (assignment_expression "*(undefined8 *)(lVar3 + lVar7) = 1" (pointer_expression "*(undefined8 *)(lVar3 + lVar7)" * (cast_expression "(undefined8 *)(lVar3 + lVar7)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + lVar7)" ( (binary_expression "lVar3 + lVar7" identifier + identifier) )))) = number_literal) ;) (goto_statement "goto LAB_001333ef;" goto statement_identifier ;) })) (expression_statement "lVar4 = lVar8 * 8;" (assignment_expression "lVar4 = lVar8 * 8" identifier = (binary_expression "lVar8 * 8" identifier * number_literal)) ;) (expression_statement "lVar8 = lVar8 + 1;" (assignment_expression "lVar8 = lVar8 + 1" identifier = (binary_expression "lVar8 + 1" identifier + number_literal)) ;) (expression_statement "lVar5 = *(long *)(param_1 + lVar4) + 1;" (assignment_expression "lVar5 = *(long *)(param_1 + lVar4) + 1" identifier = (binary_expression "*(long *)(param_1 + lVar4) + 1" (pointer_expression "*(long *)(param_1 + lVar4)" * (cast_expression "(long *)(param_1 + lVar4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + lVar4)" ( (binary_expression "param_1 + lVar4" identifier + identifier) )))) + number_literal)) ;) (expression_statement "*(long *)(lVar3 + lVar4) = lVar5;" (assignment_expression "*(long *)(lVar3 + lVar4) = lVar5" (pointer_expression "*(long *)(lVar3 + lVar4)" * (cast_expression "(long *)(lVar3 + lVar4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + lVar4)" ( (binary_expression "lVar3 + lVar4" identifier + identifier) )))) = identifier) ;) (while_statement "while (lVar5 == 0) {\n        if (lVar9 == lVar8) goto LAB_0013341a;\n        lVar4 = lVar8 * 8;\n        lVar8 = lVar8 + 1;\n        lVar5 = *(long *)(param_1 + lVar4) + 1;\n        *(long *)(lVar3 + -8 + lVar8 * 8) = lVar5;\n      }" while (parenthesized_expression "(lVar5 == 0)" ( (binary_expression "lVar5 == 0" identifier == number_literal) )) (compound_statement "{\n        if (lVar9 == lVar8) goto LAB_0013341a;\n        lVar4 = lVar8 * 8;\n        lVar8 = lVar8 + 1;\n        lVar5 = *(long *)(param_1 + lVar4) + 1;\n        *(long *)(lVar3 + -8 + lVar8 * 8) = lVar5;\n      }" { (if_statement "if (lVar9 == lVar8) goto LAB_0013341a;" if (parenthesized_expression "(lVar9 == lVar8)" ( (binary_expression "lVar9 == lVar8" identifier == identifier) )) (goto_statement "goto LAB_0013341a;" goto statement_identifier ;)) (expression_statement "lVar4 = lVar8 * 8;" (assignment_expression "lVar4 = lVar8 * 8" identifier = (binary_expression "lVar8 * 8" identifier * number_literal)) ;) (expression_statement "lVar8 = lVar8 + 1;" (assignment_expression "lVar8 = lVar8 + 1" identifier = (binary_expression "lVar8 + 1" identifier + number_literal)) ;) (expression_statement "lVar5 = *(long *)(param_1 + lVar4) + 1;" (assignment_expression "lVar5 = *(long *)(param_1 + lVar4) + 1" identifier = (binary_expression "*(long *)(param_1 + lVar4) + 1" (pointer_expression "*(long *)(param_1 + lVar4)" * (cast_expression "(long *)(param_1 + lVar4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + lVar4)" ( (binary_expression "param_1 + lVar4" identifier + identifier) )))) + number_literal)) ;) (expression_statement "*(long *)(lVar3 + -8 + lVar8 * 8) = lVar5;" (assignment_expression "*(long *)(lVar3 + -8 + lVar8 * 8) = lVar5" (pointer_expression "*(long *)(lVar3 + -8 + lVar8 * 8)" * (cast_expression "(long *)(lVar3 + -8 + lVar8 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + -8 + lVar8 * 8)" ( (binary_expression "lVar3 + -8 + lVar8 * 8" (binary_expression "lVar3 + -8" identifier + number_literal) + (binary_expression "lVar8 * 8" identifier * number_literal)) )))) = identifier) ;) })) })) (if_statement "if ((param_1 != lVar3) && (lVar8 < lVar9)) {\n      do {\n        *(undefined8 *)(lVar3 + lVar8 * 8) = *(undefined8 *)(param_1 + lVar8 * 8);\n        lVar8 = lVar8 + 1;\n      } while (lVar9 != lVar8);\n    }" if (parenthesized_expression "((param_1 != lVar3) && (lVar8 < lVar9))" ( (binary_expression "(param_1 != lVar3) && (lVar8 < lVar9)" (parenthesized_expression "(param_1 != lVar3)" ( (binary_expression "param_1 != lVar3" identifier != identifier) )) && (parenthesized_expression "(lVar8 < lVar9)" ( (binary_expression "lVar8 < lVar9" identifier < identifier) ))) )) (compound_statement "{\n      do {\n        *(undefined8 *)(lVar3 + lVar8 * 8) = *(undefined8 *)(param_1 + lVar8 * 8);\n        lVar8 = lVar8 + 1;\n      } while (lVar9 != lVar8);\n    }" { (do_statement "do {\n        *(undefined8 *)(lVar3 + lVar8 * 8) = *(undefined8 *)(param_1 + lVar8 * 8);\n        lVar8 = lVar8 + 1;\n      } while (lVar9 != lVar8);" do (compound_statement "{\n        *(undefined8 *)(lVar3 + lVar8 * 8) = *(undefined8 *)(param_1 + lVar8 * 8);\n        lVar8 = lVar8 + 1;\n      }" { (expression_statement "*(undefined8 *)(lVar3 + lVar8 * 8) = *(undefined8 *)(param_1 + lVar8 * 8);" (assignment_expression "*(undefined8 *)(lVar3 + lVar8 * 8) = *(undefined8 *)(param_1 + lVar8 * 8)" (pointer_expression "*(undefined8 *)(lVar3 + lVar8 * 8)" * (cast_expression "(undefined8 *)(lVar3 + lVar8 * 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + lVar8 * 8)" ( (binary_expression "lVar3 + lVar8 * 8" identifier + (binary_expression "lVar8 * 8" identifier * number_literal)) )))) = (pointer_expression "*(undefined8 *)(param_1 + lVar8 * 8)" * (cast_expression "(undefined8 *)(param_1 + lVar8 * 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + lVar8 * 8)" ( (binary_expression "param_1 + lVar8 * 8" identifier + (binary_expression "lVar8 * 8" identifier * number_literal)) ))))) ;) (expression_statement "lVar8 = lVar8 + 1;" (assignment_expression "lVar8 = lVar8 + 1" identifier = (binary_expression "lVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar9 != lVar8)" ( (binary_expression "lVar9 != lVar8" identifier != identifier) )) ;) })) }))) (labeled_statement "LAB_001333ef:\n  do {\n    lVar3 = *plVar6;\n    *plVar6 = *plVar6 + -1;\n    plVar6 = plVar6 + 1;\n  } while (lVar3 == 0);" statement_identifier : (do_statement "do {\n    lVar3 = *plVar6;\n    *plVar6 = *plVar6 + -1;\n    plVar6 = plVar6 + 1;\n  } while (lVar3 == 0);" do (compound_statement "{\n    lVar3 = *plVar6;\n    *plVar6 = *plVar6 + -1;\n    plVar6 = plVar6 + 1;\n  }" { (expression_statement "lVar3 = *plVar6;" (assignment_expression "lVar3 = *plVar6" identifier = (pointer_expression "*plVar6" * identifier)) ;) (expression_statement "*plVar6 = *plVar6 + -1;" (assignment_expression "*plVar6 = *plVar6 + -1" (pointer_expression "*plVar6" * identifier) = (binary_expression "*plVar6 + -1" (pointer_expression "*plVar6" * identifier) + number_literal)) ;) (expression_statement "plVar6 = plVar6 + 1;" (assignment_expression "plVar6 = plVar6 + 1" identifier = (binary_expression "plVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) )) ;)) (labeled_statement "LAB_001330fa:\n  (*param_5)(param_6,0,0,param_7,lVar10,uVar11);" statement_identifier : (expression_statement "(*param_5)(param_6,0,0,param_7,lVar10,uVar11);" (call_expression "(*param_5)(param_6,0,0,param_7,lVar10,uVar11)" (parenthesized_expression "(*param_5)" ( (pointer_expression "*param_5" * identifier) )) (argument_list "(param_6,0,0,param_7,lVar10,uVar11)" ( identifier , number_literal , number_literal , identifier , identifier , identifier ))) ;)) (return_statement "return lVar9;" return identifier ;) })))
(translation_unit (function_definition (sized_type_specifier long) (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (labeled_statement statement_identifier : (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , LIT , LIT , LIT ))) ;) (return_statement return LIT ;) })) (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;) }) while (parenthesized_expression ( (binary_expression IDENT == IDENT) )) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) == LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) }) while (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) )))) == LIT) )) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) ))))) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT == LIT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) ))))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) }))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , LIT , LIT , (binary_expression IDENT ^ LIT) ))) ;) (return_statement return LIT ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT )))) , (binary_expression IDENT == LIT)) ))) )) || (parenthesized_expression ( (binary_expression IDENT <= IDENT) ))) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) ))))) ;) (goto_statement goto statement_identifier ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT )))) , (binary_expression IDENT == LIT)) ))) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = 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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) )))) = IDENT) ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = (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)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (return_statement return LIT ;) }))) (return_statement return LIT ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , LIT , LIT , (pointer_expression & IDENT) , LIT , IDENT ))) ;) (return_statement return LIT ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , LIT , LIT , IDENT ))) ;) (return_statement return LIT ;) })) (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;) }) while (parenthesized_expression ( (binary_expression IDENT == IDENT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT < IDENT) || (binary_expression IDENT == IDENT)) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , LIT , LIT , (pointer_expression & IDENT) , LIT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , LIT , LIT , (pointer_expression & IDENT) , LIT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT ^ LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , LIT , LIT , (pointer_expression & IDENT) , LIT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT ^ LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) )))) = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) )))) == LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) ))))) ;) (labeled_statement statement_identifier : (expression_statement ;)) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (goto_statement goto 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) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = LIT) ;)) (return_statement return LIT ;) })) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) }))) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , LIT , LIT , (pointer_expression & IDENT) , LIT , IDENT ))) ;) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression IDENT != LIT)) ))) )) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) ))))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , IDENT ))) ;) (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) }) (else_clause else (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = 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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) )))) = IDENT) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != IDENT) )) && (parenthesized_expression ( (binary_expression IDENT < IDENT) ))) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = (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)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) }))) (labeled_statement statement_identifier : (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;)) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , LIT , LIT , IDENT , IDENT , IDENT ))) ;)) (return_statement return IDENT ;) })))
(function_definition "long __gmpn_gcd_subdiv_step\n               (long param_1,long param_2,long param_3,long param_4,code *param_5,undefined8 param_6\n               ,long *param_7)\n\n{\n  ulong uVar1;\n  ulong uVar2;\n  long lVar3;\n  long lVar4;\n  long lVar5;\n  long *plVar6;\n  long lVar7;\n  long lVar8;\n  long lVar9;\n  long lVar10;\n  uint uVar11;\n  \n  lVar3 = param_3;\n  lVar9 = param_3;\n  lVar10 = param_2;\n  if (param_3 < 1) {\nLAB_00133136:\n    do {\n      lVar9 = lVar9 + -1;\n      if (lVar9 < 0) {\n        if (param_4 != 0) {\n          return 0;\n        }\n        (*param_5)(param_6,param_1,param_3,0,0,0xffffffff);\n        return 0;\n      }\n      uVar1 = *(ulong *)(param_1 + lVar9 * 8);\n      uVar2 = *(ulong *)(param_2 + lVar9 * 8);\n    } while (uVar1 == uVar2);\n    lVar7 = lVar3;\n    lVar9 = param_3;\n    if (uVar2 < uVar1) {\n      uVar11 = 1;\n      lVar10 = param_1;\n      param_1 = param_2;\n    }\n    else {\n      uVar11 = 0;\n    }\n  }\n  else {\n    lVar7 = param_3 * 8;\n    if (*(long *)(param_1 + -8 + lVar7) != 0) {\n      if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n      goto LAB_00133136;\n    }\n    do {\n      lVar9 = lVar9 + -1;\n      if (lVar9 == 0) {\n        if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n        uVar11 = 0;\n        lVar7 = param_3;\n        goto LAB_00133008;\n      }\n    } while (*(long *)(param_1 + -8 + lVar9 * 8) == 0);\n    lVar7 = *(long *)(param_2 + -8 + lVar7);\n    while (param_3 = lVar3, lVar7 == 0) {\nLAB_00132fd1:\n      lVar3 = param_3 + -1;\n      if (lVar3 == 0) break;\n      lVar7 = *(long *)(param_2 + -8 + lVar3 * 8);\n    }\n    param_3 = lVar9;\n    lVar9 = param_3;\n    if (lVar3 == param_3) goto LAB_00133136;\n    uVar11 = 0;\n    lVar7 = lVar3;\n    if (lVar3 < param_3) {\n      uVar11 = 1;\n      lVar7 = param_3;\n      lVar9 = lVar3;\n      lVar10 = param_1;\n      param_1 = param_2;\n    }\n  }\nLAB_00133008:\n  if (lVar9 <= param_4) {\n    if (param_4 != 0) {\n      return 0;\n    }\n    (*param_5)(param_6,lVar10,lVar7,0,0,uVar11 ^ 1);\n    return 0;\n  }\n  lVar3 = lVar10;\n  if (((lVar9 == 0) || (lVar4 = __gmpn_sub_n(lVar10,lVar10,param_1,lVar9), lVar4 == 0)) ||\n     (lVar7 <= lVar9)) {\nLAB_0013301a:\n    if (0 < lVar7) {\n      lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\n      goto joined_r0x00133029;\n    }\nLAB_0013321f:\n    lVar4 = lVar7;\n    if (lVar7 <= param_4) {\n      if ((lVar7 == 0) || (lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7), lVar3 == 0))\n      goto LAB_00133231;\nLAB_0013327a:\n      lVar3 = lVar7 * 8;\n      lVar7 = lVar7 + 1;\n      lVar4 = *(long *)(param_1 + lVar3) + 1;\n      *(long *)(lVar10 + lVar3) = lVar4;\n      while (lVar4 == 0) {\n        if (lVar9 == lVar7) goto LAB_00133408;\n        lVar3 = lVar7 * 8;\n        lVar7 = lVar7 + 1;\n        lVar4 = *(long *)(param_1 + lVar3) + 1;\n        *(long *)(lVar10 + -8 + lVar7 * 8) = lVar4;\n      }\nLAB_00133231:\n      if (param_1 != lVar10) {\n        if (lVar7 < lVar9) {\n          do {\n            *(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8);\n            lVar7 = lVar7 + 1;\n          } while (lVar9 != lVar7);\n        }\n        return 0;\n      }\n      return 0;\n    }\nLAB_00133049:\n    lVar8 = lVar9;\n    lVar7 = lVar4;\n    if (lVar9 == lVar4) {\n      do {\n        lVar8 = lVar8 + -1;\n        if (lVar8 < 0) {\n          if (0 < param_4) {\n            (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n            return 0;\n          }\n          (*param_5)(param_6,lVar10,lVar4,0,0,uVar11);\n          return 0;\n        }\n        uVar1 = *(ulong *)(param_1 + lVar8 * 8);\n        uVar2 = *(ulong *)(lVar10 + lVar8 * 8);\n      } while (uVar1 == uVar2);\n      if (uVar1 < uVar2 || uVar1 == uVar2) {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      }\n      else {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n        uVar11 = uVar11 ^ 1;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }\n    }\n    else {\n      (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      if (lVar4 < lVar9) {\n        uVar11 = uVar11 ^ 1;\n        lVar7 = lVar9;\n        lVar9 = lVar4;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }\n    }\n  }\n  else {\n    plVar6 = (long *)(lVar10 + lVar9 * 8);\n    lVar8 = *plVar6;\n    lVar4 = lVar9 + 1;\n    *plVar6 = lVar8 + -1;\n    if (lVar8 == 0) {\n      do {\n        if (lVar7 == lVar4) goto LAB_00133465;\n        lVar8 = *(long *)(lVar10 + lVar4 * 8);\n        lVar4 = lVar4 + 1;\n        *(long *)(lVar10 + -8 + lVar4 * 8) = lVar8 + -1;\n      } while (lVar8 == 0);\n      goto LAB_0013301a;\n    }\nLAB_00133465:\n    if (0 < lVar7) {\n      lVar4 = lVar7;\n      if (*(long *)(lVar10 + -8 + lVar7 * 8) == 0) {\n        do {\n          lVar7 = lVar7 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\njoined_r0x00133029:\n        } while (lVar4 == 0);\n        lVar4 = lVar7;\n        if (param_4 < lVar7) goto LAB_00133049;\n        lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7);\n        if (lVar3 == 0) goto LAB_00133231;\n        if (lVar9 <= lVar7) {\nLAB_00133408:\n          *(undefined8 *)(lVar10 + lVar9 * 8) = 1;\n          return 0;\n        }\n        goto LAB_0013327a;\n      }\n      goto LAB_00133049;\n    }\n    (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n  }\n  __gmpn_tdiv_qr(param_7,lVar3,0,lVar3,lVar7,param_1,lVar9);\n  lVar10 = (lVar7 - lVar9) + 1;\n  if (lVar9 < 1) goto LAB_001330fa;\n  lVar7 = lVar9 * 8;\n  lVar4 = *(long *)(lVar3 + -8 + lVar7);\n  lVar8 = lVar9;\n  while ((lVar4 == 0 && (lVar8 = lVar8 + -1, lVar8 != 0))) {\n    lVar4 = *(long *)(lVar3 + -8 + lVar8 * 8);\n  }\n  if (param_4 < lVar8) goto LAB_001330fa;\n  if (param_4 == 0) {\n    (*param_5)(param_6,param_1,lVar9,param_7,lVar10,uVar11);\n    return 0;\n  }\n  plVar6 = param_7;\n  if (lVar8 < 1) {\n    __gmpn_copyi(lVar3,param_1,lVar9);\n  }\n  else {\n    lVar4 = __gmpn_add_n(lVar3,param_1,lVar3,lVar8);\n    if (lVar4 != 0) {\n      if (lVar9 <= lVar8) {\nLAB_0013341a:\n        lVar9 = lVar9 + 1;\n        *(undefined8 *)(lVar3 + lVar7) = 1;\n        goto LAB_001333ef;\n      }\n      lVar4 = lVar8 * 8;\n      lVar8 = lVar8 + 1;\n      lVar5 = *(long *)(param_1 + lVar4) + 1;\n      *(long *)(lVar3 + lVar4) = lVar5;\n      while (lVar5 == 0) {\n        if (lVar9 == lVar8) goto LAB_0013341a;\n        lVar4 = lVar8 * 8;\n        lVar8 = lVar8 + 1;\n        lVar5 = *(long *)(param_1 + lVar4) + 1;\n        *(long *)(lVar3 + -8 + lVar8 * 8) = lVar5;\n      }\n    }\n    if ((param_1 != lVar3) && (lVar8 < lVar9)) {\n      do {\n        *(undefined8 *)(lVar3 + lVar8 * 8) = *(undefined8 *)(param_1 + lVar8 * 8);\n        lVar8 = lVar8 + 1;\n      } while (lVar9 != lVar8);\n    }\n  }\nLAB_001333ef:\n  do {\n    lVar3 = *plVar6;\n    *plVar6 = *plVar6 + -1;\n    plVar6 = plVar6 + 1;\n  } while (lVar3 == 0);\nLAB_001330fa:\n  (*param_5)(param_6,0,0,param_7,lVar10,uVar11);\n  return lVar9;\n}" (sized_type_specifier "long" (long "long")) (function_declarator "__gmpn_gcd_subdiv_step\n               (long param_1,long param_2,long param_3,long param_4,code *param_5,undefined8 param_6\n               ,long *param_7)" (identifier "__gmpn_gcd_subdiv_step") (parameter_list "(long param_1,long param_2,long param_3,long param_4,code *param_5,undefined8 param_6\n               ,long *param_7)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) (, ",") (parameter_declaration "long param_3" (sized_type_specifier "long" (long "long")) (identifier "param_3")) (, ",") (parameter_declaration "long param_4" (sized_type_specifier "long" (long "long")) (identifier "param_4")) (, ",") (parameter_declaration "code *param_5" (type_identifier "code") (pointer_declarator "*param_5" (* "*") (identifier "param_5"))) (, ",") (parameter_declaration "undefined8 param_6" (type_identifier "undefined8") (identifier "param_6")) (, ",") (parameter_declaration "long *param_7" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_7" (* "*") (identifier "param_7"))) () ")"))) (compound_statement "{\n  ulong uVar1;\n  ulong uVar2;\n  long lVar3;\n  long lVar4;\n  long lVar5;\n  long *plVar6;\n  long lVar7;\n  long lVar8;\n  long lVar9;\n  long lVar10;\n  uint uVar11;\n  \n  lVar3 = param_3;\n  lVar9 = param_3;\n  lVar10 = param_2;\n  if (param_3 < 1) {\nLAB_00133136:\n    do {\n      lVar9 = lVar9 + -1;\n      if (lVar9 < 0) {\n        if (param_4 != 0) {\n          return 0;\n        }\n        (*param_5)(param_6,param_1,param_3,0,0,0xffffffff);\n        return 0;\n      }\n      uVar1 = *(ulong *)(param_1 + lVar9 * 8);\n      uVar2 = *(ulong *)(param_2 + lVar9 * 8);\n    } while (uVar1 == uVar2);\n    lVar7 = lVar3;\n    lVar9 = param_3;\n    if (uVar2 < uVar1) {\n      uVar11 = 1;\n      lVar10 = param_1;\n      param_1 = param_2;\n    }\n    else {\n      uVar11 = 0;\n    }\n  }\n  else {\n    lVar7 = param_3 * 8;\n    if (*(long *)(param_1 + -8 + lVar7) != 0) {\n      if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n      goto LAB_00133136;\n    }\n    do {\n      lVar9 = lVar9 + -1;\n      if (lVar9 == 0) {\n        if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n        uVar11 = 0;\n        lVar7 = param_3;\n        goto LAB_00133008;\n      }\n    } while (*(long *)(param_1 + -8 + lVar9 * 8) == 0);\n    lVar7 = *(long *)(param_2 + -8 + lVar7);\n    while (param_3 = lVar3, lVar7 == 0) {\nLAB_00132fd1:\n      lVar3 = param_3 + -1;\n      if (lVar3 == 0) break;\n      lVar7 = *(long *)(param_2 + -8 + lVar3 * 8);\n    }\n    param_3 = lVar9;\n    lVar9 = param_3;\n    if (lVar3 == param_3) goto LAB_00133136;\n    uVar11 = 0;\n    lVar7 = lVar3;\n    if (lVar3 < param_3) {\n      uVar11 = 1;\n      lVar7 = param_3;\n      lVar9 = lVar3;\n      lVar10 = param_1;\n      param_1 = param_2;\n    }\n  }\nLAB_00133008:\n  if (lVar9 <= param_4) {\n    if (param_4 != 0) {\n      return 0;\n    }\n    (*param_5)(param_6,lVar10,lVar7,0,0,uVar11 ^ 1);\n    return 0;\n  }\n  lVar3 = lVar10;\n  if (((lVar9 == 0) || (lVar4 = __gmpn_sub_n(lVar10,lVar10,param_1,lVar9), lVar4 == 0)) ||\n     (lVar7 <= lVar9)) {\nLAB_0013301a:\n    if (0 < lVar7) {\n      lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\n      goto joined_r0x00133029;\n    }\nLAB_0013321f:\n    lVar4 = lVar7;\n    if (lVar7 <= param_4) {\n      if ((lVar7 == 0) || (lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7), lVar3 == 0))\n      goto LAB_00133231;\nLAB_0013327a:\n      lVar3 = lVar7 * 8;\n      lVar7 = lVar7 + 1;\n      lVar4 = *(long *)(param_1 + lVar3) + 1;\n      *(long *)(lVar10 + lVar3) = lVar4;\n      while (lVar4 == 0) {\n        if (lVar9 == lVar7) goto LAB_00133408;\n        lVar3 = lVar7 * 8;\n        lVar7 = lVar7 + 1;\n        lVar4 = *(long *)(param_1 + lVar3) + 1;\n        *(long *)(lVar10 + -8 + lVar7 * 8) = lVar4;\n      }\nLAB_00133231:\n      if (param_1 != lVar10) {\n        if (lVar7 < lVar9) {\n          do {\n            *(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8);\n            lVar7 = lVar7 + 1;\n          } while (lVar9 != lVar7);\n        }\n        return 0;\n      }\n      return 0;\n    }\nLAB_00133049:\n    lVar8 = lVar9;\n    lVar7 = lVar4;\n    if (lVar9 == lVar4) {\n      do {\n        lVar8 = lVar8 + -1;\n        if (lVar8 < 0) {\n          if (0 < param_4) {\n            (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n            return 0;\n          }\n          (*param_5)(param_6,lVar10,lVar4,0,0,uVar11);\n          return 0;\n        }\n        uVar1 = *(ulong *)(param_1 + lVar8 * 8);\n        uVar2 = *(ulong *)(lVar10 + lVar8 * 8);\n      } while (uVar1 == uVar2);\n      if (uVar1 < uVar2 || uVar1 == uVar2) {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      }\n      else {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n        uVar11 = uVar11 ^ 1;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }\n    }\n    else {\n      (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      if (lVar4 < lVar9) {\n        uVar11 = uVar11 ^ 1;\n        lVar7 = lVar9;\n        lVar9 = lVar4;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }\n    }\n  }\n  else {\n    plVar6 = (long *)(lVar10 + lVar9 * 8);\n    lVar8 = *plVar6;\n    lVar4 = lVar9 + 1;\n    *plVar6 = lVar8 + -1;\n    if (lVar8 == 0) {\n      do {\n        if (lVar7 == lVar4) goto LAB_00133465;\n        lVar8 = *(long *)(lVar10 + lVar4 * 8);\n        lVar4 = lVar4 + 1;\n        *(long *)(lVar10 + -8 + lVar4 * 8) = lVar8 + -1;\n      } while (lVar8 == 0);\n      goto LAB_0013301a;\n    }\nLAB_00133465:\n    if (0 < lVar7) {\n      lVar4 = lVar7;\n      if (*(long *)(lVar10 + -8 + lVar7 * 8) == 0) {\n        do {\n          lVar7 = lVar7 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\njoined_r0x00133029:\n        } while (lVar4 == 0);\n        lVar4 = lVar7;\n        if (param_4 < lVar7) goto LAB_00133049;\n        lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7);\n        if (lVar3 == 0) goto LAB_00133231;\n        if (lVar9 <= lVar7) {\nLAB_00133408:\n          *(undefined8 *)(lVar10 + lVar9 * 8) = 1;\n          return 0;\n        }\n        goto LAB_0013327a;\n      }\n      goto LAB_00133049;\n    }\n    (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n  }\n  __gmpn_tdiv_qr(param_7,lVar3,0,lVar3,lVar7,param_1,lVar9);\n  lVar10 = (lVar7 - lVar9) + 1;\n  if (lVar9 < 1) goto LAB_001330fa;\n  lVar7 = lVar9 * 8;\n  lVar4 = *(long *)(lVar3 + -8 + lVar7);\n  lVar8 = lVar9;\n  while ((lVar4 == 0 && (lVar8 = lVar8 + -1, lVar8 != 0))) {\n    lVar4 = *(long *)(lVar3 + -8 + lVar8 * 8);\n  }\n  if (param_4 < lVar8) goto LAB_001330fa;\n  if (param_4 == 0) {\n    (*param_5)(param_6,param_1,lVar9,param_7,lVar10,uVar11);\n    return 0;\n  }\n  plVar6 = param_7;\n  if (lVar8 < 1) {\n    __gmpn_copyi(lVar3,param_1,lVar9);\n  }\n  else {\n    lVar4 = __gmpn_add_n(lVar3,param_1,lVar3,lVar8);\n    if (lVar4 != 0) {\n      if (lVar9 <= lVar8) {\nLAB_0013341a:\n        lVar9 = lVar9 + 1;\n        *(undefined8 *)(lVar3 + lVar7) = 1;\n        goto LAB_001333ef;\n      }\n      lVar4 = lVar8 * 8;\n      lVar8 = lVar8 + 1;\n      lVar5 = *(long *)(param_1 + lVar4) + 1;\n      *(long *)(lVar3 + lVar4) = lVar5;\n      while (lVar5 == 0) {\n        if (lVar9 == lVar8) goto LAB_0013341a;\n        lVar4 = lVar8 * 8;\n        lVar8 = lVar8 + 1;\n        lVar5 = *(long *)(param_1 + lVar4) + 1;\n        *(long *)(lVar3 + -8 + lVar8 * 8) = lVar5;\n      }\n    }\n    if ((param_1 != lVar3) && (lVar8 < lVar9)) {\n      do {\n        *(undefined8 *)(lVar3 + lVar8 * 8) = *(undefined8 *)(param_1 + lVar8 * 8);\n        lVar8 = lVar8 + 1;\n      } while (lVar9 != lVar8);\n    }\n  }\nLAB_001333ef:\n  do {\n    lVar3 = *plVar6;\n    *plVar6 = *plVar6 + -1;\n    plVar6 = plVar6 + 1;\n  } while (lVar3 == 0);\nLAB_001330fa:\n  (*param_5)(param_6,0,0,param_7,lVar10,uVar11);\n  return lVar9;\n}" ({ "{") (declaration "ulong uVar1;" (type_identifier "ulong") (identifier "uVar1") (; ";")) (declaration "ulong uVar2;" (type_identifier "ulong") (identifier "uVar2") (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "long lVar4;" (sized_type_specifier "long" (long "long")) (identifier "lVar4") (; ";")) (declaration "long lVar5;" (sized_type_specifier "long" (long "long")) (identifier "lVar5") (; ";")) (declaration "long *plVar6;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar6" (* "*") (identifier "plVar6")) (; ";")) (declaration "long lVar7;" (sized_type_specifier "long" (long "long")) (identifier "lVar7") (; ";")) (declaration "long lVar8;" (sized_type_specifier "long" (long "long")) (identifier "lVar8") (; ";")) (declaration "long lVar9;" (sized_type_specifier "long" (long "long")) (identifier "lVar9") (; ";")) (declaration "long lVar10;" (sized_type_specifier "long" (long "long")) (identifier "lVar10") (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (expression_statement "lVar3 = param_3;" (assignment_expression "lVar3 = param_3" (identifier "lVar3") (= "=") (identifier "param_3")) (; ";")) (expression_statement "lVar9 = param_3;" (assignment_expression "lVar9 = param_3" (identifier "lVar9") (= "=") (identifier "param_3")) (; ";")) (expression_statement "lVar10 = param_2;" (assignment_expression "lVar10 = param_2" (identifier "lVar10") (= "=") (identifier "param_2")) (; ";")) (if_statement "if (param_3 < 1) {\nLAB_00133136:\n    do {\n      lVar9 = lVar9 + -1;\n      if (lVar9 < 0) {\n        if (param_4 != 0) {\n          return 0;\n        }\n        (*param_5)(param_6,param_1,param_3,0,0,0xffffffff);\n        return 0;\n      }\n      uVar1 = *(ulong *)(param_1 + lVar9 * 8);\n      uVar2 = *(ulong *)(param_2 + lVar9 * 8);\n    } while (uVar1 == uVar2);\n    lVar7 = lVar3;\n    lVar9 = param_3;\n    if (uVar2 < uVar1) {\n      uVar11 = 1;\n      lVar10 = param_1;\n      param_1 = param_2;\n    }\n    else {\n      uVar11 = 0;\n    }\n  }\n  else {\n    lVar7 = param_3 * 8;\n    if (*(long *)(param_1 + -8 + lVar7) != 0) {\n      if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n      goto LAB_00133136;\n    }\n    do {\n      lVar9 = lVar9 + -1;\n      if (lVar9 == 0) {\n        if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n        uVar11 = 0;\n        lVar7 = param_3;\n        goto LAB_00133008;\n      }\n    } while (*(long *)(param_1 + -8 + lVar9 * 8) == 0);\n    lVar7 = *(long *)(param_2 + -8 + lVar7);\n    while (param_3 = lVar3, lVar7 == 0) {\nLAB_00132fd1:\n      lVar3 = param_3 + -1;\n      if (lVar3 == 0) break;\n      lVar7 = *(long *)(param_2 + -8 + lVar3 * 8);\n    }\n    param_3 = lVar9;\n    lVar9 = param_3;\n    if (lVar3 == param_3) goto LAB_00133136;\n    uVar11 = 0;\n    lVar7 = lVar3;\n    if (lVar3 < param_3) {\n      uVar11 = 1;\n      lVar7 = param_3;\n      lVar9 = lVar3;\n      lVar10 = param_1;\n      param_1 = param_2;\n    }\n  }" (if "if") (parenthesized_expression "(param_3 < 1)" (( "(") (binary_expression "param_3 < 1" (identifier "param_3") (< "<") (number_literal "1")) () ")")) (compound_statement "{\nLAB_00133136:\n    do {\n      lVar9 = lVar9 + -1;\n      if (lVar9 < 0) {\n        if (param_4 != 0) {\n          return 0;\n        }\n        (*param_5)(param_6,param_1,param_3,0,0,0xffffffff);\n        return 0;\n      }\n      uVar1 = *(ulong *)(param_1 + lVar9 * 8);\n      uVar2 = *(ulong *)(param_2 + lVar9 * 8);\n    } while (uVar1 == uVar2);\n    lVar7 = lVar3;\n    lVar9 = param_3;\n    if (uVar2 < uVar1) {\n      uVar11 = 1;\n      lVar10 = param_1;\n      param_1 = param_2;\n    }\n    else {\n      uVar11 = 0;\n    }\n  }" ({ "{") (labeled_statement "LAB_00133136:\n    do {\n      lVar9 = lVar9 + -1;\n      if (lVar9 < 0) {\n        if (param_4 != 0) {\n          return 0;\n        }\n        (*param_5)(param_6,param_1,param_3,0,0,0xffffffff);\n        return 0;\n      }\n      uVar1 = *(ulong *)(param_1 + lVar9 * 8);\n      uVar2 = *(ulong *)(param_2 + lVar9 * 8);\n    } while (uVar1 == uVar2);" (statement_identifier "LAB_00133136") (: ":") (do_statement "do {\n      lVar9 = lVar9 + -1;\n      if (lVar9 < 0) {\n        if (param_4 != 0) {\n          return 0;\n        }\n        (*param_5)(param_6,param_1,param_3,0,0,0xffffffff);\n        return 0;\n      }\n      uVar1 = *(ulong *)(param_1 + lVar9 * 8);\n      uVar2 = *(ulong *)(param_2 + lVar9 * 8);\n    } while (uVar1 == uVar2);" (do "do") (compound_statement "{\n      lVar9 = lVar9 + -1;\n      if (lVar9 < 0) {\n        if (param_4 != 0) {\n          return 0;\n        }\n        (*param_5)(param_6,param_1,param_3,0,0,0xffffffff);\n        return 0;\n      }\n      uVar1 = *(ulong *)(param_1 + lVar9 * 8);\n      uVar2 = *(ulong *)(param_2 + lVar9 * 8);\n    }" ({ "{") (expression_statement "lVar9 = lVar9 + -1;" (assignment_expression "lVar9 = lVar9 + -1" (identifier "lVar9") (= "=") (binary_expression "lVar9 + -1" (identifier "lVar9") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (lVar9 < 0) {\n        if (param_4 != 0) {\n          return 0;\n        }\n        (*param_5)(param_6,param_1,param_3,0,0,0xffffffff);\n        return 0;\n      }" (if "if") (parenthesized_expression "(lVar9 < 0)" (( "(") (binary_expression "lVar9 < 0" (identifier "lVar9") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        if (param_4 != 0) {\n          return 0;\n        }\n        (*param_5)(param_6,param_1,param_3,0,0,0xffffffff);\n        return 0;\n      }" ({ "{") (if_statement "if (param_4 != 0) {\n          return 0;\n        }" (if "if") (parenthesized_expression "(param_4 != 0)" (( "(") (binary_expression "param_4 != 0" (identifier "param_4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          return 0;\n        }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "(*param_5)(param_6,param_1,param_3,0,0,0xffffffff);" (call_expression "(*param_5)(param_6,param_1,param_3,0,0,0xffffffff)" (parenthesized_expression "(*param_5)" (( "(") (pointer_expression "*param_5" (* "*") (identifier "param_5")) () ")")) (argument_list "(param_6,param_1,param_3,0,0,0xffffffff)" (( "(") (identifier "param_6") (, ",") (identifier "param_1") (, ",") (identifier "param_3") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "0xffffffff") () ")"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "uVar1 = *(ulong *)(param_1 + lVar9 * 8);" (assignment_expression "uVar1 = *(ulong *)(param_1 + lVar9 * 8)" (identifier "uVar1") (= "=") (pointer_expression "*(ulong *)(param_1 + lVar9 * 8)" (* "*") (cast_expression "(ulong *)(param_1 + lVar9 * 8)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + lVar9 * 8)" (( "(") (binary_expression "param_1 + lVar9 * 8" (identifier "param_1") (+ "+") (binary_expression "lVar9 * 8" (identifier "lVar9") (* "*") (number_literal "8"))) () ")"))))) (; ";")) (expression_statement "uVar2 = *(ulong *)(param_2 + lVar9 * 8);" (assignment_expression "uVar2 = *(ulong *)(param_2 + lVar9 * 8)" (identifier "uVar2") (= "=") (pointer_expression "*(ulong *)(param_2 + lVar9 * 8)" (* "*") (cast_expression "(ulong *)(param_2 + lVar9 * 8)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + lVar9 * 8)" (( "(") (binary_expression "param_2 + lVar9 * 8" (identifier "param_2") (+ "+") (binary_expression "lVar9 * 8" (identifier "lVar9") (* "*") (number_literal "8"))) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar1 == uVar2)" (( "(") (binary_expression "uVar1 == uVar2" (identifier "uVar1") (== "==") (identifier "uVar2")) () ")")) (; ";"))) (expression_statement "lVar7 = lVar3;" (assignment_expression "lVar7 = lVar3" (identifier "lVar7") (= "=") (identifier "lVar3")) (; ";")) (expression_statement "lVar9 = param_3;" (assignment_expression "lVar9 = param_3" (identifier "lVar9") (= "=") (identifier "param_3")) (; ";")) (if_statement "if (uVar2 < uVar1) {\n      uVar11 = 1;\n      lVar10 = param_1;\n      param_1 = param_2;\n    }\n    else {\n      uVar11 = 0;\n    }" (if "if") (parenthesized_expression "(uVar2 < uVar1)" (( "(") (binary_expression "uVar2 < uVar1" (identifier "uVar2") (< "<") (identifier "uVar1")) () ")")) (compound_statement "{\n      uVar11 = 1;\n      lVar10 = param_1;\n      param_1 = param_2;\n    }" ({ "{") (expression_statement "uVar11 = 1;" (assignment_expression "uVar11 = 1" (identifier "uVar11") (= "=") (number_literal "1")) (; ";")) (expression_statement "lVar10 = param_1;" (assignment_expression "lVar10 = param_1" (identifier "lVar10") (= "=") (identifier "param_1")) (; ";")) (expression_statement "param_1 = param_2;" (assignment_expression "param_1 = param_2" (identifier "param_1") (= "=") (identifier "param_2")) (; ";")) (} "}")) (else_clause "else {\n      uVar11 = 0;\n    }" (else "else") (compound_statement "{\n      uVar11 = 0;\n    }" ({ "{") (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" (identifier "uVar11") (= "=") (number_literal "0")) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n    lVar7 = param_3 * 8;\n    if (*(long *)(param_1 + -8 + lVar7) != 0) {\n      if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n      goto LAB_00133136;\n    }\n    do {\n      lVar9 = lVar9 + -1;\n      if (lVar9 == 0) {\n        if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n        uVar11 = 0;\n        lVar7 = param_3;\n        goto LAB_00133008;\n      }\n    } while (*(long *)(param_1 + -8 + lVar9 * 8) == 0);\n    lVar7 = *(long *)(param_2 + -8 + lVar7);\n    while (param_3 = lVar3, lVar7 == 0) {\nLAB_00132fd1:\n      lVar3 = param_3 + -1;\n      if (lVar3 == 0) break;\n      lVar7 = *(long *)(param_2 + -8 + lVar3 * 8);\n    }\n    param_3 = lVar9;\n    lVar9 = param_3;\n    if (lVar3 == param_3) goto LAB_00133136;\n    uVar11 = 0;\n    lVar7 = lVar3;\n    if (lVar3 < param_3) {\n      uVar11 = 1;\n      lVar7 = param_3;\n      lVar9 = lVar3;\n      lVar10 = param_1;\n      param_1 = param_2;\n    }\n  }" (else "else") (compound_statement "{\n    lVar7 = param_3 * 8;\n    if (*(long *)(param_1 + -8 + lVar7) != 0) {\n      if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n      goto LAB_00133136;\n    }\n    do {\n      lVar9 = lVar9 + -1;\n      if (lVar9 == 0) {\n        if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n        uVar11 = 0;\n        lVar7 = param_3;\n        goto LAB_00133008;\n      }\n    } while (*(long *)(param_1 + -8 + lVar9 * 8) == 0);\n    lVar7 = *(long *)(param_2 + -8 + lVar7);\n    while (param_3 = lVar3, lVar7 == 0) {\nLAB_00132fd1:\n      lVar3 = param_3 + -1;\n      if (lVar3 == 0) break;\n      lVar7 = *(long *)(param_2 + -8 + lVar3 * 8);\n    }\n    param_3 = lVar9;\n    lVar9 = param_3;\n    if (lVar3 == param_3) goto LAB_00133136;\n    uVar11 = 0;\n    lVar7 = lVar3;\n    if (lVar3 < param_3) {\n      uVar11 = 1;\n      lVar7 = param_3;\n      lVar9 = lVar3;\n      lVar10 = param_1;\n      param_1 = param_2;\n    }\n  }" ({ "{") (expression_statement "lVar7 = param_3 * 8;" (assignment_expression "lVar7 = param_3 * 8" (identifier "lVar7") (= "=") (binary_expression "param_3 * 8" (identifier "param_3") (* "*") (number_literal "8"))) (; ";")) (if_statement "if (*(long *)(param_1 + -8 + lVar7) != 0) {\n      if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n      goto LAB_00133136;\n    }" (if "if") (parenthesized_expression "(*(long *)(param_1 + -8 + lVar7) != 0)" (( "(") (binary_expression "*(long *)(param_1 + -8 + lVar7) != 0" (pointer_expression "*(long *)(param_1 + -8 + lVar7)" (* "*") (cast_expression "(long *)(param_1 + -8 + lVar7)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + -8 + lVar7)" (( "(") (binary_expression "param_1 + -8 + lVar7" (binary_expression "param_1 + -8" (identifier "param_1") (+ "+") (number_literal "-8")) (+ "+") (identifier "lVar7")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n      goto LAB_00133136;\n    }" ({ "{") (if_statement "if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;" (if "if") (parenthesized_expression "(*(long *)(param_2 + -8 + lVar7) == 0)" (( "(") (binary_expression "*(long *)(param_2 + -8 + lVar7) == 0" (pointer_expression "*(long *)(param_2 + -8 + lVar7)" (* "*") (cast_expression "(long *)(param_2 + -8 + lVar7)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + -8 + lVar7)" (( "(") (binary_expression "param_2 + -8 + lVar7" (binary_expression "param_2 + -8" (identifier "param_2") (+ "+") (number_literal "-8")) (+ "+") (identifier "lVar7")) () ")")))) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00132fd1;" (goto "goto") (statement_identifier "LAB_00132fd1") (; ";"))) (goto_statement "goto LAB_00133136;" (goto "goto") (statement_identifier "LAB_00133136") (; ";")) (} "}"))) (do_statement "do {\n      lVar9 = lVar9 + -1;\n      if (lVar9 == 0) {\n        if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n        uVar11 = 0;\n        lVar7 = param_3;\n        goto LAB_00133008;\n      }\n    } while (*(long *)(param_1 + -8 + lVar9 * 8) == 0);" (do "do") (compound_statement "{\n      lVar9 = lVar9 + -1;\n      if (lVar9 == 0) {\n        if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n        uVar11 = 0;\n        lVar7 = param_3;\n        goto LAB_00133008;\n      }\n    }" ({ "{") (expression_statement "lVar9 = lVar9 + -1;" (assignment_expression "lVar9 = lVar9 + -1" (identifier "lVar9") (= "=") (binary_expression "lVar9 + -1" (identifier "lVar9") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (lVar9 == 0) {\n        if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n        uVar11 = 0;\n        lVar7 = param_3;\n        goto LAB_00133008;\n      }" (if "if") (parenthesized_expression "(lVar9 == 0)" (( "(") (binary_expression "lVar9 == 0" (identifier "lVar9") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;\n        uVar11 = 0;\n        lVar7 = param_3;\n        goto LAB_00133008;\n      }" ({ "{") (if_statement "if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;" (if "if") (parenthesized_expression "(*(long *)(param_2 + -8 + lVar7) == 0)" (( "(") (binary_expression "*(long *)(param_2 + -8 + lVar7) == 0" (pointer_expression "*(long *)(param_2 + -8 + lVar7)" (* "*") (cast_expression "(long *)(param_2 + -8 + lVar7)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + -8 + lVar7)" (( "(") (binary_expression "param_2 + -8 + lVar7" (binary_expression "param_2 + -8" (identifier "param_2") (+ "+") (number_literal "-8")) (+ "+") (identifier "lVar7")) () ")")))) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00132fd1;" (goto "goto") (statement_identifier "LAB_00132fd1") (; ";"))) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" (identifier "uVar11") (= "=") (number_literal "0")) (; ";")) (expression_statement "lVar7 = param_3;" (assignment_expression "lVar7 = param_3" (identifier "lVar7") (= "=") (identifier "param_3")) (; ";")) (goto_statement "goto LAB_00133008;" (goto "goto") (statement_identifier "LAB_00133008") (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "(*(long *)(param_1 + -8 + lVar9 * 8) == 0)" (( "(") (binary_expression "*(long *)(param_1 + -8 + lVar9 * 8) == 0" (pointer_expression "*(long *)(param_1 + -8 + lVar9 * 8)" (* "*") (cast_expression "(long *)(param_1 + -8 + lVar9 * 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + -8 + lVar9 * 8)" (( "(") (binary_expression "param_1 + -8 + lVar9 * 8" (binary_expression "param_1 + -8" (identifier "param_1") (+ "+") (number_literal "-8")) (+ "+") (binary_expression "lVar9 * 8" (identifier "lVar9") (* "*") (number_literal "8"))) () ")")))) (== "==") (number_literal "0")) () ")")) (; ";")) (expression_statement "lVar7 = *(long *)(param_2 + -8 + lVar7);" (assignment_expression "lVar7 = *(long *)(param_2 + -8 + lVar7)" (identifier "lVar7") (= "=") (pointer_expression "*(long *)(param_2 + -8 + lVar7)" (* "*") (cast_expression "(long *)(param_2 + -8 + lVar7)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + -8 + lVar7)" (( "(") (binary_expression "param_2 + -8 + lVar7" (binary_expression "param_2 + -8" (identifier "param_2") (+ "+") (number_literal "-8")) (+ "+") (identifier "lVar7")) () ")"))))) (; ";")) (while_statement "while (param_3 = lVar3, lVar7 == 0) {\nLAB_00132fd1:\n      lVar3 = param_3 + -1;\n      if (lVar3 == 0) break;\n      lVar7 = *(long *)(param_2 + -8 + lVar3 * 8);\n    }" (while "while") (parenthesized_expression "(param_3 = lVar3, lVar7 == 0)" (( "(") (comma_expression "param_3 = lVar3, lVar7 == 0" (assignment_expression "param_3 = lVar3" (identifier "param_3") (= "=") (identifier "lVar3")) (, ",") (binary_expression "lVar7 == 0" (identifier "lVar7") (== "==") (number_literal "0"))) () ")")) (compound_statement "{\nLAB_00132fd1:\n      lVar3 = param_3 + -1;\n      if (lVar3 == 0) break;\n      lVar7 = *(long *)(param_2 + -8 + lVar3 * 8);\n    }" ({ "{") (labeled_statement "LAB_00132fd1:\n      lVar3 = param_3 + -1;" (statement_identifier "LAB_00132fd1") (: ":") (expression_statement "lVar3 = param_3 + -1;" (assignment_expression "lVar3 = param_3 + -1" (identifier "lVar3") (= "=") (binary_expression "param_3 + -1" (identifier "param_3") (+ "+") (number_literal "-1"))) (; ";"))) (if_statement "if (lVar3 == 0) break;" (if "if") (parenthesized_expression "(lVar3 == 0)" (( "(") (binary_expression "lVar3 == 0" (identifier "lVar3") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar7 = *(long *)(param_2 + -8 + lVar3 * 8);" (assignment_expression "lVar7 = *(long *)(param_2 + -8 + lVar3 * 8)" (identifier "lVar7") (= "=") (pointer_expression "*(long *)(param_2 + -8 + lVar3 * 8)" (* "*") (cast_expression "(long *)(param_2 + -8 + lVar3 * 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + -8 + lVar3 * 8)" (( "(") (binary_expression "param_2 + -8 + lVar3 * 8" (binary_expression "param_2 + -8" (identifier "param_2") (+ "+") (number_literal "-8")) (+ "+") (binary_expression "lVar3 * 8" (identifier "lVar3") (* "*") (number_literal "8"))) () ")"))))) (; ";")) (} "}"))) (expression_statement "param_3 = lVar9;" (assignment_expression "param_3 = lVar9" (identifier "param_3") (= "=") (identifier "lVar9")) (; ";")) (expression_statement "lVar9 = param_3;" (assignment_expression "lVar9 = param_3" (identifier "lVar9") (= "=") (identifier "param_3")) (; ";")) (if_statement "if (lVar3 == param_3) goto LAB_00133136;" (if "if") (parenthesized_expression "(lVar3 == param_3)" (( "(") (binary_expression "lVar3 == param_3" (identifier "lVar3") (== "==") (identifier "param_3")) () ")")) (goto_statement "goto LAB_00133136;" (goto "goto") (statement_identifier "LAB_00133136") (; ";"))) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" (identifier "uVar11") (= "=") (number_literal "0")) (; ";")) (expression_statement "lVar7 = lVar3;" (assignment_expression "lVar7 = lVar3" (identifier "lVar7") (= "=") (identifier "lVar3")) (; ";")) (if_statement "if (lVar3 < param_3) {\n      uVar11 = 1;\n      lVar7 = param_3;\n      lVar9 = lVar3;\n      lVar10 = param_1;\n      param_1 = param_2;\n    }" (if "if") (parenthesized_expression "(lVar3 < param_3)" (( "(") (binary_expression "lVar3 < param_3" (identifier "lVar3") (< "<") (identifier "param_3")) () ")")) (compound_statement "{\n      uVar11 = 1;\n      lVar7 = param_3;\n      lVar9 = lVar3;\n      lVar10 = param_1;\n      param_1 = param_2;\n    }" ({ "{") (expression_statement "uVar11 = 1;" (assignment_expression "uVar11 = 1" (identifier "uVar11") (= "=") (number_literal "1")) (; ";")) (expression_statement "lVar7 = param_3;" (assignment_expression "lVar7 = param_3" (identifier "lVar7") (= "=") (identifier "param_3")) (; ";")) (expression_statement "lVar9 = lVar3;" (assignment_expression "lVar9 = lVar3" (identifier "lVar9") (= "=") (identifier "lVar3")) (; ";")) (expression_statement "lVar10 = param_1;" (assignment_expression "lVar10 = param_1" (identifier "lVar10") (= "=") (identifier "param_1")) (; ";")) (expression_statement "param_1 = param_2;" (assignment_expression "param_1 = param_2" (identifier "param_1") (= "=") (identifier "param_2")) (; ";")) (} "}"))) (} "}")))) (labeled_statement "LAB_00133008:\n  if (lVar9 <= param_4) {\n    if (param_4 != 0) {\n      return 0;\n    }\n    (*param_5)(param_6,lVar10,lVar7,0,0,uVar11 ^ 1);\n    return 0;\n  }" (statement_identifier "LAB_00133008") (: ":") (if_statement "if (lVar9 <= param_4) {\n    if (param_4 != 0) {\n      return 0;\n    }\n    (*param_5)(param_6,lVar10,lVar7,0,0,uVar11 ^ 1);\n    return 0;\n  }" (if "if") (parenthesized_expression "(lVar9 <= param_4)" (( "(") (binary_expression "lVar9 <= param_4" (identifier "lVar9") (<= "<=") (identifier "param_4")) () ")")) (compound_statement "{\n    if (param_4 != 0) {\n      return 0;\n    }\n    (*param_5)(param_6,lVar10,lVar7,0,0,uVar11 ^ 1);\n    return 0;\n  }" ({ "{") (if_statement "if (param_4 != 0) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(param_4 != 0)" (( "(") (binary_expression "param_4 != 0" (identifier "param_4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "(*param_5)(param_6,lVar10,lVar7,0,0,uVar11 ^ 1);" (call_expression "(*param_5)(param_6,lVar10,lVar7,0,0,uVar11 ^ 1)" (parenthesized_expression "(*param_5)" (( "(") (pointer_expression "*param_5" (* "*") (identifier "param_5")) () ")")) (argument_list "(param_6,lVar10,lVar7,0,0,uVar11 ^ 1)" (( "(") (identifier "param_6") (, ",") (identifier "lVar10") (, ",") (identifier "lVar7") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (binary_expression "uVar11 ^ 1" (identifier "uVar11") (^ "^") (number_literal "1")) () ")"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))) (expression_statement "lVar3 = lVar10;" (assignment_expression "lVar3 = lVar10" (identifier "lVar3") (= "=") (identifier "lVar10")) (; ";")) (if_statement "if (((lVar9 == 0) || (lVar4 = __gmpn_sub_n(lVar10,lVar10,param_1,lVar9), lVar4 == 0)) ||\n     (lVar7 <= lVar9)) {\nLAB_0013301a:\n    if (0 < lVar7) {\n      lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\n      goto joined_r0x00133029;\n    }\nLAB_0013321f:\n    lVar4 = lVar7;\n    if (lVar7 <= param_4) {\n      if ((lVar7 == 0) || (lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7), lVar3 == 0))\n      goto LAB_00133231;\nLAB_0013327a:\n      lVar3 = lVar7 * 8;\n      lVar7 = lVar7 + 1;\n      lVar4 = *(long *)(param_1 + lVar3) + 1;\n      *(long *)(lVar10 + lVar3) = lVar4;\n      while (lVar4 == 0) {\n        if (lVar9 == lVar7) goto LAB_00133408;\n        lVar3 = lVar7 * 8;\n        lVar7 = lVar7 + 1;\n        lVar4 = *(long *)(param_1 + lVar3) + 1;\n        *(long *)(lVar10 + -8 + lVar7 * 8) = lVar4;\n      }\nLAB_00133231:\n      if (param_1 != lVar10) {\n        if (lVar7 < lVar9) {\n          do {\n            *(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8);\n            lVar7 = lVar7 + 1;\n          } while (lVar9 != lVar7);\n        }\n        return 0;\n      }\n      return 0;\n    }\nLAB_00133049:\n    lVar8 = lVar9;\n    lVar7 = lVar4;\n    if (lVar9 == lVar4) {\n      do {\n        lVar8 = lVar8 + -1;\n        if (lVar8 < 0) {\n          if (0 < param_4) {\n            (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n            return 0;\n          }\n          (*param_5)(param_6,lVar10,lVar4,0,0,uVar11);\n          return 0;\n        }\n        uVar1 = *(ulong *)(param_1 + lVar8 * 8);\n        uVar2 = *(ulong *)(lVar10 + lVar8 * 8);\n      } while (uVar1 == uVar2);\n      if (uVar1 < uVar2 || uVar1 == uVar2) {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      }\n      else {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n        uVar11 = uVar11 ^ 1;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }\n    }\n    else {\n      (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      if (lVar4 < lVar9) {\n        uVar11 = uVar11 ^ 1;\n        lVar7 = lVar9;\n        lVar9 = lVar4;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }\n    }\n  }\n  else {\n    plVar6 = (long *)(lVar10 + lVar9 * 8);\n    lVar8 = *plVar6;\n    lVar4 = lVar9 + 1;\n    *plVar6 = lVar8 + -1;\n    if (lVar8 == 0) {\n      do {\n        if (lVar7 == lVar4) goto LAB_00133465;\n        lVar8 = *(long *)(lVar10 + lVar4 * 8);\n        lVar4 = lVar4 + 1;\n        *(long *)(lVar10 + -8 + lVar4 * 8) = lVar8 + -1;\n      } while (lVar8 == 0);\n      goto LAB_0013301a;\n    }\nLAB_00133465:\n    if (0 < lVar7) {\n      lVar4 = lVar7;\n      if (*(long *)(lVar10 + -8 + lVar7 * 8) == 0) {\n        do {\n          lVar7 = lVar7 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\njoined_r0x00133029:\n        } while (lVar4 == 0);\n        lVar4 = lVar7;\n        if (param_4 < lVar7) goto LAB_00133049;\n        lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7);\n        if (lVar3 == 0) goto LAB_00133231;\n        if (lVar9 <= lVar7) {\nLAB_00133408:\n          *(undefined8 *)(lVar10 + lVar9 * 8) = 1;\n          return 0;\n        }\n        goto LAB_0013327a;\n      }\n      goto LAB_00133049;\n    }\n    (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n  }" (if "if") (parenthesized_expression "(((lVar9 == 0) || (lVar4 = __gmpn_sub_n(lVar10,lVar10,param_1,lVar9), lVar4 == 0)) ||\n     (lVar7 <= lVar9))" (( "(") (binary_expression "((lVar9 == 0) || (lVar4 = __gmpn_sub_n(lVar10,lVar10,param_1,lVar9), lVar4 == 0)) ||\n     (lVar7 <= lVar9)" (parenthesized_expression "((lVar9 == 0) || (lVar4 = __gmpn_sub_n(lVar10,lVar10,param_1,lVar9), lVar4 == 0))" (( "(") (binary_expression "(lVar9 == 0) || (lVar4 = __gmpn_sub_n(lVar10,lVar10,param_1,lVar9), lVar4 == 0)" (parenthesized_expression "(lVar9 == 0)" (( "(") (binary_expression "lVar9 == 0" (identifier "lVar9") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(lVar4 = __gmpn_sub_n(lVar10,lVar10,param_1,lVar9), lVar4 == 0)" (( "(") (comma_expression "lVar4 = __gmpn_sub_n(lVar10,lVar10,param_1,lVar9), lVar4 == 0" (assignment_expression "lVar4 = __gmpn_sub_n(lVar10,lVar10,param_1,lVar9)" (identifier "lVar4") (= "=") (call_expression "__gmpn_sub_n(lVar10,lVar10,param_1,lVar9)" (identifier "__gmpn_sub_n") (argument_list "(lVar10,lVar10,param_1,lVar9)" (( "(") (identifier "lVar10") (, ",") (identifier "lVar10") (, ",") (identifier "param_1") (, ",") (identifier "lVar9") () ")")))) (, ",") (binary_expression "lVar4 == 0" (identifier "lVar4") (== "==") (number_literal "0"))) () ")"))) () ")")) (|| "||") (parenthesized_expression "(lVar7 <= lVar9)" (( "(") (binary_expression "lVar7 <= lVar9" (identifier "lVar7") (<= "<=") (identifier "lVar9")) () ")"))) () ")")) (compound_statement "{\nLAB_0013301a:\n    if (0 < lVar7) {\n      lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\n      goto joined_r0x00133029;\n    }\nLAB_0013321f:\n    lVar4 = lVar7;\n    if (lVar7 <= param_4) {\n      if ((lVar7 == 0) || (lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7), lVar3 == 0))\n      goto LAB_00133231;\nLAB_0013327a:\n      lVar3 = lVar7 * 8;\n      lVar7 = lVar7 + 1;\n      lVar4 = *(long *)(param_1 + lVar3) + 1;\n      *(long *)(lVar10 + lVar3) = lVar4;\n      while (lVar4 == 0) {\n        if (lVar9 == lVar7) goto LAB_00133408;\n        lVar3 = lVar7 * 8;\n        lVar7 = lVar7 + 1;\n        lVar4 = *(long *)(param_1 + lVar3) + 1;\n        *(long *)(lVar10 + -8 + lVar7 * 8) = lVar4;\n      }\nLAB_00133231:\n      if (param_1 != lVar10) {\n        if (lVar7 < lVar9) {\n          do {\n            *(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8);\n            lVar7 = lVar7 + 1;\n          } while (lVar9 != lVar7);\n        }\n        return 0;\n      }\n      return 0;\n    }\nLAB_00133049:\n    lVar8 = lVar9;\n    lVar7 = lVar4;\n    if (lVar9 == lVar4) {\n      do {\n        lVar8 = lVar8 + -1;\n        if (lVar8 < 0) {\n          if (0 < param_4) {\n            (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n            return 0;\n          }\n          (*param_5)(param_6,lVar10,lVar4,0,0,uVar11);\n          return 0;\n        }\n        uVar1 = *(ulong *)(param_1 + lVar8 * 8);\n        uVar2 = *(ulong *)(lVar10 + lVar8 * 8);\n      } while (uVar1 == uVar2);\n      if (uVar1 < uVar2 || uVar1 == uVar2) {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      }\n      else {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n        uVar11 = uVar11 ^ 1;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }\n    }\n    else {\n      (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      if (lVar4 < lVar9) {\n        uVar11 = uVar11 ^ 1;\n        lVar7 = lVar9;\n        lVar9 = lVar4;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }\n    }\n  }" ({ "{") (labeled_statement "LAB_0013301a:\n    if (0 < lVar7) {\n      lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\n      goto joined_r0x00133029;\n    }" (statement_identifier "LAB_0013301a") (: ":") (if_statement "if (0 < lVar7) {\n      lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\n      goto joined_r0x00133029;\n    }" (if "if") (parenthesized_expression "(0 < lVar7)" (( "(") (binary_expression "0 < lVar7" (number_literal "0") (< "<") (identifier "lVar7")) () ")")) (compound_statement "{\n      lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\n      goto joined_r0x00133029;\n    }" ({ "{") (expression_statement "lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);" (assignment_expression "lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8)" (identifier "lVar4") (= "=") (pointer_expression "*(long *)(lVar10 + -8 + lVar7 * 8)" (* "*") (cast_expression "(long *)(lVar10 + -8 + lVar7 * 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar10 + -8 + lVar7 * 8)" (( "(") (binary_expression "lVar10 + -8 + lVar7 * 8" (binary_expression "lVar10 + -8" (identifier "lVar10") (+ "+") (number_literal "-8")) (+ "+") (binary_expression "lVar7 * 8" (identifier "lVar7") (* "*") (number_literal "8"))) () ")"))))) (; ";")) (goto_statement "goto joined_r0x00133029;" (goto "goto") (statement_identifier "joined_r0x00133029") (; ";")) (} "}")))) (labeled_statement "LAB_0013321f:\n    lVar4 = lVar7;" (statement_identifier "LAB_0013321f") (: ":") (expression_statement "lVar4 = lVar7;" (assignment_expression "lVar4 = lVar7" (identifier "lVar4") (= "=") (identifier "lVar7")) (; ";"))) (if_statement "if (lVar7 <= param_4) {\n      if ((lVar7 == 0) || (lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7), lVar3 == 0))\n      goto LAB_00133231;\nLAB_0013327a:\n      lVar3 = lVar7 * 8;\n      lVar7 = lVar7 + 1;\n      lVar4 = *(long *)(param_1 + lVar3) + 1;\n      *(long *)(lVar10 + lVar3) = lVar4;\n      while (lVar4 == 0) {\n        if (lVar9 == lVar7) goto LAB_00133408;\n        lVar3 = lVar7 * 8;\n        lVar7 = lVar7 + 1;\n        lVar4 = *(long *)(param_1 + lVar3) + 1;\n        *(long *)(lVar10 + -8 + lVar7 * 8) = lVar4;\n      }\nLAB_00133231:\n      if (param_1 != lVar10) {\n        if (lVar7 < lVar9) {\n          do {\n            *(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8);\n            lVar7 = lVar7 + 1;\n          } while (lVar9 != lVar7);\n        }\n        return 0;\n      }\n      return 0;\n    }" (if "if") (parenthesized_expression "(lVar7 <= param_4)" (( "(") (binary_expression "lVar7 <= param_4" (identifier "lVar7") (<= "<=") (identifier "param_4")) () ")")) (compound_statement "{\n      if ((lVar7 == 0) || (lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7), lVar3 == 0))\n      goto LAB_00133231;\nLAB_0013327a:\n      lVar3 = lVar7 * 8;\n      lVar7 = lVar7 + 1;\n      lVar4 = *(long *)(param_1 + lVar3) + 1;\n      *(long *)(lVar10 + lVar3) = lVar4;\n      while (lVar4 == 0) {\n        if (lVar9 == lVar7) goto LAB_00133408;\n        lVar3 = lVar7 * 8;\n        lVar7 = lVar7 + 1;\n        lVar4 = *(long *)(param_1 + lVar3) + 1;\n        *(long *)(lVar10 + -8 + lVar7 * 8) = lVar4;\n      }\nLAB_00133231:\n      if (param_1 != lVar10) {\n        if (lVar7 < lVar9) {\n          do {\n            *(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8);\n            lVar7 = lVar7 + 1;\n          } while (lVar9 != lVar7);\n        }\n        return 0;\n      }\n      return 0;\n    }" ({ "{") (if_statement "if ((lVar7 == 0) || (lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7), lVar3 == 0))\n      goto LAB_00133231;" (if "if") (parenthesized_expression "((lVar7 == 0) || (lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7), lVar3 == 0))" (( "(") (binary_expression "(lVar7 == 0) || (lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7), lVar3 == 0)" (parenthesized_expression "(lVar7 == 0)" (( "(") (binary_expression "lVar7 == 0" (identifier "lVar7") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7), lVar3 == 0)" (( "(") (comma_expression "lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7), lVar3 == 0" (assignment_expression "lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7)" (identifier "lVar3") (= "=") (call_expression "__gmpn_add_n(lVar10,param_1,lVar10,lVar7)" (identifier "__gmpn_add_n") (argument_list "(lVar10,param_1,lVar10,lVar7)" (( "(") (identifier "lVar10") (, ",") (identifier "param_1") (, ",") (identifier "lVar10") (, ",") (identifier "lVar7") () ")")))) (, ",") (binary_expression "lVar3 == 0" (identifier "lVar3") (== "==") (number_literal "0"))) () ")"))) () ")")) (goto_statement "goto LAB_00133231;" (goto "goto") (statement_identifier "LAB_00133231") (; ";"))) (labeled_statement "LAB_0013327a:\n      lVar3 = lVar7 * 8;" (statement_identifier "LAB_0013327a") (: ":") (expression_statement "lVar3 = lVar7 * 8;" (assignment_expression "lVar3 = lVar7 * 8" (identifier "lVar3") (= "=") (binary_expression "lVar7 * 8" (identifier "lVar7") (* "*") (number_literal "8"))) (; ";"))) (expression_statement "lVar7 = lVar7 + 1;" (assignment_expression "lVar7 = lVar7 + 1" (identifier "lVar7") (= "=") (binary_expression "lVar7 + 1" (identifier "lVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "lVar4 = *(long *)(param_1 + lVar3) + 1;" (assignment_expression "lVar4 = *(long *)(param_1 + lVar3) + 1" (identifier "lVar4") (= "=") (binary_expression "*(long *)(param_1 + lVar3) + 1" (pointer_expression "*(long *)(param_1 + lVar3)" (* "*") (cast_expression "(long *)(param_1 + lVar3)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + lVar3)" (( "(") (binary_expression "param_1 + lVar3" (identifier "param_1") (+ "+") (identifier "lVar3")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(long *)(lVar10 + lVar3) = lVar4;" (assignment_expression "*(long *)(lVar10 + lVar3) = lVar4" (pointer_expression "*(long *)(lVar10 + lVar3)" (* "*") (cast_expression "(long *)(lVar10 + lVar3)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar10 + lVar3)" (( "(") (binary_expression "lVar10 + lVar3" (identifier "lVar10") (+ "+") (identifier "lVar3")) () ")")))) (= "=") (identifier "lVar4")) (; ";")) (while_statement "while (lVar4 == 0) {\n        if (lVar9 == lVar7) goto LAB_00133408;\n        lVar3 = lVar7 * 8;\n        lVar7 = lVar7 + 1;\n        lVar4 = *(long *)(param_1 + lVar3) + 1;\n        *(long *)(lVar10 + -8 + lVar7 * 8) = lVar4;\n      }" (while "while") (parenthesized_expression "(lVar4 == 0)" (( "(") (binary_expression "lVar4 == 0" (identifier "lVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        if (lVar9 == lVar7) goto LAB_00133408;\n        lVar3 = lVar7 * 8;\n        lVar7 = lVar7 + 1;\n        lVar4 = *(long *)(param_1 + lVar3) + 1;\n        *(long *)(lVar10 + -8 + lVar7 * 8) = lVar4;\n      }" ({ "{") (if_statement "if (lVar9 == lVar7) goto LAB_00133408;" (if "if") (parenthesized_expression "(lVar9 == lVar7)" (( "(") (binary_expression "lVar9 == lVar7" (identifier "lVar9") (== "==") (identifier "lVar7")) () ")")) (goto_statement "goto LAB_00133408;" (goto "goto") (statement_identifier "LAB_00133408") (; ";"))) (expression_statement "lVar3 = lVar7 * 8;" (assignment_expression "lVar3 = lVar7 * 8" (identifier "lVar3") (= "=") (binary_expression "lVar7 * 8" (identifier "lVar7") (* "*") (number_literal "8"))) (; ";")) (expression_statement "lVar7 = lVar7 + 1;" (assignment_expression "lVar7 = lVar7 + 1" (identifier "lVar7") (= "=") (binary_expression "lVar7 + 1" (identifier "lVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "lVar4 = *(long *)(param_1 + lVar3) + 1;" (assignment_expression "lVar4 = *(long *)(param_1 + lVar3) + 1" (identifier "lVar4") (= "=") (binary_expression "*(long *)(param_1 + lVar3) + 1" (pointer_expression "*(long *)(param_1 + lVar3)" (* "*") (cast_expression "(long *)(param_1 + lVar3)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + lVar3)" (( "(") (binary_expression "param_1 + lVar3" (identifier "param_1") (+ "+") (identifier "lVar3")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(long *)(lVar10 + -8 + lVar7 * 8) = lVar4;" (assignment_expression "*(long *)(lVar10 + -8 + lVar7 * 8) = lVar4" (pointer_expression "*(long *)(lVar10 + -8 + lVar7 * 8)" (* "*") (cast_expression "(long *)(lVar10 + -8 + lVar7 * 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar10 + -8 + lVar7 * 8)" (( "(") (binary_expression "lVar10 + -8 + lVar7 * 8" (binary_expression "lVar10 + -8" (identifier "lVar10") (+ "+") (number_literal "-8")) (+ "+") (binary_expression "lVar7 * 8" (identifier "lVar7") (* "*") (number_literal "8"))) () ")")))) (= "=") (identifier "lVar4")) (; ";")) (} "}"))) (labeled_statement "LAB_00133231:\n      if (param_1 != lVar10) {\n        if (lVar7 < lVar9) {\n          do {\n            *(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8);\n            lVar7 = lVar7 + 1;\n          } while (lVar9 != lVar7);\n        }\n        return 0;\n      }" (statement_identifier "LAB_00133231") (: ":") (if_statement "if (param_1 != lVar10) {\n        if (lVar7 < lVar9) {\n          do {\n            *(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8);\n            lVar7 = lVar7 + 1;\n          } while (lVar9 != lVar7);\n        }\n        return 0;\n      }" (if "if") (parenthesized_expression "(param_1 != lVar10)" (( "(") (binary_expression "param_1 != lVar10" (identifier "param_1") (!= "!=") (identifier "lVar10")) () ")")) (compound_statement "{\n        if (lVar7 < lVar9) {\n          do {\n            *(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8);\n            lVar7 = lVar7 + 1;\n          } while (lVar9 != lVar7);\n        }\n        return 0;\n      }" ({ "{") (if_statement "if (lVar7 < lVar9) {\n          do {\n            *(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8);\n            lVar7 = lVar7 + 1;\n          } while (lVar9 != lVar7);\n        }" (if "if") (parenthesized_expression "(lVar7 < lVar9)" (( "(") (binary_expression "lVar7 < lVar9" (identifier "lVar7") (< "<") (identifier "lVar9")) () ")")) (compound_statement "{\n          do {\n            *(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8);\n            lVar7 = lVar7 + 1;\n          } while (lVar9 != lVar7);\n        }" ({ "{") (do_statement "do {\n            *(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8);\n            lVar7 = lVar7 + 1;\n          } while (lVar9 != lVar7);" (do "do") (compound_statement "{\n            *(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8);\n            lVar7 = lVar7 + 1;\n          }" ({ "{") (expression_statement "*(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8);" (assignment_expression "*(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8)" (pointer_expression "*(undefined8 *)(lVar10 + lVar7 * 8)" (* "*") (cast_expression "(undefined8 *)(lVar10 + lVar7 * 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar10 + lVar7 * 8)" (( "(") (binary_expression "lVar10 + lVar7 * 8" (identifier "lVar10") (+ "+") (binary_expression "lVar7 * 8" (identifier "lVar7") (* "*") (number_literal "8"))) () ")")))) (= "=") (pointer_expression "*(undefined8 *)(param_1 + lVar7 * 8)" (* "*") (cast_expression "(undefined8 *)(param_1 + lVar7 * 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + lVar7 * 8)" (( "(") (binary_expression "param_1 + lVar7 * 8" (identifier "param_1") (+ "+") (binary_expression "lVar7 * 8" (identifier "lVar7") (* "*") (number_literal "8"))) () ")"))))) (; ";")) (expression_statement "lVar7 = lVar7 + 1;" (assignment_expression "lVar7 = lVar7 + 1" (identifier "lVar7") (= "=") (binary_expression "lVar7 + 1" (identifier "lVar7") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar9 != lVar7)" (( "(") (binary_expression "lVar9 != lVar7" (identifier "lVar9") (!= "!=") (identifier "lVar7")) () ")")) (; ";")) (} "}"))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (labeled_statement "LAB_00133049:\n    lVar8 = lVar9;" (statement_identifier "LAB_00133049") (: ":") (expression_statement "lVar8 = lVar9;" (assignment_expression "lVar8 = lVar9" (identifier "lVar8") (= "=") (identifier "lVar9")) (; ";"))) (expression_statement "lVar7 = lVar4;" (assignment_expression "lVar7 = lVar4" (identifier "lVar7") (= "=") (identifier "lVar4")) (; ";")) (if_statement "if (lVar9 == lVar4) {\n      do {\n        lVar8 = lVar8 + -1;\n        if (lVar8 < 0) {\n          if (0 < param_4) {\n            (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n            return 0;\n          }\n          (*param_5)(param_6,lVar10,lVar4,0,0,uVar11);\n          return 0;\n        }\n        uVar1 = *(ulong *)(param_1 + lVar8 * 8);\n        uVar2 = *(ulong *)(lVar10 + lVar8 * 8);\n      } while (uVar1 == uVar2);\n      if (uVar1 < uVar2 || uVar1 == uVar2) {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      }\n      else {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n        uVar11 = uVar11 ^ 1;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }\n    }\n    else {\n      (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      if (lVar4 < lVar9) {\n        uVar11 = uVar11 ^ 1;\n        lVar7 = lVar9;\n        lVar9 = lVar4;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }\n    }" (if "if") (parenthesized_expression "(lVar9 == lVar4)" (( "(") (binary_expression "lVar9 == lVar4" (identifier "lVar9") (== "==") (identifier "lVar4")) () ")")) (compound_statement "{\n      do {\n        lVar8 = lVar8 + -1;\n        if (lVar8 < 0) {\n          if (0 < param_4) {\n            (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n            return 0;\n          }\n          (*param_5)(param_6,lVar10,lVar4,0,0,uVar11);\n          return 0;\n        }\n        uVar1 = *(ulong *)(param_1 + lVar8 * 8);\n        uVar2 = *(ulong *)(lVar10 + lVar8 * 8);\n      } while (uVar1 == uVar2);\n      if (uVar1 < uVar2 || uVar1 == uVar2) {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      }\n      else {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n        uVar11 = uVar11 ^ 1;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }\n    }" ({ "{") (do_statement "do {\n        lVar8 = lVar8 + -1;\n        if (lVar8 < 0) {\n          if (0 < param_4) {\n            (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n            return 0;\n          }\n          (*param_5)(param_6,lVar10,lVar4,0,0,uVar11);\n          return 0;\n        }\n        uVar1 = *(ulong *)(param_1 + lVar8 * 8);\n        uVar2 = *(ulong *)(lVar10 + lVar8 * 8);\n      } while (uVar1 == uVar2);" (do "do") (compound_statement "{\n        lVar8 = lVar8 + -1;\n        if (lVar8 < 0) {\n          if (0 < param_4) {\n            (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n            return 0;\n          }\n          (*param_5)(param_6,lVar10,lVar4,0,0,uVar11);\n          return 0;\n        }\n        uVar1 = *(ulong *)(param_1 + lVar8 * 8);\n        uVar2 = *(ulong *)(lVar10 + lVar8 * 8);\n      }" ({ "{") (expression_statement "lVar8 = lVar8 + -1;" (assignment_expression "lVar8 = lVar8 + -1" (identifier "lVar8") (= "=") (binary_expression "lVar8 + -1" (identifier "lVar8") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (lVar8 < 0) {\n          if (0 < param_4) {\n            (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n            return 0;\n          }\n          (*param_5)(param_6,lVar10,lVar4,0,0,uVar11);\n          return 0;\n        }" (if "if") (parenthesized_expression "(lVar8 < 0)" (( "(") (binary_expression "lVar8 < 0" (identifier "lVar8") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n          if (0 < param_4) {\n            (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n            return 0;\n          }\n          (*param_5)(param_6,lVar10,lVar4,0,0,uVar11);\n          return 0;\n        }" ({ "{") (if_statement "if (0 < param_4) {\n            (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n            return 0;\n          }" (if "if") (parenthesized_expression "(0 < param_4)" (( "(") (binary_expression "0 < param_4" (number_literal "0") (< "<") (identifier "param_4")) () ")")) (compound_statement "{\n            (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n            return 0;\n          }" ({ "{") (expression_statement "(*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);" (call_expression "(*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11)" (parenthesized_expression "(*param_5)" (( "(") (pointer_expression "*param_5" (* "*") (identifier "param_5")) () ")")) (argument_list "(param_6,0,0,&DAT_0015f3c0,1,uVar11)" (( "(") (identifier "param_6") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (pointer_expression "&DAT_0015f3c0" (& "&") (identifier "DAT_0015f3c0")) (, ",") (number_literal "1") (, ",") (identifier "uVar11") () ")"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "(*param_5)(param_6,lVar10,lVar4,0,0,uVar11);" (call_expression "(*param_5)(param_6,lVar10,lVar4,0,0,uVar11)" (parenthesized_expression "(*param_5)" (( "(") (pointer_expression "*param_5" (* "*") (identifier "param_5")) () ")")) (argument_list "(param_6,lVar10,lVar4,0,0,uVar11)" (( "(") (identifier "param_6") (, ",") (identifier "lVar10") (, ",") (identifier "lVar4") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (identifier "uVar11") () ")"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "uVar1 = *(ulong *)(param_1 + lVar8 * 8);" (assignment_expression "uVar1 = *(ulong *)(param_1 + lVar8 * 8)" (identifier "uVar1") (= "=") (pointer_expression "*(ulong *)(param_1 + lVar8 * 8)" (* "*") (cast_expression "(ulong *)(param_1 + lVar8 * 8)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + lVar8 * 8)" (( "(") (binary_expression "param_1 + lVar8 * 8" (identifier "param_1") (+ "+") (binary_expression "lVar8 * 8" (identifier "lVar8") (* "*") (number_literal "8"))) () ")"))))) (; ";")) (expression_statement "uVar2 = *(ulong *)(lVar10 + lVar8 * 8);" (assignment_expression "uVar2 = *(ulong *)(lVar10 + lVar8 * 8)" (identifier "uVar2") (= "=") (pointer_expression "*(ulong *)(lVar10 + lVar8 * 8)" (* "*") (cast_expression "(ulong *)(lVar10 + lVar8 * 8)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar10 + lVar8 * 8)" (( "(") (binary_expression "lVar10 + lVar8 * 8" (identifier "lVar10") (+ "+") (binary_expression "lVar8 * 8" (identifier "lVar8") (* "*") (number_literal "8"))) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar1 == uVar2)" (( "(") (binary_expression "uVar1 == uVar2" (identifier "uVar1") (== "==") (identifier "uVar2")) () ")")) (; ";")) (if_statement "if (uVar1 < uVar2 || uVar1 == uVar2) {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      }\n      else {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n        uVar11 = uVar11 ^ 1;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }" (if "if") (parenthesized_expression "(uVar1 < uVar2 || uVar1 == uVar2)" (( "(") (binary_expression "uVar1 < uVar2 || uVar1 == uVar2" (binary_expression "uVar1 < uVar2" (identifier "uVar1") (< "<") (identifier "uVar2")) (|| "||") (binary_expression "uVar1 == uVar2" (identifier "uVar1") (== "==") (identifier "uVar2"))) () ")")) (compound_statement "{\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      }" ({ "{") (expression_statement "(*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);" (call_expression "(*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11)" (parenthesized_expression "(*param_5)" (( "(") (pointer_expression "*param_5" (* "*") (identifier "param_5")) () ")")) (argument_list "(param_6,0,0,&DAT_0015f3c0,1,uVar11)" (( "(") (identifier "param_6") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (pointer_expression "&DAT_0015f3c0" (& "&") (identifier "DAT_0015f3c0")) (, ",") (number_literal "1") (, ",") (identifier "uVar11") () ")"))) (; ";")) (} "}")) (else_clause "else {\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n        uVar11 = uVar11 ^ 1;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }" (else "else") (compound_statement "{\n        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n        uVar11 = uVar11 ^ 1;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }" ({ "{") (expression_statement "(*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);" (call_expression "(*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11)" (parenthesized_expression "(*param_5)" (( "(") (pointer_expression "*param_5" (* "*") (identifier "param_5")) () ")")) (argument_list "(param_6,0,0,&DAT_0015f3c0,1,uVar11)" (( "(") (identifier "param_6") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (pointer_expression "&DAT_0015f3c0" (& "&") (identifier "DAT_0015f3c0")) (, ",") (number_literal "1") (, ",") (identifier "uVar11") () ")"))) (; ";")) (expression_statement "uVar11 = uVar11 ^ 1;" (assignment_expression "uVar11 = uVar11 ^ 1" (identifier "uVar11") (= "=") (binary_expression "uVar11 ^ 1" (identifier "uVar11") (^ "^") (number_literal "1"))) (; ";")) (expression_statement "lVar3 = param_1;" (assignment_expression "lVar3 = param_1" (identifier "lVar3") (= "=") (identifier "param_1")) (; ";")) (expression_statement "param_1 = lVar10;" (assignment_expression "param_1 = lVar10" (identifier "param_1") (= "=") (identifier "lVar10")) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n      (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      if (lVar4 < lVar9) {\n        uVar11 = uVar11 ^ 1;\n        lVar7 = lVar9;\n        lVar9 = lVar4;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }\n    }" (else "else") (compound_statement "{\n      (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n      if (lVar4 < lVar9) {\n        uVar11 = uVar11 ^ 1;\n        lVar7 = lVar9;\n        lVar9 = lVar4;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }\n    }" ({ "{") (expression_statement "(*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);" (call_expression "(*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11)" (parenthesized_expression "(*param_5)" (( "(") (pointer_expression "*param_5" (* "*") (identifier "param_5")) () ")")) (argument_list "(param_6,0,0,&DAT_0015f3c0,1,uVar11)" (( "(") (identifier "param_6") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (pointer_expression "&DAT_0015f3c0" (& "&") (identifier "DAT_0015f3c0")) (, ",") (number_literal "1") (, ",") (identifier "uVar11") () ")"))) (; ";")) (if_statement "if (lVar4 < lVar9) {\n        uVar11 = uVar11 ^ 1;\n        lVar7 = lVar9;\n        lVar9 = lVar4;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }" (if "if") (parenthesized_expression "(lVar4 < lVar9)" (( "(") (binary_expression "lVar4 < lVar9" (identifier "lVar4") (< "<") (identifier "lVar9")) () ")")) (compound_statement "{\n        uVar11 = uVar11 ^ 1;\n        lVar7 = lVar9;\n        lVar9 = lVar4;\n        lVar3 = param_1;\n        param_1 = lVar10;\n      }" ({ "{") (expression_statement "uVar11 = uVar11 ^ 1;" (assignment_expression "uVar11 = uVar11 ^ 1" (identifier "uVar11") (= "=") (binary_expression "uVar11 ^ 1" (identifier "uVar11") (^ "^") (number_literal "1"))) (; ";")) (expression_statement "lVar7 = lVar9;" (assignment_expression "lVar7 = lVar9" (identifier "lVar7") (= "=") (identifier "lVar9")) (; ";")) (expression_statement "lVar9 = lVar4;" (assignment_expression "lVar9 = lVar4" (identifier "lVar9") (= "=") (identifier "lVar4")) (; ";")) (expression_statement "lVar3 = param_1;" (assignment_expression "lVar3 = param_1" (identifier "lVar3") (= "=") (identifier "param_1")) (; ";")) (expression_statement "param_1 = lVar10;" (assignment_expression "param_1 = lVar10" (identifier "param_1") (= "=") (identifier "lVar10")) (; ";")) (} "}"))) (} "}")))) (} "}")) (else_clause "else {\n    plVar6 = (long *)(lVar10 + lVar9 * 8);\n    lVar8 = *plVar6;\n    lVar4 = lVar9 + 1;\n    *plVar6 = lVar8 + -1;\n    if (lVar8 == 0) {\n      do {\n        if (lVar7 == lVar4) goto LAB_00133465;\n        lVar8 = *(long *)(lVar10 + lVar4 * 8);\n        lVar4 = lVar4 + 1;\n        *(long *)(lVar10 + -8 + lVar4 * 8) = lVar8 + -1;\n      } while (lVar8 == 0);\n      goto LAB_0013301a;\n    }\nLAB_00133465:\n    if (0 < lVar7) {\n      lVar4 = lVar7;\n      if (*(long *)(lVar10 + -8 + lVar7 * 8) == 0) {\n        do {\n          lVar7 = lVar7 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\njoined_r0x00133029:\n        } while (lVar4 == 0);\n        lVar4 = lVar7;\n        if (param_4 < lVar7) goto LAB_00133049;\n        lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7);\n        if (lVar3 == 0) goto LAB_00133231;\n        if (lVar9 <= lVar7) {\nLAB_00133408:\n          *(undefined8 *)(lVar10 + lVar9 * 8) = 1;\n          return 0;\n        }\n        goto LAB_0013327a;\n      }\n      goto LAB_00133049;\n    }\n    (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n  }" (else "else") (compound_statement "{\n    plVar6 = (long *)(lVar10 + lVar9 * 8);\n    lVar8 = *plVar6;\n    lVar4 = lVar9 + 1;\n    *plVar6 = lVar8 + -1;\n    if (lVar8 == 0) {\n      do {\n        if (lVar7 == lVar4) goto LAB_00133465;\n        lVar8 = *(long *)(lVar10 + lVar4 * 8);\n        lVar4 = lVar4 + 1;\n        *(long *)(lVar10 + -8 + lVar4 * 8) = lVar8 + -1;\n      } while (lVar8 == 0);\n      goto LAB_0013301a;\n    }\nLAB_00133465:\n    if (0 < lVar7) {\n      lVar4 = lVar7;\n      if (*(long *)(lVar10 + -8 + lVar7 * 8) == 0) {\n        do {\n          lVar7 = lVar7 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\njoined_r0x00133029:\n        } while (lVar4 == 0);\n        lVar4 = lVar7;\n        if (param_4 < lVar7) goto LAB_00133049;\n        lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7);\n        if (lVar3 == 0) goto LAB_00133231;\n        if (lVar9 <= lVar7) {\nLAB_00133408:\n          *(undefined8 *)(lVar10 + lVar9 * 8) = 1;\n          return 0;\n        }\n        goto LAB_0013327a;\n      }\n      goto LAB_00133049;\n    }\n    (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);\n  }" ({ "{") (expression_statement "plVar6 = (long *)(lVar10 + lVar9 * 8);" (assignment_expression "plVar6 = (long *)(lVar10 + lVar9 * 8)" (identifier "plVar6") (= "=") (cast_expression "(long *)(lVar10 + lVar9 * 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar10 + lVar9 * 8)" (( "(") (binary_expression "lVar10 + lVar9 * 8" (identifier "lVar10") (+ "+") (binary_expression "lVar9 * 8" (identifier "lVar9") (* "*") (number_literal "8"))) () ")")))) (; ";")) (expression_statement "lVar8 = *plVar6;" (assignment_expression "lVar8 = *plVar6" (identifier "lVar8") (= "=") (pointer_expression "*plVar6" (* "*") (identifier "plVar6"))) (; ";")) (expression_statement "lVar4 = lVar9 + 1;" (assignment_expression "lVar4 = lVar9 + 1" (identifier "lVar4") (= "=") (binary_expression "lVar9 + 1" (identifier "lVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*plVar6 = lVar8 + -1;" (assignment_expression "*plVar6 = lVar8 + -1" (pointer_expression "*plVar6" (* "*") (identifier "plVar6")) (= "=") (binary_expression "lVar8 + -1" (identifier "lVar8") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (lVar8 == 0) {\n      do {\n        if (lVar7 == lVar4) goto LAB_00133465;\n        lVar8 = *(long *)(lVar10 + lVar4 * 8);\n        lVar4 = lVar4 + 1;\n        *(long *)(lVar10 + -8 + lVar4 * 8) = lVar8 + -1;\n      } while (lVar8 == 0);\n      goto LAB_0013301a;\n    }" (if "if") (parenthesized_expression "(lVar8 == 0)" (( "(") (binary_expression "lVar8 == 0" (identifier "lVar8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      do {\n        if (lVar7 == lVar4) goto LAB_00133465;\n        lVar8 = *(long *)(lVar10 + lVar4 * 8);\n        lVar4 = lVar4 + 1;\n        *(long *)(lVar10 + -8 + lVar4 * 8) = lVar8 + -1;\n      } while (lVar8 == 0);\n      goto LAB_0013301a;\n    }" ({ "{") (do_statement "do {\n        if (lVar7 == lVar4) goto LAB_00133465;\n        lVar8 = *(long *)(lVar10 + lVar4 * 8);\n        lVar4 = lVar4 + 1;\n        *(long *)(lVar10 + -8 + lVar4 * 8) = lVar8 + -1;\n      } while (lVar8 == 0);" (do "do") (compound_statement "{\n        if (lVar7 == lVar4) goto LAB_00133465;\n        lVar8 = *(long *)(lVar10 + lVar4 * 8);\n        lVar4 = lVar4 + 1;\n        *(long *)(lVar10 + -8 + lVar4 * 8) = lVar8 + -1;\n      }" ({ "{") (if_statement "if (lVar7 == lVar4) goto LAB_00133465;" (if "if") (parenthesized_expression "(lVar7 == lVar4)" (( "(") (binary_expression "lVar7 == lVar4" (identifier "lVar7") (== "==") (identifier "lVar4")) () ")")) (goto_statement "goto LAB_00133465;" (goto "goto") (statement_identifier "LAB_00133465") (; ";"))) (expression_statement "lVar8 = *(long *)(lVar10 + lVar4 * 8);" (assignment_expression "lVar8 = *(long *)(lVar10 + lVar4 * 8)" (identifier "lVar8") (= "=") (pointer_expression "*(long *)(lVar10 + lVar4 * 8)" (* "*") (cast_expression "(long *)(lVar10 + lVar4 * 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar10 + lVar4 * 8)" (( "(") (binary_expression "lVar10 + lVar4 * 8" (identifier "lVar10") (+ "+") (binary_expression "lVar4 * 8" (identifier "lVar4") (* "*") (number_literal "8"))) () ")"))))) (; ";")) (expression_statement "lVar4 = lVar4 + 1;" (assignment_expression "lVar4 = lVar4 + 1" (identifier "lVar4") (= "=") (binary_expression "lVar4 + 1" (identifier "lVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(long *)(lVar10 + -8 + lVar4 * 8) = lVar8 + -1;" (assignment_expression "*(long *)(lVar10 + -8 + lVar4 * 8) = lVar8 + -1" (pointer_expression "*(long *)(lVar10 + -8 + lVar4 * 8)" (* "*") (cast_expression "(long *)(lVar10 + -8 + lVar4 * 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar10 + -8 + lVar4 * 8)" (( "(") (binary_expression "lVar10 + -8 + lVar4 * 8" (binary_expression "lVar10 + -8" (identifier "lVar10") (+ "+") (number_literal "-8")) (+ "+") (binary_expression "lVar4 * 8" (identifier "lVar4") (* "*") (number_literal "8"))) () ")")))) (= "=") (binary_expression "lVar8 + -1" (identifier "lVar8") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar8 == 0)" (( "(") (binary_expression "lVar8 == 0" (identifier "lVar8") (== "==") (number_literal "0")) () ")")) (; ";")) (goto_statement "goto LAB_0013301a;" (goto "goto") (statement_identifier "LAB_0013301a") (; ";")) (} "}"))) (labeled_statement "LAB_00133465:\n    if (0 < lVar7) {\n      lVar4 = lVar7;\n      if (*(long *)(lVar10 + -8 + lVar7 * 8) == 0) {\n        do {\n          lVar7 = lVar7 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\njoined_r0x00133029:\n        } while (lVar4 == 0);\n        lVar4 = lVar7;\n        if (param_4 < lVar7) goto LAB_00133049;\n        lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7);\n        if (lVar3 == 0) goto LAB_00133231;\n        if (lVar9 <= lVar7) {\nLAB_00133408:\n          *(undefined8 *)(lVar10 + lVar9 * 8) = 1;\n          return 0;\n        }\n        goto LAB_0013327a;\n      }\n      goto LAB_00133049;\n    }" (statement_identifier "LAB_00133465") (: ":") (if_statement "if (0 < lVar7) {\n      lVar4 = lVar7;\n      if (*(long *)(lVar10 + -8 + lVar7 * 8) == 0) {\n        do {\n          lVar7 = lVar7 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\njoined_r0x00133029:\n        } while (lVar4 == 0);\n        lVar4 = lVar7;\n        if (param_4 < lVar7) goto LAB_00133049;\n        lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7);\n        if (lVar3 == 0) goto LAB_00133231;\n        if (lVar9 <= lVar7) {\nLAB_00133408:\n          *(undefined8 *)(lVar10 + lVar9 * 8) = 1;\n          return 0;\n        }\n        goto LAB_0013327a;\n      }\n      goto LAB_00133049;\n    }" (if "if") (parenthesized_expression "(0 < lVar7)" (( "(") (binary_expression "0 < lVar7" (number_literal "0") (< "<") (identifier "lVar7")) () ")")) (compound_statement "{\n      lVar4 = lVar7;\n      if (*(long *)(lVar10 + -8 + lVar7 * 8) == 0) {\n        do {\n          lVar7 = lVar7 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\njoined_r0x00133029:\n        } while (lVar4 == 0);\n        lVar4 = lVar7;\n        if (param_4 < lVar7) goto LAB_00133049;\n        lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7);\n        if (lVar3 == 0) goto LAB_00133231;\n        if (lVar9 <= lVar7) {\nLAB_00133408:\n          *(undefined8 *)(lVar10 + lVar9 * 8) = 1;\n          return 0;\n        }\n        goto LAB_0013327a;\n      }\n      goto LAB_00133049;\n    }" ({ "{") (expression_statement "lVar4 = lVar7;" (assignment_expression "lVar4 = lVar7" (identifier "lVar4") (= "=") (identifier "lVar7")) (; ";")) (if_statement "if (*(long *)(lVar10 + -8 + lVar7 * 8) == 0) {\n        do {\n          lVar7 = lVar7 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\njoined_r0x00133029:\n        } while (lVar4 == 0);\n        lVar4 = lVar7;\n        if (param_4 < lVar7) goto LAB_00133049;\n        lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7);\n        if (lVar3 == 0) goto LAB_00133231;\n        if (lVar9 <= lVar7) {\nLAB_00133408:\n          *(undefined8 *)(lVar10 + lVar9 * 8) = 1;\n          return 0;\n        }\n        goto LAB_0013327a;\n      }" (if "if") (parenthesized_expression "(*(long *)(lVar10 + -8 + lVar7 * 8) == 0)" (( "(") (binary_expression "*(long *)(lVar10 + -8 + lVar7 * 8) == 0" (pointer_expression "*(long *)(lVar10 + -8 + lVar7 * 8)" (* "*") (cast_expression "(long *)(lVar10 + -8 + lVar7 * 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar10 + -8 + lVar7 * 8)" (( "(") (binary_expression "lVar10 + -8 + lVar7 * 8" (binary_expression "lVar10 + -8" (identifier "lVar10") (+ "+") (number_literal "-8")) (+ "+") (binary_expression "lVar7 * 8" (identifier "lVar7") (* "*") (number_literal "8"))) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        do {\n          lVar7 = lVar7 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\njoined_r0x00133029:\n        } while (lVar4 == 0);\n        lVar4 = lVar7;\n        if (param_4 < lVar7) goto LAB_00133049;\n        lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7);\n        if (lVar3 == 0) goto LAB_00133231;\n        if (lVar9 <= lVar7) {\nLAB_00133408:\n          *(undefined8 *)(lVar10 + lVar9 * 8) = 1;\n          return 0;\n        }\n        goto LAB_0013327a;\n      }" ({ "{") (do_statement "do {\n          lVar7 = lVar7 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\njoined_r0x00133029:\n        } while (lVar4 == 0);" (do "do") (compound_statement "{\n          lVar7 = lVar7 + -1;\n          if (lVar7 < 1) goto LAB_0013321f;\n          lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);\njoined_r0x00133029:\n        }" ({ "{") (expression_statement "lVar7 = lVar7 + -1;" (assignment_expression "lVar7 = lVar7 + -1" (identifier "lVar7") (= "=") (binary_expression "lVar7 + -1" (identifier "lVar7") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (lVar7 < 1) goto LAB_0013321f;" (if "if") (parenthesized_expression "(lVar7 < 1)" (( "(") (binary_expression "lVar7 < 1" (identifier "lVar7") (< "<") (number_literal "1")) () ")")) (goto_statement "goto LAB_0013321f;" (goto "goto") (statement_identifier "LAB_0013321f") (; ";"))) (expression_statement "lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);" (assignment_expression "lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8)" (identifier "lVar4") (= "=") (pointer_expression "*(long *)(lVar10 + -8 + lVar7 * 8)" (* "*") (cast_expression "(long *)(lVar10 + -8 + lVar7 * 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar10 + -8 + lVar7 * 8)" (( "(") (binary_expression "lVar10 + -8 + lVar7 * 8" (binary_expression "lVar10 + -8" (identifier "lVar10") (+ "+") (number_literal "-8")) (+ "+") (binary_expression "lVar7 * 8" (identifier "lVar7") (* "*") (number_literal "8"))) () ")"))))) (; ";")) (labeled_statement "joined_r0x00133029:" (statement_identifier "joined_r0x00133029") (: ":") (expression_statement "" (; ""))) (} "}")) (while "while") (parenthesized_expression "(lVar4 == 0)" (( "(") (binary_expression "lVar4 == 0" (identifier "lVar4") (== "==") (number_literal "0")) () ")")) (; ";")) (expression_statement "lVar4 = lVar7;" (assignment_expression "lVar4 = lVar7" (identifier "lVar4") (= "=") (identifier "lVar7")) (; ";")) (if_statement "if (param_4 < lVar7) goto LAB_00133049;" (if "if") (parenthesized_expression "(param_4 < lVar7)" (( "(") (binary_expression "param_4 < lVar7" (identifier "param_4") (< "<") (identifier "lVar7")) () ")")) (goto_statement "goto LAB_00133049;" (goto "goto") (statement_identifier "LAB_00133049") (; ";"))) (expression_statement "lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7);" (assignment_expression "lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7)" (identifier "lVar3") (= "=") (call_expression "__gmpn_add_n(lVar10,param_1,lVar10,lVar7)" (identifier "__gmpn_add_n") (argument_list "(lVar10,param_1,lVar10,lVar7)" (( "(") (identifier "lVar10") (, ",") (identifier "param_1") (, ",") (identifier "lVar10") (, ",") (identifier "lVar7") () ")")))) (; ";")) (if_statement "if (lVar3 == 0) goto LAB_00133231;" (if "if") (parenthesized_expression "(lVar3 == 0)" (( "(") (binary_expression "lVar3 == 0" (identifier "lVar3") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00133231;" (goto "goto") (statement_identifier "LAB_00133231") (; ";"))) (if_statement "if (lVar9 <= lVar7) {\nLAB_00133408:\n          *(undefined8 *)(lVar10 + lVar9 * 8) = 1;\n          return 0;\n        }" (if "if") (parenthesized_expression "(lVar9 <= lVar7)" (( "(") (binary_expression "lVar9 <= lVar7" (identifier "lVar9") (<= "<=") (identifier "lVar7")) () ")")) (compound_statement "{\nLAB_00133408:\n          *(undefined8 *)(lVar10 + lVar9 * 8) = 1;\n          return 0;\n        }" ({ "{") (labeled_statement "LAB_00133408:\n          *(undefined8 *)(lVar10 + lVar9 * 8) = 1;" (statement_identifier "LAB_00133408") (: ":") (expression_statement "*(undefined8 *)(lVar10 + lVar9 * 8) = 1;" (assignment_expression "*(undefined8 *)(lVar10 + lVar9 * 8) = 1" (pointer_expression "*(undefined8 *)(lVar10 + lVar9 * 8)" (* "*") (cast_expression "(undefined8 *)(lVar10 + lVar9 * 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar10 + lVar9 * 8)" (( "(") (binary_expression "lVar10 + lVar9 * 8" (identifier "lVar10") (+ "+") (binary_expression "lVar9 * 8" (identifier "lVar9") (* "*") (number_literal "8"))) () ")")))) (= "=") (number_literal "1")) (; ";"))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (goto_statement "goto LAB_0013327a;" (goto "goto") (statement_identifier "LAB_0013327a") (; ";")) (} "}"))) (goto_statement "goto LAB_00133049;" (goto "goto") (statement_identifier "LAB_00133049") (; ";")) (} "}")))) (expression_statement "(*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);" (call_expression "(*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11)" (parenthesized_expression "(*param_5)" (( "(") (pointer_expression "*param_5" (* "*") (identifier "param_5")) () ")")) (argument_list "(param_6,0,0,&DAT_0015f3c0,1,uVar11)" (( "(") (identifier "param_6") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (pointer_expression "&DAT_0015f3c0" (& "&") (identifier "DAT_0015f3c0")) (, ",") (number_literal "1") (, ",") (identifier "uVar11") () ")"))) (; ";")) (} "}")))) (expression_statement "__gmpn_tdiv_qr(param_7,lVar3,0,lVar3,lVar7,param_1,lVar9);" (call_expression "__gmpn_tdiv_qr(param_7,lVar3,0,lVar3,lVar7,param_1,lVar9)" (identifier "__gmpn_tdiv_qr") (argument_list "(param_7,lVar3,0,lVar3,lVar7,param_1,lVar9)" (( "(") (identifier "param_7") (, ",") (identifier "lVar3") (, ",") (number_literal "0") (, ",") (identifier "lVar3") (, ",") (identifier "lVar7") (, ",") (identifier "param_1") (, ",") (identifier "lVar9") () ")"))) (; ";")) (expression_statement "lVar10 = (lVar7 - lVar9) + 1;" (assignment_expression "lVar10 = (lVar7 - lVar9) + 1" (identifier "lVar10") (= "=") (binary_expression "(lVar7 - lVar9) + 1" (parenthesized_expression "(lVar7 - lVar9)" (( "(") (binary_expression "lVar7 - lVar9" (identifier "lVar7") (- "-") (identifier "lVar9")) () ")")) (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (lVar9 < 1) goto LAB_001330fa;" (if "if") (parenthesized_expression "(lVar9 < 1)" (( "(") (binary_expression "lVar9 < 1" (identifier "lVar9") (< "<") (number_literal "1")) () ")")) (goto_statement "goto LAB_001330fa;" (goto "goto") (statement_identifier "LAB_001330fa") (; ";"))) (expression_statement "lVar7 = lVar9 * 8;" (assignment_expression "lVar7 = lVar9 * 8" (identifier "lVar7") (= "=") (binary_expression "lVar9 * 8" (identifier "lVar9") (* "*") (number_literal "8"))) (; ";")) (expression_statement "lVar4 = *(long *)(lVar3 + -8 + lVar7);" (assignment_expression "lVar4 = *(long *)(lVar3 + -8 + lVar7)" (identifier "lVar4") (= "=") (pointer_expression "*(long *)(lVar3 + -8 + lVar7)" (* "*") (cast_expression "(long *)(lVar3 + -8 + lVar7)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + -8 + lVar7)" (( "(") (binary_expression "lVar3 + -8 + lVar7" (binary_expression "lVar3 + -8" (identifier "lVar3") (+ "+") (number_literal "-8")) (+ "+") (identifier "lVar7")) () ")"))))) (; ";")) (expression_statement "lVar8 = lVar9;" (assignment_expression "lVar8 = lVar9" (identifier "lVar8") (= "=") (identifier "lVar9")) (; ";")) (while_statement "while ((lVar4 == 0 && (lVar8 = lVar8 + -1, lVar8 != 0))) {\n    lVar4 = *(long *)(lVar3 + -8 + lVar8 * 8);\n  }" (while "while") (parenthesized_expression "((lVar4 == 0 && (lVar8 = lVar8 + -1, lVar8 != 0)))" (( "(") (parenthesized_expression "(lVar4 == 0 && (lVar8 = lVar8 + -1, lVar8 != 0))" (( "(") (binary_expression "lVar4 == 0 && (lVar8 = lVar8 + -1, lVar8 != 0)" (binary_expression "lVar4 == 0" (identifier "lVar4") (== "==") (number_literal "0")) (&& "&&") (parenthesized_expression "(lVar8 = lVar8 + -1, lVar8 != 0)" (( "(") (comma_expression "lVar8 = lVar8 + -1, lVar8 != 0" (assignment_expression "lVar8 = lVar8 + -1" (identifier "lVar8") (= "=") (binary_expression "lVar8 + -1" (identifier "lVar8") (+ "+") (number_literal "-1"))) (, ",") (binary_expression "lVar8 != 0" (identifier "lVar8") (!= "!=") (number_literal "0"))) () ")"))) () ")")) () ")")) (compound_statement "{\n    lVar4 = *(long *)(lVar3 + -8 + lVar8 * 8);\n  }" ({ "{") (expression_statement "lVar4 = *(long *)(lVar3 + -8 + lVar8 * 8);" (assignment_expression "lVar4 = *(long *)(lVar3 + -8 + lVar8 * 8)" (identifier "lVar4") (= "=") (pointer_expression "*(long *)(lVar3 + -8 + lVar8 * 8)" (* "*") (cast_expression "(long *)(lVar3 + -8 + lVar8 * 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + -8 + lVar8 * 8)" (( "(") (binary_expression "lVar3 + -8 + lVar8 * 8" (binary_expression "lVar3 + -8" (identifier "lVar3") (+ "+") (number_literal "-8")) (+ "+") (binary_expression "lVar8 * 8" (identifier "lVar8") (* "*") (number_literal "8"))) () ")"))))) (; ";")) (} "}"))) (if_statement "if (param_4 < lVar8) goto LAB_001330fa;" (if "if") (parenthesized_expression "(param_4 < lVar8)" (( "(") (binary_expression "param_4 < lVar8" (identifier "param_4") (< "<") (identifier "lVar8")) () ")")) (goto_statement "goto LAB_001330fa;" (goto "goto") (statement_identifier "LAB_001330fa") (; ";"))) (if_statement "if (param_4 == 0) {\n    (*param_5)(param_6,param_1,lVar9,param_7,lVar10,uVar11);\n    return 0;\n  }" (if "if") (parenthesized_expression "(param_4 == 0)" (( "(") (binary_expression "param_4 == 0" (identifier "param_4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    (*param_5)(param_6,param_1,lVar9,param_7,lVar10,uVar11);\n    return 0;\n  }" ({ "{") (expression_statement "(*param_5)(param_6,param_1,lVar9,param_7,lVar10,uVar11);" (call_expression "(*param_5)(param_6,param_1,lVar9,param_7,lVar10,uVar11)" (parenthesized_expression "(*param_5)" (( "(") (pointer_expression "*param_5" (* "*") (identifier "param_5")) () ")")) (argument_list "(param_6,param_1,lVar9,param_7,lVar10,uVar11)" (( "(") (identifier "param_6") (, ",") (identifier "param_1") (, ",") (identifier "lVar9") (, ",") (identifier "param_7") (, ",") (identifier "lVar10") (, ",") (identifier "uVar11") () ")"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "plVar6 = param_7;" (assignment_expression "plVar6 = param_7" (identifier "plVar6") (= "=") (identifier "param_7")) (; ";")) (if_statement "if (lVar8 < 1) {\n    __gmpn_copyi(lVar3,param_1,lVar9);\n  }\n  else {\n    lVar4 = __gmpn_add_n(lVar3,param_1,lVar3,lVar8);\n    if (lVar4 != 0) {\n      if (lVar9 <= lVar8) {\nLAB_0013341a:\n        lVar9 = lVar9 + 1;\n        *(undefined8 *)(lVar3 + lVar7) = 1;\n        goto LAB_001333ef;\n      }\n      lVar4 = lVar8 * 8;\n      lVar8 = lVar8 + 1;\n      lVar5 = *(long *)(param_1 + lVar4) + 1;\n      *(long *)(lVar3 + lVar4) = lVar5;\n      while (lVar5 == 0) {\n        if (lVar9 == lVar8) goto LAB_0013341a;\n        lVar4 = lVar8 * 8;\n        lVar8 = lVar8 + 1;\n        lVar5 = *(long *)(param_1 + lVar4) + 1;\n        *(long *)(lVar3 + -8 + lVar8 * 8) = lVar5;\n      }\n    }\n    if ((param_1 != lVar3) && (lVar8 < lVar9)) {\n      do {\n        *(undefined8 *)(lVar3 + lVar8 * 8) = *(undefined8 *)(param_1 + lVar8 * 8);\n        lVar8 = lVar8 + 1;\n      } while (lVar9 != lVar8);\n    }\n  }" (if "if") (parenthesized_expression "(lVar8 < 1)" (( "(") (binary_expression "lVar8 < 1" (identifier "lVar8") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n    __gmpn_copyi(lVar3,param_1,lVar9);\n  }" ({ "{") (expression_statement "__gmpn_copyi(lVar3,param_1,lVar9);" (call_expression "__gmpn_copyi(lVar3,param_1,lVar9)" (identifier "__gmpn_copyi") (argument_list "(lVar3,param_1,lVar9)" (( "(") (identifier "lVar3") (, ",") (identifier "param_1") (, ",") (identifier "lVar9") () ")"))) (; ";")) (} "}")) (else_clause "else {\n    lVar4 = __gmpn_add_n(lVar3,param_1,lVar3,lVar8);\n    if (lVar4 != 0) {\n      if (lVar9 <= lVar8) {\nLAB_0013341a:\n        lVar9 = lVar9 + 1;\n        *(undefined8 *)(lVar3 + lVar7) = 1;\n        goto LAB_001333ef;\n      }\n      lVar4 = lVar8 * 8;\n      lVar8 = lVar8 + 1;\n      lVar5 = *(long *)(param_1 + lVar4) + 1;\n      *(long *)(lVar3 + lVar4) = lVar5;\n      while (lVar5 == 0) {\n        if (lVar9 == lVar8) goto LAB_0013341a;\n        lVar4 = lVar8 * 8;\n        lVar8 = lVar8 + 1;\n        lVar5 = *(long *)(param_1 + lVar4) + 1;\n        *(long *)(lVar3 + -8 + lVar8 * 8) = lVar5;\n      }\n    }\n    if ((param_1 != lVar3) && (lVar8 < lVar9)) {\n      do {\n        *(undefined8 *)(lVar3 + lVar8 * 8) = *(undefined8 *)(param_1 + lVar8 * 8);\n        lVar8 = lVar8 + 1;\n      } while (lVar9 != lVar8);\n    }\n  }" (else "else") (compound_statement "{\n    lVar4 = __gmpn_add_n(lVar3,param_1,lVar3,lVar8);\n    if (lVar4 != 0) {\n      if (lVar9 <= lVar8) {\nLAB_0013341a:\n        lVar9 = lVar9 + 1;\n        *(undefined8 *)(lVar3 + lVar7) = 1;\n        goto LAB_001333ef;\n      }\n      lVar4 = lVar8 * 8;\n      lVar8 = lVar8 + 1;\n      lVar5 = *(long *)(param_1 + lVar4) + 1;\n      *(long *)(lVar3 + lVar4) = lVar5;\n      while (lVar5 == 0) {\n        if (lVar9 == lVar8) goto LAB_0013341a;\n        lVar4 = lVar8 * 8;\n        lVar8 = lVar8 + 1;\n        lVar5 = *(long *)(param_1 + lVar4) + 1;\n        *(long *)(lVar3 + -8 + lVar8 * 8) = lVar5;\n      }\n    }\n    if ((param_1 != lVar3) && (lVar8 < lVar9)) {\n      do {\n        *(undefined8 *)(lVar3 + lVar8 * 8) = *(undefined8 *)(param_1 + lVar8 * 8);\n        lVar8 = lVar8 + 1;\n      } while (lVar9 != lVar8);\n    }\n  }" ({ "{") (expression_statement "lVar4 = __gmpn_add_n(lVar3,param_1,lVar3,lVar8);" (assignment_expression "lVar4 = __gmpn_add_n(lVar3,param_1,lVar3,lVar8)" (identifier "lVar4") (= "=") (call_expression "__gmpn_add_n(lVar3,param_1,lVar3,lVar8)" (identifier "__gmpn_add_n") (argument_list "(lVar3,param_1,lVar3,lVar8)" (( "(") (identifier "lVar3") (, ",") (identifier "param_1") (, ",") (identifier "lVar3") (, ",") (identifier "lVar8") () ")")))) (; ";")) (if_statement "if (lVar4 != 0) {\n      if (lVar9 <= lVar8) {\nLAB_0013341a:\n        lVar9 = lVar9 + 1;\n        *(undefined8 *)(lVar3 + lVar7) = 1;\n        goto LAB_001333ef;\n      }\n      lVar4 = lVar8 * 8;\n      lVar8 = lVar8 + 1;\n      lVar5 = *(long *)(param_1 + lVar4) + 1;\n      *(long *)(lVar3 + lVar4) = lVar5;\n      while (lVar5 == 0) {\n        if (lVar9 == lVar8) goto LAB_0013341a;\n        lVar4 = lVar8 * 8;\n        lVar8 = lVar8 + 1;\n        lVar5 = *(long *)(param_1 + lVar4) + 1;\n        *(long *)(lVar3 + -8 + lVar8 * 8) = lVar5;\n      }\n    }" (if "if") (parenthesized_expression "(lVar4 != 0)" (( "(") (binary_expression "lVar4 != 0" (identifier "lVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if (lVar9 <= lVar8) {\nLAB_0013341a:\n        lVar9 = lVar9 + 1;\n        *(undefined8 *)(lVar3 + lVar7) = 1;\n        goto LAB_001333ef;\n      }\n      lVar4 = lVar8 * 8;\n      lVar8 = lVar8 + 1;\n      lVar5 = *(long *)(param_1 + lVar4) + 1;\n      *(long *)(lVar3 + lVar4) = lVar5;\n      while (lVar5 == 0) {\n        if (lVar9 == lVar8) goto LAB_0013341a;\n        lVar4 = lVar8 * 8;\n        lVar8 = lVar8 + 1;\n        lVar5 = *(long *)(param_1 + lVar4) + 1;\n        *(long *)(lVar3 + -8 + lVar8 * 8) = lVar5;\n      }\n    }" ({ "{") (if_statement "if (lVar9 <= lVar8) {\nLAB_0013341a:\n        lVar9 = lVar9 + 1;\n        *(undefined8 *)(lVar3 + lVar7) = 1;\n        goto LAB_001333ef;\n      }" (if "if") (parenthesized_expression "(lVar9 <= lVar8)" (( "(") (binary_expression "lVar9 <= lVar8" (identifier "lVar9") (<= "<=") (identifier "lVar8")) () ")")) (compound_statement "{\nLAB_0013341a:\n        lVar9 = lVar9 + 1;\n        *(undefined8 *)(lVar3 + lVar7) = 1;\n        goto LAB_001333ef;\n      }" ({ "{") (labeled_statement "LAB_0013341a:\n        lVar9 = lVar9 + 1;" (statement_identifier "LAB_0013341a") (: ":") (expression_statement "lVar9 = lVar9 + 1;" (assignment_expression "lVar9 = lVar9 + 1" (identifier "lVar9") (= "=") (binary_expression "lVar9 + 1" (identifier "lVar9") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "*(undefined8 *)(lVar3 + lVar7) = 1;" (assignment_expression "*(undefined8 *)(lVar3 + lVar7) = 1" (pointer_expression "*(undefined8 *)(lVar3 + lVar7)" (* "*") (cast_expression "(undefined8 *)(lVar3 + lVar7)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + lVar7)" (( "(") (binary_expression "lVar3 + lVar7" (identifier "lVar3") (+ "+") (identifier "lVar7")) () ")")))) (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_001333ef;" (goto "goto") (statement_identifier "LAB_001333ef") (; ";")) (} "}"))) (expression_statement "lVar4 = lVar8 * 8;" (assignment_expression "lVar4 = lVar8 * 8" (identifier "lVar4") (= "=") (binary_expression "lVar8 * 8" (identifier "lVar8") (* "*") (number_literal "8"))) (; ";")) (expression_statement "lVar8 = lVar8 + 1;" (assignment_expression "lVar8 = lVar8 + 1" (identifier "lVar8") (= "=") (binary_expression "lVar8 + 1" (identifier "lVar8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "lVar5 = *(long *)(param_1 + lVar4) + 1;" (assignment_expression "lVar5 = *(long *)(param_1 + lVar4) + 1" (identifier "lVar5") (= "=") (binary_expression "*(long *)(param_1 + lVar4) + 1" (pointer_expression "*(long *)(param_1 + lVar4)" (* "*") (cast_expression "(long *)(param_1 + lVar4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + lVar4)" (( "(") (binary_expression "param_1 + lVar4" (identifier "param_1") (+ "+") (identifier "lVar4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(long *)(lVar3 + lVar4) = lVar5;" (assignment_expression "*(long *)(lVar3 + lVar4) = lVar5" (pointer_expression "*(long *)(lVar3 + lVar4)" (* "*") (cast_expression "(long *)(lVar3 + lVar4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + lVar4)" (( "(") (binary_expression "lVar3 + lVar4" (identifier "lVar3") (+ "+") (identifier "lVar4")) () ")")))) (= "=") (identifier "lVar5")) (; ";")) (while_statement "while (lVar5 == 0) {\n        if (lVar9 == lVar8) goto LAB_0013341a;\n        lVar4 = lVar8 * 8;\n        lVar8 = lVar8 + 1;\n        lVar5 = *(long *)(param_1 + lVar4) + 1;\n        *(long *)(lVar3 + -8 + lVar8 * 8) = lVar5;\n      }" (while "while") (parenthesized_expression "(lVar5 == 0)" (( "(") (binary_expression "lVar5 == 0" (identifier "lVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        if (lVar9 == lVar8) goto LAB_0013341a;\n        lVar4 = lVar8 * 8;\n        lVar8 = lVar8 + 1;\n        lVar5 = *(long *)(param_1 + lVar4) + 1;\n        *(long *)(lVar3 + -8 + lVar8 * 8) = lVar5;\n      }" ({ "{") (if_statement "if (lVar9 == lVar8) goto LAB_0013341a;" (if "if") (parenthesized_expression "(lVar9 == lVar8)" (( "(") (binary_expression "lVar9 == lVar8" (identifier "lVar9") (== "==") (identifier "lVar8")) () ")")) (goto_statement "goto LAB_0013341a;" (goto "goto") (statement_identifier "LAB_0013341a") (; ";"))) (expression_statement "lVar4 = lVar8 * 8;" (assignment_expression "lVar4 = lVar8 * 8" (identifier "lVar4") (= "=") (binary_expression "lVar8 * 8" (identifier "lVar8") (* "*") (number_literal "8"))) (; ";")) (expression_statement "lVar8 = lVar8 + 1;" (assignment_expression "lVar8 = lVar8 + 1" (identifier "lVar8") (= "=") (binary_expression "lVar8 + 1" (identifier "lVar8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "lVar5 = *(long *)(param_1 + lVar4) + 1;" (assignment_expression "lVar5 = *(long *)(param_1 + lVar4) + 1" (identifier "lVar5") (= "=") (binary_expression "*(long *)(param_1 + lVar4) + 1" (pointer_expression "*(long *)(param_1 + lVar4)" (* "*") (cast_expression "(long *)(param_1 + lVar4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + lVar4)" (( "(") (binary_expression "param_1 + lVar4" (identifier "param_1") (+ "+") (identifier "lVar4")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(long *)(lVar3 + -8 + lVar8 * 8) = lVar5;" (assignment_expression "*(long *)(lVar3 + -8 + lVar8 * 8) = lVar5" (pointer_expression "*(long *)(lVar3 + -8 + lVar8 * 8)" (* "*") (cast_expression "(long *)(lVar3 + -8 + lVar8 * 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + -8 + lVar8 * 8)" (( "(") (binary_expression "lVar3 + -8 + lVar8 * 8" (binary_expression "lVar3 + -8" (identifier "lVar3") (+ "+") (number_literal "-8")) (+ "+") (binary_expression "lVar8 * 8" (identifier "lVar8") (* "*") (number_literal "8"))) () ")")))) (= "=") (identifier "lVar5")) (; ";")) (} "}"))) (} "}"))) (if_statement "if ((param_1 != lVar3) && (lVar8 < lVar9)) {\n      do {\n        *(undefined8 *)(lVar3 + lVar8 * 8) = *(undefined8 *)(param_1 + lVar8 * 8);\n        lVar8 = lVar8 + 1;\n      } while (lVar9 != lVar8);\n    }" (if "if") (parenthesized_expression "((param_1 != lVar3) && (lVar8 < lVar9))" (( "(") (binary_expression "(param_1 != lVar3) && (lVar8 < lVar9)" (parenthesized_expression "(param_1 != lVar3)" (( "(") (binary_expression "param_1 != lVar3" (identifier "param_1") (!= "!=") (identifier "lVar3")) () ")")) (&& "&&") (parenthesized_expression "(lVar8 < lVar9)" (( "(") (binary_expression "lVar8 < lVar9" (identifier "lVar8") (< "<") (identifier "lVar9")) () ")"))) () ")")) (compound_statement "{\n      do {\n        *(undefined8 *)(lVar3 + lVar8 * 8) = *(undefined8 *)(param_1 + lVar8 * 8);\n        lVar8 = lVar8 + 1;\n      } while (lVar9 != lVar8);\n    }" ({ "{") (do_statement "do {\n        *(undefined8 *)(lVar3 + lVar8 * 8) = *(undefined8 *)(param_1 + lVar8 * 8);\n        lVar8 = lVar8 + 1;\n      } while (lVar9 != lVar8);" (do "do") (compound_statement "{\n        *(undefined8 *)(lVar3 + lVar8 * 8) = *(undefined8 *)(param_1 + lVar8 * 8);\n        lVar8 = lVar8 + 1;\n      }" ({ "{") (expression_statement "*(undefined8 *)(lVar3 + lVar8 * 8) = *(undefined8 *)(param_1 + lVar8 * 8);" (assignment_expression "*(undefined8 *)(lVar3 + lVar8 * 8) = *(undefined8 *)(param_1 + lVar8 * 8)" (pointer_expression "*(undefined8 *)(lVar3 + lVar8 * 8)" (* "*") (cast_expression "(undefined8 *)(lVar3 + lVar8 * 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + lVar8 * 8)" (( "(") (binary_expression "lVar3 + lVar8 * 8" (identifier "lVar3") (+ "+") (binary_expression "lVar8 * 8" (identifier "lVar8") (* "*") (number_literal "8"))) () ")")))) (= "=") (pointer_expression "*(undefined8 *)(param_1 + lVar8 * 8)" (* "*") (cast_expression "(undefined8 *)(param_1 + lVar8 * 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + lVar8 * 8)" (( "(") (binary_expression "param_1 + lVar8 * 8" (identifier "param_1") (+ "+") (binary_expression "lVar8 * 8" (identifier "lVar8") (* "*") (number_literal "8"))) () ")"))))) (; ";")) (expression_statement "lVar8 = lVar8 + 1;" (assignment_expression "lVar8 = lVar8 + 1" (identifier "lVar8") (= "=") (binary_expression "lVar8 + 1" (identifier "lVar8") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar9 != lVar8)" (( "(") (binary_expression "lVar9 != lVar8" (identifier "lVar9") (!= "!=") (identifier "lVar8")) () ")")) (; ";")) (} "}"))) (} "}")))) (labeled_statement "LAB_001333ef:\n  do {\n    lVar3 = *plVar6;\n    *plVar6 = *plVar6 + -1;\n    plVar6 = plVar6 + 1;\n  } while (lVar3 == 0);" (statement_identifier "LAB_001333ef") (: ":") (do_statement "do {\n    lVar3 = *plVar6;\n    *plVar6 = *plVar6 + -1;\n    plVar6 = plVar6 + 1;\n  } while (lVar3 == 0);" (do "do") (compound_statement "{\n    lVar3 = *plVar6;\n    *plVar6 = *plVar6 + -1;\n    plVar6 = plVar6 + 1;\n  }" ({ "{") (expression_statement "lVar3 = *plVar6;" (assignment_expression "lVar3 = *plVar6" (identifier "lVar3") (= "=") (pointer_expression "*plVar6" (* "*") (identifier "plVar6"))) (; ";")) (expression_statement "*plVar6 = *plVar6 + -1;" (assignment_expression "*plVar6 = *plVar6 + -1" (pointer_expression "*plVar6" (* "*") (identifier "plVar6")) (= "=") (binary_expression "*plVar6 + -1" (pointer_expression "*plVar6" (* "*") (identifier "plVar6")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "plVar6 = plVar6 + 1;" (assignment_expression "plVar6 = plVar6 + 1" (identifier "plVar6") (= "=") (binary_expression "plVar6 + 1" (identifier "plVar6") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar3 == 0)" (( "(") (binary_expression "lVar3 == 0" (identifier "lVar3") (== "==") (number_literal "0")) () ")")) (; ";"))) (labeled_statement "LAB_001330fa:\n  (*param_5)(param_6,0,0,param_7,lVar10,uVar11);" (statement_identifier "LAB_001330fa") (: ":") (expression_statement "(*param_5)(param_6,0,0,param_7,lVar10,uVar11);" (call_expression "(*param_5)(param_6,0,0,param_7,lVar10,uVar11)" (parenthesized_expression "(*param_5)" (( "(") (pointer_expression "*param_5" (* "*") (identifier "param_5")) () ")")) (argument_list "(param_6,0,0,param_7,lVar10,uVar11)" (( "(") (identifier "param_6") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (identifier "param_7") (, ",") (identifier "lVar10") (, ",") (identifier "uVar11") () ")"))) (; ";"))) (return_statement "return lVar9;" (return "return") (identifier "lVar9") (; ";")) (} "}")))

type_1 function_1
                    (type_2 var_11,type_2 bp,type_1 var_1,type_1 var_3,type_3 *hook,
                    void *ctx,type_2 tp)

{
  type_4 var_14;
  type_4 var_15;
  long var_2;
  type_5 var_5;
  type_2 var_12;
  type_1 var_6;
  long var_9;
  long var_13;
  type_1 var_4;
  type_2 var_18;
  type_6 var_7;
  
  var_6 = var_1;
  var_2 = var_1;
  var_12 = bp;
  if (var_1 < 1) {
LAB_00133136:
    do {
      var_2 = var_2 + -1;
      if (var_2 < 0) {
        if (var_3 != 0) {
          return 0;
        }
        (*hook)(ctx,var_11,var_1,(type_7)0x0,0,-1);
        return 0;
      }
    } while (var_11[var_2] == bp[var_2]);
    var_9 = var_6;
    var_4 = var_1;
    if (bp[var_2] < var_11[var_2]) {
      var_7 = 1;
      var_12 = var_11;
      var_11 = bp;
    }
    else {
      var_7 = 0;
    }
  }
  else {
    if (var_11[var_1 + -1] != 0) {
      var_4 = var_1;
      if (bp[var_1 + -1] == 0) goto LAB_00132fd1;
      goto LAB_00133136;
    }
    do {
      var_4 = var_2 + -1;
      if (var_4 == 0) {
        if (bp[var_1 + -1] == 0) goto LAB_00132fd1;
        var_7 = 0;
        var_9 = var_1;
        goto LAB_00133008;
      }
      var_9 = var_2 + -2;
      var_2 = var_4;
    } while (var_11[var_9] == 0);
    var_5 = bp[var_1 + -1];
    while (var_1 = var_6, var_5 == 0) {
LAB_00132fd1:
      var_6 = var_1 + -1;
      if (var_6 == 0) break;
      var_5 = bp[var_1 + -2];
    }
    var_1 = var_4;
    var_2 = var_1;
    if (var_6 == var_1) goto LAB_00133136;
    var_7 = 0;
    var_9 = var_6;
    var_4 = var_1;
    if (var_6 < var_1) {
      var_7 = 1;
      var_9 = var_1;
      var_4 = var_6;
      var_12 = var_11;
      var_11 = bp;
    }
  }
LAB_00133008:
  if (var_4 <= var_3) {
    if (var_3 != 0) {
      return 0;
    }
    (*hook)(ctx,var_12,var_9,(type_7)0x0,0,var_7 ^ 1);
    return 0;
  }
  var_18 = var_12;
  if (((var_4 == 0) || (var_2 = var_8(var_12,var_12,var_11,var_4), var_2 == 0)) ||
     (var_9 <= var_4)) {
LAB_0013301a:
    if (0 < var_9) {
      var_5 = var_12[var_9 + -1];
      goto joined_r0x00133029;
    }
LAB_0013321f:
    var_2 = var_9;
    if (var_9 <= var_3) {
      if ((var_9 == 0) || (var_2 = var_10(var_12,var_11,var_12,var_9), var_2 == 0))
      goto LAB_00133231;
LAB_0013327a:
      var_5 = var_11[var_9] + 1;
      var_12[var_9] = var_5;
      while (var_9 = var_9 + 1, var_5 == 0) {
        if (var_4 == var_9) goto LAB_00133408;
        var_5 = var_11[var_9] + 1;
        var_12[var_9] = var_5;
      }
LAB_00133231:
      if (var_11 != var_12) {
        if (var_9 < var_4) {
          do {
            var_12[var_9] = var_11[var_9];
            var_9 = var_9 + 1;
          } while (var_4 != var_9);
        }
        return 0;
      }
      return 0;
    }
LAB_00133049:
    var_13 = var_4;
    var_9 = var_2;
    if (var_4 == var_2) {
      do {
        var_13 = var_13 + -1;
        if (var_13 < 0) {
          if (0 < var_3) {
            (*hook)(ctx,(type_7)0x0,0,&function_1::one,1,var_7);
            return 0;
          }
          (*hook)(ctx,var_12,var_2,(type_7)0x0,0,var_7);
          return 0;
        }
        var_14 = var_11[var_13];
        var_15 = var_12[var_13];
      } while (var_14 == var_15);
      if (var_14 < var_15 || var_14 == var_15) {
        (*hook)(ctx,(type_7)0x0,0,&function_1::one,1,var_7);
      }
      else {
        (*hook)(ctx,(type_7)0x0,0,&function_1::one,1,var_7);
        var_7 = var_7 ^ 1;
        var_18 = var_11;
        var_11 = var_12;
      }
    }
    else {
      (*hook)(ctx,(type_7)0x0,0,&function_1::one,1,var_7);
      if (var_2 < var_4) {
        var_7 = var_7 ^ 1;
        var_9 = var_4;
        var_4 = var_2;
        var_18 = var_11;
        var_11 = var_12;
      }
    }
  }
  else {
    var_5 = var_12[var_4];
    var_12[var_4] = var_5 - 1;
    var_2 = var_4;
    if (var_5 == 0) {
      do {
        var_2 = var_2 + 1;
        if (var_9 == var_2) goto LAB_00133465;
        var_5 = var_12[var_2];
        var_12[var_2] = var_5 - 1;
      } while (var_5 == 0);
      goto LAB_0013301a;
    }
LAB_00133465:
    if (0 < var_9) {
      var_2 = var_9;
      if (var_12[var_9 + -1] == 0) {
        do {
          var_9 = var_2 + -1;
          if (var_9 < 1) goto LAB_0013321f;
          var_5 = var_12[var_2 + -2];
joined_r0x00133029:
          var_2 = var_9;
        } while (var_5 == 0);
        if (var_3 < var_9) goto LAB_00133049;
        var_2 = var_10(var_12,var_11,var_12,var_9);
        if (var_2 == 0) goto LAB_00133231;
        if (var_4 <= var_9) {
LAB_00133408:
          var_12[var_4] = 1;
          return 0;
        }
        goto LAB_0013327a;
      }
      goto LAB_00133049;
    }
    (*hook)(ctx,(type_7)0x0,0,&function_1::one,1,var_7);
  }
  var_16(tp,var_18,0,var_18,var_9,var_11,var_4);
  var_2 = (var_9 - var_4) + 1;
  if (var_4 < 1) goto LAB_001330fa;
  var_5 = var_18[var_4 + -1];
  var_9 = var_4;
  while ((var_13 = var_9, var_5 == 0 && (var_13 = var_9 + -1, var_13 != 0))) {
    var_5 = var_18[var_9 + -2];
    var_9 = var_13;
  }
  if (var_3 < var_13) goto LAB_001330fa;
  if (var_3 == 0) {
    (*hook)(ctx,var_11,var_4,tp,var_2,var_7);
    return 0;
  }
  var_12 = tp;
  if (var_13 < 1) {
    var_17(var_18,var_11,var_4);
  }
  else {
    var_9 = var_10(var_18,var_11,var_18,var_13);
    if (var_9 != 0) {
      if (var_4 <= var_13) {
LAB_0013341a:
        var_18[var_4] = 1;
        var_4 = var_4 + 1;
        goto LAB_001333ef;
      }
      var_5 = var_11[var_13] + 1;
      var_18[var_13] = var_5;
      while (var_13 = var_13 + 1, var_5 == 0) {
        if (var_4 == var_13) goto LAB_0013341a;
        var_5 = var_11[var_13] + 1;
        var_18[var_13] = var_5;
      }
    }
    if ((var_11 != var_18) && (var_13 < var_4)) {
      do {
        var_18[var_13] = var_11[var_13];
        var_13 = var_13 + 1;
      } while (var_4 != var_13);
    }
  }
LAB_001333ef:
  do {
    var_5 = *var_12;
    *var_12 = *var_12 - 1;
    var_12 = var_12 + 1;
  } while (var_5 == 0);
LAB_001330fa:
  (*hook)(ctx,(type_7)0x0,0,tp,var_2,var_7);
  return var_4;
}


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

long MASKED
               (long param_1,long param_2,long param_3,long param_4,code *param_5,undefined8 param_6
               ,long *param_7)

{
  ulong uVar1;
  ulong uVar2;
  long lVar3;
  long lVar4;
  long lVar5;
  long *plVar6;
  long lVar7;
  long lVar8;
  long lVar9;
  long lVar10;
  uint uVar11;
  
  lVar3 = param_3;
  lVar9 = param_3;
  lVar10 = param_2;
  if (param_3 < 1) {
LAB_00133136:
    do {
      lVar9 = lVar9 + -1;
      if (lVar9 < 0) {
        if (param_4 != 0) {
          return 0;
        }
        (*param_5)(param_6,param_1,param_3,0,0,0xffffffff);
        return 0;
      }
      uVar1 = *(ulong *)(param_1 + lVar9 * 8);
      uVar2 = *(ulong *)(param_2 + lVar9 * 8);
    } while (uVar1 == uVar2);
    lVar7 = lVar3;
    lVar9 = param_3;
    if (uVar2 < uVar1) {
      uVar11 = 1;
      lVar10 = param_1;
      param_1 = param_2;
    }
    else {
      uVar11 = 0;
    }
  }
  else {
    lVar7 = param_3 * 8;
    if (*(long *)(param_1 + -8 + lVar7) != 0) {
      if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;
      goto LAB_00133136;
    }
    do {
      lVar9 = lVar9 + -1;
      if (lVar9 == 0) {
        if (*(long *)(param_2 + -8 + lVar7) == 0) goto LAB_00132fd1;
        uVar11 = 0;
        lVar7 = param_3;
        goto LAB_00133008;
      }
    } while (*(long *)(param_1 + -8 + lVar9 * 8) == 0);
    lVar7 = *(long *)(param_2 + -8 + lVar7);
    while (param_3 = lVar3, lVar7 == 0) {
LAB_00132fd1:
      lVar3 = param_3 + -1;
      if (lVar3 == 0) break;
      lVar7 = *(long *)(param_2 + -8 + lVar3 * 8);
    }
    param_3 = lVar9;
    lVar9 = param_3;
    if (lVar3 == param_3) goto LAB_00133136;
    uVar11 = 0;
    lVar7 = lVar3;
    if (lVar3 < param_3) {
      uVar11 = 1;
      lVar7 = param_3;
      lVar9 = lVar3;
      lVar10 = param_1;
      param_1 = param_2;
    }
  }
LAB_00133008:
  if (lVar9 <= param_4) {
    if (param_4 != 0) {
      return 0;
    }
    (*param_5)(param_6,lVar10,lVar7,0,0,uVar11 ^ 1);
    return 0;
  }
  lVar3 = lVar10;
  if (((lVar9 == 0) || (lVar4 = __gmpn_sub_n(lVar10,lVar10,param_1,lVar9), lVar4 == 0)) ||
     (lVar7 <= lVar9)) {
LAB_0013301a:
    if (0 < lVar7) {
      lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);
      goto joined_r0x00133029;
    }
LAB_0013321f:
    lVar4 = lVar7;
    if (lVar7 <= param_4) {
      if ((lVar7 == 0) || (lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7), lVar3 == 0))
      goto LAB_00133231;
LAB_0013327a:
      lVar3 = lVar7 * 8;
      lVar7 = lVar7 + 1;
      lVar4 = *(long *)(param_1 + lVar3) + 1;
      *(long *)(lVar10 + lVar3) = lVar4;
      while (lVar4 == 0) {
        if (lVar9 == lVar7) goto LAB_00133408;
        lVar3 = lVar7 * 8;
        lVar7 = lVar7 + 1;
        lVar4 = *(long *)(param_1 + lVar3) + 1;
        *(long *)(lVar10 + -8 + lVar7 * 8) = lVar4;
      }
LAB_00133231:
      if (param_1 != lVar10) {
        if (lVar7 < lVar9) {
          do {
            *(undefined8 *)(lVar10 + lVar7 * 8) = *(undefined8 *)(param_1 + lVar7 * 8);
            lVar7 = lVar7 + 1;
          } while (lVar9 != lVar7);
        }
        return 0;
      }
      return 0;
    }
LAB_00133049:
    lVar8 = lVar9;
    lVar7 = lVar4;
    if (lVar9 == lVar4) {
      do {
        lVar8 = lVar8 + -1;
        if (lVar8 < 0) {
          if (0 < param_4) {
            (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);
            return 0;
          }
          (*param_5)(param_6,lVar10,lVar4,0,0,uVar11);
          return 0;
        }
        uVar1 = *(ulong *)(param_1 + lVar8 * 8);
        uVar2 = *(ulong *)(lVar10 + lVar8 * 8);
      } while (uVar1 == uVar2);
      if (uVar1 < uVar2 || uVar1 == uVar2) {
        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);
      }
      else {
        (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);
        uVar11 = uVar11 ^ 1;
        lVar3 = param_1;
        param_1 = lVar10;
      }
    }
    else {
      (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);
      if (lVar4 < lVar9) {
        uVar11 = uVar11 ^ 1;
        lVar7 = lVar9;
        lVar9 = lVar4;
        lVar3 = param_1;
        param_1 = lVar10;
      }
    }
  }
  else {
    plVar6 = (long *)(lVar10 + lVar9 * 8);
    lVar8 = *plVar6;
    lVar4 = lVar9 + 1;
    *plVar6 = lVar8 + -1;
    if (lVar8 == 0) {
      do {
        if (lVar7 == lVar4) goto LAB_00133465;
        lVar8 = *(long *)(lVar10 + lVar4 * 8);
        lVar4 = lVar4 + 1;
        *(long *)(lVar10 + -8 + lVar4 * 8) = lVar8 + -1;
      } while (lVar8 == 0);
      goto LAB_0013301a;
    }
LAB_00133465:
    if (0 < lVar7) {
      lVar4 = lVar7;
      if (*(long *)(lVar10 + -8 + lVar7 * 8) == 0) {
        do {
          lVar7 = lVar7 + -1;
          if (lVar7 < 1) goto LAB_0013321f;
          lVar4 = *(long *)(lVar10 + -8 + lVar7 * 8);
joined_r0x00133029:
        } while (lVar4 == 0);
        lVar4 = lVar7;
        if (param_4 < lVar7) goto LAB_00133049;
        lVar3 = __gmpn_add_n(lVar10,param_1,lVar10,lVar7);
        if (lVar3 == 0) goto LAB_00133231;
        if (lVar9 <= lVar7) {
LAB_00133408:
          *(undefined8 *)(lVar10 + lVar9 * 8) = 1;
          return 0;
        }
        goto LAB_0013327a;
      }
      goto LAB_00133049;
    }
    (*param_5)(param_6,0,0,&DAT_0015f3c0,1,uVar11);
  }
  __gmpn_tdiv_qr(param_7,lVar3,0,lVar3,lVar7,param_1,lVar9);
  lVar10 = (lVar7 - lVar9) + 1;
  if (lVar9 < 1) goto LAB_001330fa;
  lVar7 = lVar9 * 8;
  lVar4 = *(long *)(lVar3 + -8 + lVar7);
  lVar8 = lVar9;
  while ((lVar4 == 0 && (lVar8 = lVar8 + -1, lVar8 != 0))) {
    lVar4 = *(long *)(lVar3 + -8 + lVar8 * 8);
  }
  if (param_4 < lVar8) goto LAB_001330fa;
  if (param_4 == 0) {
    (*param_5)(param_6,param_1,lVar9,param_7,lVar10,uVar11);
    return 0;
  }
  plVar6 = param_7;
  if (lVar8 < 1) {
    __gmpn_copyi(lVar3,param_1,lVar9);
  }
  else {
    lVar4 = __gmpn_add_n(lVar3,param_1,lVar3,lVar8);
    if (lVar4 != 0) {
      if (lVar9 <= lVar8) {
LAB_0013341a:
        lVar9 = lVar9 + 1;
        *(undefined8 *)(lVar3 + lVar7) = 1;
        goto LAB_001333ef;
      }
      lVar4 = lVar8 * 8;
      lVar8 = lVar8 + 1;
      lVar5 = *(long *)(param_1 + lVar4) + 1;
      *(long *)(lVar3 + lVar4) = lVar5;
      while (lVar5 == 0) {
        if (lVar9 == lVar8) goto LAB_0013341a;
        lVar4 = lVar8 * 8;
        lVar8 = lVar8 + 1;
        lVar5 = *(long *)(param_1 + lVar4) + 1;
        *(long *)(lVar3 + -8 + lVar8 * 8) = lVar5;
      }
    }
    if ((param_1 != lVar3) && (lVar8 < lVar9)) {
      do {
        *(undefined8 *)(lVar3 + lVar8 * 8) = *(undefined8 *)(param_1 + lVar8 * 8);
        lVar8 = lVar8 + 1;
      } while (lVar9 != lVar8);
    }
  }
LAB_001333ef:
  do {
    lVar3 = *plVar6;
    *plVar6 = *plVar6 + -1;
    plVar6 = plVar6 + 1;
  } while (lVar3 == 0);
LAB_001330fa:
  (*param_5)(param_6,0,0,param_7,lVar10,uVar11);
  return lVar9;
}

