void bn_sqr_comba4(unsigned long long *r, unsigned long long *a) {
  unsigned long long bl, bh;
  unsigned long long t1, t2;
  unsigned long long c1, c2, c3;
  c1 = 0;
  c2 = 0;
  c3 = 0;
  {
    unsigned long long l, h, m;
    h = ((a)[0]);
    l = ((h) & (0xffffffffL));
    h = (((h) >> 32) & (0xffffffffL));
    m = (l) * (h);
    l *= l;
    h *= h;
    h += (m & (0xffffffff80000000LL)) >> (32 - 1);
    m = (m & (0xffffffffL)) << (32 + 1);
    l = (l + m) & (0xffffffffffffffffLL);
    if (l < m)
      h++;
    (t1) = l;
    (t2) = h;
  };
  c1 = (c1 + t1) & (0xffffffffffffffffLL);
  if ((c1) < t1)
    t2++;
  c2 = (c2 + t2) & (0xffffffffffffffffLL);
  if ((c2) < t2)
    c3++;
  ;
  r[0] = c1;
  c1 = 0;
  t1 = (((a)[1]) & (0xffffffffL));
  t2 = ((((a)[1]) >> 32) & (0xffffffffL));
  bl = (((a)[0]) & (0xffffffffL));
  bh = ((((a)[0]) >> 32) & (0xffffffffL));
  {
    unsigned long long m, m1, lt, ht;
    lt = t1;
    ht = t2;
    m = (bh) * (lt);
    lt = (bl) * (lt);
    m1 = (bl) * (ht);
    ht = (bh) * (ht);
    m = (m + m1) & (0xffffffffffffffffLL);
    if (m < m1)
      ht += ((unsigned long long)((1L) & (0xffffffffL)) << 32);
    ht += (((m) >> 32) & (0xffffffffL));
    m1 = ((unsigned long long)((m) & (0xffffffffL)) << 32);
    lt = (lt + m1) & (0xffffffffffffffffLL);
    if (lt < m1)
      ht++;
    (t1) = lt;
    (t2) = ht;
  };
  if (t2 & (0x8000000000000000LL))
    c1++;
  t2 = (t2 + t2) & (0xffffffffffffffffLL);
  if (t1 & (0x8000000000000000LL))
    t2++;
  t1 = (t1 + t1) & (0xffffffffffffffffLL);
  c2 = (c2 + t1) & (0xffffffffffffffffLL);
  if ((c2 < t1) && (((++t2) & (0xffffffffffffffffLL)) == 0))
    c1++;
  c3 = (c3 + t2) & (0xffffffffffffffffLL);
  if ((c3) < t2)
    c1++;
  ;
  r[1] = c2;
  c2 = 0;
  {
    unsigned long long l, h, m;
    h = ((a)[1]);
    l = ((h) & (0xffffffffL));
    h = (((h) >> 32) & (0xffffffffL));
    m = (l) * (h);
    l *= l;
    h *= h;
    h += (m & (0xffffffff80000000LL)) >> (32 - 1);
    m = (m & (0xffffffffL)) << (32 + 1);
    l = (l + m) & (0xffffffffffffffffLL);
    if (l < m)
      h++;
    (t1) = l;
    (t2) = h;
  };
  c3 = (c3 + t1) & (0xffffffffffffffffLL);
  if ((c3) < t1)
    t2++;
  c1 = (c1 + t2) & (0xffffffffffffffffLL);
  if ((c1) < t2)
    c2++;
  ;
  t1 = (((a)[2]) & (0xffffffffL));
  t2 = ((((a)[2]) >> 32) & (0xffffffffL));
  bl = (((a)[0]) & (0xffffffffL));
  bh = ((((a)[0]) >> 32) & (0xffffffffL));
  {
    unsigned long long m, m1, lt, ht;
    lt = t1;
    ht = t2;
    m = (bh) * (lt);
    lt = (bl) * (lt);
    m1 = (bl) * (ht);
    ht = (bh) * (ht);
    m = (m + m1) & (0xffffffffffffffffLL);
    if (m < m1)
      ht += ((unsigned long long)((1L) & (0xffffffffL)) << 32);
    ht += (((m) >> 32) & (0xffffffffL));
    m1 = ((unsigned long long)((m) & (0xffffffffL)) << 32);
    lt = (lt + m1) & (0xffffffffffffffffLL);
    if (lt < m1)
      ht++;
    (t1) = lt;
    (t2) = ht;
  };
  if (t2 & (0x8000000000000000LL))
    c2++;
  t2 = (t2 + t2) & (0xffffffffffffffffLL);
  if (t1 & (0x8000000000000000LL))
    t2++;
  t1 = (t1 + t1) & (0xffffffffffffffffLL);
  c3 = (c3 + t1) & (0xffffffffffffffffLL);
  if ((c3 < t1) && (((++t2) & (0xffffffffffffffffLL)) == 0))
    c2++;
  c1 = (c1 + t2) & (0xffffffffffffffffLL);
  if ((c1) < t2)
    c2++;
  ;
  r[2] = c3;
  c3 = 0;
  t1 = (((a)[3]) & (0xffffffffL));
  t2 = ((((a)[3]) >> 32) & (0xffffffffL));
  bl = (((a)[0]) & (0xffffffffL));
  bh = ((((a)[0]) >> 32) & (0xffffffffL));
  {
    unsigned long long m, m1, lt, ht;
    lt = t1;
    ht = t2;
    m = (bh) * (lt);
    lt = (bl) * (lt);
    m1 = (bl) * (ht);
    ht = (bh) * (ht);
    m = (m + m1) & (0xffffffffffffffffLL);
    if (m < m1)
      ht += ((unsigned long long)((1L) & (0xffffffffL)) << 32);
    ht += (((m) >> 32) & (0xffffffffL));
    m1 = ((unsigned long long)((m) & (0xffffffffL)) << 32);
    lt = (lt + m1) & (0xffffffffffffffffLL);
    if (lt < m1)
      ht++;
    (t1) = lt;
    (t2) = ht;
  };
  if (t2 & (0x8000000000000000LL))
    c3++;
  t2 = (t2 + t2) & (0xffffffffffffffffLL);
  if (t1 & (0x8000000000000000LL))
    t2++;
  t1 = (t1 + t1) & (0xffffffffffffffffLL);
  c1 = (c1 + t1) & (0xffffffffffffffffLL);
  if ((c1 < t1) && (((++t2) & (0xffffffffffffffffLL)) == 0))
    c3++;
  c2 = (c2 + t2) & (0xffffffffffffffffLL);
  if ((c2) < t2)
    c3++;
  ;
  t1 = (((a)[2]) & (0xffffffffL));
  t2 = ((((a)[2]) >> 32) & (0xffffffffL));
  bl = (((a)[1]) & (0xffffffffL));
  bh = ((((a)[1]) >> 32) & (0xffffffffL));
  {
    unsigned long long m, m1, lt, ht;
    lt = t1;
    ht = t2;
    m = (bh) * (lt);
    lt = (bl) * (lt);
    m1 = (bl) * (ht);
    ht = (bh) * (ht);
    m = (m + m1) & (0xffffffffffffffffLL);
    if (m < m1)
      ht += ((unsigned long long)((1L) & (0xffffffffL)) << 32);
    ht += (((m) >> 32) & (0xffffffffL));
    m1 = ((unsigned long long)((m) & (0xffffffffL)) << 32);
    lt = (lt + m1) & (0xffffffffffffffffLL);
    if (lt < m1)
      ht++;
    (t1) = lt;
    (t2) = ht;
  };
  if (t2 & (0x8000000000000000LL))
    c3++;
  t2 = (t2 + t2) & (0xffffffffffffffffLL);
  if (t1 & (0x8000000000000000LL))
    t2++;
  t1 = (t1 + t1) & (0xffffffffffffffffLL);
  c1 = (c1 + t1) & (0xffffffffffffffffLL);
  if ((c1 < t1) && (((++t2) & (0xffffffffffffffffLL)) == 0))
    c3++;
  c2 = (c2 + t2) & (0xffffffffffffffffLL);
  if ((c2) < t2)
    c3++;
  ;
  r[3] = c1;
  c1 = 0;
  {
    unsigned long long l, h, m;
    h = ((a)[2]);
    l = ((h) & (0xffffffffL));
    h = (((h) >> 32) & (0xffffffffL));
    m = (l) * (h);
    l *= l;
    h *= h;
    h += (m & (0xffffffff80000000LL)) >> (32 - 1);
    m = (m & (0xffffffffL)) << (32 + 1);
    l = (l + m) & (0xffffffffffffffffLL);
    if (l < m)
      h++;
    (t1) = l;
    (t2) = h;
  };
  c2 = (c2 + t1) & (0xffffffffffffffffLL);
  if ((c2) < t1)
    t2++;
  c3 = (c3 + t2) & (0xffffffffffffffffLL);
  if ((c3) < t2)
    c1++;
  ;
  t1 = (((a)[3]) & (0xffffffffL));
  t2 = ((((a)[3]) >> 32) & (0xffffffffL));
  bl = (((a)[1]) & (0xffffffffL));
  bh = ((((a)[1]) >> 32) & (0xffffffffL));
  {
    unsigned long long m, m1, lt, ht;
    lt = t1;
    ht = t2;
    m = (bh) * (lt);
    lt = (bl) * (lt);
    m1 = (bl) * (ht);
    ht = (bh) * (ht);
    m = (m + m1) & (0xffffffffffffffffLL);
    if (m < m1)
      ht += ((unsigned long long)((1L) & (0xffffffffL)) << 32);
    ht += (((m) >> 32) & (0xffffffffL));
    m1 = ((unsigned long long)((m) & (0xffffffffL)) << 32);
    lt = (lt + m1) & (0xffffffffffffffffLL);
    if (lt < m1)
      ht++;
    (t1) = lt;
    (t2) = ht;
  };
  if (t2 & (0x8000000000000000LL))
    c1++;
  t2 = (t2 + t2) & (0xffffffffffffffffLL);
  if (t1 & (0x8000000000000000LL))
    t2++;
  t1 = (t1 + t1) & (0xffffffffffffffffLL);
  c2 = (c2 + t1) & (0xffffffffffffffffLL);
  if ((c2 < t1) && (((++t2) & (0xffffffffffffffffLL)) == 0))
    c1++;
  c3 = (c3 + t2) & (0xffffffffffffffffLL);
  if ((c3) < t2)
    c1++;
  ;
  r[4] = c2;
  c2 = 0;
  t1 = (((a)[3]) & (0xffffffffL));
  t2 = ((((a)[3]) >> 32) & (0xffffffffL));
  bl = (((a)[2]) & (0xffffffffL));
  bh = ((((a)[2]) >> 32) & (0xffffffffL));
  {
    unsigned long long m, m1, lt, ht;
    lt = t1;
    ht = t2;
    m = (bh) * (lt);
    lt = (bl) * (lt);
    m1 = (bl) * (ht);
    ht = (bh) * (ht);
    m = (m + m1) & (0xffffffffffffffffLL);
    if (m < m1)
      ht += ((unsigned long long)((1L) & (0xffffffffL)) << 32);
    ht += (((m) >> 32) & (0xffffffffL));
    m1 = ((unsigned long long)((m) & (0xffffffffL)) << 32);
    lt = (lt + m1) & (0xffffffffffffffffLL);
    if (lt < m1)
      ht++;
    (t1) = lt;
    (t2) = ht;
  };
  if (t2 & (0x8000000000000000LL))
    c2++;
  t2 = (t2 + t2) & (0xffffffffffffffffLL);
  if (t1 & (0x8000000000000000LL))
    t2++;
  t1 = (t1 + t1) & (0xffffffffffffffffLL);
  c3 = (c3 + t1) & (0xffffffffffffffffLL);
  if ((c3 < t1) && (((++t2) & (0xffffffffffffffffLL)) == 0))
    c2++;
  c1 = (c1 + t2) & (0xffffffffffffffffLL);
  if ((c1) < t2)
    c2++;
  ;
  r[5] = c3;
  c3 = 0;
  {
    unsigned long long l, h, m;
    h = ((a)[3]);
    l = ((h) & (0xffffffffL));
    h = (((h) >> 32) & (0xffffffffL));
    m = (l) * (h);
    l *= l;
    h *= h;
    h += (m & (0xffffffff80000000LL)) >> (32 - 1);
    m = (m & (0xffffffffL)) << (32 + 1);
    l = (l + m) & (0xffffffffffffffffLL);
    if (l < m)
      h++;
    (t1) = l;
    (t2) = h;
  };
  c1 = (c1 + t1) & (0xffffffffffffffffLL);
  if ((c1) < t1)
    t2++;
  c2 = (c2 + t2) & (0xffffffffffffffffLL);
  if ((c2) < t2)
    c3++;
  ;
  r[6] = c1;
  r[7] = c2;
}


