// File: /workspace/github_cpp_makefile_star2_O2/marxn[P]pupp/3rdparty/gmp/mpn/toom6h_mul.c
// Function: _gmpn_toom6h_mul
void
mpn_toom6h_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;
  int p, q, half;
  int sign;

  /***************************** decomposition *******************************/

  ASSERT (an >= bn);
  /* Can not handle too much unbalancement */
  ASSERT (bn >= 42);
  /* Can not handle too much unbalancement */
  ASSERT ((an*3 <  bn * 8) || (bn >= 46 && an * 6 <  bn * 17));

  /* Limit num/den is a rational number between
     (12/11)^(log(4)/log(2*4-1)) and (12/11)^(log(6)/log(2*6-1))             */
#define LIMIT_numerator (18)
#define LIMIT_denominat (17)

  if (LIKELY (an * LIMIT_denominat < LIMIT_numerator * bn)) /* is 6*... < 6*... */
    {
      n = 1 + (an - 1) / (size_t) 6;
      p = q = 5;
      half = 0;

      s = an - 5 * n;
      t = bn - 5 * n;
    }
  else {
    if (an * 5 * LIMIT_numerator < LIMIT_denominat * 7 * bn)
      { p = 7; q = 6; }
    else if (an * 5 * LIMIT_denominat < LIMIT_numerator * 7 * bn)
      { p = 7; q = 5; }
    else if (an * LIMIT_numerator < LIMIT_denominat * 2 * bn)  /* is 4*... < 8*... */
      { p = 8; q = 5; }
    else if (an * LIMIT_denominat < LIMIT_numerator * 2 * bn)  /* is 4*... < 8*... */
      { p = 8; q = 4; }
    else
      { p = 9; q = 4; }

    half = (p ^ q) & 1;
    n = 1 + (q * an >= p * bn ? (an - 1) / (size_t) p : (bn - 1) / (size_t) q);
    p--; q--;

    s = an - p * n;
    t = bn - q * n;

    /* With LIMIT = 16/15, the following recover is needed only if bn<=73*/
    if (half) { /* Recover from badly chosen splitting */
      if (UNLIKELY (s<1)) {p--; s+=n; half=0;}
      else if (UNLIKELY (t<1)) {q--; t+=n; half=0;}
    }
  }
#undef LIMIT_numerator
#undef LIMIT_denominat

  ASSERT (0 < s && s <= n);
  ASSERT (0 < t && t <= n);
  ASSERT (half || s + t > 3);
  ASSERT (n > 2);

#define   r4    (pp + 3 * n)			/* 3n+1 */
#define   r2    (pp + 7 * n)			/* 3n+1 */
#define   r0    (pp +11 * n)			/* s+t <= 2*n */
#define   r5    (scratch)			/* 3n+1 */
#define   r3    (scratch + 3 * n + 1)		/* 3n+1 */
#define   r1    (scratch + 6 * n + 2)		/* 3n+1 */
#define   v0    (pp + 7 * n)			/* n+1 */
#define   v1    (pp + 8 * n+1)			/* n+1 */
#define   v2    (pp + 9 * n+2)			/* n+1 */
#define   v3    (scratch + 9 * n + 3)		/* n+1 */
#define   wsi   (scratch + 9 * n + 3)		/* 3n+1 */
#define   wse   (scratch +10 * n + 4)		/* 2n+1 */

  /* Alloc also 3n+1 limbs for wsi... toom_interpolate_12pts may
     need all of them  */
