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

void __gmpn_matrix22_mul_strassen
               (mp_ptr r0,mp_ptr r1,mp_ptr r2,mp_ptr r3,mp_size_t rn,mp_srcptr m0,mp_srcptr m1,
               mp_srcptr m2,mp_srcptr m3,mp_size_t mn,mp_ptr tp)

{
  int un;
  mp_srcptr pmVar1;
  undefined *puVar2;
  mp_srcptr vp;
  mp_ptr prodp;
  int iVar3;
  mp_limb_t mVar4;
  mp_size_t mVar5;
  int iVar6;
  int iVar7;
  code *pcVar8;
  int iVar9;
  int iVar10;
  mp_ptr prodp_00;
  uint local_60;
  uint local_5c;
  mp_ptr local_58;
  uint local_3c;
  mp_ptr local_38;
  uint local_2c;
  uint local_20;
  
  iVar7 = rn + 1;
  un = mn + 1;
  vp = tp + iVar7;
  iVar6 = rn + mn;
  prodp = vp + un;
  iVar9 = iVar6 + 1;
  prodp_00 = prodp + iVar9;
  iVar3 = rn;
  if (rn < mn) {
    __gmpn_mul(prodp,m2,mn,r1,rn);
  }
  else {
    __gmpn_mul(prodp,r1,rn,m2,mn);
  }
  do {
    puVar2 = PTR___gmpn_cpuvec_0009dd94;
    iVar3 = iVar3 + -1;
    iVar10 = rn;
    if (iVar3 < 0) {
      pcVar8 = *(code **)(PTR___gmpn_cpuvec_0009dd94 + 0x88);
      goto LAB_000573b5;
    }
  } while (r3[iVar3] == r2[iVar3]);
  pcVar8 = *(code **)(PTR___gmpn_cpuvec_0009dd94 + 0x88);
  if (r2[iVar3] < r3[iVar3]) {
LAB_000573b5:
    (*pcVar8)(r3,r3,r2,rn);
    mVar4 = (**(code **)puVar2)(r1,r1,r3,rn);
    r1[rn] = mVar4;
    if (mVar4 == 0) {
      local_2c = 1;
      goto LAB_00057b2c;
    }
    iVar3 = (**(code **)(puVar2 + 0x88))(tp,r1,r0,rn);
    tp[rn] = mVar4 - iVar3;
    local_2c = 1;
    local_3c = 0;
    local_20 = 1;
  }
  else {
    (*pcVar8)(r3,r2,r3,rn);
    mVar5 = rn;
    do {
      mVar5 = mVar5 + -1;
      if (mVar5 < 0) {
        pcVar8 = *(code **)(puVar2 + 0x88);
        goto LAB_00057ae8;
      }
    } while (r1[mVar5] == r3[mVar5]);
    pcVar8 = *(code **)(puVar2 + 0x88);
    if (r3[mVar5] < r1[mVar5]) {
LAB_00057ae8:
      local_38 = r1 + rn;
      (*pcVar8)(r1,r1,r3,rn);
      *local_38 = 0;
      local_2c = 0;
LAB_00057b2c:
      do {
        local_58 = tp + rn;
        iVar10 = iVar10 + -1;
        if (iVar10 < 0) {
          pcVar8 = *(code **)(puVar2 + 0x88);
          goto LAB_00057b3e;
        }
      } while (r0[iVar10] == r1[iVar10]);
      pcVar8 = *(code **)(puVar2 + 0x88);
      if (r1[iVar10] < r0[iVar10]) {
LAB_00057b3e:
        (*pcVar8)(tp,r0,r1,rn);
        local_20 = 0;
      }
      else {
        (*pcVar8)(tp,r1,r0,rn);
        local_20 = 1;
      }
      local_3c = 0;
      *local_58 = 0;
    }
    else {
      (*pcVar8)(r1,r3,r1,rn);
      r1[rn] = 0;
      mVar4 = (**(code **)puVar2)(tp,r1,r0,rn);
      tp[rn] = mVar4;
      local_2c = 0;
      local_3c = 1;
      local_20 = 0;
    }
  }
  local_38 = r1 + rn;
  if (rn < mn) {
    __gmpn_mul(prodp_00,m0,mn,r0,rn);
  }
  else {
    __gmpn_mul(prodp_00,r0,rn,m0,mn);
  }
  mVar4 = (**(code **)puVar2)(r0,prodp,prodp_00,iVar6);
  r0[iVar6] = mVar4;
  mVar5 = mn;
  do {
    mVar5 = mVar5 + -1;
    if (mVar5 < 0) {
      pcVar8 = *(code **)(puVar2 + 0x88);
      goto LAB_000574ba;
    }
  } while (m3[mVar5] == m2[mVar5]);
  pcVar8 = *(code **)(puVar2 + 0x88);
  if (m2[mVar5] < m3[mVar5]) {
LAB_000574ba:
    (*pcVar8)(vp,m3,m2,mn);
    local_5c = 0;
  }
  else {
    (*pcVar8)(vp,m2,m3,mn);
    local_2c = local_2c ^ 1;
    local_5c = 1;
  }
  if (rn < mn) {
    __gmpn_mul(prodp_00,vp,mn,r3,rn);
  }
  else {
    __gmpn_mul(prodp_00,r3,rn,vp,mn);
  }
  prodp_00[iVar6] = 0;
  pmVar1 = vp + mn;
  iVar3 = mn;
  if (local_5c == 0) {
    mVar4 = (**(code **)puVar2)(vp,vp,m1,mn);
    *pmVar1 = mVar4;
    if (mVar4 == 0) goto LAB_00057a50;
    if (mn < rn) {
      __gmpn_mul(r3,r1,rn,vp,un);
    }
    else {
      __gmpn_mul(r3,vp,un,r1,rn);
    }
    if (r1[rn] != 0) {
      (**(code **)puVar2)(r3 + rn,r3 + rn,vp,un);
    }
  }
  else {
    do {
      iVar3 = iVar3 + -1;
      if (iVar3 < 0) {
        pcVar8 = *(code **)(puVar2 + 0x88);
        goto LAB_00057a2e;
      }
    } while (m1[iVar3] == vp[iVar3]);
    pcVar8 = *(code **)(puVar2 + 0x88);
    if (vp[iVar3] < m1[iVar3]) {
LAB_00057a2e:
      (*pcVar8)(vp,m1,vp,mn);
      local_5c = 0;
    }
    else {
      (*pcVar8)(vp,vp,m1,mn);
    }
    *pmVar1 = 0;
LAB_00057a50:
    if (iVar7 < mn) {
      __gmpn_mul(r3,vp,mn,r1,iVar7);
    }
    else {
      __gmpn_mul(r3,r1,iVar7,vp,mn);
    }
  }
  prodp[iVar6] = 0;
  iVar6 = iVar9;
  if (local_3c == local_5c) {
    (**(code **)puVar2)(r3,r3,prodp,iVar9);
    local_60 = 0;
    if (local_5c == 0) goto LAB_000578c7;
LAB_000575ee:
    mVar4 = (**(code **)puVar2)(vp,vp,m0,mn);
    *pmVar1 = mVar4;
LAB_00057608:
    if (rn <= mn) goto LAB_000578fc;
LAB_00057610:
    __gmpn_mul(prodp,r2,rn,vp,un);
    if (local_3c != 0) goto LAB_00057638;
LAB_00057924:
    iVar9 = (**(code **)puVar2)(r1,r1,r2,rn);
    *local_38 = *local_38 + iVar9;
  }
  else {
    do {
      iVar6 = iVar6 + -1;
      if (iVar6 < 0) {
        pcVar8 = *(code **)(puVar2 + 0x88);
        goto LAB_000575cb;
      }
    } while (prodp[iVar6] == r3[iVar6]);
    pcVar8 = *(code **)(puVar2 + 0x88);
    if (r3[iVar6] < prodp[iVar6]) {
LAB_000575cb:
      (*pcVar8)(r3,prodp,r3,iVar9);
      local_60 = 0;
    }
    else {
      (*pcVar8)(r3,r3,prodp,iVar9);
      local_60 = 1;
    }
    if (local_5c != 0) goto LAB_000575ee;
LAB_000578c7:
    pcVar8 = *(code **)(puVar2 + 0x88);
    iVar9 = mn;
    if (*pmVar1 == 0) {
      do {
        iVar9 = iVar9 + -1;
        if (iVar9 < 0) goto LAB_00057cd1;
      } while (vp[iVar9] == m0[iVar9]);
      if (m0[iVar9] < vp[iVar9]) {
LAB_00057cd1:
        (*pcVar8)(vp,vp,m0,mn);
      }
      else {
        (*pcVar8)(vp,m0,vp,mn);
        local_5c = 1;
      }
      goto LAB_00057608;
    }
    iVar9 = (*pcVar8)(vp,vp,m0,mn);
    *pmVar1 = *pmVar1 - iVar9;
    if (mn < rn) goto LAB_00057610;
LAB_000578fc:
    __gmpn_mul(prodp,vp,un,r2,rn);
    if (local_3c == 0) goto LAB_00057924;
LAB_00057638:
    (**(code **)(puVar2 + 0x88))(r1,r2,r1,rn);
  }
  iVar9 = mn + iVar7;
  iVar3 = iVar9;
  iVar6 = iVar9;
  if (local_60 == local_5c) {
    (**(code **)puVar2)(r2,r3,prodp,iVar9);
    local_5c = local_60;
    if (local_60 == local_2c) goto LAB_00057971;
LAB_000576cd:
    do {
      iVar6 = iVar6 + -1;
      if (iVar6 < 0) {
        pcVar8 = *(code **)(puVar2 + 0x88);
        goto LAB_000576db;
      }
    } while (r3[iVar6] == prodp_00[iVar6]);
    pcVar8 = *(code **)(puVar2 + 0x88);
    if (prodp_00[iVar6] < r3[iVar6]) {
LAB_000576db:
      (*pcVar8)(r3,r3,prodp_00,iVar9);
    }
    else {
      (*pcVar8)(r3,prodp_00,r3,iVar9);
      local_60 = local_60 ^ 1;
    }
    if (mn <= iVar7) goto LAB_000576f3;
LAB_0005798d:
    __gmpn_mul(prodp,m1,mn,tp,iVar7);
    mVar4 = (**(code **)puVar2)(vp,m3,m1,mn);
    *pmVar1 = mVar4;
  }
  else {
    do {
      iVar3 = iVar3 + -1;
      if (iVar3 < 0) {
        pcVar8 = *(code **)(puVar2 + 0x88);
        goto LAB_0005768b;
      }
    } while (r3[iVar3] == prodp[iVar3]);
    pcVar8 = *(code **)(puVar2 + 0x88);
    if (prodp[iVar3] < r3[iVar3]) {
LAB_0005768b:
      (*pcVar8)(r2,r3,prodp,iVar9);
      local_5c = local_60;
    }
    else {
      (*pcVar8)(r2,prodp,r3,iVar9);
      local_5c = local_60 ^ 1;
    }
    if (local_60 != local_2c) goto LAB_000576cd;
LAB_00057971:
    (**(code **)puVar2)(r3,r3,prodp_00,iVar9);
    if (iVar7 < mn) goto LAB_0005798d;
LAB_000576f3:
    __gmpn_mul(prodp,tp,iVar7,m1,mn);
    mVar4 = (**(code **)puVar2)(vp,m3,m1,mn);
    *pmVar1 = mVar4;
    if (mn < iVar7) {
      __gmpn_mul(prodp_00,r1,iVar7,vp,un);
      goto LAB_00057755;
    }
  }
  __gmpn_mul(prodp_00,vp,un,r1,iVar7);
LAB_00057755:
  iVar7 = iVar9;
  if (local_20 == local_60) {
    (**(code **)puVar2)(r1,r3,prodp,iVar9);
  }
  else {
    do {
      iVar7 = iVar7 + -1;
      if (iVar7 < 0) {
        pcVar8 = *(code **)(puVar2 + 0x88);
        goto LAB_0005778b;
      }
    } while (r3[iVar7] == prodp[iVar7]);
    pcVar8 = *(code **)(puVar2 + 0x88);
    if (prodp[iVar7] < r3[iVar7]) {
LAB_0005778b:
      (*pcVar8)(r1,r3,prodp,iVar9);
    }
    else {
      (*pcVar8)(r1,prodp,r3,iVar9);
    }
  }
  if (local_60 == 0) {
    (**(code **)(puVar2 + 0x88))(r3,prodp_00,r3,iVar9);
  }
  else {
    (**(code **)puVar2)(r3,prodp_00,r3,iVar9);
  }
  if (local_5c != 0) {
                    /* WARNING: Could not recover jumptable at 0x000577f2. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    (**(code **)puVar2)();
    return;
  }
                    /* WARNING: Could not recover jumptable at 0x000579fd. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(puVar2 + 0x88))();
  return;
}



void __regparm2
__gmpn_matrix22_mul_strassen
          (undefined4 param_1,undefined4 param_2,int param_3,int param_4,int param_5,int param_6,
          int param_7,int param_8,int param_9,int param_10,int param_11,int param_12)

{
  int iVar1;
  int *piVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  undefined4 uVar9;
  int iVar10;
  int iVar11;
  int iVar12;
  code *pcVar13;
  int iVar14;
  int unaff_EBX;
  int unaff_retaddr;
  undefined4 *local_80;
  uint local_64;
  uint local_60;
  int *local_5c;
  uint local_40;
  int *local_3c;
  int local_34;
  uint local_30;
  uint local_24;
  
  entry(param_2,0x572a9);
  iVar12 = param_6 + 1;
  iVar1 = param_11 + 1;
  local_34 = iVar12 * 4;
  iVar5 = param_12 + local_34;
  iVar6 = iVar5 + iVar1 * 4;
  iVar11 = param_6 + param_11 + 1;
  iVar10 = iVar11 * 4;
  iVar14 = iVar6 + iVar10;
  iVar7 = param_6;
  if (param_6 < param_11) {
    __gmpn_mul(iVar6,param_9,param_11,param_3,param_6);
  }
  else {
    __gmpn_mul(iVar6,param_3,param_6,param_9,param_11);
  }
  do {
    iVar7 = iVar7 + -1;
    iVar8 = param_6;
    if (iVar7 < 0) {
      local_80 = *(undefined4 **)(unaff_EBX + 0x46aeb);
      pcVar13 = (code *)local_80[0x22];
      goto LAB_000573b5;
    }
    uVar3 = *(uint *)(param_4 + iVar7 * 4);
    uVar4 = *(uint *)(param_5 + iVar7 * 4);
  } while (uVar4 == uVar3);
  local_80 = *(undefined4 **)(unaff_EBX + 0x46aeb);
  pcVar13 = (code *)local_80[0x22];
  if (uVar3 < uVar4) {
LAB_000573b5:
    (*pcVar13)(param_5,param_5,param_4,param_6);
    local_3c = (int *)(param_3 + local_34 + -4);
    iVar7 = (*(code *)*local_80)(param_3,param_3,param_5,param_6);
    *local_3c = iVar7;
    local_5c = (int *)(param_12 + local_34 + -4);
    if (iVar7 == 0) {
      local_30 = 1;
      goto LAB_00057b2c;
    }
    iVar8 = (*(code *)local_80[0x22])(param_12,param_3,unaff_retaddr,param_6);
    *local_5c = iVar7 - iVar8;
    local_30 = 1;
    local_40 = 0;
    local_24 = 1;
  }
  else {
    (*pcVar13)(param_5,param_4,param_5,param_6);
    iVar7 = param_6;
    do {
      iVar7 = iVar7 + -1;
      if (iVar7 < 0) {
        local_5c = (int *)(param_12 + local_34 + -4);
        local_3c = (int *)(param_3 + local_34 + -4);
        pcVar13 = (code *)local_80[0x22];
        goto LAB_00057ae8;
      }
      uVar3 = *(uint *)(param_5 + iVar7 * 4);
      uVar4 = *(uint *)(param_3 + iVar7 * 4);
    } while (uVar4 == uVar3);
    local_5c = (int *)(param_12 + local_34 + -4);
    local_3c = (int *)(param_3 + local_34 + -4);
    pcVar13 = (code *)local_80[0x22];
    if (uVar3 < uVar4) {
LAB_00057ae8:
      (*pcVar13)(param_3,param_3,param_5,param_6);
      *local_3c = 0;
      local_30 = 0;
LAB_00057b2c:
      do {
        iVar8 = iVar8 + -1;
        if (iVar8 < 0) {
          pcVar13 = (code *)local_80[0x22];
          goto LAB_00057b3e;
        }
        uVar3 = *(uint *)(param_3 + iVar8 * 4);
        uVar4 = *(uint *)(unaff_retaddr + iVar8 * 4);
      } while (uVar4 == uVar3);
      pcVar13 = (code *)local_80[0x22];
      if (uVar3 < uVar4) {
LAB_00057b3e:
        (*pcVar13)(param_12,unaff_retaddr,param_3,param_6);
        local_24 = 0;
      }
      else {
        (*pcVar13)(param_12,param_3,unaff_retaddr,param_6);
        local_24 = 1;
      }
      local_40 = 0;
      *local_5c = 0;
    }
    else {
      (*pcVar13)(param_3,param_5,param_3,param_6);
      *local_3c = 0;
      iVar7 = (*(code *)*local_80)(param_12,param_3,unaff_retaddr,param_6);
      *local_5c = iVar7;
      local_30 = 0;
      local_40 = 1;
      local_24 = 0;
    }
  }
  local_34 = local_34 + -4;
  if (param_6 < param_11) {
    __gmpn_mul(iVar14,param_7,param_11,unaff_retaddr,param_6);
  }
  else {
    __gmpn_mul(iVar14,unaff_retaddr,param_6,param_7,param_11);
  }
  uVar9 = (*(code *)*local_80)(unaff_retaddr,iVar6,iVar14,param_6 + param_11);
  *(undefined4 *)(unaff_retaddr + -4 + iVar10) = uVar9;
  iVar7 = param_11;
  do {
    iVar7 = iVar7 + -1;
    if (iVar7 < 0) {
      pcVar13 = (code *)local_80[0x22];
      goto LAB_000574ba;
    }
    uVar3 = *(uint *)(param_9 + iVar7 * 4);
    uVar4 = *(uint *)(param_10 + iVar7 * 4);
  } while (uVar4 == uVar3);
  pcVar13 = (code *)local_80[0x22];
  if (uVar3 < uVar4) {
LAB_000574ba:
    (*pcVar13)(iVar5,param_10,param_9,param_11);
    local_60 = 0;
  }
  else {
    (*pcVar13)(iVar5,param_9,param_10,param_11);
    local_30 = local_30 ^ 1;
    local_60 = 1;
  }
  if (param_6 < param_11) {
    __gmpn_mul(iVar14,iVar5,param_11,param_5,param_6);
  }
  else {
    __gmpn_mul(iVar14,param_5,param_6,iVar5,param_11);
  }
  *(undefined4 *)(iVar14 + -4 + iVar10) = 0;
  piVar2 = (int *)(iVar5 + -4 + iVar1 * 4);
  iVar7 = param_11;
  if (local_60 == 0) {
    iVar7 = (*(code *)*local_80)(iVar5,iVar5,param_8,param_11);
    *piVar2 = iVar7;
    if (iVar7 == 0) goto LAB_00057a50;
    if (param_11 < param_6) {
      __gmpn_mul(param_5,param_3,param_6,iVar5,iVar1);
    }
    else {
      __gmpn_mul(param_5,iVar5,iVar1,param_3,param_6);
    }
    if (*(int *)(param_3 + local_34) != 0) {
      (*(code *)*local_80)(local_34 + param_5,local_34 + param_5,iVar5,iVar1);
    }
  }
  else {
    do {
      iVar7 = iVar7 + -1;
      if (iVar7 < 0) {
        pcVar13 = (code *)local_80[0x22];
        goto LAB_00057a2e;
      }
      uVar3 = *(uint *)(iVar5 + iVar7 * 4);
      uVar4 = *(uint *)(param_8 + iVar7 * 4);
    } while (uVar4 == uVar3);
    pcVar13 = (code *)local_80[0x22];
    if (uVar3 < uVar4) {
LAB_00057a2e:
      (*pcVar13)(iVar5,param_8,iVar5,param_11);
      local_60 = 0;
    }
    else {
      (*pcVar13)(iVar5,iVar5,param_8,param_11);
    }
    *piVar2 = 0;
LAB_00057a50:
    if (iVar12 < param_11) {
      __gmpn_mul(param_5,iVar5,param_11,param_3,iVar12);
    }
    else {
      __gmpn_mul(param_5,param_3,iVar12,iVar5,param_11);
    }
  }
  *(undefined4 *)(iVar6 + -4 + iVar10) = 0;
  iVar10 = iVar11;
  if (local_40 == local_60) {
    (*(code *)*local_80)(param_5,param_5,iVar6,iVar11);
    local_64 = 0;
    if (local_60 == 0) goto LAB_000578c7;
LAB_000575ee:
    iVar11 = (*(code *)*local_80)(iVar5,iVar5,param_7,param_11);
    *piVar2 = iVar11;
LAB_00057608:
    if (param_6 <= param_11) goto LAB_000578fc;
LAB_00057610:
    __gmpn_mul(iVar6,param_4,param_6,iVar5,iVar1);
    if (local_40 != 0) goto LAB_00057638;
LAB_00057924:
    iVar11 = (*(code *)*local_80)(param_3,param_3,param_4,param_6);
    *local_3c = *local_3c + iVar11;
  }
  else {
    do {
      iVar10 = iVar10 + -1;
      if (iVar10 < 0) {
        pcVar13 = (code *)local_80[0x22];
        goto LAB_000575cb;
      }
      uVar3 = *(uint *)(param_5 + iVar10 * 4);
      uVar4 = *(uint *)(iVar6 + iVar10 * 4);
    } while (uVar4 == uVar3);
    pcVar13 = (code *)local_80[0x22];
    if (uVar3 < uVar4) {
LAB_000575cb:
      (*pcVar13)(param_5,iVar6,param_5,iVar11);
      local_64 = 0;
    }
    else {
      (*pcVar13)(param_5,param_5,iVar6,iVar11);
      local_64 = 1;
    }
    if (local_60 != 0) goto LAB_000575ee;
LAB_000578c7:
    pcVar13 = (code *)local_80[0x22];
    iVar11 = param_11;
    if (*piVar2 == 0) {
      do {
        iVar11 = iVar11 + -1;
        if (iVar11 < 0) goto LAB_00057cd1;
        uVar3 = *(uint *)(param_7 + iVar11 * 4);
        uVar4 = *(uint *)(iVar5 + iVar11 * 4);
      } while (uVar4 == uVar3);
      if (uVar3 < uVar4) {
LAB_00057cd1:
        (*pcVar13)(iVar5,iVar5,param_7,param_11);
      }
      else {
        (*pcVar13)(iVar5,param_7,iVar5,param_11);
        local_60 = 1;
      }
      goto LAB_00057608;
    }
    iVar11 = (*pcVar13)(iVar5,iVar5,param_7,param_11);
    *piVar2 = *piVar2 - iVar11;
    if (param_11 < param_6) goto LAB_00057610;
LAB_000578fc:
    __gmpn_mul(iVar6,iVar5,iVar1,param_4,param_6);
    if (local_40 == 0) goto LAB_00057924;
LAB_00057638:
    (*(code *)local_80[0x22])(param_3,param_4,param_3,param_6);
  }
  iVar11 = param_11 + iVar12;
  iVar7 = iVar11;
  iVar10 = iVar11;
  if (local_64 == local_60) {
    (*(code *)*local_80)(param_4,param_5,iVar6,iVar11);
    local_60 = local_64;
    if (local_64 == local_30) goto LAB_00057971;
LAB_000576cd:
    do {
      iVar10 = iVar10 + -1;
      if (iVar10 < 0) {
        pcVar13 = (code *)local_80[0x22];
        goto LAB_000576db;
      }
      uVar3 = *(uint *)(iVar14 + iVar10 * 4);
      uVar4 = *(uint *)(param_5 + iVar10 * 4);
    } while (uVar4 == uVar3);
    pcVar13 = (code *)local_80[0x22];
    if (uVar3 < uVar4) {
LAB_000576db:
      (*pcVar13)(param_5,param_5,iVar14,iVar11);
    }
    else {
      (*pcVar13)(param_5,iVar14,param_5,iVar11);
      local_64 = local_64 ^ 1;
    }
    if (param_11 <= iVar12) goto LAB_000576f3;
LAB_0005798d:
    __gmpn_mul(iVar6,param_8,param_11,param_12,iVar12);
    iVar10 = (*(code *)*local_80)(iVar5,param_10,param_8,param_11);
    *piVar2 = iVar10;
  }
  else {
    do {
      iVar7 = iVar7 + -1;
      if (iVar7 < 0) {
        pcVar13 = (code *)local_80[0x22];
        goto LAB_0005768b;
      }
      uVar3 = *(uint *)(iVar6 + iVar7 * 4);
      uVar4 = *(uint *)(param_5 + iVar7 * 4);
    } while (uVar4 == uVar3);
    pcVar13 = (code *)local_80[0x22];
    if (uVar3 < uVar4) {
LAB_0005768b:
      (*pcVar13)(param_4,param_5,iVar6,iVar11);
      local_60 = local_64;
    }
    else {
      (*pcVar13)(param_4,iVar6,param_5,iVar11);
      local_60 = local_64 ^ 1;
    }
    if (local_64 != local_30) goto LAB_000576cd;
LAB_00057971:
    (*(code *)*local_80)(param_5,param_5,iVar14,iVar11);
    if (iVar12 < param_11) goto LAB_0005798d;
LAB_000576f3:
    __gmpn_mul(iVar6,param_12,iVar12,param_8,param_11);
    iVar10 = (*(code *)*local_80)(iVar5,param_10,param_8,param_11);
    *piVar2 = iVar10;
    if (param_11 < iVar12) {
      __gmpn_mul(iVar14,param_3,iVar12,iVar5,iVar1);
      goto LAB_00057755;
    }
  }
  __gmpn_mul(iVar14,iVar5,iVar1,param_3,iVar12);
LAB_00057755:
  iVar12 = iVar11;
  if (local_24 == local_64) {
    (*(code *)*local_80)(param_3,param_5,iVar6,iVar11);
  }
  else {
    do {
      iVar12 = iVar12 + -1;
      if (iVar12 < 0) {
        pcVar13 = (code *)local_80[0x22];
        goto LAB_0005778b;
      }
      uVar3 = *(uint *)(iVar6 + iVar12 * 4);
      uVar4 = *(uint *)(param_5 + iVar12 * 4);
    } while (uVar4 == uVar3);
    pcVar13 = (code *)local_80[0x22];
    if (uVar3 < uVar4) {
LAB_0005778b:
      (*pcVar13)(param_3,param_5,iVar6,iVar11);
    }
    else {
      (*pcVar13)(param_3,iVar6,param_5,iVar11);
    }
  }
  if (local_64 == 0) {
    (*(code *)local_80[0x22])(param_5,iVar14,param_5,iVar11);
  }
  else {
    (*(code *)*local_80)(param_5,iVar14,param_5,iVar11);
  }
  if (local_60 != 0) {
                    /* WARNING: Could not recover jumptable at 0x000577f2. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    (*(code *)*local_80)();
    return;
  }
                    /* WARNING: Could not recover jumptable at 0x000579fd. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*(code *)local_80[0x22])();
  return;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x0001c340
ADD EBX,0x46d57
SUB ESP,0x6c
MOV ESI,dword ptr [ESP + 0x88]
MOV EAX,dword ptr [ESP + 0x80]
MOV ECX,dword ptr [ESP + 0x98]
MOV EDI,dword ptr [ESP + 0x90]
MOV dword ptr [ESP + 0x14],ESI
MOV ESI,dword ptr [ESP + 0x94]
MOV dword ptr [ESP + 0x1c],EAX
MOV EAX,dword ptr [ESP + 0x84]
MOV dword ptr [ESP + 0x3c],ESI
MOV ESI,dword ptr [ESP + 0x9c]
MOV dword ptr [ESP + 0x28],ECX
MOV ECX,dword ptr [ESP + 0xa0]
MOV dword ptr [ESP + 0x20],ESI
MOV ESI,dword ptr [ESP + 0xa4]
MOV dword ptr [ESP + 0x8],EAX
MOV EAX,dword ptr [ESP + 0xa8]
MOV dword ptr [ESP + 0x34],ECX
LEA ECX,[EDI + 0x1]
LEA EDX,[ESI + 0x1]
MOV EBP,dword ptr [ESP + 0x8c]
MOV dword ptr [ESP + 0x18],ECX
SHL ECX,0x2
MOV dword ptr [ESP + 0x2c],EAX
ADD EAX,ECX
MOV dword ptr [ESP + 0x24],ECX
LEA ECX,[EDX*0x4 + 0x0]
MOV dword ptr [ESP + 0x38],EDX
LEA EDX,[EDI + ESI*0x1]
MOV dword ptr [ESP + 0x4],EAX
ADD EAX,ECX
MOV dword ptr [ESP + 0x54],ECX
LEA ECX,[EDX + 0x1]
MOV dword ptr [ESP + 0x58],EDX
LEA EDX,[ECX*0x4 + 0x0]
MOV dword ptr [ESP + 0x48],ECX
MOV ECX,EAX
ADD ECX,EDX
MOV dword ptr [ESP + 0xc],EAX
MOV dword ptr [ESP + 0x30],EDX
MOV dword ptr [ESP + 0x10],ECX
CMP EDI,ESI
JL 0x00057820
SUB ESP,0xc
PUSH ESI
PUSH dword ptr [ESP + 0x30]
PUSH EDI
PUSH dword ptr [ESP + 0x20]
PUSH EAX
CALL 0x0001bbe0
ADD ESP,0x20
MOV EAX,EDI
JMP 0x000573a1
MOV ECX,dword ptr [ESP + 0x14]
MOV EDX,dword ptr [ECX + EAX*0x4]
CMP dword ptr [EBP + EAX*0x4],EDX
JNZ 0x00057a80
SUB EAX,0x1
JNS 0x00057390
MOV EAX,dword ptr [EBX + 0xfffffd94]
MOV dword ptr [ESP],EAX
MOV EAX,dword ptr [EAX + 0x88]
PUSH EDI
PUSH dword ptr [ESP + 0x18]
PUSH EBP
PUSH EBP
CALL EAX
MOV EAX,dword ptr [ESP + 0x34]
SUB EAX,0x4
MOV EDX,EAX
MOV EAX,dword ptr [ESP + 0x18]
MOV dword ptr [ESP + 0x5c],EDX
MOV ECX,EAX
ADD ECX,EDX
MOV dword ptr [ESP + 0x54],ECX
PUSH EDI
PUSH EBP
PUSH EAX
PUSH EAX
MOV EAX,dword ptr [ESP + 0x20]
CALL dword ptr [EAX]
MOV ECX,dword ptr [ESP + 0x64]
MOV dword ptr [ECX],EAX
MOV ECX,dword ptr [ESP + 0x4c]
ADD ECX,dword ptr [ESP + 0x6c]
MOV dword ptr [ESP + 0x44],ECX
ADD ESP,0x20
TEST EAX,EAX
JZ 0x00057e18
MOV dword ptr [ESP + 0x40],EAX
PUSH EDI
PUSH dword ptr [ESP + 0x20]
PUSH dword ptr [ESP + 0x10]
PUSH dword ptr [ESP + 0x38]
MOV EAX,dword ptr [ESP + 0x10]
CALL dword ptr [EAX + 0x88]
MOV EDX,dword ptr [ESP + 0x50]
SUB EDX,EAX
MOV EAX,dword ptr [ESP + 0x34]
ADD ESP,0x10
MOV dword ptr [EAX],EDX
MOV dword ptr [ESP + 0x50],0x1
MOV dword ptr [ESP + 0x40],0x0
MOV dword ptr [ESP + 0x5c],0x1
CMP EDI,ESI
JGE 0x000577f8
SUB ESP,0xc
PUSH EDI
PUSH dword ptr [ESP + 0x2c]
PUSH ESI
PUSH dword ptr [ESP + 0x54]
PUSH dword ptr [ESP + 0x2c]
CALL 0x0001bbe0
ADD ESP,0x20
MOV EAX,dword ptr [ESP + 0x1c]
MOV EDX,dword ptr [ESP + 0x30]
LEA EDX,[EAX + EDX*0x1 + -0x4]
MOV dword ptr [ESP + 0x1c],EDX
PUSH dword ptr [ESP + 0x58]
PUSH dword ptr [ESP + 0x14]
PUSH dword ptr [ESP + 0x14]
PUSH EAX
MOV EAX,dword ptr [ESP + 0x10]
CALL dword ptr [EAX]
MOV EDX,dword ptr [ESP + 0x2c]
ADD ESP,0x10
MOV dword ptr [EDX],EAX
MOV EAX,ESI
JMP 0x000574ac
MOV EDX,dword ptr [ESP + 0x20]
MOV ECX,dword ptr [ESP + 0x34]
MOV EDX,dword ptr [EDX + EAX*0x4]
CMP dword ptr [ECX + EAX*0x4],EDX
JNZ 0x00057b70
SUB EAX,0x1
JNS 0x00057498
MOV EAX,dword ptr [ESP]
MOV EAX,dword ptr [EAX + 0x88]
PUSH ESI
PUSH dword ptr [ESP + 0x24]
PUSH dword ptr [ESP + 0x3c]
PUSH dword ptr [ESP + 0x10]
CALL EAX
ADD ESP,0x10
MOV dword ptr [ESP + 0x20],0x0
CMP EDI,ESI
JGE 0x00057840
SUB ESP,0xc
PUSH EDI
PUSH EBP
PUSH ESI
PUSH dword ptr [ESP + 0x1c]
PUSH dword ptr [ESP + 0x2c]
CALL 0x0001bbe0
ADD ESP,0x20
MOV EAX,dword ptr [ESP + 0x10]
MOV ECX,dword ptr [ESP + 0x30]
MOV dword ptr [EAX + ECX*0x1 + -0x4],0x0
MOV ECX,dword ptr [ESP + 0x54]
MOV EAX,dword ptr [ESP + 0x4]
LEA EAX,[EAX + ECX*0x1 + -0x4]
MOV ECX,dword ptr [ESP + 0x20]
MOV dword ptr [ESP + 0x24],EAX
TEST ECX,ECX
JNZ 0x00057a00
PUSH ESI
PUSH dword ptr [ESP + 0x2c]
MOV EAX,dword ptr [ESP + 0xc]
PUSH EAX
MOV dword ptr [ESP + 0x10],EAX
PUSH EAX
MOV EDX,dword ptr [ESP + 0x10]
CALL dword ptr [EDX]
MOV EDX,dword ptr [ESP + 0x34]
ADD ESP,0x10
MOV dword ptr [EDX],EAX
TEST EAX,EAX
JZ 0x00057a50
CMP EDI,ESI
JLE 0x00057ba8
SUB ESP,0xc
PUSH dword ptr [ESP + 0x44]
PUSH dword ptr [ESP + 0x14]
PUSH EDI
PUSH dword ptr [ESP + 0x20]
PUSH EBP
CALL 0x0001bbe0
ADD ESP,0x20
MOV EDX,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [ESP + 0x4c]
MOV EDX,dword ptr [EDX + EAX*0x1]
TEST EDX,EDX
JZ 0x00057589
ADD EAX,EBP
PUSH dword ptr [ESP + 0x38]
PUSH dword ptr [ESP + 0x8]
PUSH EAX
PUSH EAX
MOV EAX,dword ptr [ESP + 0x10]
CALL dword ptr [EAX]
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0xc]
MOV EDX,dword ptr [ESP + 0x30]
MOV ECX,dword ptr [ESP + 0x20]
MOV dword ptr [EAX + EDX*0x1 + -0x4],0x0
CMP dword ptr [ESP + 0x40],ECX
JZ 0x000578a0
MOV EDX,EAX
MOV EAX,dword ptr [ESP + 0x48]
JMP 0x000575bd
MOV ECX,dword ptr [EBP + EAX*0x4]
CMP dword ptr [EDX + EAX*0x4],ECX
JNZ 0x00057bf0
SUB EAX,0x1
JNS 0x000575b0
MOV EAX,dword ptr [ESP]
MOV EAX,dword ptr [EAX + 0x88]
PUSH dword ptr [ESP + 0x48]
PUSH EBP
PUSH dword ptr [ESP + 0x14]
PUSH EBP
CALL EAX
ADD ESP,0x10
MOV dword ptr [ESP + 0x1c],0x0
MOV EAX,dword ptr [ESP + 0x20]
TEST EAX,EAX
JZ 0x000578c7
PUSH ESI
PUSH dword ptr [ESP + 0x40]
MOV EAX,dword ptr [ESP + 0xc]
PUSH EAX
PUSH EAX
MOV EAX,dword ptr [ESP + 0x10]
CALL dword ptr [EAX]
MOV EDX,dword ptr [ESP + 0x34]
ADD ESP,0x10
MOV dword ptr [EDX],EAX
CMP EDI,ESI
JLE 0x000578fc
SUB ESP,0xc
PUSH dword ptr [ESP + 0x44]
PUSH dword ptr [ESP + 0x14]
PUSH EDI
PUSH dword ptr [ESP + 0x2c]
PUSH dword ptr [ESP + 0x28]
CALL 0x0001bbe0
ADD ESP,0x20
MOV ECX,dword ptr [ESP + 0x40]
TEST ECX,ECX
JZ 0x00057924
PUSH EDI
MOV EAX,dword ptr [ESP + 0xc]
PUSH EAX
PUSH dword ptr [ESP + 0x1c]
PUSH EAX
MOV EAX,dword ptr [ESP + 0x10]
CALL dword ptr [EAX + 0x88]
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x18]
MOV EDX,dword ptr [ESP + 0x20]
LEA EDI,[ESI + EAX*0x1]
CMP dword ptr [ESP + 0x1c],EDX
JZ 0x00057948
MOV EAX,EDI
MOV EDX,dword ptr [ESP + 0xc]
JMP 0x0005767d
MOV ECX,dword ptr [EDX + EAX*0x4]
CMP dword ptr [EBP + EAX*0x4],ECX
JNZ 0x00057c70
SUB EAX,0x1
JNS 0x00057670
MOV EAX,dword ptr [ESP]
MOV EAX,dword ptr [EAX + 0x88]
PUSH EDI
PUSH dword ptr [ESP + 0x10]
PUSH EBP
PUSH dword ptr [ESP + 0x20]
CALL EAX
MOV EAX,dword ptr [ESP + 0x2c]
ADD ESP,0x10
MOV dword ptr [ESP + 0x20],EAX
MOV EDX,dword ptr [ESP + 0x50]
CMP dword ptr [ESP + 0x1c],EDX
JZ 0x00057971
MOV EAX,EDI
MOV EDX,dword ptr [ESP + 0x10]
JMP 0x000576cd
MOV ECX,dword ptr [EDX + EAX*0x4]
CMP dword ptr [EBP + EAX*0x4],ECX
JNZ 0x00057c20
SUB EAX,0x1
JNS 0x000576c0
MOV EAX,dword ptr [ESP]
MOV EAX,dword ptr [EAX + 0x88]
PUSH EDI
PUSH dword ptr [ESP + 0x14]
PUSH EBP
PUSH EBP
CALL EAX
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x18]
CMP ESI,EAX
JG 0x0005798d
SUB ESP,0xc
PUSH ESI
PUSH dword ptr [ESP + 0x38]
MOV dword ptr [ESP + 0x2c],EAX
PUSH EAX
PUSH dword ptr [ESP + 0x44]
PUSH dword ptr [ESP + 0x28]
CALL 0x0001bbe0
ADD ESP,0x20
PUSH ESI
PUSH dword ptr [ESP + 0x2c]
PUSH dword ptr [ESP + 0x3c]
PUSH dword ptr [ESP + 0x10]
MOV ECX,dword ptr [ESP + 0x10]
CALL dword ptr [ECX]
MOV EDX,dword ptr [ESP + 0x34]
ADD ESP,0x10
MOV dword ptr [EDX],EAX
CMP ESI,dword ptr [ESP + 0x18]
JGE 0x000579c5
SUB ESP,0xc
PUSH dword ptr [ESP + 0x44]
PUSH dword ptr [ESP + 0x14]
PUSH dword ptr [ESP + 0x2c]
PUSH dword ptr [ESP + 0x20]
PUSH dword ptr [ESP + 0x2c]
CALL 0x0001bbe0
ADD ESP,0x20
MOV EBX,dword ptr [ESP + 0x1c]
CMP dword ptr [ESP + 0x5c],EBX
JZ 0x00057860
MOV EAX,EDI
MOV EDX,dword ptr [ESP + 0xc]
JMP 0x0005777d
MOV EBX,dword ptr [EDX + EAX*0x4]
CMP dword ptr [EBP + EAX*0x4],EBX
JNZ 0x00057c48
SUB EAX,0x1
JNS 0x00057770
MOV EAX,dword ptr [ESP]
MOV EAX,dword ptr [EAX + 0x88]
PUSH EDI
PUSH dword ptr [ESP + 0x10]
PUSH EBP
PUSH dword ptr [ESP + 0x14]
CALL EAX
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x1c]
TEST EDX,EDX
JZ 0x0005787f
PUSH EDI
PUSH EBP
PUSH dword ptr [ESP + 0x18]
PUSH EBP
MOV EAX,dword ptr [ESP + 0x10]
CALL dword ptr [EAX]
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x20]
MOV EBX,dword ptr [ESP + 0x10]
MOV dword ptr [ESP + 0x8c],EDI
TEST EAX,EAX
MOV EAX,dword ptr [ESP + 0x14]
MOV dword ptr [ESP + 0x84],EBX
MOV dword ptr [ESP + 0x88],EAX
MOV dword ptr [ESP + 0x80],EAX
MOV EAX,dword ptr [ESP]
JZ 0x000579f0
MOV EAX,dword ptr [EAX]
ADD ESP,0x6c
POP EBX
POP ESI
POP EDI
POP EBP
JMP EAX
SUB ESP,0xc
PUSH ESI
PUSH dword ptr [ESP + 0x4c]
PUSH EDI
PUSH dword ptr [ESP + 0x34]
PUSH dword ptr [ESP + 0x2c]
CALL 0x0001bbe0
ADD ESP,0x20
JMP 0x00057461
SUB ESP,0xc
PUSH EDI
PUSH dword ptr [ESP + 0x18]
PUSH ESI
PUSH dword ptr [ESP + 0x38]
PUSH dword ptr [ESP + 0x28]
CALL 0x0001bbe0
ADD ESP,0x20
JMP 0x0005738a
SUB ESP,0xc
PUSH ESI
PUSH dword ptr [ESP + 0x14]
PUSH EDI
PUSH EBP
PUSH dword ptr [ESP + 0x2c]
CALL 0x0001bbe0
ADD ESP,0x20
JMP 0x000574f2
PUSH EDI
PUSH dword ptr [ESP + 0x10]
PUSH EBP
PUSH dword ptr [ESP + 0x14]
MOV EAX,dword ptr [ESP + 0x10]
CALL dword ptr [EAX]
MOV EDX,dword ptr [ESP + 0x2c]
ADD ESP,0x10
TEST EDX,EDX
JNZ 0x000577a6
PUSH EDI
PUSH EBP
PUSH dword ptr [ESP + 0x18]
PUSH EBP
MOV EAX,dword ptr [ESP + 0x10]
CALL dword ptr [EAX + 0x88]
ADD ESP,0x10
JMP 0x000577b6
PUSH dword ptr [ESP + 0x48]
PUSH dword ptr [ESP + 0x10]
PUSH EBP
PUSH EBP
MOV EAX,dword ptr [ESP + 0x10]
CALL dword ptr [EAX]
MOV EAX,dword ptr [ESP + 0x30]
ADD ESP,0x10
MOV dword ptr [ESP + 0x1c],0x0
TEST EAX,EAX
JNZ 0x000575ee
MOV EAX,dword ptr [ESP]
MOV EDX,dword ptr [EAX + 0x88]
MOV EAX,dword ptr [ESP + 0x24]
MOV EAX,dword ptr [EAX]
TEST EAX,EAX
JZ 0x00057ca0
PUSH ESI
PUSH dword ptr [ESP + 0x40]
MOV ECX,dword ptr [ESP + 0xc]
PUSH ECX
PUSH ECX
CALL EDX
MOV EDX,dword ptr [ESP + 0x34]
ADD ESP,0x10
SUB dword ptr [EDX],EAX
CMP EDI,ESI
JG 0x00057610
SUB ESP,0xc
PUSH EDI
PUSH dword ptr [ESP + 0x24]
PUSH dword ptr [ESP + 0x4c]
PUSH dword ptr [ESP + 0x1c]
PUSH dword ptr [ESP + 0x28]
CALL 0x0001bbe0
ADD ESP,0x20
MOV ECX,dword ptr [ESP + 0x40]
TEST ECX,ECX
JNZ 0x00057638
PUSH EDI
PUSH dword ptr [ESP + 0x18]
MOV EAX,dword ptr [ESP + 0x10]
PUSH EAX
PUSH EAX
MOV EAX,dword ptr [ESP + 0x10]
CALL dword ptr [EAX]
MOV EDI,dword ptr [ESP + 0x54]
ADD ESP,0x10
ADD dword ptr [EDI],EAX
JMP 0x00057650
PUSH EDI
PUSH dword ptr [ESP + 0x10]
PUSH EBP
PUSH dword ptr [ESP + 0x20]
MOV EAX,dword ptr [ESP + 0x10]
CALL dword ptr [EAX]
MOV EAX,dword ptr [ESP + 0x2c]
MOV EDX,dword ptr [ESP + 0x60]
ADD ESP,0x10
MOV dword ptr [ESP + 0x20],EAX
CMP dword ptr [ESP + 0x1c],EDX
JNZ 0x000576b0
PUSH EDI
PUSH dword ptr [ESP + 0x14]
PUSH EBP
PUSH EBP
MOV EAX,dword ptr [ESP + 0x10]
CALL dword ptr [EAX]
MOV EAX,dword ptr [ESP + 0x28]
ADD ESP,0x10
CMP ESI,EAX
JLE 0x000576f3
SUB ESP,0xc
PUSH dword ptr [ESP + 0x24]
PUSH dword ptr [ESP + 0x3c]
PUSH ESI
PUSH dword ptr [ESP + 0x40]
PUSH dword ptr [ESP + 0x28]
CALL 0x0001bbe0
ADD ESP,0x20
PUSH ESI
PUSH dword ptr [ESP + 0x2c]
PUSH dword ptr [ESP + 0x3c]
PUSH dword ptr [ESP + 0x10]
MOV EAX,dword ptr [ESP + 0x10]
CALL dword ptr [EAX]
MOV ESI,dword ptr [ESP + 0x34]
ADD ESP,0x10
MOV dword ptr [ESI],EAX
SUB ESP,0xc
PUSH dword ptr [ESP + 0x24]
PUSH dword ptr [ESP + 0x18]
PUSH dword ptr [ESP + 0x4c]
PUSH dword ptr [ESP + 0x1c]
PUSH dword ptr [ESP + 0x2c]
CALL 0x0001bbe0
ADD ESP,0x20
JMP 0x00057755
MOV EAX,dword ptr [EAX + 0x88]
ADD ESP,0x6c
POP EBX
POP ESI
POP EDI
POP EBP
JMP EAX
MOV EAX,ESI
MOV EDX,dword ptr [ESP + 0x4]
MOV ECX,dword ptr [ESP + 0x28]
MOV dword ptr [ESP + 0x1c],ESI
JMP 0x00057a1c
MOV ESI,dword ptr [EDX + EAX*0x4]
CMP dword ptr [ECX + EAX*0x4],ESI
JNZ 0x00057cf0
SUB EAX,0x1
JNS 0x00057a10
MOV EAX,dword ptr [ESP]
MOV ESI,dword ptr [ESP + 0x1c]
MOV EAX,dword ptr [EAX + 0x88]
PUSH ESI
MOV EDX,dword ptr [ESP + 0x8]
PUSH EDX
PUSH dword ptr [ESP + 0x30]
PUSH EDX
CALL EAX
ADD ESP,0x10
MOV dword ptr [ESP + 0x20],0x0
MOV EAX,dword ptr [ESP + 0x24]
MOV dword ptr [EAX],0x0
MOV EAX,dword ptr [ESP + 0x18]
CMP EAX,ESI
JL 0x00057bd0
SUB ESP,0xc
PUSH ESI
PUSH dword ptr [ESP + 0x14]
PUSH EAX
PUSH dword ptr [ESP + 0x20]
PUSH EBP
CALL 0x0001bbe0
ADD ESP,0x20
JMP 0x00057589
MOV EAX,dword ptr [EBX + 0xfffffd94]
MOV dword ptr [ESP],EAX
MOV EAX,dword ptr [EAX + 0x88]
JA 0x000573b5
PUSH EDI
PUSH EBP
PUSH dword ptr [ESP + 0x1c]
PUSH EBP
CALL EAX
MOV EAX,EDI
ADD ESP,0x10
JMP 0x00057abb
MOV ECX,dword ptr [ESP + 0x8]
MOV EDX,dword ptr [EBP + EAX*0x4]
MOV ECX,dword ptr [ECX + EAX*0x4]
CMP ECX,EDX
JNZ 0x00057d20
SUB EAX,0x1
JNS 0x00057aa8
MOV EAX,dword ptr [ESP + 0x24]
MOV EDX,dword ptr [ESP + 0x2c]
MOV ECX,dword ptr [ESP + 0x8]
SUB EAX,0x4
ADD EDX,EAX
ADD ECX,EAX
MOV dword ptr [ESP + 0x4c],EAX
MOV EAX,dword ptr [ESP]
MOV dword ptr [ESP + 0x24],EDX
MOV dword ptr [ESP + 0x44],ECX
MOV EAX,dword ptr [EAX + 0x88]
PUSH EDI
PUSH EBP
MOV ECX,dword ptr [ESP + 0x10]
PUSH ECX
PUSH ECX
CALL EAX
MOV EAX,dword ptr [ESP + 0x54]
ADD ESP,0x10
MOV dword ptr [EAX],0x0
MOV dword ptr [ESP + 0x50],0x0
MOV EAX,EDI
MOV EDX,dword ptr [ESP + 0x1c]
MOV ECX,dword ptr [ESP + 0x8]
MOV dword ptr [ESP + 0x40],ESI
JMP 0x00057b2c
MOV ESI,dword ptr [ECX + EAX*0x4]
CMP dword ptr [EDX + EAX*0x4],ESI
JNZ 0x00057db0
SUB EAX,0x1
JNS 0x00057b20
MOV EAX,dword ptr [ESP]
MOV ESI,dword ptr [ESP + 0x40]
MOV EAX,dword ptr [EAX + 0x88]
PUSH EDI
PUSH dword ptr [ESP + 0xc]
PUSH dword ptr [ESP + 0x24]
PUSH dword ptr [ESP + 0x38]
CALL EAX
ADD ESP,0x10
MOV dword ptr [ESP + 0x5c],0x0
MOV EAX,dword ptr [ESP + 0x24]
MOV dword ptr [ESP + 0x40],0x0
MOV dword ptr [EAX],0x0
JMP 0x00057440
MOV EAX,dword ptr [ESP]
MOV EAX,dword ptr [EAX + 0x88]
JA 0x000574ba
PUSH ESI
PUSH dword ptr [ESP + 0x38]
PUSH dword ptr [ESP + 0x28]
PUSH dword ptr [ESP + 0x10]
CALL EAX
XOR dword ptr [ESP + 0x60],0x1
ADD ESP,0x10
MOV dword ptr [ESP + 0x20],0x1
JMP 0x000574d4
SUB ESP,0xc
PUSH EDI
PUSH dword ptr [ESP + 0x18]
PUSH dword ptr [ESP + 0x4c]
PUSH dword ptr [ESP + 0x1c]
PUSH EBP
CALL 0x0001bbe0
ADD ESP,0x20
JMP 0x00057565
SUB ESP,0xc
PUSH dword ptr [ESP + 0x24]
PUSH dword ptr [ESP + 0x18]
PUSH ESI
PUSH dword ptr [ESP + 0x1c]
PUSH EBP
CALL 0x0001bbe0
ADD ESP,0x20
JMP 0x00057589
MOV EAX,dword ptr [ESP]
MOV EAX,dword ptr [EAX + 0x88]
JA 0x000575cb
PUSH dword ptr [ESP + 0x48]
PUSH dword ptr [ESP + 0x10]
PUSH EBP
PUSH EBP
CALL EAX
ADD ESP,0x10
MOV dword ptr [ESP + 0x1c],0x1
JMP 0x000575e2
MOV EAX,dword ptr [ESP]
MOV EAX,dword ptr [EAX + 0x88]
JA 0x000576db
PUSH EDI
PUSH EBP
PUSH dword ptr [ESP + 0x18]
PUSH EBP
CALL EAX
XOR dword ptr [ESP + 0x2c],0x1
ADD ESP,0x10
JMP 0x000576e7
MOV EAX,dword ptr [ESP]
MOV EAX,dword ptr [EAX + 0x88]
JA 0x0005778b
PUSH EDI
PUSH EBP
PUSH dword ptr [ESP + 0x14]
PUSH dword ptr [ESP + 0x14]
CALL EAX
ADD ESP,0x10
JMP 0x0005779a
MOV EAX,dword ptr [ESP]
MOV EAX,dword ptr [EAX + 0x88]
JA 0x0005768b
PUSH EDI
PUSH EBP
PUSH dword ptr [ESP + 0x14]
PUSH dword ptr [ESP + 0x20]
CALL EAX
MOV EAX,dword ptr [ESP + 0x2c]
XOR EAX,0x1
MOV dword ptr [ESP + 0x30],EAX
ADD ESP,0x10
JMP 0x000576a2
MOV dword ptr [ESP + 0x30],EDX
MOV EAX,ESI
MOV EDX,dword ptr [ESP + 0x4]
MOV ECX,dword ptr [ESP + 0x3c]
MOV dword ptr [ESP + 0x48],ESI
JMP 0x00057cc4
MOV ESI,dword ptr [ECX + EAX*0x4]
CMP dword ptr [EDX + EAX*0x4],ESI
JNZ 0x00057de8
SUB EAX,0x1
JNS 0x00057cb8
MOV EDX,dword ptr [ESP + 0x30]
MOV ESI,dword ptr [ESP + 0x48]
PUSH ESI
PUSH dword ptr [ESP + 0x40]
MOV EAX,dword ptr [ESP + 0xc]
PUSH EAX
PUSH EAX
CALL EDX
ADD ESP,0x10
JMP 0x00057608
MOV EAX,dword ptr [ESP]
MOV ESI,dword ptr [ESP + 0x1c]
MOV EAX,dword ptr [EAX + 0x88]
JA 0x00057a2e
PUSH ESI
PUSH dword ptr [ESP + 0x2c]
MOV ECX,dword ptr [ESP + 0xc]
PUSH ECX
PUSH ECX
CALL EAX
ADD ESP,0x10
JMP 0x00057a46
MOV EAX,dword ptr [ESP + 0x24]
MOV dword ptr [ESP + 0x40],EDX
MOV EDX,dword ptr [ESP + 0x2c]
SUB EAX,0x4
ADD EDX,EAX
MOV dword ptr [ESP + 0x4c],EAX
MOV dword ptr [ESP + 0x24],EDX
MOV EDX,dword ptr [ESP + 0x8]
ADD EDX,EAX
MOV EAX,dword ptr [ESP]
MOV dword ptr [ESP + 0x44],EDX
MOV EAX,dword ptr [EAX + 0x88]
CMP ECX,dword ptr [ESP + 0x40]
JA 0x00057ae8
PUSH EDI
MOV ECX,dword ptr [ESP + 0xc]
PUSH ECX
PUSH EBP
MOV dword ptr [ESP + 0x14],ECX
PUSH ECX
CALL EAX
MOV EAX,dword ptr [ESP + 0x54]
MOV dword ptr [EAX],0x0
PUSH EDI
PUSH dword ptr [ESP + 0x30]
PUSH dword ptr [ESP + 0x20]
PUSH dword ptr [ESP + 0x48]
MOV EAX,dword ptr [ESP + 0x20]
CALL dword ptr [EAX]
MOV ECX,dword ptr [ESP + 0x44]
ADD ESP,0x20
MOV dword ptr [ECX],EAX
MOV dword ptr [ESP + 0x50],0x0
MOV dword ptr [ESP + 0x40],0x1
MOV dword ptr [ESP + 0x5c],0x0
JMP 0x00057440
MOV EAX,dword ptr [ESP]
MOV ESI,dword ptr [ESP + 0x40]
MOV EAX,dword ptr [EAX + 0x88]
JA 0x00057b3e
PUSH EDI
PUSH dword ptr [ESP + 0x20]
PUSH dword ptr [ESP + 0x10]
PUSH dword ptr [ESP + 0x38]
CALL EAX
ADD ESP,0x10
MOV dword ptr [ESP + 0x5c],0x1
JMP 0x00057b58
MOV EDX,dword ptr [ESP + 0x30]
MOV ESI,dword ptr [ESP + 0x48]
JA 0x00057cd1
PUSH ESI
MOV EAX,dword ptr [ESP + 0x8]
PUSH EAX
PUSH dword ptr [ESP + 0x44]
PUSH EAX
CALL EDX
ADD ESP,0x10
MOV dword ptr [ESP + 0x20],0x1
JMP 0x00057608
MOV dword ptr [ESP + 0x50],0x1
JMP 0x00057b07
(translation_unit "void __regparm2\n__gmpn_matrix22_mul_strassen\n          (undefined4 param_1,undefined4 param_2,int param_3,int param_4,int param_5,int param_6,\n          int param_7,int param_8,int param_9,int param_10,int param_11,int param_12)\n\n{\n  int iVar1;\n  int *piVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  undefined4 uVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  code *pcVar13;\n  int iVar14;\n  int unaff_EBX;\n  int unaff_retaddr;\n  undefined4 *local_80;\n  uint local_64;\n  uint local_60;\n  int *local_5c;\n  uint local_40;\n  int *local_3c;\n  int local_34;\n  uint local_30;\n  uint local_24;\n  \n  entry(param_2,0x572a9);\n  iVar12 = param_6 + 1;\n  iVar1 = param_11 + 1;\n  local_34 = iVar12 * 4;\n  iVar5 = param_12 + local_34;\n  iVar6 = iVar5 + iVar1 * 4;\n  iVar11 = param_6 + param_11 + 1;\n  iVar10 = iVar11 * 4;\n  iVar14 = iVar6 + iVar10;\n  iVar7 = param_6;\n  if (param_6 < param_11) {\n    __gmpn_mul(iVar6,param_9,param_11,param_3,param_6);\n  }\n  else {\n    __gmpn_mul(iVar6,param_3,param_6,param_9,param_11);\n  }\n  do {\n    iVar7 = iVar7 + -1;\n    iVar8 = param_6;\n    if (iVar7 < 0) {\n      local_80 = *(undefined4 **)(unaff_EBX + 0x46aeb);\n      pcVar13 = (code *)local_80[0x22];\n      goto LAB_000573b5;\n    }\n    uVar3 = *(uint *)(param_4 + iVar7 * 4);\n    uVar4 = *(uint *)(param_5 + iVar7 * 4);\n  } while (uVar4 == uVar3);\n  local_80 = *(undefined4 **)(unaff_EBX + 0x46aeb);\n  pcVar13 = (code *)local_80[0x22];\n  if (uVar3 < uVar4) {\nLAB_000573b5:\n    (*pcVar13)(param_5,param_5,param_4,param_6);\n    local_3c = (int *)(param_3 + local_34 + -4);\n    iVar7 = (*(code *)*local_80)(param_3,param_3,param_5,param_6);\n    *local_3c = iVar7;\n    local_5c = (int *)(param_12 + local_34 + -4);\n    if (iVar7 == 0) {\n      local_30 = 1;\n      goto LAB_00057b2c;\n    }\n    iVar8 = (*(code *)local_80[0x22])(param_12,param_3,unaff_retaddr,param_6);\n    *local_5c = iVar7 - iVar8;\n    local_30 = 1;\n    local_40 = 0;\n    local_24 = 1;\n  }\n  else {\n    (*pcVar13)(param_5,param_4,param_5,param_6);\n    iVar7 = param_6;\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        local_5c = (int *)(param_12 + local_34 + -4);\n        local_3c = (int *)(param_3 + local_34 + -4);\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057ae8;\n      }\n      uVar3 = *(uint *)(param_5 + iVar7 * 4);\n      uVar4 = *(uint *)(param_3 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    local_5c = (int *)(param_12 + local_34 + -4);\n    local_3c = (int *)(param_3 + local_34 + -4);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_00057ae8:\n      (*pcVar13)(param_3,param_3,param_5,param_6);\n      *local_3c = 0;\n      local_30 = 0;\nLAB_00057b2c:\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) {\n          pcVar13 = (code *)local_80[0x22];\n          goto LAB_00057b3e;\n        }\n        uVar3 = *(uint *)(param_3 + iVar8 * 4);\n        uVar4 = *(uint *)(unaff_retaddr + iVar8 * 4);\n      } while (uVar4 == uVar3);\n      pcVar13 = (code *)local_80[0x22];\n      if (uVar3 < uVar4) {\nLAB_00057b3e:\n        (*pcVar13)(param_12,unaff_retaddr,param_3,param_6);\n        local_24 = 0;\n      }\n      else {\n        (*pcVar13)(param_12,param_3,unaff_retaddr,param_6);\n        local_24 = 1;\n      }\n      local_40 = 0;\n      *local_5c = 0;\n    }\n    else {\n      (*pcVar13)(param_3,param_5,param_3,param_6);\n      *local_3c = 0;\n      iVar7 = (*(code *)*local_80)(param_12,param_3,unaff_retaddr,param_6);\n      *local_5c = iVar7;\n      local_30 = 0;\n      local_40 = 1;\n      local_24 = 0;\n    }\n  }\n  local_34 = local_34 + -4;\n  if (param_6 < param_11) {\n    __gmpn_mul(iVar14,param_7,param_11,unaff_retaddr,param_6);\n  }\n  else {\n    __gmpn_mul(iVar14,unaff_retaddr,param_6,param_7,param_11);\n  }\n  uVar9 = (*(code *)*local_80)(unaff_retaddr,iVar6,iVar14,param_6 + param_11);\n  *(undefined4 *)(unaff_retaddr + -4 + iVar10) = uVar9;\n  iVar7 = param_11;\n  do {\n    iVar7 = iVar7 + -1;\n    if (iVar7 < 0) {\n      pcVar13 = (code *)local_80[0x22];\n      goto LAB_000574ba;\n    }\n    uVar3 = *(uint *)(param_9 + iVar7 * 4);\n    uVar4 = *(uint *)(param_10 + iVar7 * 4);\n  } while (uVar4 == uVar3);\n  pcVar13 = (code *)local_80[0x22];\n  if (uVar3 < uVar4) {\nLAB_000574ba:\n    (*pcVar13)(iVar5,param_10,param_9,param_11);\n    local_60 = 0;\n  }\n  else {\n    (*pcVar13)(iVar5,param_9,param_10,param_11);\n    local_30 = local_30 ^ 1;\n    local_60 = 1;\n  }\n  if (param_6 < param_11) {\n    __gmpn_mul(iVar14,iVar5,param_11,param_5,param_6);\n  }\n  else {\n    __gmpn_mul(iVar14,param_5,param_6,iVar5,param_11);\n  }\n  *(undefined4 *)(iVar14 + -4 + iVar10) = 0;\n  piVar2 = (int *)(iVar5 + -4 + iVar1 * 4);\n  iVar7 = param_11;\n  if (local_60 == 0) {\n    iVar7 = (*(code *)*local_80)(iVar5,iVar5,param_8,param_11);\n    *piVar2 = iVar7;\n    if (iVar7 == 0) goto LAB_00057a50;\n    if (param_11 < param_6) {\n      __gmpn_mul(param_5,param_3,param_6,iVar5,iVar1);\n    }\n    else {\n      __gmpn_mul(param_5,iVar5,iVar1,param_3,param_6);\n    }\n    if (*(int *)(param_3 + local_34) != 0) {\n      (*(code *)*local_80)(local_34 + param_5,local_34 + param_5,iVar5,iVar1);\n    }\n  }\n  else {\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057a2e;\n      }\n      uVar3 = *(uint *)(iVar5 + iVar7 * 4);\n      uVar4 = *(uint *)(param_8 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_00057a2e:\n      (*pcVar13)(iVar5,param_8,iVar5,param_11);\n      local_60 = 0;\n    }\n    else {\n      (*pcVar13)(iVar5,iVar5,param_8,param_11);\n    }\n    *piVar2 = 0;\nLAB_00057a50:\n    if (iVar12 < param_11) {\n      __gmpn_mul(param_5,iVar5,param_11,param_3,iVar12);\n    }\n    else {\n      __gmpn_mul(param_5,param_3,iVar12,iVar5,param_11);\n    }\n  }\n  *(undefined4 *)(iVar6 + -4 + iVar10) = 0;\n  iVar10 = iVar11;\n  if (local_40 == local_60) {\n    (*(code *)*local_80)(param_5,param_5,iVar6,iVar11);\n    local_64 = 0;\n    if (local_60 == 0) goto LAB_000578c7;\nLAB_000575ee:\n    iVar11 = (*(code *)*local_80)(iVar5,iVar5,param_7,param_11);\n    *piVar2 = iVar11;\nLAB_00057608:\n    if (param_6 <= param_11) goto LAB_000578fc;\nLAB_00057610:\n    __gmpn_mul(iVar6,param_4,param_6,iVar5,iVar1);\n    if (local_40 != 0) goto LAB_00057638;\nLAB_00057924:\n    iVar11 = (*(code *)*local_80)(param_3,param_3,param_4,param_6);\n    *local_3c = *local_3c + iVar11;\n  }\n  else {\n    do {\n      iVar10 = iVar10 + -1;\n      if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000575cb;\n      }\n      uVar3 = *(uint *)(param_5 + iVar10 * 4);\n      uVar4 = *(uint *)(iVar6 + iVar10 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_000575cb:\n      (*pcVar13)(param_5,iVar6,param_5,iVar11);\n      local_64 = 0;\n    }\n    else {\n      (*pcVar13)(param_5,param_5,iVar6,iVar11);\n      local_64 = 1;\n    }\n    if (local_60 != 0) goto LAB_000575ee;\nLAB_000578c7:\n    pcVar13 = (code *)local_80[0x22];\n    iVar11 = param_11;\n    if (*piVar2 == 0) {\n      do {\n        iVar11 = iVar11 + -1;\n        if (iVar11 < 0) goto LAB_00057cd1;\n        uVar3 = *(uint *)(param_7 + iVar11 * 4);\n        uVar4 = *(uint *)(iVar5 + iVar11 * 4);\n      } while (uVar4 == uVar3);\n      if (uVar3 < uVar4) {\nLAB_00057cd1:\n        (*pcVar13)(iVar5,iVar5,param_7,param_11);\n      }\n      else {\n        (*pcVar13)(iVar5,param_7,iVar5,param_11);\n        local_60 = 1;\n      }\n      goto LAB_00057608;\n    }\n    iVar11 = (*pcVar13)(iVar5,iVar5,param_7,param_11);\n    *piVar2 = *piVar2 - iVar11;\n    if (param_11 < param_6) goto LAB_00057610;\nLAB_000578fc:\n    __gmpn_mul(iVar6,iVar5,iVar1,param_4,param_6);\n    if (local_40 == 0) goto LAB_00057924;\nLAB_00057638:\n    (*(code *)local_80[0x22])(param_3,param_4,param_3,param_6);\n  }\n  iVar11 = param_11 + iVar12;\n  iVar7 = iVar11;\n  iVar10 = iVar11;\n  if (local_64 == local_60) {\n    (*(code *)*local_80)(param_4,param_5,iVar6,iVar11);\n    local_60 = local_64;\n    if (local_64 == local_30) goto LAB_00057971;\nLAB_000576cd:\n    do {\n      iVar10 = iVar10 + -1;\n      if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000576db;\n      }\n      uVar3 = *(uint *)(iVar14 + iVar10 * 4);\n      uVar4 = *(uint *)(param_5 + iVar10 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_000576db:\n      (*pcVar13)(param_5,param_5,iVar14,iVar11);\n    }\n    else {\n      (*pcVar13)(param_5,iVar14,param_5,iVar11);\n      local_64 = local_64 ^ 1;\n    }\n    if (param_11 <= iVar12) goto LAB_000576f3;\nLAB_0005798d:\n    __gmpn_mul(iVar6,param_8,param_11,param_12,iVar12);\n    iVar10 = (*(code *)*local_80)(iVar5,param_10,param_8,param_11);\n    *piVar2 = iVar10;\n  }\n  else {\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005768b;\n      }\n      uVar3 = *(uint *)(iVar6 + iVar7 * 4);\n      uVar4 = *(uint *)(param_5 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_0005768b:\n      (*pcVar13)(param_4,param_5,iVar6,iVar11);\n      local_60 = local_64;\n    }\n    else {\n      (*pcVar13)(param_4,iVar6,param_5,iVar11);\n      local_60 = local_64 ^ 1;\n    }\n    if (local_64 != local_30) goto LAB_000576cd;\nLAB_00057971:\n    (*(code *)*local_80)(param_5,param_5,iVar14,iVar11);\n    if (iVar12 < param_11) goto LAB_0005798d;\nLAB_000576f3:\n    __gmpn_mul(iVar6,param_12,iVar12,param_8,param_11);\n    iVar10 = (*(code *)*local_80)(iVar5,param_10,param_8,param_11);\n    *piVar2 = iVar10;\n    if (param_11 < iVar12) {\n      __gmpn_mul(iVar14,param_3,iVar12,iVar5,iVar1);\n      goto LAB_00057755;\n    }\n  }\n  __gmpn_mul(iVar14,iVar5,iVar1,param_3,iVar12);\nLAB_00057755:\n  iVar12 = iVar11;\n  if (local_24 == local_64) {\n    (*(code *)*local_80)(param_3,param_5,iVar6,iVar11);\n  }\n  else {\n    do {\n      iVar12 = iVar12 + -1;\n      if (iVar12 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005778b;\n      }\n      uVar3 = *(uint *)(iVar6 + iVar12 * 4);\n      uVar4 = *(uint *)(param_5 + iVar12 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_0005778b:\n      (*pcVar13)(param_3,param_5,iVar6,iVar11);\n    }\n    else {\n      (*pcVar13)(param_3,iVar6,param_5,iVar11);\n    }\n  }\n  if (local_64 == 0) {\n    (*(code *)local_80[0x22])(param_5,iVar14,param_5,iVar11);\n  }\n  else {\n    (*(code *)*local_80)(param_5,iVar14,param_5,iVar11);\n  }\n  if (local_60 != 0) {\n                    /* WARNING: Could not recover jumptable at 0x000577f2. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (*(code *)*local_80)();\n    return;\n  }\n                    /* WARNING: Could not recover jumptable at 0x000579fd. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  (*(code *)local_80[0x22])();\n  return;\n}\n\n" (function_definition "void __regparm2\n__gmpn_matrix22_mul_strassen\n          (undefined4 param_1,undefined4 param_2,int param_3,int param_4,int param_5,int param_6,\n          int param_7,int param_8,int param_9,int param_10,int param_11,int param_12)\n\n{\n  int iVar1;\n  int *piVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  undefined4 uVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  code *pcVar13;\n  int iVar14;\n  int unaff_EBX;\n  int unaff_retaddr;\n  undefined4 *local_80;\n  uint local_64;\n  uint local_60;\n  int *local_5c;\n  uint local_40;\n  int *local_3c;\n  int local_34;\n  uint local_30;\n  uint local_24;\n  \n  entry(param_2,0x572a9);\n  iVar12 = param_6 + 1;\n  iVar1 = param_11 + 1;\n  local_34 = iVar12 * 4;\n  iVar5 = param_12 + local_34;\n  iVar6 = iVar5 + iVar1 * 4;\n  iVar11 = param_6 + param_11 + 1;\n  iVar10 = iVar11 * 4;\n  iVar14 = iVar6 + iVar10;\n  iVar7 = param_6;\n  if (param_6 < param_11) {\n    __gmpn_mul(iVar6,param_9,param_11,param_3,param_6);\n  }\n  else {\n    __gmpn_mul(iVar6,param_3,param_6,param_9,param_11);\n  }\n  do {\n    iVar7 = iVar7 + -1;\n    iVar8 = param_6;\n    if (iVar7 < 0) {\n      local_80 = *(undefined4 **)(unaff_EBX + 0x46aeb);\n      pcVar13 = (code *)local_80[0x22];\n      goto LAB_000573b5;\n    }\n    uVar3 = *(uint *)(param_4 + iVar7 * 4);\n    uVar4 = *(uint *)(param_5 + iVar7 * 4);\n  } while (uVar4 == uVar3);\n  local_80 = *(undefined4 **)(unaff_EBX + 0x46aeb);\n  pcVar13 = (code *)local_80[0x22];\n  if (uVar3 < uVar4) {\nLAB_000573b5:\n    (*pcVar13)(param_5,param_5,param_4,param_6);\n    local_3c = (int *)(param_3 + local_34 + -4);\n    iVar7 = (*(code *)*local_80)(param_3,param_3,param_5,param_6);\n    *local_3c = iVar7;\n    local_5c = (int *)(param_12 + local_34 + -4);\n    if (iVar7 == 0) {\n      local_30 = 1;\n      goto LAB_00057b2c;\n    }\n    iVar8 = (*(code *)local_80[0x22])(param_12,param_3,unaff_retaddr,param_6);\n    *local_5c = iVar7 - iVar8;\n    local_30 = 1;\n    local_40 = 0;\n    local_24 = 1;\n  }\n  else {\n    (*pcVar13)(param_5,param_4,param_5,param_6);\n    iVar7 = param_6;\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        local_5c = (int *)(param_12 + local_34 + -4);\n        local_3c = (int *)(param_3 + local_34 + -4);\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057ae8;\n      }\n      uVar3 = *(uint *)(param_5 + iVar7 * 4);\n      uVar4 = *(uint *)(param_3 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    local_5c = (int *)(param_12 + local_34 + -4);\n    local_3c = (int *)(param_3 + local_34 + -4);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_00057ae8:\n      (*pcVar13)(param_3,param_3,param_5,param_6);\n      *local_3c = 0;\n      local_30 = 0;\nLAB_00057b2c:\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) {\n          pcVar13 = (code *)local_80[0x22];\n          goto LAB_00057b3e;\n        }\n        uVar3 = *(uint *)(param_3 + iVar8 * 4);\n        uVar4 = *(uint *)(unaff_retaddr + iVar8 * 4);\n      } while (uVar4 == uVar3);\n      pcVar13 = (code *)local_80[0x22];\n      if (uVar3 < uVar4) {\nLAB_00057b3e:\n        (*pcVar13)(param_12,unaff_retaddr,param_3,param_6);\n        local_24 = 0;\n      }\n      else {\n        (*pcVar13)(param_12,param_3,unaff_retaddr,param_6);\n        local_24 = 1;\n      }\n      local_40 = 0;\n      *local_5c = 0;\n    }\n    else {\n      (*pcVar13)(param_3,param_5,param_3,param_6);\n      *local_3c = 0;\n      iVar7 = (*(code *)*local_80)(param_12,param_3,unaff_retaddr,param_6);\n      *local_5c = iVar7;\n      local_30 = 0;\n      local_40 = 1;\n      local_24 = 0;\n    }\n  }\n  local_34 = local_34 + -4;\n  if (param_6 < param_11) {\n    __gmpn_mul(iVar14,param_7,param_11,unaff_retaddr,param_6);\n  }\n  else {\n    __gmpn_mul(iVar14,unaff_retaddr,param_6,param_7,param_11);\n  }\n  uVar9 = (*(code *)*local_80)(unaff_retaddr,iVar6,iVar14,param_6 + param_11);\n  *(undefined4 *)(unaff_retaddr + -4 + iVar10) = uVar9;\n  iVar7 = param_11;\n  do {\n    iVar7 = iVar7 + -1;\n    if (iVar7 < 0) {\n      pcVar13 = (code *)local_80[0x22];\n      goto LAB_000574ba;\n    }\n    uVar3 = *(uint *)(param_9 + iVar7 * 4);\n    uVar4 = *(uint *)(param_10 + iVar7 * 4);\n  } while (uVar4 == uVar3);\n  pcVar13 = (code *)local_80[0x22];\n  if (uVar3 < uVar4) {\nLAB_000574ba:\n    (*pcVar13)(iVar5,param_10,param_9,param_11);\n    local_60 = 0;\n  }\n  else {\n    (*pcVar13)(iVar5,param_9,param_10,param_11);\n    local_30 = local_30 ^ 1;\n    local_60 = 1;\n  }\n  if (param_6 < param_11) {\n    __gmpn_mul(iVar14,iVar5,param_11,param_5,param_6);\n  }\n  else {\n    __gmpn_mul(iVar14,param_5,param_6,iVar5,param_11);\n  }\n  *(undefined4 *)(iVar14 + -4 + iVar10) = 0;\n  piVar2 = (int *)(iVar5 + -4 + iVar1 * 4);\n  iVar7 = param_11;\n  if (local_60 == 0) {\n    iVar7 = (*(code *)*local_80)(iVar5,iVar5,param_8,param_11);\n    *piVar2 = iVar7;\n    if (iVar7 == 0) goto LAB_00057a50;\n    if (param_11 < param_6) {\n      __gmpn_mul(param_5,param_3,param_6,iVar5,iVar1);\n    }\n    else {\n      __gmpn_mul(param_5,iVar5,iVar1,param_3,param_6);\n    }\n    if (*(int *)(param_3 + local_34) != 0) {\n      (*(code *)*local_80)(local_34 + param_5,local_34 + param_5,iVar5,iVar1);\n    }\n  }\n  else {\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057a2e;\n      }\n      uVar3 = *(uint *)(iVar5 + iVar7 * 4);\n      uVar4 = *(uint *)(param_8 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_00057a2e:\n      (*pcVar13)(iVar5,param_8,iVar5,param_11);\n      local_60 = 0;\n    }\n    else {\n      (*pcVar13)(iVar5,iVar5,param_8,param_11);\n    }\n    *piVar2 = 0;\nLAB_00057a50:\n    if (iVar12 < param_11) {\n      __gmpn_mul(param_5,iVar5,param_11,param_3,iVar12);\n    }\n    else {\n      __gmpn_mul(param_5,param_3,iVar12,iVar5,param_11);\n    }\n  }\n  *(undefined4 *)(iVar6 + -4 + iVar10) = 0;\n  iVar10 = iVar11;\n  if (local_40 == local_60) {\n    (*(code *)*local_80)(param_5,param_5,iVar6,iVar11);\n    local_64 = 0;\n    if (local_60 == 0) goto LAB_000578c7;\nLAB_000575ee:\n    iVar11 = (*(code *)*local_80)(iVar5,iVar5,param_7,param_11);\n    *piVar2 = iVar11;\nLAB_00057608:\n    if (param_6 <= param_11) goto LAB_000578fc;\nLAB_00057610:\n    __gmpn_mul(iVar6,param_4,param_6,iVar5,iVar1);\n    if (local_40 != 0) goto LAB_00057638;\nLAB_00057924:\n    iVar11 = (*(code *)*local_80)(param_3,param_3,param_4,param_6);\n    *local_3c = *local_3c + iVar11;\n  }\n  else {\n    do {\n      iVar10 = iVar10 + -1;\n      if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000575cb;\n      }\n      uVar3 = *(uint *)(param_5 + iVar10 * 4);\n      uVar4 = *(uint *)(iVar6 + iVar10 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_000575cb:\n      (*pcVar13)(param_5,iVar6,param_5,iVar11);\n      local_64 = 0;\n    }\n    else {\n      (*pcVar13)(param_5,param_5,iVar6,iVar11);\n      local_64 = 1;\n    }\n    if (local_60 != 0) goto LAB_000575ee;\nLAB_000578c7:\n    pcVar13 = (code *)local_80[0x22];\n    iVar11 = param_11;\n    if (*piVar2 == 0) {\n      do {\n        iVar11 = iVar11 + -1;\n        if (iVar11 < 0) goto LAB_00057cd1;\n        uVar3 = *(uint *)(param_7 + iVar11 * 4);\n        uVar4 = *(uint *)(iVar5 + iVar11 * 4);\n      } while (uVar4 == uVar3);\n      if (uVar3 < uVar4) {\nLAB_00057cd1:\n        (*pcVar13)(iVar5,iVar5,param_7,param_11);\n      }\n      else {\n        (*pcVar13)(iVar5,param_7,iVar5,param_11);\n        local_60 = 1;\n      }\n      goto LAB_00057608;\n    }\n    iVar11 = (*pcVar13)(iVar5,iVar5,param_7,param_11);\n    *piVar2 = *piVar2 - iVar11;\n    if (param_11 < param_6) goto LAB_00057610;\nLAB_000578fc:\n    __gmpn_mul(iVar6,iVar5,iVar1,param_4,param_6);\n    if (local_40 == 0) goto LAB_00057924;\nLAB_00057638:\n    (*(code *)local_80[0x22])(param_3,param_4,param_3,param_6);\n  }\n  iVar11 = param_11 + iVar12;\n  iVar7 = iVar11;\n  iVar10 = iVar11;\n  if (local_64 == local_60) {\n    (*(code *)*local_80)(param_4,param_5,iVar6,iVar11);\n    local_60 = local_64;\n    if (local_64 == local_30) goto LAB_00057971;\nLAB_000576cd:\n    do {\n      iVar10 = iVar10 + -1;\n      if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000576db;\n      }\n      uVar3 = *(uint *)(iVar14 + iVar10 * 4);\n      uVar4 = *(uint *)(param_5 + iVar10 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_000576db:\n      (*pcVar13)(param_5,param_5,iVar14,iVar11);\n    }\n    else {\n      (*pcVar13)(param_5,iVar14,param_5,iVar11);\n      local_64 = local_64 ^ 1;\n    }\n    if (param_11 <= iVar12) goto LAB_000576f3;\nLAB_0005798d:\n    __gmpn_mul(iVar6,param_8,param_11,param_12,iVar12);\n    iVar10 = (*(code *)*local_80)(iVar5,param_10,param_8,param_11);\n    *piVar2 = iVar10;\n  }\n  else {\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005768b;\n      }\n      uVar3 = *(uint *)(iVar6 + iVar7 * 4);\n      uVar4 = *(uint *)(param_5 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_0005768b:\n      (*pcVar13)(param_4,param_5,iVar6,iVar11);\n      local_60 = local_64;\n    }\n    else {\n      (*pcVar13)(param_4,iVar6,param_5,iVar11);\n      local_60 = local_64 ^ 1;\n    }\n    if (local_64 != local_30) goto LAB_000576cd;\nLAB_00057971:\n    (*(code *)*local_80)(param_5,param_5,iVar14,iVar11);\n    if (iVar12 < param_11) goto LAB_0005798d;\nLAB_000576f3:\n    __gmpn_mul(iVar6,param_12,iVar12,param_8,param_11);\n    iVar10 = (*(code *)*local_80)(iVar5,param_10,param_8,param_11);\n    *piVar2 = iVar10;\n    if (param_11 < iVar12) {\n      __gmpn_mul(iVar14,param_3,iVar12,iVar5,iVar1);\n      goto LAB_00057755;\n    }\n  }\n  __gmpn_mul(iVar14,iVar5,iVar1,param_3,iVar12);\nLAB_00057755:\n  iVar12 = iVar11;\n  if (local_24 == local_64) {\n    (*(code *)*local_80)(param_3,param_5,iVar6,iVar11);\n  }\n  else {\n    do {\n      iVar12 = iVar12 + -1;\n      if (iVar12 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005778b;\n      }\n      uVar3 = *(uint *)(iVar6 + iVar12 * 4);\n      uVar4 = *(uint *)(param_5 + iVar12 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_0005778b:\n      (*pcVar13)(param_3,param_5,iVar6,iVar11);\n    }\n    else {\n      (*pcVar13)(param_3,iVar6,param_5,iVar11);\n    }\n  }\n  if (local_64 == 0) {\n    (*(code *)local_80[0x22])(param_5,iVar14,param_5,iVar11);\n  }\n  else {\n    (*(code *)*local_80)(param_5,iVar14,param_5,iVar11);\n  }\n  if (local_60 != 0) {\n                    /* WARNING: Could not recover jumptable at 0x000577f2. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (*(code *)*local_80)();\n    return;\n  }\n                    /* WARNING: Could not recover jumptable at 0x000579fd. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  (*(code *)local_80[0x22])();\n  return;\n}" primitive_type (ERROR "__regparm2" identifier) (function_declarator "__gmpn_matrix22_mul_strassen\n          (undefined4 param_1,undefined4 param_2,int param_3,int param_4,int param_5,int param_6,\n          int param_7,int param_8,int param_9,int param_10,int param_11,int param_12)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,int param_3,int param_4,int param_5,int param_6,\n          int param_7,int param_8,int param_9,int param_10,int param_11,int param_12)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "int param_6" primitive_type identifier) , (parameter_declaration "int param_7" primitive_type identifier) , (parameter_declaration "int param_8" primitive_type identifier) , (parameter_declaration "int param_9" primitive_type identifier) , (parameter_declaration "int param_10" primitive_type identifier) , (parameter_declaration "int param_11" primitive_type identifier) , (parameter_declaration "int param_12" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int *piVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  undefined4 uVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  code *pcVar13;\n  int iVar14;\n  int unaff_EBX;\n  int unaff_retaddr;\n  undefined4 *local_80;\n  uint local_64;\n  uint local_60;\n  int *local_5c;\n  uint local_40;\n  int *local_3c;\n  int local_34;\n  uint local_30;\n  uint local_24;\n  \n  entry(param_2,0x572a9);\n  iVar12 = param_6 + 1;\n  iVar1 = param_11 + 1;\n  local_34 = iVar12 * 4;\n  iVar5 = param_12 + local_34;\n  iVar6 = iVar5 + iVar1 * 4;\n  iVar11 = param_6 + param_11 + 1;\n  iVar10 = iVar11 * 4;\n  iVar14 = iVar6 + iVar10;\n  iVar7 = param_6;\n  if (param_6 < param_11) {\n    __gmpn_mul(iVar6,param_9,param_11,param_3,param_6);\n  }\n  else {\n    __gmpn_mul(iVar6,param_3,param_6,param_9,param_11);\n  }\n  do {\n    iVar7 = iVar7 + -1;\n    iVar8 = param_6;\n    if (iVar7 < 0) {\n      local_80 = *(undefined4 **)(unaff_EBX + 0x46aeb);\n      pcVar13 = (code *)local_80[0x22];\n      goto LAB_000573b5;\n    }\n    uVar3 = *(uint *)(param_4 + iVar7 * 4);\n    uVar4 = *(uint *)(param_5 + iVar7 * 4);\n  } while (uVar4 == uVar3);\n  local_80 = *(undefined4 **)(unaff_EBX + 0x46aeb);\n  pcVar13 = (code *)local_80[0x22];\n  if (uVar3 < uVar4) {\nLAB_000573b5:\n    (*pcVar13)(param_5,param_5,param_4,param_6);\n    local_3c = (int *)(param_3 + local_34 + -4);\n    iVar7 = (*(code *)*local_80)(param_3,param_3,param_5,param_6);\n    *local_3c = iVar7;\n    local_5c = (int *)(param_12 + local_34 + -4);\n    if (iVar7 == 0) {\n      local_30 = 1;\n      goto LAB_00057b2c;\n    }\n    iVar8 = (*(code *)local_80[0x22])(param_12,param_3,unaff_retaddr,param_6);\n    *local_5c = iVar7 - iVar8;\n    local_30 = 1;\n    local_40 = 0;\n    local_24 = 1;\n  }\n  else {\n    (*pcVar13)(param_5,param_4,param_5,param_6);\n    iVar7 = param_6;\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        local_5c = (int *)(param_12 + local_34 + -4);\n        local_3c = (int *)(param_3 + local_34 + -4);\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057ae8;\n      }\n      uVar3 = *(uint *)(param_5 + iVar7 * 4);\n      uVar4 = *(uint *)(param_3 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    local_5c = (int *)(param_12 + local_34 + -4);\n    local_3c = (int *)(param_3 + local_34 + -4);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_00057ae8:\n      (*pcVar13)(param_3,param_3,param_5,param_6);\n      *local_3c = 0;\n      local_30 = 0;\nLAB_00057b2c:\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) {\n          pcVar13 = (code *)local_80[0x22];\n          goto LAB_00057b3e;\n        }\n        uVar3 = *(uint *)(param_3 + iVar8 * 4);\n        uVar4 = *(uint *)(unaff_retaddr + iVar8 * 4);\n      } while (uVar4 == uVar3);\n      pcVar13 = (code *)local_80[0x22];\n      if (uVar3 < uVar4) {\nLAB_00057b3e:\n        (*pcVar13)(param_12,unaff_retaddr,param_3,param_6);\n        local_24 = 0;\n      }\n      else {\n        (*pcVar13)(param_12,param_3,unaff_retaddr,param_6);\n        local_24 = 1;\n      }\n      local_40 = 0;\n      *local_5c = 0;\n    }\n    else {\n      (*pcVar13)(param_3,param_5,param_3,param_6);\n      *local_3c = 0;\n      iVar7 = (*(code *)*local_80)(param_12,param_3,unaff_retaddr,param_6);\n      *local_5c = iVar7;\n      local_30 = 0;\n      local_40 = 1;\n      local_24 = 0;\n    }\n  }\n  local_34 = local_34 + -4;\n  if (param_6 < param_11) {\n    __gmpn_mul(iVar14,param_7,param_11,unaff_retaddr,param_6);\n  }\n  else {\n    __gmpn_mul(iVar14,unaff_retaddr,param_6,param_7,param_11);\n  }\n  uVar9 = (*(code *)*local_80)(unaff_retaddr,iVar6,iVar14,param_6 + param_11);\n  *(undefined4 *)(unaff_retaddr + -4 + iVar10) = uVar9;\n  iVar7 = param_11;\n  do {\n    iVar7 = iVar7 + -1;\n    if (iVar7 < 0) {\n      pcVar13 = (code *)local_80[0x22];\n      goto LAB_000574ba;\n    }\n    uVar3 = *(uint *)(param_9 + iVar7 * 4);\n    uVar4 = *(uint *)(param_10 + iVar7 * 4);\n  } while (uVar4 == uVar3);\n  pcVar13 = (code *)local_80[0x22];\n  if (uVar3 < uVar4) {\nLAB_000574ba:\n    (*pcVar13)(iVar5,param_10,param_9,param_11);\n    local_60 = 0;\n  }\n  else {\n    (*pcVar13)(iVar5,param_9,param_10,param_11);\n    local_30 = local_30 ^ 1;\n    local_60 = 1;\n  }\n  if (param_6 < param_11) {\n    __gmpn_mul(iVar14,iVar5,param_11,param_5,param_6);\n  }\n  else {\n    __gmpn_mul(iVar14,param_5,param_6,iVar5,param_11);\n  }\n  *(undefined4 *)(iVar14 + -4 + iVar10) = 0;\n  piVar2 = (int *)(iVar5 + -4 + iVar1 * 4);\n  iVar7 = param_11;\n  if (local_60 == 0) {\n    iVar7 = (*(code *)*local_80)(iVar5,iVar5,param_8,param_11);\n    *piVar2 = iVar7;\n    if (iVar7 == 0) goto LAB_00057a50;\n    if (param_11 < param_6) {\n      __gmpn_mul(param_5,param_3,param_6,iVar5,iVar1);\n    }\n    else {\n      __gmpn_mul(param_5,iVar5,iVar1,param_3,param_6);\n    }\n    if (*(int *)(param_3 + local_34) != 0) {\n      (*(code *)*local_80)(local_34 + param_5,local_34 + param_5,iVar5,iVar1);\n    }\n  }\n  else {\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057a2e;\n      }\n      uVar3 = *(uint *)(iVar5 + iVar7 * 4);\n      uVar4 = *(uint *)(param_8 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_00057a2e:\n      (*pcVar13)(iVar5,param_8,iVar5,param_11);\n      local_60 = 0;\n    }\n    else {\n      (*pcVar13)(iVar5,iVar5,param_8,param_11);\n    }\n    *piVar2 = 0;\nLAB_00057a50:\n    if (iVar12 < param_11) {\n      __gmpn_mul(param_5,iVar5,param_11,param_3,iVar12);\n    }\n    else {\n      __gmpn_mul(param_5,param_3,iVar12,iVar5,param_11);\n    }\n  }\n  *(undefined4 *)(iVar6 + -4 + iVar10) = 0;\n  iVar10 = iVar11;\n  if (local_40 == local_60) {\n    (*(code *)*local_80)(param_5,param_5,iVar6,iVar11);\n    local_64 = 0;\n    if (local_60 == 0) goto LAB_000578c7;\nLAB_000575ee:\n    iVar11 = (*(code *)*local_80)(iVar5,iVar5,param_7,param_11);\n    *piVar2 = iVar11;\nLAB_00057608:\n    if (param_6 <= param_11) goto LAB_000578fc;\nLAB_00057610:\n    __gmpn_mul(iVar6,param_4,param_6,iVar5,iVar1);\n    if (local_40 != 0) goto LAB_00057638;\nLAB_00057924:\n    iVar11 = (*(code *)*local_80)(param_3,param_3,param_4,param_6);\n    *local_3c = *local_3c + iVar11;\n  }\n  else {\n    do {\n      iVar10 = iVar10 + -1;\n      if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000575cb;\n      }\n      uVar3 = *(uint *)(param_5 + iVar10 * 4);\n      uVar4 = *(uint *)(iVar6 + iVar10 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_000575cb:\n      (*pcVar13)(param_5,iVar6,param_5,iVar11);\n      local_64 = 0;\n    }\n    else {\n      (*pcVar13)(param_5,param_5,iVar6,iVar11);\n      local_64 = 1;\n    }\n    if (local_60 != 0) goto LAB_000575ee;\nLAB_000578c7:\n    pcVar13 = (code *)local_80[0x22];\n    iVar11 = param_11;\n    if (*piVar2 == 0) {\n      do {\n        iVar11 = iVar11 + -1;\n        if (iVar11 < 0) goto LAB_00057cd1;\n        uVar3 = *(uint *)(param_7 + iVar11 * 4);\n        uVar4 = *(uint *)(iVar5 + iVar11 * 4);\n      } while (uVar4 == uVar3);\n      if (uVar3 < uVar4) {\nLAB_00057cd1:\n        (*pcVar13)(iVar5,iVar5,param_7,param_11);\n      }\n      else {\n        (*pcVar13)(iVar5,param_7,iVar5,param_11);\n        local_60 = 1;\n      }\n      goto LAB_00057608;\n    }\n    iVar11 = (*pcVar13)(iVar5,iVar5,param_7,param_11);\n    *piVar2 = *piVar2 - iVar11;\n    if (param_11 < param_6) goto LAB_00057610;\nLAB_000578fc:\n    __gmpn_mul(iVar6,iVar5,iVar1,param_4,param_6);\n    if (local_40 == 0) goto LAB_00057924;\nLAB_00057638:\n    (*(code *)local_80[0x22])(param_3,param_4,param_3,param_6);\n  }\n  iVar11 = param_11 + iVar12;\n  iVar7 = iVar11;\n  iVar10 = iVar11;\n  if (local_64 == local_60) {\n    (*(code *)*local_80)(param_4,param_5,iVar6,iVar11);\n    local_60 = local_64;\n    if (local_64 == local_30) goto LAB_00057971;\nLAB_000576cd:\n    do {\n      iVar10 = iVar10 + -1;\n      if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000576db;\n      }\n      uVar3 = *(uint *)(iVar14 + iVar10 * 4);\n      uVar4 = *(uint *)(param_5 + iVar10 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_000576db:\n      (*pcVar13)(param_5,param_5,iVar14,iVar11);\n    }\n    else {\n      (*pcVar13)(param_5,iVar14,param_5,iVar11);\n      local_64 = local_64 ^ 1;\n    }\n    if (param_11 <= iVar12) goto LAB_000576f3;\nLAB_0005798d:\n    __gmpn_mul(iVar6,param_8,param_11,param_12,iVar12);\n    iVar10 = (*(code *)*local_80)(iVar5,param_10,param_8,param_11);\n    *piVar2 = iVar10;\n  }\n  else {\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005768b;\n      }\n      uVar3 = *(uint *)(iVar6 + iVar7 * 4);\n      uVar4 = *(uint *)(param_5 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_0005768b:\n      (*pcVar13)(param_4,param_5,iVar6,iVar11);\n      local_60 = local_64;\n    }\n    else {\n      (*pcVar13)(param_4,iVar6,param_5,iVar11);\n      local_60 = local_64 ^ 1;\n    }\n    if (local_64 != local_30) goto LAB_000576cd;\nLAB_00057971:\n    (*(code *)*local_80)(param_5,param_5,iVar14,iVar11);\n    if (iVar12 < param_11) goto LAB_0005798d;\nLAB_000576f3:\n    __gmpn_mul(iVar6,param_12,iVar12,param_8,param_11);\n    iVar10 = (*(code *)*local_80)(iVar5,param_10,param_8,param_11);\n    *piVar2 = iVar10;\n    if (param_11 < iVar12) {\n      __gmpn_mul(iVar14,param_3,iVar12,iVar5,iVar1);\n      goto LAB_00057755;\n    }\n  }\n  __gmpn_mul(iVar14,iVar5,iVar1,param_3,iVar12);\nLAB_00057755:\n  iVar12 = iVar11;\n  if (local_24 == local_64) {\n    (*(code *)*local_80)(param_3,param_5,iVar6,iVar11);\n  }\n  else {\n    do {\n      iVar12 = iVar12 + -1;\n      if (iVar12 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005778b;\n      }\n      uVar3 = *(uint *)(iVar6 + iVar12 * 4);\n      uVar4 = *(uint *)(param_5 + iVar12 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_0005778b:\n      (*pcVar13)(param_3,param_5,iVar6,iVar11);\n    }\n    else {\n      (*pcVar13)(param_3,iVar6,param_5,iVar11);\n    }\n  }\n  if (local_64 == 0) {\n    (*(code *)local_80[0x22])(param_5,iVar14,param_5,iVar11);\n  }\n  else {\n    (*(code *)*local_80)(param_5,iVar14,param_5,iVar11);\n  }\n  if (local_60 != 0) {\n                    /* WARNING: Could not recover jumptable at 0x000577f2. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (*(code *)*local_80)();\n    return;\n  }\n                    /* WARNING: Could not recover jumptable at 0x000579fd. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  (*(code *)local_80[0x22])();\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "code *pcVar13;" type_identifier (pointer_declarator "*pcVar13" * identifier) ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "int unaff_EBX;" primitive_type identifier ;) (declaration "int unaff_retaddr;" primitive_type identifier ;) (declaration "undefined4 *local_80;" type_identifier (pointer_declarator "*local_80" * identifier) ;) (declaration "uint local_64;" type_identifier identifier ;) (declaration "uint local_60;" type_identifier identifier ;) (declaration "int *local_5c;" primitive_type (pointer_declarator "*local_5c" * identifier) ;) (declaration "uint local_40;" type_identifier identifier ;) (declaration "int *local_3c;" primitive_type (pointer_declarator "*local_3c" * identifier) ;) (declaration "int local_34;" primitive_type identifier ;) (declaration "uint local_30;" type_identifier identifier ;) (declaration "uint local_24;" type_identifier identifier ;) (expression_statement "entry(param_2,0x572a9);" (call_expression "entry(param_2,0x572a9)" identifier (argument_list "(param_2,0x572a9)" ( identifier , number_literal ))) ;) (expression_statement "iVar12 = param_6 + 1;" (assignment_expression "iVar12 = param_6 + 1" identifier = (binary_expression "param_6 + 1" identifier + number_literal)) ;) (expression_statement "iVar1 = param_11 + 1;" (assignment_expression "iVar1 = param_11 + 1" identifier = (binary_expression "param_11 + 1" identifier + number_literal)) ;) (expression_statement "local_34 = iVar12 * 4;" (assignment_expression "local_34 = iVar12 * 4" identifier = (binary_expression "iVar12 * 4" identifier * number_literal)) ;) (expression_statement "iVar5 = param_12 + local_34;" (assignment_expression "iVar5 = param_12 + local_34" identifier = (binary_expression "param_12 + local_34" identifier + identifier)) ;) (expression_statement "iVar6 = iVar5 + iVar1 * 4;" (assignment_expression "iVar6 = iVar5 + iVar1 * 4" identifier = (binary_expression "iVar5 + iVar1 * 4" identifier + (binary_expression "iVar1 * 4" identifier * number_literal))) ;) (expression_statement "iVar11 = param_6 + param_11 + 1;" (assignment_expression "iVar11 = param_6 + param_11 + 1" identifier = (binary_expression "param_6 + param_11 + 1" (binary_expression "param_6 + param_11" identifier + identifier) + number_literal)) ;) (expression_statement "iVar10 = iVar11 * 4;" (assignment_expression "iVar10 = iVar11 * 4" identifier = (binary_expression "iVar11 * 4" identifier * number_literal)) ;) (expression_statement "iVar14 = iVar6 + iVar10;" (assignment_expression "iVar14 = iVar6 + iVar10" identifier = (binary_expression "iVar6 + iVar10" identifier + identifier)) ;) (expression_statement "iVar7 = param_6;" (assignment_expression "iVar7 = param_6" identifier = identifier) ;) (if_statement "if (param_6 < param_11) {\n    __gmpn_mul(iVar6,param_9,param_11,param_3,param_6);\n  }\n  else {\n    __gmpn_mul(iVar6,param_3,param_6,param_9,param_11);\n  }" if (parenthesized_expression "(param_6 < param_11)" ( (binary_expression "param_6 < param_11" identifier < identifier) )) (compound_statement "{\n    __gmpn_mul(iVar6,param_9,param_11,param_3,param_6);\n  }" { (expression_statement "__gmpn_mul(iVar6,param_9,param_11,param_3,param_6);" (call_expression "__gmpn_mul(iVar6,param_9,param_11,param_3,param_6)" identifier (argument_list "(iVar6,param_9,param_11,param_3,param_6)" ( identifier , identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n    __gmpn_mul(iVar6,param_3,param_6,param_9,param_11);\n  }" else (compound_statement "{\n    __gmpn_mul(iVar6,param_3,param_6,param_9,param_11);\n  }" { (expression_statement "__gmpn_mul(iVar6,param_3,param_6,param_9,param_11);" (call_expression "__gmpn_mul(iVar6,param_3,param_6,param_9,param_11)" identifier (argument_list "(iVar6,param_3,param_6,param_9,param_11)" ( identifier , identifier , identifier , identifier , identifier ))) ;) }))) (do_statement "do {\n    iVar7 = iVar7 + -1;\n    iVar8 = param_6;\n    if (iVar7 < 0) {\n      local_80 = *(undefined4 **)(unaff_EBX + 0x46aeb);\n      pcVar13 = (code *)local_80[0x22];\n      goto LAB_000573b5;\n    }\n    uVar3 = *(uint *)(param_4 + iVar7 * 4);\n    uVar4 = *(uint *)(param_5 + iVar7 * 4);\n  } while (uVar4 == uVar3);" do (compound_statement "{\n    iVar7 = iVar7 + -1;\n    iVar8 = param_6;\n    if (iVar7 < 0) {\n      local_80 = *(undefined4 **)(unaff_EBX + 0x46aeb);\n      pcVar13 = (code *)local_80[0x22];\n      goto LAB_000573b5;\n    }\n    uVar3 = *(uint *)(param_4 + iVar7 * 4);\n    uVar4 = *(uint *)(param_5 + iVar7 * 4);\n  }" { (expression_statement "iVar7 = iVar7 + -1;" (assignment_expression "iVar7 = iVar7 + -1" identifier = (binary_expression "iVar7 + -1" identifier + number_literal)) ;) (expression_statement "iVar8 = param_6;" (assignment_expression "iVar8 = param_6" identifier = identifier) ;) (if_statement "if (iVar7 < 0) {\n      local_80 = *(undefined4 **)(unaff_EBX + 0x46aeb);\n      pcVar13 = (code *)local_80[0x22];\n      goto LAB_000573b5;\n    }" if (parenthesized_expression "(iVar7 < 0)" ( (binary_expression "iVar7 < 0" identifier < number_literal) )) (compound_statement "{\n      local_80 = *(undefined4 **)(unaff_EBX + 0x46aeb);\n      pcVar13 = (code *)local_80[0x22];\n      goto LAB_000573b5;\n    }" { (expression_statement "local_80 = *(undefined4 **)(unaff_EBX + 0x46aeb);" (assignment_expression "local_80 = *(undefined4 **)(unaff_EBX + 0x46aeb)" identifier = (pointer_expression "*(undefined4 **)(unaff_EBX + 0x46aeb)" * (cast_expression "(undefined4 **)(unaff_EBX + 0x46aeb)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_EBX + 0x46aeb)" ( (binary_expression "unaff_EBX + 0x46aeb" identifier + number_literal) ))))) ;) (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" identifier = (cast_expression "(code *)local_80[0x22]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0x22]" identifier [ number_literal ]))) ;) (goto_statement "goto LAB_000573b5;" goto statement_identifier ;) })) (expression_statement "uVar3 = *(uint *)(param_4 + iVar7 * 4);" (assignment_expression "uVar3 = *(uint *)(param_4 + iVar7 * 4)" identifier = (pointer_expression "*(uint *)(param_4 + iVar7 * 4)" * (cast_expression "(uint *)(param_4 + iVar7 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + iVar7 * 4)" ( (binary_expression "param_4 + iVar7 * 4" identifier + (binary_expression "iVar7 * 4" identifier * number_literal)) ))))) ;) (expression_statement "uVar4 = *(uint *)(param_5 + iVar7 * 4);" (assignment_expression "uVar4 = *(uint *)(param_5 + iVar7 * 4)" identifier = (pointer_expression "*(uint *)(param_5 + iVar7 * 4)" * (cast_expression "(uint *)(param_5 + iVar7 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + iVar7 * 4)" ( (binary_expression "param_5 + iVar7 * 4" identifier + (binary_expression "iVar7 * 4" identifier * number_literal)) ))))) ;) }) while (parenthesized_expression "(uVar4 == uVar3)" ( (binary_expression "uVar4 == uVar3" identifier == identifier) )) ;) (expression_statement "local_80 = *(undefined4 **)(unaff_EBX + 0x46aeb);" (assignment_expression "local_80 = *(undefined4 **)(unaff_EBX + 0x46aeb)" identifier = (pointer_expression "*(undefined4 **)(unaff_EBX + 0x46aeb)" * (cast_expression "(undefined4 **)(unaff_EBX + 0x46aeb)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_EBX + 0x46aeb)" ( (binary_expression "unaff_EBX + 0x46aeb" identifier + number_literal) ))))) ;) (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" identifier = (cast_expression "(code *)local_80[0x22]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0x22]" identifier [ number_literal ]))) ;) (if_statement "if (uVar3 < uVar4) {\nLAB_000573b5:\n    (*pcVar13)(param_5,param_5,param_4,param_6);\n    local_3c = (int *)(param_3 + local_34 + -4);\n    iVar7 = (*(code *)*local_80)(param_3,param_3,param_5,param_6);\n    *local_3c = iVar7;\n    local_5c = (int *)(param_12 + local_34 + -4);\n    if (iVar7 == 0) {\n      local_30 = 1;\n      goto LAB_00057b2c;\n    }\n    iVar8 = (*(code *)local_80[0x22])(param_12,param_3,unaff_retaddr,param_6);\n    *local_5c = iVar7 - iVar8;\n    local_30 = 1;\n    local_40 = 0;\n    local_24 = 1;\n  }\n  else {\n    (*pcVar13)(param_5,param_4,param_5,param_6);\n    iVar7 = param_6;\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        local_5c = (int *)(param_12 + local_34 + -4);\n        local_3c = (int *)(param_3 + local_34 + -4);\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057ae8;\n      }\n      uVar3 = *(uint *)(param_5 + iVar7 * 4);\n      uVar4 = *(uint *)(param_3 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    local_5c = (int *)(param_12 + local_34 + -4);\n    local_3c = (int *)(param_3 + local_34 + -4);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_00057ae8:\n      (*pcVar13)(param_3,param_3,param_5,param_6);\n      *local_3c = 0;\n      local_30 = 0;\nLAB_00057b2c:\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) {\n          pcVar13 = (code *)local_80[0x22];\n          goto LAB_00057b3e;\n        }\n        uVar3 = *(uint *)(param_3 + iVar8 * 4);\n        uVar4 = *(uint *)(unaff_retaddr + iVar8 * 4);\n      } while (uVar4 == uVar3);\n      pcVar13 = (code *)local_80[0x22];\n      if (uVar3 < uVar4) {\nLAB_00057b3e:\n        (*pcVar13)(param_12,unaff_retaddr,param_3,param_6);\n        local_24 = 0;\n      }\n      else {\n        (*pcVar13)(param_12,param_3,unaff_retaddr,param_6);\n        local_24 = 1;\n      }\n      local_40 = 0;\n      *local_5c = 0;\n    }\n    else {\n      (*pcVar13)(param_3,param_5,param_3,param_6);\n      *local_3c = 0;\n      iVar7 = (*(code *)*local_80)(param_12,param_3,unaff_retaddr,param_6);\n      *local_5c = iVar7;\n      local_30 = 0;\n      local_40 = 1;\n      local_24 = 0;\n    }\n  }" if (parenthesized_expression "(uVar3 < uVar4)" ( (binary_expression "uVar3 < uVar4" identifier < identifier) )) (compound_statement "{\nLAB_000573b5:\n    (*pcVar13)(param_5,param_5,param_4,param_6);\n    local_3c = (int *)(param_3 + local_34 + -4);\n    iVar7 = (*(code *)*local_80)(param_3,param_3,param_5,param_6);\n    *local_3c = iVar7;\n    local_5c = (int *)(param_12 + local_34 + -4);\n    if (iVar7 == 0) {\n      local_30 = 1;\n      goto LAB_00057b2c;\n    }\n    iVar8 = (*(code *)local_80[0x22])(param_12,param_3,unaff_retaddr,param_6);\n    *local_5c = iVar7 - iVar8;\n    local_30 = 1;\n    local_40 = 0;\n    local_24 = 1;\n  }" { (labeled_statement "LAB_000573b5:\n    (*pcVar13)(param_5,param_5,param_4,param_6);" statement_identifier : (expression_statement "(*pcVar13)(param_5,param_5,param_4,param_6);" (call_expression "(*pcVar13)(param_5,param_5,param_4,param_6)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(param_5,param_5,param_4,param_6)" ( identifier , identifier , identifier , identifier ))) ;)) (expression_statement "local_3c = (int *)(param_3 + local_34 + -4);" (assignment_expression "local_3c = (int *)(param_3 + local_34 + -4)" identifier = (cast_expression "(int *)(param_3 + local_34 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + local_34 + -4)" ( (binary_expression "param_3 + local_34 + -4" (binary_expression "param_3 + local_34" identifier + identifier) + number_literal) )))) ;) (expression_statement "iVar7 = (*(code *)*local_80)(param_3,param_3,param_5,param_6);" (assignment_expression "iVar7 = (*(code *)*local_80)(param_3,param_3,param_5,param_6)" identifier = (call_expression "(*(code *)*local_80)(param_3,param_3,param_5,param_6)" (parenthesized_expression "(*(code *)*local_80)" ( (pointer_expression "*(code *)*local_80" * (cast_expression "(code *)*local_80" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_80" * identifier))) )) (argument_list "(param_3,param_3,param_5,param_6)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "*local_3c = iVar7;" (assignment_expression "*local_3c = iVar7" (pointer_expression "*local_3c" * identifier) = identifier) ;) (expression_statement "local_5c = (int *)(param_12 + local_34 + -4);" (assignment_expression "local_5c = (int *)(param_12 + local_34 + -4)" identifier = (cast_expression "(int *)(param_12 + local_34 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_12 + local_34 + -4)" ( (binary_expression "param_12 + local_34 + -4" (binary_expression "param_12 + local_34" identifier + identifier) + number_literal) )))) ;) (if_statement "if (iVar7 == 0) {\n      local_30 = 1;\n      goto LAB_00057b2c;\n    }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n      local_30 = 1;\n      goto LAB_00057b2c;\n    }" { (expression_statement "local_30 = 1;" (assignment_expression "local_30 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_00057b2c;" goto statement_identifier ;) })) (expression_statement "iVar8 = (*(code *)local_80[0x22])(param_12,param_3,unaff_retaddr,param_6);" (assignment_expression "iVar8 = (*(code *)local_80[0x22])(param_12,param_3,unaff_retaddr,param_6)" identifier = (call_expression "(*(code *)local_80[0x22])(param_12,param_3,unaff_retaddr,param_6)" (parenthesized_expression "(*(code *)local_80[0x22])" ( (pointer_expression "*(code *)local_80[0x22]" * (cast_expression "(code *)local_80[0x22]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0x22]" identifier [ number_literal ]))) )) (argument_list "(param_12,param_3,unaff_retaddr,param_6)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "*local_5c = iVar7 - iVar8;" (assignment_expression "*local_5c = iVar7 - iVar8" (pointer_expression "*local_5c" * identifier) = (binary_expression "iVar7 - iVar8" identifier - identifier)) ;) (expression_statement "local_30 = 1;" (assignment_expression "local_30 = 1" identifier = number_literal) ;) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (expression_statement "local_24 = 1;" (assignment_expression "local_24 = 1" identifier = number_literal) ;) }) (else_clause "else {\n    (*pcVar13)(param_5,param_4,param_5,param_6);\n    iVar7 = param_6;\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        local_5c = (int *)(param_12 + local_34 + -4);\n        local_3c = (int *)(param_3 + local_34 + -4);\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057ae8;\n      }\n      uVar3 = *(uint *)(param_5 + iVar7 * 4);\n      uVar4 = *(uint *)(param_3 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    local_5c = (int *)(param_12 + local_34 + -4);\n    local_3c = (int *)(param_3 + local_34 + -4);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_00057ae8:\n      (*pcVar13)(param_3,param_3,param_5,param_6);\n      *local_3c = 0;\n      local_30 = 0;\nLAB_00057b2c:\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) {\n          pcVar13 = (code *)local_80[0x22];\n          goto LAB_00057b3e;\n        }\n        uVar3 = *(uint *)(param_3 + iVar8 * 4);\n        uVar4 = *(uint *)(unaff_retaddr + iVar8 * 4);\n      } while (uVar4 == uVar3);\n      pcVar13 = (code *)local_80[0x22];\n      if (uVar3 < uVar4) {\nLAB_00057b3e:\n        (*pcVar13)(param_12,unaff_retaddr,param_3,param_6);\n        local_24 = 0;\n      }\n      else {\n        (*pcVar13)(param_12,param_3,unaff_retaddr,param_6);\n        local_24 = 1;\n      }\n      local_40 = 0;\n      *local_5c = 0;\n    }\n    else {\n      (*pcVar13)(param_3,param_5,param_3,param_6);\n      *local_3c = 0;\n      iVar7 = (*(code *)*local_80)(param_12,param_3,unaff_retaddr,param_6);\n      *local_5c = iVar7;\n      local_30 = 0;\n      local_40 = 1;\n      local_24 = 0;\n    }\n  }" else (compound_statement "{\n    (*pcVar13)(param_5,param_4,param_5,param_6);\n    iVar7 = param_6;\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        local_5c = (int *)(param_12 + local_34 + -4);\n        local_3c = (int *)(param_3 + local_34 + -4);\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057ae8;\n      }\n      uVar3 = *(uint *)(param_5 + iVar7 * 4);\n      uVar4 = *(uint *)(param_3 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    local_5c = (int *)(param_12 + local_34 + -4);\n    local_3c = (int *)(param_3 + local_34 + -4);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_00057ae8:\n      (*pcVar13)(param_3,param_3,param_5,param_6);\n      *local_3c = 0;\n      local_30 = 0;\nLAB_00057b2c:\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) {\n          pcVar13 = (code *)local_80[0x22];\n          goto LAB_00057b3e;\n        }\n        uVar3 = *(uint *)(param_3 + iVar8 * 4);\n        uVar4 = *(uint *)(unaff_retaddr + iVar8 * 4);\n      } while (uVar4 == uVar3);\n      pcVar13 = (code *)local_80[0x22];\n      if (uVar3 < uVar4) {\nLAB_00057b3e:\n        (*pcVar13)(param_12,unaff_retaddr,param_3,param_6);\n        local_24 = 0;\n      }\n      else {\n        (*pcVar13)(param_12,param_3,unaff_retaddr,param_6);\n        local_24 = 1;\n      }\n      local_40 = 0;\n      *local_5c = 0;\n    }\n    else {\n      (*pcVar13)(param_3,param_5,param_3,param_6);\n      *local_3c = 0;\n      iVar7 = (*(code *)*local_80)(param_12,param_3,unaff_retaddr,param_6);\n      *local_5c = iVar7;\n      local_30 = 0;\n      local_40 = 1;\n      local_24 = 0;\n    }\n  }" { (expression_statement "(*pcVar13)(param_5,param_4,param_5,param_6);" (call_expression "(*pcVar13)(param_5,param_4,param_5,param_6)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(param_5,param_4,param_5,param_6)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar7 = param_6;" (assignment_expression "iVar7 = param_6" identifier = identifier) ;) (do_statement "do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        local_5c = (int *)(param_12 + local_34 + -4);\n        local_3c = (int *)(param_3 + local_34 + -4);\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057ae8;\n      }\n      uVar3 = *(uint *)(param_5 + iVar7 * 4);\n      uVar4 = *(uint *)(param_3 + iVar7 * 4);\n    } while (uVar4 == uVar3);" do (compound_statement "{\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        local_5c = (int *)(param_12 + local_34 + -4);\n        local_3c = (int *)(param_3 + local_34 + -4);\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057ae8;\n      }\n      uVar3 = *(uint *)(param_5 + iVar7 * 4);\n      uVar4 = *(uint *)(param_3 + iVar7 * 4);\n    }" { (expression_statement "iVar7 = iVar7 + -1;" (assignment_expression "iVar7 = iVar7 + -1" identifier = (binary_expression "iVar7 + -1" identifier + number_literal)) ;) (if_statement "if (iVar7 < 0) {\n        local_5c = (int *)(param_12 + local_34 + -4);\n        local_3c = (int *)(param_3 + local_34 + -4);\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057ae8;\n      }" if (parenthesized_expression "(iVar7 < 0)" ( (binary_expression "iVar7 < 0" identifier < number_literal) )) (compound_statement "{\n        local_5c = (int *)(param_12 + local_34 + -4);\n        local_3c = (int *)(param_3 + local_34 + -4);\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057ae8;\n      }" { (expression_statement "local_5c = (int *)(param_12 + local_34 + -4);" (assignment_expression "local_5c = (int *)(param_12 + local_34 + -4)" identifier = (cast_expression "(int *)(param_12 + local_34 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_12 + local_34 + -4)" ( (binary_expression "param_12 + local_34 + -4" (binary_expression "param_12 + local_34" identifier + identifier) + number_literal) )))) ;) (expression_statement "local_3c = (int *)(param_3 + local_34 + -4);" (assignment_expression "local_3c = (int *)(param_3 + local_34 + -4)" identifier = (cast_expression "(int *)(param_3 + local_34 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + local_34 + -4)" ( (binary_expression "param_3 + local_34 + -4" (binary_expression "param_3 + local_34" identifier + identifier) + number_literal) )))) ;) (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" identifier = (cast_expression "(code *)local_80[0x22]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0x22]" identifier [ number_literal ]))) ;) (goto_statement "goto LAB_00057ae8;" goto statement_identifier ;) })) (expression_statement "uVar3 = *(uint *)(param_5 + iVar7 * 4);" (assignment_expression "uVar3 = *(uint *)(param_5 + iVar7 * 4)" identifier = (pointer_expression "*(uint *)(param_5 + iVar7 * 4)" * (cast_expression "(uint *)(param_5 + iVar7 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + iVar7 * 4)" ( (binary_expression "param_5 + iVar7 * 4" identifier + (binary_expression "iVar7 * 4" identifier * number_literal)) ))))) ;) (expression_statement "uVar4 = *(uint *)(param_3 + iVar7 * 4);" (assignment_expression "uVar4 = *(uint *)(param_3 + iVar7 * 4)" identifier = (pointer_expression "*(uint *)(param_3 + iVar7 * 4)" * (cast_expression "(uint *)(param_3 + iVar7 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + iVar7 * 4)" ( (binary_expression "param_3 + iVar7 * 4" identifier + (binary_expression "iVar7 * 4" identifier * number_literal)) ))))) ;) }) while (parenthesized_expression "(uVar4 == uVar3)" ( (binary_expression "uVar4 == uVar3" identifier == identifier) )) ;) (expression_statement "local_5c = (int *)(param_12 + local_34 + -4);" (assignment_expression "local_5c = (int *)(param_12 + local_34 + -4)" identifier = (cast_expression "(int *)(param_12 + local_34 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_12 + local_34 + -4)" ( (binary_expression "param_12 + local_34 + -4" (binary_expression "param_12 + local_34" identifier + identifier) + number_literal) )))) ;) (expression_statement "local_3c = (int *)(param_3 + local_34 + -4);" (assignment_expression "local_3c = (int *)(param_3 + local_34 + -4)" identifier = (cast_expression "(int *)(param_3 + local_34 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + local_34 + -4)" ( (binary_expression "param_3 + local_34 + -4" (binary_expression "param_3 + local_34" identifier + identifier) + number_literal) )))) ;) (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" identifier = (cast_expression "(code *)local_80[0x22]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0x22]" identifier [ number_literal ]))) ;) (if_statement "if (uVar3 < uVar4) {\nLAB_00057ae8:\n      (*pcVar13)(param_3,param_3,param_5,param_6);\n      *local_3c = 0;\n      local_30 = 0;\nLAB_00057b2c:\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) {\n          pcVar13 = (code *)local_80[0x22];\n          goto LAB_00057b3e;\n        }\n        uVar3 = *(uint *)(param_3 + iVar8 * 4);\n        uVar4 = *(uint *)(unaff_retaddr + iVar8 * 4);\n      } while (uVar4 == uVar3);\n      pcVar13 = (code *)local_80[0x22];\n      if (uVar3 < uVar4) {\nLAB_00057b3e:\n        (*pcVar13)(param_12,unaff_retaddr,param_3,param_6);\n        local_24 = 0;\n      }\n      else {\n        (*pcVar13)(param_12,param_3,unaff_retaddr,param_6);\n        local_24 = 1;\n      }\n      local_40 = 0;\n      *local_5c = 0;\n    }\n    else {\n      (*pcVar13)(param_3,param_5,param_3,param_6);\n      *local_3c = 0;\n      iVar7 = (*(code *)*local_80)(param_12,param_3,unaff_retaddr,param_6);\n      *local_5c = iVar7;\n      local_30 = 0;\n      local_40 = 1;\n      local_24 = 0;\n    }" if (parenthesized_expression "(uVar3 < uVar4)" ( (binary_expression "uVar3 < uVar4" identifier < identifier) )) (compound_statement "{\nLAB_00057ae8:\n      (*pcVar13)(param_3,param_3,param_5,param_6);\n      *local_3c = 0;\n      local_30 = 0;\nLAB_00057b2c:\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) {\n          pcVar13 = (code *)local_80[0x22];\n          goto LAB_00057b3e;\n        }\n        uVar3 = *(uint *)(param_3 + iVar8 * 4);\n        uVar4 = *(uint *)(unaff_retaddr + iVar8 * 4);\n      } while (uVar4 == uVar3);\n      pcVar13 = (code *)local_80[0x22];\n      if (uVar3 < uVar4) {\nLAB_00057b3e:\n        (*pcVar13)(param_12,unaff_retaddr,param_3,param_6);\n        local_24 = 0;\n      }\n      else {\n        (*pcVar13)(param_12,param_3,unaff_retaddr,param_6);\n        local_24 = 1;\n      }\n      local_40 = 0;\n      *local_5c = 0;\n    }" { (labeled_statement "LAB_00057ae8:\n      (*pcVar13)(param_3,param_3,param_5,param_6);" statement_identifier : (expression_statement "(*pcVar13)(param_3,param_3,param_5,param_6);" (call_expression "(*pcVar13)(param_3,param_3,param_5,param_6)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(param_3,param_3,param_5,param_6)" ( identifier , identifier , identifier , identifier ))) ;)) (expression_statement "*local_3c = 0;" (assignment_expression "*local_3c = 0" (pointer_expression "*local_3c" * identifier) = number_literal) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00057b2c:\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) {\n          pcVar13 = (code *)local_80[0x22];\n          goto LAB_00057b3e;\n        }\n        uVar3 = *(uint *)(param_3 + iVar8 * 4);\n        uVar4 = *(uint *)(unaff_retaddr + iVar8 * 4);\n      } while (uVar4 == uVar3);" statement_identifier : (do_statement "do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) {\n          pcVar13 = (code *)local_80[0x22];\n          goto LAB_00057b3e;\n        }\n        uVar3 = *(uint *)(param_3 + iVar8 * 4);\n        uVar4 = *(uint *)(unaff_retaddr + iVar8 * 4);\n      } while (uVar4 == uVar3);" do (compound_statement "{\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) {\n          pcVar13 = (code *)local_80[0x22];\n          goto LAB_00057b3e;\n        }\n        uVar3 = *(uint *)(param_3 + iVar8 * 4);\n        uVar4 = *(uint *)(unaff_retaddr + iVar8 * 4);\n      }" { (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (if_statement "if (iVar8 < 0) {\n          pcVar13 = (code *)local_80[0x22];\n          goto LAB_00057b3e;\n        }" if (parenthesized_expression "(iVar8 < 0)" ( (binary_expression "iVar8 < 0" identifier < number_literal) )) (compound_statement "{\n          pcVar13 = (code *)local_80[0x22];\n          goto LAB_00057b3e;\n        }" { (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" identifier = (cast_expression "(code *)local_80[0x22]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0x22]" identifier [ number_literal ]))) ;) (goto_statement "goto LAB_00057b3e;" goto statement_identifier ;) })) (expression_statement "uVar3 = *(uint *)(param_3 + iVar8 * 4);" (assignment_expression "uVar3 = *(uint *)(param_3 + iVar8 * 4)" identifier = (pointer_expression "*(uint *)(param_3 + iVar8 * 4)" * (cast_expression "(uint *)(param_3 + iVar8 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + iVar8 * 4)" ( (binary_expression "param_3 + iVar8 * 4" identifier + (binary_expression "iVar8 * 4" identifier * number_literal)) ))))) ;) (expression_statement "uVar4 = *(uint *)(unaff_retaddr + iVar8 * 4);" (assignment_expression "uVar4 = *(uint *)(unaff_retaddr + iVar8 * 4)" identifier = (pointer_expression "*(uint *)(unaff_retaddr + iVar8 * 4)" * (cast_expression "(uint *)(unaff_retaddr + iVar8 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + iVar8 * 4)" ( (binary_expression "unaff_retaddr + iVar8 * 4" identifier + (binary_expression "iVar8 * 4" identifier * number_literal)) ))))) ;) }) while (parenthesized_expression "(uVar4 == uVar3)" ( (binary_expression "uVar4 == uVar3" identifier == identifier) )) ;)) (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" identifier = (cast_expression "(code *)local_80[0x22]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0x22]" identifier [ number_literal ]))) ;) (if_statement "if (uVar3 < uVar4) {\nLAB_00057b3e:\n        (*pcVar13)(param_12,unaff_retaddr,param_3,param_6);\n        local_24 = 0;\n      }\n      else {\n        (*pcVar13)(param_12,param_3,unaff_retaddr,param_6);\n        local_24 = 1;\n      }" if (parenthesized_expression "(uVar3 < uVar4)" ( (binary_expression "uVar3 < uVar4" identifier < identifier) )) (compound_statement "{\nLAB_00057b3e:\n        (*pcVar13)(param_12,unaff_retaddr,param_3,param_6);\n        local_24 = 0;\n      }" { (labeled_statement "LAB_00057b3e:\n        (*pcVar13)(param_12,unaff_retaddr,param_3,param_6);" statement_identifier : (expression_statement "(*pcVar13)(param_12,unaff_retaddr,param_3,param_6);" (call_expression "(*pcVar13)(param_12,unaff_retaddr,param_3,param_6)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(param_12,unaff_retaddr,param_3,param_6)" ( identifier , identifier , identifier , identifier ))) ;)) (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        (*pcVar13)(param_12,param_3,unaff_retaddr,param_6);\n        local_24 = 1;\n      }" else (compound_statement "{\n        (*pcVar13)(param_12,param_3,unaff_retaddr,param_6);\n        local_24 = 1;\n      }" { (expression_statement "(*pcVar13)(param_12,param_3,unaff_retaddr,param_6);" (call_expression "(*pcVar13)(param_12,param_3,unaff_retaddr,param_6)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(param_12,param_3,unaff_retaddr,param_6)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "local_24 = 1;" (assignment_expression "local_24 = 1" identifier = number_literal) ;) }))) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (expression_statement "*local_5c = 0;" (assignment_expression "*local_5c = 0" (pointer_expression "*local_5c" * identifier) = number_literal) ;) }) (else_clause "else {\n      (*pcVar13)(param_3,param_5,param_3,param_6);\n      *local_3c = 0;\n      iVar7 = (*(code *)*local_80)(param_12,param_3,unaff_retaddr,param_6);\n      *local_5c = iVar7;\n      local_30 = 0;\n      local_40 = 1;\n      local_24 = 0;\n    }" else (compound_statement "{\n      (*pcVar13)(param_3,param_5,param_3,param_6);\n      *local_3c = 0;\n      iVar7 = (*(code *)*local_80)(param_12,param_3,unaff_retaddr,param_6);\n      *local_5c = iVar7;\n      local_30 = 0;\n      local_40 = 1;\n      local_24 = 0;\n    }" { (expression_statement "(*pcVar13)(param_3,param_5,param_3,param_6);" (call_expression "(*pcVar13)(param_3,param_5,param_3,param_6)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(param_3,param_5,param_3,param_6)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "*local_3c = 0;" (assignment_expression "*local_3c = 0" (pointer_expression "*local_3c" * identifier) = number_literal) ;) (expression_statement "iVar7 = (*(code *)*local_80)(param_12,param_3,unaff_retaddr,param_6);" (assignment_expression "iVar7 = (*(code *)*local_80)(param_12,param_3,unaff_retaddr,param_6)" identifier = (call_expression "(*(code *)*local_80)(param_12,param_3,unaff_retaddr,param_6)" (parenthesized_expression "(*(code *)*local_80)" ( (pointer_expression "*(code *)*local_80" * (cast_expression "(code *)*local_80" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_80" * identifier))) )) (argument_list "(param_12,param_3,unaff_retaddr,param_6)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "*local_5c = iVar7;" (assignment_expression "*local_5c = iVar7" (pointer_expression "*local_5c" * identifier) = identifier) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_40 = 1;" (assignment_expression "local_40 = 1" identifier = number_literal) ;) (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" identifier = number_literal) ;) }))) }))) (expression_statement "local_34 = local_34 + -4;" (assignment_expression "local_34 = local_34 + -4" identifier = (binary_expression "local_34 + -4" identifier + number_literal)) ;) (if_statement "if (param_6 < param_11) {\n    __gmpn_mul(iVar14,param_7,param_11,unaff_retaddr,param_6);\n  }\n  else {\n    __gmpn_mul(iVar14,unaff_retaddr,param_6,param_7,param_11);\n  }" if (parenthesized_expression "(param_6 < param_11)" ( (binary_expression "param_6 < param_11" identifier < identifier) )) (compound_statement "{\n    __gmpn_mul(iVar14,param_7,param_11,unaff_retaddr,param_6);\n  }" { (expression_statement "__gmpn_mul(iVar14,param_7,param_11,unaff_retaddr,param_6);" (call_expression "__gmpn_mul(iVar14,param_7,param_11,unaff_retaddr,param_6)" identifier (argument_list "(iVar14,param_7,param_11,unaff_retaddr,param_6)" ( identifier , identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n    __gmpn_mul(iVar14,unaff_retaddr,param_6,param_7,param_11);\n  }" else (compound_statement "{\n    __gmpn_mul(iVar14,unaff_retaddr,param_6,param_7,param_11);\n  }" { (expression_statement "__gmpn_mul(iVar14,unaff_retaddr,param_6,param_7,param_11);" (call_expression "__gmpn_mul(iVar14,unaff_retaddr,param_6,param_7,param_11)" identifier (argument_list "(iVar14,unaff_retaddr,param_6,param_7,param_11)" ( identifier , identifier , identifier , identifier , identifier ))) ;) }))) (expression_statement "uVar9 = (*(code *)*local_80)(unaff_retaddr,iVar6,iVar14,param_6 + param_11);" (assignment_expression "uVar9 = (*(code *)*local_80)(unaff_retaddr,iVar6,iVar14,param_6 + param_11)" identifier = (call_expression "(*(code *)*local_80)(unaff_retaddr,iVar6,iVar14,param_6 + param_11)" (parenthesized_expression "(*(code *)*local_80)" ( (pointer_expression "*(code *)*local_80" * (cast_expression "(code *)*local_80" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_80" * identifier))) )) (argument_list "(unaff_retaddr,iVar6,iVar14,param_6 + param_11)" ( identifier , identifier , identifier , (binary_expression "param_6 + param_11" identifier + identifier) )))) ;) (expression_statement "*(undefined4 *)(unaff_retaddr + -4 + iVar10) = uVar9;" (assignment_expression "*(undefined4 *)(unaff_retaddr + -4 + iVar10) = uVar9" (pointer_expression "*(undefined4 *)(unaff_retaddr + -4 + iVar10)" * (cast_expression "(undefined4 *)(unaff_retaddr + -4 + iVar10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + -4 + iVar10)" ( (binary_expression "unaff_retaddr + -4 + iVar10" (binary_expression "unaff_retaddr + -4" identifier + number_literal) + identifier) )))) = identifier) ;) (expression_statement "iVar7 = param_11;" (assignment_expression "iVar7 = param_11" identifier = identifier) ;) (do_statement "do {\n    iVar7 = iVar7 + -1;\n    if (iVar7 < 0) {\n      pcVar13 = (code *)local_80[0x22];\n      goto LAB_000574ba;\n    }\n    uVar3 = *(uint *)(param_9 + iVar7 * 4);\n    uVar4 = *(uint *)(param_10 + iVar7 * 4);\n  } while (uVar4 == uVar3);" do (compound_statement "{\n    iVar7 = iVar7 + -1;\n    if (iVar7 < 0) {\n      pcVar13 = (code *)local_80[0x22];\n      goto LAB_000574ba;\n    }\n    uVar3 = *(uint *)(param_9 + iVar7 * 4);\n    uVar4 = *(uint *)(param_10 + iVar7 * 4);\n  }" { (expression_statement "iVar7 = iVar7 + -1;" (assignment_expression "iVar7 = iVar7 + -1" identifier = (binary_expression "iVar7 + -1" identifier + number_literal)) ;) (if_statement "if (iVar7 < 0) {\n      pcVar13 = (code *)local_80[0x22];\n      goto LAB_000574ba;\n    }" if (parenthesized_expression "(iVar7 < 0)" ( (binary_expression "iVar7 < 0" identifier < number_literal) )) (compound_statement "{\n      pcVar13 = (code *)local_80[0x22];\n      goto LAB_000574ba;\n    }" { (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" identifier = (cast_expression "(code *)local_80[0x22]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0x22]" identifier [ number_literal ]))) ;) (goto_statement "goto LAB_000574ba;" goto statement_identifier ;) })) (expression_statement "uVar3 = *(uint *)(param_9 + iVar7 * 4);" (assignment_expression "uVar3 = *(uint *)(param_9 + iVar7 * 4)" identifier = (pointer_expression "*(uint *)(param_9 + iVar7 * 4)" * (cast_expression "(uint *)(param_9 + iVar7 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_9 + iVar7 * 4)" ( (binary_expression "param_9 + iVar7 * 4" identifier + (binary_expression "iVar7 * 4" identifier * number_literal)) ))))) ;) (expression_statement "uVar4 = *(uint *)(param_10 + iVar7 * 4);" (assignment_expression "uVar4 = *(uint *)(param_10 + iVar7 * 4)" identifier = (pointer_expression "*(uint *)(param_10 + iVar7 * 4)" * (cast_expression "(uint *)(param_10 + iVar7 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_10 + iVar7 * 4)" ( (binary_expression "param_10 + iVar7 * 4" identifier + (binary_expression "iVar7 * 4" identifier * number_literal)) ))))) ;) }) while (parenthesized_expression "(uVar4 == uVar3)" ( (binary_expression "uVar4 == uVar3" identifier == identifier) )) ;) (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" identifier = (cast_expression "(code *)local_80[0x22]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0x22]" identifier [ number_literal ]))) ;) (if_statement "if (uVar3 < uVar4) {\nLAB_000574ba:\n    (*pcVar13)(iVar5,param_10,param_9,param_11);\n    local_60 = 0;\n  }\n  else {\n    (*pcVar13)(iVar5,param_9,param_10,param_11);\n    local_30 = local_30 ^ 1;\n    local_60 = 1;\n  }" if (parenthesized_expression "(uVar3 < uVar4)" ( (binary_expression "uVar3 < uVar4" identifier < identifier) )) (compound_statement "{\nLAB_000574ba:\n    (*pcVar13)(iVar5,param_10,param_9,param_11);\n    local_60 = 0;\n  }" { (labeled_statement "LAB_000574ba:\n    (*pcVar13)(iVar5,param_10,param_9,param_11);" statement_identifier : (expression_statement "(*pcVar13)(iVar5,param_10,param_9,param_11);" (call_expression "(*pcVar13)(iVar5,param_10,param_9,param_11)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(iVar5,param_10,param_9,param_11)" ( identifier , identifier , identifier , identifier ))) ;)) (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    (*pcVar13)(iVar5,param_9,param_10,param_11);\n    local_30 = local_30 ^ 1;\n    local_60 = 1;\n  }" else (compound_statement "{\n    (*pcVar13)(iVar5,param_9,param_10,param_11);\n    local_30 = local_30 ^ 1;\n    local_60 = 1;\n  }" { (expression_statement "(*pcVar13)(iVar5,param_9,param_10,param_11);" (call_expression "(*pcVar13)(iVar5,param_9,param_10,param_11)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(iVar5,param_9,param_10,param_11)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "local_30 = local_30 ^ 1;" (assignment_expression "local_30 = local_30 ^ 1" identifier = (binary_expression "local_30 ^ 1" identifier ^ number_literal)) ;) (expression_statement "local_60 = 1;" (assignment_expression "local_60 = 1" identifier = number_literal) ;) }))) (if_statement "if (param_6 < param_11) {\n    __gmpn_mul(iVar14,iVar5,param_11,param_5,param_6);\n  }\n  else {\n    __gmpn_mul(iVar14,param_5,param_6,iVar5,param_11);\n  }" if (parenthesized_expression "(param_6 < param_11)" ( (binary_expression "param_6 < param_11" identifier < identifier) )) (compound_statement "{\n    __gmpn_mul(iVar14,iVar5,param_11,param_5,param_6);\n  }" { (expression_statement "__gmpn_mul(iVar14,iVar5,param_11,param_5,param_6);" (call_expression "__gmpn_mul(iVar14,iVar5,param_11,param_5,param_6)" identifier (argument_list "(iVar14,iVar5,param_11,param_5,param_6)" ( identifier , identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n    __gmpn_mul(iVar14,param_5,param_6,iVar5,param_11);\n  }" else (compound_statement "{\n    __gmpn_mul(iVar14,param_5,param_6,iVar5,param_11);\n  }" { (expression_statement "__gmpn_mul(iVar14,param_5,param_6,iVar5,param_11);" (call_expression "__gmpn_mul(iVar14,param_5,param_6,iVar5,param_11)" identifier (argument_list "(iVar14,param_5,param_6,iVar5,param_11)" ( identifier , identifier , identifier , identifier , identifier ))) ;) }))) (expression_statement "*(undefined4 *)(iVar14 + -4 + iVar10) = 0;" (assignment_expression "*(undefined4 *)(iVar14 + -4 + iVar10) = 0" (pointer_expression "*(undefined4 *)(iVar14 + -4 + iVar10)" * (cast_expression "(undefined4 *)(iVar14 + -4 + iVar10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + -4 + iVar10)" ( (binary_expression "iVar14 + -4 + iVar10" (binary_expression "iVar14 + -4" identifier + number_literal) + identifier) )))) = number_literal) ;) (expression_statement "piVar2 = (int *)(iVar5 + -4 + iVar1 * 4);" (assignment_expression "piVar2 = (int *)(iVar5 + -4 + iVar1 * 4)" identifier = (cast_expression "(int *)(iVar5 + -4 + iVar1 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + -4 + iVar1 * 4)" ( (binary_expression "iVar5 + -4 + iVar1 * 4" (binary_expression "iVar5 + -4" identifier + number_literal) + (binary_expression "iVar1 * 4" identifier * number_literal)) )))) ;) (expression_statement "iVar7 = param_11;" (assignment_expression "iVar7 = param_11" identifier = identifier) ;) (if_statement "if (local_60 == 0) {\n    iVar7 = (*(code *)*local_80)(iVar5,iVar5,param_8,param_11);\n    *piVar2 = iVar7;\n    if (iVar7 == 0) goto LAB_00057a50;\n    if (param_11 < param_6) {\n      __gmpn_mul(param_5,param_3,param_6,iVar5,iVar1);\n    }\n    else {\n      __gmpn_mul(param_5,iVar5,iVar1,param_3,param_6);\n    }\n    if (*(int *)(param_3 + local_34) != 0) {\n      (*(code *)*local_80)(local_34 + param_5,local_34 + param_5,iVar5,iVar1);\n    }\n  }\n  else {\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057a2e;\n      }\n      uVar3 = *(uint *)(iVar5 + iVar7 * 4);\n      uVar4 = *(uint *)(param_8 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_00057a2e:\n      (*pcVar13)(iVar5,param_8,iVar5,param_11);\n      local_60 = 0;\n    }\n    else {\n      (*pcVar13)(iVar5,iVar5,param_8,param_11);\n    }\n    *piVar2 = 0;\nLAB_00057a50:\n    if (iVar12 < param_11) {\n      __gmpn_mul(param_5,iVar5,param_11,param_3,iVar12);\n    }\n    else {\n      __gmpn_mul(param_5,param_3,iVar12,iVar5,param_11);\n    }\n  }" if (parenthesized_expression "(local_60 == 0)" ( (binary_expression "local_60 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar7 = (*(code *)*local_80)(iVar5,iVar5,param_8,param_11);\n    *piVar2 = iVar7;\n    if (iVar7 == 0) goto LAB_00057a50;\n    if (param_11 < param_6) {\n      __gmpn_mul(param_5,param_3,param_6,iVar5,iVar1);\n    }\n    else {\n      __gmpn_mul(param_5,iVar5,iVar1,param_3,param_6);\n    }\n    if (*(int *)(param_3 + local_34) != 0) {\n      (*(code *)*local_80)(local_34 + param_5,local_34 + param_5,iVar5,iVar1);\n    }\n  }" { (expression_statement "iVar7 = (*(code *)*local_80)(iVar5,iVar5,param_8,param_11);" (assignment_expression "iVar7 = (*(code *)*local_80)(iVar5,iVar5,param_8,param_11)" identifier = (call_expression "(*(code *)*local_80)(iVar5,iVar5,param_8,param_11)" (parenthesized_expression "(*(code *)*local_80)" ( (pointer_expression "*(code *)*local_80" * (cast_expression "(code *)*local_80" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_80" * identifier))) )) (argument_list "(iVar5,iVar5,param_8,param_11)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "*piVar2 = iVar7;" (assignment_expression "*piVar2 = iVar7" (pointer_expression "*piVar2" * identifier) = identifier) ;) (if_statement "if (iVar7 == 0) goto LAB_00057a50;" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00057a50;" goto statement_identifier ;)) (if_statement "if (param_11 < param_6) {\n      __gmpn_mul(param_5,param_3,param_6,iVar5,iVar1);\n    }\n    else {\n      __gmpn_mul(param_5,iVar5,iVar1,param_3,param_6);\n    }" if (parenthesized_expression "(param_11 < param_6)" ( (binary_expression "param_11 < param_6" identifier < identifier) )) (compound_statement "{\n      __gmpn_mul(param_5,param_3,param_6,iVar5,iVar1);\n    }" { (expression_statement "__gmpn_mul(param_5,param_3,param_6,iVar5,iVar1);" (call_expression "__gmpn_mul(param_5,param_3,param_6,iVar5,iVar1)" identifier (argument_list "(param_5,param_3,param_6,iVar5,iVar1)" ( identifier , identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n      __gmpn_mul(param_5,iVar5,iVar1,param_3,param_6);\n    }" else (compound_statement "{\n      __gmpn_mul(param_5,iVar5,iVar1,param_3,param_6);\n    }" { (expression_statement "__gmpn_mul(param_5,iVar5,iVar1,param_3,param_6);" (call_expression "__gmpn_mul(param_5,iVar5,iVar1,param_3,param_6)" identifier (argument_list "(param_5,iVar5,iVar1,param_3,param_6)" ( identifier , identifier , identifier , identifier , identifier ))) ;) }))) (if_statement "if (*(int *)(param_3 + local_34) != 0) {\n      (*(code *)*local_80)(local_34 + param_5,local_34 + param_5,iVar5,iVar1);\n    }" if (parenthesized_expression "(*(int *)(param_3 + local_34) != 0)" ( (binary_expression "*(int *)(param_3 + local_34) != 0" (pointer_expression "*(int *)(param_3 + local_34)" * (cast_expression "(int *)(param_3 + local_34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + local_34)" ( (binary_expression "param_3 + local_34" identifier + identifier) )))) != number_literal) )) (compound_statement "{\n      (*(code *)*local_80)(local_34 + param_5,local_34 + param_5,iVar5,iVar1);\n    }" { (expression_statement "(*(code *)*local_80)(local_34 + param_5,local_34 + param_5,iVar5,iVar1);" (call_expression "(*(code *)*local_80)(local_34 + param_5,local_34 + param_5,iVar5,iVar1)" (parenthesized_expression "(*(code *)*local_80)" ( (pointer_expression "*(code *)*local_80" * (cast_expression "(code *)*local_80" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_80" * identifier))) )) (argument_list "(local_34 + param_5,local_34 + param_5,iVar5,iVar1)" ( (binary_expression "local_34 + param_5" identifier + identifier) , (binary_expression "local_34 + param_5" identifier + identifier) , identifier , identifier ))) ;) })) }) (else_clause "else {\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057a2e;\n      }\n      uVar3 = *(uint *)(iVar5 + iVar7 * 4);\n      uVar4 = *(uint *)(param_8 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_00057a2e:\n      (*pcVar13)(iVar5,param_8,iVar5,param_11);\n      local_60 = 0;\n    }\n    else {\n      (*pcVar13)(iVar5,iVar5,param_8,param_11);\n    }\n    *piVar2 = 0;\nLAB_00057a50:\n    if (iVar12 < param_11) {\n      __gmpn_mul(param_5,iVar5,param_11,param_3,iVar12);\n    }\n    else {\n      __gmpn_mul(param_5,param_3,iVar12,iVar5,param_11);\n    }\n  }" else (compound_statement "{\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057a2e;\n      }\n      uVar3 = *(uint *)(iVar5 + iVar7 * 4);\n      uVar4 = *(uint *)(param_8 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_00057a2e:\n      (*pcVar13)(iVar5,param_8,iVar5,param_11);\n      local_60 = 0;\n    }\n    else {\n      (*pcVar13)(iVar5,iVar5,param_8,param_11);\n    }\n    *piVar2 = 0;\nLAB_00057a50:\n    if (iVar12 < param_11) {\n      __gmpn_mul(param_5,iVar5,param_11,param_3,iVar12);\n    }\n    else {\n      __gmpn_mul(param_5,param_3,iVar12,iVar5,param_11);\n    }\n  }" { (do_statement "do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057a2e;\n      }\n      uVar3 = *(uint *)(iVar5 + iVar7 * 4);\n      uVar4 = *(uint *)(param_8 + iVar7 * 4);\n    } while (uVar4 == uVar3);" do (compound_statement "{\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057a2e;\n      }\n      uVar3 = *(uint *)(iVar5 + iVar7 * 4);\n      uVar4 = *(uint *)(param_8 + iVar7 * 4);\n    }" { (expression_statement "iVar7 = iVar7 + -1;" (assignment_expression "iVar7 = iVar7 + -1" identifier = (binary_expression "iVar7 + -1" identifier + number_literal)) ;) (if_statement "if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057a2e;\n      }" if (parenthesized_expression "(iVar7 < 0)" ( (binary_expression "iVar7 < 0" identifier < number_literal) )) (compound_statement "{\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057a2e;\n      }" { (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" identifier = (cast_expression "(code *)local_80[0x22]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0x22]" identifier [ number_literal ]))) ;) (goto_statement "goto LAB_00057a2e;" goto statement_identifier ;) })) (expression_statement "uVar3 = *(uint *)(iVar5 + iVar7 * 4);" (assignment_expression "uVar3 = *(uint *)(iVar5 + iVar7 * 4)" identifier = (pointer_expression "*(uint *)(iVar5 + iVar7 * 4)" * (cast_expression "(uint *)(iVar5 + iVar7 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + iVar7 * 4)" ( (binary_expression "iVar5 + iVar7 * 4" identifier + (binary_expression "iVar7 * 4" identifier * number_literal)) ))))) ;) (expression_statement "uVar4 = *(uint *)(param_8 + iVar7 * 4);" (assignment_expression "uVar4 = *(uint *)(param_8 + iVar7 * 4)" identifier = (pointer_expression "*(uint *)(param_8 + iVar7 * 4)" * (cast_expression "(uint *)(param_8 + iVar7 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_8 + iVar7 * 4)" ( (binary_expression "param_8 + iVar7 * 4" identifier + (binary_expression "iVar7 * 4" identifier * number_literal)) ))))) ;) }) while (parenthesized_expression "(uVar4 == uVar3)" ( (binary_expression "uVar4 == uVar3" identifier == identifier) )) ;) (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" identifier = (cast_expression "(code *)local_80[0x22]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0x22]" identifier [ number_literal ]))) ;) (if_statement "if (uVar3 < uVar4) {\nLAB_00057a2e:\n      (*pcVar13)(iVar5,param_8,iVar5,param_11);\n      local_60 = 0;\n    }\n    else {\n      (*pcVar13)(iVar5,iVar5,param_8,param_11);\n    }" if (parenthesized_expression "(uVar3 < uVar4)" ( (binary_expression "uVar3 < uVar4" identifier < identifier) )) (compound_statement "{\nLAB_00057a2e:\n      (*pcVar13)(iVar5,param_8,iVar5,param_11);\n      local_60 = 0;\n    }" { (labeled_statement "LAB_00057a2e:\n      (*pcVar13)(iVar5,param_8,iVar5,param_11);" statement_identifier : (expression_statement "(*pcVar13)(iVar5,param_8,iVar5,param_11);" (call_expression "(*pcVar13)(iVar5,param_8,iVar5,param_11)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(iVar5,param_8,iVar5,param_11)" ( identifier , identifier , identifier , identifier ))) ;)) (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      (*pcVar13)(iVar5,iVar5,param_8,param_11);\n    }" else (compound_statement "{\n      (*pcVar13)(iVar5,iVar5,param_8,param_11);\n    }" { (expression_statement "(*pcVar13)(iVar5,iVar5,param_8,param_11);" (call_expression "(*pcVar13)(iVar5,iVar5,param_8,param_11)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(iVar5,iVar5,param_8,param_11)" ( identifier , identifier , identifier , identifier ))) ;) }))) (expression_statement "*piVar2 = 0;" (assignment_expression "*piVar2 = 0" (pointer_expression "*piVar2" * identifier) = number_literal) ;) (labeled_statement "LAB_00057a50:\n    if (iVar12 < param_11) {\n      __gmpn_mul(param_5,iVar5,param_11,param_3,iVar12);\n    }\n    else {\n      __gmpn_mul(param_5,param_3,iVar12,iVar5,param_11);\n    }" statement_identifier : (if_statement "if (iVar12 < param_11) {\n      __gmpn_mul(param_5,iVar5,param_11,param_3,iVar12);\n    }\n    else {\n      __gmpn_mul(param_5,param_3,iVar12,iVar5,param_11);\n    }" if (parenthesized_expression "(iVar12 < param_11)" ( (binary_expression "iVar12 < param_11" identifier < identifier) )) (compound_statement "{\n      __gmpn_mul(param_5,iVar5,param_11,param_3,iVar12);\n    }" { (expression_statement "__gmpn_mul(param_5,iVar5,param_11,param_3,iVar12);" (call_expression "__gmpn_mul(param_5,iVar5,param_11,param_3,iVar12)" identifier (argument_list "(param_5,iVar5,param_11,param_3,iVar12)" ( identifier , identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n      __gmpn_mul(param_5,param_3,iVar12,iVar5,param_11);\n    }" else (compound_statement "{\n      __gmpn_mul(param_5,param_3,iVar12,iVar5,param_11);\n    }" { (expression_statement "__gmpn_mul(param_5,param_3,iVar12,iVar5,param_11);" (call_expression "__gmpn_mul(param_5,param_3,iVar12,iVar5,param_11)" identifier (argument_list "(param_5,param_3,iVar12,iVar5,param_11)" ( identifier , identifier , identifier , identifier , identifier ))) ;) })))) }))) (expression_statement "*(undefined4 *)(iVar6 + -4 + iVar10) = 0;" (assignment_expression "*(undefined4 *)(iVar6 + -4 + iVar10) = 0" (pointer_expression "*(undefined4 *)(iVar6 + -4 + iVar10)" * (cast_expression "(undefined4 *)(iVar6 + -4 + iVar10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + -4 + iVar10)" ( (binary_expression "iVar6 + -4 + iVar10" (binary_expression "iVar6 + -4" identifier + number_literal) + identifier) )))) = number_literal) ;) (expression_statement "iVar10 = iVar11;" (assignment_expression "iVar10 = iVar11" identifier = identifier) ;) (if_statement "if (local_40 == local_60) {\n    (*(code *)*local_80)(param_5,param_5,iVar6,iVar11);\n    local_64 = 0;\n    if (local_60 == 0) goto LAB_000578c7;\nLAB_000575ee:\n    iVar11 = (*(code *)*local_80)(iVar5,iVar5,param_7,param_11);\n    *piVar2 = iVar11;\nLAB_00057608:\n    if (param_6 <= param_11) goto LAB_000578fc;\nLAB_00057610:\n    __gmpn_mul(iVar6,param_4,param_6,iVar5,iVar1);\n    if (local_40 != 0) goto LAB_00057638;\nLAB_00057924:\n    iVar11 = (*(code *)*local_80)(param_3,param_3,param_4,param_6);\n    *local_3c = *local_3c + iVar11;\n  }\n  else {\n    do {\n      iVar10 = iVar10 + -1;\n      if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000575cb;\n      }\n      uVar3 = *(uint *)(param_5 + iVar10 * 4);\n      uVar4 = *(uint *)(iVar6 + iVar10 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_000575cb:\n      (*pcVar13)(param_5,iVar6,param_5,iVar11);\n      local_64 = 0;\n    }\n    else {\n      (*pcVar13)(param_5,param_5,iVar6,iVar11);\n      local_64 = 1;\n    }\n    if (local_60 != 0) goto LAB_000575ee;\nLAB_000578c7:\n    pcVar13 = (code *)local_80[0x22];\n    iVar11 = param_11;\n    if (*piVar2 == 0) {\n      do {\n        iVar11 = iVar11 + -1;\n        if (iVar11 < 0) goto LAB_00057cd1;\n        uVar3 = *(uint *)(param_7 + iVar11 * 4);\n        uVar4 = *(uint *)(iVar5 + iVar11 * 4);\n      } while (uVar4 == uVar3);\n      if (uVar3 < uVar4) {\nLAB_00057cd1:\n        (*pcVar13)(iVar5,iVar5,param_7,param_11);\n      }\n      else {\n        (*pcVar13)(iVar5,param_7,iVar5,param_11);\n        local_60 = 1;\n      }\n      goto LAB_00057608;\n    }\n    iVar11 = (*pcVar13)(iVar5,iVar5,param_7,param_11);\n    *piVar2 = *piVar2 - iVar11;\n    if (param_11 < param_6) goto LAB_00057610;\nLAB_000578fc:\n    __gmpn_mul(iVar6,iVar5,iVar1,param_4,param_6);\n    if (local_40 == 0) goto LAB_00057924;\nLAB_00057638:\n    (*(code *)local_80[0x22])(param_3,param_4,param_3,param_6);\n  }" if (parenthesized_expression "(local_40 == local_60)" ( (binary_expression "local_40 == local_60" identifier == identifier) )) (compound_statement "{\n    (*(code *)*local_80)(param_5,param_5,iVar6,iVar11);\n    local_64 = 0;\n    if (local_60 == 0) goto LAB_000578c7;\nLAB_000575ee:\n    iVar11 = (*(code *)*local_80)(iVar5,iVar5,param_7,param_11);\n    *piVar2 = iVar11;\nLAB_00057608:\n    if (param_6 <= param_11) goto LAB_000578fc;\nLAB_00057610:\n    __gmpn_mul(iVar6,param_4,param_6,iVar5,iVar1);\n    if (local_40 != 0) goto LAB_00057638;\nLAB_00057924:\n    iVar11 = (*(code *)*local_80)(param_3,param_3,param_4,param_6);\n    *local_3c = *local_3c + iVar11;\n  }" { (expression_statement "(*(code *)*local_80)(param_5,param_5,iVar6,iVar11);" (call_expression "(*(code *)*local_80)(param_5,param_5,iVar6,iVar11)" (parenthesized_expression "(*(code *)*local_80)" ( (pointer_expression "*(code *)*local_80" * (cast_expression "(code *)*local_80" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_80" * identifier))) )) (argument_list "(param_5,param_5,iVar6,iVar11)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" identifier = number_literal) ;) (if_statement "if (local_60 == 0) goto LAB_000578c7;" if (parenthesized_expression "(local_60 == 0)" ( (binary_expression "local_60 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000578c7;" goto statement_identifier ;)) (labeled_statement "LAB_000575ee:\n    iVar11 = (*(code *)*local_80)(iVar5,iVar5,param_7,param_11);" statement_identifier : (expression_statement "iVar11 = (*(code *)*local_80)(iVar5,iVar5,param_7,param_11);" (assignment_expression "iVar11 = (*(code *)*local_80)(iVar5,iVar5,param_7,param_11)" identifier = (call_expression "(*(code *)*local_80)(iVar5,iVar5,param_7,param_11)" (parenthesized_expression "(*(code *)*local_80)" ( (pointer_expression "*(code *)*local_80" * (cast_expression "(code *)*local_80" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_80" * identifier))) )) (argument_list "(iVar5,iVar5,param_7,param_11)" ( identifier , identifier , identifier , identifier )))) ;)) (expression_statement "*piVar2 = iVar11;" (assignment_expression "*piVar2 = iVar11" (pointer_expression "*piVar2" * identifier) = identifier) ;) (labeled_statement "LAB_00057608:\n    if (param_6 <= param_11) goto LAB_000578fc;" statement_identifier : (if_statement "if (param_6 <= param_11) goto LAB_000578fc;" if (parenthesized_expression "(param_6 <= param_11)" ( (binary_expression "param_6 <= param_11" identifier <= identifier) )) (goto_statement "goto LAB_000578fc;" goto statement_identifier ;))) (labeled_statement "LAB_00057610:\n    __gmpn_mul(iVar6,param_4,param_6,iVar5,iVar1);" statement_identifier : (expression_statement "__gmpn_mul(iVar6,param_4,param_6,iVar5,iVar1);" (call_expression "__gmpn_mul(iVar6,param_4,param_6,iVar5,iVar1)" identifier (argument_list "(iVar6,param_4,param_6,iVar5,iVar1)" ( identifier , identifier , identifier , identifier , identifier ))) ;)) (if_statement "if (local_40 != 0) goto LAB_00057638;" if (parenthesized_expression "(local_40 != 0)" ( (binary_expression "local_40 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00057638;" goto statement_identifier ;)) (labeled_statement "LAB_00057924:\n    iVar11 = (*(code *)*local_80)(param_3,param_3,param_4,param_6);" statement_identifier : (expression_statement "iVar11 = (*(code *)*local_80)(param_3,param_3,param_4,param_6);" (assignment_expression "iVar11 = (*(code *)*local_80)(param_3,param_3,param_4,param_6)" identifier = (call_expression "(*(code *)*local_80)(param_3,param_3,param_4,param_6)" (parenthesized_expression "(*(code *)*local_80)" ( (pointer_expression "*(code *)*local_80" * (cast_expression "(code *)*local_80" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_80" * identifier))) )) (argument_list "(param_3,param_3,param_4,param_6)" ( identifier , identifier , identifier , identifier )))) ;)) (expression_statement "*local_3c = *local_3c + iVar11;" (assignment_expression "*local_3c = *local_3c + iVar11" (pointer_expression "*local_3c" * identifier) = (binary_expression "*local_3c + iVar11" (pointer_expression "*local_3c" * identifier) + identifier)) ;) }) (else_clause "else {\n    do {\n      iVar10 = iVar10 + -1;\n      if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000575cb;\n      }\n      uVar3 = *(uint *)(param_5 + iVar10 * 4);\n      uVar4 = *(uint *)(iVar6 + iVar10 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_000575cb:\n      (*pcVar13)(param_5,iVar6,param_5,iVar11);\n      local_64 = 0;\n    }\n    else {\n      (*pcVar13)(param_5,param_5,iVar6,iVar11);\n      local_64 = 1;\n    }\n    if (local_60 != 0) goto LAB_000575ee;\nLAB_000578c7:\n    pcVar13 = (code *)local_80[0x22];\n    iVar11 = param_11;\n    if (*piVar2 == 0) {\n      do {\n        iVar11 = iVar11 + -1;\n        if (iVar11 < 0) goto LAB_00057cd1;\n        uVar3 = *(uint *)(param_7 + iVar11 * 4);\n        uVar4 = *(uint *)(iVar5 + iVar11 * 4);\n      } while (uVar4 == uVar3);\n      if (uVar3 < uVar4) {\nLAB_00057cd1:\n        (*pcVar13)(iVar5,iVar5,param_7,param_11);\n      }\n      else {\n        (*pcVar13)(iVar5,param_7,iVar5,param_11);\n        local_60 = 1;\n      }\n      goto LAB_00057608;\n    }\n    iVar11 = (*pcVar13)(iVar5,iVar5,param_7,param_11);\n    *piVar2 = *piVar2 - iVar11;\n    if (param_11 < param_6) goto LAB_00057610;\nLAB_000578fc:\n    __gmpn_mul(iVar6,iVar5,iVar1,param_4,param_6);\n    if (local_40 == 0) goto LAB_00057924;\nLAB_00057638:\n    (*(code *)local_80[0x22])(param_3,param_4,param_3,param_6);\n  }" else (compound_statement "{\n    do {\n      iVar10 = iVar10 + -1;\n      if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000575cb;\n      }\n      uVar3 = *(uint *)(param_5 + iVar10 * 4);\n      uVar4 = *(uint *)(iVar6 + iVar10 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_000575cb:\n      (*pcVar13)(param_5,iVar6,param_5,iVar11);\n      local_64 = 0;\n    }\n    else {\n      (*pcVar13)(param_5,param_5,iVar6,iVar11);\n      local_64 = 1;\n    }\n    if (local_60 != 0) goto LAB_000575ee;\nLAB_000578c7:\n    pcVar13 = (code *)local_80[0x22];\n    iVar11 = param_11;\n    if (*piVar2 == 0) {\n      do {\n        iVar11 = iVar11 + -1;\n        if (iVar11 < 0) goto LAB_00057cd1;\n        uVar3 = *(uint *)(param_7 + iVar11 * 4);\n        uVar4 = *(uint *)(iVar5 + iVar11 * 4);\n      } while (uVar4 == uVar3);\n      if (uVar3 < uVar4) {\nLAB_00057cd1:\n        (*pcVar13)(iVar5,iVar5,param_7,param_11);\n      }\n      else {\n        (*pcVar13)(iVar5,param_7,iVar5,param_11);\n        local_60 = 1;\n      }\n      goto LAB_00057608;\n    }\n    iVar11 = (*pcVar13)(iVar5,iVar5,param_7,param_11);\n    *piVar2 = *piVar2 - iVar11;\n    if (param_11 < param_6) goto LAB_00057610;\nLAB_000578fc:\n    __gmpn_mul(iVar6,iVar5,iVar1,param_4,param_6);\n    if (local_40 == 0) goto LAB_00057924;\nLAB_00057638:\n    (*(code *)local_80[0x22])(param_3,param_4,param_3,param_6);\n  }" { (do_statement "do {\n      iVar10 = iVar10 + -1;\n      if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000575cb;\n      }\n      uVar3 = *(uint *)(param_5 + iVar10 * 4);\n      uVar4 = *(uint *)(iVar6 + iVar10 * 4);\n    } while (uVar4 == uVar3);" do (compound_statement "{\n      iVar10 = iVar10 + -1;\n      if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000575cb;\n      }\n      uVar3 = *(uint *)(param_5 + iVar10 * 4);\n      uVar4 = *(uint *)(iVar6 + iVar10 * 4);\n    }" { (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (if_statement "if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000575cb;\n      }" if (parenthesized_expression "(iVar10 < 0)" ( (binary_expression "iVar10 < 0" identifier < number_literal) )) (compound_statement "{\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000575cb;\n      }" { (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" identifier = (cast_expression "(code *)local_80[0x22]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0x22]" identifier [ number_literal ]))) ;) (goto_statement "goto LAB_000575cb;" goto statement_identifier ;) })) (expression_statement "uVar3 = *(uint *)(param_5 + iVar10 * 4);" (assignment_expression "uVar3 = *(uint *)(param_5 + iVar10 * 4)" identifier = (pointer_expression "*(uint *)(param_5 + iVar10 * 4)" * (cast_expression "(uint *)(param_5 + iVar10 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + iVar10 * 4)" ( (binary_expression "param_5 + iVar10 * 4" identifier + (binary_expression "iVar10 * 4" identifier * number_literal)) ))))) ;) (expression_statement "uVar4 = *(uint *)(iVar6 + iVar10 * 4);" (assignment_expression "uVar4 = *(uint *)(iVar6 + iVar10 * 4)" identifier = (pointer_expression "*(uint *)(iVar6 + iVar10 * 4)" * (cast_expression "(uint *)(iVar6 + iVar10 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + iVar10 * 4)" ( (binary_expression "iVar6 + iVar10 * 4" identifier + (binary_expression "iVar10 * 4" identifier * number_literal)) ))))) ;) }) while (parenthesized_expression "(uVar4 == uVar3)" ( (binary_expression "uVar4 == uVar3" identifier == identifier) )) ;) (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" identifier = (cast_expression "(code *)local_80[0x22]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0x22]" identifier [ number_literal ]))) ;) (if_statement "if (uVar3 < uVar4) {\nLAB_000575cb:\n      (*pcVar13)(param_5,iVar6,param_5,iVar11);\n      local_64 = 0;\n    }\n    else {\n      (*pcVar13)(param_5,param_5,iVar6,iVar11);\n      local_64 = 1;\n    }" if (parenthesized_expression "(uVar3 < uVar4)" ( (binary_expression "uVar3 < uVar4" identifier < identifier) )) (compound_statement "{\nLAB_000575cb:\n      (*pcVar13)(param_5,iVar6,param_5,iVar11);\n      local_64 = 0;\n    }" { (labeled_statement "LAB_000575cb:\n      (*pcVar13)(param_5,iVar6,param_5,iVar11);" statement_identifier : (expression_statement "(*pcVar13)(param_5,iVar6,param_5,iVar11);" (call_expression "(*pcVar13)(param_5,iVar6,param_5,iVar11)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(param_5,iVar6,param_5,iVar11)" ( identifier , identifier , identifier , identifier ))) ;)) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      (*pcVar13)(param_5,param_5,iVar6,iVar11);\n      local_64 = 1;\n    }" else (compound_statement "{\n      (*pcVar13)(param_5,param_5,iVar6,iVar11);\n      local_64 = 1;\n    }" { (expression_statement "(*pcVar13)(param_5,param_5,iVar6,iVar11);" (call_expression "(*pcVar13)(param_5,param_5,iVar6,iVar11)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(param_5,param_5,iVar6,iVar11)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "local_64 = 1;" (assignment_expression "local_64 = 1" identifier = number_literal) ;) }))) (if_statement "if (local_60 != 0) goto LAB_000575ee;" if (parenthesized_expression "(local_60 != 0)" ( (binary_expression "local_60 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000575ee;" goto statement_identifier ;)) (labeled_statement "LAB_000578c7:\n    pcVar13 = (code *)local_80[0x22];" statement_identifier : (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" identifier = (cast_expression "(code *)local_80[0x22]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0x22]" identifier [ number_literal ]))) ;)) (expression_statement "iVar11 = param_11;" (assignment_expression "iVar11 = param_11" identifier = identifier) ;) (if_statement "if (*piVar2 == 0) {\n      do {\n        iVar11 = iVar11 + -1;\n        if (iVar11 < 0) goto LAB_00057cd1;\n        uVar3 = *(uint *)(param_7 + iVar11 * 4);\n        uVar4 = *(uint *)(iVar5 + iVar11 * 4);\n      } while (uVar4 == uVar3);\n      if (uVar3 < uVar4) {\nLAB_00057cd1:\n        (*pcVar13)(iVar5,iVar5,param_7,param_11);\n      }\n      else {\n        (*pcVar13)(iVar5,param_7,iVar5,param_11);\n        local_60 = 1;\n      }\n      goto LAB_00057608;\n    }" if (parenthesized_expression "(*piVar2 == 0)" ( (binary_expression "*piVar2 == 0" (pointer_expression "*piVar2" * identifier) == number_literal) )) (compound_statement "{\n      do {\n        iVar11 = iVar11 + -1;\n        if (iVar11 < 0) goto LAB_00057cd1;\n        uVar3 = *(uint *)(param_7 + iVar11 * 4);\n        uVar4 = *(uint *)(iVar5 + iVar11 * 4);\n      } while (uVar4 == uVar3);\n      if (uVar3 < uVar4) {\nLAB_00057cd1:\n        (*pcVar13)(iVar5,iVar5,param_7,param_11);\n      }\n      else {\n        (*pcVar13)(iVar5,param_7,iVar5,param_11);\n        local_60 = 1;\n      }\n      goto LAB_00057608;\n    }" { (do_statement "do {\n        iVar11 = iVar11 + -1;\n        if (iVar11 < 0) goto LAB_00057cd1;\n        uVar3 = *(uint *)(param_7 + iVar11 * 4);\n        uVar4 = *(uint *)(iVar5 + iVar11 * 4);\n      } while (uVar4 == uVar3);" do (compound_statement "{\n        iVar11 = iVar11 + -1;\n        if (iVar11 < 0) goto LAB_00057cd1;\n        uVar3 = *(uint *)(param_7 + iVar11 * 4);\n        uVar4 = *(uint *)(iVar5 + iVar11 * 4);\n      }" { (expression_statement "iVar11 = iVar11 + -1;" (assignment_expression "iVar11 = iVar11 + -1" identifier = (binary_expression "iVar11 + -1" identifier + number_literal)) ;) (if_statement "if (iVar11 < 0) goto LAB_00057cd1;" if (parenthesized_expression "(iVar11 < 0)" ( (binary_expression "iVar11 < 0" identifier < number_literal) )) (goto_statement "goto LAB_00057cd1;" goto statement_identifier ;)) (expression_statement "uVar3 = *(uint *)(param_7 + iVar11 * 4);" (assignment_expression "uVar3 = *(uint *)(param_7 + iVar11 * 4)" identifier = (pointer_expression "*(uint *)(param_7 + iVar11 * 4)" * (cast_expression "(uint *)(param_7 + iVar11 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + iVar11 * 4)" ( (binary_expression "param_7 + iVar11 * 4" identifier + (binary_expression "iVar11 * 4" identifier * number_literal)) ))))) ;) (expression_statement "uVar4 = *(uint *)(iVar5 + iVar11 * 4);" (assignment_expression "uVar4 = *(uint *)(iVar5 + iVar11 * 4)" identifier = (pointer_expression "*(uint *)(iVar5 + iVar11 * 4)" * (cast_expression "(uint *)(iVar5 + iVar11 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + iVar11 * 4)" ( (binary_expression "iVar5 + iVar11 * 4" identifier + (binary_expression "iVar11 * 4" identifier * number_literal)) ))))) ;) }) while (parenthesized_expression "(uVar4 == uVar3)" ( (binary_expression "uVar4 == uVar3" identifier == identifier) )) ;) (if_statement "if (uVar3 < uVar4) {\nLAB_00057cd1:\n        (*pcVar13)(iVar5,iVar5,param_7,param_11);\n      }\n      else {\n        (*pcVar13)(iVar5,param_7,iVar5,param_11);\n        local_60 = 1;\n      }" if (parenthesized_expression "(uVar3 < uVar4)" ( (binary_expression "uVar3 < uVar4" identifier < identifier) )) (compound_statement "{\nLAB_00057cd1:\n        (*pcVar13)(iVar5,iVar5,param_7,param_11);\n      }" { (labeled_statement "LAB_00057cd1:\n        (*pcVar13)(iVar5,iVar5,param_7,param_11);" statement_identifier : (expression_statement "(*pcVar13)(iVar5,iVar5,param_7,param_11);" (call_expression "(*pcVar13)(iVar5,iVar5,param_7,param_11)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(iVar5,iVar5,param_7,param_11)" ( identifier , identifier , identifier , identifier ))) ;)) }) (else_clause "else {\n        (*pcVar13)(iVar5,param_7,iVar5,param_11);\n        local_60 = 1;\n      }" else (compound_statement "{\n        (*pcVar13)(iVar5,param_7,iVar5,param_11);\n        local_60 = 1;\n      }" { (expression_statement "(*pcVar13)(iVar5,param_7,iVar5,param_11);" (call_expression "(*pcVar13)(iVar5,param_7,iVar5,param_11)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(iVar5,param_7,iVar5,param_11)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "local_60 = 1;" (assignment_expression "local_60 = 1" identifier = number_literal) ;) }))) (goto_statement "goto LAB_00057608;" goto statement_identifier ;) })) (expression_statement "iVar11 = (*pcVar13)(iVar5,iVar5,param_7,param_11);" (assignment_expression "iVar11 = (*pcVar13)(iVar5,iVar5,param_7,param_11)" identifier = (call_expression "(*pcVar13)(iVar5,iVar5,param_7,param_11)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(iVar5,iVar5,param_7,param_11)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "*piVar2 = *piVar2 - iVar11;" (assignment_expression "*piVar2 = *piVar2 - iVar11" (pointer_expression "*piVar2" * identifier) = (binary_expression "*piVar2 - iVar11" (pointer_expression "*piVar2" * identifier) - identifier)) ;) (if_statement "if (param_11 < param_6) goto LAB_00057610;" if (parenthesized_expression "(param_11 < param_6)" ( (binary_expression "param_11 < param_6" identifier < identifier) )) (goto_statement "goto LAB_00057610;" goto statement_identifier ;)) (labeled_statement "LAB_000578fc:\n    __gmpn_mul(iVar6,iVar5,iVar1,param_4,param_6);" statement_identifier : (expression_statement "__gmpn_mul(iVar6,iVar5,iVar1,param_4,param_6);" (call_expression "__gmpn_mul(iVar6,iVar5,iVar1,param_4,param_6)" identifier (argument_list "(iVar6,iVar5,iVar1,param_4,param_6)" ( identifier , identifier , identifier , identifier , identifier ))) ;)) (if_statement "if (local_40 == 0) goto LAB_00057924;" if (parenthesized_expression "(local_40 == 0)" ( (binary_expression "local_40 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00057924;" goto statement_identifier ;)) (labeled_statement "LAB_00057638:\n    (*(code *)local_80[0x22])(param_3,param_4,param_3,param_6);" statement_identifier : (expression_statement "(*(code *)local_80[0x22])(param_3,param_4,param_3,param_6);" (call_expression "(*(code *)local_80[0x22])(param_3,param_4,param_3,param_6)" (parenthesized_expression "(*(code *)local_80[0x22])" ( (pointer_expression "*(code *)local_80[0x22]" * (cast_expression "(code *)local_80[0x22]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0x22]" identifier [ number_literal ]))) )) (argument_list "(param_3,param_4,param_3,param_6)" ( identifier , identifier , identifier , identifier ))) ;)) }))) (expression_statement "iVar11 = param_11 + iVar12;" (assignment_expression "iVar11 = param_11 + iVar12" identifier = (binary_expression "param_11 + iVar12" identifier + identifier)) ;) (expression_statement "iVar7 = iVar11;" (assignment_expression "iVar7 = iVar11" identifier = identifier) ;) (expression_statement "iVar10 = iVar11;" (assignment_expression "iVar10 = iVar11" identifier = identifier) ;) (if_statement "if (local_64 == local_60) {\n    (*(code *)*local_80)(param_4,param_5,iVar6,iVar11);\n    local_60 = local_64;\n    if (local_64 == local_30) goto LAB_00057971;\nLAB_000576cd:\n    do {\n      iVar10 = iVar10 + -1;\n      if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000576db;\n      }\n      uVar3 = *(uint *)(iVar14 + iVar10 * 4);\n      uVar4 = *(uint *)(param_5 + iVar10 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_000576db:\n      (*pcVar13)(param_5,param_5,iVar14,iVar11);\n    }\n    else {\n      (*pcVar13)(param_5,iVar14,param_5,iVar11);\n      local_64 = local_64 ^ 1;\n    }\n    if (param_11 <= iVar12) goto LAB_000576f3;\nLAB_0005798d:\n    __gmpn_mul(iVar6,param_8,param_11,param_12,iVar12);\n    iVar10 = (*(code *)*local_80)(iVar5,param_10,param_8,param_11);\n    *piVar2 = iVar10;\n  }\n  else {\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005768b;\n      }\n      uVar3 = *(uint *)(iVar6 + iVar7 * 4);\n      uVar4 = *(uint *)(param_5 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_0005768b:\n      (*pcVar13)(param_4,param_5,iVar6,iVar11);\n      local_60 = local_64;\n    }\n    else {\n      (*pcVar13)(param_4,iVar6,param_5,iVar11);\n      local_60 = local_64 ^ 1;\n    }\n    if (local_64 != local_30) goto LAB_000576cd;\nLAB_00057971:\n    (*(code *)*local_80)(param_5,param_5,iVar14,iVar11);\n    if (iVar12 < param_11) goto LAB_0005798d;\nLAB_000576f3:\n    __gmpn_mul(iVar6,param_12,iVar12,param_8,param_11);\n    iVar10 = (*(code *)*local_80)(iVar5,param_10,param_8,param_11);\n    *piVar2 = iVar10;\n    if (param_11 < iVar12) {\n      __gmpn_mul(iVar14,param_3,iVar12,iVar5,iVar1);\n      goto LAB_00057755;\n    }\n  }" if (parenthesized_expression "(local_64 == local_60)" ( (binary_expression "local_64 == local_60" identifier == identifier) )) (compound_statement "{\n    (*(code *)*local_80)(param_4,param_5,iVar6,iVar11);\n    local_60 = local_64;\n    if (local_64 == local_30) goto LAB_00057971;\nLAB_000576cd:\n    do {\n      iVar10 = iVar10 + -1;\n      if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000576db;\n      }\n      uVar3 = *(uint *)(iVar14 + iVar10 * 4);\n      uVar4 = *(uint *)(param_5 + iVar10 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_000576db:\n      (*pcVar13)(param_5,param_5,iVar14,iVar11);\n    }\n    else {\n      (*pcVar13)(param_5,iVar14,param_5,iVar11);\n      local_64 = local_64 ^ 1;\n    }\n    if (param_11 <= iVar12) goto LAB_000576f3;\nLAB_0005798d:\n    __gmpn_mul(iVar6,param_8,param_11,param_12,iVar12);\n    iVar10 = (*(code *)*local_80)(iVar5,param_10,param_8,param_11);\n    *piVar2 = iVar10;\n  }" { (expression_statement "(*(code *)*local_80)(param_4,param_5,iVar6,iVar11);" (call_expression "(*(code *)*local_80)(param_4,param_5,iVar6,iVar11)" (parenthesized_expression "(*(code *)*local_80)" ( (pointer_expression "*(code *)*local_80" * (cast_expression "(code *)*local_80" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_80" * identifier))) )) (argument_list "(param_4,param_5,iVar6,iVar11)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "local_60 = local_64;" (assignment_expression "local_60 = local_64" identifier = identifier) ;) (if_statement "if (local_64 == local_30) goto LAB_00057971;" if (parenthesized_expression "(local_64 == local_30)" ( (binary_expression "local_64 == local_30" identifier == identifier) )) (goto_statement "goto LAB_00057971;" goto statement_identifier ;)) (labeled_statement "LAB_000576cd:\n    do {\n      iVar10 = iVar10 + -1;\n      if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000576db;\n      }\n      uVar3 = *(uint *)(iVar14 + iVar10 * 4);\n      uVar4 = *(uint *)(param_5 + iVar10 * 4);\n    } while (uVar4 == uVar3);" statement_identifier : (do_statement "do {\n      iVar10 = iVar10 + -1;\n      if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000576db;\n      }\n      uVar3 = *(uint *)(iVar14 + iVar10 * 4);\n      uVar4 = *(uint *)(param_5 + iVar10 * 4);\n    } while (uVar4 == uVar3);" do (compound_statement "{\n      iVar10 = iVar10 + -1;\n      if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000576db;\n      }\n      uVar3 = *(uint *)(iVar14 + iVar10 * 4);\n      uVar4 = *(uint *)(param_5 + iVar10 * 4);\n    }" { (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (if_statement "if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000576db;\n      }" if (parenthesized_expression "(iVar10 < 0)" ( (binary_expression "iVar10 < 0" identifier < number_literal) )) (compound_statement "{\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000576db;\n      }" { (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" identifier = (cast_expression "(code *)local_80[0x22]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0x22]" identifier [ number_literal ]))) ;) (goto_statement "goto LAB_000576db;" goto statement_identifier ;) })) (expression_statement "uVar3 = *(uint *)(iVar14 + iVar10 * 4);" (assignment_expression "uVar3 = *(uint *)(iVar14 + iVar10 * 4)" identifier = (pointer_expression "*(uint *)(iVar14 + iVar10 * 4)" * (cast_expression "(uint *)(iVar14 + iVar10 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + iVar10 * 4)" ( (binary_expression "iVar14 + iVar10 * 4" identifier + (binary_expression "iVar10 * 4" identifier * number_literal)) ))))) ;) (expression_statement "uVar4 = *(uint *)(param_5 + iVar10 * 4);" (assignment_expression "uVar4 = *(uint *)(param_5 + iVar10 * 4)" identifier = (pointer_expression "*(uint *)(param_5 + iVar10 * 4)" * (cast_expression "(uint *)(param_5 + iVar10 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + iVar10 * 4)" ( (binary_expression "param_5 + iVar10 * 4" identifier + (binary_expression "iVar10 * 4" identifier * number_literal)) ))))) ;) }) while (parenthesized_expression "(uVar4 == uVar3)" ( (binary_expression "uVar4 == uVar3" identifier == identifier) )) ;)) (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" identifier = (cast_expression "(code *)local_80[0x22]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0x22]" identifier [ number_literal ]))) ;) (if_statement "if (uVar3 < uVar4) {\nLAB_000576db:\n      (*pcVar13)(param_5,param_5,iVar14,iVar11);\n    }\n    else {\n      (*pcVar13)(param_5,iVar14,param_5,iVar11);\n      local_64 = local_64 ^ 1;\n    }" if (parenthesized_expression "(uVar3 < uVar4)" ( (binary_expression "uVar3 < uVar4" identifier < identifier) )) (compound_statement "{\nLAB_000576db:\n      (*pcVar13)(param_5,param_5,iVar14,iVar11);\n    }" { (labeled_statement "LAB_000576db:\n      (*pcVar13)(param_5,param_5,iVar14,iVar11);" statement_identifier : (expression_statement "(*pcVar13)(param_5,param_5,iVar14,iVar11);" (call_expression "(*pcVar13)(param_5,param_5,iVar14,iVar11)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(param_5,param_5,iVar14,iVar11)" ( identifier , identifier , identifier , identifier ))) ;)) }) (else_clause "else {\n      (*pcVar13)(param_5,iVar14,param_5,iVar11);\n      local_64 = local_64 ^ 1;\n    }" else (compound_statement "{\n      (*pcVar13)(param_5,iVar14,param_5,iVar11);\n      local_64 = local_64 ^ 1;\n    }" { (expression_statement "(*pcVar13)(param_5,iVar14,param_5,iVar11);" (call_expression "(*pcVar13)(param_5,iVar14,param_5,iVar11)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(param_5,iVar14,param_5,iVar11)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "local_64 = local_64 ^ 1;" (assignment_expression "local_64 = local_64 ^ 1" identifier = (binary_expression "local_64 ^ 1" identifier ^ number_literal)) ;) }))) (if_statement "if (param_11 <= iVar12) goto LAB_000576f3;" if (parenthesized_expression "(param_11 <= iVar12)" ( (binary_expression "param_11 <= iVar12" identifier <= identifier) )) (goto_statement "goto LAB_000576f3;" goto statement_identifier ;)) (labeled_statement "LAB_0005798d:\n    __gmpn_mul(iVar6,param_8,param_11,param_12,iVar12);" statement_identifier : (expression_statement "__gmpn_mul(iVar6,param_8,param_11,param_12,iVar12);" (call_expression "__gmpn_mul(iVar6,param_8,param_11,param_12,iVar12)" identifier (argument_list "(iVar6,param_8,param_11,param_12,iVar12)" ( identifier , identifier , identifier , identifier , identifier ))) ;)) (expression_statement "iVar10 = (*(code *)*local_80)(iVar5,param_10,param_8,param_11);" (assignment_expression "iVar10 = (*(code *)*local_80)(iVar5,param_10,param_8,param_11)" identifier = (call_expression "(*(code *)*local_80)(iVar5,param_10,param_8,param_11)" (parenthesized_expression "(*(code *)*local_80)" ( (pointer_expression "*(code *)*local_80" * (cast_expression "(code *)*local_80" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_80" * identifier))) )) (argument_list "(iVar5,param_10,param_8,param_11)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "*piVar2 = iVar10;" (assignment_expression "*piVar2 = iVar10" (pointer_expression "*piVar2" * identifier) = identifier) ;) }) (else_clause "else {\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005768b;\n      }\n      uVar3 = *(uint *)(iVar6 + iVar7 * 4);\n      uVar4 = *(uint *)(param_5 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_0005768b:\n      (*pcVar13)(param_4,param_5,iVar6,iVar11);\n      local_60 = local_64;\n    }\n    else {\n      (*pcVar13)(param_4,iVar6,param_5,iVar11);\n      local_60 = local_64 ^ 1;\n    }\n    if (local_64 != local_30) goto LAB_000576cd;\nLAB_00057971:\n    (*(code *)*local_80)(param_5,param_5,iVar14,iVar11);\n    if (iVar12 < param_11) goto LAB_0005798d;\nLAB_000576f3:\n    __gmpn_mul(iVar6,param_12,iVar12,param_8,param_11);\n    iVar10 = (*(code *)*local_80)(iVar5,param_10,param_8,param_11);\n    *piVar2 = iVar10;\n    if (param_11 < iVar12) {\n      __gmpn_mul(iVar14,param_3,iVar12,iVar5,iVar1);\n      goto LAB_00057755;\n    }\n  }" else (compound_statement "{\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005768b;\n      }\n      uVar3 = *(uint *)(iVar6 + iVar7 * 4);\n      uVar4 = *(uint *)(param_5 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_0005768b:\n      (*pcVar13)(param_4,param_5,iVar6,iVar11);\n      local_60 = local_64;\n    }\n    else {\n      (*pcVar13)(param_4,iVar6,param_5,iVar11);\n      local_60 = local_64 ^ 1;\n    }\n    if (local_64 != local_30) goto LAB_000576cd;\nLAB_00057971:\n    (*(code *)*local_80)(param_5,param_5,iVar14,iVar11);\n    if (iVar12 < param_11) goto LAB_0005798d;\nLAB_000576f3:\n    __gmpn_mul(iVar6,param_12,iVar12,param_8,param_11);\n    iVar10 = (*(code *)*local_80)(iVar5,param_10,param_8,param_11);\n    *piVar2 = iVar10;\n    if (param_11 < iVar12) {\n      __gmpn_mul(iVar14,param_3,iVar12,iVar5,iVar1);\n      goto LAB_00057755;\n    }\n  }" { (do_statement "do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005768b;\n      }\n      uVar3 = *(uint *)(iVar6 + iVar7 * 4);\n      uVar4 = *(uint *)(param_5 + iVar7 * 4);\n    } while (uVar4 == uVar3);" do (compound_statement "{\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005768b;\n      }\n      uVar3 = *(uint *)(iVar6 + iVar7 * 4);\n      uVar4 = *(uint *)(param_5 + iVar7 * 4);\n    }" { (expression_statement "iVar7 = iVar7 + -1;" (assignment_expression "iVar7 = iVar7 + -1" identifier = (binary_expression "iVar7 + -1" identifier + number_literal)) ;) (if_statement "if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005768b;\n      }" if (parenthesized_expression "(iVar7 < 0)" ( (binary_expression "iVar7 < 0" identifier < number_literal) )) (compound_statement "{\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005768b;\n      }" { (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" identifier = (cast_expression "(code *)local_80[0x22]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0x22]" identifier [ number_literal ]))) ;) (goto_statement "goto LAB_0005768b;" goto statement_identifier ;) })) (expression_statement "uVar3 = *(uint *)(iVar6 + iVar7 * 4);" (assignment_expression "uVar3 = *(uint *)(iVar6 + iVar7 * 4)" identifier = (pointer_expression "*(uint *)(iVar6 + iVar7 * 4)" * (cast_expression "(uint *)(iVar6 + iVar7 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + iVar7 * 4)" ( (binary_expression "iVar6 + iVar7 * 4" identifier + (binary_expression "iVar7 * 4" identifier * number_literal)) ))))) ;) (expression_statement "uVar4 = *(uint *)(param_5 + iVar7 * 4);" (assignment_expression "uVar4 = *(uint *)(param_5 + iVar7 * 4)" identifier = (pointer_expression "*(uint *)(param_5 + iVar7 * 4)" * (cast_expression "(uint *)(param_5 + iVar7 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + iVar7 * 4)" ( (binary_expression "param_5 + iVar7 * 4" identifier + (binary_expression "iVar7 * 4" identifier * number_literal)) ))))) ;) }) while (parenthesized_expression "(uVar4 == uVar3)" ( (binary_expression "uVar4 == uVar3" identifier == identifier) )) ;) (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" identifier = (cast_expression "(code *)local_80[0x22]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0x22]" identifier [ number_literal ]))) ;) (if_statement "if (uVar3 < uVar4) {\nLAB_0005768b:\n      (*pcVar13)(param_4,param_5,iVar6,iVar11);\n      local_60 = local_64;\n    }\n    else {\n      (*pcVar13)(param_4,iVar6,param_5,iVar11);\n      local_60 = local_64 ^ 1;\n    }" if (parenthesized_expression "(uVar3 < uVar4)" ( (binary_expression "uVar3 < uVar4" identifier < identifier) )) (compound_statement "{\nLAB_0005768b:\n      (*pcVar13)(param_4,param_5,iVar6,iVar11);\n      local_60 = local_64;\n    }" { (labeled_statement "LAB_0005768b:\n      (*pcVar13)(param_4,param_5,iVar6,iVar11);" statement_identifier : (expression_statement "(*pcVar13)(param_4,param_5,iVar6,iVar11);" (call_expression "(*pcVar13)(param_4,param_5,iVar6,iVar11)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(param_4,param_5,iVar6,iVar11)" ( identifier , identifier , identifier , identifier ))) ;)) (expression_statement "local_60 = local_64;" (assignment_expression "local_60 = local_64" identifier = identifier) ;) }) (else_clause "else {\n      (*pcVar13)(param_4,iVar6,param_5,iVar11);\n      local_60 = local_64 ^ 1;\n    }" else (compound_statement "{\n      (*pcVar13)(param_4,iVar6,param_5,iVar11);\n      local_60 = local_64 ^ 1;\n    }" { (expression_statement "(*pcVar13)(param_4,iVar6,param_5,iVar11);" (call_expression "(*pcVar13)(param_4,iVar6,param_5,iVar11)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(param_4,iVar6,param_5,iVar11)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "local_60 = local_64 ^ 1;" (assignment_expression "local_60 = local_64 ^ 1" identifier = (binary_expression "local_64 ^ 1" identifier ^ number_literal)) ;) }))) (if_statement "if (local_64 != local_30) goto LAB_000576cd;" if (parenthesized_expression "(local_64 != local_30)" ( (binary_expression "local_64 != local_30" identifier != identifier) )) (goto_statement "goto LAB_000576cd;" goto statement_identifier ;)) (labeled_statement "LAB_00057971:\n    (*(code *)*local_80)(param_5,param_5,iVar14,iVar11);" statement_identifier : (expression_statement "(*(code *)*local_80)(param_5,param_5,iVar14,iVar11);" (call_expression "(*(code *)*local_80)(param_5,param_5,iVar14,iVar11)" (parenthesized_expression "(*(code *)*local_80)" ( (pointer_expression "*(code *)*local_80" * (cast_expression "(code *)*local_80" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_80" * identifier))) )) (argument_list "(param_5,param_5,iVar14,iVar11)" ( identifier , identifier , identifier , identifier ))) ;)) (if_statement "if (iVar12 < param_11) goto LAB_0005798d;" if (parenthesized_expression "(iVar12 < param_11)" ( (binary_expression "iVar12 < param_11" identifier < identifier) )) (goto_statement "goto LAB_0005798d;" goto statement_identifier ;)) (labeled_statement "LAB_000576f3:\n    __gmpn_mul(iVar6,param_12,iVar12,param_8,param_11);" statement_identifier : (expression_statement "__gmpn_mul(iVar6,param_12,iVar12,param_8,param_11);" (call_expression "__gmpn_mul(iVar6,param_12,iVar12,param_8,param_11)" identifier (argument_list "(iVar6,param_12,iVar12,param_8,param_11)" ( identifier , identifier , identifier , identifier , identifier ))) ;)) (expression_statement "iVar10 = (*(code *)*local_80)(iVar5,param_10,param_8,param_11);" (assignment_expression "iVar10 = (*(code *)*local_80)(iVar5,param_10,param_8,param_11)" identifier = (call_expression "(*(code *)*local_80)(iVar5,param_10,param_8,param_11)" (parenthesized_expression "(*(code *)*local_80)" ( (pointer_expression "*(code *)*local_80" * (cast_expression "(code *)*local_80" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_80" * identifier))) )) (argument_list "(iVar5,param_10,param_8,param_11)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "*piVar2 = iVar10;" (assignment_expression "*piVar2 = iVar10" (pointer_expression "*piVar2" * identifier) = identifier) ;) (if_statement "if (param_11 < iVar12) {\n      __gmpn_mul(iVar14,param_3,iVar12,iVar5,iVar1);\n      goto LAB_00057755;\n    }" if (parenthesized_expression "(param_11 < iVar12)" ( (binary_expression "param_11 < iVar12" identifier < identifier) )) (compound_statement "{\n      __gmpn_mul(iVar14,param_3,iVar12,iVar5,iVar1);\n      goto LAB_00057755;\n    }" { (expression_statement "__gmpn_mul(iVar14,param_3,iVar12,iVar5,iVar1);" (call_expression "__gmpn_mul(iVar14,param_3,iVar12,iVar5,iVar1)" identifier (argument_list "(iVar14,param_3,iVar12,iVar5,iVar1)" ( identifier , identifier , identifier , identifier , identifier ))) ;) (goto_statement "goto LAB_00057755;" goto statement_identifier ;) })) }))) (expression_statement "__gmpn_mul(iVar14,iVar5,iVar1,param_3,iVar12);" (call_expression "__gmpn_mul(iVar14,iVar5,iVar1,param_3,iVar12)" identifier (argument_list "(iVar14,iVar5,iVar1,param_3,iVar12)" ( identifier , identifier , identifier , identifier , identifier ))) ;) (labeled_statement "LAB_00057755:\n  iVar12 = iVar11;" statement_identifier : (expression_statement "iVar12 = iVar11;" (assignment_expression "iVar12 = iVar11" identifier = identifier) ;)) (if_statement "if (local_24 == local_64) {\n    (*(code *)*local_80)(param_3,param_5,iVar6,iVar11);\n  }\n  else {\n    do {\n      iVar12 = iVar12 + -1;\n      if (iVar12 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005778b;\n      }\n      uVar3 = *(uint *)(iVar6 + iVar12 * 4);\n      uVar4 = *(uint *)(param_5 + iVar12 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_0005778b:\n      (*pcVar13)(param_3,param_5,iVar6,iVar11);\n    }\n    else {\n      (*pcVar13)(param_3,iVar6,param_5,iVar11);\n    }\n  }" if (parenthesized_expression "(local_24 == local_64)" ( (binary_expression "local_24 == local_64" identifier == identifier) )) (compound_statement "{\n    (*(code *)*local_80)(param_3,param_5,iVar6,iVar11);\n  }" { (expression_statement "(*(code *)*local_80)(param_3,param_5,iVar6,iVar11);" (call_expression "(*(code *)*local_80)(param_3,param_5,iVar6,iVar11)" (parenthesized_expression "(*(code *)*local_80)" ( (pointer_expression "*(code *)*local_80" * (cast_expression "(code *)*local_80" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_80" * identifier))) )) (argument_list "(param_3,param_5,iVar6,iVar11)" ( identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n    do {\n      iVar12 = iVar12 + -1;\n      if (iVar12 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005778b;\n      }\n      uVar3 = *(uint *)(iVar6 + iVar12 * 4);\n      uVar4 = *(uint *)(param_5 + iVar12 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_0005778b:\n      (*pcVar13)(param_3,param_5,iVar6,iVar11);\n    }\n    else {\n      (*pcVar13)(param_3,iVar6,param_5,iVar11);\n    }\n  }" else (compound_statement "{\n    do {\n      iVar12 = iVar12 + -1;\n      if (iVar12 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005778b;\n      }\n      uVar3 = *(uint *)(iVar6 + iVar12 * 4);\n      uVar4 = *(uint *)(param_5 + iVar12 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_0005778b:\n      (*pcVar13)(param_3,param_5,iVar6,iVar11);\n    }\n    else {\n      (*pcVar13)(param_3,iVar6,param_5,iVar11);\n    }\n  }" { (do_statement "do {\n      iVar12 = iVar12 + -1;\n      if (iVar12 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005778b;\n      }\n      uVar3 = *(uint *)(iVar6 + iVar12 * 4);\n      uVar4 = *(uint *)(param_5 + iVar12 * 4);\n    } while (uVar4 == uVar3);" do (compound_statement "{\n      iVar12 = iVar12 + -1;\n      if (iVar12 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005778b;\n      }\n      uVar3 = *(uint *)(iVar6 + iVar12 * 4);\n      uVar4 = *(uint *)(param_5 + iVar12 * 4);\n    }" { (expression_statement "iVar12 = iVar12 + -1;" (assignment_expression "iVar12 = iVar12 + -1" identifier = (binary_expression "iVar12 + -1" identifier + number_literal)) ;) (if_statement "if (iVar12 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005778b;\n      }" if (parenthesized_expression "(iVar12 < 0)" ( (binary_expression "iVar12 < 0" identifier < number_literal) )) (compound_statement "{\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005778b;\n      }" { (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" identifier = (cast_expression "(code *)local_80[0x22]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0x22]" identifier [ number_literal ]))) ;) (goto_statement "goto LAB_0005778b;" goto statement_identifier ;) })) (expression_statement "uVar3 = *(uint *)(iVar6 + iVar12 * 4);" (assignment_expression "uVar3 = *(uint *)(iVar6 + iVar12 * 4)" identifier = (pointer_expression "*(uint *)(iVar6 + iVar12 * 4)" * (cast_expression "(uint *)(iVar6 + iVar12 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + iVar12 * 4)" ( (binary_expression "iVar6 + iVar12 * 4" identifier + (binary_expression "iVar12 * 4" identifier * number_literal)) ))))) ;) (expression_statement "uVar4 = *(uint *)(param_5 + iVar12 * 4);" (assignment_expression "uVar4 = *(uint *)(param_5 + iVar12 * 4)" identifier = (pointer_expression "*(uint *)(param_5 + iVar12 * 4)" * (cast_expression "(uint *)(param_5 + iVar12 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + iVar12 * 4)" ( (binary_expression "param_5 + iVar12 * 4" identifier + (binary_expression "iVar12 * 4" identifier * number_literal)) ))))) ;) }) while (parenthesized_expression "(uVar4 == uVar3)" ( (binary_expression "uVar4 == uVar3" identifier == identifier) )) ;) (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" identifier = (cast_expression "(code *)local_80[0x22]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0x22]" identifier [ number_literal ]))) ;) (if_statement "if (uVar3 < uVar4) {\nLAB_0005778b:\n      (*pcVar13)(param_3,param_5,iVar6,iVar11);\n    }\n    else {\n      (*pcVar13)(param_3,iVar6,param_5,iVar11);\n    }" if (parenthesized_expression "(uVar3 < uVar4)" ( (binary_expression "uVar3 < uVar4" identifier < identifier) )) (compound_statement "{\nLAB_0005778b:\n      (*pcVar13)(param_3,param_5,iVar6,iVar11);\n    }" { (labeled_statement "LAB_0005778b:\n      (*pcVar13)(param_3,param_5,iVar6,iVar11);" statement_identifier : (expression_statement "(*pcVar13)(param_3,param_5,iVar6,iVar11);" (call_expression "(*pcVar13)(param_3,param_5,iVar6,iVar11)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(param_3,param_5,iVar6,iVar11)" ( identifier , identifier , identifier , identifier ))) ;)) }) (else_clause "else {\n      (*pcVar13)(param_3,iVar6,param_5,iVar11);\n    }" else (compound_statement "{\n      (*pcVar13)(param_3,iVar6,param_5,iVar11);\n    }" { (expression_statement "(*pcVar13)(param_3,iVar6,param_5,iVar11);" (call_expression "(*pcVar13)(param_3,iVar6,param_5,iVar11)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(param_3,iVar6,param_5,iVar11)" ( identifier , identifier , identifier , identifier ))) ;) }))) }))) (if_statement "if (local_64 == 0) {\n    (*(code *)local_80[0x22])(param_5,iVar14,param_5,iVar11);\n  }\n  else {\n    (*(code *)*local_80)(param_5,iVar14,param_5,iVar11);\n  }" if (parenthesized_expression "(local_64 == 0)" ( (binary_expression "local_64 == 0" identifier == number_literal) )) (compound_statement "{\n    (*(code *)local_80[0x22])(param_5,iVar14,param_5,iVar11);\n  }" { (expression_statement "(*(code *)local_80[0x22])(param_5,iVar14,param_5,iVar11);" (call_expression "(*(code *)local_80[0x22])(param_5,iVar14,param_5,iVar11)" (parenthesized_expression "(*(code *)local_80[0x22])" ( (pointer_expression "*(code *)local_80[0x22]" * (cast_expression "(code *)local_80[0x22]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0x22]" identifier [ number_literal ]))) )) (argument_list "(param_5,iVar14,param_5,iVar11)" ( identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n    (*(code *)*local_80)(param_5,iVar14,param_5,iVar11);\n  }" else (compound_statement "{\n    (*(code *)*local_80)(param_5,iVar14,param_5,iVar11);\n  }" { (expression_statement "(*(code *)*local_80)(param_5,iVar14,param_5,iVar11);" (call_expression "(*(code *)*local_80)(param_5,iVar14,param_5,iVar11)" (parenthesized_expression "(*(code *)*local_80)" ( (pointer_expression "*(code *)*local_80" * (cast_expression "(code *)*local_80" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_80" * identifier))) )) (argument_list "(param_5,iVar14,param_5,iVar11)" ( identifier , identifier , identifier , identifier ))) ;) }))) (if_statement "if (local_60 != 0) {\n                    /* WARNING: Could not recover jumptable at 0x000577f2. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (*(code *)*local_80)();\n    return;\n  }" if (parenthesized_expression "(local_60 != 0)" ( (binary_expression "local_60 != 0" identifier != number_literal) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x000577f2. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (*(code *)*local_80)();\n    return;\n  }" { comment comment (expression_statement "(*(code *)*local_80)();" (call_expression "(*(code *)*local_80)()" (parenthesized_expression "(*(code *)*local_80)" ( (pointer_expression "*(code *)*local_80" * (cast_expression "(code *)*local_80" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_80" * identifier))) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) comment comment (expression_statement "(*(code *)local_80[0x22])();" (call_expression "(*(code *)local_80[0x22])()" (parenthesized_expression "(*(code *)local_80[0x22])" ( (pointer_expression "*(code *)local_80[0x22]" * (cast_expression "(code *)local_80[0x22]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0x22]" identifier [ number_literal ]))) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid __gmpn_matrix22_mul_strassen\n               (mp_ptr r0,mp_ptr r1,mp_ptr r2,mp_ptr r3,mp_size_t rn,mp_srcptr m0,mp_srcptr m1,\n               mp_srcptr m2,mp_srcptr m3,mp_size_t mn,mp_ptr tp)\n\n{\n  int un;\n  mp_srcptr pmVar1;\n  undefined *puVar2;\n  mp_srcptr vp;\n  mp_ptr prodp;\n  int iVar3;\n  mp_limb_t mVar4;\n  mp_size_t mVar5;\n  int iVar6;\n  int iVar7;\n  code *pcVar8;\n  int iVar9;\n  int iVar10;\n  mp_ptr prodp_00;\n  uint local_60;\n  uint local_5c;\n  mp_ptr local_58;\n  uint local_3c;\n  mp_ptr local_38;\n  uint local_2c;\n  uint local_20;\n  \n  iVar7 = rn + 1;\n  un = mn + 1;\n  vp = tp + iVar7;\n  iVar6 = rn + mn;\n  prodp = vp + un;\n  iVar9 = iVar6 + 1;\n  prodp_00 = prodp + iVar9;\n  iVar3 = rn;\n  if (rn < mn) {\n    __gmpn_mul(prodp,m2,mn,r1,rn);\n  }\n  else {\n    __gmpn_mul(prodp,r1,rn,m2,mn);\n  }\n  do {\n    puVar2 = PTR___gmpn_cpuvec_0009dd94;\n    iVar3 = iVar3 + -1;\n    iVar10 = rn;\n    if (iVar3 < 0) {\n      pcVar8 = *(code **)(PTR___gmpn_cpuvec_0009dd94 + 0x88);\n      goto LAB_000573b5;\n    }\n  } while (r3[iVar3] == r2[iVar3]);\n  pcVar8 = *(code **)(PTR___gmpn_cpuvec_0009dd94 + 0x88);\n  if (r2[iVar3] < r3[iVar3]) {\nLAB_000573b5:\n    (*pcVar8)(r3,r3,r2,rn);\n    mVar4 = (**(code **)puVar2)(r1,r1,r3,rn);\n    r1[rn] = mVar4;\n    if (mVar4 == 0) {\n      local_2c = 1;\n      goto LAB_00057b2c;\n    }\n    iVar3 = (**(code **)(puVar2 + 0x88))(tp,r1,r0,rn);\n    tp[rn] = mVar4 - iVar3;\n    local_2c = 1;\n    local_3c = 0;\n    local_20 = 1;\n  }\n  else {\n    (*pcVar8)(r3,r2,r3,rn);\n    mVar5 = rn;\n    do {\n      mVar5 = mVar5 + -1;\n      if (mVar5 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_00057ae8;\n      }\n    } while (r1[mVar5] == r3[mVar5]);\n    pcVar8 = *(code **)(puVar2 + 0x88);\n    if (r3[mVar5] < r1[mVar5]) {\nLAB_00057ae8:\n      local_38 = r1 + rn;\n      (*pcVar8)(r1,r1,r3,rn);\n      *local_38 = 0;\n      local_2c = 0;\nLAB_00057b2c:\n      do {\n        local_58 = tp + rn;\n        iVar10 = iVar10 + -1;\n        if (iVar10 < 0) {\n          pcVar8 = *(code **)(puVar2 + 0x88);\n          goto LAB_00057b3e;\n        }\n      } while (r0[iVar10] == r1[iVar10]);\n      pcVar8 = *(code **)(puVar2 + 0x88);\n      if (r1[iVar10] < r0[iVar10]) {\nLAB_00057b3e:\n        (*pcVar8)(tp,r0,r1,rn);\n        local_20 = 0;\n      }\n      else {\n        (*pcVar8)(tp,r1,r0,rn);\n        local_20 = 1;\n      }\n      local_3c = 0;\n      *local_58 = 0;\n    }\n    else {\n      (*pcVar8)(r1,r3,r1,rn);\n      r1[rn] = 0;\n      mVar4 = (**(code **)puVar2)(tp,r1,r0,rn);\n      tp[rn] = mVar4;\n      local_2c = 0;\n      local_3c = 1;\n      local_20 = 0;\n    }\n  }\n  local_38 = r1 + rn;\n  if (rn < mn) {\n    __gmpn_mul(prodp_00,m0,mn,r0,rn);\n  }\n  else {\n    __gmpn_mul(prodp_00,r0,rn,m0,mn);\n  }\n  mVar4 = (**(code **)puVar2)(r0,prodp,prodp_00,iVar6);\n  r0[iVar6] = mVar4;\n  mVar5 = mn;\n  do {\n    mVar5 = mVar5 + -1;\n    if (mVar5 < 0) {\n      pcVar8 = *(code **)(puVar2 + 0x88);\n      goto LAB_000574ba;\n    }\n  } while (m3[mVar5] == m2[mVar5]);\n  pcVar8 = *(code **)(puVar2 + 0x88);\n  if (m2[mVar5] < m3[mVar5]) {\nLAB_000574ba:\n    (*pcVar8)(vp,m3,m2,mn);\n    local_5c = 0;\n  }\n  else {\n    (*pcVar8)(vp,m2,m3,mn);\n    local_2c = local_2c ^ 1;\n    local_5c = 1;\n  }\n  if (rn < mn) {\n    __gmpn_mul(prodp_00,vp,mn,r3,rn);\n  }\n  else {\n    __gmpn_mul(prodp_00,r3,rn,vp,mn);\n  }\n  prodp_00[iVar6] = 0;\n  pmVar1 = vp + mn;\n  iVar3 = mn;\n  if (local_5c == 0) {\n    mVar4 = (**(code **)puVar2)(vp,vp,m1,mn);\n    *pmVar1 = mVar4;\n    if (mVar4 == 0) goto LAB_00057a50;\n    if (mn < rn) {\n      __gmpn_mul(r3,r1,rn,vp,un);\n    }\n    else {\n      __gmpn_mul(r3,vp,un,r1,rn);\n    }\n    if (r1[rn] != 0) {\n      (**(code **)puVar2)(r3 + rn,r3 + rn,vp,un);\n    }\n  }\n  else {\n    do {\n      iVar3 = iVar3 + -1;\n      if (iVar3 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_00057a2e;\n      }\n    } while (m1[iVar3] == vp[iVar3]);\n    pcVar8 = *(code **)(puVar2 + 0x88);\n    if (vp[iVar3] < m1[iVar3]) {\nLAB_00057a2e:\n      (*pcVar8)(vp,m1,vp,mn);\n      local_5c = 0;\n    }\n    else {\n      (*pcVar8)(vp,vp,m1,mn);\n    }\n    *pmVar1 = 0;\nLAB_00057a50:\n    if (iVar7 < mn) {\n      __gmpn_mul(r3,vp,mn,r1,iVar7);\n    }\n    else {\n      __gmpn_mul(r3,r1,iVar7,vp,mn);\n    }\n  }\n  prodp[iVar6] = 0;\n  iVar6 = iVar9;\n  if (local_3c == local_5c) {\n    (**(code **)puVar2)(r3,r3,prodp,iVar9);\n    local_60 = 0;\n    if (local_5c == 0) goto LAB_000578c7;\nLAB_000575ee:\n    mVar4 = (**(code **)puVar2)(vp,vp,m0,mn);\n    *pmVar1 = mVar4;\nLAB_00057608:\n    if (rn <= mn) goto LAB_000578fc;\nLAB_00057610:\n    __gmpn_mul(prodp,r2,rn,vp,un);\n    if (local_3c != 0) goto LAB_00057638;\nLAB_00057924:\n    iVar9 = (**(code **)puVar2)(r1,r1,r2,rn);\n    *local_38 = *local_38 + iVar9;\n  }\n  else {\n    do {\n      iVar6 = iVar6 + -1;\n      if (iVar6 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_000575cb;\n      }\n    } while (prodp[iVar6] == r3[iVar6]);\n    pcVar8 = *(code **)(puVar2 + 0x88);\n    if (r3[iVar6] < prodp[iVar6]) {\nLAB_000575cb:\n      (*pcVar8)(r3,prodp,r3,iVar9);\n      local_60 = 0;\n    }\n    else {\n      (*pcVar8)(r3,r3,prodp,iVar9);\n      local_60 = 1;\n    }\n    if (local_5c != 0) goto LAB_000575ee;\nLAB_000578c7:\n    pcVar8 = *(code **)(puVar2 + 0x88);\n    iVar9 = mn;\n    if (*pmVar1 == 0) {\n      do {\n        iVar9 = iVar9 + -1;\n        if (iVar9 < 0) goto LAB_00057cd1;\n      } while (vp[iVar9] == m0[iVar9]);\n      if (m0[iVar9] < vp[iVar9]) {\nLAB_00057cd1:\n        (*pcVar8)(vp,vp,m0,mn);\n      }\n      else {\n        (*pcVar8)(vp,m0,vp,mn);\n        local_5c = 1;\n      }\n      goto LAB_00057608;\n    }\n    iVar9 = (*pcVar8)(vp,vp,m0,mn);\n    *pmVar1 = *pmVar1 - iVar9;\n    if (mn < rn) goto LAB_00057610;\nLAB_000578fc:\n    __gmpn_mul(prodp,vp,un,r2,rn);\n    if (local_3c == 0) goto LAB_00057924;\nLAB_00057638:\n    (**(code **)(puVar2 + 0x88))(r1,r2,r1,rn);\n  }\n  iVar9 = mn + iVar7;\n  iVar3 = iVar9;\n  iVar6 = iVar9;\n  if (local_60 == local_5c) {\n    (**(code **)puVar2)(r2,r3,prodp,iVar9);\n    local_5c = local_60;\n    if (local_60 == local_2c) goto LAB_00057971;\nLAB_000576cd:\n    do {\n      iVar6 = iVar6 + -1;\n      if (iVar6 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_000576db;\n      }\n    } while (r3[iVar6] == prodp_00[iVar6]);\n    pcVar8 = *(code **)(puVar2 + 0x88);\n    if (prodp_00[iVar6] < r3[iVar6]) {\nLAB_000576db:\n      (*pcVar8)(r3,r3,prodp_00,iVar9);\n    }\n    else {\n      (*pcVar8)(r3,prodp_00,r3,iVar9);\n      local_60 = local_60 ^ 1;\n    }\n    if (mn <= iVar7) goto LAB_000576f3;\nLAB_0005798d:\n    __gmpn_mul(prodp,m1,mn,tp,iVar7);\n    mVar4 = (**(code **)puVar2)(vp,m3,m1,mn);\n    *pmVar1 = mVar4;\n  }\n  else {\n    do {\n      iVar3 = iVar3 + -1;\n      if (iVar3 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_0005768b;\n      }\n    } while (r3[iVar3] == prodp[iVar3]);\n    pcVar8 = *(code **)(puVar2 + 0x88);\n    if (prodp[iVar3] < r3[iVar3]) {\nLAB_0005768b:\n      (*pcVar8)(r2,r3,prodp,iVar9);\n      local_5c = local_60;\n    }\n    else {\n      (*pcVar8)(r2,prodp,r3,iVar9);\n      local_5c = local_60 ^ 1;\n    }\n    if (local_60 != local_2c) goto LAB_000576cd;\nLAB_00057971:\n    (**(code **)puVar2)(r3,r3,prodp_00,iVar9);\n    if (iVar7 < mn) goto LAB_0005798d;\nLAB_000576f3:\n    __gmpn_mul(prodp,tp,iVar7,m1,mn);\n    mVar4 = (**(code **)puVar2)(vp,m3,m1,mn);\n    *pmVar1 = mVar4;\n    if (mn < iVar7) {\n      __gmpn_mul(prodp_00,r1,iVar7,vp,un);\n      goto LAB_00057755;\n    }\n  }\n  __gmpn_mul(prodp_00,vp,un,r1,iVar7);\nLAB_00057755:\n  iVar7 = iVar9;\n  if (local_20 == local_60) {\n    (**(code **)puVar2)(r1,r3,prodp,iVar9);\n  }\n  else {\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_0005778b;\n      }\n    } while (r3[iVar7] == prodp[iVar7]);\n    pcVar8 = *(code **)(puVar2 + 0x88);\n    if (prodp[iVar7] < r3[iVar7]) {\nLAB_0005778b:\n      (*pcVar8)(r1,r3,prodp,iVar9);\n    }\n    else {\n      (*pcVar8)(r1,prodp,r3,iVar9);\n    }\n  }\n  if (local_60 == 0) {\n    (**(code **)(puVar2 + 0x88))(r3,prodp_00,r3,iVar9);\n  }\n  else {\n    (**(code **)puVar2)(r3,prodp_00,r3,iVar9);\n  }\n  if (local_5c != 0) {\n                    /* WARNING: Could not recover jumptable at 0x000577f2. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (**(code **)puVar2)();\n    return;\n  }\n                    /* WARNING: Could not recover jumptable at 0x000579fd. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  (**(code **)(puVar2 + 0x88))();\n  return;\n}\n\n" comment (function_definition "void __gmpn_matrix22_mul_strassen\n               (mp_ptr r0,mp_ptr r1,mp_ptr r2,mp_ptr r3,mp_size_t rn,mp_srcptr m0,mp_srcptr m1,\n               mp_srcptr m2,mp_srcptr m3,mp_size_t mn,mp_ptr tp)\n\n{\n  int un;\n  mp_srcptr pmVar1;\n  undefined *puVar2;\n  mp_srcptr vp;\n  mp_ptr prodp;\n  int iVar3;\n  mp_limb_t mVar4;\n  mp_size_t mVar5;\n  int iVar6;\n  int iVar7;\n  code *pcVar8;\n  int iVar9;\n  int iVar10;\n  mp_ptr prodp_00;\n  uint local_60;\n  uint local_5c;\n  mp_ptr local_58;\n  uint local_3c;\n  mp_ptr local_38;\n  uint local_2c;\n  uint local_20;\n  \n  iVar7 = rn + 1;\n  un = mn + 1;\n  vp = tp + iVar7;\n  iVar6 = rn + mn;\n  prodp = vp + un;\n  iVar9 = iVar6 + 1;\n  prodp_00 = prodp + iVar9;\n  iVar3 = rn;\n  if (rn < mn) {\n    __gmpn_mul(prodp,m2,mn,r1,rn);\n  }\n  else {\n    __gmpn_mul(prodp,r1,rn,m2,mn);\n  }\n  do {\n    puVar2 = PTR___gmpn_cpuvec_0009dd94;\n    iVar3 = iVar3 + -1;\n    iVar10 = rn;\n    if (iVar3 < 0) {\n      pcVar8 = *(code **)(PTR___gmpn_cpuvec_0009dd94 + 0x88);\n      goto LAB_000573b5;\n    }\n  } while (r3[iVar3] == r2[iVar3]);\n  pcVar8 = *(code **)(PTR___gmpn_cpuvec_0009dd94 + 0x88);\n  if (r2[iVar3] < r3[iVar3]) {\nLAB_000573b5:\n    (*pcVar8)(r3,r3,r2,rn);\n    mVar4 = (**(code **)puVar2)(r1,r1,r3,rn);\n    r1[rn] = mVar4;\n    if (mVar4 == 0) {\n      local_2c = 1;\n      goto LAB_00057b2c;\n    }\n    iVar3 = (**(code **)(puVar2 + 0x88))(tp,r1,r0,rn);\n    tp[rn] = mVar4 - iVar3;\n    local_2c = 1;\n    local_3c = 0;\n    local_20 = 1;\n  }\n  else {\n    (*pcVar8)(r3,r2,r3,rn);\n    mVar5 = rn;\n    do {\n      mVar5 = mVar5 + -1;\n      if (mVar5 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_00057ae8;\n      }\n    } while (r1[mVar5] == r3[mVar5]);\n    pcVar8 = *(code **)(puVar2 + 0x88);\n    if (r3[mVar5] < r1[mVar5]) {\nLAB_00057ae8:\n      local_38 = r1 + rn;\n      (*pcVar8)(r1,r1,r3,rn);\n      *local_38 = 0;\n      local_2c = 0;\nLAB_00057b2c:\n      do {\n        local_58 = tp + rn;\n        iVar10 = iVar10 + -1;\n        if (iVar10 < 0) {\n          pcVar8 = *(code **)(puVar2 + 0x88);\n          goto LAB_00057b3e;\n        }\n      } while (r0[iVar10] == r1[iVar10]);\n      pcVar8 = *(code **)(puVar2 + 0x88);\n      if (r1[iVar10] < r0[iVar10]) {\nLAB_00057b3e:\n        (*pcVar8)(tp,r0,r1,rn);\n        local_20 = 0;\n      }\n      else {\n        (*pcVar8)(tp,r1,r0,rn);\n        local_20 = 1;\n      }\n      local_3c = 0;\n      *local_58 = 0;\n    }\n    else {\n      (*pcVar8)(r1,r3,r1,rn);\n      r1[rn] = 0;\n      mVar4 = (**(code **)puVar2)(tp,r1,r0,rn);\n      tp[rn] = mVar4;\n      local_2c = 0;\n      local_3c = 1;\n      local_20 = 0;\n    }\n  }\n  local_38 = r1 + rn;\n  if (rn < mn) {\n    __gmpn_mul(prodp_00,m0,mn,r0,rn);\n  }\n  else {\n    __gmpn_mul(prodp_00,r0,rn,m0,mn);\n  }\n  mVar4 = (**(code **)puVar2)(r0,prodp,prodp_00,iVar6);\n  r0[iVar6] = mVar4;\n  mVar5 = mn;\n  do {\n    mVar5 = mVar5 + -1;\n    if (mVar5 < 0) {\n      pcVar8 = *(code **)(puVar2 + 0x88);\n      goto LAB_000574ba;\n    }\n  } while (m3[mVar5] == m2[mVar5]);\n  pcVar8 = *(code **)(puVar2 + 0x88);\n  if (m2[mVar5] < m3[mVar5]) {\nLAB_000574ba:\n    (*pcVar8)(vp,m3,m2,mn);\n    local_5c = 0;\n  }\n  else {\n    (*pcVar8)(vp,m2,m3,mn);\n    local_2c = local_2c ^ 1;\n    local_5c = 1;\n  }\n  if (rn < mn) {\n    __gmpn_mul(prodp_00,vp,mn,r3,rn);\n  }\n  else {\n    __gmpn_mul(prodp_00,r3,rn,vp,mn);\n  }\n  prodp_00[iVar6] = 0;\n  pmVar1 = vp + mn;\n  iVar3 = mn;\n  if (local_5c == 0) {\n    mVar4 = (**(code **)puVar2)(vp,vp,m1,mn);\n    *pmVar1 = mVar4;\n    if (mVar4 == 0) goto LAB_00057a50;\n    if (mn < rn) {\n      __gmpn_mul(r3,r1,rn,vp,un);\n    }\n    else {\n      __gmpn_mul(r3,vp,un,r1,rn);\n    }\n    if (r1[rn] != 0) {\n      (**(code **)puVar2)(r3 + rn,r3 + rn,vp,un);\n    }\n  }\n  else {\n    do {\n      iVar3 = iVar3 + -1;\n      if (iVar3 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_00057a2e;\n      }\n    } while (m1[iVar3] == vp[iVar3]);\n    pcVar8 = *(code **)(puVar2 + 0x88);\n    if (vp[iVar3] < m1[iVar3]) {\nLAB_00057a2e:\n      (*pcVar8)(vp,m1,vp,mn);\n      local_5c = 0;\n    }\n    else {\n      (*pcVar8)(vp,vp,m1,mn);\n    }\n    *pmVar1 = 0;\nLAB_00057a50:\n    if (iVar7 < mn) {\n      __gmpn_mul(r3,vp,mn,r1,iVar7);\n    }\n    else {\n      __gmpn_mul(r3,r1,iVar7,vp,mn);\n    }\n  }\n  prodp[iVar6] = 0;\n  iVar6 = iVar9;\n  if (local_3c == local_5c) {\n    (**(code **)puVar2)(r3,r3,prodp,iVar9);\n    local_60 = 0;\n    if (local_5c == 0) goto LAB_000578c7;\nLAB_000575ee:\n    mVar4 = (**(code **)puVar2)(vp,vp,m0,mn);\n    *pmVar1 = mVar4;\nLAB_00057608:\n    if (rn <= mn) goto LAB_000578fc;\nLAB_00057610:\n    __gmpn_mul(prodp,r2,rn,vp,un);\n    if (local_3c != 0) goto LAB_00057638;\nLAB_00057924:\n    iVar9 = (**(code **)puVar2)(r1,r1,r2,rn);\n    *local_38 = *local_38 + iVar9;\n  }\n  else {\n    do {\n      iVar6 = iVar6 + -1;\n      if (iVar6 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_000575cb;\n      }\n    } while (prodp[iVar6] == r3[iVar6]);\n    pcVar8 = *(code **)(puVar2 + 0x88);\n    if (r3[iVar6] < prodp[iVar6]) {\nLAB_000575cb:\n      (*pcVar8)(r3,prodp,r3,iVar9);\n      local_60 = 0;\n    }\n    else {\n      (*pcVar8)(r3,r3,prodp,iVar9);\n      local_60 = 1;\n    }\n    if (local_5c != 0) goto LAB_000575ee;\nLAB_000578c7:\n    pcVar8 = *(code **)(puVar2 + 0x88);\n    iVar9 = mn;\n    if (*pmVar1 == 0) {\n      do {\n        iVar9 = iVar9 + -1;\n        if (iVar9 < 0) goto LAB_00057cd1;\n      } while (vp[iVar9] == m0[iVar9]);\n      if (m0[iVar9] < vp[iVar9]) {\nLAB_00057cd1:\n        (*pcVar8)(vp,vp,m0,mn);\n      }\n      else {\n        (*pcVar8)(vp,m0,vp,mn);\n        local_5c = 1;\n      }\n      goto LAB_00057608;\n    }\n    iVar9 = (*pcVar8)(vp,vp,m0,mn);\n    *pmVar1 = *pmVar1 - iVar9;\n    if (mn < rn) goto LAB_00057610;\nLAB_000578fc:\n    __gmpn_mul(prodp,vp,un,r2,rn);\n    if (local_3c == 0) goto LAB_00057924;\nLAB_00057638:\n    (**(code **)(puVar2 + 0x88))(r1,r2,r1,rn);\n  }\n  iVar9 = mn + iVar7;\n  iVar3 = iVar9;\n  iVar6 = iVar9;\n  if (local_60 == local_5c) {\n    (**(code **)puVar2)(r2,r3,prodp,iVar9);\n    local_5c = local_60;\n    if (local_60 == local_2c) goto LAB_00057971;\nLAB_000576cd:\n    do {\n      iVar6 = iVar6 + -1;\n      if (iVar6 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_000576db;\n      }\n    } while (r3[iVar6] == prodp_00[iVar6]);\n    pcVar8 = *(code **)(puVar2 + 0x88);\n    if (prodp_00[iVar6] < r3[iVar6]) {\nLAB_000576db:\n      (*pcVar8)(r3,r3,prodp_00,iVar9);\n    }\n    else {\n      (*pcVar8)(r3,prodp_00,r3,iVar9);\n      local_60 = local_60 ^ 1;\n    }\n    if (mn <= iVar7) goto LAB_000576f3;\nLAB_0005798d:\n    __gmpn_mul(prodp,m1,mn,tp,iVar7);\n    mVar4 = (**(code **)puVar2)(vp,m3,m1,mn);\n    *pmVar1 = mVar4;\n  }\n  else {\n    do {\n      iVar3 = iVar3 + -1;\n      if (iVar3 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_0005768b;\n      }\n    } while (r3[iVar3] == prodp[iVar3]);\n    pcVar8 = *(code **)(puVar2 + 0x88);\n    if (prodp[iVar3] < r3[iVar3]) {\nLAB_0005768b:\n      (*pcVar8)(r2,r3,prodp,iVar9);\n      local_5c = local_60;\n    }\n    else {\n      (*pcVar8)(r2,prodp,r3,iVar9);\n      local_5c = local_60 ^ 1;\n    }\n    if (local_60 != local_2c) goto LAB_000576cd;\nLAB_00057971:\n    (**(code **)puVar2)(r3,r3,prodp_00,iVar9);\n    if (iVar7 < mn) goto LAB_0005798d;\nLAB_000576f3:\n    __gmpn_mul(prodp,tp,iVar7,m1,mn);\n    mVar4 = (**(code **)puVar2)(vp,m3,m1,mn);\n    *pmVar1 = mVar4;\n    if (mn < iVar7) {\n      __gmpn_mul(prodp_00,r1,iVar7,vp,un);\n      goto LAB_00057755;\n    }\n  }\n  __gmpn_mul(prodp_00,vp,un,r1,iVar7);\nLAB_00057755:\n  iVar7 = iVar9;\n  if (local_20 == local_60) {\n    (**(code **)puVar2)(r1,r3,prodp,iVar9);\n  }\n  else {\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_0005778b;\n      }\n    } while (r3[iVar7] == prodp[iVar7]);\n    pcVar8 = *(code **)(puVar2 + 0x88);\n    if (prodp[iVar7] < r3[iVar7]) {\nLAB_0005778b:\n      (*pcVar8)(r1,r3,prodp,iVar9);\n    }\n    else {\n      (*pcVar8)(r1,prodp,r3,iVar9);\n    }\n  }\n  if (local_60 == 0) {\n    (**(code **)(puVar2 + 0x88))(r3,prodp_00,r3,iVar9);\n  }\n  else {\n    (**(code **)puVar2)(r3,prodp_00,r3,iVar9);\n  }\n  if (local_5c != 0) {\n                    /* WARNING: Could not recover jumptable at 0x000577f2. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (**(code **)puVar2)();\n    return;\n  }\n                    /* WARNING: Could not recover jumptable at 0x000579fd. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  (**(code **)(puVar2 + 0x88))();\n  return;\n}" primitive_type (function_declarator "__gmpn_matrix22_mul_strassen\n               (mp_ptr r0,mp_ptr r1,mp_ptr r2,mp_ptr r3,mp_size_t rn,mp_srcptr m0,mp_srcptr m1,\n               mp_srcptr m2,mp_srcptr m3,mp_size_t mn,mp_ptr tp)" identifier (parameter_list "(mp_ptr r0,mp_ptr r1,mp_ptr r2,mp_ptr r3,mp_size_t rn,mp_srcptr m0,mp_srcptr m1,\n               mp_srcptr m2,mp_srcptr m3,mp_size_t mn,mp_ptr tp)" ( (parameter_declaration "mp_ptr r0" type_identifier identifier) , (parameter_declaration "mp_ptr r1" type_identifier identifier) , (parameter_declaration "mp_ptr r2" type_identifier identifier) , (parameter_declaration "mp_ptr r3" type_identifier identifier) , (parameter_declaration "mp_size_t rn" type_identifier identifier) , (parameter_declaration "mp_srcptr m0" type_identifier identifier) , (parameter_declaration "mp_srcptr m1" type_identifier identifier) , (parameter_declaration "mp_srcptr m2" type_identifier identifier) , (parameter_declaration "mp_srcptr m3" type_identifier identifier) , (parameter_declaration "mp_size_t mn" type_identifier identifier) , (parameter_declaration "mp_ptr tp" type_identifier identifier) ))) (compound_statement "{\n  int un;\n  mp_srcptr pmVar1;\n  undefined *puVar2;\n  mp_srcptr vp;\n  mp_ptr prodp;\n  int iVar3;\n  mp_limb_t mVar4;\n  mp_size_t mVar5;\n  int iVar6;\n  int iVar7;\n  code *pcVar8;\n  int iVar9;\n  int iVar10;\n  mp_ptr prodp_00;\n  uint local_60;\n  uint local_5c;\n  mp_ptr local_58;\n  uint local_3c;\n  mp_ptr local_38;\n  uint local_2c;\n  uint local_20;\n  \n  iVar7 = rn + 1;\n  un = mn + 1;\n  vp = tp + iVar7;\n  iVar6 = rn + mn;\n  prodp = vp + un;\n  iVar9 = iVar6 + 1;\n  prodp_00 = prodp + iVar9;\n  iVar3 = rn;\n  if (rn < mn) {\n    __gmpn_mul(prodp,m2,mn,r1,rn);\n  }\n  else {\n    __gmpn_mul(prodp,r1,rn,m2,mn);\n  }\n  do {\n    puVar2 = PTR___gmpn_cpuvec_0009dd94;\n    iVar3 = iVar3 + -1;\n    iVar10 = rn;\n    if (iVar3 < 0) {\n      pcVar8 = *(code **)(PTR___gmpn_cpuvec_0009dd94 + 0x88);\n      goto LAB_000573b5;\n    }\n  } while (r3[iVar3] == r2[iVar3]);\n  pcVar8 = *(code **)(PTR___gmpn_cpuvec_0009dd94 + 0x88);\n  if (r2[iVar3] < r3[iVar3]) {\nLAB_000573b5:\n    (*pcVar8)(r3,r3,r2,rn);\n    mVar4 = (**(code **)puVar2)(r1,r1,r3,rn);\n    r1[rn] = mVar4;\n    if (mVar4 == 0) {\n      local_2c = 1;\n      goto LAB_00057b2c;\n    }\n    iVar3 = (**(code **)(puVar2 + 0x88))(tp,r1,r0,rn);\n    tp[rn] = mVar4 - iVar3;\n    local_2c = 1;\n    local_3c = 0;\n    local_20 = 1;\n  }\n  else {\n    (*pcVar8)(r3,r2,r3,rn);\n    mVar5 = rn;\n    do {\n      mVar5 = mVar5 + -1;\n      if (mVar5 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_00057ae8;\n      }\n    } while (r1[mVar5] == r3[mVar5]);\n    pcVar8 = *(code **)(puVar2 + 0x88);\n    if (r3[mVar5] < r1[mVar5]) {\nLAB_00057ae8:\n      local_38 = r1 + rn;\n      (*pcVar8)(r1,r1,r3,rn);\n      *local_38 = 0;\n      local_2c = 0;\nLAB_00057b2c:\n      do {\n        local_58 = tp + rn;\n        iVar10 = iVar10 + -1;\n        if (iVar10 < 0) {\n          pcVar8 = *(code **)(puVar2 + 0x88);\n          goto LAB_00057b3e;\n        }\n      } while (r0[iVar10] == r1[iVar10]);\n      pcVar8 = *(code **)(puVar2 + 0x88);\n      if (r1[iVar10] < r0[iVar10]) {\nLAB_00057b3e:\n        (*pcVar8)(tp,r0,r1,rn);\n        local_20 = 0;\n      }\n      else {\n        (*pcVar8)(tp,r1,r0,rn);\n        local_20 = 1;\n      }\n      local_3c = 0;\n      *local_58 = 0;\n    }\n    else {\n      (*pcVar8)(r1,r3,r1,rn);\n      r1[rn] = 0;\n      mVar4 = (**(code **)puVar2)(tp,r1,r0,rn);\n      tp[rn] = mVar4;\n      local_2c = 0;\n      local_3c = 1;\n      local_20 = 0;\n    }\n  }\n  local_38 = r1 + rn;\n  if (rn < mn) {\n    __gmpn_mul(prodp_00,m0,mn,r0,rn);\n  }\n  else {\n    __gmpn_mul(prodp_00,r0,rn,m0,mn);\n  }\n  mVar4 = (**(code **)puVar2)(r0,prodp,prodp_00,iVar6);\n  r0[iVar6] = mVar4;\n  mVar5 = mn;\n  do {\n    mVar5 = mVar5 + -1;\n    if (mVar5 < 0) {\n      pcVar8 = *(code **)(puVar2 + 0x88);\n      goto LAB_000574ba;\n    }\n  } while (m3[mVar5] == m2[mVar5]);\n  pcVar8 = *(code **)(puVar2 + 0x88);\n  if (m2[mVar5] < m3[mVar5]) {\nLAB_000574ba:\n    (*pcVar8)(vp,m3,m2,mn);\n    local_5c = 0;\n  }\n  else {\n    (*pcVar8)(vp,m2,m3,mn);\n    local_2c = local_2c ^ 1;\n    local_5c = 1;\n  }\n  if (rn < mn) {\n    __gmpn_mul(prodp_00,vp,mn,r3,rn);\n  }\n  else {\n    __gmpn_mul(prodp_00,r3,rn,vp,mn);\n  }\n  prodp_00[iVar6] = 0;\n  pmVar1 = vp + mn;\n  iVar3 = mn;\n  if (local_5c == 0) {\n    mVar4 = (**(code **)puVar2)(vp,vp,m1,mn);\n    *pmVar1 = mVar4;\n    if (mVar4 == 0) goto LAB_00057a50;\n    if (mn < rn) {\n      __gmpn_mul(r3,r1,rn,vp,un);\n    }\n    else {\n      __gmpn_mul(r3,vp,un,r1,rn);\n    }\n    if (r1[rn] != 0) {\n      (**(code **)puVar2)(r3 + rn,r3 + rn,vp,un);\n    }\n  }\n  else {\n    do {\n      iVar3 = iVar3 + -1;\n      if (iVar3 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_00057a2e;\n      }\n    } while (m1[iVar3] == vp[iVar3]);\n    pcVar8 = *(code **)(puVar2 + 0x88);\n    if (vp[iVar3] < m1[iVar3]) {\nLAB_00057a2e:\n      (*pcVar8)(vp,m1,vp,mn);\n      local_5c = 0;\n    }\n    else {\n      (*pcVar8)(vp,vp,m1,mn);\n    }\n    *pmVar1 = 0;\nLAB_00057a50:\n    if (iVar7 < mn) {\n      __gmpn_mul(r3,vp,mn,r1,iVar7);\n    }\n    else {\n      __gmpn_mul(r3,r1,iVar7,vp,mn);\n    }\n  }\n  prodp[iVar6] = 0;\n  iVar6 = iVar9;\n  if (local_3c == local_5c) {\n    (**(code **)puVar2)(r3,r3,prodp,iVar9);\n    local_60 = 0;\n    if (local_5c == 0) goto LAB_000578c7;\nLAB_000575ee:\n    mVar4 = (**(code **)puVar2)(vp,vp,m0,mn);\n    *pmVar1 = mVar4;\nLAB_00057608:\n    if (rn <= mn) goto LAB_000578fc;\nLAB_00057610:\n    __gmpn_mul(prodp,r2,rn,vp,un);\n    if (local_3c != 0) goto LAB_00057638;\nLAB_00057924:\n    iVar9 = (**(code **)puVar2)(r1,r1,r2,rn);\n    *local_38 = *local_38 + iVar9;\n  }\n  else {\n    do {\n      iVar6 = iVar6 + -1;\n      if (iVar6 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_000575cb;\n      }\n    } while (prodp[iVar6] == r3[iVar6]);\n    pcVar8 = *(code **)(puVar2 + 0x88);\n    if (r3[iVar6] < prodp[iVar6]) {\nLAB_000575cb:\n      (*pcVar8)(r3,prodp,r3,iVar9);\n      local_60 = 0;\n    }\n    else {\n      (*pcVar8)(r3,r3,prodp,iVar9);\n      local_60 = 1;\n    }\n    if (local_5c != 0) goto LAB_000575ee;\nLAB_000578c7:\n    pcVar8 = *(code **)(puVar2 + 0x88);\n    iVar9 = mn;\n    if (*pmVar1 == 0) {\n      do {\n        iVar9 = iVar9 + -1;\n        if (iVar9 < 0) goto LAB_00057cd1;\n      } while (vp[iVar9] == m0[iVar9]);\n      if (m0[iVar9] < vp[iVar9]) {\nLAB_00057cd1:\n        (*pcVar8)(vp,vp,m0,mn);\n      }\n      else {\n        (*pcVar8)(vp,m0,vp,mn);\n        local_5c = 1;\n      }\n      goto LAB_00057608;\n    }\n    iVar9 = (*pcVar8)(vp,vp,m0,mn);\n    *pmVar1 = *pmVar1 - iVar9;\n    if (mn < rn) goto LAB_00057610;\nLAB_000578fc:\n    __gmpn_mul(prodp,vp,un,r2,rn);\n    if (local_3c == 0) goto LAB_00057924;\nLAB_00057638:\n    (**(code **)(puVar2 + 0x88))(r1,r2,r1,rn);\n  }\n  iVar9 = mn + iVar7;\n  iVar3 = iVar9;\n  iVar6 = iVar9;\n  if (local_60 == local_5c) {\n    (**(code **)puVar2)(r2,r3,prodp,iVar9);\n    local_5c = local_60;\n    if (local_60 == local_2c) goto LAB_00057971;\nLAB_000576cd:\n    do {\n      iVar6 = iVar6 + -1;\n      if (iVar6 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_000576db;\n      }\n    } while (r3[iVar6] == prodp_00[iVar6]);\n    pcVar8 = *(code **)(puVar2 + 0x88);\n    if (prodp_00[iVar6] < r3[iVar6]) {\nLAB_000576db:\n      (*pcVar8)(r3,r3,prodp_00,iVar9);\n    }\n    else {\n      (*pcVar8)(r3,prodp_00,r3,iVar9);\n      local_60 = local_60 ^ 1;\n    }\n    if (mn <= iVar7) goto LAB_000576f3;\nLAB_0005798d:\n    __gmpn_mul(prodp,m1,mn,tp,iVar7);\n    mVar4 = (**(code **)puVar2)(vp,m3,m1,mn);\n    *pmVar1 = mVar4;\n  }\n  else {\n    do {\n      iVar3 = iVar3 + -1;\n      if (iVar3 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_0005768b;\n      }\n    } while (r3[iVar3] == prodp[iVar3]);\n    pcVar8 = *(code **)(puVar2 + 0x88);\n    if (prodp[iVar3] < r3[iVar3]) {\nLAB_0005768b:\n      (*pcVar8)(r2,r3,prodp,iVar9);\n      local_5c = local_60;\n    }\n    else {\n      (*pcVar8)(r2,prodp,r3,iVar9);\n      local_5c = local_60 ^ 1;\n    }\n    if (local_60 != local_2c) goto LAB_000576cd;\nLAB_00057971:\n    (**(code **)puVar2)(r3,r3,prodp_00,iVar9);\n    if (iVar7 < mn) goto LAB_0005798d;\nLAB_000576f3:\n    __gmpn_mul(prodp,tp,iVar7,m1,mn);\n    mVar4 = (**(code **)puVar2)(vp,m3,m1,mn);\n    *pmVar1 = mVar4;\n    if (mn < iVar7) {\n      __gmpn_mul(prodp_00,r1,iVar7,vp,un);\n      goto LAB_00057755;\n    }\n  }\n  __gmpn_mul(prodp_00,vp,un,r1,iVar7);\nLAB_00057755:\n  iVar7 = iVar9;\n  if (local_20 == local_60) {\n    (**(code **)puVar2)(r1,r3,prodp,iVar9);\n  }\n  else {\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_0005778b;\n      }\n    } while (r3[iVar7] == prodp[iVar7]);\n    pcVar8 = *(code **)(puVar2 + 0x88);\n    if (prodp[iVar7] < r3[iVar7]) {\nLAB_0005778b:\n      (*pcVar8)(r1,r3,prodp,iVar9);\n    }\n    else {\n      (*pcVar8)(r1,prodp,r3,iVar9);\n    }\n  }\n  if (local_60 == 0) {\n    (**(code **)(puVar2 + 0x88))(r3,prodp_00,r3,iVar9);\n  }\n  else {\n    (**(code **)puVar2)(r3,prodp_00,r3,iVar9);\n  }\n  if (local_5c != 0) {\n                    /* WARNING: Could not recover jumptable at 0x000577f2. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (**(code **)puVar2)();\n    return;\n  }\n                    /* WARNING: Could not recover jumptable at 0x000579fd. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  (**(code **)(puVar2 + 0x88))();\n  return;\n}" { (declaration "int un;" primitive_type identifier ;) (declaration "mp_srcptr pmVar1;" type_identifier identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "mp_srcptr vp;" type_identifier identifier ;) (declaration "mp_ptr prodp;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "mp_limb_t mVar4;" type_identifier identifier ;) (declaration "mp_size_t mVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "code *pcVar8;" type_identifier (pointer_declarator "*pcVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "mp_ptr prodp_00;" type_identifier identifier ;) (declaration "uint local_60;" type_identifier identifier ;) (declaration "uint local_5c;" type_identifier identifier ;) (declaration "mp_ptr local_58;" type_identifier identifier ;) (declaration "uint local_3c;" type_identifier identifier ;) (declaration "mp_ptr local_38;" type_identifier identifier ;) (declaration "uint local_2c;" type_identifier identifier ;) (declaration "uint local_20;" type_identifier identifier ;) (expression_statement "iVar7 = rn + 1;" (assignment_expression "iVar7 = rn + 1" identifier = (binary_expression "rn + 1" identifier + number_literal)) ;) (expression_statement "un = mn + 1;" (assignment_expression "un = mn + 1" identifier = (binary_expression "mn + 1" identifier + number_literal)) ;) (expression_statement "vp = tp + iVar7;" (assignment_expression "vp = tp + iVar7" identifier = (binary_expression "tp + iVar7" identifier + identifier)) ;) (expression_statement "iVar6 = rn + mn;" (assignment_expression "iVar6 = rn + mn" identifier = (binary_expression "rn + mn" identifier + identifier)) ;) (expression_statement "prodp = vp + un;" (assignment_expression "prodp = vp + un" identifier = (binary_expression "vp + un" identifier + identifier)) ;) (expression_statement "iVar9 = iVar6 + 1;" (assignment_expression "iVar9 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (expression_statement "prodp_00 = prodp + iVar9;" (assignment_expression "prodp_00 = prodp + iVar9" identifier = (binary_expression "prodp + iVar9" identifier + identifier)) ;) (expression_statement "iVar3 = rn;" (assignment_expression "iVar3 = rn" identifier = identifier) ;) (if_statement "if (rn < mn) {\n    __gmpn_mul(prodp,m2,mn,r1,rn);\n  }\n  else {\n    __gmpn_mul(prodp,r1,rn,m2,mn);\n  }" if (parenthesized_expression "(rn < mn)" ( (binary_expression "rn < mn" identifier < identifier) )) (compound_statement "{\n    __gmpn_mul(prodp,m2,mn,r1,rn);\n  }" { (expression_statement "__gmpn_mul(prodp,m2,mn,r1,rn);" (call_expression "__gmpn_mul(prodp,m2,mn,r1,rn)" identifier (argument_list "(prodp,m2,mn,r1,rn)" ( identifier , identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n    __gmpn_mul(prodp,r1,rn,m2,mn);\n  }" else (compound_statement "{\n    __gmpn_mul(prodp,r1,rn,m2,mn);\n  }" { (expression_statement "__gmpn_mul(prodp,r1,rn,m2,mn);" (call_expression "__gmpn_mul(prodp,r1,rn,m2,mn)" identifier (argument_list "(prodp,r1,rn,m2,mn)" ( identifier , identifier , identifier , identifier , identifier ))) ;) }))) (do_statement "do {\n    puVar2 = PTR___gmpn_cpuvec_0009dd94;\n    iVar3 = iVar3 + -1;\n    iVar10 = rn;\n    if (iVar3 < 0) {\n      pcVar8 = *(code **)(PTR___gmpn_cpuvec_0009dd94 + 0x88);\n      goto LAB_000573b5;\n    }\n  } while (r3[iVar3] == r2[iVar3]);" do (compound_statement "{\n    puVar2 = PTR___gmpn_cpuvec_0009dd94;\n    iVar3 = iVar3 + -1;\n    iVar10 = rn;\n    if (iVar3 < 0) {\n      pcVar8 = *(code **)(PTR___gmpn_cpuvec_0009dd94 + 0x88);\n      goto LAB_000573b5;\n    }\n  }" { (expression_statement "puVar2 = PTR___gmpn_cpuvec_0009dd94;" (assignment_expression "puVar2 = PTR___gmpn_cpuvec_0009dd94" identifier = identifier) ;) (expression_statement "iVar3 = iVar3 + -1;" (assignment_expression "iVar3 = iVar3 + -1" identifier = (binary_expression "iVar3 + -1" identifier + number_literal)) ;) (expression_statement "iVar10 = rn;" (assignment_expression "iVar10 = rn" identifier = identifier) ;) (if_statement "if (iVar3 < 0) {\n      pcVar8 = *(code **)(PTR___gmpn_cpuvec_0009dd94 + 0x88);\n      goto LAB_000573b5;\n    }" if (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) (compound_statement "{\n      pcVar8 = *(code **)(PTR___gmpn_cpuvec_0009dd94 + 0x88);\n      goto LAB_000573b5;\n    }" { (expression_statement "pcVar8 = *(code **)(PTR___gmpn_cpuvec_0009dd94 + 0x88);" (assignment_expression "pcVar8 = *(code **)(PTR___gmpn_cpuvec_0009dd94 + 0x88)" identifier = (pointer_expression "*(code **)(PTR___gmpn_cpuvec_0009dd94 + 0x88)" * (cast_expression "(code **)(PTR___gmpn_cpuvec_0009dd94 + 0x88)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(PTR___gmpn_cpuvec_0009dd94 + 0x88)" ( (binary_expression "PTR___gmpn_cpuvec_0009dd94 + 0x88" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_000573b5;" goto statement_identifier ;) })) }) while (parenthesized_expression "(r3[iVar3] == r2[iVar3])" ( (binary_expression "r3[iVar3] == r2[iVar3]" (subscript_expression "r3[iVar3]" identifier [ identifier ]) == (subscript_expression "r2[iVar3]" identifier [ identifier ])) )) ;) (expression_statement "pcVar8 = *(code **)(PTR___gmpn_cpuvec_0009dd94 + 0x88);" (assignment_expression "pcVar8 = *(code **)(PTR___gmpn_cpuvec_0009dd94 + 0x88)" identifier = (pointer_expression "*(code **)(PTR___gmpn_cpuvec_0009dd94 + 0x88)" * (cast_expression "(code **)(PTR___gmpn_cpuvec_0009dd94 + 0x88)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(PTR___gmpn_cpuvec_0009dd94 + 0x88)" ( (binary_expression "PTR___gmpn_cpuvec_0009dd94 + 0x88" identifier + number_literal) ))))) ;) (if_statement "if (r2[iVar3] < r3[iVar3]) {\nLAB_000573b5:\n    (*pcVar8)(r3,r3,r2,rn);\n    mVar4 = (**(code **)puVar2)(r1,r1,r3,rn);\n    r1[rn] = mVar4;\n    if (mVar4 == 0) {\n      local_2c = 1;\n      goto LAB_00057b2c;\n    }\n    iVar3 = (**(code **)(puVar2 + 0x88))(tp,r1,r0,rn);\n    tp[rn] = mVar4 - iVar3;\n    local_2c = 1;\n    local_3c = 0;\n    local_20 = 1;\n  }\n  else {\n    (*pcVar8)(r3,r2,r3,rn);\n    mVar5 = rn;\n    do {\n      mVar5 = mVar5 + -1;\n      if (mVar5 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_00057ae8;\n      }\n    } while (r1[mVar5] == r3[mVar5]);\n    pcVar8 = *(code **)(puVar2 + 0x88);\n    if (r3[mVar5] < r1[mVar5]) {\nLAB_00057ae8:\n      local_38 = r1 + rn;\n      (*pcVar8)(r1,r1,r3,rn);\n      *local_38 = 0;\n      local_2c = 0;\nLAB_00057b2c:\n      do {\n        local_58 = tp + rn;\n        iVar10 = iVar10 + -1;\n        if (iVar10 < 0) {\n          pcVar8 = *(code **)(puVar2 + 0x88);\n          goto LAB_00057b3e;\n        }\n      } while (r0[iVar10] == r1[iVar10]);\n      pcVar8 = *(code **)(puVar2 + 0x88);\n      if (r1[iVar10] < r0[iVar10]) {\nLAB_00057b3e:\n        (*pcVar8)(tp,r0,r1,rn);\n        local_20 = 0;\n      }\n      else {\n        (*pcVar8)(tp,r1,r0,rn);\n        local_20 = 1;\n      }\n      local_3c = 0;\n      *local_58 = 0;\n    }\n    else {\n      (*pcVar8)(r1,r3,r1,rn);\n      r1[rn] = 0;\n      mVar4 = (**(code **)puVar2)(tp,r1,r0,rn);\n      tp[rn] = mVar4;\n      local_2c = 0;\n      local_3c = 1;\n      local_20 = 0;\n    }\n  }" if (parenthesized_expression "(r2[iVar3] < r3[iVar3])" ( (binary_expression "r2[iVar3] < r3[iVar3]" (subscript_expression "r2[iVar3]" identifier [ identifier ]) < (subscript_expression "r3[iVar3]" identifier [ identifier ])) )) (compound_statement "{\nLAB_000573b5:\n    (*pcVar8)(r3,r3,r2,rn);\n    mVar4 = (**(code **)puVar2)(r1,r1,r3,rn);\n    r1[rn] = mVar4;\n    if (mVar4 == 0) {\n      local_2c = 1;\n      goto LAB_00057b2c;\n    }\n    iVar3 = (**(code **)(puVar2 + 0x88))(tp,r1,r0,rn);\n    tp[rn] = mVar4 - iVar3;\n    local_2c = 1;\n    local_3c = 0;\n    local_20 = 1;\n  }" { (labeled_statement "LAB_000573b5:\n    (*pcVar8)(r3,r3,r2,rn);" statement_identifier : (expression_statement "(*pcVar8)(r3,r3,r2,rn);" (call_expression "(*pcVar8)(r3,r3,r2,rn)" (parenthesized_expression "(*pcVar8)" ( (pointer_expression "*pcVar8" * identifier) )) (argument_list "(r3,r3,r2,rn)" ( identifier , identifier , identifier , identifier ))) ;)) (expression_statement "mVar4 = (**(code **)puVar2)(r1,r1,r3,rn);" (assignment_expression "mVar4 = (**(code **)puVar2)(r1,r1,r3,rn)" identifier = (call_expression "(**(code **)puVar2)(r1,r1,r3,rn)" (parenthesized_expression "(**(code **)puVar2)" ( (pointer_expression "**(code **)puVar2" * (pointer_expression "*(code **)puVar2" * (cast_expression "(code **)puVar2" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (argument_list "(r1,r1,r3,rn)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "r1[rn] = mVar4;" (assignment_expression "r1[rn] = mVar4" (subscript_expression "r1[rn]" identifier [ identifier ]) = identifier) ;) (if_statement "if (mVar4 == 0) {\n      local_2c = 1;\n      goto LAB_00057b2c;\n    }" if (parenthesized_expression "(mVar4 == 0)" ( (binary_expression "mVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      local_2c = 1;\n      goto LAB_00057b2c;\n    }" { (expression_statement "local_2c = 1;" (assignment_expression "local_2c = 1" identifier = number_literal) ;) (goto_statement "goto LAB_00057b2c;" goto statement_identifier ;) })) (expression_statement "iVar3 = (**(code **)(puVar2 + 0x88))(tp,r1,r0,rn);" (assignment_expression "iVar3 = (**(code **)(puVar2 + 0x88))(tp,r1,r0,rn)" identifier = (call_expression "(**(code **)(puVar2 + 0x88))(tp,r1,r0,rn)" (parenthesized_expression "(**(code **)(puVar2 + 0x88))" ( (pointer_expression "**(code **)(puVar2 + 0x88)" * (pointer_expression "*(code **)(puVar2 + 0x88)" * (cast_expression "(code **)(puVar2 + 0x88)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar2 + 0x88)" ( (binary_expression "puVar2 + 0x88" identifier + number_literal) ))))) )) (argument_list "(tp,r1,r0,rn)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "tp[rn] = mVar4 - iVar3;" (assignment_expression "tp[rn] = mVar4 - iVar3" (subscript_expression "tp[rn]" identifier [ identifier ]) = (binary_expression "mVar4 - iVar3" identifier - identifier)) ;) (expression_statement "local_2c = 1;" (assignment_expression "local_2c = 1" identifier = number_literal) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "local_20 = 1;" (assignment_expression "local_20 = 1" identifier = number_literal) ;) }) (else_clause "else {\n    (*pcVar8)(r3,r2,r3,rn);\n    mVar5 = rn;\n    do {\n      mVar5 = mVar5 + -1;\n      if (mVar5 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_00057ae8;\n      }\n    } while (r1[mVar5] == r3[mVar5]);\n    pcVar8 = *(code **)(puVar2 + 0x88);\n    if (r3[mVar5] < r1[mVar5]) {\nLAB_00057ae8:\n      local_38 = r1 + rn;\n      (*pcVar8)(r1,r1,r3,rn);\n      *local_38 = 0;\n      local_2c = 0;\nLAB_00057b2c:\n      do {\n        local_58 = tp + rn;\n        iVar10 = iVar10 + -1;\n        if (iVar10 < 0) {\n          pcVar8 = *(code **)(puVar2 + 0x88);\n          goto LAB_00057b3e;\n        }\n      } while (r0[iVar10] == r1[iVar10]);\n      pcVar8 = *(code **)(puVar2 + 0x88);\n      if (r1[iVar10] < r0[iVar10]) {\nLAB_00057b3e:\n        (*pcVar8)(tp,r0,r1,rn);\n        local_20 = 0;\n      }\n      else {\n        (*pcVar8)(tp,r1,r0,rn);\n        local_20 = 1;\n      }\n      local_3c = 0;\n      *local_58 = 0;\n    }\n    else {\n      (*pcVar8)(r1,r3,r1,rn);\n      r1[rn] = 0;\n      mVar4 = (**(code **)puVar2)(tp,r1,r0,rn);\n      tp[rn] = mVar4;\n      local_2c = 0;\n      local_3c = 1;\n      local_20 = 0;\n    }\n  }" else (compound_statement "{\n    (*pcVar8)(r3,r2,r3,rn);\n    mVar5 = rn;\n    do {\n      mVar5 = mVar5 + -1;\n      if (mVar5 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_00057ae8;\n      }\n    } while (r1[mVar5] == r3[mVar5]);\n    pcVar8 = *(code **)(puVar2 + 0x88);\n    if (r3[mVar5] < r1[mVar5]) {\nLAB_00057ae8:\n      local_38 = r1 + rn;\n      (*pcVar8)(r1,r1,r3,rn);\n      *local_38 = 0;\n      local_2c = 0;\nLAB_00057b2c:\n      do {\n        local_58 = tp + rn;\n        iVar10 = iVar10 + -1;\n        if (iVar10 < 0) {\n          pcVar8 = *(code **)(puVar2 + 0x88);\n          goto LAB_00057b3e;\n        }\n      } while (r0[iVar10] == r1[iVar10]);\n      pcVar8 = *(code **)(puVar2 + 0x88);\n      if (r1[iVar10] < r0[iVar10]) {\nLAB_00057b3e:\n        (*pcVar8)(tp,r0,r1,rn);\n        local_20 = 0;\n      }\n      else {\n        (*pcVar8)(tp,r1,r0,rn);\n        local_20 = 1;\n      }\n      local_3c = 0;\n      *local_58 = 0;\n    }\n    else {\n      (*pcVar8)(r1,r3,r1,rn);\n      r1[rn] = 0;\n      mVar4 = (**(code **)puVar2)(tp,r1,r0,rn);\n      tp[rn] = mVar4;\n      local_2c = 0;\n      local_3c = 1;\n      local_20 = 0;\n    }\n  }" { (expression_statement "(*pcVar8)(r3,r2,r3,rn);" (call_expression "(*pcVar8)(r3,r2,r3,rn)" (parenthesized_expression "(*pcVar8)" ( (pointer_expression "*pcVar8" * identifier) )) (argument_list "(r3,r2,r3,rn)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "mVar5 = rn;" (assignment_expression "mVar5 = rn" identifier = identifier) ;) (do_statement "do {\n      mVar5 = mVar5 + -1;\n      if (mVar5 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_00057ae8;\n      }\n    } while (r1[mVar5] == r3[mVar5]);" do (compound_statement "{\n      mVar5 = mVar5 + -1;\n      if (mVar5 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_00057ae8;\n      }\n    }" { (expression_statement "mVar5 = mVar5 + -1;" (assignment_expression "mVar5 = mVar5 + -1" identifier = (binary_expression "mVar5 + -1" identifier + number_literal)) ;) (if_statement "if (mVar5 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_00057ae8;\n      }" if (parenthesized_expression "(mVar5 < 0)" ( (binary_expression "mVar5 < 0" identifier < number_literal) )) (compound_statement "{\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_00057ae8;\n      }" { (expression_statement "pcVar8 = *(code **)(puVar2 + 0x88);" (assignment_expression "pcVar8 = *(code **)(puVar2 + 0x88)" identifier = (pointer_expression "*(code **)(puVar2 + 0x88)" * (cast_expression "(code **)(puVar2 + 0x88)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar2 + 0x88)" ( (binary_expression "puVar2 + 0x88" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_00057ae8;" goto statement_identifier ;) })) }) while (parenthesized_expression "(r1[mVar5] == r3[mVar5])" ( (binary_expression "r1[mVar5] == r3[mVar5]" (subscript_expression "r1[mVar5]" identifier [ identifier ]) == (subscript_expression "r3[mVar5]" identifier [ identifier ])) )) ;) (expression_statement "pcVar8 = *(code **)(puVar2 + 0x88);" (assignment_expression "pcVar8 = *(code **)(puVar2 + 0x88)" identifier = (pointer_expression "*(code **)(puVar2 + 0x88)" * (cast_expression "(code **)(puVar2 + 0x88)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar2 + 0x88)" ( (binary_expression "puVar2 + 0x88" identifier + number_literal) ))))) ;) (if_statement "if (r3[mVar5] < r1[mVar5]) {\nLAB_00057ae8:\n      local_38 = r1 + rn;\n      (*pcVar8)(r1,r1,r3,rn);\n      *local_38 = 0;\n      local_2c = 0;\nLAB_00057b2c:\n      do {\n        local_58 = tp + rn;\n        iVar10 = iVar10 + -1;\n        if (iVar10 < 0) {\n          pcVar8 = *(code **)(puVar2 + 0x88);\n          goto LAB_00057b3e;\n        }\n      } while (r0[iVar10] == r1[iVar10]);\n      pcVar8 = *(code **)(puVar2 + 0x88);\n      if (r1[iVar10] < r0[iVar10]) {\nLAB_00057b3e:\n        (*pcVar8)(tp,r0,r1,rn);\n        local_20 = 0;\n      }\n      else {\n        (*pcVar8)(tp,r1,r0,rn);\n        local_20 = 1;\n      }\n      local_3c = 0;\n      *local_58 = 0;\n    }\n    else {\n      (*pcVar8)(r1,r3,r1,rn);\n      r1[rn] = 0;\n      mVar4 = (**(code **)puVar2)(tp,r1,r0,rn);\n      tp[rn] = mVar4;\n      local_2c = 0;\n      local_3c = 1;\n      local_20 = 0;\n    }" if (parenthesized_expression "(r3[mVar5] < r1[mVar5])" ( (binary_expression "r3[mVar5] < r1[mVar5]" (subscript_expression "r3[mVar5]" identifier [ identifier ]) < (subscript_expression "r1[mVar5]" identifier [ identifier ])) )) (compound_statement "{\nLAB_00057ae8:\n      local_38 = r1 + rn;\n      (*pcVar8)(r1,r1,r3,rn);\n      *local_38 = 0;\n      local_2c = 0;\nLAB_00057b2c:\n      do {\n        local_58 = tp + rn;\n        iVar10 = iVar10 + -1;\n        if (iVar10 < 0) {\n          pcVar8 = *(code **)(puVar2 + 0x88);\n          goto LAB_00057b3e;\n        }\n      } while (r0[iVar10] == r1[iVar10]);\n      pcVar8 = *(code **)(puVar2 + 0x88);\n      if (r1[iVar10] < r0[iVar10]) {\nLAB_00057b3e:\n        (*pcVar8)(tp,r0,r1,rn);\n        local_20 = 0;\n      }\n      else {\n        (*pcVar8)(tp,r1,r0,rn);\n        local_20 = 1;\n      }\n      local_3c = 0;\n      *local_58 = 0;\n    }" { (labeled_statement "LAB_00057ae8:\n      local_38 = r1 + rn;" statement_identifier : (expression_statement "local_38 = r1 + rn;" (assignment_expression "local_38 = r1 + rn" identifier = (binary_expression "r1 + rn" identifier + identifier)) ;)) (expression_statement "(*pcVar8)(r1,r1,r3,rn);" (call_expression "(*pcVar8)(r1,r1,r3,rn)" (parenthesized_expression "(*pcVar8)" ( (pointer_expression "*pcVar8" * identifier) )) (argument_list "(r1,r1,r3,rn)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "*local_38 = 0;" (assignment_expression "*local_38 = 0" (pointer_expression "*local_38" * identifier) = number_literal) ;) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;) (labeled_statement "LAB_00057b2c:\n      do {\n        local_58 = tp + rn;\n        iVar10 = iVar10 + -1;\n        if (iVar10 < 0) {\n          pcVar8 = *(code **)(puVar2 + 0x88);\n          goto LAB_00057b3e;\n        }\n      } while (r0[iVar10] == r1[iVar10]);" statement_identifier : (do_statement "do {\n        local_58 = tp + rn;\n        iVar10 = iVar10 + -1;\n        if (iVar10 < 0) {\n          pcVar8 = *(code **)(puVar2 + 0x88);\n          goto LAB_00057b3e;\n        }\n      } while (r0[iVar10] == r1[iVar10]);" do (compound_statement "{\n        local_58 = tp + rn;\n        iVar10 = iVar10 + -1;\n        if (iVar10 < 0) {\n          pcVar8 = *(code **)(puVar2 + 0x88);\n          goto LAB_00057b3e;\n        }\n      }" { (expression_statement "local_58 = tp + rn;" (assignment_expression "local_58 = tp + rn" identifier = (binary_expression "tp + rn" identifier + identifier)) ;) (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (if_statement "if (iVar10 < 0) {\n          pcVar8 = *(code **)(puVar2 + 0x88);\n          goto LAB_00057b3e;\n        }" if (parenthesized_expression "(iVar10 < 0)" ( (binary_expression "iVar10 < 0" identifier < number_literal) )) (compound_statement "{\n          pcVar8 = *(code **)(puVar2 + 0x88);\n          goto LAB_00057b3e;\n        }" { (expression_statement "pcVar8 = *(code **)(puVar2 + 0x88);" (assignment_expression "pcVar8 = *(code **)(puVar2 + 0x88)" identifier = (pointer_expression "*(code **)(puVar2 + 0x88)" * (cast_expression "(code **)(puVar2 + 0x88)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar2 + 0x88)" ( (binary_expression "puVar2 + 0x88" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_00057b3e;" goto statement_identifier ;) })) }) while (parenthesized_expression "(r0[iVar10] == r1[iVar10])" ( (binary_expression "r0[iVar10] == r1[iVar10]" (subscript_expression "r0[iVar10]" identifier [ identifier ]) == (subscript_expression "r1[iVar10]" identifier [ identifier ])) )) ;)) (expression_statement "pcVar8 = *(code **)(puVar2 + 0x88);" (assignment_expression "pcVar8 = *(code **)(puVar2 + 0x88)" identifier = (pointer_expression "*(code **)(puVar2 + 0x88)" * (cast_expression "(code **)(puVar2 + 0x88)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar2 + 0x88)" ( (binary_expression "puVar2 + 0x88" identifier + number_literal) ))))) ;) (if_statement "if (r1[iVar10] < r0[iVar10]) {\nLAB_00057b3e:\n        (*pcVar8)(tp,r0,r1,rn);\n        local_20 = 0;\n      }\n      else {\n        (*pcVar8)(tp,r1,r0,rn);\n        local_20 = 1;\n      }" if (parenthesized_expression "(r1[iVar10] < r0[iVar10])" ( (binary_expression "r1[iVar10] < r0[iVar10]" (subscript_expression "r1[iVar10]" identifier [ identifier ]) < (subscript_expression "r0[iVar10]" identifier [ identifier ])) )) (compound_statement "{\nLAB_00057b3e:\n        (*pcVar8)(tp,r0,r1,rn);\n        local_20 = 0;\n      }" { (labeled_statement "LAB_00057b3e:\n        (*pcVar8)(tp,r0,r1,rn);" statement_identifier : (expression_statement "(*pcVar8)(tp,r0,r1,rn);" (call_expression "(*pcVar8)(tp,r0,r1,rn)" (parenthesized_expression "(*pcVar8)" ( (pointer_expression "*pcVar8" * identifier) )) (argument_list "(tp,r0,r1,rn)" ( identifier , identifier , identifier , identifier ))) ;)) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        (*pcVar8)(tp,r1,r0,rn);\n        local_20 = 1;\n      }" else (compound_statement "{\n        (*pcVar8)(tp,r1,r0,rn);\n        local_20 = 1;\n      }" { (expression_statement "(*pcVar8)(tp,r1,r0,rn);" (call_expression "(*pcVar8)(tp,r1,r0,rn)" (parenthesized_expression "(*pcVar8)" ( (pointer_expression "*pcVar8" * identifier) )) (argument_list "(tp,r1,r0,rn)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "local_20 = 1;" (assignment_expression "local_20 = 1" identifier = number_literal) ;) }))) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "*local_58 = 0;" (assignment_expression "*local_58 = 0" (pointer_expression "*local_58" * identifier) = number_literal) ;) }) (else_clause "else {\n      (*pcVar8)(r1,r3,r1,rn);\n      r1[rn] = 0;\n      mVar4 = (**(code **)puVar2)(tp,r1,r0,rn);\n      tp[rn] = mVar4;\n      local_2c = 0;\n      local_3c = 1;\n      local_20 = 0;\n    }" else (compound_statement "{\n      (*pcVar8)(r1,r3,r1,rn);\n      r1[rn] = 0;\n      mVar4 = (**(code **)puVar2)(tp,r1,r0,rn);\n      tp[rn] = mVar4;\n      local_2c = 0;\n      local_3c = 1;\n      local_20 = 0;\n    }" { (expression_statement "(*pcVar8)(r1,r3,r1,rn);" (call_expression "(*pcVar8)(r1,r3,r1,rn)" (parenthesized_expression "(*pcVar8)" ( (pointer_expression "*pcVar8" * identifier) )) (argument_list "(r1,r3,r1,rn)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "r1[rn] = 0;" (assignment_expression "r1[rn] = 0" (subscript_expression "r1[rn]" identifier [ identifier ]) = number_literal) ;) (expression_statement "mVar4 = (**(code **)puVar2)(tp,r1,r0,rn);" (assignment_expression "mVar4 = (**(code **)puVar2)(tp,r1,r0,rn)" identifier = (call_expression "(**(code **)puVar2)(tp,r1,r0,rn)" (parenthesized_expression "(**(code **)puVar2)" ( (pointer_expression "**(code **)puVar2" * (pointer_expression "*(code **)puVar2" * (cast_expression "(code **)puVar2" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (argument_list "(tp,r1,r0,rn)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "tp[rn] = mVar4;" (assignment_expression "tp[rn] = mVar4" (subscript_expression "tp[rn]" identifier [ identifier ]) = identifier) ;) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;) (expression_statement "local_3c = 1;" (assignment_expression "local_3c = 1" identifier = number_literal) ;) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) }))) }))) (expression_statement "local_38 = r1 + rn;" (assignment_expression "local_38 = r1 + rn" identifier = (binary_expression "r1 + rn" identifier + identifier)) ;) (if_statement "if (rn < mn) {\n    __gmpn_mul(prodp_00,m0,mn,r0,rn);\n  }\n  else {\n    __gmpn_mul(prodp_00,r0,rn,m0,mn);\n  }" if (parenthesized_expression "(rn < mn)" ( (binary_expression "rn < mn" identifier < identifier) )) (compound_statement "{\n    __gmpn_mul(prodp_00,m0,mn,r0,rn);\n  }" { (expression_statement "__gmpn_mul(prodp_00,m0,mn,r0,rn);" (call_expression "__gmpn_mul(prodp_00,m0,mn,r0,rn)" identifier (argument_list "(prodp_00,m0,mn,r0,rn)" ( identifier , identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n    __gmpn_mul(prodp_00,r0,rn,m0,mn);\n  }" else (compound_statement "{\n    __gmpn_mul(prodp_00,r0,rn,m0,mn);\n  }" { (expression_statement "__gmpn_mul(prodp_00,r0,rn,m0,mn);" (call_expression "__gmpn_mul(prodp_00,r0,rn,m0,mn)" identifier (argument_list "(prodp_00,r0,rn,m0,mn)" ( identifier , identifier , identifier , identifier , identifier ))) ;) }))) (expression_statement "mVar4 = (**(code **)puVar2)(r0,prodp,prodp_00,iVar6);" (assignment_expression "mVar4 = (**(code **)puVar2)(r0,prodp,prodp_00,iVar6)" identifier = (call_expression "(**(code **)puVar2)(r0,prodp,prodp_00,iVar6)" (parenthesized_expression "(**(code **)puVar2)" ( (pointer_expression "**(code **)puVar2" * (pointer_expression "*(code **)puVar2" * (cast_expression "(code **)puVar2" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (argument_list "(r0,prodp,prodp_00,iVar6)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "r0[iVar6] = mVar4;" (assignment_expression "r0[iVar6] = mVar4" (subscript_expression "r0[iVar6]" identifier [ identifier ]) = identifier) ;) (expression_statement "mVar5 = mn;" (assignment_expression "mVar5 = mn" identifier = identifier) ;) (do_statement "do {\n    mVar5 = mVar5 + -1;\n    if (mVar5 < 0) {\n      pcVar8 = *(code **)(puVar2 + 0x88);\n      goto LAB_000574ba;\n    }\n  } while (m3[mVar5] == m2[mVar5]);" do (compound_statement "{\n    mVar5 = mVar5 + -1;\n    if (mVar5 < 0) {\n      pcVar8 = *(code **)(puVar2 + 0x88);\n      goto LAB_000574ba;\n    }\n  }" { (expression_statement "mVar5 = mVar5 + -1;" (assignment_expression "mVar5 = mVar5 + -1" identifier = (binary_expression "mVar5 + -1" identifier + number_literal)) ;) (if_statement "if (mVar5 < 0) {\n      pcVar8 = *(code **)(puVar2 + 0x88);\n      goto LAB_000574ba;\n    }" if (parenthesized_expression "(mVar5 < 0)" ( (binary_expression "mVar5 < 0" identifier < number_literal) )) (compound_statement "{\n      pcVar8 = *(code **)(puVar2 + 0x88);\n      goto LAB_000574ba;\n    }" { (expression_statement "pcVar8 = *(code **)(puVar2 + 0x88);" (assignment_expression "pcVar8 = *(code **)(puVar2 + 0x88)" identifier = (pointer_expression "*(code **)(puVar2 + 0x88)" * (cast_expression "(code **)(puVar2 + 0x88)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar2 + 0x88)" ( (binary_expression "puVar2 + 0x88" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_000574ba;" goto statement_identifier ;) })) }) while (parenthesized_expression "(m3[mVar5] == m2[mVar5])" ( (binary_expression "m3[mVar5] == m2[mVar5]" (subscript_expression "m3[mVar5]" identifier [ identifier ]) == (subscript_expression "m2[mVar5]" identifier [ identifier ])) )) ;) (expression_statement "pcVar8 = *(code **)(puVar2 + 0x88);" (assignment_expression "pcVar8 = *(code **)(puVar2 + 0x88)" identifier = (pointer_expression "*(code **)(puVar2 + 0x88)" * (cast_expression "(code **)(puVar2 + 0x88)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar2 + 0x88)" ( (binary_expression "puVar2 + 0x88" identifier + number_literal) ))))) ;) (if_statement "if (m2[mVar5] < m3[mVar5]) {\nLAB_000574ba:\n    (*pcVar8)(vp,m3,m2,mn);\n    local_5c = 0;\n  }\n  else {\n    (*pcVar8)(vp,m2,m3,mn);\n    local_2c = local_2c ^ 1;\n    local_5c = 1;\n  }" if (parenthesized_expression "(m2[mVar5] < m3[mVar5])" ( (binary_expression "m2[mVar5] < m3[mVar5]" (subscript_expression "m2[mVar5]" identifier [ identifier ]) < (subscript_expression "m3[mVar5]" identifier [ identifier ])) )) (compound_statement "{\nLAB_000574ba:\n    (*pcVar8)(vp,m3,m2,mn);\n    local_5c = 0;\n  }" { (labeled_statement "LAB_000574ba:\n    (*pcVar8)(vp,m3,m2,mn);" statement_identifier : (expression_statement "(*pcVar8)(vp,m3,m2,mn);" (call_expression "(*pcVar8)(vp,m3,m2,mn)" (parenthesized_expression "(*pcVar8)" ( (pointer_expression "*pcVar8" * identifier) )) (argument_list "(vp,m3,m2,mn)" ( identifier , identifier , identifier , identifier ))) ;)) (expression_statement "local_5c = 0;" (assignment_expression "local_5c = 0" identifier = number_literal) ;) }) (else_clause "else {\n    (*pcVar8)(vp,m2,m3,mn);\n    local_2c = local_2c ^ 1;\n    local_5c = 1;\n  }" else (compound_statement "{\n    (*pcVar8)(vp,m2,m3,mn);\n    local_2c = local_2c ^ 1;\n    local_5c = 1;\n  }" { (expression_statement "(*pcVar8)(vp,m2,m3,mn);" (call_expression "(*pcVar8)(vp,m2,m3,mn)" (parenthesized_expression "(*pcVar8)" ( (pointer_expression "*pcVar8" * identifier) )) (argument_list "(vp,m2,m3,mn)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "local_2c = local_2c ^ 1;" (assignment_expression "local_2c = local_2c ^ 1" identifier = (binary_expression "local_2c ^ 1" identifier ^ number_literal)) ;) (expression_statement "local_5c = 1;" (assignment_expression "local_5c = 1" identifier = number_literal) ;) }))) (if_statement "if (rn < mn) {\n    __gmpn_mul(prodp_00,vp,mn,r3,rn);\n  }\n  else {\n    __gmpn_mul(prodp_00,r3,rn,vp,mn);\n  }" if (parenthesized_expression "(rn < mn)" ( (binary_expression "rn < mn" identifier < identifier) )) (compound_statement "{\n    __gmpn_mul(prodp_00,vp,mn,r3,rn);\n  }" { (expression_statement "__gmpn_mul(prodp_00,vp,mn,r3,rn);" (call_expression "__gmpn_mul(prodp_00,vp,mn,r3,rn)" identifier (argument_list "(prodp_00,vp,mn,r3,rn)" ( identifier , identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n    __gmpn_mul(prodp_00,r3,rn,vp,mn);\n  }" else (compound_statement "{\n    __gmpn_mul(prodp_00,r3,rn,vp,mn);\n  }" { (expression_statement "__gmpn_mul(prodp_00,r3,rn,vp,mn);" (call_expression "__gmpn_mul(prodp_00,r3,rn,vp,mn)" identifier (argument_list "(prodp_00,r3,rn,vp,mn)" ( identifier , identifier , identifier , identifier , identifier ))) ;) }))) (expression_statement "prodp_00[iVar6] = 0;" (assignment_expression "prodp_00[iVar6] = 0" (subscript_expression "prodp_00[iVar6]" identifier [ identifier ]) = number_literal) ;) (expression_statement "pmVar1 = vp + mn;" (assignment_expression "pmVar1 = vp + mn" identifier = (binary_expression "vp + mn" identifier + identifier)) ;) (expression_statement "iVar3 = mn;" (assignment_expression "iVar3 = mn" identifier = identifier) ;) (if_statement "if (local_5c == 0) {\n    mVar4 = (**(code **)puVar2)(vp,vp,m1,mn);\n    *pmVar1 = mVar4;\n    if (mVar4 == 0) goto LAB_00057a50;\n    if (mn < rn) {\n      __gmpn_mul(r3,r1,rn,vp,un);\n    }\n    else {\n      __gmpn_mul(r3,vp,un,r1,rn);\n    }\n    if (r1[rn] != 0) {\n      (**(code **)puVar2)(r3 + rn,r3 + rn,vp,un);\n    }\n  }\n  else {\n    do {\n      iVar3 = iVar3 + -1;\n      if (iVar3 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_00057a2e;\n      }\n    } while (m1[iVar3] == vp[iVar3]);\n    pcVar8 = *(code **)(puVar2 + 0x88);\n    if (vp[iVar3] < m1[iVar3]) {\nLAB_00057a2e:\n      (*pcVar8)(vp,m1,vp,mn);\n      local_5c = 0;\n    }\n    else {\n      (*pcVar8)(vp,vp,m1,mn);\n    }\n    *pmVar1 = 0;\nLAB_00057a50:\n    if (iVar7 < mn) {\n      __gmpn_mul(r3,vp,mn,r1,iVar7);\n    }\n    else {\n      __gmpn_mul(r3,r1,iVar7,vp,mn);\n    }\n  }" if (parenthesized_expression "(local_5c == 0)" ( (binary_expression "local_5c == 0" identifier == number_literal) )) (compound_statement "{\n    mVar4 = (**(code **)puVar2)(vp,vp,m1,mn);\n    *pmVar1 = mVar4;\n    if (mVar4 == 0) goto LAB_00057a50;\n    if (mn < rn) {\n      __gmpn_mul(r3,r1,rn,vp,un);\n    }\n    else {\n      __gmpn_mul(r3,vp,un,r1,rn);\n    }\n    if (r1[rn] != 0) {\n      (**(code **)puVar2)(r3 + rn,r3 + rn,vp,un);\n    }\n  }" { (expression_statement "mVar4 = (**(code **)puVar2)(vp,vp,m1,mn);" (assignment_expression "mVar4 = (**(code **)puVar2)(vp,vp,m1,mn)" identifier = (call_expression "(**(code **)puVar2)(vp,vp,m1,mn)" (parenthesized_expression "(**(code **)puVar2)" ( (pointer_expression "**(code **)puVar2" * (pointer_expression "*(code **)puVar2" * (cast_expression "(code **)puVar2" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (argument_list "(vp,vp,m1,mn)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "*pmVar1 = mVar4;" (assignment_expression "*pmVar1 = mVar4" (pointer_expression "*pmVar1" * identifier) = identifier) ;) (if_statement "if (mVar4 == 0) goto LAB_00057a50;" if (parenthesized_expression "(mVar4 == 0)" ( (binary_expression "mVar4 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00057a50;" goto statement_identifier ;)) (if_statement "if (mn < rn) {\n      __gmpn_mul(r3,r1,rn,vp,un);\n    }\n    else {\n      __gmpn_mul(r3,vp,un,r1,rn);\n    }" if (parenthesized_expression "(mn < rn)" ( (binary_expression "mn < rn" identifier < identifier) )) (compound_statement "{\n      __gmpn_mul(r3,r1,rn,vp,un);\n    }" { (expression_statement "__gmpn_mul(r3,r1,rn,vp,un);" (call_expression "__gmpn_mul(r3,r1,rn,vp,un)" identifier (argument_list "(r3,r1,rn,vp,un)" ( identifier , identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n      __gmpn_mul(r3,vp,un,r1,rn);\n    }" else (compound_statement "{\n      __gmpn_mul(r3,vp,un,r1,rn);\n    }" { (expression_statement "__gmpn_mul(r3,vp,un,r1,rn);" (call_expression "__gmpn_mul(r3,vp,un,r1,rn)" identifier (argument_list "(r3,vp,un,r1,rn)" ( identifier , identifier , identifier , identifier , identifier ))) ;) }))) (if_statement "if (r1[rn] != 0) {\n      (**(code **)puVar2)(r3 + rn,r3 + rn,vp,un);\n    }" if (parenthesized_expression "(r1[rn] != 0)" ( (binary_expression "r1[rn] != 0" (subscript_expression "r1[rn]" identifier [ identifier ]) != number_literal) )) (compound_statement "{\n      (**(code **)puVar2)(r3 + rn,r3 + rn,vp,un);\n    }" { (expression_statement "(**(code **)puVar2)(r3 + rn,r3 + rn,vp,un);" (call_expression "(**(code **)puVar2)(r3 + rn,r3 + rn,vp,un)" (parenthesized_expression "(**(code **)puVar2)" ( (pointer_expression "**(code **)puVar2" * (pointer_expression "*(code **)puVar2" * (cast_expression "(code **)puVar2" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (argument_list "(r3 + rn,r3 + rn,vp,un)" ( (binary_expression "r3 + rn" identifier + identifier) , (binary_expression "r3 + rn" identifier + identifier) , identifier , identifier ))) ;) })) }) (else_clause "else {\n    do {\n      iVar3 = iVar3 + -1;\n      if (iVar3 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_00057a2e;\n      }\n    } while (m1[iVar3] == vp[iVar3]);\n    pcVar8 = *(code **)(puVar2 + 0x88);\n    if (vp[iVar3] < m1[iVar3]) {\nLAB_00057a2e:\n      (*pcVar8)(vp,m1,vp,mn);\n      local_5c = 0;\n    }\n    else {\n      (*pcVar8)(vp,vp,m1,mn);\n    }\n    *pmVar1 = 0;\nLAB_00057a50:\n    if (iVar7 < mn) {\n      __gmpn_mul(r3,vp,mn,r1,iVar7);\n    }\n    else {\n      __gmpn_mul(r3,r1,iVar7,vp,mn);\n    }\n  }" else (compound_statement "{\n    do {\n      iVar3 = iVar3 + -1;\n      if (iVar3 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_00057a2e;\n      }\n    } while (m1[iVar3] == vp[iVar3]);\n    pcVar8 = *(code **)(puVar2 + 0x88);\n    if (vp[iVar3] < m1[iVar3]) {\nLAB_00057a2e:\n      (*pcVar8)(vp,m1,vp,mn);\n      local_5c = 0;\n    }\n    else {\n      (*pcVar8)(vp,vp,m1,mn);\n    }\n    *pmVar1 = 0;\nLAB_00057a50:\n    if (iVar7 < mn) {\n      __gmpn_mul(r3,vp,mn,r1,iVar7);\n    }\n    else {\n      __gmpn_mul(r3,r1,iVar7,vp,mn);\n    }\n  }" { (do_statement "do {\n      iVar3 = iVar3 + -1;\n      if (iVar3 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_00057a2e;\n      }\n    } while (m1[iVar3] == vp[iVar3]);" do (compound_statement "{\n      iVar3 = iVar3 + -1;\n      if (iVar3 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_00057a2e;\n      }\n    }" { (expression_statement "iVar3 = iVar3 + -1;" (assignment_expression "iVar3 = iVar3 + -1" identifier = (binary_expression "iVar3 + -1" identifier + number_literal)) ;) (if_statement "if (iVar3 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_00057a2e;\n      }" if (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) (compound_statement "{\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_00057a2e;\n      }" { (expression_statement "pcVar8 = *(code **)(puVar2 + 0x88);" (assignment_expression "pcVar8 = *(code **)(puVar2 + 0x88)" identifier = (pointer_expression "*(code **)(puVar2 + 0x88)" * (cast_expression "(code **)(puVar2 + 0x88)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar2 + 0x88)" ( (binary_expression "puVar2 + 0x88" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_00057a2e;" goto statement_identifier ;) })) }) while (parenthesized_expression "(m1[iVar3] == vp[iVar3])" ( (binary_expression "m1[iVar3] == vp[iVar3]" (subscript_expression "m1[iVar3]" identifier [ identifier ]) == (subscript_expression "vp[iVar3]" identifier [ identifier ])) )) ;) (expression_statement "pcVar8 = *(code **)(puVar2 + 0x88);" (assignment_expression "pcVar8 = *(code **)(puVar2 + 0x88)" identifier = (pointer_expression "*(code **)(puVar2 + 0x88)" * (cast_expression "(code **)(puVar2 + 0x88)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar2 + 0x88)" ( (binary_expression "puVar2 + 0x88" identifier + number_literal) ))))) ;) (if_statement "if (vp[iVar3] < m1[iVar3]) {\nLAB_00057a2e:\n      (*pcVar8)(vp,m1,vp,mn);\n      local_5c = 0;\n    }\n    else {\n      (*pcVar8)(vp,vp,m1,mn);\n    }" if (parenthesized_expression "(vp[iVar3] < m1[iVar3])" ( (binary_expression "vp[iVar3] < m1[iVar3]" (subscript_expression "vp[iVar3]" identifier [ identifier ]) < (subscript_expression "m1[iVar3]" identifier [ identifier ])) )) (compound_statement "{\nLAB_00057a2e:\n      (*pcVar8)(vp,m1,vp,mn);\n      local_5c = 0;\n    }" { (labeled_statement "LAB_00057a2e:\n      (*pcVar8)(vp,m1,vp,mn);" statement_identifier : (expression_statement "(*pcVar8)(vp,m1,vp,mn);" (call_expression "(*pcVar8)(vp,m1,vp,mn)" (parenthesized_expression "(*pcVar8)" ( (pointer_expression "*pcVar8" * identifier) )) (argument_list "(vp,m1,vp,mn)" ( identifier , identifier , identifier , identifier ))) ;)) (expression_statement "local_5c = 0;" (assignment_expression "local_5c = 0" identifier = number_literal) ;) }) (else_clause "else {\n      (*pcVar8)(vp,vp,m1,mn);\n    }" else (compound_statement "{\n      (*pcVar8)(vp,vp,m1,mn);\n    }" { (expression_statement "(*pcVar8)(vp,vp,m1,mn);" (call_expression "(*pcVar8)(vp,vp,m1,mn)" (parenthesized_expression "(*pcVar8)" ( (pointer_expression "*pcVar8" * identifier) )) (argument_list "(vp,vp,m1,mn)" ( identifier , identifier , identifier , identifier ))) ;) }))) (expression_statement "*pmVar1 = 0;" (assignment_expression "*pmVar1 = 0" (pointer_expression "*pmVar1" * identifier) = number_literal) ;) (labeled_statement "LAB_00057a50:\n    if (iVar7 < mn) {\n      __gmpn_mul(r3,vp,mn,r1,iVar7);\n    }\n    else {\n      __gmpn_mul(r3,r1,iVar7,vp,mn);\n    }" statement_identifier : (if_statement "if (iVar7 < mn) {\n      __gmpn_mul(r3,vp,mn,r1,iVar7);\n    }\n    else {\n      __gmpn_mul(r3,r1,iVar7,vp,mn);\n    }" if (parenthesized_expression "(iVar7 < mn)" ( (binary_expression "iVar7 < mn" identifier < identifier) )) (compound_statement "{\n      __gmpn_mul(r3,vp,mn,r1,iVar7);\n    }" { (expression_statement "__gmpn_mul(r3,vp,mn,r1,iVar7);" (call_expression "__gmpn_mul(r3,vp,mn,r1,iVar7)" identifier (argument_list "(r3,vp,mn,r1,iVar7)" ( identifier , identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n      __gmpn_mul(r3,r1,iVar7,vp,mn);\n    }" else (compound_statement "{\n      __gmpn_mul(r3,r1,iVar7,vp,mn);\n    }" { (expression_statement "__gmpn_mul(r3,r1,iVar7,vp,mn);" (call_expression "__gmpn_mul(r3,r1,iVar7,vp,mn)" identifier (argument_list "(r3,r1,iVar7,vp,mn)" ( identifier , identifier , identifier , identifier , identifier ))) ;) })))) }))) (expression_statement "prodp[iVar6] = 0;" (assignment_expression "prodp[iVar6] = 0" (subscript_expression "prodp[iVar6]" identifier [ identifier ]) = number_literal) ;) (expression_statement "iVar6 = iVar9;" (assignment_expression "iVar6 = iVar9" identifier = identifier) ;) (if_statement "if (local_3c == local_5c) {\n    (**(code **)puVar2)(r3,r3,prodp,iVar9);\n    local_60 = 0;\n    if (local_5c == 0) goto LAB_000578c7;\nLAB_000575ee:\n    mVar4 = (**(code **)puVar2)(vp,vp,m0,mn);\n    *pmVar1 = mVar4;\nLAB_00057608:\n    if (rn <= mn) goto LAB_000578fc;\nLAB_00057610:\n    __gmpn_mul(prodp,r2,rn,vp,un);\n    if (local_3c != 0) goto LAB_00057638;\nLAB_00057924:\n    iVar9 = (**(code **)puVar2)(r1,r1,r2,rn);\n    *local_38 = *local_38 + iVar9;\n  }\n  else {\n    do {\n      iVar6 = iVar6 + -1;\n      if (iVar6 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_000575cb;\n      }\n    } while (prodp[iVar6] == r3[iVar6]);\n    pcVar8 = *(code **)(puVar2 + 0x88);\n    if (r3[iVar6] < prodp[iVar6]) {\nLAB_000575cb:\n      (*pcVar8)(r3,prodp,r3,iVar9);\n      local_60 = 0;\n    }\n    else {\n      (*pcVar8)(r3,r3,prodp,iVar9);\n      local_60 = 1;\n    }\n    if (local_5c != 0) goto LAB_000575ee;\nLAB_000578c7:\n    pcVar8 = *(code **)(puVar2 + 0x88);\n    iVar9 = mn;\n    if (*pmVar1 == 0) {\n      do {\n        iVar9 = iVar9 + -1;\n        if (iVar9 < 0) goto LAB_00057cd1;\n      } while (vp[iVar9] == m0[iVar9]);\n      if (m0[iVar9] < vp[iVar9]) {\nLAB_00057cd1:\n        (*pcVar8)(vp,vp,m0,mn);\n      }\n      else {\n        (*pcVar8)(vp,m0,vp,mn);\n        local_5c = 1;\n      }\n      goto LAB_00057608;\n    }\n    iVar9 = (*pcVar8)(vp,vp,m0,mn);\n    *pmVar1 = *pmVar1 - iVar9;\n    if (mn < rn) goto LAB_00057610;\nLAB_000578fc:\n    __gmpn_mul(prodp,vp,un,r2,rn);\n    if (local_3c == 0) goto LAB_00057924;\nLAB_00057638:\n    (**(code **)(puVar2 + 0x88))(r1,r2,r1,rn);\n  }" if (parenthesized_expression "(local_3c == local_5c)" ( (binary_expression "local_3c == local_5c" identifier == identifier) )) (compound_statement "{\n    (**(code **)puVar2)(r3,r3,prodp,iVar9);\n    local_60 = 0;\n    if (local_5c == 0) goto LAB_000578c7;\nLAB_000575ee:\n    mVar4 = (**(code **)puVar2)(vp,vp,m0,mn);\n    *pmVar1 = mVar4;\nLAB_00057608:\n    if (rn <= mn) goto LAB_000578fc;\nLAB_00057610:\n    __gmpn_mul(prodp,r2,rn,vp,un);\n    if (local_3c != 0) goto LAB_00057638;\nLAB_00057924:\n    iVar9 = (**(code **)puVar2)(r1,r1,r2,rn);\n    *local_38 = *local_38 + iVar9;\n  }" { (expression_statement "(**(code **)puVar2)(r3,r3,prodp,iVar9);" (call_expression "(**(code **)puVar2)(r3,r3,prodp,iVar9)" (parenthesized_expression "(**(code **)puVar2)" ( (pointer_expression "**(code **)puVar2" * (pointer_expression "*(code **)puVar2" * (cast_expression "(code **)puVar2" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (argument_list "(r3,r3,prodp,iVar9)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" identifier = number_literal) ;) (if_statement "if (local_5c == 0) goto LAB_000578c7;" if (parenthesized_expression "(local_5c == 0)" ( (binary_expression "local_5c == 0" identifier == number_literal) )) (goto_statement "goto LAB_000578c7;" goto statement_identifier ;)) (labeled_statement "LAB_000575ee:\n    mVar4 = (**(code **)puVar2)(vp,vp,m0,mn);" statement_identifier : (expression_statement "mVar4 = (**(code **)puVar2)(vp,vp,m0,mn);" (assignment_expression "mVar4 = (**(code **)puVar2)(vp,vp,m0,mn)" identifier = (call_expression "(**(code **)puVar2)(vp,vp,m0,mn)" (parenthesized_expression "(**(code **)puVar2)" ( (pointer_expression "**(code **)puVar2" * (pointer_expression "*(code **)puVar2" * (cast_expression "(code **)puVar2" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (argument_list "(vp,vp,m0,mn)" ( identifier , identifier , identifier , identifier )))) ;)) (expression_statement "*pmVar1 = mVar4;" (assignment_expression "*pmVar1 = mVar4" (pointer_expression "*pmVar1" * identifier) = identifier) ;) (labeled_statement "LAB_00057608:\n    if (rn <= mn) goto LAB_000578fc;" statement_identifier : (if_statement "if (rn <= mn) goto LAB_000578fc;" if (parenthesized_expression "(rn <= mn)" ( (binary_expression "rn <= mn" identifier <= identifier) )) (goto_statement "goto LAB_000578fc;" goto statement_identifier ;))) (labeled_statement "LAB_00057610:\n    __gmpn_mul(prodp,r2,rn,vp,un);" statement_identifier : (expression_statement "__gmpn_mul(prodp,r2,rn,vp,un);" (call_expression "__gmpn_mul(prodp,r2,rn,vp,un)" identifier (argument_list "(prodp,r2,rn,vp,un)" ( identifier , identifier , identifier , identifier , identifier ))) ;)) (if_statement "if (local_3c != 0) goto LAB_00057638;" if (parenthesized_expression "(local_3c != 0)" ( (binary_expression "local_3c != 0" identifier != number_literal) )) (goto_statement "goto LAB_00057638;" goto statement_identifier ;)) (labeled_statement "LAB_00057924:\n    iVar9 = (**(code **)puVar2)(r1,r1,r2,rn);" statement_identifier : (expression_statement "iVar9 = (**(code **)puVar2)(r1,r1,r2,rn);" (assignment_expression "iVar9 = (**(code **)puVar2)(r1,r1,r2,rn)" identifier = (call_expression "(**(code **)puVar2)(r1,r1,r2,rn)" (parenthesized_expression "(**(code **)puVar2)" ( (pointer_expression "**(code **)puVar2" * (pointer_expression "*(code **)puVar2" * (cast_expression "(code **)puVar2" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (argument_list "(r1,r1,r2,rn)" ( identifier , identifier , identifier , identifier )))) ;)) (expression_statement "*local_38 = *local_38 + iVar9;" (assignment_expression "*local_38 = *local_38 + iVar9" (pointer_expression "*local_38" * identifier) = (binary_expression "*local_38 + iVar9" (pointer_expression "*local_38" * identifier) + identifier)) ;) }) (else_clause "else {\n    do {\n      iVar6 = iVar6 + -1;\n      if (iVar6 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_000575cb;\n      }\n    } while (prodp[iVar6] == r3[iVar6]);\n    pcVar8 = *(code **)(puVar2 + 0x88);\n    if (r3[iVar6] < prodp[iVar6]) {\nLAB_000575cb:\n      (*pcVar8)(r3,prodp,r3,iVar9);\n      local_60 = 0;\n    }\n    else {\n      (*pcVar8)(r3,r3,prodp,iVar9);\n      local_60 = 1;\n    }\n    if (local_5c != 0) goto LAB_000575ee;\nLAB_000578c7:\n    pcVar8 = *(code **)(puVar2 + 0x88);\n    iVar9 = mn;\n    if (*pmVar1 == 0) {\n      do {\n        iVar9 = iVar9 + -1;\n        if (iVar9 < 0) goto LAB_00057cd1;\n      } while (vp[iVar9] == m0[iVar9]);\n      if (m0[iVar9] < vp[iVar9]) {\nLAB_00057cd1:\n        (*pcVar8)(vp,vp,m0,mn);\n      }\n      else {\n        (*pcVar8)(vp,m0,vp,mn);\n        local_5c = 1;\n      }\n      goto LAB_00057608;\n    }\n    iVar9 = (*pcVar8)(vp,vp,m0,mn);\n    *pmVar1 = *pmVar1 - iVar9;\n    if (mn < rn) goto LAB_00057610;\nLAB_000578fc:\n    __gmpn_mul(prodp,vp,un,r2,rn);\n    if (local_3c == 0) goto LAB_00057924;\nLAB_00057638:\n    (**(code **)(puVar2 + 0x88))(r1,r2,r1,rn);\n  }" else (compound_statement "{\n    do {\n      iVar6 = iVar6 + -1;\n      if (iVar6 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_000575cb;\n      }\n    } while (prodp[iVar6] == r3[iVar6]);\n    pcVar8 = *(code **)(puVar2 + 0x88);\n    if (r3[iVar6] < prodp[iVar6]) {\nLAB_000575cb:\n      (*pcVar8)(r3,prodp,r3,iVar9);\n      local_60 = 0;\n    }\n    else {\n      (*pcVar8)(r3,r3,prodp,iVar9);\n      local_60 = 1;\n    }\n    if (local_5c != 0) goto LAB_000575ee;\nLAB_000578c7:\n    pcVar8 = *(code **)(puVar2 + 0x88);\n    iVar9 = mn;\n    if (*pmVar1 == 0) {\n      do {\n        iVar9 = iVar9 + -1;\n        if (iVar9 < 0) goto LAB_00057cd1;\n      } while (vp[iVar9] == m0[iVar9]);\n      if (m0[iVar9] < vp[iVar9]) {\nLAB_00057cd1:\n        (*pcVar8)(vp,vp,m0,mn);\n      }\n      else {\n        (*pcVar8)(vp,m0,vp,mn);\n        local_5c = 1;\n      }\n      goto LAB_00057608;\n    }\n    iVar9 = (*pcVar8)(vp,vp,m0,mn);\n    *pmVar1 = *pmVar1 - iVar9;\n    if (mn < rn) goto LAB_00057610;\nLAB_000578fc:\n    __gmpn_mul(prodp,vp,un,r2,rn);\n    if (local_3c == 0) goto LAB_00057924;\nLAB_00057638:\n    (**(code **)(puVar2 + 0x88))(r1,r2,r1,rn);\n  }" { (do_statement "do {\n      iVar6 = iVar6 + -1;\n      if (iVar6 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_000575cb;\n      }\n    } while (prodp[iVar6] == r3[iVar6]);" do (compound_statement "{\n      iVar6 = iVar6 + -1;\n      if (iVar6 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_000575cb;\n      }\n    }" { (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (if_statement "if (iVar6 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_000575cb;\n      }" if (parenthesized_expression "(iVar6 < 0)" ( (binary_expression "iVar6 < 0" identifier < number_literal) )) (compound_statement "{\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_000575cb;\n      }" { (expression_statement "pcVar8 = *(code **)(puVar2 + 0x88);" (assignment_expression "pcVar8 = *(code **)(puVar2 + 0x88)" identifier = (pointer_expression "*(code **)(puVar2 + 0x88)" * (cast_expression "(code **)(puVar2 + 0x88)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar2 + 0x88)" ( (binary_expression "puVar2 + 0x88" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_000575cb;" goto statement_identifier ;) })) }) while (parenthesized_expression "(prodp[iVar6] == r3[iVar6])" ( (binary_expression "prodp[iVar6] == r3[iVar6]" (subscript_expression "prodp[iVar6]" identifier [ identifier ]) == (subscript_expression "r3[iVar6]" identifier [ identifier ])) )) ;) (expression_statement "pcVar8 = *(code **)(puVar2 + 0x88);" (assignment_expression "pcVar8 = *(code **)(puVar2 + 0x88)" identifier = (pointer_expression "*(code **)(puVar2 + 0x88)" * (cast_expression "(code **)(puVar2 + 0x88)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar2 + 0x88)" ( (binary_expression "puVar2 + 0x88" identifier + number_literal) ))))) ;) (if_statement "if (r3[iVar6] < prodp[iVar6]) {\nLAB_000575cb:\n      (*pcVar8)(r3,prodp,r3,iVar9);\n      local_60 = 0;\n    }\n    else {\n      (*pcVar8)(r3,r3,prodp,iVar9);\n      local_60 = 1;\n    }" if (parenthesized_expression "(r3[iVar6] < prodp[iVar6])" ( (binary_expression "r3[iVar6] < prodp[iVar6]" (subscript_expression "r3[iVar6]" identifier [ identifier ]) < (subscript_expression "prodp[iVar6]" identifier [ identifier ])) )) (compound_statement "{\nLAB_000575cb:\n      (*pcVar8)(r3,prodp,r3,iVar9);\n      local_60 = 0;\n    }" { (labeled_statement "LAB_000575cb:\n      (*pcVar8)(r3,prodp,r3,iVar9);" statement_identifier : (expression_statement "(*pcVar8)(r3,prodp,r3,iVar9);" (call_expression "(*pcVar8)(r3,prodp,r3,iVar9)" (parenthesized_expression "(*pcVar8)" ( (pointer_expression "*pcVar8" * identifier) )) (argument_list "(r3,prodp,r3,iVar9)" ( identifier , identifier , identifier , identifier ))) ;)) (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      (*pcVar8)(r3,r3,prodp,iVar9);\n      local_60 = 1;\n    }" else (compound_statement "{\n      (*pcVar8)(r3,r3,prodp,iVar9);\n      local_60 = 1;\n    }" { (expression_statement "(*pcVar8)(r3,r3,prodp,iVar9);" (call_expression "(*pcVar8)(r3,r3,prodp,iVar9)" (parenthesized_expression "(*pcVar8)" ( (pointer_expression "*pcVar8" * identifier) )) (argument_list "(r3,r3,prodp,iVar9)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "local_60 = 1;" (assignment_expression "local_60 = 1" identifier = number_literal) ;) }))) (if_statement "if (local_5c != 0) goto LAB_000575ee;" if (parenthesized_expression "(local_5c != 0)" ( (binary_expression "local_5c != 0" identifier != number_literal) )) (goto_statement "goto LAB_000575ee;" goto statement_identifier ;)) (labeled_statement "LAB_000578c7:\n    pcVar8 = *(code **)(puVar2 + 0x88);" statement_identifier : (expression_statement "pcVar8 = *(code **)(puVar2 + 0x88);" (assignment_expression "pcVar8 = *(code **)(puVar2 + 0x88)" identifier = (pointer_expression "*(code **)(puVar2 + 0x88)" * (cast_expression "(code **)(puVar2 + 0x88)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar2 + 0x88)" ( (binary_expression "puVar2 + 0x88" identifier + number_literal) ))))) ;)) (expression_statement "iVar9 = mn;" (assignment_expression "iVar9 = mn" identifier = identifier) ;) (if_statement "if (*pmVar1 == 0) {\n      do {\n        iVar9 = iVar9 + -1;\n        if (iVar9 < 0) goto LAB_00057cd1;\n      } while (vp[iVar9] == m0[iVar9]);\n      if (m0[iVar9] < vp[iVar9]) {\nLAB_00057cd1:\n        (*pcVar8)(vp,vp,m0,mn);\n      }\n      else {\n        (*pcVar8)(vp,m0,vp,mn);\n        local_5c = 1;\n      }\n      goto LAB_00057608;\n    }" if (parenthesized_expression "(*pmVar1 == 0)" ( (binary_expression "*pmVar1 == 0" (pointer_expression "*pmVar1" * identifier) == number_literal) )) (compound_statement "{\n      do {\n        iVar9 = iVar9 + -1;\n        if (iVar9 < 0) goto LAB_00057cd1;\n      } while (vp[iVar9] == m0[iVar9]);\n      if (m0[iVar9] < vp[iVar9]) {\nLAB_00057cd1:\n        (*pcVar8)(vp,vp,m0,mn);\n      }\n      else {\n        (*pcVar8)(vp,m0,vp,mn);\n        local_5c = 1;\n      }\n      goto LAB_00057608;\n    }" { (do_statement "do {\n        iVar9 = iVar9 + -1;\n        if (iVar9 < 0) goto LAB_00057cd1;\n      } while (vp[iVar9] == m0[iVar9]);" do (compound_statement "{\n        iVar9 = iVar9 + -1;\n        if (iVar9 < 0) goto LAB_00057cd1;\n      }" { (expression_statement "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ;) (if_statement "if (iVar9 < 0) goto LAB_00057cd1;" if (parenthesized_expression "(iVar9 < 0)" ( (binary_expression "iVar9 < 0" identifier < number_literal) )) (goto_statement "goto LAB_00057cd1;" goto statement_identifier ;)) }) while (parenthesized_expression "(vp[iVar9] == m0[iVar9])" ( (binary_expression "vp[iVar9] == m0[iVar9]" (subscript_expression "vp[iVar9]" identifier [ identifier ]) == (subscript_expression "m0[iVar9]" identifier [ identifier ])) )) ;) (if_statement "if (m0[iVar9] < vp[iVar9]) {\nLAB_00057cd1:\n        (*pcVar8)(vp,vp,m0,mn);\n      }\n      else {\n        (*pcVar8)(vp,m0,vp,mn);\n        local_5c = 1;\n      }" if (parenthesized_expression "(m0[iVar9] < vp[iVar9])" ( (binary_expression "m0[iVar9] < vp[iVar9]" (subscript_expression "m0[iVar9]" identifier [ identifier ]) < (subscript_expression "vp[iVar9]" identifier [ identifier ])) )) (compound_statement "{\nLAB_00057cd1:\n        (*pcVar8)(vp,vp,m0,mn);\n      }" { (labeled_statement "LAB_00057cd1:\n        (*pcVar8)(vp,vp,m0,mn);" statement_identifier : (expression_statement "(*pcVar8)(vp,vp,m0,mn);" (call_expression "(*pcVar8)(vp,vp,m0,mn)" (parenthesized_expression "(*pcVar8)" ( (pointer_expression "*pcVar8" * identifier) )) (argument_list "(vp,vp,m0,mn)" ( identifier , identifier , identifier , identifier ))) ;)) }) (else_clause "else {\n        (*pcVar8)(vp,m0,vp,mn);\n        local_5c = 1;\n      }" else (compound_statement "{\n        (*pcVar8)(vp,m0,vp,mn);\n        local_5c = 1;\n      }" { (expression_statement "(*pcVar8)(vp,m0,vp,mn);" (call_expression "(*pcVar8)(vp,m0,vp,mn)" (parenthesized_expression "(*pcVar8)" ( (pointer_expression "*pcVar8" * identifier) )) (argument_list "(vp,m0,vp,mn)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "local_5c = 1;" (assignment_expression "local_5c = 1" identifier = number_literal) ;) }))) (goto_statement "goto LAB_00057608;" goto statement_identifier ;) })) (expression_statement "iVar9 = (*pcVar8)(vp,vp,m0,mn);" (assignment_expression "iVar9 = (*pcVar8)(vp,vp,m0,mn)" identifier = (call_expression "(*pcVar8)(vp,vp,m0,mn)" (parenthesized_expression "(*pcVar8)" ( (pointer_expression "*pcVar8" * identifier) )) (argument_list "(vp,vp,m0,mn)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "*pmVar1 = *pmVar1 - iVar9;" (assignment_expression "*pmVar1 = *pmVar1 - iVar9" (pointer_expression "*pmVar1" * identifier) = (binary_expression "*pmVar1 - iVar9" (pointer_expression "*pmVar1" * identifier) - identifier)) ;) (if_statement "if (mn < rn) goto LAB_00057610;" if (parenthesized_expression "(mn < rn)" ( (binary_expression "mn < rn" identifier < identifier) )) (goto_statement "goto LAB_00057610;" goto statement_identifier ;)) (labeled_statement "LAB_000578fc:\n    __gmpn_mul(prodp,vp,un,r2,rn);" statement_identifier : (expression_statement "__gmpn_mul(prodp,vp,un,r2,rn);" (call_expression "__gmpn_mul(prodp,vp,un,r2,rn)" identifier (argument_list "(prodp,vp,un,r2,rn)" ( identifier , identifier , identifier , identifier , identifier ))) ;)) (if_statement "if (local_3c == 0) goto LAB_00057924;" if (parenthesized_expression "(local_3c == 0)" ( (binary_expression "local_3c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00057924;" goto statement_identifier ;)) (labeled_statement "LAB_00057638:\n    (**(code **)(puVar2 + 0x88))(r1,r2,r1,rn);" statement_identifier : (expression_statement "(**(code **)(puVar2 + 0x88))(r1,r2,r1,rn);" (call_expression "(**(code **)(puVar2 + 0x88))(r1,r2,r1,rn)" (parenthesized_expression "(**(code **)(puVar2 + 0x88))" ( (pointer_expression "**(code **)(puVar2 + 0x88)" * (pointer_expression "*(code **)(puVar2 + 0x88)" * (cast_expression "(code **)(puVar2 + 0x88)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar2 + 0x88)" ( (binary_expression "puVar2 + 0x88" identifier + number_literal) ))))) )) (argument_list "(r1,r2,r1,rn)" ( identifier , identifier , identifier , identifier ))) ;)) }))) (expression_statement "iVar9 = mn + iVar7;" (assignment_expression "iVar9 = mn + iVar7" identifier = (binary_expression "mn + iVar7" identifier + identifier)) ;) (expression_statement "iVar3 = iVar9;" (assignment_expression "iVar3 = iVar9" identifier = identifier) ;) (expression_statement "iVar6 = iVar9;" (assignment_expression "iVar6 = iVar9" identifier = identifier) ;) (if_statement "if (local_60 == local_5c) {\n    (**(code **)puVar2)(r2,r3,prodp,iVar9);\n    local_5c = local_60;\n    if (local_60 == local_2c) goto LAB_00057971;\nLAB_000576cd:\n    do {\n      iVar6 = iVar6 + -1;\n      if (iVar6 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_000576db;\n      }\n    } while (r3[iVar6] == prodp_00[iVar6]);\n    pcVar8 = *(code **)(puVar2 + 0x88);\n    if (prodp_00[iVar6] < r3[iVar6]) {\nLAB_000576db:\n      (*pcVar8)(r3,r3,prodp_00,iVar9);\n    }\n    else {\n      (*pcVar8)(r3,prodp_00,r3,iVar9);\n      local_60 = local_60 ^ 1;\n    }\n    if (mn <= iVar7) goto LAB_000576f3;\nLAB_0005798d:\n    __gmpn_mul(prodp,m1,mn,tp,iVar7);\n    mVar4 = (**(code **)puVar2)(vp,m3,m1,mn);\n    *pmVar1 = mVar4;\n  }\n  else {\n    do {\n      iVar3 = iVar3 + -1;\n      if (iVar3 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_0005768b;\n      }\n    } while (r3[iVar3] == prodp[iVar3]);\n    pcVar8 = *(code **)(puVar2 + 0x88);\n    if (prodp[iVar3] < r3[iVar3]) {\nLAB_0005768b:\n      (*pcVar8)(r2,r3,prodp,iVar9);\n      local_5c = local_60;\n    }\n    else {\n      (*pcVar8)(r2,prodp,r3,iVar9);\n      local_5c = local_60 ^ 1;\n    }\n    if (local_60 != local_2c) goto LAB_000576cd;\nLAB_00057971:\n    (**(code **)puVar2)(r3,r3,prodp_00,iVar9);\n    if (iVar7 < mn) goto LAB_0005798d;\nLAB_000576f3:\n    __gmpn_mul(prodp,tp,iVar7,m1,mn);\n    mVar4 = (**(code **)puVar2)(vp,m3,m1,mn);\n    *pmVar1 = mVar4;\n    if (mn < iVar7) {\n      __gmpn_mul(prodp_00,r1,iVar7,vp,un);\n      goto LAB_00057755;\n    }\n  }" if (parenthesized_expression "(local_60 == local_5c)" ( (binary_expression "local_60 == local_5c" identifier == identifier) )) (compound_statement "{\n    (**(code **)puVar2)(r2,r3,prodp,iVar9);\n    local_5c = local_60;\n    if (local_60 == local_2c) goto LAB_00057971;\nLAB_000576cd:\n    do {\n      iVar6 = iVar6 + -1;\n      if (iVar6 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_000576db;\n      }\n    } while (r3[iVar6] == prodp_00[iVar6]);\n    pcVar8 = *(code **)(puVar2 + 0x88);\n    if (prodp_00[iVar6] < r3[iVar6]) {\nLAB_000576db:\n      (*pcVar8)(r3,r3,prodp_00,iVar9);\n    }\n    else {\n      (*pcVar8)(r3,prodp_00,r3,iVar9);\n      local_60 = local_60 ^ 1;\n    }\n    if (mn <= iVar7) goto LAB_000576f3;\nLAB_0005798d:\n    __gmpn_mul(prodp,m1,mn,tp,iVar7);\n    mVar4 = (**(code **)puVar2)(vp,m3,m1,mn);\n    *pmVar1 = mVar4;\n  }" { (expression_statement "(**(code **)puVar2)(r2,r3,prodp,iVar9);" (call_expression "(**(code **)puVar2)(r2,r3,prodp,iVar9)" (parenthesized_expression "(**(code **)puVar2)" ( (pointer_expression "**(code **)puVar2" * (pointer_expression "*(code **)puVar2" * (cast_expression "(code **)puVar2" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (argument_list "(r2,r3,prodp,iVar9)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "local_5c = local_60;" (assignment_expression "local_5c = local_60" identifier = identifier) ;) (if_statement "if (local_60 == local_2c) goto LAB_00057971;" if (parenthesized_expression "(local_60 == local_2c)" ( (binary_expression "local_60 == local_2c" identifier == identifier) )) (goto_statement "goto LAB_00057971;" goto statement_identifier ;)) (labeled_statement "LAB_000576cd:\n    do {\n      iVar6 = iVar6 + -1;\n      if (iVar6 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_000576db;\n      }\n    } while (r3[iVar6] == prodp_00[iVar6]);" statement_identifier : (do_statement "do {\n      iVar6 = iVar6 + -1;\n      if (iVar6 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_000576db;\n      }\n    } while (r3[iVar6] == prodp_00[iVar6]);" do (compound_statement "{\n      iVar6 = iVar6 + -1;\n      if (iVar6 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_000576db;\n      }\n    }" { (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (if_statement "if (iVar6 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_000576db;\n      }" if (parenthesized_expression "(iVar6 < 0)" ( (binary_expression "iVar6 < 0" identifier < number_literal) )) (compound_statement "{\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_000576db;\n      }" { (expression_statement "pcVar8 = *(code **)(puVar2 + 0x88);" (assignment_expression "pcVar8 = *(code **)(puVar2 + 0x88)" identifier = (pointer_expression "*(code **)(puVar2 + 0x88)" * (cast_expression "(code **)(puVar2 + 0x88)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar2 + 0x88)" ( (binary_expression "puVar2 + 0x88" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_000576db;" goto statement_identifier ;) })) }) while (parenthesized_expression "(r3[iVar6] == prodp_00[iVar6])" ( (binary_expression "r3[iVar6] == prodp_00[iVar6]" (subscript_expression "r3[iVar6]" identifier [ identifier ]) == (subscript_expression "prodp_00[iVar6]" identifier [ identifier ])) )) ;)) (expression_statement "pcVar8 = *(code **)(puVar2 + 0x88);" (assignment_expression "pcVar8 = *(code **)(puVar2 + 0x88)" identifier = (pointer_expression "*(code **)(puVar2 + 0x88)" * (cast_expression "(code **)(puVar2 + 0x88)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar2 + 0x88)" ( (binary_expression "puVar2 + 0x88" identifier + number_literal) ))))) ;) (if_statement "if (prodp_00[iVar6] < r3[iVar6]) {\nLAB_000576db:\n      (*pcVar8)(r3,r3,prodp_00,iVar9);\n    }\n    else {\n      (*pcVar8)(r3,prodp_00,r3,iVar9);\n      local_60 = local_60 ^ 1;\n    }" if (parenthesized_expression "(prodp_00[iVar6] < r3[iVar6])" ( (binary_expression "prodp_00[iVar6] < r3[iVar6]" (subscript_expression "prodp_00[iVar6]" identifier [ identifier ]) < (subscript_expression "r3[iVar6]" identifier [ identifier ])) )) (compound_statement "{\nLAB_000576db:\n      (*pcVar8)(r3,r3,prodp_00,iVar9);\n    }" { (labeled_statement "LAB_000576db:\n      (*pcVar8)(r3,r3,prodp_00,iVar9);" statement_identifier : (expression_statement "(*pcVar8)(r3,r3,prodp_00,iVar9);" (call_expression "(*pcVar8)(r3,r3,prodp_00,iVar9)" (parenthesized_expression "(*pcVar8)" ( (pointer_expression "*pcVar8" * identifier) )) (argument_list "(r3,r3,prodp_00,iVar9)" ( identifier , identifier , identifier , identifier ))) ;)) }) (else_clause "else {\n      (*pcVar8)(r3,prodp_00,r3,iVar9);\n      local_60 = local_60 ^ 1;\n    }" else (compound_statement "{\n      (*pcVar8)(r3,prodp_00,r3,iVar9);\n      local_60 = local_60 ^ 1;\n    }" { (expression_statement "(*pcVar8)(r3,prodp_00,r3,iVar9);" (call_expression "(*pcVar8)(r3,prodp_00,r3,iVar9)" (parenthesized_expression "(*pcVar8)" ( (pointer_expression "*pcVar8" * identifier) )) (argument_list "(r3,prodp_00,r3,iVar9)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "local_60 = local_60 ^ 1;" (assignment_expression "local_60 = local_60 ^ 1" identifier = (binary_expression "local_60 ^ 1" identifier ^ number_literal)) ;) }))) (if_statement "if (mn <= iVar7) goto LAB_000576f3;" if (parenthesized_expression "(mn <= iVar7)" ( (binary_expression "mn <= iVar7" identifier <= identifier) )) (goto_statement "goto LAB_000576f3;" goto statement_identifier ;)) (labeled_statement "LAB_0005798d:\n    __gmpn_mul(prodp,m1,mn,tp,iVar7);" statement_identifier : (expression_statement "__gmpn_mul(prodp,m1,mn,tp,iVar7);" (call_expression "__gmpn_mul(prodp,m1,mn,tp,iVar7)" identifier (argument_list "(prodp,m1,mn,tp,iVar7)" ( identifier , identifier , identifier , identifier , identifier ))) ;)) (expression_statement "mVar4 = (**(code **)puVar2)(vp,m3,m1,mn);" (assignment_expression "mVar4 = (**(code **)puVar2)(vp,m3,m1,mn)" identifier = (call_expression "(**(code **)puVar2)(vp,m3,m1,mn)" (parenthesized_expression "(**(code **)puVar2)" ( (pointer_expression "**(code **)puVar2" * (pointer_expression "*(code **)puVar2" * (cast_expression "(code **)puVar2" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (argument_list "(vp,m3,m1,mn)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "*pmVar1 = mVar4;" (assignment_expression "*pmVar1 = mVar4" (pointer_expression "*pmVar1" * identifier) = identifier) ;) }) (else_clause "else {\n    do {\n      iVar3 = iVar3 + -1;\n      if (iVar3 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_0005768b;\n      }\n    } while (r3[iVar3] == prodp[iVar3]);\n    pcVar8 = *(code **)(puVar2 + 0x88);\n    if (prodp[iVar3] < r3[iVar3]) {\nLAB_0005768b:\n      (*pcVar8)(r2,r3,prodp,iVar9);\n      local_5c = local_60;\n    }\n    else {\n      (*pcVar8)(r2,prodp,r3,iVar9);\n      local_5c = local_60 ^ 1;\n    }\n    if (local_60 != local_2c) goto LAB_000576cd;\nLAB_00057971:\n    (**(code **)puVar2)(r3,r3,prodp_00,iVar9);\n    if (iVar7 < mn) goto LAB_0005798d;\nLAB_000576f3:\n    __gmpn_mul(prodp,tp,iVar7,m1,mn);\n    mVar4 = (**(code **)puVar2)(vp,m3,m1,mn);\n    *pmVar1 = mVar4;\n    if (mn < iVar7) {\n      __gmpn_mul(prodp_00,r1,iVar7,vp,un);\n      goto LAB_00057755;\n    }\n  }" else (compound_statement "{\n    do {\n      iVar3 = iVar3 + -1;\n      if (iVar3 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_0005768b;\n      }\n    } while (r3[iVar3] == prodp[iVar3]);\n    pcVar8 = *(code **)(puVar2 + 0x88);\n    if (prodp[iVar3] < r3[iVar3]) {\nLAB_0005768b:\n      (*pcVar8)(r2,r3,prodp,iVar9);\n      local_5c = local_60;\n    }\n    else {\n      (*pcVar8)(r2,prodp,r3,iVar9);\n      local_5c = local_60 ^ 1;\n    }\n    if (local_60 != local_2c) goto LAB_000576cd;\nLAB_00057971:\n    (**(code **)puVar2)(r3,r3,prodp_00,iVar9);\n    if (iVar7 < mn) goto LAB_0005798d;\nLAB_000576f3:\n    __gmpn_mul(prodp,tp,iVar7,m1,mn);\n    mVar4 = (**(code **)puVar2)(vp,m3,m1,mn);\n    *pmVar1 = mVar4;\n    if (mn < iVar7) {\n      __gmpn_mul(prodp_00,r1,iVar7,vp,un);\n      goto LAB_00057755;\n    }\n  }" { (do_statement "do {\n      iVar3 = iVar3 + -1;\n      if (iVar3 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_0005768b;\n      }\n    } while (r3[iVar3] == prodp[iVar3]);" do (compound_statement "{\n      iVar3 = iVar3 + -1;\n      if (iVar3 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_0005768b;\n      }\n    }" { (expression_statement "iVar3 = iVar3 + -1;" (assignment_expression "iVar3 = iVar3 + -1" identifier = (binary_expression "iVar3 + -1" identifier + number_literal)) ;) (if_statement "if (iVar3 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_0005768b;\n      }" if (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) (compound_statement "{\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_0005768b;\n      }" { (expression_statement "pcVar8 = *(code **)(puVar2 + 0x88);" (assignment_expression "pcVar8 = *(code **)(puVar2 + 0x88)" identifier = (pointer_expression "*(code **)(puVar2 + 0x88)" * (cast_expression "(code **)(puVar2 + 0x88)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar2 + 0x88)" ( (binary_expression "puVar2 + 0x88" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0005768b;" goto statement_identifier ;) })) }) while (parenthesized_expression "(r3[iVar3] == prodp[iVar3])" ( (binary_expression "r3[iVar3] == prodp[iVar3]" (subscript_expression "r3[iVar3]" identifier [ identifier ]) == (subscript_expression "prodp[iVar3]" identifier [ identifier ])) )) ;) (expression_statement "pcVar8 = *(code **)(puVar2 + 0x88);" (assignment_expression "pcVar8 = *(code **)(puVar2 + 0x88)" identifier = (pointer_expression "*(code **)(puVar2 + 0x88)" * (cast_expression "(code **)(puVar2 + 0x88)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar2 + 0x88)" ( (binary_expression "puVar2 + 0x88" identifier + number_literal) ))))) ;) (if_statement "if (prodp[iVar3] < r3[iVar3]) {\nLAB_0005768b:\n      (*pcVar8)(r2,r3,prodp,iVar9);\n      local_5c = local_60;\n    }\n    else {\n      (*pcVar8)(r2,prodp,r3,iVar9);\n      local_5c = local_60 ^ 1;\n    }" if (parenthesized_expression "(prodp[iVar3] < r3[iVar3])" ( (binary_expression "prodp[iVar3] < r3[iVar3]" (subscript_expression "prodp[iVar3]" identifier [ identifier ]) < (subscript_expression "r3[iVar3]" identifier [ identifier ])) )) (compound_statement "{\nLAB_0005768b:\n      (*pcVar8)(r2,r3,prodp,iVar9);\n      local_5c = local_60;\n    }" { (labeled_statement "LAB_0005768b:\n      (*pcVar8)(r2,r3,prodp,iVar9);" statement_identifier : (expression_statement "(*pcVar8)(r2,r3,prodp,iVar9);" (call_expression "(*pcVar8)(r2,r3,prodp,iVar9)" (parenthesized_expression "(*pcVar8)" ( (pointer_expression "*pcVar8" * identifier) )) (argument_list "(r2,r3,prodp,iVar9)" ( identifier , identifier , identifier , identifier ))) ;)) (expression_statement "local_5c = local_60;" (assignment_expression "local_5c = local_60" identifier = identifier) ;) }) (else_clause "else {\n      (*pcVar8)(r2,prodp,r3,iVar9);\n      local_5c = local_60 ^ 1;\n    }" else (compound_statement "{\n      (*pcVar8)(r2,prodp,r3,iVar9);\n      local_5c = local_60 ^ 1;\n    }" { (expression_statement "(*pcVar8)(r2,prodp,r3,iVar9);" (call_expression "(*pcVar8)(r2,prodp,r3,iVar9)" (parenthesized_expression "(*pcVar8)" ( (pointer_expression "*pcVar8" * identifier) )) (argument_list "(r2,prodp,r3,iVar9)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "local_5c = local_60 ^ 1;" (assignment_expression "local_5c = local_60 ^ 1" identifier = (binary_expression "local_60 ^ 1" identifier ^ number_literal)) ;) }))) (if_statement "if (local_60 != local_2c) goto LAB_000576cd;" if (parenthesized_expression "(local_60 != local_2c)" ( (binary_expression "local_60 != local_2c" identifier != identifier) )) (goto_statement "goto LAB_000576cd;" goto statement_identifier ;)) (labeled_statement "LAB_00057971:\n    (**(code **)puVar2)(r3,r3,prodp_00,iVar9);" statement_identifier : (expression_statement "(**(code **)puVar2)(r3,r3,prodp_00,iVar9);" (call_expression "(**(code **)puVar2)(r3,r3,prodp_00,iVar9)" (parenthesized_expression "(**(code **)puVar2)" ( (pointer_expression "**(code **)puVar2" * (pointer_expression "*(code **)puVar2" * (cast_expression "(code **)puVar2" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (argument_list "(r3,r3,prodp_00,iVar9)" ( identifier , identifier , identifier , identifier ))) ;)) (if_statement "if (iVar7 < mn) goto LAB_0005798d;" if (parenthesized_expression "(iVar7 < mn)" ( (binary_expression "iVar7 < mn" identifier < identifier) )) (goto_statement "goto LAB_0005798d;" goto statement_identifier ;)) (labeled_statement "LAB_000576f3:\n    __gmpn_mul(prodp,tp,iVar7,m1,mn);" statement_identifier : (expression_statement "__gmpn_mul(prodp,tp,iVar7,m1,mn);" (call_expression "__gmpn_mul(prodp,tp,iVar7,m1,mn)" identifier (argument_list "(prodp,tp,iVar7,m1,mn)" ( identifier , identifier , identifier , identifier , identifier ))) ;)) (expression_statement "mVar4 = (**(code **)puVar2)(vp,m3,m1,mn);" (assignment_expression "mVar4 = (**(code **)puVar2)(vp,m3,m1,mn)" identifier = (call_expression "(**(code **)puVar2)(vp,m3,m1,mn)" (parenthesized_expression "(**(code **)puVar2)" ( (pointer_expression "**(code **)puVar2" * (pointer_expression "*(code **)puVar2" * (cast_expression "(code **)puVar2" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (argument_list "(vp,m3,m1,mn)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "*pmVar1 = mVar4;" (assignment_expression "*pmVar1 = mVar4" (pointer_expression "*pmVar1" * identifier) = identifier) ;) (if_statement "if (mn < iVar7) {\n      __gmpn_mul(prodp_00,r1,iVar7,vp,un);\n      goto LAB_00057755;\n    }" if (parenthesized_expression "(mn < iVar7)" ( (binary_expression "mn < iVar7" identifier < identifier) )) (compound_statement "{\n      __gmpn_mul(prodp_00,r1,iVar7,vp,un);\n      goto LAB_00057755;\n    }" { (expression_statement "__gmpn_mul(prodp_00,r1,iVar7,vp,un);" (call_expression "__gmpn_mul(prodp_00,r1,iVar7,vp,un)" identifier (argument_list "(prodp_00,r1,iVar7,vp,un)" ( identifier , identifier , identifier , identifier , identifier ))) ;) (goto_statement "goto LAB_00057755;" goto statement_identifier ;) })) }))) (expression_statement "__gmpn_mul(prodp_00,vp,un,r1,iVar7);" (call_expression "__gmpn_mul(prodp_00,vp,un,r1,iVar7)" identifier (argument_list "(prodp_00,vp,un,r1,iVar7)" ( identifier , identifier , identifier , identifier , identifier ))) ;) (labeled_statement "LAB_00057755:\n  iVar7 = iVar9;" statement_identifier : (expression_statement "iVar7 = iVar9;" (assignment_expression "iVar7 = iVar9" identifier = identifier) ;)) (if_statement "if (local_20 == local_60) {\n    (**(code **)puVar2)(r1,r3,prodp,iVar9);\n  }\n  else {\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_0005778b;\n      }\n    } while (r3[iVar7] == prodp[iVar7]);\n    pcVar8 = *(code **)(puVar2 + 0x88);\n    if (prodp[iVar7] < r3[iVar7]) {\nLAB_0005778b:\n      (*pcVar8)(r1,r3,prodp,iVar9);\n    }\n    else {\n      (*pcVar8)(r1,prodp,r3,iVar9);\n    }\n  }" if (parenthesized_expression "(local_20 == local_60)" ( (binary_expression "local_20 == local_60" identifier == identifier) )) (compound_statement "{\n    (**(code **)puVar2)(r1,r3,prodp,iVar9);\n  }" { (expression_statement "(**(code **)puVar2)(r1,r3,prodp,iVar9);" (call_expression "(**(code **)puVar2)(r1,r3,prodp,iVar9)" (parenthesized_expression "(**(code **)puVar2)" ( (pointer_expression "**(code **)puVar2" * (pointer_expression "*(code **)puVar2" * (cast_expression "(code **)puVar2" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (argument_list "(r1,r3,prodp,iVar9)" ( identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_0005778b;\n      }\n    } while (r3[iVar7] == prodp[iVar7]);\n    pcVar8 = *(code **)(puVar2 + 0x88);\n    if (prodp[iVar7] < r3[iVar7]) {\nLAB_0005778b:\n      (*pcVar8)(r1,r3,prodp,iVar9);\n    }\n    else {\n      (*pcVar8)(r1,prodp,r3,iVar9);\n    }\n  }" else (compound_statement "{\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_0005778b;\n      }\n    } while (r3[iVar7] == prodp[iVar7]);\n    pcVar8 = *(code **)(puVar2 + 0x88);\n    if (prodp[iVar7] < r3[iVar7]) {\nLAB_0005778b:\n      (*pcVar8)(r1,r3,prodp,iVar9);\n    }\n    else {\n      (*pcVar8)(r1,prodp,r3,iVar9);\n    }\n  }" { (do_statement "do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_0005778b;\n      }\n    } while (r3[iVar7] == prodp[iVar7]);" do (compound_statement "{\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_0005778b;\n      }\n    }" { (expression_statement "iVar7 = iVar7 + -1;" (assignment_expression "iVar7 = iVar7 + -1" identifier = (binary_expression "iVar7 + -1" identifier + number_literal)) ;) (if_statement "if (iVar7 < 0) {\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_0005778b;\n      }" if (parenthesized_expression "(iVar7 < 0)" ( (binary_expression "iVar7 < 0" identifier < number_literal) )) (compound_statement "{\n        pcVar8 = *(code **)(puVar2 + 0x88);\n        goto LAB_0005778b;\n      }" { (expression_statement "pcVar8 = *(code **)(puVar2 + 0x88);" (assignment_expression "pcVar8 = *(code **)(puVar2 + 0x88)" identifier = (pointer_expression "*(code **)(puVar2 + 0x88)" * (cast_expression "(code **)(puVar2 + 0x88)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar2 + 0x88)" ( (binary_expression "puVar2 + 0x88" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0005778b;" goto statement_identifier ;) })) }) while (parenthesized_expression "(r3[iVar7] == prodp[iVar7])" ( (binary_expression "r3[iVar7] == prodp[iVar7]" (subscript_expression "r3[iVar7]" identifier [ identifier ]) == (subscript_expression "prodp[iVar7]" identifier [ identifier ])) )) ;) (expression_statement "pcVar8 = *(code **)(puVar2 + 0x88);" (assignment_expression "pcVar8 = *(code **)(puVar2 + 0x88)" identifier = (pointer_expression "*(code **)(puVar2 + 0x88)" * (cast_expression "(code **)(puVar2 + 0x88)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar2 + 0x88)" ( (binary_expression "puVar2 + 0x88" identifier + number_literal) ))))) ;) (if_statement "if (prodp[iVar7] < r3[iVar7]) {\nLAB_0005778b:\n      (*pcVar8)(r1,r3,prodp,iVar9);\n    }\n    else {\n      (*pcVar8)(r1,prodp,r3,iVar9);\n    }" if (parenthesized_expression "(prodp[iVar7] < r3[iVar7])" ( (binary_expression "prodp[iVar7] < r3[iVar7]" (subscript_expression "prodp[iVar7]" identifier [ identifier ]) < (subscript_expression "r3[iVar7]" identifier [ identifier ])) )) (compound_statement "{\nLAB_0005778b:\n      (*pcVar8)(r1,r3,prodp,iVar9);\n    }" { (labeled_statement "LAB_0005778b:\n      (*pcVar8)(r1,r3,prodp,iVar9);" statement_identifier : (expression_statement "(*pcVar8)(r1,r3,prodp,iVar9);" (call_expression "(*pcVar8)(r1,r3,prodp,iVar9)" (parenthesized_expression "(*pcVar8)" ( (pointer_expression "*pcVar8" * identifier) )) (argument_list "(r1,r3,prodp,iVar9)" ( identifier , identifier , identifier , identifier ))) ;)) }) (else_clause "else {\n      (*pcVar8)(r1,prodp,r3,iVar9);\n    }" else (compound_statement "{\n      (*pcVar8)(r1,prodp,r3,iVar9);\n    }" { (expression_statement "(*pcVar8)(r1,prodp,r3,iVar9);" (call_expression "(*pcVar8)(r1,prodp,r3,iVar9)" (parenthesized_expression "(*pcVar8)" ( (pointer_expression "*pcVar8" * identifier) )) (argument_list "(r1,prodp,r3,iVar9)" ( identifier , identifier , identifier , identifier ))) ;) }))) }))) (if_statement "if (local_60 == 0) {\n    (**(code **)(puVar2 + 0x88))(r3,prodp_00,r3,iVar9);\n  }\n  else {\n    (**(code **)puVar2)(r3,prodp_00,r3,iVar9);\n  }" if (parenthesized_expression "(local_60 == 0)" ( (binary_expression "local_60 == 0" identifier == number_literal) )) (compound_statement "{\n    (**(code **)(puVar2 + 0x88))(r3,prodp_00,r3,iVar9);\n  }" { (expression_statement "(**(code **)(puVar2 + 0x88))(r3,prodp_00,r3,iVar9);" (call_expression "(**(code **)(puVar2 + 0x88))(r3,prodp_00,r3,iVar9)" (parenthesized_expression "(**(code **)(puVar2 + 0x88))" ( (pointer_expression "**(code **)(puVar2 + 0x88)" * (pointer_expression "*(code **)(puVar2 + 0x88)" * (cast_expression "(code **)(puVar2 + 0x88)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar2 + 0x88)" ( (binary_expression "puVar2 + 0x88" identifier + number_literal) ))))) )) (argument_list "(r3,prodp_00,r3,iVar9)" ( identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n    (**(code **)puVar2)(r3,prodp_00,r3,iVar9);\n  }" else (compound_statement "{\n    (**(code **)puVar2)(r3,prodp_00,r3,iVar9);\n  }" { (expression_statement "(**(code **)puVar2)(r3,prodp_00,r3,iVar9);" (call_expression "(**(code **)puVar2)(r3,prodp_00,r3,iVar9)" (parenthesized_expression "(**(code **)puVar2)" ( (pointer_expression "**(code **)puVar2" * (pointer_expression "*(code **)puVar2" * (cast_expression "(code **)puVar2" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (argument_list "(r3,prodp_00,r3,iVar9)" ( identifier , identifier , identifier , identifier ))) ;) }))) (if_statement "if (local_5c != 0) {\n                    /* WARNING: Could not recover jumptable at 0x000577f2. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (**(code **)puVar2)();\n    return;\n  }" if (parenthesized_expression "(local_5c != 0)" ( (binary_expression "local_5c != 0" identifier != number_literal) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x000577f2. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (**(code **)puVar2)();\n    return;\n  }" { comment comment (expression_statement "(**(code **)puVar2)();" (call_expression "(**(code **)puVar2)()" (parenthesized_expression "(**(code **)puVar2)" ( (pointer_expression "**(code **)puVar2" * (pointer_expression "*(code **)puVar2" * (cast_expression "(code **)puVar2" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) comment comment (expression_statement "(**(code **)(puVar2 + 0x88))();" (call_expression "(**(code **)(puVar2 + 0x88))()" (parenthesized_expression "(**(code **)(puVar2 + 0x88))" ( (pointer_expression "**(code **)(puVar2 + 0x88)" * (pointer_expression "*(code **)(puVar2 + 0x88)" * (cast_expression "(code **)(puVar2 + 0x88)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar2 + 0x88)" ( (binary_expression "puVar2 + 0x88" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void __regparm2\n__gmpn_matrix22_mul_strassen\n          (undefined4 param_1,undefined4 param_2,int param_3,int param_4,int param_5,int param_6,\n          int param_7,int param_8,int param_9,int param_10,int param_11,int param_12)\n\n{\n  int iVar1;\n  int *piVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  undefined4 uVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  code *pcVar13;\n  int iVar14;\n  int unaff_EBX;\n  int unaff_retaddr;\n  undefined4 *local_80;\n  uint local_64;\n  uint local_60;\n  int *local_5c;\n  uint local_40;\n  int *local_3c;\n  int local_34;\n  uint local_30;\n  uint local_24;\n  \n  entry(param_2,0x572a9);\n  iVar12 = param_6 + 1;\n  iVar1 = param_11 + 1;\n  local_34 = iVar12 * 4;\n  iVar5 = param_12 + local_34;\n  iVar6 = iVar5 + iVar1 * 4;\n  iVar11 = param_6 + param_11 + 1;\n  iVar10 = iVar11 * 4;\n  iVar14 = iVar6 + iVar10;\n  iVar7 = param_6;\n  if (param_6 < param_11) {\n    __gmpn_mul(iVar6,param_9,param_11,param_3,param_6);\n  }\n  else {\n    __gmpn_mul(iVar6,param_3,param_6,param_9,param_11);\n  }\n  do {\n    iVar7 = iVar7 + -1;\n    iVar8 = param_6;\n    if (iVar7 < 0) {\n      local_80 = *(undefined4 **)(unaff_EBX + 0x46aeb);\n      pcVar13 = (code *)local_80[0x22];\n      goto LAB_000573b5;\n    }\n    uVar3 = *(uint *)(param_4 + iVar7 * 4);\n    uVar4 = *(uint *)(param_5 + iVar7 * 4);\n  } while (uVar4 == uVar3);\n  local_80 = *(undefined4 **)(unaff_EBX + 0x46aeb);\n  pcVar13 = (code *)local_80[0x22];\n  if (uVar3 < uVar4) {\nLAB_000573b5:\n    (*pcVar13)(param_5,param_5,param_4,param_6);\n    local_3c = (int *)(param_3 + local_34 + -4);\n    iVar7 = (*(code *)*local_80)(param_3,param_3,param_5,param_6);\n    *local_3c = iVar7;\n    local_5c = (int *)(param_12 + local_34 + -4);\n    if (iVar7 == 0) {\n      local_30 = 1;\n      goto LAB_00057b2c;\n    }\n    iVar8 = (*(code *)local_80[0x22])(param_12,param_3,unaff_retaddr,param_6);\n    *local_5c = iVar7 - iVar8;\n    local_30 = 1;\n    local_40 = 0;\n    local_24 = 1;\n  }\n  else {\n    (*pcVar13)(param_5,param_4,param_5,param_6);\n    iVar7 = param_6;\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        local_5c = (int *)(param_12 + local_34 + -4);\n        local_3c = (int *)(param_3 + local_34 + -4);\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057ae8;\n      }\n      uVar3 = *(uint *)(param_5 + iVar7 * 4);\n      uVar4 = *(uint *)(param_3 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    local_5c = (int *)(param_12 + local_34 + -4);\n    local_3c = (int *)(param_3 + local_34 + -4);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_00057ae8:\n      (*pcVar13)(param_3,param_3,param_5,param_6);\n      *local_3c = 0;\n      local_30 = 0;\nLAB_00057b2c:\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) {\n          pcVar13 = (code *)local_80[0x22];\n          goto LAB_00057b3e;\n        }\n        uVar3 = *(uint *)(param_3 + iVar8 * 4);\n        uVar4 = *(uint *)(unaff_retaddr + iVar8 * 4);\n      } while (uVar4 == uVar3);\n      pcVar13 = (code *)local_80[0x22];\n      if (uVar3 < uVar4) {\nLAB_00057b3e:\n        (*pcVar13)(param_12,unaff_retaddr,param_3,param_6);\n        local_24 = 0;\n      }\n      else {\n        (*pcVar13)(param_12,param_3,unaff_retaddr,param_6);\n        local_24 = 1;\n      }\n      local_40 = 0;\n      *local_5c = 0;\n    }\n    else {\n      (*pcVar13)(param_3,param_5,param_3,param_6);\n      *local_3c = 0;\n      iVar7 = (*(code *)*local_80)(param_12,param_3,unaff_retaddr,param_6);\n      *local_5c = iVar7;\n      local_30 = 0;\n      local_40 = 1;\n      local_24 = 0;\n    }\n  }\n  local_34 = local_34 + -4;\n  if (param_6 < param_11) {\n    __gmpn_mul(iVar14,param_7,param_11,unaff_retaddr,param_6);\n  }\n  else {\n    __gmpn_mul(iVar14,unaff_retaddr,param_6,param_7,param_11);\n  }\n  uVar9 = (*(code *)*local_80)(unaff_retaddr,iVar6,iVar14,param_6 + param_11);\n  *(undefined4 *)(unaff_retaddr + -4 + iVar10) = uVar9;\n  iVar7 = param_11;\n  do {\n    iVar7 = iVar7 + -1;\n    if (iVar7 < 0) {\n      pcVar13 = (code *)local_80[0x22];\n      goto LAB_000574ba;\n    }\n    uVar3 = *(uint *)(param_9 + iVar7 * 4);\n    uVar4 = *(uint *)(param_10 + iVar7 * 4);\n  } while (uVar4 == uVar3);\n  pcVar13 = (code *)local_80[0x22];\n  if (uVar3 < uVar4) {\nLAB_000574ba:\n    (*pcVar13)(iVar5,param_10,param_9,param_11);\n    local_60 = 0;\n  }\n  else {\n    (*pcVar13)(iVar5,param_9,param_10,param_11);\n    local_30 = local_30 ^ 1;\n    local_60 = 1;\n  }\n  if (param_6 < param_11) {\n    __gmpn_mul(iVar14,iVar5,param_11,param_5,param_6);\n  }\n  else {\n    __gmpn_mul(iVar14,param_5,param_6,iVar5,param_11);\n  }\n  *(undefined4 *)(iVar14 + -4 + iVar10) = 0;\n  piVar2 = (int *)(iVar5 + -4 + iVar1 * 4);\n  iVar7 = param_11;\n  if (local_60 == 0) {\n    iVar7 = (*(code *)*local_80)(iVar5,iVar5,param_8,param_11);\n    *piVar2 = iVar7;\n    if (iVar7 == 0) goto LAB_00057a50;\n    if (param_11 < param_6) {\n      __gmpn_mul(param_5,param_3,param_6,iVar5,iVar1);\n    }\n    else {\n      __gmpn_mul(param_5,iVar5,iVar1,param_3,param_6);\n    }\n    if (*(int *)(param_3 + local_34) != 0) {\n      (*(code *)*local_80)(local_34 + param_5,local_34 + param_5,iVar5,iVar1);\n    }\n  }\n  else {\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057a2e;\n      }\n      uVar3 = *(uint *)(iVar5 + iVar7 * 4);\n      uVar4 = *(uint *)(param_8 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_00057a2e:\n      (*pcVar13)(iVar5,param_8,iVar5,param_11);\n      local_60 = 0;\n    }\n    else {\n      (*pcVar13)(iVar5,iVar5,param_8,param_11);\n    }\n    *piVar2 = 0;\nLAB_00057a50:\n    if (iVar12 < param_11) {\n      __gmpn_mul(param_5,iVar5,param_11,param_3,iVar12);\n    }\n    else {\n      __gmpn_mul(param_5,param_3,iVar12,iVar5,param_11);\n    }\n  }\n  *(undefined4 *)(iVar6 + -4 + iVar10) = 0;\n  iVar10 = iVar11;\n  if (local_40 == local_60) {\n    (*(code *)*local_80)(param_5,param_5,iVar6,iVar11);\n    local_64 = 0;\n    if (local_60 == 0) goto LAB_000578c7;\nLAB_000575ee:\n    iVar11 = (*(code *)*local_80)(iVar5,iVar5,param_7,param_11);\n    *piVar2 = iVar11;\nLAB_00057608:\n    if (param_6 <= param_11) goto LAB_000578fc;\nLAB_00057610:\n    __gmpn_mul(iVar6,param_4,param_6,iVar5,iVar1);\n    if (local_40 != 0) goto LAB_00057638;\nLAB_00057924:\n    iVar11 = (*(code *)*local_80)(param_3,param_3,param_4,param_6);\n    *local_3c = *local_3c + iVar11;\n  }\n  else {\n    do {\n      iVar10 = iVar10 + -1;\n      if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000575cb;\n      }\n      uVar3 = *(uint *)(param_5 + iVar10 * 4);\n      uVar4 = *(uint *)(iVar6 + iVar10 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_000575cb:\n      (*pcVar13)(param_5,iVar6,param_5,iVar11);\n      local_64 = 0;\n    }\n    else {\n      (*pcVar13)(param_5,param_5,iVar6,iVar11);\n      local_64 = 1;\n    }\n    if (local_60 != 0) goto LAB_000575ee;\nLAB_000578c7:\n    pcVar13 = (code *)local_80[0x22];\n    iVar11 = param_11;\n    if (*piVar2 == 0) {\n      do {\n        iVar11 = iVar11 + -1;\n        if (iVar11 < 0) goto LAB_00057cd1;\n        uVar3 = *(uint *)(param_7 + iVar11 * 4);\n        uVar4 = *(uint *)(iVar5 + iVar11 * 4);\n      } while (uVar4 == uVar3);\n      if (uVar3 < uVar4) {\nLAB_00057cd1:\n        (*pcVar13)(iVar5,iVar5,param_7,param_11);\n      }\n      else {\n        (*pcVar13)(iVar5,param_7,iVar5,param_11);\n        local_60 = 1;\n      }\n      goto LAB_00057608;\n    }\n    iVar11 = (*pcVar13)(iVar5,iVar5,param_7,param_11);\n    *piVar2 = *piVar2 - iVar11;\n    if (param_11 < param_6) goto LAB_00057610;\nLAB_000578fc:\n    __gmpn_mul(iVar6,iVar5,iVar1,param_4,param_6);\n    if (local_40 == 0) goto LAB_00057924;\nLAB_00057638:\n    (*(code *)local_80[0x22])(param_3,param_4,param_3,param_6);\n  }\n  iVar11 = param_11 + iVar12;\n  iVar7 = iVar11;\n  iVar10 = iVar11;\n  if (local_64 == local_60) {\n    (*(code *)*local_80)(param_4,param_5,iVar6,iVar11);\n    local_60 = local_64;\n    if (local_64 == local_30) goto LAB_00057971;\nLAB_000576cd:\n    do {\n      iVar10 = iVar10 + -1;\n      if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000576db;\n      }\n      uVar3 = *(uint *)(iVar14 + iVar10 * 4);\n      uVar4 = *(uint *)(param_5 + iVar10 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_000576db:\n      (*pcVar13)(param_5,param_5,iVar14,iVar11);\n    }\n    else {\n      (*pcVar13)(param_5,iVar14,param_5,iVar11);\n      local_64 = local_64 ^ 1;\n    }\n    if (param_11 <= iVar12) goto LAB_000576f3;\nLAB_0005798d:\n    __gmpn_mul(iVar6,param_8,param_11,param_12,iVar12);\n    iVar10 = (*(code *)*local_80)(iVar5,param_10,param_8,param_11);\n    *piVar2 = iVar10;\n  }\n  else {\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005768b;\n      }\n      uVar3 = *(uint *)(iVar6 + iVar7 * 4);\n      uVar4 = *(uint *)(param_5 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_0005768b:\n      (*pcVar13)(param_4,param_5,iVar6,iVar11);\n      local_60 = local_64;\n    }\n    else {\n      (*pcVar13)(param_4,iVar6,param_5,iVar11);\n      local_60 = local_64 ^ 1;\n    }\n    if (local_64 != local_30) goto LAB_000576cd;\nLAB_00057971:\n    (*(code *)*local_80)(param_5,param_5,iVar14,iVar11);\n    if (iVar12 < param_11) goto LAB_0005798d;\nLAB_000576f3:\n    __gmpn_mul(iVar6,param_12,iVar12,param_8,param_11);\n    iVar10 = (*(code *)*local_80)(iVar5,param_10,param_8,param_11);\n    *piVar2 = iVar10;\n    if (param_11 < iVar12) {\n      __gmpn_mul(iVar14,param_3,iVar12,iVar5,iVar1);\n      goto LAB_00057755;\n    }\n  }\n  __gmpn_mul(iVar14,iVar5,iVar1,param_3,iVar12);\nLAB_00057755:\n  iVar12 = iVar11;\n  if (local_24 == local_64) {\n    (*(code *)*local_80)(param_3,param_5,iVar6,iVar11);\n  }\n  else {\n    do {\n      iVar12 = iVar12 + -1;\n      if (iVar12 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005778b;\n      }\n      uVar3 = *(uint *)(iVar6 + iVar12 * 4);\n      uVar4 = *(uint *)(param_5 + iVar12 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_0005778b:\n      (*pcVar13)(param_3,param_5,iVar6,iVar11);\n    }\n    else {\n      (*pcVar13)(param_3,iVar6,param_5,iVar11);\n    }\n  }\n  if (local_64 == 0) {\n    (*(code *)local_80[0x22])(param_5,iVar14,param_5,iVar11);\n  }\n  else {\n    (*(code *)*local_80)(param_5,iVar14,param_5,iVar11);\n  }\n  if (local_60 != 0) {\n                    \n                    \n    (*(code *)*local_80)();\n    return;\n  }\n                    \n                    \n  (*(code *)local_80[0x22])();\n  return;\n}\n\n" (function_definition "void __regparm2\n__gmpn_matrix22_mul_strassen\n          (undefined4 param_1,undefined4 param_2,int param_3,int param_4,int param_5,int param_6,\n          int param_7,int param_8,int param_9,int param_10,int param_11,int param_12)\n\n{\n  int iVar1;\n  int *piVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  undefined4 uVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  code *pcVar13;\n  int iVar14;\n  int unaff_EBX;\n  int unaff_retaddr;\n  undefined4 *local_80;\n  uint local_64;\n  uint local_60;\n  int *local_5c;\n  uint local_40;\n  int *local_3c;\n  int local_34;\n  uint local_30;\n  uint local_24;\n  \n  entry(param_2,0x572a9);\n  iVar12 = param_6 + 1;\n  iVar1 = param_11 + 1;\n  local_34 = iVar12 * 4;\n  iVar5 = param_12 + local_34;\n  iVar6 = iVar5 + iVar1 * 4;\n  iVar11 = param_6 + param_11 + 1;\n  iVar10 = iVar11 * 4;\n  iVar14 = iVar6 + iVar10;\n  iVar7 = param_6;\n  if (param_6 < param_11) {\n    __gmpn_mul(iVar6,param_9,param_11,param_3,param_6);\n  }\n  else {\n    __gmpn_mul(iVar6,param_3,param_6,param_9,param_11);\n  }\n  do {\n    iVar7 = iVar7 + -1;\n    iVar8 = param_6;\n    if (iVar7 < 0) {\n      local_80 = *(undefined4 **)(unaff_EBX + 0x46aeb);\n      pcVar13 = (code *)local_80[0x22];\n      goto LAB_000573b5;\n    }\n    uVar3 = *(uint *)(param_4 + iVar7 * 4);\n    uVar4 = *(uint *)(param_5 + iVar7 * 4);\n  } while (uVar4 == uVar3);\n  local_80 = *(undefined4 **)(unaff_EBX + 0x46aeb);\n  pcVar13 = (code *)local_80[0x22];\n  if (uVar3 < uVar4) {\nLAB_000573b5:\n    (*pcVar13)(param_5,param_5,param_4,param_6);\n    local_3c = (int *)(param_3 + local_34 + -4);\n    iVar7 = (*(code *)*local_80)(param_3,param_3,param_5,param_6);\n    *local_3c = iVar7;\n    local_5c = (int *)(param_12 + local_34 + -4);\n    if (iVar7 == 0) {\n      local_30 = 1;\n      goto LAB_00057b2c;\n    }\n    iVar8 = (*(code *)local_80[0x22])(param_12,param_3,unaff_retaddr,param_6);\n    *local_5c = iVar7 - iVar8;\n    local_30 = 1;\n    local_40 = 0;\n    local_24 = 1;\n  }\n  else {\n    (*pcVar13)(param_5,param_4,param_5,param_6);\n    iVar7 = param_6;\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        local_5c = (int *)(param_12 + local_34 + -4);\n        local_3c = (int *)(param_3 + local_34 + -4);\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057ae8;\n      }\n      uVar3 = *(uint *)(param_5 + iVar7 * 4);\n      uVar4 = *(uint *)(param_3 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    local_5c = (int *)(param_12 + local_34 + -4);\n    local_3c = (int *)(param_3 + local_34 + -4);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_00057ae8:\n      (*pcVar13)(param_3,param_3,param_5,param_6);\n      *local_3c = 0;\n      local_30 = 0;\nLAB_00057b2c:\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) {\n          pcVar13 = (code *)local_80[0x22];\n          goto LAB_00057b3e;\n        }\n        uVar3 = *(uint *)(param_3 + iVar8 * 4);\n        uVar4 = *(uint *)(unaff_retaddr + iVar8 * 4);\n      } while (uVar4 == uVar3);\n      pcVar13 = (code *)local_80[0x22];\n      if (uVar3 < uVar4) {\nLAB_00057b3e:\n        (*pcVar13)(param_12,unaff_retaddr,param_3,param_6);\n        local_24 = 0;\n      }\n      else {\n        (*pcVar13)(param_12,param_3,unaff_retaddr,param_6);\n        local_24 = 1;\n      }\n      local_40 = 0;\n      *local_5c = 0;\n    }\n    else {\n      (*pcVar13)(param_3,param_5,param_3,param_6);\n      *local_3c = 0;\n      iVar7 = (*(code *)*local_80)(param_12,param_3,unaff_retaddr,param_6);\n      *local_5c = iVar7;\n      local_30 = 0;\n      local_40 = 1;\n      local_24 = 0;\n    }\n  }\n  local_34 = local_34 + -4;\n  if (param_6 < param_11) {\n    __gmpn_mul(iVar14,param_7,param_11,unaff_retaddr,param_6);\n  }\n  else {\n    __gmpn_mul(iVar14,unaff_retaddr,param_6,param_7,param_11);\n  }\n  uVar9 = (*(code *)*local_80)(unaff_retaddr,iVar6,iVar14,param_6 + param_11);\n  *(undefined4 *)(unaff_retaddr + -4 + iVar10) = uVar9;\n  iVar7 = param_11;\n  do {\n    iVar7 = iVar7 + -1;\n    if (iVar7 < 0) {\n      pcVar13 = (code *)local_80[0x22];\n      goto LAB_000574ba;\n    }\n    uVar3 = *(uint *)(param_9 + iVar7 * 4);\n    uVar4 = *(uint *)(param_10 + iVar7 * 4);\n  } while (uVar4 == uVar3);\n  pcVar13 = (code *)local_80[0x22];\n  if (uVar3 < uVar4) {\nLAB_000574ba:\n    (*pcVar13)(iVar5,param_10,param_9,param_11);\n    local_60 = 0;\n  }\n  else {\n    (*pcVar13)(iVar5,param_9,param_10,param_11);\n    local_30 = local_30 ^ 1;\n    local_60 = 1;\n  }\n  if (param_6 < param_11) {\n    __gmpn_mul(iVar14,iVar5,param_11,param_5,param_6);\n  }\n  else {\n    __gmpn_mul(iVar14,param_5,param_6,iVar5,param_11);\n  }\n  *(undefined4 *)(iVar14 + -4 + iVar10) = 0;\n  piVar2 = (int *)(iVar5 + -4 + iVar1 * 4);\n  iVar7 = param_11;\n  if (local_60 == 0) {\n    iVar7 = (*(code *)*local_80)(iVar5,iVar5,param_8,param_11);\n    *piVar2 = iVar7;\n    if (iVar7 == 0) goto LAB_00057a50;\n    if (param_11 < param_6) {\n      __gmpn_mul(param_5,param_3,param_6,iVar5,iVar1);\n    }\n    else {\n      __gmpn_mul(param_5,iVar5,iVar1,param_3,param_6);\n    }\n    if (*(int *)(param_3 + local_34) != 0) {\n      (*(code *)*local_80)(local_34 + param_5,local_34 + param_5,iVar5,iVar1);\n    }\n  }\n  else {\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057a2e;\n      }\n      uVar3 = *(uint *)(iVar5 + iVar7 * 4);\n      uVar4 = *(uint *)(param_8 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_00057a2e:\n      (*pcVar13)(iVar5,param_8,iVar5,param_11);\n      local_60 = 0;\n    }\n    else {\n      (*pcVar13)(iVar5,iVar5,param_8,param_11);\n    }\n    *piVar2 = 0;\nLAB_00057a50:\n    if (iVar12 < param_11) {\n      __gmpn_mul(param_5,iVar5,param_11,param_3,iVar12);\n    }\n    else {\n      __gmpn_mul(param_5,param_3,iVar12,iVar5,param_11);\n    }\n  }\n  *(undefined4 *)(iVar6 + -4 + iVar10) = 0;\n  iVar10 = iVar11;\n  if (local_40 == local_60) {\n    (*(code *)*local_80)(param_5,param_5,iVar6,iVar11);\n    local_64 = 0;\n    if (local_60 == 0) goto LAB_000578c7;\nLAB_000575ee:\n    iVar11 = (*(code *)*local_80)(iVar5,iVar5,param_7,param_11);\n    *piVar2 = iVar11;\nLAB_00057608:\n    if (param_6 <= param_11) goto LAB_000578fc;\nLAB_00057610:\n    __gmpn_mul(iVar6,param_4,param_6,iVar5,iVar1);\n    if (local_40 != 0) goto LAB_00057638;\nLAB_00057924:\n    iVar11 = (*(code *)*local_80)(param_3,param_3,param_4,param_6);\n    *local_3c = *local_3c + iVar11;\n  }\n  else {\n    do {\n      iVar10 = iVar10 + -1;\n      if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000575cb;\n      }\n      uVar3 = *(uint *)(param_5 + iVar10 * 4);\n      uVar4 = *(uint *)(iVar6 + iVar10 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_000575cb:\n      (*pcVar13)(param_5,iVar6,param_5,iVar11);\n      local_64 = 0;\n    }\n    else {\n      (*pcVar13)(param_5,param_5,iVar6,iVar11);\n      local_64 = 1;\n    }\n    if (local_60 != 0) goto LAB_000575ee;\nLAB_000578c7:\n    pcVar13 = (code *)local_80[0x22];\n    iVar11 = param_11;\n    if (*piVar2 == 0) {\n      do {\n        iVar11 = iVar11 + -1;\n        if (iVar11 < 0) goto LAB_00057cd1;\n        uVar3 = *(uint *)(param_7 + iVar11 * 4);\n        uVar4 = *(uint *)(iVar5 + iVar11 * 4);\n      } while (uVar4 == uVar3);\n      if (uVar3 < uVar4) {\nLAB_00057cd1:\n        (*pcVar13)(iVar5,iVar5,param_7,param_11);\n      }\n      else {\n        (*pcVar13)(iVar5,param_7,iVar5,param_11);\n        local_60 = 1;\n      }\n      goto LAB_00057608;\n    }\n    iVar11 = (*pcVar13)(iVar5,iVar5,param_7,param_11);\n    *piVar2 = *piVar2 - iVar11;\n    if (param_11 < param_6) goto LAB_00057610;\nLAB_000578fc:\n    __gmpn_mul(iVar6,iVar5,iVar1,param_4,param_6);\n    if (local_40 == 0) goto LAB_00057924;\nLAB_00057638:\n    (*(code *)local_80[0x22])(param_3,param_4,param_3,param_6);\n  }\n  iVar11 = param_11 + iVar12;\n  iVar7 = iVar11;\n  iVar10 = iVar11;\n  if (local_64 == local_60) {\n    (*(code *)*local_80)(param_4,param_5,iVar6,iVar11);\n    local_60 = local_64;\n    if (local_64 == local_30) goto LAB_00057971;\nLAB_000576cd:\n    do {\n      iVar10 = iVar10 + -1;\n      if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000576db;\n      }\n      uVar3 = *(uint *)(iVar14 + iVar10 * 4);\n      uVar4 = *(uint *)(param_5 + iVar10 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_000576db:\n      (*pcVar13)(param_5,param_5,iVar14,iVar11);\n    }\n    else {\n      (*pcVar13)(param_5,iVar14,param_5,iVar11);\n      local_64 = local_64 ^ 1;\n    }\n    if (param_11 <= iVar12) goto LAB_000576f3;\nLAB_0005798d:\n    __gmpn_mul(iVar6,param_8,param_11,param_12,iVar12);\n    iVar10 = (*(code *)*local_80)(iVar5,param_10,param_8,param_11);\n    *piVar2 = iVar10;\n  }\n  else {\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005768b;\n      }\n      uVar3 = *(uint *)(iVar6 + iVar7 * 4);\n      uVar4 = *(uint *)(param_5 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_0005768b:\n      (*pcVar13)(param_4,param_5,iVar6,iVar11);\n      local_60 = local_64;\n    }\n    else {\n      (*pcVar13)(param_4,iVar6,param_5,iVar11);\n      local_60 = local_64 ^ 1;\n    }\n    if (local_64 != local_30) goto LAB_000576cd;\nLAB_00057971:\n    (*(code *)*local_80)(param_5,param_5,iVar14,iVar11);\n    if (iVar12 < param_11) goto LAB_0005798d;\nLAB_000576f3:\n    __gmpn_mul(iVar6,param_12,iVar12,param_8,param_11);\n    iVar10 = (*(code *)*local_80)(iVar5,param_10,param_8,param_11);\n    *piVar2 = iVar10;\n    if (param_11 < iVar12) {\n      __gmpn_mul(iVar14,param_3,iVar12,iVar5,iVar1);\n      goto LAB_00057755;\n    }\n  }\n  __gmpn_mul(iVar14,iVar5,iVar1,param_3,iVar12);\nLAB_00057755:\n  iVar12 = iVar11;\n  if (local_24 == local_64) {\n    (*(code *)*local_80)(param_3,param_5,iVar6,iVar11);\n  }\n  else {\n    do {\n      iVar12 = iVar12 + -1;\n      if (iVar12 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005778b;\n      }\n      uVar3 = *(uint *)(iVar6 + iVar12 * 4);\n      uVar4 = *(uint *)(param_5 + iVar12 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_0005778b:\n      (*pcVar13)(param_3,param_5,iVar6,iVar11);\n    }\n    else {\n      (*pcVar13)(param_3,iVar6,param_5,iVar11);\n    }\n  }\n  if (local_64 == 0) {\n    (*(code *)local_80[0x22])(param_5,iVar14,param_5,iVar11);\n  }\n  else {\n    (*(code *)*local_80)(param_5,iVar14,param_5,iVar11);\n  }\n  if (local_60 != 0) {\n                    \n                    \n    (*(code *)*local_80)();\n    return;\n  }\n                    \n                    \n  (*(code *)local_80[0x22])();\n  return;\n}" primitive_type (ERROR "__regparm2" identifier) (function_declarator "__gmpn_matrix22_mul_strassen\n          (undefined4 param_1,undefined4 param_2,int param_3,int param_4,int param_5,int param_6,\n          int param_7,int param_8,int param_9,int param_10,int param_11,int param_12)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,int param_3,int param_4,int param_5,int param_6,\n          int param_7,int param_8,int param_9,int param_10,int param_11,int param_12)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "int param_6" primitive_type identifier) , (parameter_declaration "int param_7" primitive_type identifier) , (parameter_declaration "int param_8" primitive_type identifier) , (parameter_declaration "int param_9" primitive_type identifier) , (parameter_declaration "int param_10" primitive_type identifier) , (parameter_declaration "int param_11" primitive_type identifier) , (parameter_declaration "int param_12" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int *piVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  undefined4 uVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  code *pcVar13;\n  int iVar14;\n  int unaff_EBX;\n  int unaff_retaddr;\n  undefined4 *local_80;\n  uint local_64;\n  uint local_60;\n  int *local_5c;\n  uint local_40;\n  int *local_3c;\n  int local_34;\n  uint local_30;\n  uint local_24;\n  \n  entry(param_2,0x572a9);\n  iVar12 = param_6 + 1;\n  iVar1 = param_11 + 1;\n  local_34 = iVar12 * 4;\n  iVar5 = param_12 + local_34;\n  iVar6 = iVar5 + iVar1 * 4;\n  iVar11 = param_6 + param_11 + 1;\n  iVar10 = iVar11 * 4;\n  iVar14 = iVar6 + iVar10;\n  iVar7 = param_6;\n  if (param_6 < param_11) {\n    __gmpn_mul(iVar6,param_9,param_11,param_3,param_6);\n  }\n  else {\n    __gmpn_mul(iVar6,param_3,param_6,param_9,param_11);\n  }\n  do {\n    iVar7 = iVar7 + -1;\n    iVar8 = param_6;\n    if (iVar7 < 0) {\n      local_80 = *(undefined4 **)(unaff_EBX + 0x46aeb);\n      pcVar13 = (code *)local_80[0x22];\n      goto LAB_000573b5;\n    }\n    uVar3 = *(uint *)(param_4 + iVar7 * 4);\n    uVar4 = *(uint *)(param_5 + iVar7 * 4);\n  } while (uVar4 == uVar3);\n  local_80 = *(undefined4 **)(unaff_EBX + 0x46aeb);\n  pcVar13 = (code *)local_80[0x22];\n  if (uVar3 < uVar4) {\nLAB_000573b5:\n    (*pcVar13)(param_5,param_5,param_4,param_6);\n    local_3c = (int *)(param_3 + local_34 + -4);\n    iVar7 = (*(code *)*local_80)(param_3,param_3,param_5,param_6);\n    *local_3c = iVar7;\n    local_5c = (int *)(param_12 + local_34 + -4);\n    if (iVar7 == 0) {\n      local_30 = 1;\n      goto LAB_00057b2c;\n    }\n    iVar8 = (*(code *)local_80[0x22])(param_12,param_3,unaff_retaddr,param_6);\n    *local_5c = iVar7 - iVar8;\n    local_30 = 1;\n    local_40 = 0;\n    local_24 = 1;\n  }\n  else {\n    (*pcVar13)(param_5,param_4,param_5,param_6);\n    iVar7 = param_6;\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        local_5c = (int *)(param_12 + local_34 + -4);\n        local_3c = (int *)(param_3 + local_34 + -4);\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057ae8;\n      }\n      uVar3 = *(uint *)(param_5 + iVar7 * 4);\n      uVar4 = *(uint *)(param_3 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    local_5c = (int *)(param_12 + local_34 + -4);\n    local_3c = (int *)(param_3 + local_34 + -4);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_00057ae8:\n      (*pcVar13)(param_3,param_3,param_5,param_6);\n      *local_3c = 0;\n      local_30 = 0;\nLAB_00057b2c:\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) {\n          pcVar13 = (code *)local_80[0x22];\n          goto LAB_00057b3e;\n        }\n        uVar3 = *(uint *)(param_3 + iVar8 * 4);\n        uVar4 = *(uint *)(unaff_retaddr + iVar8 * 4);\n      } while (uVar4 == uVar3);\n      pcVar13 = (code *)local_80[0x22];\n      if (uVar3 < uVar4) {\nLAB_00057b3e:\n        (*pcVar13)(param_12,unaff_retaddr,param_3,param_6);\n        local_24 = 0;\n      }\n      else {\n        (*pcVar13)(param_12,param_3,unaff_retaddr,param_6);\n        local_24 = 1;\n      }\n      local_40 = 0;\n      *local_5c = 0;\n    }\n    else {\n      (*pcVar13)(param_3,param_5,param_3,param_6);\n      *local_3c = 0;\n      iVar7 = (*(code *)*local_80)(param_12,param_3,unaff_retaddr,param_6);\n      *local_5c = iVar7;\n      local_30 = 0;\n      local_40 = 1;\n      local_24 = 0;\n    }\n  }\n  local_34 = local_34 + -4;\n  if (param_6 < param_11) {\n    __gmpn_mul(iVar14,param_7,param_11,unaff_retaddr,param_6);\n  }\n  else {\n    __gmpn_mul(iVar14,unaff_retaddr,param_6,param_7,param_11);\n  }\n  uVar9 = (*(code *)*local_80)(unaff_retaddr,iVar6,iVar14,param_6 + param_11);\n  *(undefined4 *)(unaff_retaddr + -4 + iVar10) = uVar9;\n  iVar7 = param_11;\n  do {\n    iVar7 = iVar7 + -1;\n    if (iVar7 < 0) {\n      pcVar13 = (code *)local_80[0x22];\n      goto LAB_000574ba;\n    }\n    uVar3 = *(uint *)(param_9 + iVar7 * 4);\n    uVar4 = *(uint *)(param_10 + iVar7 * 4);\n  } while (uVar4 == uVar3);\n  pcVar13 = (code *)local_80[0x22];\n  if (uVar3 < uVar4) {\nLAB_000574ba:\n    (*pcVar13)(iVar5,param_10,param_9,param_11);\n    local_60 = 0;\n  }\n  else {\n    (*pcVar13)(iVar5,param_9,param_10,param_11);\n    local_30 = local_30 ^ 1;\n    local_60 = 1;\n  }\n  if (param_6 < param_11) {\n    __gmpn_mul(iVar14,iVar5,param_11,param_5,param_6);\n  }\n  else {\n    __gmpn_mul(iVar14,param_5,param_6,iVar5,param_11);\n  }\n  *(undefined4 *)(iVar14 + -4 + iVar10) = 0;\n  piVar2 = (int *)(iVar5 + -4 + iVar1 * 4);\n  iVar7 = param_11;\n  if (local_60 == 0) {\n    iVar7 = (*(code *)*local_80)(iVar5,iVar5,param_8,param_11);\n    *piVar2 = iVar7;\n    if (iVar7 == 0) goto LAB_00057a50;\n    if (param_11 < param_6) {\n      __gmpn_mul(param_5,param_3,param_6,iVar5,iVar1);\n    }\n    else {\n      __gmpn_mul(param_5,iVar5,iVar1,param_3,param_6);\n    }\n    if (*(int *)(param_3 + local_34) != 0) {\n      (*(code *)*local_80)(local_34 + param_5,local_34 + param_5,iVar5,iVar1);\n    }\n  }\n  else {\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057a2e;\n      }\n      uVar3 = *(uint *)(iVar5 + iVar7 * 4);\n      uVar4 = *(uint *)(param_8 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_00057a2e:\n      (*pcVar13)(iVar5,param_8,iVar5,param_11);\n      local_60 = 0;\n    }\n    else {\n      (*pcVar13)(iVar5,iVar5,param_8,param_11);\n    }\n    *piVar2 = 0;\nLAB_00057a50:\n    if (iVar12 < param_11) {\n      __gmpn_mul(param_5,iVar5,param_11,param_3,iVar12);\n    }\n    else {\n      __gmpn_mul(param_5,param_3,iVar12,iVar5,param_11);\n    }\n  }\n  *(undefined4 *)(iVar6 + -4 + iVar10) = 0;\n  iVar10 = iVar11;\n  if (local_40 == local_60) {\n    (*(code *)*local_80)(param_5,param_5,iVar6,iVar11);\n    local_64 = 0;\n    if (local_60 == 0) goto LAB_000578c7;\nLAB_000575ee:\n    iVar11 = (*(code *)*local_80)(iVar5,iVar5,param_7,param_11);\n    *piVar2 = iVar11;\nLAB_00057608:\n    if (param_6 <= param_11) goto LAB_000578fc;\nLAB_00057610:\n    __gmpn_mul(iVar6,param_4,param_6,iVar5,iVar1);\n    if (local_40 != 0) goto LAB_00057638;\nLAB_00057924:\n    iVar11 = (*(code *)*local_80)(param_3,param_3,param_4,param_6);\n    *local_3c = *local_3c + iVar11;\n  }\n  else {\n    do {\n      iVar10 = iVar10 + -1;\n      if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000575cb;\n      }\n      uVar3 = *(uint *)(param_5 + iVar10 * 4);\n      uVar4 = *(uint *)(iVar6 + iVar10 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_000575cb:\n      (*pcVar13)(param_5,iVar6,param_5,iVar11);\n      local_64 = 0;\n    }\n    else {\n      (*pcVar13)(param_5,param_5,iVar6,iVar11);\n      local_64 = 1;\n    }\n    if (local_60 != 0) goto LAB_000575ee;\nLAB_000578c7:\n    pcVar13 = (code *)local_80[0x22];\n    iVar11 = param_11;\n    if (*piVar2 == 0) {\n      do {\n        iVar11 = iVar11 + -1;\n        if (iVar11 < 0) goto LAB_00057cd1;\n        uVar3 = *(uint *)(param_7 + iVar11 * 4);\n        uVar4 = *(uint *)(iVar5 + iVar11 * 4);\n      } while (uVar4 == uVar3);\n      if (uVar3 < uVar4) {\nLAB_00057cd1:\n        (*pcVar13)(iVar5,iVar5,param_7,param_11);\n      }\n      else {\n        (*pcVar13)(iVar5,param_7,iVar5,param_11);\n        local_60 = 1;\n      }\n      goto LAB_00057608;\n    }\n    iVar11 = (*pcVar13)(iVar5,iVar5,param_7,param_11);\n    *piVar2 = *piVar2 - iVar11;\n    if (param_11 < param_6) goto LAB_00057610;\nLAB_000578fc:\n    __gmpn_mul(iVar6,iVar5,iVar1,param_4,param_6);\n    if (local_40 == 0) goto LAB_00057924;\nLAB_00057638:\n    (*(code *)local_80[0x22])(param_3,param_4,param_3,param_6);\n  }\n  iVar11 = param_11 + iVar12;\n  iVar7 = iVar11;\n  iVar10 = iVar11;\n  if (local_64 == local_60) {\n    (*(code *)*local_80)(param_4,param_5,iVar6,iVar11);\n    local_60 = local_64;\n    if (local_64 == local_30) goto LAB_00057971;\nLAB_000576cd:\n    do {\n      iVar10 = iVar10 + -1;\n      if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000576db;\n      }\n      uVar3 = *(uint *)(iVar14 + iVar10 * 4);\n      uVar4 = *(uint *)(param_5 + iVar10 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_000576db:\n      (*pcVar13)(param_5,param_5,iVar14,iVar11);\n    }\n    else {\n      (*pcVar13)(param_5,iVar14,param_5,iVar11);\n      local_64 = local_64 ^ 1;\n    }\n    if (param_11 <= iVar12) goto LAB_000576f3;\nLAB_0005798d:\n    __gmpn_mul(iVar6,param_8,param_11,param_12,iVar12);\n    iVar10 = (*(code *)*local_80)(iVar5,param_10,param_8,param_11);\n    *piVar2 = iVar10;\n  }\n  else {\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005768b;\n      }\n      uVar3 = *(uint *)(iVar6 + iVar7 * 4);\n      uVar4 = *(uint *)(param_5 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_0005768b:\n      (*pcVar13)(param_4,param_5,iVar6,iVar11);\n      local_60 = local_64;\n    }\n    else {\n      (*pcVar13)(param_4,iVar6,param_5,iVar11);\n      local_60 = local_64 ^ 1;\n    }\n    if (local_64 != local_30) goto LAB_000576cd;\nLAB_00057971:\n    (*(code *)*local_80)(param_5,param_5,iVar14,iVar11);\n    if (iVar12 < param_11) goto LAB_0005798d;\nLAB_000576f3:\n    __gmpn_mul(iVar6,param_12,iVar12,param_8,param_11);\n    iVar10 = (*(code *)*local_80)(iVar5,param_10,param_8,param_11);\n    *piVar2 = iVar10;\n    if (param_11 < iVar12) {\n      __gmpn_mul(iVar14,param_3,iVar12,iVar5,iVar1);\n      goto LAB_00057755;\n    }\n  }\n  __gmpn_mul(iVar14,iVar5,iVar1,param_3,iVar12);\nLAB_00057755:\n  iVar12 = iVar11;\n  if (local_24 == local_64) {\n    (*(code *)*local_80)(param_3,param_5,iVar6,iVar11);\n  }\n  else {\n    do {\n      iVar12 = iVar12 + -1;\n      if (iVar12 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005778b;\n      }\n      uVar3 = *(uint *)(iVar6 + iVar12 * 4);\n      uVar4 = *(uint *)(param_5 + iVar12 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_0005778b:\n      (*pcVar13)(param_3,param_5,iVar6,iVar11);\n    }\n    else {\n      (*pcVar13)(param_3,iVar6,param_5,iVar11);\n    }\n  }\n  if (local_64 == 0) {\n    (*(code *)local_80[0x22])(param_5,iVar14,param_5,iVar11);\n  }\n  else {\n    (*(code *)*local_80)(param_5,iVar14,param_5,iVar11);\n  }\n  if (local_60 != 0) {\n                    \n                    \n    (*(code *)*local_80)();\n    return;\n  }\n                    \n                    \n  (*(code *)local_80[0x22])();\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "code *pcVar13;" type_identifier (pointer_declarator "*pcVar13" * identifier) ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "int unaff_EBX;" primitive_type identifier ;) (declaration "int unaff_retaddr;" primitive_type identifier ;) (declaration "undefined4 *local_80;" type_identifier (pointer_declarator "*local_80" * identifier) ;) (declaration "uint local_64;" type_identifier identifier ;) (declaration "uint local_60;" type_identifier identifier ;) (declaration "int *local_5c;" primitive_type (pointer_declarator "*local_5c" * identifier) ;) (declaration "uint local_40;" type_identifier identifier ;) (declaration "int *local_3c;" primitive_type (pointer_declarator "*local_3c" * identifier) ;) (declaration "int local_34;" primitive_type identifier ;) (declaration "uint local_30;" type_identifier identifier ;) (declaration "uint local_24;" type_identifier identifier ;) (expression_statement "entry(param_2,0x572a9);" (call_expression "entry(param_2,0x572a9)" identifier (argument_list "(param_2,0x572a9)" ( identifier , number_literal ))) ;) (expression_statement "iVar12 = param_6 + 1;" (assignment_expression "iVar12 = param_6 + 1" identifier = (binary_expression "param_6 + 1" identifier + number_literal)) ;) (expression_statement "iVar1 = param_11 + 1;" (assignment_expression "iVar1 = param_11 + 1" identifier = (binary_expression "param_11 + 1" identifier + number_literal)) ;) (expression_statement "local_34 = iVar12 * 4;" (assignment_expression "local_34 = iVar12 * 4" identifier = (binary_expression "iVar12 * 4" identifier * number_literal)) ;) (expression_statement "iVar5 = param_12 + local_34;" (assignment_expression "iVar5 = param_12 + local_34" identifier = (binary_expression "param_12 + local_34" identifier + identifier)) ;) (expression_statement "iVar6 = iVar5 + iVar1 * 4;" (assignment_expression "iVar6 = iVar5 + iVar1 * 4" identifier = (binary_expression "iVar5 + iVar1 * 4" identifier + (binary_expression "iVar1 * 4" identifier * number_literal))) ;) (expression_statement "iVar11 = param_6 + param_11 + 1;" (assignment_expression "iVar11 = param_6 + param_11 + 1" identifier = (binary_expression "param_6 + param_11 + 1" (binary_expression "param_6 + param_11" identifier + identifier) + number_literal)) ;) (expression_statement "iVar10 = iVar11 * 4;" (assignment_expression "iVar10 = iVar11 * 4" identifier = (binary_expression "iVar11 * 4" identifier * number_literal)) ;) (expression_statement "iVar14 = iVar6 + iVar10;" (assignment_expression "iVar14 = iVar6 + iVar10" identifier = (binary_expression "iVar6 + iVar10" identifier + identifier)) ;) (expression_statement "iVar7 = param_6;" (assignment_expression "iVar7 = param_6" identifier = identifier) ;) (if_statement "if (param_6 < param_11) {\n    __gmpn_mul(iVar6,param_9,param_11,param_3,param_6);\n  }\n  else {\n    __gmpn_mul(iVar6,param_3,param_6,param_9,param_11);\n  }" if (parenthesized_expression "(param_6 < param_11)" ( (binary_expression "param_6 < param_11" identifier < identifier) )) (compound_statement "{\n    __gmpn_mul(iVar6,param_9,param_11,param_3,param_6);\n  }" { (expression_statement "__gmpn_mul(iVar6,param_9,param_11,param_3,param_6);" (call_expression "__gmpn_mul(iVar6,param_9,param_11,param_3,param_6)" identifier (argument_list "(iVar6,param_9,param_11,param_3,param_6)" ( identifier , identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n    __gmpn_mul(iVar6,param_3,param_6,param_9,param_11);\n  }" else (compound_statement "{\n    __gmpn_mul(iVar6,param_3,param_6,param_9,param_11);\n  }" { (expression_statement "__gmpn_mul(iVar6,param_3,param_6,param_9,param_11);" (call_expression "__gmpn_mul(iVar6,param_3,param_6,param_9,param_11)" identifier (argument_list "(iVar6,param_3,param_6,param_9,param_11)" ( identifier , identifier , identifier , identifier , identifier ))) ;) }))) (do_statement "do {\n    iVar7 = iVar7 + -1;\n    iVar8 = param_6;\n    if (iVar7 < 0) {\n      local_80 = *(undefined4 **)(unaff_EBX + 0x46aeb);\n      pcVar13 = (code *)local_80[0x22];\n      goto LAB_000573b5;\n    }\n    uVar3 = *(uint *)(param_4 + iVar7 * 4);\n    uVar4 = *(uint *)(param_5 + iVar7 * 4);\n  } while (uVar4 == uVar3);" do (compound_statement "{\n    iVar7 = iVar7 + -1;\n    iVar8 = param_6;\n    if (iVar7 < 0) {\n      local_80 = *(undefined4 **)(unaff_EBX + 0x46aeb);\n      pcVar13 = (code *)local_80[0x22];\n      goto LAB_000573b5;\n    }\n    uVar3 = *(uint *)(param_4 + iVar7 * 4);\n    uVar4 = *(uint *)(param_5 + iVar7 * 4);\n  }" { (expression_statement "iVar7 = iVar7 + -1;" (assignment_expression "iVar7 = iVar7 + -1" identifier = (binary_expression "iVar7 + -1" identifier + number_literal)) ;) (expression_statement "iVar8 = param_6;" (assignment_expression "iVar8 = param_6" identifier = identifier) ;) (if_statement "if (iVar7 < 0) {\n      local_80 = *(undefined4 **)(unaff_EBX + 0x46aeb);\n      pcVar13 = (code *)local_80[0x22];\n      goto LAB_000573b5;\n    }" if (parenthesized_expression "(iVar7 < 0)" ( (binary_expression "iVar7 < 0" identifier < number_literal) )) (compound_statement "{\n      local_80 = *(undefined4 **)(unaff_EBX + 0x46aeb);\n      pcVar13 = (code *)local_80[0x22];\n      goto LAB_000573b5;\n    }" { (expression_statement "local_80 = *(undefined4 **)(unaff_EBX + 0x46aeb);" (assignment_expression "local_80 = *(undefined4 **)(unaff_EBX + 0x46aeb)" identifier = (pointer_expression "*(undefined4 **)(unaff_EBX + 0x46aeb)" * (cast_expression "(undefined4 **)(unaff_EBX + 0x46aeb)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_EBX + 0x46aeb)" ( (binary_expression "unaff_EBX + 0x46aeb" identifier + number_literal) ))))) ;) (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" identifier = (cast_expression "(code *)local_80[0x22]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0x22]" identifier [ number_literal ]))) ;) (goto_statement "goto LAB_000573b5;" goto statement_identifier ;) })) (expression_statement "uVar3 = *(uint *)(param_4 + iVar7 * 4);" (assignment_expression "uVar3 = *(uint *)(param_4 + iVar7 * 4)" identifier = (pointer_expression "*(uint *)(param_4 + iVar7 * 4)" * (cast_expression "(uint *)(param_4 + iVar7 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + iVar7 * 4)" ( (binary_expression "param_4 + iVar7 * 4" identifier + (binary_expression "iVar7 * 4" identifier * number_literal)) ))))) ;) (expression_statement "uVar4 = *(uint *)(param_5 + iVar7 * 4);" (assignment_expression "uVar4 = *(uint *)(param_5 + iVar7 * 4)" identifier = (pointer_expression "*(uint *)(param_5 + iVar7 * 4)" * (cast_expression "(uint *)(param_5 + iVar7 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + iVar7 * 4)" ( (binary_expression "param_5 + iVar7 * 4" identifier + (binary_expression "iVar7 * 4" identifier * number_literal)) ))))) ;) }) while (parenthesized_expression "(uVar4 == uVar3)" ( (binary_expression "uVar4 == uVar3" identifier == identifier) )) ;) (expression_statement "local_80 = *(undefined4 **)(unaff_EBX + 0x46aeb);" (assignment_expression "local_80 = *(undefined4 **)(unaff_EBX + 0x46aeb)" identifier = (pointer_expression "*(undefined4 **)(unaff_EBX + 0x46aeb)" * (cast_expression "(undefined4 **)(unaff_EBX + 0x46aeb)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_EBX + 0x46aeb)" ( (binary_expression "unaff_EBX + 0x46aeb" identifier + number_literal) ))))) ;) (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" identifier = (cast_expression "(code *)local_80[0x22]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0x22]" identifier [ number_literal ]))) ;) (if_statement "if (uVar3 < uVar4) {\nLAB_000573b5:\n    (*pcVar13)(param_5,param_5,param_4,param_6);\n    local_3c = (int *)(param_3 + local_34 + -4);\n    iVar7 = (*(code *)*local_80)(param_3,param_3,param_5,param_6);\n    *local_3c = iVar7;\n    local_5c = (int *)(param_12 + local_34 + -4);\n    if (iVar7 == 0) {\n      local_30 = 1;\n      goto LAB_00057b2c;\n    }\n    iVar8 = (*(code *)local_80[0x22])(param_12,param_3,unaff_retaddr,param_6);\n    *local_5c = iVar7 - iVar8;\n    local_30 = 1;\n    local_40 = 0;\n    local_24 = 1;\n  }\n  else {\n    (*pcVar13)(param_5,param_4,param_5,param_6);\n    iVar7 = param_6;\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        local_5c = (int *)(param_12 + local_34 + -4);\n        local_3c = (int *)(param_3 + local_34 + -4);\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057ae8;\n      }\n      uVar3 = *(uint *)(param_5 + iVar7 * 4);\n      uVar4 = *(uint *)(param_3 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    local_5c = (int *)(param_12 + local_34 + -4);\n    local_3c = (int *)(param_3 + local_34 + -4);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_00057ae8:\n      (*pcVar13)(param_3,param_3,param_5,param_6);\n      *local_3c = 0;\n      local_30 = 0;\nLAB_00057b2c:\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) {\n          pcVar13 = (code *)local_80[0x22];\n          goto LAB_00057b3e;\n        }\n        uVar3 = *(uint *)(param_3 + iVar8 * 4);\n        uVar4 = *(uint *)(unaff_retaddr + iVar8 * 4);\n      } while (uVar4 == uVar3);\n      pcVar13 = (code *)local_80[0x22];\n      if (uVar3 < uVar4) {\nLAB_00057b3e:\n        (*pcVar13)(param_12,unaff_retaddr,param_3,param_6);\n        local_24 = 0;\n      }\n      else {\n        (*pcVar13)(param_12,param_3,unaff_retaddr,param_6);\n        local_24 = 1;\n      }\n      local_40 = 0;\n      *local_5c = 0;\n    }\n    else {\n      (*pcVar13)(param_3,param_5,param_3,param_6);\n      *local_3c = 0;\n      iVar7 = (*(code *)*local_80)(param_12,param_3,unaff_retaddr,param_6);\n      *local_5c = iVar7;\n      local_30 = 0;\n      local_40 = 1;\n      local_24 = 0;\n    }\n  }" if (parenthesized_expression "(uVar3 < uVar4)" ( (binary_expression "uVar3 < uVar4" identifier < identifier) )) (compound_statement "{\nLAB_000573b5:\n    (*pcVar13)(param_5,param_5,param_4,param_6);\n    local_3c = (int *)(param_3 + local_34 + -4);\n    iVar7 = (*(code *)*local_80)(param_3,param_3,param_5,param_6);\n    *local_3c = iVar7;\n    local_5c = (int *)(param_12 + local_34 + -4);\n    if (iVar7 == 0) {\n      local_30 = 1;\n      goto LAB_00057b2c;\n    }\n    iVar8 = (*(code *)local_80[0x22])(param_12,param_3,unaff_retaddr,param_6);\n    *local_5c = iVar7 - iVar8;\n    local_30 = 1;\n    local_40 = 0;\n    local_24 = 1;\n  }" { (labeled_statement "LAB_000573b5:\n    (*pcVar13)(param_5,param_5,param_4,param_6);" statement_identifier : (expression_statement "(*pcVar13)(param_5,param_5,param_4,param_6);" (call_expression "(*pcVar13)(param_5,param_5,param_4,param_6)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(param_5,param_5,param_4,param_6)" ( identifier , identifier , identifier , identifier ))) ;)) (expression_statement "local_3c = (int *)(param_3 + local_34 + -4);" (assignment_expression "local_3c = (int *)(param_3 + local_34 + -4)" identifier = (cast_expression "(int *)(param_3 + local_34 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + local_34 + -4)" ( (binary_expression "param_3 + local_34 + -4" (binary_expression "param_3 + local_34" identifier + identifier) + number_literal) )))) ;) (expression_statement "iVar7 = (*(code *)*local_80)(param_3,param_3,param_5,param_6);" (assignment_expression "iVar7 = (*(code *)*local_80)(param_3,param_3,param_5,param_6)" identifier = (call_expression "(*(code *)*local_80)(param_3,param_3,param_5,param_6)" (parenthesized_expression "(*(code *)*local_80)" ( (pointer_expression "*(code *)*local_80" * (cast_expression "(code *)*local_80" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_80" * identifier))) )) (argument_list "(param_3,param_3,param_5,param_6)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "*local_3c = iVar7;" (assignment_expression "*local_3c = iVar7" (pointer_expression "*local_3c" * identifier) = identifier) ;) (expression_statement "local_5c = (int *)(param_12 + local_34 + -4);" (assignment_expression "local_5c = (int *)(param_12 + local_34 + -4)" identifier = (cast_expression "(int *)(param_12 + local_34 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_12 + local_34 + -4)" ( (binary_expression "param_12 + local_34 + -4" (binary_expression "param_12 + local_34" identifier + identifier) + number_literal) )))) ;) (if_statement "if (iVar7 == 0) {\n      local_30 = 1;\n      goto LAB_00057b2c;\n    }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n      local_30 = 1;\n      goto LAB_00057b2c;\n    }" { (expression_statement "local_30 = 1;" (assignment_expression "local_30 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_00057b2c;" goto statement_identifier ;) })) (expression_statement "iVar8 = (*(code *)local_80[0x22])(param_12,param_3,unaff_retaddr,param_6);" (assignment_expression "iVar8 = (*(code *)local_80[0x22])(param_12,param_3,unaff_retaddr,param_6)" identifier = (call_expression "(*(code *)local_80[0x22])(param_12,param_3,unaff_retaddr,param_6)" (parenthesized_expression "(*(code *)local_80[0x22])" ( (pointer_expression "*(code *)local_80[0x22]" * (cast_expression "(code *)local_80[0x22]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0x22]" identifier [ number_literal ]))) )) (argument_list "(param_12,param_3,unaff_retaddr,param_6)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "*local_5c = iVar7 - iVar8;" (assignment_expression "*local_5c = iVar7 - iVar8" (pointer_expression "*local_5c" * identifier) = (binary_expression "iVar7 - iVar8" identifier - identifier)) ;) (expression_statement "local_30 = 1;" (assignment_expression "local_30 = 1" identifier = number_literal) ;) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (expression_statement "local_24 = 1;" (assignment_expression "local_24 = 1" identifier = number_literal) ;) }) (else_clause "else {\n    (*pcVar13)(param_5,param_4,param_5,param_6);\n    iVar7 = param_6;\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        local_5c = (int *)(param_12 + local_34 + -4);\n        local_3c = (int *)(param_3 + local_34 + -4);\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057ae8;\n      }\n      uVar3 = *(uint *)(param_5 + iVar7 * 4);\n      uVar4 = *(uint *)(param_3 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    local_5c = (int *)(param_12 + local_34 + -4);\n    local_3c = (int *)(param_3 + local_34 + -4);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_00057ae8:\n      (*pcVar13)(param_3,param_3,param_5,param_6);\n      *local_3c = 0;\n      local_30 = 0;\nLAB_00057b2c:\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) {\n          pcVar13 = (code *)local_80[0x22];\n          goto LAB_00057b3e;\n        }\n        uVar3 = *(uint *)(param_3 + iVar8 * 4);\n        uVar4 = *(uint *)(unaff_retaddr + iVar8 * 4);\n      } while (uVar4 == uVar3);\n      pcVar13 = (code *)local_80[0x22];\n      if (uVar3 < uVar4) {\nLAB_00057b3e:\n        (*pcVar13)(param_12,unaff_retaddr,param_3,param_6);\n        local_24 = 0;\n      }\n      else {\n        (*pcVar13)(param_12,param_3,unaff_retaddr,param_6);\n        local_24 = 1;\n      }\n      local_40 = 0;\n      *local_5c = 0;\n    }\n    else {\n      (*pcVar13)(param_3,param_5,param_3,param_6);\n      *local_3c = 0;\n      iVar7 = (*(code *)*local_80)(param_12,param_3,unaff_retaddr,param_6);\n      *local_5c = iVar7;\n      local_30 = 0;\n      local_40 = 1;\n      local_24 = 0;\n    }\n  }" else (compound_statement "{\n    (*pcVar13)(param_5,param_4,param_5,param_6);\n    iVar7 = param_6;\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        local_5c = (int *)(param_12 + local_34 + -4);\n        local_3c = (int *)(param_3 + local_34 + -4);\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057ae8;\n      }\n      uVar3 = *(uint *)(param_5 + iVar7 * 4);\n      uVar4 = *(uint *)(param_3 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    local_5c = (int *)(param_12 + local_34 + -4);\n    local_3c = (int *)(param_3 + local_34 + -4);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_00057ae8:\n      (*pcVar13)(param_3,param_3,param_5,param_6);\n      *local_3c = 0;\n      local_30 = 0;\nLAB_00057b2c:\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) {\n          pcVar13 = (code *)local_80[0x22];\n          goto LAB_00057b3e;\n        }\n        uVar3 = *(uint *)(param_3 + iVar8 * 4);\n        uVar4 = *(uint *)(unaff_retaddr + iVar8 * 4);\n      } while (uVar4 == uVar3);\n      pcVar13 = (code *)local_80[0x22];\n      if (uVar3 < uVar4) {\nLAB_00057b3e:\n        (*pcVar13)(param_12,unaff_retaddr,param_3,param_6);\n        local_24 = 0;\n      }\n      else {\n        (*pcVar13)(param_12,param_3,unaff_retaddr,param_6);\n        local_24 = 1;\n      }\n      local_40 = 0;\n      *local_5c = 0;\n    }\n    else {\n      (*pcVar13)(param_3,param_5,param_3,param_6);\n      *local_3c = 0;\n      iVar7 = (*(code *)*local_80)(param_12,param_3,unaff_retaddr,param_6);\n      *local_5c = iVar7;\n      local_30 = 0;\n      local_40 = 1;\n      local_24 = 0;\n    }\n  }" { (expression_statement "(*pcVar13)(param_5,param_4,param_5,param_6);" (call_expression "(*pcVar13)(param_5,param_4,param_5,param_6)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(param_5,param_4,param_5,param_6)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar7 = param_6;" (assignment_expression "iVar7 = param_6" identifier = identifier) ;) (do_statement "do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        local_5c = (int *)(param_12 + local_34 + -4);\n        local_3c = (int *)(param_3 + local_34 + -4);\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057ae8;\n      }\n      uVar3 = *(uint *)(param_5 + iVar7 * 4);\n      uVar4 = *(uint *)(param_3 + iVar7 * 4);\n    } while (uVar4 == uVar3);" do (compound_statement "{\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        local_5c = (int *)(param_12 + local_34 + -4);\n        local_3c = (int *)(param_3 + local_34 + -4);\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057ae8;\n      }\n      uVar3 = *(uint *)(param_5 + iVar7 * 4);\n      uVar4 = *(uint *)(param_3 + iVar7 * 4);\n    }" { (expression_statement "iVar7 = iVar7 + -1;" (assignment_expression "iVar7 = iVar7 + -1" identifier = (binary_expression "iVar7 + -1" identifier + number_literal)) ;) (if_statement "if (iVar7 < 0) {\n        local_5c = (int *)(param_12 + local_34 + -4);\n        local_3c = (int *)(param_3 + local_34 + -4);\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057ae8;\n      }" if (parenthesized_expression "(iVar7 < 0)" ( (binary_expression "iVar7 < 0" identifier < number_literal) )) (compound_statement "{\n        local_5c = (int *)(param_12 + local_34 + -4);\n        local_3c = (int *)(param_3 + local_34 + -4);\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057ae8;\n      }" { (expression_statement "local_5c = (int *)(param_12 + local_34 + -4);" (assignment_expression "local_5c = (int *)(param_12 + local_34 + -4)" identifier = (cast_expression "(int *)(param_12 + local_34 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_12 + local_34 + -4)" ( (binary_expression "param_12 + local_34 + -4" (binary_expression "param_12 + local_34" identifier + identifier) + number_literal) )))) ;) (expression_statement "local_3c = (int *)(param_3 + local_34 + -4);" (assignment_expression "local_3c = (int *)(param_3 + local_34 + -4)" identifier = (cast_expression "(int *)(param_3 + local_34 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + local_34 + -4)" ( (binary_expression "param_3 + local_34 + -4" (binary_expression "param_3 + local_34" identifier + identifier) + number_literal) )))) ;) (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" identifier = (cast_expression "(code *)local_80[0x22]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0x22]" identifier [ number_literal ]))) ;) (goto_statement "goto LAB_00057ae8;" goto statement_identifier ;) })) (expression_statement "uVar3 = *(uint *)(param_5 + iVar7 * 4);" (assignment_expression "uVar3 = *(uint *)(param_5 + iVar7 * 4)" identifier = (pointer_expression "*(uint *)(param_5 + iVar7 * 4)" * (cast_expression "(uint *)(param_5 + iVar7 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + iVar7 * 4)" ( (binary_expression "param_5 + iVar7 * 4" identifier + (binary_expression "iVar7 * 4" identifier * number_literal)) ))))) ;) (expression_statement "uVar4 = *(uint *)(param_3 + iVar7 * 4);" (assignment_expression "uVar4 = *(uint *)(param_3 + iVar7 * 4)" identifier = (pointer_expression "*(uint *)(param_3 + iVar7 * 4)" * (cast_expression "(uint *)(param_3 + iVar7 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + iVar7 * 4)" ( (binary_expression "param_3 + iVar7 * 4" identifier + (binary_expression "iVar7 * 4" identifier * number_literal)) ))))) ;) }) while (parenthesized_expression "(uVar4 == uVar3)" ( (binary_expression "uVar4 == uVar3" identifier == identifier) )) ;) (expression_statement "local_5c = (int *)(param_12 + local_34 + -4);" (assignment_expression "local_5c = (int *)(param_12 + local_34 + -4)" identifier = (cast_expression "(int *)(param_12 + local_34 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_12 + local_34 + -4)" ( (binary_expression "param_12 + local_34 + -4" (binary_expression "param_12 + local_34" identifier + identifier) + number_literal) )))) ;) (expression_statement "local_3c = (int *)(param_3 + local_34 + -4);" (assignment_expression "local_3c = (int *)(param_3 + local_34 + -4)" identifier = (cast_expression "(int *)(param_3 + local_34 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + local_34 + -4)" ( (binary_expression "param_3 + local_34 + -4" (binary_expression "param_3 + local_34" identifier + identifier) + number_literal) )))) ;) (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" identifier = (cast_expression "(code *)local_80[0x22]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0x22]" identifier [ number_literal ]))) ;) (if_statement "if (uVar3 < uVar4) {\nLAB_00057ae8:\n      (*pcVar13)(param_3,param_3,param_5,param_6);\n      *local_3c = 0;\n      local_30 = 0;\nLAB_00057b2c:\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) {\n          pcVar13 = (code *)local_80[0x22];\n          goto LAB_00057b3e;\n        }\n        uVar3 = *(uint *)(param_3 + iVar8 * 4);\n        uVar4 = *(uint *)(unaff_retaddr + iVar8 * 4);\n      } while (uVar4 == uVar3);\n      pcVar13 = (code *)local_80[0x22];\n      if (uVar3 < uVar4) {\nLAB_00057b3e:\n        (*pcVar13)(param_12,unaff_retaddr,param_3,param_6);\n        local_24 = 0;\n      }\n      else {\n        (*pcVar13)(param_12,param_3,unaff_retaddr,param_6);\n        local_24 = 1;\n      }\n      local_40 = 0;\n      *local_5c = 0;\n    }\n    else {\n      (*pcVar13)(param_3,param_5,param_3,param_6);\n      *local_3c = 0;\n      iVar7 = (*(code *)*local_80)(param_12,param_3,unaff_retaddr,param_6);\n      *local_5c = iVar7;\n      local_30 = 0;\n      local_40 = 1;\n      local_24 = 0;\n    }" if (parenthesized_expression "(uVar3 < uVar4)" ( (binary_expression "uVar3 < uVar4" identifier < identifier) )) (compound_statement "{\nLAB_00057ae8:\n      (*pcVar13)(param_3,param_3,param_5,param_6);\n      *local_3c = 0;\n      local_30 = 0;\nLAB_00057b2c:\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) {\n          pcVar13 = (code *)local_80[0x22];\n          goto LAB_00057b3e;\n        }\n        uVar3 = *(uint *)(param_3 + iVar8 * 4);\n        uVar4 = *(uint *)(unaff_retaddr + iVar8 * 4);\n      } while (uVar4 == uVar3);\n      pcVar13 = (code *)local_80[0x22];\n      if (uVar3 < uVar4) {\nLAB_00057b3e:\n        (*pcVar13)(param_12,unaff_retaddr,param_3,param_6);\n        local_24 = 0;\n      }\n      else {\n        (*pcVar13)(param_12,param_3,unaff_retaddr,param_6);\n        local_24 = 1;\n      }\n      local_40 = 0;\n      *local_5c = 0;\n    }" { (labeled_statement "LAB_00057ae8:\n      (*pcVar13)(param_3,param_3,param_5,param_6);" statement_identifier : (expression_statement "(*pcVar13)(param_3,param_3,param_5,param_6);" (call_expression "(*pcVar13)(param_3,param_3,param_5,param_6)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(param_3,param_3,param_5,param_6)" ( identifier , identifier , identifier , identifier ))) ;)) (expression_statement "*local_3c = 0;" (assignment_expression "*local_3c = 0" (pointer_expression "*local_3c" * identifier) = number_literal) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00057b2c:\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) {\n          pcVar13 = (code *)local_80[0x22];\n          goto LAB_00057b3e;\n        }\n        uVar3 = *(uint *)(param_3 + iVar8 * 4);\n        uVar4 = *(uint *)(unaff_retaddr + iVar8 * 4);\n      } while (uVar4 == uVar3);" statement_identifier : (do_statement "do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) {\n          pcVar13 = (code *)local_80[0x22];\n          goto LAB_00057b3e;\n        }\n        uVar3 = *(uint *)(param_3 + iVar8 * 4);\n        uVar4 = *(uint *)(unaff_retaddr + iVar8 * 4);\n      } while (uVar4 == uVar3);" do (compound_statement "{\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) {\n          pcVar13 = (code *)local_80[0x22];\n          goto LAB_00057b3e;\n        }\n        uVar3 = *(uint *)(param_3 + iVar8 * 4);\n        uVar4 = *(uint *)(unaff_retaddr + iVar8 * 4);\n      }" { (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (if_statement "if (iVar8 < 0) {\n          pcVar13 = (code *)local_80[0x22];\n          goto LAB_00057b3e;\n        }" if (parenthesized_expression "(iVar8 < 0)" ( (binary_expression "iVar8 < 0" identifier < number_literal) )) (compound_statement "{\n          pcVar13 = (code *)local_80[0x22];\n          goto LAB_00057b3e;\n        }" { (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" identifier = (cast_expression "(code *)local_80[0x22]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0x22]" identifier [ number_literal ]))) ;) (goto_statement "goto LAB_00057b3e;" goto statement_identifier ;) })) (expression_statement "uVar3 = *(uint *)(param_3 + iVar8 * 4);" (assignment_expression "uVar3 = *(uint *)(param_3 + iVar8 * 4)" identifier = (pointer_expression "*(uint *)(param_3 + iVar8 * 4)" * (cast_expression "(uint *)(param_3 + iVar8 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + iVar8 * 4)" ( (binary_expression "param_3 + iVar8 * 4" identifier + (binary_expression "iVar8 * 4" identifier * number_literal)) ))))) ;) (expression_statement "uVar4 = *(uint *)(unaff_retaddr + iVar8 * 4);" (assignment_expression "uVar4 = *(uint *)(unaff_retaddr + iVar8 * 4)" identifier = (pointer_expression "*(uint *)(unaff_retaddr + iVar8 * 4)" * (cast_expression "(uint *)(unaff_retaddr + iVar8 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + iVar8 * 4)" ( (binary_expression "unaff_retaddr + iVar8 * 4" identifier + (binary_expression "iVar8 * 4" identifier * number_literal)) ))))) ;) }) while (parenthesized_expression "(uVar4 == uVar3)" ( (binary_expression "uVar4 == uVar3" identifier == identifier) )) ;)) (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" identifier = (cast_expression "(code *)local_80[0x22]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0x22]" identifier [ number_literal ]))) ;) (if_statement "if (uVar3 < uVar4) {\nLAB_00057b3e:\n        (*pcVar13)(param_12,unaff_retaddr,param_3,param_6);\n        local_24 = 0;\n      }\n      else {\n        (*pcVar13)(param_12,param_3,unaff_retaddr,param_6);\n        local_24 = 1;\n      }" if (parenthesized_expression "(uVar3 < uVar4)" ( (binary_expression "uVar3 < uVar4" identifier < identifier) )) (compound_statement "{\nLAB_00057b3e:\n        (*pcVar13)(param_12,unaff_retaddr,param_3,param_6);\n        local_24 = 0;\n      }" { (labeled_statement "LAB_00057b3e:\n        (*pcVar13)(param_12,unaff_retaddr,param_3,param_6);" statement_identifier : (expression_statement "(*pcVar13)(param_12,unaff_retaddr,param_3,param_6);" (call_expression "(*pcVar13)(param_12,unaff_retaddr,param_3,param_6)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(param_12,unaff_retaddr,param_3,param_6)" ( identifier , identifier , identifier , identifier ))) ;)) (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        (*pcVar13)(param_12,param_3,unaff_retaddr,param_6);\n        local_24 = 1;\n      }" else (compound_statement "{\n        (*pcVar13)(param_12,param_3,unaff_retaddr,param_6);\n        local_24 = 1;\n      }" { (expression_statement "(*pcVar13)(param_12,param_3,unaff_retaddr,param_6);" (call_expression "(*pcVar13)(param_12,param_3,unaff_retaddr,param_6)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(param_12,param_3,unaff_retaddr,param_6)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "local_24 = 1;" (assignment_expression "local_24 = 1" identifier = number_literal) ;) }))) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (expression_statement "*local_5c = 0;" (assignment_expression "*local_5c = 0" (pointer_expression "*local_5c" * identifier) = number_literal) ;) }) (else_clause "else {\n      (*pcVar13)(param_3,param_5,param_3,param_6);\n      *local_3c = 0;\n      iVar7 = (*(code *)*local_80)(param_12,param_3,unaff_retaddr,param_6);\n      *local_5c = iVar7;\n      local_30 = 0;\n      local_40 = 1;\n      local_24 = 0;\n    }" else (compound_statement "{\n      (*pcVar13)(param_3,param_5,param_3,param_6);\n      *local_3c = 0;\n      iVar7 = (*(code *)*local_80)(param_12,param_3,unaff_retaddr,param_6);\n      *local_5c = iVar7;\n      local_30 = 0;\n      local_40 = 1;\n      local_24 = 0;\n    }" { (expression_statement "(*pcVar13)(param_3,param_5,param_3,param_6);" (call_expression "(*pcVar13)(param_3,param_5,param_3,param_6)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(param_3,param_5,param_3,param_6)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "*local_3c = 0;" (assignment_expression "*local_3c = 0" (pointer_expression "*local_3c" * identifier) = number_literal) ;) (expression_statement "iVar7 = (*(code *)*local_80)(param_12,param_3,unaff_retaddr,param_6);" (assignment_expression "iVar7 = (*(code *)*local_80)(param_12,param_3,unaff_retaddr,param_6)" identifier = (call_expression "(*(code *)*local_80)(param_12,param_3,unaff_retaddr,param_6)" (parenthesized_expression "(*(code *)*local_80)" ( (pointer_expression "*(code *)*local_80" * (cast_expression "(code *)*local_80" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_80" * identifier))) )) (argument_list "(param_12,param_3,unaff_retaddr,param_6)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "*local_5c = iVar7;" (assignment_expression "*local_5c = iVar7" (pointer_expression "*local_5c" * identifier) = identifier) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_40 = 1;" (assignment_expression "local_40 = 1" identifier = number_literal) ;) (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" identifier = number_literal) ;) }))) }))) (expression_statement "local_34 = local_34 + -4;" (assignment_expression "local_34 = local_34 + -4" identifier = (binary_expression "local_34 + -4" identifier + number_literal)) ;) (if_statement "if (param_6 < param_11) {\n    __gmpn_mul(iVar14,param_7,param_11,unaff_retaddr,param_6);\n  }\n  else {\n    __gmpn_mul(iVar14,unaff_retaddr,param_6,param_7,param_11);\n  }" if (parenthesized_expression "(param_6 < param_11)" ( (binary_expression "param_6 < param_11" identifier < identifier) )) (compound_statement "{\n    __gmpn_mul(iVar14,param_7,param_11,unaff_retaddr,param_6);\n  }" { (expression_statement "__gmpn_mul(iVar14,param_7,param_11,unaff_retaddr,param_6);" (call_expression "__gmpn_mul(iVar14,param_7,param_11,unaff_retaddr,param_6)" identifier (argument_list "(iVar14,param_7,param_11,unaff_retaddr,param_6)" ( identifier , identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n    __gmpn_mul(iVar14,unaff_retaddr,param_6,param_7,param_11);\n  }" else (compound_statement "{\n    __gmpn_mul(iVar14,unaff_retaddr,param_6,param_7,param_11);\n  }" { (expression_statement "__gmpn_mul(iVar14,unaff_retaddr,param_6,param_7,param_11);" (call_expression "__gmpn_mul(iVar14,unaff_retaddr,param_6,param_7,param_11)" identifier (argument_list "(iVar14,unaff_retaddr,param_6,param_7,param_11)" ( identifier , identifier , identifier , identifier , identifier ))) ;) }))) (expression_statement "uVar9 = (*(code *)*local_80)(unaff_retaddr,iVar6,iVar14,param_6 + param_11);" (assignment_expression "uVar9 = (*(code *)*local_80)(unaff_retaddr,iVar6,iVar14,param_6 + param_11)" identifier = (call_expression "(*(code *)*local_80)(unaff_retaddr,iVar6,iVar14,param_6 + param_11)" (parenthesized_expression "(*(code *)*local_80)" ( (pointer_expression "*(code *)*local_80" * (cast_expression "(code *)*local_80" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_80" * identifier))) )) (argument_list "(unaff_retaddr,iVar6,iVar14,param_6 + param_11)" ( identifier , identifier , identifier , (binary_expression "param_6 + param_11" identifier + identifier) )))) ;) (expression_statement "*(undefined4 *)(unaff_retaddr + -4 + iVar10) = uVar9;" (assignment_expression "*(undefined4 *)(unaff_retaddr + -4 + iVar10) = uVar9" (pointer_expression "*(undefined4 *)(unaff_retaddr + -4 + iVar10)" * (cast_expression "(undefined4 *)(unaff_retaddr + -4 + iVar10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_retaddr + -4 + iVar10)" ( (binary_expression "unaff_retaddr + -4 + iVar10" (binary_expression "unaff_retaddr + -4" identifier + number_literal) + identifier) )))) = identifier) ;) (expression_statement "iVar7 = param_11;" (assignment_expression "iVar7 = param_11" identifier = identifier) ;) (do_statement "do {\n    iVar7 = iVar7 + -1;\n    if (iVar7 < 0) {\n      pcVar13 = (code *)local_80[0x22];\n      goto LAB_000574ba;\n    }\n    uVar3 = *(uint *)(param_9 + iVar7 * 4);\n    uVar4 = *(uint *)(param_10 + iVar7 * 4);\n  } while (uVar4 == uVar3);" do (compound_statement "{\n    iVar7 = iVar7 + -1;\n    if (iVar7 < 0) {\n      pcVar13 = (code *)local_80[0x22];\n      goto LAB_000574ba;\n    }\n    uVar3 = *(uint *)(param_9 + iVar7 * 4);\n    uVar4 = *(uint *)(param_10 + iVar7 * 4);\n  }" { (expression_statement "iVar7 = iVar7 + -1;" (assignment_expression "iVar7 = iVar7 + -1" identifier = (binary_expression "iVar7 + -1" identifier + number_literal)) ;) (if_statement "if (iVar7 < 0) {\n      pcVar13 = (code *)local_80[0x22];\n      goto LAB_000574ba;\n    }" if (parenthesized_expression "(iVar7 < 0)" ( (binary_expression "iVar7 < 0" identifier < number_literal) )) (compound_statement "{\n      pcVar13 = (code *)local_80[0x22];\n      goto LAB_000574ba;\n    }" { (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" identifier = (cast_expression "(code *)local_80[0x22]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0x22]" identifier [ number_literal ]))) ;) (goto_statement "goto LAB_000574ba;" goto statement_identifier ;) })) (expression_statement "uVar3 = *(uint *)(param_9 + iVar7 * 4);" (assignment_expression "uVar3 = *(uint *)(param_9 + iVar7 * 4)" identifier = (pointer_expression "*(uint *)(param_9 + iVar7 * 4)" * (cast_expression "(uint *)(param_9 + iVar7 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_9 + iVar7 * 4)" ( (binary_expression "param_9 + iVar7 * 4" identifier + (binary_expression "iVar7 * 4" identifier * number_literal)) ))))) ;) (expression_statement "uVar4 = *(uint *)(param_10 + iVar7 * 4);" (assignment_expression "uVar4 = *(uint *)(param_10 + iVar7 * 4)" identifier = (pointer_expression "*(uint *)(param_10 + iVar7 * 4)" * (cast_expression "(uint *)(param_10 + iVar7 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_10 + iVar7 * 4)" ( (binary_expression "param_10 + iVar7 * 4" identifier + (binary_expression "iVar7 * 4" identifier * number_literal)) ))))) ;) }) while (parenthesized_expression "(uVar4 == uVar3)" ( (binary_expression "uVar4 == uVar3" identifier == identifier) )) ;) (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" identifier = (cast_expression "(code *)local_80[0x22]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0x22]" identifier [ number_literal ]))) ;) (if_statement "if (uVar3 < uVar4) {\nLAB_000574ba:\n    (*pcVar13)(iVar5,param_10,param_9,param_11);\n    local_60 = 0;\n  }\n  else {\n    (*pcVar13)(iVar5,param_9,param_10,param_11);\n    local_30 = local_30 ^ 1;\n    local_60 = 1;\n  }" if (parenthesized_expression "(uVar3 < uVar4)" ( (binary_expression "uVar3 < uVar4" identifier < identifier) )) (compound_statement "{\nLAB_000574ba:\n    (*pcVar13)(iVar5,param_10,param_9,param_11);\n    local_60 = 0;\n  }" { (labeled_statement "LAB_000574ba:\n    (*pcVar13)(iVar5,param_10,param_9,param_11);" statement_identifier : (expression_statement "(*pcVar13)(iVar5,param_10,param_9,param_11);" (call_expression "(*pcVar13)(iVar5,param_10,param_9,param_11)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(iVar5,param_10,param_9,param_11)" ( identifier , identifier , identifier , identifier ))) ;)) (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    (*pcVar13)(iVar5,param_9,param_10,param_11);\n    local_30 = local_30 ^ 1;\n    local_60 = 1;\n  }" else (compound_statement "{\n    (*pcVar13)(iVar5,param_9,param_10,param_11);\n    local_30 = local_30 ^ 1;\n    local_60 = 1;\n  }" { (expression_statement "(*pcVar13)(iVar5,param_9,param_10,param_11);" (call_expression "(*pcVar13)(iVar5,param_9,param_10,param_11)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(iVar5,param_9,param_10,param_11)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "local_30 = local_30 ^ 1;" (assignment_expression "local_30 = local_30 ^ 1" identifier = (binary_expression "local_30 ^ 1" identifier ^ number_literal)) ;) (expression_statement "local_60 = 1;" (assignment_expression "local_60 = 1" identifier = number_literal) ;) }))) (if_statement "if (param_6 < param_11) {\n    __gmpn_mul(iVar14,iVar5,param_11,param_5,param_6);\n  }\n  else {\n    __gmpn_mul(iVar14,param_5,param_6,iVar5,param_11);\n  }" if (parenthesized_expression "(param_6 < param_11)" ( (binary_expression "param_6 < param_11" identifier < identifier) )) (compound_statement "{\n    __gmpn_mul(iVar14,iVar5,param_11,param_5,param_6);\n  }" { (expression_statement "__gmpn_mul(iVar14,iVar5,param_11,param_5,param_6);" (call_expression "__gmpn_mul(iVar14,iVar5,param_11,param_5,param_6)" identifier (argument_list "(iVar14,iVar5,param_11,param_5,param_6)" ( identifier , identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n    __gmpn_mul(iVar14,param_5,param_6,iVar5,param_11);\n  }" else (compound_statement "{\n    __gmpn_mul(iVar14,param_5,param_6,iVar5,param_11);\n  }" { (expression_statement "__gmpn_mul(iVar14,param_5,param_6,iVar5,param_11);" (call_expression "__gmpn_mul(iVar14,param_5,param_6,iVar5,param_11)" identifier (argument_list "(iVar14,param_5,param_6,iVar5,param_11)" ( identifier , identifier , identifier , identifier , identifier ))) ;) }))) (expression_statement "*(undefined4 *)(iVar14 + -4 + iVar10) = 0;" (assignment_expression "*(undefined4 *)(iVar14 + -4 + iVar10) = 0" (pointer_expression "*(undefined4 *)(iVar14 + -4 + iVar10)" * (cast_expression "(undefined4 *)(iVar14 + -4 + iVar10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + -4 + iVar10)" ( (binary_expression "iVar14 + -4 + iVar10" (binary_expression "iVar14 + -4" identifier + number_literal) + identifier) )))) = number_literal) ;) (expression_statement "piVar2 = (int *)(iVar5 + -4 + iVar1 * 4);" (assignment_expression "piVar2 = (int *)(iVar5 + -4 + iVar1 * 4)" identifier = (cast_expression "(int *)(iVar5 + -4 + iVar1 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + -4 + iVar1 * 4)" ( (binary_expression "iVar5 + -4 + iVar1 * 4" (binary_expression "iVar5 + -4" identifier + number_literal) + (binary_expression "iVar1 * 4" identifier * number_literal)) )))) ;) (expression_statement "iVar7 = param_11;" (assignment_expression "iVar7 = param_11" identifier = identifier) ;) (if_statement "if (local_60 == 0) {\n    iVar7 = (*(code *)*local_80)(iVar5,iVar5,param_8,param_11);\n    *piVar2 = iVar7;\n    if (iVar7 == 0) goto LAB_00057a50;\n    if (param_11 < param_6) {\n      __gmpn_mul(param_5,param_3,param_6,iVar5,iVar1);\n    }\n    else {\n      __gmpn_mul(param_5,iVar5,iVar1,param_3,param_6);\n    }\n    if (*(int *)(param_3 + local_34) != 0) {\n      (*(code *)*local_80)(local_34 + param_5,local_34 + param_5,iVar5,iVar1);\n    }\n  }\n  else {\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057a2e;\n      }\n      uVar3 = *(uint *)(iVar5 + iVar7 * 4);\n      uVar4 = *(uint *)(param_8 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_00057a2e:\n      (*pcVar13)(iVar5,param_8,iVar5,param_11);\n      local_60 = 0;\n    }\n    else {\n      (*pcVar13)(iVar5,iVar5,param_8,param_11);\n    }\n    *piVar2 = 0;\nLAB_00057a50:\n    if (iVar12 < param_11) {\n      __gmpn_mul(param_5,iVar5,param_11,param_3,iVar12);\n    }\n    else {\n      __gmpn_mul(param_5,param_3,iVar12,iVar5,param_11);\n    }\n  }" if (parenthesized_expression "(local_60 == 0)" ( (binary_expression "local_60 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar7 = (*(code *)*local_80)(iVar5,iVar5,param_8,param_11);\n    *piVar2 = iVar7;\n    if (iVar7 == 0) goto LAB_00057a50;\n    if (param_11 < param_6) {\n      __gmpn_mul(param_5,param_3,param_6,iVar5,iVar1);\n    }\n    else {\n      __gmpn_mul(param_5,iVar5,iVar1,param_3,param_6);\n    }\n    if (*(int *)(param_3 + local_34) != 0) {\n      (*(code *)*local_80)(local_34 + param_5,local_34 + param_5,iVar5,iVar1);\n    }\n  }" { (expression_statement "iVar7 = (*(code *)*local_80)(iVar5,iVar5,param_8,param_11);" (assignment_expression "iVar7 = (*(code *)*local_80)(iVar5,iVar5,param_8,param_11)" identifier = (call_expression "(*(code *)*local_80)(iVar5,iVar5,param_8,param_11)" (parenthesized_expression "(*(code *)*local_80)" ( (pointer_expression "*(code *)*local_80" * (cast_expression "(code *)*local_80" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_80" * identifier))) )) (argument_list "(iVar5,iVar5,param_8,param_11)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "*piVar2 = iVar7;" (assignment_expression "*piVar2 = iVar7" (pointer_expression "*piVar2" * identifier) = identifier) ;) (if_statement "if (iVar7 == 0) goto LAB_00057a50;" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00057a50;" goto statement_identifier ;)) (if_statement "if (param_11 < param_6) {\n      __gmpn_mul(param_5,param_3,param_6,iVar5,iVar1);\n    }\n    else {\n      __gmpn_mul(param_5,iVar5,iVar1,param_3,param_6);\n    }" if (parenthesized_expression "(param_11 < param_6)" ( (binary_expression "param_11 < param_6" identifier < identifier) )) (compound_statement "{\n      __gmpn_mul(param_5,param_3,param_6,iVar5,iVar1);\n    }" { (expression_statement "__gmpn_mul(param_5,param_3,param_6,iVar5,iVar1);" (call_expression "__gmpn_mul(param_5,param_3,param_6,iVar5,iVar1)" identifier (argument_list "(param_5,param_3,param_6,iVar5,iVar1)" ( identifier , identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n      __gmpn_mul(param_5,iVar5,iVar1,param_3,param_6);\n    }" else (compound_statement "{\n      __gmpn_mul(param_5,iVar5,iVar1,param_3,param_6);\n    }" { (expression_statement "__gmpn_mul(param_5,iVar5,iVar1,param_3,param_6);" (call_expression "__gmpn_mul(param_5,iVar5,iVar1,param_3,param_6)" identifier (argument_list "(param_5,iVar5,iVar1,param_3,param_6)" ( identifier , identifier , identifier , identifier , identifier ))) ;) }))) (if_statement "if (*(int *)(param_3 + local_34) != 0) {\n      (*(code *)*local_80)(local_34 + param_5,local_34 + param_5,iVar5,iVar1);\n    }" if (parenthesized_expression "(*(int *)(param_3 + local_34) != 0)" ( (binary_expression "*(int *)(param_3 + local_34) != 0" (pointer_expression "*(int *)(param_3 + local_34)" * (cast_expression "(int *)(param_3 + local_34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + local_34)" ( (binary_expression "param_3 + local_34" identifier + identifier) )))) != number_literal) )) (compound_statement "{\n      (*(code *)*local_80)(local_34 + param_5,local_34 + param_5,iVar5,iVar1);\n    }" { (expression_statement "(*(code *)*local_80)(local_34 + param_5,local_34 + param_5,iVar5,iVar1);" (call_expression "(*(code *)*local_80)(local_34 + param_5,local_34 + param_5,iVar5,iVar1)" (parenthesized_expression "(*(code *)*local_80)" ( (pointer_expression "*(code *)*local_80" * (cast_expression "(code *)*local_80" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_80" * identifier))) )) (argument_list "(local_34 + param_5,local_34 + param_5,iVar5,iVar1)" ( (binary_expression "local_34 + param_5" identifier + identifier) , (binary_expression "local_34 + param_5" identifier + identifier) , identifier , identifier ))) ;) })) }) (else_clause "else {\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057a2e;\n      }\n      uVar3 = *(uint *)(iVar5 + iVar7 * 4);\n      uVar4 = *(uint *)(param_8 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_00057a2e:\n      (*pcVar13)(iVar5,param_8,iVar5,param_11);\n      local_60 = 0;\n    }\n    else {\n      (*pcVar13)(iVar5,iVar5,param_8,param_11);\n    }\n    *piVar2 = 0;\nLAB_00057a50:\n    if (iVar12 < param_11) {\n      __gmpn_mul(param_5,iVar5,param_11,param_3,iVar12);\n    }\n    else {\n      __gmpn_mul(param_5,param_3,iVar12,iVar5,param_11);\n    }\n  }" else (compound_statement "{\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057a2e;\n      }\n      uVar3 = *(uint *)(iVar5 + iVar7 * 4);\n      uVar4 = *(uint *)(param_8 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_00057a2e:\n      (*pcVar13)(iVar5,param_8,iVar5,param_11);\n      local_60 = 0;\n    }\n    else {\n      (*pcVar13)(iVar5,iVar5,param_8,param_11);\n    }\n    *piVar2 = 0;\nLAB_00057a50:\n    if (iVar12 < param_11) {\n      __gmpn_mul(param_5,iVar5,param_11,param_3,iVar12);\n    }\n    else {\n      __gmpn_mul(param_5,param_3,iVar12,iVar5,param_11);\n    }\n  }" { (do_statement "do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057a2e;\n      }\n      uVar3 = *(uint *)(iVar5 + iVar7 * 4);\n      uVar4 = *(uint *)(param_8 + iVar7 * 4);\n    } while (uVar4 == uVar3);" do (compound_statement "{\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057a2e;\n      }\n      uVar3 = *(uint *)(iVar5 + iVar7 * 4);\n      uVar4 = *(uint *)(param_8 + iVar7 * 4);\n    }" { (expression_statement "iVar7 = iVar7 + -1;" (assignment_expression "iVar7 = iVar7 + -1" identifier = (binary_expression "iVar7 + -1" identifier + number_literal)) ;) (if_statement "if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057a2e;\n      }" if (parenthesized_expression "(iVar7 < 0)" ( (binary_expression "iVar7 < 0" identifier < number_literal) )) (compound_statement "{\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057a2e;\n      }" { (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" identifier = (cast_expression "(code *)local_80[0x22]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0x22]" identifier [ number_literal ]))) ;) (goto_statement "goto LAB_00057a2e;" goto statement_identifier ;) })) (expression_statement "uVar3 = *(uint *)(iVar5 + iVar7 * 4);" (assignment_expression "uVar3 = *(uint *)(iVar5 + iVar7 * 4)" identifier = (pointer_expression "*(uint *)(iVar5 + iVar7 * 4)" * (cast_expression "(uint *)(iVar5 + iVar7 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + iVar7 * 4)" ( (binary_expression "iVar5 + iVar7 * 4" identifier + (binary_expression "iVar7 * 4" identifier * number_literal)) ))))) ;) (expression_statement "uVar4 = *(uint *)(param_8 + iVar7 * 4);" (assignment_expression "uVar4 = *(uint *)(param_8 + iVar7 * 4)" identifier = (pointer_expression "*(uint *)(param_8 + iVar7 * 4)" * (cast_expression "(uint *)(param_8 + iVar7 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_8 + iVar7 * 4)" ( (binary_expression "param_8 + iVar7 * 4" identifier + (binary_expression "iVar7 * 4" identifier * number_literal)) ))))) ;) }) while (parenthesized_expression "(uVar4 == uVar3)" ( (binary_expression "uVar4 == uVar3" identifier == identifier) )) ;) (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" identifier = (cast_expression "(code *)local_80[0x22]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0x22]" identifier [ number_literal ]))) ;) (if_statement "if (uVar3 < uVar4) {\nLAB_00057a2e:\n      (*pcVar13)(iVar5,param_8,iVar5,param_11);\n      local_60 = 0;\n    }\n    else {\n      (*pcVar13)(iVar5,iVar5,param_8,param_11);\n    }" if (parenthesized_expression "(uVar3 < uVar4)" ( (binary_expression "uVar3 < uVar4" identifier < identifier) )) (compound_statement "{\nLAB_00057a2e:\n      (*pcVar13)(iVar5,param_8,iVar5,param_11);\n      local_60 = 0;\n    }" { (labeled_statement "LAB_00057a2e:\n      (*pcVar13)(iVar5,param_8,iVar5,param_11);" statement_identifier : (expression_statement "(*pcVar13)(iVar5,param_8,iVar5,param_11);" (call_expression "(*pcVar13)(iVar5,param_8,iVar5,param_11)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(iVar5,param_8,iVar5,param_11)" ( identifier , identifier , identifier , identifier ))) ;)) (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      (*pcVar13)(iVar5,iVar5,param_8,param_11);\n    }" else (compound_statement "{\n      (*pcVar13)(iVar5,iVar5,param_8,param_11);\n    }" { (expression_statement "(*pcVar13)(iVar5,iVar5,param_8,param_11);" (call_expression "(*pcVar13)(iVar5,iVar5,param_8,param_11)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(iVar5,iVar5,param_8,param_11)" ( identifier , identifier , identifier , identifier ))) ;) }))) (expression_statement "*piVar2 = 0;" (assignment_expression "*piVar2 = 0" (pointer_expression "*piVar2" * identifier) = number_literal) ;) (labeled_statement "LAB_00057a50:\n    if (iVar12 < param_11) {\n      __gmpn_mul(param_5,iVar5,param_11,param_3,iVar12);\n    }\n    else {\n      __gmpn_mul(param_5,param_3,iVar12,iVar5,param_11);\n    }" statement_identifier : (if_statement "if (iVar12 < param_11) {\n      __gmpn_mul(param_5,iVar5,param_11,param_3,iVar12);\n    }\n    else {\n      __gmpn_mul(param_5,param_3,iVar12,iVar5,param_11);\n    }" if (parenthesized_expression "(iVar12 < param_11)" ( (binary_expression "iVar12 < param_11" identifier < identifier) )) (compound_statement "{\n      __gmpn_mul(param_5,iVar5,param_11,param_3,iVar12);\n    }" { (expression_statement "__gmpn_mul(param_5,iVar5,param_11,param_3,iVar12);" (call_expression "__gmpn_mul(param_5,iVar5,param_11,param_3,iVar12)" identifier (argument_list "(param_5,iVar5,param_11,param_3,iVar12)" ( identifier , identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n      __gmpn_mul(param_5,param_3,iVar12,iVar5,param_11);\n    }" else (compound_statement "{\n      __gmpn_mul(param_5,param_3,iVar12,iVar5,param_11);\n    }" { (expression_statement "__gmpn_mul(param_5,param_3,iVar12,iVar5,param_11);" (call_expression "__gmpn_mul(param_5,param_3,iVar12,iVar5,param_11)" identifier (argument_list "(param_5,param_3,iVar12,iVar5,param_11)" ( identifier , identifier , identifier , identifier , identifier ))) ;) })))) }))) (expression_statement "*(undefined4 *)(iVar6 + -4 + iVar10) = 0;" (assignment_expression "*(undefined4 *)(iVar6 + -4 + iVar10) = 0" (pointer_expression "*(undefined4 *)(iVar6 + -4 + iVar10)" * (cast_expression "(undefined4 *)(iVar6 + -4 + iVar10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + -4 + iVar10)" ( (binary_expression "iVar6 + -4 + iVar10" (binary_expression "iVar6 + -4" identifier + number_literal) + identifier) )))) = number_literal) ;) (expression_statement "iVar10 = iVar11;" (assignment_expression "iVar10 = iVar11" identifier = identifier) ;) (if_statement "if (local_40 == local_60) {\n    (*(code *)*local_80)(param_5,param_5,iVar6,iVar11);\n    local_64 = 0;\n    if (local_60 == 0) goto LAB_000578c7;\nLAB_000575ee:\n    iVar11 = (*(code *)*local_80)(iVar5,iVar5,param_7,param_11);\n    *piVar2 = iVar11;\nLAB_00057608:\n    if (param_6 <= param_11) goto LAB_000578fc;\nLAB_00057610:\n    __gmpn_mul(iVar6,param_4,param_6,iVar5,iVar1);\n    if (local_40 != 0) goto LAB_00057638;\nLAB_00057924:\n    iVar11 = (*(code *)*local_80)(param_3,param_3,param_4,param_6);\n    *local_3c = *local_3c + iVar11;\n  }\n  else {\n    do {\n      iVar10 = iVar10 + -1;\n      if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000575cb;\n      }\n      uVar3 = *(uint *)(param_5 + iVar10 * 4);\n      uVar4 = *(uint *)(iVar6 + iVar10 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_000575cb:\n      (*pcVar13)(param_5,iVar6,param_5,iVar11);\n      local_64 = 0;\n    }\n    else {\n      (*pcVar13)(param_5,param_5,iVar6,iVar11);\n      local_64 = 1;\n    }\n    if (local_60 != 0) goto LAB_000575ee;\nLAB_000578c7:\n    pcVar13 = (code *)local_80[0x22];\n    iVar11 = param_11;\n    if (*piVar2 == 0) {\n      do {\n        iVar11 = iVar11 + -1;\n        if (iVar11 < 0) goto LAB_00057cd1;\n        uVar3 = *(uint *)(param_7 + iVar11 * 4);\n        uVar4 = *(uint *)(iVar5 + iVar11 * 4);\n      } while (uVar4 == uVar3);\n      if (uVar3 < uVar4) {\nLAB_00057cd1:\n        (*pcVar13)(iVar5,iVar5,param_7,param_11);\n      }\n      else {\n        (*pcVar13)(iVar5,param_7,iVar5,param_11);\n        local_60 = 1;\n      }\n      goto LAB_00057608;\n    }\n    iVar11 = (*pcVar13)(iVar5,iVar5,param_7,param_11);\n    *piVar2 = *piVar2 - iVar11;\n    if (param_11 < param_6) goto LAB_00057610;\nLAB_000578fc:\n    __gmpn_mul(iVar6,iVar5,iVar1,param_4,param_6);\n    if (local_40 == 0) goto LAB_00057924;\nLAB_00057638:\n    (*(code *)local_80[0x22])(param_3,param_4,param_3,param_6);\n  }" if (parenthesized_expression "(local_40 == local_60)" ( (binary_expression "local_40 == local_60" identifier == identifier) )) (compound_statement "{\n    (*(code *)*local_80)(param_5,param_5,iVar6,iVar11);\n    local_64 = 0;\n    if (local_60 == 0) goto LAB_000578c7;\nLAB_000575ee:\n    iVar11 = (*(code *)*local_80)(iVar5,iVar5,param_7,param_11);\n    *piVar2 = iVar11;\nLAB_00057608:\n    if (param_6 <= param_11) goto LAB_000578fc;\nLAB_00057610:\n    __gmpn_mul(iVar6,param_4,param_6,iVar5,iVar1);\n    if (local_40 != 0) goto LAB_00057638;\nLAB_00057924:\n    iVar11 = (*(code *)*local_80)(param_3,param_3,param_4,param_6);\n    *local_3c = *local_3c + iVar11;\n  }" { (expression_statement "(*(code *)*local_80)(param_5,param_5,iVar6,iVar11);" (call_expression "(*(code *)*local_80)(param_5,param_5,iVar6,iVar11)" (parenthesized_expression "(*(code *)*local_80)" ( (pointer_expression "*(code *)*local_80" * (cast_expression "(code *)*local_80" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_80" * identifier))) )) (argument_list "(param_5,param_5,iVar6,iVar11)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" identifier = number_literal) ;) (if_statement "if (local_60 == 0) goto LAB_000578c7;" if (parenthesized_expression "(local_60 == 0)" ( (binary_expression "local_60 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000578c7;" goto statement_identifier ;)) (labeled_statement "LAB_000575ee:\n    iVar11 = (*(code *)*local_80)(iVar5,iVar5,param_7,param_11);" statement_identifier : (expression_statement "iVar11 = (*(code *)*local_80)(iVar5,iVar5,param_7,param_11);" (assignment_expression "iVar11 = (*(code *)*local_80)(iVar5,iVar5,param_7,param_11)" identifier = (call_expression "(*(code *)*local_80)(iVar5,iVar5,param_7,param_11)" (parenthesized_expression "(*(code *)*local_80)" ( (pointer_expression "*(code *)*local_80" * (cast_expression "(code *)*local_80" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_80" * identifier))) )) (argument_list "(iVar5,iVar5,param_7,param_11)" ( identifier , identifier , identifier , identifier )))) ;)) (expression_statement "*piVar2 = iVar11;" (assignment_expression "*piVar2 = iVar11" (pointer_expression "*piVar2" * identifier) = identifier) ;) (labeled_statement "LAB_00057608:\n    if (param_6 <= param_11) goto LAB_000578fc;" statement_identifier : (if_statement "if (param_6 <= param_11) goto LAB_000578fc;" if (parenthesized_expression "(param_6 <= param_11)" ( (binary_expression "param_6 <= param_11" identifier <= identifier) )) (goto_statement "goto LAB_000578fc;" goto statement_identifier ;))) (labeled_statement "LAB_00057610:\n    __gmpn_mul(iVar6,param_4,param_6,iVar5,iVar1);" statement_identifier : (expression_statement "__gmpn_mul(iVar6,param_4,param_6,iVar5,iVar1);" (call_expression "__gmpn_mul(iVar6,param_4,param_6,iVar5,iVar1)" identifier (argument_list "(iVar6,param_4,param_6,iVar5,iVar1)" ( identifier , identifier , identifier , identifier , identifier ))) ;)) (if_statement "if (local_40 != 0) goto LAB_00057638;" if (parenthesized_expression "(local_40 != 0)" ( (binary_expression "local_40 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00057638;" goto statement_identifier ;)) (labeled_statement "LAB_00057924:\n    iVar11 = (*(code *)*local_80)(param_3,param_3,param_4,param_6);" statement_identifier : (expression_statement "iVar11 = (*(code *)*local_80)(param_3,param_3,param_4,param_6);" (assignment_expression "iVar11 = (*(code *)*local_80)(param_3,param_3,param_4,param_6)" identifier = (call_expression "(*(code *)*local_80)(param_3,param_3,param_4,param_6)" (parenthesized_expression "(*(code *)*local_80)" ( (pointer_expression "*(code *)*local_80" * (cast_expression "(code *)*local_80" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_80" * identifier))) )) (argument_list "(param_3,param_3,param_4,param_6)" ( identifier , identifier , identifier , identifier )))) ;)) (expression_statement "*local_3c = *local_3c + iVar11;" (assignment_expression "*local_3c = *local_3c + iVar11" (pointer_expression "*local_3c" * identifier) = (binary_expression "*local_3c + iVar11" (pointer_expression "*local_3c" * identifier) + identifier)) ;) }) (else_clause "else {\n    do {\n      iVar10 = iVar10 + -1;\n      if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000575cb;\n      }\n      uVar3 = *(uint *)(param_5 + iVar10 * 4);\n      uVar4 = *(uint *)(iVar6 + iVar10 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_000575cb:\n      (*pcVar13)(param_5,iVar6,param_5,iVar11);\n      local_64 = 0;\n    }\n    else {\n      (*pcVar13)(param_5,param_5,iVar6,iVar11);\n      local_64 = 1;\n    }\n    if (local_60 != 0) goto LAB_000575ee;\nLAB_000578c7:\n    pcVar13 = (code *)local_80[0x22];\n    iVar11 = param_11;\n    if (*piVar2 == 0) {\n      do {\n        iVar11 = iVar11 + -1;\n        if (iVar11 < 0) goto LAB_00057cd1;\n        uVar3 = *(uint *)(param_7 + iVar11 * 4);\n        uVar4 = *(uint *)(iVar5 + iVar11 * 4);\n      } while (uVar4 == uVar3);\n      if (uVar3 < uVar4) {\nLAB_00057cd1:\n        (*pcVar13)(iVar5,iVar5,param_7,param_11);\n      }\n      else {\n        (*pcVar13)(iVar5,param_7,iVar5,param_11);\n        local_60 = 1;\n      }\n      goto LAB_00057608;\n    }\n    iVar11 = (*pcVar13)(iVar5,iVar5,param_7,param_11);\n    *piVar2 = *piVar2 - iVar11;\n    if (param_11 < param_6) goto LAB_00057610;\nLAB_000578fc:\n    __gmpn_mul(iVar6,iVar5,iVar1,param_4,param_6);\n    if (local_40 == 0) goto LAB_00057924;\nLAB_00057638:\n    (*(code *)local_80[0x22])(param_3,param_4,param_3,param_6);\n  }" else (compound_statement "{\n    do {\n      iVar10 = iVar10 + -1;\n      if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000575cb;\n      }\n      uVar3 = *(uint *)(param_5 + iVar10 * 4);\n      uVar4 = *(uint *)(iVar6 + iVar10 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_000575cb:\n      (*pcVar13)(param_5,iVar6,param_5,iVar11);\n      local_64 = 0;\n    }\n    else {\n      (*pcVar13)(param_5,param_5,iVar6,iVar11);\n      local_64 = 1;\n    }\n    if (local_60 != 0) goto LAB_000575ee;\nLAB_000578c7:\n    pcVar13 = (code *)local_80[0x22];\n    iVar11 = param_11;\n    if (*piVar2 == 0) {\n      do {\n        iVar11 = iVar11 + -1;\n        if (iVar11 < 0) goto LAB_00057cd1;\n        uVar3 = *(uint *)(param_7 + iVar11 * 4);\n        uVar4 = *(uint *)(iVar5 + iVar11 * 4);\n      } while (uVar4 == uVar3);\n      if (uVar3 < uVar4) {\nLAB_00057cd1:\n        (*pcVar13)(iVar5,iVar5,param_7,param_11);\n      }\n      else {\n        (*pcVar13)(iVar5,param_7,iVar5,param_11);\n        local_60 = 1;\n      }\n      goto LAB_00057608;\n    }\n    iVar11 = (*pcVar13)(iVar5,iVar5,param_7,param_11);\n    *piVar2 = *piVar2 - iVar11;\n    if (param_11 < param_6) goto LAB_00057610;\nLAB_000578fc:\n    __gmpn_mul(iVar6,iVar5,iVar1,param_4,param_6);\n    if (local_40 == 0) goto LAB_00057924;\nLAB_00057638:\n    (*(code *)local_80[0x22])(param_3,param_4,param_3,param_6);\n  }" { (do_statement "do {\n      iVar10 = iVar10 + -1;\n      if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000575cb;\n      }\n      uVar3 = *(uint *)(param_5 + iVar10 * 4);\n      uVar4 = *(uint *)(iVar6 + iVar10 * 4);\n    } while (uVar4 == uVar3);" do (compound_statement "{\n      iVar10 = iVar10 + -1;\n      if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000575cb;\n      }\n      uVar3 = *(uint *)(param_5 + iVar10 * 4);\n      uVar4 = *(uint *)(iVar6 + iVar10 * 4);\n    }" { (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (if_statement "if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000575cb;\n      }" if (parenthesized_expression "(iVar10 < 0)" ( (binary_expression "iVar10 < 0" identifier < number_literal) )) (compound_statement "{\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000575cb;\n      }" { (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" identifier = (cast_expression "(code *)local_80[0x22]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0x22]" identifier [ number_literal ]))) ;) (goto_statement "goto LAB_000575cb;" goto statement_identifier ;) })) (expression_statement "uVar3 = *(uint *)(param_5 + iVar10 * 4);" (assignment_expression "uVar3 = *(uint *)(param_5 + iVar10 * 4)" identifier = (pointer_expression "*(uint *)(param_5 + iVar10 * 4)" * (cast_expression "(uint *)(param_5 + iVar10 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + iVar10 * 4)" ( (binary_expression "param_5 + iVar10 * 4" identifier + (binary_expression "iVar10 * 4" identifier * number_literal)) ))))) ;) (expression_statement "uVar4 = *(uint *)(iVar6 + iVar10 * 4);" (assignment_expression "uVar4 = *(uint *)(iVar6 + iVar10 * 4)" identifier = (pointer_expression "*(uint *)(iVar6 + iVar10 * 4)" * (cast_expression "(uint *)(iVar6 + iVar10 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + iVar10 * 4)" ( (binary_expression "iVar6 + iVar10 * 4" identifier + (binary_expression "iVar10 * 4" identifier * number_literal)) ))))) ;) }) while (parenthesized_expression "(uVar4 == uVar3)" ( (binary_expression "uVar4 == uVar3" identifier == identifier) )) ;) (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" identifier = (cast_expression "(code *)local_80[0x22]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0x22]" identifier [ number_literal ]))) ;) (if_statement "if (uVar3 < uVar4) {\nLAB_000575cb:\n      (*pcVar13)(param_5,iVar6,param_5,iVar11);\n      local_64 = 0;\n    }\n    else {\n      (*pcVar13)(param_5,param_5,iVar6,iVar11);\n      local_64 = 1;\n    }" if (parenthesized_expression "(uVar3 < uVar4)" ( (binary_expression "uVar3 < uVar4" identifier < identifier) )) (compound_statement "{\nLAB_000575cb:\n      (*pcVar13)(param_5,iVar6,param_5,iVar11);\n      local_64 = 0;\n    }" { (labeled_statement "LAB_000575cb:\n      (*pcVar13)(param_5,iVar6,param_5,iVar11);" statement_identifier : (expression_statement "(*pcVar13)(param_5,iVar6,param_5,iVar11);" (call_expression "(*pcVar13)(param_5,iVar6,param_5,iVar11)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(param_5,iVar6,param_5,iVar11)" ( identifier , identifier , identifier , identifier ))) ;)) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      (*pcVar13)(param_5,param_5,iVar6,iVar11);\n      local_64 = 1;\n    }" else (compound_statement "{\n      (*pcVar13)(param_5,param_5,iVar6,iVar11);\n      local_64 = 1;\n    }" { (expression_statement "(*pcVar13)(param_5,param_5,iVar6,iVar11);" (call_expression "(*pcVar13)(param_5,param_5,iVar6,iVar11)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(param_5,param_5,iVar6,iVar11)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "local_64 = 1;" (assignment_expression "local_64 = 1" identifier = number_literal) ;) }))) (if_statement "if (local_60 != 0) goto LAB_000575ee;" if (parenthesized_expression "(local_60 != 0)" ( (binary_expression "local_60 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000575ee;" goto statement_identifier ;)) (labeled_statement "LAB_000578c7:\n    pcVar13 = (code *)local_80[0x22];" statement_identifier : (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" identifier = (cast_expression "(code *)local_80[0x22]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0x22]" identifier [ number_literal ]))) ;)) (expression_statement "iVar11 = param_11;" (assignment_expression "iVar11 = param_11" identifier = identifier) ;) (if_statement "if (*piVar2 == 0) {\n      do {\n        iVar11 = iVar11 + -1;\n        if (iVar11 < 0) goto LAB_00057cd1;\n        uVar3 = *(uint *)(param_7 + iVar11 * 4);\n        uVar4 = *(uint *)(iVar5 + iVar11 * 4);\n      } while (uVar4 == uVar3);\n      if (uVar3 < uVar4) {\nLAB_00057cd1:\n        (*pcVar13)(iVar5,iVar5,param_7,param_11);\n      }\n      else {\n        (*pcVar13)(iVar5,param_7,iVar5,param_11);\n        local_60 = 1;\n      }\n      goto LAB_00057608;\n    }" if (parenthesized_expression "(*piVar2 == 0)" ( (binary_expression "*piVar2 == 0" (pointer_expression "*piVar2" * identifier) == number_literal) )) (compound_statement "{\n      do {\n        iVar11 = iVar11 + -1;\n        if (iVar11 < 0) goto LAB_00057cd1;\n        uVar3 = *(uint *)(param_7 + iVar11 * 4);\n        uVar4 = *(uint *)(iVar5 + iVar11 * 4);\n      } while (uVar4 == uVar3);\n      if (uVar3 < uVar4) {\nLAB_00057cd1:\n        (*pcVar13)(iVar5,iVar5,param_7,param_11);\n      }\n      else {\n        (*pcVar13)(iVar5,param_7,iVar5,param_11);\n        local_60 = 1;\n      }\n      goto LAB_00057608;\n    }" { (do_statement "do {\n        iVar11 = iVar11 + -1;\n        if (iVar11 < 0) goto LAB_00057cd1;\n        uVar3 = *(uint *)(param_7 + iVar11 * 4);\n        uVar4 = *(uint *)(iVar5 + iVar11 * 4);\n      } while (uVar4 == uVar3);" do (compound_statement "{\n        iVar11 = iVar11 + -1;\n        if (iVar11 < 0) goto LAB_00057cd1;\n        uVar3 = *(uint *)(param_7 + iVar11 * 4);\n        uVar4 = *(uint *)(iVar5 + iVar11 * 4);\n      }" { (expression_statement "iVar11 = iVar11 + -1;" (assignment_expression "iVar11 = iVar11 + -1" identifier = (binary_expression "iVar11 + -1" identifier + number_literal)) ;) (if_statement "if (iVar11 < 0) goto LAB_00057cd1;" if (parenthesized_expression "(iVar11 < 0)" ( (binary_expression "iVar11 < 0" identifier < number_literal) )) (goto_statement "goto LAB_00057cd1;" goto statement_identifier ;)) (expression_statement "uVar3 = *(uint *)(param_7 + iVar11 * 4);" (assignment_expression "uVar3 = *(uint *)(param_7 + iVar11 * 4)" identifier = (pointer_expression "*(uint *)(param_7 + iVar11 * 4)" * (cast_expression "(uint *)(param_7 + iVar11 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + iVar11 * 4)" ( (binary_expression "param_7 + iVar11 * 4" identifier + (binary_expression "iVar11 * 4" identifier * number_literal)) ))))) ;) (expression_statement "uVar4 = *(uint *)(iVar5 + iVar11 * 4);" (assignment_expression "uVar4 = *(uint *)(iVar5 + iVar11 * 4)" identifier = (pointer_expression "*(uint *)(iVar5 + iVar11 * 4)" * (cast_expression "(uint *)(iVar5 + iVar11 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + iVar11 * 4)" ( (binary_expression "iVar5 + iVar11 * 4" identifier + (binary_expression "iVar11 * 4" identifier * number_literal)) ))))) ;) }) while (parenthesized_expression "(uVar4 == uVar3)" ( (binary_expression "uVar4 == uVar3" identifier == identifier) )) ;) (if_statement "if (uVar3 < uVar4) {\nLAB_00057cd1:\n        (*pcVar13)(iVar5,iVar5,param_7,param_11);\n      }\n      else {\n        (*pcVar13)(iVar5,param_7,iVar5,param_11);\n        local_60 = 1;\n      }" if (parenthesized_expression "(uVar3 < uVar4)" ( (binary_expression "uVar3 < uVar4" identifier < identifier) )) (compound_statement "{\nLAB_00057cd1:\n        (*pcVar13)(iVar5,iVar5,param_7,param_11);\n      }" { (labeled_statement "LAB_00057cd1:\n        (*pcVar13)(iVar5,iVar5,param_7,param_11);" statement_identifier : (expression_statement "(*pcVar13)(iVar5,iVar5,param_7,param_11);" (call_expression "(*pcVar13)(iVar5,iVar5,param_7,param_11)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(iVar5,iVar5,param_7,param_11)" ( identifier , identifier , identifier , identifier ))) ;)) }) (else_clause "else {\n        (*pcVar13)(iVar5,param_7,iVar5,param_11);\n        local_60 = 1;\n      }" else (compound_statement "{\n        (*pcVar13)(iVar5,param_7,iVar5,param_11);\n        local_60 = 1;\n      }" { (expression_statement "(*pcVar13)(iVar5,param_7,iVar5,param_11);" (call_expression "(*pcVar13)(iVar5,param_7,iVar5,param_11)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(iVar5,param_7,iVar5,param_11)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "local_60 = 1;" (assignment_expression "local_60 = 1" identifier = number_literal) ;) }))) (goto_statement "goto LAB_00057608;" goto statement_identifier ;) })) (expression_statement "iVar11 = (*pcVar13)(iVar5,iVar5,param_7,param_11);" (assignment_expression "iVar11 = (*pcVar13)(iVar5,iVar5,param_7,param_11)" identifier = (call_expression "(*pcVar13)(iVar5,iVar5,param_7,param_11)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(iVar5,iVar5,param_7,param_11)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "*piVar2 = *piVar2 - iVar11;" (assignment_expression "*piVar2 = *piVar2 - iVar11" (pointer_expression "*piVar2" * identifier) = (binary_expression "*piVar2 - iVar11" (pointer_expression "*piVar2" * identifier) - identifier)) ;) (if_statement "if (param_11 < param_6) goto LAB_00057610;" if (parenthesized_expression "(param_11 < param_6)" ( (binary_expression "param_11 < param_6" identifier < identifier) )) (goto_statement "goto LAB_00057610;" goto statement_identifier ;)) (labeled_statement "LAB_000578fc:\n    __gmpn_mul(iVar6,iVar5,iVar1,param_4,param_6);" statement_identifier : (expression_statement "__gmpn_mul(iVar6,iVar5,iVar1,param_4,param_6);" (call_expression "__gmpn_mul(iVar6,iVar5,iVar1,param_4,param_6)" identifier (argument_list "(iVar6,iVar5,iVar1,param_4,param_6)" ( identifier , identifier , identifier , identifier , identifier ))) ;)) (if_statement "if (local_40 == 0) goto LAB_00057924;" if (parenthesized_expression "(local_40 == 0)" ( (binary_expression "local_40 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00057924;" goto statement_identifier ;)) (labeled_statement "LAB_00057638:\n    (*(code *)local_80[0x22])(param_3,param_4,param_3,param_6);" statement_identifier : (expression_statement "(*(code *)local_80[0x22])(param_3,param_4,param_3,param_6);" (call_expression "(*(code *)local_80[0x22])(param_3,param_4,param_3,param_6)" (parenthesized_expression "(*(code *)local_80[0x22])" ( (pointer_expression "*(code *)local_80[0x22]" * (cast_expression "(code *)local_80[0x22]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0x22]" identifier [ number_literal ]))) )) (argument_list "(param_3,param_4,param_3,param_6)" ( identifier , identifier , identifier , identifier ))) ;)) }))) (expression_statement "iVar11 = param_11 + iVar12;" (assignment_expression "iVar11 = param_11 + iVar12" identifier = (binary_expression "param_11 + iVar12" identifier + identifier)) ;) (expression_statement "iVar7 = iVar11;" (assignment_expression "iVar7 = iVar11" identifier = identifier) ;) (expression_statement "iVar10 = iVar11;" (assignment_expression "iVar10 = iVar11" identifier = identifier) ;) (if_statement "if (local_64 == local_60) {\n    (*(code *)*local_80)(param_4,param_5,iVar6,iVar11);\n    local_60 = local_64;\n    if (local_64 == local_30) goto LAB_00057971;\nLAB_000576cd:\n    do {\n      iVar10 = iVar10 + -1;\n      if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000576db;\n      }\n      uVar3 = *(uint *)(iVar14 + iVar10 * 4);\n      uVar4 = *(uint *)(param_5 + iVar10 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_000576db:\n      (*pcVar13)(param_5,param_5,iVar14,iVar11);\n    }\n    else {\n      (*pcVar13)(param_5,iVar14,param_5,iVar11);\n      local_64 = local_64 ^ 1;\n    }\n    if (param_11 <= iVar12) goto LAB_000576f3;\nLAB_0005798d:\n    __gmpn_mul(iVar6,param_8,param_11,param_12,iVar12);\n    iVar10 = (*(code *)*local_80)(iVar5,param_10,param_8,param_11);\n    *piVar2 = iVar10;\n  }\n  else {\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005768b;\n      }\n      uVar3 = *(uint *)(iVar6 + iVar7 * 4);\n      uVar4 = *(uint *)(param_5 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_0005768b:\n      (*pcVar13)(param_4,param_5,iVar6,iVar11);\n      local_60 = local_64;\n    }\n    else {\n      (*pcVar13)(param_4,iVar6,param_5,iVar11);\n      local_60 = local_64 ^ 1;\n    }\n    if (local_64 != local_30) goto LAB_000576cd;\nLAB_00057971:\n    (*(code *)*local_80)(param_5,param_5,iVar14,iVar11);\n    if (iVar12 < param_11) goto LAB_0005798d;\nLAB_000576f3:\n    __gmpn_mul(iVar6,param_12,iVar12,param_8,param_11);\n    iVar10 = (*(code *)*local_80)(iVar5,param_10,param_8,param_11);\n    *piVar2 = iVar10;\n    if (param_11 < iVar12) {\n      __gmpn_mul(iVar14,param_3,iVar12,iVar5,iVar1);\n      goto LAB_00057755;\n    }\n  }" if (parenthesized_expression "(local_64 == local_60)" ( (binary_expression "local_64 == local_60" identifier == identifier) )) (compound_statement "{\n    (*(code *)*local_80)(param_4,param_5,iVar6,iVar11);\n    local_60 = local_64;\n    if (local_64 == local_30) goto LAB_00057971;\nLAB_000576cd:\n    do {\n      iVar10 = iVar10 + -1;\n      if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000576db;\n      }\n      uVar3 = *(uint *)(iVar14 + iVar10 * 4);\n      uVar4 = *(uint *)(param_5 + iVar10 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_000576db:\n      (*pcVar13)(param_5,param_5,iVar14,iVar11);\n    }\n    else {\n      (*pcVar13)(param_5,iVar14,param_5,iVar11);\n      local_64 = local_64 ^ 1;\n    }\n    if (param_11 <= iVar12) goto LAB_000576f3;\nLAB_0005798d:\n    __gmpn_mul(iVar6,param_8,param_11,param_12,iVar12);\n    iVar10 = (*(code *)*local_80)(iVar5,param_10,param_8,param_11);\n    *piVar2 = iVar10;\n  }" { (expression_statement "(*(code *)*local_80)(param_4,param_5,iVar6,iVar11);" (call_expression "(*(code *)*local_80)(param_4,param_5,iVar6,iVar11)" (parenthesized_expression "(*(code *)*local_80)" ( (pointer_expression "*(code *)*local_80" * (cast_expression "(code *)*local_80" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_80" * identifier))) )) (argument_list "(param_4,param_5,iVar6,iVar11)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "local_60 = local_64;" (assignment_expression "local_60 = local_64" identifier = identifier) ;) (if_statement "if (local_64 == local_30) goto LAB_00057971;" if (parenthesized_expression "(local_64 == local_30)" ( (binary_expression "local_64 == local_30" identifier == identifier) )) (goto_statement "goto LAB_00057971;" goto statement_identifier ;)) (labeled_statement "LAB_000576cd:\n    do {\n      iVar10 = iVar10 + -1;\n      if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000576db;\n      }\n      uVar3 = *(uint *)(iVar14 + iVar10 * 4);\n      uVar4 = *(uint *)(param_5 + iVar10 * 4);\n    } while (uVar4 == uVar3);" statement_identifier : (do_statement "do {\n      iVar10 = iVar10 + -1;\n      if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000576db;\n      }\n      uVar3 = *(uint *)(iVar14 + iVar10 * 4);\n      uVar4 = *(uint *)(param_5 + iVar10 * 4);\n    } while (uVar4 == uVar3);" do (compound_statement "{\n      iVar10 = iVar10 + -1;\n      if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000576db;\n      }\n      uVar3 = *(uint *)(iVar14 + iVar10 * 4);\n      uVar4 = *(uint *)(param_5 + iVar10 * 4);\n    }" { (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (if_statement "if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000576db;\n      }" if (parenthesized_expression "(iVar10 < 0)" ( (binary_expression "iVar10 < 0" identifier < number_literal) )) (compound_statement "{\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000576db;\n      }" { (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" identifier = (cast_expression "(code *)local_80[0x22]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0x22]" identifier [ number_literal ]))) ;) (goto_statement "goto LAB_000576db;" goto statement_identifier ;) })) (expression_statement "uVar3 = *(uint *)(iVar14 + iVar10 * 4);" (assignment_expression "uVar3 = *(uint *)(iVar14 + iVar10 * 4)" identifier = (pointer_expression "*(uint *)(iVar14 + iVar10 * 4)" * (cast_expression "(uint *)(iVar14 + iVar10 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + iVar10 * 4)" ( (binary_expression "iVar14 + iVar10 * 4" identifier + (binary_expression "iVar10 * 4" identifier * number_literal)) ))))) ;) (expression_statement "uVar4 = *(uint *)(param_5 + iVar10 * 4);" (assignment_expression "uVar4 = *(uint *)(param_5 + iVar10 * 4)" identifier = (pointer_expression "*(uint *)(param_5 + iVar10 * 4)" * (cast_expression "(uint *)(param_5 + iVar10 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + iVar10 * 4)" ( (binary_expression "param_5 + iVar10 * 4" identifier + (binary_expression "iVar10 * 4" identifier * number_literal)) ))))) ;) }) while (parenthesized_expression "(uVar4 == uVar3)" ( (binary_expression "uVar4 == uVar3" identifier == identifier) )) ;)) (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" identifier = (cast_expression "(code *)local_80[0x22]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0x22]" identifier [ number_literal ]))) ;) (if_statement "if (uVar3 < uVar4) {\nLAB_000576db:\n      (*pcVar13)(param_5,param_5,iVar14,iVar11);\n    }\n    else {\n      (*pcVar13)(param_5,iVar14,param_5,iVar11);\n      local_64 = local_64 ^ 1;\n    }" if (parenthesized_expression "(uVar3 < uVar4)" ( (binary_expression "uVar3 < uVar4" identifier < identifier) )) (compound_statement "{\nLAB_000576db:\n      (*pcVar13)(param_5,param_5,iVar14,iVar11);\n    }" { (labeled_statement "LAB_000576db:\n      (*pcVar13)(param_5,param_5,iVar14,iVar11);" statement_identifier : (expression_statement "(*pcVar13)(param_5,param_5,iVar14,iVar11);" (call_expression "(*pcVar13)(param_5,param_5,iVar14,iVar11)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(param_5,param_5,iVar14,iVar11)" ( identifier , identifier , identifier , identifier ))) ;)) }) (else_clause "else {\n      (*pcVar13)(param_5,iVar14,param_5,iVar11);\n      local_64 = local_64 ^ 1;\n    }" else (compound_statement "{\n      (*pcVar13)(param_5,iVar14,param_5,iVar11);\n      local_64 = local_64 ^ 1;\n    }" { (expression_statement "(*pcVar13)(param_5,iVar14,param_5,iVar11);" (call_expression "(*pcVar13)(param_5,iVar14,param_5,iVar11)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(param_5,iVar14,param_5,iVar11)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "local_64 = local_64 ^ 1;" (assignment_expression "local_64 = local_64 ^ 1" identifier = (binary_expression "local_64 ^ 1" identifier ^ number_literal)) ;) }))) (if_statement "if (param_11 <= iVar12) goto LAB_000576f3;" if (parenthesized_expression "(param_11 <= iVar12)" ( (binary_expression "param_11 <= iVar12" identifier <= identifier) )) (goto_statement "goto LAB_000576f3;" goto statement_identifier ;)) (labeled_statement "LAB_0005798d:\n    __gmpn_mul(iVar6,param_8,param_11,param_12,iVar12);" statement_identifier : (expression_statement "__gmpn_mul(iVar6,param_8,param_11,param_12,iVar12);" (call_expression "__gmpn_mul(iVar6,param_8,param_11,param_12,iVar12)" identifier (argument_list "(iVar6,param_8,param_11,param_12,iVar12)" ( identifier , identifier , identifier , identifier , identifier ))) ;)) (expression_statement "iVar10 = (*(code *)*local_80)(iVar5,param_10,param_8,param_11);" (assignment_expression "iVar10 = (*(code *)*local_80)(iVar5,param_10,param_8,param_11)" identifier = (call_expression "(*(code *)*local_80)(iVar5,param_10,param_8,param_11)" (parenthesized_expression "(*(code *)*local_80)" ( (pointer_expression "*(code *)*local_80" * (cast_expression "(code *)*local_80" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_80" * identifier))) )) (argument_list "(iVar5,param_10,param_8,param_11)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "*piVar2 = iVar10;" (assignment_expression "*piVar2 = iVar10" (pointer_expression "*piVar2" * identifier) = identifier) ;) }) (else_clause "else {\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005768b;\n      }\n      uVar3 = *(uint *)(iVar6 + iVar7 * 4);\n      uVar4 = *(uint *)(param_5 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_0005768b:\n      (*pcVar13)(param_4,param_5,iVar6,iVar11);\n      local_60 = local_64;\n    }\n    else {\n      (*pcVar13)(param_4,iVar6,param_5,iVar11);\n      local_60 = local_64 ^ 1;\n    }\n    if (local_64 != local_30) goto LAB_000576cd;\nLAB_00057971:\n    (*(code *)*local_80)(param_5,param_5,iVar14,iVar11);\n    if (iVar12 < param_11) goto LAB_0005798d;\nLAB_000576f3:\n    __gmpn_mul(iVar6,param_12,iVar12,param_8,param_11);\n    iVar10 = (*(code *)*local_80)(iVar5,param_10,param_8,param_11);\n    *piVar2 = iVar10;\n    if (param_11 < iVar12) {\n      __gmpn_mul(iVar14,param_3,iVar12,iVar5,iVar1);\n      goto LAB_00057755;\n    }\n  }" else (compound_statement "{\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005768b;\n      }\n      uVar3 = *(uint *)(iVar6 + iVar7 * 4);\n      uVar4 = *(uint *)(param_5 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_0005768b:\n      (*pcVar13)(param_4,param_5,iVar6,iVar11);\n      local_60 = local_64;\n    }\n    else {\n      (*pcVar13)(param_4,iVar6,param_5,iVar11);\n      local_60 = local_64 ^ 1;\n    }\n    if (local_64 != local_30) goto LAB_000576cd;\nLAB_00057971:\n    (*(code *)*local_80)(param_5,param_5,iVar14,iVar11);\n    if (iVar12 < param_11) goto LAB_0005798d;\nLAB_000576f3:\n    __gmpn_mul(iVar6,param_12,iVar12,param_8,param_11);\n    iVar10 = (*(code *)*local_80)(iVar5,param_10,param_8,param_11);\n    *piVar2 = iVar10;\n    if (param_11 < iVar12) {\n      __gmpn_mul(iVar14,param_3,iVar12,iVar5,iVar1);\n      goto LAB_00057755;\n    }\n  }" { (do_statement "do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005768b;\n      }\n      uVar3 = *(uint *)(iVar6 + iVar7 * 4);\n      uVar4 = *(uint *)(param_5 + iVar7 * 4);\n    } while (uVar4 == uVar3);" do (compound_statement "{\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005768b;\n      }\n      uVar3 = *(uint *)(iVar6 + iVar7 * 4);\n      uVar4 = *(uint *)(param_5 + iVar7 * 4);\n    }" { (expression_statement "iVar7 = iVar7 + -1;" (assignment_expression "iVar7 = iVar7 + -1" identifier = (binary_expression "iVar7 + -1" identifier + number_literal)) ;) (if_statement "if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005768b;\n      }" if (parenthesized_expression "(iVar7 < 0)" ( (binary_expression "iVar7 < 0" identifier < number_literal) )) (compound_statement "{\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005768b;\n      }" { (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" identifier = (cast_expression "(code *)local_80[0x22]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0x22]" identifier [ number_literal ]))) ;) (goto_statement "goto LAB_0005768b;" goto statement_identifier ;) })) (expression_statement "uVar3 = *(uint *)(iVar6 + iVar7 * 4);" (assignment_expression "uVar3 = *(uint *)(iVar6 + iVar7 * 4)" identifier = (pointer_expression "*(uint *)(iVar6 + iVar7 * 4)" * (cast_expression "(uint *)(iVar6 + iVar7 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + iVar7 * 4)" ( (binary_expression "iVar6 + iVar7 * 4" identifier + (binary_expression "iVar7 * 4" identifier * number_literal)) ))))) ;) (expression_statement "uVar4 = *(uint *)(param_5 + iVar7 * 4);" (assignment_expression "uVar4 = *(uint *)(param_5 + iVar7 * 4)" identifier = (pointer_expression "*(uint *)(param_5 + iVar7 * 4)" * (cast_expression "(uint *)(param_5 + iVar7 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + iVar7 * 4)" ( (binary_expression "param_5 + iVar7 * 4" identifier + (binary_expression "iVar7 * 4" identifier * number_literal)) ))))) ;) }) while (parenthesized_expression "(uVar4 == uVar3)" ( (binary_expression "uVar4 == uVar3" identifier == identifier) )) ;) (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" identifier = (cast_expression "(code *)local_80[0x22]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0x22]" identifier [ number_literal ]))) ;) (if_statement "if (uVar3 < uVar4) {\nLAB_0005768b:\n      (*pcVar13)(param_4,param_5,iVar6,iVar11);\n      local_60 = local_64;\n    }\n    else {\n      (*pcVar13)(param_4,iVar6,param_5,iVar11);\n      local_60 = local_64 ^ 1;\n    }" if (parenthesized_expression "(uVar3 < uVar4)" ( (binary_expression "uVar3 < uVar4" identifier < identifier) )) (compound_statement "{\nLAB_0005768b:\n      (*pcVar13)(param_4,param_5,iVar6,iVar11);\n      local_60 = local_64;\n    }" { (labeled_statement "LAB_0005768b:\n      (*pcVar13)(param_4,param_5,iVar6,iVar11);" statement_identifier : (expression_statement "(*pcVar13)(param_4,param_5,iVar6,iVar11);" (call_expression "(*pcVar13)(param_4,param_5,iVar6,iVar11)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(param_4,param_5,iVar6,iVar11)" ( identifier , identifier , identifier , identifier ))) ;)) (expression_statement "local_60 = local_64;" (assignment_expression "local_60 = local_64" identifier = identifier) ;) }) (else_clause "else {\n      (*pcVar13)(param_4,iVar6,param_5,iVar11);\n      local_60 = local_64 ^ 1;\n    }" else (compound_statement "{\n      (*pcVar13)(param_4,iVar6,param_5,iVar11);\n      local_60 = local_64 ^ 1;\n    }" { (expression_statement "(*pcVar13)(param_4,iVar6,param_5,iVar11);" (call_expression "(*pcVar13)(param_4,iVar6,param_5,iVar11)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(param_4,iVar6,param_5,iVar11)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "local_60 = local_64 ^ 1;" (assignment_expression "local_60 = local_64 ^ 1" identifier = (binary_expression "local_64 ^ 1" identifier ^ number_literal)) ;) }))) (if_statement "if (local_64 != local_30) goto LAB_000576cd;" if (parenthesized_expression "(local_64 != local_30)" ( (binary_expression "local_64 != local_30" identifier != identifier) )) (goto_statement "goto LAB_000576cd;" goto statement_identifier ;)) (labeled_statement "LAB_00057971:\n    (*(code *)*local_80)(param_5,param_5,iVar14,iVar11);" statement_identifier : (expression_statement "(*(code *)*local_80)(param_5,param_5,iVar14,iVar11);" (call_expression "(*(code *)*local_80)(param_5,param_5,iVar14,iVar11)" (parenthesized_expression "(*(code *)*local_80)" ( (pointer_expression "*(code *)*local_80" * (cast_expression "(code *)*local_80" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_80" * identifier))) )) (argument_list "(param_5,param_5,iVar14,iVar11)" ( identifier , identifier , identifier , identifier ))) ;)) (if_statement "if (iVar12 < param_11) goto LAB_0005798d;" if (parenthesized_expression "(iVar12 < param_11)" ( (binary_expression "iVar12 < param_11" identifier < identifier) )) (goto_statement "goto LAB_0005798d;" goto statement_identifier ;)) (labeled_statement "LAB_000576f3:\n    __gmpn_mul(iVar6,param_12,iVar12,param_8,param_11);" statement_identifier : (expression_statement "__gmpn_mul(iVar6,param_12,iVar12,param_8,param_11);" (call_expression "__gmpn_mul(iVar6,param_12,iVar12,param_8,param_11)" identifier (argument_list "(iVar6,param_12,iVar12,param_8,param_11)" ( identifier , identifier , identifier , identifier , identifier ))) ;)) (expression_statement "iVar10 = (*(code *)*local_80)(iVar5,param_10,param_8,param_11);" (assignment_expression "iVar10 = (*(code *)*local_80)(iVar5,param_10,param_8,param_11)" identifier = (call_expression "(*(code *)*local_80)(iVar5,param_10,param_8,param_11)" (parenthesized_expression "(*(code *)*local_80)" ( (pointer_expression "*(code *)*local_80" * (cast_expression "(code *)*local_80" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_80" * identifier))) )) (argument_list "(iVar5,param_10,param_8,param_11)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "*piVar2 = iVar10;" (assignment_expression "*piVar2 = iVar10" (pointer_expression "*piVar2" * identifier) = identifier) ;) (if_statement "if (param_11 < iVar12) {\n      __gmpn_mul(iVar14,param_3,iVar12,iVar5,iVar1);\n      goto LAB_00057755;\n    }" if (parenthesized_expression "(param_11 < iVar12)" ( (binary_expression "param_11 < iVar12" identifier < identifier) )) (compound_statement "{\n      __gmpn_mul(iVar14,param_3,iVar12,iVar5,iVar1);\n      goto LAB_00057755;\n    }" { (expression_statement "__gmpn_mul(iVar14,param_3,iVar12,iVar5,iVar1);" (call_expression "__gmpn_mul(iVar14,param_3,iVar12,iVar5,iVar1)" identifier (argument_list "(iVar14,param_3,iVar12,iVar5,iVar1)" ( identifier , identifier , identifier , identifier , identifier ))) ;) (goto_statement "goto LAB_00057755;" goto statement_identifier ;) })) }))) (expression_statement "__gmpn_mul(iVar14,iVar5,iVar1,param_3,iVar12);" (call_expression "__gmpn_mul(iVar14,iVar5,iVar1,param_3,iVar12)" identifier (argument_list "(iVar14,iVar5,iVar1,param_3,iVar12)" ( identifier , identifier , identifier , identifier , identifier ))) ;) (labeled_statement "LAB_00057755:\n  iVar12 = iVar11;" statement_identifier : (expression_statement "iVar12 = iVar11;" (assignment_expression "iVar12 = iVar11" identifier = identifier) ;)) (if_statement "if (local_24 == local_64) {\n    (*(code *)*local_80)(param_3,param_5,iVar6,iVar11);\n  }\n  else {\n    do {\n      iVar12 = iVar12 + -1;\n      if (iVar12 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005778b;\n      }\n      uVar3 = *(uint *)(iVar6 + iVar12 * 4);\n      uVar4 = *(uint *)(param_5 + iVar12 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_0005778b:\n      (*pcVar13)(param_3,param_5,iVar6,iVar11);\n    }\n    else {\n      (*pcVar13)(param_3,iVar6,param_5,iVar11);\n    }\n  }" if (parenthesized_expression "(local_24 == local_64)" ( (binary_expression "local_24 == local_64" identifier == identifier) )) (compound_statement "{\n    (*(code *)*local_80)(param_3,param_5,iVar6,iVar11);\n  }" { (expression_statement "(*(code *)*local_80)(param_3,param_5,iVar6,iVar11);" (call_expression "(*(code *)*local_80)(param_3,param_5,iVar6,iVar11)" (parenthesized_expression "(*(code *)*local_80)" ( (pointer_expression "*(code *)*local_80" * (cast_expression "(code *)*local_80" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_80" * identifier))) )) (argument_list "(param_3,param_5,iVar6,iVar11)" ( identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n    do {\n      iVar12 = iVar12 + -1;\n      if (iVar12 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005778b;\n      }\n      uVar3 = *(uint *)(iVar6 + iVar12 * 4);\n      uVar4 = *(uint *)(param_5 + iVar12 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_0005778b:\n      (*pcVar13)(param_3,param_5,iVar6,iVar11);\n    }\n    else {\n      (*pcVar13)(param_3,iVar6,param_5,iVar11);\n    }\n  }" else (compound_statement "{\n    do {\n      iVar12 = iVar12 + -1;\n      if (iVar12 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005778b;\n      }\n      uVar3 = *(uint *)(iVar6 + iVar12 * 4);\n      uVar4 = *(uint *)(param_5 + iVar12 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_0005778b:\n      (*pcVar13)(param_3,param_5,iVar6,iVar11);\n    }\n    else {\n      (*pcVar13)(param_3,iVar6,param_5,iVar11);\n    }\n  }" { (do_statement "do {\n      iVar12 = iVar12 + -1;\n      if (iVar12 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005778b;\n      }\n      uVar3 = *(uint *)(iVar6 + iVar12 * 4);\n      uVar4 = *(uint *)(param_5 + iVar12 * 4);\n    } while (uVar4 == uVar3);" do (compound_statement "{\n      iVar12 = iVar12 + -1;\n      if (iVar12 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005778b;\n      }\n      uVar3 = *(uint *)(iVar6 + iVar12 * 4);\n      uVar4 = *(uint *)(param_5 + iVar12 * 4);\n    }" { (expression_statement "iVar12 = iVar12 + -1;" (assignment_expression "iVar12 = iVar12 + -1" identifier = (binary_expression "iVar12 + -1" identifier + number_literal)) ;) (if_statement "if (iVar12 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005778b;\n      }" if (parenthesized_expression "(iVar12 < 0)" ( (binary_expression "iVar12 < 0" identifier < number_literal) )) (compound_statement "{\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005778b;\n      }" { (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" identifier = (cast_expression "(code *)local_80[0x22]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0x22]" identifier [ number_literal ]))) ;) (goto_statement "goto LAB_0005778b;" goto statement_identifier ;) })) (expression_statement "uVar3 = *(uint *)(iVar6 + iVar12 * 4);" (assignment_expression "uVar3 = *(uint *)(iVar6 + iVar12 * 4)" identifier = (pointer_expression "*(uint *)(iVar6 + iVar12 * 4)" * (cast_expression "(uint *)(iVar6 + iVar12 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + iVar12 * 4)" ( (binary_expression "iVar6 + iVar12 * 4" identifier + (binary_expression "iVar12 * 4" identifier * number_literal)) ))))) ;) (expression_statement "uVar4 = *(uint *)(param_5 + iVar12 * 4);" (assignment_expression "uVar4 = *(uint *)(param_5 + iVar12 * 4)" identifier = (pointer_expression "*(uint *)(param_5 + iVar12 * 4)" * (cast_expression "(uint *)(param_5 + iVar12 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5 + iVar12 * 4)" ( (binary_expression "param_5 + iVar12 * 4" identifier + (binary_expression "iVar12 * 4" identifier * number_literal)) ))))) ;) }) while (parenthesized_expression "(uVar4 == uVar3)" ( (binary_expression "uVar4 == uVar3" identifier == identifier) )) ;) (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" identifier = (cast_expression "(code *)local_80[0x22]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0x22]" identifier [ number_literal ]))) ;) (if_statement "if (uVar3 < uVar4) {\nLAB_0005778b:\n      (*pcVar13)(param_3,param_5,iVar6,iVar11);\n    }\n    else {\n      (*pcVar13)(param_3,iVar6,param_5,iVar11);\n    }" if (parenthesized_expression "(uVar3 < uVar4)" ( (binary_expression "uVar3 < uVar4" identifier < identifier) )) (compound_statement "{\nLAB_0005778b:\n      (*pcVar13)(param_3,param_5,iVar6,iVar11);\n    }" { (labeled_statement "LAB_0005778b:\n      (*pcVar13)(param_3,param_5,iVar6,iVar11);" statement_identifier : (expression_statement "(*pcVar13)(param_3,param_5,iVar6,iVar11);" (call_expression "(*pcVar13)(param_3,param_5,iVar6,iVar11)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(param_3,param_5,iVar6,iVar11)" ( identifier , identifier , identifier , identifier ))) ;)) }) (else_clause "else {\n      (*pcVar13)(param_3,iVar6,param_5,iVar11);\n    }" else (compound_statement "{\n      (*pcVar13)(param_3,iVar6,param_5,iVar11);\n    }" { (expression_statement "(*pcVar13)(param_3,iVar6,param_5,iVar11);" (call_expression "(*pcVar13)(param_3,iVar6,param_5,iVar11)" (parenthesized_expression "(*pcVar13)" ( (pointer_expression "*pcVar13" * identifier) )) (argument_list "(param_3,iVar6,param_5,iVar11)" ( identifier , identifier , identifier , identifier ))) ;) }))) }))) (if_statement "if (local_64 == 0) {\n    (*(code *)local_80[0x22])(param_5,iVar14,param_5,iVar11);\n  }\n  else {\n    (*(code *)*local_80)(param_5,iVar14,param_5,iVar11);\n  }" if (parenthesized_expression "(local_64 == 0)" ( (binary_expression "local_64 == 0" identifier == number_literal) )) (compound_statement "{\n    (*(code *)local_80[0x22])(param_5,iVar14,param_5,iVar11);\n  }" { (expression_statement "(*(code *)local_80[0x22])(param_5,iVar14,param_5,iVar11);" (call_expression "(*(code *)local_80[0x22])(param_5,iVar14,param_5,iVar11)" (parenthesized_expression "(*(code *)local_80[0x22])" ( (pointer_expression "*(code *)local_80[0x22]" * (cast_expression "(code *)local_80[0x22]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0x22]" identifier [ number_literal ]))) )) (argument_list "(param_5,iVar14,param_5,iVar11)" ( identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n    (*(code *)*local_80)(param_5,iVar14,param_5,iVar11);\n  }" else (compound_statement "{\n    (*(code *)*local_80)(param_5,iVar14,param_5,iVar11);\n  }" { (expression_statement "(*(code *)*local_80)(param_5,iVar14,param_5,iVar11);" (call_expression "(*(code *)*local_80)(param_5,iVar14,param_5,iVar11)" (parenthesized_expression "(*(code *)*local_80)" ( (pointer_expression "*(code *)*local_80" * (cast_expression "(code *)*local_80" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_80" * identifier))) )) (argument_list "(param_5,iVar14,param_5,iVar11)" ( identifier , identifier , identifier , identifier ))) ;) }))) (if_statement "if (local_60 != 0) {\n                    \n                    \n    (*(code *)*local_80)();\n    return;\n  }" if (parenthesized_expression "(local_60 != 0)" ( (binary_expression "local_60 != 0" identifier != number_literal) )) (compound_statement "{\n                    \n                    \n    (*(code *)*local_80)();\n    return;\n  }" { (expression_statement "(*(code *)*local_80)();" (call_expression "(*(code *)*local_80)()" (parenthesized_expression "(*(code *)*local_80)" ( (pointer_expression "*(code *)*local_80" * (cast_expression "(code *)*local_80" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_80" * identifier))) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (expression_statement "(*(code *)local_80[0x22])();" (call_expression "(*(code *)local_80[0x22])()" (parenthesized_expression "(*(code *)local_80[0x22])" ( (pointer_expression "*(code *)local_80[0x22]" * (cast_expression "(code *)local_80[0x22]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[0x22]" identifier [ number_literal ]))) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT ))) ;) }))) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;)) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (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 { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT ))) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) )) (argument_list ( IDENT , IDENT , IDENT , (binary_expression IDENT + IDENT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT ^ LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT ))) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * 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 { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT ))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) )) (argument_list ( (binary_expression IDENT + IDENT) , (binary_expression IDENT + IDENT) , IDENT , IDENT ))) ;) })) }) (else_clause else (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 { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT ))) ;) })))) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;)) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;))) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT ))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;)) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + IDENT)) ;) }) (else_clause else (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 { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (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 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 IDENT < IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;)) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT ))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;)) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (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 { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;)) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT ^ LIT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT ))) ;)) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }) (else_clause else (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 { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , 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 , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT ^ LIT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT ))) ;)) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT ))) ;) (goto_statement goto statement_identifier ;) })) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) }) (else_clause else (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 { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;)) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) }))) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) )) (argument_list ( ))) ;) (return_statement return ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (argument_list ( ))) ;) (return_statement return ;) })))
(function_definition "void __regparm2\n__gmpn_matrix22_mul_strassen\n          (undefined4 param_1,undefined4 param_2,int param_3,int param_4,int param_5,int param_6,\n          int param_7,int param_8,int param_9,int param_10,int param_11,int param_12)\n\n{\n  int iVar1;\n  int *piVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  undefined4 uVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  code *pcVar13;\n  int iVar14;\n  int unaff_EBX;\n  int unaff_retaddr;\n  undefined4 *local_80;\n  uint local_64;\n  uint local_60;\n  int *local_5c;\n  uint local_40;\n  int *local_3c;\n  int local_34;\n  uint local_30;\n  uint local_24;\n  \n  entry(param_2,0x572a9);\n  iVar12 = param_6 + 1;\n  iVar1 = param_11 + 1;\n  local_34 = iVar12 * 4;\n  iVar5 = param_12 + local_34;\n  iVar6 = iVar5 + iVar1 * 4;\n  iVar11 = param_6 + param_11 + 1;\n  iVar10 = iVar11 * 4;\n  iVar14 = iVar6 + iVar10;\n  iVar7 = param_6;\n  if (param_6 < param_11) {\n    __gmpn_mul(iVar6,param_9,param_11,param_3,param_6);\n  }\n  else {\n    __gmpn_mul(iVar6,param_3,param_6,param_9,param_11);\n  }\n  do {\n    iVar7 = iVar7 + -1;\n    iVar8 = param_6;\n    if (iVar7 < 0) {\n      local_80 = *(undefined4 **)(unaff_EBX + 0x46aeb);\n      pcVar13 = (code *)local_80[0x22];\n      goto LAB_000573b5;\n    }\n    uVar3 = *(uint *)(param_4 + iVar7 * 4);\n    uVar4 = *(uint *)(param_5 + iVar7 * 4);\n  } while (uVar4 == uVar3);\n  local_80 = *(undefined4 **)(unaff_EBX + 0x46aeb);\n  pcVar13 = (code *)local_80[0x22];\n  if (uVar3 < uVar4) {\nLAB_000573b5:\n    (*pcVar13)(param_5,param_5,param_4,param_6);\n    local_3c = (int *)(param_3 + local_34 + -4);\n    iVar7 = (*(code *)*local_80)(param_3,param_3,param_5,param_6);\n    *local_3c = iVar7;\n    local_5c = (int *)(param_12 + local_34 + -4);\n    if (iVar7 == 0) {\n      local_30 = 1;\n      goto LAB_00057b2c;\n    }\n    iVar8 = (*(code *)local_80[0x22])(param_12,param_3,unaff_retaddr,param_6);\n    *local_5c = iVar7 - iVar8;\n    local_30 = 1;\n    local_40 = 0;\n    local_24 = 1;\n  }\n  else {\n    (*pcVar13)(param_5,param_4,param_5,param_6);\n    iVar7 = param_6;\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        local_5c = (int *)(param_12 + local_34 + -4);\n        local_3c = (int *)(param_3 + local_34 + -4);\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057ae8;\n      }\n      uVar3 = *(uint *)(param_5 + iVar7 * 4);\n      uVar4 = *(uint *)(param_3 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    local_5c = (int *)(param_12 + local_34 + -4);\n    local_3c = (int *)(param_3 + local_34 + -4);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_00057ae8:\n      (*pcVar13)(param_3,param_3,param_5,param_6);\n      *local_3c = 0;\n      local_30 = 0;\nLAB_00057b2c:\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) {\n          pcVar13 = (code *)local_80[0x22];\n          goto LAB_00057b3e;\n        }\n        uVar3 = *(uint *)(param_3 + iVar8 * 4);\n        uVar4 = *(uint *)(unaff_retaddr + iVar8 * 4);\n      } while (uVar4 == uVar3);\n      pcVar13 = (code *)local_80[0x22];\n      if (uVar3 < uVar4) {\nLAB_00057b3e:\n        (*pcVar13)(param_12,unaff_retaddr,param_3,param_6);\n        local_24 = 0;\n      }\n      else {\n        (*pcVar13)(param_12,param_3,unaff_retaddr,param_6);\n        local_24 = 1;\n      }\n      local_40 = 0;\n      *local_5c = 0;\n    }\n    else {\n      (*pcVar13)(param_3,param_5,param_3,param_6);\n      *local_3c = 0;\n      iVar7 = (*(code *)*local_80)(param_12,param_3,unaff_retaddr,param_6);\n      *local_5c = iVar7;\n      local_30 = 0;\n      local_40 = 1;\n      local_24 = 0;\n    }\n  }\n  local_34 = local_34 + -4;\n  if (param_6 < param_11) {\n    __gmpn_mul(iVar14,param_7,param_11,unaff_retaddr,param_6);\n  }\n  else {\n    __gmpn_mul(iVar14,unaff_retaddr,param_6,param_7,param_11);\n  }\n  uVar9 = (*(code *)*local_80)(unaff_retaddr,iVar6,iVar14,param_6 + param_11);\n  *(undefined4 *)(unaff_retaddr + -4 + iVar10) = uVar9;\n  iVar7 = param_11;\n  do {\n    iVar7 = iVar7 + -1;\n    if (iVar7 < 0) {\n      pcVar13 = (code *)local_80[0x22];\n      goto LAB_000574ba;\n    }\n    uVar3 = *(uint *)(param_9 + iVar7 * 4);\n    uVar4 = *(uint *)(param_10 + iVar7 * 4);\n  } while (uVar4 == uVar3);\n  pcVar13 = (code *)local_80[0x22];\n  if (uVar3 < uVar4) {\nLAB_000574ba:\n    (*pcVar13)(iVar5,param_10,param_9,param_11);\n    local_60 = 0;\n  }\n  else {\n    (*pcVar13)(iVar5,param_9,param_10,param_11);\n    local_30 = local_30 ^ 1;\n    local_60 = 1;\n  }\n  if (param_6 < param_11) {\n    __gmpn_mul(iVar14,iVar5,param_11,param_5,param_6);\n  }\n  else {\n    __gmpn_mul(iVar14,param_5,param_6,iVar5,param_11);\n  }\n  *(undefined4 *)(iVar14 + -4 + iVar10) = 0;\n  piVar2 = (int *)(iVar5 + -4 + iVar1 * 4);\n  iVar7 = param_11;\n  if (local_60 == 0) {\n    iVar7 = (*(code *)*local_80)(iVar5,iVar5,param_8,param_11);\n    *piVar2 = iVar7;\n    if (iVar7 == 0) goto LAB_00057a50;\n    if (param_11 < param_6) {\n      __gmpn_mul(param_5,param_3,param_6,iVar5,iVar1);\n    }\n    else {\n      __gmpn_mul(param_5,iVar5,iVar1,param_3,param_6);\n    }\n    if (*(int *)(param_3 + local_34) != 0) {\n      (*(code *)*local_80)(local_34 + param_5,local_34 + param_5,iVar5,iVar1);\n    }\n  }\n  else {\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057a2e;\n      }\n      uVar3 = *(uint *)(iVar5 + iVar7 * 4);\n      uVar4 = *(uint *)(param_8 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_00057a2e:\n      (*pcVar13)(iVar5,param_8,iVar5,param_11);\n      local_60 = 0;\n    }\n    else {\n      (*pcVar13)(iVar5,iVar5,param_8,param_11);\n    }\n    *piVar2 = 0;\nLAB_00057a50:\n    if (iVar12 < param_11) {\n      __gmpn_mul(param_5,iVar5,param_11,param_3,iVar12);\n    }\n    else {\n      __gmpn_mul(param_5,param_3,iVar12,iVar5,param_11);\n    }\n  }\n  *(undefined4 *)(iVar6 + -4 + iVar10) = 0;\n  iVar10 = iVar11;\n  if (local_40 == local_60) {\n    (*(code *)*local_80)(param_5,param_5,iVar6,iVar11);\n    local_64 = 0;\n    if (local_60 == 0) goto LAB_000578c7;\nLAB_000575ee:\n    iVar11 = (*(code *)*local_80)(iVar5,iVar5,param_7,param_11);\n    *piVar2 = iVar11;\nLAB_00057608:\n    if (param_6 <= param_11) goto LAB_000578fc;\nLAB_00057610:\n    __gmpn_mul(iVar6,param_4,param_6,iVar5,iVar1);\n    if (local_40 != 0) goto LAB_00057638;\nLAB_00057924:\n    iVar11 = (*(code *)*local_80)(param_3,param_3,param_4,param_6);\n    *local_3c = *local_3c + iVar11;\n  }\n  else {\n    do {\n      iVar10 = iVar10 + -1;\n      if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000575cb;\n      }\n      uVar3 = *(uint *)(param_5 + iVar10 * 4);\n      uVar4 = *(uint *)(iVar6 + iVar10 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_000575cb:\n      (*pcVar13)(param_5,iVar6,param_5,iVar11);\n      local_64 = 0;\n    }\n    else {\n      (*pcVar13)(param_5,param_5,iVar6,iVar11);\n      local_64 = 1;\n    }\n    if (local_60 != 0) goto LAB_000575ee;\nLAB_000578c7:\n    pcVar13 = (code *)local_80[0x22];\n    iVar11 = param_11;\n    if (*piVar2 == 0) {\n      do {\n        iVar11 = iVar11 + -1;\n        if (iVar11 < 0) goto LAB_00057cd1;\n        uVar3 = *(uint *)(param_7 + iVar11 * 4);\n        uVar4 = *(uint *)(iVar5 + iVar11 * 4);\n      } while (uVar4 == uVar3);\n      if (uVar3 < uVar4) {\nLAB_00057cd1:\n        (*pcVar13)(iVar5,iVar5,param_7,param_11);\n      }\n      else {\n        (*pcVar13)(iVar5,param_7,iVar5,param_11);\n        local_60 = 1;\n      }\n      goto LAB_00057608;\n    }\n    iVar11 = (*pcVar13)(iVar5,iVar5,param_7,param_11);\n    *piVar2 = *piVar2 - iVar11;\n    if (param_11 < param_6) goto LAB_00057610;\nLAB_000578fc:\n    __gmpn_mul(iVar6,iVar5,iVar1,param_4,param_6);\n    if (local_40 == 0) goto LAB_00057924;\nLAB_00057638:\n    (*(code *)local_80[0x22])(param_3,param_4,param_3,param_6);\n  }\n  iVar11 = param_11 + iVar12;\n  iVar7 = iVar11;\n  iVar10 = iVar11;\n  if (local_64 == local_60) {\n    (*(code *)*local_80)(param_4,param_5,iVar6,iVar11);\n    local_60 = local_64;\n    if (local_64 == local_30) goto LAB_00057971;\nLAB_000576cd:\n    do {\n      iVar10 = iVar10 + -1;\n      if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000576db;\n      }\n      uVar3 = *(uint *)(iVar14 + iVar10 * 4);\n      uVar4 = *(uint *)(param_5 + iVar10 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_000576db:\n      (*pcVar13)(param_5,param_5,iVar14,iVar11);\n    }\n    else {\n      (*pcVar13)(param_5,iVar14,param_5,iVar11);\n      local_64 = local_64 ^ 1;\n    }\n    if (param_11 <= iVar12) goto LAB_000576f3;\nLAB_0005798d:\n    __gmpn_mul(iVar6,param_8,param_11,param_12,iVar12);\n    iVar10 = (*(code *)*local_80)(iVar5,param_10,param_8,param_11);\n    *piVar2 = iVar10;\n  }\n  else {\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005768b;\n      }\n      uVar3 = *(uint *)(iVar6 + iVar7 * 4);\n      uVar4 = *(uint *)(param_5 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_0005768b:\n      (*pcVar13)(param_4,param_5,iVar6,iVar11);\n      local_60 = local_64;\n    }\n    else {\n      (*pcVar13)(param_4,iVar6,param_5,iVar11);\n      local_60 = local_64 ^ 1;\n    }\n    if (local_64 != local_30) goto LAB_000576cd;\nLAB_00057971:\n    (*(code *)*local_80)(param_5,param_5,iVar14,iVar11);\n    if (iVar12 < param_11) goto LAB_0005798d;\nLAB_000576f3:\n    __gmpn_mul(iVar6,param_12,iVar12,param_8,param_11);\n    iVar10 = (*(code *)*local_80)(iVar5,param_10,param_8,param_11);\n    *piVar2 = iVar10;\n    if (param_11 < iVar12) {\n      __gmpn_mul(iVar14,param_3,iVar12,iVar5,iVar1);\n      goto LAB_00057755;\n    }\n  }\n  __gmpn_mul(iVar14,iVar5,iVar1,param_3,iVar12);\nLAB_00057755:\n  iVar12 = iVar11;\n  if (local_24 == local_64) {\n    (*(code *)*local_80)(param_3,param_5,iVar6,iVar11);\n  }\n  else {\n    do {\n      iVar12 = iVar12 + -1;\n      if (iVar12 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005778b;\n      }\n      uVar3 = *(uint *)(iVar6 + iVar12 * 4);\n      uVar4 = *(uint *)(param_5 + iVar12 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_0005778b:\n      (*pcVar13)(param_3,param_5,iVar6,iVar11);\n    }\n    else {\n      (*pcVar13)(param_3,iVar6,param_5,iVar11);\n    }\n  }\n  if (local_64 == 0) {\n    (*(code *)local_80[0x22])(param_5,iVar14,param_5,iVar11);\n  }\n  else {\n    (*(code *)*local_80)(param_5,iVar14,param_5,iVar11);\n  }\n  if (local_60 != 0) {\n                    \n                    \n    (*(code *)*local_80)();\n    return;\n  }\n                    \n                    \n  (*(code *)local_80[0x22])();\n  return;\n}" (primitive_type "void") (ERROR "__regparm2" (identifier "__regparm2")) (function_declarator "__gmpn_matrix22_mul_strassen\n          (undefined4 param_1,undefined4 param_2,int param_3,int param_4,int param_5,int param_6,\n          int param_7,int param_8,int param_9,int param_10,int param_11,int param_12)" (identifier "__gmpn_matrix22_mul_strassen") (parameter_list "(undefined4 param_1,undefined4 param_2,int param_3,int param_4,int param_5,int param_6,\n          int param_7,int param_8,int param_9,int param_10,int param_11,int param_12)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) (, ",") (parameter_declaration "int param_5" (primitive_type "int") (identifier "param_5")) (, ",") (parameter_declaration "int param_6" (primitive_type "int") (identifier "param_6")) (, ",") (parameter_declaration "int param_7" (primitive_type "int") (identifier "param_7")) (, ",") (parameter_declaration "int param_8" (primitive_type "int") (identifier "param_8")) (, ",") (parameter_declaration "int param_9" (primitive_type "int") (identifier "param_9")) (, ",") (parameter_declaration "int param_10" (primitive_type "int") (identifier "param_10")) (, ",") (parameter_declaration "int param_11" (primitive_type "int") (identifier "param_11")) (, ",") (parameter_declaration "int param_12" (primitive_type "int") (identifier "param_12")) () ")"))) (compound_statement "{\n  int iVar1;\n  int *piVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  undefined4 uVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  code *pcVar13;\n  int iVar14;\n  int unaff_EBX;\n  int unaff_retaddr;\n  undefined4 *local_80;\n  uint local_64;\n  uint local_60;\n  int *local_5c;\n  uint local_40;\n  int *local_3c;\n  int local_34;\n  uint local_30;\n  uint local_24;\n  \n  entry(param_2,0x572a9);\n  iVar12 = param_6 + 1;\n  iVar1 = param_11 + 1;\n  local_34 = iVar12 * 4;\n  iVar5 = param_12 + local_34;\n  iVar6 = iVar5 + iVar1 * 4;\n  iVar11 = param_6 + param_11 + 1;\n  iVar10 = iVar11 * 4;\n  iVar14 = iVar6 + iVar10;\n  iVar7 = param_6;\n  if (param_6 < param_11) {\n    __gmpn_mul(iVar6,param_9,param_11,param_3,param_6);\n  }\n  else {\n    __gmpn_mul(iVar6,param_3,param_6,param_9,param_11);\n  }\n  do {\n    iVar7 = iVar7 + -1;\n    iVar8 = param_6;\n    if (iVar7 < 0) {\n      local_80 = *(undefined4 **)(unaff_EBX + 0x46aeb);\n      pcVar13 = (code *)local_80[0x22];\n      goto LAB_000573b5;\n    }\n    uVar3 = *(uint *)(param_4 + iVar7 * 4);\n    uVar4 = *(uint *)(param_5 + iVar7 * 4);\n  } while (uVar4 == uVar3);\n  local_80 = *(undefined4 **)(unaff_EBX + 0x46aeb);\n  pcVar13 = (code *)local_80[0x22];\n  if (uVar3 < uVar4) {\nLAB_000573b5:\n    (*pcVar13)(param_5,param_5,param_4,param_6);\n    local_3c = (int *)(param_3 + local_34 + -4);\n    iVar7 = (*(code *)*local_80)(param_3,param_3,param_5,param_6);\n    *local_3c = iVar7;\n    local_5c = (int *)(param_12 + local_34 + -4);\n    if (iVar7 == 0) {\n      local_30 = 1;\n      goto LAB_00057b2c;\n    }\n    iVar8 = (*(code *)local_80[0x22])(param_12,param_3,unaff_retaddr,param_6);\n    *local_5c = iVar7 - iVar8;\n    local_30 = 1;\n    local_40 = 0;\n    local_24 = 1;\n  }\n  else {\n    (*pcVar13)(param_5,param_4,param_5,param_6);\n    iVar7 = param_6;\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        local_5c = (int *)(param_12 + local_34 + -4);\n        local_3c = (int *)(param_3 + local_34 + -4);\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057ae8;\n      }\n      uVar3 = *(uint *)(param_5 + iVar7 * 4);\n      uVar4 = *(uint *)(param_3 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    local_5c = (int *)(param_12 + local_34 + -4);\n    local_3c = (int *)(param_3 + local_34 + -4);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_00057ae8:\n      (*pcVar13)(param_3,param_3,param_5,param_6);\n      *local_3c = 0;\n      local_30 = 0;\nLAB_00057b2c:\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) {\n          pcVar13 = (code *)local_80[0x22];\n          goto LAB_00057b3e;\n        }\n        uVar3 = *(uint *)(param_3 + iVar8 * 4);\n        uVar4 = *(uint *)(unaff_retaddr + iVar8 * 4);\n      } while (uVar4 == uVar3);\n      pcVar13 = (code *)local_80[0x22];\n      if (uVar3 < uVar4) {\nLAB_00057b3e:\n        (*pcVar13)(param_12,unaff_retaddr,param_3,param_6);\n        local_24 = 0;\n      }\n      else {\n        (*pcVar13)(param_12,param_3,unaff_retaddr,param_6);\n        local_24 = 1;\n      }\n      local_40 = 0;\n      *local_5c = 0;\n    }\n    else {\n      (*pcVar13)(param_3,param_5,param_3,param_6);\n      *local_3c = 0;\n      iVar7 = (*(code *)*local_80)(param_12,param_3,unaff_retaddr,param_6);\n      *local_5c = iVar7;\n      local_30 = 0;\n      local_40 = 1;\n      local_24 = 0;\n    }\n  }\n  local_34 = local_34 + -4;\n  if (param_6 < param_11) {\n    __gmpn_mul(iVar14,param_7,param_11,unaff_retaddr,param_6);\n  }\n  else {\n    __gmpn_mul(iVar14,unaff_retaddr,param_6,param_7,param_11);\n  }\n  uVar9 = (*(code *)*local_80)(unaff_retaddr,iVar6,iVar14,param_6 + param_11);\n  *(undefined4 *)(unaff_retaddr + -4 + iVar10) = uVar9;\n  iVar7 = param_11;\n  do {\n    iVar7 = iVar7 + -1;\n    if (iVar7 < 0) {\n      pcVar13 = (code *)local_80[0x22];\n      goto LAB_000574ba;\n    }\n    uVar3 = *(uint *)(param_9 + iVar7 * 4);\n    uVar4 = *(uint *)(param_10 + iVar7 * 4);\n  } while (uVar4 == uVar3);\n  pcVar13 = (code *)local_80[0x22];\n  if (uVar3 < uVar4) {\nLAB_000574ba:\n    (*pcVar13)(iVar5,param_10,param_9,param_11);\n    local_60 = 0;\n  }\n  else {\n    (*pcVar13)(iVar5,param_9,param_10,param_11);\n    local_30 = local_30 ^ 1;\n    local_60 = 1;\n  }\n  if (param_6 < param_11) {\n    __gmpn_mul(iVar14,iVar5,param_11,param_5,param_6);\n  }\n  else {\n    __gmpn_mul(iVar14,param_5,param_6,iVar5,param_11);\n  }\n  *(undefined4 *)(iVar14 + -4 + iVar10) = 0;\n  piVar2 = (int *)(iVar5 + -4 + iVar1 * 4);\n  iVar7 = param_11;\n  if (local_60 == 0) {\n    iVar7 = (*(code *)*local_80)(iVar5,iVar5,param_8,param_11);\n    *piVar2 = iVar7;\n    if (iVar7 == 0) goto LAB_00057a50;\n    if (param_11 < param_6) {\n      __gmpn_mul(param_5,param_3,param_6,iVar5,iVar1);\n    }\n    else {\n      __gmpn_mul(param_5,iVar5,iVar1,param_3,param_6);\n    }\n    if (*(int *)(param_3 + local_34) != 0) {\n      (*(code *)*local_80)(local_34 + param_5,local_34 + param_5,iVar5,iVar1);\n    }\n  }\n  else {\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057a2e;\n      }\n      uVar3 = *(uint *)(iVar5 + iVar7 * 4);\n      uVar4 = *(uint *)(param_8 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_00057a2e:\n      (*pcVar13)(iVar5,param_8,iVar5,param_11);\n      local_60 = 0;\n    }\n    else {\n      (*pcVar13)(iVar5,iVar5,param_8,param_11);\n    }\n    *piVar2 = 0;\nLAB_00057a50:\n    if (iVar12 < param_11) {\n      __gmpn_mul(param_5,iVar5,param_11,param_3,iVar12);\n    }\n    else {\n      __gmpn_mul(param_5,param_3,iVar12,iVar5,param_11);\n    }\n  }\n  *(undefined4 *)(iVar6 + -4 + iVar10) = 0;\n  iVar10 = iVar11;\n  if (local_40 == local_60) {\n    (*(code *)*local_80)(param_5,param_5,iVar6,iVar11);\n    local_64 = 0;\n    if (local_60 == 0) goto LAB_000578c7;\nLAB_000575ee:\n    iVar11 = (*(code *)*local_80)(iVar5,iVar5,param_7,param_11);\n    *piVar2 = iVar11;\nLAB_00057608:\n    if (param_6 <= param_11) goto LAB_000578fc;\nLAB_00057610:\n    __gmpn_mul(iVar6,param_4,param_6,iVar5,iVar1);\n    if (local_40 != 0) goto LAB_00057638;\nLAB_00057924:\n    iVar11 = (*(code *)*local_80)(param_3,param_3,param_4,param_6);\n    *local_3c = *local_3c + iVar11;\n  }\n  else {\n    do {\n      iVar10 = iVar10 + -1;\n      if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000575cb;\n      }\n      uVar3 = *(uint *)(param_5 + iVar10 * 4);\n      uVar4 = *(uint *)(iVar6 + iVar10 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_000575cb:\n      (*pcVar13)(param_5,iVar6,param_5,iVar11);\n      local_64 = 0;\n    }\n    else {\n      (*pcVar13)(param_5,param_5,iVar6,iVar11);\n      local_64 = 1;\n    }\n    if (local_60 != 0) goto LAB_000575ee;\nLAB_000578c7:\n    pcVar13 = (code *)local_80[0x22];\n    iVar11 = param_11;\n    if (*piVar2 == 0) {\n      do {\n        iVar11 = iVar11 + -1;\n        if (iVar11 < 0) goto LAB_00057cd1;\n        uVar3 = *(uint *)(param_7 + iVar11 * 4);\n        uVar4 = *(uint *)(iVar5 + iVar11 * 4);\n      } while (uVar4 == uVar3);\n      if (uVar3 < uVar4) {\nLAB_00057cd1:\n        (*pcVar13)(iVar5,iVar5,param_7,param_11);\n      }\n      else {\n        (*pcVar13)(iVar5,param_7,iVar5,param_11);\n        local_60 = 1;\n      }\n      goto LAB_00057608;\n    }\n    iVar11 = (*pcVar13)(iVar5,iVar5,param_7,param_11);\n    *piVar2 = *piVar2 - iVar11;\n    if (param_11 < param_6) goto LAB_00057610;\nLAB_000578fc:\n    __gmpn_mul(iVar6,iVar5,iVar1,param_4,param_6);\n    if (local_40 == 0) goto LAB_00057924;\nLAB_00057638:\n    (*(code *)local_80[0x22])(param_3,param_4,param_3,param_6);\n  }\n  iVar11 = param_11 + iVar12;\n  iVar7 = iVar11;\n  iVar10 = iVar11;\n  if (local_64 == local_60) {\n    (*(code *)*local_80)(param_4,param_5,iVar6,iVar11);\n    local_60 = local_64;\n    if (local_64 == local_30) goto LAB_00057971;\nLAB_000576cd:\n    do {\n      iVar10 = iVar10 + -1;\n      if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000576db;\n      }\n      uVar3 = *(uint *)(iVar14 + iVar10 * 4);\n      uVar4 = *(uint *)(param_5 + iVar10 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_000576db:\n      (*pcVar13)(param_5,param_5,iVar14,iVar11);\n    }\n    else {\n      (*pcVar13)(param_5,iVar14,param_5,iVar11);\n      local_64 = local_64 ^ 1;\n    }\n    if (param_11 <= iVar12) goto LAB_000576f3;\nLAB_0005798d:\n    __gmpn_mul(iVar6,param_8,param_11,param_12,iVar12);\n    iVar10 = (*(code *)*local_80)(iVar5,param_10,param_8,param_11);\n    *piVar2 = iVar10;\n  }\n  else {\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005768b;\n      }\n      uVar3 = *(uint *)(iVar6 + iVar7 * 4);\n      uVar4 = *(uint *)(param_5 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_0005768b:\n      (*pcVar13)(param_4,param_5,iVar6,iVar11);\n      local_60 = local_64;\n    }\n    else {\n      (*pcVar13)(param_4,iVar6,param_5,iVar11);\n      local_60 = local_64 ^ 1;\n    }\n    if (local_64 != local_30) goto LAB_000576cd;\nLAB_00057971:\n    (*(code *)*local_80)(param_5,param_5,iVar14,iVar11);\n    if (iVar12 < param_11) goto LAB_0005798d;\nLAB_000576f3:\n    __gmpn_mul(iVar6,param_12,iVar12,param_8,param_11);\n    iVar10 = (*(code *)*local_80)(iVar5,param_10,param_8,param_11);\n    *piVar2 = iVar10;\n    if (param_11 < iVar12) {\n      __gmpn_mul(iVar14,param_3,iVar12,iVar5,iVar1);\n      goto LAB_00057755;\n    }\n  }\n  __gmpn_mul(iVar14,iVar5,iVar1,param_3,iVar12);\nLAB_00057755:\n  iVar12 = iVar11;\n  if (local_24 == local_64) {\n    (*(code *)*local_80)(param_3,param_5,iVar6,iVar11);\n  }\n  else {\n    do {\n      iVar12 = iVar12 + -1;\n      if (iVar12 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005778b;\n      }\n      uVar3 = *(uint *)(iVar6 + iVar12 * 4);\n      uVar4 = *(uint *)(param_5 + iVar12 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_0005778b:\n      (*pcVar13)(param_3,param_5,iVar6,iVar11);\n    }\n    else {\n      (*pcVar13)(param_3,iVar6,param_5,iVar11);\n    }\n  }\n  if (local_64 == 0) {\n    (*(code *)local_80[0x22])(param_5,iVar14,param_5,iVar11);\n  }\n  else {\n    (*(code *)*local_80)(param_5,iVar14,param_5,iVar11);\n  }\n  if (local_60 != 0) {\n                    \n                    \n    (*(code *)*local_80)();\n    return;\n  }\n                    \n                    \n  (*(code *)local_80[0x22])();\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "undefined4 uVar9;" (type_identifier "undefined4") (identifier "uVar9") (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "int iVar12;" (primitive_type "int") (identifier "iVar12") (; ";")) (declaration "code *pcVar13;" (type_identifier "code") (pointer_declarator "*pcVar13" (* "*") (identifier "pcVar13")) (; ";")) (declaration "int iVar14;" (primitive_type "int") (identifier "iVar14") (; ";")) (declaration "int unaff_EBX;" (primitive_type "int") (identifier "unaff_EBX") (; ";")) (declaration "int unaff_retaddr;" (primitive_type "int") (identifier "unaff_retaddr") (; ";")) (declaration "undefined4 *local_80;" (type_identifier "undefined4") (pointer_declarator "*local_80" (* "*") (identifier "local_80")) (; ";")) (declaration "uint local_64;" (type_identifier "uint") (identifier "local_64") (; ";")) (declaration "uint local_60;" (type_identifier "uint") (identifier "local_60") (; ";")) (declaration "int *local_5c;" (primitive_type "int") (pointer_declarator "*local_5c" (* "*") (identifier "local_5c")) (; ";")) (declaration "uint local_40;" (type_identifier "uint") (identifier "local_40") (; ";")) (declaration "int *local_3c;" (primitive_type "int") (pointer_declarator "*local_3c" (* "*") (identifier "local_3c")) (; ";")) (declaration "int local_34;" (primitive_type "int") (identifier "local_34") (; ";")) (declaration "uint local_30;" (type_identifier "uint") (identifier "local_30") (; ";")) (declaration "uint local_24;" (type_identifier "uint") (identifier "local_24") (; ";")) (expression_statement "entry(param_2,0x572a9);" (call_expression "entry(param_2,0x572a9)" (identifier "entry") (argument_list "(param_2,0x572a9)" (( "(") (identifier "param_2") (, ",") (number_literal "0x572a9") () ")"))) (; ";")) (expression_statement "iVar12 = param_6 + 1;" (assignment_expression "iVar12 = param_6 + 1" (identifier "iVar12") (= "=") (binary_expression "param_6 + 1" (identifier "param_6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar1 = param_11 + 1;" (assignment_expression "iVar1 = param_11 + 1" (identifier "iVar1") (= "=") (binary_expression "param_11 + 1" (identifier "param_11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_34 = iVar12 * 4;" (assignment_expression "local_34 = iVar12 * 4" (identifier "local_34") (= "=") (binary_expression "iVar12 * 4" (identifier "iVar12") (* "*") (number_literal "4"))) (; ";")) (expression_statement "iVar5 = param_12 + local_34;" (assignment_expression "iVar5 = param_12 + local_34" (identifier "iVar5") (= "=") (binary_expression "param_12 + local_34" (identifier "param_12") (+ "+") (identifier "local_34"))) (; ";")) (expression_statement "iVar6 = iVar5 + iVar1 * 4;" (assignment_expression "iVar6 = iVar5 + iVar1 * 4" (identifier "iVar6") (= "=") (binary_expression "iVar5 + iVar1 * 4" (identifier "iVar5") (+ "+") (binary_expression "iVar1 * 4" (identifier "iVar1") (* "*") (number_literal "4")))) (; ";")) (expression_statement "iVar11 = param_6 + param_11 + 1;" (assignment_expression "iVar11 = param_6 + param_11 + 1" (identifier "iVar11") (= "=") (binary_expression "param_6 + param_11 + 1" (binary_expression "param_6 + param_11" (identifier "param_6") (+ "+") (identifier "param_11")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar10 = iVar11 * 4;" (assignment_expression "iVar10 = iVar11 * 4" (identifier "iVar10") (= "=") (binary_expression "iVar11 * 4" (identifier "iVar11") (* "*") (number_literal "4"))) (; ";")) (expression_statement "iVar14 = iVar6 + iVar10;" (assignment_expression "iVar14 = iVar6 + iVar10" (identifier "iVar14") (= "=") (binary_expression "iVar6 + iVar10" (identifier "iVar6") (+ "+") (identifier "iVar10"))) (; ";")) (expression_statement "iVar7 = param_6;" (assignment_expression "iVar7 = param_6" (identifier "iVar7") (= "=") (identifier "param_6")) (; ";")) (if_statement "if (param_6 < param_11) {\n    __gmpn_mul(iVar6,param_9,param_11,param_3,param_6);\n  }\n  else {\n    __gmpn_mul(iVar6,param_3,param_6,param_9,param_11);\n  }" (if "if") (parenthesized_expression "(param_6 < param_11)" (( "(") (binary_expression "param_6 < param_11" (identifier "param_6") (< "<") (identifier "param_11")) () ")")) (compound_statement "{\n    __gmpn_mul(iVar6,param_9,param_11,param_3,param_6);\n  }" ({ "{") (expression_statement "__gmpn_mul(iVar6,param_9,param_11,param_3,param_6);" (call_expression "__gmpn_mul(iVar6,param_9,param_11,param_3,param_6)" (identifier "__gmpn_mul") (argument_list "(iVar6,param_9,param_11,param_3,param_6)" (( "(") (identifier "iVar6") (, ",") (identifier "param_9") (, ",") (identifier "param_11") (, ",") (identifier "param_3") (, ",") (identifier "param_6") () ")"))) (; ";")) (} "}")) (else_clause "else {\n    __gmpn_mul(iVar6,param_3,param_6,param_9,param_11);\n  }" (else "else") (compound_statement "{\n    __gmpn_mul(iVar6,param_3,param_6,param_9,param_11);\n  }" ({ "{") (expression_statement "__gmpn_mul(iVar6,param_3,param_6,param_9,param_11);" (call_expression "__gmpn_mul(iVar6,param_3,param_6,param_9,param_11)" (identifier "__gmpn_mul") (argument_list "(iVar6,param_3,param_6,param_9,param_11)" (( "(") (identifier "iVar6") (, ",") (identifier "param_3") (, ",") (identifier "param_6") (, ",") (identifier "param_9") (, ",") (identifier "param_11") () ")"))) (; ";")) (} "}")))) (do_statement "do {\n    iVar7 = iVar7 + -1;\n    iVar8 = param_6;\n    if (iVar7 < 0) {\n      local_80 = *(undefined4 **)(unaff_EBX + 0x46aeb);\n      pcVar13 = (code *)local_80[0x22];\n      goto LAB_000573b5;\n    }\n    uVar3 = *(uint *)(param_4 + iVar7 * 4);\n    uVar4 = *(uint *)(param_5 + iVar7 * 4);\n  } while (uVar4 == uVar3);" (do "do") (compound_statement "{\n    iVar7 = iVar7 + -1;\n    iVar8 = param_6;\n    if (iVar7 < 0) {\n      local_80 = *(undefined4 **)(unaff_EBX + 0x46aeb);\n      pcVar13 = (code *)local_80[0x22];\n      goto LAB_000573b5;\n    }\n    uVar3 = *(uint *)(param_4 + iVar7 * 4);\n    uVar4 = *(uint *)(param_5 + iVar7 * 4);\n  }" ({ "{") (expression_statement "iVar7 = iVar7 + -1;" (assignment_expression "iVar7 = iVar7 + -1" (identifier "iVar7") (= "=") (binary_expression "iVar7 + -1" (identifier "iVar7") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar8 = param_6;" (assignment_expression "iVar8 = param_6" (identifier "iVar8") (= "=") (identifier "param_6")) (; ";")) (if_statement "if (iVar7 < 0) {\n      local_80 = *(undefined4 **)(unaff_EBX + 0x46aeb);\n      pcVar13 = (code *)local_80[0x22];\n      goto LAB_000573b5;\n    }" (if "if") (parenthesized_expression "(iVar7 < 0)" (( "(") (binary_expression "iVar7 < 0" (identifier "iVar7") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      local_80 = *(undefined4 **)(unaff_EBX + 0x46aeb);\n      pcVar13 = (code *)local_80[0x22];\n      goto LAB_000573b5;\n    }" ({ "{") (expression_statement "local_80 = *(undefined4 **)(unaff_EBX + 0x46aeb);" (assignment_expression "local_80 = *(undefined4 **)(unaff_EBX + 0x46aeb)" (identifier "local_80") (= "=") (pointer_expression "*(undefined4 **)(unaff_EBX + 0x46aeb)" (* "*") (cast_expression "(undefined4 **)(unaff_EBX + 0x46aeb)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(unaff_EBX + 0x46aeb)" (( "(") (binary_expression "unaff_EBX + 0x46aeb" (identifier "unaff_EBX") (+ "+") (number_literal "0x46aeb")) () ")"))))) (; ";")) (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" (identifier "pcVar13") (= "=") (cast_expression "(code *)local_80[0x22]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_80[0x22]" (identifier "local_80") ([ "[") (number_literal "0x22") (] "]")))) (; ";")) (goto_statement "goto LAB_000573b5;" (goto "goto") (statement_identifier "LAB_000573b5") (; ";")) (} "}"))) (expression_statement "uVar3 = *(uint *)(param_4 + iVar7 * 4);" (assignment_expression "uVar3 = *(uint *)(param_4 + iVar7 * 4)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(param_4 + iVar7 * 4)" (* "*") (cast_expression "(uint *)(param_4 + iVar7 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + iVar7 * 4)" (( "(") (binary_expression "param_4 + iVar7 * 4" (identifier "param_4") (+ "+") (binary_expression "iVar7 * 4" (identifier "iVar7") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "uVar4 = *(uint *)(param_5 + iVar7 * 4);" (assignment_expression "uVar4 = *(uint *)(param_5 + iVar7 * 4)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(param_5 + iVar7 * 4)" (* "*") (cast_expression "(uint *)(param_5 + iVar7 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + iVar7 * 4)" (( "(") (binary_expression "param_5 + iVar7 * 4" (identifier "param_5") (+ "+") (binary_expression "iVar7 * 4" (identifier "iVar7") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar4 == uVar3)" (( "(") (binary_expression "uVar4 == uVar3" (identifier "uVar4") (== "==") (identifier "uVar3")) () ")")) (; ";")) (expression_statement "local_80 = *(undefined4 **)(unaff_EBX + 0x46aeb);" (assignment_expression "local_80 = *(undefined4 **)(unaff_EBX + 0x46aeb)" (identifier "local_80") (= "=") (pointer_expression "*(undefined4 **)(unaff_EBX + 0x46aeb)" (* "*") (cast_expression "(undefined4 **)(unaff_EBX + 0x46aeb)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(unaff_EBX + 0x46aeb)" (( "(") (binary_expression "unaff_EBX + 0x46aeb" (identifier "unaff_EBX") (+ "+") (number_literal "0x46aeb")) () ")"))))) (; ";")) (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" (identifier "pcVar13") (= "=") (cast_expression "(code *)local_80[0x22]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_80[0x22]" (identifier "local_80") ([ "[") (number_literal "0x22") (] "]")))) (; ";")) (if_statement "if (uVar3 < uVar4) {\nLAB_000573b5:\n    (*pcVar13)(param_5,param_5,param_4,param_6);\n    local_3c = (int *)(param_3 + local_34 + -4);\n    iVar7 = (*(code *)*local_80)(param_3,param_3,param_5,param_6);\n    *local_3c = iVar7;\n    local_5c = (int *)(param_12 + local_34 + -4);\n    if (iVar7 == 0) {\n      local_30 = 1;\n      goto LAB_00057b2c;\n    }\n    iVar8 = (*(code *)local_80[0x22])(param_12,param_3,unaff_retaddr,param_6);\n    *local_5c = iVar7 - iVar8;\n    local_30 = 1;\n    local_40 = 0;\n    local_24 = 1;\n  }\n  else {\n    (*pcVar13)(param_5,param_4,param_5,param_6);\n    iVar7 = param_6;\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        local_5c = (int *)(param_12 + local_34 + -4);\n        local_3c = (int *)(param_3 + local_34 + -4);\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057ae8;\n      }\n      uVar3 = *(uint *)(param_5 + iVar7 * 4);\n      uVar4 = *(uint *)(param_3 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    local_5c = (int *)(param_12 + local_34 + -4);\n    local_3c = (int *)(param_3 + local_34 + -4);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_00057ae8:\n      (*pcVar13)(param_3,param_3,param_5,param_6);\n      *local_3c = 0;\n      local_30 = 0;\nLAB_00057b2c:\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) {\n          pcVar13 = (code *)local_80[0x22];\n          goto LAB_00057b3e;\n        }\n        uVar3 = *(uint *)(param_3 + iVar8 * 4);\n        uVar4 = *(uint *)(unaff_retaddr + iVar8 * 4);\n      } while (uVar4 == uVar3);\n      pcVar13 = (code *)local_80[0x22];\n      if (uVar3 < uVar4) {\nLAB_00057b3e:\n        (*pcVar13)(param_12,unaff_retaddr,param_3,param_6);\n        local_24 = 0;\n      }\n      else {\n        (*pcVar13)(param_12,param_3,unaff_retaddr,param_6);\n        local_24 = 1;\n      }\n      local_40 = 0;\n      *local_5c = 0;\n    }\n    else {\n      (*pcVar13)(param_3,param_5,param_3,param_6);\n      *local_3c = 0;\n      iVar7 = (*(code *)*local_80)(param_12,param_3,unaff_retaddr,param_6);\n      *local_5c = iVar7;\n      local_30 = 0;\n      local_40 = 1;\n      local_24 = 0;\n    }\n  }" (if "if") (parenthesized_expression "(uVar3 < uVar4)" (( "(") (binary_expression "uVar3 < uVar4" (identifier "uVar3") (< "<") (identifier "uVar4")) () ")")) (compound_statement "{\nLAB_000573b5:\n    (*pcVar13)(param_5,param_5,param_4,param_6);\n    local_3c = (int *)(param_3 + local_34 + -4);\n    iVar7 = (*(code *)*local_80)(param_3,param_3,param_5,param_6);\n    *local_3c = iVar7;\n    local_5c = (int *)(param_12 + local_34 + -4);\n    if (iVar7 == 0) {\n      local_30 = 1;\n      goto LAB_00057b2c;\n    }\n    iVar8 = (*(code *)local_80[0x22])(param_12,param_3,unaff_retaddr,param_6);\n    *local_5c = iVar7 - iVar8;\n    local_30 = 1;\n    local_40 = 0;\n    local_24 = 1;\n  }" ({ "{") (labeled_statement "LAB_000573b5:\n    (*pcVar13)(param_5,param_5,param_4,param_6);" (statement_identifier "LAB_000573b5") (: ":") (expression_statement "(*pcVar13)(param_5,param_5,param_4,param_6);" (call_expression "(*pcVar13)(param_5,param_5,param_4,param_6)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(param_5,param_5,param_4,param_6)" (( "(") (identifier "param_5") (, ",") (identifier "param_5") (, ",") (identifier "param_4") (, ",") (identifier "param_6") () ")"))) (; ";"))) (expression_statement "local_3c = (int *)(param_3 + local_34 + -4);" (assignment_expression "local_3c = (int *)(param_3 + local_34 + -4)" (identifier "local_3c") (= "=") (cast_expression "(int *)(param_3 + local_34 + -4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + local_34 + -4)" (( "(") (binary_expression "param_3 + local_34 + -4" (binary_expression "param_3 + local_34" (identifier "param_3") (+ "+") (identifier "local_34")) (+ "+") (number_literal "-4")) () ")")))) (; ";")) (expression_statement "iVar7 = (*(code *)*local_80)(param_3,param_3,param_5,param_6);" (assignment_expression "iVar7 = (*(code *)*local_80)(param_3,param_3,param_5,param_6)" (identifier "iVar7") (= "=") (call_expression "(*(code *)*local_80)(param_3,param_3,param_5,param_6)" (parenthesized_expression "(*(code *)*local_80)" (( "(") (pointer_expression "*(code *)*local_80" (* "*") (cast_expression "(code *)*local_80" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*local_80" (* "*") (identifier "local_80")))) () ")")) (argument_list "(param_3,param_3,param_5,param_6)" (( "(") (identifier "param_3") (, ",") (identifier "param_3") (, ",") (identifier "param_5") (, ",") (identifier "param_6") () ")")))) (; ";")) (expression_statement "*local_3c = iVar7;" (assignment_expression "*local_3c = iVar7" (pointer_expression "*local_3c" (* "*") (identifier "local_3c")) (= "=") (identifier "iVar7")) (; ";")) (expression_statement "local_5c = (int *)(param_12 + local_34 + -4);" (assignment_expression "local_5c = (int *)(param_12 + local_34 + -4)" (identifier "local_5c") (= "=") (cast_expression "(int *)(param_12 + local_34 + -4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_12 + local_34 + -4)" (( "(") (binary_expression "param_12 + local_34 + -4" (binary_expression "param_12 + local_34" (identifier "param_12") (+ "+") (identifier "local_34")) (+ "+") (number_literal "-4")) () ")")))) (; ";")) (if_statement "if (iVar7 == 0) {\n      local_30 = 1;\n      goto LAB_00057b2c;\n    }" (if "if") (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      local_30 = 1;\n      goto LAB_00057b2c;\n    }" ({ "{") (expression_statement "local_30 = 1;" (assignment_expression "local_30 = 1" (identifier "local_30") (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_00057b2c;" (goto "goto") (statement_identifier "LAB_00057b2c") (; ";")) (} "}"))) (expression_statement "iVar8 = (*(code *)local_80[0x22])(param_12,param_3,unaff_retaddr,param_6);" (assignment_expression "iVar8 = (*(code *)local_80[0x22])(param_12,param_3,unaff_retaddr,param_6)" (identifier "iVar8") (= "=") (call_expression "(*(code *)local_80[0x22])(param_12,param_3,unaff_retaddr,param_6)" (parenthesized_expression "(*(code *)local_80[0x22])" (( "(") (pointer_expression "*(code *)local_80[0x22]" (* "*") (cast_expression "(code *)local_80[0x22]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_80[0x22]" (identifier "local_80") ([ "[") (number_literal "0x22") (] "]")))) () ")")) (argument_list "(param_12,param_3,unaff_retaddr,param_6)" (( "(") (identifier "param_12") (, ",") (identifier "param_3") (, ",") (identifier "unaff_retaddr") (, ",") (identifier "param_6") () ")")))) (; ";")) (expression_statement "*local_5c = iVar7 - iVar8;" (assignment_expression "*local_5c = iVar7 - iVar8" (pointer_expression "*local_5c" (* "*") (identifier "local_5c")) (= "=") (binary_expression "iVar7 - iVar8" (identifier "iVar7") (- "-") (identifier "iVar8"))) (; ";")) (expression_statement "local_30 = 1;" (assignment_expression "local_30 = 1" (identifier "local_30") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" (identifier "local_40") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_24 = 1;" (assignment_expression "local_24 = 1" (identifier "local_24") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n    (*pcVar13)(param_5,param_4,param_5,param_6);\n    iVar7 = param_6;\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        local_5c = (int *)(param_12 + local_34 + -4);\n        local_3c = (int *)(param_3 + local_34 + -4);\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057ae8;\n      }\n      uVar3 = *(uint *)(param_5 + iVar7 * 4);\n      uVar4 = *(uint *)(param_3 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    local_5c = (int *)(param_12 + local_34 + -4);\n    local_3c = (int *)(param_3 + local_34 + -4);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_00057ae8:\n      (*pcVar13)(param_3,param_3,param_5,param_6);\n      *local_3c = 0;\n      local_30 = 0;\nLAB_00057b2c:\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) {\n          pcVar13 = (code *)local_80[0x22];\n          goto LAB_00057b3e;\n        }\n        uVar3 = *(uint *)(param_3 + iVar8 * 4);\n        uVar4 = *(uint *)(unaff_retaddr + iVar8 * 4);\n      } while (uVar4 == uVar3);\n      pcVar13 = (code *)local_80[0x22];\n      if (uVar3 < uVar4) {\nLAB_00057b3e:\n        (*pcVar13)(param_12,unaff_retaddr,param_3,param_6);\n        local_24 = 0;\n      }\n      else {\n        (*pcVar13)(param_12,param_3,unaff_retaddr,param_6);\n        local_24 = 1;\n      }\n      local_40 = 0;\n      *local_5c = 0;\n    }\n    else {\n      (*pcVar13)(param_3,param_5,param_3,param_6);\n      *local_3c = 0;\n      iVar7 = (*(code *)*local_80)(param_12,param_3,unaff_retaddr,param_6);\n      *local_5c = iVar7;\n      local_30 = 0;\n      local_40 = 1;\n      local_24 = 0;\n    }\n  }" (else "else") (compound_statement "{\n    (*pcVar13)(param_5,param_4,param_5,param_6);\n    iVar7 = param_6;\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        local_5c = (int *)(param_12 + local_34 + -4);\n        local_3c = (int *)(param_3 + local_34 + -4);\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057ae8;\n      }\n      uVar3 = *(uint *)(param_5 + iVar7 * 4);\n      uVar4 = *(uint *)(param_3 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    local_5c = (int *)(param_12 + local_34 + -4);\n    local_3c = (int *)(param_3 + local_34 + -4);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_00057ae8:\n      (*pcVar13)(param_3,param_3,param_5,param_6);\n      *local_3c = 0;\n      local_30 = 0;\nLAB_00057b2c:\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) {\n          pcVar13 = (code *)local_80[0x22];\n          goto LAB_00057b3e;\n        }\n        uVar3 = *(uint *)(param_3 + iVar8 * 4);\n        uVar4 = *(uint *)(unaff_retaddr + iVar8 * 4);\n      } while (uVar4 == uVar3);\n      pcVar13 = (code *)local_80[0x22];\n      if (uVar3 < uVar4) {\nLAB_00057b3e:\n        (*pcVar13)(param_12,unaff_retaddr,param_3,param_6);\n        local_24 = 0;\n      }\n      else {\n        (*pcVar13)(param_12,param_3,unaff_retaddr,param_6);\n        local_24 = 1;\n      }\n      local_40 = 0;\n      *local_5c = 0;\n    }\n    else {\n      (*pcVar13)(param_3,param_5,param_3,param_6);\n      *local_3c = 0;\n      iVar7 = (*(code *)*local_80)(param_12,param_3,unaff_retaddr,param_6);\n      *local_5c = iVar7;\n      local_30 = 0;\n      local_40 = 1;\n      local_24 = 0;\n    }\n  }" ({ "{") (expression_statement "(*pcVar13)(param_5,param_4,param_5,param_6);" (call_expression "(*pcVar13)(param_5,param_4,param_5,param_6)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(param_5,param_4,param_5,param_6)" (( "(") (identifier "param_5") (, ",") (identifier "param_4") (, ",") (identifier "param_5") (, ",") (identifier "param_6") () ")"))) (; ";")) (expression_statement "iVar7 = param_6;" (assignment_expression "iVar7 = param_6" (identifier "iVar7") (= "=") (identifier "param_6")) (; ";")) (do_statement "do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        local_5c = (int *)(param_12 + local_34 + -4);\n        local_3c = (int *)(param_3 + local_34 + -4);\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057ae8;\n      }\n      uVar3 = *(uint *)(param_5 + iVar7 * 4);\n      uVar4 = *(uint *)(param_3 + iVar7 * 4);\n    } while (uVar4 == uVar3);" (do "do") (compound_statement "{\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        local_5c = (int *)(param_12 + local_34 + -4);\n        local_3c = (int *)(param_3 + local_34 + -4);\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057ae8;\n      }\n      uVar3 = *(uint *)(param_5 + iVar7 * 4);\n      uVar4 = *(uint *)(param_3 + iVar7 * 4);\n    }" ({ "{") (expression_statement "iVar7 = iVar7 + -1;" (assignment_expression "iVar7 = iVar7 + -1" (identifier "iVar7") (= "=") (binary_expression "iVar7 + -1" (identifier "iVar7") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar7 < 0) {\n        local_5c = (int *)(param_12 + local_34 + -4);\n        local_3c = (int *)(param_3 + local_34 + -4);\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057ae8;\n      }" (if "if") (parenthesized_expression "(iVar7 < 0)" (( "(") (binary_expression "iVar7 < 0" (identifier "iVar7") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        local_5c = (int *)(param_12 + local_34 + -4);\n        local_3c = (int *)(param_3 + local_34 + -4);\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057ae8;\n      }" ({ "{") (expression_statement "local_5c = (int *)(param_12 + local_34 + -4);" (assignment_expression "local_5c = (int *)(param_12 + local_34 + -4)" (identifier "local_5c") (= "=") (cast_expression "(int *)(param_12 + local_34 + -4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_12 + local_34 + -4)" (( "(") (binary_expression "param_12 + local_34 + -4" (binary_expression "param_12 + local_34" (identifier "param_12") (+ "+") (identifier "local_34")) (+ "+") (number_literal "-4")) () ")")))) (; ";")) (expression_statement "local_3c = (int *)(param_3 + local_34 + -4);" (assignment_expression "local_3c = (int *)(param_3 + local_34 + -4)" (identifier "local_3c") (= "=") (cast_expression "(int *)(param_3 + local_34 + -4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + local_34 + -4)" (( "(") (binary_expression "param_3 + local_34 + -4" (binary_expression "param_3 + local_34" (identifier "param_3") (+ "+") (identifier "local_34")) (+ "+") (number_literal "-4")) () ")")))) (; ";")) (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" (identifier "pcVar13") (= "=") (cast_expression "(code *)local_80[0x22]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_80[0x22]" (identifier "local_80") ([ "[") (number_literal "0x22") (] "]")))) (; ";")) (goto_statement "goto LAB_00057ae8;" (goto "goto") (statement_identifier "LAB_00057ae8") (; ";")) (} "}"))) (expression_statement "uVar3 = *(uint *)(param_5 + iVar7 * 4);" (assignment_expression "uVar3 = *(uint *)(param_5 + iVar7 * 4)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(param_5 + iVar7 * 4)" (* "*") (cast_expression "(uint *)(param_5 + iVar7 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + iVar7 * 4)" (( "(") (binary_expression "param_5 + iVar7 * 4" (identifier "param_5") (+ "+") (binary_expression "iVar7 * 4" (identifier "iVar7") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "uVar4 = *(uint *)(param_3 + iVar7 * 4);" (assignment_expression "uVar4 = *(uint *)(param_3 + iVar7 * 4)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(param_3 + iVar7 * 4)" (* "*") (cast_expression "(uint *)(param_3 + iVar7 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + iVar7 * 4)" (( "(") (binary_expression "param_3 + iVar7 * 4" (identifier "param_3") (+ "+") (binary_expression "iVar7 * 4" (identifier "iVar7") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar4 == uVar3)" (( "(") (binary_expression "uVar4 == uVar3" (identifier "uVar4") (== "==") (identifier "uVar3")) () ")")) (; ";")) (expression_statement "local_5c = (int *)(param_12 + local_34 + -4);" (assignment_expression "local_5c = (int *)(param_12 + local_34 + -4)" (identifier "local_5c") (= "=") (cast_expression "(int *)(param_12 + local_34 + -4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_12 + local_34 + -4)" (( "(") (binary_expression "param_12 + local_34 + -4" (binary_expression "param_12 + local_34" (identifier "param_12") (+ "+") (identifier "local_34")) (+ "+") (number_literal "-4")) () ")")))) (; ";")) (expression_statement "local_3c = (int *)(param_3 + local_34 + -4);" (assignment_expression "local_3c = (int *)(param_3 + local_34 + -4)" (identifier "local_3c") (= "=") (cast_expression "(int *)(param_3 + local_34 + -4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + local_34 + -4)" (( "(") (binary_expression "param_3 + local_34 + -4" (binary_expression "param_3 + local_34" (identifier "param_3") (+ "+") (identifier "local_34")) (+ "+") (number_literal "-4")) () ")")))) (; ";")) (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" (identifier "pcVar13") (= "=") (cast_expression "(code *)local_80[0x22]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_80[0x22]" (identifier "local_80") ([ "[") (number_literal "0x22") (] "]")))) (; ";")) (if_statement "if (uVar3 < uVar4) {\nLAB_00057ae8:\n      (*pcVar13)(param_3,param_3,param_5,param_6);\n      *local_3c = 0;\n      local_30 = 0;\nLAB_00057b2c:\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) {\n          pcVar13 = (code *)local_80[0x22];\n          goto LAB_00057b3e;\n        }\n        uVar3 = *(uint *)(param_3 + iVar8 * 4);\n        uVar4 = *(uint *)(unaff_retaddr + iVar8 * 4);\n      } while (uVar4 == uVar3);\n      pcVar13 = (code *)local_80[0x22];\n      if (uVar3 < uVar4) {\nLAB_00057b3e:\n        (*pcVar13)(param_12,unaff_retaddr,param_3,param_6);\n        local_24 = 0;\n      }\n      else {\n        (*pcVar13)(param_12,param_3,unaff_retaddr,param_6);\n        local_24 = 1;\n      }\n      local_40 = 0;\n      *local_5c = 0;\n    }\n    else {\n      (*pcVar13)(param_3,param_5,param_3,param_6);\n      *local_3c = 0;\n      iVar7 = (*(code *)*local_80)(param_12,param_3,unaff_retaddr,param_6);\n      *local_5c = iVar7;\n      local_30 = 0;\n      local_40 = 1;\n      local_24 = 0;\n    }" (if "if") (parenthesized_expression "(uVar3 < uVar4)" (( "(") (binary_expression "uVar3 < uVar4" (identifier "uVar3") (< "<") (identifier "uVar4")) () ")")) (compound_statement "{\nLAB_00057ae8:\n      (*pcVar13)(param_3,param_3,param_5,param_6);\n      *local_3c = 0;\n      local_30 = 0;\nLAB_00057b2c:\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) {\n          pcVar13 = (code *)local_80[0x22];\n          goto LAB_00057b3e;\n        }\n        uVar3 = *(uint *)(param_3 + iVar8 * 4);\n        uVar4 = *(uint *)(unaff_retaddr + iVar8 * 4);\n      } while (uVar4 == uVar3);\n      pcVar13 = (code *)local_80[0x22];\n      if (uVar3 < uVar4) {\nLAB_00057b3e:\n        (*pcVar13)(param_12,unaff_retaddr,param_3,param_6);\n        local_24 = 0;\n      }\n      else {\n        (*pcVar13)(param_12,param_3,unaff_retaddr,param_6);\n        local_24 = 1;\n      }\n      local_40 = 0;\n      *local_5c = 0;\n    }" ({ "{") (labeled_statement "LAB_00057ae8:\n      (*pcVar13)(param_3,param_3,param_5,param_6);" (statement_identifier "LAB_00057ae8") (: ":") (expression_statement "(*pcVar13)(param_3,param_3,param_5,param_6);" (call_expression "(*pcVar13)(param_3,param_3,param_5,param_6)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(param_3,param_3,param_5,param_6)" (( "(") (identifier "param_3") (, ",") (identifier "param_3") (, ",") (identifier "param_5") (, ",") (identifier "param_6") () ")"))) (; ";"))) (expression_statement "*local_3c = 0;" (assignment_expression "*local_3c = 0" (pointer_expression "*local_3c" (* "*") (identifier "local_3c")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_00057b2c:\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) {\n          pcVar13 = (code *)local_80[0x22];\n          goto LAB_00057b3e;\n        }\n        uVar3 = *(uint *)(param_3 + iVar8 * 4);\n        uVar4 = *(uint *)(unaff_retaddr + iVar8 * 4);\n      } while (uVar4 == uVar3);" (statement_identifier "LAB_00057b2c") (: ":") (do_statement "do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) {\n          pcVar13 = (code *)local_80[0x22];\n          goto LAB_00057b3e;\n        }\n        uVar3 = *(uint *)(param_3 + iVar8 * 4);\n        uVar4 = *(uint *)(unaff_retaddr + iVar8 * 4);\n      } while (uVar4 == uVar3);" (do "do") (compound_statement "{\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) {\n          pcVar13 = (code *)local_80[0x22];\n          goto LAB_00057b3e;\n        }\n        uVar3 = *(uint *)(param_3 + iVar8 * 4);\n        uVar4 = *(uint *)(unaff_retaddr + iVar8 * 4);\n      }" ({ "{") (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + -1" (identifier "iVar8") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar8 < 0) {\n          pcVar13 = (code *)local_80[0x22];\n          goto LAB_00057b3e;\n        }" (if "if") (parenthesized_expression "(iVar8 < 0)" (( "(") (binary_expression "iVar8 < 0" (identifier "iVar8") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n          pcVar13 = (code *)local_80[0x22];\n          goto LAB_00057b3e;\n        }" ({ "{") (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" (identifier "pcVar13") (= "=") (cast_expression "(code *)local_80[0x22]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_80[0x22]" (identifier "local_80") ([ "[") (number_literal "0x22") (] "]")))) (; ";")) (goto_statement "goto LAB_00057b3e;" (goto "goto") (statement_identifier "LAB_00057b3e") (; ";")) (} "}"))) (expression_statement "uVar3 = *(uint *)(param_3 + iVar8 * 4);" (assignment_expression "uVar3 = *(uint *)(param_3 + iVar8 * 4)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(param_3 + iVar8 * 4)" (* "*") (cast_expression "(uint *)(param_3 + iVar8 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + iVar8 * 4)" (( "(") (binary_expression "param_3 + iVar8 * 4" (identifier "param_3") (+ "+") (binary_expression "iVar8 * 4" (identifier "iVar8") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "uVar4 = *(uint *)(unaff_retaddr + iVar8 * 4);" (assignment_expression "uVar4 = *(uint *)(unaff_retaddr + iVar8 * 4)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(unaff_retaddr + iVar8 * 4)" (* "*") (cast_expression "(uint *)(unaff_retaddr + iVar8 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_retaddr + iVar8 * 4)" (( "(") (binary_expression "unaff_retaddr + iVar8 * 4" (identifier "unaff_retaddr") (+ "+") (binary_expression "iVar8 * 4" (identifier "iVar8") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar4 == uVar3)" (( "(") (binary_expression "uVar4 == uVar3" (identifier "uVar4") (== "==") (identifier "uVar3")) () ")")) (; ";"))) (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" (identifier "pcVar13") (= "=") (cast_expression "(code *)local_80[0x22]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_80[0x22]" (identifier "local_80") ([ "[") (number_literal "0x22") (] "]")))) (; ";")) (if_statement "if (uVar3 < uVar4) {\nLAB_00057b3e:\n        (*pcVar13)(param_12,unaff_retaddr,param_3,param_6);\n        local_24 = 0;\n      }\n      else {\n        (*pcVar13)(param_12,param_3,unaff_retaddr,param_6);\n        local_24 = 1;\n      }" (if "if") (parenthesized_expression "(uVar3 < uVar4)" (( "(") (binary_expression "uVar3 < uVar4" (identifier "uVar3") (< "<") (identifier "uVar4")) () ")")) (compound_statement "{\nLAB_00057b3e:\n        (*pcVar13)(param_12,unaff_retaddr,param_3,param_6);\n        local_24 = 0;\n      }" ({ "{") (labeled_statement "LAB_00057b3e:\n        (*pcVar13)(param_12,unaff_retaddr,param_3,param_6);" (statement_identifier "LAB_00057b3e") (: ":") (expression_statement "(*pcVar13)(param_12,unaff_retaddr,param_3,param_6);" (call_expression "(*pcVar13)(param_12,unaff_retaddr,param_3,param_6)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(param_12,unaff_retaddr,param_3,param_6)" (( "(") (identifier "param_12") (, ",") (identifier "unaff_retaddr") (, ",") (identifier "param_3") (, ",") (identifier "param_6") () ")"))) (; ";"))) (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" (identifier "local_24") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n        (*pcVar13)(param_12,param_3,unaff_retaddr,param_6);\n        local_24 = 1;\n      }" (else "else") (compound_statement "{\n        (*pcVar13)(param_12,param_3,unaff_retaddr,param_6);\n        local_24 = 1;\n      }" ({ "{") (expression_statement "(*pcVar13)(param_12,param_3,unaff_retaddr,param_6);" (call_expression "(*pcVar13)(param_12,param_3,unaff_retaddr,param_6)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(param_12,param_3,unaff_retaddr,param_6)" (( "(") (identifier "param_12") (, ",") (identifier "param_3") (, ",") (identifier "unaff_retaddr") (, ",") (identifier "param_6") () ")"))) (; ";")) (expression_statement "local_24 = 1;" (assignment_expression "local_24 = 1" (identifier "local_24") (= "=") (number_literal "1")) (; ";")) (} "}")))) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" (identifier "local_40") (= "=") (number_literal "0")) (; ";")) (expression_statement "*local_5c = 0;" (assignment_expression "*local_5c = 0" (pointer_expression "*local_5c" (* "*") (identifier "local_5c")) (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n      (*pcVar13)(param_3,param_5,param_3,param_6);\n      *local_3c = 0;\n      iVar7 = (*(code *)*local_80)(param_12,param_3,unaff_retaddr,param_6);\n      *local_5c = iVar7;\n      local_30 = 0;\n      local_40 = 1;\n      local_24 = 0;\n    }" (else "else") (compound_statement "{\n      (*pcVar13)(param_3,param_5,param_3,param_6);\n      *local_3c = 0;\n      iVar7 = (*(code *)*local_80)(param_12,param_3,unaff_retaddr,param_6);\n      *local_5c = iVar7;\n      local_30 = 0;\n      local_40 = 1;\n      local_24 = 0;\n    }" ({ "{") (expression_statement "(*pcVar13)(param_3,param_5,param_3,param_6);" (call_expression "(*pcVar13)(param_3,param_5,param_3,param_6)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(param_3,param_5,param_3,param_6)" (( "(") (identifier "param_3") (, ",") (identifier "param_5") (, ",") (identifier "param_3") (, ",") (identifier "param_6") () ")"))) (; ";")) (expression_statement "*local_3c = 0;" (assignment_expression "*local_3c = 0" (pointer_expression "*local_3c" (* "*") (identifier "local_3c")) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar7 = (*(code *)*local_80)(param_12,param_3,unaff_retaddr,param_6);" (assignment_expression "iVar7 = (*(code *)*local_80)(param_12,param_3,unaff_retaddr,param_6)" (identifier "iVar7") (= "=") (call_expression "(*(code *)*local_80)(param_12,param_3,unaff_retaddr,param_6)" (parenthesized_expression "(*(code *)*local_80)" (( "(") (pointer_expression "*(code *)*local_80" (* "*") (cast_expression "(code *)*local_80" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*local_80" (* "*") (identifier "local_80")))) () ")")) (argument_list "(param_12,param_3,unaff_retaddr,param_6)" (( "(") (identifier "param_12") (, ",") (identifier "param_3") (, ",") (identifier "unaff_retaddr") (, ",") (identifier "param_6") () ")")))) (; ";")) (expression_statement "*local_5c = iVar7;" (assignment_expression "*local_5c = iVar7" (pointer_expression "*local_5c" (* "*") (identifier "local_5c")) (= "=") (identifier "iVar7")) (; ";")) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_40 = 1;" (assignment_expression "local_40 = 1" (identifier "local_40") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" (identifier "local_24") (= "=") (number_literal "0")) (; ";")) (} "}")))) (} "}")))) (expression_statement "local_34 = local_34 + -4;" (assignment_expression "local_34 = local_34 + -4" (identifier "local_34") (= "=") (binary_expression "local_34 + -4" (identifier "local_34") (+ "+") (number_literal "-4"))) (; ";")) (if_statement "if (param_6 < param_11) {\n    __gmpn_mul(iVar14,param_7,param_11,unaff_retaddr,param_6);\n  }\n  else {\n    __gmpn_mul(iVar14,unaff_retaddr,param_6,param_7,param_11);\n  }" (if "if") (parenthesized_expression "(param_6 < param_11)" (( "(") (binary_expression "param_6 < param_11" (identifier "param_6") (< "<") (identifier "param_11")) () ")")) (compound_statement "{\n    __gmpn_mul(iVar14,param_7,param_11,unaff_retaddr,param_6);\n  }" ({ "{") (expression_statement "__gmpn_mul(iVar14,param_7,param_11,unaff_retaddr,param_6);" (call_expression "__gmpn_mul(iVar14,param_7,param_11,unaff_retaddr,param_6)" (identifier "__gmpn_mul") (argument_list "(iVar14,param_7,param_11,unaff_retaddr,param_6)" (( "(") (identifier "iVar14") (, ",") (identifier "param_7") (, ",") (identifier "param_11") (, ",") (identifier "unaff_retaddr") (, ",") (identifier "param_6") () ")"))) (; ";")) (} "}")) (else_clause "else {\n    __gmpn_mul(iVar14,unaff_retaddr,param_6,param_7,param_11);\n  }" (else "else") (compound_statement "{\n    __gmpn_mul(iVar14,unaff_retaddr,param_6,param_7,param_11);\n  }" ({ "{") (expression_statement "__gmpn_mul(iVar14,unaff_retaddr,param_6,param_7,param_11);" (call_expression "__gmpn_mul(iVar14,unaff_retaddr,param_6,param_7,param_11)" (identifier "__gmpn_mul") (argument_list "(iVar14,unaff_retaddr,param_6,param_7,param_11)" (( "(") (identifier "iVar14") (, ",") (identifier "unaff_retaddr") (, ",") (identifier "param_6") (, ",") (identifier "param_7") (, ",") (identifier "param_11") () ")"))) (; ";")) (} "}")))) (expression_statement "uVar9 = (*(code *)*local_80)(unaff_retaddr,iVar6,iVar14,param_6 + param_11);" (assignment_expression "uVar9 = (*(code *)*local_80)(unaff_retaddr,iVar6,iVar14,param_6 + param_11)" (identifier "uVar9") (= "=") (call_expression "(*(code *)*local_80)(unaff_retaddr,iVar6,iVar14,param_6 + param_11)" (parenthesized_expression "(*(code *)*local_80)" (( "(") (pointer_expression "*(code *)*local_80" (* "*") (cast_expression "(code *)*local_80" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*local_80" (* "*") (identifier "local_80")))) () ")")) (argument_list "(unaff_retaddr,iVar6,iVar14,param_6 + param_11)" (( "(") (identifier "unaff_retaddr") (, ",") (identifier "iVar6") (, ",") (identifier "iVar14") (, ",") (binary_expression "param_6 + param_11" (identifier "param_6") (+ "+") (identifier "param_11")) () ")")))) (; ";")) (expression_statement "*(undefined4 *)(unaff_retaddr + -4 + iVar10) = uVar9;" (assignment_expression "*(undefined4 *)(unaff_retaddr + -4 + iVar10) = uVar9" (pointer_expression "*(undefined4 *)(unaff_retaddr + -4 + iVar10)" (* "*") (cast_expression "(undefined4 *)(unaff_retaddr + -4 + iVar10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_retaddr + -4 + iVar10)" (( "(") (binary_expression "unaff_retaddr + -4 + iVar10" (binary_expression "unaff_retaddr + -4" (identifier "unaff_retaddr") (+ "+") (number_literal "-4")) (+ "+") (identifier "iVar10")) () ")")))) (= "=") (identifier "uVar9")) (; ";")) (expression_statement "iVar7 = param_11;" (assignment_expression "iVar7 = param_11" (identifier "iVar7") (= "=") (identifier "param_11")) (; ";")) (do_statement "do {\n    iVar7 = iVar7 + -1;\n    if (iVar7 < 0) {\n      pcVar13 = (code *)local_80[0x22];\n      goto LAB_000574ba;\n    }\n    uVar3 = *(uint *)(param_9 + iVar7 * 4);\n    uVar4 = *(uint *)(param_10 + iVar7 * 4);\n  } while (uVar4 == uVar3);" (do "do") (compound_statement "{\n    iVar7 = iVar7 + -1;\n    if (iVar7 < 0) {\n      pcVar13 = (code *)local_80[0x22];\n      goto LAB_000574ba;\n    }\n    uVar3 = *(uint *)(param_9 + iVar7 * 4);\n    uVar4 = *(uint *)(param_10 + iVar7 * 4);\n  }" ({ "{") (expression_statement "iVar7 = iVar7 + -1;" (assignment_expression "iVar7 = iVar7 + -1" (identifier "iVar7") (= "=") (binary_expression "iVar7 + -1" (identifier "iVar7") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar7 < 0) {\n      pcVar13 = (code *)local_80[0x22];\n      goto LAB_000574ba;\n    }" (if "if") (parenthesized_expression "(iVar7 < 0)" (( "(") (binary_expression "iVar7 < 0" (identifier "iVar7") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      pcVar13 = (code *)local_80[0x22];\n      goto LAB_000574ba;\n    }" ({ "{") (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" (identifier "pcVar13") (= "=") (cast_expression "(code *)local_80[0x22]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_80[0x22]" (identifier "local_80") ([ "[") (number_literal "0x22") (] "]")))) (; ";")) (goto_statement "goto LAB_000574ba;" (goto "goto") (statement_identifier "LAB_000574ba") (; ";")) (} "}"))) (expression_statement "uVar3 = *(uint *)(param_9 + iVar7 * 4);" (assignment_expression "uVar3 = *(uint *)(param_9 + iVar7 * 4)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(param_9 + iVar7 * 4)" (* "*") (cast_expression "(uint *)(param_9 + iVar7 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_9 + iVar7 * 4)" (( "(") (binary_expression "param_9 + iVar7 * 4" (identifier "param_9") (+ "+") (binary_expression "iVar7 * 4" (identifier "iVar7") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "uVar4 = *(uint *)(param_10 + iVar7 * 4);" (assignment_expression "uVar4 = *(uint *)(param_10 + iVar7 * 4)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(param_10 + iVar7 * 4)" (* "*") (cast_expression "(uint *)(param_10 + iVar7 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_10 + iVar7 * 4)" (( "(") (binary_expression "param_10 + iVar7 * 4" (identifier "param_10") (+ "+") (binary_expression "iVar7 * 4" (identifier "iVar7") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar4 == uVar3)" (( "(") (binary_expression "uVar4 == uVar3" (identifier "uVar4") (== "==") (identifier "uVar3")) () ")")) (; ";")) (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" (identifier "pcVar13") (= "=") (cast_expression "(code *)local_80[0x22]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_80[0x22]" (identifier "local_80") ([ "[") (number_literal "0x22") (] "]")))) (; ";")) (if_statement "if (uVar3 < uVar4) {\nLAB_000574ba:\n    (*pcVar13)(iVar5,param_10,param_9,param_11);\n    local_60 = 0;\n  }\n  else {\n    (*pcVar13)(iVar5,param_9,param_10,param_11);\n    local_30 = local_30 ^ 1;\n    local_60 = 1;\n  }" (if "if") (parenthesized_expression "(uVar3 < uVar4)" (( "(") (binary_expression "uVar3 < uVar4" (identifier "uVar3") (< "<") (identifier "uVar4")) () ")")) (compound_statement "{\nLAB_000574ba:\n    (*pcVar13)(iVar5,param_10,param_9,param_11);\n    local_60 = 0;\n  }" ({ "{") (labeled_statement "LAB_000574ba:\n    (*pcVar13)(iVar5,param_10,param_9,param_11);" (statement_identifier "LAB_000574ba") (: ":") (expression_statement "(*pcVar13)(iVar5,param_10,param_9,param_11);" (call_expression "(*pcVar13)(iVar5,param_10,param_9,param_11)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(iVar5,param_10,param_9,param_11)" (( "(") (identifier "iVar5") (, ",") (identifier "param_10") (, ",") (identifier "param_9") (, ",") (identifier "param_11") () ")"))) (; ";"))) (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" (identifier "local_60") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n    (*pcVar13)(iVar5,param_9,param_10,param_11);\n    local_30 = local_30 ^ 1;\n    local_60 = 1;\n  }" (else "else") (compound_statement "{\n    (*pcVar13)(iVar5,param_9,param_10,param_11);\n    local_30 = local_30 ^ 1;\n    local_60 = 1;\n  }" ({ "{") (expression_statement "(*pcVar13)(iVar5,param_9,param_10,param_11);" (call_expression "(*pcVar13)(iVar5,param_9,param_10,param_11)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(iVar5,param_9,param_10,param_11)" (( "(") (identifier "iVar5") (, ",") (identifier "param_9") (, ",") (identifier "param_10") (, ",") (identifier "param_11") () ")"))) (; ";")) (expression_statement "local_30 = local_30 ^ 1;" (assignment_expression "local_30 = local_30 ^ 1" (identifier "local_30") (= "=") (binary_expression "local_30 ^ 1" (identifier "local_30") (^ "^") (number_literal "1"))) (; ";")) (expression_statement "local_60 = 1;" (assignment_expression "local_60 = 1" (identifier "local_60") (= "=") (number_literal "1")) (; ";")) (} "}")))) (if_statement "if (param_6 < param_11) {\n    __gmpn_mul(iVar14,iVar5,param_11,param_5,param_6);\n  }\n  else {\n    __gmpn_mul(iVar14,param_5,param_6,iVar5,param_11);\n  }" (if "if") (parenthesized_expression "(param_6 < param_11)" (( "(") (binary_expression "param_6 < param_11" (identifier "param_6") (< "<") (identifier "param_11")) () ")")) (compound_statement "{\n    __gmpn_mul(iVar14,iVar5,param_11,param_5,param_6);\n  }" ({ "{") (expression_statement "__gmpn_mul(iVar14,iVar5,param_11,param_5,param_6);" (call_expression "__gmpn_mul(iVar14,iVar5,param_11,param_5,param_6)" (identifier "__gmpn_mul") (argument_list "(iVar14,iVar5,param_11,param_5,param_6)" (( "(") (identifier "iVar14") (, ",") (identifier "iVar5") (, ",") (identifier "param_11") (, ",") (identifier "param_5") (, ",") (identifier "param_6") () ")"))) (; ";")) (} "}")) (else_clause "else {\n    __gmpn_mul(iVar14,param_5,param_6,iVar5,param_11);\n  }" (else "else") (compound_statement "{\n    __gmpn_mul(iVar14,param_5,param_6,iVar5,param_11);\n  }" ({ "{") (expression_statement "__gmpn_mul(iVar14,param_5,param_6,iVar5,param_11);" (call_expression "__gmpn_mul(iVar14,param_5,param_6,iVar5,param_11)" (identifier "__gmpn_mul") (argument_list "(iVar14,param_5,param_6,iVar5,param_11)" (( "(") (identifier "iVar14") (, ",") (identifier "param_5") (, ",") (identifier "param_6") (, ",") (identifier "iVar5") (, ",") (identifier "param_11") () ")"))) (; ";")) (} "}")))) (expression_statement "*(undefined4 *)(iVar14 + -4 + iVar10) = 0;" (assignment_expression "*(undefined4 *)(iVar14 + -4 + iVar10) = 0" (pointer_expression "*(undefined4 *)(iVar14 + -4 + iVar10)" (* "*") (cast_expression "(undefined4 *)(iVar14 + -4 + iVar10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + -4 + iVar10)" (( "(") (binary_expression "iVar14 + -4 + iVar10" (binary_expression "iVar14 + -4" (identifier "iVar14") (+ "+") (number_literal "-4")) (+ "+") (identifier "iVar10")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar2 = (int *)(iVar5 + -4 + iVar1 * 4);" (assignment_expression "piVar2 = (int *)(iVar5 + -4 + iVar1 * 4)" (identifier "piVar2") (= "=") (cast_expression "(int *)(iVar5 + -4 + iVar1 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + -4 + iVar1 * 4)" (( "(") (binary_expression "iVar5 + -4 + iVar1 * 4" (binary_expression "iVar5 + -4" (identifier "iVar5") (+ "+") (number_literal "-4")) (+ "+") (binary_expression "iVar1 * 4" (identifier "iVar1") (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "iVar7 = param_11;" (assignment_expression "iVar7 = param_11" (identifier "iVar7") (= "=") (identifier "param_11")) (; ";")) (if_statement "if (local_60 == 0) {\n    iVar7 = (*(code *)*local_80)(iVar5,iVar5,param_8,param_11);\n    *piVar2 = iVar7;\n    if (iVar7 == 0) goto LAB_00057a50;\n    if (param_11 < param_6) {\n      __gmpn_mul(param_5,param_3,param_6,iVar5,iVar1);\n    }\n    else {\n      __gmpn_mul(param_5,iVar5,iVar1,param_3,param_6);\n    }\n    if (*(int *)(param_3 + local_34) != 0) {\n      (*(code *)*local_80)(local_34 + param_5,local_34 + param_5,iVar5,iVar1);\n    }\n  }\n  else {\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057a2e;\n      }\n      uVar3 = *(uint *)(iVar5 + iVar7 * 4);\n      uVar4 = *(uint *)(param_8 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_00057a2e:\n      (*pcVar13)(iVar5,param_8,iVar5,param_11);\n      local_60 = 0;\n    }\n    else {\n      (*pcVar13)(iVar5,iVar5,param_8,param_11);\n    }\n    *piVar2 = 0;\nLAB_00057a50:\n    if (iVar12 < param_11) {\n      __gmpn_mul(param_5,iVar5,param_11,param_3,iVar12);\n    }\n    else {\n      __gmpn_mul(param_5,param_3,iVar12,iVar5,param_11);\n    }\n  }" (if "if") (parenthesized_expression "(local_60 == 0)" (( "(") (binary_expression "local_60 == 0" (identifier "local_60") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar7 = (*(code *)*local_80)(iVar5,iVar5,param_8,param_11);\n    *piVar2 = iVar7;\n    if (iVar7 == 0) goto LAB_00057a50;\n    if (param_11 < param_6) {\n      __gmpn_mul(param_5,param_3,param_6,iVar5,iVar1);\n    }\n    else {\n      __gmpn_mul(param_5,iVar5,iVar1,param_3,param_6);\n    }\n    if (*(int *)(param_3 + local_34) != 0) {\n      (*(code *)*local_80)(local_34 + param_5,local_34 + param_5,iVar5,iVar1);\n    }\n  }" ({ "{") (expression_statement "iVar7 = (*(code *)*local_80)(iVar5,iVar5,param_8,param_11);" (assignment_expression "iVar7 = (*(code *)*local_80)(iVar5,iVar5,param_8,param_11)" (identifier "iVar7") (= "=") (call_expression "(*(code *)*local_80)(iVar5,iVar5,param_8,param_11)" (parenthesized_expression "(*(code *)*local_80)" (( "(") (pointer_expression "*(code *)*local_80" (* "*") (cast_expression "(code *)*local_80" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*local_80" (* "*") (identifier "local_80")))) () ")")) (argument_list "(iVar5,iVar5,param_8,param_11)" (( "(") (identifier "iVar5") (, ",") (identifier "iVar5") (, ",") (identifier "param_8") (, ",") (identifier "param_11") () ")")))) (; ";")) (expression_statement "*piVar2 = iVar7;" (assignment_expression "*piVar2 = iVar7" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (= "=") (identifier "iVar7")) (; ";")) (if_statement "if (iVar7 == 0) goto LAB_00057a50;" (if "if") (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00057a50;" (goto "goto") (statement_identifier "LAB_00057a50") (; ";"))) (if_statement "if (param_11 < param_6) {\n      __gmpn_mul(param_5,param_3,param_6,iVar5,iVar1);\n    }\n    else {\n      __gmpn_mul(param_5,iVar5,iVar1,param_3,param_6);\n    }" (if "if") (parenthesized_expression "(param_11 < param_6)" (( "(") (binary_expression "param_11 < param_6" (identifier "param_11") (< "<") (identifier "param_6")) () ")")) (compound_statement "{\n      __gmpn_mul(param_5,param_3,param_6,iVar5,iVar1);\n    }" ({ "{") (expression_statement "__gmpn_mul(param_5,param_3,param_6,iVar5,iVar1);" (call_expression "__gmpn_mul(param_5,param_3,param_6,iVar5,iVar1)" (identifier "__gmpn_mul") (argument_list "(param_5,param_3,param_6,iVar5,iVar1)" (( "(") (identifier "param_5") (, ",") (identifier "param_3") (, ",") (identifier "param_6") (, ",") (identifier "iVar5") (, ",") (identifier "iVar1") () ")"))) (; ";")) (} "}")) (else_clause "else {\n      __gmpn_mul(param_5,iVar5,iVar1,param_3,param_6);\n    }" (else "else") (compound_statement "{\n      __gmpn_mul(param_5,iVar5,iVar1,param_3,param_6);\n    }" ({ "{") (expression_statement "__gmpn_mul(param_5,iVar5,iVar1,param_3,param_6);" (call_expression "__gmpn_mul(param_5,iVar5,iVar1,param_3,param_6)" (identifier "__gmpn_mul") (argument_list "(param_5,iVar5,iVar1,param_3,param_6)" (( "(") (identifier "param_5") (, ",") (identifier "iVar5") (, ",") (identifier "iVar1") (, ",") (identifier "param_3") (, ",") (identifier "param_6") () ")"))) (; ";")) (} "}")))) (if_statement "if (*(int *)(param_3 + local_34) != 0) {\n      (*(code *)*local_80)(local_34 + param_5,local_34 + param_5,iVar5,iVar1);\n    }" (if "if") (parenthesized_expression "(*(int *)(param_3 + local_34) != 0)" (( "(") (binary_expression "*(int *)(param_3 + local_34) != 0" (pointer_expression "*(int *)(param_3 + local_34)" (* "*") (cast_expression "(int *)(param_3 + local_34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + local_34)" (( "(") (binary_expression "param_3 + local_34" (identifier "param_3") (+ "+") (identifier "local_34")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      (*(code *)*local_80)(local_34 + param_5,local_34 + param_5,iVar5,iVar1);\n    }" ({ "{") (expression_statement "(*(code *)*local_80)(local_34 + param_5,local_34 + param_5,iVar5,iVar1);" (call_expression "(*(code *)*local_80)(local_34 + param_5,local_34 + param_5,iVar5,iVar1)" (parenthesized_expression "(*(code *)*local_80)" (( "(") (pointer_expression "*(code *)*local_80" (* "*") (cast_expression "(code *)*local_80" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*local_80" (* "*") (identifier "local_80")))) () ")")) (argument_list "(local_34 + param_5,local_34 + param_5,iVar5,iVar1)" (( "(") (binary_expression "local_34 + param_5" (identifier "local_34") (+ "+") (identifier "param_5")) (, ",") (binary_expression "local_34 + param_5" (identifier "local_34") (+ "+") (identifier "param_5")) (, ",") (identifier "iVar5") (, ",") (identifier "iVar1") () ")"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057a2e;\n      }\n      uVar3 = *(uint *)(iVar5 + iVar7 * 4);\n      uVar4 = *(uint *)(param_8 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_00057a2e:\n      (*pcVar13)(iVar5,param_8,iVar5,param_11);\n      local_60 = 0;\n    }\n    else {\n      (*pcVar13)(iVar5,iVar5,param_8,param_11);\n    }\n    *piVar2 = 0;\nLAB_00057a50:\n    if (iVar12 < param_11) {\n      __gmpn_mul(param_5,iVar5,param_11,param_3,iVar12);\n    }\n    else {\n      __gmpn_mul(param_5,param_3,iVar12,iVar5,param_11);\n    }\n  }" (else "else") (compound_statement "{\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057a2e;\n      }\n      uVar3 = *(uint *)(iVar5 + iVar7 * 4);\n      uVar4 = *(uint *)(param_8 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_00057a2e:\n      (*pcVar13)(iVar5,param_8,iVar5,param_11);\n      local_60 = 0;\n    }\n    else {\n      (*pcVar13)(iVar5,iVar5,param_8,param_11);\n    }\n    *piVar2 = 0;\nLAB_00057a50:\n    if (iVar12 < param_11) {\n      __gmpn_mul(param_5,iVar5,param_11,param_3,iVar12);\n    }\n    else {\n      __gmpn_mul(param_5,param_3,iVar12,iVar5,param_11);\n    }\n  }" ({ "{") (do_statement "do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057a2e;\n      }\n      uVar3 = *(uint *)(iVar5 + iVar7 * 4);\n      uVar4 = *(uint *)(param_8 + iVar7 * 4);\n    } while (uVar4 == uVar3);" (do "do") (compound_statement "{\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057a2e;\n      }\n      uVar3 = *(uint *)(iVar5 + iVar7 * 4);\n      uVar4 = *(uint *)(param_8 + iVar7 * 4);\n    }" ({ "{") (expression_statement "iVar7 = iVar7 + -1;" (assignment_expression "iVar7 = iVar7 + -1" (identifier "iVar7") (= "=") (binary_expression "iVar7 + -1" (identifier "iVar7") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057a2e;\n      }" (if "if") (parenthesized_expression "(iVar7 < 0)" (( "(") (binary_expression "iVar7 < 0" (identifier "iVar7") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_00057a2e;\n      }" ({ "{") (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" (identifier "pcVar13") (= "=") (cast_expression "(code *)local_80[0x22]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_80[0x22]" (identifier "local_80") ([ "[") (number_literal "0x22") (] "]")))) (; ";")) (goto_statement "goto LAB_00057a2e;" (goto "goto") (statement_identifier "LAB_00057a2e") (; ";")) (} "}"))) (expression_statement "uVar3 = *(uint *)(iVar5 + iVar7 * 4);" (assignment_expression "uVar3 = *(uint *)(iVar5 + iVar7 * 4)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(iVar5 + iVar7 * 4)" (* "*") (cast_expression "(uint *)(iVar5 + iVar7 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + iVar7 * 4)" (( "(") (binary_expression "iVar5 + iVar7 * 4" (identifier "iVar5") (+ "+") (binary_expression "iVar7 * 4" (identifier "iVar7") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "uVar4 = *(uint *)(param_8 + iVar7 * 4);" (assignment_expression "uVar4 = *(uint *)(param_8 + iVar7 * 4)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(param_8 + iVar7 * 4)" (* "*") (cast_expression "(uint *)(param_8 + iVar7 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_8 + iVar7 * 4)" (( "(") (binary_expression "param_8 + iVar7 * 4" (identifier "param_8") (+ "+") (binary_expression "iVar7 * 4" (identifier "iVar7") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar4 == uVar3)" (( "(") (binary_expression "uVar4 == uVar3" (identifier "uVar4") (== "==") (identifier "uVar3")) () ")")) (; ";")) (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" (identifier "pcVar13") (= "=") (cast_expression "(code *)local_80[0x22]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_80[0x22]" (identifier "local_80") ([ "[") (number_literal "0x22") (] "]")))) (; ";")) (if_statement "if (uVar3 < uVar4) {\nLAB_00057a2e:\n      (*pcVar13)(iVar5,param_8,iVar5,param_11);\n      local_60 = 0;\n    }\n    else {\n      (*pcVar13)(iVar5,iVar5,param_8,param_11);\n    }" (if "if") (parenthesized_expression "(uVar3 < uVar4)" (( "(") (binary_expression "uVar3 < uVar4" (identifier "uVar3") (< "<") (identifier "uVar4")) () ")")) (compound_statement "{\nLAB_00057a2e:\n      (*pcVar13)(iVar5,param_8,iVar5,param_11);\n      local_60 = 0;\n    }" ({ "{") (labeled_statement "LAB_00057a2e:\n      (*pcVar13)(iVar5,param_8,iVar5,param_11);" (statement_identifier "LAB_00057a2e") (: ":") (expression_statement "(*pcVar13)(iVar5,param_8,iVar5,param_11);" (call_expression "(*pcVar13)(iVar5,param_8,iVar5,param_11)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(iVar5,param_8,iVar5,param_11)" (( "(") (identifier "iVar5") (, ",") (identifier "param_8") (, ",") (identifier "iVar5") (, ",") (identifier "param_11") () ")"))) (; ";"))) (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" (identifier "local_60") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n      (*pcVar13)(iVar5,iVar5,param_8,param_11);\n    }" (else "else") (compound_statement "{\n      (*pcVar13)(iVar5,iVar5,param_8,param_11);\n    }" ({ "{") (expression_statement "(*pcVar13)(iVar5,iVar5,param_8,param_11);" (call_expression "(*pcVar13)(iVar5,iVar5,param_8,param_11)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(iVar5,iVar5,param_8,param_11)" (( "(") (identifier "iVar5") (, ",") (identifier "iVar5") (, ",") (identifier "param_8") (, ",") (identifier "param_11") () ")"))) (; ";")) (} "}")))) (expression_statement "*piVar2 = 0;" (assignment_expression "*piVar2 = 0" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_00057a50:\n    if (iVar12 < param_11) {\n      __gmpn_mul(param_5,iVar5,param_11,param_3,iVar12);\n    }\n    else {\n      __gmpn_mul(param_5,param_3,iVar12,iVar5,param_11);\n    }" (statement_identifier "LAB_00057a50") (: ":") (if_statement "if (iVar12 < param_11) {\n      __gmpn_mul(param_5,iVar5,param_11,param_3,iVar12);\n    }\n    else {\n      __gmpn_mul(param_5,param_3,iVar12,iVar5,param_11);\n    }" (if "if") (parenthesized_expression "(iVar12 < param_11)" (( "(") (binary_expression "iVar12 < param_11" (identifier "iVar12") (< "<") (identifier "param_11")) () ")")) (compound_statement "{\n      __gmpn_mul(param_5,iVar5,param_11,param_3,iVar12);\n    }" ({ "{") (expression_statement "__gmpn_mul(param_5,iVar5,param_11,param_3,iVar12);" (call_expression "__gmpn_mul(param_5,iVar5,param_11,param_3,iVar12)" (identifier "__gmpn_mul") (argument_list "(param_5,iVar5,param_11,param_3,iVar12)" (( "(") (identifier "param_5") (, ",") (identifier "iVar5") (, ",") (identifier "param_11") (, ",") (identifier "param_3") (, ",") (identifier "iVar12") () ")"))) (; ";")) (} "}")) (else_clause "else {\n      __gmpn_mul(param_5,param_3,iVar12,iVar5,param_11);\n    }" (else "else") (compound_statement "{\n      __gmpn_mul(param_5,param_3,iVar12,iVar5,param_11);\n    }" ({ "{") (expression_statement "__gmpn_mul(param_5,param_3,iVar12,iVar5,param_11);" (call_expression "__gmpn_mul(param_5,param_3,iVar12,iVar5,param_11)" (identifier "__gmpn_mul") (argument_list "(param_5,param_3,iVar12,iVar5,param_11)" (( "(") (identifier "param_5") (, ",") (identifier "param_3") (, ",") (identifier "iVar12") (, ",") (identifier "iVar5") (, ",") (identifier "param_11") () ")"))) (; ";")) (} "}"))))) (} "}")))) (expression_statement "*(undefined4 *)(iVar6 + -4 + iVar10) = 0;" (assignment_expression "*(undefined4 *)(iVar6 + -4 + iVar10) = 0" (pointer_expression "*(undefined4 *)(iVar6 + -4 + iVar10)" (* "*") (cast_expression "(undefined4 *)(iVar6 + -4 + iVar10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + -4 + iVar10)" (( "(") (binary_expression "iVar6 + -4 + iVar10" (binary_expression "iVar6 + -4" (identifier "iVar6") (+ "+") (number_literal "-4")) (+ "+") (identifier "iVar10")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar10 = iVar11;" (assignment_expression "iVar10 = iVar11" (identifier "iVar10") (= "=") (identifier "iVar11")) (; ";")) (if_statement "if (local_40 == local_60) {\n    (*(code *)*local_80)(param_5,param_5,iVar6,iVar11);\n    local_64 = 0;\n    if (local_60 == 0) goto LAB_000578c7;\nLAB_000575ee:\n    iVar11 = (*(code *)*local_80)(iVar5,iVar5,param_7,param_11);\n    *piVar2 = iVar11;\nLAB_00057608:\n    if (param_6 <= param_11) goto LAB_000578fc;\nLAB_00057610:\n    __gmpn_mul(iVar6,param_4,param_6,iVar5,iVar1);\n    if (local_40 != 0) goto LAB_00057638;\nLAB_00057924:\n    iVar11 = (*(code *)*local_80)(param_3,param_3,param_4,param_6);\n    *local_3c = *local_3c + iVar11;\n  }\n  else {\n    do {\n      iVar10 = iVar10 + -1;\n      if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000575cb;\n      }\n      uVar3 = *(uint *)(param_5 + iVar10 * 4);\n      uVar4 = *(uint *)(iVar6 + iVar10 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_000575cb:\n      (*pcVar13)(param_5,iVar6,param_5,iVar11);\n      local_64 = 0;\n    }\n    else {\n      (*pcVar13)(param_5,param_5,iVar6,iVar11);\n      local_64 = 1;\n    }\n    if (local_60 != 0) goto LAB_000575ee;\nLAB_000578c7:\n    pcVar13 = (code *)local_80[0x22];\n    iVar11 = param_11;\n    if (*piVar2 == 0) {\n      do {\n        iVar11 = iVar11 + -1;\n        if (iVar11 < 0) goto LAB_00057cd1;\n        uVar3 = *(uint *)(param_7 + iVar11 * 4);\n        uVar4 = *(uint *)(iVar5 + iVar11 * 4);\n      } while (uVar4 == uVar3);\n      if (uVar3 < uVar4) {\nLAB_00057cd1:\n        (*pcVar13)(iVar5,iVar5,param_7,param_11);\n      }\n      else {\n        (*pcVar13)(iVar5,param_7,iVar5,param_11);\n        local_60 = 1;\n      }\n      goto LAB_00057608;\n    }\n    iVar11 = (*pcVar13)(iVar5,iVar5,param_7,param_11);\n    *piVar2 = *piVar2 - iVar11;\n    if (param_11 < param_6) goto LAB_00057610;\nLAB_000578fc:\n    __gmpn_mul(iVar6,iVar5,iVar1,param_4,param_6);\n    if (local_40 == 0) goto LAB_00057924;\nLAB_00057638:\n    (*(code *)local_80[0x22])(param_3,param_4,param_3,param_6);\n  }" (if "if") (parenthesized_expression "(local_40 == local_60)" (( "(") (binary_expression "local_40 == local_60" (identifier "local_40") (== "==") (identifier "local_60")) () ")")) (compound_statement "{\n    (*(code *)*local_80)(param_5,param_5,iVar6,iVar11);\n    local_64 = 0;\n    if (local_60 == 0) goto LAB_000578c7;\nLAB_000575ee:\n    iVar11 = (*(code *)*local_80)(iVar5,iVar5,param_7,param_11);\n    *piVar2 = iVar11;\nLAB_00057608:\n    if (param_6 <= param_11) goto LAB_000578fc;\nLAB_00057610:\n    __gmpn_mul(iVar6,param_4,param_6,iVar5,iVar1);\n    if (local_40 != 0) goto LAB_00057638;\nLAB_00057924:\n    iVar11 = (*(code *)*local_80)(param_3,param_3,param_4,param_6);\n    *local_3c = *local_3c + iVar11;\n  }" ({ "{") (expression_statement "(*(code *)*local_80)(param_5,param_5,iVar6,iVar11);" (call_expression "(*(code *)*local_80)(param_5,param_5,iVar6,iVar11)" (parenthesized_expression "(*(code *)*local_80)" (( "(") (pointer_expression "*(code *)*local_80" (* "*") (cast_expression "(code *)*local_80" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*local_80" (* "*") (identifier "local_80")))) () ")")) (argument_list "(param_5,param_5,iVar6,iVar11)" (( "(") (identifier "param_5") (, ",") (identifier "param_5") (, ",") (identifier "iVar6") (, ",") (identifier "iVar11") () ")"))) (; ";")) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" (identifier "local_64") (= "=") (number_literal "0")) (; ";")) (if_statement "if (local_60 == 0) goto LAB_000578c7;" (if "if") (parenthesized_expression "(local_60 == 0)" (( "(") (binary_expression "local_60 == 0" (identifier "local_60") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000578c7;" (goto "goto") (statement_identifier "LAB_000578c7") (; ";"))) (labeled_statement "LAB_000575ee:\n    iVar11 = (*(code *)*local_80)(iVar5,iVar5,param_7,param_11);" (statement_identifier "LAB_000575ee") (: ":") (expression_statement "iVar11 = (*(code *)*local_80)(iVar5,iVar5,param_7,param_11);" (assignment_expression "iVar11 = (*(code *)*local_80)(iVar5,iVar5,param_7,param_11)" (identifier "iVar11") (= "=") (call_expression "(*(code *)*local_80)(iVar5,iVar5,param_7,param_11)" (parenthesized_expression "(*(code *)*local_80)" (( "(") (pointer_expression "*(code *)*local_80" (* "*") (cast_expression "(code *)*local_80" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*local_80" (* "*") (identifier "local_80")))) () ")")) (argument_list "(iVar5,iVar5,param_7,param_11)" (( "(") (identifier "iVar5") (, ",") (identifier "iVar5") (, ",") (identifier "param_7") (, ",") (identifier "param_11") () ")")))) (; ";"))) (expression_statement "*piVar2 = iVar11;" (assignment_expression "*piVar2 = iVar11" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (= "=") (identifier "iVar11")) (; ";")) (labeled_statement "LAB_00057608:\n    if (param_6 <= param_11) goto LAB_000578fc;" (statement_identifier "LAB_00057608") (: ":") (if_statement "if (param_6 <= param_11) goto LAB_000578fc;" (if "if") (parenthesized_expression "(param_6 <= param_11)" (( "(") (binary_expression "param_6 <= param_11" (identifier "param_6") (<= "<=") (identifier "param_11")) () ")")) (goto_statement "goto LAB_000578fc;" (goto "goto") (statement_identifier "LAB_000578fc") (; ";")))) (labeled_statement "LAB_00057610:\n    __gmpn_mul(iVar6,param_4,param_6,iVar5,iVar1);" (statement_identifier "LAB_00057610") (: ":") (expression_statement "__gmpn_mul(iVar6,param_4,param_6,iVar5,iVar1);" (call_expression "__gmpn_mul(iVar6,param_4,param_6,iVar5,iVar1)" (identifier "__gmpn_mul") (argument_list "(iVar6,param_4,param_6,iVar5,iVar1)" (( "(") (identifier "iVar6") (, ",") (identifier "param_4") (, ",") (identifier "param_6") (, ",") (identifier "iVar5") (, ",") (identifier "iVar1") () ")"))) (; ";"))) (if_statement "if (local_40 != 0) goto LAB_00057638;" (if "if") (parenthesized_expression "(local_40 != 0)" (( "(") (binary_expression "local_40 != 0" (identifier "local_40") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00057638;" (goto "goto") (statement_identifier "LAB_00057638") (; ";"))) (labeled_statement "LAB_00057924:\n    iVar11 = (*(code *)*local_80)(param_3,param_3,param_4,param_6);" (statement_identifier "LAB_00057924") (: ":") (expression_statement "iVar11 = (*(code *)*local_80)(param_3,param_3,param_4,param_6);" (assignment_expression "iVar11 = (*(code *)*local_80)(param_3,param_3,param_4,param_6)" (identifier "iVar11") (= "=") (call_expression "(*(code *)*local_80)(param_3,param_3,param_4,param_6)" (parenthesized_expression "(*(code *)*local_80)" (( "(") (pointer_expression "*(code *)*local_80" (* "*") (cast_expression "(code *)*local_80" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*local_80" (* "*") (identifier "local_80")))) () ")")) (argument_list "(param_3,param_3,param_4,param_6)" (( "(") (identifier "param_3") (, ",") (identifier "param_3") (, ",") (identifier "param_4") (, ",") (identifier "param_6") () ")")))) (; ";"))) (expression_statement "*local_3c = *local_3c + iVar11;" (assignment_expression "*local_3c = *local_3c + iVar11" (pointer_expression "*local_3c" (* "*") (identifier "local_3c")) (= "=") (binary_expression "*local_3c + iVar11" (pointer_expression "*local_3c" (* "*") (identifier "local_3c")) (+ "+") (identifier "iVar11"))) (; ";")) (} "}")) (else_clause "else {\n    do {\n      iVar10 = iVar10 + -1;\n      if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000575cb;\n      }\n      uVar3 = *(uint *)(param_5 + iVar10 * 4);\n      uVar4 = *(uint *)(iVar6 + iVar10 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_000575cb:\n      (*pcVar13)(param_5,iVar6,param_5,iVar11);\n      local_64 = 0;\n    }\n    else {\n      (*pcVar13)(param_5,param_5,iVar6,iVar11);\n      local_64 = 1;\n    }\n    if (local_60 != 0) goto LAB_000575ee;\nLAB_000578c7:\n    pcVar13 = (code *)local_80[0x22];\n    iVar11 = param_11;\n    if (*piVar2 == 0) {\n      do {\n        iVar11 = iVar11 + -1;\n        if (iVar11 < 0) goto LAB_00057cd1;\n        uVar3 = *(uint *)(param_7 + iVar11 * 4);\n        uVar4 = *(uint *)(iVar5 + iVar11 * 4);\n      } while (uVar4 == uVar3);\n      if (uVar3 < uVar4) {\nLAB_00057cd1:\n        (*pcVar13)(iVar5,iVar5,param_7,param_11);\n      }\n      else {\n        (*pcVar13)(iVar5,param_7,iVar5,param_11);\n        local_60 = 1;\n      }\n      goto LAB_00057608;\n    }\n    iVar11 = (*pcVar13)(iVar5,iVar5,param_7,param_11);\n    *piVar2 = *piVar2 - iVar11;\n    if (param_11 < param_6) goto LAB_00057610;\nLAB_000578fc:\n    __gmpn_mul(iVar6,iVar5,iVar1,param_4,param_6);\n    if (local_40 == 0) goto LAB_00057924;\nLAB_00057638:\n    (*(code *)local_80[0x22])(param_3,param_4,param_3,param_6);\n  }" (else "else") (compound_statement "{\n    do {\n      iVar10 = iVar10 + -1;\n      if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000575cb;\n      }\n      uVar3 = *(uint *)(param_5 + iVar10 * 4);\n      uVar4 = *(uint *)(iVar6 + iVar10 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_000575cb:\n      (*pcVar13)(param_5,iVar6,param_5,iVar11);\n      local_64 = 0;\n    }\n    else {\n      (*pcVar13)(param_5,param_5,iVar6,iVar11);\n      local_64 = 1;\n    }\n    if (local_60 != 0) goto LAB_000575ee;\nLAB_000578c7:\n    pcVar13 = (code *)local_80[0x22];\n    iVar11 = param_11;\n    if (*piVar2 == 0) {\n      do {\n        iVar11 = iVar11 + -1;\n        if (iVar11 < 0) goto LAB_00057cd1;\n        uVar3 = *(uint *)(param_7 + iVar11 * 4);\n        uVar4 = *(uint *)(iVar5 + iVar11 * 4);\n      } while (uVar4 == uVar3);\n      if (uVar3 < uVar4) {\nLAB_00057cd1:\n        (*pcVar13)(iVar5,iVar5,param_7,param_11);\n      }\n      else {\n        (*pcVar13)(iVar5,param_7,iVar5,param_11);\n        local_60 = 1;\n      }\n      goto LAB_00057608;\n    }\n    iVar11 = (*pcVar13)(iVar5,iVar5,param_7,param_11);\n    *piVar2 = *piVar2 - iVar11;\n    if (param_11 < param_6) goto LAB_00057610;\nLAB_000578fc:\n    __gmpn_mul(iVar6,iVar5,iVar1,param_4,param_6);\n    if (local_40 == 0) goto LAB_00057924;\nLAB_00057638:\n    (*(code *)local_80[0x22])(param_3,param_4,param_3,param_6);\n  }" ({ "{") (do_statement "do {\n      iVar10 = iVar10 + -1;\n      if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000575cb;\n      }\n      uVar3 = *(uint *)(param_5 + iVar10 * 4);\n      uVar4 = *(uint *)(iVar6 + iVar10 * 4);\n    } while (uVar4 == uVar3);" (do "do") (compound_statement "{\n      iVar10 = iVar10 + -1;\n      if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000575cb;\n      }\n      uVar3 = *(uint *)(param_5 + iVar10 * 4);\n      uVar4 = *(uint *)(iVar6 + iVar10 * 4);\n    }" ({ "{") (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" (identifier "iVar10") (= "=") (binary_expression "iVar10 + -1" (identifier "iVar10") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000575cb;\n      }" (if "if") (parenthesized_expression "(iVar10 < 0)" (( "(") (binary_expression "iVar10 < 0" (identifier "iVar10") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000575cb;\n      }" ({ "{") (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" (identifier "pcVar13") (= "=") (cast_expression "(code *)local_80[0x22]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_80[0x22]" (identifier "local_80") ([ "[") (number_literal "0x22") (] "]")))) (; ";")) (goto_statement "goto LAB_000575cb;" (goto "goto") (statement_identifier "LAB_000575cb") (; ";")) (} "}"))) (expression_statement "uVar3 = *(uint *)(param_5 + iVar10 * 4);" (assignment_expression "uVar3 = *(uint *)(param_5 + iVar10 * 4)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(param_5 + iVar10 * 4)" (* "*") (cast_expression "(uint *)(param_5 + iVar10 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + iVar10 * 4)" (( "(") (binary_expression "param_5 + iVar10 * 4" (identifier "param_5") (+ "+") (binary_expression "iVar10 * 4" (identifier "iVar10") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "uVar4 = *(uint *)(iVar6 + iVar10 * 4);" (assignment_expression "uVar4 = *(uint *)(iVar6 + iVar10 * 4)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(iVar6 + iVar10 * 4)" (* "*") (cast_expression "(uint *)(iVar6 + iVar10 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + iVar10 * 4)" (( "(") (binary_expression "iVar6 + iVar10 * 4" (identifier "iVar6") (+ "+") (binary_expression "iVar10 * 4" (identifier "iVar10") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar4 == uVar3)" (( "(") (binary_expression "uVar4 == uVar3" (identifier "uVar4") (== "==") (identifier "uVar3")) () ")")) (; ";")) (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" (identifier "pcVar13") (= "=") (cast_expression "(code *)local_80[0x22]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_80[0x22]" (identifier "local_80") ([ "[") (number_literal "0x22") (] "]")))) (; ";")) (if_statement "if (uVar3 < uVar4) {\nLAB_000575cb:\n      (*pcVar13)(param_5,iVar6,param_5,iVar11);\n      local_64 = 0;\n    }\n    else {\n      (*pcVar13)(param_5,param_5,iVar6,iVar11);\n      local_64 = 1;\n    }" (if "if") (parenthesized_expression "(uVar3 < uVar4)" (( "(") (binary_expression "uVar3 < uVar4" (identifier "uVar3") (< "<") (identifier "uVar4")) () ")")) (compound_statement "{\nLAB_000575cb:\n      (*pcVar13)(param_5,iVar6,param_5,iVar11);\n      local_64 = 0;\n    }" ({ "{") (labeled_statement "LAB_000575cb:\n      (*pcVar13)(param_5,iVar6,param_5,iVar11);" (statement_identifier "LAB_000575cb") (: ":") (expression_statement "(*pcVar13)(param_5,iVar6,param_5,iVar11);" (call_expression "(*pcVar13)(param_5,iVar6,param_5,iVar11)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(param_5,iVar6,param_5,iVar11)" (( "(") (identifier "param_5") (, ",") (identifier "iVar6") (, ",") (identifier "param_5") (, ",") (identifier "iVar11") () ")"))) (; ";"))) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" (identifier "local_64") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n      (*pcVar13)(param_5,param_5,iVar6,iVar11);\n      local_64 = 1;\n    }" (else "else") (compound_statement "{\n      (*pcVar13)(param_5,param_5,iVar6,iVar11);\n      local_64 = 1;\n    }" ({ "{") (expression_statement "(*pcVar13)(param_5,param_5,iVar6,iVar11);" (call_expression "(*pcVar13)(param_5,param_5,iVar6,iVar11)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(param_5,param_5,iVar6,iVar11)" (( "(") (identifier "param_5") (, ",") (identifier "param_5") (, ",") (identifier "iVar6") (, ",") (identifier "iVar11") () ")"))) (; ";")) (expression_statement "local_64 = 1;" (assignment_expression "local_64 = 1" (identifier "local_64") (= "=") (number_literal "1")) (; ";")) (} "}")))) (if_statement "if (local_60 != 0) goto LAB_000575ee;" (if "if") (parenthesized_expression "(local_60 != 0)" (( "(") (binary_expression "local_60 != 0" (identifier "local_60") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000575ee;" (goto "goto") (statement_identifier "LAB_000575ee") (; ";"))) (labeled_statement "LAB_000578c7:\n    pcVar13 = (code *)local_80[0x22];" (statement_identifier "LAB_000578c7") (: ":") (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" (identifier "pcVar13") (= "=") (cast_expression "(code *)local_80[0x22]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_80[0x22]" (identifier "local_80") ([ "[") (number_literal "0x22") (] "]")))) (; ";"))) (expression_statement "iVar11 = param_11;" (assignment_expression "iVar11 = param_11" (identifier "iVar11") (= "=") (identifier "param_11")) (; ";")) (if_statement "if (*piVar2 == 0) {\n      do {\n        iVar11 = iVar11 + -1;\n        if (iVar11 < 0) goto LAB_00057cd1;\n        uVar3 = *(uint *)(param_7 + iVar11 * 4);\n        uVar4 = *(uint *)(iVar5 + iVar11 * 4);\n      } while (uVar4 == uVar3);\n      if (uVar3 < uVar4) {\nLAB_00057cd1:\n        (*pcVar13)(iVar5,iVar5,param_7,param_11);\n      }\n      else {\n        (*pcVar13)(iVar5,param_7,iVar5,param_11);\n        local_60 = 1;\n      }\n      goto LAB_00057608;\n    }" (if "if") (parenthesized_expression "(*piVar2 == 0)" (( "(") (binary_expression "*piVar2 == 0" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      do {\n        iVar11 = iVar11 + -1;\n        if (iVar11 < 0) goto LAB_00057cd1;\n        uVar3 = *(uint *)(param_7 + iVar11 * 4);\n        uVar4 = *(uint *)(iVar5 + iVar11 * 4);\n      } while (uVar4 == uVar3);\n      if (uVar3 < uVar4) {\nLAB_00057cd1:\n        (*pcVar13)(iVar5,iVar5,param_7,param_11);\n      }\n      else {\n        (*pcVar13)(iVar5,param_7,iVar5,param_11);\n        local_60 = 1;\n      }\n      goto LAB_00057608;\n    }" ({ "{") (do_statement "do {\n        iVar11 = iVar11 + -1;\n        if (iVar11 < 0) goto LAB_00057cd1;\n        uVar3 = *(uint *)(param_7 + iVar11 * 4);\n        uVar4 = *(uint *)(iVar5 + iVar11 * 4);\n      } while (uVar4 == uVar3);" (do "do") (compound_statement "{\n        iVar11 = iVar11 + -1;\n        if (iVar11 < 0) goto LAB_00057cd1;\n        uVar3 = *(uint *)(param_7 + iVar11 * 4);\n        uVar4 = *(uint *)(iVar5 + iVar11 * 4);\n      }" ({ "{") (expression_statement "iVar11 = iVar11 + -1;" (assignment_expression "iVar11 = iVar11 + -1" (identifier "iVar11") (= "=") (binary_expression "iVar11 + -1" (identifier "iVar11") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar11 < 0) goto LAB_00057cd1;" (if "if") (parenthesized_expression "(iVar11 < 0)" (( "(") (binary_expression "iVar11 < 0" (identifier "iVar11") (< "<") (number_literal "0")) () ")")) (goto_statement "goto LAB_00057cd1;" (goto "goto") (statement_identifier "LAB_00057cd1") (; ";"))) (expression_statement "uVar3 = *(uint *)(param_7 + iVar11 * 4);" (assignment_expression "uVar3 = *(uint *)(param_7 + iVar11 * 4)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(param_7 + iVar11 * 4)" (* "*") (cast_expression "(uint *)(param_7 + iVar11 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_7 + iVar11 * 4)" (( "(") (binary_expression "param_7 + iVar11 * 4" (identifier "param_7") (+ "+") (binary_expression "iVar11 * 4" (identifier "iVar11") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "uVar4 = *(uint *)(iVar5 + iVar11 * 4);" (assignment_expression "uVar4 = *(uint *)(iVar5 + iVar11 * 4)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(iVar5 + iVar11 * 4)" (* "*") (cast_expression "(uint *)(iVar5 + iVar11 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + iVar11 * 4)" (( "(") (binary_expression "iVar5 + iVar11 * 4" (identifier "iVar5") (+ "+") (binary_expression "iVar11 * 4" (identifier "iVar11") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar4 == uVar3)" (( "(") (binary_expression "uVar4 == uVar3" (identifier "uVar4") (== "==") (identifier "uVar3")) () ")")) (; ";")) (if_statement "if (uVar3 < uVar4) {\nLAB_00057cd1:\n        (*pcVar13)(iVar5,iVar5,param_7,param_11);\n      }\n      else {\n        (*pcVar13)(iVar5,param_7,iVar5,param_11);\n        local_60 = 1;\n      }" (if "if") (parenthesized_expression "(uVar3 < uVar4)" (( "(") (binary_expression "uVar3 < uVar4" (identifier "uVar3") (< "<") (identifier "uVar4")) () ")")) (compound_statement "{\nLAB_00057cd1:\n        (*pcVar13)(iVar5,iVar5,param_7,param_11);\n      }" ({ "{") (labeled_statement "LAB_00057cd1:\n        (*pcVar13)(iVar5,iVar5,param_7,param_11);" (statement_identifier "LAB_00057cd1") (: ":") (expression_statement "(*pcVar13)(iVar5,iVar5,param_7,param_11);" (call_expression "(*pcVar13)(iVar5,iVar5,param_7,param_11)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(iVar5,iVar5,param_7,param_11)" (( "(") (identifier "iVar5") (, ",") (identifier "iVar5") (, ",") (identifier "param_7") (, ",") (identifier "param_11") () ")"))) (; ";"))) (} "}")) (else_clause "else {\n        (*pcVar13)(iVar5,param_7,iVar5,param_11);\n        local_60 = 1;\n      }" (else "else") (compound_statement "{\n        (*pcVar13)(iVar5,param_7,iVar5,param_11);\n        local_60 = 1;\n      }" ({ "{") (expression_statement "(*pcVar13)(iVar5,param_7,iVar5,param_11);" (call_expression "(*pcVar13)(iVar5,param_7,iVar5,param_11)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(iVar5,param_7,iVar5,param_11)" (( "(") (identifier "iVar5") (, ",") (identifier "param_7") (, ",") (identifier "iVar5") (, ",") (identifier "param_11") () ")"))) (; ";")) (expression_statement "local_60 = 1;" (assignment_expression "local_60 = 1" (identifier "local_60") (= "=") (number_literal "1")) (; ";")) (} "}")))) (goto_statement "goto LAB_00057608;" (goto "goto") (statement_identifier "LAB_00057608") (; ";")) (} "}"))) (expression_statement "iVar11 = (*pcVar13)(iVar5,iVar5,param_7,param_11);" (assignment_expression "iVar11 = (*pcVar13)(iVar5,iVar5,param_7,param_11)" (identifier "iVar11") (= "=") (call_expression "(*pcVar13)(iVar5,iVar5,param_7,param_11)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(iVar5,iVar5,param_7,param_11)" (( "(") (identifier "iVar5") (, ",") (identifier "iVar5") (, ",") (identifier "param_7") (, ",") (identifier "param_11") () ")")))) (; ";")) (expression_statement "*piVar2 = *piVar2 - iVar11;" (assignment_expression "*piVar2 = *piVar2 - iVar11" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (= "=") (binary_expression "*piVar2 - iVar11" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (- "-") (identifier "iVar11"))) (; ";")) (if_statement "if (param_11 < param_6) goto LAB_00057610;" (if "if") (parenthesized_expression "(param_11 < param_6)" (( "(") (binary_expression "param_11 < param_6" (identifier "param_11") (< "<") (identifier "param_6")) () ")")) (goto_statement "goto LAB_00057610;" (goto "goto") (statement_identifier "LAB_00057610") (; ";"))) (labeled_statement "LAB_000578fc:\n    __gmpn_mul(iVar6,iVar5,iVar1,param_4,param_6);" (statement_identifier "LAB_000578fc") (: ":") (expression_statement "__gmpn_mul(iVar6,iVar5,iVar1,param_4,param_6);" (call_expression "__gmpn_mul(iVar6,iVar5,iVar1,param_4,param_6)" (identifier "__gmpn_mul") (argument_list "(iVar6,iVar5,iVar1,param_4,param_6)" (( "(") (identifier "iVar6") (, ",") (identifier "iVar5") (, ",") (identifier "iVar1") (, ",") (identifier "param_4") (, ",") (identifier "param_6") () ")"))) (; ";"))) (if_statement "if (local_40 == 0) goto LAB_00057924;" (if "if") (parenthesized_expression "(local_40 == 0)" (( "(") (binary_expression "local_40 == 0" (identifier "local_40") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00057924;" (goto "goto") (statement_identifier "LAB_00057924") (; ";"))) (labeled_statement "LAB_00057638:\n    (*(code *)local_80[0x22])(param_3,param_4,param_3,param_6);" (statement_identifier "LAB_00057638") (: ":") (expression_statement "(*(code *)local_80[0x22])(param_3,param_4,param_3,param_6);" (call_expression "(*(code *)local_80[0x22])(param_3,param_4,param_3,param_6)" (parenthesized_expression "(*(code *)local_80[0x22])" (( "(") (pointer_expression "*(code *)local_80[0x22]" (* "*") (cast_expression "(code *)local_80[0x22]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_80[0x22]" (identifier "local_80") ([ "[") (number_literal "0x22") (] "]")))) () ")")) (argument_list "(param_3,param_4,param_3,param_6)" (( "(") (identifier "param_3") (, ",") (identifier "param_4") (, ",") (identifier "param_3") (, ",") (identifier "param_6") () ")"))) (; ";"))) (} "}")))) (expression_statement "iVar11 = param_11 + iVar12;" (assignment_expression "iVar11 = param_11 + iVar12" (identifier "iVar11") (= "=") (binary_expression "param_11 + iVar12" (identifier "param_11") (+ "+") (identifier "iVar12"))) (; ";")) (expression_statement "iVar7 = iVar11;" (assignment_expression "iVar7 = iVar11" (identifier "iVar7") (= "=") (identifier "iVar11")) (; ";")) (expression_statement "iVar10 = iVar11;" (assignment_expression "iVar10 = iVar11" (identifier "iVar10") (= "=") (identifier "iVar11")) (; ";")) (if_statement "if (local_64 == local_60) {\n    (*(code *)*local_80)(param_4,param_5,iVar6,iVar11);\n    local_60 = local_64;\n    if (local_64 == local_30) goto LAB_00057971;\nLAB_000576cd:\n    do {\n      iVar10 = iVar10 + -1;\n      if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000576db;\n      }\n      uVar3 = *(uint *)(iVar14 + iVar10 * 4);\n      uVar4 = *(uint *)(param_5 + iVar10 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_000576db:\n      (*pcVar13)(param_5,param_5,iVar14,iVar11);\n    }\n    else {\n      (*pcVar13)(param_5,iVar14,param_5,iVar11);\n      local_64 = local_64 ^ 1;\n    }\n    if (param_11 <= iVar12) goto LAB_000576f3;\nLAB_0005798d:\n    __gmpn_mul(iVar6,param_8,param_11,param_12,iVar12);\n    iVar10 = (*(code *)*local_80)(iVar5,param_10,param_8,param_11);\n    *piVar2 = iVar10;\n  }\n  else {\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005768b;\n      }\n      uVar3 = *(uint *)(iVar6 + iVar7 * 4);\n      uVar4 = *(uint *)(param_5 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_0005768b:\n      (*pcVar13)(param_4,param_5,iVar6,iVar11);\n      local_60 = local_64;\n    }\n    else {\n      (*pcVar13)(param_4,iVar6,param_5,iVar11);\n      local_60 = local_64 ^ 1;\n    }\n    if (local_64 != local_30) goto LAB_000576cd;\nLAB_00057971:\n    (*(code *)*local_80)(param_5,param_5,iVar14,iVar11);\n    if (iVar12 < param_11) goto LAB_0005798d;\nLAB_000576f3:\n    __gmpn_mul(iVar6,param_12,iVar12,param_8,param_11);\n    iVar10 = (*(code *)*local_80)(iVar5,param_10,param_8,param_11);\n    *piVar2 = iVar10;\n    if (param_11 < iVar12) {\n      __gmpn_mul(iVar14,param_3,iVar12,iVar5,iVar1);\n      goto LAB_00057755;\n    }\n  }" (if "if") (parenthesized_expression "(local_64 == local_60)" (( "(") (binary_expression "local_64 == local_60" (identifier "local_64") (== "==") (identifier "local_60")) () ")")) (compound_statement "{\n    (*(code *)*local_80)(param_4,param_5,iVar6,iVar11);\n    local_60 = local_64;\n    if (local_64 == local_30) goto LAB_00057971;\nLAB_000576cd:\n    do {\n      iVar10 = iVar10 + -1;\n      if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000576db;\n      }\n      uVar3 = *(uint *)(iVar14 + iVar10 * 4);\n      uVar4 = *(uint *)(param_5 + iVar10 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_000576db:\n      (*pcVar13)(param_5,param_5,iVar14,iVar11);\n    }\n    else {\n      (*pcVar13)(param_5,iVar14,param_5,iVar11);\n      local_64 = local_64 ^ 1;\n    }\n    if (param_11 <= iVar12) goto LAB_000576f3;\nLAB_0005798d:\n    __gmpn_mul(iVar6,param_8,param_11,param_12,iVar12);\n    iVar10 = (*(code *)*local_80)(iVar5,param_10,param_8,param_11);\n    *piVar2 = iVar10;\n  }" ({ "{") (expression_statement "(*(code *)*local_80)(param_4,param_5,iVar6,iVar11);" (call_expression "(*(code *)*local_80)(param_4,param_5,iVar6,iVar11)" (parenthesized_expression "(*(code *)*local_80)" (( "(") (pointer_expression "*(code *)*local_80" (* "*") (cast_expression "(code *)*local_80" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*local_80" (* "*") (identifier "local_80")))) () ")")) (argument_list "(param_4,param_5,iVar6,iVar11)" (( "(") (identifier "param_4") (, ",") (identifier "param_5") (, ",") (identifier "iVar6") (, ",") (identifier "iVar11") () ")"))) (; ";")) (expression_statement "local_60 = local_64;" (assignment_expression "local_60 = local_64" (identifier "local_60") (= "=") (identifier "local_64")) (; ";")) (if_statement "if (local_64 == local_30) goto LAB_00057971;" (if "if") (parenthesized_expression "(local_64 == local_30)" (( "(") (binary_expression "local_64 == local_30" (identifier "local_64") (== "==") (identifier "local_30")) () ")")) (goto_statement "goto LAB_00057971;" (goto "goto") (statement_identifier "LAB_00057971") (; ";"))) (labeled_statement "LAB_000576cd:\n    do {\n      iVar10 = iVar10 + -1;\n      if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000576db;\n      }\n      uVar3 = *(uint *)(iVar14 + iVar10 * 4);\n      uVar4 = *(uint *)(param_5 + iVar10 * 4);\n    } while (uVar4 == uVar3);" (statement_identifier "LAB_000576cd") (: ":") (do_statement "do {\n      iVar10 = iVar10 + -1;\n      if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000576db;\n      }\n      uVar3 = *(uint *)(iVar14 + iVar10 * 4);\n      uVar4 = *(uint *)(param_5 + iVar10 * 4);\n    } while (uVar4 == uVar3);" (do "do") (compound_statement "{\n      iVar10 = iVar10 + -1;\n      if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000576db;\n      }\n      uVar3 = *(uint *)(iVar14 + iVar10 * 4);\n      uVar4 = *(uint *)(param_5 + iVar10 * 4);\n    }" ({ "{") (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" (identifier "iVar10") (= "=") (binary_expression "iVar10 + -1" (identifier "iVar10") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar10 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000576db;\n      }" (if "if") (parenthesized_expression "(iVar10 < 0)" (( "(") (binary_expression "iVar10 < 0" (identifier "iVar10") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_000576db;\n      }" ({ "{") (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" (identifier "pcVar13") (= "=") (cast_expression "(code *)local_80[0x22]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_80[0x22]" (identifier "local_80") ([ "[") (number_literal "0x22") (] "]")))) (; ";")) (goto_statement "goto LAB_000576db;" (goto "goto") (statement_identifier "LAB_000576db") (; ";")) (} "}"))) (expression_statement "uVar3 = *(uint *)(iVar14 + iVar10 * 4);" (assignment_expression "uVar3 = *(uint *)(iVar14 + iVar10 * 4)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(iVar14 + iVar10 * 4)" (* "*") (cast_expression "(uint *)(iVar14 + iVar10 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + iVar10 * 4)" (( "(") (binary_expression "iVar14 + iVar10 * 4" (identifier "iVar14") (+ "+") (binary_expression "iVar10 * 4" (identifier "iVar10") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "uVar4 = *(uint *)(param_5 + iVar10 * 4);" (assignment_expression "uVar4 = *(uint *)(param_5 + iVar10 * 4)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(param_5 + iVar10 * 4)" (* "*") (cast_expression "(uint *)(param_5 + iVar10 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + iVar10 * 4)" (( "(") (binary_expression "param_5 + iVar10 * 4" (identifier "param_5") (+ "+") (binary_expression "iVar10 * 4" (identifier "iVar10") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar4 == uVar3)" (( "(") (binary_expression "uVar4 == uVar3" (identifier "uVar4") (== "==") (identifier "uVar3")) () ")")) (; ";"))) (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" (identifier "pcVar13") (= "=") (cast_expression "(code *)local_80[0x22]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_80[0x22]" (identifier "local_80") ([ "[") (number_literal "0x22") (] "]")))) (; ";")) (if_statement "if (uVar3 < uVar4) {\nLAB_000576db:\n      (*pcVar13)(param_5,param_5,iVar14,iVar11);\n    }\n    else {\n      (*pcVar13)(param_5,iVar14,param_5,iVar11);\n      local_64 = local_64 ^ 1;\n    }" (if "if") (parenthesized_expression "(uVar3 < uVar4)" (( "(") (binary_expression "uVar3 < uVar4" (identifier "uVar3") (< "<") (identifier "uVar4")) () ")")) (compound_statement "{\nLAB_000576db:\n      (*pcVar13)(param_5,param_5,iVar14,iVar11);\n    }" ({ "{") (labeled_statement "LAB_000576db:\n      (*pcVar13)(param_5,param_5,iVar14,iVar11);" (statement_identifier "LAB_000576db") (: ":") (expression_statement "(*pcVar13)(param_5,param_5,iVar14,iVar11);" (call_expression "(*pcVar13)(param_5,param_5,iVar14,iVar11)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(param_5,param_5,iVar14,iVar11)" (( "(") (identifier "param_5") (, ",") (identifier "param_5") (, ",") (identifier "iVar14") (, ",") (identifier "iVar11") () ")"))) (; ";"))) (} "}")) (else_clause "else {\n      (*pcVar13)(param_5,iVar14,param_5,iVar11);\n      local_64 = local_64 ^ 1;\n    }" (else "else") (compound_statement "{\n      (*pcVar13)(param_5,iVar14,param_5,iVar11);\n      local_64 = local_64 ^ 1;\n    }" ({ "{") (expression_statement "(*pcVar13)(param_5,iVar14,param_5,iVar11);" (call_expression "(*pcVar13)(param_5,iVar14,param_5,iVar11)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(param_5,iVar14,param_5,iVar11)" (( "(") (identifier "param_5") (, ",") (identifier "iVar14") (, ",") (identifier "param_5") (, ",") (identifier "iVar11") () ")"))) (; ";")) (expression_statement "local_64 = local_64 ^ 1;" (assignment_expression "local_64 = local_64 ^ 1" (identifier "local_64") (= "=") (binary_expression "local_64 ^ 1" (identifier "local_64") (^ "^") (number_literal "1"))) (; ";")) (} "}")))) (if_statement "if (param_11 <= iVar12) goto LAB_000576f3;" (if "if") (parenthesized_expression "(param_11 <= iVar12)" (( "(") (binary_expression "param_11 <= iVar12" (identifier "param_11") (<= "<=") (identifier "iVar12")) () ")")) (goto_statement "goto LAB_000576f3;" (goto "goto") (statement_identifier "LAB_000576f3") (; ";"))) (labeled_statement "LAB_0005798d:\n    __gmpn_mul(iVar6,param_8,param_11,param_12,iVar12);" (statement_identifier "LAB_0005798d") (: ":") (expression_statement "__gmpn_mul(iVar6,param_8,param_11,param_12,iVar12);" (call_expression "__gmpn_mul(iVar6,param_8,param_11,param_12,iVar12)" (identifier "__gmpn_mul") (argument_list "(iVar6,param_8,param_11,param_12,iVar12)" (( "(") (identifier "iVar6") (, ",") (identifier "param_8") (, ",") (identifier "param_11") (, ",") (identifier "param_12") (, ",") (identifier "iVar12") () ")"))) (; ";"))) (expression_statement "iVar10 = (*(code *)*local_80)(iVar5,param_10,param_8,param_11);" (assignment_expression "iVar10 = (*(code *)*local_80)(iVar5,param_10,param_8,param_11)" (identifier "iVar10") (= "=") (call_expression "(*(code *)*local_80)(iVar5,param_10,param_8,param_11)" (parenthesized_expression "(*(code *)*local_80)" (( "(") (pointer_expression "*(code *)*local_80" (* "*") (cast_expression "(code *)*local_80" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*local_80" (* "*") (identifier "local_80")))) () ")")) (argument_list "(iVar5,param_10,param_8,param_11)" (( "(") (identifier "iVar5") (, ",") (identifier "param_10") (, ",") (identifier "param_8") (, ",") (identifier "param_11") () ")")))) (; ";")) (expression_statement "*piVar2 = iVar10;" (assignment_expression "*piVar2 = iVar10" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (= "=") (identifier "iVar10")) (; ";")) (} "}")) (else_clause "else {\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005768b;\n      }\n      uVar3 = *(uint *)(iVar6 + iVar7 * 4);\n      uVar4 = *(uint *)(param_5 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_0005768b:\n      (*pcVar13)(param_4,param_5,iVar6,iVar11);\n      local_60 = local_64;\n    }\n    else {\n      (*pcVar13)(param_4,iVar6,param_5,iVar11);\n      local_60 = local_64 ^ 1;\n    }\n    if (local_64 != local_30) goto LAB_000576cd;\nLAB_00057971:\n    (*(code *)*local_80)(param_5,param_5,iVar14,iVar11);\n    if (iVar12 < param_11) goto LAB_0005798d;\nLAB_000576f3:\n    __gmpn_mul(iVar6,param_12,iVar12,param_8,param_11);\n    iVar10 = (*(code *)*local_80)(iVar5,param_10,param_8,param_11);\n    *piVar2 = iVar10;\n    if (param_11 < iVar12) {\n      __gmpn_mul(iVar14,param_3,iVar12,iVar5,iVar1);\n      goto LAB_00057755;\n    }\n  }" (else "else") (compound_statement "{\n    do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005768b;\n      }\n      uVar3 = *(uint *)(iVar6 + iVar7 * 4);\n      uVar4 = *(uint *)(param_5 + iVar7 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_0005768b:\n      (*pcVar13)(param_4,param_5,iVar6,iVar11);\n      local_60 = local_64;\n    }\n    else {\n      (*pcVar13)(param_4,iVar6,param_5,iVar11);\n      local_60 = local_64 ^ 1;\n    }\n    if (local_64 != local_30) goto LAB_000576cd;\nLAB_00057971:\n    (*(code *)*local_80)(param_5,param_5,iVar14,iVar11);\n    if (iVar12 < param_11) goto LAB_0005798d;\nLAB_000576f3:\n    __gmpn_mul(iVar6,param_12,iVar12,param_8,param_11);\n    iVar10 = (*(code *)*local_80)(iVar5,param_10,param_8,param_11);\n    *piVar2 = iVar10;\n    if (param_11 < iVar12) {\n      __gmpn_mul(iVar14,param_3,iVar12,iVar5,iVar1);\n      goto LAB_00057755;\n    }\n  }" ({ "{") (do_statement "do {\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005768b;\n      }\n      uVar3 = *(uint *)(iVar6 + iVar7 * 4);\n      uVar4 = *(uint *)(param_5 + iVar7 * 4);\n    } while (uVar4 == uVar3);" (do "do") (compound_statement "{\n      iVar7 = iVar7 + -1;\n      if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005768b;\n      }\n      uVar3 = *(uint *)(iVar6 + iVar7 * 4);\n      uVar4 = *(uint *)(param_5 + iVar7 * 4);\n    }" ({ "{") (expression_statement "iVar7 = iVar7 + -1;" (assignment_expression "iVar7 = iVar7 + -1" (identifier "iVar7") (= "=") (binary_expression "iVar7 + -1" (identifier "iVar7") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar7 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005768b;\n      }" (if "if") (parenthesized_expression "(iVar7 < 0)" (( "(") (binary_expression "iVar7 < 0" (identifier "iVar7") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005768b;\n      }" ({ "{") (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" (identifier "pcVar13") (= "=") (cast_expression "(code *)local_80[0x22]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_80[0x22]" (identifier "local_80") ([ "[") (number_literal "0x22") (] "]")))) (; ";")) (goto_statement "goto LAB_0005768b;" (goto "goto") (statement_identifier "LAB_0005768b") (; ";")) (} "}"))) (expression_statement "uVar3 = *(uint *)(iVar6 + iVar7 * 4);" (assignment_expression "uVar3 = *(uint *)(iVar6 + iVar7 * 4)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(iVar6 + iVar7 * 4)" (* "*") (cast_expression "(uint *)(iVar6 + iVar7 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + iVar7 * 4)" (( "(") (binary_expression "iVar6 + iVar7 * 4" (identifier "iVar6") (+ "+") (binary_expression "iVar7 * 4" (identifier "iVar7") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "uVar4 = *(uint *)(param_5 + iVar7 * 4);" (assignment_expression "uVar4 = *(uint *)(param_5 + iVar7 * 4)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(param_5 + iVar7 * 4)" (* "*") (cast_expression "(uint *)(param_5 + iVar7 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + iVar7 * 4)" (( "(") (binary_expression "param_5 + iVar7 * 4" (identifier "param_5") (+ "+") (binary_expression "iVar7 * 4" (identifier "iVar7") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar4 == uVar3)" (( "(") (binary_expression "uVar4 == uVar3" (identifier "uVar4") (== "==") (identifier "uVar3")) () ")")) (; ";")) (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" (identifier "pcVar13") (= "=") (cast_expression "(code *)local_80[0x22]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_80[0x22]" (identifier "local_80") ([ "[") (number_literal "0x22") (] "]")))) (; ";")) (if_statement "if (uVar3 < uVar4) {\nLAB_0005768b:\n      (*pcVar13)(param_4,param_5,iVar6,iVar11);\n      local_60 = local_64;\n    }\n    else {\n      (*pcVar13)(param_4,iVar6,param_5,iVar11);\n      local_60 = local_64 ^ 1;\n    }" (if "if") (parenthesized_expression "(uVar3 < uVar4)" (( "(") (binary_expression "uVar3 < uVar4" (identifier "uVar3") (< "<") (identifier "uVar4")) () ")")) (compound_statement "{\nLAB_0005768b:\n      (*pcVar13)(param_4,param_5,iVar6,iVar11);\n      local_60 = local_64;\n    }" ({ "{") (labeled_statement "LAB_0005768b:\n      (*pcVar13)(param_4,param_5,iVar6,iVar11);" (statement_identifier "LAB_0005768b") (: ":") (expression_statement "(*pcVar13)(param_4,param_5,iVar6,iVar11);" (call_expression "(*pcVar13)(param_4,param_5,iVar6,iVar11)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(param_4,param_5,iVar6,iVar11)" (( "(") (identifier "param_4") (, ",") (identifier "param_5") (, ",") (identifier "iVar6") (, ",") (identifier "iVar11") () ")"))) (; ";"))) (expression_statement "local_60 = local_64;" (assignment_expression "local_60 = local_64" (identifier "local_60") (= "=") (identifier "local_64")) (; ";")) (} "}")) (else_clause "else {\n      (*pcVar13)(param_4,iVar6,param_5,iVar11);\n      local_60 = local_64 ^ 1;\n    }" (else "else") (compound_statement "{\n      (*pcVar13)(param_4,iVar6,param_5,iVar11);\n      local_60 = local_64 ^ 1;\n    }" ({ "{") (expression_statement "(*pcVar13)(param_4,iVar6,param_5,iVar11);" (call_expression "(*pcVar13)(param_4,iVar6,param_5,iVar11)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(param_4,iVar6,param_5,iVar11)" (( "(") (identifier "param_4") (, ",") (identifier "iVar6") (, ",") (identifier "param_5") (, ",") (identifier "iVar11") () ")"))) (; ";")) (expression_statement "local_60 = local_64 ^ 1;" (assignment_expression "local_60 = local_64 ^ 1" (identifier "local_60") (= "=") (binary_expression "local_64 ^ 1" (identifier "local_64") (^ "^") (number_literal "1"))) (; ";")) (} "}")))) (if_statement "if (local_64 != local_30) goto LAB_000576cd;" (if "if") (parenthesized_expression "(local_64 != local_30)" (( "(") (binary_expression "local_64 != local_30" (identifier "local_64") (!= "!=") (identifier "local_30")) () ")")) (goto_statement "goto LAB_000576cd;" (goto "goto") (statement_identifier "LAB_000576cd") (; ";"))) (labeled_statement "LAB_00057971:\n    (*(code *)*local_80)(param_5,param_5,iVar14,iVar11);" (statement_identifier "LAB_00057971") (: ":") (expression_statement "(*(code *)*local_80)(param_5,param_5,iVar14,iVar11);" (call_expression "(*(code *)*local_80)(param_5,param_5,iVar14,iVar11)" (parenthesized_expression "(*(code *)*local_80)" (( "(") (pointer_expression "*(code *)*local_80" (* "*") (cast_expression "(code *)*local_80" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*local_80" (* "*") (identifier "local_80")))) () ")")) (argument_list "(param_5,param_5,iVar14,iVar11)" (( "(") (identifier "param_5") (, ",") (identifier "param_5") (, ",") (identifier "iVar14") (, ",") (identifier "iVar11") () ")"))) (; ";"))) (if_statement "if (iVar12 < param_11) goto LAB_0005798d;" (if "if") (parenthesized_expression "(iVar12 < param_11)" (( "(") (binary_expression "iVar12 < param_11" (identifier "iVar12") (< "<") (identifier "param_11")) () ")")) (goto_statement "goto LAB_0005798d;" (goto "goto") (statement_identifier "LAB_0005798d") (; ";"))) (labeled_statement "LAB_000576f3:\n    __gmpn_mul(iVar6,param_12,iVar12,param_8,param_11);" (statement_identifier "LAB_000576f3") (: ":") (expression_statement "__gmpn_mul(iVar6,param_12,iVar12,param_8,param_11);" (call_expression "__gmpn_mul(iVar6,param_12,iVar12,param_8,param_11)" (identifier "__gmpn_mul") (argument_list "(iVar6,param_12,iVar12,param_8,param_11)" (( "(") (identifier "iVar6") (, ",") (identifier "param_12") (, ",") (identifier "iVar12") (, ",") (identifier "param_8") (, ",") (identifier "param_11") () ")"))) (; ";"))) (expression_statement "iVar10 = (*(code *)*local_80)(iVar5,param_10,param_8,param_11);" (assignment_expression "iVar10 = (*(code *)*local_80)(iVar5,param_10,param_8,param_11)" (identifier "iVar10") (= "=") (call_expression "(*(code *)*local_80)(iVar5,param_10,param_8,param_11)" (parenthesized_expression "(*(code *)*local_80)" (( "(") (pointer_expression "*(code *)*local_80" (* "*") (cast_expression "(code *)*local_80" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*local_80" (* "*") (identifier "local_80")))) () ")")) (argument_list "(iVar5,param_10,param_8,param_11)" (( "(") (identifier "iVar5") (, ",") (identifier "param_10") (, ",") (identifier "param_8") (, ",") (identifier "param_11") () ")")))) (; ";")) (expression_statement "*piVar2 = iVar10;" (assignment_expression "*piVar2 = iVar10" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (= "=") (identifier "iVar10")) (; ";")) (if_statement "if (param_11 < iVar12) {\n      __gmpn_mul(iVar14,param_3,iVar12,iVar5,iVar1);\n      goto LAB_00057755;\n    }" (if "if") (parenthesized_expression "(param_11 < iVar12)" (( "(") (binary_expression "param_11 < iVar12" (identifier "param_11") (< "<") (identifier "iVar12")) () ")")) (compound_statement "{\n      __gmpn_mul(iVar14,param_3,iVar12,iVar5,iVar1);\n      goto LAB_00057755;\n    }" ({ "{") (expression_statement "__gmpn_mul(iVar14,param_3,iVar12,iVar5,iVar1);" (call_expression "__gmpn_mul(iVar14,param_3,iVar12,iVar5,iVar1)" (identifier "__gmpn_mul") (argument_list "(iVar14,param_3,iVar12,iVar5,iVar1)" (( "(") (identifier "iVar14") (, ",") (identifier "param_3") (, ",") (identifier "iVar12") (, ",") (identifier "iVar5") (, ",") (identifier "iVar1") () ")"))) (; ";")) (goto_statement "goto LAB_00057755;" (goto "goto") (statement_identifier "LAB_00057755") (; ";")) (} "}"))) (} "}")))) (expression_statement "__gmpn_mul(iVar14,iVar5,iVar1,param_3,iVar12);" (call_expression "__gmpn_mul(iVar14,iVar5,iVar1,param_3,iVar12)" (identifier "__gmpn_mul") (argument_list "(iVar14,iVar5,iVar1,param_3,iVar12)" (( "(") (identifier "iVar14") (, ",") (identifier "iVar5") (, ",") (identifier "iVar1") (, ",") (identifier "param_3") (, ",") (identifier "iVar12") () ")"))) (; ";")) (labeled_statement "LAB_00057755:\n  iVar12 = iVar11;" (statement_identifier "LAB_00057755") (: ":") (expression_statement "iVar12 = iVar11;" (assignment_expression "iVar12 = iVar11" (identifier "iVar12") (= "=") (identifier "iVar11")) (; ";"))) (if_statement "if (local_24 == local_64) {\n    (*(code *)*local_80)(param_3,param_5,iVar6,iVar11);\n  }\n  else {\n    do {\n      iVar12 = iVar12 + -1;\n      if (iVar12 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005778b;\n      }\n      uVar3 = *(uint *)(iVar6 + iVar12 * 4);\n      uVar4 = *(uint *)(param_5 + iVar12 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_0005778b:\n      (*pcVar13)(param_3,param_5,iVar6,iVar11);\n    }\n    else {\n      (*pcVar13)(param_3,iVar6,param_5,iVar11);\n    }\n  }" (if "if") (parenthesized_expression "(local_24 == local_64)" (( "(") (binary_expression "local_24 == local_64" (identifier "local_24") (== "==") (identifier "local_64")) () ")")) (compound_statement "{\n    (*(code *)*local_80)(param_3,param_5,iVar6,iVar11);\n  }" ({ "{") (expression_statement "(*(code *)*local_80)(param_3,param_5,iVar6,iVar11);" (call_expression "(*(code *)*local_80)(param_3,param_5,iVar6,iVar11)" (parenthesized_expression "(*(code *)*local_80)" (( "(") (pointer_expression "*(code *)*local_80" (* "*") (cast_expression "(code *)*local_80" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*local_80" (* "*") (identifier "local_80")))) () ")")) (argument_list "(param_3,param_5,iVar6,iVar11)" (( "(") (identifier "param_3") (, ",") (identifier "param_5") (, ",") (identifier "iVar6") (, ",") (identifier "iVar11") () ")"))) (; ";")) (} "}")) (else_clause "else {\n    do {\n      iVar12 = iVar12 + -1;\n      if (iVar12 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005778b;\n      }\n      uVar3 = *(uint *)(iVar6 + iVar12 * 4);\n      uVar4 = *(uint *)(param_5 + iVar12 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_0005778b:\n      (*pcVar13)(param_3,param_5,iVar6,iVar11);\n    }\n    else {\n      (*pcVar13)(param_3,iVar6,param_5,iVar11);\n    }\n  }" (else "else") (compound_statement "{\n    do {\n      iVar12 = iVar12 + -1;\n      if (iVar12 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005778b;\n      }\n      uVar3 = *(uint *)(iVar6 + iVar12 * 4);\n      uVar4 = *(uint *)(param_5 + iVar12 * 4);\n    } while (uVar4 == uVar3);\n    pcVar13 = (code *)local_80[0x22];\n    if (uVar3 < uVar4) {\nLAB_0005778b:\n      (*pcVar13)(param_3,param_5,iVar6,iVar11);\n    }\n    else {\n      (*pcVar13)(param_3,iVar6,param_5,iVar11);\n    }\n  }" ({ "{") (do_statement "do {\n      iVar12 = iVar12 + -1;\n      if (iVar12 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005778b;\n      }\n      uVar3 = *(uint *)(iVar6 + iVar12 * 4);\n      uVar4 = *(uint *)(param_5 + iVar12 * 4);\n    } while (uVar4 == uVar3);" (do "do") (compound_statement "{\n      iVar12 = iVar12 + -1;\n      if (iVar12 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005778b;\n      }\n      uVar3 = *(uint *)(iVar6 + iVar12 * 4);\n      uVar4 = *(uint *)(param_5 + iVar12 * 4);\n    }" ({ "{") (expression_statement "iVar12 = iVar12 + -1;" (assignment_expression "iVar12 = iVar12 + -1" (identifier "iVar12") (= "=") (binary_expression "iVar12 + -1" (identifier "iVar12") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar12 < 0) {\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005778b;\n      }" (if "if") (parenthesized_expression "(iVar12 < 0)" (( "(") (binary_expression "iVar12 < 0" (identifier "iVar12") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        pcVar13 = (code *)local_80[0x22];\n        goto LAB_0005778b;\n      }" ({ "{") (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" (identifier "pcVar13") (= "=") (cast_expression "(code *)local_80[0x22]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_80[0x22]" (identifier "local_80") ([ "[") (number_literal "0x22") (] "]")))) (; ";")) (goto_statement "goto LAB_0005778b;" (goto "goto") (statement_identifier "LAB_0005778b") (; ";")) (} "}"))) (expression_statement "uVar3 = *(uint *)(iVar6 + iVar12 * 4);" (assignment_expression "uVar3 = *(uint *)(iVar6 + iVar12 * 4)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(iVar6 + iVar12 * 4)" (* "*") (cast_expression "(uint *)(iVar6 + iVar12 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + iVar12 * 4)" (( "(") (binary_expression "iVar6 + iVar12 * 4" (identifier "iVar6") (+ "+") (binary_expression "iVar12 * 4" (identifier "iVar12") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "uVar4 = *(uint *)(param_5 + iVar12 * 4);" (assignment_expression "uVar4 = *(uint *)(param_5 + iVar12 * 4)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(param_5 + iVar12 * 4)" (* "*") (cast_expression "(uint *)(param_5 + iVar12 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5 + iVar12 * 4)" (( "(") (binary_expression "param_5 + iVar12 * 4" (identifier "param_5") (+ "+") (binary_expression "iVar12 * 4" (identifier "iVar12") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar4 == uVar3)" (( "(") (binary_expression "uVar4 == uVar3" (identifier "uVar4") (== "==") (identifier "uVar3")) () ")")) (; ";")) (expression_statement "pcVar13 = (code *)local_80[0x22];" (assignment_expression "pcVar13 = (code *)local_80[0x22]" (identifier "pcVar13") (= "=") (cast_expression "(code *)local_80[0x22]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_80[0x22]" (identifier "local_80") ([ "[") (number_literal "0x22") (] "]")))) (; ";")) (if_statement "if (uVar3 < uVar4) {\nLAB_0005778b:\n      (*pcVar13)(param_3,param_5,iVar6,iVar11);\n    }\n    else {\n      (*pcVar13)(param_3,iVar6,param_5,iVar11);\n    }" (if "if") (parenthesized_expression "(uVar3 < uVar4)" (( "(") (binary_expression "uVar3 < uVar4" (identifier "uVar3") (< "<") (identifier "uVar4")) () ")")) (compound_statement "{\nLAB_0005778b:\n      (*pcVar13)(param_3,param_5,iVar6,iVar11);\n    }" ({ "{") (labeled_statement "LAB_0005778b:\n      (*pcVar13)(param_3,param_5,iVar6,iVar11);" (statement_identifier "LAB_0005778b") (: ":") (expression_statement "(*pcVar13)(param_3,param_5,iVar6,iVar11);" (call_expression "(*pcVar13)(param_3,param_5,iVar6,iVar11)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(param_3,param_5,iVar6,iVar11)" (( "(") (identifier "param_3") (, ",") (identifier "param_5") (, ",") (identifier "iVar6") (, ",") (identifier "iVar11") () ")"))) (; ";"))) (} "}")) (else_clause "else {\n      (*pcVar13)(param_3,iVar6,param_5,iVar11);\n    }" (else "else") (compound_statement "{\n      (*pcVar13)(param_3,iVar6,param_5,iVar11);\n    }" ({ "{") (expression_statement "(*pcVar13)(param_3,iVar6,param_5,iVar11);" (call_expression "(*pcVar13)(param_3,iVar6,param_5,iVar11)" (parenthesized_expression "(*pcVar13)" (( "(") (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) () ")")) (argument_list "(param_3,iVar6,param_5,iVar11)" (( "(") (identifier "param_3") (, ",") (identifier "iVar6") (, ",") (identifier "param_5") (, ",") (identifier "iVar11") () ")"))) (; ";")) (} "}")))) (} "}")))) (if_statement "if (local_64 == 0) {\n    (*(code *)local_80[0x22])(param_5,iVar14,param_5,iVar11);\n  }\n  else {\n    (*(code *)*local_80)(param_5,iVar14,param_5,iVar11);\n  }" (if "if") (parenthesized_expression "(local_64 == 0)" (( "(") (binary_expression "local_64 == 0" (identifier "local_64") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    (*(code *)local_80[0x22])(param_5,iVar14,param_5,iVar11);\n  }" ({ "{") (expression_statement "(*(code *)local_80[0x22])(param_5,iVar14,param_5,iVar11);" (call_expression "(*(code *)local_80[0x22])(param_5,iVar14,param_5,iVar11)" (parenthesized_expression "(*(code *)local_80[0x22])" (( "(") (pointer_expression "*(code *)local_80[0x22]" (* "*") (cast_expression "(code *)local_80[0x22]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_80[0x22]" (identifier "local_80") ([ "[") (number_literal "0x22") (] "]")))) () ")")) (argument_list "(param_5,iVar14,param_5,iVar11)" (( "(") (identifier "param_5") (, ",") (identifier "iVar14") (, ",") (identifier "param_5") (, ",") (identifier "iVar11") () ")"))) (; ";")) (} "}")) (else_clause "else {\n    (*(code *)*local_80)(param_5,iVar14,param_5,iVar11);\n  }" (else "else") (compound_statement "{\n    (*(code *)*local_80)(param_5,iVar14,param_5,iVar11);\n  }" ({ "{") (expression_statement "(*(code *)*local_80)(param_5,iVar14,param_5,iVar11);" (call_expression "(*(code *)*local_80)(param_5,iVar14,param_5,iVar11)" (parenthesized_expression "(*(code *)*local_80)" (( "(") (pointer_expression "*(code *)*local_80" (* "*") (cast_expression "(code *)*local_80" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*local_80" (* "*") (identifier "local_80")))) () ")")) (argument_list "(param_5,iVar14,param_5,iVar11)" (( "(") (identifier "param_5") (, ",") (identifier "iVar14") (, ",") (identifier "param_5") (, ",") (identifier "iVar11") () ")"))) (; ";")) (} "}")))) (if_statement "if (local_60 != 0) {\n                    \n                    \n    (*(code *)*local_80)();\n    return;\n  }" (if "if") (parenthesized_expression "(local_60 != 0)" (( "(") (binary_expression "local_60 != 0" (identifier "local_60") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    \n                    \n    (*(code *)*local_80)();\n    return;\n  }" ({ "{") (expression_statement "(*(code *)*local_80)();" (call_expression "(*(code *)*local_80)()" (parenthesized_expression "(*(code *)*local_80)" (( "(") (pointer_expression "*(code *)*local_80" (* "*") (cast_expression "(code *)*local_80" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*local_80" (* "*") (identifier "local_80")))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "(*(code *)local_80[0x22])();" (call_expression "(*(code *)local_80[0x22])()" (parenthesized_expression "(*(code *)local_80[0x22])" (( "(") (pointer_expression "*(code *)local_80[0x22]" (* "*") (cast_expression "(code *)local_80[0x22]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_80[0x22]" (identifier "local_80") ([ "[") (number_literal "0x22") (] "]")))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

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

void function_1
               (type_1 r0,type_1 var_16,type_1 r2,type_1 var_20,type_2 var_1,type_3 m0,type_3 m1,
               type_3 m2,type_3 m3,type_2 var_2,type_1 var_3)

{
  int var_6;
  type_3 pmVar1;
  type_4 *var_14;
  type_3 var_5;
  type_1 var_8;
  int var_11;
  type_5 var_13;
  type_2 var_15;
  int var_7;
  int var_4;
  type_6 *pcVar8;
  int var_9;
  int var_17;
  type_1 prodp_00;
  type_7 var_22;
  type_7 var_19;
  type_1 local_58;
  type_7 var_21;
  type_1 local_38;
  type_7 var_18;
  type_7 var_23;
  
  var_4 = var_1 + 1;
  var_6 = var_2 + 1;
  var_5 = var_3 + var_4;
  var_7 = var_1 + var_2;
  var_8 = var_5 + var_6;
  var_9 = var_7 + 1;
  prodp_00 = var_8 + var_9;
  var_11 = var_1;
  if (var_1 < var_2) {
    var_10(var_8,m2,var_2,var_16,var_1);
  }
  else {
    var_10(var_8,var_16,var_1,m2,var_2);
  }
  do {
    var_14 = var_12;
    var_11 = var_11 + -1;
    var_17 = var_1;
    if (var_11 < 0) {
      pcVar8 = *(type_6 **)(var_12 + 0x88);
      goto LAB_000573b5;
    }
  } while (var_20[var_11] == r2[var_11]);
  pcVar8 = *(type_6 **)(var_12 + 0x88);
  if (r2[var_11] < var_20[var_11]) {
LAB_000573b5:
    (*pcVar8)(var_20,var_20,r2,var_1);
    var_13 = (**(type_6 **)var_14)(var_16,var_16,var_20,var_1);
    var_16[var_1] = var_13;
    if (var_13 == 0) {
      var_18 = 1;
      goto LAB_00057b2c;
    }
    var_11 = (**(type_6 **)(var_14 + 0x88))(var_3,var_16,r0,var_1);
    var_3[var_1] = var_13 - var_11;
    var_18 = 1;
    var_21 = 0;
    var_23 = 1;
  }
  else {
    (*pcVar8)(var_20,r2,var_20,var_1);
    var_15 = var_1;
    do {
      var_15 = var_15 + -1;
      if (var_15 < 0) {
        pcVar8 = *(type_6 **)(var_14 + 0x88);
        goto LAB_00057ae8;
      }
    } while (var_16[var_15] == var_20[var_15]);
    pcVar8 = *(type_6 **)(var_14 + 0x88);
    if (var_20[var_15] < var_16[var_15]) {
LAB_00057ae8:
      local_38 = var_16 + var_1;
      (*pcVar8)(var_16,var_16,var_20,var_1);
      *local_38 = 0;
      var_18 = 0;
LAB_00057b2c:
      do {
        local_58 = var_3 + var_1;
        var_17 = var_17 + -1;
        if (var_17 < 0) {
          pcVar8 = *(type_6 **)(var_14 + 0x88);
          goto LAB_00057b3e;
        }
      } while (r0[var_17] == var_16[var_17]);
      pcVar8 = *(type_6 **)(var_14 + 0x88);
      if (var_16[var_17] < r0[var_17]) {
LAB_00057b3e:
        (*pcVar8)(var_3,r0,var_16,var_1);
        var_23 = 0;
      }
      else {
        (*pcVar8)(var_3,var_16,r0,var_1);
        var_23 = 1;
      }
      var_21 = 0;
      *local_58 = 0;
    }
    else {
      (*pcVar8)(var_16,var_20,var_16,var_1);
      var_16[var_1] = 0;
      var_13 = (**(type_6 **)var_14)(var_3,var_16,r0,var_1);
      var_3[var_1] = var_13;
      var_18 = 0;
      var_21 = 1;
      var_23 = 0;
    }
  }
  local_38 = var_16 + var_1;
  if (var_1 < var_2) {
    var_10(prodp_00,m0,var_2,r0,var_1);
  }
  else {
    var_10(prodp_00,r0,var_1,m0,var_2);
  }
  var_13 = (**(type_6 **)var_14)(r0,var_8,prodp_00,var_7);
  r0[var_7] = var_13;
  var_15 = var_2;
  do {
    var_15 = var_15 + -1;
    if (var_15 < 0) {
      pcVar8 = *(type_6 **)(var_14 + 0x88);
      goto LAB_000574ba;
    }
  } while (m3[var_15] == m2[var_15]);
  pcVar8 = *(type_6 **)(var_14 + 0x88);
  if (m2[var_15] < m3[var_15]) {
LAB_000574ba:
    (*pcVar8)(var_5,m3,m2,var_2);
    var_19 = 0;
  }
  else {
    (*pcVar8)(var_5,m2,m3,var_2);
    var_18 = var_18 ^ 1;
    var_19 = 1;
  }
  if (var_1 < var_2) {
    var_10(prodp_00,var_5,var_2,var_20,var_1);
  }
  else {
    var_10(prodp_00,var_20,var_1,var_5,var_2);
  }
  prodp_00[var_7] = 0;
  pmVar1 = var_5 + var_2;
  var_11 = var_2;
  if (var_19 == 0) {
    var_13 = (**(type_6 **)var_14)(var_5,var_5,m1,var_2);
    *pmVar1 = var_13;
    if (var_13 == 0) goto LAB_00057a50;
    if (var_2 < var_1) {
      var_10(var_20,var_16,var_1,var_5,var_6);
    }
    else {
      var_10(var_20,var_5,var_6,var_16,var_1);
    }
    if (var_16[var_1] != 0) {
      (**(type_6 **)var_14)(var_20 + var_1,var_20 + var_1,var_5,var_6);
    }
  }
  else {
    do {
      var_11 = var_11 + -1;
      if (var_11 < 0) {
        pcVar8 = *(type_6 **)(var_14 + 0x88);
        goto LAB_00057a2e;
      }
    } while (m1[var_11] == var_5[var_11]);
    pcVar8 = *(type_6 **)(var_14 + 0x88);
    if (var_5[var_11] < m1[var_11]) {
LAB_00057a2e:
      (*pcVar8)(var_5,m1,var_5,var_2);
      var_19 = 0;
    }
    else {
      (*pcVar8)(var_5,var_5,m1,var_2);
    }
    *pmVar1 = 0;
LAB_00057a50:
    if (var_4 < var_2) {
      var_10(var_20,var_5,var_2,var_16,var_4);
    }
    else {
      var_10(var_20,var_16,var_4,var_5,var_2);
    }
  }
  var_8[var_7] = 0;
  var_7 = var_9;
  if (var_21 == var_19) {
    (**(type_6 **)var_14)(var_20,var_20,var_8,var_9);
    var_22 = 0;
    if (var_19 == 0) goto LAB_000578c7;
LAB_000575ee:
    var_13 = (**(type_6 **)var_14)(var_5,var_5,m0,var_2);
    *pmVar1 = var_13;
LAB_00057608:
    if (var_1 <= var_2) goto LAB_000578fc;
LAB_00057610:
    var_10(var_8,r2,var_1,var_5,var_6);
    if (var_21 != 0) goto LAB_00057638;
LAB_00057924:
    var_9 = (**(type_6 **)var_14)(var_16,var_16,r2,var_1);
    *local_38 = *local_38 + var_9;
  }
  else {
    do {
      var_7 = var_7 + -1;
      if (var_7 < 0) {
        pcVar8 = *(type_6 **)(var_14 + 0x88);
        goto LAB_000575cb;
      }
    } while (var_8[var_7] == var_20[var_7]);
    pcVar8 = *(type_6 **)(var_14 + 0x88);
    if (var_20[var_7] < var_8[var_7]) {
LAB_000575cb:
      (*pcVar8)(var_20,var_8,var_20,var_9);
      var_22 = 0;
    }
    else {
      (*pcVar8)(var_20,var_20,var_8,var_9);
      var_22 = 1;
    }
    if (var_19 != 0) goto LAB_000575ee;
LAB_000578c7:
    pcVar8 = *(type_6 **)(var_14 + 0x88);
    var_9 = var_2;
    if (*pmVar1 == 0) {
      do {
        var_9 = var_9 + -1;
        if (var_9 < 0) goto LAB_00057cd1;
      } while (var_5[var_9] == m0[var_9]);
      if (m0[var_9] < var_5[var_9]) {
LAB_00057cd1:
        (*pcVar8)(var_5,var_5,m0,var_2);
      }
      else {
        (*pcVar8)(var_5,m0,var_5,var_2);
        var_19 = 1;
      }
      goto LAB_00057608;
    }
    var_9 = (*pcVar8)(var_5,var_5,m0,var_2);
    *pmVar1 = *pmVar1 - var_9;
    if (var_2 < var_1) goto LAB_00057610;
LAB_000578fc:
    var_10(var_8,var_5,var_6,r2,var_1);
    if (var_21 == 0) goto LAB_00057924;
LAB_00057638:
    (**(type_6 **)(var_14 + 0x88))(var_16,r2,var_16,var_1);
  }
  var_9 = var_2 + var_4;
  var_11 = var_9;
  var_7 = var_9;
  if (var_22 == var_19) {
    (**(type_6 **)var_14)(r2,var_20,var_8,var_9);
    var_19 = var_22;
    if (var_22 == var_18) goto LAB_00057971;
LAB_000576cd:
    do {
      var_7 = var_7 + -1;
      if (var_7 < 0) {
        pcVar8 = *(type_6 **)(var_14 + 0x88);
        goto LAB_000576db;
      }
    } while (var_20[var_7] == prodp_00[var_7]);
    pcVar8 = *(type_6 **)(var_14 + 0x88);
    if (prodp_00[var_7] < var_20[var_7]) {
LAB_000576db:
      (*pcVar8)(var_20,var_20,prodp_00,var_9);
    }
    else {
      (*pcVar8)(var_20,prodp_00,var_20,var_9);
      var_22 = var_22 ^ 1;
    }
    if (var_2 <= var_4) goto LAB_000576f3;
LAB_0005798d:
    var_10(var_8,m1,var_2,var_3,var_4);
    var_13 = (**(type_6 **)var_14)(var_5,m3,m1,var_2);
    *pmVar1 = var_13;
  }
  else {
    do {
      var_11 = var_11 + -1;
      if (var_11 < 0) {
        pcVar8 = *(type_6 **)(var_14 + 0x88);
        goto LAB_0005768b;
      }
    } while (var_20[var_11] == var_8[var_11]);
    pcVar8 = *(type_6 **)(var_14 + 0x88);
    if (var_8[var_11] < var_20[var_11]) {
LAB_0005768b:
      (*pcVar8)(r2,var_20,var_8,var_9);
      var_19 = var_22;
    }
    else {
      (*pcVar8)(r2,var_8,var_20,var_9);
      var_19 = var_22 ^ 1;
    }
    if (var_22 != var_18) goto LAB_000576cd;
LAB_00057971:
    (**(type_6 **)var_14)(var_20,var_20,prodp_00,var_9);
    if (var_4 < var_2) goto LAB_0005798d;
LAB_000576f3:
    var_10(var_8,var_3,var_4,m1,var_2);
    var_13 = (**(type_6 **)var_14)(var_5,m3,m1,var_2);
    *pmVar1 = var_13;
    if (var_2 < var_4) {
      var_10(prodp_00,var_16,var_4,var_5,var_6);
      goto LAB_00057755;
    }
  }
  var_10(prodp_00,var_5,var_6,var_16,var_4);
LAB_00057755:
  var_4 = var_9;
  if (var_23 == var_22) {
    (**(type_6 **)var_14)(var_16,var_20,var_8,var_9);
  }
  else {
    do {
      var_4 = var_4 + -1;
      if (var_4 < 0) {
        pcVar8 = *(type_6 **)(var_14 + 0x88);
        goto LAB_0005778b;
      }
    } while (var_20[var_4] == var_8[var_4]);
    pcVar8 = *(type_6 **)(var_14 + 0x88);
    if (var_8[var_4] < var_20[var_4]) {
LAB_0005778b:
      (*pcVar8)(var_16,var_20,var_8,var_9);
    }
    else {
      (*pcVar8)(var_16,var_8,var_20,var_9);
    }
  }
  if (var_22 == 0) {
    (**(type_6 **)(var_14 + 0x88))(var_20,prodp_00,var_20,var_9);
  }
  else {
    (**(type_6 **)var_14)(var_20,prodp_00,var_20,var_9);
  }
  if (var_19 != 0) {
                    /* WARNING: Could not recover jumptable at 0x000577f2. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    (**(type_6 **)var_14)();
    return;
  }
                    /* WARNING: Could not recover jumptable at 0x000579fd. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(type_6 **)(var_14 + 0x88))();
  return;
}


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

void __regparm2
MASKED
          (undefined4 param_1,undefined4 param_2,int param_3,int param_4,int param_5,int param_6,
          int param_7,int param_8,int param_9,int param_10,int param_11,int param_12)

{
  int iVar1;
  int *piVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  undefined4 uVar9;
  int iVar10;
  int iVar11;
  int iVar12;
  code *pcVar13;
  int iVar14;
  int unaff_EBX;
  int unaff_retaddr;
  undefined4 *local_80;
  uint local_64;
  uint local_60;
  int *local_5c;
  uint local_40;
  int *local_3c;
  int local_34;
  uint local_30;
  uint local_24;
  
  entry(param_2,0x572a9);
  iVar12 = param_6 + 1;
  iVar1 = param_11 + 1;
  local_34 = iVar12 * 4;
  iVar5 = param_12 + local_34;
  iVar6 = iVar5 + iVar1 * 4;
  iVar11 = param_6 + param_11 + 1;
  iVar10 = iVar11 * 4;
  iVar14 = iVar6 + iVar10;
  iVar7 = param_6;
  if (param_6 < param_11) {
    __gmpn_mul(iVar6,param_9,param_11,param_3,param_6);
  }
  else {
    __gmpn_mul(iVar6,param_3,param_6,param_9,param_11);
  }
  do {
    iVar7 = iVar7 + -1;
    iVar8 = param_6;
    if (iVar7 < 0) {
      local_80 = *(undefined4 **)(unaff_EBX + 0x46aeb);
      pcVar13 = (code *)local_80[0x22];
      goto LAB_000573b5;
    }
    uVar3 = *(uint *)(param_4 + iVar7 * 4);
    uVar4 = *(uint *)(param_5 + iVar7 * 4);
  } while (uVar4 == uVar3);
  local_80 = *(undefined4 **)(unaff_EBX + 0x46aeb);
  pcVar13 = (code *)local_80[0x22];
  if (uVar3 < uVar4) {
LAB_000573b5:
    (*pcVar13)(param_5,param_5,param_4,param_6);
    local_3c = (int *)(param_3 + local_34 + -4);
    iVar7 = (*(code *)*local_80)(param_3,param_3,param_5,param_6);
    *local_3c = iVar7;
    local_5c = (int *)(param_12 + local_34 + -4);
    if (iVar7 == 0) {
      local_30 = 1;
      goto LAB_00057b2c;
    }
    iVar8 = (*(code *)local_80[0x22])(param_12,param_3,unaff_retaddr,param_6);
    *local_5c = iVar7 - iVar8;
    local_30 = 1;
    local_40 = 0;
    local_24 = 1;
  }
  else {
    (*pcVar13)(param_5,param_4,param_5,param_6);
    iVar7 = param_6;
    do {
      iVar7 = iVar7 + -1;
      if (iVar7 < 0) {
        local_5c = (int *)(param_12 + local_34 + -4);
        local_3c = (int *)(param_3 + local_34 + -4);
        pcVar13 = (code *)local_80[0x22];
        goto LAB_00057ae8;
      }
      uVar3 = *(uint *)(param_5 + iVar7 * 4);
      uVar4 = *(uint *)(param_3 + iVar7 * 4);
    } while (uVar4 == uVar3);
    local_5c = (int *)(param_12 + local_34 + -4);
    local_3c = (int *)(param_3 + local_34 + -4);
    pcVar13 = (code *)local_80[0x22];
    if (uVar3 < uVar4) {
LAB_00057ae8:
      (*pcVar13)(param_3,param_3,param_5,param_6);
      *local_3c = 0;
      local_30 = 0;
LAB_00057b2c:
      do {
        iVar8 = iVar8 + -1;
        if (iVar8 < 0) {
          pcVar13 = (code *)local_80[0x22];
          goto LAB_00057b3e;
        }
        uVar3 = *(uint *)(param_3 + iVar8 * 4);
        uVar4 = *(uint *)(unaff_retaddr + iVar8 * 4);
      } while (uVar4 == uVar3);
      pcVar13 = (code *)local_80[0x22];
      if (uVar3 < uVar4) {
LAB_00057b3e:
        (*pcVar13)(param_12,unaff_retaddr,param_3,param_6);
        local_24 = 0;
      }
      else {
        (*pcVar13)(param_12,param_3,unaff_retaddr,param_6);
        local_24 = 1;
      }
      local_40 = 0;
      *local_5c = 0;
    }
    else {
      (*pcVar13)(param_3,param_5,param_3,param_6);
      *local_3c = 0;
      iVar7 = (*(code *)*local_80)(param_12,param_3,unaff_retaddr,param_6);
      *local_5c = iVar7;
      local_30 = 0;
      local_40 = 1;
      local_24 = 0;
    }
  }
  local_34 = local_34 + -4;
  if (param_6 < param_11) {
    __gmpn_mul(iVar14,param_7,param_11,unaff_retaddr,param_6);
  }
  else {
    __gmpn_mul(iVar14,unaff_retaddr,param_6,param_7,param_11);
  }
  uVar9 = (*(code *)*local_80)(unaff_retaddr,iVar6,iVar14,param_6 + param_11);
  *(undefined4 *)(unaff_retaddr + -4 + iVar10) = uVar9;
  iVar7 = param_11;
  do {
    iVar7 = iVar7 + -1;
    if (iVar7 < 0) {
      pcVar13 = (code *)local_80[0x22];
      goto LAB_000574ba;
    }
    uVar3 = *(uint *)(param_9 + iVar7 * 4);
    uVar4 = *(uint *)(param_10 + iVar7 * 4);
  } while (uVar4 == uVar3);
  pcVar13 = (code *)local_80[0x22];
  if (uVar3 < uVar4) {
LAB_000574ba:
    (*pcVar13)(iVar5,param_10,param_9,param_11);
    local_60 = 0;
  }
  else {
    (*pcVar13)(iVar5,param_9,param_10,param_11);
    local_30 = local_30 ^ 1;
    local_60 = 1;
  }
  if (param_6 < param_11) {
    __gmpn_mul(iVar14,iVar5,param_11,param_5,param_6);
  }
  else {
    __gmpn_mul(iVar14,param_5,param_6,iVar5,param_11);
  }
  *(undefined4 *)(iVar14 + -4 + iVar10) = 0;
  piVar2 = (int *)(iVar5 + -4 + iVar1 * 4);
  iVar7 = param_11;
  if (local_60 == 0) {
    iVar7 = (*(code *)*local_80)(iVar5,iVar5,param_8,param_11);
    *piVar2 = iVar7;
    if (iVar7 == 0) goto LAB_00057a50;
    if (param_11 < param_6) {
      __gmpn_mul(param_5,param_3,param_6,iVar5,iVar1);
    }
    else {
      __gmpn_mul(param_5,iVar5,iVar1,param_3,param_6);
    }
    if (*(int *)(param_3 + local_34) != 0) {
      (*(code *)*local_80)(local_34 + param_5,local_34 + param_5,iVar5,iVar1);
    }
  }
  else {
    do {
      iVar7 = iVar7 + -1;
      if (iVar7 < 0) {
        pcVar13 = (code *)local_80[0x22];
        goto LAB_00057a2e;
      }
      uVar3 = *(uint *)(iVar5 + iVar7 * 4);
      uVar4 = *(uint *)(param_8 + iVar7 * 4);
    } while (uVar4 == uVar3);
    pcVar13 = (code *)local_80[0x22];
    if (uVar3 < uVar4) {
LAB_00057a2e:
      (*pcVar13)(iVar5,param_8,iVar5,param_11);
      local_60 = 0;
    }
    else {
      (*pcVar13)(iVar5,iVar5,param_8,param_11);
    }
    *piVar2 = 0;
LAB_00057a50:
    if (iVar12 < param_11) {
      __gmpn_mul(param_5,iVar5,param_11,param_3,iVar12);
    }
    else {
      __gmpn_mul(param_5,param_3,iVar12,iVar5,param_11);
    }
  }
  *(undefined4 *)(iVar6 + -4 + iVar10) = 0;
  iVar10 = iVar11;
  if (local_40 == local_60) {
    (*(code *)*local_80)(param_5,param_5,iVar6,iVar11);
    local_64 = 0;
    if (local_60 == 0) goto LAB_000578c7;
LAB_000575ee:
    iVar11 = (*(code *)*local_80)(iVar5,iVar5,param_7,param_11);
    *piVar2 = iVar11;
LAB_00057608:
    if (param_6 <= param_11) goto LAB_000578fc;
LAB_00057610:
    __gmpn_mul(iVar6,param_4,param_6,iVar5,iVar1);
    if (local_40 != 0) goto LAB_00057638;
LAB_00057924:
    iVar11 = (*(code *)*local_80)(param_3,param_3,param_4,param_6);
    *local_3c = *local_3c + iVar11;
  }
  else {
    do {
      iVar10 = iVar10 + -1;
      if (iVar10 < 0) {
        pcVar13 = (code *)local_80[0x22];
        goto LAB_000575cb;
      }
      uVar3 = *(uint *)(param_5 + iVar10 * 4);
      uVar4 = *(uint *)(iVar6 + iVar10 * 4);
    } while (uVar4 == uVar3);
    pcVar13 = (code *)local_80[0x22];
    if (uVar3 < uVar4) {
LAB_000575cb:
      (*pcVar13)(param_5,iVar6,param_5,iVar11);
      local_64 = 0;
    }
    else {
      (*pcVar13)(param_5,param_5,iVar6,iVar11);
      local_64 = 1;
    }
    if (local_60 != 0) goto LAB_000575ee;
LAB_000578c7:
    pcVar13 = (code *)local_80[0x22];
    iVar11 = param_11;
    if (*piVar2 == 0) {
      do {
        iVar11 = iVar11 + -1;
        if (iVar11 < 0) goto LAB_00057cd1;
        uVar3 = *(uint *)(param_7 + iVar11 * 4);
        uVar4 = *(uint *)(iVar5 + iVar11 * 4);
      } while (uVar4 == uVar3);
      if (uVar3 < uVar4) {
LAB_00057cd1:
        (*pcVar13)(iVar5,iVar5,param_7,param_11);
      }
      else {
        (*pcVar13)(iVar5,param_7,iVar5,param_11);
        local_60 = 1;
      }
      goto LAB_00057608;
    }
    iVar11 = (*pcVar13)(iVar5,iVar5,param_7,param_11);
    *piVar2 = *piVar2 - iVar11;
    if (param_11 < param_6) goto LAB_00057610;
LAB_000578fc:
    __gmpn_mul(iVar6,iVar5,iVar1,param_4,param_6);
    if (local_40 == 0) goto LAB_00057924;
LAB_00057638:
    (*(code *)local_80[0x22])(param_3,param_4,param_3,param_6);
  }
  iVar11 = param_11 + iVar12;
  iVar7 = iVar11;
  iVar10 = iVar11;
  if (local_64 == local_60) {
    (*(code *)*local_80)(param_4,param_5,iVar6,iVar11);
    local_60 = local_64;
    if (local_64 == local_30) goto LAB_00057971;
LAB_000576cd:
    do {
      iVar10 = iVar10 + -1;
      if (iVar10 < 0) {
        pcVar13 = (code *)local_80[0x22];
        goto LAB_000576db;
      }
      uVar3 = *(uint *)(iVar14 + iVar10 * 4);
      uVar4 = *(uint *)(param_5 + iVar10 * 4);
    } while (uVar4 == uVar3);
    pcVar13 = (code *)local_80[0x22];
    if (uVar3 < uVar4) {
LAB_000576db:
      (*pcVar13)(param_5,param_5,iVar14,iVar11);
    }
    else {
      (*pcVar13)(param_5,iVar14,param_5,iVar11);
      local_64 = local_64 ^ 1;
    }
    if (param_11 <= iVar12) goto LAB_000576f3;
LAB_0005798d:
    __gmpn_mul(iVar6,param_8,param_11,param_12,iVar12);
    iVar10 = (*(code *)*local_80)(iVar5,param_10,param_8,param_11);
    *piVar2 = iVar10;
  }
  else {
    do {
      iVar7 = iVar7 + -1;
      if (iVar7 < 0) {
        pcVar13 = (code *)local_80[0x22];
        goto LAB_0005768b;
      }
      uVar3 = *(uint *)(iVar6 + iVar7 * 4);
      uVar4 = *(uint *)(param_5 + iVar7 * 4);
    } while (uVar4 == uVar3);
    pcVar13 = (code *)local_80[0x22];
    if (uVar3 < uVar4) {
LAB_0005768b:
      (*pcVar13)(param_4,param_5,iVar6,iVar11);
      local_60 = local_64;
    }
    else {
      (*pcVar13)(param_4,iVar6,param_5,iVar11);
      local_60 = local_64 ^ 1;
    }
    if (local_64 != local_30) goto LAB_000576cd;
LAB_00057971:
    (*(code *)*local_80)(param_5,param_5,iVar14,iVar11);
    if (iVar12 < param_11) goto LAB_0005798d;
LAB_000576f3:
    __gmpn_mul(iVar6,param_12,iVar12,param_8,param_11);
    iVar10 = (*(code *)*local_80)(iVar5,param_10,param_8,param_11);
    *piVar2 = iVar10;
    if (param_11 < iVar12) {
      __gmpn_mul(iVar14,param_3,iVar12,iVar5,iVar1);
      goto LAB_00057755;
    }
  }
  __gmpn_mul(iVar14,iVar5,iVar1,param_3,iVar12);
LAB_00057755:
  iVar12 = iVar11;
  if (local_24 == local_64) {
    (*(code *)*local_80)(param_3,param_5,iVar6,iVar11);
  }
  else {
    do {
      iVar12 = iVar12 + -1;
      if (iVar12 < 0) {
        pcVar13 = (code *)local_80[0x22];
        goto LAB_0005778b;
      }
      uVar3 = *(uint *)(iVar6 + iVar12 * 4);
      uVar4 = *(uint *)(param_5 + iVar12 * 4);
    } while (uVar4 == uVar3);
    pcVar13 = (code *)local_80[0x22];
    if (uVar3 < uVar4) {
LAB_0005778b:
      (*pcVar13)(param_3,param_5,iVar6,iVar11);
    }
    else {
      (*pcVar13)(param_3,iVar6,param_5,iVar11);
    }
  }
  if (local_64 == 0) {
    (*(code *)local_80[0x22])(param_5,iVar14,param_5,iVar11);
  }
  else {
    (*(code *)*local_80)(param_5,iVar14,param_5,iVar11);
  }
  if (local_60 != 0) {
                    /* WARNING: Could not recover jumptable at 0x000577f2. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    (*(code *)*local_80)();
    return;
  }
                    /* WARNING: Could not recover jumptable at 0x000579fd. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*(code *)local_80[0x22])();
  return;
}

