
int __gmpn_hgcd2(mp_limb_t ah,mp_limb_t al,mp_limb_t bh,mp_limb_t bl,hgcd_matrix1 *M)

{
  mp_limb_t mVar1;
  mp_limb_t mVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  int iVar6;
  mp_limb_t mVar7;
  mp_limb_t mVar8;
  mp_limb_t mVar9;
  mp_limb_t mVar10;
  uint uVar11;
  uint uVar12;
  
  if ((ah < 2) || (bh < 2)) {
    return 0;
  }
  if ((bh < ah) || ((ah == bh && (bl < al != 0)))) {
    ah = (ah - bh) - (uint)(al < bl);
    al = al - bl;
    if (ah < 2) {
      return 0;
    }
    mVar10 = 0;
    mVar7 = 1;
    mVar8 = 1;
    mVar9 = 1;
    if (ah < bh) goto LAB_00056c80;
  }
  else {
    bh = bh - ((bl < al) + ah);
    bl = bl - al;
    if (bh < 2) {
      return 0;
    }
    mVar10 = 1;
    mVar7 = 0;
    mVar8 = 1;
    mVar9 = 1;
    if (ah < bh) goto LAB_00056c80;
  }
  while (ah != bh) {
    if (ah < 0x10000) {
      uVar4 = (al >> 0x10) + ah * 0x10000;
      uVar12 = (bl >> 0x10) + bh * 0x10000;
      goto LAB_00056cd4;
    }
    ah = (ah - bh) - (uint)(al < bl);
    if (ah < 2) break;
    al = al - bl;
    mVar1 = mVar9;
    mVar2 = mVar10;
    if (bh < ah) {
      iVar6 = 0;
      uVar4 = bh;
      uVar12 = bl;
      if ((int)ah < 0) {
        iVar6 = 1;
        for (; -1 < (int)uVar4; uVar4 = uVar11 | uVar4 << 1) {
          uVar11 = uVar12 >> 0x1f;
          uVar12 = uVar12 << 1;
          iVar6 = iVar6 + 1;
        }
        uVar3 = 0;
        do {
          uVar3 = uVar3 << 1;
          if (uVar4 < ah) {
            uVar11 = (uint)(al < uVar12);
LAB_00056f78:
            al = al - uVar12;
            ah = (ah - uVar4) - uVar11;
            uVar3 = uVar3 | 1;
          }
          else if ((ah == uVar4) && (uVar12 <= al)) {
            uVar11 = 0;
            goto LAB_00056f78;
          }
          iVar6 = iVar6 + -1;
          uVar12 = uVar4 << 0x1f | uVar12 >> 1;
          uVar4 = uVar4 >> 1;
        } while (iVar6 != 0);
      }
      else {
        do {
          do {
            uVar11 = uVar12 >> 0x1f;
            uVar12 = uVar12 << 1;
            uVar4 = uVar11 | uVar4 << 1;
            iVar6 = iVar6 + 1;
          } while (uVar4 < ah);
          uVar3 = 0;
          uVar5 = uVar4;
        } while ((ah == uVar4) && (uVar5 = uVar11, uVar12 <= al));
        do {
          uVar4 = uVar4 >> 1;
          uVar12 = uVar5 << 0x1f | uVar12 >> 1;
          uVar3 = uVar3 << 1;
          if (uVar4 < ah) {
            uVar11 = (uint)(al < uVar12);
LAB_00056eac:
            al = al - uVar12;
            ah = (ah - uVar4) - uVar11;
            uVar3 = uVar3 | 1;
          }
          else if ((uVar4 == ah) && (uVar12 <= al)) {
            uVar11 = 0;
            goto LAB_00056eac;
          }
          iVar6 = iVar6 + -1;
          uVar5 = uVar4;
        } while (iVar6 != 0);
      }
      if (ah < 2) {
        mVar7 = mVar9 * uVar3 + mVar7;
        mVar8 = mVar10 * uVar3 + mVar8;
        break;
      }
      mVar1 = mVar9 * (uVar3 + 1);
      mVar2 = mVar10 * (uVar3 + 1);
    }
    mVar8 = mVar8 + mVar2;
    mVar7 = mVar7 + mVar1;
    if (ah == bh) break;
LAB_00056c80:
    if (bh < 0x10000) {
      uVar4 = (al >> 0x10) + ah * 0x10000;
      uVar12 = (bl >> 0x10) + bh * 0x10000;
      goto LAB_00056cfc;
    }
    bh = (bh - ah) - (uint)(bl < al);
    if (bh < 2) break;
    bl = bl - al;
    if (ah < bh) {
      iVar6 = 0;
      uVar4 = ah;
      uVar12 = al;
      if ((int)bh < 0) {
        iVar6 = 1;
        for (; -1 < (int)uVar4; uVar4 = uVar11 | uVar4 << 1) {
          uVar11 = uVar12 >> 0x1f;
          uVar12 = uVar12 << 1;
          iVar6 = iVar6 + 1;
        }
        uVar11 = 0;
        do {
          uVar11 = uVar11 << 1;
          if (uVar4 < bh) {
            uVar5 = (uint)(bl < uVar12);
LAB_00057068:
            bl = bl - uVar12;
            bh = (bh - uVar4) - uVar5;
            uVar11 = uVar11 | 1;
          }
          else if ((bh == uVar4) && (uVar12 <= bl)) {
            uVar5 = 0;
            goto LAB_00057068;
          }
          iVar6 = iVar6 + -1;
          uVar12 = uVar4 << 0x1f | uVar12 >> 1;
          uVar4 = uVar4 >> 1;
        } while (iVar6 != 0);
      }
      else {
        do {
          do {
            uVar5 = uVar12 << 1;
            uVar4 = uVar12 >> 0x1f | uVar4 << 1;
            iVar6 = iVar6 + 1;
            uVar12 = uVar5;
          } while (uVar4 < bh);
        } while ((bh == uVar4) && (uVar5 <= bl));
        uVar11 = 0;
        do {
          uVar12 = uVar4 << 0x1f;
          uVar4 = uVar4 >> 1;
          uVar5 = uVar12 | uVar5 >> 1;
          uVar11 = uVar11 << 1;
          if (uVar4 < bh) {
            uVar12 = (uint)(bl < uVar5);
LAB_00056df4:
            bl = bl - uVar5;
            bh = (bh - uVar4) - uVar12;
            uVar11 = uVar11 | 1;
          }
          else if ((uVar4 == bh) && (uVar5 <= bl)) {
            uVar12 = 0;
            goto LAB_00056df4;
          }
          iVar6 = iVar6 + -1;
        } while (iVar6 != 0);
      }
      if (bh < 2) {
        mVar9 = uVar11 * mVar7 + mVar9;
        mVar10 = uVar11 * mVar8 + mVar10;
        break;
      }
      mVar9 = (uVar11 + 1) * mVar7 + mVar9;
      mVar10 = (uVar11 + 1) * mVar8 + mVar10;
    }
    else {
      mVar9 = mVar9 + mVar7;
      mVar10 = mVar10 + mVar8;
    }
  }
  goto LAB_00056c2c;
LAB_00056cfc:
  uVar12 = uVar12 - uVar4;
  if (0x1ffff < uVar12) {
    if (uVar4 < uVar12) {
      iVar6 = 0;
      uVar11 = uVar4;
      if ((int)uVar12 < 0) {
        iVar6 = 1;
        for (; -1 < (int)uVar11; uVar11 = uVar11 << 1) {
          iVar6 = iVar6 + 1;
        }
        uVar5 = 0;
        do {
          iVar6 = iVar6 + -1;
          uVar5 = uVar5 << 1;
          if (uVar11 <= uVar12) {
            uVar12 = uVar12 - uVar11;
            uVar5 = uVar5 | 1;
          }
          uVar11 = uVar11 >> 1;
        } while (iVar6 != 0);
      }
      else {
        do {
          uVar3 = uVar11;
          uVar11 = uVar3 << 1;
          iVar6 = iVar6 + 1;
        } while (uVar11 <= uVar12);
        uVar5 = 0;
        uVar3 = uVar3 & 0x7fffffff;
        do {
          iVar6 = iVar6 + -1;
          uVar5 = uVar5 << 1;
          if (uVar3 <= uVar12) {
            uVar12 = uVar12 - uVar3;
            uVar5 = uVar5 | 1;
          }
          uVar3 = uVar3 >> 1;
        } while (iVar6 != 0);
      }
      if (uVar12 < 0x20000) {
        mVar9 = mVar7 * uVar5 + mVar9;
        mVar10 = mVar8 * uVar5 + mVar10;
        goto LAB_00056c2c;
      }
      mVar9 = mVar7 * (uVar5 + 1) + mVar9;
      mVar10 = mVar8 * (uVar5 + 1) + mVar10;
    }
    else {
      mVar9 = mVar9 + mVar7;
      mVar10 = mVar10 + mVar8;
    }
LAB_00056cd4:
    uVar4 = uVar4 - uVar12;
    if (uVar4 < 0x20000) goto LAB_00056c2c;
    if (uVar12 < uVar4) {
      iVar6 = 0;
      uVar11 = uVar12;
      if ((int)uVar4 < 0) {
        iVar6 = 1;
        for (; -1 < (int)uVar11; uVar11 = uVar11 << 1) {
          iVar6 = iVar6 + 1;
        }
        uVar5 = 0;
        do {
          iVar6 = iVar6 + -1;
          uVar5 = uVar5 << 1;
          if (uVar11 <= uVar4) {
            uVar4 = uVar4 - uVar11;
            uVar5 = uVar5 | 1;
          }
          uVar11 = uVar11 >> 1;
        } while (iVar6 != 0);
      }
      else {
        do {
          uVar3 = uVar11;
          uVar11 = uVar3 << 1;
          iVar6 = iVar6 + 1;
        } while (uVar11 <= uVar4);
        uVar5 = 0;
        uVar3 = uVar3 & 0x7fffffff;
        do {
          iVar6 = iVar6 + -1;
          uVar5 = uVar5 << 1;
          if (uVar3 <= uVar4) {
            uVar4 = uVar4 - uVar3;
            uVar5 = uVar5 | 1;
          }
          uVar3 = uVar3 >> 1;
        } while (iVar6 != 0);
      }
      if (uVar4 < 0x20000) {
        mVar7 = mVar9 * uVar5 + mVar7;
        mVar8 = mVar10 * uVar5 + mVar8;
        goto LAB_00056c2c;
      }
      mVar7 = mVar9 * (uVar5 + 1) + mVar7;
      mVar8 = mVar10 * (uVar5 + 1) + mVar8;
    }
    else {
      mVar7 = mVar7 + mVar9;
      mVar8 = mVar8 + mVar10;
    }
    goto LAB_00056cfc;
  }
LAB_00056c2c:
  M->u[0][0] = mVar9;
  M->u[0][1] = mVar7;
  M->u[1][0] = mVar10;
  M->u[1][1] = mVar8;
  return 1;
}



undefined4 __gmpn_hgcd2(uint param_1,uint param_2,uint param_3,uint param_4,int *param_5)

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  uint uVar10;
  uint uVar11;
  
  if ((param_1 < 2) || (param_3 < 2)) {
    return 0;
  }
  if ((param_3 < param_1) || ((param_1 == param_3 && (param_4 < param_2 != 0)))) {
    param_1 = (param_1 - param_3) - (uint)(param_2 < param_4);
    param_2 = param_2 - param_4;
    if (param_1 < 2) {
      return 0;
    }
    iVar9 = 0;
    iVar6 = 1;
    iVar7 = 1;
    iVar8 = 1;
    if (param_1 < param_3) goto LAB_00056c80;
  }
  else {
    param_3 = param_3 - ((param_4 < param_2) + param_1);
    param_4 = param_4 - param_2;
    if (param_3 < 2) {
      return 0;
    }
    iVar9 = 1;
    iVar6 = 0;
    iVar7 = 1;
    iVar8 = 1;
    if (param_1 < param_3) goto LAB_00056c80;
  }
  while (param_1 != param_3) {
    if (param_1 < 0x10000) {
      uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;
      uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;
      goto LAB_00056cd4;
    }
    param_1 = (param_1 - param_3) - (uint)(param_2 < param_4);
    if (param_1 < 2) break;
    param_2 = param_2 - param_4;
    iVar5 = iVar8;
    iVar1 = iVar9;
    if (param_3 < param_1) {
      iVar5 = 0;
      uVar3 = param_3;
      uVar11 = param_4;
      if ((int)param_1 < 0) {
        iVar5 = 1;
        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {
          uVar10 = uVar11 >> 0x1f;
          uVar11 = uVar11 << 1;
          iVar5 = iVar5 + 1;
        }
        uVar2 = 0;
        do {
          uVar2 = uVar2 << 1;
          if (uVar3 < param_1) {
            uVar10 = (uint)(param_2 < uVar11);
LAB_00056f78:
            param_2 = param_2 - uVar11;
            param_1 = (param_1 - uVar3) - uVar10;
            uVar2 = uVar2 | 1;
          }
          else if ((param_1 == uVar3) && (uVar11 <= param_2)) {
            uVar10 = 0;
            goto LAB_00056f78;
          }
          iVar5 = iVar5 + -1;
          uVar11 = uVar3 << 0x1f | uVar11 >> 1;
          uVar3 = uVar3 >> 1;
        } while (iVar5 != 0);
      }
      else {
        do {
          do {
            uVar10 = uVar11 >> 0x1f;
            uVar11 = uVar11 << 1;
            uVar3 = uVar10 | uVar3 << 1;
            iVar5 = iVar5 + 1;
          } while (uVar3 < param_1);
          uVar2 = 0;
          uVar4 = uVar3;
        } while ((param_1 == uVar3) && (uVar4 = uVar10, uVar11 <= param_2));
        do {
          uVar3 = uVar3 >> 1;
          uVar11 = uVar4 << 0x1f | uVar11 >> 1;
          uVar2 = uVar2 << 1;
          if (uVar3 < param_1) {
            uVar10 = (uint)(param_2 < uVar11);
LAB_00056eac:
            param_2 = param_2 - uVar11;
            param_1 = (param_1 - uVar3) - uVar10;
            uVar2 = uVar2 | 1;
          }
          else if ((uVar3 == param_1) && (uVar11 <= param_2)) {
            uVar10 = 0;
            goto LAB_00056eac;
          }
          iVar5 = iVar5 + -1;
          uVar4 = uVar3;
        } while (iVar5 != 0);
      }
      if (param_1 < 2) {
        iVar6 = iVar8 * uVar2 + iVar6;
        iVar7 = iVar9 * uVar2 + iVar7;
        break;
      }
      iVar5 = iVar8 * (uVar2 + 1);
      iVar1 = iVar9 * (uVar2 + 1);
    }
    iVar7 = iVar7 + iVar1;
    iVar6 = iVar6 + iVar5;
    if (param_1 == param_3) break;
LAB_00056c80:
    if (param_3 < 0x10000) {
      uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;
      uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;
      goto LAB_00056cfc;
    }
    param_3 = (param_3 - param_1) - (uint)(param_4 < param_2);
    if (param_3 < 2) break;
    param_4 = param_4 - param_2;
    if (param_1 < param_3) {
      iVar5 = 0;
      uVar3 = param_1;
      uVar11 = param_2;
      if ((int)param_3 < 0) {
        iVar5 = 1;
        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {
          uVar10 = uVar11 >> 0x1f;
          uVar11 = uVar11 << 1;
          iVar5 = iVar5 + 1;
        }
        uVar10 = 0;
        do {
          uVar10 = uVar10 << 1;
          if (uVar3 < param_3) {
            uVar4 = (uint)(param_4 < uVar11);
LAB_00057068:
            param_4 = param_4 - uVar11;
            param_3 = (param_3 - uVar3) - uVar4;
            uVar10 = uVar10 | 1;
          }
          else if ((param_3 == uVar3) && (uVar11 <= param_4)) {
            uVar4 = 0;
            goto LAB_00057068;
          }
          iVar5 = iVar5 + -1;
          uVar11 = uVar3 << 0x1f | uVar11 >> 1;
          uVar3 = uVar3 >> 1;
        } while (iVar5 != 0);
      }
      else {
        do {
          do {
            uVar4 = uVar11 << 1;
            uVar3 = uVar11 >> 0x1f | uVar3 << 1;
            iVar5 = iVar5 + 1;
            uVar11 = uVar4;
          } while (uVar3 < param_3);
        } while ((param_3 == uVar3) && (uVar4 <= param_4));
        uVar10 = 0;
        do {
          uVar11 = uVar3 << 0x1f;
          uVar3 = uVar3 >> 1;
          uVar4 = uVar11 | uVar4 >> 1;
          uVar10 = uVar10 << 1;
          if (uVar3 < param_3) {
            uVar11 = (uint)(param_4 < uVar4);
LAB_00056df4:
            param_4 = param_4 - uVar4;
            param_3 = (param_3 - uVar3) - uVar11;
            uVar10 = uVar10 | 1;
          }
          else if ((uVar3 == param_3) && (uVar4 <= param_4)) {
            uVar11 = 0;
            goto LAB_00056df4;
          }
          iVar5 = iVar5 + -1;
        } while (iVar5 != 0);
      }
      if (param_3 < 2) {
        iVar8 = uVar10 * iVar6 + iVar8;
        iVar9 = uVar10 * iVar7 + iVar9;
        break;
      }
      iVar8 = (uVar10 + 1) * iVar6 + iVar8;
      iVar9 = (uVar10 + 1) * iVar7 + iVar9;
    }
    else {
      iVar8 = iVar8 + iVar6;
      iVar9 = iVar9 + iVar7;
    }
  }
  goto LAB_00056c2c;
LAB_00056cfc:
  uVar11 = uVar11 - uVar3;
  if (0x1ffff < uVar11) {
    if (uVar3 < uVar11) {
      iVar5 = 0;
      uVar10 = uVar3;
      if ((int)uVar11 < 0) {
        iVar5 = 1;
        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {
          iVar5 = iVar5 + 1;
        }
        uVar4 = 0;
        do {
          iVar5 = iVar5 + -1;
          uVar4 = uVar4 << 1;
          if (uVar10 <= uVar11) {
            uVar11 = uVar11 - uVar10;
            uVar4 = uVar4 | 1;
          }
          uVar10 = uVar10 >> 1;
        } while (iVar5 != 0);
      }
      else {
        do {
          uVar2 = uVar10;
          uVar10 = uVar2 << 1;
          iVar5 = iVar5 + 1;
        } while (uVar10 <= uVar11);
        uVar4 = 0;
        uVar2 = uVar2 & 0x7fffffff;
        do {
          iVar5 = iVar5 + -1;
          uVar4 = uVar4 << 1;
          if (uVar2 <= uVar11) {
            uVar11 = uVar11 - uVar2;
            uVar4 = uVar4 | 1;
          }
          uVar2 = uVar2 >> 1;
        } while (iVar5 != 0);
      }
      if (uVar11 < 0x20000) {
        iVar8 = iVar6 * uVar4 + iVar8;
        iVar9 = iVar7 * uVar4 + iVar9;
        goto LAB_00056c2c;
      }
      iVar8 = iVar6 * (uVar4 + 1) + iVar8;
      iVar9 = iVar7 * (uVar4 + 1) + iVar9;
    }
    else {
      iVar8 = iVar8 + iVar6;
      iVar9 = iVar9 + iVar7;
    }
LAB_00056cd4:
    uVar3 = uVar3 - uVar11;
    if (uVar3 < 0x20000) goto LAB_00056c2c;
    if (uVar11 < uVar3) {
      iVar5 = 0;
      uVar10 = uVar11;
      if ((int)uVar3 < 0) {
        iVar5 = 1;
        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {
          iVar5 = iVar5 + 1;
        }
        uVar4 = 0;
        do {
          iVar5 = iVar5 + -1;
          uVar4 = uVar4 << 1;
          if (uVar10 <= uVar3) {
            uVar3 = uVar3 - uVar10;
            uVar4 = uVar4 | 1;
          }
          uVar10 = uVar10 >> 1;
        } while (iVar5 != 0);
      }
      else {
        do {
          uVar2 = uVar10;
          uVar10 = uVar2 << 1;
          iVar5 = iVar5 + 1;
        } while (uVar10 <= uVar3);
        uVar4 = 0;
        uVar2 = uVar2 & 0x7fffffff;
        do {
          iVar5 = iVar5 + -1;
          uVar4 = uVar4 << 1;
          if (uVar2 <= uVar3) {
            uVar3 = uVar3 - uVar2;
            uVar4 = uVar4 | 1;
          }
          uVar2 = uVar2 >> 1;
        } while (iVar5 != 0);
      }
      if (uVar3 < 0x20000) {
        iVar6 = iVar8 * uVar4 + iVar6;
        iVar7 = iVar9 * uVar4 + iVar7;
        goto LAB_00056c2c;
      }
      iVar6 = iVar8 * (uVar4 + 1) + iVar6;
      iVar7 = iVar9 * (uVar4 + 1) + iVar7;
    }
    else {
      iVar6 = iVar6 + iVar8;
      iVar7 = iVar7 + iVar9;
    }
    goto LAB_00056cfc;
  }
LAB_00056c2c:
  *param_5 = iVar8;
  param_5[1] = iVar6;
  param_5[2] = iVar9;
  param_5[3] = iVar7;
  return 1;
}


sltiu v0,a0,0x2
bne v0,zero,0x00056c44
_lw t0,0x10(sp)
sltiu v0,a2,0x2
bne v0,zero,0x00056c44
_nop
sltu v0,a2,a0
beq v0,zero,0x00056c4c
_nop
subu a0,a0,a2
sltu v0,a1,a3
subu a0,a0,v0
sltiu v0,a0,0x2
bne v0,zero,0x00056c44
_subu a1,a1,a3
sltu v0,a0,a2
or t5,zero,zero
li t2,0x1
li t3,0x1
bne v0,zero,0x00056c80
_li t4,0x1
beq a0,a2,0x00056c2c
_nop
lui v0,0x1
sltu v0,a0,v0
bne v0,zero,0x00056cbc
_sltu v0,a1,a3
subu a0,a0,a2
subu a0,a0,v0
sltiu v0,a0,0x2
bne v0,zero,0x00056c2c
_nop
sltu v0,a2,a0
bne v0,zero,0x00056e5c
_subu a1,a1,a3
addu t2,t2,t4
addu t3,t3,t5
bne a0,a2,0x00056c80
_nop
sw t4,0x0(t0)
li v0,0x1
sw t2,0x4(t0)
sw t5,0x8(t0)
jr ra
_sw t3,0xc(t0)
jr ra
_or v0,zero,zero
beq a0,a2,0x00056d28
_sltu v0,a3,a1
addu v0,v0,a0
subu a2,a2,v0
sltiu v0,a2,0x2
bne v0,zero,0x00056d38
_subu a3,a3,a1
sltu v0,a0,a2
li t5,0x1
or t2,zero,zero
li t3,0x1
beq v0,zero,0x00056be4
_li t4,0x1
lui v0,0x1
sltu v0,a2,v0
bne v0,zero,0x00056e40
_sltu v0,a3,a1
subu a2,a2,a0
subu a2,a2,v0
sltiu v0,a2,0x2
bne v0,zero,0x00056c2c
_nop
sltu v0,a0,a2
bne v0,zero,0x00056da4
_subu a3,a3,a1
addu t4,t4,t2
b 0x00056be4
_addu t5,t5,t3
sll a0,a0,0x10
srl a1,a1,0x10
sll a2,a2,0x10
srl a3,a3,0x10
addu a0,a1,a0
addu a2,a3,a2
subu a0,a0,a2
lui v0,0x2
sltu v0,a0,v0
bne v0,zero,0x00056c2c
_nop
sltu v0,a2,a0
bne v0,zero,0x00056d40
_nop
addu t2,t2,t4
addu t3,t3,t5
subu a2,a2,a0
lui v0,0x2
sltu v0,a2,v0
bne v0,zero,0x00056c2c
_nop
sltu v0,a0,a2
bne v0,zero,0x000570b4
_nop
addu t4,t4,t2
b 0x00056cd4
_addu t5,t5,t3
beq v0,zero,0x00056c58
_addu v0,v0,a0
b 0x00056bb8
_subu a0,a0,a2
jr ra
_or v0,zero,zero
bltz a0,0x00056fdc
_or a1,zero,zero
or v0,a2,zero
sll v0,v0,0x1
sltu v1,a0,v0
beq v1,zero,0x00056d4c
_addiu a1,a1,0x1
or v1,zero,zero
srl v0,v0,0x1
addiu a1,a1,-0x1
sltu a3,a0,v0
bne a3,zero,0x00056d7c
_sll v1,v1,0x1
subu a0,a0,v0
ori v1,v1,0x1
bne a1,zero,0x00056d64
_srl v0,v0,0x1
lui v0,0x2
sltu v0,a0,v0
beq v0,zero,0x00056fc4
_mul v0,t4,v1
addu t2,v0,t2
mul v0,t5,v1
b 0x00056c2c
_addu t3,v0,t3
bltz a2,0x00057030
_or t1,zero,zero
or v1,a1,zero
or v0,a0,zero
srl t6,v1,0x1f
sll v0,v0,0x1
sll v1,v1,0x1
or v0,t6,v0
sltu t6,v0,a2
sltu t7,a3,v1
bne t6,zero,0x00056db4
_addiu t1,t1,0x1
bne a2,v0,0x00056de4
_nop
beq t7,zero,0x00056db4
_nop
b 0x00056e0c
_or t6,zero,zero
sltu t7,a3,v1
subu a2,a2,v0
subu a3,a3,v1
subu a2,a2,t7
ori t6,t6,0x1
addiu t1,t1,-0x1
beq t1,zero,0x00056f1c
_nop
sll t8,v0,0x1f
srl v0,v0,0x1
srl v1,v1,0x1
sltu t7,v0,a2
or v1,t8,v1
bne t7,zero,0x00056dec
_sll t6,t6,0x1
bne v0,a2,0x00056e00
_sltu t7,a3,v1
bne t7,zero,0x00056e00
_nop
b 0x00056df4
_subu a2,a2,v0
sll a0,a0,0x10
srl a1,a1,0x10
sll a2,a2,0x10
srl a3,a3,0x10
addu a0,a1,a0
b 0x00056cfc
_addu a2,a3,a2
bltz a0,0x00056f40
_or t1,zero,zero
or v1,a3,zero
or v0,a2,zero
srl t6,v1,0x1f
sll v0,v0,0x1
sll v1,v1,0x1
or v0,t6,v0
sltu t6,v0,a0
sltu t7,a1,v1
bne t6,zero,0x00056e6c
_addiu t1,t1,0x1
bne a0,v0,0x00056ec4
_or t8,zero,zero
beq t7,zero,0x00056e70
_srl t6,v1,0x1f
b 0x00056ec8
_sll t7,v0,0x1f
sltu t6,a1,v1
subu a0,a0,v0
subu a1,a1,v1
subu a0,a0,t6
ori t8,t8,0x1
addiu t1,t1,-0x1
beq t1,zero,0x00056ef8
_nop
sll t7,v0,0x1f
srl v0,v0,0x1
srl v1,v1,0x1
sltu t6,v0,a0
or v1,t7,v1
bne t6,zero,0x00056ea4
_sll t8,t8,0x1
bne v0,a0,0x00056eb8
_sltu t6,a1,v1
bne t6,zero,0x00056eb8
_nop
b 0x00056eac
_subu a0,a0,v0
sltiu v0,a0,0x2
bne v0,zero,0x00057020
_mul v0,t4,t8
addiu v0,t8,0x1
mul v1,t4,v0
addu t2,v1,t2
mul v1,t5,v0
b 0x00056c24
_addu t3,v1,t3
sltiu v0,a2,0x2
bne v0,zero,0x00057118
_mul v0,t6,t2
addiu t6,t6,0x1
mul v0,t6,t2
addu t4,v0,t4
mul v0,t6,t3
b 0x00056be4
_addu t5,v0,t5
li t6,0x1
or t1,a3,zero
bltz a2,0x00056f68
_or v0,a2,zero
srl t7,t1,0x1f
sll v1,v0,0x1
sll t1,t1,0x1
or v0,t7,v1
bgez v0,0x00056f50
_addiu t6,t6,0x1
b 0x00056f9c
_or t8,zero,zero
sltu v1,a1,t1
subu a0,a0,v0
subu a1,a1,t1
subu a0,a0,v1
ori t8,t8,0x1
sll v1,v0,0x1f
srl t1,t1,0x1
addiu t6,t6,-0x1
or t1,v1,t1
beq t6,zero,0x00056ef8
_srl v0,v0,0x1
sltu v1,v0,a0
bne v1,zero,0x00056f70
_sll t8,t8,0x1
bne a0,v0,0x00056f88
_sll v1,v0,0x1f
sltu v1,a1,t1
bne v1,zero,0x00056f84
_nop
b 0x00056f78
_subu a0,a0,v0
addiu v1,v1,0x1
mul v0,t4,v1
addu t2,v0,t2
mul v0,t5,v1
b 0x00056cfc
_addu t3,v0,t3
li a1,0x1
bltz a2,0x00056ff4
_or v0,a2,zero
sll v0,v0,0x1
bgez v0,0x00056fe8
_addiu a1,a1,0x1
or v1,zero,zero
sltu a3,a0,v0
addiu a1,a1,-0x1
bne a3,zero,0x00057010
_sll v1,v1,0x1
subu a0,a0,v0
ori v1,v1,0x1
bne a1,zero,0x00056ff8
_srl v0,v0,0x1
b 0x00056d88
_lui v0,0x2
addu t2,v0,t2
mul v0,t5,t8
b 0x00056c2c
_addu t3,v0,t3
li t7,0x1
or t1,a1,zero
bltz a0,0x00057058
_or v0,a0,zero
srl t6,t1,0x1f
sll v1,v0,0x1
sll t1,t1,0x1
or v0,t6,v1
bgez v0,0x00057040
_addiu t7,t7,0x1
b 0x0005708c
_or t6,zero,zero
sltu v1,a3,t1
subu a2,a2,v0
subu a3,a3,t1
subu a2,a2,v1
ori t6,t6,0x1
sll v1,v0,0x1f
srl t1,t1,0x1
addiu t7,t7,-0x1
or t1,v1,t1
beq t7,zero,0x00056f1c
_srl v0,v0,0x1
sltu v1,v0,a2
bne v1,zero,0x00057060
_sll t6,t6,0x1
bne a2,v0,0x00057078
_sll v1,v0,0x1f
sltu v1,a3,t1
bne v1,zero,0x00057074
_nop
b 0x00057068
_subu a2,a2,v0
bltz a2,0x00057140
_or a1,zero,zero
or v0,a0,zero
sll v0,v0,0x1
sltu v1,a2,v0
beq v1,zero,0x000570c0
_addiu a1,a1,0x1
or v1,zero,zero
srl v0,v0,0x1
addiu a1,a1,-0x1
sltu a3,a2,v0
bne a3,zero,0x000570f0
_sll v1,v1,0x1
subu a2,a2,v0
ori v1,v1,0x1
bne a1,zero,0x000570d8
_srl v0,v0,0x1
lui v0,0x2
sltu v0,a2,v0
beq v0,zero,0x00057128
_mul v0,t2,v1
addu t4,v0,t4
mul v0,t3,v1
b 0x00056c2c
_addu t5,v0,t5
addu t4,v0,t4
mul v0,t6,t3
b 0x00056c2c
_addu t5,v0,t5
addiu v1,v1,0x1
mul v0,t2,v1
addu t4,v0,t4
mul v0,t3,v1
b 0x00056cd4
_addu t5,v0,t5
li a1,0x1
bltz a0,0x00057158
_or v0,a0,zero
sll v0,v0,0x1
bgez v0,0x0005714c
_addiu a1,a1,0x1
or v1,zero,zero
sltu a3,a2,v0
addiu a1,a1,-0x1
bne a3,zero,0x00057174
_sll v1,v1,0x1
subu a2,a2,v0
ori v1,v1,0x1
bne a1,zero,0x0005715c
_srl v0,v0,0x1
b 0x000570fc
_lui v0,0x2
(translation_unit "undefined4 __gmpn_hgcd2(uint param_1,uint param_2,uint param_3,uint param_4,int *param_5)\n\n{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  \n  if ((param_1 < 2) || (param_3 < 2)) {\n    return 0;\n  }\n  if ((param_3 < param_1) || ((param_1 == param_3 && (param_4 < param_2 != 0)))) {\n    param_1 = (param_1 - param_3) - (uint)(param_2 < param_4);\n    param_2 = param_2 - param_4;\n    if (param_1 < 2) {\n      return 0;\n    }\n    iVar9 = 0;\n    iVar6 = 1;\n    iVar7 = 1;\n    iVar8 = 1;\n    if (param_1 < param_3) goto LAB_00056c80;\n  }\n  else {\n    param_3 = param_3 - ((param_4 < param_2) + param_1);\n    param_4 = param_4 - param_2;\n    if (param_3 < 2) {\n      return 0;\n    }\n    iVar9 = 1;\n    iVar6 = 0;\n    iVar7 = 1;\n    iVar8 = 1;\n    if (param_1 < param_3) goto LAB_00056c80;\n  }\n  while (param_1 != param_3) {\n    if (param_1 < 0x10000) {\n      uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;\n      uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;\n      goto LAB_00056cd4;\n    }\n    param_1 = (param_1 - param_3) - (uint)(param_2 < param_4);\n    if (param_1 < 2) break;\n    param_2 = param_2 - param_4;\n    iVar5 = iVar8;\n    iVar1 = iVar9;\n    if (param_3 < param_1) {\n      iVar5 = 0;\n      uVar3 = param_3;\n      uVar11 = param_4;\n      if ((int)param_1 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar2 = 0;\n        do {\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056f78:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((param_1 == uVar3) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056f78;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar10 = uVar11 >> 0x1f;\n            uVar11 = uVar11 << 1;\n            uVar3 = uVar10 | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n          } while (uVar3 < param_1);\n          uVar2 = 0;\n          uVar4 = uVar3;\n        } while ((param_1 == uVar3) && (uVar4 = uVar10, uVar11 <= param_2));\n        do {\n          uVar3 = uVar3 >> 1;\n          uVar11 = uVar4 << 0x1f | uVar11 >> 1;\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056eac:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((uVar3 == param_1) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056eac;\n          }\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar3;\n        } while (iVar5 != 0);\n      }\n      if (param_1 < 2) {\n        iVar6 = iVar8 * uVar2 + iVar6;\n        iVar7 = iVar9 * uVar2 + iVar7;\n        break;\n      }\n      iVar5 = iVar8 * (uVar2 + 1);\n      iVar1 = iVar9 * (uVar2 + 1);\n    }\n    iVar7 = iVar7 + iVar1;\n    iVar6 = iVar6 + iVar5;\n    if (param_1 == param_3) break;\nLAB_00056c80:\n    if (param_3 < 0x10000) {\n      uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;\n      uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;\n      goto LAB_00056cfc;\n    }\n    param_3 = (param_3 - param_1) - (uint)(param_4 < param_2);\n    if (param_3 < 2) break;\n    param_4 = param_4 - param_2;\n    if (param_1 < param_3) {\n      iVar5 = 0;\n      uVar3 = param_1;\n      uVar11 = param_2;\n      if ((int)param_3 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar10 = 0;\n        do {\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar4 = (uint)(param_4 < uVar11);\nLAB_00057068:\n            param_4 = param_4 - uVar11;\n            param_3 = (param_3 - uVar3) - uVar4;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((param_3 == uVar3) && (uVar11 <= param_4)) {\n            uVar4 = 0;\n            goto LAB_00057068;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar4 = uVar11 << 1;\n            uVar3 = uVar11 >> 0x1f | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n            uVar11 = uVar4;\n          } while (uVar3 < param_3);\n        } while ((param_3 == uVar3) && (uVar4 <= param_4));\n        uVar10 = 0;\n        do {\n          uVar11 = uVar3 << 0x1f;\n          uVar3 = uVar3 >> 1;\n          uVar4 = uVar11 | uVar4 >> 1;\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar11 = (uint)(param_4 < uVar4);\nLAB_00056df4:\n            param_4 = param_4 - uVar4;\n            param_3 = (param_3 - uVar3) - uVar11;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((uVar3 == param_3) && (uVar4 <= param_4)) {\n            uVar11 = 0;\n            goto LAB_00056df4;\n          }\n          iVar5 = iVar5 + -1;\n        } while (iVar5 != 0);\n      }\n      if (param_3 < 2) {\n        iVar8 = uVar10 * iVar6 + iVar8;\n        iVar9 = uVar10 * iVar7 + iVar9;\n        break;\n      }\n      iVar8 = (uVar10 + 1) * iVar6 + iVar8;\n      iVar9 = (uVar10 + 1) * iVar7 + iVar9;\n    }\n    else {\n      iVar8 = iVar8 + iVar6;\n      iVar9 = iVar9 + iVar7;\n    }\n  }\n  goto LAB_00056c2c;\nLAB_00056cfc:\n  uVar11 = uVar11 - uVar3;\n  if (0x1ffff < uVar11) {\n    if (uVar3 < uVar11) {\n      iVar5 = 0;\n      uVar10 = uVar3;\n      if ((int)uVar11 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar11) {\n            uVar11 = uVar11 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar11);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar11) {\n            uVar11 = uVar11 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }\n      if (uVar11 < 0x20000) {\n        iVar8 = iVar6 * uVar4 + iVar8;\n        iVar9 = iVar7 * uVar4 + iVar9;\n        goto LAB_00056c2c;\n      }\n      iVar8 = iVar6 * (uVar4 + 1) + iVar8;\n      iVar9 = iVar7 * (uVar4 + 1) + iVar9;\n    }\n    else {\n      iVar8 = iVar8 + iVar6;\n      iVar9 = iVar9 + iVar7;\n    }\nLAB_00056cd4:\n    uVar3 = uVar3 - uVar11;\n    if (uVar3 < 0x20000) goto LAB_00056c2c;\n    if (uVar11 < uVar3) {\n      iVar5 = 0;\n      uVar10 = uVar11;\n      if ((int)uVar3 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar3) {\n            uVar3 = uVar3 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar3);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar3) {\n            uVar3 = uVar3 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }\n      if (uVar3 < 0x20000) {\n        iVar6 = iVar8 * uVar4 + iVar6;\n        iVar7 = iVar9 * uVar4 + iVar7;\n        goto LAB_00056c2c;\n      }\n      iVar6 = iVar8 * (uVar4 + 1) + iVar6;\n      iVar7 = iVar9 * (uVar4 + 1) + iVar7;\n    }\n    else {\n      iVar6 = iVar6 + iVar8;\n      iVar7 = iVar7 + iVar9;\n    }\n    goto LAB_00056cfc;\n  }\nLAB_00056c2c:\n  *param_5 = iVar8;\n  param_5[1] = iVar6;\n  param_5[2] = iVar9;\n  param_5[3] = iVar7;\n  return 1;\n}\n\n" (function_definition "undefined4 __gmpn_hgcd2(uint param_1,uint param_2,uint param_3,uint param_4,int *param_5)\n\n{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  \n  if ((param_1 < 2) || (param_3 < 2)) {\n    return 0;\n  }\n  if ((param_3 < param_1) || ((param_1 == param_3 && (param_4 < param_2 != 0)))) {\n    param_1 = (param_1 - param_3) - (uint)(param_2 < param_4);\n    param_2 = param_2 - param_4;\n    if (param_1 < 2) {\n      return 0;\n    }\n    iVar9 = 0;\n    iVar6 = 1;\n    iVar7 = 1;\n    iVar8 = 1;\n    if (param_1 < param_3) goto LAB_00056c80;\n  }\n  else {\n    param_3 = param_3 - ((param_4 < param_2) + param_1);\n    param_4 = param_4 - param_2;\n    if (param_3 < 2) {\n      return 0;\n    }\n    iVar9 = 1;\n    iVar6 = 0;\n    iVar7 = 1;\n    iVar8 = 1;\n    if (param_1 < param_3) goto LAB_00056c80;\n  }\n  while (param_1 != param_3) {\n    if (param_1 < 0x10000) {\n      uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;\n      uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;\n      goto LAB_00056cd4;\n    }\n    param_1 = (param_1 - param_3) - (uint)(param_2 < param_4);\n    if (param_1 < 2) break;\n    param_2 = param_2 - param_4;\n    iVar5 = iVar8;\n    iVar1 = iVar9;\n    if (param_3 < param_1) {\n      iVar5 = 0;\n      uVar3 = param_3;\n      uVar11 = param_4;\n      if ((int)param_1 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar2 = 0;\n        do {\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056f78:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((param_1 == uVar3) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056f78;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar10 = uVar11 >> 0x1f;\n            uVar11 = uVar11 << 1;\n            uVar3 = uVar10 | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n          } while (uVar3 < param_1);\n          uVar2 = 0;\n          uVar4 = uVar3;\n        } while ((param_1 == uVar3) && (uVar4 = uVar10, uVar11 <= param_2));\n        do {\n          uVar3 = uVar3 >> 1;\n          uVar11 = uVar4 << 0x1f | uVar11 >> 1;\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056eac:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((uVar3 == param_1) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056eac;\n          }\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar3;\n        } while (iVar5 != 0);\n      }\n      if (param_1 < 2) {\n        iVar6 = iVar8 * uVar2 + iVar6;\n        iVar7 = iVar9 * uVar2 + iVar7;\n        break;\n      }\n      iVar5 = iVar8 * (uVar2 + 1);\n      iVar1 = iVar9 * (uVar2 + 1);\n    }\n    iVar7 = iVar7 + iVar1;\n    iVar6 = iVar6 + iVar5;\n    if (param_1 == param_3) break;\nLAB_00056c80:\n    if (param_3 < 0x10000) {\n      uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;\n      uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;\n      goto LAB_00056cfc;\n    }\n    param_3 = (param_3 - param_1) - (uint)(param_4 < param_2);\n    if (param_3 < 2) break;\n    param_4 = param_4 - param_2;\n    if (param_1 < param_3) {\n      iVar5 = 0;\n      uVar3 = param_1;\n      uVar11 = param_2;\n      if ((int)param_3 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar10 = 0;\n        do {\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar4 = (uint)(param_4 < uVar11);\nLAB_00057068:\n            param_4 = param_4 - uVar11;\n            param_3 = (param_3 - uVar3) - uVar4;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((param_3 == uVar3) && (uVar11 <= param_4)) {\n            uVar4 = 0;\n            goto LAB_00057068;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar4 = uVar11 << 1;\n            uVar3 = uVar11 >> 0x1f | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n            uVar11 = uVar4;\n          } while (uVar3 < param_3);\n        } while ((param_3 == uVar3) && (uVar4 <= param_4));\n        uVar10 = 0;\n        do {\n          uVar11 = uVar3 << 0x1f;\n          uVar3 = uVar3 >> 1;\n          uVar4 = uVar11 | uVar4 >> 1;\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar11 = (uint)(param_4 < uVar4);\nLAB_00056df4:\n            param_4 = param_4 - uVar4;\n            param_3 = (param_3 - uVar3) - uVar11;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((uVar3 == param_3) && (uVar4 <= param_4)) {\n            uVar11 = 0;\n            goto LAB_00056df4;\n          }\n          iVar5 = iVar5 + -1;\n        } while (iVar5 != 0);\n      }\n      if (param_3 < 2) {\n        iVar8 = uVar10 * iVar6 + iVar8;\n        iVar9 = uVar10 * iVar7 + iVar9;\n        break;\n      }\n      iVar8 = (uVar10 + 1) * iVar6 + iVar8;\n      iVar9 = (uVar10 + 1) * iVar7 + iVar9;\n    }\n    else {\n      iVar8 = iVar8 + iVar6;\n      iVar9 = iVar9 + iVar7;\n    }\n  }\n  goto LAB_00056c2c;\nLAB_00056cfc:\n  uVar11 = uVar11 - uVar3;\n  if (0x1ffff < uVar11) {\n    if (uVar3 < uVar11) {\n      iVar5 = 0;\n      uVar10 = uVar3;\n      if ((int)uVar11 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar11) {\n            uVar11 = uVar11 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar11);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar11) {\n            uVar11 = uVar11 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }\n      if (uVar11 < 0x20000) {\n        iVar8 = iVar6 * uVar4 + iVar8;\n        iVar9 = iVar7 * uVar4 + iVar9;\n        goto LAB_00056c2c;\n      }\n      iVar8 = iVar6 * (uVar4 + 1) + iVar8;\n      iVar9 = iVar7 * (uVar4 + 1) + iVar9;\n    }\n    else {\n      iVar8 = iVar8 + iVar6;\n      iVar9 = iVar9 + iVar7;\n    }\nLAB_00056cd4:\n    uVar3 = uVar3 - uVar11;\n    if (uVar3 < 0x20000) goto LAB_00056c2c;\n    if (uVar11 < uVar3) {\n      iVar5 = 0;\n      uVar10 = uVar11;\n      if ((int)uVar3 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar3) {\n            uVar3 = uVar3 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar3);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar3) {\n            uVar3 = uVar3 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }\n      if (uVar3 < 0x20000) {\n        iVar6 = iVar8 * uVar4 + iVar6;\n        iVar7 = iVar9 * uVar4 + iVar7;\n        goto LAB_00056c2c;\n      }\n      iVar6 = iVar8 * (uVar4 + 1) + iVar6;\n      iVar7 = iVar9 * (uVar4 + 1) + iVar7;\n    }\n    else {\n      iVar6 = iVar6 + iVar8;\n      iVar7 = iVar7 + iVar9;\n    }\n    goto LAB_00056cfc;\n  }\nLAB_00056c2c:\n  *param_5 = iVar8;\n  param_5[1] = iVar6;\n  param_5[2] = iVar9;\n  param_5[3] = iVar7;\n  return 1;\n}" type_identifier (function_declarator "__gmpn_hgcd2(uint param_1,uint param_2,uint param_3,uint param_4,int *param_5)" identifier (parameter_list "(uint param_1,uint param_2,uint param_3,uint param_4,int *param_5)" ( (parameter_declaration "uint param_1" type_identifier identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "uint param_4" type_identifier identifier) , (parameter_declaration "int *param_5" primitive_type (pointer_declarator "*param_5" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  \n  if ((param_1 < 2) || (param_3 < 2)) {\n    return 0;\n  }\n  if ((param_3 < param_1) || ((param_1 == param_3 && (param_4 < param_2 != 0)))) {\n    param_1 = (param_1 - param_3) - (uint)(param_2 < param_4);\n    param_2 = param_2 - param_4;\n    if (param_1 < 2) {\n      return 0;\n    }\n    iVar9 = 0;\n    iVar6 = 1;\n    iVar7 = 1;\n    iVar8 = 1;\n    if (param_1 < param_3) goto LAB_00056c80;\n  }\n  else {\n    param_3 = param_3 - ((param_4 < param_2) + param_1);\n    param_4 = param_4 - param_2;\n    if (param_3 < 2) {\n      return 0;\n    }\n    iVar9 = 1;\n    iVar6 = 0;\n    iVar7 = 1;\n    iVar8 = 1;\n    if (param_1 < param_3) goto LAB_00056c80;\n  }\n  while (param_1 != param_3) {\n    if (param_1 < 0x10000) {\n      uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;\n      uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;\n      goto LAB_00056cd4;\n    }\n    param_1 = (param_1 - param_3) - (uint)(param_2 < param_4);\n    if (param_1 < 2) break;\n    param_2 = param_2 - param_4;\n    iVar5 = iVar8;\n    iVar1 = iVar9;\n    if (param_3 < param_1) {\n      iVar5 = 0;\n      uVar3 = param_3;\n      uVar11 = param_4;\n      if ((int)param_1 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar2 = 0;\n        do {\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056f78:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((param_1 == uVar3) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056f78;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar10 = uVar11 >> 0x1f;\n            uVar11 = uVar11 << 1;\n            uVar3 = uVar10 | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n          } while (uVar3 < param_1);\n          uVar2 = 0;\n          uVar4 = uVar3;\n        } while ((param_1 == uVar3) && (uVar4 = uVar10, uVar11 <= param_2));\n        do {\n          uVar3 = uVar3 >> 1;\n          uVar11 = uVar4 << 0x1f | uVar11 >> 1;\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056eac:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((uVar3 == param_1) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056eac;\n          }\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar3;\n        } while (iVar5 != 0);\n      }\n      if (param_1 < 2) {\n        iVar6 = iVar8 * uVar2 + iVar6;\n        iVar7 = iVar9 * uVar2 + iVar7;\n        break;\n      }\n      iVar5 = iVar8 * (uVar2 + 1);\n      iVar1 = iVar9 * (uVar2 + 1);\n    }\n    iVar7 = iVar7 + iVar1;\n    iVar6 = iVar6 + iVar5;\n    if (param_1 == param_3) break;\nLAB_00056c80:\n    if (param_3 < 0x10000) {\n      uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;\n      uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;\n      goto LAB_00056cfc;\n    }\n    param_3 = (param_3 - param_1) - (uint)(param_4 < param_2);\n    if (param_3 < 2) break;\n    param_4 = param_4 - param_2;\n    if (param_1 < param_3) {\n      iVar5 = 0;\n      uVar3 = param_1;\n      uVar11 = param_2;\n      if ((int)param_3 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar10 = 0;\n        do {\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar4 = (uint)(param_4 < uVar11);\nLAB_00057068:\n            param_4 = param_4 - uVar11;\n            param_3 = (param_3 - uVar3) - uVar4;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((param_3 == uVar3) && (uVar11 <= param_4)) {\n            uVar4 = 0;\n            goto LAB_00057068;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar4 = uVar11 << 1;\n            uVar3 = uVar11 >> 0x1f | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n            uVar11 = uVar4;\n          } while (uVar3 < param_3);\n        } while ((param_3 == uVar3) && (uVar4 <= param_4));\n        uVar10 = 0;\n        do {\n          uVar11 = uVar3 << 0x1f;\n          uVar3 = uVar3 >> 1;\n          uVar4 = uVar11 | uVar4 >> 1;\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar11 = (uint)(param_4 < uVar4);\nLAB_00056df4:\n            param_4 = param_4 - uVar4;\n            param_3 = (param_3 - uVar3) - uVar11;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((uVar3 == param_3) && (uVar4 <= param_4)) {\n            uVar11 = 0;\n            goto LAB_00056df4;\n          }\n          iVar5 = iVar5 + -1;\n        } while (iVar5 != 0);\n      }\n      if (param_3 < 2) {\n        iVar8 = uVar10 * iVar6 + iVar8;\n        iVar9 = uVar10 * iVar7 + iVar9;\n        break;\n      }\n      iVar8 = (uVar10 + 1) * iVar6 + iVar8;\n      iVar9 = (uVar10 + 1) * iVar7 + iVar9;\n    }\n    else {\n      iVar8 = iVar8 + iVar6;\n      iVar9 = iVar9 + iVar7;\n    }\n  }\n  goto LAB_00056c2c;\nLAB_00056cfc:\n  uVar11 = uVar11 - uVar3;\n  if (0x1ffff < uVar11) {\n    if (uVar3 < uVar11) {\n      iVar5 = 0;\n      uVar10 = uVar3;\n      if ((int)uVar11 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar11) {\n            uVar11 = uVar11 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar11);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar11) {\n            uVar11 = uVar11 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }\n      if (uVar11 < 0x20000) {\n        iVar8 = iVar6 * uVar4 + iVar8;\n        iVar9 = iVar7 * uVar4 + iVar9;\n        goto LAB_00056c2c;\n      }\n      iVar8 = iVar6 * (uVar4 + 1) + iVar8;\n      iVar9 = iVar7 * (uVar4 + 1) + iVar9;\n    }\n    else {\n      iVar8 = iVar8 + iVar6;\n      iVar9 = iVar9 + iVar7;\n    }\nLAB_00056cd4:\n    uVar3 = uVar3 - uVar11;\n    if (uVar3 < 0x20000) goto LAB_00056c2c;\n    if (uVar11 < uVar3) {\n      iVar5 = 0;\n      uVar10 = uVar11;\n      if ((int)uVar3 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar3) {\n            uVar3 = uVar3 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar3);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar3) {\n            uVar3 = uVar3 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }\n      if (uVar3 < 0x20000) {\n        iVar6 = iVar8 * uVar4 + iVar6;\n        iVar7 = iVar9 * uVar4 + iVar7;\n        goto LAB_00056c2c;\n      }\n      iVar6 = iVar8 * (uVar4 + 1) + iVar6;\n      iVar7 = iVar9 * (uVar4 + 1) + iVar7;\n    }\n    else {\n      iVar6 = iVar6 + iVar8;\n      iVar7 = iVar7 + iVar9;\n    }\n    goto LAB_00056cfc;\n  }\nLAB_00056c2c:\n  *param_5 = iVar8;\n  param_5[1] = iVar6;\n  param_5[2] = iVar9;\n  param_5[3] = iVar7;\n  return 1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier 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 "int iVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (if_statement "if ((param_1 < 2) || (param_3 < 2)) {\n    return 0;\n  }" if (parenthesized_expression "((param_1 < 2) || (param_3 < 2))" ( (binary_expression "(param_1 < 2) || (param_3 < 2)" (parenthesized_expression "(param_1 < 2)" ( (binary_expression "param_1 < 2" identifier < number_literal) )) || (parenthesized_expression "(param_3 < 2)" ( (binary_expression "param_3 < 2" identifier < number_literal) ))) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((param_3 < param_1) || ((param_1 == param_3 && (param_4 < param_2 != 0)))) {\n    param_1 = (param_1 - param_3) - (uint)(param_2 < param_4);\n    param_2 = param_2 - param_4;\n    if (param_1 < 2) {\n      return 0;\n    }\n    iVar9 = 0;\n    iVar6 = 1;\n    iVar7 = 1;\n    iVar8 = 1;\n    if (param_1 < param_3) goto LAB_00056c80;\n  }\n  else {\n    param_3 = param_3 - ((param_4 < param_2) + param_1);\n    param_4 = param_4 - param_2;\n    if (param_3 < 2) {\n      return 0;\n    }\n    iVar9 = 1;\n    iVar6 = 0;\n    iVar7 = 1;\n    iVar8 = 1;\n    if (param_1 < param_3) goto LAB_00056c80;\n  }" if (parenthesized_expression "((param_3 < param_1) || ((param_1 == param_3 && (param_4 < param_2 != 0))))" ( (binary_expression "(param_3 < param_1) || ((param_1 == param_3 && (param_4 < param_2 != 0)))" (parenthesized_expression "(param_3 < param_1)" ( (binary_expression "param_3 < param_1" identifier < identifier) )) || (parenthesized_expression "((param_1 == param_3 && (param_4 < param_2 != 0)))" ( (parenthesized_expression "(param_1 == param_3 && (param_4 < param_2 != 0))" ( (binary_expression "param_1 == param_3 && (param_4 < param_2 != 0)" (binary_expression "param_1 == param_3" identifier == identifier) && (parenthesized_expression "(param_4 < param_2 != 0)" ( (binary_expression "param_4 < param_2 != 0" (binary_expression "param_4 < param_2" identifier < identifier) != number_literal) ))) )) ))) )) (compound_statement "{\n    param_1 = (param_1 - param_3) - (uint)(param_2 < param_4);\n    param_2 = param_2 - param_4;\n    if (param_1 < 2) {\n      return 0;\n    }\n    iVar9 = 0;\n    iVar6 = 1;\n    iVar7 = 1;\n    iVar8 = 1;\n    if (param_1 < param_3) goto LAB_00056c80;\n  }" { (expression_statement "param_1 = (param_1 - param_3) - (uint)(param_2 < param_4);" (assignment_expression "param_1 = (param_1 - param_3) - (uint)(param_2 < param_4)" identifier = (binary_expression "(param_1 - param_3) - (uint)(param_2 < param_4)" (parenthesized_expression "(param_1 - param_3)" ( (binary_expression "param_1 - param_3" identifier - identifier) )) - (call_expression "(uint)(param_2 < param_4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2 < param_4)" ( (binary_expression "param_2 < param_4" identifier < identifier) ))))) ;) (expression_statement "param_2 = param_2 - param_4;" (assignment_expression "param_2 = param_2 - param_4" identifier = (binary_expression "param_2 - param_4" identifier - identifier)) ;) (if_statement "if (param_1 < 2) {\n      return 0;\n    }" if (parenthesized_expression "(param_1 < 2)" ( (binary_expression "param_1 < 2" identifier < number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) (expression_statement "iVar7 = 1;" (assignment_expression "iVar7 = 1" identifier = number_literal) ;) (expression_statement "iVar8 = 1;" (assignment_expression "iVar8 = 1" identifier = number_literal) ;) (if_statement "if (param_1 < param_3) goto LAB_00056c80;" if (parenthesized_expression "(param_1 < param_3)" ( (binary_expression "param_1 < param_3" identifier < identifier) )) (goto_statement "goto LAB_00056c80;" goto statement_identifier ;)) }) (else_clause "else {\n    param_3 = param_3 - ((param_4 < param_2) + param_1);\n    param_4 = param_4 - param_2;\n    if (param_3 < 2) {\n      return 0;\n    }\n    iVar9 = 1;\n    iVar6 = 0;\n    iVar7 = 1;\n    iVar8 = 1;\n    if (param_1 < param_3) goto LAB_00056c80;\n  }" else (compound_statement "{\n    param_3 = param_3 - ((param_4 < param_2) + param_1);\n    param_4 = param_4 - param_2;\n    if (param_3 < 2) {\n      return 0;\n    }\n    iVar9 = 1;\n    iVar6 = 0;\n    iVar7 = 1;\n    iVar8 = 1;\n    if (param_1 < param_3) goto LAB_00056c80;\n  }" { (expression_statement "param_3 = param_3 - ((param_4 < param_2) + param_1);" (assignment_expression "param_3 = param_3 - ((param_4 < param_2) + param_1)" identifier = (binary_expression "param_3 - ((param_4 < param_2) + param_1)" identifier - (parenthesized_expression "((param_4 < param_2) + param_1)" ( (binary_expression "(param_4 < param_2) + param_1" (parenthesized_expression "(param_4 < param_2)" ( (binary_expression "param_4 < param_2" identifier < identifier) )) + identifier) )))) ;) (expression_statement "param_4 = param_4 - param_2;" (assignment_expression "param_4 = param_4 - param_2" identifier = (binary_expression "param_4 - param_2" identifier - identifier)) ;) (if_statement "if (param_3 < 2) {\n      return 0;\n    }" if (parenthesized_expression "(param_3 < 2)" ( (binary_expression "param_3 < 2" identifier < number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar9 = 1;" (assignment_expression "iVar9 = 1" identifier = number_literal) ;) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (expression_statement "iVar7 = 1;" (assignment_expression "iVar7 = 1" identifier = number_literal) ;) (expression_statement "iVar8 = 1;" (assignment_expression "iVar8 = 1" identifier = number_literal) ;) (if_statement "if (param_1 < param_3) goto LAB_00056c80;" if (parenthesized_expression "(param_1 < param_3)" ( (binary_expression "param_1 < param_3" identifier < identifier) )) (goto_statement "goto LAB_00056c80;" goto statement_identifier ;)) }))) (while_statement "while (param_1 != param_3) {\n    if (param_1 < 0x10000) {\n      uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;\n      uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;\n      goto LAB_00056cd4;\n    }\n    param_1 = (param_1 - param_3) - (uint)(param_2 < param_4);\n    if (param_1 < 2) break;\n    param_2 = param_2 - param_4;\n    iVar5 = iVar8;\n    iVar1 = iVar9;\n    if (param_3 < param_1) {\n      iVar5 = 0;\n      uVar3 = param_3;\n      uVar11 = param_4;\n      if ((int)param_1 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar2 = 0;\n        do {\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056f78:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((param_1 == uVar3) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056f78;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar10 = uVar11 >> 0x1f;\n            uVar11 = uVar11 << 1;\n            uVar3 = uVar10 | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n          } while (uVar3 < param_1);\n          uVar2 = 0;\n          uVar4 = uVar3;\n        } while ((param_1 == uVar3) && (uVar4 = uVar10, uVar11 <= param_2));\n        do {\n          uVar3 = uVar3 >> 1;\n          uVar11 = uVar4 << 0x1f | uVar11 >> 1;\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056eac:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((uVar3 == param_1) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056eac;\n          }\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar3;\n        } while (iVar5 != 0);\n      }\n      if (param_1 < 2) {\n        iVar6 = iVar8 * uVar2 + iVar6;\n        iVar7 = iVar9 * uVar2 + iVar7;\n        break;\n      }\n      iVar5 = iVar8 * (uVar2 + 1);\n      iVar1 = iVar9 * (uVar2 + 1);\n    }\n    iVar7 = iVar7 + iVar1;\n    iVar6 = iVar6 + iVar5;\n    if (param_1 == param_3) break;\nLAB_00056c80:\n    if (param_3 < 0x10000) {\n      uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;\n      uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;\n      goto LAB_00056cfc;\n    }\n    param_3 = (param_3 - param_1) - (uint)(param_4 < param_2);\n    if (param_3 < 2) break;\n    param_4 = param_4 - param_2;\n    if (param_1 < param_3) {\n      iVar5 = 0;\n      uVar3 = param_1;\n      uVar11 = param_2;\n      if ((int)param_3 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar10 = 0;\n        do {\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar4 = (uint)(param_4 < uVar11);\nLAB_00057068:\n            param_4 = param_4 - uVar11;\n            param_3 = (param_3 - uVar3) - uVar4;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((param_3 == uVar3) && (uVar11 <= param_4)) {\n            uVar4 = 0;\n            goto LAB_00057068;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar4 = uVar11 << 1;\n            uVar3 = uVar11 >> 0x1f | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n            uVar11 = uVar4;\n          } while (uVar3 < param_3);\n        } while ((param_3 == uVar3) && (uVar4 <= param_4));\n        uVar10 = 0;\n        do {\n          uVar11 = uVar3 << 0x1f;\n          uVar3 = uVar3 >> 1;\n          uVar4 = uVar11 | uVar4 >> 1;\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar11 = (uint)(param_4 < uVar4);\nLAB_00056df4:\n            param_4 = param_4 - uVar4;\n            param_3 = (param_3 - uVar3) - uVar11;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((uVar3 == param_3) && (uVar4 <= param_4)) {\n            uVar11 = 0;\n            goto LAB_00056df4;\n          }\n          iVar5 = iVar5 + -1;\n        } while (iVar5 != 0);\n      }\n      if (param_3 < 2) {\n        iVar8 = uVar10 * iVar6 + iVar8;\n        iVar9 = uVar10 * iVar7 + iVar9;\n        break;\n      }\n      iVar8 = (uVar10 + 1) * iVar6 + iVar8;\n      iVar9 = (uVar10 + 1) * iVar7 + iVar9;\n    }\n    else {\n      iVar8 = iVar8 + iVar6;\n      iVar9 = iVar9 + iVar7;\n    }\n  }" while (parenthesized_expression "(param_1 != param_3)" ( (binary_expression "param_1 != param_3" identifier != identifier) )) (compound_statement "{\n    if (param_1 < 0x10000) {\n      uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;\n      uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;\n      goto LAB_00056cd4;\n    }\n    param_1 = (param_1 - param_3) - (uint)(param_2 < param_4);\n    if (param_1 < 2) break;\n    param_2 = param_2 - param_4;\n    iVar5 = iVar8;\n    iVar1 = iVar9;\n    if (param_3 < param_1) {\n      iVar5 = 0;\n      uVar3 = param_3;\n      uVar11 = param_4;\n      if ((int)param_1 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar2 = 0;\n        do {\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056f78:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((param_1 == uVar3) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056f78;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar10 = uVar11 >> 0x1f;\n            uVar11 = uVar11 << 1;\n            uVar3 = uVar10 | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n          } while (uVar3 < param_1);\n          uVar2 = 0;\n          uVar4 = uVar3;\n        } while ((param_1 == uVar3) && (uVar4 = uVar10, uVar11 <= param_2));\n        do {\n          uVar3 = uVar3 >> 1;\n          uVar11 = uVar4 << 0x1f | uVar11 >> 1;\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056eac:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((uVar3 == param_1) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056eac;\n          }\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar3;\n        } while (iVar5 != 0);\n      }\n      if (param_1 < 2) {\n        iVar6 = iVar8 * uVar2 + iVar6;\n        iVar7 = iVar9 * uVar2 + iVar7;\n        break;\n      }\n      iVar5 = iVar8 * (uVar2 + 1);\n      iVar1 = iVar9 * (uVar2 + 1);\n    }\n    iVar7 = iVar7 + iVar1;\n    iVar6 = iVar6 + iVar5;\n    if (param_1 == param_3) break;\nLAB_00056c80:\n    if (param_3 < 0x10000) {\n      uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;\n      uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;\n      goto LAB_00056cfc;\n    }\n    param_3 = (param_3 - param_1) - (uint)(param_4 < param_2);\n    if (param_3 < 2) break;\n    param_4 = param_4 - param_2;\n    if (param_1 < param_3) {\n      iVar5 = 0;\n      uVar3 = param_1;\n      uVar11 = param_2;\n      if ((int)param_3 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar10 = 0;\n        do {\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar4 = (uint)(param_4 < uVar11);\nLAB_00057068:\n            param_4 = param_4 - uVar11;\n            param_3 = (param_3 - uVar3) - uVar4;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((param_3 == uVar3) && (uVar11 <= param_4)) {\n            uVar4 = 0;\n            goto LAB_00057068;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar4 = uVar11 << 1;\n            uVar3 = uVar11 >> 0x1f | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n            uVar11 = uVar4;\n          } while (uVar3 < param_3);\n        } while ((param_3 == uVar3) && (uVar4 <= param_4));\n        uVar10 = 0;\n        do {\n          uVar11 = uVar3 << 0x1f;\n          uVar3 = uVar3 >> 1;\n          uVar4 = uVar11 | uVar4 >> 1;\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar11 = (uint)(param_4 < uVar4);\nLAB_00056df4:\n            param_4 = param_4 - uVar4;\n            param_3 = (param_3 - uVar3) - uVar11;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((uVar3 == param_3) && (uVar4 <= param_4)) {\n            uVar11 = 0;\n            goto LAB_00056df4;\n          }\n          iVar5 = iVar5 + -1;\n        } while (iVar5 != 0);\n      }\n      if (param_3 < 2) {\n        iVar8 = uVar10 * iVar6 + iVar8;\n        iVar9 = uVar10 * iVar7 + iVar9;\n        break;\n      }\n      iVar8 = (uVar10 + 1) * iVar6 + iVar8;\n      iVar9 = (uVar10 + 1) * iVar7 + iVar9;\n    }\n    else {\n      iVar8 = iVar8 + iVar6;\n      iVar9 = iVar9 + iVar7;\n    }\n  }" { (if_statement "if (param_1 < 0x10000) {\n      uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;\n      uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;\n      goto LAB_00056cd4;\n    }" if (parenthesized_expression "(param_1 < 0x10000)" ( (binary_expression "param_1 < 0x10000" identifier < number_literal) )) (compound_statement "{\n      uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;\n      uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;\n      goto LAB_00056cd4;\n    }" { (expression_statement "uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;" (assignment_expression "uVar3 = (param_2 >> 0x10) + param_1 * 0x10000" identifier = (binary_expression "(param_2 >> 0x10) + param_1 * 0x10000" (parenthesized_expression "(param_2 >> 0x10)" ( (binary_expression "param_2 >> 0x10" identifier >> number_literal) )) + (binary_expression "param_1 * 0x10000" identifier * number_literal))) ;) (expression_statement "uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;" (assignment_expression "uVar11 = (param_4 >> 0x10) + param_3 * 0x10000" identifier = (binary_expression "(param_4 >> 0x10) + param_3 * 0x10000" (parenthesized_expression "(param_4 >> 0x10)" ( (binary_expression "param_4 >> 0x10" identifier >> number_literal) )) + (binary_expression "param_3 * 0x10000" identifier * number_literal))) ;) (goto_statement "goto LAB_00056cd4;" goto statement_identifier ;) })) (expression_statement "param_1 = (param_1 - param_3) - (uint)(param_2 < param_4);" (assignment_expression "param_1 = (param_1 - param_3) - (uint)(param_2 < param_4)" identifier = (binary_expression "(param_1 - param_3) - (uint)(param_2 < param_4)" (parenthesized_expression "(param_1 - param_3)" ( (binary_expression "param_1 - param_3" identifier - identifier) )) - (call_expression "(uint)(param_2 < param_4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2 < param_4)" ( (binary_expression "param_2 < param_4" identifier < identifier) ))))) ;) (if_statement "if (param_1 < 2) break;" if (parenthesized_expression "(param_1 < 2)" ( (binary_expression "param_1 < 2" identifier < number_literal) )) (break_statement "break;" break ;)) (expression_statement "param_2 = param_2 - param_4;" (assignment_expression "param_2 = param_2 - param_4" identifier = (binary_expression "param_2 - param_4" identifier - identifier)) ;) (expression_statement "iVar5 = iVar8;" (assignment_expression "iVar5 = iVar8" identifier = identifier) ;) (expression_statement "iVar1 = iVar9;" (assignment_expression "iVar1 = iVar9" identifier = identifier) ;) (if_statement "if (param_3 < param_1) {\n      iVar5 = 0;\n      uVar3 = param_3;\n      uVar11 = param_4;\n      if ((int)param_1 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar2 = 0;\n        do {\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056f78:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((param_1 == uVar3) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056f78;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar10 = uVar11 >> 0x1f;\n            uVar11 = uVar11 << 1;\n            uVar3 = uVar10 | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n          } while (uVar3 < param_1);\n          uVar2 = 0;\n          uVar4 = uVar3;\n        } while ((param_1 == uVar3) && (uVar4 = uVar10, uVar11 <= param_2));\n        do {\n          uVar3 = uVar3 >> 1;\n          uVar11 = uVar4 << 0x1f | uVar11 >> 1;\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056eac:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((uVar3 == param_1) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056eac;\n          }\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar3;\n        } while (iVar5 != 0);\n      }\n      if (param_1 < 2) {\n        iVar6 = iVar8 * uVar2 + iVar6;\n        iVar7 = iVar9 * uVar2 + iVar7;\n        break;\n      }\n      iVar5 = iVar8 * (uVar2 + 1);\n      iVar1 = iVar9 * (uVar2 + 1);\n    }" if (parenthesized_expression "(param_3 < param_1)" ( (binary_expression "param_3 < param_1" identifier < identifier) )) (compound_statement "{\n      iVar5 = 0;\n      uVar3 = param_3;\n      uVar11 = param_4;\n      if ((int)param_1 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar2 = 0;\n        do {\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056f78:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((param_1 == uVar3) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056f78;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar10 = uVar11 >> 0x1f;\n            uVar11 = uVar11 << 1;\n            uVar3 = uVar10 | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n          } while (uVar3 < param_1);\n          uVar2 = 0;\n          uVar4 = uVar3;\n        } while ((param_1 == uVar3) && (uVar4 = uVar10, uVar11 <= param_2));\n        do {\n          uVar3 = uVar3 >> 1;\n          uVar11 = uVar4 << 0x1f | uVar11 >> 1;\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056eac:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((uVar3 == param_1) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056eac;\n          }\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar3;\n        } while (iVar5 != 0);\n      }\n      if (param_1 < 2) {\n        iVar6 = iVar8 * uVar2 + iVar6;\n        iVar7 = iVar9 * uVar2 + iVar7;\n        break;\n      }\n      iVar5 = iVar8 * (uVar2 + 1);\n      iVar1 = iVar9 * (uVar2 + 1);\n    }" { (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (expression_statement "uVar3 = param_3;" (assignment_expression "uVar3 = param_3" identifier = identifier) ;) (expression_statement "uVar11 = param_4;" (assignment_expression "uVar11 = param_4" identifier = identifier) ;) (if_statement "if ((int)param_1 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar2 = 0;\n        do {\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056f78:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((param_1 == uVar3) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056f78;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar10 = uVar11 >> 0x1f;\n            uVar11 = uVar11 << 1;\n            uVar3 = uVar10 | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n          } while (uVar3 < param_1);\n          uVar2 = 0;\n          uVar4 = uVar3;\n        } while ((param_1 == uVar3) && (uVar4 = uVar10, uVar11 <= param_2));\n        do {\n          uVar3 = uVar3 >> 1;\n          uVar11 = uVar4 << 0x1f | uVar11 >> 1;\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056eac:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((uVar3 == param_1) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056eac;\n          }\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar3;\n        } while (iVar5 != 0);\n      }" if (parenthesized_expression "((int)param_1 < 0)" ( (binary_expression "(int)param_1 < 0" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar2 = 0;\n        do {\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056f78:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((param_1 == uVar3) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056f78;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }" { (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" identifier = number_literal) ;) (for_statement "for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }" for ( ; (binary_expression "-1 < (int)uVar3" number_literal < (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ; (assignment_expression "uVar3 = uVar10 | uVar3 << 1" identifier = (binary_expression "uVar10 | uVar3 << 1" identifier | (binary_expression "uVar3 << 1" identifier << number_literal))) ) (compound_statement "{\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }" { (expression_statement "uVar10 = uVar11 >> 0x1f;" (assignment_expression "uVar10 = uVar11 >> 0x1f" identifier = (binary_expression "uVar11 >> 0x1f" identifier >> number_literal)) ;) (expression_statement "uVar11 = uVar11 << 1;" (assignment_expression "uVar11 = uVar11 << 1" identifier = (binary_expression "uVar11 << 1" identifier << number_literal)) ;) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (do_statement "do {\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056f78:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((param_1 == uVar3) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056f78;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);" do (compound_statement "{\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056f78:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((param_1 == uVar3) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056f78;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        }" { (expression_statement "uVar2 = uVar2 << 1;" (assignment_expression "uVar2 = uVar2 << 1" identifier = (binary_expression "uVar2 << 1" identifier << number_literal)) ;) (if_statement "if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056f78:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((param_1 == uVar3) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056f78;\n          }" if (parenthesized_expression "(uVar3 < param_1)" ( (binary_expression "uVar3 < param_1" identifier < identifier) )) (compound_statement "{\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056f78:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }" { (expression_statement "uVar10 = (uint)(param_2 < uVar11);" (assignment_expression "uVar10 = (uint)(param_2 < uVar11)" identifier = (call_expression "(uint)(param_2 < uVar11)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2 < uVar11)" ( (binary_expression "param_2 < uVar11" identifier < identifier) )))) ;) (labeled_statement "LAB_00056f78:\n            param_2 = param_2 - uVar11;" statement_identifier : (expression_statement "param_2 = param_2 - uVar11;" (assignment_expression "param_2 = param_2 - uVar11" identifier = (binary_expression "param_2 - uVar11" identifier - identifier)) ;)) (expression_statement "param_1 = (param_1 - uVar3) - uVar10;" (assignment_expression "param_1 = (param_1 - uVar3) - uVar10" identifier = (binary_expression "(param_1 - uVar3) - uVar10" (parenthesized_expression "(param_1 - uVar3)" ( (binary_expression "param_1 - uVar3" identifier - identifier) )) - identifier)) ;) (expression_statement "uVar2 = uVar2 | 1;" (assignment_expression "uVar2 = uVar2 | 1" identifier = (binary_expression "uVar2 | 1" identifier | number_literal)) ;) }) (else_clause "else if ((param_1 == uVar3) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056f78;\n          }" else (if_statement "if ((param_1 == uVar3) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056f78;\n          }" if (parenthesized_expression "((param_1 == uVar3) && (uVar11 <= param_2))" ( (binary_expression "(param_1 == uVar3) && (uVar11 <= param_2)" (parenthesized_expression "(param_1 == uVar3)" ( (binary_expression "param_1 == uVar3" identifier == identifier) )) && (parenthesized_expression "(uVar11 <= param_2)" ( (binary_expression "uVar11 <= param_2" identifier <= identifier) ))) )) (compound_statement "{\n            uVar10 = 0;\n            goto LAB_00056f78;\n          }" { (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00056f78;" goto statement_identifier ;) })))) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "uVar11 = uVar3 << 0x1f | uVar11 >> 1;" (assignment_expression "uVar11 = uVar3 << 0x1f | uVar11 >> 1" identifier = (binary_expression "uVar3 << 0x1f | uVar11 >> 1" (binary_expression "uVar3 << 0x1f" identifier << number_literal) | (binary_expression "uVar11 >> 1" identifier >> number_literal))) ;) (expression_statement "uVar3 = uVar3 >> 1;" (assignment_expression "uVar3 = uVar3 >> 1" identifier = (binary_expression "uVar3 >> 1" identifier >> number_literal)) ;) }) while (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) ;) }) (else_clause "else {\n        do {\n          do {\n            uVar10 = uVar11 >> 0x1f;\n            uVar11 = uVar11 << 1;\n            uVar3 = uVar10 | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n          } while (uVar3 < param_1);\n          uVar2 = 0;\n          uVar4 = uVar3;\n        } while ((param_1 == uVar3) && (uVar4 = uVar10, uVar11 <= param_2));\n        do {\n          uVar3 = uVar3 >> 1;\n          uVar11 = uVar4 << 0x1f | uVar11 >> 1;\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056eac:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((uVar3 == param_1) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056eac;\n          }\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar3;\n        } while (iVar5 != 0);\n      }" else (compound_statement "{\n        do {\n          do {\n            uVar10 = uVar11 >> 0x1f;\n            uVar11 = uVar11 << 1;\n            uVar3 = uVar10 | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n          } while (uVar3 < param_1);\n          uVar2 = 0;\n          uVar4 = uVar3;\n        } while ((param_1 == uVar3) && (uVar4 = uVar10, uVar11 <= param_2));\n        do {\n          uVar3 = uVar3 >> 1;\n          uVar11 = uVar4 << 0x1f | uVar11 >> 1;\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056eac:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((uVar3 == param_1) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056eac;\n          }\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar3;\n        } while (iVar5 != 0);\n      }" { (do_statement "do {\n          do {\n            uVar10 = uVar11 >> 0x1f;\n            uVar11 = uVar11 << 1;\n            uVar3 = uVar10 | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n          } while (uVar3 < param_1);\n          uVar2 = 0;\n          uVar4 = uVar3;\n        } while ((param_1 == uVar3) && (uVar4 = uVar10, uVar11 <= param_2));" do (compound_statement "{\n          do {\n            uVar10 = uVar11 >> 0x1f;\n            uVar11 = uVar11 << 1;\n            uVar3 = uVar10 | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n          } while (uVar3 < param_1);\n          uVar2 = 0;\n          uVar4 = uVar3;\n        }" { (do_statement "do {\n            uVar10 = uVar11 >> 0x1f;\n            uVar11 = uVar11 << 1;\n            uVar3 = uVar10 | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n          } while (uVar3 < param_1);" do (compound_statement "{\n            uVar10 = uVar11 >> 0x1f;\n            uVar11 = uVar11 << 1;\n            uVar3 = uVar10 | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n          }" { (expression_statement "uVar10 = uVar11 >> 0x1f;" (assignment_expression "uVar10 = uVar11 >> 0x1f" identifier = (binary_expression "uVar11 >> 0x1f" identifier >> number_literal)) ;) (expression_statement "uVar11 = uVar11 << 1;" (assignment_expression "uVar11 = uVar11 << 1" identifier = (binary_expression "uVar11 << 1" identifier << number_literal)) ;) (expression_statement "uVar3 = uVar10 | uVar3 << 1;" (assignment_expression "uVar3 = uVar10 | uVar3 << 1" identifier = (binary_expression "uVar10 | uVar3 << 1" identifier | (binary_expression "uVar3 << 1" identifier << number_literal))) ;) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar3 < param_1)" ( (binary_expression "uVar3 < param_1" identifier < identifier) )) ;) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (expression_statement "uVar4 = uVar3;" (assignment_expression "uVar4 = uVar3" identifier = identifier) ;) }) while (parenthesized_expression "((param_1 == uVar3) && (uVar4 = uVar10, uVar11 <= param_2))" ( (binary_expression "(param_1 == uVar3) && (uVar4 = uVar10, uVar11 <= param_2)" (parenthesized_expression "(param_1 == uVar3)" ( (binary_expression "param_1 == uVar3" identifier == identifier) )) && (parenthesized_expression "(uVar4 = uVar10, uVar11 <= param_2)" ( (comma_expression "uVar4 = uVar10, uVar11 <= param_2" (assignment_expression "uVar4 = uVar10" identifier = identifier) , (binary_expression "uVar11 <= param_2" identifier <= identifier)) ))) )) ;) (do_statement "do {\n          uVar3 = uVar3 >> 1;\n          uVar11 = uVar4 << 0x1f | uVar11 >> 1;\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056eac:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((uVar3 == param_1) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056eac;\n          }\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar3;\n        } while (iVar5 != 0);" do (compound_statement "{\n          uVar3 = uVar3 >> 1;\n          uVar11 = uVar4 << 0x1f | uVar11 >> 1;\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056eac:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((uVar3 == param_1) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056eac;\n          }\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar3;\n        }" { (expression_statement "uVar3 = uVar3 >> 1;" (assignment_expression "uVar3 = uVar3 >> 1" identifier = (binary_expression "uVar3 >> 1" identifier >> number_literal)) ;) (expression_statement "uVar11 = uVar4 << 0x1f | uVar11 >> 1;" (assignment_expression "uVar11 = uVar4 << 0x1f | uVar11 >> 1" identifier = (binary_expression "uVar4 << 0x1f | uVar11 >> 1" (binary_expression "uVar4 << 0x1f" identifier << number_literal) | (binary_expression "uVar11 >> 1" identifier >> number_literal))) ;) (expression_statement "uVar2 = uVar2 << 1;" (assignment_expression "uVar2 = uVar2 << 1" identifier = (binary_expression "uVar2 << 1" identifier << number_literal)) ;) (if_statement "if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056eac:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((uVar3 == param_1) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056eac;\n          }" if (parenthesized_expression "(uVar3 < param_1)" ( (binary_expression "uVar3 < param_1" identifier < identifier) )) (compound_statement "{\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056eac:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }" { (expression_statement "uVar10 = (uint)(param_2 < uVar11);" (assignment_expression "uVar10 = (uint)(param_2 < uVar11)" identifier = (call_expression "(uint)(param_2 < uVar11)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2 < uVar11)" ( (binary_expression "param_2 < uVar11" identifier < identifier) )))) ;) (labeled_statement "LAB_00056eac:\n            param_2 = param_2 - uVar11;" statement_identifier : (expression_statement "param_2 = param_2 - uVar11;" (assignment_expression "param_2 = param_2 - uVar11" identifier = (binary_expression "param_2 - uVar11" identifier - identifier)) ;)) (expression_statement "param_1 = (param_1 - uVar3) - uVar10;" (assignment_expression "param_1 = (param_1 - uVar3) - uVar10" identifier = (binary_expression "(param_1 - uVar3) - uVar10" (parenthesized_expression "(param_1 - uVar3)" ( (binary_expression "param_1 - uVar3" identifier - identifier) )) - identifier)) ;) (expression_statement "uVar2 = uVar2 | 1;" (assignment_expression "uVar2 = uVar2 | 1" identifier = (binary_expression "uVar2 | 1" identifier | number_literal)) ;) }) (else_clause "else if ((uVar3 == param_1) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056eac;\n          }" else (if_statement "if ((uVar3 == param_1) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056eac;\n          }" if (parenthesized_expression "((uVar3 == param_1) && (uVar11 <= param_2))" ( (binary_expression "(uVar3 == param_1) && (uVar11 <= param_2)" (parenthesized_expression "(uVar3 == param_1)" ( (binary_expression "uVar3 == param_1" identifier == identifier) )) && (parenthesized_expression "(uVar11 <= param_2)" ( (binary_expression "uVar11 <= param_2" identifier <= identifier) ))) )) (compound_statement "{\n            uVar10 = 0;\n            goto LAB_00056eac;\n          }" { (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00056eac;" goto statement_identifier ;) })))) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "uVar4 = uVar3;" (assignment_expression "uVar4 = uVar3" identifier = identifier) ;) }) while (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) ;) }))) (if_statement "if (param_1 < 2) {\n        iVar6 = iVar8 * uVar2 + iVar6;\n        iVar7 = iVar9 * uVar2 + iVar7;\n        break;\n      }" if (parenthesized_expression "(param_1 < 2)" ( (binary_expression "param_1 < 2" identifier < number_literal) )) (compound_statement "{\n        iVar6 = iVar8 * uVar2 + iVar6;\n        iVar7 = iVar9 * uVar2 + iVar7;\n        break;\n      }" { (expression_statement "iVar6 = iVar8 * uVar2 + iVar6;" (assignment_expression "iVar6 = iVar8 * uVar2 + iVar6" identifier = (binary_expression "iVar8 * uVar2 + iVar6" (binary_expression "iVar8 * uVar2" identifier * identifier) + identifier)) ;) (expression_statement "iVar7 = iVar9 * uVar2 + iVar7;" (assignment_expression "iVar7 = iVar9 * uVar2 + iVar7" identifier = (binary_expression "iVar9 * uVar2 + iVar7" (binary_expression "iVar9 * uVar2" identifier * identifier) + identifier)) ;) (break_statement "break;" break ;) })) (expression_statement "iVar5 = iVar8 * (uVar2 + 1);" (assignment_expression "iVar5 = iVar8 * (uVar2 + 1)" identifier = (binary_expression "iVar8 * (uVar2 + 1)" identifier * (parenthesized_expression "(uVar2 + 1)" ( (binary_expression "uVar2 + 1" identifier + number_literal) )))) ;) (expression_statement "iVar1 = iVar9 * (uVar2 + 1);" (assignment_expression "iVar1 = iVar9 * (uVar2 + 1)" identifier = (binary_expression "iVar9 * (uVar2 + 1)" identifier * (parenthesized_expression "(uVar2 + 1)" ( (binary_expression "uVar2 + 1" identifier + number_literal) )))) ;) })) (expression_statement "iVar7 = iVar7 + iVar1;" (assignment_expression "iVar7 = iVar7 + iVar1" identifier = (binary_expression "iVar7 + iVar1" identifier + identifier)) ;) (expression_statement "iVar6 = iVar6 + iVar5;" (assignment_expression "iVar6 = iVar6 + iVar5" identifier = (binary_expression "iVar6 + iVar5" identifier + identifier)) ;) (if_statement "if (param_1 == param_3) break;" if (parenthesized_expression "(param_1 == param_3)" ( (binary_expression "param_1 == param_3" identifier == identifier) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00056c80:\n    if (param_3 < 0x10000) {\n      uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;\n      uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;\n      goto LAB_00056cfc;\n    }" statement_identifier : (if_statement "if (param_3 < 0x10000) {\n      uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;\n      uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;\n      goto LAB_00056cfc;\n    }" if (parenthesized_expression "(param_3 < 0x10000)" ( (binary_expression "param_3 < 0x10000" identifier < number_literal) )) (compound_statement "{\n      uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;\n      uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;\n      goto LAB_00056cfc;\n    }" { (expression_statement "uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;" (assignment_expression "uVar3 = (param_2 >> 0x10) + param_1 * 0x10000" identifier = (binary_expression "(param_2 >> 0x10) + param_1 * 0x10000" (parenthesized_expression "(param_2 >> 0x10)" ( (binary_expression "param_2 >> 0x10" identifier >> number_literal) )) + (binary_expression "param_1 * 0x10000" identifier * number_literal))) ;) (expression_statement "uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;" (assignment_expression "uVar11 = (param_4 >> 0x10) + param_3 * 0x10000" identifier = (binary_expression "(param_4 >> 0x10) + param_3 * 0x10000" (parenthesized_expression "(param_4 >> 0x10)" ( (binary_expression "param_4 >> 0x10" identifier >> number_literal) )) + (binary_expression "param_3 * 0x10000" identifier * number_literal))) ;) (goto_statement "goto LAB_00056cfc;" goto statement_identifier ;) }))) (expression_statement "param_3 = (param_3 - param_1) - (uint)(param_4 < param_2);" (assignment_expression "param_3 = (param_3 - param_1) - (uint)(param_4 < param_2)" identifier = (binary_expression "(param_3 - param_1) - (uint)(param_4 < param_2)" (parenthesized_expression "(param_3 - param_1)" ( (binary_expression "param_3 - param_1" identifier - identifier) )) - (call_expression "(uint)(param_4 < param_2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_4 < param_2)" ( (binary_expression "param_4 < param_2" identifier < identifier) ))))) ;) (if_statement "if (param_3 < 2) break;" if (parenthesized_expression "(param_3 < 2)" ( (binary_expression "param_3 < 2" identifier < number_literal) )) (break_statement "break;" break ;)) (expression_statement "param_4 = param_4 - param_2;" (assignment_expression "param_4 = param_4 - param_2" identifier = (binary_expression "param_4 - param_2" identifier - identifier)) ;) (if_statement "if (param_1 < param_3) {\n      iVar5 = 0;\n      uVar3 = param_1;\n      uVar11 = param_2;\n      if ((int)param_3 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar10 = 0;\n        do {\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar4 = (uint)(param_4 < uVar11);\nLAB_00057068:\n            param_4 = param_4 - uVar11;\n            param_3 = (param_3 - uVar3) - uVar4;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((param_3 == uVar3) && (uVar11 <= param_4)) {\n            uVar4 = 0;\n            goto LAB_00057068;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar4 = uVar11 << 1;\n            uVar3 = uVar11 >> 0x1f | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n            uVar11 = uVar4;\n          } while (uVar3 < param_3);\n        } while ((param_3 == uVar3) && (uVar4 <= param_4));\n        uVar10 = 0;\n        do {\n          uVar11 = uVar3 << 0x1f;\n          uVar3 = uVar3 >> 1;\n          uVar4 = uVar11 | uVar4 >> 1;\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar11 = (uint)(param_4 < uVar4);\nLAB_00056df4:\n            param_4 = param_4 - uVar4;\n            param_3 = (param_3 - uVar3) - uVar11;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((uVar3 == param_3) && (uVar4 <= param_4)) {\n            uVar11 = 0;\n            goto LAB_00056df4;\n          }\n          iVar5 = iVar5 + -1;\n        } while (iVar5 != 0);\n      }\n      if (param_3 < 2) {\n        iVar8 = uVar10 * iVar6 + iVar8;\n        iVar9 = uVar10 * iVar7 + iVar9;\n        break;\n      }\n      iVar8 = (uVar10 + 1) * iVar6 + iVar8;\n      iVar9 = (uVar10 + 1) * iVar7 + iVar9;\n    }\n    else {\n      iVar8 = iVar8 + iVar6;\n      iVar9 = iVar9 + iVar7;\n    }" if (parenthesized_expression "(param_1 < param_3)" ( (binary_expression "param_1 < param_3" identifier < identifier) )) (compound_statement "{\n      iVar5 = 0;\n      uVar3 = param_1;\n      uVar11 = param_2;\n      if ((int)param_3 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar10 = 0;\n        do {\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar4 = (uint)(param_4 < uVar11);\nLAB_00057068:\n            param_4 = param_4 - uVar11;\n            param_3 = (param_3 - uVar3) - uVar4;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((param_3 == uVar3) && (uVar11 <= param_4)) {\n            uVar4 = 0;\n            goto LAB_00057068;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar4 = uVar11 << 1;\n            uVar3 = uVar11 >> 0x1f | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n            uVar11 = uVar4;\n          } while (uVar3 < param_3);\n        } while ((param_3 == uVar3) && (uVar4 <= param_4));\n        uVar10 = 0;\n        do {\n          uVar11 = uVar3 << 0x1f;\n          uVar3 = uVar3 >> 1;\n          uVar4 = uVar11 | uVar4 >> 1;\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar11 = (uint)(param_4 < uVar4);\nLAB_00056df4:\n            param_4 = param_4 - uVar4;\n            param_3 = (param_3 - uVar3) - uVar11;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((uVar3 == param_3) && (uVar4 <= param_4)) {\n            uVar11 = 0;\n            goto LAB_00056df4;\n          }\n          iVar5 = iVar5 + -1;\n        } while (iVar5 != 0);\n      }\n      if (param_3 < 2) {\n        iVar8 = uVar10 * iVar6 + iVar8;\n        iVar9 = uVar10 * iVar7 + iVar9;\n        break;\n      }\n      iVar8 = (uVar10 + 1) * iVar6 + iVar8;\n      iVar9 = (uVar10 + 1) * iVar7 + iVar9;\n    }" { (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (expression_statement "uVar3 = param_1;" (assignment_expression "uVar3 = param_1" identifier = identifier) ;) (expression_statement "uVar11 = param_2;" (assignment_expression "uVar11 = param_2" identifier = identifier) ;) (if_statement "if ((int)param_3 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar10 = 0;\n        do {\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar4 = (uint)(param_4 < uVar11);\nLAB_00057068:\n            param_4 = param_4 - uVar11;\n            param_3 = (param_3 - uVar3) - uVar4;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((param_3 == uVar3) && (uVar11 <= param_4)) {\n            uVar4 = 0;\n            goto LAB_00057068;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar4 = uVar11 << 1;\n            uVar3 = uVar11 >> 0x1f | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n            uVar11 = uVar4;\n          } while (uVar3 < param_3);\n        } while ((param_3 == uVar3) && (uVar4 <= param_4));\n        uVar10 = 0;\n        do {\n          uVar11 = uVar3 << 0x1f;\n          uVar3 = uVar3 >> 1;\n          uVar4 = uVar11 | uVar4 >> 1;\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar11 = (uint)(param_4 < uVar4);\nLAB_00056df4:\n            param_4 = param_4 - uVar4;\n            param_3 = (param_3 - uVar3) - uVar11;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((uVar3 == param_3) && (uVar4 <= param_4)) {\n            uVar11 = 0;\n            goto LAB_00056df4;\n          }\n          iVar5 = iVar5 + -1;\n        } while (iVar5 != 0);\n      }" if (parenthesized_expression "((int)param_3 < 0)" ( (binary_expression "(int)param_3 < 0" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar10 = 0;\n        do {\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar4 = (uint)(param_4 < uVar11);\nLAB_00057068:\n            param_4 = param_4 - uVar11;\n            param_3 = (param_3 - uVar3) - uVar4;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((param_3 == uVar3) && (uVar11 <= param_4)) {\n            uVar4 = 0;\n            goto LAB_00057068;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }" { (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" identifier = number_literal) ;) (for_statement "for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }" for ( ; (binary_expression "-1 < (int)uVar3" number_literal < (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ; (assignment_expression "uVar3 = uVar10 | uVar3 << 1" identifier = (binary_expression "uVar10 | uVar3 << 1" identifier | (binary_expression "uVar3 << 1" identifier << number_literal))) ) (compound_statement "{\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }" { (expression_statement "uVar10 = uVar11 >> 0x1f;" (assignment_expression "uVar10 = uVar11 >> 0x1f" identifier = (binary_expression "uVar11 >> 0x1f" identifier >> number_literal)) ;) (expression_statement "uVar11 = uVar11 << 1;" (assignment_expression "uVar11 = uVar11 << 1" identifier = (binary_expression "uVar11 << 1" identifier << number_literal)) ;) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (do_statement "do {\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar4 = (uint)(param_4 < uVar11);\nLAB_00057068:\n            param_4 = param_4 - uVar11;\n            param_3 = (param_3 - uVar3) - uVar4;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((param_3 == uVar3) && (uVar11 <= param_4)) {\n            uVar4 = 0;\n            goto LAB_00057068;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);" do (compound_statement "{\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar4 = (uint)(param_4 < uVar11);\nLAB_00057068:\n            param_4 = param_4 - uVar11;\n            param_3 = (param_3 - uVar3) - uVar4;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((param_3 == uVar3) && (uVar11 <= param_4)) {\n            uVar4 = 0;\n            goto LAB_00057068;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        }" { (expression_statement "uVar10 = uVar10 << 1;" (assignment_expression "uVar10 = uVar10 << 1" identifier = (binary_expression "uVar10 << 1" identifier << number_literal)) ;) (if_statement "if (uVar3 < param_3) {\n            uVar4 = (uint)(param_4 < uVar11);\nLAB_00057068:\n            param_4 = param_4 - uVar11;\n            param_3 = (param_3 - uVar3) - uVar4;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((param_3 == uVar3) && (uVar11 <= param_4)) {\n            uVar4 = 0;\n            goto LAB_00057068;\n          }" if (parenthesized_expression "(uVar3 < param_3)" ( (binary_expression "uVar3 < param_3" identifier < identifier) )) (compound_statement "{\n            uVar4 = (uint)(param_4 < uVar11);\nLAB_00057068:\n            param_4 = param_4 - uVar11;\n            param_3 = (param_3 - uVar3) - uVar4;\n            uVar10 = uVar10 | 1;\n          }" { (expression_statement "uVar4 = (uint)(param_4 < uVar11);" (assignment_expression "uVar4 = (uint)(param_4 < uVar11)" identifier = (call_expression "(uint)(param_4 < uVar11)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_4 < uVar11)" ( (binary_expression "param_4 < uVar11" identifier < identifier) )))) ;) (labeled_statement "LAB_00057068:\n            param_4 = param_4 - uVar11;" statement_identifier : (expression_statement "param_4 = param_4 - uVar11;" (assignment_expression "param_4 = param_4 - uVar11" identifier = (binary_expression "param_4 - uVar11" identifier - identifier)) ;)) (expression_statement "param_3 = (param_3 - uVar3) - uVar4;" (assignment_expression "param_3 = (param_3 - uVar3) - uVar4" identifier = (binary_expression "(param_3 - uVar3) - uVar4" (parenthesized_expression "(param_3 - uVar3)" ( (binary_expression "param_3 - uVar3" identifier - identifier) )) - identifier)) ;) (expression_statement "uVar10 = uVar10 | 1;" (assignment_expression "uVar10 = uVar10 | 1" identifier = (binary_expression "uVar10 | 1" identifier | number_literal)) ;) }) (else_clause "else if ((param_3 == uVar3) && (uVar11 <= param_4)) {\n            uVar4 = 0;\n            goto LAB_00057068;\n          }" else (if_statement "if ((param_3 == uVar3) && (uVar11 <= param_4)) {\n            uVar4 = 0;\n            goto LAB_00057068;\n          }" if (parenthesized_expression "((param_3 == uVar3) && (uVar11 <= param_4))" ( (binary_expression "(param_3 == uVar3) && (uVar11 <= param_4)" (parenthesized_expression "(param_3 == uVar3)" ( (binary_expression "param_3 == uVar3" identifier == identifier) )) && (parenthesized_expression "(uVar11 <= param_4)" ( (binary_expression "uVar11 <= param_4" identifier <= identifier) ))) )) (compound_statement "{\n            uVar4 = 0;\n            goto LAB_00057068;\n          }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00057068;" goto statement_identifier ;) })))) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "uVar11 = uVar3 << 0x1f | uVar11 >> 1;" (assignment_expression "uVar11 = uVar3 << 0x1f | uVar11 >> 1" identifier = (binary_expression "uVar3 << 0x1f | uVar11 >> 1" (binary_expression "uVar3 << 0x1f" identifier << number_literal) | (binary_expression "uVar11 >> 1" identifier >> number_literal))) ;) (expression_statement "uVar3 = uVar3 >> 1;" (assignment_expression "uVar3 = uVar3 >> 1" identifier = (binary_expression "uVar3 >> 1" identifier >> number_literal)) ;) }) while (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) ;) }) (else_clause "else {\n        do {\n          do {\n            uVar4 = uVar11 << 1;\n            uVar3 = uVar11 >> 0x1f | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n            uVar11 = uVar4;\n          } while (uVar3 < param_3);\n        } while ((param_3 == uVar3) && (uVar4 <= param_4));\n        uVar10 = 0;\n        do {\n          uVar11 = uVar3 << 0x1f;\n          uVar3 = uVar3 >> 1;\n          uVar4 = uVar11 | uVar4 >> 1;\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar11 = (uint)(param_4 < uVar4);\nLAB_00056df4:\n            param_4 = param_4 - uVar4;\n            param_3 = (param_3 - uVar3) - uVar11;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((uVar3 == param_3) && (uVar4 <= param_4)) {\n            uVar11 = 0;\n            goto LAB_00056df4;\n          }\n          iVar5 = iVar5 + -1;\n        } while (iVar5 != 0);\n      }" else (compound_statement "{\n        do {\n          do {\n            uVar4 = uVar11 << 1;\n            uVar3 = uVar11 >> 0x1f | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n            uVar11 = uVar4;\n          } while (uVar3 < param_3);\n        } while ((param_3 == uVar3) && (uVar4 <= param_4));\n        uVar10 = 0;\n        do {\n          uVar11 = uVar3 << 0x1f;\n          uVar3 = uVar3 >> 1;\n          uVar4 = uVar11 | uVar4 >> 1;\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar11 = (uint)(param_4 < uVar4);\nLAB_00056df4:\n            param_4 = param_4 - uVar4;\n            param_3 = (param_3 - uVar3) - uVar11;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((uVar3 == param_3) && (uVar4 <= param_4)) {\n            uVar11 = 0;\n            goto LAB_00056df4;\n          }\n          iVar5 = iVar5 + -1;\n        } while (iVar5 != 0);\n      }" { (do_statement "do {\n          do {\n            uVar4 = uVar11 << 1;\n            uVar3 = uVar11 >> 0x1f | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n            uVar11 = uVar4;\n          } while (uVar3 < param_3);\n        } while ((param_3 == uVar3) && (uVar4 <= param_4));" do (compound_statement "{\n          do {\n            uVar4 = uVar11 << 1;\n            uVar3 = uVar11 >> 0x1f | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n            uVar11 = uVar4;\n          } while (uVar3 < param_3);\n        }" { (do_statement "do {\n            uVar4 = uVar11 << 1;\n            uVar3 = uVar11 >> 0x1f | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n            uVar11 = uVar4;\n          } while (uVar3 < param_3);" do (compound_statement "{\n            uVar4 = uVar11 << 1;\n            uVar3 = uVar11 >> 0x1f | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n            uVar11 = uVar4;\n          }" { (expression_statement "uVar4 = uVar11 << 1;" (assignment_expression "uVar4 = uVar11 << 1" identifier = (binary_expression "uVar11 << 1" identifier << number_literal)) ;) (expression_statement "uVar3 = uVar11 >> 0x1f | uVar3 << 1;" (assignment_expression "uVar3 = uVar11 >> 0x1f | uVar3 << 1" identifier = (binary_expression "uVar11 >> 0x1f | uVar3 << 1" (binary_expression "uVar11 >> 0x1f" identifier >> number_literal) | (binary_expression "uVar3 << 1" identifier << number_literal))) ;) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (expression_statement "uVar11 = uVar4;" (assignment_expression "uVar11 = uVar4" identifier = identifier) ;) }) while (parenthesized_expression "(uVar3 < param_3)" ( (binary_expression "uVar3 < param_3" identifier < identifier) )) ;) }) while (parenthesized_expression "((param_3 == uVar3) && (uVar4 <= param_4))" ( (binary_expression "(param_3 == uVar3) && (uVar4 <= param_4)" (parenthesized_expression "(param_3 == uVar3)" ( (binary_expression "param_3 == uVar3" identifier == identifier) )) && (parenthesized_expression "(uVar4 <= param_4)" ( (binary_expression "uVar4 <= param_4" identifier <= identifier) ))) )) ;) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (do_statement "do {\n          uVar11 = uVar3 << 0x1f;\n          uVar3 = uVar3 >> 1;\n          uVar4 = uVar11 | uVar4 >> 1;\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar11 = (uint)(param_4 < uVar4);\nLAB_00056df4:\n            param_4 = param_4 - uVar4;\n            param_3 = (param_3 - uVar3) - uVar11;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((uVar3 == param_3) && (uVar4 <= param_4)) {\n            uVar11 = 0;\n            goto LAB_00056df4;\n          }\n          iVar5 = iVar5 + -1;\n        } while (iVar5 != 0);" do (compound_statement "{\n          uVar11 = uVar3 << 0x1f;\n          uVar3 = uVar3 >> 1;\n          uVar4 = uVar11 | uVar4 >> 1;\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar11 = (uint)(param_4 < uVar4);\nLAB_00056df4:\n            param_4 = param_4 - uVar4;\n            param_3 = (param_3 - uVar3) - uVar11;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((uVar3 == param_3) && (uVar4 <= param_4)) {\n            uVar11 = 0;\n            goto LAB_00056df4;\n          }\n          iVar5 = iVar5 + -1;\n        }" { (expression_statement "uVar11 = uVar3 << 0x1f;" (assignment_expression "uVar11 = uVar3 << 0x1f" identifier = (binary_expression "uVar3 << 0x1f" identifier << number_literal)) ;) (expression_statement "uVar3 = uVar3 >> 1;" (assignment_expression "uVar3 = uVar3 >> 1" identifier = (binary_expression "uVar3 >> 1" identifier >> number_literal)) ;) (expression_statement "uVar4 = uVar11 | uVar4 >> 1;" (assignment_expression "uVar4 = uVar11 | uVar4 >> 1" identifier = (binary_expression "uVar11 | uVar4 >> 1" identifier | (binary_expression "uVar4 >> 1" identifier >> number_literal))) ;) (expression_statement "uVar10 = uVar10 << 1;" (assignment_expression "uVar10 = uVar10 << 1" identifier = (binary_expression "uVar10 << 1" identifier << number_literal)) ;) (if_statement "if (uVar3 < param_3) {\n            uVar11 = (uint)(param_4 < uVar4);\nLAB_00056df4:\n            param_4 = param_4 - uVar4;\n            param_3 = (param_3 - uVar3) - uVar11;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((uVar3 == param_3) && (uVar4 <= param_4)) {\n            uVar11 = 0;\n            goto LAB_00056df4;\n          }" if (parenthesized_expression "(uVar3 < param_3)" ( (binary_expression "uVar3 < param_3" identifier < identifier) )) (compound_statement "{\n            uVar11 = (uint)(param_4 < uVar4);\nLAB_00056df4:\n            param_4 = param_4 - uVar4;\n            param_3 = (param_3 - uVar3) - uVar11;\n            uVar10 = uVar10 | 1;\n          }" { (expression_statement "uVar11 = (uint)(param_4 < uVar4);" (assignment_expression "uVar11 = (uint)(param_4 < uVar4)" identifier = (call_expression "(uint)(param_4 < uVar4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_4 < uVar4)" ( (binary_expression "param_4 < uVar4" identifier < identifier) )))) ;) (labeled_statement "LAB_00056df4:\n            param_4 = param_4 - uVar4;" statement_identifier : (expression_statement "param_4 = param_4 - uVar4;" (assignment_expression "param_4 = param_4 - uVar4" identifier = (binary_expression "param_4 - uVar4" identifier - identifier)) ;)) (expression_statement "param_3 = (param_3 - uVar3) - uVar11;" (assignment_expression "param_3 = (param_3 - uVar3) - uVar11" identifier = (binary_expression "(param_3 - uVar3) - uVar11" (parenthesized_expression "(param_3 - uVar3)" ( (binary_expression "param_3 - uVar3" identifier - identifier) )) - identifier)) ;) (expression_statement "uVar10 = uVar10 | 1;" (assignment_expression "uVar10 = uVar10 | 1" identifier = (binary_expression "uVar10 | 1" identifier | number_literal)) ;) }) (else_clause "else if ((uVar3 == param_3) && (uVar4 <= param_4)) {\n            uVar11 = 0;\n            goto LAB_00056df4;\n          }" else (if_statement "if ((uVar3 == param_3) && (uVar4 <= param_4)) {\n            uVar11 = 0;\n            goto LAB_00056df4;\n          }" if (parenthesized_expression "((uVar3 == param_3) && (uVar4 <= param_4))" ( (binary_expression "(uVar3 == param_3) && (uVar4 <= param_4)" (parenthesized_expression "(uVar3 == param_3)" ( (binary_expression "uVar3 == param_3" identifier == identifier) )) && (parenthesized_expression "(uVar4 <= param_4)" ( (binary_expression "uVar4 <= param_4" identifier <= identifier) ))) )) (compound_statement "{\n            uVar11 = 0;\n            goto LAB_00056df4;\n          }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00056df4;" goto statement_identifier ;) })))) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) ;) }))) (if_statement "if (param_3 < 2) {\n        iVar8 = uVar10 * iVar6 + iVar8;\n        iVar9 = uVar10 * iVar7 + iVar9;\n        break;\n      }" if (parenthesized_expression "(param_3 < 2)" ( (binary_expression "param_3 < 2" identifier < number_literal) )) (compound_statement "{\n        iVar8 = uVar10 * iVar6 + iVar8;\n        iVar9 = uVar10 * iVar7 + iVar9;\n        break;\n      }" { (expression_statement "iVar8 = uVar10 * iVar6 + iVar8;" (assignment_expression "iVar8 = uVar10 * iVar6 + iVar8" identifier = (binary_expression "uVar10 * iVar6 + iVar8" (binary_expression "uVar10 * iVar6" identifier * identifier) + identifier)) ;) (expression_statement "iVar9 = uVar10 * iVar7 + iVar9;" (assignment_expression "iVar9 = uVar10 * iVar7 + iVar9" identifier = (binary_expression "uVar10 * iVar7 + iVar9" (binary_expression "uVar10 * iVar7" identifier * identifier) + identifier)) ;) (break_statement "break;" break ;) })) (expression_statement "iVar8 = (uVar10 + 1) * iVar6 + iVar8;" (assignment_expression "iVar8 = (uVar10 + 1) * iVar6 + iVar8" identifier = (binary_expression "(uVar10 + 1) * iVar6 + iVar8" (binary_expression "(uVar10 + 1) * iVar6" (parenthesized_expression "(uVar10 + 1)" ( (binary_expression "uVar10 + 1" identifier + number_literal) )) * identifier) + identifier)) ;) (expression_statement "iVar9 = (uVar10 + 1) * iVar7 + iVar9;" (assignment_expression "iVar9 = (uVar10 + 1) * iVar7 + iVar9" identifier = (binary_expression "(uVar10 + 1) * iVar7 + iVar9" (binary_expression "(uVar10 + 1) * iVar7" (parenthesized_expression "(uVar10 + 1)" ( (binary_expression "uVar10 + 1" identifier + number_literal) )) * identifier) + identifier)) ;) }) (else_clause "else {\n      iVar8 = iVar8 + iVar6;\n      iVar9 = iVar9 + iVar7;\n    }" else (compound_statement "{\n      iVar8 = iVar8 + iVar6;\n      iVar9 = iVar9 + iVar7;\n    }" { (expression_statement "iVar8 = iVar8 + iVar6;" (assignment_expression "iVar8 = iVar8 + iVar6" identifier = (binary_expression "iVar8 + iVar6" identifier + identifier)) ;) (expression_statement "iVar9 = iVar9 + iVar7;" (assignment_expression "iVar9 = iVar9 + iVar7" identifier = (binary_expression "iVar9 + iVar7" identifier + identifier)) ;) }))) })) (goto_statement "goto LAB_00056c2c;" goto statement_identifier ;) (labeled_statement "LAB_00056cfc:\n  uVar11 = uVar11 - uVar3;" statement_identifier : (expression_statement "uVar11 = uVar11 - uVar3;" (assignment_expression "uVar11 = uVar11 - uVar3" identifier = (binary_expression "uVar11 - uVar3" identifier - identifier)) ;)) (if_statement "if (0x1ffff < uVar11) {\n    if (uVar3 < uVar11) {\n      iVar5 = 0;\n      uVar10 = uVar3;\n      if ((int)uVar11 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar11) {\n            uVar11 = uVar11 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar11);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar11) {\n            uVar11 = uVar11 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }\n      if (uVar11 < 0x20000) {\n        iVar8 = iVar6 * uVar4 + iVar8;\n        iVar9 = iVar7 * uVar4 + iVar9;\n        goto LAB_00056c2c;\n      }\n      iVar8 = iVar6 * (uVar4 + 1) + iVar8;\n      iVar9 = iVar7 * (uVar4 + 1) + iVar9;\n    }\n    else {\n      iVar8 = iVar8 + iVar6;\n      iVar9 = iVar9 + iVar7;\n    }\nLAB_00056cd4:\n    uVar3 = uVar3 - uVar11;\n    if (uVar3 < 0x20000) goto LAB_00056c2c;\n    if (uVar11 < uVar3) {\n      iVar5 = 0;\n      uVar10 = uVar11;\n      if ((int)uVar3 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar3) {\n            uVar3 = uVar3 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar3);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar3) {\n            uVar3 = uVar3 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }\n      if (uVar3 < 0x20000) {\n        iVar6 = iVar8 * uVar4 + iVar6;\n        iVar7 = iVar9 * uVar4 + iVar7;\n        goto LAB_00056c2c;\n      }\n      iVar6 = iVar8 * (uVar4 + 1) + iVar6;\n      iVar7 = iVar9 * (uVar4 + 1) + iVar7;\n    }\n    else {\n      iVar6 = iVar6 + iVar8;\n      iVar7 = iVar7 + iVar9;\n    }\n    goto LAB_00056cfc;\n  }" if (parenthesized_expression "(0x1ffff < uVar11)" ( (binary_expression "0x1ffff < uVar11" number_literal < identifier) )) (compound_statement "{\n    if (uVar3 < uVar11) {\n      iVar5 = 0;\n      uVar10 = uVar3;\n      if ((int)uVar11 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar11) {\n            uVar11 = uVar11 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar11);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar11) {\n            uVar11 = uVar11 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }\n      if (uVar11 < 0x20000) {\n        iVar8 = iVar6 * uVar4 + iVar8;\n        iVar9 = iVar7 * uVar4 + iVar9;\n        goto LAB_00056c2c;\n      }\n      iVar8 = iVar6 * (uVar4 + 1) + iVar8;\n      iVar9 = iVar7 * (uVar4 + 1) + iVar9;\n    }\n    else {\n      iVar8 = iVar8 + iVar6;\n      iVar9 = iVar9 + iVar7;\n    }\nLAB_00056cd4:\n    uVar3 = uVar3 - uVar11;\n    if (uVar3 < 0x20000) goto LAB_00056c2c;\n    if (uVar11 < uVar3) {\n      iVar5 = 0;\n      uVar10 = uVar11;\n      if ((int)uVar3 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar3) {\n            uVar3 = uVar3 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar3);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar3) {\n            uVar3 = uVar3 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }\n      if (uVar3 < 0x20000) {\n        iVar6 = iVar8 * uVar4 + iVar6;\n        iVar7 = iVar9 * uVar4 + iVar7;\n        goto LAB_00056c2c;\n      }\n      iVar6 = iVar8 * (uVar4 + 1) + iVar6;\n      iVar7 = iVar9 * (uVar4 + 1) + iVar7;\n    }\n    else {\n      iVar6 = iVar6 + iVar8;\n      iVar7 = iVar7 + iVar9;\n    }\n    goto LAB_00056cfc;\n  }" { (if_statement "if (uVar3 < uVar11) {\n      iVar5 = 0;\n      uVar10 = uVar3;\n      if ((int)uVar11 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar11) {\n            uVar11 = uVar11 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar11);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar11) {\n            uVar11 = uVar11 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }\n      if (uVar11 < 0x20000) {\n        iVar8 = iVar6 * uVar4 + iVar8;\n        iVar9 = iVar7 * uVar4 + iVar9;\n        goto LAB_00056c2c;\n      }\n      iVar8 = iVar6 * (uVar4 + 1) + iVar8;\n      iVar9 = iVar7 * (uVar4 + 1) + iVar9;\n    }\n    else {\n      iVar8 = iVar8 + iVar6;\n      iVar9 = iVar9 + iVar7;\n    }" if (parenthesized_expression "(uVar3 < uVar11)" ( (binary_expression "uVar3 < uVar11" identifier < identifier) )) (compound_statement "{\n      iVar5 = 0;\n      uVar10 = uVar3;\n      if ((int)uVar11 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar11) {\n            uVar11 = uVar11 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar11);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar11) {\n            uVar11 = uVar11 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }\n      if (uVar11 < 0x20000) {\n        iVar8 = iVar6 * uVar4 + iVar8;\n        iVar9 = iVar7 * uVar4 + iVar9;\n        goto LAB_00056c2c;\n      }\n      iVar8 = iVar6 * (uVar4 + 1) + iVar8;\n      iVar9 = iVar7 * (uVar4 + 1) + iVar9;\n    }" { (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (expression_statement "uVar10 = uVar3;" (assignment_expression "uVar10 = uVar3" identifier = identifier) ;) (if_statement "if ((int)uVar11 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar11) {\n            uVar11 = uVar11 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar11);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar11) {\n            uVar11 = uVar11 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }" if (parenthesized_expression "((int)uVar11 < 0)" ( (binary_expression "(int)uVar11 < 0" (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar11) {\n            uVar11 = uVar11 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }" { (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" identifier = number_literal) ;) (for_statement "for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }" for ( ; (binary_expression "-1 < (int)uVar10" number_literal < (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier)) ; (assignment_expression "uVar10 = uVar10 << 1" identifier = (binary_expression "uVar10 << 1" identifier << number_literal)) ) (compound_statement "{\n          iVar5 = iVar5 + 1;\n        }" { (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (do_statement "do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar11) {\n            uVar11 = uVar11 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);" do (compound_statement "{\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar11) {\n            uVar11 = uVar11 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        }" { (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "uVar4 = uVar4 << 1;" (assignment_expression "uVar4 = uVar4 << 1" identifier = (binary_expression "uVar4 << 1" identifier << number_literal)) ;) (if_statement "if (uVar10 <= uVar11) {\n            uVar11 = uVar11 - uVar10;\n            uVar4 = uVar4 | 1;\n          }" if (parenthesized_expression "(uVar10 <= uVar11)" ( (binary_expression "uVar10 <= uVar11" identifier <= identifier) )) (compound_statement "{\n            uVar11 = uVar11 - uVar10;\n            uVar4 = uVar4 | 1;\n          }" { (expression_statement "uVar11 = uVar11 - uVar10;" (assignment_expression "uVar11 = uVar11 - uVar10" identifier = (binary_expression "uVar11 - uVar10" identifier - identifier)) ;) (expression_statement "uVar4 = uVar4 | 1;" (assignment_expression "uVar4 = uVar4 | 1" identifier = (binary_expression "uVar4 | 1" identifier | number_literal)) ;) })) (expression_statement "uVar10 = uVar10 >> 1;" (assignment_expression "uVar10 = uVar10 >> 1" identifier = (binary_expression "uVar10 >> 1" identifier >> number_literal)) ;) }) while (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) ;) }) (else_clause "else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar11);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar11) {\n            uVar11 = uVar11 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }" else (compound_statement "{\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar11);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar11) {\n            uVar11 = uVar11 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }" { (do_statement "do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar11);" do (compound_statement "{\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        }" { (expression_statement "uVar2 = uVar10;" (assignment_expression "uVar2 = uVar10" identifier = identifier) ;) (expression_statement "uVar10 = uVar2 << 1;" (assignment_expression "uVar10 = uVar2 << 1" identifier = (binary_expression "uVar2 << 1" identifier << number_literal)) ;) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar10 <= uVar11)" ( (binary_expression "uVar10 <= uVar11" identifier <= identifier) )) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (expression_statement "uVar2 = uVar2 & 0x7fffffff;" (assignment_expression "uVar2 = uVar2 & 0x7fffffff" identifier = (binary_expression "uVar2 & 0x7fffffff" identifier & number_literal)) ;) (do_statement "do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar11) {\n            uVar11 = uVar11 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);" do (compound_statement "{\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar11) {\n            uVar11 = uVar11 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        }" { (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "uVar4 = uVar4 << 1;" (assignment_expression "uVar4 = uVar4 << 1" identifier = (binary_expression "uVar4 << 1" identifier << number_literal)) ;) (if_statement "if (uVar2 <= uVar11) {\n            uVar11 = uVar11 - uVar2;\n            uVar4 = uVar4 | 1;\n          }" if (parenthesized_expression "(uVar2 <= uVar11)" ( (binary_expression "uVar2 <= uVar11" identifier <= identifier) )) (compound_statement "{\n            uVar11 = uVar11 - uVar2;\n            uVar4 = uVar4 | 1;\n          }" { (expression_statement "uVar11 = uVar11 - uVar2;" (assignment_expression "uVar11 = uVar11 - uVar2" identifier = (binary_expression "uVar11 - uVar2" identifier - identifier)) ;) (expression_statement "uVar4 = uVar4 | 1;" (assignment_expression "uVar4 = uVar4 | 1" identifier = (binary_expression "uVar4 | 1" identifier | number_literal)) ;) })) (expression_statement "uVar2 = uVar2 >> 1;" (assignment_expression "uVar2 = uVar2 >> 1" identifier = (binary_expression "uVar2 >> 1" identifier >> number_literal)) ;) }) while (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) ;) }))) (if_statement "if (uVar11 < 0x20000) {\n        iVar8 = iVar6 * uVar4 + iVar8;\n        iVar9 = iVar7 * uVar4 + iVar9;\n        goto LAB_00056c2c;\n      }" if (parenthesized_expression "(uVar11 < 0x20000)" ( (binary_expression "uVar11 < 0x20000" identifier < number_literal) )) (compound_statement "{\n        iVar8 = iVar6 * uVar4 + iVar8;\n        iVar9 = iVar7 * uVar4 + iVar9;\n        goto LAB_00056c2c;\n      }" { (expression_statement "iVar8 = iVar6 * uVar4 + iVar8;" (assignment_expression "iVar8 = iVar6 * uVar4 + iVar8" identifier = (binary_expression "iVar6 * uVar4 + iVar8" (binary_expression "iVar6 * uVar4" identifier * identifier) + identifier)) ;) (expression_statement "iVar9 = iVar7 * uVar4 + iVar9;" (assignment_expression "iVar9 = iVar7 * uVar4 + iVar9" identifier = (binary_expression "iVar7 * uVar4 + iVar9" (binary_expression "iVar7 * uVar4" identifier * identifier) + identifier)) ;) (goto_statement "goto LAB_00056c2c;" goto statement_identifier ;) })) (expression_statement "iVar8 = iVar6 * (uVar4 + 1) + iVar8;" (assignment_expression "iVar8 = iVar6 * (uVar4 + 1) + iVar8" identifier = (binary_expression "iVar6 * (uVar4 + 1) + iVar8" (binary_expression "iVar6 * (uVar4 + 1)" identifier * (parenthesized_expression "(uVar4 + 1)" ( (binary_expression "uVar4 + 1" identifier + number_literal) ))) + identifier)) ;) (expression_statement "iVar9 = iVar7 * (uVar4 + 1) + iVar9;" (assignment_expression "iVar9 = iVar7 * (uVar4 + 1) + iVar9" identifier = (binary_expression "iVar7 * (uVar4 + 1) + iVar9" (binary_expression "iVar7 * (uVar4 + 1)" identifier * (parenthesized_expression "(uVar4 + 1)" ( (binary_expression "uVar4 + 1" identifier + number_literal) ))) + identifier)) ;) }) (else_clause "else {\n      iVar8 = iVar8 + iVar6;\n      iVar9 = iVar9 + iVar7;\n    }" else (compound_statement "{\n      iVar8 = iVar8 + iVar6;\n      iVar9 = iVar9 + iVar7;\n    }" { (expression_statement "iVar8 = iVar8 + iVar6;" (assignment_expression "iVar8 = iVar8 + iVar6" identifier = (binary_expression "iVar8 + iVar6" identifier + identifier)) ;) (expression_statement "iVar9 = iVar9 + iVar7;" (assignment_expression "iVar9 = iVar9 + iVar7" identifier = (binary_expression "iVar9 + iVar7" identifier + identifier)) ;) }))) (labeled_statement "LAB_00056cd4:\n    uVar3 = uVar3 - uVar11;" statement_identifier : (expression_statement "uVar3 = uVar3 - uVar11;" (assignment_expression "uVar3 = uVar3 - uVar11" identifier = (binary_expression "uVar3 - uVar11" identifier - identifier)) ;)) (if_statement "if (uVar3 < 0x20000) goto LAB_00056c2c;" if (parenthesized_expression "(uVar3 < 0x20000)" ( (binary_expression "uVar3 < 0x20000" identifier < number_literal) )) (goto_statement "goto LAB_00056c2c;" goto statement_identifier ;)) (if_statement "if (uVar11 < uVar3) {\n      iVar5 = 0;\n      uVar10 = uVar11;\n      if ((int)uVar3 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar3) {\n            uVar3 = uVar3 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar3);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar3) {\n            uVar3 = uVar3 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }\n      if (uVar3 < 0x20000) {\n        iVar6 = iVar8 * uVar4 + iVar6;\n        iVar7 = iVar9 * uVar4 + iVar7;\n        goto LAB_00056c2c;\n      }\n      iVar6 = iVar8 * (uVar4 + 1) + iVar6;\n      iVar7 = iVar9 * (uVar4 + 1) + iVar7;\n    }\n    else {\n      iVar6 = iVar6 + iVar8;\n      iVar7 = iVar7 + iVar9;\n    }" if (parenthesized_expression "(uVar11 < uVar3)" ( (binary_expression "uVar11 < uVar3" identifier < identifier) )) (compound_statement "{\n      iVar5 = 0;\n      uVar10 = uVar11;\n      if ((int)uVar3 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar3) {\n            uVar3 = uVar3 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar3);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar3) {\n            uVar3 = uVar3 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }\n      if (uVar3 < 0x20000) {\n        iVar6 = iVar8 * uVar4 + iVar6;\n        iVar7 = iVar9 * uVar4 + iVar7;\n        goto LAB_00056c2c;\n      }\n      iVar6 = iVar8 * (uVar4 + 1) + iVar6;\n      iVar7 = iVar9 * (uVar4 + 1) + iVar7;\n    }" { (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (expression_statement "uVar10 = uVar11;" (assignment_expression "uVar10 = uVar11" identifier = identifier) ;) (if_statement "if ((int)uVar3 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar3) {\n            uVar3 = uVar3 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar3);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar3) {\n            uVar3 = uVar3 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }" if (parenthesized_expression "((int)uVar3 < 0)" ( (binary_expression "(int)uVar3 < 0" (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar3) {\n            uVar3 = uVar3 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }" { (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" identifier = number_literal) ;) (for_statement "for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }" for ( ; (binary_expression "-1 < (int)uVar10" number_literal < (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier)) ; (assignment_expression "uVar10 = uVar10 << 1" identifier = (binary_expression "uVar10 << 1" identifier << number_literal)) ) (compound_statement "{\n          iVar5 = iVar5 + 1;\n        }" { (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (do_statement "do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar3) {\n            uVar3 = uVar3 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);" do (compound_statement "{\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar3) {\n            uVar3 = uVar3 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        }" { (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "uVar4 = uVar4 << 1;" (assignment_expression "uVar4 = uVar4 << 1" identifier = (binary_expression "uVar4 << 1" identifier << number_literal)) ;) (if_statement "if (uVar10 <= uVar3) {\n            uVar3 = uVar3 - uVar10;\n            uVar4 = uVar4 | 1;\n          }" if (parenthesized_expression "(uVar10 <= uVar3)" ( (binary_expression "uVar10 <= uVar3" identifier <= identifier) )) (compound_statement "{\n            uVar3 = uVar3 - uVar10;\n            uVar4 = uVar4 | 1;\n          }" { (expression_statement "uVar3 = uVar3 - uVar10;" (assignment_expression "uVar3 = uVar3 - uVar10" identifier = (binary_expression "uVar3 - uVar10" identifier - identifier)) ;) (expression_statement "uVar4 = uVar4 | 1;" (assignment_expression "uVar4 = uVar4 | 1" identifier = (binary_expression "uVar4 | 1" identifier | number_literal)) ;) })) (expression_statement "uVar10 = uVar10 >> 1;" (assignment_expression "uVar10 = uVar10 >> 1" identifier = (binary_expression "uVar10 >> 1" identifier >> number_literal)) ;) }) while (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) ;) }) (else_clause "else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar3);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar3) {\n            uVar3 = uVar3 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }" else (compound_statement "{\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar3);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar3) {\n            uVar3 = uVar3 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }" { (do_statement "do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar3);" do (compound_statement "{\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        }" { (expression_statement "uVar2 = uVar10;" (assignment_expression "uVar2 = uVar10" identifier = identifier) ;) (expression_statement "uVar10 = uVar2 << 1;" (assignment_expression "uVar10 = uVar2 << 1" identifier = (binary_expression "uVar2 << 1" identifier << number_literal)) ;) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar10 <= uVar3)" ( (binary_expression "uVar10 <= uVar3" identifier <= identifier) )) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (expression_statement "uVar2 = uVar2 & 0x7fffffff;" (assignment_expression "uVar2 = uVar2 & 0x7fffffff" identifier = (binary_expression "uVar2 & 0x7fffffff" identifier & number_literal)) ;) (do_statement "do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar3) {\n            uVar3 = uVar3 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);" do (compound_statement "{\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar3) {\n            uVar3 = uVar3 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        }" { (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "uVar4 = uVar4 << 1;" (assignment_expression "uVar4 = uVar4 << 1" identifier = (binary_expression "uVar4 << 1" identifier << number_literal)) ;) (if_statement "if (uVar2 <= uVar3) {\n            uVar3 = uVar3 - uVar2;\n            uVar4 = uVar4 | 1;\n          }" if (parenthesized_expression "(uVar2 <= uVar3)" ( (binary_expression "uVar2 <= uVar3" identifier <= identifier) )) (compound_statement "{\n            uVar3 = uVar3 - uVar2;\n            uVar4 = uVar4 | 1;\n          }" { (expression_statement "uVar3 = uVar3 - uVar2;" (assignment_expression "uVar3 = uVar3 - uVar2" identifier = (binary_expression "uVar3 - uVar2" identifier - identifier)) ;) (expression_statement "uVar4 = uVar4 | 1;" (assignment_expression "uVar4 = uVar4 | 1" identifier = (binary_expression "uVar4 | 1" identifier | number_literal)) ;) })) (expression_statement "uVar2 = uVar2 >> 1;" (assignment_expression "uVar2 = uVar2 >> 1" identifier = (binary_expression "uVar2 >> 1" identifier >> number_literal)) ;) }) while (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) ;) }))) (if_statement "if (uVar3 < 0x20000) {\n        iVar6 = iVar8 * uVar4 + iVar6;\n        iVar7 = iVar9 * uVar4 + iVar7;\n        goto LAB_00056c2c;\n      }" if (parenthesized_expression "(uVar3 < 0x20000)" ( (binary_expression "uVar3 < 0x20000" identifier < number_literal) )) (compound_statement "{\n        iVar6 = iVar8 * uVar4 + iVar6;\n        iVar7 = iVar9 * uVar4 + iVar7;\n        goto LAB_00056c2c;\n      }" { (expression_statement "iVar6 = iVar8 * uVar4 + iVar6;" (assignment_expression "iVar6 = iVar8 * uVar4 + iVar6" identifier = (binary_expression "iVar8 * uVar4 + iVar6" (binary_expression "iVar8 * uVar4" identifier * identifier) + identifier)) ;) (expression_statement "iVar7 = iVar9 * uVar4 + iVar7;" (assignment_expression "iVar7 = iVar9 * uVar4 + iVar7" identifier = (binary_expression "iVar9 * uVar4 + iVar7" (binary_expression "iVar9 * uVar4" identifier * identifier) + identifier)) ;) (goto_statement "goto LAB_00056c2c;" goto statement_identifier ;) })) (expression_statement "iVar6 = iVar8 * (uVar4 + 1) + iVar6;" (assignment_expression "iVar6 = iVar8 * (uVar4 + 1) + iVar6" identifier = (binary_expression "iVar8 * (uVar4 + 1) + iVar6" (binary_expression "iVar8 * (uVar4 + 1)" identifier * (parenthesized_expression "(uVar4 + 1)" ( (binary_expression "uVar4 + 1" identifier + number_literal) ))) + identifier)) ;) (expression_statement "iVar7 = iVar9 * (uVar4 + 1) + iVar7;" (assignment_expression "iVar7 = iVar9 * (uVar4 + 1) + iVar7" identifier = (binary_expression "iVar9 * (uVar4 + 1) + iVar7" (binary_expression "iVar9 * (uVar4 + 1)" identifier * (parenthesized_expression "(uVar4 + 1)" ( (binary_expression "uVar4 + 1" identifier + number_literal) ))) + identifier)) ;) }) (else_clause "else {\n      iVar6 = iVar6 + iVar8;\n      iVar7 = iVar7 + iVar9;\n    }" else (compound_statement "{\n      iVar6 = iVar6 + iVar8;\n      iVar7 = iVar7 + iVar9;\n    }" { (expression_statement "iVar6 = iVar6 + iVar8;" (assignment_expression "iVar6 = iVar6 + iVar8" identifier = (binary_expression "iVar6 + iVar8" identifier + identifier)) ;) (expression_statement "iVar7 = iVar7 + iVar9;" (assignment_expression "iVar7 = iVar7 + iVar9" identifier = (binary_expression "iVar7 + iVar9" identifier + identifier)) ;) }))) (goto_statement "goto LAB_00056cfc;" goto statement_identifier ;) })) (labeled_statement "LAB_00056c2c:\n  *param_5 = iVar8;" statement_identifier : (expression_statement "*param_5 = iVar8;" (assignment_expression "*param_5 = iVar8" (pointer_expression "*param_5" * identifier) = identifier) ;)) (expression_statement "param_5[1] = iVar6;" (assignment_expression "param_5[1] = iVar6" (subscript_expression "param_5[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[2] = iVar9;" (assignment_expression "param_5[2] = iVar9" (subscript_expression "param_5[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[3] = iVar7;" (assignment_expression "param_5[3] = iVar7" (subscript_expression "param_5[3]" identifier [ number_literal ]) = identifier) ;) (return_statement "return 1;" return number_literal ;) })))
(translation_unit "int __gmpn_hgcd2(mp_limb_t ah,mp_limb_t al,mp_limb_t bh,mp_limb_t bl,hgcd_matrix1 *M)\n\n{\n  mp_limb_t mVar1;\n  mp_limb_t mVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  mp_limb_t mVar7;\n  mp_limb_t mVar8;\n  mp_limb_t mVar9;\n  mp_limb_t mVar10;\n  uint uVar11;\n  uint uVar12;\n  \n  if ((ah < 2) || (bh < 2)) {\n    return 0;\n  }\n  if ((bh < ah) || ((ah == bh && (bl < al != 0)))) {\n    ah = (ah - bh) - (uint)(al < bl);\n    al = al - bl;\n    if (ah < 2) {\n      return 0;\n    }\n    mVar10 = 0;\n    mVar7 = 1;\n    mVar8 = 1;\n    mVar9 = 1;\n    if (ah < bh) goto LAB_00056c80;\n  }\n  else {\n    bh = bh - ((bl < al) + ah);\n    bl = bl - al;\n    if (bh < 2) {\n      return 0;\n    }\n    mVar10 = 1;\n    mVar7 = 0;\n    mVar8 = 1;\n    mVar9 = 1;\n    if (ah < bh) goto LAB_00056c80;\n  }\n  while (ah != bh) {\n    if (ah < 0x10000) {\n      uVar4 = (al >> 0x10) + ah * 0x10000;\n      uVar12 = (bl >> 0x10) + bh * 0x10000;\n      goto LAB_00056cd4;\n    }\n    ah = (ah - bh) - (uint)(al < bl);\n    if (ah < 2) break;\n    al = al - bl;\n    mVar1 = mVar9;\n    mVar2 = mVar10;\n    if (bh < ah) {\n      iVar6 = 0;\n      uVar4 = bh;\n      uVar12 = bl;\n      if ((int)ah < 0) {\n        iVar6 = 1;\n        for (; -1 < (int)uVar4; uVar4 = uVar11 | uVar4 << 1) {\n          uVar11 = uVar12 >> 0x1f;\n          uVar12 = uVar12 << 1;\n          iVar6 = iVar6 + 1;\n        }\n        uVar3 = 0;\n        do {\n          uVar3 = uVar3 << 1;\n          if (uVar4 < ah) {\n            uVar11 = (uint)(al < uVar12);\nLAB_00056f78:\n            al = al - uVar12;\n            ah = (ah - uVar4) - uVar11;\n            uVar3 = uVar3 | 1;\n          }\n          else if ((ah == uVar4) && (uVar12 <= al)) {\n            uVar11 = 0;\n            goto LAB_00056f78;\n          }\n          iVar6 = iVar6 + -1;\n          uVar12 = uVar4 << 0x1f | uVar12 >> 1;\n          uVar4 = uVar4 >> 1;\n        } while (iVar6 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar11 = uVar12 >> 0x1f;\n            uVar12 = uVar12 << 1;\n            uVar4 = uVar11 | uVar4 << 1;\n            iVar6 = iVar6 + 1;\n          } while (uVar4 < ah);\n          uVar3 = 0;\n          uVar5 = uVar4;\n        } while ((ah == uVar4) && (uVar5 = uVar11, uVar12 <= al));\n        do {\n          uVar4 = uVar4 >> 1;\n          uVar12 = uVar5 << 0x1f | uVar12 >> 1;\n          uVar3 = uVar3 << 1;\n          if (uVar4 < ah) {\n            uVar11 = (uint)(al < uVar12);\nLAB_00056eac:\n            al = al - uVar12;\n            ah = (ah - uVar4) - uVar11;\n            uVar3 = uVar3 | 1;\n          }\n          else if ((uVar4 == ah) && (uVar12 <= al)) {\n            uVar11 = 0;\n            goto LAB_00056eac;\n          }\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar4;\n        } while (iVar6 != 0);\n      }\n      if (ah < 2) {\n        mVar7 = mVar9 * uVar3 + mVar7;\n        mVar8 = mVar10 * uVar3 + mVar8;\n        break;\n      }\n      mVar1 = mVar9 * (uVar3 + 1);\n      mVar2 = mVar10 * (uVar3 + 1);\n    }\n    mVar8 = mVar8 + mVar2;\n    mVar7 = mVar7 + mVar1;\n    if (ah == bh) break;\nLAB_00056c80:\n    if (bh < 0x10000) {\n      uVar4 = (al >> 0x10) + ah * 0x10000;\n      uVar12 = (bl >> 0x10) + bh * 0x10000;\n      goto LAB_00056cfc;\n    }\n    bh = (bh - ah) - (uint)(bl < al);\n    if (bh < 2) break;\n    bl = bl - al;\n    if (ah < bh) {\n      iVar6 = 0;\n      uVar4 = ah;\n      uVar12 = al;\n      if ((int)bh < 0) {\n        iVar6 = 1;\n        for (; -1 < (int)uVar4; uVar4 = uVar11 | uVar4 << 1) {\n          uVar11 = uVar12 >> 0x1f;\n          uVar12 = uVar12 << 1;\n          iVar6 = iVar6 + 1;\n        }\n        uVar11 = 0;\n        do {\n          uVar11 = uVar11 << 1;\n          if (uVar4 < bh) {\n            uVar5 = (uint)(bl < uVar12);\nLAB_00057068:\n            bl = bl - uVar12;\n            bh = (bh - uVar4) - uVar5;\n            uVar11 = uVar11 | 1;\n          }\n          else if ((bh == uVar4) && (uVar12 <= bl)) {\n            uVar5 = 0;\n            goto LAB_00057068;\n          }\n          iVar6 = iVar6 + -1;\n          uVar12 = uVar4 << 0x1f | uVar12 >> 1;\n          uVar4 = uVar4 >> 1;\n        } while (iVar6 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar5 = uVar12 << 1;\n            uVar4 = uVar12 >> 0x1f | uVar4 << 1;\n            iVar6 = iVar6 + 1;\n            uVar12 = uVar5;\n          } while (uVar4 < bh);\n        } while ((bh == uVar4) && (uVar5 <= bl));\n        uVar11 = 0;\n        do {\n          uVar12 = uVar4 << 0x1f;\n          uVar4 = uVar4 >> 1;\n          uVar5 = uVar12 | uVar5 >> 1;\n          uVar11 = uVar11 << 1;\n          if (uVar4 < bh) {\n            uVar12 = (uint)(bl < uVar5);\nLAB_00056df4:\n            bl = bl - uVar5;\n            bh = (bh - uVar4) - uVar12;\n            uVar11 = uVar11 | 1;\n          }\n          else if ((uVar4 == bh) && (uVar5 <= bl)) {\n            uVar12 = 0;\n            goto LAB_00056df4;\n          }\n          iVar6 = iVar6 + -1;\n        } while (iVar6 != 0);\n      }\n      if (bh < 2) {\n        mVar9 = uVar11 * mVar7 + mVar9;\n        mVar10 = uVar11 * mVar8 + mVar10;\n        break;\n      }\n      mVar9 = (uVar11 + 1) * mVar7 + mVar9;\n      mVar10 = (uVar11 + 1) * mVar8 + mVar10;\n    }\n    else {\n      mVar9 = mVar9 + mVar7;\n      mVar10 = mVar10 + mVar8;\n    }\n  }\n  goto LAB_00056c2c;\nLAB_00056cfc:\n  uVar12 = uVar12 - uVar4;\n  if (0x1ffff < uVar12) {\n    if (uVar4 < uVar12) {\n      iVar6 = 0;\n      uVar11 = uVar4;\n      if ((int)uVar12 < 0) {\n        iVar6 = 1;\n        for (; -1 < (int)uVar11; uVar11 = uVar11 << 1) {\n          iVar6 = iVar6 + 1;\n        }\n        uVar5 = 0;\n        do {\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar5 << 1;\n          if (uVar11 <= uVar12) {\n            uVar12 = uVar12 - uVar11;\n            uVar5 = uVar5 | 1;\n          }\n          uVar11 = uVar11 >> 1;\n        } while (iVar6 != 0);\n      }\n      else {\n        do {\n          uVar3 = uVar11;\n          uVar11 = uVar3 << 1;\n          iVar6 = iVar6 + 1;\n        } while (uVar11 <= uVar12);\n        uVar5 = 0;\n        uVar3 = uVar3 & 0x7fffffff;\n        do {\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar5 << 1;\n          if (uVar3 <= uVar12) {\n            uVar12 = uVar12 - uVar3;\n            uVar5 = uVar5 | 1;\n          }\n          uVar3 = uVar3 >> 1;\n        } while (iVar6 != 0);\n      }\n      if (uVar12 < 0x20000) {\n        mVar9 = mVar7 * uVar5 + mVar9;\n        mVar10 = mVar8 * uVar5 + mVar10;\n        goto LAB_00056c2c;\n      }\n      mVar9 = mVar7 * (uVar5 + 1) + mVar9;\n      mVar10 = mVar8 * (uVar5 + 1) + mVar10;\n    }\n    else {\n      mVar9 = mVar9 + mVar7;\n      mVar10 = mVar10 + mVar8;\n    }\nLAB_00056cd4:\n    uVar4 = uVar4 - uVar12;\n    if (uVar4 < 0x20000) goto LAB_00056c2c;\n    if (uVar12 < uVar4) {\n      iVar6 = 0;\n      uVar11 = uVar12;\n      if ((int)uVar4 < 0) {\n        iVar6 = 1;\n        for (; -1 < (int)uVar11; uVar11 = uVar11 << 1) {\n          iVar6 = iVar6 + 1;\n        }\n        uVar5 = 0;\n        do {\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar5 << 1;\n          if (uVar11 <= uVar4) {\n            uVar4 = uVar4 - uVar11;\n            uVar5 = uVar5 | 1;\n          }\n          uVar11 = uVar11 >> 1;\n        } while (iVar6 != 0);\n      }\n      else {\n        do {\n          uVar3 = uVar11;\n          uVar11 = uVar3 << 1;\n          iVar6 = iVar6 + 1;\n        } while (uVar11 <= uVar4);\n        uVar5 = 0;\n        uVar3 = uVar3 & 0x7fffffff;\n        do {\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar5 << 1;\n          if (uVar3 <= uVar4) {\n            uVar4 = uVar4 - uVar3;\n            uVar5 = uVar5 | 1;\n          }\n          uVar3 = uVar3 >> 1;\n        } while (iVar6 != 0);\n      }\n      if (uVar4 < 0x20000) {\n        mVar7 = mVar9 * uVar5 + mVar7;\n        mVar8 = mVar10 * uVar5 + mVar8;\n        goto LAB_00056c2c;\n      }\n      mVar7 = mVar9 * (uVar5 + 1) + mVar7;\n      mVar8 = mVar10 * (uVar5 + 1) + mVar8;\n    }\n    else {\n      mVar7 = mVar7 + mVar9;\n      mVar8 = mVar8 + mVar10;\n    }\n    goto LAB_00056cfc;\n  }\nLAB_00056c2c:\n  M->u[0][0] = mVar9;\n  M->u[0][1] = mVar7;\n  M->u[1][0] = mVar10;\n  M->u[1][1] = mVar8;\n  return 1;\n}\n\n" (function_definition "int __gmpn_hgcd2(mp_limb_t ah,mp_limb_t al,mp_limb_t bh,mp_limb_t bl,hgcd_matrix1 *M)\n\n{\n  mp_limb_t mVar1;\n  mp_limb_t mVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  mp_limb_t mVar7;\n  mp_limb_t mVar8;\n  mp_limb_t mVar9;\n  mp_limb_t mVar10;\n  uint uVar11;\n  uint uVar12;\n  \n  if ((ah < 2) || (bh < 2)) {\n    return 0;\n  }\n  if ((bh < ah) || ((ah == bh && (bl < al != 0)))) {\n    ah = (ah - bh) - (uint)(al < bl);\n    al = al - bl;\n    if (ah < 2) {\n      return 0;\n    }\n    mVar10 = 0;\n    mVar7 = 1;\n    mVar8 = 1;\n    mVar9 = 1;\n    if (ah < bh) goto LAB_00056c80;\n  }\n  else {\n    bh = bh - ((bl < al) + ah);\n    bl = bl - al;\n    if (bh < 2) {\n      return 0;\n    }\n    mVar10 = 1;\n    mVar7 = 0;\n    mVar8 = 1;\n    mVar9 = 1;\n    if (ah < bh) goto LAB_00056c80;\n  }\n  while (ah != bh) {\n    if (ah < 0x10000) {\n      uVar4 = (al >> 0x10) + ah * 0x10000;\n      uVar12 = (bl >> 0x10) + bh * 0x10000;\n      goto LAB_00056cd4;\n    }\n    ah = (ah - bh) - (uint)(al < bl);\n    if (ah < 2) break;\n    al = al - bl;\n    mVar1 = mVar9;\n    mVar2 = mVar10;\n    if (bh < ah) {\n      iVar6 = 0;\n      uVar4 = bh;\n      uVar12 = bl;\n      if ((int)ah < 0) {\n        iVar6 = 1;\n        for (; -1 < (int)uVar4; uVar4 = uVar11 | uVar4 << 1) {\n          uVar11 = uVar12 >> 0x1f;\n          uVar12 = uVar12 << 1;\n          iVar6 = iVar6 + 1;\n        }\n        uVar3 = 0;\n        do {\n          uVar3 = uVar3 << 1;\n          if (uVar4 < ah) {\n            uVar11 = (uint)(al < uVar12);\nLAB_00056f78:\n            al = al - uVar12;\n            ah = (ah - uVar4) - uVar11;\n            uVar3 = uVar3 | 1;\n          }\n          else if ((ah == uVar4) && (uVar12 <= al)) {\n            uVar11 = 0;\n            goto LAB_00056f78;\n          }\n          iVar6 = iVar6 + -1;\n          uVar12 = uVar4 << 0x1f | uVar12 >> 1;\n          uVar4 = uVar4 >> 1;\n        } while (iVar6 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar11 = uVar12 >> 0x1f;\n            uVar12 = uVar12 << 1;\n            uVar4 = uVar11 | uVar4 << 1;\n            iVar6 = iVar6 + 1;\n          } while (uVar4 < ah);\n          uVar3 = 0;\n          uVar5 = uVar4;\n        } while ((ah == uVar4) && (uVar5 = uVar11, uVar12 <= al));\n        do {\n          uVar4 = uVar4 >> 1;\n          uVar12 = uVar5 << 0x1f | uVar12 >> 1;\n          uVar3 = uVar3 << 1;\n          if (uVar4 < ah) {\n            uVar11 = (uint)(al < uVar12);\nLAB_00056eac:\n            al = al - uVar12;\n            ah = (ah - uVar4) - uVar11;\n            uVar3 = uVar3 | 1;\n          }\n          else if ((uVar4 == ah) && (uVar12 <= al)) {\n            uVar11 = 0;\n            goto LAB_00056eac;\n          }\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar4;\n        } while (iVar6 != 0);\n      }\n      if (ah < 2) {\n        mVar7 = mVar9 * uVar3 + mVar7;\n        mVar8 = mVar10 * uVar3 + mVar8;\n        break;\n      }\n      mVar1 = mVar9 * (uVar3 + 1);\n      mVar2 = mVar10 * (uVar3 + 1);\n    }\n    mVar8 = mVar8 + mVar2;\n    mVar7 = mVar7 + mVar1;\n    if (ah == bh) break;\nLAB_00056c80:\n    if (bh < 0x10000) {\n      uVar4 = (al >> 0x10) + ah * 0x10000;\n      uVar12 = (bl >> 0x10) + bh * 0x10000;\n      goto LAB_00056cfc;\n    }\n    bh = (bh - ah) - (uint)(bl < al);\n    if (bh < 2) break;\n    bl = bl - al;\n    if (ah < bh) {\n      iVar6 = 0;\n      uVar4 = ah;\n      uVar12 = al;\n      if ((int)bh < 0) {\n        iVar6 = 1;\n        for (; -1 < (int)uVar4; uVar4 = uVar11 | uVar4 << 1) {\n          uVar11 = uVar12 >> 0x1f;\n          uVar12 = uVar12 << 1;\n          iVar6 = iVar6 + 1;\n        }\n        uVar11 = 0;\n        do {\n          uVar11 = uVar11 << 1;\n          if (uVar4 < bh) {\n            uVar5 = (uint)(bl < uVar12);\nLAB_00057068:\n            bl = bl - uVar12;\n            bh = (bh - uVar4) - uVar5;\n            uVar11 = uVar11 | 1;\n          }\n          else if ((bh == uVar4) && (uVar12 <= bl)) {\n            uVar5 = 0;\n            goto LAB_00057068;\n          }\n          iVar6 = iVar6 + -1;\n          uVar12 = uVar4 << 0x1f | uVar12 >> 1;\n          uVar4 = uVar4 >> 1;\n        } while (iVar6 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar5 = uVar12 << 1;\n            uVar4 = uVar12 >> 0x1f | uVar4 << 1;\n            iVar6 = iVar6 + 1;\n            uVar12 = uVar5;\n          } while (uVar4 < bh);\n        } while ((bh == uVar4) && (uVar5 <= bl));\n        uVar11 = 0;\n        do {\n          uVar12 = uVar4 << 0x1f;\n          uVar4 = uVar4 >> 1;\n          uVar5 = uVar12 | uVar5 >> 1;\n          uVar11 = uVar11 << 1;\n          if (uVar4 < bh) {\n            uVar12 = (uint)(bl < uVar5);\nLAB_00056df4:\n            bl = bl - uVar5;\n            bh = (bh - uVar4) - uVar12;\n            uVar11 = uVar11 | 1;\n          }\n          else if ((uVar4 == bh) && (uVar5 <= bl)) {\n            uVar12 = 0;\n            goto LAB_00056df4;\n          }\n          iVar6 = iVar6 + -1;\n        } while (iVar6 != 0);\n      }\n      if (bh < 2) {\n        mVar9 = uVar11 * mVar7 + mVar9;\n        mVar10 = uVar11 * mVar8 + mVar10;\n        break;\n      }\n      mVar9 = (uVar11 + 1) * mVar7 + mVar9;\n      mVar10 = (uVar11 + 1) * mVar8 + mVar10;\n    }\n    else {\n      mVar9 = mVar9 + mVar7;\n      mVar10 = mVar10 + mVar8;\n    }\n  }\n  goto LAB_00056c2c;\nLAB_00056cfc:\n  uVar12 = uVar12 - uVar4;\n  if (0x1ffff < uVar12) {\n    if (uVar4 < uVar12) {\n      iVar6 = 0;\n      uVar11 = uVar4;\n      if ((int)uVar12 < 0) {\n        iVar6 = 1;\n        for (; -1 < (int)uVar11; uVar11 = uVar11 << 1) {\n          iVar6 = iVar6 + 1;\n        }\n        uVar5 = 0;\n        do {\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar5 << 1;\n          if (uVar11 <= uVar12) {\n            uVar12 = uVar12 - uVar11;\n            uVar5 = uVar5 | 1;\n          }\n          uVar11 = uVar11 >> 1;\n        } while (iVar6 != 0);\n      }\n      else {\n        do {\n          uVar3 = uVar11;\n          uVar11 = uVar3 << 1;\n          iVar6 = iVar6 + 1;\n        } while (uVar11 <= uVar12);\n        uVar5 = 0;\n        uVar3 = uVar3 & 0x7fffffff;\n        do {\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar5 << 1;\n          if (uVar3 <= uVar12) {\n            uVar12 = uVar12 - uVar3;\n            uVar5 = uVar5 | 1;\n          }\n          uVar3 = uVar3 >> 1;\n        } while (iVar6 != 0);\n      }\n      if (uVar12 < 0x20000) {\n        mVar9 = mVar7 * uVar5 + mVar9;\n        mVar10 = mVar8 * uVar5 + mVar10;\n        goto LAB_00056c2c;\n      }\n      mVar9 = mVar7 * (uVar5 + 1) + mVar9;\n      mVar10 = mVar8 * (uVar5 + 1) + mVar10;\n    }\n    else {\n      mVar9 = mVar9 + mVar7;\n      mVar10 = mVar10 + mVar8;\n    }\nLAB_00056cd4:\n    uVar4 = uVar4 - uVar12;\n    if (uVar4 < 0x20000) goto LAB_00056c2c;\n    if (uVar12 < uVar4) {\n      iVar6 = 0;\n      uVar11 = uVar12;\n      if ((int)uVar4 < 0) {\n        iVar6 = 1;\n        for (; -1 < (int)uVar11; uVar11 = uVar11 << 1) {\n          iVar6 = iVar6 + 1;\n        }\n        uVar5 = 0;\n        do {\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar5 << 1;\n          if (uVar11 <= uVar4) {\n            uVar4 = uVar4 - uVar11;\n            uVar5 = uVar5 | 1;\n          }\n          uVar11 = uVar11 >> 1;\n        } while (iVar6 != 0);\n      }\n      else {\n        do {\n          uVar3 = uVar11;\n          uVar11 = uVar3 << 1;\n          iVar6 = iVar6 + 1;\n        } while (uVar11 <= uVar4);\n        uVar5 = 0;\n        uVar3 = uVar3 & 0x7fffffff;\n        do {\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar5 << 1;\n          if (uVar3 <= uVar4) {\n            uVar4 = uVar4 - uVar3;\n            uVar5 = uVar5 | 1;\n          }\n          uVar3 = uVar3 >> 1;\n        } while (iVar6 != 0);\n      }\n      if (uVar4 < 0x20000) {\n        mVar7 = mVar9 * uVar5 + mVar7;\n        mVar8 = mVar10 * uVar5 + mVar8;\n        goto LAB_00056c2c;\n      }\n      mVar7 = mVar9 * (uVar5 + 1) + mVar7;\n      mVar8 = mVar10 * (uVar5 + 1) + mVar8;\n    }\n    else {\n      mVar7 = mVar7 + mVar9;\n      mVar8 = mVar8 + mVar10;\n    }\n    goto LAB_00056cfc;\n  }\nLAB_00056c2c:\n  M->u[0][0] = mVar9;\n  M->u[0][1] = mVar7;\n  M->u[1][0] = mVar10;\n  M->u[1][1] = mVar8;\n  return 1;\n}" primitive_type (function_declarator "__gmpn_hgcd2(mp_limb_t ah,mp_limb_t al,mp_limb_t bh,mp_limb_t bl,hgcd_matrix1 *M)" identifier (parameter_list "(mp_limb_t ah,mp_limb_t al,mp_limb_t bh,mp_limb_t bl,hgcd_matrix1 *M)" ( (parameter_declaration "mp_limb_t ah" type_identifier identifier) , (parameter_declaration "mp_limb_t al" type_identifier identifier) , (parameter_declaration "mp_limb_t bh" type_identifier identifier) , (parameter_declaration "mp_limb_t bl" type_identifier identifier) , (parameter_declaration "hgcd_matrix1 *M" type_identifier (pointer_declarator "*M" * identifier)) ))) (compound_statement "{\n  mp_limb_t mVar1;\n  mp_limb_t mVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  mp_limb_t mVar7;\n  mp_limb_t mVar8;\n  mp_limb_t mVar9;\n  mp_limb_t mVar10;\n  uint uVar11;\n  uint uVar12;\n  \n  if ((ah < 2) || (bh < 2)) {\n    return 0;\n  }\n  if ((bh < ah) || ((ah == bh && (bl < al != 0)))) {\n    ah = (ah - bh) - (uint)(al < bl);\n    al = al - bl;\n    if (ah < 2) {\n      return 0;\n    }\n    mVar10 = 0;\n    mVar7 = 1;\n    mVar8 = 1;\n    mVar9 = 1;\n    if (ah < bh) goto LAB_00056c80;\n  }\n  else {\n    bh = bh - ((bl < al) + ah);\n    bl = bl - al;\n    if (bh < 2) {\n      return 0;\n    }\n    mVar10 = 1;\n    mVar7 = 0;\n    mVar8 = 1;\n    mVar9 = 1;\n    if (ah < bh) goto LAB_00056c80;\n  }\n  while (ah != bh) {\n    if (ah < 0x10000) {\n      uVar4 = (al >> 0x10) + ah * 0x10000;\n      uVar12 = (bl >> 0x10) + bh * 0x10000;\n      goto LAB_00056cd4;\n    }\n    ah = (ah - bh) - (uint)(al < bl);\n    if (ah < 2) break;\n    al = al - bl;\n    mVar1 = mVar9;\n    mVar2 = mVar10;\n    if (bh < ah) {\n      iVar6 = 0;\n      uVar4 = bh;\n      uVar12 = bl;\n      if ((int)ah < 0) {\n        iVar6 = 1;\n        for (; -1 < (int)uVar4; uVar4 = uVar11 | uVar4 << 1) {\n          uVar11 = uVar12 >> 0x1f;\n          uVar12 = uVar12 << 1;\n          iVar6 = iVar6 + 1;\n        }\n        uVar3 = 0;\n        do {\n          uVar3 = uVar3 << 1;\n          if (uVar4 < ah) {\n            uVar11 = (uint)(al < uVar12);\nLAB_00056f78:\n            al = al - uVar12;\n            ah = (ah - uVar4) - uVar11;\n            uVar3 = uVar3 | 1;\n          }\n          else if ((ah == uVar4) && (uVar12 <= al)) {\n            uVar11 = 0;\n            goto LAB_00056f78;\n          }\n          iVar6 = iVar6 + -1;\n          uVar12 = uVar4 << 0x1f | uVar12 >> 1;\n          uVar4 = uVar4 >> 1;\n        } while (iVar6 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar11 = uVar12 >> 0x1f;\n            uVar12 = uVar12 << 1;\n            uVar4 = uVar11 | uVar4 << 1;\n            iVar6 = iVar6 + 1;\n          } while (uVar4 < ah);\n          uVar3 = 0;\n          uVar5 = uVar4;\n        } while ((ah == uVar4) && (uVar5 = uVar11, uVar12 <= al));\n        do {\n          uVar4 = uVar4 >> 1;\n          uVar12 = uVar5 << 0x1f | uVar12 >> 1;\n          uVar3 = uVar3 << 1;\n          if (uVar4 < ah) {\n            uVar11 = (uint)(al < uVar12);\nLAB_00056eac:\n            al = al - uVar12;\n            ah = (ah - uVar4) - uVar11;\n            uVar3 = uVar3 | 1;\n          }\n          else if ((uVar4 == ah) && (uVar12 <= al)) {\n            uVar11 = 0;\n            goto LAB_00056eac;\n          }\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar4;\n        } while (iVar6 != 0);\n      }\n      if (ah < 2) {\n        mVar7 = mVar9 * uVar3 + mVar7;\n        mVar8 = mVar10 * uVar3 + mVar8;\n        break;\n      }\n      mVar1 = mVar9 * (uVar3 + 1);\n      mVar2 = mVar10 * (uVar3 + 1);\n    }\n    mVar8 = mVar8 + mVar2;\n    mVar7 = mVar7 + mVar1;\n    if (ah == bh) break;\nLAB_00056c80:\n    if (bh < 0x10000) {\n      uVar4 = (al >> 0x10) + ah * 0x10000;\n      uVar12 = (bl >> 0x10) + bh * 0x10000;\n      goto LAB_00056cfc;\n    }\n    bh = (bh - ah) - (uint)(bl < al);\n    if (bh < 2) break;\n    bl = bl - al;\n    if (ah < bh) {\n      iVar6 = 0;\n      uVar4 = ah;\n      uVar12 = al;\n      if ((int)bh < 0) {\n        iVar6 = 1;\n        for (; -1 < (int)uVar4; uVar4 = uVar11 | uVar4 << 1) {\n          uVar11 = uVar12 >> 0x1f;\n          uVar12 = uVar12 << 1;\n          iVar6 = iVar6 + 1;\n        }\n        uVar11 = 0;\n        do {\n          uVar11 = uVar11 << 1;\n          if (uVar4 < bh) {\n            uVar5 = (uint)(bl < uVar12);\nLAB_00057068:\n            bl = bl - uVar12;\n            bh = (bh - uVar4) - uVar5;\n            uVar11 = uVar11 | 1;\n          }\n          else if ((bh == uVar4) && (uVar12 <= bl)) {\n            uVar5 = 0;\n            goto LAB_00057068;\n          }\n          iVar6 = iVar6 + -1;\n          uVar12 = uVar4 << 0x1f | uVar12 >> 1;\n          uVar4 = uVar4 >> 1;\n        } while (iVar6 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar5 = uVar12 << 1;\n            uVar4 = uVar12 >> 0x1f | uVar4 << 1;\n            iVar6 = iVar6 + 1;\n            uVar12 = uVar5;\n          } while (uVar4 < bh);\n        } while ((bh == uVar4) && (uVar5 <= bl));\n        uVar11 = 0;\n        do {\n          uVar12 = uVar4 << 0x1f;\n          uVar4 = uVar4 >> 1;\n          uVar5 = uVar12 | uVar5 >> 1;\n          uVar11 = uVar11 << 1;\n          if (uVar4 < bh) {\n            uVar12 = (uint)(bl < uVar5);\nLAB_00056df4:\n            bl = bl - uVar5;\n            bh = (bh - uVar4) - uVar12;\n            uVar11 = uVar11 | 1;\n          }\n          else if ((uVar4 == bh) && (uVar5 <= bl)) {\n            uVar12 = 0;\n            goto LAB_00056df4;\n          }\n          iVar6 = iVar6 + -1;\n        } while (iVar6 != 0);\n      }\n      if (bh < 2) {\n        mVar9 = uVar11 * mVar7 + mVar9;\n        mVar10 = uVar11 * mVar8 + mVar10;\n        break;\n      }\n      mVar9 = (uVar11 + 1) * mVar7 + mVar9;\n      mVar10 = (uVar11 + 1) * mVar8 + mVar10;\n    }\n    else {\n      mVar9 = mVar9 + mVar7;\n      mVar10 = mVar10 + mVar8;\n    }\n  }\n  goto LAB_00056c2c;\nLAB_00056cfc:\n  uVar12 = uVar12 - uVar4;\n  if (0x1ffff < uVar12) {\n    if (uVar4 < uVar12) {\n      iVar6 = 0;\n      uVar11 = uVar4;\n      if ((int)uVar12 < 0) {\n        iVar6 = 1;\n        for (; -1 < (int)uVar11; uVar11 = uVar11 << 1) {\n          iVar6 = iVar6 + 1;\n        }\n        uVar5 = 0;\n        do {\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar5 << 1;\n          if (uVar11 <= uVar12) {\n            uVar12 = uVar12 - uVar11;\n            uVar5 = uVar5 | 1;\n          }\n          uVar11 = uVar11 >> 1;\n        } while (iVar6 != 0);\n      }\n      else {\n        do {\n          uVar3 = uVar11;\n          uVar11 = uVar3 << 1;\n          iVar6 = iVar6 + 1;\n        } while (uVar11 <= uVar12);\n        uVar5 = 0;\n        uVar3 = uVar3 & 0x7fffffff;\n        do {\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar5 << 1;\n          if (uVar3 <= uVar12) {\n            uVar12 = uVar12 - uVar3;\n            uVar5 = uVar5 | 1;\n          }\n          uVar3 = uVar3 >> 1;\n        } while (iVar6 != 0);\n      }\n      if (uVar12 < 0x20000) {\n        mVar9 = mVar7 * uVar5 + mVar9;\n        mVar10 = mVar8 * uVar5 + mVar10;\n        goto LAB_00056c2c;\n      }\n      mVar9 = mVar7 * (uVar5 + 1) + mVar9;\n      mVar10 = mVar8 * (uVar5 + 1) + mVar10;\n    }\n    else {\n      mVar9 = mVar9 + mVar7;\n      mVar10 = mVar10 + mVar8;\n    }\nLAB_00056cd4:\n    uVar4 = uVar4 - uVar12;\n    if (uVar4 < 0x20000) goto LAB_00056c2c;\n    if (uVar12 < uVar4) {\n      iVar6 = 0;\n      uVar11 = uVar12;\n      if ((int)uVar4 < 0) {\n        iVar6 = 1;\n        for (; -1 < (int)uVar11; uVar11 = uVar11 << 1) {\n          iVar6 = iVar6 + 1;\n        }\n        uVar5 = 0;\n        do {\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar5 << 1;\n          if (uVar11 <= uVar4) {\n            uVar4 = uVar4 - uVar11;\n            uVar5 = uVar5 | 1;\n          }\n          uVar11 = uVar11 >> 1;\n        } while (iVar6 != 0);\n      }\n      else {\n        do {\n          uVar3 = uVar11;\n          uVar11 = uVar3 << 1;\n          iVar6 = iVar6 + 1;\n        } while (uVar11 <= uVar4);\n        uVar5 = 0;\n        uVar3 = uVar3 & 0x7fffffff;\n        do {\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar5 << 1;\n          if (uVar3 <= uVar4) {\n            uVar4 = uVar4 - uVar3;\n            uVar5 = uVar5 | 1;\n          }\n          uVar3 = uVar3 >> 1;\n        } while (iVar6 != 0);\n      }\n      if (uVar4 < 0x20000) {\n        mVar7 = mVar9 * uVar5 + mVar7;\n        mVar8 = mVar10 * uVar5 + mVar8;\n        goto LAB_00056c2c;\n      }\n      mVar7 = mVar9 * (uVar5 + 1) + mVar7;\n      mVar8 = mVar10 * (uVar5 + 1) + mVar8;\n    }\n    else {\n      mVar7 = mVar7 + mVar9;\n      mVar8 = mVar8 + mVar10;\n    }\n    goto LAB_00056cfc;\n  }\nLAB_00056c2c:\n  M->u[0][0] = mVar9;\n  M->u[0][1] = mVar7;\n  M->u[1][0] = mVar10;\n  M->u[1][1] = mVar8;\n  return 1;\n}" { (declaration "mp_limb_t mVar1;" type_identifier identifier ;) (declaration "mp_limb_t mVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "mp_limb_t mVar7;" type_identifier identifier ;) (declaration "mp_limb_t mVar8;" type_identifier identifier ;) (declaration "mp_limb_t mVar9;" type_identifier identifier ;) (declaration "mp_limb_t mVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (if_statement "if ((ah < 2) || (bh < 2)) {\n    return 0;\n  }" if (parenthesized_expression "((ah < 2) || (bh < 2))" ( (binary_expression "(ah < 2) || (bh < 2)" (parenthesized_expression "(ah < 2)" ( (binary_expression "ah < 2" identifier < number_literal) )) || (parenthesized_expression "(bh < 2)" ( (binary_expression "bh < 2" identifier < number_literal) ))) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((bh < ah) || ((ah == bh && (bl < al != 0)))) {\n    ah = (ah - bh) - (uint)(al < bl);\n    al = al - bl;\n    if (ah < 2) {\n      return 0;\n    }\n    mVar10 = 0;\n    mVar7 = 1;\n    mVar8 = 1;\n    mVar9 = 1;\n    if (ah < bh) goto LAB_00056c80;\n  }\n  else {\n    bh = bh - ((bl < al) + ah);\n    bl = bl - al;\n    if (bh < 2) {\n      return 0;\n    }\n    mVar10 = 1;\n    mVar7 = 0;\n    mVar8 = 1;\n    mVar9 = 1;\n    if (ah < bh) goto LAB_00056c80;\n  }" if (parenthesized_expression "((bh < ah) || ((ah == bh && (bl < al != 0))))" ( (binary_expression "(bh < ah) || ((ah == bh && (bl < al != 0)))" (parenthesized_expression "(bh < ah)" ( (binary_expression "bh < ah" identifier < identifier) )) || (parenthesized_expression "((ah == bh && (bl < al != 0)))" ( (parenthesized_expression "(ah == bh && (bl < al != 0))" ( (binary_expression "ah == bh && (bl < al != 0)" (binary_expression "ah == bh" identifier == identifier) && (parenthesized_expression "(bl < al != 0)" ( (binary_expression "bl < al != 0" (binary_expression "bl < al" identifier < identifier) != number_literal) ))) )) ))) )) (compound_statement "{\n    ah = (ah - bh) - (uint)(al < bl);\n    al = al - bl;\n    if (ah < 2) {\n      return 0;\n    }\n    mVar10 = 0;\n    mVar7 = 1;\n    mVar8 = 1;\n    mVar9 = 1;\n    if (ah < bh) goto LAB_00056c80;\n  }" { (expression_statement "ah = (ah - bh) - (uint)(al < bl);" (assignment_expression "ah = (ah - bh) - (uint)(al < bl)" identifier = (binary_expression "(ah - bh) - (uint)(al < bl)" (parenthesized_expression "(ah - bh)" ( (binary_expression "ah - bh" identifier - identifier) )) - (call_expression "(uint)(al < bl)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(al < bl)" ( (binary_expression "al < bl" identifier < identifier) ))))) ;) (expression_statement "al = al - bl;" (assignment_expression "al = al - bl" identifier = (binary_expression "al - bl" identifier - identifier)) ;) (if_statement "if (ah < 2) {\n      return 0;\n    }" if (parenthesized_expression "(ah < 2)" ( (binary_expression "ah < 2" identifier < number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "mVar10 = 0;" (assignment_expression "mVar10 = 0" identifier = number_literal) ;) (expression_statement "mVar7 = 1;" (assignment_expression "mVar7 = 1" identifier = number_literal) ;) (expression_statement "mVar8 = 1;" (assignment_expression "mVar8 = 1" identifier = number_literal) ;) (expression_statement "mVar9 = 1;" (assignment_expression "mVar9 = 1" identifier = number_literal) ;) (if_statement "if (ah < bh) goto LAB_00056c80;" if (parenthesized_expression "(ah < bh)" ( (binary_expression "ah < bh" identifier < identifier) )) (goto_statement "goto LAB_00056c80;" goto statement_identifier ;)) }) (else_clause "else {\n    bh = bh - ((bl < al) + ah);\n    bl = bl - al;\n    if (bh < 2) {\n      return 0;\n    }\n    mVar10 = 1;\n    mVar7 = 0;\n    mVar8 = 1;\n    mVar9 = 1;\n    if (ah < bh) goto LAB_00056c80;\n  }" else (compound_statement "{\n    bh = bh - ((bl < al) + ah);\n    bl = bl - al;\n    if (bh < 2) {\n      return 0;\n    }\n    mVar10 = 1;\n    mVar7 = 0;\n    mVar8 = 1;\n    mVar9 = 1;\n    if (ah < bh) goto LAB_00056c80;\n  }" { (expression_statement "bh = bh - ((bl < al) + ah);" (assignment_expression "bh = bh - ((bl < al) + ah)" identifier = (binary_expression "bh - ((bl < al) + ah)" identifier - (parenthesized_expression "((bl < al) + ah)" ( (binary_expression "(bl < al) + ah" (parenthesized_expression "(bl < al)" ( (binary_expression "bl < al" identifier < identifier) )) + identifier) )))) ;) (expression_statement "bl = bl - al;" (assignment_expression "bl = bl - al" identifier = (binary_expression "bl - al" identifier - identifier)) ;) (if_statement "if (bh < 2) {\n      return 0;\n    }" if (parenthesized_expression "(bh < 2)" ( (binary_expression "bh < 2" identifier < number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "mVar10 = 1;" (assignment_expression "mVar10 = 1" identifier = number_literal) ;) (expression_statement "mVar7 = 0;" (assignment_expression "mVar7 = 0" identifier = number_literal) ;) (expression_statement "mVar8 = 1;" (assignment_expression "mVar8 = 1" identifier = number_literal) ;) (expression_statement "mVar9 = 1;" (assignment_expression "mVar9 = 1" identifier = number_literal) ;) (if_statement "if (ah < bh) goto LAB_00056c80;" if (parenthesized_expression "(ah < bh)" ( (binary_expression "ah < bh" identifier < identifier) )) (goto_statement "goto LAB_00056c80;" goto statement_identifier ;)) }))) (while_statement "while (ah != bh) {\n    if (ah < 0x10000) {\n      uVar4 = (al >> 0x10) + ah * 0x10000;\n      uVar12 = (bl >> 0x10) + bh * 0x10000;\n      goto LAB_00056cd4;\n    }\n    ah = (ah - bh) - (uint)(al < bl);\n    if (ah < 2) break;\n    al = al - bl;\n    mVar1 = mVar9;\n    mVar2 = mVar10;\n    if (bh < ah) {\n      iVar6 = 0;\n      uVar4 = bh;\n      uVar12 = bl;\n      if ((int)ah < 0) {\n        iVar6 = 1;\n        for (; -1 < (int)uVar4; uVar4 = uVar11 | uVar4 << 1) {\n          uVar11 = uVar12 >> 0x1f;\n          uVar12 = uVar12 << 1;\n          iVar6 = iVar6 + 1;\n        }\n        uVar3 = 0;\n        do {\n          uVar3 = uVar3 << 1;\n          if (uVar4 < ah) {\n            uVar11 = (uint)(al < uVar12);\nLAB_00056f78:\n            al = al - uVar12;\n            ah = (ah - uVar4) - uVar11;\n            uVar3 = uVar3 | 1;\n          }\n          else if ((ah == uVar4) && (uVar12 <= al)) {\n            uVar11 = 0;\n            goto LAB_00056f78;\n          }\n          iVar6 = iVar6 + -1;\n          uVar12 = uVar4 << 0x1f | uVar12 >> 1;\n          uVar4 = uVar4 >> 1;\n        } while (iVar6 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar11 = uVar12 >> 0x1f;\n            uVar12 = uVar12 << 1;\n            uVar4 = uVar11 | uVar4 << 1;\n            iVar6 = iVar6 + 1;\n          } while (uVar4 < ah);\n          uVar3 = 0;\n          uVar5 = uVar4;\n        } while ((ah == uVar4) && (uVar5 = uVar11, uVar12 <= al));\n        do {\n          uVar4 = uVar4 >> 1;\n          uVar12 = uVar5 << 0x1f | uVar12 >> 1;\n          uVar3 = uVar3 << 1;\n          if (uVar4 < ah) {\n            uVar11 = (uint)(al < uVar12);\nLAB_00056eac:\n            al = al - uVar12;\n            ah = (ah - uVar4) - uVar11;\n            uVar3 = uVar3 | 1;\n          }\n          else if ((uVar4 == ah) && (uVar12 <= al)) {\n            uVar11 = 0;\n            goto LAB_00056eac;\n          }\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar4;\n        } while (iVar6 != 0);\n      }\n      if (ah < 2) {\n        mVar7 = mVar9 * uVar3 + mVar7;\n        mVar8 = mVar10 * uVar3 + mVar8;\n        break;\n      }\n      mVar1 = mVar9 * (uVar3 + 1);\n      mVar2 = mVar10 * (uVar3 + 1);\n    }\n    mVar8 = mVar8 + mVar2;\n    mVar7 = mVar7 + mVar1;\n    if (ah == bh) break;\nLAB_00056c80:\n    if (bh < 0x10000) {\n      uVar4 = (al >> 0x10) + ah * 0x10000;\n      uVar12 = (bl >> 0x10) + bh * 0x10000;\n      goto LAB_00056cfc;\n    }\n    bh = (bh - ah) - (uint)(bl < al);\n    if (bh < 2) break;\n    bl = bl - al;\n    if (ah < bh) {\n      iVar6 = 0;\n      uVar4 = ah;\n      uVar12 = al;\n      if ((int)bh < 0) {\n        iVar6 = 1;\n        for (; -1 < (int)uVar4; uVar4 = uVar11 | uVar4 << 1) {\n          uVar11 = uVar12 >> 0x1f;\n          uVar12 = uVar12 << 1;\n          iVar6 = iVar6 + 1;\n        }\n        uVar11 = 0;\n        do {\n          uVar11 = uVar11 << 1;\n          if (uVar4 < bh) {\n            uVar5 = (uint)(bl < uVar12);\nLAB_00057068:\n            bl = bl - uVar12;\n            bh = (bh - uVar4) - uVar5;\n            uVar11 = uVar11 | 1;\n          }\n          else if ((bh == uVar4) && (uVar12 <= bl)) {\n            uVar5 = 0;\n            goto LAB_00057068;\n          }\n          iVar6 = iVar6 + -1;\n          uVar12 = uVar4 << 0x1f | uVar12 >> 1;\n          uVar4 = uVar4 >> 1;\n        } while (iVar6 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar5 = uVar12 << 1;\n            uVar4 = uVar12 >> 0x1f | uVar4 << 1;\n            iVar6 = iVar6 + 1;\n            uVar12 = uVar5;\n          } while (uVar4 < bh);\n        } while ((bh == uVar4) && (uVar5 <= bl));\n        uVar11 = 0;\n        do {\n          uVar12 = uVar4 << 0x1f;\n          uVar4 = uVar4 >> 1;\n          uVar5 = uVar12 | uVar5 >> 1;\n          uVar11 = uVar11 << 1;\n          if (uVar4 < bh) {\n            uVar12 = (uint)(bl < uVar5);\nLAB_00056df4:\n            bl = bl - uVar5;\n            bh = (bh - uVar4) - uVar12;\n            uVar11 = uVar11 | 1;\n          }\n          else if ((uVar4 == bh) && (uVar5 <= bl)) {\n            uVar12 = 0;\n            goto LAB_00056df4;\n          }\n          iVar6 = iVar6 + -1;\n        } while (iVar6 != 0);\n      }\n      if (bh < 2) {\n        mVar9 = uVar11 * mVar7 + mVar9;\n        mVar10 = uVar11 * mVar8 + mVar10;\n        break;\n      }\n      mVar9 = (uVar11 + 1) * mVar7 + mVar9;\n      mVar10 = (uVar11 + 1) * mVar8 + mVar10;\n    }\n    else {\n      mVar9 = mVar9 + mVar7;\n      mVar10 = mVar10 + mVar8;\n    }\n  }" while (parenthesized_expression "(ah != bh)" ( (binary_expression "ah != bh" identifier != identifier) )) (compound_statement "{\n    if (ah < 0x10000) {\n      uVar4 = (al >> 0x10) + ah * 0x10000;\n      uVar12 = (bl >> 0x10) + bh * 0x10000;\n      goto LAB_00056cd4;\n    }\n    ah = (ah - bh) - (uint)(al < bl);\n    if (ah < 2) break;\n    al = al - bl;\n    mVar1 = mVar9;\n    mVar2 = mVar10;\n    if (bh < ah) {\n      iVar6 = 0;\n      uVar4 = bh;\n      uVar12 = bl;\n      if ((int)ah < 0) {\n        iVar6 = 1;\n        for (; -1 < (int)uVar4; uVar4 = uVar11 | uVar4 << 1) {\n          uVar11 = uVar12 >> 0x1f;\n          uVar12 = uVar12 << 1;\n          iVar6 = iVar6 + 1;\n        }\n        uVar3 = 0;\n        do {\n          uVar3 = uVar3 << 1;\n          if (uVar4 < ah) {\n            uVar11 = (uint)(al < uVar12);\nLAB_00056f78:\n            al = al - uVar12;\n            ah = (ah - uVar4) - uVar11;\n            uVar3 = uVar3 | 1;\n          }\n          else if ((ah == uVar4) && (uVar12 <= al)) {\n            uVar11 = 0;\n            goto LAB_00056f78;\n          }\n          iVar6 = iVar6 + -1;\n          uVar12 = uVar4 << 0x1f | uVar12 >> 1;\n          uVar4 = uVar4 >> 1;\n        } while (iVar6 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar11 = uVar12 >> 0x1f;\n            uVar12 = uVar12 << 1;\n            uVar4 = uVar11 | uVar4 << 1;\n            iVar6 = iVar6 + 1;\n          } while (uVar4 < ah);\n          uVar3 = 0;\n          uVar5 = uVar4;\n        } while ((ah == uVar4) && (uVar5 = uVar11, uVar12 <= al));\n        do {\n          uVar4 = uVar4 >> 1;\n          uVar12 = uVar5 << 0x1f | uVar12 >> 1;\n          uVar3 = uVar3 << 1;\n          if (uVar4 < ah) {\n            uVar11 = (uint)(al < uVar12);\nLAB_00056eac:\n            al = al - uVar12;\n            ah = (ah - uVar4) - uVar11;\n            uVar3 = uVar3 | 1;\n          }\n          else if ((uVar4 == ah) && (uVar12 <= al)) {\n            uVar11 = 0;\n            goto LAB_00056eac;\n          }\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar4;\n        } while (iVar6 != 0);\n      }\n      if (ah < 2) {\n        mVar7 = mVar9 * uVar3 + mVar7;\n        mVar8 = mVar10 * uVar3 + mVar8;\n        break;\n      }\n      mVar1 = mVar9 * (uVar3 + 1);\n      mVar2 = mVar10 * (uVar3 + 1);\n    }\n    mVar8 = mVar8 + mVar2;\n    mVar7 = mVar7 + mVar1;\n    if (ah == bh) break;\nLAB_00056c80:\n    if (bh < 0x10000) {\n      uVar4 = (al >> 0x10) + ah * 0x10000;\n      uVar12 = (bl >> 0x10) + bh * 0x10000;\n      goto LAB_00056cfc;\n    }\n    bh = (bh - ah) - (uint)(bl < al);\n    if (bh < 2) break;\n    bl = bl - al;\n    if (ah < bh) {\n      iVar6 = 0;\n      uVar4 = ah;\n      uVar12 = al;\n      if ((int)bh < 0) {\n        iVar6 = 1;\n        for (; -1 < (int)uVar4; uVar4 = uVar11 | uVar4 << 1) {\n          uVar11 = uVar12 >> 0x1f;\n          uVar12 = uVar12 << 1;\n          iVar6 = iVar6 + 1;\n        }\n        uVar11 = 0;\n        do {\n          uVar11 = uVar11 << 1;\n          if (uVar4 < bh) {\n            uVar5 = (uint)(bl < uVar12);\nLAB_00057068:\n            bl = bl - uVar12;\n            bh = (bh - uVar4) - uVar5;\n            uVar11 = uVar11 | 1;\n          }\n          else if ((bh == uVar4) && (uVar12 <= bl)) {\n            uVar5 = 0;\n            goto LAB_00057068;\n          }\n          iVar6 = iVar6 + -1;\n          uVar12 = uVar4 << 0x1f | uVar12 >> 1;\n          uVar4 = uVar4 >> 1;\n        } while (iVar6 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar5 = uVar12 << 1;\n            uVar4 = uVar12 >> 0x1f | uVar4 << 1;\n            iVar6 = iVar6 + 1;\n            uVar12 = uVar5;\n          } while (uVar4 < bh);\n        } while ((bh == uVar4) && (uVar5 <= bl));\n        uVar11 = 0;\n        do {\n          uVar12 = uVar4 << 0x1f;\n          uVar4 = uVar4 >> 1;\n          uVar5 = uVar12 | uVar5 >> 1;\n          uVar11 = uVar11 << 1;\n          if (uVar4 < bh) {\n            uVar12 = (uint)(bl < uVar5);\nLAB_00056df4:\n            bl = bl - uVar5;\n            bh = (bh - uVar4) - uVar12;\n            uVar11 = uVar11 | 1;\n          }\n          else if ((uVar4 == bh) && (uVar5 <= bl)) {\n            uVar12 = 0;\n            goto LAB_00056df4;\n          }\n          iVar6 = iVar6 + -1;\n        } while (iVar6 != 0);\n      }\n      if (bh < 2) {\n        mVar9 = uVar11 * mVar7 + mVar9;\n        mVar10 = uVar11 * mVar8 + mVar10;\n        break;\n      }\n      mVar9 = (uVar11 + 1) * mVar7 + mVar9;\n      mVar10 = (uVar11 + 1) * mVar8 + mVar10;\n    }\n    else {\n      mVar9 = mVar9 + mVar7;\n      mVar10 = mVar10 + mVar8;\n    }\n  }" { (if_statement "if (ah < 0x10000) {\n      uVar4 = (al >> 0x10) + ah * 0x10000;\n      uVar12 = (bl >> 0x10) + bh * 0x10000;\n      goto LAB_00056cd4;\n    }" if (parenthesized_expression "(ah < 0x10000)" ( (binary_expression "ah < 0x10000" identifier < number_literal) )) (compound_statement "{\n      uVar4 = (al >> 0x10) + ah * 0x10000;\n      uVar12 = (bl >> 0x10) + bh * 0x10000;\n      goto LAB_00056cd4;\n    }" { (expression_statement "uVar4 = (al >> 0x10) + ah * 0x10000;" (assignment_expression "uVar4 = (al >> 0x10) + ah * 0x10000" identifier = (binary_expression "(al >> 0x10) + ah * 0x10000" (parenthesized_expression "(al >> 0x10)" ( (binary_expression "al >> 0x10" identifier >> number_literal) )) + (binary_expression "ah * 0x10000" identifier * number_literal))) ;) (expression_statement "uVar12 = (bl >> 0x10) + bh * 0x10000;" (assignment_expression "uVar12 = (bl >> 0x10) + bh * 0x10000" identifier = (binary_expression "(bl >> 0x10) + bh * 0x10000" (parenthesized_expression "(bl >> 0x10)" ( (binary_expression "bl >> 0x10" identifier >> number_literal) )) + (binary_expression "bh * 0x10000" identifier * number_literal))) ;) (goto_statement "goto LAB_00056cd4;" goto statement_identifier ;) })) (expression_statement "ah = (ah - bh) - (uint)(al < bl);" (assignment_expression "ah = (ah - bh) - (uint)(al < bl)" identifier = (binary_expression "(ah - bh) - (uint)(al < bl)" (parenthesized_expression "(ah - bh)" ( (binary_expression "ah - bh" identifier - identifier) )) - (call_expression "(uint)(al < bl)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(al < bl)" ( (binary_expression "al < bl" identifier < identifier) ))))) ;) (if_statement "if (ah < 2) break;" if (parenthesized_expression "(ah < 2)" ( (binary_expression "ah < 2" identifier < number_literal) )) (break_statement "break;" break ;)) (expression_statement "al = al - bl;" (assignment_expression "al = al - bl" identifier = (binary_expression "al - bl" identifier - identifier)) ;) (expression_statement "mVar1 = mVar9;" (assignment_expression "mVar1 = mVar9" identifier = identifier) ;) (expression_statement "mVar2 = mVar10;" (assignment_expression "mVar2 = mVar10" identifier = identifier) ;) (if_statement "if (bh < ah) {\n      iVar6 = 0;\n      uVar4 = bh;\n      uVar12 = bl;\n      if ((int)ah < 0) {\n        iVar6 = 1;\n        for (; -1 < (int)uVar4; uVar4 = uVar11 | uVar4 << 1) {\n          uVar11 = uVar12 >> 0x1f;\n          uVar12 = uVar12 << 1;\n          iVar6 = iVar6 + 1;\n        }\n        uVar3 = 0;\n        do {\n          uVar3 = uVar3 << 1;\n          if (uVar4 < ah) {\n            uVar11 = (uint)(al < uVar12);\nLAB_00056f78:\n            al = al - uVar12;\n            ah = (ah - uVar4) - uVar11;\n            uVar3 = uVar3 | 1;\n          }\n          else if ((ah == uVar4) && (uVar12 <= al)) {\n            uVar11 = 0;\n            goto LAB_00056f78;\n          }\n          iVar6 = iVar6 + -1;\n          uVar12 = uVar4 << 0x1f | uVar12 >> 1;\n          uVar4 = uVar4 >> 1;\n        } while (iVar6 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar11 = uVar12 >> 0x1f;\n            uVar12 = uVar12 << 1;\n            uVar4 = uVar11 | uVar4 << 1;\n            iVar6 = iVar6 + 1;\n          } while (uVar4 < ah);\n          uVar3 = 0;\n          uVar5 = uVar4;\n        } while ((ah == uVar4) && (uVar5 = uVar11, uVar12 <= al));\n        do {\n          uVar4 = uVar4 >> 1;\n          uVar12 = uVar5 << 0x1f | uVar12 >> 1;\n          uVar3 = uVar3 << 1;\n          if (uVar4 < ah) {\n            uVar11 = (uint)(al < uVar12);\nLAB_00056eac:\n            al = al - uVar12;\n            ah = (ah - uVar4) - uVar11;\n            uVar3 = uVar3 | 1;\n          }\n          else if ((uVar4 == ah) && (uVar12 <= al)) {\n            uVar11 = 0;\n            goto LAB_00056eac;\n          }\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar4;\n        } while (iVar6 != 0);\n      }\n      if (ah < 2) {\n        mVar7 = mVar9 * uVar3 + mVar7;\n        mVar8 = mVar10 * uVar3 + mVar8;\n        break;\n      }\n      mVar1 = mVar9 * (uVar3 + 1);\n      mVar2 = mVar10 * (uVar3 + 1);\n    }" if (parenthesized_expression "(bh < ah)" ( (binary_expression "bh < ah" identifier < identifier) )) (compound_statement "{\n      iVar6 = 0;\n      uVar4 = bh;\n      uVar12 = bl;\n      if ((int)ah < 0) {\n        iVar6 = 1;\n        for (; -1 < (int)uVar4; uVar4 = uVar11 | uVar4 << 1) {\n          uVar11 = uVar12 >> 0x1f;\n          uVar12 = uVar12 << 1;\n          iVar6 = iVar6 + 1;\n        }\n        uVar3 = 0;\n        do {\n          uVar3 = uVar3 << 1;\n          if (uVar4 < ah) {\n            uVar11 = (uint)(al < uVar12);\nLAB_00056f78:\n            al = al - uVar12;\n            ah = (ah - uVar4) - uVar11;\n            uVar3 = uVar3 | 1;\n          }\n          else if ((ah == uVar4) && (uVar12 <= al)) {\n            uVar11 = 0;\n            goto LAB_00056f78;\n          }\n          iVar6 = iVar6 + -1;\n          uVar12 = uVar4 << 0x1f | uVar12 >> 1;\n          uVar4 = uVar4 >> 1;\n        } while (iVar6 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar11 = uVar12 >> 0x1f;\n            uVar12 = uVar12 << 1;\n            uVar4 = uVar11 | uVar4 << 1;\n            iVar6 = iVar6 + 1;\n          } while (uVar4 < ah);\n          uVar3 = 0;\n          uVar5 = uVar4;\n        } while ((ah == uVar4) && (uVar5 = uVar11, uVar12 <= al));\n        do {\n          uVar4 = uVar4 >> 1;\n          uVar12 = uVar5 << 0x1f | uVar12 >> 1;\n          uVar3 = uVar3 << 1;\n          if (uVar4 < ah) {\n            uVar11 = (uint)(al < uVar12);\nLAB_00056eac:\n            al = al - uVar12;\n            ah = (ah - uVar4) - uVar11;\n            uVar3 = uVar3 | 1;\n          }\n          else if ((uVar4 == ah) && (uVar12 <= al)) {\n            uVar11 = 0;\n            goto LAB_00056eac;\n          }\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar4;\n        } while (iVar6 != 0);\n      }\n      if (ah < 2) {\n        mVar7 = mVar9 * uVar3 + mVar7;\n        mVar8 = mVar10 * uVar3 + mVar8;\n        break;\n      }\n      mVar1 = mVar9 * (uVar3 + 1);\n      mVar2 = mVar10 * (uVar3 + 1);\n    }" { (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (expression_statement "uVar4 = bh;" (assignment_expression "uVar4 = bh" identifier = identifier) ;) (expression_statement "uVar12 = bl;" (assignment_expression "uVar12 = bl" identifier = identifier) ;) (if_statement "if ((int)ah < 0) {\n        iVar6 = 1;\n        for (; -1 < (int)uVar4; uVar4 = uVar11 | uVar4 << 1) {\n          uVar11 = uVar12 >> 0x1f;\n          uVar12 = uVar12 << 1;\n          iVar6 = iVar6 + 1;\n        }\n        uVar3 = 0;\n        do {\n          uVar3 = uVar3 << 1;\n          if (uVar4 < ah) {\n            uVar11 = (uint)(al < uVar12);\nLAB_00056f78:\n            al = al - uVar12;\n            ah = (ah - uVar4) - uVar11;\n            uVar3 = uVar3 | 1;\n          }\n          else if ((ah == uVar4) && (uVar12 <= al)) {\n            uVar11 = 0;\n            goto LAB_00056f78;\n          }\n          iVar6 = iVar6 + -1;\n          uVar12 = uVar4 << 0x1f | uVar12 >> 1;\n          uVar4 = uVar4 >> 1;\n        } while (iVar6 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar11 = uVar12 >> 0x1f;\n            uVar12 = uVar12 << 1;\n            uVar4 = uVar11 | uVar4 << 1;\n            iVar6 = iVar6 + 1;\n          } while (uVar4 < ah);\n          uVar3 = 0;\n          uVar5 = uVar4;\n        } while ((ah == uVar4) && (uVar5 = uVar11, uVar12 <= al));\n        do {\n          uVar4 = uVar4 >> 1;\n          uVar12 = uVar5 << 0x1f | uVar12 >> 1;\n          uVar3 = uVar3 << 1;\n          if (uVar4 < ah) {\n            uVar11 = (uint)(al < uVar12);\nLAB_00056eac:\n            al = al - uVar12;\n            ah = (ah - uVar4) - uVar11;\n            uVar3 = uVar3 | 1;\n          }\n          else if ((uVar4 == ah) && (uVar12 <= al)) {\n            uVar11 = 0;\n            goto LAB_00056eac;\n          }\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar4;\n        } while (iVar6 != 0);\n      }" if (parenthesized_expression "((int)ah < 0)" ( (binary_expression "(int)ah < 0" (cast_expression "(int)ah" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        iVar6 = 1;\n        for (; -1 < (int)uVar4; uVar4 = uVar11 | uVar4 << 1) {\n          uVar11 = uVar12 >> 0x1f;\n          uVar12 = uVar12 << 1;\n          iVar6 = iVar6 + 1;\n        }\n        uVar3 = 0;\n        do {\n          uVar3 = uVar3 << 1;\n          if (uVar4 < ah) {\n            uVar11 = (uint)(al < uVar12);\nLAB_00056f78:\n            al = al - uVar12;\n            ah = (ah - uVar4) - uVar11;\n            uVar3 = uVar3 | 1;\n          }\n          else if ((ah == uVar4) && (uVar12 <= al)) {\n            uVar11 = 0;\n            goto LAB_00056f78;\n          }\n          iVar6 = iVar6 + -1;\n          uVar12 = uVar4 << 0x1f | uVar12 >> 1;\n          uVar4 = uVar4 >> 1;\n        } while (iVar6 != 0);\n      }" { (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) (for_statement "for (; -1 < (int)uVar4; uVar4 = uVar11 | uVar4 << 1) {\n          uVar11 = uVar12 >> 0x1f;\n          uVar12 = uVar12 << 1;\n          iVar6 = iVar6 + 1;\n        }" for ( ; (binary_expression "-1 < (int)uVar4" number_literal < (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ; (assignment_expression "uVar4 = uVar11 | uVar4 << 1" identifier = (binary_expression "uVar11 | uVar4 << 1" identifier | (binary_expression "uVar4 << 1" identifier << number_literal))) ) (compound_statement "{\n          uVar11 = uVar12 >> 0x1f;\n          uVar12 = uVar12 << 1;\n          iVar6 = iVar6 + 1;\n        }" { (expression_statement "uVar11 = uVar12 >> 0x1f;" (assignment_expression "uVar11 = uVar12 >> 0x1f" identifier = (binary_expression "uVar12 >> 0x1f" identifier >> number_literal)) ;) (expression_statement "uVar12 = uVar12 << 1;" (assignment_expression "uVar12 = uVar12 << 1" identifier = (binary_expression "uVar12 << 1" identifier << number_literal)) ;) (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (do_statement "do {\n          uVar3 = uVar3 << 1;\n          if (uVar4 < ah) {\n            uVar11 = (uint)(al < uVar12);\nLAB_00056f78:\n            al = al - uVar12;\n            ah = (ah - uVar4) - uVar11;\n            uVar3 = uVar3 | 1;\n          }\n          else if ((ah == uVar4) && (uVar12 <= al)) {\n            uVar11 = 0;\n            goto LAB_00056f78;\n          }\n          iVar6 = iVar6 + -1;\n          uVar12 = uVar4 << 0x1f | uVar12 >> 1;\n          uVar4 = uVar4 >> 1;\n        } while (iVar6 != 0);" do (compound_statement "{\n          uVar3 = uVar3 << 1;\n          if (uVar4 < ah) {\n            uVar11 = (uint)(al < uVar12);\nLAB_00056f78:\n            al = al - uVar12;\n            ah = (ah - uVar4) - uVar11;\n            uVar3 = uVar3 | 1;\n          }\n          else if ((ah == uVar4) && (uVar12 <= al)) {\n            uVar11 = 0;\n            goto LAB_00056f78;\n          }\n          iVar6 = iVar6 + -1;\n          uVar12 = uVar4 << 0x1f | uVar12 >> 1;\n          uVar4 = uVar4 >> 1;\n        }" { (expression_statement "uVar3 = uVar3 << 1;" (assignment_expression "uVar3 = uVar3 << 1" identifier = (binary_expression "uVar3 << 1" identifier << number_literal)) ;) (if_statement "if (uVar4 < ah) {\n            uVar11 = (uint)(al < uVar12);\nLAB_00056f78:\n            al = al - uVar12;\n            ah = (ah - uVar4) - uVar11;\n            uVar3 = uVar3 | 1;\n          }\n          else if ((ah == uVar4) && (uVar12 <= al)) {\n            uVar11 = 0;\n            goto LAB_00056f78;\n          }" if (parenthesized_expression "(uVar4 < ah)" ( (binary_expression "uVar4 < ah" identifier < identifier) )) (compound_statement "{\n            uVar11 = (uint)(al < uVar12);\nLAB_00056f78:\n            al = al - uVar12;\n            ah = (ah - uVar4) - uVar11;\n            uVar3 = uVar3 | 1;\n          }" { (expression_statement "uVar11 = (uint)(al < uVar12);" (assignment_expression "uVar11 = (uint)(al < uVar12)" identifier = (call_expression "(uint)(al < uVar12)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(al < uVar12)" ( (binary_expression "al < uVar12" identifier < identifier) )))) ;) (labeled_statement "LAB_00056f78:\n            al = al - uVar12;" statement_identifier : (expression_statement "al = al - uVar12;" (assignment_expression "al = al - uVar12" identifier = (binary_expression "al - uVar12" identifier - identifier)) ;)) (expression_statement "ah = (ah - uVar4) - uVar11;" (assignment_expression "ah = (ah - uVar4) - uVar11" identifier = (binary_expression "(ah - uVar4) - uVar11" (parenthesized_expression "(ah - uVar4)" ( (binary_expression "ah - uVar4" identifier - identifier) )) - identifier)) ;) (expression_statement "uVar3 = uVar3 | 1;" (assignment_expression "uVar3 = uVar3 | 1" identifier = (binary_expression "uVar3 | 1" identifier | number_literal)) ;) }) (else_clause "else if ((ah == uVar4) && (uVar12 <= al)) {\n            uVar11 = 0;\n            goto LAB_00056f78;\n          }" else (if_statement "if ((ah == uVar4) && (uVar12 <= al)) {\n            uVar11 = 0;\n            goto LAB_00056f78;\n          }" if (parenthesized_expression "((ah == uVar4) && (uVar12 <= al))" ( (binary_expression "(ah == uVar4) && (uVar12 <= al)" (parenthesized_expression "(ah == uVar4)" ( (binary_expression "ah == uVar4" identifier == identifier) )) && (parenthesized_expression "(uVar12 <= al)" ( (binary_expression "uVar12 <= al" identifier <= identifier) ))) )) (compound_statement "{\n            uVar11 = 0;\n            goto LAB_00056f78;\n          }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00056f78;" goto statement_identifier ;) })))) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "uVar12 = uVar4 << 0x1f | uVar12 >> 1;" (assignment_expression "uVar12 = uVar4 << 0x1f | uVar12 >> 1" identifier = (binary_expression "uVar4 << 0x1f | uVar12 >> 1" (binary_expression "uVar4 << 0x1f" identifier << number_literal) | (binary_expression "uVar12 >> 1" identifier >> number_literal))) ;) (expression_statement "uVar4 = uVar4 >> 1;" (assignment_expression "uVar4 = uVar4 >> 1" identifier = (binary_expression "uVar4 >> 1" identifier >> number_literal)) ;) }) while (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) ;) }) (else_clause "else {\n        do {\n          do {\n            uVar11 = uVar12 >> 0x1f;\n            uVar12 = uVar12 << 1;\n            uVar4 = uVar11 | uVar4 << 1;\n            iVar6 = iVar6 + 1;\n          } while (uVar4 < ah);\n          uVar3 = 0;\n          uVar5 = uVar4;\n        } while ((ah == uVar4) && (uVar5 = uVar11, uVar12 <= al));\n        do {\n          uVar4 = uVar4 >> 1;\n          uVar12 = uVar5 << 0x1f | uVar12 >> 1;\n          uVar3 = uVar3 << 1;\n          if (uVar4 < ah) {\n            uVar11 = (uint)(al < uVar12);\nLAB_00056eac:\n            al = al - uVar12;\n            ah = (ah - uVar4) - uVar11;\n            uVar3 = uVar3 | 1;\n          }\n          else if ((uVar4 == ah) && (uVar12 <= al)) {\n            uVar11 = 0;\n            goto LAB_00056eac;\n          }\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar4;\n        } while (iVar6 != 0);\n      }" else (compound_statement "{\n        do {\n          do {\n            uVar11 = uVar12 >> 0x1f;\n            uVar12 = uVar12 << 1;\n            uVar4 = uVar11 | uVar4 << 1;\n            iVar6 = iVar6 + 1;\n          } while (uVar4 < ah);\n          uVar3 = 0;\n          uVar5 = uVar4;\n        } while ((ah == uVar4) && (uVar5 = uVar11, uVar12 <= al));\n        do {\n          uVar4 = uVar4 >> 1;\n          uVar12 = uVar5 << 0x1f | uVar12 >> 1;\n          uVar3 = uVar3 << 1;\n          if (uVar4 < ah) {\n            uVar11 = (uint)(al < uVar12);\nLAB_00056eac:\n            al = al - uVar12;\n            ah = (ah - uVar4) - uVar11;\n            uVar3 = uVar3 | 1;\n          }\n          else if ((uVar4 == ah) && (uVar12 <= al)) {\n            uVar11 = 0;\n            goto LAB_00056eac;\n          }\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar4;\n        } while (iVar6 != 0);\n      }" { (do_statement "do {\n          do {\n            uVar11 = uVar12 >> 0x1f;\n            uVar12 = uVar12 << 1;\n            uVar4 = uVar11 | uVar4 << 1;\n            iVar6 = iVar6 + 1;\n          } while (uVar4 < ah);\n          uVar3 = 0;\n          uVar5 = uVar4;\n        } while ((ah == uVar4) && (uVar5 = uVar11, uVar12 <= al));" do (compound_statement "{\n          do {\n            uVar11 = uVar12 >> 0x1f;\n            uVar12 = uVar12 << 1;\n            uVar4 = uVar11 | uVar4 << 1;\n            iVar6 = iVar6 + 1;\n          } while (uVar4 < ah);\n          uVar3 = 0;\n          uVar5 = uVar4;\n        }" { (do_statement "do {\n            uVar11 = uVar12 >> 0x1f;\n            uVar12 = uVar12 << 1;\n            uVar4 = uVar11 | uVar4 << 1;\n            iVar6 = iVar6 + 1;\n          } while (uVar4 < ah);" do (compound_statement "{\n            uVar11 = uVar12 >> 0x1f;\n            uVar12 = uVar12 << 1;\n            uVar4 = uVar11 | uVar4 << 1;\n            iVar6 = iVar6 + 1;\n          }" { (expression_statement "uVar11 = uVar12 >> 0x1f;" (assignment_expression "uVar11 = uVar12 >> 0x1f" identifier = (binary_expression "uVar12 >> 0x1f" identifier >> number_literal)) ;) (expression_statement "uVar12 = uVar12 << 1;" (assignment_expression "uVar12 = uVar12 << 1" identifier = (binary_expression "uVar12 << 1" identifier << number_literal)) ;) (expression_statement "uVar4 = uVar11 | uVar4 << 1;" (assignment_expression "uVar4 = uVar11 | uVar4 << 1" identifier = (binary_expression "uVar11 | uVar4 << 1" identifier | (binary_expression "uVar4 << 1" identifier << number_literal))) ;) (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar4 < ah)" ( (binary_expression "uVar4 < ah" identifier < identifier) )) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (expression_statement "uVar5 = uVar4;" (assignment_expression "uVar5 = uVar4" identifier = identifier) ;) }) while (parenthesized_expression "((ah == uVar4) && (uVar5 = uVar11, uVar12 <= al))" ( (binary_expression "(ah == uVar4) && (uVar5 = uVar11, uVar12 <= al)" (parenthesized_expression "(ah == uVar4)" ( (binary_expression "ah == uVar4" identifier == identifier) )) && (parenthesized_expression "(uVar5 = uVar11, uVar12 <= al)" ( (comma_expression "uVar5 = uVar11, uVar12 <= al" (assignment_expression "uVar5 = uVar11" identifier = identifier) , (binary_expression "uVar12 <= al" identifier <= identifier)) ))) )) ;) (do_statement "do {\n          uVar4 = uVar4 >> 1;\n          uVar12 = uVar5 << 0x1f | uVar12 >> 1;\n          uVar3 = uVar3 << 1;\n          if (uVar4 < ah) {\n            uVar11 = (uint)(al < uVar12);\nLAB_00056eac:\n            al = al - uVar12;\n            ah = (ah - uVar4) - uVar11;\n            uVar3 = uVar3 | 1;\n          }\n          else if ((uVar4 == ah) && (uVar12 <= al)) {\n            uVar11 = 0;\n            goto LAB_00056eac;\n          }\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar4;\n        } while (iVar6 != 0);" do (compound_statement "{\n          uVar4 = uVar4 >> 1;\n          uVar12 = uVar5 << 0x1f | uVar12 >> 1;\n          uVar3 = uVar3 << 1;\n          if (uVar4 < ah) {\n            uVar11 = (uint)(al < uVar12);\nLAB_00056eac:\n            al = al - uVar12;\n            ah = (ah - uVar4) - uVar11;\n            uVar3 = uVar3 | 1;\n          }\n          else if ((uVar4 == ah) && (uVar12 <= al)) {\n            uVar11 = 0;\n            goto LAB_00056eac;\n          }\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar4;\n        }" { (expression_statement "uVar4 = uVar4 >> 1;" (assignment_expression "uVar4 = uVar4 >> 1" identifier = (binary_expression "uVar4 >> 1" identifier >> number_literal)) ;) (expression_statement "uVar12 = uVar5 << 0x1f | uVar12 >> 1;" (assignment_expression "uVar12 = uVar5 << 0x1f | uVar12 >> 1" identifier = (binary_expression "uVar5 << 0x1f | uVar12 >> 1" (binary_expression "uVar5 << 0x1f" identifier << number_literal) | (binary_expression "uVar12 >> 1" identifier >> number_literal))) ;) (expression_statement "uVar3 = uVar3 << 1;" (assignment_expression "uVar3 = uVar3 << 1" identifier = (binary_expression "uVar3 << 1" identifier << number_literal)) ;) (if_statement "if (uVar4 < ah) {\n            uVar11 = (uint)(al < uVar12);\nLAB_00056eac:\n            al = al - uVar12;\n            ah = (ah - uVar4) - uVar11;\n            uVar3 = uVar3 | 1;\n          }\n          else if ((uVar4 == ah) && (uVar12 <= al)) {\n            uVar11 = 0;\n            goto LAB_00056eac;\n          }" if (parenthesized_expression "(uVar4 < ah)" ( (binary_expression "uVar4 < ah" identifier < identifier) )) (compound_statement "{\n            uVar11 = (uint)(al < uVar12);\nLAB_00056eac:\n            al = al - uVar12;\n            ah = (ah - uVar4) - uVar11;\n            uVar3 = uVar3 | 1;\n          }" { (expression_statement "uVar11 = (uint)(al < uVar12);" (assignment_expression "uVar11 = (uint)(al < uVar12)" identifier = (call_expression "(uint)(al < uVar12)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(al < uVar12)" ( (binary_expression "al < uVar12" identifier < identifier) )))) ;) (labeled_statement "LAB_00056eac:\n            al = al - uVar12;" statement_identifier : (expression_statement "al = al - uVar12;" (assignment_expression "al = al - uVar12" identifier = (binary_expression "al - uVar12" identifier - identifier)) ;)) (expression_statement "ah = (ah - uVar4) - uVar11;" (assignment_expression "ah = (ah - uVar4) - uVar11" identifier = (binary_expression "(ah - uVar4) - uVar11" (parenthesized_expression "(ah - uVar4)" ( (binary_expression "ah - uVar4" identifier - identifier) )) - identifier)) ;) (expression_statement "uVar3 = uVar3 | 1;" (assignment_expression "uVar3 = uVar3 | 1" identifier = (binary_expression "uVar3 | 1" identifier | number_literal)) ;) }) (else_clause "else if ((uVar4 == ah) && (uVar12 <= al)) {\n            uVar11 = 0;\n            goto LAB_00056eac;\n          }" else (if_statement "if ((uVar4 == ah) && (uVar12 <= al)) {\n            uVar11 = 0;\n            goto LAB_00056eac;\n          }" if (parenthesized_expression "((uVar4 == ah) && (uVar12 <= al))" ( (binary_expression "(uVar4 == ah) && (uVar12 <= al)" (parenthesized_expression "(uVar4 == ah)" ( (binary_expression "uVar4 == ah" identifier == identifier) )) && (parenthesized_expression "(uVar12 <= al)" ( (binary_expression "uVar12 <= al" identifier <= identifier) ))) )) (compound_statement "{\n            uVar11 = 0;\n            goto LAB_00056eac;\n          }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00056eac;" goto statement_identifier ;) })))) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "uVar5 = uVar4;" (assignment_expression "uVar5 = uVar4" identifier = identifier) ;) }) while (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) ;) }))) (if_statement "if (ah < 2) {\n        mVar7 = mVar9 * uVar3 + mVar7;\n        mVar8 = mVar10 * uVar3 + mVar8;\n        break;\n      }" if (parenthesized_expression "(ah < 2)" ( (binary_expression "ah < 2" identifier < number_literal) )) (compound_statement "{\n        mVar7 = mVar9 * uVar3 + mVar7;\n        mVar8 = mVar10 * uVar3 + mVar8;\n        break;\n      }" { (expression_statement "mVar7 = mVar9 * uVar3 + mVar7;" (assignment_expression "mVar7 = mVar9 * uVar3 + mVar7" identifier = (binary_expression "mVar9 * uVar3 + mVar7" (binary_expression "mVar9 * uVar3" identifier * identifier) + identifier)) ;) (expression_statement "mVar8 = mVar10 * uVar3 + mVar8;" (assignment_expression "mVar8 = mVar10 * uVar3 + mVar8" identifier = (binary_expression "mVar10 * uVar3 + mVar8" (binary_expression "mVar10 * uVar3" identifier * identifier) + identifier)) ;) (break_statement "break;" break ;) })) (expression_statement "mVar1 = mVar9 * (uVar3 + 1);" (assignment_expression "mVar1 = mVar9 * (uVar3 + 1)" identifier = (binary_expression "mVar9 * (uVar3 + 1)" identifier * (parenthesized_expression "(uVar3 + 1)" ( (binary_expression "uVar3 + 1" identifier + number_literal) )))) ;) (expression_statement "mVar2 = mVar10 * (uVar3 + 1);" (assignment_expression "mVar2 = mVar10 * (uVar3 + 1)" identifier = (binary_expression "mVar10 * (uVar3 + 1)" identifier * (parenthesized_expression "(uVar3 + 1)" ( (binary_expression "uVar3 + 1" identifier + number_literal) )))) ;) })) (expression_statement "mVar8 = mVar8 + mVar2;" (assignment_expression "mVar8 = mVar8 + mVar2" identifier = (binary_expression "mVar8 + mVar2" identifier + identifier)) ;) (expression_statement "mVar7 = mVar7 + mVar1;" (assignment_expression "mVar7 = mVar7 + mVar1" identifier = (binary_expression "mVar7 + mVar1" identifier + identifier)) ;) (if_statement "if (ah == bh) break;" if (parenthesized_expression "(ah == bh)" ( (binary_expression "ah == bh" identifier == identifier) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00056c80:\n    if (bh < 0x10000) {\n      uVar4 = (al >> 0x10) + ah * 0x10000;\n      uVar12 = (bl >> 0x10) + bh * 0x10000;\n      goto LAB_00056cfc;\n    }" statement_identifier : (if_statement "if (bh < 0x10000) {\n      uVar4 = (al >> 0x10) + ah * 0x10000;\n      uVar12 = (bl >> 0x10) + bh * 0x10000;\n      goto LAB_00056cfc;\n    }" if (parenthesized_expression "(bh < 0x10000)" ( (binary_expression "bh < 0x10000" identifier < number_literal) )) (compound_statement "{\n      uVar4 = (al >> 0x10) + ah * 0x10000;\n      uVar12 = (bl >> 0x10) + bh * 0x10000;\n      goto LAB_00056cfc;\n    }" { (expression_statement "uVar4 = (al >> 0x10) + ah * 0x10000;" (assignment_expression "uVar4 = (al >> 0x10) + ah * 0x10000" identifier = (binary_expression "(al >> 0x10) + ah * 0x10000" (parenthesized_expression "(al >> 0x10)" ( (binary_expression "al >> 0x10" identifier >> number_literal) )) + (binary_expression "ah * 0x10000" identifier * number_literal))) ;) (expression_statement "uVar12 = (bl >> 0x10) + bh * 0x10000;" (assignment_expression "uVar12 = (bl >> 0x10) + bh * 0x10000" identifier = (binary_expression "(bl >> 0x10) + bh * 0x10000" (parenthesized_expression "(bl >> 0x10)" ( (binary_expression "bl >> 0x10" identifier >> number_literal) )) + (binary_expression "bh * 0x10000" identifier * number_literal))) ;) (goto_statement "goto LAB_00056cfc;" goto statement_identifier ;) }))) (expression_statement "bh = (bh - ah) - (uint)(bl < al);" (assignment_expression "bh = (bh - ah) - (uint)(bl < al)" identifier = (binary_expression "(bh - ah) - (uint)(bl < al)" (parenthesized_expression "(bh - ah)" ( (binary_expression "bh - ah" identifier - identifier) )) - (call_expression "(uint)(bl < al)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bl < al)" ( (binary_expression "bl < al" identifier < identifier) ))))) ;) (if_statement "if (bh < 2) break;" if (parenthesized_expression "(bh < 2)" ( (binary_expression "bh < 2" identifier < number_literal) )) (break_statement "break;" break ;)) (expression_statement "bl = bl - al;" (assignment_expression "bl = bl - al" identifier = (binary_expression "bl - al" identifier - identifier)) ;) (if_statement "if (ah < bh) {\n      iVar6 = 0;\n      uVar4 = ah;\n      uVar12 = al;\n      if ((int)bh < 0) {\n        iVar6 = 1;\n        for (; -1 < (int)uVar4; uVar4 = uVar11 | uVar4 << 1) {\n          uVar11 = uVar12 >> 0x1f;\n          uVar12 = uVar12 << 1;\n          iVar6 = iVar6 + 1;\n        }\n        uVar11 = 0;\n        do {\n          uVar11 = uVar11 << 1;\n          if (uVar4 < bh) {\n            uVar5 = (uint)(bl < uVar12);\nLAB_00057068:\n            bl = bl - uVar12;\n            bh = (bh - uVar4) - uVar5;\n            uVar11 = uVar11 | 1;\n          }\n          else if ((bh == uVar4) && (uVar12 <= bl)) {\n            uVar5 = 0;\n            goto LAB_00057068;\n          }\n          iVar6 = iVar6 + -1;\n          uVar12 = uVar4 << 0x1f | uVar12 >> 1;\n          uVar4 = uVar4 >> 1;\n        } while (iVar6 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar5 = uVar12 << 1;\n            uVar4 = uVar12 >> 0x1f | uVar4 << 1;\n            iVar6 = iVar6 + 1;\n            uVar12 = uVar5;\n          } while (uVar4 < bh);\n        } while ((bh == uVar4) && (uVar5 <= bl));\n        uVar11 = 0;\n        do {\n          uVar12 = uVar4 << 0x1f;\n          uVar4 = uVar4 >> 1;\n          uVar5 = uVar12 | uVar5 >> 1;\n          uVar11 = uVar11 << 1;\n          if (uVar4 < bh) {\n            uVar12 = (uint)(bl < uVar5);\nLAB_00056df4:\n            bl = bl - uVar5;\n            bh = (bh - uVar4) - uVar12;\n            uVar11 = uVar11 | 1;\n          }\n          else if ((uVar4 == bh) && (uVar5 <= bl)) {\n            uVar12 = 0;\n            goto LAB_00056df4;\n          }\n          iVar6 = iVar6 + -1;\n        } while (iVar6 != 0);\n      }\n      if (bh < 2) {\n        mVar9 = uVar11 * mVar7 + mVar9;\n        mVar10 = uVar11 * mVar8 + mVar10;\n        break;\n      }\n      mVar9 = (uVar11 + 1) * mVar7 + mVar9;\n      mVar10 = (uVar11 + 1) * mVar8 + mVar10;\n    }\n    else {\n      mVar9 = mVar9 + mVar7;\n      mVar10 = mVar10 + mVar8;\n    }" if (parenthesized_expression "(ah < bh)" ( (binary_expression "ah < bh" identifier < identifier) )) (compound_statement "{\n      iVar6 = 0;\n      uVar4 = ah;\n      uVar12 = al;\n      if ((int)bh < 0) {\n        iVar6 = 1;\n        for (; -1 < (int)uVar4; uVar4 = uVar11 | uVar4 << 1) {\n          uVar11 = uVar12 >> 0x1f;\n          uVar12 = uVar12 << 1;\n          iVar6 = iVar6 + 1;\n        }\n        uVar11 = 0;\n        do {\n          uVar11 = uVar11 << 1;\n          if (uVar4 < bh) {\n            uVar5 = (uint)(bl < uVar12);\nLAB_00057068:\n            bl = bl - uVar12;\n            bh = (bh - uVar4) - uVar5;\n            uVar11 = uVar11 | 1;\n          }\n          else if ((bh == uVar4) && (uVar12 <= bl)) {\n            uVar5 = 0;\n            goto LAB_00057068;\n          }\n          iVar6 = iVar6 + -1;\n          uVar12 = uVar4 << 0x1f | uVar12 >> 1;\n          uVar4 = uVar4 >> 1;\n        } while (iVar6 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar5 = uVar12 << 1;\n            uVar4 = uVar12 >> 0x1f | uVar4 << 1;\n            iVar6 = iVar6 + 1;\n            uVar12 = uVar5;\n          } while (uVar4 < bh);\n        } while ((bh == uVar4) && (uVar5 <= bl));\n        uVar11 = 0;\n        do {\n          uVar12 = uVar4 << 0x1f;\n          uVar4 = uVar4 >> 1;\n          uVar5 = uVar12 | uVar5 >> 1;\n          uVar11 = uVar11 << 1;\n          if (uVar4 < bh) {\n            uVar12 = (uint)(bl < uVar5);\nLAB_00056df4:\n            bl = bl - uVar5;\n            bh = (bh - uVar4) - uVar12;\n            uVar11 = uVar11 | 1;\n          }\n          else if ((uVar4 == bh) && (uVar5 <= bl)) {\n            uVar12 = 0;\n            goto LAB_00056df4;\n          }\n          iVar6 = iVar6 + -1;\n        } while (iVar6 != 0);\n      }\n      if (bh < 2) {\n        mVar9 = uVar11 * mVar7 + mVar9;\n        mVar10 = uVar11 * mVar8 + mVar10;\n        break;\n      }\n      mVar9 = (uVar11 + 1) * mVar7 + mVar9;\n      mVar10 = (uVar11 + 1) * mVar8 + mVar10;\n    }" { (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (expression_statement "uVar4 = ah;" (assignment_expression "uVar4 = ah" identifier = identifier) ;) (expression_statement "uVar12 = al;" (assignment_expression "uVar12 = al" identifier = identifier) ;) (if_statement "if ((int)bh < 0) {\n        iVar6 = 1;\n        for (; -1 < (int)uVar4; uVar4 = uVar11 | uVar4 << 1) {\n          uVar11 = uVar12 >> 0x1f;\n          uVar12 = uVar12 << 1;\n          iVar6 = iVar6 + 1;\n        }\n        uVar11 = 0;\n        do {\n          uVar11 = uVar11 << 1;\n          if (uVar4 < bh) {\n            uVar5 = (uint)(bl < uVar12);\nLAB_00057068:\n            bl = bl - uVar12;\n            bh = (bh - uVar4) - uVar5;\n            uVar11 = uVar11 | 1;\n          }\n          else if ((bh == uVar4) && (uVar12 <= bl)) {\n            uVar5 = 0;\n            goto LAB_00057068;\n          }\n          iVar6 = iVar6 + -1;\n          uVar12 = uVar4 << 0x1f | uVar12 >> 1;\n          uVar4 = uVar4 >> 1;\n        } while (iVar6 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar5 = uVar12 << 1;\n            uVar4 = uVar12 >> 0x1f | uVar4 << 1;\n            iVar6 = iVar6 + 1;\n            uVar12 = uVar5;\n          } while (uVar4 < bh);\n        } while ((bh == uVar4) && (uVar5 <= bl));\n        uVar11 = 0;\n        do {\n          uVar12 = uVar4 << 0x1f;\n          uVar4 = uVar4 >> 1;\n          uVar5 = uVar12 | uVar5 >> 1;\n          uVar11 = uVar11 << 1;\n          if (uVar4 < bh) {\n            uVar12 = (uint)(bl < uVar5);\nLAB_00056df4:\n            bl = bl - uVar5;\n            bh = (bh - uVar4) - uVar12;\n            uVar11 = uVar11 | 1;\n          }\n          else if ((uVar4 == bh) && (uVar5 <= bl)) {\n            uVar12 = 0;\n            goto LAB_00056df4;\n          }\n          iVar6 = iVar6 + -1;\n        } while (iVar6 != 0);\n      }" if (parenthesized_expression "((int)bh < 0)" ( (binary_expression "(int)bh < 0" (cast_expression "(int)bh" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        iVar6 = 1;\n        for (; -1 < (int)uVar4; uVar4 = uVar11 | uVar4 << 1) {\n          uVar11 = uVar12 >> 0x1f;\n          uVar12 = uVar12 << 1;\n          iVar6 = iVar6 + 1;\n        }\n        uVar11 = 0;\n        do {\n          uVar11 = uVar11 << 1;\n          if (uVar4 < bh) {\n            uVar5 = (uint)(bl < uVar12);\nLAB_00057068:\n            bl = bl - uVar12;\n            bh = (bh - uVar4) - uVar5;\n            uVar11 = uVar11 | 1;\n          }\n          else if ((bh == uVar4) && (uVar12 <= bl)) {\n            uVar5 = 0;\n            goto LAB_00057068;\n          }\n          iVar6 = iVar6 + -1;\n          uVar12 = uVar4 << 0x1f | uVar12 >> 1;\n          uVar4 = uVar4 >> 1;\n        } while (iVar6 != 0);\n      }" { (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) (for_statement "for (; -1 < (int)uVar4; uVar4 = uVar11 | uVar4 << 1) {\n          uVar11 = uVar12 >> 0x1f;\n          uVar12 = uVar12 << 1;\n          iVar6 = iVar6 + 1;\n        }" for ( ; (binary_expression "-1 < (int)uVar4" number_literal < (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ; (assignment_expression "uVar4 = uVar11 | uVar4 << 1" identifier = (binary_expression "uVar11 | uVar4 << 1" identifier | (binary_expression "uVar4 << 1" identifier << number_literal))) ) (compound_statement "{\n          uVar11 = uVar12 >> 0x1f;\n          uVar12 = uVar12 << 1;\n          iVar6 = iVar6 + 1;\n        }" { (expression_statement "uVar11 = uVar12 >> 0x1f;" (assignment_expression "uVar11 = uVar12 >> 0x1f" identifier = (binary_expression "uVar12 >> 0x1f" identifier >> number_literal)) ;) (expression_statement "uVar12 = uVar12 << 1;" (assignment_expression "uVar12 = uVar12 << 1" identifier = (binary_expression "uVar12 << 1" identifier << number_literal)) ;) (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (do_statement "do {\n          uVar11 = uVar11 << 1;\n          if (uVar4 < bh) {\n            uVar5 = (uint)(bl < uVar12);\nLAB_00057068:\n            bl = bl - uVar12;\n            bh = (bh - uVar4) - uVar5;\n            uVar11 = uVar11 | 1;\n          }\n          else if ((bh == uVar4) && (uVar12 <= bl)) {\n            uVar5 = 0;\n            goto LAB_00057068;\n          }\n          iVar6 = iVar6 + -1;\n          uVar12 = uVar4 << 0x1f | uVar12 >> 1;\n          uVar4 = uVar4 >> 1;\n        } while (iVar6 != 0);" do (compound_statement "{\n          uVar11 = uVar11 << 1;\n          if (uVar4 < bh) {\n            uVar5 = (uint)(bl < uVar12);\nLAB_00057068:\n            bl = bl - uVar12;\n            bh = (bh - uVar4) - uVar5;\n            uVar11 = uVar11 | 1;\n          }\n          else if ((bh == uVar4) && (uVar12 <= bl)) {\n            uVar5 = 0;\n            goto LAB_00057068;\n          }\n          iVar6 = iVar6 + -1;\n          uVar12 = uVar4 << 0x1f | uVar12 >> 1;\n          uVar4 = uVar4 >> 1;\n        }" { (expression_statement "uVar11 = uVar11 << 1;" (assignment_expression "uVar11 = uVar11 << 1" identifier = (binary_expression "uVar11 << 1" identifier << number_literal)) ;) (if_statement "if (uVar4 < bh) {\n            uVar5 = (uint)(bl < uVar12);\nLAB_00057068:\n            bl = bl - uVar12;\n            bh = (bh - uVar4) - uVar5;\n            uVar11 = uVar11 | 1;\n          }\n          else if ((bh == uVar4) && (uVar12 <= bl)) {\n            uVar5 = 0;\n            goto LAB_00057068;\n          }" if (parenthesized_expression "(uVar4 < bh)" ( (binary_expression "uVar4 < bh" identifier < identifier) )) (compound_statement "{\n            uVar5 = (uint)(bl < uVar12);\nLAB_00057068:\n            bl = bl - uVar12;\n            bh = (bh - uVar4) - uVar5;\n            uVar11 = uVar11 | 1;\n          }" { (expression_statement "uVar5 = (uint)(bl < uVar12);" (assignment_expression "uVar5 = (uint)(bl < uVar12)" identifier = (call_expression "(uint)(bl < uVar12)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bl < uVar12)" ( (binary_expression "bl < uVar12" identifier < identifier) )))) ;) (labeled_statement "LAB_00057068:\n            bl = bl - uVar12;" statement_identifier : (expression_statement "bl = bl - uVar12;" (assignment_expression "bl = bl - uVar12" identifier = (binary_expression "bl - uVar12" identifier - identifier)) ;)) (expression_statement "bh = (bh - uVar4) - uVar5;" (assignment_expression "bh = (bh - uVar4) - uVar5" identifier = (binary_expression "(bh - uVar4) - uVar5" (parenthesized_expression "(bh - uVar4)" ( (binary_expression "bh - uVar4" identifier - identifier) )) - identifier)) ;) (expression_statement "uVar11 = uVar11 | 1;" (assignment_expression "uVar11 = uVar11 | 1" identifier = (binary_expression "uVar11 | 1" identifier | number_literal)) ;) }) (else_clause "else if ((bh == uVar4) && (uVar12 <= bl)) {\n            uVar5 = 0;\n            goto LAB_00057068;\n          }" else (if_statement "if ((bh == uVar4) && (uVar12 <= bl)) {\n            uVar5 = 0;\n            goto LAB_00057068;\n          }" if (parenthesized_expression "((bh == uVar4) && (uVar12 <= bl))" ( (binary_expression "(bh == uVar4) && (uVar12 <= bl)" (parenthesized_expression "(bh == uVar4)" ( (binary_expression "bh == uVar4" identifier == identifier) )) && (parenthesized_expression "(uVar12 <= bl)" ( (binary_expression "uVar12 <= bl" identifier <= identifier) ))) )) (compound_statement "{\n            uVar5 = 0;\n            goto LAB_00057068;\n          }" { (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00057068;" goto statement_identifier ;) })))) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "uVar12 = uVar4 << 0x1f | uVar12 >> 1;" (assignment_expression "uVar12 = uVar4 << 0x1f | uVar12 >> 1" identifier = (binary_expression "uVar4 << 0x1f | uVar12 >> 1" (binary_expression "uVar4 << 0x1f" identifier << number_literal) | (binary_expression "uVar12 >> 1" identifier >> number_literal))) ;) (expression_statement "uVar4 = uVar4 >> 1;" (assignment_expression "uVar4 = uVar4 >> 1" identifier = (binary_expression "uVar4 >> 1" identifier >> number_literal)) ;) }) while (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) ;) }) (else_clause "else {\n        do {\n          do {\n            uVar5 = uVar12 << 1;\n            uVar4 = uVar12 >> 0x1f | uVar4 << 1;\n            iVar6 = iVar6 + 1;\n            uVar12 = uVar5;\n          } while (uVar4 < bh);\n        } while ((bh == uVar4) && (uVar5 <= bl));\n        uVar11 = 0;\n        do {\n          uVar12 = uVar4 << 0x1f;\n          uVar4 = uVar4 >> 1;\n          uVar5 = uVar12 | uVar5 >> 1;\n          uVar11 = uVar11 << 1;\n          if (uVar4 < bh) {\n            uVar12 = (uint)(bl < uVar5);\nLAB_00056df4:\n            bl = bl - uVar5;\n            bh = (bh - uVar4) - uVar12;\n            uVar11 = uVar11 | 1;\n          }\n          else if ((uVar4 == bh) && (uVar5 <= bl)) {\n            uVar12 = 0;\n            goto LAB_00056df4;\n          }\n          iVar6 = iVar6 + -1;\n        } while (iVar6 != 0);\n      }" else (compound_statement "{\n        do {\n          do {\n            uVar5 = uVar12 << 1;\n            uVar4 = uVar12 >> 0x1f | uVar4 << 1;\n            iVar6 = iVar6 + 1;\n            uVar12 = uVar5;\n          } while (uVar4 < bh);\n        } while ((bh == uVar4) && (uVar5 <= bl));\n        uVar11 = 0;\n        do {\n          uVar12 = uVar4 << 0x1f;\n          uVar4 = uVar4 >> 1;\n          uVar5 = uVar12 | uVar5 >> 1;\n          uVar11 = uVar11 << 1;\n          if (uVar4 < bh) {\n            uVar12 = (uint)(bl < uVar5);\nLAB_00056df4:\n            bl = bl - uVar5;\n            bh = (bh - uVar4) - uVar12;\n            uVar11 = uVar11 | 1;\n          }\n          else if ((uVar4 == bh) && (uVar5 <= bl)) {\n            uVar12 = 0;\n            goto LAB_00056df4;\n          }\n          iVar6 = iVar6 + -1;\n        } while (iVar6 != 0);\n      }" { (do_statement "do {\n          do {\n            uVar5 = uVar12 << 1;\n            uVar4 = uVar12 >> 0x1f | uVar4 << 1;\n            iVar6 = iVar6 + 1;\n            uVar12 = uVar5;\n          } while (uVar4 < bh);\n        } while ((bh == uVar4) && (uVar5 <= bl));" do (compound_statement "{\n          do {\n            uVar5 = uVar12 << 1;\n            uVar4 = uVar12 >> 0x1f | uVar4 << 1;\n            iVar6 = iVar6 + 1;\n            uVar12 = uVar5;\n          } while (uVar4 < bh);\n        }" { (do_statement "do {\n            uVar5 = uVar12 << 1;\n            uVar4 = uVar12 >> 0x1f | uVar4 << 1;\n            iVar6 = iVar6 + 1;\n            uVar12 = uVar5;\n          } while (uVar4 < bh);" do (compound_statement "{\n            uVar5 = uVar12 << 1;\n            uVar4 = uVar12 >> 0x1f | uVar4 << 1;\n            iVar6 = iVar6 + 1;\n            uVar12 = uVar5;\n          }" { (expression_statement "uVar5 = uVar12 << 1;" (assignment_expression "uVar5 = uVar12 << 1" identifier = (binary_expression "uVar12 << 1" identifier << number_literal)) ;) (expression_statement "uVar4 = uVar12 >> 0x1f | uVar4 << 1;" (assignment_expression "uVar4 = uVar12 >> 0x1f | uVar4 << 1" identifier = (binary_expression "uVar12 >> 0x1f | uVar4 << 1" (binary_expression "uVar12 >> 0x1f" identifier >> number_literal) | (binary_expression "uVar4 << 1" identifier << number_literal))) ;) (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (expression_statement "uVar12 = uVar5;" (assignment_expression "uVar12 = uVar5" identifier = identifier) ;) }) while (parenthesized_expression "(uVar4 < bh)" ( (binary_expression "uVar4 < bh" identifier < identifier) )) ;) }) while (parenthesized_expression "((bh == uVar4) && (uVar5 <= bl))" ( (binary_expression "(bh == uVar4) && (uVar5 <= bl)" (parenthesized_expression "(bh == uVar4)" ( (binary_expression "bh == uVar4" identifier == identifier) )) && (parenthesized_expression "(uVar5 <= bl)" ( (binary_expression "uVar5 <= bl" identifier <= identifier) ))) )) ;) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (do_statement "do {\n          uVar12 = uVar4 << 0x1f;\n          uVar4 = uVar4 >> 1;\n          uVar5 = uVar12 | uVar5 >> 1;\n          uVar11 = uVar11 << 1;\n          if (uVar4 < bh) {\n            uVar12 = (uint)(bl < uVar5);\nLAB_00056df4:\n            bl = bl - uVar5;\n            bh = (bh - uVar4) - uVar12;\n            uVar11 = uVar11 | 1;\n          }\n          else if ((uVar4 == bh) && (uVar5 <= bl)) {\n            uVar12 = 0;\n            goto LAB_00056df4;\n          }\n          iVar6 = iVar6 + -1;\n        } while (iVar6 != 0);" do (compound_statement "{\n          uVar12 = uVar4 << 0x1f;\n          uVar4 = uVar4 >> 1;\n          uVar5 = uVar12 | uVar5 >> 1;\n          uVar11 = uVar11 << 1;\n          if (uVar4 < bh) {\n            uVar12 = (uint)(bl < uVar5);\nLAB_00056df4:\n            bl = bl - uVar5;\n            bh = (bh - uVar4) - uVar12;\n            uVar11 = uVar11 | 1;\n          }\n          else if ((uVar4 == bh) && (uVar5 <= bl)) {\n            uVar12 = 0;\n            goto LAB_00056df4;\n          }\n          iVar6 = iVar6 + -1;\n        }" { (expression_statement "uVar12 = uVar4 << 0x1f;" (assignment_expression "uVar12 = uVar4 << 0x1f" identifier = (binary_expression "uVar4 << 0x1f" identifier << number_literal)) ;) (expression_statement "uVar4 = uVar4 >> 1;" (assignment_expression "uVar4 = uVar4 >> 1" identifier = (binary_expression "uVar4 >> 1" identifier >> number_literal)) ;) (expression_statement "uVar5 = uVar12 | uVar5 >> 1;" (assignment_expression "uVar5 = uVar12 | uVar5 >> 1" identifier = (binary_expression "uVar12 | uVar5 >> 1" identifier | (binary_expression "uVar5 >> 1" identifier >> number_literal))) ;) (expression_statement "uVar11 = uVar11 << 1;" (assignment_expression "uVar11 = uVar11 << 1" identifier = (binary_expression "uVar11 << 1" identifier << number_literal)) ;) (if_statement "if (uVar4 < bh) {\n            uVar12 = (uint)(bl < uVar5);\nLAB_00056df4:\n            bl = bl - uVar5;\n            bh = (bh - uVar4) - uVar12;\n            uVar11 = uVar11 | 1;\n          }\n          else if ((uVar4 == bh) && (uVar5 <= bl)) {\n            uVar12 = 0;\n            goto LAB_00056df4;\n          }" if (parenthesized_expression "(uVar4 < bh)" ( (binary_expression "uVar4 < bh" identifier < identifier) )) (compound_statement "{\n            uVar12 = (uint)(bl < uVar5);\nLAB_00056df4:\n            bl = bl - uVar5;\n            bh = (bh - uVar4) - uVar12;\n            uVar11 = uVar11 | 1;\n          }" { (expression_statement "uVar12 = (uint)(bl < uVar5);" (assignment_expression "uVar12 = (uint)(bl < uVar5)" identifier = (call_expression "(uint)(bl < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bl < uVar5)" ( (binary_expression "bl < uVar5" identifier < identifier) )))) ;) (labeled_statement "LAB_00056df4:\n            bl = bl - uVar5;" statement_identifier : (expression_statement "bl = bl - uVar5;" (assignment_expression "bl = bl - uVar5" identifier = (binary_expression "bl - uVar5" identifier - identifier)) ;)) (expression_statement "bh = (bh - uVar4) - uVar12;" (assignment_expression "bh = (bh - uVar4) - uVar12" identifier = (binary_expression "(bh - uVar4) - uVar12" (parenthesized_expression "(bh - uVar4)" ( (binary_expression "bh - uVar4" identifier - identifier) )) - identifier)) ;) (expression_statement "uVar11 = uVar11 | 1;" (assignment_expression "uVar11 = uVar11 | 1" identifier = (binary_expression "uVar11 | 1" identifier | number_literal)) ;) }) (else_clause "else if ((uVar4 == bh) && (uVar5 <= bl)) {\n            uVar12 = 0;\n            goto LAB_00056df4;\n          }" else (if_statement "if ((uVar4 == bh) && (uVar5 <= bl)) {\n            uVar12 = 0;\n            goto LAB_00056df4;\n          }" if (parenthesized_expression "((uVar4 == bh) && (uVar5 <= bl))" ( (binary_expression "(uVar4 == bh) && (uVar5 <= bl)" (parenthesized_expression "(uVar4 == bh)" ( (binary_expression "uVar4 == bh" identifier == identifier) )) && (parenthesized_expression "(uVar5 <= bl)" ( (binary_expression "uVar5 <= bl" identifier <= identifier) ))) )) (compound_statement "{\n            uVar12 = 0;\n            goto LAB_00056df4;\n          }" { (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00056df4;" goto statement_identifier ;) })))) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) ;) }))) (if_statement "if (bh < 2) {\n        mVar9 = uVar11 * mVar7 + mVar9;\n        mVar10 = uVar11 * mVar8 + mVar10;\n        break;\n      }" if (parenthesized_expression "(bh < 2)" ( (binary_expression "bh < 2" identifier < number_literal) )) (compound_statement "{\n        mVar9 = uVar11 * mVar7 + mVar9;\n        mVar10 = uVar11 * mVar8 + mVar10;\n        break;\n      }" { (expression_statement "mVar9 = uVar11 * mVar7 + mVar9;" (assignment_expression "mVar9 = uVar11 * mVar7 + mVar9" identifier = (binary_expression "uVar11 * mVar7 + mVar9" (binary_expression "uVar11 * mVar7" identifier * identifier) + identifier)) ;) (expression_statement "mVar10 = uVar11 * mVar8 + mVar10;" (assignment_expression "mVar10 = uVar11 * mVar8 + mVar10" identifier = (binary_expression "uVar11 * mVar8 + mVar10" (binary_expression "uVar11 * mVar8" identifier * identifier) + identifier)) ;) (break_statement "break;" break ;) })) (expression_statement "mVar9 = (uVar11 + 1) * mVar7 + mVar9;" (assignment_expression "mVar9 = (uVar11 + 1) * mVar7 + mVar9" identifier = (binary_expression "(uVar11 + 1) * mVar7 + mVar9" (binary_expression "(uVar11 + 1) * mVar7" (parenthesized_expression "(uVar11 + 1)" ( (binary_expression "uVar11 + 1" identifier + number_literal) )) * identifier) + identifier)) ;) (expression_statement "mVar10 = (uVar11 + 1) * mVar8 + mVar10;" (assignment_expression "mVar10 = (uVar11 + 1) * mVar8 + mVar10" identifier = (binary_expression "(uVar11 + 1) * mVar8 + mVar10" (binary_expression "(uVar11 + 1) * mVar8" (parenthesized_expression "(uVar11 + 1)" ( (binary_expression "uVar11 + 1" identifier + number_literal) )) * identifier) + identifier)) ;) }) (else_clause "else {\n      mVar9 = mVar9 + mVar7;\n      mVar10 = mVar10 + mVar8;\n    }" else (compound_statement "{\n      mVar9 = mVar9 + mVar7;\n      mVar10 = mVar10 + mVar8;\n    }" { (expression_statement "mVar9 = mVar9 + mVar7;" (assignment_expression "mVar9 = mVar9 + mVar7" identifier = (binary_expression "mVar9 + mVar7" identifier + identifier)) ;) (expression_statement "mVar10 = mVar10 + mVar8;" (assignment_expression "mVar10 = mVar10 + mVar8" identifier = (binary_expression "mVar10 + mVar8" identifier + identifier)) ;) }))) })) (goto_statement "goto LAB_00056c2c;" goto statement_identifier ;) (labeled_statement "LAB_00056cfc:\n  uVar12 = uVar12 - uVar4;" statement_identifier : (expression_statement "uVar12 = uVar12 - uVar4;" (assignment_expression "uVar12 = uVar12 - uVar4" identifier = (binary_expression "uVar12 - uVar4" identifier - identifier)) ;)) (if_statement "if (0x1ffff < uVar12) {\n    if (uVar4 < uVar12) {\n      iVar6 = 0;\n      uVar11 = uVar4;\n      if ((int)uVar12 < 0) {\n        iVar6 = 1;\n        for (; -1 < (int)uVar11; uVar11 = uVar11 << 1) {\n          iVar6 = iVar6 + 1;\n        }\n        uVar5 = 0;\n        do {\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar5 << 1;\n          if (uVar11 <= uVar12) {\n            uVar12 = uVar12 - uVar11;\n            uVar5 = uVar5 | 1;\n          }\n          uVar11 = uVar11 >> 1;\n        } while (iVar6 != 0);\n      }\n      else {\n        do {\n          uVar3 = uVar11;\n          uVar11 = uVar3 << 1;\n          iVar6 = iVar6 + 1;\n        } while (uVar11 <= uVar12);\n        uVar5 = 0;\n        uVar3 = uVar3 & 0x7fffffff;\n        do {\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar5 << 1;\n          if (uVar3 <= uVar12) {\n            uVar12 = uVar12 - uVar3;\n            uVar5 = uVar5 | 1;\n          }\n          uVar3 = uVar3 >> 1;\n        } while (iVar6 != 0);\n      }\n      if (uVar12 < 0x20000) {\n        mVar9 = mVar7 * uVar5 + mVar9;\n        mVar10 = mVar8 * uVar5 + mVar10;\n        goto LAB_00056c2c;\n      }\n      mVar9 = mVar7 * (uVar5 + 1) + mVar9;\n      mVar10 = mVar8 * (uVar5 + 1) + mVar10;\n    }\n    else {\n      mVar9 = mVar9 + mVar7;\n      mVar10 = mVar10 + mVar8;\n    }\nLAB_00056cd4:\n    uVar4 = uVar4 - uVar12;\n    if (uVar4 < 0x20000) goto LAB_00056c2c;\n    if (uVar12 < uVar4) {\n      iVar6 = 0;\n      uVar11 = uVar12;\n      if ((int)uVar4 < 0) {\n        iVar6 = 1;\n        for (; -1 < (int)uVar11; uVar11 = uVar11 << 1) {\n          iVar6 = iVar6 + 1;\n        }\n        uVar5 = 0;\n        do {\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar5 << 1;\n          if (uVar11 <= uVar4) {\n            uVar4 = uVar4 - uVar11;\n            uVar5 = uVar5 | 1;\n          }\n          uVar11 = uVar11 >> 1;\n        } while (iVar6 != 0);\n      }\n      else {\n        do {\n          uVar3 = uVar11;\n          uVar11 = uVar3 << 1;\n          iVar6 = iVar6 + 1;\n        } while (uVar11 <= uVar4);\n        uVar5 = 0;\n        uVar3 = uVar3 & 0x7fffffff;\n        do {\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar5 << 1;\n          if (uVar3 <= uVar4) {\n            uVar4 = uVar4 - uVar3;\n            uVar5 = uVar5 | 1;\n          }\n          uVar3 = uVar3 >> 1;\n        } while (iVar6 != 0);\n      }\n      if (uVar4 < 0x20000) {\n        mVar7 = mVar9 * uVar5 + mVar7;\n        mVar8 = mVar10 * uVar5 + mVar8;\n        goto LAB_00056c2c;\n      }\n      mVar7 = mVar9 * (uVar5 + 1) + mVar7;\n      mVar8 = mVar10 * (uVar5 + 1) + mVar8;\n    }\n    else {\n      mVar7 = mVar7 + mVar9;\n      mVar8 = mVar8 + mVar10;\n    }\n    goto LAB_00056cfc;\n  }" if (parenthesized_expression "(0x1ffff < uVar12)" ( (binary_expression "0x1ffff < uVar12" number_literal < identifier) )) (compound_statement "{\n    if (uVar4 < uVar12) {\n      iVar6 = 0;\n      uVar11 = uVar4;\n      if ((int)uVar12 < 0) {\n        iVar6 = 1;\n        for (; -1 < (int)uVar11; uVar11 = uVar11 << 1) {\n          iVar6 = iVar6 + 1;\n        }\n        uVar5 = 0;\n        do {\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar5 << 1;\n          if (uVar11 <= uVar12) {\n            uVar12 = uVar12 - uVar11;\n            uVar5 = uVar5 | 1;\n          }\n          uVar11 = uVar11 >> 1;\n        } while (iVar6 != 0);\n      }\n      else {\n        do {\n          uVar3 = uVar11;\n          uVar11 = uVar3 << 1;\n          iVar6 = iVar6 + 1;\n        } while (uVar11 <= uVar12);\n        uVar5 = 0;\n        uVar3 = uVar3 & 0x7fffffff;\n        do {\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar5 << 1;\n          if (uVar3 <= uVar12) {\n            uVar12 = uVar12 - uVar3;\n            uVar5 = uVar5 | 1;\n          }\n          uVar3 = uVar3 >> 1;\n        } while (iVar6 != 0);\n      }\n      if (uVar12 < 0x20000) {\n        mVar9 = mVar7 * uVar5 + mVar9;\n        mVar10 = mVar8 * uVar5 + mVar10;\n        goto LAB_00056c2c;\n      }\n      mVar9 = mVar7 * (uVar5 + 1) + mVar9;\n      mVar10 = mVar8 * (uVar5 + 1) + mVar10;\n    }\n    else {\n      mVar9 = mVar9 + mVar7;\n      mVar10 = mVar10 + mVar8;\n    }\nLAB_00056cd4:\n    uVar4 = uVar4 - uVar12;\n    if (uVar4 < 0x20000) goto LAB_00056c2c;\n    if (uVar12 < uVar4) {\n      iVar6 = 0;\n      uVar11 = uVar12;\n      if ((int)uVar4 < 0) {\n        iVar6 = 1;\n        for (; -1 < (int)uVar11; uVar11 = uVar11 << 1) {\n          iVar6 = iVar6 + 1;\n        }\n        uVar5 = 0;\n        do {\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar5 << 1;\n          if (uVar11 <= uVar4) {\n            uVar4 = uVar4 - uVar11;\n            uVar5 = uVar5 | 1;\n          }\n          uVar11 = uVar11 >> 1;\n        } while (iVar6 != 0);\n      }\n      else {\n        do {\n          uVar3 = uVar11;\n          uVar11 = uVar3 << 1;\n          iVar6 = iVar6 + 1;\n        } while (uVar11 <= uVar4);\n        uVar5 = 0;\n        uVar3 = uVar3 & 0x7fffffff;\n        do {\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar5 << 1;\n          if (uVar3 <= uVar4) {\n            uVar4 = uVar4 - uVar3;\n            uVar5 = uVar5 | 1;\n          }\n          uVar3 = uVar3 >> 1;\n        } while (iVar6 != 0);\n      }\n      if (uVar4 < 0x20000) {\n        mVar7 = mVar9 * uVar5 + mVar7;\n        mVar8 = mVar10 * uVar5 + mVar8;\n        goto LAB_00056c2c;\n      }\n      mVar7 = mVar9 * (uVar5 + 1) + mVar7;\n      mVar8 = mVar10 * (uVar5 + 1) + mVar8;\n    }\n    else {\n      mVar7 = mVar7 + mVar9;\n      mVar8 = mVar8 + mVar10;\n    }\n    goto LAB_00056cfc;\n  }" { (if_statement "if (uVar4 < uVar12) {\n      iVar6 = 0;\n      uVar11 = uVar4;\n      if ((int)uVar12 < 0) {\n        iVar6 = 1;\n        for (; -1 < (int)uVar11; uVar11 = uVar11 << 1) {\n          iVar6 = iVar6 + 1;\n        }\n        uVar5 = 0;\n        do {\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar5 << 1;\n          if (uVar11 <= uVar12) {\n            uVar12 = uVar12 - uVar11;\n            uVar5 = uVar5 | 1;\n          }\n          uVar11 = uVar11 >> 1;\n        } while (iVar6 != 0);\n      }\n      else {\n        do {\n          uVar3 = uVar11;\n          uVar11 = uVar3 << 1;\n          iVar6 = iVar6 + 1;\n        } while (uVar11 <= uVar12);\n        uVar5 = 0;\n        uVar3 = uVar3 & 0x7fffffff;\n        do {\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar5 << 1;\n          if (uVar3 <= uVar12) {\n            uVar12 = uVar12 - uVar3;\n            uVar5 = uVar5 | 1;\n          }\n          uVar3 = uVar3 >> 1;\n        } while (iVar6 != 0);\n      }\n      if (uVar12 < 0x20000) {\n        mVar9 = mVar7 * uVar5 + mVar9;\n        mVar10 = mVar8 * uVar5 + mVar10;\n        goto LAB_00056c2c;\n      }\n      mVar9 = mVar7 * (uVar5 + 1) + mVar9;\n      mVar10 = mVar8 * (uVar5 + 1) + mVar10;\n    }\n    else {\n      mVar9 = mVar9 + mVar7;\n      mVar10 = mVar10 + mVar8;\n    }" if (parenthesized_expression "(uVar4 < uVar12)" ( (binary_expression "uVar4 < uVar12" identifier < identifier) )) (compound_statement "{\n      iVar6 = 0;\n      uVar11 = uVar4;\n      if ((int)uVar12 < 0) {\n        iVar6 = 1;\n        for (; -1 < (int)uVar11; uVar11 = uVar11 << 1) {\n          iVar6 = iVar6 + 1;\n        }\n        uVar5 = 0;\n        do {\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar5 << 1;\n          if (uVar11 <= uVar12) {\n            uVar12 = uVar12 - uVar11;\n            uVar5 = uVar5 | 1;\n          }\n          uVar11 = uVar11 >> 1;\n        } while (iVar6 != 0);\n      }\n      else {\n        do {\n          uVar3 = uVar11;\n          uVar11 = uVar3 << 1;\n          iVar6 = iVar6 + 1;\n        } while (uVar11 <= uVar12);\n        uVar5 = 0;\n        uVar3 = uVar3 & 0x7fffffff;\n        do {\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar5 << 1;\n          if (uVar3 <= uVar12) {\n            uVar12 = uVar12 - uVar3;\n            uVar5 = uVar5 | 1;\n          }\n          uVar3 = uVar3 >> 1;\n        } while (iVar6 != 0);\n      }\n      if (uVar12 < 0x20000) {\n        mVar9 = mVar7 * uVar5 + mVar9;\n        mVar10 = mVar8 * uVar5 + mVar10;\n        goto LAB_00056c2c;\n      }\n      mVar9 = mVar7 * (uVar5 + 1) + mVar9;\n      mVar10 = mVar8 * (uVar5 + 1) + mVar10;\n    }" { (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (expression_statement "uVar11 = uVar4;" (assignment_expression "uVar11 = uVar4" identifier = identifier) ;) (if_statement "if ((int)uVar12 < 0) {\n        iVar6 = 1;\n        for (; -1 < (int)uVar11; uVar11 = uVar11 << 1) {\n          iVar6 = iVar6 + 1;\n        }\n        uVar5 = 0;\n        do {\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar5 << 1;\n          if (uVar11 <= uVar12) {\n            uVar12 = uVar12 - uVar11;\n            uVar5 = uVar5 | 1;\n          }\n          uVar11 = uVar11 >> 1;\n        } while (iVar6 != 0);\n      }\n      else {\n        do {\n          uVar3 = uVar11;\n          uVar11 = uVar3 << 1;\n          iVar6 = iVar6 + 1;\n        } while (uVar11 <= uVar12);\n        uVar5 = 0;\n        uVar3 = uVar3 & 0x7fffffff;\n        do {\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar5 << 1;\n          if (uVar3 <= uVar12) {\n            uVar12 = uVar12 - uVar3;\n            uVar5 = uVar5 | 1;\n          }\n          uVar3 = uVar3 >> 1;\n        } while (iVar6 != 0);\n      }" if (parenthesized_expression "((int)uVar12 < 0)" ( (binary_expression "(int)uVar12 < 0" (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        iVar6 = 1;\n        for (; -1 < (int)uVar11; uVar11 = uVar11 << 1) {\n          iVar6 = iVar6 + 1;\n        }\n        uVar5 = 0;\n        do {\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar5 << 1;\n          if (uVar11 <= uVar12) {\n            uVar12 = uVar12 - uVar11;\n            uVar5 = uVar5 | 1;\n          }\n          uVar11 = uVar11 >> 1;\n        } while (iVar6 != 0);\n      }" { (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) (for_statement "for (; -1 < (int)uVar11; uVar11 = uVar11 << 1) {\n          iVar6 = iVar6 + 1;\n        }" for ( ; (binary_expression "-1 < (int)uVar11" number_literal < (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ; (assignment_expression "uVar11 = uVar11 << 1" identifier = (binary_expression "uVar11 << 1" identifier << number_literal)) ) (compound_statement "{\n          iVar6 = iVar6 + 1;\n        }" { (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (do_statement "do {\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar5 << 1;\n          if (uVar11 <= uVar12) {\n            uVar12 = uVar12 - uVar11;\n            uVar5 = uVar5 | 1;\n          }\n          uVar11 = uVar11 >> 1;\n        } while (iVar6 != 0);" do (compound_statement "{\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar5 << 1;\n          if (uVar11 <= uVar12) {\n            uVar12 = uVar12 - uVar11;\n            uVar5 = uVar5 | 1;\n          }\n          uVar11 = uVar11 >> 1;\n        }" { (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "uVar5 = uVar5 << 1;" (assignment_expression "uVar5 = uVar5 << 1" identifier = (binary_expression "uVar5 << 1" identifier << number_literal)) ;) (if_statement "if (uVar11 <= uVar12) {\n            uVar12 = uVar12 - uVar11;\n            uVar5 = uVar5 | 1;\n          }" if (parenthesized_expression "(uVar11 <= uVar12)" ( (binary_expression "uVar11 <= uVar12" identifier <= identifier) )) (compound_statement "{\n            uVar12 = uVar12 - uVar11;\n            uVar5 = uVar5 | 1;\n          }" { (expression_statement "uVar12 = uVar12 - uVar11;" (assignment_expression "uVar12 = uVar12 - uVar11" identifier = (binary_expression "uVar12 - uVar11" identifier - identifier)) ;) (expression_statement "uVar5 = uVar5 | 1;" (assignment_expression "uVar5 = uVar5 | 1" identifier = (binary_expression "uVar5 | 1" identifier | number_literal)) ;) })) (expression_statement "uVar11 = uVar11 >> 1;" (assignment_expression "uVar11 = uVar11 >> 1" identifier = (binary_expression "uVar11 >> 1" identifier >> number_literal)) ;) }) while (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) ;) }) (else_clause "else {\n        do {\n          uVar3 = uVar11;\n          uVar11 = uVar3 << 1;\n          iVar6 = iVar6 + 1;\n        } while (uVar11 <= uVar12);\n        uVar5 = 0;\n        uVar3 = uVar3 & 0x7fffffff;\n        do {\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar5 << 1;\n          if (uVar3 <= uVar12) {\n            uVar12 = uVar12 - uVar3;\n            uVar5 = uVar5 | 1;\n          }\n          uVar3 = uVar3 >> 1;\n        } while (iVar6 != 0);\n      }" else (compound_statement "{\n        do {\n          uVar3 = uVar11;\n          uVar11 = uVar3 << 1;\n          iVar6 = iVar6 + 1;\n        } while (uVar11 <= uVar12);\n        uVar5 = 0;\n        uVar3 = uVar3 & 0x7fffffff;\n        do {\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar5 << 1;\n          if (uVar3 <= uVar12) {\n            uVar12 = uVar12 - uVar3;\n            uVar5 = uVar5 | 1;\n          }\n          uVar3 = uVar3 >> 1;\n        } while (iVar6 != 0);\n      }" { (do_statement "do {\n          uVar3 = uVar11;\n          uVar11 = uVar3 << 1;\n          iVar6 = iVar6 + 1;\n        } while (uVar11 <= uVar12);" do (compound_statement "{\n          uVar3 = uVar11;\n          uVar11 = uVar3 << 1;\n          iVar6 = iVar6 + 1;\n        }" { (expression_statement "uVar3 = uVar11;" (assignment_expression "uVar3 = uVar11" identifier = identifier) ;) (expression_statement "uVar11 = uVar3 << 1;" (assignment_expression "uVar11 = uVar3 << 1" identifier = (binary_expression "uVar3 << 1" identifier << number_literal)) ;) (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar11 <= uVar12)" ( (binary_expression "uVar11 <= uVar12" identifier <= identifier) )) ;) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (expression_statement "uVar3 = uVar3 & 0x7fffffff;" (assignment_expression "uVar3 = uVar3 & 0x7fffffff" identifier = (binary_expression "uVar3 & 0x7fffffff" identifier & number_literal)) ;) (do_statement "do {\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar5 << 1;\n          if (uVar3 <= uVar12) {\n            uVar12 = uVar12 - uVar3;\n            uVar5 = uVar5 | 1;\n          }\n          uVar3 = uVar3 >> 1;\n        } while (iVar6 != 0);" do (compound_statement "{\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar5 << 1;\n          if (uVar3 <= uVar12) {\n            uVar12 = uVar12 - uVar3;\n            uVar5 = uVar5 | 1;\n          }\n          uVar3 = uVar3 >> 1;\n        }" { (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "uVar5 = uVar5 << 1;" (assignment_expression "uVar5 = uVar5 << 1" identifier = (binary_expression "uVar5 << 1" identifier << number_literal)) ;) (if_statement "if (uVar3 <= uVar12) {\n            uVar12 = uVar12 - uVar3;\n            uVar5 = uVar5 | 1;\n          }" if (parenthesized_expression "(uVar3 <= uVar12)" ( (binary_expression "uVar3 <= uVar12" identifier <= identifier) )) (compound_statement "{\n            uVar12 = uVar12 - uVar3;\n            uVar5 = uVar5 | 1;\n          }" { (expression_statement "uVar12 = uVar12 - uVar3;" (assignment_expression "uVar12 = uVar12 - uVar3" identifier = (binary_expression "uVar12 - uVar3" identifier - identifier)) ;) (expression_statement "uVar5 = uVar5 | 1;" (assignment_expression "uVar5 = uVar5 | 1" identifier = (binary_expression "uVar5 | 1" identifier | number_literal)) ;) })) (expression_statement "uVar3 = uVar3 >> 1;" (assignment_expression "uVar3 = uVar3 >> 1" identifier = (binary_expression "uVar3 >> 1" identifier >> number_literal)) ;) }) while (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) ;) }))) (if_statement "if (uVar12 < 0x20000) {\n        mVar9 = mVar7 * uVar5 + mVar9;\n        mVar10 = mVar8 * uVar5 + mVar10;\n        goto LAB_00056c2c;\n      }" if (parenthesized_expression "(uVar12 < 0x20000)" ( (binary_expression "uVar12 < 0x20000" identifier < number_literal) )) (compound_statement "{\n        mVar9 = mVar7 * uVar5 + mVar9;\n        mVar10 = mVar8 * uVar5 + mVar10;\n        goto LAB_00056c2c;\n      }" { (expression_statement "mVar9 = mVar7 * uVar5 + mVar9;" (assignment_expression "mVar9 = mVar7 * uVar5 + mVar9" identifier = (binary_expression "mVar7 * uVar5 + mVar9" (binary_expression "mVar7 * uVar5" identifier * identifier) + identifier)) ;) (expression_statement "mVar10 = mVar8 * uVar5 + mVar10;" (assignment_expression "mVar10 = mVar8 * uVar5 + mVar10" identifier = (binary_expression "mVar8 * uVar5 + mVar10" (binary_expression "mVar8 * uVar5" identifier * identifier) + identifier)) ;) (goto_statement "goto LAB_00056c2c;" goto statement_identifier ;) })) (expression_statement "mVar9 = mVar7 * (uVar5 + 1) + mVar9;" (assignment_expression "mVar9 = mVar7 * (uVar5 + 1) + mVar9" identifier = (binary_expression "mVar7 * (uVar5 + 1) + mVar9" (binary_expression "mVar7 * (uVar5 + 1)" identifier * (parenthesized_expression "(uVar5 + 1)" ( (binary_expression "uVar5 + 1" identifier + number_literal) ))) + identifier)) ;) (expression_statement "mVar10 = mVar8 * (uVar5 + 1) + mVar10;" (assignment_expression "mVar10 = mVar8 * (uVar5 + 1) + mVar10" identifier = (binary_expression "mVar8 * (uVar5 + 1) + mVar10" (binary_expression "mVar8 * (uVar5 + 1)" identifier * (parenthesized_expression "(uVar5 + 1)" ( (binary_expression "uVar5 + 1" identifier + number_literal) ))) + identifier)) ;) }) (else_clause "else {\n      mVar9 = mVar9 + mVar7;\n      mVar10 = mVar10 + mVar8;\n    }" else (compound_statement "{\n      mVar9 = mVar9 + mVar7;\n      mVar10 = mVar10 + mVar8;\n    }" { (expression_statement "mVar9 = mVar9 + mVar7;" (assignment_expression "mVar9 = mVar9 + mVar7" identifier = (binary_expression "mVar9 + mVar7" identifier + identifier)) ;) (expression_statement "mVar10 = mVar10 + mVar8;" (assignment_expression "mVar10 = mVar10 + mVar8" identifier = (binary_expression "mVar10 + mVar8" identifier + identifier)) ;) }))) (labeled_statement "LAB_00056cd4:\n    uVar4 = uVar4 - uVar12;" statement_identifier : (expression_statement "uVar4 = uVar4 - uVar12;" (assignment_expression "uVar4 = uVar4 - uVar12" identifier = (binary_expression "uVar4 - uVar12" identifier - identifier)) ;)) (if_statement "if (uVar4 < 0x20000) goto LAB_00056c2c;" if (parenthesized_expression "(uVar4 < 0x20000)" ( (binary_expression "uVar4 < 0x20000" identifier < number_literal) )) (goto_statement "goto LAB_00056c2c;" goto statement_identifier ;)) (if_statement "if (uVar12 < uVar4) {\n      iVar6 = 0;\n      uVar11 = uVar12;\n      if ((int)uVar4 < 0) {\n        iVar6 = 1;\n        for (; -1 < (int)uVar11; uVar11 = uVar11 << 1) {\n          iVar6 = iVar6 + 1;\n        }\n        uVar5 = 0;\n        do {\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar5 << 1;\n          if (uVar11 <= uVar4) {\n            uVar4 = uVar4 - uVar11;\n            uVar5 = uVar5 | 1;\n          }\n          uVar11 = uVar11 >> 1;\n        } while (iVar6 != 0);\n      }\n      else {\n        do {\n          uVar3 = uVar11;\n          uVar11 = uVar3 << 1;\n          iVar6 = iVar6 + 1;\n        } while (uVar11 <= uVar4);\n        uVar5 = 0;\n        uVar3 = uVar3 & 0x7fffffff;\n        do {\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar5 << 1;\n          if (uVar3 <= uVar4) {\n            uVar4 = uVar4 - uVar3;\n            uVar5 = uVar5 | 1;\n          }\n          uVar3 = uVar3 >> 1;\n        } while (iVar6 != 0);\n      }\n      if (uVar4 < 0x20000) {\n        mVar7 = mVar9 * uVar5 + mVar7;\n        mVar8 = mVar10 * uVar5 + mVar8;\n        goto LAB_00056c2c;\n      }\n      mVar7 = mVar9 * (uVar5 + 1) + mVar7;\n      mVar8 = mVar10 * (uVar5 + 1) + mVar8;\n    }\n    else {\n      mVar7 = mVar7 + mVar9;\n      mVar8 = mVar8 + mVar10;\n    }" if (parenthesized_expression "(uVar12 < uVar4)" ( (binary_expression "uVar12 < uVar4" identifier < identifier) )) (compound_statement "{\n      iVar6 = 0;\n      uVar11 = uVar12;\n      if ((int)uVar4 < 0) {\n        iVar6 = 1;\n        for (; -1 < (int)uVar11; uVar11 = uVar11 << 1) {\n          iVar6 = iVar6 + 1;\n        }\n        uVar5 = 0;\n        do {\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar5 << 1;\n          if (uVar11 <= uVar4) {\n            uVar4 = uVar4 - uVar11;\n            uVar5 = uVar5 | 1;\n          }\n          uVar11 = uVar11 >> 1;\n        } while (iVar6 != 0);\n      }\n      else {\n        do {\n          uVar3 = uVar11;\n          uVar11 = uVar3 << 1;\n          iVar6 = iVar6 + 1;\n        } while (uVar11 <= uVar4);\n        uVar5 = 0;\n        uVar3 = uVar3 & 0x7fffffff;\n        do {\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar5 << 1;\n          if (uVar3 <= uVar4) {\n            uVar4 = uVar4 - uVar3;\n            uVar5 = uVar5 | 1;\n          }\n          uVar3 = uVar3 >> 1;\n        } while (iVar6 != 0);\n      }\n      if (uVar4 < 0x20000) {\n        mVar7 = mVar9 * uVar5 + mVar7;\n        mVar8 = mVar10 * uVar5 + mVar8;\n        goto LAB_00056c2c;\n      }\n      mVar7 = mVar9 * (uVar5 + 1) + mVar7;\n      mVar8 = mVar10 * (uVar5 + 1) + mVar8;\n    }" { (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (expression_statement "uVar11 = uVar12;" (assignment_expression "uVar11 = uVar12" identifier = identifier) ;) (if_statement "if ((int)uVar4 < 0) {\n        iVar6 = 1;\n        for (; -1 < (int)uVar11; uVar11 = uVar11 << 1) {\n          iVar6 = iVar6 + 1;\n        }\n        uVar5 = 0;\n        do {\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar5 << 1;\n          if (uVar11 <= uVar4) {\n            uVar4 = uVar4 - uVar11;\n            uVar5 = uVar5 | 1;\n          }\n          uVar11 = uVar11 >> 1;\n        } while (iVar6 != 0);\n      }\n      else {\n        do {\n          uVar3 = uVar11;\n          uVar11 = uVar3 << 1;\n          iVar6 = iVar6 + 1;\n        } while (uVar11 <= uVar4);\n        uVar5 = 0;\n        uVar3 = uVar3 & 0x7fffffff;\n        do {\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar5 << 1;\n          if (uVar3 <= uVar4) {\n            uVar4 = uVar4 - uVar3;\n            uVar5 = uVar5 | 1;\n          }\n          uVar3 = uVar3 >> 1;\n        } while (iVar6 != 0);\n      }" if (parenthesized_expression "((int)uVar4 < 0)" ( (binary_expression "(int)uVar4 < 0" (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        iVar6 = 1;\n        for (; -1 < (int)uVar11; uVar11 = uVar11 << 1) {\n          iVar6 = iVar6 + 1;\n        }\n        uVar5 = 0;\n        do {\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar5 << 1;\n          if (uVar11 <= uVar4) {\n            uVar4 = uVar4 - uVar11;\n            uVar5 = uVar5 | 1;\n          }\n          uVar11 = uVar11 >> 1;\n        } while (iVar6 != 0);\n      }" { (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) (for_statement "for (; -1 < (int)uVar11; uVar11 = uVar11 << 1) {\n          iVar6 = iVar6 + 1;\n        }" for ( ; (binary_expression "-1 < (int)uVar11" number_literal < (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ; (assignment_expression "uVar11 = uVar11 << 1" identifier = (binary_expression "uVar11 << 1" identifier << number_literal)) ) (compound_statement "{\n          iVar6 = iVar6 + 1;\n        }" { (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (do_statement "do {\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar5 << 1;\n          if (uVar11 <= uVar4) {\n            uVar4 = uVar4 - uVar11;\n            uVar5 = uVar5 | 1;\n          }\n          uVar11 = uVar11 >> 1;\n        } while (iVar6 != 0);" do (compound_statement "{\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar5 << 1;\n          if (uVar11 <= uVar4) {\n            uVar4 = uVar4 - uVar11;\n            uVar5 = uVar5 | 1;\n          }\n          uVar11 = uVar11 >> 1;\n        }" { (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "uVar5 = uVar5 << 1;" (assignment_expression "uVar5 = uVar5 << 1" identifier = (binary_expression "uVar5 << 1" identifier << number_literal)) ;) (if_statement "if (uVar11 <= uVar4) {\n            uVar4 = uVar4 - uVar11;\n            uVar5 = uVar5 | 1;\n          }" if (parenthesized_expression "(uVar11 <= uVar4)" ( (binary_expression "uVar11 <= uVar4" identifier <= identifier) )) (compound_statement "{\n            uVar4 = uVar4 - uVar11;\n            uVar5 = uVar5 | 1;\n          }" { (expression_statement "uVar4 = uVar4 - uVar11;" (assignment_expression "uVar4 = uVar4 - uVar11" identifier = (binary_expression "uVar4 - uVar11" identifier - identifier)) ;) (expression_statement "uVar5 = uVar5 | 1;" (assignment_expression "uVar5 = uVar5 | 1" identifier = (binary_expression "uVar5 | 1" identifier | number_literal)) ;) })) (expression_statement "uVar11 = uVar11 >> 1;" (assignment_expression "uVar11 = uVar11 >> 1" identifier = (binary_expression "uVar11 >> 1" identifier >> number_literal)) ;) }) while (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) ;) }) (else_clause "else {\n        do {\n          uVar3 = uVar11;\n          uVar11 = uVar3 << 1;\n          iVar6 = iVar6 + 1;\n        } while (uVar11 <= uVar4);\n        uVar5 = 0;\n        uVar3 = uVar3 & 0x7fffffff;\n        do {\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar5 << 1;\n          if (uVar3 <= uVar4) {\n            uVar4 = uVar4 - uVar3;\n            uVar5 = uVar5 | 1;\n          }\n          uVar3 = uVar3 >> 1;\n        } while (iVar6 != 0);\n      }" else (compound_statement "{\n        do {\n          uVar3 = uVar11;\n          uVar11 = uVar3 << 1;\n          iVar6 = iVar6 + 1;\n        } while (uVar11 <= uVar4);\n        uVar5 = 0;\n        uVar3 = uVar3 & 0x7fffffff;\n        do {\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar5 << 1;\n          if (uVar3 <= uVar4) {\n            uVar4 = uVar4 - uVar3;\n            uVar5 = uVar5 | 1;\n          }\n          uVar3 = uVar3 >> 1;\n        } while (iVar6 != 0);\n      }" { (do_statement "do {\n          uVar3 = uVar11;\n          uVar11 = uVar3 << 1;\n          iVar6 = iVar6 + 1;\n        } while (uVar11 <= uVar4);" do (compound_statement "{\n          uVar3 = uVar11;\n          uVar11 = uVar3 << 1;\n          iVar6 = iVar6 + 1;\n        }" { (expression_statement "uVar3 = uVar11;" (assignment_expression "uVar3 = uVar11" identifier = identifier) ;) (expression_statement "uVar11 = uVar3 << 1;" (assignment_expression "uVar11 = uVar3 << 1" identifier = (binary_expression "uVar3 << 1" identifier << number_literal)) ;) (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar11 <= uVar4)" ( (binary_expression "uVar11 <= uVar4" identifier <= identifier) )) ;) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (expression_statement "uVar3 = uVar3 & 0x7fffffff;" (assignment_expression "uVar3 = uVar3 & 0x7fffffff" identifier = (binary_expression "uVar3 & 0x7fffffff" identifier & number_literal)) ;) (do_statement "do {\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar5 << 1;\n          if (uVar3 <= uVar4) {\n            uVar4 = uVar4 - uVar3;\n            uVar5 = uVar5 | 1;\n          }\n          uVar3 = uVar3 >> 1;\n        } while (iVar6 != 0);" do (compound_statement "{\n          iVar6 = iVar6 + -1;\n          uVar5 = uVar5 << 1;\n          if (uVar3 <= uVar4) {\n            uVar4 = uVar4 - uVar3;\n            uVar5 = uVar5 | 1;\n          }\n          uVar3 = uVar3 >> 1;\n        }" { (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "uVar5 = uVar5 << 1;" (assignment_expression "uVar5 = uVar5 << 1" identifier = (binary_expression "uVar5 << 1" identifier << number_literal)) ;) (if_statement "if (uVar3 <= uVar4) {\n            uVar4 = uVar4 - uVar3;\n            uVar5 = uVar5 | 1;\n          }" if (parenthesized_expression "(uVar3 <= uVar4)" ( (binary_expression "uVar3 <= uVar4" identifier <= identifier) )) (compound_statement "{\n            uVar4 = uVar4 - uVar3;\n            uVar5 = uVar5 | 1;\n          }" { (expression_statement "uVar4 = uVar4 - uVar3;" (assignment_expression "uVar4 = uVar4 - uVar3" identifier = (binary_expression "uVar4 - uVar3" identifier - identifier)) ;) (expression_statement "uVar5 = uVar5 | 1;" (assignment_expression "uVar5 = uVar5 | 1" identifier = (binary_expression "uVar5 | 1" identifier | number_literal)) ;) })) (expression_statement "uVar3 = uVar3 >> 1;" (assignment_expression "uVar3 = uVar3 >> 1" identifier = (binary_expression "uVar3 >> 1" identifier >> number_literal)) ;) }) while (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) ;) }))) (if_statement "if (uVar4 < 0x20000) {\n        mVar7 = mVar9 * uVar5 + mVar7;\n        mVar8 = mVar10 * uVar5 + mVar8;\n        goto LAB_00056c2c;\n      }" if (parenthesized_expression "(uVar4 < 0x20000)" ( (binary_expression "uVar4 < 0x20000" identifier < number_literal) )) (compound_statement "{\n        mVar7 = mVar9 * uVar5 + mVar7;\n        mVar8 = mVar10 * uVar5 + mVar8;\n        goto LAB_00056c2c;\n      }" { (expression_statement "mVar7 = mVar9 * uVar5 + mVar7;" (assignment_expression "mVar7 = mVar9 * uVar5 + mVar7" identifier = (binary_expression "mVar9 * uVar5 + mVar7" (binary_expression "mVar9 * uVar5" identifier * identifier) + identifier)) ;) (expression_statement "mVar8 = mVar10 * uVar5 + mVar8;" (assignment_expression "mVar8 = mVar10 * uVar5 + mVar8" identifier = (binary_expression "mVar10 * uVar5 + mVar8" (binary_expression "mVar10 * uVar5" identifier * identifier) + identifier)) ;) (goto_statement "goto LAB_00056c2c;" goto statement_identifier ;) })) (expression_statement "mVar7 = mVar9 * (uVar5 + 1) + mVar7;" (assignment_expression "mVar7 = mVar9 * (uVar5 + 1) + mVar7" identifier = (binary_expression "mVar9 * (uVar5 + 1) + mVar7" (binary_expression "mVar9 * (uVar5 + 1)" identifier * (parenthesized_expression "(uVar5 + 1)" ( (binary_expression "uVar5 + 1" identifier + number_literal) ))) + identifier)) ;) (expression_statement "mVar8 = mVar10 * (uVar5 + 1) + mVar8;" (assignment_expression "mVar8 = mVar10 * (uVar5 + 1) + mVar8" identifier = (binary_expression "mVar10 * (uVar5 + 1) + mVar8" (binary_expression "mVar10 * (uVar5 + 1)" identifier * (parenthesized_expression "(uVar5 + 1)" ( (binary_expression "uVar5 + 1" identifier + number_literal) ))) + identifier)) ;) }) (else_clause "else {\n      mVar7 = mVar7 + mVar9;\n      mVar8 = mVar8 + mVar10;\n    }" else (compound_statement "{\n      mVar7 = mVar7 + mVar9;\n      mVar8 = mVar8 + mVar10;\n    }" { (expression_statement "mVar7 = mVar7 + mVar9;" (assignment_expression "mVar7 = mVar7 + mVar9" identifier = (binary_expression "mVar7 + mVar9" identifier + identifier)) ;) (expression_statement "mVar8 = mVar8 + mVar10;" (assignment_expression "mVar8 = mVar8 + mVar10" identifier = (binary_expression "mVar8 + mVar10" identifier + identifier)) ;) }))) (goto_statement "goto LAB_00056cfc;" goto statement_identifier ;) })) (labeled_statement "LAB_00056c2c:\n  M->u[0][0] = mVar9;" statement_identifier : (expression_statement "M->u[0][0] = mVar9;" (assignment_expression "M->u[0][0] = mVar9" (subscript_expression "M->u[0][0]" (subscript_expression "M->u[0]" (field_expression "M->u" identifier -> field_identifier) [ number_literal ]) [ number_literal ]) = identifier) ;)) (expression_statement "M->u[0][1] = mVar7;" (assignment_expression "M->u[0][1] = mVar7" (subscript_expression "M->u[0][1]" (subscript_expression "M->u[0]" (field_expression "M->u" identifier -> field_identifier) [ number_literal ]) [ number_literal ]) = identifier) ;) (expression_statement "M->u[1][0] = mVar10;" (assignment_expression "M->u[1][0] = mVar10" (subscript_expression "M->u[1][0]" (subscript_expression "M->u[1]" (field_expression "M->u" identifier -> field_identifier) [ number_literal ]) [ number_literal ]) = identifier) ;) (expression_statement "M->u[1][1] = mVar8;" (assignment_expression "M->u[1][1] = mVar8" (subscript_expression "M->u[1][1]" (subscript_expression "M->u[1]" (field_expression "M->u" identifier -> field_identifier) [ number_literal ]) [ number_literal ]) = identifier) ;) (return_statement "return 1;" return number_literal ;) })))
(translation_unit "undefined4 __gmpn_hgcd2(uint param_1,uint param_2,uint param_3,uint param_4,int *param_5)\n\n{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  \n  if ((param_1 < 2) || (param_3 < 2)) {\n    return 0;\n  }\n  if ((param_3 < param_1) || ((param_1 == param_3 && (param_4 < param_2 != 0)))) {\n    param_1 = (param_1 - param_3) - (uint)(param_2 < param_4);\n    param_2 = param_2 - param_4;\n    if (param_1 < 2) {\n      return 0;\n    }\n    iVar9 = 0;\n    iVar6 = 1;\n    iVar7 = 1;\n    iVar8 = 1;\n    if (param_1 < param_3) goto LAB_00056c80;\n  }\n  else {\n    param_3 = param_3 - ((param_4 < param_2) + param_1);\n    param_4 = param_4 - param_2;\n    if (param_3 < 2) {\n      return 0;\n    }\n    iVar9 = 1;\n    iVar6 = 0;\n    iVar7 = 1;\n    iVar8 = 1;\n    if (param_1 < param_3) goto LAB_00056c80;\n  }\n  while (param_1 != param_3) {\n    if (param_1 < 0x10000) {\n      uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;\n      uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;\n      goto LAB_00056cd4;\n    }\n    param_1 = (param_1 - param_3) - (uint)(param_2 < param_4);\n    if (param_1 < 2) break;\n    param_2 = param_2 - param_4;\n    iVar5 = iVar8;\n    iVar1 = iVar9;\n    if (param_3 < param_1) {\n      iVar5 = 0;\n      uVar3 = param_3;\n      uVar11 = param_4;\n      if ((int)param_1 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar2 = 0;\n        do {\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056f78:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((param_1 == uVar3) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056f78;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar10 = uVar11 >> 0x1f;\n            uVar11 = uVar11 << 1;\n            uVar3 = uVar10 | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n          } while (uVar3 < param_1);\n          uVar2 = 0;\n          uVar4 = uVar3;\n        } while ((param_1 == uVar3) && (uVar4 = uVar10, uVar11 <= param_2));\n        do {\n          uVar3 = uVar3 >> 1;\n          uVar11 = uVar4 << 0x1f | uVar11 >> 1;\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056eac:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((uVar3 == param_1) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056eac;\n          }\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar3;\n        } while (iVar5 != 0);\n      }\n      if (param_1 < 2) {\n        iVar6 = iVar8 * uVar2 + iVar6;\n        iVar7 = iVar9 * uVar2 + iVar7;\n        break;\n      }\n      iVar5 = iVar8 * (uVar2 + 1);\n      iVar1 = iVar9 * (uVar2 + 1);\n    }\n    iVar7 = iVar7 + iVar1;\n    iVar6 = iVar6 + iVar5;\n    if (param_1 == param_3) break;\nLAB_00056c80:\n    if (param_3 < 0x10000) {\n      uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;\n      uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;\n      goto LAB_00056cfc;\n    }\n    param_3 = (param_3 - param_1) - (uint)(param_4 < param_2);\n    if (param_3 < 2) break;\n    param_4 = param_4 - param_2;\n    if (param_1 < param_3) {\n      iVar5 = 0;\n      uVar3 = param_1;\n      uVar11 = param_2;\n      if ((int)param_3 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar10 = 0;\n        do {\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar4 = (uint)(param_4 < uVar11);\nLAB_00057068:\n            param_4 = param_4 - uVar11;\n            param_3 = (param_3 - uVar3) - uVar4;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((param_3 == uVar3) && (uVar11 <= param_4)) {\n            uVar4 = 0;\n            goto LAB_00057068;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar4 = uVar11 << 1;\n            uVar3 = uVar11 >> 0x1f | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n            uVar11 = uVar4;\n          } while (uVar3 < param_3);\n        } while ((param_3 == uVar3) && (uVar4 <= param_4));\n        uVar10 = 0;\n        do {\n          uVar11 = uVar3 << 0x1f;\n          uVar3 = uVar3 >> 1;\n          uVar4 = uVar11 | uVar4 >> 1;\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar11 = (uint)(param_4 < uVar4);\nLAB_00056df4:\n            param_4 = param_4 - uVar4;\n            param_3 = (param_3 - uVar3) - uVar11;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((uVar3 == param_3) && (uVar4 <= param_4)) {\n            uVar11 = 0;\n            goto LAB_00056df4;\n          }\n          iVar5 = iVar5 + -1;\n        } while (iVar5 != 0);\n      }\n      if (param_3 < 2) {\n        iVar8 = uVar10 * iVar6 + iVar8;\n        iVar9 = uVar10 * iVar7 + iVar9;\n        break;\n      }\n      iVar8 = (uVar10 + 1) * iVar6 + iVar8;\n      iVar9 = (uVar10 + 1) * iVar7 + iVar9;\n    }\n    else {\n      iVar8 = iVar8 + iVar6;\n      iVar9 = iVar9 + iVar7;\n    }\n  }\n  goto LAB_00056c2c;\nLAB_00056cfc:\n  uVar11 = uVar11 - uVar3;\n  if (0x1ffff < uVar11) {\n    if (uVar3 < uVar11) {\n      iVar5 = 0;\n      uVar10 = uVar3;\n      if ((int)uVar11 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar11) {\n            uVar11 = uVar11 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar11);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar11) {\n            uVar11 = uVar11 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }\n      if (uVar11 < 0x20000) {\n        iVar8 = iVar6 * uVar4 + iVar8;\n        iVar9 = iVar7 * uVar4 + iVar9;\n        goto LAB_00056c2c;\n      }\n      iVar8 = iVar6 * (uVar4 + 1) + iVar8;\n      iVar9 = iVar7 * (uVar4 + 1) + iVar9;\n    }\n    else {\n      iVar8 = iVar8 + iVar6;\n      iVar9 = iVar9 + iVar7;\n    }\nLAB_00056cd4:\n    uVar3 = uVar3 - uVar11;\n    if (uVar3 < 0x20000) goto LAB_00056c2c;\n    if (uVar11 < uVar3) {\n      iVar5 = 0;\n      uVar10 = uVar11;\n      if ((int)uVar3 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar3) {\n            uVar3 = uVar3 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar3);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar3) {\n            uVar3 = uVar3 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }\n      if (uVar3 < 0x20000) {\n        iVar6 = iVar8 * uVar4 + iVar6;\n        iVar7 = iVar9 * uVar4 + iVar7;\n        goto LAB_00056c2c;\n      }\n      iVar6 = iVar8 * (uVar4 + 1) + iVar6;\n      iVar7 = iVar9 * (uVar4 + 1) + iVar7;\n    }\n    else {\n      iVar6 = iVar6 + iVar8;\n      iVar7 = iVar7 + iVar9;\n    }\n    goto LAB_00056cfc;\n  }\nLAB_00056c2c:\n  *param_5 = iVar8;\n  param_5[1] = iVar6;\n  param_5[2] = iVar9;\n  param_5[3] = iVar7;\n  return 1;\n}\n\n" (function_definition "undefined4 __gmpn_hgcd2(uint param_1,uint param_2,uint param_3,uint param_4,int *param_5)\n\n{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  \n  if ((param_1 < 2) || (param_3 < 2)) {\n    return 0;\n  }\n  if ((param_3 < param_1) || ((param_1 == param_3 && (param_4 < param_2 != 0)))) {\n    param_1 = (param_1 - param_3) - (uint)(param_2 < param_4);\n    param_2 = param_2 - param_4;\n    if (param_1 < 2) {\n      return 0;\n    }\n    iVar9 = 0;\n    iVar6 = 1;\n    iVar7 = 1;\n    iVar8 = 1;\n    if (param_1 < param_3) goto LAB_00056c80;\n  }\n  else {\n    param_3 = param_3 - ((param_4 < param_2) + param_1);\n    param_4 = param_4 - param_2;\n    if (param_3 < 2) {\n      return 0;\n    }\n    iVar9 = 1;\n    iVar6 = 0;\n    iVar7 = 1;\n    iVar8 = 1;\n    if (param_1 < param_3) goto LAB_00056c80;\n  }\n  while (param_1 != param_3) {\n    if (param_1 < 0x10000) {\n      uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;\n      uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;\n      goto LAB_00056cd4;\n    }\n    param_1 = (param_1 - param_3) - (uint)(param_2 < param_4);\n    if (param_1 < 2) break;\n    param_2 = param_2 - param_4;\n    iVar5 = iVar8;\n    iVar1 = iVar9;\n    if (param_3 < param_1) {\n      iVar5 = 0;\n      uVar3 = param_3;\n      uVar11 = param_4;\n      if ((int)param_1 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar2 = 0;\n        do {\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056f78:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((param_1 == uVar3) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056f78;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar10 = uVar11 >> 0x1f;\n            uVar11 = uVar11 << 1;\n            uVar3 = uVar10 | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n          } while (uVar3 < param_1);\n          uVar2 = 0;\n          uVar4 = uVar3;\n        } while ((param_1 == uVar3) && (uVar4 = uVar10, uVar11 <= param_2));\n        do {\n          uVar3 = uVar3 >> 1;\n          uVar11 = uVar4 << 0x1f | uVar11 >> 1;\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056eac:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((uVar3 == param_1) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056eac;\n          }\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar3;\n        } while (iVar5 != 0);\n      }\n      if (param_1 < 2) {\n        iVar6 = iVar8 * uVar2 + iVar6;\n        iVar7 = iVar9 * uVar2 + iVar7;\n        break;\n      }\n      iVar5 = iVar8 * (uVar2 + 1);\n      iVar1 = iVar9 * (uVar2 + 1);\n    }\n    iVar7 = iVar7 + iVar1;\n    iVar6 = iVar6 + iVar5;\n    if (param_1 == param_3) break;\nLAB_00056c80:\n    if (param_3 < 0x10000) {\n      uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;\n      uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;\n      goto LAB_00056cfc;\n    }\n    param_3 = (param_3 - param_1) - (uint)(param_4 < param_2);\n    if (param_3 < 2) break;\n    param_4 = param_4 - param_2;\n    if (param_1 < param_3) {\n      iVar5 = 0;\n      uVar3 = param_1;\n      uVar11 = param_2;\n      if ((int)param_3 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar10 = 0;\n        do {\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar4 = (uint)(param_4 < uVar11);\nLAB_00057068:\n            param_4 = param_4 - uVar11;\n            param_3 = (param_3 - uVar3) - uVar4;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((param_3 == uVar3) && (uVar11 <= param_4)) {\n            uVar4 = 0;\n            goto LAB_00057068;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar4 = uVar11 << 1;\n            uVar3 = uVar11 >> 0x1f | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n            uVar11 = uVar4;\n          } while (uVar3 < param_3);\n        } while ((param_3 == uVar3) && (uVar4 <= param_4));\n        uVar10 = 0;\n        do {\n          uVar11 = uVar3 << 0x1f;\n          uVar3 = uVar3 >> 1;\n          uVar4 = uVar11 | uVar4 >> 1;\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar11 = (uint)(param_4 < uVar4);\nLAB_00056df4:\n            param_4 = param_4 - uVar4;\n            param_3 = (param_3 - uVar3) - uVar11;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((uVar3 == param_3) && (uVar4 <= param_4)) {\n            uVar11 = 0;\n            goto LAB_00056df4;\n          }\n          iVar5 = iVar5 + -1;\n        } while (iVar5 != 0);\n      }\n      if (param_3 < 2) {\n        iVar8 = uVar10 * iVar6 + iVar8;\n        iVar9 = uVar10 * iVar7 + iVar9;\n        break;\n      }\n      iVar8 = (uVar10 + 1) * iVar6 + iVar8;\n      iVar9 = (uVar10 + 1) * iVar7 + iVar9;\n    }\n    else {\n      iVar8 = iVar8 + iVar6;\n      iVar9 = iVar9 + iVar7;\n    }\n  }\n  goto LAB_00056c2c;\nLAB_00056cfc:\n  uVar11 = uVar11 - uVar3;\n  if (0x1ffff < uVar11) {\n    if (uVar3 < uVar11) {\n      iVar5 = 0;\n      uVar10 = uVar3;\n      if ((int)uVar11 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar11) {\n            uVar11 = uVar11 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar11);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar11) {\n            uVar11 = uVar11 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }\n      if (uVar11 < 0x20000) {\n        iVar8 = iVar6 * uVar4 + iVar8;\n        iVar9 = iVar7 * uVar4 + iVar9;\n        goto LAB_00056c2c;\n      }\n      iVar8 = iVar6 * (uVar4 + 1) + iVar8;\n      iVar9 = iVar7 * (uVar4 + 1) + iVar9;\n    }\n    else {\n      iVar8 = iVar8 + iVar6;\n      iVar9 = iVar9 + iVar7;\n    }\nLAB_00056cd4:\n    uVar3 = uVar3 - uVar11;\n    if (uVar3 < 0x20000) goto LAB_00056c2c;\n    if (uVar11 < uVar3) {\n      iVar5 = 0;\n      uVar10 = uVar11;\n      if ((int)uVar3 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar3) {\n            uVar3 = uVar3 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar3);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar3) {\n            uVar3 = uVar3 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }\n      if (uVar3 < 0x20000) {\n        iVar6 = iVar8 * uVar4 + iVar6;\n        iVar7 = iVar9 * uVar4 + iVar7;\n        goto LAB_00056c2c;\n      }\n      iVar6 = iVar8 * (uVar4 + 1) + iVar6;\n      iVar7 = iVar9 * (uVar4 + 1) + iVar7;\n    }\n    else {\n      iVar6 = iVar6 + iVar8;\n      iVar7 = iVar7 + iVar9;\n    }\n    goto LAB_00056cfc;\n  }\nLAB_00056c2c:\n  *param_5 = iVar8;\n  param_5[1] = iVar6;\n  param_5[2] = iVar9;\n  param_5[3] = iVar7;\n  return 1;\n}" type_identifier (function_declarator "__gmpn_hgcd2(uint param_1,uint param_2,uint param_3,uint param_4,int *param_5)" identifier (parameter_list "(uint param_1,uint param_2,uint param_3,uint param_4,int *param_5)" ( (parameter_declaration "uint param_1" type_identifier identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "uint param_4" type_identifier identifier) , (parameter_declaration "int *param_5" primitive_type (pointer_declarator "*param_5" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  \n  if ((param_1 < 2) || (param_3 < 2)) {\n    return 0;\n  }\n  if ((param_3 < param_1) || ((param_1 == param_3 && (param_4 < param_2 != 0)))) {\n    param_1 = (param_1 - param_3) - (uint)(param_2 < param_4);\n    param_2 = param_2 - param_4;\n    if (param_1 < 2) {\n      return 0;\n    }\n    iVar9 = 0;\n    iVar6 = 1;\n    iVar7 = 1;\n    iVar8 = 1;\n    if (param_1 < param_3) goto LAB_00056c80;\n  }\n  else {\n    param_3 = param_3 - ((param_4 < param_2) + param_1);\n    param_4 = param_4 - param_2;\n    if (param_3 < 2) {\n      return 0;\n    }\n    iVar9 = 1;\n    iVar6 = 0;\n    iVar7 = 1;\n    iVar8 = 1;\n    if (param_1 < param_3) goto LAB_00056c80;\n  }\n  while (param_1 != param_3) {\n    if (param_1 < 0x10000) {\n      uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;\n      uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;\n      goto LAB_00056cd4;\n    }\n    param_1 = (param_1 - param_3) - (uint)(param_2 < param_4);\n    if (param_1 < 2) break;\n    param_2 = param_2 - param_4;\n    iVar5 = iVar8;\n    iVar1 = iVar9;\n    if (param_3 < param_1) {\n      iVar5 = 0;\n      uVar3 = param_3;\n      uVar11 = param_4;\n      if ((int)param_1 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar2 = 0;\n        do {\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056f78:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((param_1 == uVar3) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056f78;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar10 = uVar11 >> 0x1f;\n            uVar11 = uVar11 << 1;\n            uVar3 = uVar10 | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n          } while (uVar3 < param_1);\n          uVar2 = 0;\n          uVar4 = uVar3;\n        } while ((param_1 == uVar3) && (uVar4 = uVar10, uVar11 <= param_2));\n        do {\n          uVar3 = uVar3 >> 1;\n          uVar11 = uVar4 << 0x1f | uVar11 >> 1;\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056eac:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((uVar3 == param_1) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056eac;\n          }\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar3;\n        } while (iVar5 != 0);\n      }\n      if (param_1 < 2) {\n        iVar6 = iVar8 * uVar2 + iVar6;\n        iVar7 = iVar9 * uVar2 + iVar7;\n        break;\n      }\n      iVar5 = iVar8 * (uVar2 + 1);\n      iVar1 = iVar9 * (uVar2 + 1);\n    }\n    iVar7 = iVar7 + iVar1;\n    iVar6 = iVar6 + iVar5;\n    if (param_1 == param_3) break;\nLAB_00056c80:\n    if (param_3 < 0x10000) {\n      uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;\n      uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;\n      goto LAB_00056cfc;\n    }\n    param_3 = (param_3 - param_1) - (uint)(param_4 < param_2);\n    if (param_3 < 2) break;\n    param_4 = param_4 - param_2;\n    if (param_1 < param_3) {\n      iVar5 = 0;\n      uVar3 = param_1;\n      uVar11 = param_2;\n      if ((int)param_3 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar10 = 0;\n        do {\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar4 = (uint)(param_4 < uVar11);\nLAB_00057068:\n            param_4 = param_4 - uVar11;\n            param_3 = (param_3 - uVar3) - uVar4;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((param_3 == uVar3) && (uVar11 <= param_4)) {\n            uVar4 = 0;\n            goto LAB_00057068;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar4 = uVar11 << 1;\n            uVar3 = uVar11 >> 0x1f | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n            uVar11 = uVar4;\n          } while (uVar3 < param_3);\n        } while ((param_3 == uVar3) && (uVar4 <= param_4));\n        uVar10 = 0;\n        do {\n          uVar11 = uVar3 << 0x1f;\n          uVar3 = uVar3 >> 1;\n          uVar4 = uVar11 | uVar4 >> 1;\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar11 = (uint)(param_4 < uVar4);\nLAB_00056df4:\n            param_4 = param_4 - uVar4;\n            param_3 = (param_3 - uVar3) - uVar11;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((uVar3 == param_3) && (uVar4 <= param_4)) {\n            uVar11 = 0;\n            goto LAB_00056df4;\n          }\n          iVar5 = iVar5 + -1;\n        } while (iVar5 != 0);\n      }\n      if (param_3 < 2) {\n        iVar8 = uVar10 * iVar6 + iVar8;\n        iVar9 = uVar10 * iVar7 + iVar9;\n        break;\n      }\n      iVar8 = (uVar10 + 1) * iVar6 + iVar8;\n      iVar9 = (uVar10 + 1) * iVar7 + iVar9;\n    }\n    else {\n      iVar8 = iVar8 + iVar6;\n      iVar9 = iVar9 + iVar7;\n    }\n  }\n  goto LAB_00056c2c;\nLAB_00056cfc:\n  uVar11 = uVar11 - uVar3;\n  if (0x1ffff < uVar11) {\n    if (uVar3 < uVar11) {\n      iVar5 = 0;\n      uVar10 = uVar3;\n      if ((int)uVar11 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar11) {\n            uVar11 = uVar11 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar11);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar11) {\n            uVar11 = uVar11 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }\n      if (uVar11 < 0x20000) {\n        iVar8 = iVar6 * uVar4 + iVar8;\n        iVar9 = iVar7 * uVar4 + iVar9;\n        goto LAB_00056c2c;\n      }\n      iVar8 = iVar6 * (uVar4 + 1) + iVar8;\n      iVar9 = iVar7 * (uVar4 + 1) + iVar9;\n    }\n    else {\n      iVar8 = iVar8 + iVar6;\n      iVar9 = iVar9 + iVar7;\n    }\nLAB_00056cd4:\n    uVar3 = uVar3 - uVar11;\n    if (uVar3 < 0x20000) goto LAB_00056c2c;\n    if (uVar11 < uVar3) {\n      iVar5 = 0;\n      uVar10 = uVar11;\n      if ((int)uVar3 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar3) {\n            uVar3 = uVar3 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar3);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar3) {\n            uVar3 = uVar3 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }\n      if (uVar3 < 0x20000) {\n        iVar6 = iVar8 * uVar4 + iVar6;\n        iVar7 = iVar9 * uVar4 + iVar7;\n        goto LAB_00056c2c;\n      }\n      iVar6 = iVar8 * (uVar4 + 1) + iVar6;\n      iVar7 = iVar9 * (uVar4 + 1) + iVar7;\n    }\n    else {\n      iVar6 = iVar6 + iVar8;\n      iVar7 = iVar7 + iVar9;\n    }\n    goto LAB_00056cfc;\n  }\nLAB_00056c2c:\n  *param_5 = iVar8;\n  param_5[1] = iVar6;\n  param_5[2] = iVar9;\n  param_5[3] = iVar7;\n  return 1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier 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 "int iVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (if_statement "if ((param_1 < 2) || (param_3 < 2)) {\n    return 0;\n  }" if (parenthesized_expression "((param_1 < 2) || (param_3 < 2))" ( (binary_expression "(param_1 < 2) || (param_3 < 2)" (parenthesized_expression "(param_1 < 2)" ( (binary_expression "param_1 < 2" identifier < number_literal) )) || (parenthesized_expression "(param_3 < 2)" ( (binary_expression "param_3 < 2" identifier < number_literal) ))) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((param_3 < param_1) || ((param_1 == param_3 && (param_4 < param_2 != 0)))) {\n    param_1 = (param_1 - param_3) - (uint)(param_2 < param_4);\n    param_2 = param_2 - param_4;\n    if (param_1 < 2) {\n      return 0;\n    }\n    iVar9 = 0;\n    iVar6 = 1;\n    iVar7 = 1;\n    iVar8 = 1;\n    if (param_1 < param_3) goto LAB_00056c80;\n  }\n  else {\n    param_3 = param_3 - ((param_4 < param_2) + param_1);\n    param_4 = param_4 - param_2;\n    if (param_3 < 2) {\n      return 0;\n    }\n    iVar9 = 1;\n    iVar6 = 0;\n    iVar7 = 1;\n    iVar8 = 1;\n    if (param_1 < param_3) goto LAB_00056c80;\n  }" if (parenthesized_expression "((param_3 < param_1) || ((param_1 == param_3 && (param_4 < param_2 != 0))))" ( (binary_expression "(param_3 < param_1) || ((param_1 == param_3 && (param_4 < param_2 != 0)))" (parenthesized_expression "(param_3 < param_1)" ( (binary_expression "param_3 < param_1" identifier < identifier) )) || (parenthesized_expression "((param_1 == param_3 && (param_4 < param_2 != 0)))" ( (parenthesized_expression "(param_1 == param_3 && (param_4 < param_2 != 0))" ( (binary_expression "param_1 == param_3 && (param_4 < param_2 != 0)" (binary_expression "param_1 == param_3" identifier == identifier) && (parenthesized_expression "(param_4 < param_2 != 0)" ( (binary_expression "param_4 < param_2 != 0" (binary_expression "param_4 < param_2" identifier < identifier) != number_literal) ))) )) ))) )) (compound_statement "{\n    param_1 = (param_1 - param_3) - (uint)(param_2 < param_4);\n    param_2 = param_2 - param_4;\n    if (param_1 < 2) {\n      return 0;\n    }\n    iVar9 = 0;\n    iVar6 = 1;\n    iVar7 = 1;\n    iVar8 = 1;\n    if (param_1 < param_3) goto LAB_00056c80;\n  }" { (expression_statement "param_1 = (param_1 - param_3) - (uint)(param_2 < param_4);" (assignment_expression "param_1 = (param_1 - param_3) - (uint)(param_2 < param_4)" identifier = (binary_expression "(param_1 - param_3) - (uint)(param_2 < param_4)" (parenthesized_expression "(param_1 - param_3)" ( (binary_expression "param_1 - param_3" identifier - identifier) )) - (call_expression "(uint)(param_2 < param_4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2 < param_4)" ( (binary_expression "param_2 < param_4" identifier < identifier) ))))) ;) (expression_statement "param_2 = param_2 - param_4;" (assignment_expression "param_2 = param_2 - param_4" identifier = (binary_expression "param_2 - param_4" identifier - identifier)) ;) (if_statement "if (param_1 < 2) {\n      return 0;\n    }" if (parenthesized_expression "(param_1 < 2)" ( (binary_expression "param_1 < 2" identifier < number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) (expression_statement "iVar7 = 1;" (assignment_expression "iVar7 = 1" identifier = number_literal) ;) (expression_statement "iVar8 = 1;" (assignment_expression "iVar8 = 1" identifier = number_literal) ;) (if_statement "if (param_1 < param_3) goto LAB_00056c80;" if (parenthesized_expression "(param_1 < param_3)" ( (binary_expression "param_1 < param_3" identifier < identifier) )) (goto_statement "goto LAB_00056c80;" goto statement_identifier ;)) }) (else_clause "else {\n    param_3 = param_3 - ((param_4 < param_2) + param_1);\n    param_4 = param_4 - param_2;\n    if (param_3 < 2) {\n      return 0;\n    }\n    iVar9 = 1;\n    iVar6 = 0;\n    iVar7 = 1;\n    iVar8 = 1;\n    if (param_1 < param_3) goto LAB_00056c80;\n  }" else (compound_statement "{\n    param_3 = param_3 - ((param_4 < param_2) + param_1);\n    param_4 = param_4 - param_2;\n    if (param_3 < 2) {\n      return 0;\n    }\n    iVar9 = 1;\n    iVar6 = 0;\n    iVar7 = 1;\n    iVar8 = 1;\n    if (param_1 < param_3) goto LAB_00056c80;\n  }" { (expression_statement "param_3 = param_3 - ((param_4 < param_2) + param_1);" (assignment_expression "param_3 = param_3 - ((param_4 < param_2) + param_1)" identifier = (binary_expression "param_3 - ((param_4 < param_2) + param_1)" identifier - (parenthesized_expression "((param_4 < param_2) + param_1)" ( (binary_expression "(param_4 < param_2) + param_1" (parenthesized_expression "(param_4 < param_2)" ( (binary_expression "param_4 < param_2" identifier < identifier) )) + identifier) )))) ;) (expression_statement "param_4 = param_4 - param_2;" (assignment_expression "param_4 = param_4 - param_2" identifier = (binary_expression "param_4 - param_2" identifier - identifier)) ;) (if_statement "if (param_3 < 2) {\n      return 0;\n    }" if (parenthesized_expression "(param_3 < 2)" ( (binary_expression "param_3 < 2" identifier < number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar9 = 1;" (assignment_expression "iVar9 = 1" identifier = number_literal) ;) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (expression_statement "iVar7 = 1;" (assignment_expression "iVar7 = 1" identifier = number_literal) ;) (expression_statement "iVar8 = 1;" (assignment_expression "iVar8 = 1" identifier = number_literal) ;) (if_statement "if (param_1 < param_3) goto LAB_00056c80;" if (parenthesized_expression "(param_1 < param_3)" ( (binary_expression "param_1 < param_3" identifier < identifier) )) (goto_statement "goto LAB_00056c80;" goto statement_identifier ;)) }))) (while_statement "while (param_1 != param_3) {\n    if (param_1 < 0x10000) {\n      uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;\n      uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;\n      goto LAB_00056cd4;\n    }\n    param_1 = (param_1 - param_3) - (uint)(param_2 < param_4);\n    if (param_1 < 2) break;\n    param_2 = param_2 - param_4;\n    iVar5 = iVar8;\n    iVar1 = iVar9;\n    if (param_3 < param_1) {\n      iVar5 = 0;\n      uVar3 = param_3;\n      uVar11 = param_4;\n      if ((int)param_1 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar2 = 0;\n        do {\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056f78:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((param_1 == uVar3) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056f78;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar10 = uVar11 >> 0x1f;\n            uVar11 = uVar11 << 1;\n            uVar3 = uVar10 | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n          } while (uVar3 < param_1);\n          uVar2 = 0;\n          uVar4 = uVar3;\n        } while ((param_1 == uVar3) && (uVar4 = uVar10, uVar11 <= param_2));\n        do {\n          uVar3 = uVar3 >> 1;\n          uVar11 = uVar4 << 0x1f | uVar11 >> 1;\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056eac:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((uVar3 == param_1) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056eac;\n          }\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar3;\n        } while (iVar5 != 0);\n      }\n      if (param_1 < 2) {\n        iVar6 = iVar8 * uVar2 + iVar6;\n        iVar7 = iVar9 * uVar2 + iVar7;\n        break;\n      }\n      iVar5 = iVar8 * (uVar2 + 1);\n      iVar1 = iVar9 * (uVar2 + 1);\n    }\n    iVar7 = iVar7 + iVar1;\n    iVar6 = iVar6 + iVar5;\n    if (param_1 == param_3) break;\nLAB_00056c80:\n    if (param_3 < 0x10000) {\n      uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;\n      uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;\n      goto LAB_00056cfc;\n    }\n    param_3 = (param_3 - param_1) - (uint)(param_4 < param_2);\n    if (param_3 < 2) break;\n    param_4 = param_4 - param_2;\n    if (param_1 < param_3) {\n      iVar5 = 0;\n      uVar3 = param_1;\n      uVar11 = param_2;\n      if ((int)param_3 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar10 = 0;\n        do {\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar4 = (uint)(param_4 < uVar11);\nLAB_00057068:\n            param_4 = param_4 - uVar11;\n            param_3 = (param_3 - uVar3) - uVar4;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((param_3 == uVar3) && (uVar11 <= param_4)) {\n            uVar4 = 0;\n            goto LAB_00057068;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar4 = uVar11 << 1;\n            uVar3 = uVar11 >> 0x1f | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n            uVar11 = uVar4;\n          } while (uVar3 < param_3);\n        } while ((param_3 == uVar3) && (uVar4 <= param_4));\n        uVar10 = 0;\n        do {\n          uVar11 = uVar3 << 0x1f;\n          uVar3 = uVar3 >> 1;\n          uVar4 = uVar11 | uVar4 >> 1;\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar11 = (uint)(param_4 < uVar4);\nLAB_00056df4:\n            param_4 = param_4 - uVar4;\n            param_3 = (param_3 - uVar3) - uVar11;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((uVar3 == param_3) && (uVar4 <= param_4)) {\n            uVar11 = 0;\n            goto LAB_00056df4;\n          }\n          iVar5 = iVar5 + -1;\n        } while (iVar5 != 0);\n      }\n      if (param_3 < 2) {\n        iVar8 = uVar10 * iVar6 + iVar8;\n        iVar9 = uVar10 * iVar7 + iVar9;\n        break;\n      }\n      iVar8 = (uVar10 + 1) * iVar6 + iVar8;\n      iVar9 = (uVar10 + 1) * iVar7 + iVar9;\n    }\n    else {\n      iVar8 = iVar8 + iVar6;\n      iVar9 = iVar9 + iVar7;\n    }\n  }" while (parenthesized_expression "(param_1 != param_3)" ( (binary_expression "param_1 != param_3" identifier != identifier) )) (compound_statement "{\n    if (param_1 < 0x10000) {\n      uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;\n      uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;\n      goto LAB_00056cd4;\n    }\n    param_1 = (param_1 - param_3) - (uint)(param_2 < param_4);\n    if (param_1 < 2) break;\n    param_2 = param_2 - param_4;\n    iVar5 = iVar8;\n    iVar1 = iVar9;\n    if (param_3 < param_1) {\n      iVar5 = 0;\n      uVar3 = param_3;\n      uVar11 = param_4;\n      if ((int)param_1 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar2 = 0;\n        do {\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056f78:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((param_1 == uVar3) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056f78;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar10 = uVar11 >> 0x1f;\n            uVar11 = uVar11 << 1;\n            uVar3 = uVar10 | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n          } while (uVar3 < param_1);\n          uVar2 = 0;\n          uVar4 = uVar3;\n        } while ((param_1 == uVar3) && (uVar4 = uVar10, uVar11 <= param_2));\n        do {\n          uVar3 = uVar3 >> 1;\n          uVar11 = uVar4 << 0x1f | uVar11 >> 1;\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056eac:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((uVar3 == param_1) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056eac;\n          }\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar3;\n        } while (iVar5 != 0);\n      }\n      if (param_1 < 2) {\n        iVar6 = iVar8 * uVar2 + iVar6;\n        iVar7 = iVar9 * uVar2 + iVar7;\n        break;\n      }\n      iVar5 = iVar8 * (uVar2 + 1);\n      iVar1 = iVar9 * (uVar2 + 1);\n    }\n    iVar7 = iVar7 + iVar1;\n    iVar6 = iVar6 + iVar5;\n    if (param_1 == param_3) break;\nLAB_00056c80:\n    if (param_3 < 0x10000) {\n      uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;\n      uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;\n      goto LAB_00056cfc;\n    }\n    param_3 = (param_3 - param_1) - (uint)(param_4 < param_2);\n    if (param_3 < 2) break;\n    param_4 = param_4 - param_2;\n    if (param_1 < param_3) {\n      iVar5 = 0;\n      uVar3 = param_1;\n      uVar11 = param_2;\n      if ((int)param_3 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar10 = 0;\n        do {\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar4 = (uint)(param_4 < uVar11);\nLAB_00057068:\n            param_4 = param_4 - uVar11;\n            param_3 = (param_3 - uVar3) - uVar4;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((param_3 == uVar3) && (uVar11 <= param_4)) {\n            uVar4 = 0;\n            goto LAB_00057068;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar4 = uVar11 << 1;\n            uVar3 = uVar11 >> 0x1f | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n            uVar11 = uVar4;\n          } while (uVar3 < param_3);\n        } while ((param_3 == uVar3) && (uVar4 <= param_4));\n        uVar10 = 0;\n        do {\n          uVar11 = uVar3 << 0x1f;\n          uVar3 = uVar3 >> 1;\n          uVar4 = uVar11 | uVar4 >> 1;\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar11 = (uint)(param_4 < uVar4);\nLAB_00056df4:\n            param_4 = param_4 - uVar4;\n            param_3 = (param_3 - uVar3) - uVar11;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((uVar3 == param_3) && (uVar4 <= param_4)) {\n            uVar11 = 0;\n            goto LAB_00056df4;\n          }\n          iVar5 = iVar5 + -1;\n        } while (iVar5 != 0);\n      }\n      if (param_3 < 2) {\n        iVar8 = uVar10 * iVar6 + iVar8;\n        iVar9 = uVar10 * iVar7 + iVar9;\n        break;\n      }\n      iVar8 = (uVar10 + 1) * iVar6 + iVar8;\n      iVar9 = (uVar10 + 1) * iVar7 + iVar9;\n    }\n    else {\n      iVar8 = iVar8 + iVar6;\n      iVar9 = iVar9 + iVar7;\n    }\n  }" { (if_statement "if (param_1 < 0x10000) {\n      uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;\n      uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;\n      goto LAB_00056cd4;\n    }" if (parenthesized_expression "(param_1 < 0x10000)" ( (binary_expression "param_1 < 0x10000" identifier < number_literal) )) (compound_statement "{\n      uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;\n      uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;\n      goto LAB_00056cd4;\n    }" { (expression_statement "uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;" (assignment_expression "uVar3 = (param_2 >> 0x10) + param_1 * 0x10000" identifier = (binary_expression "(param_2 >> 0x10) + param_1 * 0x10000" (parenthesized_expression "(param_2 >> 0x10)" ( (binary_expression "param_2 >> 0x10" identifier >> number_literal) )) + (binary_expression "param_1 * 0x10000" identifier * number_literal))) ;) (expression_statement "uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;" (assignment_expression "uVar11 = (param_4 >> 0x10) + param_3 * 0x10000" identifier = (binary_expression "(param_4 >> 0x10) + param_3 * 0x10000" (parenthesized_expression "(param_4 >> 0x10)" ( (binary_expression "param_4 >> 0x10" identifier >> number_literal) )) + (binary_expression "param_3 * 0x10000" identifier * number_literal))) ;) (goto_statement "goto LAB_00056cd4;" goto statement_identifier ;) })) (expression_statement "param_1 = (param_1 - param_3) - (uint)(param_2 < param_4);" (assignment_expression "param_1 = (param_1 - param_3) - (uint)(param_2 < param_4)" identifier = (binary_expression "(param_1 - param_3) - (uint)(param_2 < param_4)" (parenthesized_expression "(param_1 - param_3)" ( (binary_expression "param_1 - param_3" identifier - identifier) )) - (call_expression "(uint)(param_2 < param_4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2 < param_4)" ( (binary_expression "param_2 < param_4" identifier < identifier) ))))) ;) (if_statement "if (param_1 < 2) break;" if (parenthesized_expression "(param_1 < 2)" ( (binary_expression "param_1 < 2" identifier < number_literal) )) (break_statement "break;" break ;)) (expression_statement "param_2 = param_2 - param_4;" (assignment_expression "param_2 = param_2 - param_4" identifier = (binary_expression "param_2 - param_4" identifier - identifier)) ;) (expression_statement "iVar5 = iVar8;" (assignment_expression "iVar5 = iVar8" identifier = identifier) ;) (expression_statement "iVar1 = iVar9;" (assignment_expression "iVar1 = iVar9" identifier = identifier) ;) (if_statement "if (param_3 < param_1) {\n      iVar5 = 0;\n      uVar3 = param_3;\n      uVar11 = param_4;\n      if ((int)param_1 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar2 = 0;\n        do {\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056f78:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((param_1 == uVar3) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056f78;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar10 = uVar11 >> 0x1f;\n            uVar11 = uVar11 << 1;\n            uVar3 = uVar10 | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n          } while (uVar3 < param_1);\n          uVar2 = 0;\n          uVar4 = uVar3;\n        } while ((param_1 == uVar3) && (uVar4 = uVar10, uVar11 <= param_2));\n        do {\n          uVar3 = uVar3 >> 1;\n          uVar11 = uVar4 << 0x1f | uVar11 >> 1;\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056eac:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((uVar3 == param_1) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056eac;\n          }\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar3;\n        } while (iVar5 != 0);\n      }\n      if (param_1 < 2) {\n        iVar6 = iVar8 * uVar2 + iVar6;\n        iVar7 = iVar9 * uVar2 + iVar7;\n        break;\n      }\n      iVar5 = iVar8 * (uVar2 + 1);\n      iVar1 = iVar9 * (uVar2 + 1);\n    }" if (parenthesized_expression "(param_3 < param_1)" ( (binary_expression "param_3 < param_1" identifier < identifier) )) (compound_statement "{\n      iVar5 = 0;\n      uVar3 = param_3;\n      uVar11 = param_4;\n      if ((int)param_1 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar2 = 0;\n        do {\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056f78:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((param_1 == uVar3) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056f78;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar10 = uVar11 >> 0x1f;\n            uVar11 = uVar11 << 1;\n            uVar3 = uVar10 | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n          } while (uVar3 < param_1);\n          uVar2 = 0;\n          uVar4 = uVar3;\n        } while ((param_1 == uVar3) && (uVar4 = uVar10, uVar11 <= param_2));\n        do {\n          uVar3 = uVar3 >> 1;\n          uVar11 = uVar4 << 0x1f | uVar11 >> 1;\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056eac:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((uVar3 == param_1) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056eac;\n          }\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar3;\n        } while (iVar5 != 0);\n      }\n      if (param_1 < 2) {\n        iVar6 = iVar8 * uVar2 + iVar6;\n        iVar7 = iVar9 * uVar2 + iVar7;\n        break;\n      }\n      iVar5 = iVar8 * (uVar2 + 1);\n      iVar1 = iVar9 * (uVar2 + 1);\n    }" { (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (expression_statement "uVar3 = param_3;" (assignment_expression "uVar3 = param_3" identifier = identifier) ;) (expression_statement "uVar11 = param_4;" (assignment_expression "uVar11 = param_4" identifier = identifier) ;) (if_statement "if ((int)param_1 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar2 = 0;\n        do {\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056f78:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((param_1 == uVar3) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056f78;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar10 = uVar11 >> 0x1f;\n            uVar11 = uVar11 << 1;\n            uVar3 = uVar10 | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n          } while (uVar3 < param_1);\n          uVar2 = 0;\n          uVar4 = uVar3;\n        } while ((param_1 == uVar3) && (uVar4 = uVar10, uVar11 <= param_2));\n        do {\n          uVar3 = uVar3 >> 1;\n          uVar11 = uVar4 << 0x1f | uVar11 >> 1;\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056eac:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((uVar3 == param_1) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056eac;\n          }\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar3;\n        } while (iVar5 != 0);\n      }" if (parenthesized_expression "((int)param_1 < 0)" ( (binary_expression "(int)param_1 < 0" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar2 = 0;\n        do {\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056f78:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((param_1 == uVar3) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056f78;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }" { (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" identifier = number_literal) ;) (for_statement "for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }" for ( ; (binary_expression "-1 < (int)uVar3" number_literal < (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ; (assignment_expression "uVar3 = uVar10 | uVar3 << 1" identifier = (binary_expression "uVar10 | uVar3 << 1" identifier | (binary_expression "uVar3 << 1" identifier << number_literal))) ) (compound_statement "{\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }" { (expression_statement "uVar10 = uVar11 >> 0x1f;" (assignment_expression "uVar10 = uVar11 >> 0x1f" identifier = (binary_expression "uVar11 >> 0x1f" identifier >> number_literal)) ;) (expression_statement "uVar11 = uVar11 << 1;" (assignment_expression "uVar11 = uVar11 << 1" identifier = (binary_expression "uVar11 << 1" identifier << number_literal)) ;) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (do_statement "do {\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056f78:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((param_1 == uVar3) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056f78;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);" do (compound_statement "{\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056f78:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((param_1 == uVar3) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056f78;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        }" { (expression_statement "uVar2 = uVar2 << 1;" (assignment_expression "uVar2 = uVar2 << 1" identifier = (binary_expression "uVar2 << 1" identifier << number_literal)) ;) (if_statement "if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056f78:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((param_1 == uVar3) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056f78;\n          }" if (parenthesized_expression "(uVar3 < param_1)" ( (binary_expression "uVar3 < param_1" identifier < identifier) )) (compound_statement "{\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056f78:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }" { (expression_statement "uVar10 = (uint)(param_2 < uVar11);" (assignment_expression "uVar10 = (uint)(param_2 < uVar11)" identifier = (call_expression "(uint)(param_2 < uVar11)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2 < uVar11)" ( (binary_expression "param_2 < uVar11" identifier < identifier) )))) ;) (labeled_statement "LAB_00056f78:\n            param_2 = param_2 - uVar11;" statement_identifier : (expression_statement "param_2 = param_2 - uVar11;" (assignment_expression "param_2 = param_2 - uVar11" identifier = (binary_expression "param_2 - uVar11" identifier - identifier)) ;)) (expression_statement "param_1 = (param_1 - uVar3) - uVar10;" (assignment_expression "param_1 = (param_1 - uVar3) - uVar10" identifier = (binary_expression "(param_1 - uVar3) - uVar10" (parenthesized_expression "(param_1 - uVar3)" ( (binary_expression "param_1 - uVar3" identifier - identifier) )) - identifier)) ;) (expression_statement "uVar2 = uVar2 | 1;" (assignment_expression "uVar2 = uVar2 | 1" identifier = (binary_expression "uVar2 | 1" identifier | number_literal)) ;) }) (else_clause "else if ((param_1 == uVar3) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056f78;\n          }" else (if_statement "if ((param_1 == uVar3) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056f78;\n          }" if (parenthesized_expression "((param_1 == uVar3) && (uVar11 <= param_2))" ( (binary_expression "(param_1 == uVar3) && (uVar11 <= param_2)" (parenthesized_expression "(param_1 == uVar3)" ( (binary_expression "param_1 == uVar3" identifier == identifier) )) && (parenthesized_expression "(uVar11 <= param_2)" ( (binary_expression "uVar11 <= param_2" identifier <= identifier) ))) )) (compound_statement "{\n            uVar10 = 0;\n            goto LAB_00056f78;\n          }" { (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00056f78;" goto statement_identifier ;) })))) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "uVar11 = uVar3 << 0x1f | uVar11 >> 1;" (assignment_expression "uVar11 = uVar3 << 0x1f | uVar11 >> 1" identifier = (binary_expression "uVar3 << 0x1f | uVar11 >> 1" (binary_expression "uVar3 << 0x1f" identifier << number_literal) | (binary_expression "uVar11 >> 1" identifier >> number_literal))) ;) (expression_statement "uVar3 = uVar3 >> 1;" (assignment_expression "uVar3 = uVar3 >> 1" identifier = (binary_expression "uVar3 >> 1" identifier >> number_literal)) ;) }) while (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) ;) }) (else_clause "else {\n        do {\n          do {\n            uVar10 = uVar11 >> 0x1f;\n            uVar11 = uVar11 << 1;\n            uVar3 = uVar10 | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n          } while (uVar3 < param_1);\n          uVar2 = 0;\n          uVar4 = uVar3;\n        } while ((param_1 == uVar3) && (uVar4 = uVar10, uVar11 <= param_2));\n        do {\n          uVar3 = uVar3 >> 1;\n          uVar11 = uVar4 << 0x1f | uVar11 >> 1;\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056eac:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((uVar3 == param_1) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056eac;\n          }\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar3;\n        } while (iVar5 != 0);\n      }" else (compound_statement "{\n        do {\n          do {\n            uVar10 = uVar11 >> 0x1f;\n            uVar11 = uVar11 << 1;\n            uVar3 = uVar10 | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n          } while (uVar3 < param_1);\n          uVar2 = 0;\n          uVar4 = uVar3;\n        } while ((param_1 == uVar3) && (uVar4 = uVar10, uVar11 <= param_2));\n        do {\n          uVar3 = uVar3 >> 1;\n          uVar11 = uVar4 << 0x1f | uVar11 >> 1;\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056eac:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((uVar3 == param_1) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056eac;\n          }\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar3;\n        } while (iVar5 != 0);\n      }" { (do_statement "do {\n          do {\n            uVar10 = uVar11 >> 0x1f;\n            uVar11 = uVar11 << 1;\n            uVar3 = uVar10 | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n          } while (uVar3 < param_1);\n          uVar2 = 0;\n          uVar4 = uVar3;\n        } while ((param_1 == uVar3) && (uVar4 = uVar10, uVar11 <= param_2));" do (compound_statement "{\n          do {\n            uVar10 = uVar11 >> 0x1f;\n            uVar11 = uVar11 << 1;\n            uVar3 = uVar10 | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n          } while (uVar3 < param_1);\n          uVar2 = 0;\n          uVar4 = uVar3;\n        }" { (do_statement "do {\n            uVar10 = uVar11 >> 0x1f;\n            uVar11 = uVar11 << 1;\n            uVar3 = uVar10 | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n          } while (uVar3 < param_1);" do (compound_statement "{\n            uVar10 = uVar11 >> 0x1f;\n            uVar11 = uVar11 << 1;\n            uVar3 = uVar10 | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n          }" { (expression_statement "uVar10 = uVar11 >> 0x1f;" (assignment_expression "uVar10 = uVar11 >> 0x1f" identifier = (binary_expression "uVar11 >> 0x1f" identifier >> number_literal)) ;) (expression_statement "uVar11 = uVar11 << 1;" (assignment_expression "uVar11 = uVar11 << 1" identifier = (binary_expression "uVar11 << 1" identifier << number_literal)) ;) (expression_statement "uVar3 = uVar10 | uVar3 << 1;" (assignment_expression "uVar3 = uVar10 | uVar3 << 1" identifier = (binary_expression "uVar10 | uVar3 << 1" identifier | (binary_expression "uVar3 << 1" identifier << number_literal))) ;) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar3 < param_1)" ( (binary_expression "uVar3 < param_1" identifier < identifier) )) ;) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (expression_statement "uVar4 = uVar3;" (assignment_expression "uVar4 = uVar3" identifier = identifier) ;) }) while (parenthesized_expression "((param_1 == uVar3) && (uVar4 = uVar10, uVar11 <= param_2))" ( (binary_expression "(param_1 == uVar3) && (uVar4 = uVar10, uVar11 <= param_2)" (parenthesized_expression "(param_1 == uVar3)" ( (binary_expression "param_1 == uVar3" identifier == identifier) )) && (parenthesized_expression "(uVar4 = uVar10, uVar11 <= param_2)" ( (comma_expression "uVar4 = uVar10, uVar11 <= param_2" (assignment_expression "uVar4 = uVar10" identifier = identifier) , (binary_expression "uVar11 <= param_2" identifier <= identifier)) ))) )) ;) (do_statement "do {\n          uVar3 = uVar3 >> 1;\n          uVar11 = uVar4 << 0x1f | uVar11 >> 1;\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056eac:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((uVar3 == param_1) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056eac;\n          }\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar3;\n        } while (iVar5 != 0);" do (compound_statement "{\n          uVar3 = uVar3 >> 1;\n          uVar11 = uVar4 << 0x1f | uVar11 >> 1;\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056eac:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((uVar3 == param_1) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056eac;\n          }\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar3;\n        }" { (expression_statement "uVar3 = uVar3 >> 1;" (assignment_expression "uVar3 = uVar3 >> 1" identifier = (binary_expression "uVar3 >> 1" identifier >> number_literal)) ;) (expression_statement "uVar11 = uVar4 << 0x1f | uVar11 >> 1;" (assignment_expression "uVar11 = uVar4 << 0x1f | uVar11 >> 1" identifier = (binary_expression "uVar4 << 0x1f | uVar11 >> 1" (binary_expression "uVar4 << 0x1f" identifier << number_literal) | (binary_expression "uVar11 >> 1" identifier >> number_literal))) ;) (expression_statement "uVar2 = uVar2 << 1;" (assignment_expression "uVar2 = uVar2 << 1" identifier = (binary_expression "uVar2 << 1" identifier << number_literal)) ;) (if_statement "if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056eac:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((uVar3 == param_1) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056eac;\n          }" if (parenthesized_expression "(uVar3 < param_1)" ( (binary_expression "uVar3 < param_1" identifier < identifier) )) (compound_statement "{\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056eac:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }" { (expression_statement "uVar10 = (uint)(param_2 < uVar11);" (assignment_expression "uVar10 = (uint)(param_2 < uVar11)" identifier = (call_expression "(uint)(param_2 < uVar11)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2 < uVar11)" ( (binary_expression "param_2 < uVar11" identifier < identifier) )))) ;) (labeled_statement "LAB_00056eac:\n            param_2 = param_2 - uVar11;" statement_identifier : (expression_statement "param_2 = param_2 - uVar11;" (assignment_expression "param_2 = param_2 - uVar11" identifier = (binary_expression "param_2 - uVar11" identifier - identifier)) ;)) (expression_statement "param_1 = (param_1 - uVar3) - uVar10;" (assignment_expression "param_1 = (param_1 - uVar3) - uVar10" identifier = (binary_expression "(param_1 - uVar3) - uVar10" (parenthesized_expression "(param_1 - uVar3)" ( (binary_expression "param_1 - uVar3" identifier - identifier) )) - identifier)) ;) (expression_statement "uVar2 = uVar2 | 1;" (assignment_expression "uVar2 = uVar2 | 1" identifier = (binary_expression "uVar2 | 1" identifier | number_literal)) ;) }) (else_clause "else if ((uVar3 == param_1) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056eac;\n          }" else (if_statement "if ((uVar3 == param_1) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056eac;\n          }" if (parenthesized_expression "((uVar3 == param_1) && (uVar11 <= param_2))" ( (binary_expression "(uVar3 == param_1) && (uVar11 <= param_2)" (parenthesized_expression "(uVar3 == param_1)" ( (binary_expression "uVar3 == param_1" identifier == identifier) )) && (parenthesized_expression "(uVar11 <= param_2)" ( (binary_expression "uVar11 <= param_2" identifier <= identifier) ))) )) (compound_statement "{\n            uVar10 = 0;\n            goto LAB_00056eac;\n          }" { (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00056eac;" goto statement_identifier ;) })))) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "uVar4 = uVar3;" (assignment_expression "uVar4 = uVar3" identifier = identifier) ;) }) while (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) ;) }))) (if_statement "if (param_1 < 2) {\n        iVar6 = iVar8 * uVar2 + iVar6;\n        iVar7 = iVar9 * uVar2 + iVar7;\n        break;\n      }" if (parenthesized_expression "(param_1 < 2)" ( (binary_expression "param_1 < 2" identifier < number_literal) )) (compound_statement "{\n        iVar6 = iVar8 * uVar2 + iVar6;\n        iVar7 = iVar9 * uVar2 + iVar7;\n        break;\n      }" { (expression_statement "iVar6 = iVar8 * uVar2 + iVar6;" (assignment_expression "iVar6 = iVar8 * uVar2 + iVar6" identifier = (binary_expression "iVar8 * uVar2 + iVar6" (binary_expression "iVar8 * uVar2" identifier * identifier) + identifier)) ;) (expression_statement "iVar7 = iVar9 * uVar2 + iVar7;" (assignment_expression "iVar7 = iVar9 * uVar2 + iVar7" identifier = (binary_expression "iVar9 * uVar2 + iVar7" (binary_expression "iVar9 * uVar2" identifier * identifier) + identifier)) ;) (break_statement "break;" break ;) })) (expression_statement "iVar5 = iVar8 * (uVar2 + 1);" (assignment_expression "iVar5 = iVar8 * (uVar2 + 1)" identifier = (binary_expression "iVar8 * (uVar2 + 1)" identifier * (parenthesized_expression "(uVar2 + 1)" ( (binary_expression "uVar2 + 1" identifier + number_literal) )))) ;) (expression_statement "iVar1 = iVar9 * (uVar2 + 1);" (assignment_expression "iVar1 = iVar9 * (uVar2 + 1)" identifier = (binary_expression "iVar9 * (uVar2 + 1)" identifier * (parenthesized_expression "(uVar2 + 1)" ( (binary_expression "uVar2 + 1" identifier + number_literal) )))) ;) })) (expression_statement "iVar7 = iVar7 + iVar1;" (assignment_expression "iVar7 = iVar7 + iVar1" identifier = (binary_expression "iVar7 + iVar1" identifier + identifier)) ;) (expression_statement "iVar6 = iVar6 + iVar5;" (assignment_expression "iVar6 = iVar6 + iVar5" identifier = (binary_expression "iVar6 + iVar5" identifier + identifier)) ;) (if_statement "if (param_1 == param_3) break;" if (parenthesized_expression "(param_1 == param_3)" ( (binary_expression "param_1 == param_3" identifier == identifier) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00056c80:\n    if (param_3 < 0x10000) {\n      uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;\n      uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;\n      goto LAB_00056cfc;\n    }" statement_identifier : (if_statement "if (param_3 < 0x10000) {\n      uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;\n      uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;\n      goto LAB_00056cfc;\n    }" if (parenthesized_expression "(param_3 < 0x10000)" ( (binary_expression "param_3 < 0x10000" identifier < number_literal) )) (compound_statement "{\n      uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;\n      uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;\n      goto LAB_00056cfc;\n    }" { (expression_statement "uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;" (assignment_expression "uVar3 = (param_2 >> 0x10) + param_1 * 0x10000" identifier = (binary_expression "(param_2 >> 0x10) + param_1 * 0x10000" (parenthesized_expression "(param_2 >> 0x10)" ( (binary_expression "param_2 >> 0x10" identifier >> number_literal) )) + (binary_expression "param_1 * 0x10000" identifier * number_literal))) ;) (expression_statement "uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;" (assignment_expression "uVar11 = (param_4 >> 0x10) + param_3 * 0x10000" identifier = (binary_expression "(param_4 >> 0x10) + param_3 * 0x10000" (parenthesized_expression "(param_4 >> 0x10)" ( (binary_expression "param_4 >> 0x10" identifier >> number_literal) )) + (binary_expression "param_3 * 0x10000" identifier * number_literal))) ;) (goto_statement "goto LAB_00056cfc;" goto statement_identifier ;) }))) (expression_statement "param_3 = (param_3 - param_1) - (uint)(param_4 < param_2);" (assignment_expression "param_3 = (param_3 - param_1) - (uint)(param_4 < param_2)" identifier = (binary_expression "(param_3 - param_1) - (uint)(param_4 < param_2)" (parenthesized_expression "(param_3 - param_1)" ( (binary_expression "param_3 - param_1" identifier - identifier) )) - (call_expression "(uint)(param_4 < param_2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_4 < param_2)" ( (binary_expression "param_4 < param_2" identifier < identifier) ))))) ;) (if_statement "if (param_3 < 2) break;" if (parenthesized_expression "(param_3 < 2)" ( (binary_expression "param_3 < 2" identifier < number_literal) )) (break_statement "break;" break ;)) (expression_statement "param_4 = param_4 - param_2;" (assignment_expression "param_4 = param_4 - param_2" identifier = (binary_expression "param_4 - param_2" identifier - identifier)) ;) (if_statement "if (param_1 < param_3) {\n      iVar5 = 0;\n      uVar3 = param_1;\n      uVar11 = param_2;\n      if ((int)param_3 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar10 = 0;\n        do {\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar4 = (uint)(param_4 < uVar11);\nLAB_00057068:\n            param_4 = param_4 - uVar11;\n            param_3 = (param_3 - uVar3) - uVar4;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((param_3 == uVar3) && (uVar11 <= param_4)) {\n            uVar4 = 0;\n            goto LAB_00057068;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar4 = uVar11 << 1;\n            uVar3 = uVar11 >> 0x1f | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n            uVar11 = uVar4;\n          } while (uVar3 < param_3);\n        } while ((param_3 == uVar3) && (uVar4 <= param_4));\n        uVar10 = 0;\n        do {\n          uVar11 = uVar3 << 0x1f;\n          uVar3 = uVar3 >> 1;\n          uVar4 = uVar11 | uVar4 >> 1;\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar11 = (uint)(param_4 < uVar4);\nLAB_00056df4:\n            param_4 = param_4 - uVar4;\n            param_3 = (param_3 - uVar3) - uVar11;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((uVar3 == param_3) && (uVar4 <= param_4)) {\n            uVar11 = 0;\n            goto LAB_00056df4;\n          }\n          iVar5 = iVar5 + -1;\n        } while (iVar5 != 0);\n      }\n      if (param_3 < 2) {\n        iVar8 = uVar10 * iVar6 + iVar8;\n        iVar9 = uVar10 * iVar7 + iVar9;\n        break;\n      }\n      iVar8 = (uVar10 + 1) * iVar6 + iVar8;\n      iVar9 = (uVar10 + 1) * iVar7 + iVar9;\n    }\n    else {\n      iVar8 = iVar8 + iVar6;\n      iVar9 = iVar9 + iVar7;\n    }" if (parenthesized_expression "(param_1 < param_3)" ( (binary_expression "param_1 < param_3" identifier < identifier) )) (compound_statement "{\n      iVar5 = 0;\n      uVar3 = param_1;\n      uVar11 = param_2;\n      if ((int)param_3 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar10 = 0;\n        do {\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar4 = (uint)(param_4 < uVar11);\nLAB_00057068:\n            param_4 = param_4 - uVar11;\n            param_3 = (param_3 - uVar3) - uVar4;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((param_3 == uVar3) && (uVar11 <= param_4)) {\n            uVar4 = 0;\n            goto LAB_00057068;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar4 = uVar11 << 1;\n            uVar3 = uVar11 >> 0x1f | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n            uVar11 = uVar4;\n          } while (uVar3 < param_3);\n        } while ((param_3 == uVar3) && (uVar4 <= param_4));\n        uVar10 = 0;\n        do {\n          uVar11 = uVar3 << 0x1f;\n          uVar3 = uVar3 >> 1;\n          uVar4 = uVar11 | uVar4 >> 1;\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar11 = (uint)(param_4 < uVar4);\nLAB_00056df4:\n            param_4 = param_4 - uVar4;\n            param_3 = (param_3 - uVar3) - uVar11;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((uVar3 == param_3) && (uVar4 <= param_4)) {\n            uVar11 = 0;\n            goto LAB_00056df4;\n          }\n          iVar5 = iVar5 + -1;\n        } while (iVar5 != 0);\n      }\n      if (param_3 < 2) {\n        iVar8 = uVar10 * iVar6 + iVar8;\n        iVar9 = uVar10 * iVar7 + iVar9;\n        break;\n      }\n      iVar8 = (uVar10 + 1) * iVar6 + iVar8;\n      iVar9 = (uVar10 + 1) * iVar7 + iVar9;\n    }" { (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (expression_statement "uVar3 = param_1;" (assignment_expression "uVar3 = param_1" identifier = identifier) ;) (expression_statement "uVar11 = param_2;" (assignment_expression "uVar11 = param_2" identifier = identifier) ;) (if_statement "if ((int)param_3 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar10 = 0;\n        do {\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar4 = (uint)(param_4 < uVar11);\nLAB_00057068:\n            param_4 = param_4 - uVar11;\n            param_3 = (param_3 - uVar3) - uVar4;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((param_3 == uVar3) && (uVar11 <= param_4)) {\n            uVar4 = 0;\n            goto LAB_00057068;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar4 = uVar11 << 1;\n            uVar3 = uVar11 >> 0x1f | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n            uVar11 = uVar4;\n          } while (uVar3 < param_3);\n        } while ((param_3 == uVar3) && (uVar4 <= param_4));\n        uVar10 = 0;\n        do {\n          uVar11 = uVar3 << 0x1f;\n          uVar3 = uVar3 >> 1;\n          uVar4 = uVar11 | uVar4 >> 1;\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar11 = (uint)(param_4 < uVar4);\nLAB_00056df4:\n            param_4 = param_4 - uVar4;\n            param_3 = (param_3 - uVar3) - uVar11;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((uVar3 == param_3) && (uVar4 <= param_4)) {\n            uVar11 = 0;\n            goto LAB_00056df4;\n          }\n          iVar5 = iVar5 + -1;\n        } while (iVar5 != 0);\n      }" if (parenthesized_expression "((int)param_3 < 0)" ( (binary_expression "(int)param_3 < 0" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar10 = 0;\n        do {\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar4 = (uint)(param_4 < uVar11);\nLAB_00057068:\n            param_4 = param_4 - uVar11;\n            param_3 = (param_3 - uVar3) - uVar4;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((param_3 == uVar3) && (uVar11 <= param_4)) {\n            uVar4 = 0;\n            goto LAB_00057068;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }" { (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" identifier = number_literal) ;) (for_statement "for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }" for ( ; (binary_expression "-1 < (int)uVar3" number_literal < (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ; (assignment_expression "uVar3 = uVar10 | uVar3 << 1" identifier = (binary_expression "uVar10 | uVar3 << 1" identifier | (binary_expression "uVar3 << 1" identifier << number_literal))) ) (compound_statement "{\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }" { (expression_statement "uVar10 = uVar11 >> 0x1f;" (assignment_expression "uVar10 = uVar11 >> 0x1f" identifier = (binary_expression "uVar11 >> 0x1f" identifier >> number_literal)) ;) (expression_statement "uVar11 = uVar11 << 1;" (assignment_expression "uVar11 = uVar11 << 1" identifier = (binary_expression "uVar11 << 1" identifier << number_literal)) ;) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (do_statement "do {\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar4 = (uint)(param_4 < uVar11);\nLAB_00057068:\n            param_4 = param_4 - uVar11;\n            param_3 = (param_3 - uVar3) - uVar4;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((param_3 == uVar3) && (uVar11 <= param_4)) {\n            uVar4 = 0;\n            goto LAB_00057068;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);" do (compound_statement "{\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar4 = (uint)(param_4 < uVar11);\nLAB_00057068:\n            param_4 = param_4 - uVar11;\n            param_3 = (param_3 - uVar3) - uVar4;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((param_3 == uVar3) && (uVar11 <= param_4)) {\n            uVar4 = 0;\n            goto LAB_00057068;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        }" { (expression_statement "uVar10 = uVar10 << 1;" (assignment_expression "uVar10 = uVar10 << 1" identifier = (binary_expression "uVar10 << 1" identifier << number_literal)) ;) (if_statement "if (uVar3 < param_3) {\n            uVar4 = (uint)(param_4 < uVar11);\nLAB_00057068:\n            param_4 = param_4 - uVar11;\n            param_3 = (param_3 - uVar3) - uVar4;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((param_3 == uVar3) && (uVar11 <= param_4)) {\n            uVar4 = 0;\n            goto LAB_00057068;\n          }" if (parenthesized_expression "(uVar3 < param_3)" ( (binary_expression "uVar3 < param_3" identifier < identifier) )) (compound_statement "{\n            uVar4 = (uint)(param_4 < uVar11);\nLAB_00057068:\n            param_4 = param_4 - uVar11;\n            param_3 = (param_3 - uVar3) - uVar4;\n            uVar10 = uVar10 | 1;\n          }" { (expression_statement "uVar4 = (uint)(param_4 < uVar11);" (assignment_expression "uVar4 = (uint)(param_4 < uVar11)" identifier = (call_expression "(uint)(param_4 < uVar11)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_4 < uVar11)" ( (binary_expression "param_4 < uVar11" identifier < identifier) )))) ;) (labeled_statement "LAB_00057068:\n            param_4 = param_4 - uVar11;" statement_identifier : (expression_statement "param_4 = param_4 - uVar11;" (assignment_expression "param_4 = param_4 - uVar11" identifier = (binary_expression "param_4 - uVar11" identifier - identifier)) ;)) (expression_statement "param_3 = (param_3 - uVar3) - uVar4;" (assignment_expression "param_3 = (param_3 - uVar3) - uVar4" identifier = (binary_expression "(param_3 - uVar3) - uVar4" (parenthesized_expression "(param_3 - uVar3)" ( (binary_expression "param_3 - uVar3" identifier - identifier) )) - identifier)) ;) (expression_statement "uVar10 = uVar10 | 1;" (assignment_expression "uVar10 = uVar10 | 1" identifier = (binary_expression "uVar10 | 1" identifier | number_literal)) ;) }) (else_clause "else if ((param_3 == uVar3) && (uVar11 <= param_4)) {\n            uVar4 = 0;\n            goto LAB_00057068;\n          }" else (if_statement "if ((param_3 == uVar3) && (uVar11 <= param_4)) {\n            uVar4 = 0;\n            goto LAB_00057068;\n          }" if (parenthesized_expression "((param_3 == uVar3) && (uVar11 <= param_4))" ( (binary_expression "(param_3 == uVar3) && (uVar11 <= param_4)" (parenthesized_expression "(param_3 == uVar3)" ( (binary_expression "param_3 == uVar3" identifier == identifier) )) && (parenthesized_expression "(uVar11 <= param_4)" ( (binary_expression "uVar11 <= param_4" identifier <= identifier) ))) )) (compound_statement "{\n            uVar4 = 0;\n            goto LAB_00057068;\n          }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00057068;" goto statement_identifier ;) })))) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "uVar11 = uVar3 << 0x1f | uVar11 >> 1;" (assignment_expression "uVar11 = uVar3 << 0x1f | uVar11 >> 1" identifier = (binary_expression "uVar3 << 0x1f | uVar11 >> 1" (binary_expression "uVar3 << 0x1f" identifier << number_literal) | (binary_expression "uVar11 >> 1" identifier >> number_literal))) ;) (expression_statement "uVar3 = uVar3 >> 1;" (assignment_expression "uVar3 = uVar3 >> 1" identifier = (binary_expression "uVar3 >> 1" identifier >> number_literal)) ;) }) while (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) ;) }) (else_clause "else {\n        do {\n          do {\n            uVar4 = uVar11 << 1;\n            uVar3 = uVar11 >> 0x1f | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n            uVar11 = uVar4;\n          } while (uVar3 < param_3);\n        } while ((param_3 == uVar3) && (uVar4 <= param_4));\n        uVar10 = 0;\n        do {\n          uVar11 = uVar3 << 0x1f;\n          uVar3 = uVar3 >> 1;\n          uVar4 = uVar11 | uVar4 >> 1;\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar11 = (uint)(param_4 < uVar4);\nLAB_00056df4:\n            param_4 = param_4 - uVar4;\n            param_3 = (param_3 - uVar3) - uVar11;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((uVar3 == param_3) && (uVar4 <= param_4)) {\n            uVar11 = 0;\n            goto LAB_00056df4;\n          }\n          iVar5 = iVar5 + -1;\n        } while (iVar5 != 0);\n      }" else (compound_statement "{\n        do {\n          do {\n            uVar4 = uVar11 << 1;\n            uVar3 = uVar11 >> 0x1f | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n            uVar11 = uVar4;\n          } while (uVar3 < param_3);\n        } while ((param_3 == uVar3) && (uVar4 <= param_4));\n        uVar10 = 0;\n        do {\n          uVar11 = uVar3 << 0x1f;\n          uVar3 = uVar3 >> 1;\n          uVar4 = uVar11 | uVar4 >> 1;\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar11 = (uint)(param_4 < uVar4);\nLAB_00056df4:\n            param_4 = param_4 - uVar4;\n            param_3 = (param_3 - uVar3) - uVar11;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((uVar3 == param_3) && (uVar4 <= param_4)) {\n            uVar11 = 0;\n            goto LAB_00056df4;\n          }\n          iVar5 = iVar5 + -1;\n        } while (iVar5 != 0);\n      }" { (do_statement "do {\n          do {\n            uVar4 = uVar11 << 1;\n            uVar3 = uVar11 >> 0x1f | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n            uVar11 = uVar4;\n          } while (uVar3 < param_3);\n        } while ((param_3 == uVar3) && (uVar4 <= param_4));" do (compound_statement "{\n          do {\n            uVar4 = uVar11 << 1;\n            uVar3 = uVar11 >> 0x1f | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n            uVar11 = uVar4;\n          } while (uVar3 < param_3);\n        }" { (do_statement "do {\n            uVar4 = uVar11 << 1;\n            uVar3 = uVar11 >> 0x1f | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n            uVar11 = uVar4;\n          } while (uVar3 < param_3);" do (compound_statement "{\n            uVar4 = uVar11 << 1;\n            uVar3 = uVar11 >> 0x1f | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n            uVar11 = uVar4;\n          }" { (expression_statement "uVar4 = uVar11 << 1;" (assignment_expression "uVar4 = uVar11 << 1" identifier = (binary_expression "uVar11 << 1" identifier << number_literal)) ;) (expression_statement "uVar3 = uVar11 >> 0x1f | uVar3 << 1;" (assignment_expression "uVar3 = uVar11 >> 0x1f | uVar3 << 1" identifier = (binary_expression "uVar11 >> 0x1f | uVar3 << 1" (binary_expression "uVar11 >> 0x1f" identifier >> number_literal) | (binary_expression "uVar3 << 1" identifier << number_literal))) ;) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (expression_statement "uVar11 = uVar4;" (assignment_expression "uVar11 = uVar4" identifier = identifier) ;) }) while (parenthesized_expression "(uVar3 < param_3)" ( (binary_expression "uVar3 < param_3" identifier < identifier) )) ;) }) while (parenthesized_expression "((param_3 == uVar3) && (uVar4 <= param_4))" ( (binary_expression "(param_3 == uVar3) && (uVar4 <= param_4)" (parenthesized_expression "(param_3 == uVar3)" ( (binary_expression "param_3 == uVar3" identifier == identifier) )) && (parenthesized_expression "(uVar4 <= param_4)" ( (binary_expression "uVar4 <= param_4" identifier <= identifier) ))) )) ;) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (do_statement "do {\n          uVar11 = uVar3 << 0x1f;\n          uVar3 = uVar3 >> 1;\n          uVar4 = uVar11 | uVar4 >> 1;\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar11 = (uint)(param_4 < uVar4);\nLAB_00056df4:\n            param_4 = param_4 - uVar4;\n            param_3 = (param_3 - uVar3) - uVar11;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((uVar3 == param_3) && (uVar4 <= param_4)) {\n            uVar11 = 0;\n            goto LAB_00056df4;\n          }\n          iVar5 = iVar5 + -1;\n        } while (iVar5 != 0);" do (compound_statement "{\n          uVar11 = uVar3 << 0x1f;\n          uVar3 = uVar3 >> 1;\n          uVar4 = uVar11 | uVar4 >> 1;\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar11 = (uint)(param_4 < uVar4);\nLAB_00056df4:\n            param_4 = param_4 - uVar4;\n            param_3 = (param_3 - uVar3) - uVar11;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((uVar3 == param_3) && (uVar4 <= param_4)) {\n            uVar11 = 0;\n            goto LAB_00056df4;\n          }\n          iVar5 = iVar5 + -1;\n        }" { (expression_statement "uVar11 = uVar3 << 0x1f;" (assignment_expression "uVar11 = uVar3 << 0x1f" identifier = (binary_expression "uVar3 << 0x1f" identifier << number_literal)) ;) (expression_statement "uVar3 = uVar3 >> 1;" (assignment_expression "uVar3 = uVar3 >> 1" identifier = (binary_expression "uVar3 >> 1" identifier >> number_literal)) ;) (expression_statement "uVar4 = uVar11 | uVar4 >> 1;" (assignment_expression "uVar4 = uVar11 | uVar4 >> 1" identifier = (binary_expression "uVar11 | uVar4 >> 1" identifier | (binary_expression "uVar4 >> 1" identifier >> number_literal))) ;) (expression_statement "uVar10 = uVar10 << 1;" (assignment_expression "uVar10 = uVar10 << 1" identifier = (binary_expression "uVar10 << 1" identifier << number_literal)) ;) (if_statement "if (uVar3 < param_3) {\n            uVar11 = (uint)(param_4 < uVar4);\nLAB_00056df4:\n            param_4 = param_4 - uVar4;\n            param_3 = (param_3 - uVar3) - uVar11;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((uVar3 == param_3) && (uVar4 <= param_4)) {\n            uVar11 = 0;\n            goto LAB_00056df4;\n          }" if (parenthesized_expression "(uVar3 < param_3)" ( (binary_expression "uVar3 < param_3" identifier < identifier) )) (compound_statement "{\n            uVar11 = (uint)(param_4 < uVar4);\nLAB_00056df4:\n            param_4 = param_4 - uVar4;\n            param_3 = (param_3 - uVar3) - uVar11;\n            uVar10 = uVar10 | 1;\n          }" { (expression_statement "uVar11 = (uint)(param_4 < uVar4);" (assignment_expression "uVar11 = (uint)(param_4 < uVar4)" identifier = (call_expression "(uint)(param_4 < uVar4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_4 < uVar4)" ( (binary_expression "param_4 < uVar4" identifier < identifier) )))) ;) (labeled_statement "LAB_00056df4:\n            param_4 = param_4 - uVar4;" statement_identifier : (expression_statement "param_4 = param_4 - uVar4;" (assignment_expression "param_4 = param_4 - uVar4" identifier = (binary_expression "param_4 - uVar4" identifier - identifier)) ;)) (expression_statement "param_3 = (param_3 - uVar3) - uVar11;" (assignment_expression "param_3 = (param_3 - uVar3) - uVar11" identifier = (binary_expression "(param_3 - uVar3) - uVar11" (parenthesized_expression "(param_3 - uVar3)" ( (binary_expression "param_3 - uVar3" identifier - identifier) )) - identifier)) ;) (expression_statement "uVar10 = uVar10 | 1;" (assignment_expression "uVar10 = uVar10 | 1" identifier = (binary_expression "uVar10 | 1" identifier | number_literal)) ;) }) (else_clause "else if ((uVar3 == param_3) && (uVar4 <= param_4)) {\n            uVar11 = 0;\n            goto LAB_00056df4;\n          }" else (if_statement "if ((uVar3 == param_3) && (uVar4 <= param_4)) {\n            uVar11 = 0;\n            goto LAB_00056df4;\n          }" if (parenthesized_expression "((uVar3 == param_3) && (uVar4 <= param_4))" ( (binary_expression "(uVar3 == param_3) && (uVar4 <= param_4)" (parenthesized_expression "(uVar3 == param_3)" ( (binary_expression "uVar3 == param_3" identifier == identifier) )) && (parenthesized_expression "(uVar4 <= param_4)" ( (binary_expression "uVar4 <= param_4" identifier <= identifier) ))) )) (compound_statement "{\n            uVar11 = 0;\n            goto LAB_00056df4;\n          }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00056df4;" goto statement_identifier ;) })))) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) ;) }))) (if_statement "if (param_3 < 2) {\n        iVar8 = uVar10 * iVar6 + iVar8;\n        iVar9 = uVar10 * iVar7 + iVar9;\n        break;\n      }" if (parenthesized_expression "(param_3 < 2)" ( (binary_expression "param_3 < 2" identifier < number_literal) )) (compound_statement "{\n        iVar8 = uVar10 * iVar6 + iVar8;\n        iVar9 = uVar10 * iVar7 + iVar9;\n        break;\n      }" { (expression_statement "iVar8 = uVar10 * iVar6 + iVar8;" (assignment_expression "iVar8 = uVar10 * iVar6 + iVar8" identifier = (binary_expression "uVar10 * iVar6 + iVar8" (binary_expression "uVar10 * iVar6" identifier * identifier) + identifier)) ;) (expression_statement "iVar9 = uVar10 * iVar7 + iVar9;" (assignment_expression "iVar9 = uVar10 * iVar7 + iVar9" identifier = (binary_expression "uVar10 * iVar7 + iVar9" (binary_expression "uVar10 * iVar7" identifier * identifier) + identifier)) ;) (break_statement "break;" break ;) })) (expression_statement "iVar8 = (uVar10 + 1) * iVar6 + iVar8;" (assignment_expression "iVar8 = (uVar10 + 1) * iVar6 + iVar8" identifier = (binary_expression "(uVar10 + 1) * iVar6 + iVar8" (binary_expression "(uVar10 + 1) * iVar6" (parenthesized_expression "(uVar10 + 1)" ( (binary_expression "uVar10 + 1" identifier + number_literal) )) * identifier) + identifier)) ;) (expression_statement "iVar9 = (uVar10 + 1) * iVar7 + iVar9;" (assignment_expression "iVar9 = (uVar10 + 1) * iVar7 + iVar9" identifier = (binary_expression "(uVar10 + 1) * iVar7 + iVar9" (binary_expression "(uVar10 + 1) * iVar7" (parenthesized_expression "(uVar10 + 1)" ( (binary_expression "uVar10 + 1" identifier + number_literal) )) * identifier) + identifier)) ;) }) (else_clause "else {\n      iVar8 = iVar8 + iVar6;\n      iVar9 = iVar9 + iVar7;\n    }" else (compound_statement "{\n      iVar8 = iVar8 + iVar6;\n      iVar9 = iVar9 + iVar7;\n    }" { (expression_statement "iVar8 = iVar8 + iVar6;" (assignment_expression "iVar8 = iVar8 + iVar6" identifier = (binary_expression "iVar8 + iVar6" identifier + identifier)) ;) (expression_statement "iVar9 = iVar9 + iVar7;" (assignment_expression "iVar9 = iVar9 + iVar7" identifier = (binary_expression "iVar9 + iVar7" identifier + identifier)) ;) }))) })) (goto_statement "goto LAB_00056c2c;" goto statement_identifier ;) (labeled_statement "LAB_00056cfc:\n  uVar11 = uVar11 - uVar3;" statement_identifier : (expression_statement "uVar11 = uVar11 - uVar3;" (assignment_expression "uVar11 = uVar11 - uVar3" identifier = (binary_expression "uVar11 - uVar3" identifier - identifier)) ;)) (if_statement "if (0x1ffff < uVar11) {\n    if (uVar3 < uVar11) {\n      iVar5 = 0;\n      uVar10 = uVar3;\n      if ((int)uVar11 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar11) {\n            uVar11 = uVar11 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar11);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar11) {\n            uVar11 = uVar11 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }\n      if (uVar11 < 0x20000) {\n        iVar8 = iVar6 * uVar4 + iVar8;\n        iVar9 = iVar7 * uVar4 + iVar9;\n        goto LAB_00056c2c;\n      }\n      iVar8 = iVar6 * (uVar4 + 1) + iVar8;\n      iVar9 = iVar7 * (uVar4 + 1) + iVar9;\n    }\n    else {\n      iVar8 = iVar8 + iVar6;\n      iVar9 = iVar9 + iVar7;\n    }\nLAB_00056cd4:\n    uVar3 = uVar3 - uVar11;\n    if (uVar3 < 0x20000) goto LAB_00056c2c;\n    if (uVar11 < uVar3) {\n      iVar5 = 0;\n      uVar10 = uVar11;\n      if ((int)uVar3 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar3) {\n            uVar3 = uVar3 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar3);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar3) {\n            uVar3 = uVar3 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }\n      if (uVar3 < 0x20000) {\n        iVar6 = iVar8 * uVar4 + iVar6;\n        iVar7 = iVar9 * uVar4 + iVar7;\n        goto LAB_00056c2c;\n      }\n      iVar6 = iVar8 * (uVar4 + 1) + iVar6;\n      iVar7 = iVar9 * (uVar4 + 1) + iVar7;\n    }\n    else {\n      iVar6 = iVar6 + iVar8;\n      iVar7 = iVar7 + iVar9;\n    }\n    goto LAB_00056cfc;\n  }" if (parenthesized_expression "(0x1ffff < uVar11)" ( (binary_expression "0x1ffff < uVar11" number_literal < identifier) )) (compound_statement "{\n    if (uVar3 < uVar11) {\n      iVar5 = 0;\n      uVar10 = uVar3;\n      if ((int)uVar11 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar11) {\n            uVar11 = uVar11 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar11);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar11) {\n            uVar11 = uVar11 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }\n      if (uVar11 < 0x20000) {\n        iVar8 = iVar6 * uVar4 + iVar8;\n        iVar9 = iVar7 * uVar4 + iVar9;\n        goto LAB_00056c2c;\n      }\n      iVar8 = iVar6 * (uVar4 + 1) + iVar8;\n      iVar9 = iVar7 * (uVar4 + 1) + iVar9;\n    }\n    else {\n      iVar8 = iVar8 + iVar6;\n      iVar9 = iVar9 + iVar7;\n    }\nLAB_00056cd4:\n    uVar3 = uVar3 - uVar11;\n    if (uVar3 < 0x20000) goto LAB_00056c2c;\n    if (uVar11 < uVar3) {\n      iVar5 = 0;\n      uVar10 = uVar11;\n      if ((int)uVar3 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar3) {\n            uVar3 = uVar3 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar3);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar3) {\n            uVar3 = uVar3 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }\n      if (uVar3 < 0x20000) {\n        iVar6 = iVar8 * uVar4 + iVar6;\n        iVar7 = iVar9 * uVar4 + iVar7;\n        goto LAB_00056c2c;\n      }\n      iVar6 = iVar8 * (uVar4 + 1) + iVar6;\n      iVar7 = iVar9 * (uVar4 + 1) + iVar7;\n    }\n    else {\n      iVar6 = iVar6 + iVar8;\n      iVar7 = iVar7 + iVar9;\n    }\n    goto LAB_00056cfc;\n  }" { (if_statement "if (uVar3 < uVar11) {\n      iVar5 = 0;\n      uVar10 = uVar3;\n      if ((int)uVar11 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar11) {\n            uVar11 = uVar11 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar11);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar11) {\n            uVar11 = uVar11 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }\n      if (uVar11 < 0x20000) {\n        iVar8 = iVar6 * uVar4 + iVar8;\n        iVar9 = iVar7 * uVar4 + iVar9;\n        goto LAB_00056c2c;\n      }\n      iVar8 = iVar6 * (uVar4 + 1) + iVar8;\n      iVar9 = iVar7 * (uVar4 + 1) + iVar9;\n    }\n    else {\n      iVar8 = iVar8 + iVar6;\n      iVar9 = iVar9 + iVar7;\n    }" if (parenthesized_expression "(uVar3 < uVar11)" ( (binary_expression "uVar3 < uVar11" identifier < identifier) )) (compound_statement "{\n      iVar5 = 0;\n      uVar10 = uVar3;\n      if ((int)uVar11 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar11) {\n            uVar11 = uVar11 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar11);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar11) {\n            uVar11 = uVar11 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }\n      if (uVar11 < 0x20000) {\n        iVar8 = iVar6 * uVar4 + iVar8;\n        iVar9 = iVar7 * uVar4 + iVar9;\n        goto LAB_00056c2c;\n      }\n      iVar8 = iVar6 * (uVar4 + 1) + iVar8;\n      iVar9 = iVar7 * (uVar4 + 1) + iVar9;\n    }" { (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (expression_statement "uVar10 = uVar3;" (assignment_expression "uVar10 = uVar3" identifier = identifier) ;) (if_statement "if ((int)uVar11 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar11) {\n            uVar11 = uVar11 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar11);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar11) {\n            uVar11 = uVar11 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }" if (parenthesized_expression "((int)uVar11 < 0)" ( (binary_expression "(int)uVar11 < 0" (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar11) {\n            uVar11 = uVar11 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }" { (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" identifier = number_literal) ;) (for_statement "for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }" for ( ; (binary_expression "-1 < (int)uVar10" number_literal < (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier)) ; (assignment_expression "uVar10 = uVar10 << 1" identifier = (binary_expression "uVar10 << 1" identifier << number_literal)) ) (compound_statement "{\n          iVar5 = iVar5 + 1;\n        }" { (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (do_statement "do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar11) {\n            uVar11 = uVar11 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);" do (compound_statement "{\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar11) {\n            uVar11 = uVar11 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        }" { (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "uVar4 = uVar4 << 1;" (assignment_expression "uVar4 = uVar4 << 1" identifier = (binary_expression "uVar4 << 1" identifier << number_literal)) ;) (if_statement "if (uVar10 <= uVar11) {\n            uVar11 = uVar11 - uVar10;\n            uVar4 = uVar4 | 1;\n          }" if (parenthesized_expression "(uVar10 <= uVar11)" ( (binary_expression "uVar10 <= uVar11" identifier <= identifier) )) (compound_statement "{\n            uVar11 = uVar11 - uVar10;\n            uVar4 = uVar4 | 1;\n          }" { (expression_statement "uVar11 = uVar11 - uVar10;" (assignment_expression "uVar11 = uVar11 - uVar10" identifier = (binary_expression "uVar11 - uVar10" identifier - identifier)) ;) (expression_statement "uVar4 = uVar4 | 1;" (assignment_expression "uVar4 = uVar4 | 1" identifier = (binary_expression "uVar4 | 1" identifier | number_literal)) ;) })) (expression_statement "uVar10 = uVar10 >> 1;" (assignment_expression "uVar10 = uVar10 >> 1" identifier = (binary_expression "uVar10 >> 1" identifier >> number_literal)) ;) }) while (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) ;) }) (else_clause "else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar11);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar11) {\n            uVar11 = uVar11 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }" else (compound_statement "{\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar11);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar11) {\n            uVar11 = uVar11 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }" { (do_statement "do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar11);" do (compound_statement "{\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        }" { (expression_statement "uVar2 = uVar10;" (assignment_expression "uVar2 = uVar10" identifier = identifier) ;) (expression_statement "uVar10 = uVar2 << 1;" (assignment_expression "uVar10 = uVar2 << 1" identifier = (binary_expression "uVar2 << 1" identifier << number_literal)) ;) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar10 <= uVar11)" ( (binary_expression "uVar10 <= uVar11" identifier <= identifier) )) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (expression_statement "uVar2 = uVar2 & 0x7fffffff;" (assignment_expression "uVar2 = uVar2 & 0x7fffffff" identifier = (binary_expression "uVar2 & 0x7fffffff" identifier & number_literal)) ;) (do_statement "do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar11) {\n            uVar11 = uVar11 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);" do (compound_statement "{\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar11) {\n            uVar11 = uVar11 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        }" { (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "uVar4 = uVar4 << 1;" (assignment_expression "uVar4 = uVar4 << 1" identifier = (binary_expression "uVar4 << 1" identifier << number_literal)) ;) (if_statement "if (uVar2 <= uVar11) {\n            uVar11 = uVar11 - uVar2;\n            uVar4 = uVar4 | 1;\n          }" if (parenthesized_expression "(uVar2 <= uVar11)" ( (binary_expression "uVar2 <= uVar11" identifier <= identifier) )) (compound_statement "{\n            uVar11 = uVar11 - uVar2;\n            uVar4 = uVar4 | 1;\n          }" { (expression_statement "uVar11 = uVar11 - uVar2;" (assignment_expression "uVar11 = uVar11 - uVar2" identifier = (binary_expression "uVar11 - uVar2" identifier - identifier)) ;) (expression_statement "uVar4 = uVar4 | 1;" (assignment_expression "uVar4 = uVar4 | 1" identifier = (binary_expression "uVar4 | 1" identifier | number_literal)) ;) })) (expression_statement "uVar2 = uVar2 >> 1;" (assignment_expression "uVar2 = uVar2 >> 1" identifier = (binary_expression "uVar2 >> 1" identifier >> number_literal)) ;) }) while (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) ;) }))) (if_statement "if (uVar11 < 0x20000) {\n        iVar8 = iVar6 * uVar4 + iVar8;\n        iVar9 = iVar7 * uVar4 + iVar9;\n        goto LAB_00056c2c;\n      }" if (parenthesized_expression "(uVar11 < 0x20000)" ( (binary_expression "uVar11 < 0x20000" identifier < number_literal) )) (compound_statement "{\n        iVar8 = iVar6 * uVar4 + iVar8;\n        iVar9 = iVar7 * uVar4 + iVar9;\n        goto LAB_00056c2c;\n      }" { (expression_statement "iVar8 = iVar6 * uVar4 + iVar8;" (assignment_expression "iVar8 = iVar6 * uVar4 + iVar8" identifier = (binary_expression "iVar6 * uVar4 + iVar8" (binary_expression "iVar6 * uVar4" identifier * identifier) + identifier)) ;) (expression_statement "iVar9 = iVar7 * uVar4 + iVar9;" (assignment_expression "iVar9 = iVar7 * uVar4 + iVar9" identifier = (binary_expression "iVar7 * uVar4 + iVar9" (binary_expression "iVar7 * uVar4" identifier * identifier) + identifier)) ;) (goto_statement "goto LAB_00056c2c;" goto statement_identifier ;) })) (expression_statement "iVar8 = iVar6 * (uVar4 + 1) + iVar8;" (assignment_expression "iVar8 = iVar6 * (uVar4 + 1) + iVar8" identifier = (binary_expression "iVar6 * (uVar4 + 1) + iVar8" (binary_expression "iVar6 * (uVar4 + 1)" identifier * (parenthesized_expression "(uVar4 + 1)" ( (binary_expression "uVar4 + 1" identifier + number_literal) ))) + identifier)) ;) (expression_statement "iVar9 = iVar7 * (uVar4 + 1) + iVar9;" (assignment_expression "iVar9 = iVar7 * (uVar4 + 1) + iVar9" identifier = (binary_expression "iVar7 * (uVar4 + 1) + iVar9" (binary_expression "iVar7 * (uVar4 + 1)" identifier * (parenthesized_expression "(uVar4 + 1)" ( (binary_expression "uVar4 + 1" identifier + number_literal) ))) + identifier)) ;) }) (else_clause "else {\n      iVar8 = iVar8 + iVar6;\n      iVar9 = iVar9 + iVar7;\n    }" else (compound_statement "{\n      iVar8 = iVar8 + iVar6;\n      iVar9 = iVar9 + iVar7;\n    }" { (expression_statement "iVar8 = iVar8 + iVar6;" (assignment_expression "iVar8 = iVar8 + iVar6" identifier = (binary_expression "iVar8 + iVar6" identifier + identifier)) ;) (expression_statement "iVar9 = iVar9 + iVar7;" (assignment_expression "iVar9 = iVar9 + iVar7" identifier = (binary_expression "iVar9 + iVar7" identifier + identifier)) ;) }))) (labeled_statement "LAB_00056cd4:\n    uVar3 = uVar3 - uVar11;" statement_identifier : (expression_statement "uVar3 = uVar3 - uVar11;" (assignment_expression "uVar3 = uVar3 - uVar11" identifier = (binary_expression "uVar3 - uVar11" identifier - identifier)) ;)) (if_statement "if (uVar3 < 0x20000) goto LAB_00056c2c;" if (parenthesized_expression "(uVar3 < 0x20000)" ( (binary_expression "uVar3 < 0x20000" identifier < number_literal) )) (goto_statement "goto LAB_00056c2c;" goto statement_identifier ;)) (if_statement "if (uVar11 < uVar3) {\n      iVar5 = 0;\n      uVar10 = uVar11;\n      if ((int)uVar3 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar3) {\n            uVar3 = uVar3 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar3);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar3) {\n            uVar3 = uVar3 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }\n      if (uVar3 < 0x20000) {\n        iVar6 = iVar8 * uVar4 + iVar6;\n        iVar7 = iVar9 * uVar4 + iVar7;\n        goto LAB_00056c2c;\n      }\n      iVar6 = iVar8 * (uVar4 + 1) + iVar6;\n      iVar7 = iVar9 * (uVar4 + 1) + iVar7;\n    }\n    else {\n      iVar6 = iVar6 + iVar8;\n      iVar7 = iVar7 + iVar9;\n    }" if (parenthesized_expression "(uVar11 < uVar3)" ( (binary_expression "uVar11 < uVar3" identifier < identifier) )) (compound_statement "{\n      iVar5 = 0;\n      uVar10 = uVar11;\n      if ((int)uVar3 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar3) {\n            uVar3 = uVar3 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar3);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar3) {\n            uVar3 = uVar3 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }\n      if (uVar3 < 0x20000) {\n        iVar6 = iVar8 * uVar4 + iVar6;\n        iVar7 = iVar9 * uVar4 + iVar7;\n        goto LAB_00056c2c;\n      }\n      iVar6 = iVar8 * (uVar4 + 1) + iVar6;\n      iVar7 = iVar9 * (uVar4 + 1) + iVar7;\n    }" { (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (expression_statement "uVar10 = uVar11;" (assignment_expression "uVar10 = uVar11" identifier = identifier) ;) (if_statement "if ((int)uVar3 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar3) {\n            uVar3 = uVar3 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar3);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar3) {\n            uVar3 = uVar3 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }" if (parenthesized_expression "((int)uVar3 < 0)" ( (binary_expression "(int)uVar3 < 0" (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar3) {\n            uVar3 = uVar3 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }" { (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" identifier = number_literal) ;) (for_statement "for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }" for ( ; (binary_expression "-1 < (int)uVar10" number_literal < (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier)) ; (assignment_expression "uVar10 = uVar10 << 1" identifier = (binary_expression "uVar10 << 1" identifier << number_literal)) ) (compound_statement "{\n          iVar5 = iVar5 + 1;\n        }" { (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (do_statement "do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar3) {\n            uVar3 = uVar3 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);" do (compound_statement "{\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar3) {\n            uVar3 = uVar3 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        }" { (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "uVar4 = uVar4 << 1;" (assignment_expression "uVar4 = uVar4 << 1" identifier = (binary_expression "uVar4 << 1" identifier << number_literal)) ;) (if_statement "if (uVar10 <= uVar3) {\n            uVar3 = uVar3 - uVar10;\n            uVar4 = uVar4 | 1;\n          }" if (parenthesized_expression "(uVar10 <= uVar3)" ( (binary_expression "uVar10 <= uVar3" identifier <= identifier) )) (compound_statement "{\n            uVar3 = uVar3 - uVar10;\n            uVar4 = uVar4 | 1;\n          }" { (expression_statement "uVar3 = uVar3 - uVar10;" (assignment_expression "uVar3 = uVar3 - uVar10" identifier = (binary_expression "uVar3 - uVar10" identifier - identifier)) ;) (expression_statement "uVar4 = uVar4 | 1;" (assignment_expression "uVar4 = uVar4 | 1" identifier = (binary_expression "uVar4 | 1" identifier | number_literal)) ;) })) (expression_statement "uVar10 = uVar10 >> 1;" (assignment_expression "uVar10 = uVar10 >> 1" identifier = (binary_expression "uVar10 >> 1" identifier >> number_literal)) ;) }) while (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) ;) }) (else_clause "else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar3);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar3) {\n            uVar3 = uVar3 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }" else (compound_statement "{\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar3);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar3) {\n            uVar3 = uVar3 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }" { (do_statement "do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar3);" do (compound_statement "{\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        }" { (expression_statement "uVar2 = uVar10;" (assignment_expression "uVar2 = uVar10" identifier = identifier) ;) (expression_statement "uVar10 = uVar2 << 1;" (assignment_expression "uVar10 = uVar2 << 1" identifier = (binary_expression "uVar2 << 1" identifier << number_literal)) ;) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar10 <= uVar3)" ( (binary_expression "uVar10 <= uVar3" identifier <= identifier) )) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (expression_statement "uVar2 = uVar2 & 0x7fffffff;" (assignment_expression "uVar2 = uVar2 & 0x7fffffff" identifier = (binary_expression "uVar2 & 0x7fffffff" identifier & number_literal)) ;) (do_statement "do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar3) {\n            uVar3 = uVar3 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);" do (compound_statement "{\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar3) {\n            uVar3 = uVar3 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        }" { (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "uVar4 = uVar4 << 1;" (assignment_expression "uVar4 = uVar4 << 1" identifier = (binary_expression "uVar4 << 1" identifier << number_literal)) ;) (if_statement "if (uVar2 <= uVar3) {\n            uVar3 = uVar3 - uVar2;\n            uVar4 = uVar4 | 1;\n          }" if (parenthesized_expression "(uVar2 <= uVar3)" ( (binary_expression "uVar2 <= uVar3" identifier <= identifier) )) (compound_statement "{\n            uVar3 = uVar3 - uVar2;\n            uVar4 = uVar4 | 1;\n          }" { (expression_statement "uVar3 = uVar3 - uVar2;" (assignment_expression "uVar3 = uVar3 - uVar2" identifier = (binary_expression "uVar3 - uVar2" identifier - identifier)) ;) (expression_statement "uVar4 = uVar4 | 1;" (assignment_expression "uVar4 = uVar4 | 1" identifier = (binary_expression "uVar4 | 1" identifier | number_literal)) ;) })) (expression_statement "uVar2 = uVar2 >> 1;" (assignment_expression "uVar2 = uVar2 >> 1" identifier = (binary_expression "uVar2 >> 1" identifier >> number_literal)) ;) }) while (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) ;) }))) (if_statement "if (uVar3 < 0x20000) {\n        iVar6 = iVar8 * uVar4 + iVar6;\n        iVar7 = iVar9 * uVar4 + iVar7;\n        goto LAB_00056c2c;\n      }" if (parenthesized_expression "(uVar3 < 0x20000)" ( (binary_expression "uVar3 < 0x20000" identifier < number_literal) )) (compound_statement "{\n        iVar6 = iVar8 * uVar4 + iVar6;\n        iVar7 = iVar9 * uVar4 + iVar7;\n        goto LAB_00056c2c;\n      }" { (expression_statement "iVar6 = iVar8 * uVar4 + iVar6;" (assignment_expression "iVar6 = iVar8 * uVar4 + iVar6" identifier = (binary_expression "iVar8 * uVar4 + iVar6" (binary_expression "iVar8 * uVar4" identifier * identifier) + identifier)) ;) (expression_statement "iVar7 = iVar9 * uVar4 + iVar7;" (assignment_expression "iVar7 = iVar9 * uVar4 + iVar7" identifier = (binary_expression "iVar9 * uVar4 + iVar7" (binary_expression "iVar9 * uVar4" identifier * identifier) + identifier)) ;) (goto_statement "goto LAB_00056c2c;" goto statement_identifier ;) })) (expression_statement "iVar6 = iVar8 * (uVar4 + 1) + iVar6;" (assignment_expression "iVar6 = iVar8 * (uVar4 + 1) + iVar6" identifier = (binary_expression "iVar8 * (uVar4 + 1) + iVar6" (binary_expression "iVar8 * (uVar4 + 1)" identifier * (parenthesized_expression "(uVar4 + 1)" ( (binary_expression "uVar4 + 1" identifier + number_literal) ))) + identifier)) ;) (expression_statement "iVar7 = iVar9 * (uVar4 + 1) + iVar7;" (assignment_expression "iVar7 = iVar9 * (uVar4 + 1) + iVar7" identifier = (binary_expression "iVar9 * (uVar4 + 1) + iVar7" (binary_expression "iVar9 * (uVar4 + 1)" identifier * (parenthesized_expression "(uVar4 + 1)" ( (binary_expression "uVar4 + 1" identifier + number_literal) ))) + identifier)) ;) }) (else_clause "else {\n      iVar6 = iVar6 + iVar8;\n      iVar7 = iVar7 + iVar9;\n    }" else (compound_statement "{\n      iVar6 = iVar6 + iVar8;\n      iVar7 = iVar7 + iVar9;\n    }" { (expression_statement "iVar6 = iVar6 + iVar8;" (assignment_expression "iVar6 = iVar6 + iVar8" identifier = (binary_expression "iVar6 + iVar8" identifier + identifier)) ;) (expression_statement "iVar7 = iVar7 + iVar9;" (assignment_expression "iVar7 = iVar7 + iVar9" identifier = (binary_expression "iVar7 + iVar9" identifier + identifier)) ;) }))) (goto_statement "goto LAB_00056cfc;" goto statement_identifier ;) })) (labeled_statement "LAB_00056c2c:\n  *param_5 = iVar8;" statement_identifier : (expression_statement "*param_5 = iVar8;" (assignment_expression "*param_5 = iVar8" (pointer_expression "*param_5" * identifier) = identifier) ;)) (expression_statement "param_5[1] = iVar6;" (assignment_expression "param_5[1] = iVar6" (subscript_expression "param_5[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[2] = iVar9;" (assignment_expression "param_5[2] = iVar9" (subscript_expression "param_5[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[3] = iVar7;" (assignment_expression "param_5[3] = iVar7" (subscript_expression "param_5[3]" identifier [ number_literal ]) = identifier) ;) (return_statement "return 1;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (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 IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) || (parenthesized_expression ( (binary_expression IDENT < LIT) ))) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT == IDENT) && (parenthesized_expression ( (binary_expression (binary_expression IDENT < IDENT) != LIT) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (goto_statement goto statement_identifier ;)) }))) (while_statement while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) + (binary_expression IDENT * LIT))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (break_statement break ;)) (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 (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (for_statement for ( ; (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) ; (assignment_expression IDENT = (binary_expression IDENT | (binary_expression IDENT << LIT))) ) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == IDENT) )) && (parenthesized_expression ( (binary_expression IDENT <= IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT << LIT) | (binary_expression IDENT >> LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT <= IDENT)) ))) )) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT << LIT) | (binary_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 (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == IDENT) )) && (parenthesized_expression ( (binary_expression IDENT <= IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * IDENT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * IDENT) + IDENT)) ;) (break_statement break ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (break_statement break ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) + (binary_expression IDENT * LIT))) ;) (goto_statement goto statement_identifier ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (for_statement for ( ; (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) ; (assignment_expression IDENT = (binary_expression IDENT | (binary_expression IDENT << LIT))) ) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == IDENT) )) && (parenthesized_expression ( (binary_expression IDENT <= IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT << LIT) | (binary_expression IDENT >> LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> LIT) | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == IDENT) )) && (parenthesized_expression ( (binary_expression IDENT <= IDENT) ))) )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_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 (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == IDENT) )) && (parenthesized_expression ( (binary_expression IDENT <= IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * IDENT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * IDENT) + IDENT)) ;) (break_statement break ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * IDENT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * IDENT) + IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }))) })) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (for_statement for ( ; (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) ; (assignment_expression IDENT = (binary_expression IDENT << LIT)) ) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * IDENT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * IDENT) + IDENT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * (parenthesized_expression ( (binary_expression IDENT + LIT) ))) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * (parenthesized_expression ( (binary_expression IDENT + LIT) ))) + IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_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 (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (for_statement for ( ; (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) ; (assignment_expression IDENT = (binary_expression IDENT << LIT)) ) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * IDENT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * IDENT) + IDENT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * (parenthesized_expression ( (binary_expression IDENT + LIT) ))) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * (parenthesized_expression ( (binary_expression IDENT + LIT) ))) + IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }))) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (return_statement return LIT ;) })))
(function_definition "undefined4 __gmpn_hgcd2(uint param_1,uint param_2,uint param_3,uint param_4,int *param_5)\n\n{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  \n  if ((param_1 < 2) || (param_3 < 2)) {\n    return 0;\n  }\n  if ((param_3 < param_1) || ((param_1 == param_3 && (param_4 < param_2 != 0)))) {\n    param_1 = (param_1 - param_3) - (uint)(param_2 < param_4);\n    param_2 = param_2 - param_4;\n    if (param_1 < 2) {\n      return 0;\n    }\n    iVar9 = 0;\n    iVar6 = 1;\n    iVar7 = 1;\n    iVar8 = 1;\n    if (param_1 < param_3) goto LAB_00056c80;\n  }\n  else {\n    param_3 = param_3 - ((param_4 < param_2) + param_1);\n    param_4 = param_4 - param_2;\n    if (param_3 < 2) {\n      return 0;\n    }\n    iVar9 = 1;\n    iVar6 = 0;\n    iVar7 = 1;\n    iVar8 = 1;\n    if (param_1 < param_3) goto LAB_00056c80;\n  }\n  while (param_1 != param_3) {\n    if (param_1 < 0x10000) {\n      uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;\n      uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;\n      goto LAB_00056cd4;\n    }\n    param_1 = (param_1 - param_3) - (uint)(param_2 < param_4);\n    if (param_1 < 2) break;\n    param_2 = param_2 - param_4;\n    iVar5 = iVar8;\n    iVar1 = iVar9;\n    if (param_3 < param_1) {\n      iVar5 = 0;\n      uVar3 = param_3;\n      uVar11 = param_4;\n      if ((int)param_1 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar2 = 0;\n        do {\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056f78:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((param_1 == uVar3) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056f78;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar10 = uVar11 >> 0x1f;\n            uVar11 = uVar11 << 1;\n            uVar3 = uVar10 | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n          } while (uVar3 < param_1);\n          uVar2 = 0;\n          uVar4 = uVar3;\n        } while ((param_1 == uVar3) && (uVar4 = uVar10, uVar11 <= param_2));\n        do {\n          uVar3 = uVar3 >> 1;\n          uVar11 = uVar4 << 0x1f | uVar11 >> 1;\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056eac:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((uVar3 == param_1) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056eac;\n          }\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar3;\n        } while (iVar5 != 0);\n      }\n      if (param_1 < 2) {\n        iVar6 = iVar8 * uVar2 + iVar6;\n        iVar7 = iVar9 * uVar2 + iVar7;\n        break;\n      }\n      iVar5 = iVar8 * (uVar2 + 1);\n      iVar1 = iVar9 * (uVar2 + 1);\n    }\n    iVar7 = iVar7 + iVar1;\n    iVar6 = iVar6 + iVar5;\n    if (param_1 == param_3) break;\nLAB_00056c80:\n    if (param_3 < 0x10000) {\n      uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;\n      uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;\n      goto LAB_00056cfc;\n    }\n    param_3 = (param_3 - param_1) - (uint)(param_4 < param_2);\n    if (param_3 < 2) break;\n    param_4 = param_4 - param_2;\n    if (param_1 < param_3) {\n      iVar5 = 0;\n      uVar3 = param_1;\n      uVar11 = param_2;\n      if ((int)param_3 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar10 = 0;\n        do {\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar4 = (uint)(param_4 < uVar11);\nLAB_00057068:\n            param_4 = param_4 - uVar11;\n            param_3 = (param_3 - uVar3) - uVar4;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((param_3 == uVar3) && (uVar11 <= param_4)) {\n            uVar4 = 0;\n            goto LAB_00057068;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar4 = uVar11 << 1;\n            uVar3 = uVar11 >> 0x1f | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n            uVar11 = uVar4;\n          } while (uVar3 < param_3);\n        } while ((param_3 == uVar3) && (uVar4 <= param_4));\n        uVar10 = 0;\n        do {\n          uVar11 = uVar3 << 0x1f;\n          uVar3 = uVar3 >> 1;\n          uVar4 = uVar11 | uVar4 >> 1;\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar11 = (uint)(param_4 < uVar4);\nLAB_00056df4:\n            param_4 = param_4 - uVar4;\n            param_3 = (param_3 - uVar3) - uVar11;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((uVar3 == param_3) && (uVar4 <= param_4)) {\n            uVar11 = 0;\n            goto LAB_00056df4;\n          }\n          iVar5 = iVar5 + -1;\n        } while (iVar5 != 0);\n      }\n      if (param_3 < 2) {\n        iVar8 = uVar10 * iVar6 + iVar8;\n        iVar9 = uVar10 * iVar7 + iVar9;\n        break;\n      }\n      iVar8 = (uVar10 + 1) * iVar6 + iVar8;\n      iVar9 = (uVar10 + 1) * iVar7 + iVar9;\n    }\n    else {\n      iVar8 = iVar8 + iVar6;\n      iVar9 = iVar9 + iVar7;\n    }\n  }\n  goto LAB_00056c2c;\nLAB_00056cfc:\n  uVar11 = uVar11 - uVar3;\n  if (0x1ffff < uVar11) {\n    if (uVar3 < uVar11) {\n      iVar5 = 0;\n      uVar10 = uVar3;\n      if ((int)uVar11 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar11) {\n            uVar11 = uVar11 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar11);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar11) {\n            uVar11 = uVar11 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }\n      if (uVar11 < 0x20000) {\n        iVar8 = iVar6 * uVar4 + iVar8;\n        iVar9 = iVar7 * uVar4 + iVar9;\n        goto LAB_00056c2c;\n      }\n      iVar8 = iVar6 * (uVar4 + 1) + iVar8;\n      iVar9 = iVar7 * (uVar4 + 1) + iVar9;\n    }\n    else {\n      iVar8 = iVar8 + iVar6;\n      iVar9 = iVar9 + iVar7;\n    }\nLAB_00056cd4:\n    uVar3 = uVar3 - uVar11;\n    if (uVar3 < 0x20000) goto LAB_00056c2c;\n    if (uVar11 < uVar3) {\n      iVar5 = 0;\n      uVar10 = uVar11;\n      if ((int)uVar3 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar3) {\n            uVar3 = uVar3 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar3);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar3) {\n            uVar3 = uVar3 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }\n      if (uVar3 < 0x20000) {\n        iVar6 = iVar8 * uVar4 + iVar6;\n        iVar7 = iVar9 * uVar4 + iVar7;\n        goto LAB_00056c2c;\n      }\n      iVar6 = iVar8 * (uVar4 + 1) + iVar6;\n      iVar7 = iVar9 * (uVar4 + 1) + iVar7;\n    }\n    else {\n      iVar6 = iVar6 + iVar8;\n      iVar7 = iVar7 + iVar9;\n    }\n    goto LAB_00056cfc;\n  }\nLAB_00056c2c:\n  *param_5 = iVar8;\n  param_5[1] = iVar6;\n  param_5[2] = iVar9;\n  param_5[3] = iVar7;\n  return 1;\n}" (type_identifier "undefined4") (function_declarator "__gmpn_hgcd2(uint param_1,uint param_2,uint param_3,uint param_4,int *param_5)" (identifier "__gmpn_hgcd2") (parameter_list "(uint param_1,uint param_2,uint param_3,uint param_4,int *param_5)" (( "(") (parameter_declaration "uint param_1" (type_identifier "uint") (identifier "param_1")) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) (, ",") (parameter_declaration "uint param_4" (type_identifier "uint") (identifier "param_4")) (, ",") (parameter_declaration "int *param_5" (primitive_type "int") (pointer_declarator "*param_5" (* "*") (identifier "param_5"))) () ")"))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  \n  if ((param_1 < 2) || (param_3 < 2)) {\n    return 0;\n  }\n  if ((param_3 < param_1) || ((param_1 == param_3 && (param_4 < param_2 != 0)))) {\n    param_1 = (param_1 - param_3) - (uint)(param_2 < param_4);\n    param_2 = param_2 - param_4;\n    if (param_1 < 2) {\n      return 0;\n    }\n    iVar9 = 0;\n    iVar6 = 1;\n    iVar7 = 1;\n    iVar8 = 1;\n    if (param_1 < param_3) goto LAB_00056c80;\n  }\n  else {\n    param_3 = param_3 - ((param_4 < param_2) + param_1);\n    param_4 = param_4 - param_2;\n    if (param_3 < 2) {\n      return 0;\n    }\n    iVar9 = 1;\n    iVar6 = 0;\n    iVar7 = 1;\n    iVar8 = 1;\n    if (param_1 < param_3) goto LAB_00056c80;\n  }\n  while (param_1 != param_3) {\n    if (param_1 < 0x10000) {\n      uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;\n      uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;\n      goto LAB_00056cd4;\n    }\n    param_1 = (param_1 - param_3) - (uint)(param_2 < param_4);\n    if (param_1 < 2) break;\n    param_2 = param_2 - param_4;\n    iVar5 = iVar8;\n    iVar1 = iVar9;\n    if (param_3 < param_1) {\n      iVar5 = 0;\n      uVar3 = param_3;\n      uVar11 = param_4;\n      if ((int)param_1 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar2 = 0;\n        do {\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056f78:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((param_1 == uVar3) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056f78;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar10 = uVar11 >> 0x1f;\n            uVar11 = uVar11 << 1;\n            uVar3 = uVar10 | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n          } while (uVar3 < param_1);\n          uVar2 = 0;\n          uVar4 = uVar3;\n        } while ((param_1 == uVar3) && (uVar4 = uVar10, uVar11 <= param_2));\n        do {\n          uVar3 = uVar3 >> 1;\n          uVar11 = uVar4 << 0x1f | uVar11 >> 1;\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056eac:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((uVar3 == param_1) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056eac;\n          }\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar3;\n        } while (iVar5 != 0);\n      }\n      if (param_1 < 2) {\n        iVar6 = iVar8 * uVar2 + iVar6;\n        iVar7 = iVar9 * uVar2 + iVar7;\n        break;\n      }\n      iVar5 = iVar8 * (uVar2 + 1);\n      iVar1 = iVar9 * (uVar2 + 1);\n    }\n    iVar7 = iVar7 + iVar1;\n    iVar6 = iVar6 + iVar5;\n    if (param_1 == param_3) break;\nLAB_00056c80:\n    if (param_3 < 0x10000) {\n      uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;\n      uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;\n      goto LAB_00056cfc;\n    }\n    param_3 = (param_3 - param_1) - (uint)(param_4 < param_2);\n    if (param_3 < 2) break;\n    param_4 = param_4 - param_2;\n    if (param_1 < param_3) {\n      iVar5 = 0;\n      uVar3 = param_1;\n      uVar11 = param_2;\n      if ((int)param_3 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar10 = 0;\n        do {\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar4 = (uint)(param_4 < uVar11);\nLAB_00057068:\n            param_4 = param_4 - uVar11;\n            param_3 = (param_3 - uVar3) - uVar4;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((param_3 == uVar3) && (uVar11 <= param_4)) {\n            uVar4 = 0;\n            goto LAB_00057068;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar4 = uVar11 << 1;\n            uVar3 = uVar11 >> 0x1f | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n            uVar11 = uVar4;\n          } while (uVar3 < param_3);\n        } while ((param_3 == uVar3) && (uVar4 <= param_4));\n        uVar10 = 0;\n        do {\n          uVar11 = uVar3 << 0x1f;\n          uVar3 = uVar3 >> 1;\n          uVar4 = uVar11 | uVar4 >> 1;\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar11 = (uint)(param_4 < uVar4);\nLAB_00056df4:\n            param_4 = param_4 - uVar4;\n            param_3 = (param_3 - uVar3) - uVar11;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((uVar3 == param_3) && (uVar4 <= param_4)) {\n            uVar11 = 0;\n            goto LAB_00056df4;\n          }\n          iVar5 = iVar5 + -1;\n        } while (iVar5 != 0);\n      }\n      if (param_3 < 2) {\n        iVar8 = uVar10 * iVar6 + iVar8;\n        iVar9 = uVar10 * iVar7 + iVar9;\n        break;\n      }\n      iVar8 = (uVar10 + 1) * iVar6 + iVar8;\n      iVar9 = (uVar10 + 1) * iVar7 + iVar9;\n    }\n    else {\n      iVar8 = iVar8 + iVar6;\n      iVar9 = iVar9 + iVar7;\n    }\n  }\n  goto LAB_00056c2c;\nLAB_00056cfc:\n  uVar11 = uVar11 - uVar3;\n  if (0x1ffff < uVar11) {\n    if (uVar3 < uVar11) {\n      iVar5 = 0;\n      uVar10 = uVar3;\n      if ((int)uVar11 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar11) {\n            uVar11 = uVar11 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar11);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar11) {\n            uVar11 = uVar11 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }\n      if (uVar11 < 0x20000) {\n        iVar8 = iVar6 * uVar4 + iVar8;\n        iVar9 = iVar7 * uVar4 + iVar9;\n        goto LAB_00056c2c;\n      }\n      iVar8 = iVar6 * (uVar4 + 1) + iVar8;\n      iVar9 = iVar7 * (uVar4 + 1) + iVar9;\n    }\n    else {\n      iVar8 = iVar8 + iVar6;\n      iVar9 = iVar9 + iVar7;\n    }\nLAB_00056cd4:\n    uVar3 = uVar3 - uVar11;\n    if (uVar3 < 0x20000) goto LAB_00056c2c;\n    if (uVar11 < uVar3) {\n      iVar5 = 0;\n      uVar10 = uVar11;\n      if ((int)uVar3 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar3) {\n            uVar3 = uVar3 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar3);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar3) {\n            uVar3 = uVar3 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }\n      if (uVar3 < 0x20000) {\n        iVar6 = iVar8 * uVar4 + iVar6;\n        iVar7 = iVar9 * uVar4 + iVar7;\n        goto LAB_00056c2c;\n      }\n      iVar6 = iVar8 * (uVar4 + 1) + iVar6;\n      iVar7 = iVar9 * (uVar4 + 1) + iVar7;\n    }\n    else {\n      iVar6 = iVar6 + iVar8;\n      iVar7 = iVar7 + iVar9;\n    }\n    goto LAB_00056cfc;\n  }\nLAB_00056c2c:\n  *param_5 = iVar8;\n  param_5[1] = iVar6;\n  param_5[2] = iVar9;\n  param_5[3] = iVar7;\n  return 1;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (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 "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (if_statement "if ((param_1 < 2) || (param_3 < 2)) {\n    return 0;\n  }" (if "if") (parenthesized_expression "((param_1 < 2) || (param_3 < 2))" (( "(") (binary_expression "(param_1 < 2) || (param_3 < 2)" (parenthesized_expression "(param_1 < 2)" (( "(") (binary_expression "param_1 < 2" (identifier "param_1") (< "<") (number_literal "2")) () ")")) (|| "||") (parenthesized_expression "(param_3 < 2)" (( "(") (binary_expression "param_3 < 2" (identifier "param_3") (< "<") (number_literal "2")) () ")"))) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if ((param_3 < param_1) || ((param_1 == param_3 && (param_4 < param_2 != 0)))) {\n    param_1 = (param_1 - param_3) - (uint)(param_2 < param_4);\n    param_2 = param_2 - param_4;\n    if (param_1 < 2) {\n      return 0;\n    }\n    iVar9 = 0;\n    iVar6 = 1;\n    iVar7 = 1;\n    iVar8 = 1;\n    if (param_1 < param_3) goto LAB_00056c80;\n  }\n  else {\n    param_3 = param_3 - ((param_4 < param_2) + param_1);\n    param_4 = param_4 - param_2;\n    if (param_3 < 2) {\n      return 0;\n    }\n    iVar9 = 1;\n    iVar6 = 0;\n    iVar7 = 1;\n    iVar8 = 1;\n    if (param_1 < param_3) goto LAB_00056c80;\n  }" (if "if") (parenthesized_expression "((param_3 < param_1) || ((param_1 == param_3 && (param_4 < param_2 != 0))))" (( "(") (binary_expression "(param_3 < param_1) || ((param_1 == param_3 && (param_4 < param_2 != 0)))" (parenthesized_expression "(param_3 < param_1)" (( "(") (binary_expression "param_3 < param_1" (identifier "param_3") (< "<") (identifier "param_1")) () ")")) (|| "||") (parenthesized_expression "((param_1 == param_3 && (param_4 < param_2 != 0)))" (( "(") (parenthesized_expression "(param_1 == param_3 && (param_4 < param_2 != 0))" (( "(") (binary_expression "param_1 == param_3 && (param_4 < param_2 != 0)" (binary_expression "param_1 == param_3" (identifier "param_1") (== "==") (identifier "param_3")) (&& "&&") (parenthesized_expression "(param_4 < param_2 != 0)" (( "(") (binary_expression "param_4 < param_2 != 0" (binary_expression "param_4 < param_2" (identifier "param_4") (< "<") (identifier "param_2")) (!= "!=") (number_literal "0")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n    param_1 = (param_1 - param_3) - (uint)(param_2 < param_4);\n    param_2 = param_2 - param_4;\n    if (param_1 < 2) {\n      return 0;\n    }\n    iVar9 = 0;\n    iVar6 = 1;\n    iVar7 = 1;\n    iVar8 = 1;\n    if (param_1 < param_3) goto LAB_00056c80;\n  }" ({ "{") (expression_statement "param_1 = (param_1 - param_3) - (uint)(param_2 < param_4);" (assignment_expression "param_1 = (param_1 - param_3) - (uint)(param_2 < param_4)" (identifier "param_1") (= "=") (binary_expression "(param_1 - param_3) - (uint)(param_2 < param_4)" (parenthesized_expression "(param_1 - param_3)" (( "(") (binary_expression "param_1 - param_3" (identifier "param_1") (- "-") (identifier "param_3")) () ")")) (- "-") (call_expression "(uint)(param_2 < param_4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_2 < param_4)" (( "(") (binary_expression "param_2 < param_4" (identifier "param_2") (< "<") (identifier "param_4")) () ")"))))) (; ";")) (expression_statement "param_2 = param_2 - param_4;" (assignment_expression "param_2 = param_2 - param_4" (identifier "param_2") (= "=") (binary_expression "param_2 - param_4" (identifier "param_2") (- "-") (identifier "param_4"))) (; ";")) (if_statement "if (param_1 < 2) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(param_1 < 2)" (( "(") (binary_expression "param_1 < 2" (identifier "param_1") (< "<") (number_literal "2")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" (identifier "iVar9") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" (identifier "iVar6") (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar7 = 1;" (assignment_expression "iVar7 = 1" (identifier "iVar7") (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar8 = 1;" (assignment_expression "iVar8 = 1" (identifier "iVar8") (= "=") (number_literal "1")) (; ";")) (if_statement "if (param_1 < param_3) goto LAB_00056c80;" (if "if") (parenthesized_expression "(param_1 < param_3)" (( "(") (binary_expression "param_1 < param_3" (identifier "param_1") (< "<") (identifier "param_3")) () ")")) (goto_statement "goto LAB_00056c80;" (goto "goto") (statement_identifier "LAB_00056c80") (; ";"))) (} "}")) (else_clause "else {\n    param_3 = param_3 - ((param_4 < param_2) + param_1);\n    param_4 = param_4 - param_2;\n    if (param_3 < 2) {\n      return 0;\n    }\n    iVar9 = 1;\n    iVar6 = 0;\n    iVar7 = 1;\n    iVar8 = 1;\n    if (param_1 < param_3) goto LAB_00056c80;\n  }" (else "else") (compound_statement "{\n    param_3 = param_3 - ((param_4 < param_2) + param_1);\n    param_4 = param_4 - param_2;\n    if (param_3 < 2) {\n      return 0;\n    }\n    iVar9 = 1;\n    iVar6 = 0;\n    iVar7 = 1;\n    iVar8 = 1;\n    if (param_1 < param_3) goto LAB_00056c80;\n  }" ({ "{") (expression_statement "param_3 = param_3 - ((param_4 < param_2) + param_1);" (assignment_expression "param_3 = param_3 - ((param_4 < param_2) + param_1)" (identifier "param_3") (= "=") (binary_expression "param_3 - ((param_4 < param_2) + param_1)" (identifier "param_3") (- "-") (parenthesized_expression "((param_4 < param_2) + param_1)" (( "(") (binary_expression "(param_4 < param_2) + param_1" (parenthesized_expression "(param_4 < param_2)" (( "(") (binary_expression "param_4 < param_2" (identifier "param_4") (< "<") (identifier "param_2")) () ")")) (+ "+") (identifier "param_1")) () ")")))) (; ";")) (expression_statement "param_4 = param_4 - param_2;" (assignment_expression "param_4 = param_4 - param_2" (identifier "param_4") (= "=") (binary_expression "param_4 - param_2" (identifier "param_4") (- "-") (identifier "param_2"))) (; ";")) (if_statement "if (param_3 < 2) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(param_3 < 2)" (( "(") (binary_expression "param_3 < 2" (identifier "param_3") (< "<") (number_literal "2")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar9 = 1;" (assignment_expression "iVar9 = 1" (identifier "iVar9") (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" (identifier "iVar6") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar7 = 1;" (assignment_expression "iVar7 = 1" (identifier "iVar7") (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar8 = 1;" (assignment_expression "iVar8 = 1" (identifier "iVar8") (= "=") (number_literal "1")) (; ";")) (if_statement "if (param_1 < param_3) goto LAB_00056c80;" (if "if") (parenthesized_expression "(param_1 < param_3)" (( "(") (binary_expression "param_1 < param_3" (identifier "param_1") (< "<") (identifier "param_3")) () ")")) (goto_statement "goto LAB_00056c80;" (goto "goto") (statement_identifier "LAB_00056c80") (; ";"))) (} "}")))) (while_statement "while (param_1 != param_3) {\n    if (param_1 < 0x10000) {\n      uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;\n      uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;\n      goto LAB_00056cd4;\n    }\n    param_1 = (param_1 - param_3) - (uint)(param_2 < param_4);\n    if (param_1 < 2) break;\n    param_2 = param_2 - param_4;\n    iVar5 = iVar8;\n    iVar1 = iVar9;\n    if (param_3 < param_1) {\n      iVar5 = 0;\n      uVar3 = param_3;\n      uVar11 = param_4;\n      if ((int)param_1 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar2 = 0;\n        do {\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056f78:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((param_1 == uVar3) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056f78;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar10 = uVar11 >> 0x1f;\n            uVar11 = uVar11 << 1;\n            uVar3 = uVar10 | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n          } while (uVar3 < param_1);\n          uVar2 = 0;\n          uVar4 = uVar3;\n        } while ((param_1 == uVar3) && (uVar4 = uVar10, uVar11 <= param_2));\n        do {\n          uVar3 = uVar3 >> 1;\n          uVar11 = uVar4 << 0x1f | uVar11 >> 1;\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056eac:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((uVar3 == param_1) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056eac;\n          }\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar3;\n        } while (iVar5 != 0);\n      }\n      if (param_1 < 2) {\n        iVar6 = iVar8 * uVar2 + iVar6;\n        iVar7 = iVar9 * uVar2 + iVar7;\n        break;\n      }\n      iVar5 = iVar8 * (uVar2 + 1);\n      iVar1 = iVar9 * (uVar2 + 1);\n    }\n    iVar7 = iVar7 + iVar1;\n    iVar6 = iVar6 + iVar5;\n    if (param_1 == param_3) break;\nLAB_00056c80:\n    if (param_3 < 0x10000) {\n      uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;\n      uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;\n      goto LAB_00056cfc;\n    }\n    param_3 = (param_3 - param_1) - (uint)(param_4 < param_2);\n    if (param_3 < 2) break;\n    param_4 = param_4 - param_2;\n    if (param_1 < param_3) {\n      iVar5 = 0;\n      uVar3 = param_1;\n      uVar11 = param_2;\n      if ((int)param_3 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar10 = 0;\n        do {\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar4 = (uint)(param_4 < uVar11);\nLAB_00057068:\n            param_4 = param_4 - uVar11;\n            param_3 = (param_3 - uVar3) - uVar4;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((param_3 == uVar3) && (uVar11 <= param_4)) {\n            uVar4 = 0;\n            goto LAB_00057068;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar4 = uVar11 << 1;\n            uVar3 = uVar11 >> 0x1f | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n            uVar11 = uVar4;\n          } while (uVar3 < param_3);\n        } while ((param_3 == uVar3) && (uVar4 <= param_4));\n        uVar10 = 0;\n        do {\n          uVar11 = uVar3 << 0x1f;\n          uVar3 = uVar3 >> 1;\n          uVar4 = uVar11 | uVar4 >> 1;\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar11 = (uint)(param_4 < uVar4);\nLAB_00056df4:\n            param_4 = param_4 - uVar4;\n            param_3 = (param_3 - uVar3) - uVar11;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((uVar3 == param_3) && (uVar4 <= param_4)) {\n            uVar11 = 0;\n            goto LAB_00056df4;\n          }\n          iVar5 = iVar5 + -1;\n        } while (iVar5 != 0);\n      }\n      if (param_3 < 2) {\n        iVar8 = uVar10 * iVar6 + iVar8;\n        iVar9 = uVar10 * iVar7 + iVar9;\n        break;\n      }\n      iVar8 = (uVar10 + 1) * iVar6 + iVar8;\n      iVar9 = (uVar10 + 1) * iVar7 + iVar9;\n    }\n    else {\n      iVar8 = iVar8 + iVar6;\n      iVar9 = iVar9 + iVar7;\n    }\n  }" (while "while") (parenthesized_expression "(param_1 != param_3)" (( "(") (binary_expression "param_1 != param_3" (identifier "param_1") (!= "!=") (identifier "param_3")) () ")")) (compound_statement "{\n    if (param_1 < 0x10000) {\n      uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;\n      uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;\n      goto LAB_00056cd4;\n    }\n    param_1 = (param_1 - param_3) - (uint)(param_2 < param_4);\n    if (param_1 < 2) break;\n    param_2 = param_2 - param_4;\n    iVar5 = iVar8;\n    iVar1 = iVar9;\n    if (param_3 < param_1) {\n      iVar5 = 0;\n      uVar3 = param_3;\n      uVar11 = param_4;\n      if ((int)param_1 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar2 = 0;\n        do {\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056f78:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((param_1 == uVar3) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056f78;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar10 = uVar11 >> 0x1f;\n            uVar11 = uVar11 << 1;\n            uVar3 = uVar10 | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n          } while (uVar3 < param_1);\n          uVar2 = 0;\n          uVar4 = uVar3;\n        } while ((param_1 == uVar3) && (uVar4 = uVar10, uVar11 <= param_2));\n        do {\n          uVar3 = uVar3 >> 1;\n          uVar11 = uVar4 << 0x1f | uVar11 >> 1;\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056eac:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((uVar3 == param_1) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056eac;\n          }\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar3;\n        } while (iVar5 != 0);\n      }\n      if (param_1 < 2) {\n        iVar6 = iVar8 * uVar2 + iVar6;\n        iVar7 = iVar9 * uVar2 + iVar7;\n        break;\n      }\n      iVar5 = iVar8 * (uVar2 + 1);\n      iVar1 = iVar9 * (uVar2 + 1);\n    }\n    iVar7 = iVar7 + iVar1;\n    iVar6 = iVar6 + iVar5;\n    if (param_1 == param_3) break;\nLAB_00056c80:\n    if (param_3 < 0x10000) {\n      uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;\n      uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;\n      goto LAB_00056cfc;\n    }\n    param_3 = (param_3 - param_1) - (uint)(param_4 < param_2);\n    if (param_3 < 2) break;\n    param_4 = param_4 - param_2;\n    if (param_1 < param_3) {\n      iVar5 = 0;\n      uVar3 = param_1;\n      uVar11 = param_2;\n      if ((int)param_3 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar10 = 0;\n        do {\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar4 = (uint)(param_4 < uVar11);\nLAB_00057068:\n            param_4 = param_4 - uVar11;\n            param_3 = (param_3 - uVar3) - uVar4;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((param_3 == uVar3) && (uVar11 <= param_4)) {\n            uVar4 = 0;\n            goto LAB_00057068;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar4 = uVar11 << 1;\n            uVar3 = uVar11 >> 0x1f | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n            uVar11 = uVar4;\n          } while (uVar3 < param_3);\n        } while ((param_3 == uVar3) && (uVar4 <= param_4));\n        uVar10 = 0;\n        do {\n          uVar11 = uVar3 << 0x1f;\n          uVar3 = uVar3 >> 1;\n          uVar4 = uVar11 | uVar4 >> 1;\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar11 = (uint)(param_4 < uVar4);\nLAB_00056df4:\n            param_4 = param_4 - uVar4;\n            param_3 = (param_3 - uVar3) - uVar11;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((uVar3 == param_3) && (uVar4 <= param_4)) {\n            uVar11 = 0;\n            goto LAB_00056df4;\n          }\n          iVar5 = iVar5 + -1;\n        } while (iVar5 != 0);\n      }\n      if (param_3 < 2) {\n        iVar8 = uVar10 * iVar6 + iVar8;\n        iVar9 = uVar10 * iVar7 + iVar9;\n        break;\n      }\n      iVar8 = (uVar10 + 1) * iVar6 + iVar8;\n      iVar9 = (uVar10 + 1) * iVar7 + iVar9;\n    }\n    else {\n      iVar8 = iVar8 + iVar6;\n      iVar9 = iVar9 + iVar7;\n    }\n  }" ({ "{") (if_statement "if (param_1 < 0x10000) {\n      uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;\n      uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;\n      goto LAB_00056cd4;\n    }" (if "if") (parenthesized_expression "(param_1 < 0x10000)" (( "(") (binary_expression "param_1 < 0x10000" (identifier "param_1") (< "<") (number_literal "0x10000")) () ")")) (compound_statement "{\n      uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;\n      uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;\n      goto LAB_00056cd4;\n    }" ({ "{") (expression_statement "uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;" (assignment_expression "uVar3 = (param_2 >> 0x10) + param_1 * 0x10000" (identifier "uVar3") (= "=") (binary_expression "(param_2 >> 0x10) + param_1 * 0x10000" (parenthesized_expression "(param_2 >> 0x10)" (( "(") (binary_expression "param_2 >> 0x10" (identifier "param_2") (>> ">>") (number_literal "0x10")) () ")")) (+ "+") (binary_expression "param_1 * 0x10000" (identifier "param_1") (* "*") (number_literal "0x10000")))) (; ";")) (expression_statement "uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;" (assignment_expression "uVar11 = (param_4 >> 0x10) + param_3 * 0x10000" (identifier "uVar11") (= "=") (binary_expression "(param_4 >> 0x10) + param_3 * 0x10000" (parenthesized_expression "(param_4 >> 0x10)" (( "(") (binary_expression "param_4 >> 0x10" (identifier "param_4") (>> ">>") (number_literal "0x10")) () ")")) (+ "+") (binary_expression "param_3 * 0x10000" (identifier "param_3") (* "*") (number_literal "0x10000")))) (; ";")) (goto_statement "goto LAB_00056cd4;" (goto "goto") (statement_identifier "LAB_00056cd4") (; ";")) (} "}"))) (expression_statement "param_1 = (param_1 - param_3) - (uint)(param_2 < param_4);" (assignment_expression "param_1 = (param_1 - param_3) - (uint)(param_2 < param_4)" (identifier "param_1") (= "=") (binary_expression "(param_1 - param_3) - (uint)(param_2 < param_4)" (parenthesized_expression "(param_1 - param_3)" (( "(") (binary_expression "param_1 - param_3" (identifier "param_1") (- "-") (identifier "param_3")) () ")")) (- "-") (call_expression "(uint)(param_2 < param_4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_2 < param_4)" (( "(") (binary_expression "param_2 < param_4" (identifier "param_2") (< "<") (identifier "param_4")) () ")"))))) (; ";")) (if_statement "if (param_1 < 2) break;" (if "if") (parenthesized_expression "(param_1 < 2)" (( "(") (binary_expression "param_1 < 2" (identifier "param_1") (< "<") (number_literal "2")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "param_2 = param_2 - param_4;" (assignment_expression "param_2 = param_2 - param_4" (identifier "param_2") (= "=") (binary_expression "param_2 - param_4" (identifier "param_2") (- "-") (identifier "param_4"))) (; ";")) (expression_statement "iVar5 = iVar8;" (assignment_expression "iVar5 = iVar8" (identifier "iVar5") (= "=") (identifier "iVar8")) (; ";")) (expression_statement "iVar1 = iVar9;" (assignment_expression "iVar1 = iVar9" (identifier "iVar1") (= "=") (identifier "iVar9")) (; ";")) (if_statement "if (param_3 < param_1) {\n      iVar5 = 0;\n      uVar3 = param_3;\n      uVar11 = param_4;\n      if ((int)param_1 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar2 = 0;\n        do {\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056f78:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((param_1 == uVar3) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056f78;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar10 = uVar11 >> 0x1f;\n            uVar11 = uVar11 << 1;\n            uVar3 = uVar10 | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n          } while (uVar3 < param_1);\n          uVar2 = 0;\n          uVar4 = uVar3;\n        } while ((param_1 == uVar3) && (uVar4 = uVar10, uVar11 <= param_2));\n        do {\n          uVar3 = uVar3 >> 1;\n          uVar11 = uVar4 << 0x1f | uVar11 >> 1;\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056eac:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((uVar3 == param_1) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056eac;\n          }\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar3;\n        } while (iVar5 != 0);\n      }\n      if (param_1 < 2) {\n        iVar6 = iVar8 * uVar2 + iVar6;\n        iVar7 = iVar9 * uVar2 + iVar7;\n        break;\n      }\n      iVar5 = iVar8 * (uVar2 + 1);\n      iVar1 = iVar9 * (uVar2 + 1);\n    }" (if "if") (parenthesized_expression "(param_3 < param_1)" (( "(") (binary_expression "param_3 < param_1" (identifier "param_3") (< "<") (identifier "param_1")) () ")")) (compound_statement "{\n      iVar5 = 0;\n      uVar3 = param_3;\n      uVar11 = param_4;\n      if ((int)param_1 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar2 = 0;\n        do {\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056f78:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((param_1 == uVar3) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056f78;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar10 = uVar11 >> 0x1f;\n            uVar11 = uVar11 << 1;\n            uVar3 = uVar10 | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n          } while (uVar3 < param_1);\n          uVar2 = 0;\n          uVar4 = uVar3;\n        } while ((param_1 == uVar3) && (uVar4 = uVar10, uVar11 <= param_2));\n        do {\n          uVar3 = uVar3 >> 1;\n          uVar11 = uVar4 << 0x1f | uVar11 >> 1;\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056eac:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((uVar3 == param_1) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056eac;\n          }\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar3;\n        } while (iVar5 != 0);\n      }\n      if (param_1 < 2) {\n        iVar6 = iVar8 * uVar2 + iVar6;\n        iVar7 = iVar9 * uVar2 + iVar7;\n        break;\n      }\n      iVar5 = iVar8 * (uVar2 + 1);\n      iVar1 = iVar9 * (uVar2 + 1);\n    }" ({ "{") (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" (identifier "iVar5") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar3 = param_3;" (assignment_expression "uVar3 = param_3" (identifier "uVar3") (= "=") (identifier "param_3")) (; ";")) (expression_statement "uVar11 = param_4;" (assignment_expression "uVar11 = param_4" (identifier "uVar11") (= "=") (identifier "param_4")) (; ";")) (if_statement "if ((int)param_1 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar2 = 0;\n        do {\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056f78:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((param_1 == uVar3) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056f78;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar10 = uVar11 >> 0x1f;\n            uVar11 = uVar11 << 1;\n            uVar3 = uVar10 | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n          } while (uVar3 < param_1);\n          uVar2 = 0;\n          uVar4 = uVar3;\n        } while ((param_1 == uVar3) && (uVar4 = uVar10, uVar11 <= param_2));\n        do {\n          uVar3 = uVar3 >> 1;\n          uVar11 = uVar4 << 0x1f | uVar11 >> 1;\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056eac:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((uVar3 == param_1) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056eac;\n          }\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar3;\n        } while (iVar5 != 0);\n      }" (if "if") (parenthesized_expression "((int)param_1 < 0)" (( "(") (binary_expression "(int)param_1 < 0" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar2 = 0;\n        do {\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056f78:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((param_1 == uVar3) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056f78;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }" ({ "{") (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" (identifier "iVar5") (= "=") (number_literal "1")) (; ";")) (for_statement "for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }" (for "for") (( "(") (; ";") (binary_expression "-1 < (int)uVar3" (number_literal "-1") (< "<") (cast_expression "(int)uVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar3"))) (; ";") (assignment_expression "uVar3 = uVar10 | uVar3 << 1" (identifier "uVar3") (= "=") (binary_expression "uVar10 | uVar3 << 1" (identifier "uVar10") (| "|") (binary_expression "uVar3 << 1" (identifier "uVar3") (<< "<<") (number_literal "1")))) () ")") (compound_statement "{\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }" ({ "{") (expression_statement "uVar10 = uVar11 >> 0x1f;" (assignment_expression "uVar10 = uVar11 >> 0x1f" (identifier "uVar10") (= "=") (binary_expression "uVar11 >> 0x1f" (identifier "uVar11") (>> ">>") (number_literal "0x1f"))) (; ";")) (expression_statement "uVar11 = uVar11 << 1;" (assignment_expression "uVar11 = uVar11 << 1" (identifier "uVar11") (= "=") (binary_expression "uVar11 << 1" (identifier "uVar11") (<< "<<") (number_literal "1"))) (; ";")) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + 1" (identifier "iVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" (identifier "uVar2") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056f78:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((param_1 == uVar3) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056f78;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);" (do "do") (compound_statement "{\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056f78:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((param_1 == uVar3) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056f78;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        }" ({ "{") (expression_statement "uVar2 = uVar2 << 1;" (assignment_expression "uVar2 = uVar2 << 1" (identifier "uVar2") (= "=") (binary_expression "uVar2 << 1" (identifier "uVar2") (<< "<<") (number_literal "1"))) (; ";")) (if_statement "if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056f78:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((param_1 == uVar3) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056f78;\n          }" (if "if") (parenthesized_expression "(uVar3 < param_1)" (( "(") (binary_expression "uVar3 < param_1" (identifier "uVar3") (< "<") (identifier "param_1")) () ")")) (compound_statement "{\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056f78:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }" ({ "{") (expression_statement "uVar10 = (uint)(param_2 < uVar11);" (assignment_expression "uVar10 = (uint)(param_2 < uVar11)" (identifier "uVar10") (= "=") (call_expression "(uint)(param_2 < uVar11)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_2 < uVar11)" (( "(") (binary_expression "param_2 < uVar11" (identifier "param_2") (< "<") (identifier "uVar11")) () ")")))) (; ";")) (labeled_statement "LAB_00056f78:\n            param_2 = param_2 - uVar11;" (statement_identifier "LAB_00056f78") (: ":") (expression_statement "param_2 = param_2 - uVar11;" (assignment_expression "param_2 = param_2 - uVar11" (identifier "param_2") (= "=") (binary_expression "param_2 - uVar11" (identifier "param_2") (- "-") (identifier "uVar11"))) (; ";"))) (expression_statement "param_1 = (param_1 - uVar3) - uVar10;" (assignment_expression "param_1 = (param_1 - uVar3) - uVar10" (identifier "param_1") (= "=") (binary_expression "(param_1 - uVar3) - uVar10" (parenthesized_expression "(param_1 - uVar3)" (( "(") (binary_expression "param_1 - uVar3" (identifier "param_1") (- "-") (identifier "uVar3")) () ")")) (- "-") (identifier "uVar10"))) (; ";")) (expression_statement "uVar2 = uVar2 | 1;" (assignment_expression "uVar2 = uVar2 | 1" (identifier "uVar2") (= "=") (binary_expression "uVar2 | 1" (identifier "uVar2") (| "|") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else if ((param_1 == uVar3) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056f78;\n          }" (else "else") (if_statement "if ((param_1 == uVar3) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056f78;\n          }" (if "if") (parenthesized_expression "((param_1 == uVar3) && (uVar11 <= param_2))" (( "(") (binary_expression "(param_1 == uVar3) && (uVar11 <= param_2)" (parenthesized_expression "(param_1 == uVar3)" (( "(") (binary_expression "param_1 == uVar3" (identifier "param_1") (== "==") (identifier "uVar3")) () ")")) (&& "&&") (parenthesized_expression "(uVar11 <= param_2)" (( "(") (binary_expression "uVar11 <= param_2" (identifier "uVar11") (<= "<=") (identifier "param_2")) () ")"))) () ")")) (compound_statement "{\n            uVar10 = 0;\n            goto LAB_00056f78;\n          }" ({ "{") (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" (identifier "uVar10") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_00056f78;" (goto "goto") (statement_identifier "LAB_00056f78") (; ";")) (} "}"))))) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + -1" (identifier "iVar5") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar11 = uVar3 << 0x1f | uVar11 >> 1;" (assignment_expression "uVar11 = uVar3 << 0x1f | uVar11 >> 1" (identifier "uVar11") (= "=") (binary_expression "uVar3 << 0x1f | uVar11 >> 1" (binary_expression "uVar3 << 0x1f" (identifier "uVar3") (<< "<<") (number_literal "0x1f")) (| "|") (binary_expression "uVar11 >> 1" (identifier "uVar11") (>> ">>") (number_literal "1")))) (; ";")) (expression_statement "uVar3 = uVar3 >> 1;" (assignment_expression "uVar3 = uVar3 >> 1" (identifier "uVar3") (= "=") (binary_expression "uVar3 >> 1" (identifier "uVar3") (>> ">>") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}")) (else_clause "else {\n        do {\n          do {\n            uVar10 = uVar11 >> 0x1f;\n            uVar11 = uVar11 << 1;\n            uVar3 = uVar10 | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n          } while (uVar3 < param_1);\n          uVar2 = 0;\n          uVar4 = uVar3;\n        } while ((param_1 == uVar3) && (uVar4 = uVar10, uVar11 <= param_2));\n        do {\n          uVar3 = uVar3 >> 1;\n          uVar11 = uVar4 << 0x1f | uVar11 >> 1;\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056eac:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((uVar3 == param_1) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056eac;\n          }\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar3;\n        } while (iVar5 != 0);\n      }" (else "else") (compound_statement "{\n        do {\n          do {\n            uVar10 = uVar11 >> 0x1f;\n            uVar11 = uVar11 << 1;\n            uVar3 = uVar10 | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n          } while (uVar3 < param_1);\n          uVar2 = 0;\n          uVar4 = uVar3;\n        } while ((param_1 == uVar3) && (uVar4 = uVar10, uVar11 <= param_2));\n        do {\n          uVar3 = uVar3 >> 1;\n          uVar11 = uVar4 << 0x1f | uVar11 >> 1;\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056eac:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((uVar3 == param_1) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056eac;\n          }\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar3;\n        } while (iVar5 != 0);\n      }" ({ "{") (do_statement "do {\n          do {\n            uVar10 = uVar11 >> 0x1f;\n            uVar11 = uVar11 << 1;\n            uVar3 = uVar10 | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n          } while (uVar3 < param_1);\n          uVar2 = 0;\n          uVar4 = uVar3;\n        } while ((param_1 == uVar3) && (uVar4 = uVar10, uVar11 <= param_2));" (do "do") (compound_statement "{\n          do {\n            uVar10 = uVar11 >> 0x1f;\n            uVar11 = uVar11 << 1;\n            uVar3 = uVar10 | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n          } while (uVar3 < param_1);\n          uVar2 = 0;\n          uVar4 = uVar3;\n        }" ({ "{") (do_statement "do {\n            uVar10 = uVar11 >> 0x1f;\n            uVar11 = uVar11 << 1;\n            uVar3 = uVar10 | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n          } while (uVar3 < param_1);" (do "do") (compound_statement "{\n            uVar10 = uVar11 >> 0x1f;\n            uVar11 = uVar11 << 1;\n            uVar3 = uVar10 | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n          }" ({ "{") (expression_statement "uVar10 = uVar11 >> 0x1f;" (assignment_expression "uVar10 = uVar11 >> 0x1f" (identifier "uVar10") (= "=") (binary_expression "uVar11 >> 0x1f" (identifier "uVar11") (>> ">>") (number_literal "0x1f"))) (; ";")) (expression_statement "uVar11 = uVar11 << 1;" (assignment_expression "uVar11 = uVar11 << 1" (identifier "uVar11") (= "=") (binary_expression "uVar11 << 1" (identifier "uVar11") (<< "<<") (number_literal "1"))) (; ";")) (expression_statement "uVar3 = uVar10 | uVar3 << 1;" (assignment_expression "uVar3 = uVar10 | uVar3 << 1" (identifier "uVar3") (= "=") (binary_expression "uVar10 | uVar3 << 1" (identifier "uVar10") (| "|") (binary_expression "uVar3 << 1" (identifier "uVar3") (<< "<<") (number_literal "1")))) (; ";")) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + 1" (identifier "iVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar3 < param_1)" (( "(") (binary_expression "uVar3 < param_1" (identifier "uVar3") (< "<") (identifier "param_1")) () ")")) (; ";")) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" (identifier "uVar2") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar4 = uVar3;" (assignment_expression "uVar4 = uVar3" (identifier "uVar4") (= "=") (identifier "uVar3")) (; ";")) (} "}")) (while "while") (parenthesized_expression "((param_1 == uVar3) && (uVar4 = uVar10, uVar11 <= param_2))" (( "(") (binary_expression "(param_1 == uVar3) && (uVar4 = uVar10, uVar11 <= param_2)" (parenthesized_expression "(param_1 == uVar3)" (( "(") (binary_expression "param_1 == uVar3" (identifier "param_1") (== "==") (identifier "uVar3")) () ")")) (&& "&&") (parenthesized_expression "(uVar4 = uVar10, uVar11 <= param_2)" (( "(") (comma_expression "uVar4 = uVar10, uVar11 <= param_2" (assignment_expression "uVar4 = uVar10" (identifier "uVar4") (= "=") (identifier "uVar10")) (, ",") (binary_expression "uVar11 <= param_2" (identifier "uVar11") (<= "<=") (identifier "param_2"))) () ")"))) () ")")) (; ";")) (do_statement "do {\n          uVar3 = uVar3 >> 1;\n          uVar11 = uVar4 << 0x1f | uVar11 >> 1;\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056eac:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((uVar3 == param_1) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056eac;\n          }\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar3;\n        } while (iVar5 != 0);" (do "do") (compound_statement "{\n          uVar3 = uVar3 >> 1;\n          uVar11 = uVar4 << 0x1f | uVar11 >> 1;\n          uVar2 = uVar2 << 1;\n          if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056eac:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((uVar3 == param_1) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056eac;\n          }\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar3;\n        }" ({ "{") (expression_statement "uVar3 = uVar3 >> 1;" (assignment_expression "uVar3 = uVar3 >> 1" (identifier "uVar3") (= "=") (binary_expression "uVar3 >> 1" (identifier "uVar3") (>> ">>") (number_literal "1"))) (; ";")) (expression_statement "uVar11 = uVar4 << 0x1f | uVar11 >> 1;" (assignment_expression "uVar11 = uVar4 << 0x1f | uVar11 >> 1" (identifier "uVar11") (= "=") (binary_expression "uVar4 << 0x1f | uVar11 >> 1" (binary_expression "uVar4 << 0x1f" (identifier "uVar4") (<< "<<") (number_literal "0x1f")) (| "|") (binary_expression "uVar11 >> 1" (identifier "uVar11") (>> ">>") (number_literal "1")))) (; ";")) (expression_statement "uVar2 = uVar2 << 1;" (assignment_expression "uVar2 = uVar2 << 1" (identifier "uVar2") (= "=") (binary_expression "uVar2 << 1" (identifier "uVar2") (<< "<<") (number_literal "1"))) (; ";")) (if_statement "if (uVar3 < param_1) {\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056eac:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }\n          else if ((uVar3 == param_1) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056eac;\n          }" (if "if") (parenthesized_expression "(uVar3 < param_1)" (( "(") (binary_expression "uVar3 < param_1" (identifier "uVar3") (< "<") (identifier "param_1")) () ")")) (compound_statement "{\n            uVar10 = (uint)(param_2 < uVar11);\nLAB_00056eac:\n            param_2 = param_2 - uVar11;\n            param_1 = (param_1 - uVar3) - uVar10;\n            uVar2 = uVar2 | 1;\n          }" ({ "{") (expression_statement "uVar10 = (uint)(param_2 < uVar11);" (assignment_expression "uVar10 = (uint)(param_2 < uVar11)" (identifier "uVar10") (= "=") (call_expression "(uint)(param_2 < uVar11)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_2 < uVar11)" (( "(") (binary_expression "param_2 < uVar11" (identifier "param_2") (< "<") (identifier "uVar11")) () ")")))) (; ";")) (labeled_statement "LAB_00056eac:\n            param_2 = param_2 - uVar11;" (statement_identifier "LAB_00056eac") (: ":") (expression_statement "param_2 = param_2 - uVar11;" (assignment_expression "param_2 = param_2 - uVar11" (identifier "param_2") (= "=") (binary_expression "param_2 - uVar11" (identifier "param_2") (- "-") (identifier "uVar11"))) (; ";"))) (expression_statement "param_1 = (param_1 - uVar3) - uVar10;" (assignment_expression "param_1 = (param_1 - uVar3) - uVar10" (identifier "param_1") (= "=") (binary_expression "(param_1 - uVar3) - uVar10" (parenthesized_expression "(param_1 - uVar3)" (( "(") (binary_expression "param_1 - uVar3" (identifier "param_1") (- "-") (identifier "uVar3")) () ")")) (- "-") (identifier "uVar10"))) (; ";")) (expression_statement "uVar2 = uVar2 | 1;" (assignment_expression "uVar2 = uVar2 | 1" (identifier "uVar2") (= "=") (binary_expression "uVar2 | 1" (identifier "uVar2") (| "|") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else if ((uVar3 == param_1) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056eac;\n          }" (else "else") (if_statement "if ((uVar3 == param_1) && (uVar11 <= param_2)) {\n            uVar10 = 0;\n            goto LAB_00056eac;\n          }" (if "if") (parenthesized_expression "((uVar3 == param_1) && (uVar11 <= param_2))" (( "(") (binary_expression "(uVar3 == param_1) && (uVar11 <= param_2)" (parenthesized_expression "(uVar3 == param_1)" (( "(") (binary_expression "uVar3 == param_1" (identifier "uVar3") (== "==") (identifier "param_1")) () ")")) (&& "&&") (parenthesized_expression "(uVar11 <= param_2)" (( "(") (binary_expression "uVar11 <= param_2" (identifier "uVar11") (<= "<=") (identifier "param_2")) () ")"))) () ")")) (compound_statement "{\n            uVar10 = 0;\n            goto LAB_00056eac;\n          }" ({ "{") (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" (identifier "uVar10") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_00056eac;" (goto "goto") (statement_identifier "LAB_00056eac") (; ";")) (} "}"))))) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + -1" (identifier "iVar5") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar4 = uVar3;" (assignment_expression "uVar4 = uVar3" (identifier "uVar4") (= "=") (identifier "uVar3")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}")))) (if_statement "if (param_1 < 2) {\n        iVar6 = iVar8 * uVar2 + iVar6;\n        iVar7 = iVar9 * uVar2 + iVar7;\n        break;\n      }" (if "if") (parenthesized_expression "(param_1 < 2)" (( "(") (binary_expression "param_1 < 2" (identifier "param_1") (< "<") (number_literal "2")) () ")")) (compound_statement "{\n        iVar6 = iVar8 * uVar2 + iVar6;\n        iVar7 = iVar9 * uVar2 + iVar7;\n        break;\n      }" ({ "{") (expression_statement "iVar6 = iVar8 * uVar2 + iVar6;" (assignment_expression "iVar6 = iVar8 * uVar2 + iVar6" (identifier "iVar6") (= "=") (binary_expression "iVar8 * uVar2 + iVar6" (binary_expression "iVar8 * uVar2" (identifier "iVar8") (* "*") (identifier "uVar2")) (+ "+") (identifier "iVar6"))) (; ";")) (expression_statement "iVar7 = iVar9 * uVar2 + iVar7;" (assignment_expression "iVar7 = iVar9 * uVar2 + iVar7" (identifier "iVar7") (= "=") (binary_expression "iVar9 * uVar2 + iVar7" (binary_expression "iVar9 * uVar2" (identifier "iVar9") (* "*") (identifier "uVar2")) (+ "+") (identifier "iVar7"))) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "iVar5 = iVar8 * (uVar2 + 1);" (assignment_expression "iVar5 = iVar8 * (uVar2 + 1)" (identifier "iVar5") (= "=") (binary_expression "iVar8 * (uVar2 + 1)" (identifier "iVar8") (* "*") (parenthesized_expression "(uVar2 + 1)" (( "(") (binary_expression "uVar2 + 1" (identifier "uVar2") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "iVar1 = iVar9 * (uVar2 + 1);" (assignment_expression "iVar1 = iVar9 * (uVar2 + 1)" (identifier "iVar1") (= "=") (binary_expression "iVar9 * (uVar2 + 1)" (identifier "iVar9") (* "*") (parenthesized_expression "(uVar2 + 1)" (( "(") (binary_expression "uVar2 + 1" (identifier "uVar2") (+ "+") (number_literal "1")) () ")")))) (; ";")) (} "}"))) (expression_statement "iVar7 = iVar7 + iVar1;" (assignment_expression "iVar7 = iVar7 + iVar1" (identifier "iVar7") (= "=") (binary_expression "iVar7 + iVar1" (identifier "iVar7") (+ "+") (identifier "iVar1"))) (; ";")) (expression_statement "iVar6 = iVar6 + iVar5;" (assignment_expression "iVar6 = iVar6 + iVar5" (identifier "iVar6") (= "=") (binary_expression "iVar6 + iVar5" (identifier "iVar6") (+ "+") (identifier "iVar5"))) (; ";")) (if_statement "if (param_1 == param_3) break;" (if "if") (parenthesized_expression "(param_1 == param_3)" (( "(") (binary_expression "param_1 == param_3" (identifier "param_1") (== "==") (identifier "param_3")) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "LAB_00056c80:\n    if (param_3 < 0x10000) {\n      uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;\n      uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;\n      goto LAB_00056cfc;\n    }" (statement_identifier "LAB_00056c80") (: ":") (if_statement "if (param_3 < 0x10000) {\n      uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;\n      uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;\n      goto LAB_00056cfc;\n    }" (if "if") (parenthesized_expression "(param_3 < 0x10000)" (( "(") (binary_expression "param_3 < 0x10000" (identifier "param_3") (< "<") (number_literal "0x10000")) () ")")) (compound_statement "{\n      uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;\n      uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;\n      goto LAB_00056cfc;\n    }" ({ "{") (expression_statement "uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;" (assignment_expression "uVar3 = (param_2 >> 0x10) + param_1 * 0x10000" (identifier "uVar3") (= "=") (binary_expression "(param_2 >> 0x10) + param_1 * 0x10000" (parenthesized_expression "(param_2 >> 0x10)" (( "(") (binary_expression "param_2 >> 0x10" (identifier "param_2") (>> ">>") (number_literal "0x10")) () ")")) (+ "+") (binary_expression "param_1 * 0x10000" (identifier "param_1") (* "*") (number_literal "0x10000")))) (; ";")) (expression_statement "uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;" (assignment_expression "uVar11 = (param_4 >> 0x10) + param_3 * 0x10000" (identifier "uVar11") (= "=") (binary_expression "(param_4 >> 0x10) + param_3 * 0x10000" (parenthesized_expression "(param_4 >> 0x10)" (( "(") (binary_expression "param_4 >> 0x10" (identifier "param_4") (>> ">>") (number_literal "0x10")) () ")")) (+ "+") (binary_expression "param_3 * 0x10000" (identifier "param_3") (* "*") (number_literal "0x10000")))) (; ";")) (goto_statement "goto LAB_00056cfc;" (goto "goto") (statement_identifier "LAB_00056cfc") (; ";")) (} "}")))) (expression_statement "param_3 = (param_3 - param_1) - (uint)(param_4 < param_2);" (assignment_expression "param_3 = (param_3 - param_1) - (uint)(param_4 < param_2)" (identifier "param_3") (= "=") (binary_expression "(param_3 - param_1) - (uint)(param_4 < param_2)" (parenthesized_expression "(param_3 - param_1)" (( "(") (binary_expression "param_3 - param_1" (identifier "param_3") (- "-") (identifier "param_1")) () ")")) (- "-") (call_expression "(uint)(param_4 < param_2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_4 < param_2)" (( "(") (binary_expression "param_4 < param_2" (identifier "param_4") (< "<") (identifier "param_2")) () ")"))))) (; ";")) (if_statement "if (param_3 < 2) break;" (if "if") (parenthesized_expression "(param_3 < 2)" (( "(") (binary_expression "param_3 < 2" (identifier "param_3") (< "<") (number_literal "2")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "param_4 = param_4 - param_2;" (assignment_expression "param_4 = param_4 - param_2" (identifier "param_4") (= "=") (binary_expression "param_4 - param_2" (identifier "param_4") (- "-") (identifier "param_2"))) (; ";")) (if_statement "if (param_1 < param_3) {\n      iVar5 = 0;\n      uVar3 = param_1;\n      uVar11 = param_2;\n      if ((int)param_3 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar10 = 0;\n        do {\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar4 = (uint)(param_4 < uVar11);\nLAB_00057068:\n            param_4 = param_4 - uVar11;\n            param_3 = (param_3 - uVar3) - uVar4;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((param_3 == uVar3) && (uVar11 <= param_4)) {\n            uVar4 = 0;\n            goto LAB_00057068;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar4 = uVar11 << 1;\n            uVar3 = uVar11 >> 0x1f | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n            uVar11 = uVar4;\n          } while (uVar3 < param_3);\n        } while ((param_3 == uVar3) && (uVar4 <= param_4));\n        uVar10 = 0;\n        do {\n          uVar11 = uVar3 << 0x1f;\n          uVar3 = uVar3 >> 1;\n          uVar4 = uVar11 | uVar4 >> 1;\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar11 = (uint)(param_4 < uVar4);\nLAB_00056df4:\n            param_4 = param_4 - uVar4;\n            param_3 = (param_3 - uVar3) - uVar11;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((uVar3 == param_3) && (uVar4 <= param_4)) {\n            uVar11 = 0;\n            goto LAB_00056df4;\n          }\n          iVar5 = iVar5 + -1;\n        } while (iVar5 != 0);\n      }\n      if (param_3 < 2) {\n        iVar8 = uVar10 * iVar6 + iVar8;\n        iVar9 = uVar10 * iVar7 + iVar9;\n        break;\n      }\n      iVar8 = (uVar10 + 1) * iVar6 + iVar8;\n      iVar9 = (uVar10 + 1) * iVar7 + iVar9;\n    }\n    else {\n      iVar8 = iVar8 + iVar6;\n      iVar9 = iVar9 + iVar7;\n    }" (if "if") (parenthesized_expression "(param_1 < param_3)" (( "(") (binary_expression "param_1 < param_3" (identifier "param_1") (< "<") (identifier "param_3")) () ")")) (compound_statement "{\n      iVar5 = 0;\n      uVar3 = param_1;\n      uVar11 = param_2;\n      if ((int)param_3 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar10 = 0;\n        do {\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar4 = (uint)(param_4 < uVar11);\nLAB_00057068:\n            param_4 = param_4 - uVar11;\n            param_3 = (param_3 - uVar3) - uVar4;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((param_3 == uVar3) && (uVar11 <= param_4)) {\n            uVar4 = 0;\n            goto LAB_00057068;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar4 = uVar11 << 1;\n            uVar3 = uVar11 >> 0x1f | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n            uVar11 = uVar4;\n          } while (uVar3 < param_3);\n        } while ((param_3 == uVar3) && (uVar4 <= param_4));\n        uVar10 = 0;\n        do {\n          uVar11 = uVar3 << 0x1f;\n          uVar3 = uVar3 >> 1;\n          uVar4 = uVar11 | uVar4 >> 1;\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar11 = (uint)(param_4 < uVar4);\nLAB_00056df4:\n            param_4 = param_4 - uVar4;\n            param_3 = (param_3 - uVar3) - uVar11;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((uVar3 == param_3) && (uVar4 <= param_4)) {\n            uVar11 = 0;\n            goto LAB_00056df4;\n          }\n          iVar5 = iVar5 + -1;\n        } while (iVar5 != 0);\n      }\n      if (param_3 < 2) {\n        iVar8 = uVar10 * iVar6 + iVar8;\n        iVar9 = uVar10 * iVar7 + iVar9;\n        break;\n      }\n      iVar8 = (uVar10 + 1) * iVar6 + iVar8;\n      iVar9 = (uVar10 + 1) * iVar7 + iVar9;\n    }" ({ "{") (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" (identifier "iVar5") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar3 = param_1;" (assignment_expression "uVar3 = param_1" (identifier "uVar3") (= "=") (identifier "param_1")) (; ";")) (expression_statement "uVar11 = param_2;" (assignment_expression "uVar11 = param_2" (identifier "uVar11") (= "=") (identifier "param_2")) (; ";")) (if_statement "if ((int)param_3 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar10 = 0;\n        do {\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar4 = (uint)(param_4 < uVar11);\nLAB_00057068:\n            param_4 = param_4 - uVar11;\n            param_3 = (param_3 - uVar3) - uVar4;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((param_3 == uVar3) && (uVar11 <= param_4)) {\n            uVar4 = 0;\n            goto LAB_00057068;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          do {\n            uVar4 = uVar11 << 1;\n            uVar3 = uVar11 >> 0x1f | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n            uVar11 = uVar4;\n          } while (uVar3 < param_3);\n        } while ((param_3 == uVar3) && (uVar4 <= param_4));\n        uVar10 = 0;\n        do {\n          uVar11 = uVar3 << 0x1f;\n          uVar3 = uVar3 >> 1;\n          uVar4 = uVar11 | uVar4 >> 1;\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar11 = (uint)(param_4 < uVar4);\nLAB_00056df4:\n            param_4 = param_4 - uVar4;\n            param_3 = (param_3 - uVar3) - uVar11;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((uVar3 == param_3) && (uVar4 <= param_4)) {\n            uVar11 = 0;\n            goto LAB_00056df4;\n          }\n          iVar5 = iVar5 + -1;\n        } while (iVar5 != 0);\n      }" (if "if") (parenthesized_expression "((int)param_3 < 0)" (( "(") (binary_expression "(int)param_3 < 0" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        iVar5 = 1;\n        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }\n        uVar10 = 0;\n        do {\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar4 = (uint)(param_4 < uVar11);\nLAB_00057068:\n            param_4 = param_4 - uVar11;\n            param_3 = (param_3 - uVar3) - uVar4;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((param_3 == uVar3) && (uVar11 <= param_4)) {\n            uVar4 = 0;\n            goto LAB_00057068;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);\n      }" ({ "{") (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" (identifier "iVar5") (= "=") (number_literal "1")) (; ";")) (for_statement "for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }" (for "for") (( "(") (; ";") (binary_expression "-1 < (int)uVar3" (number_literal "-1") (< "<") (cast_expression "(int)uVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar3"))) (; ";") (assignment_expression "uVar3 = uVar10 | uVar3 << 1" (identifier "uVar3") (= "=") (binary_expression "uVar10 | uVar3 << 1" (identifier "uVar10") (| "|") (binary_expression "uVar3 << 1" (identifier "uVar3") (<< "<<") (number_literal "1")))) () ")") (compound_statement "{\n          uVar10 = uVar11 >> 0x1f;\n          uVar11 = uVar11 << 1;\n          iVar5 = iVar5 + 1;\n        }" ({ "{") (expression_statement "uVar10 = uVar11 >> 0x1f;" (assignment_expression "uVar10 = uVar11 >> 0x1f" (identifier "uVar10") (= "=") (binary_expression "uVar11 >> 0x1f" (identifier "uVar11") (>> ">>") (number_literal "0x1f"))) (; ";")) (expression_statement "uVar11 = uVar11 << 1;" (assignment_expression "uVar11 = uVar11 << 1" (identifier "uVar11") (= "=") (binary_expression "uVar11 << 1" (identifier "uVar11") (<< "<<") (number_literal "1"))) (; ";")) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + 1" (identifier "iVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" (identifier "uVar10") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar4 = (uint)(param_4 < uVar11);\nLAB_00057068:\n            param_4 = param_4 - uVar11;\n            param_3 = (param_3 - uVar3) - uVar4;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((param_3 == uVar3) && (uVar11 <= param_4)) {\n            uVar4 = 0;\n            goto LAB_00057068;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        } while (iVar5 != 0);" (do "do") (compound_statement "{\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar4 = (uint)(param_4 < uVar11);\nLAB_00057068:\n            param_4 = param_4 - uVar11;\n            param_3 = (param_3 - uVar3) - uVar4;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((param_3 == uVar3) && (uVar11 <= param_4)) {\n            uVar4 = 0;\n            goto LAB_00057068;\n          }\n          iVar5 = iVar5 + -1;\n          uVar11 = uVar3 << 0x1f | uVar11 >> 1;\n          uVar3 = uVar3 >> 1;\n        }" ({ "{") (expression_statement "uVar10 = uVar10 << 1;" (assignment_expression "uVar10 = uVar10 << 1" (identifier "uVar10") (= "=") (binary_expression "uVar10 << 1" (identifier "uVar10") (<< "<<") (number_literal "1"))) (; ";")) (if_statement "if (uVar3 < param_3) {\n            uVar4 = (uint)(param_4 < uVar11);\nLAB_00057068:\n            param_4 = param_4 - uVar11;\n            param_3 = (param_3 - uVar3) - uVar4;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((param_3 == uVar3) && (uVar11 <= param_4)) {\n            uVar4 = 0;\n            goto LAB_00057068;\n          }" (if "if") (parenthesized_expression "(uVar3 < param_3)" (( "(") (binary_expression "uVar3 < param_3" (identifier "uVar3") (< "<") (identifier "param_3")) () ")")) (compound_statement "{\n            uVar4 = (uint)(param_4 < uVar11);\nLAB_00057068:\n            param_4 = param_4 - uVar11;\n            param_3 = (param_3 - uVar3) - uVar4;\n            uVar10 = uVar10 | 1;\n          }" ({ "{") (expression_statement "uVar4 = (uint)(param_4 < uVar11);" (assignment_expression "uVar4 = (uint)(param_4 < uVar11)" (identifier "uVar4") (= "=") (call_expression "(uint)(param_4 < uVar11)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_4 < uVar11)" (( "(") (binary_expression "param_4 < uVar11" (identifier "param_4") (< "<") (identifier "uVar11")) () ")")))) (; ";")) (labeled_statement "LAB_00057068:\n            param_4 = param_4 - uVar11;" (statement_identifier "LAB_00057068") (: ":") (expression_statement "param_4 = param_4 - uVar11;" (assignment_expression "param_4 = param_4 - uVar11" (identifier "param_4") (= "=") (binary_expression "param_4 - uVar11" (identifier "param_4") (- "-") (identifier "uVar11"))) (; ";"))) (expression_statement "param_3 = (param_3 - uVar3) - uVar4;" (assignment_expression "param_3 = (param_3 - uVar3) - uVar4" (identifier "param_3") (= "=") (binary_expression "(param_3 - uVar3) - uVar4" (parenthesized_expression "(param_3 - uVar3)" (( "(") (binary_expression "param_3 - uVar3" (identifier "param_3") (- "-") (identifier "uVar3")) () ")")) (- "-") (identifier "uVar4"))) (; ";")) (expression_statement "uVar10 = uVar10 | 1;" (assignment_expression "uVar10 = uVar10 | 1" (identifier "uVar10") (= "=") (binary_expression "uVar10 | 1" (identifier "uVar10") (| "|") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else if ((param_3 == uVar3) && (uVar11 <= param_4)) {\n            uVar4 = 0;\n            goto LAB_00057068;\n          }" (else "else") (if_statement "if ((param_3 == uVar3) && (uVar11 <= param_4)) {\n            uVar4 = 0;\n            goto LAB_00057068;\n          }" (if "if") (parenthesized_expression "((param_3 == uVar3) && (uVar11 <= param_4))" (( "(") (binary_expression "(param_3 == uVar3) && (uVar11 <= param_4)" (parenthesized_expression "(param_3 == uVar3)" (( "(") (binary_expression "param_3 == uVar3" (identifier "param_3") (== "==") (identifier "uVar3")) () ")")) (&& "&&") (parenthesized_expression "(uVar11 <= param_4)" (( "(") (binary_expression "uVar11 <= param_4" (identifier "uVar11") (<= "<=") (identifier "param_4")) () ")"))) () ")")) (compound_statement "{\n            uVar4 = 0;\n            goto LAB_00057068;\n          }" ({ "{") (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_00057068;" (goto "goto") (statement_identifier "LAB_00057068") (; ";")) (} "}"))))) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + -1" (identifier "iVar5") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar11 = uVar3 << 0x1f | uVar11 >> 1;" (assignment_expression "uVar11 = uVar3 << 0x1f | uVar11 >> 1" (identifier "uVar11") (= "=") (binary_expression "uVar3 << 0x1f | uVar11 >> 1" (binary_expression "uVar3 << 0x1f" (identifier "uVar3") (<< "<<") (number_literal "0x1f")) (| "|") (binary_expression "uVar11 >> 1" (identifier "uVar11") (>> ">>") (number_literal "1")))) (; ";")) (expression_statement "uVar3 = uVar3 >> 1;" (assignment_expression "uVar3 = uVar3 >> 1" (identifier "uVar3") (= "=") (binary_expression "uVar3 >> 1" (identifier "uVar3") (>> ">>") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}")) (else_clause "else {\n        do {\n          do {\n            uVar4 = uVar11 << 1;\n            uVar3 = uVar11 >> 0x1f | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n            uVar11 = uVar4;\n          } while (uVar3 < param_3);\n        } while ((param_3 == uVar3) && (uVar4 <= param_4));\n        uVar10 = 0;\n        do {\n          uVar11 = uVar3 << 0x1f;\n          uVar3 = uVar3 >> 1;\n          uVar4 = uVar11 | uVar4 >> 1;\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar11 = (uint)(param_4 < uVar4);\nLAB_00056df4:\n            param_4 = param_4 - uVar4;\n            param_3 = (param_3 - uVar3) - uVar11;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((uVar3 == param_3) && (uVar4 <= param_4)) {\n            uVar11 = 0;\n            goto LAB_00056df4;\n          }\n          iVar5 = iVar5 + -1;\n        } while (iVar5 != 0);\n      }" (else "else") (compound_statement "{\n        do {\n          do {\n            uVar4 = uVar11 << 1;\n            uVar3 = uVar11 >> 0x1f | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n            uVar11 = uVar4;\n          } while (uVar3 < param_3);\n        } while ((param_3 == uVar3) && (uVar4 <= param_4));\n        uVar10 = 0;\n        do {\n          uVar11 = uVar3 << 0x1f;\n          uVar3 = uVar3 >> 1;\n          uVar4 = uVar11 | uVar4 >> 1;\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar11 = (uint)(param_4 < uVar4);\nLAB_00056df4:\n            param_4 = param_4 - uVar4;\n            param_3 = (param_3 - uVar3) - uVar11;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((uVar3 == param_3) && (uVar4 <= param_4)) {\n            uVar11 = 0;\n            goto LAB_00056df4;\n          }\n          iVar5 = iVar5 + -1;\n        } while (iVar5 != 0);\n      }" ({ "{") (do_statement "do {\n          do {\n            uVar4 = uVar11 << 1;\n            uVar3 = uVar11 >> 0x1f | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n            uVar11 = uVar4;\n          } while (uVar3 < param_3);\n        } while ((param_3 == uVar3) && (uVar4 <= param_4));" (do "do") (compound_statement "{\n          do {\n            uVar4 = uVar11 << 1;\n            uVar3 = uVar11 >> 0x1f | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n            uVar11 = uVar4;\n          } while (uVar3 < param_3);\n        }" ({ "{") (do_statement "do {\n            uVar4 = uVar11 << 1;\n            uVar3 = uVar11 >> 0x1f | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n            uVar11 = uVar4;\n          } while (uVar3 < param_3);" (do "do") (compound_statement "{\n            uVar4 = uVar11 << 1;\n            uVar3 = uVar11 >> 0x1f | uVar3 << 1;\n            iVar5 = iVar5 + 1;\n            uVar11 = uVar4;\n          }" ({ "{") (expression_statement "uVar4 = uVar11 << 1;" (assignment_expression "uVar4 = uVar11 << 1" (identifier "uVar4") (= "=") (binary_expression "uVar11 << 1" (identifier "uVar11") (<< "<<") (number_literal "1"))) (; ";")) (expression_statement "uVar3 = uVar11 >> 0x1f | uVar3 << 1;" (assignment_expression "uVar3 = uVar11 >> 0x1f | uVar3 << 1" (identifier "uVar3") (= "=") (binary_expression "uVar11 >> 0x1f | uVar3 << 1" (binary_expression "uVar11 >> 0x1f" (identifier "uVar11") (>> ">>") (number_literal "0x1f")) (| "|") (binary_expression "uVar3 << 1" (identifier "uVar3") (<< "<<") (number_literal "1")))) (; ";")) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + 1" (identifier "iVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar11 = uVar4;" (assignment_expression "uVar11 = uVar4" (identifier "uVar11") (= "=") (identifier "uVar4")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar3 < param_3)" (( "(") (binary_expression "uVar3 < param_3" (identifier "uVar3") (< "<") (identifier "param_3")) () ")")) (; ";")) (} "}")) (while "while") (parenthesized_expression "((param_3 == uVar3) && (uVar4 <= param_4))" (( "(") (binary_expression "(param_3 == uVar3) && (uVar4 <= param_4)" (parenthesized_expression "(param_3 == uVar3)" (( "(") (binary_expression "param_3 == uVar3" (identifier "param_3") (== "==") (identifier "uVar3")) () ")")) (&& "&&") (parenthesized_expression "(uVar4 <= param_4)" (( "(") (binary_expression "uVar4 <= param_4" (identifier "uVar4") (<= "<=") (identifier "param_4")) () ")"))) () ")")) (; ";")) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" (identifier "uVar10") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          uVar11 = uVar3 << 0x1f;\n          uVar3 = uVar3 >> 1;\n          uVar4 = uVar11 | uVar4 >> 1;\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar11 = (uint)(param_4 < uVar4);\nLAB_00056df4:\n            param_4 = param_4 - uVar4;\n            param_3 = (param_3 - uVar3) - uVar11;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((uVar3 == param_3) && (uVar4 <= param_4)) {\n            uVar11 = 0;\n            goto LAB_00056df4;\n          }\n          iVar5 = iVar5 + -1;\n        } while (iVar5 != 0);" (do "do") (compound_statement "{\n          uVar11 = uVar3 << 0x1f;\n          uVar3 = uVar3 >> 1;\n          uVar4 = uVar11 | uVar4 >> 1;\n          uVar10 = uVar10 << 1;\n          if (uVar3 < param_3) {\n            uVar11 = (uint)(param_4 < uVar4);\nLAB_00056df4:\n            param_4 = param_4 - uVar4;\n            param_3 = (param_3 - uVar3) - uVar11;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((uVar3 == param_3) && (uVar4 <= param_4)) {\n            uVar11 = 0;\n            goto LAB_00056df4;\n          }\n          iVar5 = iVar5 + -1;\n        }" ({ "{") (expression_statement "uVar11 = uVar3 << 0x1f;" (assignment_expression "uVar11 = uVar3 << 0x1f" (identifier "uVar11") (= "=") (binary_expression "uVar3 << 0x1f" (identifier "uVar3") (<< "<<") (number_literal "0x1f"))) (; ";")) (expression_statement "uVar3 = uVar3 >> 1;" (assignment_expression "uVar3 = uVar3 >> 1" (identifier "uVar3") (= "=") (binary_expression "uVar3 >> 1" (identifier "uVar3") (>> ">>") (number_literal "1"))) (; ";")) (expression_statement "uVar4 = uVar11 | uVar4 >> 1;" (assignment_expression "uVar4 = uVar11 | uVar4 >> 1" (identifier "uVar4") (= "=") (binary_expression "uVar11 | uVar4 >> 1" (identifier "uVar11") (| "|") (binary_expression "uVar4 >> 1" (identifier "uVar4") (>> ">>") (number_literal "1")))) (; ";")) (expression_statement "uVar10 = uVar10 << 1;" (assignment_expression "uVar10 = uVar10 << 1" (identifier "uVar10") (= "=") (binary_expression "uVar10 << 1" (identifier "uVar10") (<< "<<") (number_literal "1"))) (; ";")) (if_statement "if (uVar3 < param_3) {\n            uVar11 = (uint)(param_4 < uVar4);\nLAB_00056df4:\n            param_4 = param_4 - uVar4;\n            param_3 = (param_3 - uVar3) - uVar11;\n            uVar10 = uVar10 | 1;\n          }\n          else if ((uVar3 == param_3) && (uVar4 <= param_4)) {\n            uVar11 = 0;\n            goto LAB_00056df4;\n          }" (if "if") (parenthesized_expression "(uVar3 < param_3)" (( "(") (binary_expression "uVar3 < param_3" (identifier "uVar3") (< "<") (identifier "param_3")) () ")")) (compound_statement "{\n            uVar11 = (uint)(param_4 < uVar4);\nLAB_00056df4:\n            param_4 = param_4 - uVar4;\n            param_3 = (param_3 - uVar3) - uVar11;\n            uVar10 = uVar10 | 1;\n          }" ({ "{") (expression_statement "uVar11 = (uint)(param_4 < uVar4);" (assignment_expression "uVar11 = (uint)(param_4 < uVar4)" (identifier "uVar11") (= "=") (call_expression "(uint)(param_4 < uVar4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_4 < uVar4)" (( "(") (binary_expression "param_4 < uVar4" (identifier "param_4") (< "<") (identifier "uVar4")) () ")")))) (; ";")) (labeled_statement "LAB_00056df4:\n            param_4 = param_4 - uVar4;" (statement_identifier "LAB_00056df4") (: ":") (expression_statement "param_4 = param_4 - uVar4;" (assignment_expression "param_4 = param_4 - uVar4" (identifier "param_4") (= "=") (binary_expression "param_4 - uVar4" (identifier "param_4") (- "-") (identifier "uVar4"))) (; ";"))) (expression_statement "param_3 = (param_3 - uVar3) - uVar11;" (assignment_expression "param_3 = (param_3 - uVar3) - uVar11" (identifier "param_3") (= "=") (binary_expression "(param_3 - uVar3) - uVar11" (parenthesized_expression "(param_3 - uVar3)" (( "(") (binary_expression "param_3 - uVar3" (identifier "param_3") (- "-") (identifier "uVar3")) () ")")) (- "-") (identifier "uVar11"))) (; ";")) (expression_statement "uVar10 = uVar10 | 1;" (assignment_expression "uVar10 = uVar10 | 1" (identifier "uVar10") (= "=") (binary_expression "uVar10 | 1" (identifier "uVar10") (| "|") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else if ((uVar3 == param_3) && (uVar4 <= param_4)) {\n            uVar11 = 0;\n            goto LAB_00056df4;\n          }" (else "else") (if_statement "if ((uVar3 == param_3) && (uVar4 <= param_4)) {\n            uVar11 = 0;\n            goto LAB_00056df4;\n          }" (if "if") (parenthesized_expression "((uVar3 == param_3) && (uVar4 <= param_4))" (( "(") (binary_expression "(uVar3 == param_3) && (uVar4 <= param_4)" (parenthesized_expression "(uVar3 == param_3)" (( "(") (binary_expression "uVar3 == param_3" (identifier "uVar3") (== "==") (identifier "param_3")) () ")")) (&& "&&") (parenthesized_expression "(uVar4 <= param_4)" (( "(") (binary_expression "uVar4 <= param_4" (identifier "uVar4") (<= "<=") (identifier "param_4")) () ")"))) () ")")) (compound_statement "{\n            uVar11 = 0;\n            goto LAB_00056df4;\n          }" ({ "{") (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" (identifier "uVar11") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_00056df4;" (goto "goto") (statement_identifier "LAB_00056df4") (; ";")) (} "}"))))) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + -1" (identifier "iVar5") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}")))) (if_statement "if (param_3 < 2) {\n        iVar8 = uVar10 * iVar6 + iVar8;\n        iVar9 = uVar10 * iVar7 + iVar9;\n        break;\n      }" (if "if") (parenthesized_expression "(param_3 < 2)" (( "(") (binary_expression "param_3 < 2" (identifier "param_3") (< "<") (number_literal "2")) () ")")) (compound_statement "{\n        iVar8 = uVar10 * iVar6 + iVar8;\n        iVar9 = uVar10 * iVar7 + iVar9;\n        break;\n      }" ({ "{") (expression_statement "iVar8 = uVar10 * iVar6 + iVar8;" (assignment_expression "iVar8 = uVar10 * iVar6 + iVar8" (identifier "iVar8") (= "=") (binary_expression "uVar10 * iVar6 + iVar8" (binary_expression "uVar10 * iVar6" (identifier "uVar10") (* "*") (identifier "iVar6")) (+ "+") (identifier "iVar8"))) (; ";")) (expression_statement "iVar9 = uVar10 * iVar7 + iVar9;" (assignment_expression "iVar9 = uVar10 * iVar7 + iVar9" (identifier "iVar9") (= "=") (binary_expression "uVar10 * iVar7 + iVar9" (binary_expression "uVar10 * iVar7" (identifier "uVar10") (* "*") (identifier "iVar7")) (+ "+") (identifier "iVar9"))) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "iVar8 = (uVar10 + 1) * iVar6 + iVar8;" (assignment_expression "iVar8 = (uVar10 + 1) * iVar6 + iVar8" (identifier "iVar8") (= "=") (binary_expression "(uVar10 + 1) * iVar6 + iVar8" (binary_expression "(uVar10 + 1) * iVar6" (parenthesized_expression "(uVar10 + 1)" (( "(") (binary_expression "uVar10 + 1" (identifier "uVar10") (+ "+") (number_literal "1")) () ")")) (* "*") (identifier "iVar6")) (+ "+") (identifier "iVar8"))) (; ";")) (expression_statement "iVar9 = (uVar10 + 1) * iVar7 + iVar9;" (assignment_expression "iVar9 = (uVar10 + 1) * iVar7 + iVar9" (identifier "iVar9") (= "=") (binary_expression "(uVar10 + 1) * iVar7 + iVar9" (binary_expression "(uVar10 + 1) * iVar7" (parenthesized_expression "(uVar10 + 1)" (( "(") (binary_expression "uVar10 + 1" (identifier "uVar10") (+ "+") (number_literal "1")) () ")")) (* "*") (identifier "iVar7")) (+ "+") (identifier "iVar9"))) (; ";")) (} "}")) (else_clause "else {\n      iVar8 = iVar8 + iVar6;\n      iVar9 = iVar9 + iVar7;\n    }" (else "else") (compound_statement "{\n      iVar8 = iVar8 + iVar6;\n      iVar9 = iVar9 + iVar7;\n    }" ({ "{") (expression_statement "iVar8 = iVar8 + iVar6;" (assignment_expression "iVar8 = iVar8 + iVar6" (identifier "iVar8") (= "=") (binary_expression "iVar8 + iVar6" (identifier "iVar8") (+ "+") (identifier "iVar6"))) (; ";")) (expression_statement "iVar9 = iVar9 + iVar7;" (assignment_expression "iVar9 = iVar9 + iVar7" (identifier "iVar9") (= "=") (binary_expression "iVar9 + iVar7" (identifier "iVar9") (+ "+") (identifier "iVar7"))) (; ";")) (} "}")))) (} "}"))) (goto_statement "goto LAB_00056c2c;" (goto "goto") (statement_identifier "LAB_00056c2c") (; ";")) (labeled_statement "LAB_00056cfc:\n  uVar11 = uVar11 - uVar3;" (statement_identifier "LAB_00056cfc") (: ":") (expression_statement "uVar11 = uVar11 - uVar3;" (assignment_expression "uVar11 = uVar11 - uVar3" (identifier "uVar11") (= "=") (binary_expression "uVar11 - uVar3" (identifier "uVar11") (- "-") (identifier "uVar3"))) (; ";"))) (if_statement "if (0x1ffff < uVar11) {\n    if (uVar3 < uVar11) {\n      iVar5 = 0;\n      uVar10 = uVar3;\n      if ((int)uVar11 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar11) {\n            uVar11 = uVar11 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar11);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar11) {\n            uVar11 = uVar11 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }\n      if (uVar11 < 0x20000) {\n        iVar8 = iVar6 * uVar4 + iVar8;\n        iVar9 = iVar7 * uVar4 + iVar9;\n        goto LAB_00056c2c;\n      }\n      iVar8 = iVar6 * (uVar4 + 1) + iVar8;\n      iVar9 = iVar7 * (uVar4 + 1) + iVar9;\n    }\n    else {\n      iVar8 = iVar8 + iVar6;\n      iVar9 = iVar9 + iVar7;\n    }\nLAB_00056cd4:\n    uVar3 = uVar3 - uVar11;\n    if (uVar3 < 0x20000) goto LAB_00056c2c;\n    if (uVar11 < uVar3) {\n      iVar5 = 0;\n      uVar10 = uVar11;\n      if ((int)uVar3 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar3) {\n            uVar3 = uVar3 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar3);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar3) {\n            uVar3 = uVar3 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }\n      if (uVar3 < 0x20000) {\n        iVar6 = iVar8 * uVar4 + iVar6;\n        iVar7 = iVar9 * uVar4 + iVar7;\n        goto LAB_00056c2c;\n      }\n      iVar6 = iVar8 * (uVar4 + 1) + iVar6;\n      iVar7 = iVar9 * (uVar4 + 1) + iVar7;\n    }\n    else {\n      iVar6 = iVar6 + iVar8;\n      iVar7 = iVar7 + iVar9;\n    }\n    goto LAB_00056cfc;\n  }" (if "if") (parenthesized_expression "(0x1ffff < uVar11)" (( "(") (binary_expression "0x1ffff < uVar11" (number_literal "0x1ffff") (< "<") (identifier "uVar11")) () ")")) (compound_statement "{\n    if (uVar3 < uVar11) {\n      iVar5 = 0;\n      uVar10 = uVar3;\n      if ((int)uVar11 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar11) {\n            uVar11 = uVar11 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar11);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar11) {\n            uVar11 = uVar11 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }\n      if (uVar11 < 0x20000) {\n        iVar8 = iVar6 * uVar4 + iVar8;\n        iVar9 = iVar7 * uVar4 + iVar9;\n        goto LAB_00056c2c;\n      }\n      iVar8 = iVar6 * (uVar4 + 1) + iVar8;\n      iVar9 = iVar7 * (uVar4 + 1) + iVar9;\n    }\n    else {\n      iVar8 = iVar8 + iVar6;\n      iVar9 = iVar9 + iVar7;\n    }\nLAB_00056cd4:\n    uVar3 = uVar3 - uVar11;\n    if (uVar3 < 0x20000) goto LAB_00056c2c;\n    if (uVar11 < uVar3) {\n      iVar5 = 0;\n      uVar10 = uVar11;\n      if ((int)uVar3 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar3) {\n            uVar3 = uVar3 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar3);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar3) {\n            uVar3 = uVar3 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }\n      if (uVar3 < 0x20000) {\n        iVar6 = iVar8 * uVar4 + iVar6;\n        iVar7 = iVar9 * uVar4 + iVar7;\n        goto LAB_00056c2c;\n      }\n      iVar6 = iVar8 * (uVar4 + 1) + iVar6;\n      iVar7 = iVar9 * (uVar4 + 1) + iVar7;\n    }\n    else {\n      iVar6 = iVar6 + iVar8;\n      iVar7 = iVar7 + iVar9;\n    }\n    goto LAB_00056cfc;\n  }" ({ "{") (if_statement "if (uVar3 < uVar11) {\n      iVar5 = 0;\n      uVar10 = uVar3;\n      if ((int)uVar11 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar11) {\n            uVar11 = uVar11 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar11);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar11) {\n            uVar11 = uVar11 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }\n      if (uVar11 < 0x20000) {\n        iVar8 = iVar6 * uVar4 + iVar8;\n        iVar9 = iVar7 * uVar4 + iVar9;\n        goto LAB_00056c2c;\n      }\n      iVar8 = iVar6 * (uVar4 + 1) + iVar8;\n      iVar9 = iVar7 * (uVar4 + 1) + iVar9;\n    }\n    else {\n      iVar8 = iVar8 + iVar6;\n      iVar9 = iVar9 + iVar7;\n    }" (if "if") (parenthesized_expression "(uVar3 < uVar11)" (( "(") (binary_expression "uVar3 < uVar11" (identifier "uVar3") (< "<") (identifier "uVar11")) () ")")) (compound_statement "{\n      iVar5 = 0;\n      uVar10 = uVar3;\n      if ((int)uVar11 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar11) {\n            uVar11 = uVar11 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar11);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar11) {\n            uVar11 = uVar11 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }\n      if (uVar11 < 0x20000) {\n        iVar8 = iVar6 * uVar4 + iVar8;\n        iVar9 = iVar7 * uVar4 + iVar9;\n        goto LAB_00056c2c;\n      }\n      iVar8 = iVar6 * (uVar4 + 1) + iVar8;\n      iVar9 = iVar7 * (uVar4 + 1) + iVar9;\n    }" ({ "{") (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" (identifier "iVar5") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar10 = uVar3;" (assignment_expression "uVar10 = uVar3" (identifier "uVar10") (= "=") (identifier "uVar3")) (; ";")) (if_statement "if ((int)uVar11 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar11) {\n            uVar11 = uVar11 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar11);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar11) {\n            uVar11 = uVar11 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }" (if "if") (parenthesized_expression "((int)uVar11 < 0)" (( "(") (binary_expression "(int)uVar11 < 0" (cast_expression "(int)uVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar11")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar11) {\n            uVar11 = uVar11 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }" ({ "{") (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" (identifier "iVar5") (= "=") (number_literal "1")) (; ";")) (for_statement "for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }" (for "for") (( "(") (; ";") (binary_expression "-1 < (int)uVar10" (number_literal "-1") (< "<") (cast_expression "(int)uVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar10"))) (; ";") (assignment_expression "uVar10 = uVar10 << 1" (identifier "uVar10") (= "=") (binary_expression "uVar10 << 1" (identifier "uVar10") (<< "<<") (number_literal "1"))) () ")") (compound_statement "{\n          iVar5 = iVar5 + 1;\n        }" ({ "{") (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + 1" (identifier "iVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar11) {\n            uVar11 = uVar11 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);" (do "do") (compound_statement "{\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar11) {\n            uVar11 = uVar11 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        }" ({ "{") (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + -1" (identifier "iVar5") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar4 = uVar4 << 1;" (assignment_expression "uVar4 = uVar4 << 1" (identifier "uVar4") (= "=") (binary_expression "uVar4 << 1" (identifier "uVar4") (<< "<<") (number_literal "1"))) (; ";")) (if_statement "if (uVar10 <= uVar11) {\n            uVar11 = uVar11 - uVar10;\n            uVar4 = uVar4 | 1;\n          }" (if "if") (parenthesized_expression "(uVar10 <= uVar11)" (( "(") (binary_expression "uVar10 <= uVar11" (identifier "uVar10") (<= "<=") (identifier "uVar11")) () ")")) (compound_statement "{\n            uVar11 = uVar11 - uVar10;\n            uVar4 = uVar4 | 1;\n          }" ({ "{") (expression_statement "uVar11 = uVar11 - uVar10;" (assignment_expression "uVar11 = uVar11 - uVar10" (identifier "uVar11") (= "=") (binary_expression "uVar11 - uVar10" (identifier "uVar11") (- "-") (identifier "uVar10"))) (; ";")) (expression_statement "uVar4 = uVar4 | 1;" (assignment_expression "uVar4 = uVar4 | 1" (identifier "uVar4") (= "=") (binary_expression "uVar4 | 1" (identifier "uVar4") (| "|") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "uVar10 = uVar10 >> 1;" (assignment_expression "uVar10 = uVar10 >> 1" (identifier "uVar10") (= "=") (binary_expression "uVar10 >> 1" (identifier "uVar10") (>> ">>") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}")) (else_clause "else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar11);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar11) {\n            uVar11 = uVar11 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }" (else "else") (compound_statement "{\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar11);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar11) {\n            uVar11 = uVar11 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }" ({ "{") (do_statement "do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar11);" (do "do") (compound_statement "{\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        }" ({ "{") (expression_statement "uVar2 = uVar10;" (assignment_expression "uVar2 = uVar10" (identifier "uVar2") (= "=") (identifier "uVar10")) (; ";")) (expression_statement "uVar10 = uVar2 << 1;" (assignment_expression "uVar10 = uVar2 << 1" (identifier "uVar10") (= "=") (binary_expression "uVar2 << 1" (identifier "uVar2") (<< "<<") (number_literal "1"))) (; ";")) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + 1" (identifier "iVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar10 <= uVar11)" (( "(") (binary_expression "uVar10 <= uVar11" (identifier "uVar10") (<= "<=") (identifier "uVar11")) () ")")) (; ";")) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar2 = uVar2 & 0x7fffffff;" (assignment_expression "uVar2 = uVar2 & 0x7fffffff" (identifier "uVar2") (= "=") (binary_expression "uVar2 & 0x7fffffff" (identifier "uVar2") (& "&") (number_literal "0x7fffffff"))) (; ";")) (do_statement "do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar11) {\n            uVar11 = uVar11 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);" (do "do") (compound_statement "{\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar11) {\n            uVar11 = uVar11 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        }" ({ "{") (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + -1" (identifier "iVar5") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar4 = uVar4 << 1;" (assignment_expression "uVar4 = uVar4 << 1" (identifier "uVar4") (= "=") (binary_expression "uVar4 << 1" (identifier "uVar4") (<< "<<") (number_literal "1"))) (; ";")) (if_statement "if (uVar2 <= uVar11) {\n            uVar11 = uVar11 - uVar2;\n            uVar4 = uVar4 | 1;\n          }" (if "if") (parenthesized_expression "(uVar2 <= uVar11)" (( "(") (binary_expression "uVar2 <= uVar11" (identifier "uVar2") (<= "<=") (identifier "uVar11")) () ")")) (compound_statement "{\n            uVar11 = uVar11 - uVar2;\n            uVar4 = uVar4 | 1;\n          }" ({ "{") (expression_statement "uVar11 = uVar11 - uVar2;" (assignment_expression "uVar11 = uVar11 - uVar2" (identifier "uVar11") (= "=") (binary_expression "uVar11 - uVar2" (identifier "uVar11") (- "-") (identifier "uVar2"))) (; ";")) (expression_statement "uVar4 = uVar4 | 1;" (assignment_expression "uVar4 = uVar4 | 1" (identifier "uVar4") (= "=") (binary_expression "uVar4 | 1" (identifier "uVar4") (| "|") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "uVar2 = uVar2 >> 1;" (assignment_expression "uVar2 = uVar2 >> 1" (identifier "uVar2") (= "=") (binary_expression "uVar2 >> 1" (identifier "uVar2") (>> ">>") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}")))) (if_statement "if (uVar11 < 0x20000) {\n        iVar8 = iVar6 * uVar4 + iVar8;\n        iVar9 = iVar7 * uVar4 + iVar9;\n        goto LAB_00056c2c;\n      }" (if "if") (parenthesized_expression "(uVar11 < 0x20000)" (( "(") (binary_expression "uVar11 < 0x20000" (identifier "uVar11") (< "<") (number_literal "0x20000")) () ")")) (compound_statement "{\n        iVar8 = iVar6 * uVar4 + iVar8;\n        iVar9 = iVar7 * uVar4 + iVar9;\n        goto LAB_00056c2c;\n      }" ({ "{") (expression_statement "iVar8 = iVar6 * uVar4 + iVar8;" (assignment_expression "iVar8 = iVar6 * uVar4 + iVar8" (identifier "iVar8") (= "=") (binary_expression "iVar6 * uVar4 + iVar8" (binary_expression "iVar6 * uVar4" (identifier "iVar6") (* "*") (identifier "uVar4")) (+ "+") (identifier "iVar8"))) (; ";")) (expression_statement "iVar9 = iVar7 * uVar4 + iVar9;" (assignment_expression "iVar9 = iVar7 * uVar4 + iVar9" (identifier "iVar9") (= "=") (binary_expression "iVar7 * uVar4 + iVar9" (binary_expression "iVar7 * uVar4" (identifier "iVar7") (* "*") (identifier "uVar4")) (+ "+") (identifier "iVar9"))) (; ";")) (goto_statement "goto LAB_00056c2c;" (goto "goto") (statement_identifier "LAB_00056c2c") (; ";")) (} "}"))) (expression_statement "iVar8 = iVar6 * (uVar4 + 1) + iVar8;" (assignment_expression "iVar8 = iVar6 * (uVar4 + 1) + iVar8" (identifier "iVar8") (= "=") (binary_expression "iVar6 * (uVar4 + 1) + iVar8" (binary_expression "iVar6 * (uVar4 + 1)" (identifier "iVar6") (* "*") (parenthesized_expression "(uVar4 + 1)" (( "(") (binary_expression "uVar4 + 1" (identifier "uVar4") (+ "+") (number_literal "1")) () ")"))) (+ "+") (identifier "iVar8"))) (; ";")) (expression_statement "iVar9 = iVar7 * (uVar4 + 1) + iVar9;" (assignment_expression "iVar9 = iVar7 * (uVar4 + 1) + iVar9" (identifier "iVar9") (= "=") (binary_expression "iVar7 * (uVar4 + 1) + iVar9" (binary_expression "iVar7 * (uVar4 + 1)" (identifier "iVar7") (* "*") (parenthesized_expression "(uVar4 + 1)" (( "(") (binary_expression "uVar4 + 1" (identifier "uVar4") (+ "+") (number_literal "1")) () ")"))) (+ "+") (identifier "iVar9"))) (; ";")) (} "}")) (else_clause "else {\n      iVar8 = iVar8 + iVar6;\n      iVar9 = iVar9 + iVar7;\n    }" (else "else") (compound_statement "{\n      iVar8 = iVar8 + iVar6;\n      iVar9 = iVar9 + iVar7;\n    }" ({ "{") (expression_statement "iVar8 = iVar8 + iVar6;" (assignment_expression "iVar8 = iVar8 + iVar6" (identifier "iVar8") (= "=") (binary_expression "iVar8 + iVar6" (identifier "iVar8") (+ "+") (identifier "iVar6"))) (; ";")) (expression_statement "iVar9 = iVar9 + iVar7;" (assignment_expression "iVar9 = iVar9 + iVar7" (identifier "iVar9") (= "=") (binary_expression "iVar9 + iVar7" (identifier "iVar9") (+ "+") (identifier "iVar7"))) (; ";")) (} "}")))) (labeled_statement "LAB_00056cd4:\n    uVar3 = uVar3 - uVar11;" (statement_identifier "LAB_00056cd4") (: ":") (expression_statement "uVar3 = uVar3 - uVar11;" (assignment_expression "uVar3 = uVar3 - uVar11" (identifier "uVar3") (= "=") (binary_expression "uVar3 - uVar11" (identifier "uVar3") (- "-") (identifier "uVar11"))) (; ";"))) (if_statement "if (uVar3 < 0x20000) goto LAB_00056c2c;" (if "if") (parenthesized_expression "(uVar3 < 0x20000)" (( "(") (binary_expression "uVar3 < 0x20000" (identifier "uVar3") (< "<") (number_literal "0x20000")) () ")")) (goto_statement "goto LAB_00056c2c;" (goto "goto") (statement_identifier "LAB_00056c2c") (; ";"))) (if_statement "if (uVar11 < uVar3) {\n      iVar5 = 0;\n      uVar10 = uVar11;\n      if ((int)uVar3 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar3) {\n            uVar3 = uVar3 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar3);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar3) {\n            uVar3 = uVar3 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }\n      if (uVar3 < 0x20000) {\n        iVar6 = iVar8 * uVar4 + iVar6;\n        iVar7 = iVar9 * uVar4 + iVar7;\n        goto LAB_00056c2c;\n      }\n      iVar6 = iVar8 * (uVar4 + 1) + iVar6;\n      iVar7 = iVar9 * (uVar4 + 1) + iVar7;\n    }\n    else {\n      iVar6 = iVar6 + iVar8;\n      iVar7 = iVar7 + iVar9;\n    }" (if "if") (parenthesized_expression "(uVar11 < uVar3)" (( "(") (binary_expression "uVar11 < uVar3" (identifier "uVar11") (< "<") (identifier "uVar3")) () ")")) (compound_statement "{\n      iVar5 = 0;\n      uVar10 = uVar11;\n      if ((int)uVar3 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar3) {\n            uVar3 = uVar3 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar3);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar3) {\n            uVar3 = uVar3 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }\n      if (uVar3 < 0x20000) {\n        iVar6 = iVar8 * uVar4 + iVar6;\n        iVar7 = iVar9 * uVar4 + iVar7;\n        goto LAB_00056c2c;\n      }\n      iVar6 = iVar8 * (uVar4 + 1) + iVar6;\n      iVar7 = iVar9 * (uVar4 + 1) + iVar7;\n    }" ({ "{") (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" (identifier "iVar5") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar10 = uVar11;" (assignment_expression "uVar10 = uVar11" (identifier "uVar10") (= "=") (identifier "uVar11")) (; ";")) (if_statement "if ((int)uVar3 < 0) {\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar3) {\n            uVar3 = uVar3 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }\n      else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar3);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar3) {\n            uVar3 = uVar3 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }" (if "if") (parenthesized_expression "((int)uVar3 < 0)" (( "(") (binary_expression "(int)uVar3 < 0" (cast_expression "(int)uVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar3")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        iVar5 = 1;\n        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }\n        uVar4 = 0;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar3) {\n            uVar3 = uVar3 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);\n      }" ({ "{") (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" (identifier "iVar5") (= "=") (number_literal "1")) (; ";")) (for_statement "for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {\n          iVar5 = iVar5 + 1;\n        }" (for "for") (( "(") (; ";") (binary_expression "-1 < (int)uVar10" (number_literal "-1") (< "<") (cast_expression "(int)uVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar10"))) (; ";") (assignment_expression "uVar10 = uVar10 << 1" (identifier "uVar10") (= "=") (binary_expression "uVar10 << 1" (identifier "uVar10") (<< "<<") (number_literal "1"))) () ")") (compound_statement "{\n          iVar5 = iVar5 + 1;\n        }" ({ "{") (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + 1" (identifier "iVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar3) {\n            uVar3 = uVar3 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        } while (iVar5 != 0);" (do "do") (compound_statement "{\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar10 <= uVar3) {\n            uVar3 = uVar3 - uVar10;\n            uVar4 = uVar4 | 1;\n          }\n          uVar10 = uVar10 >> 1;\n        }" ({ "{") (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + -1" (identifier "iVar5") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar4 = uVar4 << 1;" (assignment_expression "uVar4 = uVar4 << 1" (identifier "uVar4") (= "=") (binary_expression "uVar4 << 1" (identifier "uVar4") (<< "<<") (number_literal "1"))) (; ";")) (if_statement "if (uVar10 <= uVar3) {\n            uVar3 = uVar3 - uVar10;\n            uVar4 = uVar4 | 1;\n          }" (if "if") (parenthesized_expression "(uVar10 <= uVar3)" (( "(") (binary_expression "uVar10 <= uVar3" (identifier "uVar10") (<= "<=") (identifier "uVar3")) () ")")) (compound_statement "{\n            uVar3 = uVar3 - uVar10;\n            uVar4 = uVar4 | 1;\n          }" ({ "{") (expression_statement "uVar3 = uVar3 - uVar10;" (assignment_expression "uVar3 = uVar3 - uVar10" (identifier "uVar3") (= "=") (binary_expression "uVar3 - uVar10" (identifier "uVar3") (- "-") (identifier "uVar10"))) (; ";")) (expression_statement "uVar4 = uVar4 | 1;" (assignment_expression "uVar4 = uVar4 | 1" (identifier "uVar4") (= "=") (binary_expression "uVar4 | 1" (identifier "uVar4") (| "|") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "uVar10 = uVar10 >> 1;" (assignment_expression "uVar10 = uVar10 >> 1" (identifier "uVar10") (= "=") (binary_expression "uVar10 >> 1" (identifier "uVar10") (>> ">>") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}")) (else_clause "else {\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar3);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar3) {\n            uVar3 = uVar3 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }" (else "else") (compound_statement "{\n        do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar3);\n        uVar4 = 0;\n        uVar2 = uVar2 & 0x7fffffff;\n        do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar3) {\n            uVar3 = uVar3 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);\n      }" ({ "{") (do_statement "do {\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        } while (uVar10 <= uVar3);" (do "do") (compound_statement "{\n          uVar2 = uVar10;\n          uVar10 = uVar2 << 1;\n          iVar5 = iVar5 + 1;\n        }" ({ "{") (expression_statement "uVar2 = uVar10;" (assignment_expression "uVar2 = uVar10" (identifier "uVar2") (= "=") (identifier "uVar10")) (; ";")) (expression_statement "uVar10 = uVar2 << 1;" (assignment_expression "uVar10 = uVar2 << 1" (identifier "uVar10") (= "=") (binary_expression "uVar2 << 1" (identifier "uVar2") (<< "<<") (number_literal "1"))) (; ";")) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + 1" (identifier "iVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar10 <= uVar3)" (( "(") (binary_expression "uVar10 <= uVar3" (identifier "uVar10") (<= "<=") (identifier "uVar3")) () ")")) (; ";")) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar2 = uVar2 & 0x7fffffff;" (assignment_expression "uVar2 = uVar2 & 0x7fffffff" (identifier "uVar2") (= "=") (binary_expression "uVar2 & 0x7fffffff" (identifier "uVar2") (& "&") (number_literal "0x7fffffff"))) (; ";")) (do_statement "do {\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar3) {\n            uVar3 = uVar3 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        } while (iVar5 != 0);" (do "do") (compound_statement "{\n          iVar5 = iVar5 + -1;\n          uVar4 = uVar4 << 1;\n          if (uVar2 <= uVar3) {\n            uVar3 = uVar3 - uVar2;\n            uVar4 = uVar4 | 1;\n          }\n          uVar2 = uVar2 >> 1;\n        }" ({ "{") (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + -1" (identifier "iVar5") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar4 = uVar4 << 1;" (assignment_expression "uVar4 = uVar4 << 1" (identifier "uVar4") (= "=") (binary_expression "uVar4 << 1" (identifier "uVar4") (<< "<<") (number_literal "1"))) (; ";")) (if_statement "if (uVar2 <= uVar3) {\n            uVar3 = uVar3 - uVar2;\n            uVar4 = uVar4 | 1;\n          }" (if "if") (parenthesized_expression "(uVar2 <= uVar3)" (( "(") (binary_expression "uVar2 <= uVar3" (identifier "uVar2") (<= "<=") (identifier "uVar3")) () ")")) (compound_statement "{\n            uVar3 = uVar3 - uVar2;\n            uVar4 = uVar4 | 1;\n          }" ({ "{") (expression_statement "uVar3 = uVar3 - uVar2;" (assignment_expression "uVar3 = uVar3 - uVar2" (identifier "uVar3") (= "=") (binary_expression "uVar3 - uVar2" (identifier "uVar3") (- "-") (identifier "uVar2"))) (; ";")) (expression_statement "uVar4 = uVar4 | 1;" (assignment_expression "uVar4 = uVar4 | 1" (identifier "uVar4") (= "=") (binary_expression "uVar4 | 1" (identifier "uVar4") (| "|") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "uVar2 = uVar2 >> 1;" (assignment_expression "uVar2 = uVar2 >> 1" (identifier "uVar2") (= "=") (binary_expression "uVar2 >> 1" (identifier "uVar2") (>> ">>") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}")))) (if_statement "if (uVar3 < 0x20000) {\n        iVar6 = iVar8 * uVar4 + iVar6;\n        iVar7 = iVar9 * uVar4 + iVar7;\n        goto LAB_00056c2c;\n      }" (if "if") (parenthesized_expression "(uVar3 < 0x20000)" (( "(") (binary_expression "uVar3 < 0x20000" (identifier "uVar3") (< "<") (number_literal "0x20000")) () ")")) (compound_statement "{\n        iVar6 = iVar8 * uVar4 + iVar6;\n        iVar7 = iVar9 * uVar4 + iVar7;\n        goto LAB_00056c2c;\n      }" ({ "{") (expression_statement "iVar6 = iVar8 * uVar4 + iVar6;" (assignment_expression "iVar6 = iVar8 * uVar4 + iVar6" (identifier "iVar6") (= "=") (binary_expression "iVar8 * uVar4 + iVar6" (binary_expression "iVar8 * uVar4" (identifier "iVar8") (* "*") (identifier "uVar4")) (+ "+") (identifier "iVar6"))) (; ";")) (expression_statement "iVar7 = iVar9 * uVar4 + iVar7;" (assignment_expression "iVar7 = iVar9 * uVar4 + iVar7" (identifier "iVar7") (= "=") (binary_expression "iVar9 * uVar4 + iVar7" (binary_expression "iVar9 * uVar4" (identifier "iVar9") (* "*") (identifier "uVar4")) (+ "+") (identifier "iVar7"))) (; ";")) (goto_statement "goto LAB_00056c2c;" (goto "goto") (statement_identifier "LAB_00056c2c") (; ";")) (} "}"))) (expression_statement "iVar6 = iVar8 * (uVar4 + 1) + iVar6;" (assignment_expression "iVar6 = iVar8 * (uVar4 + 1) + iVar6" (identifier "iVar6") (= "=") (binary_expression "iVar8 * (uVar4 + 1) + iVar6" (binary_expression "iVar8 * (uVar4 + 1)" (identifier "iVar8") (* "*") (parenthesized_expression "(uVar4 + 1)" (( "(") (binary_expression "uVar4 + 1" (identifier "uVar4") (+ "+") (number_literal "1")) () ")"))) (+ "+") (identifier "iVar6"))) (; ";")) (expression_statement "iVar7 = iVar9 * (uVar4 + 1) + iVar7;" (assignment_expression "iVar7 = iVar9 * (uVar4 + 1) + iVar7" (identifier "iVar7") (= "=") (binary_expression "iVar9 * (uVar4 + 1) + iVar7" (binary_expression "iVar9 * (uVar4 + 1)" (identifier "iVar9") (* "*") (parenthesized_expression "(uVar4 + 1)" (( "(") (binary_expression "uVar4 + 1" (identifier "uVar4") (+ "+") (number_literal "1")) () ")"))) (+ "+") (identifier "iVar7"))) (; ";")) (} "}")) (else_clause "else {\n      iVar6 = iVar6 + iVar8;\n      iVar7 = iVar7 + iVar9;\n    }" (else "else") (compound_statement "{\n      iVar6 = iVar6 + iVar8;\n      iVar7 = iVar7 + iVar9;\n    }" ({ "{") (expression_statement "iVar6 = iVar6 + iVar8;" (assignment_expression "iVar6 = iVar6 + iVar8" (identifier "iVar6") (= "=") (binary_expression "iVar6 + iVar8" (identifier "iVar6") (+ "+") (identifier "iVar8"))) (; ";")) (expression_statement "iVar7 = iVar7 + iVar9;" (assignment_expression "iVar7 = iVar7 + iVar9" (identifier "iVar7") (= "=") (binary_expression "iVar7 + iVar9" (identifier "iVar7") (+ "+") (identifier "iVar9"))) (; ";")) (} "}")))) (goto_statement "goto LAB_00056cfc;" (goto "goto") (statement_identifier "LAB_00056cfc") (; ";")) (} "}"))) (labeled_statement "LAB_00056c2c:\n  *param_5 = iVar8;" (statement_identifier "LAB_00056c2c") (: ":") (expression_statement "*param_5 = iVar8;" (assignment_expression "*param_5 = iVar8" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (= "=") (identifier "iVar8")) (; ";"))) (expression_statement "param_5[1] = iVar6;" (assignment_expression "param_5[1] = iVar6" (subscript_expression "param_5[1]" (identifier "param_5") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar6")) (; ";")) (expression_statement "param_5[2] = iVar9;" (assignment_expression "param_5[2] = iVar9" (subscript_expression "param_5[2]" (identifier "param_5") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "iVar9")) (; ";")) (expression_statement "param_5[3] = iVar7;" (assignment_expression "param_5[3] = iVar7" (subscript_expression "param_5[3]" (identifier "param_5") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "iVar7")) (; ";")) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}")))
(translation_unit (function_definition type: (type_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: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (return_statement (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (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: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (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: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier)))))) (while_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (for_statement condition: (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) update: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (do_statement body: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (identifier) right: (identifier))))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (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: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier)))) (break_statement))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (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: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (break_statement)) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal))))) (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (for_statement condition: (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) update: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (do_statement body: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (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: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier)))) (break_statement))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier)) right: (identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))))))) (goto_statement label: (statement_identifier)) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (for_statement condition: (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) update: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (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: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (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 (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (for_statement condition: (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) update: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (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: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (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 (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (return_statement (number_literal)))))

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

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  uint uVar10;
  uint uVar11;
  
  if ((param_1 < 2) || (param_3 < 2)) {
    return 0;
  }
  if ((param_3 < param_1) || ((param_1 == param_3 && (param_4 < param_2 != 0)))) {
    param_1 = (param_1 - param_3) - (uint)(param_2 < param_4);
    param_2 = param_2 - param_4;
    if (param_1 < 2) {
      return 0;
    }
    iVar9 = 0;
    iVar6 = 1;
    iVar7 = 1;
    iVar8 = 1;
    if (param_1 < param_3) goto LAB_00056c80;
  }
  else {
    param_3 = param_3 - ((param_4 < param_2) + param_1);
    param_4 = param_4 - param_2;
    if (param_3 < 2) {
      return 0;
    }
    iVar9 = 1;
    iVar6 = 0;
    iVar7 = 1;
    iVar8 = 1;
    if (param_1 < param_3) goto LAB_00056c80;
  }
  while (param_1 != param_3) {
    if (param_1 < 0x10000) {
      uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;
      uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;
      goto LAB_00056cd4;
    }
    param_1 = (param_1 - param_3) - (uint)(param_2 < param_4);
    if (param_1 < 2) break;
    param_2 = param_2 - param_4;
    iVar5 = iVar8;
    iVar1 = iVar9;
    if (param_3 < param_1) {
      iVar5 = 0;
      uVar3 = param_3;
      uVar11 = param_4;
      if ((int)param_1 < 0) {
        iVar5 = 1;
        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {
          uVar10 = uVar11 >> 0x1f;
          uVar11 = uVar11 << 1;
          iVar5 = iVar5 + 1;
        }
        uVar2 = 0;
        do {
          uVar2 = uVar2 << 1;
          if (uVar3 < param_1) {
            uVar10 = (uint)(param_2 < uVar11);
LAB_00056f78:
            param_2 = param_2 - uVar11;
            param_1 = (param_1 - uVar3) - uVar10;
            uVar2 = uVar2 | 1;
          }
          else if ((param_1 == uVar3) && (uVar11 <= param_2)) {
            uVar10 = 0;
            goto LAB_00056f78;
          }
          iVar5 = iVar5 + -1;
          uVar11 = uVar3 << 0x1f | uVar11 >> 1;
          uVar3 = uVar3 >> 1;
        } while (iVar5 != 0);
      }
      else {
        do {
          do {
            uVar10 = uVar11 >> 0x1f;
            uVar11 = uVar11 << 1;
            uVar3 = uVar10 | uVar3 << 1;
            iVar5 = iVar5 + 1;
          } while (uVar3 < param_1);
          uVar2 = 0;
          uVar4 = uVar3;
        } while ((param_1 == uVar3) && (uVar4 = uVar10, uVar11 <= param_2));
        do {
          uVar3 = uVar3 >> 1;
          uVar11 = uVar4 << 0x1f | uVar11 >> 1;
          uVar2 = uVar2 << 1;
          if (uVar3 < param_1) {
            uVar10 = (uint)(param_2 < uVar11);
LAB_00056eac:
            param_2 = param_2 - uVar11;
            param_1 = (param_1 - uVar3) - uVar10;
            uVar2 = uVar2 | 1;
          }
          else if ((uVar3 == param_1) && (uVar11 <= param_2)) {
            uVar10 = 0;
            goto LAB_00056eac;
          }
          iVar5 = iVar5 + -1;
          uVar4 = uVar3;
        } while (iVar5 != 0);
      }
      if (param_1 < 2) {
        iVar6 = iVar8 * uVar2 + iVar6;
        iVar7 = iVar9 * uVar2 + iVar7;
        break;
      }
      iVar5 = iVar8 * (uVar2 + 1);
      iVar1 = iVar9 * (uVar2 + 1);
    }
    iVar7 = iVar7 + iVar1;
    iVar6 = iVar6 + iVar5;
    if (param_1 == param_3) break;
LAB_00056c80:
    if (param_3 < 0x10000) {
      uVar3 = (param_2 >> 0x10) + param_1 * 0x10000;
      uVar11 = (param_4 >> 0x10) + param_3 * 0x10000;
      goto LAB_00056cfc;
    }
    param_3 = (param_3 - param_1) - (uint)(param_4 < param_2);
    if (param_3 < 2) break;
    param_4 = param_4 - param_2;
    if (param_1 < param_3) {
      iVar5 = 0;
      uVar3 = param_1;
      uVar11 = param_2;
      if ((int)param_3 < 0) {
        iVar5 = 1;
        for (; -1 < (int)uVar3; uVar3 = uVar10 | uVar3 << 1) {
          uVar10 = uVar11 >> 0x1f;
          uVar11 = uVar11 << 1;
          iVar5 = iVar5 + 1;
        }
        uVar10 = 0;
        do {
          uVar10 = uVar10 << 1;
          if (uVar3 < param_3) {
            uVar4 = (uint)(param_4 < uVar11);
LAB_00057068:
            param_4 = param_4 - uVar11;
            param_3 = (param_3 - uVar3) - uVar4;
            uVar10 = uVar10 | 1;
          }
          else if ((param_3 == uVar3) && (uVar11 <= param_4)) {
            uVar4 = 0;
            goto LAB_00057068;
          }
          iVar5 = iVar5 + -1;
          uVar11 = uVar3 << 0x1f | uVar11 >> 1;
          uVar3 = uVar3 >> 1;
        } while (iVar5 != 0);
      }
      else {
        do {
          do {
            uVar4 = uVar11 << 1;
            uVar3 = uVar11 >> 0x1f | uVar3 << 1;
            iVar5 = iVar5 + 1;
            uVar11 = uVar4;
          } while (uVar3 < param_3);
        } while ((param_3 == uVar3) && (uVar4 <= param_4));
        uVar10 = 0;
        do {
          uVar11 = uVar3 << 0x1f;
          uVar3 = uVar3 >> 1;
          uVar4 = uVar11 | uVar4 >> 1;
          uVar10 = uVar10 << 1;
          if (uVar3 < param_3) {
            uVar11 = (uint)(param_4 < uVar4);
LAB_00056df4:
            param_4 = param_4 - uVar4;
            param_3 = (param_3 - uVar3) - uVar11;
            uVar10 = uVar10 | 1;
          }
          else if ((uVar3 == param_3) && (uVar4 <= param_4)) {
            uVar11 = 0;
            goto LAB_00056df4;
          }
          iVar5 = iVar5 + -1;
        } while (iVar5 != 0);
      }
      if (param_3 < 2) {
        iVar8 = uVar10 * iVar6 + iVar8;
        iVar9 = uVar10 * iVar7 + iVar9;
        break;
      }
      iVar8 = (uVar10 + 1) * iVar6 + iVar8;
      iVar9 = (uVar10 + 1) * iVar7 + iVar9;
    }
    else {
      iVar8 = iVar8 + iVar6;
      iVar9 = iVar9 + iVar7;
    }
  }
  goto LAB_00056c2c;
LAB_00056cfc:
  uVar11 = uVar11 - uVar3;
  if (0x1ffff < uVar11) {
    if (uVar3 < uVar11) {
      iVar5 = 0;
      uVar10 = uVar3;
      if ((int)uVar11 < 0) {
        iVar5 = 1;
        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {
          iVar5 = iVar5 + 1;
        }
        uVar4 = 0;
        do {
          iVar5 = iVar5 + -1;
          uVar4 = uVar4 << 1;
          if (uVar10 <= uVar11) {
            uVar11 = uVar11 - uVar10;
            uVar4 = uVar4 | 1;
          }
          uVar10 = uVar10 >> 1;
        } while (iVar5 != 0);
      }
      else {
        do {
          uVar2 = uVar10;
          uVar10 = uVar2 << 1;
          iVar5 = iVar5 + 1;
        } while (uVar10 <= uVar11);
        uVar4 = 0;
        uVar2 = uVar2 & 0x7fffffff;
        do {
          iVar5 = iVar5 + -1;
          uVar4 = uVar4 << 1;
          if (uVar2 <= uVar11) {
            uVar11 = uVar11 - uVar2;
            uVar4 = uVar4 | 1;
          }
          uVar2 = uVar2 >> 1;
        } while (iVar5 != 0);
      }
      if (uVar11 < 0x20000) {
        iVar8 = iVar6 * uVar4 + iVar8;
        iVar9 = iVar7 * uVar4 + iVar9;
        goto LAB_00056c2c;
      }
      iVar8 = iVar6 * (uVar4 + 1) + iVar8;
      iVar9 = iVar7 * (uVar4 + 1) + iVar9;
    }
    else {
      iVar8 = iVar8 + iVar6;
      iVar9 = iVar9 + iVar7;
    }
LAB_00056cd4:
    uVar3 = uVar3 - uVar11;
    if (uVar3 < 0x20000) goto LAB_00056c2c;
    if (uVar11 < uVar3) {
      iVar5 = 0;
      uVar10 = uVar11;
      if ((int)uVar3 < 0) {
        iVar5 = 1;
        for (; -1 < (int)uVar10; uVar10 = uVar10 << 1) {
          iVar5 = iVar5 + 1;
        }
        uVar4 = 0;
        do {
          iVar5 = iVar5 + -1;
          uVar4 = uVar4 << 1;
          if (uVar10 <= uVar3) {
            uVar3 = uVar3 - uVar10;
            uVar4 = uVar4 | 1;
          }
          uVar10 = uVar10 >> 1;
        } while (iVar5 != 0);
      }
      else {
        do {
          uVar2 = uVar10;
          uVar10 = uVar2 << 1;
          iVar5 = iVar5 + 1;
        } while (uVar10 <= uVar3);
        uVar4 = 0;
        uVar2 = uVar2 & 0x7fffffff;
        do {
          iVar5 = iVar5 + -1;
          uVar4 = uVar4 << 1;
          if (uVar2 <= uVar3) {
            uVar3 = uVar3 - uVar2;
            uVar4 = uVar4 | 1;
          }
          uVar2 = uVar2 >> 1;
        } while (iVar5 != 0);
      }
      if (uVar3 < 0x20000) {
        iVar6 = iVar8 * uVar4 + iVar6;
        iVar7 = iVar9 * uVar4 + iVar7;
        goto LAB_00056c2c;
      }
      iVar6 = iVar8 * (uVar4 + 1) + iVar6;
      iVar7 = iVar9 * (uVar4 + 1) + iVar7;
    }
    else {
      iVar6 = iVar6 + iVar8;
      iVar7 = iVar7 + iVar9;
    }
    goto LAB_00056cfc;
  }
LAB_00056c2c:
  *param_5 = iVar8;
  param_5[1] = iVar6;
  param_5[2] = iVar9;
  param_5[3] = iVar7;
  return 1;
}