/*   if (scratch == NULL) */
/*     scratch = TMP_SALLOC_LIMBS(mpn_toom6_sqr_itch(n * 6)); */
  ASSERT (12 * n + 6 <= mpn_toom6h_mul_itch(an,bn));
  ASSERT (12 * n + 6 <= mpn_toom6_sqr_itch(n * 6));

  /********************** evaluation and recursive calls *********************/
  /* $\pm1/2$ */
  sign = mpn_toom_eval_pm2rexp (v2, v0, p, ap, n, s, 1, pp) ^
	 mpn_toom_eval_pm2rexp (v3, v1, q, bp, n, t, 1, pp);
  /* A(-1/2)*B(-1/2)*2^. */ /* A(+1/2)*B(+1/2)*2^. */
  TOOM6H_MUL_N_REC(pp, v0, v1, 2, r5, v2, v3, n + 1, wse);
  mpn_toom_couple_handling (r5, 2 * n + 1, pp, sign, n, 1+half , half);

  /* $\pm1$ */
  sign = mpn_toom_eval_pm1 (v2, v0, p, ap, n, s,    pp);
  if (UNLIKELY (q == 3))
    sign ^= mpn_toom_eval_dgr3_pm1 (v3, v1, bp, n, t,    pp);
  else
    sign ^= mpn_toom_eval_pm1 (v3, v1, q, bp, n, t,    pp);
  /* A(-1)*B(-1) */ /* A(1)*B(1) */
  TOOM6H_MUL_N_REC(pp, v0, v1, 2, r3, v2, v3, n + 1, wse);
  mpn_toom_couple_handling (r3, 2 * n + 1, pp, sign, n, 0, 0);

  /* $\pm4$ */
  sign = mpn_toom_eval_pm2exp (v2, v0, p, ap, n, s, 2, pp) ^
	 mpn_toom_eval_pm2exp (v3, v1, q, bp, n, t, 2, pp);
  /* A(-4)*B(-4) */
  TOOM6H_MUL_N_REC(pp, v0, v1, 2, r1, v2, v3, n + 1, wse); /* A(+4)*B(+4) */
  mpn_toom_couple_handling (r1, 2 * n + 1, pp, sign, n, 2, 4);

  /* $\pm1/4$ */
  sign = mpn_toom_eval_pm2rexp (v2, v0, p, ap, n, s, 2, pp) ^
	 mpn_toom_eval_pm2rexp (v3, v1, q, bp, n, t, 2, pp);
  /* A(-1/4)*B(-1/4)*4^. */ /* A(+1/4)*B(+1/4)*4^. */
  TOOM6H_MUL_N_REC(pp, v0, v1, 2, r4, v2, v3, n + 1, wse);
  mpn_toom_couple_handling (r4, 2 * n + 1, pp, sign, n, 2*(1+half), 2*(half));

  /* $\pm2$ */
  sign = mpn_toom_eval_pm2 (v2, v0, p, ap, n, s, pp) ^
	 mpn_toom_eval_pm2 (v3, v1, q, bp, n, t, pp);
  /* A(-2)*B(-2) */ /* A(+2)*B(+2) */
  TOOM6H_MUL_N_REC(pp, v0, v1, 2, r2, v2, v3, n + 1, wse);
  mpn_toom_couple_handling (r2, 2 * n + 1, pp, sign, n, 1, 2);

#undef v0
#undef v1
#undef v2
#undef v3
#undef wse

  /* A(0)*B(0) */
  TOOM6H_MUL_N_REC(pp, ap, bp, 0, pp, ap, bp, n, wsi);

  /* Infinity */
  if (UNLIKELY (half != 0)) {
    if (s > t) {
      TOOM6H_MUL_REC(r0, ap + p * n, s, bp + q * n, t, wsi);
    } else {
      TOOM6H_MUL_REC(r0, bp + q * n, t, ap + p * n, s, wsi);
    };
  };

  mpn_toom_interpolate_12pts (pp, r1, r3, r5, n, s+t, half, wsi);