x86 assembly (clang, -O0):
<bn_sqr_comba4>:
push   %rbp
mov    %rsp,%rbp
sub    $0xe8,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
movq   $0x0,-0x38(%rbp)
movq   $0x0,-0x40(%rbp)
movq   $0x0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x58(%rbp)
movabs $0xffffffff,%rax
and    -0x58(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    -0x58(%rbp),%rax
shr    $0x20,%rax
movabs $0xffffffff,%rcx
and    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
imul   -0x58(%rbp),%rax
mov    %rax,-0x60(%rbp)
mov    -0x50(%rbp),%rax
imul   -0x50(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    -0x58(%rbp),%rax
imul   -0x58(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
and    $0xffffffff80000000,%rax
shr    $0x1f,%rax
add    -0x58(%rbp),%rax
mov    %rax,-0x58(%rbp)
movabs $0xffffffff,%rax
and    -0x60(%rbp),%rax
shl    $0x21,%rax
mov    %rax,-0x60(%rbp)
mov    -0x50(%rbp),%rax
add    -0x60(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0x50(%rbp)
mov    -0x50(%rbp),%rax
cmp    -0x60(%rbp),%rax
jae    11de <bn_sqr_comba4+0xde>
mov    -0x58(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0x58(%rbp),%rax
mov    %rax,-0x30(%rbp)
mov    -0x38(%rbp),%rax
add    -0x28(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0x38(%rbp)
mov    -0x38(%rbp),%rax
cmp    -0x28(%rbp),%rax
jae    1218 <bn_sqr_comba4+0x118>
mov    -0x30(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
mov    -0x40(%rbp),%rax
add    -0x30(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0x40(%rbp)
mov    -0x40(%rbp),%rax
cmp    -0x30(%rbp),%rax
jae    1242 <bn_sqr_comba4+0x142>
mov    -0x48(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x48(%rbp)
mov    -0x38(%rbp),%rcx
mov    -0x8(%rbp),%rax
mov    %rcx,(%rax)
movq   $0x0,-0x38(%rbp)
mov    -0x10(%rbp),%rcx
movabs $0xffffffff,%rax
and    0x8(%rcx),%rax
mov    %rax,-0x28(%rbp)
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
shr    $0x20,%rax
movabs $0xffffffff,%rcx
and    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x10(%rbp),%rcx
movabs $0xffffffff,%rax
and    (%rcx),%rax
mov    %rax,-0x18(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%rax
shr    $0x20,%rax
movabs $0xffffffff,%rcx
and    %rcx,%rax
mov    %rax,-0x20(%rbp)
mov    -0x28(%rbp),%rax
mov    %rax,-0x78(%rbp)
mov    -0x30(%rbp),%rax
mov    %rax,-0x80(%rbp)
mov    -0x20(%rbp),%rax
imul   -0x78(%rbp),%rax
mov    %rax,-0x68(%rbp)
mov    -0x18(%rbp),%rax
imul   -0x78(%rbp),%rax
mov    %rax,-0x78(%rbp)
mov    -0x18(%rbp),%rax
imul   -0x80(%rbp),%rax
mov    %rax,-0x70(%rbp)
mov    -0x20(%rbp),%rax
imul   -0x80(%rbp),%rax
mov    %rax,-0x80(%rbp)
mov    -0x68(%rbp),%rax
add    -0x70(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0x68(%rbp)
mov    -0x68(%rbp),%rax
cmp    -0x70(%rbp),%rax
jae    132d <bn_sqr_comba4+0x22d>
movabs $0x100000000,%rax
add    -0x80(%rbp),%rax
mov    %rax,-0x80(%rbp)
mov    -0x68(%rbp),%rax
shr    $0x20,%rax
movabs $0xffffffff,%rcx
and    %rcx,%rax
add    -0x80(%rbp),%rax
mov    %rax,-0x80(%rbp)
movabs $0xffffffff,%rax
and    -0x68(%rbp),%rax
shl    $0x20,%rax
mov    %rax,-0x70(%rbp)
mov    -0x78(%rbp),%rax
add    -0x70(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0x78(%rbp)
mov    -0x78(%rbp),%rax
cmp    -0x70(%rbp),%rax
jae    138a <bn_sqr_comba4+0x28a>
mov    -0x80(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x80(%rbp)
mov    -0x78(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0x80(%rbp),%rax
mov    %rax,-0x30(%rbp)
movabs $0x8000000000000000,%rax
and    -0x30(%rbp),%rax
cmp    $0x0,%rax
je     13be <bn_sqr_comba4+0x2be>
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
mov    -0x30(%rbp),%rax
add    -0x30(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0x30(%rbp)
movabs $0x8000000000000000,%rax
and    -0x28(%rbp),%rax
cmp    $0x0,%rax
je     13f2 <bn_sqr_comba4+0x2f2>
mov    -0x30(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
mov    -0x28(%rbp),%rax
add    -0x28(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0x28(%rbp)
mov    -0x40(%rbp),%rax
add    -0x28(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0x40(%rbp)
mov    -0x40(%rbp),%rax
cmp    -0x28(%rbp),%rax
jae    1446 <bn_sqr_comba4+0x346>
mov    -0x30(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
and    $0xffffffffffffffff,%rax
cmp    $0x0,%rax
jne    1446 <bn_sqr_comba4+0x346>
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
mov    -0x48(%rbp),%rax
add    -0x30(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0x48(%rbp)
mov    -0x48(%rbp),%rax
cmp    -0x30(%rbp),%rax
jae    1470 <bn_sqr_comba4+0x370>
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
mov    -0x40(%rbp),%rcx
mov    -0x8(%rbp),%rax
mov    %rcx,0x8(%rax)
movq   $0x0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
mov    %rax,-0x90(%rbp)
movabs $0xffffffff,%rax
and    -0x90(%rbp),%rax
mov    %rax,-0x88(%rbp)
mov    -0x90(%rbp),%rax
shr    $0x20,%rax
movabs $0xffffffff,%rcx
and    %rcx,%rax
mov    %rax,-0x90(%rbp)
mov    -0x88(%rbp),%rax
imul   -0x90(%rbp),%rax
ff
mov    %rax,-0x98(%rbp)
mov    -0x88(%rbp),%rax
imul   -0x88(%rbp),%rax
ff
mov    %rax,-0x88(%rbp)
mov    -0x90(%rbp),%rax
imul   -0x90(%rbp),%rax
ff
mov    %rax,-0x90(%rbp)
mov    -0x98(%rbp),%rax
and    $0xffffffff80000000,%rax
shr    $0x1f,%rax
add    -0x90(%rbp),%rax
mov    %rax,-0x90(%rbp)
movabs $0xffffffff,%rax
and    -0x98(%rbp),%rax
shl    $0x21,%rax
mov    %rax,-0x98(%rbp)
mov    -0x88(%rbp),%rax
add    -0x98(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0x88(%rbp)
mov    -0x88(%rbp),%rax
cmp    -0x98(%rbp),%rax
jae    1586 <bn_sqr_comba4+0x486>
mov    -0x90(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x90(%rbp)
mov    -0x88(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0x90(%rbp),%rax
mov    %rax,-0x30(%rbp)
mov    -0x48(%rbp),%rax
add    -0x28(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0x48(%rbp)
mov    -0x48(%rbp),%rax
cmp    -0x28(%rbp),%rax
jae    15c6 <bn_sqr_comba4+0x4c6>
mov    -0x30(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
mov    -0x38(%rbp),%rax
add    -0x30(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0x38(%rbp)
mov    -0x38(%rbp),%rax
cmp    -0x30(%rbp),%rax
jae    15f0 <bn_sqr_comba4+0x4f0>
mov    -0x40(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x40(%rbp)
mov    -0x10(%rbp),%rcx
movabs $0xffffffff,%rax
and    0x10(%rcx),%rax
mov    %rax,-0x28(%rbp)
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rax
shr    $0x20,%rax
movabs $0xffffffff,%rcx
and    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x10(%rbp),%rcx
movabs $0xffffffff,%rax
and    (%rcx),%rax
mov    %rax,-0x18(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%rax
shr    $0x20,%rax
movabs $0xffffffff,%rcx
and    %rcx,%rax
mov    %rax,-0x20(%rbp)
mov    -0x28(%rbp),%rax
mov    %rax,-0xb0(%rbp)
mov    -0x30(%rbp),%rax
mov    %rax,-0xb8(%rbp)
mov    -0x20(%rbp),%rax
imul   -0xb0(%rbp),%rax
ff
mov    %rax,-0xa0(%rbp)
mov    -0x18(%rbp),%rax
imul   -0xb0(%rbp),%rax
ff
mov    %rax,-0xb0(%rbp)
mov    -0x18(%rbp),%rax
imul   -0xb8(%rbp),%rax
ff
mov    %rax,-0xa8(%rbp)
mov    -0x20(%rbp),%rax
imul   -0xb8(%rbp),%rax
ff
mov    %rax,-0xb8(%rbp)
mov    -0xa0(%rbp),%rax
add    -0xa8(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0xa0(%rbp)
mov    -0xa0(%rbp),%rax
cmp    -0xa8(%rbp),%rax
jae    16fb <bn_sqr_comba4+0x5fb>
movabs $0x100000000,%rax
add    -0xb8(%rbp),%rax
mov    %rax,-0xb8(%rbp)
mov    -0xa0(%rbp),%rax
shr    $0x20,%rax
movabs $0xffffffff,%rcx
and    %rcx,%rax
add    -0xb8(%rbp),%rax
mov    %rax,-0xb8(%rbp)
movabs $0xffffffff,%rax
and    -0xa0(%rbp),%rax
shl    $0x20,%rax
mov    %rax,-0xa8(%rbp)
mov    -0xb0(%rbp),%rax
add    -0xa8(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0xb0(%rbp)
mov    -0xb0(%rbp),%rax
cmp    -0xa8(%rbp),%rax
jae    177c <bn_sqr_comba4+0x67c>
mov    -0xb8(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb0(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0xb8(%rbp),%rax
mov    %rax,-0x30(%rbp)
movabs $0x8000000000000000,%rax
and    -0x30(%rbp),%rax
cmp    $0x0,%rax
je     17b6 <bn_sqr_comba4+0x6b6>
mov    -0x40(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x40(%rbp)
mov    -0x30(%rbp),%rax
add    -0x30(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0x30(%rbp)
movabs $0x8000000000000000,%rax
and    -0x28(%rbp),%rax
cmp    $0x0,%rax
je     17ea <bn_sqr_comba4+0x6ea>
mov    -0x30(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
mov    -0x28(%rbp),%rax
add    -0x28(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0x28(%rbp)
mov    -0x48(%rbp),%rax
add    -0x28(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0x48(%rbp)
mov    -0x48(%rbp),%rax
cmp    -0x28(%rbp),%rax
jae    183e <bn_sqr_comba4+0x73e>
mov    -0x30(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
and    $0xffffffffffffffff,%rax
cmp    $0x0,%rax
jne    183e <bn_sqr_comba4+0x73e>
mov    -0x40(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x40(%rbp)
mov    -0x38(%rbp),%rax
add    -0x30(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0x38(%rbp)
mov    -0x38(%rbp),%rax
cmp    -0x30(%rbp),%rax
jae    1868 <bn_sqr_comba4+0x768>
mov    -0x40(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x40(%rbp)
mov    -0x48(%rbp),%rcx
mov    -0x8(%rbp),%rax
mov    %rcx,0x10(%rax)
movq   $0x0,-0x48(%rbp)
mov    -0x10(%rbp),%rcx
movabs $0xffffffff,%rax
and    0x18(%rcx),%rax
mov    %rax,-0x28(%rbp)
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%rax
shr    $0x20,%rax
movabs $0xffffffff,%rcx
and    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x10(%rbp),%rcx
movabs $0xffffffff,%rax
and    (%rcx),%rax
mov    %rax,-0x18(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%rax
shr    $0x20,%rax
movabs $0xffffffff,%rcx
and    %rcx,%rax
mov    %rax,-0x20(%rbp)
mov    -0x28(%rbp),%rax
mov    %rax,-0xd0(%rbp)
mov    -0x30(%rbp),%rax
mov    %rax,-0xd8(%rbp)
mov    -0x20(%rbp),%rax
imul   -0xd0(%rbp),%rax
ff
mov    %rax,-0xc0(%rbp)
mov    -0x18(%rbp),%rax
imul   -0xd0(%rbp),%rax
ff
mov    %rax,-0xd0(%rbp)
mov    -0x18(%rbp),%rax
imul   -0xd8(%rbp),%rax
ff
mov    %rax,-0xc8(%rbp)
mov    -0x20(%rbp),%rax
imul   -0xd8(%rbp),%rax
ff
mov    %rax,-0xd8(%rbp)
mov    -0xc0(%rbp),%rax
add    -0xc8(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0xc0(%rbp)
mov    -0xc0(%rbp),%rax
cmp    -0xc8(%rbp),%rax
jae    1987 <bn_sqr_comba4+0x887>
movabs $0x100000000,%rax
add    -0xd8(%rbp),%rax
mov    %rax,-0xd8(%rbp)
mov    -0xc0(%rbp),%rax
shr    $0x20,%rax
movabs $0xffffffff,%rcx
and    %rcx,%rax
add    -0xd8(%rbp),%rax
mov    %rax,-0xd8(%rbp)
movabs $0xffffffff,%rax
and    -0xc0(%rbp),%rax
shl    $0x20,%rax
mov    %rax,-0xc8(%rbp)
mov    -0xd0(%rbp),%rax
add    -0xc8(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0xd0(%rbp)
mov    -0xd0(%rbp),%rax
cmp    -0xc8(%rbp),%rax
jae    1a08 <bn_sqr_comba4+0x908>
mov    -0xd8(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0xd8(%rbp)
mov    -0xd0(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0xd8(%rbp),%rax
mov    %rax,-0x30(%rbp)
movabs $0x8000000000000000,%rax
and    -0x30(%rbp),%rax
cmp    $0x0,%rax
je     1a42 <bn_sqr_comba4+0x942>
mov    -0x48(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x48(%rbp)
mov    -0x30(%rbp),%rax
add    -0x30(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0x30(%rbp)
movabs $0x8000000000000000,%rax
and    -0x28(%rbp),%rax
cmp    $0x0,%rax
je     1a76 <bn_sqr_comba4+0x976>
mov    -0x30(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
mov    -0x28(%rbp),%rax
add    -0x28(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0x28(%rbp)
mov    -0x38(%rbp),%rax
add    -0x28(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0x38(%rbp)
mov    -0x38(%rbp),%rax
cmp    -0x28(%rbp),%rax
jae    1aca <bn_sqr_comba4+0x9ca>
mov    -0x30(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
and    $0xffffffffffffffff,%rax
cmp    $0x0,%rax
jne    1aca <bn_sqr_comba4+0x9ca>
mov    -0x48(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x48(%rbp)
mov    -0x40(%rbp),%rax
add    -0x30(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0x40(%rbp)
mov    -0x40(%rbp),%rax
cmp    -0x30(%rbp),%rax
jae    1af4 <bn_sqr_comba4+0x9f4>
mov    -0x48(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x48(%rbp)
mov    -0x10(%rbp),%rcx
movabs $0xffffffff,%rax
and    0x10(%rcx),%rax
mov    %rax,-0x28(%rbp)
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rax
shr    $0x20,%rax
movabs $0xffffffff,%rcx
and    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x10(%rbp),%rcx
movabs $0xffffffff,%rax
and    0x8(%rcx),%rax
mov    %rax,-0x18(%rbp)
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
shr    $0x20,%rax
movabs $0xffffffff,%rcx
and    %rcx,%rax
mov    %rax,-0x20(%rbp)
mov    -0x28(%rbp),%rax
mov    %rax,-0xf0(%rbp)
mov    -0x30(%rbp),%rax
mov    %rax,-0xf8(%rbp)
mov    -0x20(%rbp),%rax
imul   -0xf0(%rbp),%rax
ff
mov    %rax,-0xe0(%rbp)
mov    -0x18(%rbp),%rax
imul   -0xf0(%rbp),%rax
ff
mov    %rax,-0xf0(%rbp)
mov    -0x18(%rbp),%rax
imul   -0xf8(%rbp),%rax
ff
mov    %rax,-0xe8(%rbp)
mov    -0x20(%rbp),%rax
imul   -0xf8(%rbp),%rax
ff
mov    %rax,-0xf8(%rbp)
mov    -0xe0(%rbp),%rax
add    -0xe8(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0xe0(%rbp)
mov    -0xe0(%rbp),%rax
cmp    -0xe8(%rbp),%rax
jae    1c01 <bn_sqr_comba4+0xb01>
movabs $0x100000000,%rax
add    -0xf8(%rbp),%rax
mov    %rax,-0xf8(%rbp)
mov    -0xe0(%rbp),%rax
shr    $0x20,%rax
movabs $0xffffffff,%rcx
and    %rcx,%rax
add    -0xf8(%rbp),%rax
mov    %rax,-0xf8(%rbp)
movabs $0xffffffff,%rax
and    -0xe0(%rbp),%rax
shl    $0x20,%rax
mov    %rax,-0xe8(%rbp)
mov    -0xf0(%rbp),%rax
add    -0xe8(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0xf0(%rbp)
mov    -0xf0(%rbp),%rax
cmp    -0xe8(%rbp),%rax
jae    1c82 <bn_sqr_comba4+0xb82>
mov    -0xf8(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0xf8(%rbp)
mov    -0xf0(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0xf8(%rbp),%rax
mov    %rax,-0x30(%rbp)
movabs $0x8000000000000000,%rax
and    -0x30(%rbp),%rax
cmp    $0x0,%rax
je     1cbc <bn_sqr_comba4+0xbbc>
mov    -0x48(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x48(%rbp)
mov    -0x30(%rbp),%rax
add    -0x30(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0x30(%rbp)
movabs $0x8000000000000000,%rax
and    -0x28(%rbp),%rax
cmp    $0x0,%rax
je     1cf0 <bn_sqr_comba4+0xbf0>
mov    -0x30(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
mov    -0x28(%rbp),%rax
add    -0x28(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0x28(%rbp)
mov    -0x38(%rbp),%rax
add    -0x28(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0x38(%rbp)
mov    -0x38(%rbp),%rax
cmp    -0x28(%rbp),%rax
jae    1d44 <bn_sqr_comba4+0xc44>
mov    -0x30(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
and    $0xffffffffffffffff,%rax
cmp    $0x0,%rax
jne    1d44 <bn_sqr_comba4+0xc44>
mov    -0x48(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x48(%rbp)
mov    -0x40(%rbp),%rax
add    -0x30(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0x40(%rbp)
mov    -0x40(%rbp),%rax
cmp    -0x30(%rbp),%rax
jae    1d6e <bn_sqr_comba4+0xc6e>
mov    -0x48(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x48(%rbp)
mov    -0x38(%rbp),%rcx
mov    -0x8(%rbp),%rax
mov    %rcx,0x18(%rax)
movq   $0x0,-0x38(%rbp)
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rax
mov    %rax,-0x108(%rbp)
movabs $0xffffffff,%rax
and    -0x108(%rbp),%rax
mov    %rax,-0x100(%rbp)
mov    -0x108(%rbp),%rax
shr    $0x20,%rax
movabs $0xffffffff,%rcx
and    %rcx,%rax
mov    %rax,-0x108(%rbp)
mov    -0x100(%rbp),%rax
imul   -0x108(%rbp),%rax
ff
mov    %rax,-0x110(%rbp)
mov    -0x100(%rbp),%rax
imul   -0x100(%rbp),%rax
ff
mov    %rax,-0x100(%rbp)
mov    -0x108(%rbp),%rax
imul   -0x108(%rbp),%rax
ff
mov    %rax,-0x108(%rbp)
mov    -0x110(%rbp),%rax
and    $0xffffffff80000000,%rax
shr    $0x1f,%rax
add    -0x108(%rbp),%rax
mov    %rax,-0x108(%rbp)
movabs $0xffffffff,%rax
and    -0x110(%rbp),%rax
shl    $0x21,%rax
mov    %rax,-0x110(%rbp)
mov    -0x100(%rbp),%rax
add    -0x110(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0x100(%rbp)
mov    -0x100(%rbp),%rax
cmp    -0x110(%rbp),%rax
jae    1e84 <bn_sqr_comba4+0xd84>
mov    -0x108(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x108(%rbp)
mov    -0x100(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0x108(%rbp),%rax
mov    %rax,-0x30(%rbp)
mov    -0x40(%rbp),%rax
add    -0x28(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0x40(%rbp)
mov    -0x40(%rbp),%rax
cmp    -0x28(%rbp),%rax
jae    1ec4 <bn_sqr_comba4+0xdc4>
mov    -0x30(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
mov    -0x48(%rbp),%rax
add    -0x30(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0x48(%rbp)
mov    -0x48(%rbp),%rax
cmp    -0x30(%rbp),%rax
jae    1eee <bn_sqr_comba4+0xdee>
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
mov    -0x10(%rbp),%rcx
movabs $0xffffffff,%rax
and    0x18(%rcx),%rax
mov    %rax,-0x28(%rbp)
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%rax
shr    $0x20,%rax
movabs $0xffffffff,%rcx
and    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x10(%rbp),%rcx
movabs $0xffffffff,%rax
and    0x8(%rcx),%rax
mov    %rax,-0x18(%rbp)
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
shr    $0x20,%rax
movabs $0xffffffff,%rcx
and    %rcx,%rax
mov    %rax,-0x20(%rbp)
mov    -0x28(%rbp),%rax
mov    %rax,-0x128(%rbp)
mov    -0x30(%rbp),%rax
mov    %rax,-0x130(%rbp)
mov    -0x20(%rbp),%rax
imul   -0x128(%rbp),%rax
ff
mov    %rax,-0x118(%rbp)
mov    -0x18(%rbp),%rax
imul   -0x128(%rbp),%rax
ff
mov    %rax,-0x128(%rbp)
mov    -0x18(%rbp),%rax
imul   -0x130(%rbp),%rax
ff
mov    %rax,-0x120(%rbp)
mov    -0x20(%rbp),%rax
imul   -0x130(%rbp),%rax
ff
mov    %rax,-0x130(%rbp)
mov    -0x118(%rbp),%rax
add    -0x120(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0x118(%rbp)
mov    -0x118(%rbp),%rax
cmp    -0x120(%rbp),%rax
jae    1ffb <bn_sqr_comba4+0xefb>
movabs $0x100000000,%rax
add    -0x130(%rbp),%rax
mov    %rax,-0x130(%rbp)
mov    -0x118(%rbp),%rax
shr    $0x20,%rax
movabs $0xffffffff,%rcx
and    %rcx,%rax
add    -0x130(%rbp),%rax
mov    %rax,-0x130(%rbp)
movabs $0xffffffff,%rax
and    -0x118(%rbp),%rax
shl    $0x20,%rax
mov    %rax,-0x120(%rbp)
mov    -0x128(%rbp),%rax
add    -0x120(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0x128(%rbp)
mov    -0x128(%rbp),%rax
cmp    -0x120(%rbp),%rax
jae    207c <bn_sqr_comba4+0xf7c>
mov    -0x130(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x130(%rbp)
mov    -0x128(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0x130(%rbp),%rax
mov    %rax,-0x30(%rbp)
movabs $0x8000000000000000,%rax
and    -0x30(%rbp),%rax
cmp    $0x0,%rax
je     20b6 <bn_sqr_comba4+0xfb6>
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
mov    -0x30(%rbp),%rax
add    -0x30(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0x30(%rbp)
movabs $0x8000000000000000,%rax
and    -0x28(%rbp),%rax
cmp    $0x0,%rax
je     20ea <bn_sqr_comba4+0xfea>
mov    -0x30(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
mov    -0x28(%rbp),%rax
add    -0x28(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0x28(%rbp)
mov    -0x40(%rbp),%rax
add    -0x28(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0x40(%rbp)
mov    -0x40(%rbp),%rax
cmp    -0x28(%rbp),%rax
jae    213e <bn_sqr_comba4+0x103e>
mov    -0x30(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
and    $0xffffffffffffffff,%rax
cmp    $0x0,%rax
jne    213e <bn_sqr_comba4+0x103e>
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
mov    -0x48(%rbp),%rax
add    -0x30(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0x48(%rbp)
mov    -0x48(%rbp),%rax
cmp    -0x30(%rbp),%rax
jae    2168 <bn_sqr_comba4+0x1068>
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
mov    -0x40(%rbp),%rcx
mov    -0x8(%rbp),%rax
mov    %rcx,0x20(%rax)
movq   $0x0,-0x40(%rbp)
mov    -0x10(%rbp),%rcx
movabs $0xffffffff,%rax
and    0x18(%rcx),%rax
mov    %rax,-0x28(%rbp)
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%rax
shr    $0x20,%rax
movabs $0xffffffff,%rcx
and    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x10(%rbp),%rcx
movabs $0xffffffff,%rax
and    0x10(%rcx),%rax
mov    %rax,-0x18(%rbp)
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rax
shr    $0x20,%rax
movabs $0xffffffff,%rcx
and    %rcx,%rax
mov    %rax,-0x20(%rbp)
mov    -0x28(%rbp),%rax
mov    %rax,-0x148(%rbp)
mov    -0x30(%rbp),%rax
mov    %rax,-0x150(%rbp)
mov    -0x20(%rbp),%rax
imul   -0x148(%rbp),%rax
ff
mov    %rax,-0x138(%rbp)
mov    -0x18(%rbp),%rax
imul   -0x148(%rbp),%rax
ff
mov    %rax,-0x148(%rbp)
mov    -0x18(%rbp),%rax
imul   -0x150(%rbp),%rax
ff
mov    %rax,-0x140(%rbp)
mov    -0x20(%rbp),%rax
imul   -0x150(%rbp),%rax
ff
mov    %rax,-0x150(%rbp)
mov    -0x138(%rbp),%rax
add    -0x140(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0x138(%rbp)
mov    -0x138(%rbp),%rax
cmp    -0x140(%rbp),%rax
jae    2289 <bn_sqr_comba4+0x1189>
movabs $0x100000000,%rax
add    -0x150(%rbp),%rax
mov    %rax,-0x150(%rbp)
mov    -0x138(%rbp),%rax
shr    $0x20,%rax
movabs $0xffffffff,%rcx
and    %rcx,%rax
add    -0x150(%rbp),%rax
mov    %rax,-0x150(%rbp)
movabs $0xffffffff,%rax
and    -0x138(%rbp),%rax
shl    $0x20,%rax
mov    %rax,-0x140(%rbp)
mov    -0x148(%rbp),%rax
add    -0x140(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0x148(%rbp)
mov    -0x148(%rbp),%rax
cmp    -0x140(%rbp),%rax
jae    230a <bn_sqr_comba4+0x120a>
mov    -0x150(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x150(%rbp)
mov    -0x148(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0x150(%rbp),%rax
mov    %rax,-0x30(%rbp)
movabs $0x8000000000000000,%rax
and    -0x30(%rbp),%rax
cmp    $0x0,%rax
je     2344 <bn_sqr_comba4+0x1244>
mov    -0x40(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x40(%rbp)
mov    -0x30(%rbp),%rax
add    -0x30(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0x30(%rbp)
movabs $0x8000000000000000,%rax
and    -0x28(%rbp),%rax
cmp    $0x0,%rax
je     2378 <bn_sqr_comba4+0x1278>
mov    -0x30(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
mov    -0x28(%rbp),%rax
add    -0x28(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0x28(%rbp)
mov    -0x48(%rbp),%rax
add    -0x28(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0x48(%rbp)
mov    -0x48(%rbp),%rax
cmp    -0x28(%rbp),%rax
jae    23cc <bn_sqr_comba4+0x12cc>
mov    -0x30(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
and    $0xffffffffffffffff,%rax
cmp    $0x0,%rax
jne    23cc <bn_sqr_comba4+0x12cc>
mov    -0x40(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x40(%rbp)
mov    -0x38(%rbp),%rax
add    -0x30(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0x38(%rbp)
mov    -0x38(%rbp),%rax
cmp    -0x30(%rbp),%rax
jae    23f6 <bn_sqr_comba4+0x12f6>
mov    -0x40(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x40(%rbp)
mov    -0x48(%rbp),%rcx
mov    -0x8(%rbp),%rax
mov    %rcx,0x28(%rax)
movq   $0x0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%rax
mov    %rax,-0x160(%rbp)
movabs $0xffffffff,%rax
and    -0x160(%rbp),%rax
mov    %rax,-0x158(%rbp)
mov    -0x160(%rbp),%rax
shr    $0x20,%rax
movabs $0xffffffff,%rcx
and    %rcx,%rax
mov    %rax,-0x160(%rbp)
mov    -0x158(%rbp),%rax
imul   -0x160(%rbp),%rax
ff
mov    %rax,-0x168(%rbp)
mov    -0x158(%rbp),%rax
imul   -0x158(%rbp),%rax
ff
mov    %rax,-0x158(%rbp)
mov    -0x160(%rbp),%rax
imul   -0x160(%rbp),%rax
ff
mov    %rax,-0x160(%rbp)
mov    -0x168(%rbp),%rax
and    $0xffffffff80000000,%rax
shr    $0x1f,%rax
add    -0x160(%rbp),%rax
mov    %rax,-0x160(%rbp)
movabs $0xffffffff,%rax
and    -0x168(%rbp),%rax
shl    $0x21,%rax
mov    %rax,-0x168(%rbp)
mov    -0x158(%rbp),%rax
add    -0x168(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0x158(%rbp)
mov    -0x158(%rbp),%rax
cmp    -0x168(%rbp),%rax
jae    250c <bn_sqr_comba4+0x140c>
mov    -0x160(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x160(%rbp)
mov    -0x158(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0x160(%rbp),%rax
mov    %rax,-0x30(%rbp)
mov    -0x38(%rbp),%rax
add    -0x28(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0x38(%rbp)
mov    -0x38(%rbp),%rax
cmp    -0x28(%rbp),%rax
jae    254c <bn_sqr_comba4+0x144c>
mov    -0x30(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
mov    -0x40(%rbp),%rax
add    -0x30(%rbp),%rax
and    $0xffffffffffffffff,%rax
mov    %rax,-0x40(%rbp)
mov    -0x40(%rbp),%rax
cmp    -0x30(%rbp),%rax
jae    2576 <bn_sqr_comba4+0x1476>
mov    -0x48(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x48(%rbp)
mov    -0x38(%rbp),%rcx
mov    -0x8(%rbp),%rax
mov    %rcx,0x30(%rax)
mov    -0x40(%rbp),%rcx
mov    -0x8(%rbp),%rax
mov    %rcx,0x38(%rax)
add    $0xe8,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<bn_sqr_comba4>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
mov    %rsi,%r8
mov    (%rsi),%rcx
mov    %ecx,%ebp
shr    $0x20,%rcx
mov    %rbp,%rdx
imul   %rcx,%rdx
imul   %rbp,%rbp
imul   %rcx,%rcx
mov    %rdx,%r9
shr    $0x1f,%r9
shl    $0x21,%rdx
add    %rbp,%rdx
adc    %rcx,%r9
mov    %rdx,(%rdi)
mov    %rdi,%rsi
mov    (%r8),%rdx
mov    0x8(%r8),%rbp
mov    %ebp,%ebx
shr    $0x20,%rbp
mov    %edx,%ecx
shr    $0x20,%rdx
mov    %rdx,%rax
imul   %rbx,%rax
imul   %rcx,%rbx
imul   %rbp,%rcx
imul   %rbp,%rdx
movabs $0x100000000,%rdi
lea    (%rdx,%rdi,1),%rbp
add    %rax,%rcx
cmovae %rdx,%rbp
mov    %rcx,%rax
shr    $0x20,%rax
shl    $0x20,%rcx
add    %rbx,%rcx
adc    %rbp,%rax
mov    %rax,%rbp
shr    $0x3f,%rbp
shld   $0x1,%rcx,%rax
add    %rcx,%rcx
mov    %rax,%r14
inc    %r14
sete   %r10b
add    %r9,%rcx
setb   %dl
cmovae %rax,%r14
and    %r10b,%dl
movzbl %dl,%r9d
add    %rbp,%r9
mov    %rcx,0x8(%rsi)
mov    %rsi,-0x8(%rsp)
mov    (%r8),%rbp
mov    0x8(%r8),%rcx
mov    %ecx,%eax
shr    $0x20,%rcx
mov    %rax,%rbx
imul   %rcx,%rbx
imul   %rax,%rax
imul   %rcx,%rcx
mov    %rbx,%rdx
shr    $0x1f,%rdx
add    %rcx,%rdx
shl    $0x21,%rbx
xor    %r11d,%r11d
add    %rax,%rbx
setb   %r11b
add    %r14,%rbx
adc    %rdx,%r11
mov    0x10(%r8),%rax
mov    %eax,%r10d
shr    $0x20,%rax
mov    %ebp,%ecx
shr    $0x20,%rbp
mov    %rbp,%rdx
imul   %r10,%rdx
imul   %rcx,%r10
imul   %rax,%rcx
imul   %rax,%rbp
lea    (%rdi,%rbp,1),%rax
add    %rdx,%rcx
cmovae %rbp,%rax
mov    %rcx,%rbp
shr    $0x20,%rbp
shl    $0x20,%rcx
add    %r10,%rcx
adc    %rax,%rbp
xor    %eax,%eax
add    %r9,%r11
setb   %al
mov    $0x1,%edx
adc    $0x0,%rdx
test   %rbp,%rbp
cmovns %rax,%rdx
shld   $0x1,%rcx,%rbp
add    %rcx,%rcx
mov    %rbp,%r15
inc    %r15
sete   %al
add    %rbx,%rcx
cmovae %rbp,%r15
setb   %bl
and    %al,%bl
movzbl %bl,%r9d
add    %rdx,%r9
lea    (%r11,%r15,1),%r14
mov    %rcx,0x10(%rsi)
mov    0x18(%r8),%rcx
mov    %ecx,%r10d
shr    $0x20,%rcx
mov    (%r8),%rbx
mov    %ebx,%eax
shr    $0x20,%rbx
mov    %rbx,%rbp
imul   %r10,%rbp
imul   %rax,%r10
imul   %rcx,%rax
imul   %rcx,%rbx
lea    (%rbx,%rdi,1),%rdx
add    %rbp,%rax
cmovae %rbx,%rdx
mov    0x8(%r8),%rbx
mov    %rax,%rcx
shr    $0x20,%rcx
shl    $0x20,%rax
add    %r10,%rax
adc    %rdx,%rcx
mov    %rcx,%r10
shld   $0x1,%rax,%rcx
shr    $0x3f,%r10
add    %rax,%rax
mov    %rcx,%r12
inc    %r12
sete   %r13b
add    %r14,%rax
setb   %r14b
cmovae %rcx,%r12
mov    0x10(%r8),%rcx
mov    %ecx,%esi
shr    $0x20,%rcx
mov    %ebx,%ebp
shr    $0x20,%rbx
mov    %rbx,%rdx
imul   %rsi,%rdx
imul   %rbp,%rsi
imul   %rcx,%rbp
imul   %rcx,%rbx
and    %r13b,%r14b
add    %rdx,%rbp
lea    (%rbx,%rdi,1),%rcx
cmovae %rbx,%rcx
mov    %rbp,%rbx
shr    $0x20,%rbx
shl    $0x20,%rbp
add    %rsi,%rbp
adc    %rcx,%rbx
mov    %rbx,%rdx
shr    $0x3f,%rdx
shld   $0x1,%rbp,%rbx
add    %rbp,%rbp
mov    %rbx,%rsi
inc    %rsi
sete   %cl
add    %rax,%rbp
cmovae %rbx,%rsi
setb   %al
add    %r10,%rdx
and    %cl,%al
movzbl %r14b,%ecx
add    %rcx,%rdx
mov    $0x1,%r10d
add    %r11,%r15
adc    %r9,%r12
movzbl %al,%r9d
mov    -0x8(%rsp),%r15
mov    %rbp,0x18(%r15)
mov    0x10(%r8),%rax
mov    %eax,%ecx
adc    %rdx,%r9
shr    $0x20,%rax
mov    %rcx,%rdx
imul   %rax,%rdx
imul   %rcx,%rcx
imul   %rax,%rax
mov    %rdx,%rbx
shr    $0x1f,%rbx
add    %rax,%rbx
shl    $0x21,%rdx
xor    %r11d,%r11d
add    %rcx,%rdx
lea    (%r12,%rsi,1),%rax
setb   %r11b
add    %rax,%rdx
mov    0x8(%r8),%rcx
adc    %rbx,%r11
add    %rsi,%r12
adc    %r9,%r11
setb   %r9b
mov    0x18(%r8),%rsi
mov    %esi,%ebx
mov    %ecx,%ebp
adc    $0x0,%r10
shr    $0x20,%rsi
shr    $0x20,%rcx
mov    %rcx,%rax
imul   %rbx,%rax
imul   %rbp,%rbx
imul   %rsi,%rbp
imul   %rsi,%rcx
movzbl %r9b,%esi
add    %rax,%rbp
lea    (%rcx,%rdi,1),%rax
cmovae %rcx,%rax
mov    %rbp,%rcx
shr    $0x20,%rcx
shl    $0x20,%rbp
add    %rbx,%rbp
adc    %rax,%rcx
cmovns %rsi,%r10
shld   $0x1,%rbp,%rcx
add    %rbp,%rbp
mov    %rcx,%rax
inc    %rax
sete   %bl
add    %rdx,%rbp
setb   %dl
cmovae %rcx,%rax
and    %bl,%dl
movzbl %dl,%r9d
add    %r10,%r9
mov    %rbp,0x20(%r15)
mov    0x10(%r8),%rcx
mov    0x18(%r8),%rdx
mov    %edx,%esi
shr    $0x20,%rdx
mov    %ecx,%ebp
shr    $0x20,%rcx
mov    %rcx,%rbx
imul   %rsi,%rbx
imul   %rbp,%rsi
imul   %rdx,%rbp
imul   %rdx,%rcx
add    %rcx,%rdi
add    %rbx,%rbp
lea    (%r11,%rax,1),%r10
cmovae %rcx,%rdi
mov    %rbp,%rbx
shr    $0x20,%rbx
shl    $0x20,%rbp
add    %rsi,%rbp
adc    %rdi,%rbx
mov    %rbx,%rcx
shld   $0x1,%rbp,%rcx
add    %rbp,%rbp
mov    %rcx,%rdx
inc    %rdx
sete   %r14b
add    %r10,%rbp
cmovae %rcx,%rdx
setb   %cl
add    %r11,%rax
adc    %r9,%rdx
setb   %r9b
mov    %rbp,0x28(%r15)
mov    0x18(%r8),%rdi
mov    %edi,%esi
shr    $0x20,%rdi
mov    %rsi,%rax
imul   %rdi,%rax
imul   %rdi,%rdi
mov    %rax,%rbp
shr    $0x1f,%rbp
add    %rdi,%rbp
and    %r14b,%cl
shr    $0x3f,%rbx
imul   %rsi,%rsi
shl    $0x21,%rax
add    %rsi,%rax
adc    %rbx,%rbp
movzbl %cl,%ecx
add    %rcx,%rbp
add    %rdx,%rax
movzbl %r9b,%ecx
adc    %rcx,%rbp
mov    %rax,0x30(%r15)
mov    %rbp,0x38(%r15)
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define void @bn_sqr_comba4(i64* %0, i64* %1) {
%3 = alloca i64*
%4 = alloca i64*
%5 = alloca i64
%6 = alloca i64
%7 = alloca i64
%8 = alloca i64
%9 = alloca i64
%10 = alloca i64
%11 = alloca i64
%12 = alloca i64
%13 = alloca i64
%14 = alloca i64
%15 = alloca i64
%16 = alloca i64
%17 = alloca i64
%18 = alloca i64
%19 = alloca i64
%20 = alloca i64
%21 = alloca i64
%22 = alloca i64
%23 = alloca i64
%24 = alloca i64
%25 = alloca i64
%26 = alloca i64
%27 = alloca i64
%28 = alloca i64
%29 = alloca i64
%30 = alloca i64
%31 = alloca i64
%32 = alloca i64
%33 = alloca i64
%34 = alloca i64
%35 = alloca i64
%36 = alloca i64
%37 = alloca i64
%38 = alloca i64
%39 = alloca i64
%40 = alloca i64
%41 = alloca i64
%42 = alloca i64
%43 = alloca i64
%44 = alloca i64
%45 = alloca i64
%46 = alloca i64
%47 = alloca i64
store i64* %0, i64** %3
store i64* %1, i64** %4
store i64 0, i64* %9
store i64 0, i64* %10
store i64 0, i64* %11
%48 = load i64*, i64** %4
%49 = getelementptr inbounds i64, i64* %48, i64 0
%50 = load i64, i64* %49
store i64 %50, i64* %13
%51 = load i64, i64* %13
%52 = and i64 %51, 4294967295
store i64 %52, i64* %12
%53 = load i64, i64* %13
%54 = lshr i64 %53, 32
%55 = and i64 %54, 4294967295
store i64 %55, i64* %13
%56 = load i64, i64* %12
%57 = load i64, i64* %13
%58 = mul i64 %56, %57
store i64 %58, i64* %14
%59 = load i64, i64* %12
%60 = load i64, i64* %12
%61 = mul i64 %60, %59
store i64 %61, i64* %12
%62 = load i64, i64* %13
%63 = load i64, i64* %13
%64 = mul i64 %63, %62
store i64 %64, i64* %13
%65 = load i64, i64* %14
%66 = and i64 %65, -2147483648
%67 = lshr i64 %66, 31
%68 = load i64, i64* %13
%69 = add i64 %68, %67
store i64 %69, i64* %13
%70 = load i64, i64* %14
%71 = and i64 %70, 4294967295
%72 = shl i64 %71, 33
store i64 %72, i64* %14
%73 = load i64, i64* %12
%74 = load i64, i64* %14
%75 = add i64 %73, %74
%76 = and i64 %75, -1
store i64 %76, i64* %12
%77 = load i64, i64* %12
%78 = load i64, i64* %14
%79 = icmp ult i64 %77, %78
br i1 %79, label %80, label %83
80: ; preds = %2
%81 = load i64, i64* %13
%82 = add i64 %81, 1
store i64 %82, i64* %13
br label %83
83: ; preds = %80, %2
%84 = load i64, i64* %12
store i64 %84, i64* %7
%85 = load i64, i64* %13
store i64 %85, i64* %8
%86 = load i64, i64* %9
%87 = load i64, i64* %7
%88 = add i64 %86, %87
%89 = and i64 %88, -1
store i64 %89, i64* %9
%90 = load i64, i64* %9
%91 = load i64, i64* %7
%92 = icmp ult i64 %90, %91
br i1 %92, label %93, label %96
93: ; preds = %83
%94 = load i64, i64* %8
%95 = add i64 %94, 1
store i64 %95, i64* %8
br label %96
96: ; preds = %93, %83
%97 = load i64, i64* %10
%98 = load i64, i64* %8
%99 = add i64 %97, %98
%100 = and i64 %99, -1
store i64 %100, i64* %10
%101 = load i64, i64* %10
%102 = load i64, i64* %8
%103 = icmp ult i64 %101, %102
br i1 %103, label %104, label %107
104: ; preds = %96
%105 = load i64, i64* %11
%106 = add i64 %105, 1
store i64 %106, i64* %11
br label %107
107: ; preds = %104, %96
%108 = load i64, i64* %9
%109 = load i64*, i64** %3
%110 = getelementptr inbounds i64, i64* %109, i64 0
store i64 %108, i64* %110
store i64 0, i64* %9
%111 = load i64*, i64** %4
%112 = getelementptr inbounds i64, i64* %111, i64 1
%113 = load i64, i64* %112
%114 = and i64 %113, 4294967295
store i64 %114, i64* %7
%115 = load i64*, i64** %4
%116 = getelementptr inbounds i64, i64* %115, i64 1
%117 = load i64, i64* %116
%118 = lshr i64 %117, 32
%119 = and i64 %118, 4294967295
store i64 %119, i64* %8
%120 = load i64*, i64** %4
%121 = getelementptr inbounds i64, i64* %120, i64 0
%122 = load i64, i64* %121
%123 = and i64 %122, 4294967295
store i64 %123, i64* %5
%124 = load i64*, i64** %4
%125 = getelementptr inbounds i64, i64* %124, i64 0
%126 = load i64, i64* %125
%127 = lshr i64 %126, 32
%128 = and i64 %127, 4294967295
store i64 %128, i64* %6
%129 = load i64, i64* %7
store i64 %129, i64* %17
%130 = load i64, i64* %8
store i64 %130, i64* %18
%131 = load i64, i64* %6
%132 = load i64, i64* %17
%133 = mul i64 %131, %132
store i64 %133, i64* %15
%134 = load i64, i64* %5
%135 = load i64, i64* %17
%136 = mul i64 %134, %135
store i64 %136, i64* %17
%137 = load i64, i64* %5
%138 = load i64, i64* %18
%139 = mul i64 %137, %138
store i64 %139, i64* %16
%140 = load i64, i64* %6
%141 = load i64, i64* %18
%142 = mul i64 %140, %141
store i64 %142, i64* %18
%143 = load i64, i64* %15
%144 = load i64, i64* %16
%145 = add i64 %143, %144
%146 = and i64 %145, -1
store i64 %146, i64* %15
%147 = load i64, i64* %15
%148 = load i64, i64* %16
%149 = icmp ult i64 %147, %148
br i1 %149, label %150, label %153
150: ; preds = %107
%151 = load i64, i64* %18
%152 = add i64 %151, 4294967296
store i64 %152, i64* %18
br label %153
153: ; preds = %150, %107
%154 = load i64, i64* %15
%155 = lshr i64 %154, 32
%156 = and i64 %155, 4294967295
%157 = load i64, i64* %18
%158 = add i64 %157, %156
store i64 %158, i64* %18
%159 = load i64, i64* %15
%160 = and i64 %159, 4294967295
%161 = shl i64 %160, 32
store i64 %161, i64* %16
%162 = load i64, i64* %17
%163 = load i64, i64* %16
%164 = add i64 %162, %163
%165 = and i64 %164, -1
store i64 %165, i64* %17
%166 = load i64, i64* %17
%167 = load i64, i64* %16
%168 = icmp ult i64 %166, %167
br i1 %168, label %169, label %172
169: ; preds = %153
%170 = load i64, i64* %18
%171 = add i64 %170, 1
store i64 %171, i64* %18
br label %172
172: ; preds = %169, %153
%173 = load i64, i64* %17
store i64 %173, i64* %7
%174 = load i64, i64* %18
store i64 %174, i64* %8
%175 = load i64, i64* %8
%176 = and i64 %175, -9223372036854775808
%177 = icmp ne i64 %176, 0
br i1 %177, label %178, label %181
178: ; preds = %172
%179 = load i64, i64* %9
%180 = add i64 %179, 1
store i64 %180, i64* %9
br label %181
181: ; preds = %178, %172
%182 = load i64, i64* %8
%183 = load i64, i64* %8
%184 = add i64 %182, %183
%185 = and i64 %184, -1
store i64 %185, i64* %8
%186 = load i64, i64* %7
%187 = and i64 %186, -9223372036854775808
%188 = icmp ne i64 %187, 0
br i1 %188, label %189, label %192
189: ; preds = %181
%190 = load i64, i64* %8
%191 = add i64 %190, 1
store i64 %191, i64* %8
br label %192
192: ; preds = %189, %181
%193 = load i64, i64* %7
%194 = load i64, i64* %7
%195 = add i64 %193, %194
%196 = and i64 %195, -1
store i64 %196, i64* %7
%197 = load i64, i64* %10
%198 = load i64, i64* %7
%199 = add i64 %197, %198
%200 = and i64 %199, -1
store i64 %200, i64* %10
%201 = load i64, i64* %10
%202 = load i64, i64* %7
%203 = icmp ult i64 %201, %202
br i1 %203, label %204, label %212
204: ; preds = %192
%205 = load i64, i64* %8
%206 = add i64 %205, 1
store i64 %206, i64* %8
%207 = and i64 %206, -1
%208 = icmp eq i64 %207, 0
br i1 %208, label %209, label %212
209: ; preds = %204
%210 = load i64, i64* %9
%211 = add i64 %210, 1
store i64 %211, i64* %9
br label %212
212: ; preds = %209, %204, %192
%213 = load i64, i64* %11
%214 = load i64, i64* %8
%215 = add i64 %213, %214
%216 = and i64 %215, -1
store i64 %216, i64* %11
%217 = load i64, i64* %11
%218 = load i64, i64* %8
%219 = icmp ult i64 %217, %218
br i1 %219, label %220, label %223
220: ; preds = %212
%221 = load i64, i64* %9
%222 = add i64 %221, 1
store i64 %222, i64* %9
br label %223
223: ; preds = %220, %212
%224 = load i64, i64* %10
%225 = load i64*, i64** %3
%226 = getelementptr inbounds i64, i64* %225, i64 1
store i64 %224, i64* %226
store i64 0, i64* %10
%227 = load i64*, i64** %4
%228 = getelementptr inbounds i64, i64* %227, i64 1
%229 = load i64, i64* %228
store i64 %229, i64* %20
%230 = load i64, i64* %20
%231 = and i64 %230, 4294967295
store i64 %231, i64* %19
%232 = load i64, i64* %20
%233 = lshr i64 %232, 32
%234 = and i64 %233, 4294967295
store i64 %234, i64* %20
%235 = load i64, i64* %19
%236 = load i64, i64* %20
%237 = mul i64 %235, %236
store i64 %237, i64* %21
%238 = load i64, i64* %19
%239 = load i64, i64* %19
%240 = mul i64 %239, %238
store i64 %240, i64* %19
%241 = load i64, i64* %20
%242 = load i64, i64* %20
%243 = mul i64 %242, %241
store i64 %243, i64* %20
%244 = load i64, i64* %21
%245 = and i64 %244, -2147483648
%246 = lshr i64 %245, 31
%247 = load i64, i64* %20
%248 = add i64 %247, %246
store i64 %248, i64* %20
%249 = load i64, i64* %21
%250 = and i64 %249, 4294967295
%251 = shl i64 %250, 33
store i64 %251, i64* %21
%252 = load i64, i64* %19
%253 = load i64, i64* %21
%254 = add i64 %252, %253
%255 = and i64 %254, -1
store i64 %255, i64* %19
%256 = load i64, i64* %19
%257 = load i64, i64* %21
%258 = icmp ult i64 %256, %257
br i1 %258, label %259, label %262
259: ; preds = %223
%260 = load i64, i64* %20
%261 = add i64 %260, 1
store i64 %261, i64* %20
br label %262
262: ; preds = %259, %223
%263 = load i64, i64* %19
store i64 %263, i64* %7
%264 = load i64, i64* %20
store i64 %264, i64* %8
%265 = load i64, i64* %11
%266 = load i64, i64* %7
%267 = add i64 %265, %266
%268 = and i64 %267, -1
store i64 %268, i64* %11
%269 = load i64, i64* %11
%270 = load i64, i64* %7
%271 = icmp ult i64 %269, %270
br i1 %271, label %272, label %275
272: ; preds = %262
%273 = load i64, i64* %8
%274 = add i64 %273, 1
store i64 %274, i64* %8
br label %275
275: ; preds = %272, %262
%276 = load i64, i64* %9
%277 = load i64, i64* %8
%278 = add i64 %276, %277
%279 = and i64 %278, -1
store i64 %279, i64* %9
%280 = load i64, i64* %9
%281 = load i64, i64* %8
%282 = icmp ult i64 %280, %281
br i1 %282, label %283, label %286
283: ; preds = %275
%284 = load i64, i64* %10
%285 = add i64 %284, 1
store i64 %285, i64* %10
br label %286
286: ; preds = %283, %275
%287 = load i64*, i64** %4
%288 = getelementptr inbounds i64, i64* %287, i64 2
%289 = load i64, i64* %288
%290 = and i64 %289, 4294967295
store i64 %290, i64* %7
%291 = load i64*, i64** %4
%292 = getelementptr inbounds i64, i64* %291, i64 2
%293 = load i64, i64* %292
%294 = lshr i64 %293, 32
%295 = and i64 %294, 4294967295
store i64 %295, i64* %8
%296 = load i64*, i64** %4
%297 = getelementptr inbounds i64, i64* %296, i64 0
%298 = load i64, i64* %297
%299 = and i64 %298, 4294967295
store i64 %299, i64* %5
%300 = load i64*, i64** %4
%301 = getelementptr inbounds i64, i64* %300, i64 0
%302 = load i64, i64* %301
%303 = lshr i64 %302, 32
%304 = and i64 %303, 4294967295
store i64 %304, i64* %6
%305 = load i64, i64* %7
store i64 %305, i64* %24
%306 = load i64, i64* %8
store i64 %306, i64* %25
%307 = load i64, i64* %6
%308 = load i64, i64* %24
%309 = mul i64 %307, %308
store i64 %309, i64* %22
%310 = load i64, i64* %5
%311 = load i64, i64* %24
%312 = mul i64 %310, %311
store i64 %312, i64* %24
%313 = load i64, i64* %5
%314 = load i64, i64* %25
%315 = mul i64 %313, %314
store i64 %315, i64* %23
%316 = load i64, i64* %6
%317 = load i64, i64* %25
%318 = mul i64 %316, %317
store i64 %318, i64* %25
%319 = load i64, i64* %22
%320 = load i64, i64* %23
%321 = add i64 %319, %320
%322 = and i64 %321, -1
store i64 %322, i64* %22
%323 = load i64, i64* %22
%324 = load i64, i64* %23
%325 = icmp ult i64 %323, %324
br i1 %325, label %326, label %329
326: ; preds = %286
%327 = load i64, i64* %25
%328 = add i64 %327, 4294967296
store i64 %328, i64* %25
br label %329
329: ; preds = %326, %286
%330 = load i64, i64* %22
%331 = lshr i64 %330, 32
%332 = and i64 %331, 4294967295
%333 = load i64, i64* %25
%334 = add i64 %333, %332
store i64 %334, i64* %25
%335 = load i64, i64* %22
%336 = and i64 %335, 4294967295
%337 = shl i64 %336, 32
store i64 %337, i64* %23
%338 = load i64, i64* %24
%339 = load i64, i64* %23
%340 = add i64 %338, %339
%341 = and i64 %340, -1
store i64 %341, i64* %24
%342 = load i64, i64* %24
%343 = load i64, i64* %23
%344 = icmp ult i64 %342, %343
br i1 %344, label %345, label %348
345: ; preds = %329
%346 = load i64, i64* %25
%347 = add i64 %346, 1
store i64 %347, i64* %25
br label %348
348: ; preds = %345, %329
%349 = load i64, i64* %24
store i64 %349, i64* %7
%350 = load i64, i64* %25
store i64 %350, i64* %8
%351 = load i64, i64* %8
%352 = and i64 %351, -9223372036854775808
%353 = icmp ne i64 %352, 0
br i1 %353, label %354, label %357
354: ; preds = %348
%355 = load i64, i64* %10
%356 = add i64 %355, 1
store i64 %356, i64* %10
br label %357
357: ; preds = %354, %348
%358 = load i64, i64* %8
%359 = load i64, i64* %8
%360 = add i64 %358, %359
%361 = and i64 %360, -1
store i64 %361, i64* %8
%362 = load i64, i64* %7
%363 = and i64 %362, -9223372036854775808
%364 = icmp ne i64 %363, 0
br i1 %364, label %365, label %368
365: ; preds = %357
%366 = load i64, i64* %8
%367 = add i64 %366, 1
store i64 %367, i64* %8
br label %368
368: ; preds = %365, %357
%369 = load i64, i64* %7
%370 = load i64, i64* %7
%371 = add i64 %369, %370
%372 = and i64 %371, -1
store i64 %372, i64* %7
%373 = load i64, i64* %11
%374 = load i64, i64* %7
%375 = add i64 %373, %374
%376 = and i64 %375, -1
store i64 %376, i64* %11
%377 = load i64, i64* %11
%378 = load i64, i64* %7
%379 = icmp ult i64 %377, %378
br i1 %379, label %380, label %388
380: ; preds = %368
%381 = load i64, i64* %8
%382 = add i64 %381, 1
store i64 %382, i64* %8
%383 = and i64 %382, -1
%384 = icmp eq i64 %383, 0
br i1 %384, label %385, label %388
385: ; preds = %380
%386 = load i64, i64* %10
%387 = add i64 %386, 1
store i64 %387, i64* %10
br label %388
388: ; preds = %385, %380, %368
%389 = load i64, i64* %9
%390 = load i64, i64* %8
%391 = add i64 %389, %390
%392 = and i64 %391, -1
store i64 %392, i64* %9
%393 = load i64, i64* %9
%394 = load i64, i64* %8
%395 = icmp ult i64 %393, %394
br i1 %395, label %396, label %399
396: ; preds = %388
%397 = load i64, i64* %10
%398 = add i64 %397, 1
store i64 %398, i64* %10
br label %399
399: ; preds = %396, %388
%400 = load i64, i64* %11
%401 = load i64*, i64** %3
%402 = getelementptr inbounds i64, i64* %401, i64 2
store i64 %400, i64* %402
store i64 0, i64* %11
%403 = load i64*, i64** %4
%404 = getelementptr inbounds i64, i64* %403, i64 3
%405 = load i64, i64* %404
%406 = and i64 %405, 4294967295
store i64 %406, i64* %7
%407 = load i64*, i64** %4
%408 = getelementptr inbounds i64, i64* %407, i64 3
%409 = load i64, i64* %408
%410 = lshr i64 %409, 32
%411 = and i64 %410, 4294967295
store i64 %411, i64* %8
%412 = load i64*, i64** %4
%413 = getelementptr inbounds i64, i64* %412, i64 0
%414 = load i64, i64* %413
%415 = and i64 %414, 4294967295
store i64 %415, i64* %5
%416 = load i64*, i64** %4
%417 = getelementptr inbounds i64, i64* %416, i64 0
%418 = load i64, i64* %417
%419 = lshr i64 %418, 32
%420 = and i64 %419, 4294967295
store i64 %420, i64* %6
%421 = load i64, i64* %7
store i64 %421, i64* %28
%422 = load i64, i64* %8
store i64 %422, i64* %29
%423 = load i64, i64* %6
%424 = load i64, i64* %28
%425 = mul i64 %423, %424
store i64 %425, i64* %26
%426 = load i64, i64* %5
%427 = load i64, i64* %28
%428 = mul i64 %426, %427
store i64 %428, i64* %28
%429 = load i64, i64* %5
%430 = load i64, i64* %29
%431 = mul i64 %429, %430
store i64 %431, i64* %27
%432 = load i64, i64* %6
%433 = load i64, i64* %29
%434 = mul i64 %432, %433
store i64 %434, i64* %29
%435 = load i64, i64* %26
%436 = load i64, i64* %27
%437 = add i64 %435, %436
%438 = and i64 %437, -1
store i64 %438, i64* %26
%439 = load i64, i64* %26
%440 = load i64, i64* %27
%441 = icmp ult i64 %439, %440
br i1 %441, label %442, label %445
442: ; preds = %399
%443 = load i64, i64* %29
%444 = add i64 %443, 4294967296
store i64 %444, i64* %29
br label %445
445: ; preds = %442, %399
%446 = load i64, i64* %26
%447 = lshr i64 %446, 32
%448 = and i64 %447, 4294967295
%449 = load i64, i64* %29
%450 = add i64 %449, %448
store i64 %450, i64* %29
%451 = load i64, i64* %26
%452 = and i64 %451, 4294967295
%453 = shl i64 %452, 32
store i64 %453, i64* %27
%454 = load i64, i64* %28
%455 = load i64, i64* %27
%456 = add i64 %454, %455
%457 = and i64 %456, -1
store i64 %457, i64* %28
%458 = load i64, i64* %28
%459 = load i64, i64* %27
%460 = icmp ult i64 %458, %459
br i1 %460, label %461, label %464
461: ; preds = %445
%462 = load i64, i64* %29
%463 = add i64 %462, 1
store i64 %463, i64* %29
br label %464
464: ; preds = %461, %445
%465 = load i64, i64* %28
store i64 %465, i64* %7
%466 = load i64, i64* %29
store i64 %466, i64* %8
%467 = load i64, i64* %8
%468 = and i64 %467, -9223372036854775808
%469 = icmp ne i64 %468, 0
br i1 %469, label %470, label %473
470: ; preds = %464
%471 = load i64, i64* %11
%472 = add i64 %471, 1
store i64 %472, i64* %11
br label %473
473: ; preds = %470, %464
%474 = load i64, i64* %8
%475 = load i64, i64* %8
%476 = add i64 %474, %475
%477 = and i64 %476, -1
store i64 %477, i64* %8
%478 = load i64, i64* %7
%479 = and i64 %478, -9223372036854775808
%480 = icmp ne i64 %479, 0
br i1 %480, label %481, label %484
481: ; preds = %473
%482 = load i64, i64* %8
%483 = add i64 %482, 1
store i64 %483, i64* %8
br label %484
484: ; preds = %481, %473
%485 = load i64, i64* %7
%486 = load i64, i64* %7
%487 = add i64 %485, %486
%488 = and i64 %487, -1
store i64 %488, i64* %7
%489 = load i64, i64* %9
%490 = load i64, i64* %7
%491 = add i64 %489, %490
%492 = and i64 %491, -1
store i64 %492, i64* %9
%493 = load i64, i64* %9
%494 = load i64, i64* %7
%495 = icmp ult i64 %493, %494
br i1 %495, label %496, label %504
496: ; preds = %484
%497 = load i64, i64* %8
%498 = add i64 %497, 1
store i64 %498, i64* %8
%499 = and i64 %498, -1
%500 = icmp eq i64 %499, 0
br i1 %500, label %501, label %504
501: ; preds = %496
%502 = load i64, i64* %11
%503 = add i64 %502, 1
store i64 %503, i64* %11
br label %504
504: ; preds = %501, %496, %484
%505 = load i64, i64* %10
%506 = load i64, i64* %8
%507 = add i64 %505, %506
%508 = and i64 %507, -1
store i64 %508, i64* %10
%509 = load i64, i64* %10
%510 = load i64, i64* %8
%511 = icmp ult i64 %509, %510
br i1 %511, label %512, label %515
512: ; preds = %504
%513 = load i64, i64* %11
%514 = add i64 %513, 1
store i64 %514, i64* %11
br label %515
515: ; preds = %512, %504
%516 = load i64*, i64** %4
%517 = getelementptr inbounds i64, i64* %516, i64 2
%518 = load i64, i64* %517
%519 = and i64 %518, 4294967295
store i64 %519, i64* %7
%520 = load i64*, i64** %4
%521 = getelementptr inbounds i64, i64* %520, i64 2
%522 = load i64, i64* %521
%523 = lshr i64 %522, 32
%524 = and i64 %523, 4294967295
store i64 %524, i64* %8
%525 = load i64*, i64** %4
%526 = getelementptr inbounds i64, i64* %525, i64 1
%527 = load i64, i64* %526
%528 = and i64 %527, 4294967295
store i64 %528, i64* %5
%529 = load i64*, i64** %4
%530 = getelementptr inbounds i64, i64* %529, i64 1
%531 = load i64, i64* %530
%532 = lshr i64 %531, 32
%533 = and i64 %532, 4294967295
store i64 %533, i64* %6
%534 = load i64, i64* %7
store i64 %534, i64* %32
%535 = load i64, i64* %8
store i64 %535, i64* %33
%536 = load i64, i64* %6
%537 = load i64, i64* %32
%538 = mul i64 %536, %537
store i64 %538, i64* %30
%539 = load i64, i64* %5
%540 = load i64, i64* %32
%541 = mul i64 %539, %540
store i64 %541, i64* %32
%542 = load i64, i64* %5
%543 = load i64, i64* %33
%544 = mul i64 %542, %543
store i64 %544, i64* %31
%545 = load i64, i64* %6
%546 = load i64, i64* %33
%547 = mul i64 %545, %546
store i64 %547, i64* %33
%548 = load i64, i64* %30
%549 = load i64, i64* %31
%550 = add i64 %548, %549
%551 = and i64 %550, -1
store i64 %551, i64* %30
%552 = load i64, i64* %30
%553 = load i64, i64* %31
%554 = icmp ult i64 %552, %553
br i1 %554, label %555, label %558
555: ; preds = %515
%556 = load i64, i64* %33
%557 = add i64 %556, 4294967296
store i64 %557, i64* %33
br label %558
558: ; preds = %555, %515
%559 = load i64, i64* %30
%560 = lshr i64 %559, 32
%561 = and i64 %560, 4294967295
%562 = load i64, i64* %33
%563 = add i64 %562, %561
store i64 %563, i64* %33
%564 = load i64, i64* %30
%565 = and i64 %564, 4294967295
%566 = shl i64 %565, 32
store i64 %566, i64* %31
%567 = load i64, i64* %32
%568 = load i64, i64* %31
%569 = add i64 %567, %568
%570 = and i64 %569, -1
store i64 %570, i64* %32
%571 = load i64, i64* %32
%572 = load i64, i64* %31
%573 = icmp ult i64 %571, %572
br i1 %573, label %574, label %577
574: ; preds = %558
%575 = load i64, i64* %33
%576 = add i64 %575, 1
store i64 %576, i64* %33
br label %577
577: ; preds = %574, %558
%578 = load i64, i64* %32
store i64 %578, i64* %7
%579 = load i64, i64* %33
store i64 %579, i64* %8
%580 = load i64, i64* %8
%581 = and i64 %580, -9223372036854775808
%582 = icmp ne i64 %581, 0
br i1 %582, label %583, label %586
583: ; preds = %577
%584 = load i64, i64* %11
%585 = add i64 %584, 1
store i64 %585, i64* %11
br label %586
586: ; preds = %583, %577
%587 = load i64, i64* %8
%588 = load i64, i64* %8
%589 = add i64 %587, %588
%590 = and i64 %589, -1
store i64 %590, i64* %8
%591 = load i64, i64* %7
%592 = and i64 %591, -9223372036854775808
%593 = icmp ne i64 %592, 0
br i1 %593, label %594, label %597
594: ; preds = %586
%595 = load i64, i64* %8
%596 = add i64 %595, 1
store i64 %596, i64* %8
br label %597
597: ; preds = %594, %586
%598 = load i64, i64* %7
%599 = load i64, i64* %7
%600 = add i64 %598, %599
%601 = and i64 %600, -1
store i64 %601, i64* %7
%602 = load i64, i64* %9
%603 = load i64, i64* %7
%604 = add i64 %602, %603
%605 = and i64 %604, -1
store i64 %605, i64* %9
%606 = load i64, i64* %9
%607 = load i64, i64* %7
%608 = icmp ult i64 %606, %607
br i1 %608, label %609, label %617
609: ; preds = %597
%610 = load i64, i64* %8
%611 = add i64 %610, 1
store i64 %611, i64* %8
%612 = and i64 %611, -1
%613 = icmp eq i64 %612, 0
br i1 %613, label %614, label %617
614: ; preds = %609
%615 = load i64, i64* %11
%616 = add i64 %615, 1
store i64 %616, i64* %11
br label %617
617: ; preds = %614, %609, %597
%618 = load i64, i64* %10
%619 = load i64, i64* %8
%620 = add i64 %618, %619
%621 = and i64 %620, -1
store i64 %621, i64* %10
%622 = load i64, i64* %10
%623 = load i64, i64* %8
%624 = icmp ult i64 %622, %623
br i1 %624, label %625, label %628
625: ; preds = %617
%626 = load i64, i64* %11
%627 = add i64 %626, 1
store i64 %627, i64* %11
br label %628
628: ; preds = %625, %617
%629 = load i64, i64* %9
%630 = load i64*, i64** %3
%631 = getelementptr inbounds i64, i64* %630, i64 3
store i64 %629, i64* %631
store i64 0, i64* %9
%632 = load i64*, i64** %4
%633 = getelementptr inbounds i64, i64* %632, i64 2
%634 = load i64, i64* %633
store i64 %634, i64* %35
%635 = load i64, i64* %35
%636 = and i64 %635, 4294967295
store i64 %636, i64* %34
%637 = load i64, i64* %35
%638 = lshr i64 %637, 32
%639 = and i64 %638, 4294967295
store i64 %639, i64* %35
%640 = load i64, i64* %34
%641 = load i64, i64* %35
%642 = mul i64 %640, %641
store i64 %642, i64* %36
%643 = load i64, i64* %34
%644 = load i64, i64* %34
%645 = mul i64 %644, %643
store i64 %645, i64* %34
%646 = load i64, i64* %35
%647 = load i64, i64* %35
%648 = mul i64 %647, %646
store i64 %648, i64* %35
%649 = load i64, i64* %36
%650 = and i64 %649, -2147483648
%651 = lshr i64 %650, 31
%652 = load i64, i64* %35
%653 = add i64 %652, %651
store i64 %653, i64* %35
%654 = load i64, i64* %36
%655 = and i64 %654, 4294967295
%656 = shl i64 %655, 33
store i64 %656, i64* %36
%657 = load i64, i64* %34
%658 = load i64, i64* %36
%659 = add i64 %657, %658
%660 = and i64 %659, -1
store i64 %660, i64* %34
%661 = load i64, i64* %34
%662 = load i64, i64* %36
%663 = icmp ult i64 %661, %662
br i1 %663, label %664, label %667
664: ; preds = %628
%665 = load i64, i64* %35
%666 = add i64 %665, 1
store i64 %666, i64* %35
br label %667
667: ; preds = %664, %628
%668 = load i64, i64* %34
store i64 %668, i64* %7
%669 = load i64, i64* %35
store i64 %669, i64* %8
%670 = load i64, i64* %10
%671 = load i64, i64* %7
%672 = add i64 %670, %671
%673 = and i64 %672, -1
store i64 %673, i64* %10
%674 = load i64, i64* %10
%675 = load i64, i64* %7
%676 = icmp ult i64 %674, %675
br i1 %676, label %677, label %680
677: ; preds = %667
%678 = load i64, i64* %8
%679 = add i64 %678, 1
store i64 %679, i64* %8
br label %680
680: ; preds = %677, %667
%681 = load i64, i64* %11
%682 = load i64, i64* %8
%683 = add i64 %681, %682
%684 = and i64 %683, -1
store i64 %684, i64* %11
%685 = load i64, i64* %11
%686 = load i64, i64* %8
%687 = icmp ult i64 %685, %686
br i1 %687, label %688, label %691
688: ; preds = %680
%689 = load i64, i64* %9
%690 = add i64 %689, 1
store i64 %690, i64* %9
br label %691
691: ; preds = %688, %680
%692 = load i64*, i64** %4
%693 = getelementptr inbounds i64, i64* %692, i64 3
%694 = load i64, i64* %693
%695 = and i64 %694, 4294967295
store i64 %695, i64* %7
%696 = load i64*, i64** %4
%697 = getelementptr inbounds i64, i64* %696, i64 3
%698 = load i64, i64* %697
%699 = lshr i64 %698, 32
%700 = and i64 %699, 4294967295
store i64 %700, i64* %8
%701 = load i64*, i64** %4
%702 = getelementptr inbounds i64, i64* %701, i64 1
%703 = load i64, i64* %702
%704 = and i64 %703, 4294967295
store i64 %704, i64* %5
%705 = load i64*, i64** %4
%706 = getelementptr inbounds i64, i64* %705, i64 1
%707 = load i64, i64* %706
%708 = lshr i64 %707, 32
%709 = and i64 %708, 4294967295
store i64 %709, i64* %6
%710 = load i64, i64* %7
store i64 %710, i64* %39
%711 = load i64, i64* %8
store i64 %711, i64* %40
%712 = load i64, i64* %6
%713 = load i64, i64* %39
%714 = mul i64 %712, %713
store i64 %714, i64* %37
%715 = load i64, i64* %5
%716 = load i64, i64* %39
%717 = mul i64 %715, %716
store i64 %717, i64* %39
%718 = load i64, i64* %5
%719 = load i64, i64* %40
%720 = mul i64 %718, %719
store i64 %720, i64* %38
%721 = load i64, i64* %6
%722 = load i64, i64* %40
%723 = mul i64 %721, %722
store i64 %723, i64* %40
%724 = load i64, i64* %37
%725 = load i64, i64* %38
%726 = add i64 %724, %725
%727 = and i64 %726, -1
store i64 %727, i64* %37
%728 = load i64, i64* %37
%729 = load i64, i64* %38
%730 = icmp ult i64 %728, %729
br i1 %730, label %731, label %734
731: ; preds = %691
%732 = load i64, i64* %40
%733 = add i64 %732, 4294967296
store i64 %733, i64* %40
br label %734
734: ; preds = %731, %691
%735 = load i64, i64* %37
%736 = lshr i64 %735, 32
%737 = and i64 %736, 4294967295
%738 = load i64, i64* %40
%739 = add i64 %738, %737
store i64 %739, i64* %40
%740 = load i64, i64* %37
%741 = and i64 %740, 4294967295
%742 = shl i64 %741, 32
store i64 %742, i64* %38
%743 = load i64, i64* %39
%744 = load i64, i64* %38
%745 = add i64 %743, %744
%746 = and i64 %745, -1
store i64 %746, i64* %39
%747 = load i64, i64* %39
%748 = load i64, i64* %38
%749 = icmp ult i64 %747, %748
br i1 %749, label %750, label %753
750: ; preds = %734
%751 = load i64, i64* %40
%752 = add i64 %751, 1
store i64 %752, i64* %40
br label %753
753: ; preds = %750, %734
%754 = load i64, i64* %39
store i64 %754, i64* %7
%755 = load i64, i64* %40
store i64 %755, i64* %8
%756 = load i64, i64* %8
%757 = and i64 %756, -9223372036854775808
%758 = icmp ne i64 %757, 0
br i1 %758, label %759, label %762
759: ; preds = %753
%760 = load i64, i64* %9
%761 = add i64 %760, 1
store i64 %761, i64* %9
br label %762
762: ; preds = %759, %753
%763 = load i64, i64* %8
%764 = load i64, i64* %8
%765 = add i64 %763, %764
%766 = and i64 %765, -1
store i64 %766, i64* %8
%767 = load i64, i64* %7
%768 = and i64 %767, -9223372036854775808
%769 = icmp ne i64 %768, 0
br i1 %769, label %770, label %773
770: ; preds = %762
%771 = load i64, i64* %8
%772 = add i64 %771, 1
store i64 %772, i64* %8
br label %773
773: ; preds = %770, %762
%774 = load i64, i64* %7
%775 = load i64, i64* %7
%776 = add i64 %774, %775
%777 = and i64 %776, -1
store i64 %777, i64* %7
%778 = load i64, i64* %10
%779 = load i64, i64* %7
%780 = add i64 %778, %779
%781 = and i64 %780, -1
store i64 %781, i64* %10
%782 = load i64, i64* %10
%783 = load i64, i64* %7
%784 = icmp ult i64 %782, %783
br i1 %784, label %785, label %793
785: ; preds = %773
%786 = load i64, i64* %8
%787 = add i64 %786, 1
store i64 %787, i64* %8
%788 = and i64 %787, -1
%789 = icmp eq i64 %788, 0
br i1 %789, label %790, label %793
790: ; preds = %785
%791 = load i64, i64* %9
%792 = add i64 %791, 1
store i64 %792, i64* %9
br label %793
793: ; preds = %790, %785, %773
%794 = load i64, i64* %11
%795 = load i64, i64* %8
%796 = add i64 %794, %795
%797 = and i64 %796, -1
store i64 %797, i64* %11
%798 = load i64, i64* %11
%799 = load i64, i64* %8
%800 = icmp ult i64 %798, %799
br i1 %800, label %801, label %804
801: ; preds = %793
%802 = load i64, i64* %9
%803 = add i64 %802, 1
store i64 %803, i64* %9
br label %804
804: ; preds = %801, %793
%805 = load i64, i64* %10
%806 = load i64*, i64** %3
%807 = getelementptr inbounds i64, i64* %806, i64 4
store i64 %805, i64* %807
store i64 0, i64* %10
%808 = load i64*, i64** %4
%809 = getelementptr inbounds i64, i64* %808, i64 3
%810 = load i64, i64* %809
%811 = and i64 %810, 4294967295
store i64 %811, i64* %7
%812 = load i64*, i64** %4
%813 = getelementptr inbounds i64, i64* %812, i64 3
%814 = load i64, i64* %813
%815 = lshr i64 %814, 32
%816 = and i64 %815, 4294967295
store i64 %816, i64* %8
%817 = load i64*, i64** %4
%818 = getelementptr inbounds i64, i64* %817, i64 2
%819 = load i64, i64* %818
%820 = and i64 %819, 4294967295
store i64 %820, i64* %5
%821 = load i64*, i64** %4
%822 = getelementptr inbounds i64, i64* %821, i64 2
%823 = load i64, i64* %822
%824 = lshr i64 %823, 32
%825 = and i64 %824, 4294967295
store i64 %825, i64* %6
%826 = load i64, i64* %7
store i64 %826, i64* %43
%827 = load i64, i64* %8
store i64 %827, i64* %44
%828 = load i64, i64* %6
%829 = load i64, i64* %43
%830 = mul i64 %828, %829
store i64 %830, i64* %41
%831 = load i64, i64* %5
%832 = load i64, i64* %43
%833 = mul i64 %831, %832
store i64 %833, i64* %43
%834 = load i64, i64* %5
%835 = load i64, i64* %44
%836 = mul i64 %834, %835
store i64 %836, i64* %42
%837 = load i64, i64* %6
%838 = load i64, i64* %44
%839 = mul i64 %837, %838
store i64 %839, i64* %44
%840 = load i64, i64* %41
%841 = load i64, i64* %42
%842 = add i64 %840, %841
%843 = and i64 %842, -1
store i64 %843, i64* %41
%844 = load i64, i64* %41
%845 = load i64, i64* %42
%846 = icmp ult i64 %844, %845
br i1 %846, label %847, label %850
847: ; preds = %804
%848 = load i64, i64* %44
%849 = add i64 %848, 4294967296
store i64 %849, i64* %44
br label %850
850: ; preds = %847, %804
%851 = load i64, i64* %41
%852 = lshr i64 %851, 32
%853 = and i64 %852, 4294967295
%854 = load i64, i64* %44
%855 = add i64 %854, %853
store i64 %855, i64* %44
%856 = load i64, i64* %41
%857 = and i64 %856, 4294967295
%858 = shl i64 %857, 32
store i64 %858, i64* %42
%859 = load i64, i64* %43
%860 = load i64, i64* %42
%861 = add i64 %859, %860
%862 = and i64 %861, -1
store i64 %862, i64* %43
%863 = load i64, i64* %43
%864 = load i64, i64* %42
%865 = icmp ult i64 %863, %864
br i1 %865, label %866, label %869
866: ; preds = %850
%867 = load i64, i64* %44
%868 = add i64 %867, 1
store i64 %868, i64* %44
br label %869
869: ; preds = %866, %850
%870 = load i64, i64* %43
store i64 %870, i64* %7
%871 = load i64, i64* %44
store i64 %871, i64* %8
%872 = load i64, i64* %8
%873 = and i64 %872, -9223372036854775808
%874 = icmp ne i64 %873, 0
br i1 %874, label %875, label %878
875: ; preds = %869
%876 = load i64, i64* %10
%877 = add i64 %876, 1
store i64 %877, i64* %10
br label %878
878: ; preds = %875, %869
%879 = load i64, i64* %8
%880 = load i64, i64* %8
%881 = add i64 %879, %880
%882 = and i64 %881, -1
store i64 %882, i64* %8
%883 = load i64, i64* %7
%884 = and i64 %883, -9223372036854775808
%885 = icmp ne i64 %884, 0
br i1 %885, label %886, label %889
886: ; preds = %878
%887 = load i64, i64* %8
%888 = add i64 %887, 1
store i64 %888, i64* %8
br label %889
889: ; preds = %886, %878
%890 = load i64, i64* %7
%891 = load i64, i64* %7
%892 = add i64 %890, %891
%893 = and i64 %892, -1
store i64 %893, i64* %7
%894 = load i64, i64* %11
%895 = load i64, i64* %7
%896 = add i64 %894, %895
%897 = and i64 %896, -1
store i64 %897, i64* %11
%898 = load i64, i64* %11
%899 = load i64, i64* %7
%900 = icmp ult i64 %898, %899
br i1 %900, label %901, label %909
901: ; preds = %889
%902 = load i64, i64* %8
%903 = add i64 %902, 1
store i64 %903, i64* %8
%904 = and i64 %903, -1
%905 = icmp eq i64 %904, 0
br i1 %905, label %906, label %909
906: ; preds = %901
%907 = load i64, i64* %10
%908 = add i64 %907, 1
store i64 %908, i64* %10
br label %909
909: ; preds = %906, %901, %889
%910 = load i64, i64* %9
%911 = load i64, i64* %8
%912 = add i64 %910, %911
%913 = and i64 %912, -1
store i64 %913, i64* %9
%914 = load i64, i64* %9
%915 = load i64, i64* %8
%916 = icmp ult i64 %914, %915
br i1 %916, label %917, label %920
917: ; preds = %909
%918 = load i64, i64* %10
%919 = add i64 %918, 1
store i64 %919, i64* %10
br label %920
920: ; preds = %917, %909
%921 = load i64, i64* %11
%922 = load i64*, i64** %3
%923 = getelementptr inbounds i64, i64* %922, i64 5
store i64 %921, i64* %923
store i64 0, i64* %11
%924 = load i64*, i64** %4
%925 = getelementptr inbounds i64, i64* %924, i64 3
%926 = load i64, i64* %925
store i64 %926, i64* %46
%927 = load i64, i64* %46
%928 = and i64 %927, 4294967295
store i64 %928, i64* %45
%929 = load i64, i64* %46
%930 = lshr i64 %929, 32
%931 = and i64 %930, 4294967295
store i64 %931, i64* %46
%932 = load i64, i64* %45
%933 = load i64, i64* %46
%934 = mul i64 %932, %933
store i64 %934, i64* %47
%935 = load i64, i64* %45
%936 = load i64, i64* %45
%937 = mul i64 %936, %935
store i64 %937, i64* %45
%938 = load i64, i64* %46
%939 = load i64, i64* %46
%940 = mul i64 %939, %938
store i64 %940, i64* %46
%941 = load i64, i64* %47
%942 = and i64 %941, -2147483648
%943 = lshr i64 %942, 31
%944 = load i64, i64* %46
%945 = add i64 %944, %943
store i64 %945, i64* %46
%946 = load i64, i64* %47
%947 = and i64 %946, 4294967295
%948 = shl i64 %947, 33
store i64 %948, i64* %47
%949 = load i64, i64* %45
%950 = load i64, i64* %47
%951 = add i64 %949, %950
%952 = and i64 %951, -1
store i64 %952, i64* %45
%953 = load i64, i64* %45
%954 = load i64, i64* %47
%955 = icmp ult i64 %953, %954
br i1 %955, label %956, label %959
956: ; preds = %920
%957 = load i64, i64* %46
%958 = add i64 %957, 1
store i64 %958, i64* %46
br label %959
959: ; preds = %956, %920
%960 = load i64, i64* %45
store i64 %960, i64* %7
%961 = load i64, i64* %46
store i64 %961, i64* %8
%962 = load i64, i64* %9
%963 = load i64, i64* %7
%964 = add i64 %962, %963
%965 = and i64 %964, -1
store i64 %965, i64* %9
%966 = load i64, i64* %9
%967 = load i64, i64* %7
%968 = icmp ult i64 %966, %967
br i1 %968, label %969, label %972
969: ; preds = %959
%970 = load i64, i64* %8
%971 = add i64 %970, 1
store i64 %971, i64* %8
br label %972
972: ; preds = %969, %959
%973 = load i64, i64* %10
%974 = load i64, i64* %8
%975 = add i64 %973, %974
%976 = and i64 %975, -1
store i64 %976, i64* %10
%977 = load i64, i64* %10
%978 = load i64, i64* %8
%979 = icmp ult i64 %977, %978
br i1 %979, label %980, label %983
980: ; preds = %972
%981 = load i64, i64* %11
%982 = add i64 %981, 1
store i64 %982, i64* %11
br label %983
983: ; preds = %980, %972
%984 = load i64, i64* %9
%985 = load i64*, i64** %3
%986 = getelementptr inbounds i64, i64* %985, i64 6
store i64 %984, i64* %986
%987 = load i64, i64* %10
%988 = load i64*, i64** %3
%989 = getelementptr inbounds i64, i64* %988, i64 7
store i64 %987, i64* %989
ret void
}

LLVM IR (-O2):
define void @bn_sqr_comba4(i64* nocapture writeonly %0, i64* nocapture %1) {
%3 = load i64, i64* %1
%4 = and i64 %3, 4294967295
%5 = lshr i64 %3, 32
%6 = mul nuw i64 %4, %5
%7 = mul nuw i64 %4, %4
%8 = mul nuw i64 %5, %5
%9 = lshr i64 %6, 31
%10 = add nuw i64 %9, %8
%11 = shl i64 %6, 33
%12 = add i64 %11, %7
%13 = icmp ult i64 %12, %11
%14 = zext i1 %13 to i64
%15 = add nuw i64 %10, %14
store i64 %12, i64* %0
%16 = getelementptr inbounds i64, i64* %1, i64 1
%17 = load i64, i64* %16
%18 = and i64 %17, 4294967295
%19 = lshr i64 %17, 32
%20 = load i64, i64* %1
%21 = and i64 %20, 4294967295
%22 = lshr i64 %20, 32
%23 = mul nuw i64 %22, %18
%24 = mul nuw i64 %21, %18
%25 = mul nuw i64 %21, %19
%26 = mul nuw i64 %22, %19
%27 = add i64 %23, %25
%28 = icmp ult i64 %27, %25
%29 = add nuw i64 %26, 4294967296
%30 = select i1 %28, i64 %29, i64 %26
%31 = lshr i64 %27, 32
%32 = add i64 %30, %31
%33 = shl i64 %27, 32
%34 = add i64 %33, %24
%35 = icmp ult i64 %34, %33
%36 = zext i1 %35 to i64
%37 = add i64 %32, %36
%38 = lshr i64 %37, 63
%39 = tail call i64 @llvm.fshl.i64(i64 %37, i64 %34, i64 1)
%40 = shl i64 %34, 1
%41 = add i64 %15, %40
%42 = icmp ult i64 %41, %40
%43 = add i64 %39, 1
%44 = icmp eq i64 %43, 0
%45 = select i1 %42, i1 %44, i1 false
%46 = zext i1 %45 to i64
%47 = add nuw nsw i64 %38, %46
%48 = select i1 %42, i64 %43, i64 %39
%49 = getelementptr inbounds i64, i64* %0, i64 1
store i64 %41, i64* %49
%50 = load i64, i64* %16
%51 = and i64 %50, 4294967295
%52 = lshr i64 %50, 32
%53 = mul nuw i64 %51, %52
%54 = mul nuw i64 %51, %51
%55 = mul nuw i64 %52, %52
%56 = lshr i64 %53, 31
%57 = add nuw i64 %56, %55
%58 = shl i64 %53, 33
%59 = add i64 %58, %54
%60 = icmp ult i64 %59, %58
%61 = zext i1 %60 to i64
%62 = add nuw i64 %57, %61
%63 = add i64 %48, %59
%64 = icmp ult i64 %63, %59
%65 = zext i1 %64 to i64
%66 = add nuw i64 %62, %65
%67 = add i64 %47, %66
%68 = icmp ult i64 %67, %66
%69 = zext i1 %68 to i64
%70 = getelementptr inbounds i64, i64* %1, i64 2
%71 = load i64, i64* %70
%72 = and i64 %71, 4294967295
%73 = lshr i64 %71, 32
%74 = load i64, i64* %1
%75 = and i64 %74, 4294967295
%76 = lshr i64 %74, 32
%77 = mul nuw i64 %76, %72
%78 = mul nuw i64 %75, %72
%79 = mul nuw i64 %75, %73
%80 = mul nuw i64 %76, %73
%81 = add i64 %77, %79
%82 = icmp ult i64 %81, %79
%83 = add nuw i64 %80, 4294967296
%84 = select i1 %82, i64 %83, i64 %80
%85 = lshr i64 %81, 32
%86 = add i64 %84, %85
%87 = shl i64 %81, 32
%88 = add i64 %87, %78
%89 = icmp ult i64 %88, %87
%90 = zext i1 %89 to i64
%91 = add i64 %86, %90
%92 = icmp sgt i64 %91, -1
%93 = select i1 %68, i64 2, i64 1
%94 = select i1 %92, i64 %69, i64 %93
%95 = tail call i64 @llvm.fshl.i64(i64 %91, i64 %88, i64 1)
%96 = shl i64 %88, 1
%97 = add i64 %63, %96
%98 = icmp ult i64 %97, %96
%99 = add i64 %95, 1
%100 = icmp eq i64 %99, 0
%101 = select i1 %98, i1 %100, i1 false
%102 = zext i1 %101 to i64
%103 = add nuw nsw i64 %94, %102
%104 = select i1 %98, i64 %99, i64 %95
%105 = add i64 %67, %104
%106 = icmp ult i64 %105, %104
%107 = zext i1 %106 to i64
%108 = add nuw nsw i64 %103, %107
%109 = getelementptr inbounds i64, i64* %0, i64 2
store i64 %97, i64* %109
%110 = getelementptr inbounds i64, i64* %1, i64 3
%111 = load i64, i64* %110
%112 = and i64 %111, 4294967295
%113 = lshr i64 %111, 32
%114 = load i64, i64* %1
%115 = and i64 %114, 4294967295
%116 = lshr i64 %114, 32
%117 = mul nuw i64 %116, %112
%118 = mul nuw i64 %115, %112
%119 = mul nuw i64 %115, %113
%120 = mul nuw i64 %116, %113
%121 = add i64 %117, %119
%122 = icmp ult i64 %121, %119
%123 = add nuw i64 %120, 4294967296
%124 = select i1 %122, i64 %123, i64 %120
%125 = lshr i64 %121, 32
%126 = add i64 %124, %125
%127 = shl i64 %121, 32
%128 = add i64 %127, %118
%129 = icmp ult i64 %128, %127
%130 = zext i1 %129 to i64
%131 = add i64 %126, %130
%132 = lshr i64 %131, 63
%133 = tail call i64 @llvm.fshl.i64(i64 %131, i64 %128, i64 1)
%134 = shl i64 %128, 1
%135 = add i64 %105, %134
%136 = icmp ult i64 %135, %134
%137 = add i64 %133, 1
%138 = icmp eq i64 %137, 0
%139 = select i1 %136, i1 %138, i1 false
%140 = zext i1 %139 to i64
%141 = select i1 %136, i64 %137, i64 %133
%142 = add i64 %108, %141
%143 = icmp ult i64 %142, %141
%144 = zext i1 %143 to i64
%145 = load i64, i64* %70
%146 = and i64 %145, 4294967295
%147 = lshr i64 %145, 32
%148 = load i64, i64* %16
%149 = and i64 %148, 4294967295
%150 = lshr i64 %148, 32
%151 = mul nuw i64 %150, %146
%152 = mul nuw i64 %149, %146
%153 = mul nuw i64 %149, %147
%154 = mul nuw i64 %150, %147
%155 = add i64 %151, %153
%156 = icmp ult i64 %155, %153
%157 = add nuw i64 %154, 4294967296
%158 = select i1 %156, i64 %157, i64 %154
%159 = lshr i64 %155, 32
%160 = add i64 %158, %159
%161 = shl i64 %155, 32
%162 = add i64 %161, %152
%163 = icmp ult i64 %162, %161
%164 = zext i1 %163 to i64
%165 = add i64 %160, %164
%166 = lshr i64 %165, 63
%167 = tail call i64 @llvm.fshl.i64(i64 %165, i64 %162, i64 1)
%168 = shl i64 %162, 1
%169 = add i64 %135, %168
%170 = icmp ult i64 %169, %168
%171 = add i64 %167, 1
%172 = icmp eq i64 %171, 0
%173 = select i1 %170, i1 %172, i1 false
%174 = zext i1 %173 to i64
%175 = select i1 %170, i64 %171, i64 %167
%176 = add i64 %142, %175
%177 = icmp ult i64 %176, %175
%178 = zext i1 %177 to i64
%179 = getelementptr inbounds i64, i64* %0, i64 3
store i64 %169, i64* %179
%180 = load i64, i64* %70
%181 = and i64 %180, 4294967295
%182 = lshr i64 %180, 32
%183 = mul nuw i64 %181, %182
%184 = mul nuw i64 %181, %181
%185 = mul nuw i64 %182, %182
%186 = lshr i64 %183, 31
%187 = add nuw i64 %186, %185
%188 = shl i64 %183, 33
%189 = add i64 %188, %184
%190 = icmp ult i64 %189, %188
%191 = zext i1 %190 to i64
%192 = add nuw i64 %187, %191
%193 = add i64 %176, %189
%194 = icmp ult i64 %193, %189
%195 = zext i1 %194 to i64
%196 = add nuw i64 %192, %195
%197 = add nuw nsw i64 %166, %132
%198 = add nuw nsw i64 %197, %140
%199 = add nuw nsw i64 %198, %174
%200 = add nuw nsw i64 %199, %144
%201 = add nuw nsw i64 %200, %178
%202 = add i64 %201, %196
%203 = icmp ult i64 %202, %196
%204 = zext i1 %203 to i64
%205 = load i64, i64* %110
%206 = and i64 %205, 4294967295
%207 = lshr i64 %205, 32
%208 = load i64, i64* %16
%209 = and i64 %208, 4294967295
%210 = lshr i64 %208, 32
%211 = mul nuw i64 %210, %206
%212 = mul nuw i64 %209, %206
%213 = mul nuw i64 %209, %207
%214 = mul nuw i64 %210, %207
%215 = add i64 %211, %213
%216 = icmp ult i64 %215, %213
%217 = add nuw i64 %214, 4294967296
%218 = select i1 %216, i64 %217, i64 %214
%219 = lshr i64 %215, 32
%220 = add i64 %218, %219
%221 = shl i64 %215, 32
%222 = add i64 %221, %212
%223 = icmp ult i64 %222, %221
%224 = zext i1 %223 to i64
%225 = add i64 %220, %224
%226 = icmp sgt i64 %225, -1
%227 = select i1 %203, i64 2, i64 1
%228 = select i1 %226, i64 %204, i64 %227
%229 = tail call i64 @llvm.fshl.i64(i64 %225, i64 %222, i64 1)
%230 = shl i64 %222, 1
%231 = add i64 %193, %230
%232 = icmp ult i64 %231, %230
%233 = add i64 %229, 1
%234 = icmp eq i64 %233, 0
%235 = select i1 %232, i1 %234, i1 false
%236 = zext i1 %235 to i64
%237 = add nuw nsw i64 %228, %236
%238 = select i1 %232, i64 %233, i64 %229
%239 = add i64 %202, %238
%240 = icmp ult i64 %239, %238
%241 = zext i1 %240 to i64
%242 = add nuw nsw i64 %237, %241
%243 = getelementptr inbounds i64, i64* %0, i64 4
store i64 %231, i64* %243
%244 = load i64, i64* %110
%245 = and i64 %244, 4294967295
%246 = lshr i64 %244, 32
%247 = load i64, i64* %70
%248 = and i64 %247, 4294967295
%249 = lshr i64 %247, 32
%250 = mul nuw i64 %249, %245
%251 = mul nuw i64 %248, %245
%252 = mul nuw i64 %248, %246
%253 = mul nuw i64 %249, %246
%254 = add i64 %250, %252
%255 = icmp ult i64 %254, %252
%256 = add nuw i64 %253, 4294967296
%257 = select i1 %255, i64 %256, i64 %253
%258 = lshr i64 %254, 32
%259 = add i64 %257, %258
%260 = shl i64 %254, 32
%261 = add i64 %260, %251
%262 = icmp ult i64 %261, %260
%263 = zext i1 %262 to i64
%264 = add i64 %259, %263
%265 = lshr i64 %264, 63
%266 = tail call i64 @llvm.fshl.i64(i64 %264, i64 %261, i64 1)
%267 = shl i64 %261, 1
%268 = add i64 %239, %267
%269 = icmp ult i64 %268, %267
%270 = add i64 %266, 1
%271 = icmp eq i64 %270, 0
%272 = select i1 %269, i1 %271, i1 false
%273 = zext i1 %272 to i64
%274 = select i1 %269, i64 %270, i64 %266
%275 = add i64 %242, %274
%276 = icmp ult i64 %275, %274
%277 = zext i1 %276 to i64
%278 = getelementptr inbounds i64, i64* %0, i64 5
store i64 %268, i64* %278
%279 = load i64, i64* %110
%280 = and i64 %279, 4294967295
%281 = lshr i64 %279, 32
%282 = mul nuw i64 %280, %281
%283 = mul nuw i64 %280, %280
%284 = mul nuw i64 %281, %281
%285 = lshr i64 %282, 31
%286 = add nuw i64 %285, %284
%287 = shl i64 %282, 33
%288 = add i64 %287, %283
%289 = icmp ult i64 %288, %287
%290 = zext i1 %289 to i64
%291 = add nuw i64 %286, %290
%292 = add i64 %275, %288
%293 = icmp ult i64 %292, %288
%294 = zext i1 %293 to i64
%295 = add nuw i64 %291, %265
%296 = add i64 %295, %273
%297 = add i64 %296, %277
%298 = add i64 %297, %294
%299 = getelementptr inbounds i64, i64* %0, i64 6
store i64 %292, i64* %299
%300 = getelementptr inbounds i64, i64* %0, i64 7
store i64 %298, i64* %300
ret void
}