// File: marxn[P]pupp/3rdparty/gmp/mpn/toom44_mul.c
// Function: _gmpn_toom44_mul
void
mpn_toom44_mul (mp_ptr pp,
		mp_srcptr ap, mp_size_t an,
		mp_srcptr bp, mp_size_t bn,
		mp_ptr scratch)
{
  mp_size_t n, s, t;
  mp_limb_t cy;
  enum toom7_flags flags;

#define a0  ap
#define a1  (ap + n)
#define a2  (ap + 2*n)
#define a3  (ap + 3*n)
#define b0  bp
#define b1  (bp + n)
#define b2  (bp + 2*n)
#define b3  (bp + 3*n)

  ASSERT (an >= bn);

  n = (an + 3) >> 2;

  s = an - 3 * n;
  t = bn - 3 * n;

  ASSERT (0 < s && s <= n);
  ASSERT (0 < t && t <= n);
  ASSERT (s >= t);

  /* NOTE: The multiplications to v2, vm2, vh and vm1 overwrites the
   * following limb, so these must be computed in order, and we need a
   * one limb gap to tp. */
#define v0    pp				/* 2n */
#define v1    (pp + 2 * n)			/* 2n+1 */
#define vinf  (pp + 6 * n)			/* s+t */
#define v2    scratch				/* 2n+1 */
#define vm2   (scratch + 2 * n + 1)		/* 2n+1 */
#define vh    (scratch + 4 * n + 2)		/* 2n+1 */
#define vm1   (scratch + 6 * n + 3)		/* 2n+1 */
#define tp (scratch + 8*n + 5)

  /* apx and bpx must not overlap with v1 */
#define apx   pp				/* n+1 */
#define amx   (pp + n + 1)			/* n+1 */
#define bmx   (pp + 2*n + 2)			/* n+1 */
#define bpx   (pp + 4*n + 2)			/* n+1 */

  /* Total scratch need: 8*n + 5 + scratch for recursive calls. This
     gives roughly 32 n/3 + log term. */

  /* Compute apx = a0 + 2 a1 + 4 a2 + 8 a3 and amx = a0 - 2 a1 + 4 a2 - 8 a3.  */
  flags = (enum toom7_flags) (toom7_w1_neg & mpn_toom_eval_dgr3_pm2 (apx, amx, ap, n, s, tp));

  /* Compute bpx = b0 + 2 b1 + 4 b2 + 8 b3 and bmx = b0 - 2 b1 + 4 b2 - 8 b3.  */
  flags = (enum toom7_flags) (flags ^ (toom7_w1_neg & mpn_toom_eval_dgr3_pm2 (bpx, bmx, bp, n, t, tp)));

  TOOM44_MUL_N_REC (v2, apx, bpx, n + 1, tp);	/* v2,  2n+1 limbs */
  TOOM44_MUL_N_REC (vm2, amx, bmx, n + 1, tp);	/* vm2,  2n+1 limbs */

  /* Compute apx = 8 a0 + 4 a1 + 2 a2 + a3 = (((2*a0 + a1) * 2 + a2) * 2 + a3 */
#if HAVE_NATIVE_mpn_addlsh1_n
  cy = mpn_addlsh1_n (apx, a1, a0, n);
  cy = 2*cy + mpn_addlsh1_n (apx, a2, apx, n);
  if (s < n)
    {
      mp_limb_t cy2;
      cy2 = mpn_addlsh1_n (apx, a3, apx, s);
      apx[n] = 2*cy + mpn_lshift (apx + s, apx + s, n - s, 1);
      MPN_INCR_U (apx + s, n+1-s, cy2);
    }
  else
    apx[n] = 2*cy + mpn_addlsh1_n (apx, a3, apx, n);
#else
  cy = mpn_lshift (apx, a0, n, 1);
  cy += mpn_add_n (apx, apx, a1, n);
  cy = 2*cy + mpn_lshift (apx, apx, n, 1);
  cy += mpn_add_n (apx, apx, a2, n);
  cy = 2*cy + mpn_lshift (apx, apx, n, 1);
  apx[n] = cy + mpn_add (apx, apx, n, a3, s);
#endif

  /* Compute bpx = 8 b0 + 4 b1 + 2 b2 + b3 = (((2*b0 + b1) * 2 + b2) * 2 + b3 */
#if HAVE_NATIVE_mpn_addlsh1_n
  cy = mpn_addlsh1_n (bpx, b1, b0, n);
  cy = 2*cy + mpn_addlsh1_n (bpx, b2, bpx, n);
  if (t < n)
    {
      mp_limb_t cy2;
      cy2 = mpn_addlsh1_n (bpx, b3, bpx, t);
      bpx[n] = 2*cy + mpn_lshift (bpx + t, bpx + t, n - t, 1);
      MPN_INCR_U (bpx + t, n+1-t, cy2);
    }
  else
    bpx[n] = 2*cy + mpn_addlsh1_n (bpx, b3, bpx, n);
#else
  cy = mpn_lshift (bpx, b0, n, 1);
  cy += mpn_add_n (bpx, bpx, b1, n);
  cy = 2*cy + mpn_lshift (bpx, bpx, n, 1);
  cy += mpn_add_n (bpx, bpx, b2, n);
  cy = 2*cy + mpn_lshift (bpx, bpx, n, 1);
  bpx[n] = cy + mpn_add (bpx, bpx, n, b3, t);
#endif

  ASSERT (apx[n] < 15);
  ASSERT (bpx[n] < 15);

  TOOM44_MUL_N_REC (vh, apx, bpx, n + 1, tp);	/* vh,  2n+1 limbs */

  /* Compute apx = a0 + a1 + a2 + a3 and amx = a0 - a1 + a2 - a3.  */
  flags = (enum toom7_flags) (flags | (toom7_w3_neg & mpn_toom_eval_dgr3_pm1 (apx, amx, ap, n, s, tp)));

  /* Compute bpx = b0 + b1 + b2 + b3 and bmx = b0 - b1 + b2 - b3.  */
  flags = (enum toom7_flags) (flags ^ (toom7_w3_neg & mpn_toom_eval_dgr3_pm1 (bpx, bmx, bp, n, t, tp)));

  TOOM44_MUL_N_REC (vm1, amx, bmx, n + 1, tp);	/* vm1,  2n+1 limbs */
  /* Clobbers amx, bmx. */
  TOOM44_MUL_N_REC (v1, apx, bpx, n + 1, tp);	/* v1,  2n+1 limbs */

  TOOM44_MUL_N_REC (v0, a0, b0, n, tp);
  if (s > t)
    mpn_mul (vinf, a3, s, b3, t);
  else
    TOOM44_MUL_N_REC (vinf, a3, b3, s, tp);	/* vinf, s+t limbs */

  mpn_toom_interpolate_7pts (pp, n, flags, vm2, vm1, v2, vh, s + t, tp);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %rbx
subq $0xd8, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq %r8, -0x30(%rbp)
movq %r9, -0x38(%rbp)
jmp 0x42956
movq -0x20(%rbp), %rax
addq $0x3, %rax
sarq $0x2, %rax
movq %rax, -0x40(%rbp)
movq -0x20(%rbp), %rax
imulq $0x3, -0x40(%rbp), %rcx
subq %rcx, %rax
movq %rax, -0x48(%rbp)
movq -0x30(%rbp), %rax
imulq $0x3, -0x40(%rbp), %rcx
subq %rcx, %rax
movq %rax, -0x50(%rbp)
jmp 0x42988
jmp 0x4298a
jmp 0x4298c
jmp 0x4298e
jmp 0x42990
movq -0x10(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x40(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
addq $0x8, %rsi
movq -0x18(%rbp), %rdx
movq -0x40(%rbp), %rcx
movq -0x48(%rbp), %r8
movq -0x38(%rbp), %r9
movq -0x40(%rbp), %rax
shlq $0x3, %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x28, %r9
callq 0x49be0
andl $0x1, %eax
movl %eax, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
movl %eax, -0x84(%rbp)
movq -0x10(%rbp), %rdi
movq -0x40(%rbp), %rax
shlq $0x2, %rax
shlq $0x3, %rax
addq %rax, %rdi
addq $0x10, %rdi
movq -0x10(%rbp), %rsi
movq -0x40(%rbp), %rax
shlq %rax
shlq $0x3, %rax
addq %rax, %rsi
addq $0x10, %rsi
movq -0x28(%rbp), %rdx
movq -0x40(%rbp), %rcx
movq -0x50(%rbp), %r8
movq -0x38(%rbp), %r9
movq -0x40(%rbp), %rax
shlq $0x3, %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x28, %r9
callq 0x49be0
movl %eax, %ecx
movl -0x84(%rbp), %eax
andl $0x1, %ecx
xorl %ecx, %eax
movl %eax, -0x5c(%rbp)
movq -0x40(%rbp), %rax
addq $0x1, %rax
cmpq $0x51, %rax
jge 0x42a9e
movq -0x38(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x40(%rbp), %rdx
addq $0x1, %rdx
movq -0x10(%rbp), %rcx
movq -0x40(%rbp), %rax
shlq $0x2, %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x10, %rcx
movq -0x40(%rbp), %r8
addq $0x1, %r8
movq -0x38(%rbp), %r9
movq -0x40(%rbp), %rax
shlq $0x3, %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x28, %r9
callq 0x3e800
jmp 0x42ae9
movq -0x38(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x40(%rbp), %rdx
addq $0x1, %rdx
movq -0x10(%rbp), %rcx
movq -0x40(%rbp), %rax
shlq $0x2, %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x10, %rcx
movq -0x40(%rbp), %r8
addq $0x1, %r8
movq -0x38(%rbp), %r9
movq -0x40(%rbp), %rax
shlq $0x3, %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x28, %r9
callq 0x40340
jmp 0x42aeb
jmp 0x42aed
movq -0x40(%rbp), %rax
addq $0x1, %rax
cmpq $0x51, %rax
jge 0x42b68
movq -0x38(%rbp), %rdi
movq -0x40(%rbp), %rax
shlq %rax
shlq $0x3, %rax
addq %rax, %rdi
addq $0x8, %rdi
movq -0x10(%rbp), %rsi
movq -0x40(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
addq $0x8, %rsi
movq -0x40(%rbp), %rdx
addq $0x1, %rdx
movq -0x10(%rbp), %rcx
movq -0x40(%rbp), %rax
shlq %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x10, %rcx
movq -0x40(%rbp), %r8
addq $0x1, %r8
movq -0x38(%rbp), %r9
movq -0x40(%rbp), %rax
shlq $0x3, %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x28, %r9
callq 0x3e800
jmp 0x42bd3
movq -0x38(%rbp), %rdi
movq -0x40(%rbp), %rax
shlq %rax
shlq $0x3, %rax
addq %rax, %rdi
addq $0x8, %rdi
movq -0x10(%rbp), %rsi
movq -0x40(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
addq $0x8, %rsi
movq -0x40(%rbp), %rdx
addq $0x1, %rdx
movq -0x10(%rbp), %rcx
movq -0x40(%rbp), %rax
shlq %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x10, %rcx
movq -0x40(%rbp), %r8
addq $0x1, %r8
movq -0x38(%rbp), %r9
movq -0x40(%rbp), %rax
shlq $0x3, %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x28, %r9
callq 0x40340
jmp 0x42bd5
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x40(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
movq -0x18(%rbp), %rdx
movq -0x40(%rbp), %rcx
callq 0x555c0
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rax
shlq %rax
movq %rax, -0x90(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x40(%rbp), %rax
shlq %rax
shlq $0x3, %rax
addq %rax, %rsi
movq -0x10(%rbp), %rdx
movq -0x40(%rbp), %rcx
callq 0x555c0
movq %rax, %rcx
movq -0x90(%rbp), %rax
addq %rcx, %rax
movq %rax, -0x58(%rbp)
movq -0x48(%rbp), %rax
cmpq -0x40(%rbp), %rax
jge 0x42cef
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
imulq $0x3, -0x40(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
movq -0x10(%rbp), %rdx
movq -0x48(%rbp), %rcx
callq 0x555c0
movq %rax, -0x68(%rbp)
movq -0x58(%rbp), %rax
shlq %rax
movq %rax, -0x98(%rbp)
movq -0x10(%rbp), %rdi
movq -0x48(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
movq -0x10(%rbp), %rsi
movq -0x48(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
movq -0x40(%rbp), %rdx
subq -0x48(%rbp), %rdx
movl $0x1, %ecx
callq 0x37320
movq -0x98(%rbp), %rdx
addq %rax, %rdx
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq -0x10(%rbp), %rax
movq -0x48(%rbp), %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq -0x68(%rbp), %rcx
addq %rcx, (%rax)
jae 0x42ce5
addq $0x1, 0x8(%rax)
leaq 0x8(%rax), %rax
jb 0x42cda
movq %rax, -0x70(%rbp)
jmp 0x42ceb
jmp 0x42ced
jmp 0x42d34
movq -0x58(%rbp), %rax
shlq %rax
movq %rax, -0xa0(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
imulq $0x3, -0x40(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
movq -0x10(%rbp), %rdx
movq -0x40(%rbp), %rcx
callq 0x555c0
movq -0xa0(%rbp), %rdx
addq %rax, %rdx
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq -0x10(%rbp), %rdi
movq -0x40(%rbp), %rax
shlq $0x2, %rax
shlq $0x3, %rax
addq %rax, %rdi
addq $0x10, %rdi
movq -0x28(%rbp), %rsi
movq -0x40(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
movq -0x28(%rbp), %rdx
movq -0x40(%rbp), %rcx
callq 0x555c0
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rax
shlq %rax
movq %rax, -0xa8(%rbp)
movq -0x10(%rbp), %rdi
movq -0x40(%rbp), %rax
shlq $0x2, %rax
shlq $0x3, %rax
addq %rax, %rdi
addq $0x10, %rdi
movq -0x28(%rbp), %rsi
movq -0x40(%rbp), %rax
shlq %rax
shlq $0x3, %rax
addq %rax, %rsi
movq -0x10(%rbp), %rdx
movq -0x40(%rbp), %rax
shlq $0x2, %rax
shlq $0x3, %rax
addq %rax, %rdx
addq $0x10, %rdx
movq -0x40(%rbp), %rcx
callq 0x555c0
movq %rax, %rcx
movq -0xa8(%rbp), %rax
addq %rcx, %rax
movq %rax, -0x58(%rbp)
movq -0x50(%rbp), %rax
cmpq -0x40(%rbp), %rax
jge 0x42ef6
movq -0x10(%rbp), %rdi
movq -0x40(%rbp), %rax
shlq $0x2, %rax
shlq $0x3, %rax
addq %rax, %rdi
addq $0x10, %rdi
movq -0x28(%rbp), %rsi
imulq $0x3, -0x40(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
movq -0x10(%rbp), %rdx
movq -0x40(%rbp), %rax
shlq $0x2, %rax
shlq $0x3, %rax
addq %rax, %rdx
addq $0x10, %rdx
movq -0x50(%rbp), %rcx
callq 0x555c0
movq %rax, -0x78(%rbp)
movq -0x58(%rbp), %rax
shlq %rax
movq %rax, -0xb0(%rbp)
movq -0x10(%rbp), %rdi
movq -0x40(%rbp), %rax
shlq $0x2, %rax
shlq $0x3, %rax
addq %rax, %rdi
addq $0x10, %rdi
movq -0x50(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
movq -0x10(%rbp), %rsi
movq -0x40(%rbp), %rax
shlq $0x2, %rax
shlq $0x3, %rax
addq %rax, %rsi
addq $0x10, %rsi
movq -0x50(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
movq -0x40(%rbp), %rdx
subq -0x50(%rbp), %rdx
movl $0x1, %ecx
callq 0x37320
movq -0xb0(%rbp), %rdx
addq %rax, %rdx
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
shlq $0x2, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq -0x40(%rbp), %rcx
movq %rdx, 0x10(%rax,%rcx,8)
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
shlq $0x2, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
addq $0x10, %rax
movq -0x50(%rbp), %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq -0x78(%rbp), %rcx
addq %rcx, (%rax)
jae 0x42eec
addq $0x1, 0x8(%rax)
leaq 0x8(%rax), %rax
jb 0x42ee1
movq %rax, -0x80(%rbp)
jmp 0x42ef2
jmp 0x42ef4
jmp 0x42f71
movq -0x58(%rbp), %rax
shlq %rax
movq %rax, -0xb8(%rbp)
movq -0x10(%rbp), %rdi
movq -0x40(%rbp), %rax
shlq $0x2, %rax
shlq $0x3, %rax
addq %rax, %rdi
addq $0x10, %rdi
movq -0x28(%rbp), %rsi
imulq $0x3, -0x40(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
movq -0x10(%rbp), %rdx
movq -0x40(%rbp), %rax
shlq $0x2, %rax
shlq $0x3, %rax
addq %rax, %rdx
addq $0x10, %rdx
movq -0x40(%rbp), %rcx
callq 0x555c0
movq -0xb8(%rbp), %rdx
addq %rax, %rdx
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
shlq $0x2, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq -0x40(%rbp), %rcx
movq %rdx, 0x10(%rax,%rcx,8)
jmp 0x42f73
jmp 0x42f75
jmp 0x42f77
jmp 0x42f79
jmp 0x42f7b
movq -0x40(%rbp), %rax
addq $0x1, %rax
cmpq $0x51, %rax
jge 0x42fe9
movq -0x38(%rbp), %rdi
movq -0x40(%rbp), %rax
shlq $0x2, %rax
shlq $0x3, %rax
addq %rax, %rdi
addq $0x10, %rdi
movq -0x10(%rbp), %rsi
movq -0x40(%rbp), %rdx
addq $0x1, %rdx
movq -0x10(%rbp), %rcx
movq -0x40(%rbp), %rax
shlq $0x2, %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x10, %rcx
movq -0x40(%rbp), %r8
addq $0x1, %r8
movq -0x38(%rbp), %r9
movq -0x40(%rbp), %rax
shlq $0x3, %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x28, %r9
callq 0x3e800
jmp 0x43047
movq -0x38(%rbp), %rdi
movq -0x40(%rbp), %rax
shlq $0x2, %rax
shlq $0x3, %rax
addq %rax, %rdi
addq $0x10, %rdi
movq -0x10(%rbp), %rsi
movq -0x40(%rbp), %rdx
addq $0x1, %rdx
movq -0x10(%rbp), %rcx
movq -0x40(%rbp), %rax
shlq $0x2, %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x10, %rcx
movq -0x40(%rbp), %r8
addq $0x1, %r8
movq -0x38(%rbp), %r9
movq -0x40(%rbp), %rax
shlq $0x3, %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x28, %r9
callq 0x40340
jmp 0x43049
movl -0x5c(%rbp), %eax
movl %eax, -0xc0(%rbp)
movq -0x10(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x40(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
addq $0x8, %rsi
movq -0x18(%rbp), %rdx
movq -0x40(%rbp), %rcx
movq -0x48(%rbp), %r8
movq -0x38(%rbp), %r9
movq -0x40(%rbp), %rax
shlq $0x3, %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x28, %r9
callq 0x49ac0
movl %eax, %ecx
movl -0xc0(%rbp), %eax
andl $0x2, %ecx
orl %ecx, %eax
movl %eax, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
movl %eax, -0xbc(%rbp)
movq -0x10(%rbp), %rdi
movq -0x40(%rbp), %rax
shlq $0x2, %rax
shlq $0x3, %rax
addq %rax, %rdi
addq $0x10, %rdi
movq -0x10(%rbp), %rsi
movq -0x40(%rbp), %rax
shlq %rax
shlq $0x3, %rax
addq %rax, %rsi
addq $0x10, %rsi
movq -0x28(%rbp), %rdx
movq -0x40(%rbp), %rcx
movq -0x50(%rbp), %r8
movq -0x38(%rbp), %r9
movq -0x40(%rbp), %rax
shlq $0x3, %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x28, %r9
callq 0x49ac0
movl %eax, %ecx
movl -0xbc(%rbp), %eax
andl $0x2, %ecx
xorl %ecx, %eax
movl %eax, -0x5c(%rbp)
movq -0x40(%rbp), %rax
addq $0x1, %rax
cmpq $0x51, %rax
jge 0x43188
movq -0x38(%rbp), %rdi
imulq $0x6, -0x40(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
addq $0x18, %rdi
movq -0x10(%rbp), %rsi
movq -0x40(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
addq $0x8, %rsi
movq -0x40(%rbp), %rdx
addq $0x1, %rdx
movq -0x10(%rbp), %rcx
movq -0x40(%rbp), %rax
shlq %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x10, %rcx
movq -0x40(%rbp), %r8
addq $0x1, %r8
movq -0x38(%rbp), %r9
movq -0x40(%rbp), %rax
shlq $0x3, %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x28, %r9
callq 0x3e800
jmp 0x431f1
movq -0x38(%rbp), %rdi
imulq $0x6, -0x40(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
addq $0x18, %rdi
movq -0x10(%rbp), %rsi
movq -0x40(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
addq $0x8, %rsi
movq -0x40(%rbp), %rdx
addq $0x1, %rdx
movq -0x10(%rbp), %rcx
movq -0x40(%rbp), %rax
shlq %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x10, %rcx
movq -0x40(%rbp), %r8
addq $0x1, %r8
movq -0x38(%rbp), %r9
movq -0x40(%rbp), %rax
shlq $0x3, %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x28, %r9
callq 0x40340
jmp 0x431f3
jmp 0x431f5
movq -0x40(%rbp), %rax
addq $0x1, %rax
cmpq $0x51, %rax
jge 0x4325e
movq -0x10(%rbp), %rdi
movq -0x40(%rbp), %rax
shlq %rax
shlq $0x3, %rax
addq %rax, %rdi
movq -0x10(%rbp), %rsi
movq -0x40(%rbp), %rdx
addq $0x1, %rdx
movq -0x10(%rbp), %rcx
movq -0x40(%rbp), %rax
shlq $0x2, %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x10, %rcx
movq -0x40(%rbp), %r8
addq $0x1, %r8
movq -0x38(%rbp), %r9
movq -0x40(%rbp), %rax
shlq $0x3, %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x28, %r9
callq 0x3e800
jmp 0x432b7
movq -0x10(%rbp), %rdi
movq -0x40(%rbp), %rax
shlq %rax
shlq $0x3, %rax
addq %rax, %rdi
movq -0x10(%rbp), %rsi
movq -0x40(%rbp), %rdx
addq $0x1, %rdx
movq -0x10(%rbp), %rcx
movq -0x40(%rbp), %rax
shlq $0x2, %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x10, %rcx
movq -0x40(%rbp), %r8
addq $0x1, %r8
movq -0x38(%rbp), %r9
movq -0x40(%rbp), %rax
shlq $0x3, %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x28, %r9
callq 0x40340
jmp 0x432b9
jmp 0x432bb
cmpq $0x51, -0x40(%rbp)
jge 0x432f4
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq -0x28(%rbp), %rcx
movq -0x40(%rbp), %r8
movq -0x38(%rbp), %r9
movq -0x40(%rbp), %rax
shlq $0x3, %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x28, %r9
callq 0x3e800
jmp 0x43324
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq -0x28(%rbp), %rcx
movq -0x40(%rbp), %r8
movq -0x38(%rbp), %r9
movq -0x40(%rbp), %rax
shlq $0x3, %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x28, %r9
callq 0x40340
jmp 0x43326
movq -0x48(%rbp), %rax
cmpq -0x50(%rbp), %rax
jle 0x43372
movq -0x10(%rbp), %rdi
imulq $0x6, -0x40(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
movq -0x18(%rbp), %rsi
imulq $0x3, -0x40(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
movq -0x48(%rbp), %rdx
movq -0x28(%rbp), %rcx
imulq $0x3, -0x40(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rcx
movq -0x50(%rbp), %r8
callq 0x37f00
jmp 0x43429
jmp 0x43374
cmpq $0x51, -0x48(%rbp)
jge 0x433d1
movq -0x10(%rbp), %rdi
imulq $0x6, -0x40(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
movq -0x18(%rbp), %rsi
imulq $0x3, -0x40(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
movq -0x48(%rbp), %rdx
movq -0x28(%rbp), %rcx
imulq $0x3, -0x40(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rcx
movq -0x48(%rbp), %r8
movq -0x38(%rbp), %r9
movq -0x40(%rbp), %rax
shlq $0x3, %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x28, %r9
callq 0x3e800
jmp 0x43425
movq -0x10(%rbp), %rdi
imulq $0x6, -0x40(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
movq -0x18(%rbp), %rsi
imulq $0x3, -0x40(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
movq -0x48(%rbp), %rdx
movq -0x28(%rbp), %rcx
imulq $0x3, -0x40(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rcx
movq -0x48(%rbp), %r8
movq -0x38(%rbp), %r9
movq -0x40(%rbp), %rax
shlq $0x3, %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x28, %r9
callq 0x40340
jmp 0x43427
jmp 0x43429
movq -0x10(%rbp), %rdi
movq -0x40(%rbp), %rsi
movl -0x5c(%rbp), %edx
movq -0x38(%rbp), %rcx
movq -0x40(%rbp), %rax
shlq %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x8, %rcx
movq -0x38(%rbp), %r8
imulq $0x6, -0x40(%rbp), %rax
shlq $0x3, %rax
addq %rax, %r8
addq $0x18, %r8
movq -0x38(%rbp), %r9
movq -0x38(%rbp), %r11
movq -0x40(%rbp), %rax
shlq $0x2, %rax
shlq $0x3, %rax
addq %rax, %r11
addq $0x10, %r11
movq -0x48(%rbp), %r10
addq -0x50(%rbp), %r10
movq -0x38(%rbp), %rax
movq -0x40(%rbp), %rbx
shlq $0x3, %rbx
shlq $0x3, %rbx
addq %rbx, %rax
addq $0x28, %rax
movq %r11, (%rsp)
movq %r10, 0x8(%rsp)
movq %rax, 0x10(%rsp)
callq 0x4b2d0
addq $0xd8, %rsp
popq %rbx
popq %rbp
retq
nopw %cs:(%rax,%rax)
nop