#undef r0
#undef r1
#undef r2
#undef r3
#undef r4
#undef r5
#undef wsi
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xc8, %rsp
movq %r9, 0x38(%rsp)
movq %rcx, 0x50(%rsp)
movq %rdx, %r10
movq %rsi, 0x68(%rsp)
movq %rdi, %r15
imulq $0x11, %rdx, %rax
imulq $0x12, %r8, %rcx
pushq $0x1
popq %r12
cmpq %rcx, %rax
jge 0x1f8f8
leaq -0x1(%r10), %rax
movq $0x0, 0x80(%rsp)
pushq $0x6
popq %rcx
xorl %edx, %edx
divq %rcx
movq %rax, %r13
incq %r13
leaq (,%r13,4), %rax
addq %r13, %rax
subq %rax, %r10
subq %rax, %r8
movq %r8, 0x60(%rsp)
movb $0x1, %al
movq %rax, 0xa0(%rsp)
pushq $0x5
popq %rdx
movl %edx, %eax
movq %rax, 0x70(%rsp)
imulq $0x48, %r13, %r14
leaq (%r15,%r14), %rbp
addq $0x10, %rbp
imulq $0x38, %r13, %rbx
addq %r15, %rbx
movq %r15, 0x8(%rsp)
movl %r12d, (%rsp)
movq %rbp, %rdi
movq %rbx, %rsi
movq %rdx, 0x48(%rsp)
movq 0x68(%rsp), %rcx
movq %r13, %r8
movq %r10, 0x40(%rsp)
movq %r10, %r9
callq 0x22c90
movl %eax, 0x18(%rsp)
movl %r12d, %ecx
movq 0x38(%rsp), %rax
addq %rax, %r14
addq $0x18, %r14
movq %r13, %rax
shlq $0x6, %rax
leaq (%r15,%rax), %r12
addq $0x8, %r12
movq %r15, 0x8(%rsp)
movl %ecx, (%rsp)
movq %r14, %rdi
movq %r12, %rsi
movq 0x70(%rsp), %rdx
movq 0x50(%rsp), %rcx
movq %r13, %r8
movq 0x60(%rsp), %r9
callq 0x22c90
xorl 0x18(%rsp), %eax
movl %eax, 0x58(%rsp)
leaq 0x1(%r13), %rdx
cmpq $0x4f, %r13
movq %r14, 0x18(%rsp)
movq %r15, 0x90(%rsp)
movq %rbp, 0x20(%rsp)
movq %rdx, 0x30(%rsp)
movq %r12, 0x28(%rsp)
jbe 0x1eede
imulq $0x50, %r13, %rax
cmpq $0xf0, %r13
jbe 0x1ef35
movq 0x38(%rsp), %r12
addq %r12, %rax
addq $0x20, %rax
cmpq $0x157, %r13            # imm = 0x157
movq 0x90(%rsp), %r15
movq 0x20(%rsp), %rbp
movq %rax, 0x78(%rsp)
movq %r15, %rdi
movq %rbx, %rsi
jbe 0x1ef87
movq 0x30(%rsp), %r14
movq %r14, %rdx
movq 0x28(%rsp), %rcx
movq %r14, %r8
movq %rax, %r9
callq 0x1ed30
movq %r12, %rdi
movq %rbp, %rsi
movq %r14, %rdx
movq 0x18(%rsp), %rcx
movq %r14, %r8
movq 0x78(%rsp), %r9
callq 0x1ed30
jmp 0x1efba
imulq $0x50, %r13, %rax
movq 0x38(%rsp), %rbp
leaq (%rax,%rbp), %r9
addq $0x20, %r9
movq %r9, 0x78(%rsp)
movq %r15, %rdi
movq %r12, %rcx
movq %rdx, %r12
movq %rbx, %rsi
movq %rdx, %r8
callq 0x1c488
movq %rbp, %rdi
movq 0x20(%rsp), %rsi
movq %r12, %rdx
movq %r14, %rcx
movq %r12, %r8
movq 0x78(%rsp), %r9
callq 0x1c488
movq %rbp, %r12
movq 0x40(%rsp), %r14
movq 0x20(%rsp), %rbp
jmp 0x1efbf
movq 0x38(%rsp), %rcx
leaq (%rcx,%rax), %r9
addq $0x20, %r9
movq %rcx, %rbp
movq 0x90(%rsp), %r15
movq %r15, %rdi
movq %rdx, %r14
movq %rbx, %rsi
movq %r12, %rcx
movq %rdx, %r8
movq %r9, %r12
callq 0x1d2dc
movq %rbp, %rdi
movq 0x20(%rsp), %rbp
movq %rbp, %rsi
movq %r14, %rdx
movq 0x18(%rsp), %rcx
movq %r14, %r8
movq %r12, %r9
movq %rdi, %r12
callq 0x1d2dc
jmp 0x1efba
movq 0x30(%rsp), %r14
movq %r14, %rdx
movq 0x28(%rsp), %rcx
movq %r14, %r8
movq %rax, %r9
callq 0x1e7c4
movq %r12, %rdi
movq %rbp, %rsi
movq %r14, %rdx
movq 0x18(%rsp), %rcx
movq %r14, %r8
movq 0x78(%rsp), %r9
callq 0x1e7c4
movq 0x40(%rsp), %r14
leaq 0x1(,%r13,2), %rsi
movq 0x80(%rsp), %rax
leal 0x1(%rax), %r9d
movl %eax, (%rsp)
movq %r12, %rdi
movq %rsi, 0x78(%rsp)
movq %r15, %rdx
movl 0x58(%rsp), %ecx
movq %r13, %r8
movl %r9d, 0xa8(%rsp)
callq 0x21dbc
movq %r15, (%rsp)
movq %rbp, %rdi
movq %rbx, %r12
movq %rbx, %rsi
movq 0x48(%rsp), %rdx
movq 0x68(%rsp), %rcx
movq %r13, %r8
movq %r14, %r9
callq 0x227d0
movl %eax, %ebp
movq 0x70(%rsp), %rdx
cmpl $0x3, %edx
je 0x1f910
movq %r15, (%rsp)
movq 0x18(%rsp), %rdi
movq 0x28(%rsp), %rsi
movq 0x50(%rsp), %rcx
movq %r13, %r8
movq 0x60(%rsp), %r9
callq 0x227d0
xorl %ebp, %eax
movl %eax, 0x88(%rsp)
cmpq $0x4f, %r13
movq %r12, %r14
jbe 0x1f0d4
imulq $0x18, %r13, %rax
movq 0x38(%rsp), %r12
leaq (%r12,%rax), %rbp
addq $0x8, %rbp
imulq $0x50, %r13, %rax
cmpq $0xf0, %r13
jbe 0x1f12c
addq %r12, %rax
addq $0x20, %rax
cmpq $0x157, %r13            # imm = 0x157
movq %rax, 0x58(%rsp)
movq %r15, %rdi
movq %r14, %rsi
jbe 0x1f17c
movq 0x30(%rsp), %rbx
movq %rbx, %rdx
movq 0x28(%rsp), %rcx
movq %rbx, %r8
movq %rax, %r9
callq 0x1ed30
movq %rbp, %rdi
movq 0x20(%rsp), %rsi
movq %rbx, %rdx
movq 0x18(%rsp), %rcx
movq %rbx, %r8
movq 0x58(%rsp), %r9
callq 0x1ed30
jmp 0x1f1b1
imulq $0x50, %r13, %rax
movq 0x38(%rsp), %r12
leaq (%r12,%rax), %rbp
addq $0x20, %rbp
movq %r15, %rdi
movq %r14, %rsi
movq 0x30(%rsp), %rbx
movq %rbx, %rdx
movq 0x28(%rsp), %rcx
movq %rbx, %r8
movq %rbp, %r9
callq 0x1c488
imulq $0x18, %r13, %rax
leaq (%r12,%rax), %rdi
addq $0x8, %rdi
movq 0x20(%rsp), %rsi
movq %rbx, %rdx
movq 0x18(%rsp), %rcx
movq %rbx, %r8
movq %rbp, %r9
callq 0x1c488
jmp 0x1f1b1
movq 0x38(%rsp), %rcx
movq %rbp, %r12
leaq (%rcx,%rax), %rbp
addq $0x20, %rbp
movq %r15, %rdi
movq %r14, %rsi
movq 0x30(%rsp), %rbx
movq %rbx, %rdx
movq 0x28(%rsp), %rcx
movq %rbx, %r8
movq %rbp, %r9
callq 0x1d2dc
movq %r12, %rdi
movq 0x20(%rsp), %rsi
movq %rbx, %rdx
movq 0x18(%rsp), %rcx
movq %rbx, %r8
movq %rbp, %r9
movq 0x38(%rsp), %r12
callq 0x1d2dc
jmp 0x1f1b1
movq 0x30(%rsp), %rbx
movq %rbx, %rdx
movq 0x28(%rsp), %rcx
movq %rbx, %r8
movq %rax, %r9
callq 0x1e7c4
movq %rbp, %rdi
movq 0x20(%rsp), %rsi
movq %rbx, %rdx
movq 0x18(%rsp), %rcx
movq %rbx, %r8
movq 0x58(%rsp), %r9
callq 0x1e7c4
movq 0x48(%rsp), %rbp
leaq (,%r13,2), %rax
addq %r13, %rax
movq %rax, 0x58(%rsp)
leaq (%r12,%rax,8), %rdi
addq $0x8, %rdi
andl $0x0, (%rsp)
movq %rdi, 0xc0(%rsp)
movq 0x78(%rsp), %rsi
movq %r15, %rdx
movl 0x88(%rsp), %ecx
movq %r13, %r8
xorl %r9d, %r9d
callq 0x21dbc
movq %r15, 0x8(%rsp)
pushq $0x2
popq %rbx
movl %ebx, (%rsp)
movq 0x20(%rsp), %rdi
movq %r14, %rsi
movl %ebp, %edx
movq 0x68(%rsp), %rcx
movq %r13, %r8
movq 0x40(%rsp), %r9
callq 0x22abc
movl %eax, %ebp
movq %r15, 0x8(%rsp)
movl %ebx, (%rsp)
movq 0x18(%rsp), %rdi
movq 0x28(%rsp), %rsi
movq 0x70(%rsp), %rdx
movq 0x50(%rsp), %rcx
movq %r13, %r8
movq 0x60(%rsp), %r9
callq 0x22abc
xorl %ebp, %eax
movl %eax, 0x98(%rsp)
cmpq $0x4f, %r13
movq %r14, 0xb8(%rsp)
jbe 0x1f2f6
imulq $0x30, %r13, %rbx
leaq (%r12,%rbx), %rdx
addq $0x10, %rdx
cmpq $0xf0, %r13
jbe 0x1f349
movq %r12, %rbp
movq %rdx, 0xb0(%rsp)
movq %rbx, 0x88(%rsp)
imulq $0x50, %r13, %rax
leaq (%r12,%rax), %rbx
addq $0x20, %rbx
cmpq $0x157, %r13            # imm = 0x157
movq 0x40(%rsp), %r12
movq 0x90(%rsp), %r15
movq %r15, %rdi
movq %r14, %rsi
jbe 0x1f3aa
movq 0x30(%rsp), %r14
movq %r14, %rdx
movq 0x28(%rsp), %rcx
movq %r14, %r8
movq %rbx, %r9
callq 0x1ed30
movq 0xb0(%rsp), %rdi
movq 0x20(%rsp), %rsi
movq %r14, %rdx
movq 0x18(%rsp), %rcx
movq %r14, %r8
movq %rbx, %r9
callq 0x1ed30
jmp 0x1f3e2
imulq $0x50, %r13, %rax
leaq (%r12,%rax), %rbp
addq $0x20, %rbp
movq %r15, %rdi
movq %r14, %rsi
movq 0x30(%rsp), %r14
movq %r14, %rdx
movq 0x28(%rsp), %rcx
movq %r14, %r8
movq %rbp, %r9
callq 0x1c488
imulq $0x30, %r13, %rbx
leaq (%r12,%rbx), %rdi
addq $0x10, %rdi
movq 0x20(%rsp), %rsi
movq %r14, %rdx
movq 0x18(%rsp), %rcx
movq %r14, %r8
movq %rbp, %r9
callq 0x1c488
movq %r12, %rbp
jmp 0x1f3a3
imulq $0x50, %r13, %rax
movq 0x38(%rsp), %rcx
leaq (%rcx,%rax), %rbp
addq $0x20, %rbp
movq 0x90(%rsp), %r15
movq %rdx, %r12
movq %r15, %rdi
movq %r14, %rsi
movq 0x30(%rsp), %r14
movq %r14, %rdx
movq 0x28(%rsp), %rcx
movq %r14, %r8
movq %rbp, %r9
callq 0x1d2dc
movq %r12, %rdi
movq 0x20(%rsp), %rsi
movq %r14, %rdx
movq 0x18(%rsp), %rcx
movq %r14, %r8
movq %rbp, %r9
movq 0x38(%rsp), %rbp
callq 0x1d2dc
movq 0x40(%rsp), %r12
jmp 0x1f3ea
movq 0x30(%rsp), %r14
movq %r14, %rdx
movq 0x28(%rsp), %rcx
movq %r14, %r8
movq %rbx, %r9
callq 0x1e7c4
movq 0xb0(%rsp), %rdi
movq 0x20(%rsp), %rsi
movq %r14, %rdx
movq 0x18(%rsp), %rcx
movq %r14, %r8
movq %rbx, %r9
callq 0x1e7c4
movq 0x88(%rsp), %rbx
leaq (%rbx,%rbp), %rdi
addq $0x10, %rdi
movl $0x4, (%rsp)
movq %rdi, 0x88(%rsp)
movq 0x78(%rsp), %rsi
movq %r15, %rdx
movl 0x98(%rsp), %ecx
movq %r13, %r8
pushq $0x2
popq %rbx
movl %ebx, %r9d
callq 0x21dbc
movq %r15, 0x8(%rsp)
movl %ebx, (%rsp)
movq 0x20(%rsp), %rdi
movq 0xb8(%rsp), %r14
movq %r14, %rsi
movq 0x48(%rsp), %rdx
movq 0x68(%rsp), %rcx
movq %r13, %r8
movq %r12, %r9
callq 0x22c90
movq %rbp, %r12
movl %eax, %ebp
movq %r15, 0x8(%rsp)
movl %ebx, (%rsp)
movq 0x18(%rsp), %rdi
movq 0x28(%rsp), %rsi
movq 0x70(%rsp), %rdx
movq 0x50(%rsp), %rcx
movq %r13, %r8
movq 0x60(%rsp), %r9
callq 0x22c90
movl %eax, %ebx
xorl %ebp, %ebx
cmpq $0x4f, %r13
movq %r14, %rsi
jbe 0x1f50b
movq 0x58(%rsp), %r12
leaq (%r15,%r12,8), %rdx
cmpq $0xf0, %r13
movq %rdx, 0x98(%rsp)
jbe 0x1f555
imulq $0x50, %r13, %rax
movq 0x38(%rsp), %rcx
leaq (%rcx,%rax), %r12
addq $0x20, %r12
cmpq $0x157, %r13            # imm = 0x157
movq 0x40(%rsp), %r14
movq %r15, %rdi
jbe 0x1f5ad
movq 0x30(%rsp), %rbp
movq %rbp, %rdx
movq 0x28(%rsp), %rcx
movq %rbp, %r8
movq %r12, %r9
callq 0x1ed30
movq 0x98(%rsp), %rdi
movq 0x20(%rsp), %rsi
movq %rbp, %rdx
movq 0x18(%rsp), %rcx
movq %rbp, %r8
movq %r12, %r9
callq 0x1ed30
jmp 0x1f5e5
imulq $0x50, %r13, %rax
leaq (%r12,%rax), %rbp
addq $0x20, %rbp
movq %r15, %rdi
movq 0x30(%rsp), %r14
movq %r14, %rdx
movq 0x28(%rsp), %rcx
movq %r14, %r8
movq %rbp, %r9
callq 0x1c488
movq 0x58(%rsp), %r12
leaq (%r15,%r12,8), %rdi
movq 0x20(%rsp), %rsi
movq %r14, %rdx
movq 0x18(%rsp), %rcx
movq %r14, %r8
movq %rbp, %r9
callq 0x1c488
jmp 0x1f5a1
imulq $0x50, %r13, %rax
movq 0x38(%rsp), %rcx
leaq (%rcx,%rax), %rbp
addq $0x20, %rbp
movq %r15, %rdi
movq 0x30(%rsp), %r14
movq %r14, %rdx
movq 0x28(%rsp), %rcx
movq %r14, %r8
movq %rbp, %r9
callq 0x1d2dc
movq 0x98(%rsp), %rdi
movq 0x20(%rsp), %rsi
movq %r14, %rdx
movq 0x18(%rsp), %rcx
movq %r14, %r8
movq %rbp, %r9
callq 0x1d2dc
movq 0x40(%rsp), %r14
movq 0x48(%rsp), %rbp
jmp 0x1f5ef
movq 0x30(%rsp), %rbp
movq %rbp, %rdx
movq 0x28(%rsp), %rcx
movq %rbp, %r8
movq %r12, %r9
callq 0x1e7c4
movq 0x98(%rsp), %rdi
movq 0x20(%rsp), %rsi
movq %rbp, %rdx
movq 0x18(%rsp), %rcx
movq %rbp, %r8
movq %r12, %r9
callq 0x1e7c4
movq 0x48(%rsp), %rbp
movq 0x58(%rsp), %r12
leaq (%r15,%r12,8), %rdi
movl 0xa8(%rsp), %r9d
addl %r9d, %r9d
movq 0x80(%rsp), %rax
addl %eax, %eax
movl %eax, (%rsp)
movq 0x78(%rsp), %rsi
movq %r15, %rdx
movl %ebx, %ecx
movq %r13, %r8
callq 0x21dbc
movq %r15, (%rsp)
movq 0x20(%rsp), %rdi
movq 0xb8(%rsp), %r12
movq %r12, %rsi
movl %ebp, %edx
movq 0x68(%rsp), %rcx
movq %r13, %r8
movq %r14, %r9
callq 0x22924
movl %eax, %ebp
movq %r15, (%rsp)
movq 0x18(%rsp), %rdi
movq 0x28(%rsp), %rsi
movq 0x70(%rsp), %rbx
movl %ebx, %edx
movq 0x50(%rsp), %rcx
movq %r13, %r8
movq 0x60(%rsp), %r9
callq 0x22924
xorl %ebp, %eax
movl %eax, 0x58(%rsp)
cmpq $0x4f, %r13
movq %r12, %rsi
jbe 0x1f706
cmpq $0xf0, %r13
movq 0x38(%rsp), %rbp
movq %rbx, 0x70(%rsp)
jbe 0x1f755
imulq $0x50, %r13, %rax
addq %rbp, %rax
addq $0x20, %rax
cmpq $0x157, %r13            # imm = 0x157
movq 0x90(%rsp), %r15
movq 0x28(%rsp), %rcx
movq 0x60(%rsp), %r12
movq %rax, 0xa8(%rsp)
movq %r15, %rdi
movq %rsi, %rbx
jbe 0x1f859
movq 0x30(%rsp), %r14
movq %r14, %rdx
movq %r14, %r8
movq %rax, %r9
callq 0x1ed30
movq %rbx, %rdi
movq 0x20(%rsp), %rsi
movq %r14, %rdx
movq 0x18(%rsp), %rcx
movq %r14, %r8
movq 0xa8(%rsp), %r9
callq 0x1ed30
jmp 0x1f7b1
imulq $0x50, %r13, %rax
movq 0x38(%rsp), %r12
leaq (%r12,%rax), %rbp
addq $0x20, %rbp
movq %r15, %rdi
movq %rsi, %rbx
movq 0x30(%rsp), %r14
movq %r14, %rdx
movq 0x28(%rsp), %rcx
movq %r14, %r8
movq %rbp, %r9
callq 0x1c488
movq %rbx, %rdi
movq 0x20(%rsp), %rsi
movq %r14, %rdx
movq 0x18(%rsp), %rcx
movq %r14, %r8
movq %rbp, %r9
movq %r12, %rbp
callq 0x1c488
jmp 0x1f7ac
imulq $0x50, %r13, %rax
movq 0x38(%rsp), %rcx
leaq (%rcx,%rax), %rbp
addq $0x20, %rbp
movq 0x90(%rsp), %r15
movq %r15, %rdi
movq %rsi, %rbx
movq 0x30(%rsp), %r14
movq %r14, %rdx
movq 0x28(%rsp), %rcx
movq %r14, %r8
movq %rbp, %r9
callq 0x1d2dc
movq %rbx, %rdi
movq 0x20(%rsp), %rsi
movq %r14, %rdx
movq 0x18(%rsp), %rcx
movq %r14, %r8
movq %rbp, %r9
movq 0x38(%rsp), %rbp
callq 0x1d2dc
movq 0x60(%rsp), %r12
movl $0x2, (%rsp)
pushq $0x1
popq %r9
movq %rbx, %rdi
movq 0x78(%rsp), %rsi
movq %r15, %rdx
movl 0x58(%rsp), %ecx
movq %r13, %r8
callq 0x21dbc
cmpq $0x50, %r13
movq 0x80(%rsp), %r14
jbe 0x1f81e
cmpq $0xf1, %r13
movq 0x40(%rsp), %rbx
movq 0x18(%rsp), %r9
movq %r15, %rdi
jbe 0x1f842
cmpq $0x158, %r13            # imm = 0x158
jbe 0x1f891
movq 0x68(%rsp), %rsi
movq %r13, %rdx
movq 0x50(%rsp), %rcx
movq %r13, %r8
callq 0x1ed30
jmp 0x1f8a6
movq %r15, %rdi
movq 0x68(%rsp), %rsi
movq %r13, %rdx
movq 0x50(%rsp), %rcx
movq %r13, %r8
movq 0x18(%rsp), %r9
callq 0x1c488
movq 0x40(%rsp), %rbx
jmp 0x1f8a6
movq 0x68(%rsp), %rsi
movq %r13, %rdx
movq 0x50(%rsp), %rcx
movq %r13, %r8
callq 0x1d2dc
jmp 0x1f8a6
movq 0x30(%rsp), %r14
movq %r14, %rdx
movq %r14, %r8
movq %rax, %r9
callq 0x1e7c4
movq %rbx, %rdi
movq 0x20(%rsp), %rsi
movq %r14, %rdx
movq 0x18(%rsp), %rcx
movq %r14, %r8
movq 0xa8(%rsp), %r9
callq 0x1e7c4
jmp 0x1f7b1
movq 0x68(%rsp), %rsi
movq %r13, %rdx
movq 0x50(%rsp), %rcx
movq %r13, %r8
callq 0x1e7c4
cmpb $0x0, 0xa0(%rsp)
je 0x1f934
addq %rbx, %r12
movq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movl %r14d, (%rsp)
movq %r15, %rdi
movq 0x88(%rsp), %rsi
movq 0xc0(%rsp), %rdx
movq %rbp, %rcx
movq %r13, %r8
movq %r12, %r9
callq 0x23cd8
addq $0xc8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
imulq $0x5a, %r10, %rdx
imulq $0x77, %r8, %rsi
pushq $0x7
popq %rcx
cmpq %rsi, %rdx
jge 0x1f971
pushq $0x6
popq %rsi
jmp 0x1f995
movq 0x18(%rsp), %rdi
movq 0x28(%rsp), %rsi
movq 0x50(%rsp), %rdx
movq %r13, %rcx
movq 0x60(%rsp), %r8
movq %r15, %r9
callq 0x22648
jmp 0x1f047
imulq $0x58, %r13, %rdi
addq %r15, %rdi
cmpq %r12, %rbx
jle 0x1fa0e
movl 0x48(%rsp), %eax
imulq %r13, %rax
movq 0x68(%rsp), %rcx
leaq (%rcx,%rax,8), %rsi
movl 0x70(%rsp), %eax
imulq %r13, %rax
movq 0x50(%rsp), %rcx
leaq (%rcx,%rax,8), %rcx
movq %rbx, %rdx
movq %r12, %r8
jmp 0x1fa36
pushq $0x5
popq %rsi
imulq $0x55, %r10, %rdx
imulq $0x7e, %r8, %rdi
cmpq %rdi, %rdx
jl 0x1f995
imulq $0x12, %r10, %rcx
imulq $0x22, %r8, %rdx
cmpq %rdx, %rcx
jge 0x1fa66
pushq $0x8
popq %rcx
movl %esi, %edi
xorl %ecx, %edi
movl %esi, %edx
movq %rdx, %rax
imulq %r10, %rax
movl %ecx, %r11d
movq %r11, %r9
imulq %r8, %r9
cmpq %r9, %rax
movq %r10, %rax
cmovlq %r8, %rax
cmovlq %rdx, %r11
decq %rax
xorl %edx, %edx
divq %r11
movq %rax, %r13
incq %r13
leal -0x1(%rcx), %edx
leal -0x1(%rsi), %r9d
movq %rdx, %rax
imulq %r13, %rax
subq %rax, %r10
movq %r9, %rax
imulq %r13, %rax
subq %rax, %r8
testb $0x1, %dil
movq %r8, 0x60(%rsp)
movq %r9, 0x70(%rsp)
jne 0x1fa40
movb $0x1, %al
movq %rax, 0xa0(%rsp)
movq $0x0, 0x80(%rsp)
jmp 0x1edb3
movl 0x70(%rsp), %eax
imulq %r13, %rax
movq 0x50(%rsp), %rcx
leaq (%rcx,%rax,8), %rsi
movl 0x48(%rsp), %eax
imulq %r13, %rax
movq 0x68(%rsp), %rcx
leaq (%rcx,%rax,8), %rcx
movq %r12, %rdx
movq %rbx, %r8
callq 0x18a58
jmp 0x1f8b4
testq %r10, %r10
jle 0x1fa7c
testq %r8, %r8
jle 0x1fa9f
movq $0x0, 0xa0(%rsp)
movl %r12d, %eax
movq %rax, 0x80(%rsp)
jmp 0x1edb3
imulq $0x24, %r8, %rdx
xorl %ecx, %ecx
cmpq %rdx, %rax
setl %cl
xorl $0x9, %ecx
pushq $0x4
jmp 0x1f90a
movb $0x1, %al
movq %rax, 0xa0(%rsp)
movq $0x0, 0x80(%rsp)
addl $-0x2, %ecx
addq %r13, %r10
movl %ecx, %edx
jmp 0x1edb3
movq %r8, %rcx
movb $0x1, %al
movq %rax, 0xa0(%rsp)
movq $0x0, 0x80(%rsp)
addl $-0x2, %esi
addq %r13, %rcx
movq %rcx, 0x60(%rsp)
movq %rsi, 0x70(%rsp)
jmp 0x1edb3
nopl (%rax)