// File: /workspace/github_cpp_makefile_star2_O1/marxn[P]pupp/3rdparty/gmp/mpn/toom8h_mul.c
// Function: _gmpn_toom8h_mul
void
mpn_toom8h_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 small operands */
  ASSERT (bn >= 86);
  /* Can not handle too much unbalancement */
  ASSERT (an <= bn*4);
  ASSERT (GMP_NUMB_BITS > 11*3 || an*4 <= bn*11);
  ASSERT (GMP_NUMB_BITS > 10*3 || an*1 <= bn* 2);
  ASSERT (GMP_NUMB_BITS >  9*3 || an*2 <= bn* 3);

  /* Limit num/den is a rational number between
     (16/15)^(log(6)/log(2*6-1)) and (16/15)^(log(8)/log(2*8-1))             */
#define LIMIT_numerator (21)
#define LIMIT_denominat (20)

  if (LIKELY (an == bn) || an * (LIMIT_denominat>>1) < LIMIT_numerator * (bn>>1) ) /* is 8*... < 8*... */
    {
      half = 0;
      n = 1 + ((an - 1)>>3);
      p = q = 7;
      s = an - 7 * n;
      t = bn - 7 * n;
    }
  else
    {
      if (an * 13 < 16 * bn) /* (an*7*LIMIT_numerator<LIMIT_denominat*9*bn) */
	{ p = 9; q = 8; }
      else if (GMP_NUMB_BITS <= 9*3 ||
	       an *(LIMIT_denominat>>1) < (LIMIT_numerator/7*9) * (bn>>1))
	{ p = 9; q = 7; }
      else if (an * 10 < 33 * (bn>>1)) /* (an*3*LIMIT_numerator<LIMIT_denominat*5*bn) */
	{ p =10; q = 7; }
      else if (GMP_NUMB_BITS <= 10*3 ||
	       an * (LIMIT_denominat/5) < (LIMIT_numerator/3) * bn)
	{ p =10; q = 6; }
      else if (an * 6 < 13 * bn) /*(an * 5 * LIMIT_numerator < LIMIT_denominat *11 * bn)*/
	{ p =11; q = 6; }
      else if (GMP_NUMB_BITS <= 11*3 ||
	       an * 4 < 9 * bn)
	{ p =11; q = 5; }
      else if (an *(LIMIT_numerator/3) < LIMIT_denominat * bn)  /* is 4*... <12*... */
	{ p =12; q = 5; }
      else if (GMP_NUMB_BITS <= 12*3 ||
	       an * 9 < 28 * bn )  /* is 4*... <12*... */
	{ p =12; q = 4; }
      else
	{ p =13; 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;

      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   r6    (pp + 3 * n)			/* 3n+1 */
#define   r4    (pp + 7 * n)			/* 3n+1 */
#define   r2    (pp +11 * n)			/* 3n+1 */
#define   r0    (pp +15 * n)			/* s+t <= 2*n */
#define   r7    (scratch)			/* 3n+1 */
#define   r5    (scratch + 3 * n + 1)		/* 3n+1 */
#define   r3    (scratch + 6 * n + 2)		/* 3n+1 */
#define   r1    (scratch + 9 * n + 3)		/* 3n+1 */
#define   v0    (pp +11 * n)			/* n+1 */
#define   v1    (pp +12 * n+1)			/* n+1 */
#define   v2    (pp +13 * n+2)			/* n+1 */
#define   v3    (scratch +12 * n + 4)		/* n+1 */
#define   wsi   (scratch +12 * n + 4)		/* 3n+1 */
#define   wse   (scratch +13 * n + 5)		/* 2n+1 */

  /* Alloc also 3n+1 limbs for wsi... toom_interpolate_16pts may
     need all of them  */
/*   if (scratch == NULL) */
/*     scratch = TMP_SALLOC_LIMBS(mpn_toom8_sqr_itch(n * 8)); */
  ASSERT (15 * n + 6 <= mpn_toom8h_mul_itch (an, bn));
  ASSERT (15 * n + 6 <= mpn_toom8_sqr_itch (n * 8));

  /********************** evaluation and recursive calls *********************/

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

  /* $\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^. */
  TOOM8H_MUL_N_REC(pp, v0, v1, 2, r5, v2, v3, n + 1, wse);
  mpn_toom_couple_handling (r5, 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) */
  TOOM8H_MUL_N_REC(pp, v0, v1, 2, r3, v2, v3, n + 1, wse);
  mpn_toom_couple_handling (r3, 2 * n + 1, pp, sign, n, 1, 2);

  /* $\pm8$ */
  sign = mpn_toom_eval_pm2exp (v2, v0, p, ap, n, s, 3, pp) ^
	 mpn_toom_eval_pm2exp (v3, v1, q, bp, n, t, 3, pp);
  /* A(-8)*B(-8) */ /* A(+8)*B(+8) */
  TOOM8H_MUL_N_REC(pp, v0, v1, 2, r1, v2, v3, n + 1, wse);
  mpn_toom_couple_handling (r1, 2 * n + 1 + BIT_CORRECTION, pp, sign, n, 3, 6);

  /* $\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^. */
  TOOM8H_MUL_N_REC(pp, v0, v1, 2, r6, v2, v3, n + 1, wse);
  mpn_toom_couple_handling (r6, 2 * n + 1, pp, sign, n, 1+half, half);

  /* $\pm1$ */
  sign = mpn_toom_eval_pm1 (v2, v0, p, ap, n, s,    pp);
  if (GMP_NUMB_BITS > 12*3 && 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) */
  TOOM8H_MUL_N_REC(pp, v0, v1, 2, r4, v2, v3, n + 1, wse);
  mpn_toom_couple_handling (r4, 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) */ /* A(+4)*B(+4) */
  TOOM8H_MUL_N_REC(pp, v0, v1, 2, r2, v2, v3, n + 1, wse);
  mpn_toom_couple_handling (r2, 2 * n + 1, pp, sign, n, 2, 4);

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

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

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

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

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

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xc8, %rsp
movq %r9, 0x20(%rsp)
movq %rcx, 0x60(%rsp)
movq %rdx, %r10
movq %rsi, 0x68(%rsp)
movq %rdi, %r15
cmpq %r8, %rdx
movq %rdi, 0x40(%rsp)
jne 0x25c4a
leaq -0x1(%r10), %r13
sarq $0x3, %r13
leaq 0x8(,%r13,8), %rax
incq %r13
subq %r13, %rax
subq %rax, %r10
subq %rax, %r8
movq %r8, 0x78(%rsp)
movq $0x0, 0x58(%rsp)
movb $0x1, %al
movq %rax, 0xb8(%rsp)
movl $0x7, %edx
movl $0x7, %eax
movq %rax, 0x80(%rsp)
leaq (,%r13,2), %rax
addq %r13, %rax
movq %rax, 0x48(%rsp)
leaq (,%rax,4), %rbp
addq %r13, %rbp
leaq (%r15,%rbp,8), %rbx
addq $0x10, %rbx
imulq $0x58, %r13, %r14
addq %r15, %r14
movl $0x3, %eax
movq %rbx, %rdi
movq %r14, %rsi
movq %rdx, 0x30(%rsp)
movq 0x68(%rsp), %rcx
movq %r13, %r8
movq %r10, 0x70(%rsp)
movq %r10, %r9
pushq %r15
pushq %rax
callq 0x281b8
addq $0x10, %rsp
movl %eax, 0x28(%rsp)
movq %r13, %rax
shlq $0x5, %rax
leaq (%rax,%rax,2), %rax
movq %r15, %r10
movq 0x20(%rsp), %rcx
leaq (%rcx,%rax), %r12
addq $0x20, %r12
leaq 0x8(%r15,%rax), %r15
movq %r12, %rdi
movq %r15, %rsi
movq 0x80(%rsp), %rdx
movq 0x60(%rsp), %rcx
movq %r13, %r8
movq 0x78(%rsp), %r9
pushq %r10
movl $0x3, %eax
pushq %rax
callq 0x281b8
addq $0x10, %rsp
xorl 0x28(%rsp), %eax
movl %eax, 0x90(%rsp)
movq %rbp, %rax
leaq 0x1(%r13), %rbp
cmpq $0x4f, %r13
movq %r12, (%rsp)
movq %r14, 0x38(%rsp)
movq %rbx, 0x8(%rsp)
movq %rbp, 0x18(%rsp)
movq %r15, 0x10(%rsp)
movq %rax, 0x28(%rsp)
jle 0x24a3f
cmpq $0xf0, %r13
jle 0x24a8b
cmpq $0x157, %r13            # imm = 0x157
movq 0x40(%rsp), %r14
movq 0x38(%rsp), %r15
movq 0x28(%rsp), %rax
jle 0x24ad9
movq 0x20(%rsp), %rcx
movq %rcx, %r12
leaq (%rcx,%rax,8), %rbx
addq $0x28, %rbx
movq %r14, %rdi
movq %r15, %rsi
cmpq $0x1e0, %r13            # imm = 0x1E0
jle 0x24b1e
movq 0x18(%rsp), %rbp
movq %rbp, %rdx
movq 0x10(%rsp), %rcx
movq %rbp, %r8
movq %rbx, %r9
callq 0x24860
movq %r12, %rdi
movq 0x8(%rsp), %rsi
movq %rbp, %rdx
movq %r12, %r15
movq (%rsp), %rcx
movq %rbp, %r8
movq %rbx, %r9
callq 0x24860
jmp 0x24b53
movq 0x20(%rsp), %r15
leaq (%r15,%rax,8), %rbx
addq $0x28, %rbx
movq 0x40(%rsp), %r14
movq %r14, %rdi
movq 0x38(%rsp), %rsi
movq %rbp, %rdx
movq 0x10(%rsp), %rcx
movq %rbp, %r8
movq %rbx, %r9
callq 0x20908
movq %r15, %rdi
movq 0x8(%rsp), %rsi
movq %rbp, %rdx
movq (%rsp), %rcx
movq %rbp, %r8
movq %rbx, %r9
callq 0x20908
jmp 0x24b53
movq 0x20(%rsp), %r15
movq 0x28(%rsp), %rax
leaq (%r15,%rax,8), %rbx
addq $0x28, %rbx
movq 0x40(%rsp), %r14
movq %r14, %rdi
movq 0x38(%rsp), %rsi
movq %rbp, %rdx
movq 0x10(%rsp), %rcx
movq %rbp, %r8
movq %rbx, %r9
callq 0x2169c
movq %r15, %rdi
movq 0x8(%rsp), %rsi
movq %rbp, %rdx
movq (%rsp), %rcx
movq %rbp, %r8
movq %rbx, %r9
callq 0x2169c
jmp 0x24b53
movq 0x20(%rsp), %r12
leaq (%r12,%rax,8), %rbx
addq $0x28, %rbx
movq %r14, %rdi
movq %r15, %rsi
movq %rbp, %rdx
movq 0x10(%rsp), %rcx
movq %rbp, %r8
movq %rbx, %r9
callq 0x2347c
movq %r12, %rdi
movq 0x8(%rsp), %rsi
movq %rbp, %rdx
movq %r12, %r15
movq (%rsp), %rcx
movq %rbp, %r8
movq %rbx, %r9
callq 0x2347c
jmp 0x24b53
movq 0x18(%rsp), %rbp
movq %rbp, %rdx
movq 0x10(%rsp), %rcx
movq %rbp, %r8
movq %rbx, %r9
callq 0x239ac
movq %r12, %rdi
movq 0x8(%rsp), %rsi
movq %rbp, %rdx
movq %r12, %r15
movq (%rsp), %rcx
movq %rbp, %r8
movq %rbx, %r9
callq 0x239ac
leaq 0x1(,%r13,2), %r12
movq 0x58(%rsp), %rax
leal 0x1(%rax), %ecx
movq %rcx, 0x98(%rsp)
leal (%rax,%rax,2), %r9d
addl $0x3, %r9d
leal (%rax,%rax,2), %eax
subq $0x8, %rsp
movq %r15, %rdi
movq %r12, %rsi
movq %r14, %rdx
movl 0x98(%rsp), %ecx
movq %r13, %r8
pushq %rax
callq 0x26da4
addq $0x10, %rsp
movl $0x2, %ebp
movq 0x8(%rsp), %rdi
movq 0x38(%rsp), %rsi
movq 0x30(%rsp), %rdx
movq 0x68(%rsp), %rcx
movq %r13, %r8
movq 0x70(%rsp), %r9
pushq %r14
pushq %rbp
callq 0x281b8
addq $0x10, %rsp
movl %eax, %ebx
movq (%rsp), %rdi
movq 0x10(%rsp), %rsi
movq 0x80(%rsp), %rdx
movq 0x60(%rsp), %rcx
movq %r13, %r8
movq 0x78(%rsp), %r9
pushq %r14
pushq %rbp
callq 0x281b8
addq $0x10, %rsp
xorl %ebx, %eax
movl %eax, 0x88(%rsp)
cmpq $0x4f, %r13
jle 0x24ca7
cmpq $0xf0, %r13
movq 0x28(%rsp), %rax
jle 0x24d00
movq 0x20(%rsp), %rdx
movq 0x48(%rsp), %rbp
movq %rdx, %rbx
leaq (%rdx,%rbp,8), %rdx
addq $0x8, %rdx
cmpq $0x157, %r13            # imm = 0x157
movq 0x40(%rsp), %r14
movq 0x38(%rsp), %r15
movq %rdx, 0x90(%rsp)
jle 0x24d5e
leaq (%rbx,%rax,8), %rax
addq $0x28, %rax
cmpq $0x1e0, %r13            # imm = 0x1E0
movq %rax, 0x50(%rsp)
movq %r14, %rdi
movq %r15, %rsi
jle 0x24db1
movq 0x18(%rsp), %rbx
movq %rbx, %rdx
movq 0x10(%rsp), %rcx
movq %rbx, %r8
movq %rax, %r9
callq 0x24860
movq 0x90(%rsp), %rdi
movq 0x8(%rsp), %rsi
movq %rbx, %rdx
movq (%rsp), %rcx
movq %rbx, %r8
movq 0x50(%rsp), %r9
callq 0x24860
jmp 0x24dea
movq 0x28(%rsp), %rax
leaq (%r15,%rax,8), %rbx
addq $0x28, %rbx
movq %r14, %rdi
movq 0x38(%rsp), %rsi
movq 0x18(%rsp), %rbp
movq %rbp, %rdx
movq 0x10(%rsp), %rcx
movq %rbp, %r8
movq %rbx, %r9
callq 0x20908
movq 0x48(%rsp), %rax
leaq (%r15,%rax,8), %rdi
addq $0x8, %rdi
movq 0x8(%rsp), %rsi
movq %rbp, %rdx
movq (%rsp), %rcx
movq %rbp, %r8
movq %rax, %rbp
movq %rbx, %r9
callq 0x20908
jmp 0x24def
movq 0x20(%rsp), %r15
leaq (%r15,%rax,8), %rbx
addq $0x28, %rbx
movq 0x40(%rsp), %r14
movq %r14, %rdi
movq 0x38(%rsp), %rsi
movq 0x18(%rsp), %rbp
movq %rbp, %rdx
movq 0x10(%rsp), %rcx
movq %rbp, %r8
movq %rbx, %r9
callq 0x2169c
movq 0x48(%rsp), %rax
leaq (%r15,%rax,8), %rdi
addq $0x8, %rdi
movq 0x8(%rsp), %rsi
movq %rbp, %rdx
movq (%rsp), %rcx
movq %rbp, %r8
movq %rax, %rbp
movq %rbx, %r9
callq 0x2169c
jmp 0x24def
leaq (%rbx,%rax,8), %r9
addq $0x28, %r9
movq %r9, 0x50(%rsp)
movq %r14, %rdi
movq %r15, %rsi
movq 0x18(%rsp), %rbp
movq %rbp, %rdx
movq 0x10(%rsp), %rcx
movq %rbp, %r8
callq 0x2347c
movq 0x90(%rsp), %rdi
movq 0x8(%rsp), %rsi
movq %rbp, %rdx
movq %rbx, %r15
movq (%rsp), %rcx
movq %rbp, %r8
movq 0x48(%rsp), %rbp
movq 0x50(%rsp), %r9
callq 0x2347c
jmp 0x24def
movq 0x18(%rsp), %rbx
movq %rbx, %rdx
movq 0x10(%rsp), %rcx
movq %rbx, %r8
movq %rax, %r9
callq 0x239ac
movq 0x90(%rsp), %rdi
movq 0x8(%rsp), %rsi
movq %rbx, %rdx
movq (%rsp), %rcx
movq %rbx, %r8
movq 0x50(%rsp), %r9
callq 0x239ac
movq 0x20(%rsp), %r15
movq 0x58(%rsp), %rax
movq 0x30(%rsp), %rbx
leaq (%r15,%rbp,8), %rdi
addq $0x8, %rdi
movq 0x98(%rsp), %rcx
leal (%rcx,%rcx), %r9d
addl %eax, %eax
subq $0x8, %rsp
movq %rdi, 0x98(%rsp)
movq %r12, 0xb8(%rsp)
movq %r12, %rsi
movq %r14, %rdx
movl 0x90(%rsp), %ecx
movq %r13, %r8
pushq %rax
callq 0x26da4
addq $0x8, %rsp
movq 0x10(%rsp), %rdi
movq 0x40(%rsp), %rsi
movl %ebx, %edx
movq 0x70(%rsp), %rcx
movq %r13, %r8
movq 0x78(%rsp), %r9
pushq %r14
callq 0x27d20
addq $0x10, %rsp
movl %eax, %ebx
subq $0x8, %rsp
movq 0x8(%rsp), %rdi
movq 0x18(%rsp), %rsi
movq 0x88(%rsp), %rdx
movq 0x68(%rsp), %rcx
movq %r13, %r8
movq 0x80(%rsp), %r9
pushq %r14
callq 0x27d20
addq $0x10, %rsp
movl %eax, %r12d
xorl %ebx, %r12d
cmpq $0x4f, %r13
jle 0x24f49
cmpq $0xf0, %r13
jle 0x24fa8
movq %rbp, %rax
shlq $0x4, %rax
movq 0x20(%rsp), %rdx
movq %rdx, %rbx
addq %rax, %rdx
addq $0x10, %rdx
cmpq $0x157, %r13            # imm = 0x157
movq 0x40(%rsp), %r14
movq 0x38(%rsp), %r15
movq %rdx, 0x88(%rsp)
jle 0x25011
movq 0x28(%rsp), %rax
leaq (%rbx,%rax,8), %rax
addq $0x28, %rax
cmpq $0x1e0, %r13            # imm = 0x1E0
movq %rax, 0x50(%rsp)
movq %r14, %rdi
movq %r15, %rsi
jle 0x25069
movq 0x18(%rsp), %rbx
movq %rbx, %rdx
movq 0x10(%rsp), %rcx
movq %rbx, %r8
movq %rax, %r9
callq 0x24860
movq 0x88(%rsp), %rdi
movq 0x8(%rsp), %rsi
movq %rbx, %rdx
movq (%rsp), %rcx
movq %rbx, %r8
movq 0x50(%rsp), %r9
callq 0x24860
jmp 0x250a2
movq 0x28(%rsp), %rax
leaq (%r15,%rax,8), %rbx
addq $0x28, %rbx
movq %r14, %rdi
movq 0x38(%rsp), %rsi
movq 0x18(%rsp), %rbp
movq %rbp, %rdx
movq 0x10(%rsp), %rcx
movq %rbp, %r8
movq %rbx, %r9
callq 0x20908
movq 0x48(%rsp), %rax
shlq $0x4, %rax
leaq (%r15,%rax), %rdi
addq $0x10, %rdi
movq 0x8(%rsp), %rsi
movq %rbp, %rdx
movq (%rsp), %rcx
movq %rbp, %r8
movq 0x48(%rsp), %rbp
movq %rbx, %r9
callq 0x20908
jmp 0x250a7
movq 0x20(%rsp), %r15
movq 0x28(%rsp), %rax
leaq (%r15,%rax,8), %rbx
addq $0x28, %rbx
movq 0x40(%rsp), %r14
movq %r14, %rdi
movq 0x38(%rsp), %rsi
movq 0x18(%rsp), %rbp
movq %rbp, %rdx
movq 0x10(%rsp), %rcx
movq %rbp, %r8
movq %rbx, %r9
callq 0x2169c
movq 0x48(%rsp), %rax
shlq $0x4, %rax
leaq (%r15,%rax), %rdi
addq $0x10, %rdi
movq 0x8(%rsp), %rsi
movq %rbp, %rdx
movq (%rsp), %rcx
movq %rbp, %r8
movq 0x48(%rsp), %rbp
movq %rbx, %r9
callq 0x2169c
jmp 0x250a7
movq 0x28(%rsp), %rax
leaq (%rbx,%rax,8), %r9
addq $0x28, %r9
movq %r9, 0x50(%rsp)
movq %r14, %rdi
movq %r15, %rsi
movq 0x18(%rsp), %rbp
movq %rbp, %rdx
movq 0x10(%rsp), %rcx
movq %rbp, %r8
callq 0x2347c
movq 0x88(%rsp), %rdi
movq 0x8(%rsp), %rsi
movq %rbp, %rdx
movq %rbx, %r15
movq (%rsp), %rcx
movq %rbp, %r8
movq 0x48(%rsp), %rbp
movq 0x50(%rsp), %r9
callq 0x2347c
jmp 0x250a7
movq 0x18(%rsp), %rbx
movq %rbx, %rdx
movq 0x10(%rsp), %rcx
movq %rbx, %r8
movq %rax, %r9
callq 0x239ac
movq 0x88(%rsp), %rdi
movq 0x8(%rsp), %rsi
movq %rbx, %rdx
movq (%rsp), %rcx
movq %rbx, %r8
movq 0x50(%rsp), %r9
callq 0x239ac
movq 0x20(%rsp), %r15
movq 0x30(%rsp), %rbx
movq %rbp, %rax
shlq $0x4, %rax
leaq (%r15,%rax), %rdi
addq $0x10, %rdi
subq $0x8, %rsp
movq %rdi, 0x90(%rsp)
movq 0xb8(%rsp), %rsi
movq %r14, %rdx
movl %r12d, %ecx
movq %r13, %r8
movl $0x1, %r9d
pushq $0x2
callq 0x26da4
addq $0x10, %rsp
movl $0x3, %ebp
movq 0x8(%rsp), %rdi
movq 0x38(%rsp), %rsi
movl %ebx, %edx
movq 0x68(%rsp), %rcx
movq %r13, %r8
movq 0x70(%rsp), %r9
pushq %r14
pushq %rbp
callq 0x27fb4
addq $0x10, %rsp
movl %eax, %ebx
movq (%rsp), %rdi
movq 0x10(%rsp), %rsi
movq 0x80(%rsp), %rdx
movq 0x60(%rsp), %rcx
movq %r13, %r8
movq 0x78(%rsp), %r9
pushq %r14
pushq %rbp
callq 0x27fb4
addq $0x10, %rsp
xorl %ebx, %eax
movl %eax, 0xa4(%rsp)
cmpq $0x4f, %r13
jle 0x251f7
cmpq $0xf0, %r13
movq 0xb0(%rsp), %r12
jle 0x2525d
leaq (,%r13,8), %rax
addq %r13, %rax
movq 0x20(%rsp), %rdx
movq %rdx, %rbx
leaq (%rdx,%rax,8), %rbp
addq $0x18, %rbp
cmpq $0x157, %r13            # imm = 0x157
movq 0x40(%rsp), %r14
movq 0x38(%rsp), %r15
jle 0x252c0
movq 0x28(%rsp), %rax
leaq (%rbx,%rax,8), %rax
addq $0x28, %rax
cmpq $0x1e0, %r13            # imm = 0x1E0
movq %rax, 0x50(%rsp)
movq %r14, %rdi
movq %r15, %rsi
jle 0x2531b
movq 0x18(%rsp), %rbx
movq %rbx, %rdx
movq 0x10(%rsp), %rcx
movq %rbx, %r8
movq %rax, %r9
callq 0x24860
movq %rbp, %rdi
movq 0x8(%rsp), %rsi
movq %rbx, %rdx
movq (%rsp), %rcx
movq %rbx, %r8
movq 0x50(%rsp), %r9
callq 0x24860
jmp 0x2534f
movq 0x28(%rsp), %rax
leaq (%r15,%rax,8), %rbx
addq $0x28, %rbx
movq %r14, %rdi
movq 0x38(%rsp), %rsi
movq 0x18(%rsp), %rbp
movq %rbp, %rdx
movq 0x10(%rsp), %rcx
movq %rbp, %r8
movq %rbx, %r9
callq 0x20908
leaq (,%r13,8), %rax
addq %r13, %rax
leaq 0x18(%r15,%rax,8), %rdi
movq 0x8(%rsp), %rsi
movq %rbp, %rdx
movq (%rsp), %rcx
movq %rbp, %r8
movq %rbx, %r9
callq 0x20908
movq 0x30(%rsp), %rbx
movq 0xb0(%rsp), %r12
jmp 0x25359
movq 0x20(%rsp), %r15
movq 0x28(%rsp), %rax
leaq (%r15,%rax,8), %rbx
addq $0x28, %rbx
movq 0x40(%rsp), %r14
movq %r14, %rdi
movq 0x38(%rsp), %rsi
movq 0x18(%rsp), %rbp
movq %rbp, %rdx
movq 0x10(%rsp), %rcx
movq %rbp, %r8
movq %rbx, %r9
callq 0x2169c
leaq (,%r13,8), %rax
addq %r13, %rax
leaq 0x18(%r15,%rax,8), %rdi
movq 0x8(%rsp), %rsi
movq %rbp, %rdx
movq (%rsp), %rcx
movq %rbp, %r8
movq %rbx, %r9
callq 0x2169c
jmp 0x25354
movq 0x28(%rsp), %rax
leaq (%rbx,%rax,8), %r9
addq $0x28, %r9
movq %r9, 0x50(%rsp)
movq %r14, %rdi
movq %r15, %rsi
movq %rbp, 0xa8(%rsp)
movq 0x18(%rsp), %rbp
movq %rbp, %rdx
movq 0x10(%rsp), %rcx
movq %rbp, %r8
callq 0x2347c
movq 0xa8(%rsp), %rdi
movq 0x8(%rsp), %rsi
movq %rbp, %rdx
movq %rbx, %r15
movq (%rsp), %rcx
movq %rbp, %r8
movq 0x50(%rsp), %r9
callq 0x2347c
jmp 0x25354
movq 0x18(%rsp), %rbx
movq %rbx, %rdx
movq 0x10(%rsp), %rcx
movq %rbx, %r8
movq %rax, %r9
callq 0x239ac
movq %rbp, %rdi
movq 0x8(%rsp), %rsi
movq %rbx, %rdx
movq (%rsp), %rcx
movq %rbx, %r8
movq 0x50(%rsp), %r9
callq 0x239ac
movq 0x20(%rsp), %r15
movq 0x30(%rsp), %rbx
leaq (,%r13,8), %rax
addq %r13, %rax
leaq (%r15,%rax,8), %rdi
addq $0x18, %rdi
subq $0x8, %rsp
movq %rdi, 0x58(%rsp)
movq %r12, %rsi
movq %r14, %rdx
movl 0xac(%rsp), %ecx
movq %r13, %r8
movl $0x3, %r9d
pushq $0x6
callq 0x26da4
addq $0x10, %rsp
movl $0x1, %ebp
movq 0x8(%rsp), %rdi
movq 0x38(%rsp), %rsi
movl %ebx, %edx
movq 0x68(%rsp), %rcx
movq %r13, %r8
movq 0x70(%rsp), %r9
pushq %r14
pushq %rbp
callq 0x281b8
addq $0x10, %rsp
movl %eax, %ebx
movq (%rsp), %rdi
movq 0x10(%rsp), %rsi
movq 0x80(%rsp), %rdx
movq 0x60(%rsp), %rcx
movq %r13, %r8
movq 0x78(%rsp), %r9
pushq %r14
pushq %rbp
callq 0x281b8
addq $0x10, %rsp
xorl %ebx, %eax
movl %eax, 0xa4(%rsp)
cmpq $0x4f, %r13
jle 0x254aa
cmpq $0xf0, %r13
jle 0x25521
movq 0x40(%rsp), %rbp
movq 0x48(%rsp), %rax
leaq (,%rax,8), %rdx
addq %rbp, %rdx
cmpq $0x157, %r13            # imm = 0x157
movq %r13, %r14
movq 0x38(%rsp), %r12
movq 0x8(%rsp), %r15
movq %rdx, 0xc0(%rsp)
jle 0x25596
movq 0x20(%rsp), %rax
movq 0x28(%rsp), %rcx
leaq (%rax,%rcx,8), %r13
addq $0x28, %r13
movq %r14, 0xa8(%rsp)
movq %rbp, %rdi
movq %r12, %rsi
cmpq $0x1e0, %r14            # imm = 0x1E0
jle 0x2583f
movq 0x18(%rsp), %rbx
movq %rbx, %rdx
movq 0x10(%rsp), %rcx
movq %rbx, %r8
movq %r13, %r9
callq 0x24860
movq 0xc0(%rsp), %rdi
movq %r15, %rsi
movq %rbx, %rdx
movq (%rsp), %rcx
movq %rbx, %r8
movq %r13, %r9
callq 0x24860
jmp 0x25874
movq 0x28(%rsp), %rax
leaq (%r15,%rax,8), %rbx
addq $0x28, %rbx
movq %r14, %rdi
movq %r13, 0xa8(%rsp)
movq 0x38(%rsp), %rsi
movq 0x18(%rsp), %r12
movq %r12, %rdx
movq 0x10(%rsp), %rcx
movq %r12, %r8
movq %rbx, %r9
callq 0x20908
movq 0x48(%rsp), %r15
leaq (%r14,%r15,8), %rdi
movq 0x8(%rsp), %r13
movq %r13, %rsi
movq %r12, %rdx
movq (%rsp), %rcx
movq %r12, %r8
movq %rbx, %r9
callq 0x20908
movq 0x70(%rsp), %r12
movq 0x58(%rsp), %rax
movq 0x30(%rsp), %rbx
movq %r14, %rbp
movq 0xa8(%rsp), %r14
jmp 0x255fa
movq 0x20(%rsp), %rax
movq 0x28(%rsp), %rcx
leaq (%rax,%rcx,8), %rbx
addq $0x28, %rbx
movq 0x40(%rsp), %rbp
movq %rbp, %rdi
movq 0x38(%rsp), %rsi
movq 0x18(%rsp), %r14
movq %r14, %rdx
movq 0x10(%rsp), %rcx
movq %r14, %r8
movq %rbx, %r9
callq 0x2169c
movq 0x48(%rsp), %r15
leaq (,%r15,8), %rdi
addq %rbp, %rdi
movq 0x8(%rsp), %rsi
movq %r14, %rdx
movq (%rsp), %rcx
movq %r14, %r8
movq %r13, %r14
movq %rsi, %r13
movq %rbx, %r9
callq 0x2169c
movq 0x70(%rsp), %r12
movq 0x58(%rsp), %rax
movq 0x30(%rsp), %rbx
jmp 0x255fa
movq 0x20(%rsp), %rax
movq 0x28(%rsp), %rcx
leaq (%rax,%rcx,8), %rbx
addq $0x28, %rbx
movq %rbp, %rdi
movq %r12, %rsi
movq %r15, %r13
movq 0x18(%rsp), %r15
movq %r15, %rdx
movq 0x10(%rsp), %rcx
movq %r15, %r8
movq %rbx, %r9
callq 0x2347c
movq 0xc0(%rsp), %rdi
movq %r13, %rsi
movq %r15, %rdx
movq (%rsp), %rcx
movq %r15, %r8
movq 0x70(%rsp), %r12
movq %rbx, %r9
callq 0x2347c
movq 0x58(%rsp), %rax
movq 0x30(%rsp), %rbx
movq 0x48(%rsp), %r15
leaq (,%r15,8), %rdi
addq %rbp, %rdi
subq $0x8, %rsp
movq 0xb8(%rsp), %rsi
movq %rbp, %rdx
movl 0xac(%rsp), %ecx
movq %r14, %r8
movq 0xa0(%rsp), %r9
pushq %rax
callq 0x26da4
addq $0x8, %rsp
movq %r13, %rdi
movq 0x40(%rsp), %r15
movq %r15, %rsi
movl %ebx, %edx
movq 0x70(%rsp), %rcx
movq %r14, %r8
movq %r12, %r9
pushq %rbp
callq 0x27b38
addq $0x10, %rsp
movl %eax, %ebx
movq 0x80(%rsp), %rdx
cmpl $0x3, %edx
movq %r15, %r12
je 0x25d7e
subq $0x8, %rsp
movq 0x8(%rsp), %rdi
movq 0x18(%rsp), %r15
movq %r15, %rsi
movq 0x68(%rsp), %rcx
movq %r14, %r8
movq 0x80(%rsp), %r9
pushq %rbp
callq 0x27b38
addq $0x10, %rsp
movq %r14, %r13
xorl %ebx, %eax
cmpq $0x4f, %r14
movl %eax, 0x48(%rsp)
jle 0x25734
cmpq $0xf0, %r13
jle 0x2578b
imulq $0x38, %r13, %rbx
addq %rbp, %rbx
cmpq $0x157, %r13            # imm = 0x157
jle 0x257e2
movq 0x20(%rsp), %rax
movq 0x28(%rsp), %rcx
leaq (%rax,%rcx,8), %rax
addq $0x28, %rax
cmpq $0x1e0, %r13            # imm = 0x1E0
movq %rax, 0x98(%rsp)
movq %rbp, %rdi
movq %r12, %rsi
movq %rbp, %r14
jle 0x25890
movq 0x18(%rsp), %rbp
movq %rbp, %rdx
movq %r15, %rcx
movq %rbp, %r8
movq %rax, %r9
callq 0x24860
movq %rbx, %rdi
movq 0x8(%rsp), %rsi
movq %rbp, %rdx
movq (%rsp), %r15
movq %r15, %rcx
movq %rbp, %r8
movq 0x98(%rsp), %r9
callq 0x24860
jmp 0x258c8
movq 0x20(%rsp), %rax
movq 0x28(%rsp), %rcx
leaq (%rax,%rcx,8), %rbx
addq $0x28, %rbx
movq %rbp, %rdi
movq %r12, %rsi
movq %rbp, %r14
movq 0x18(%rsp), %rbp
movq %rbp, %rdx
movq %r15, %rcx
movq %rbp, %r8
movq %rbx, %r9
callq 0x20908
imulq $0x38, %r13, %rdi
addq %r14, %rdi
movq 0x8(%rsp), %rsi
movq %rbp, %rdx
movq (%rsp), %r15
movq %r15, %rcx
movq %rbp, %r8
movq %rbx, %r9
callq 0x20908
jmp 0x258c8
movq 0x20(%rsp), %rax
movq 0x28(%rsp), %rcx
leaq (%rax,%rcx,8), %rbx
addq $0x28, %rbx
movq %rbp, %rdi
movq %r12, %rsi
movq %rbp, %r14
movq 0x18(%rsp), %rbp
movq %rbp, %rdx
movq %r15, %rcx
movq %rbp, %r8
movq %rbx, %r9
callq 0x2169c
imulq $0x38, %r13, %rdi
addq %r14, %rdi
movq 0x8(%rsp), %rsi
movq %rbp, %rdx
movq (%rsp), %r15
movq %r15, %rcx
movq %rbp, %r8
movq %rbx, %r9
callq 0x2169c
jmp 0x258c8
movq 0x20(%rsp), %rax
movq 0x28(%rsp), %rcx
leaq (%rax,%rcx,8), %r9
addq $0x28, %r9
movq %r9, 0x98(%rsp)
movq %rbp, %rdi
movq %r12, %rsi
movq %rbp, %r14
movq 0x18(%rsp), %rbp
movq %rbp, %rdx
movq %r15, %rcx
movq %rbp, %r8
callq 0x2347c
movq %rbx, %rdi
movq 0x8(%rsp), %rsi
movq %rbp, %rdx
movq (%rsp), %r15
movq %r15, %rcx
movq %rbp, %r8
movq 0x98(%rsp), %r9
callq 0x2347c
jmp 0x258c8
movq 0x18(%rsp), %rbx
movq %rbx, %rdx
movq 0x10(%rsp), %rcx
movq %rbx, %r8
movq %r13, %r9
callq 0x239ac
movq 0xc0(%rsp), %rdi
movq %r15, %rsi
movq %rbx, %rdx
movq (%rsp), %rcx
movq %rbx, %r8
movq %r13, %r9
callq 0x239ac
movq 0x58(%rsp), %rax
movq 0x30(%rsp), %rbx
movq %r15, %r13
movq 0x48(%rsp), %r15
movq 0x70(%rsp), %r12
jmp 0x25514
movq 0x18(%rsp), %rbp
movq %rbp, %rdx
movq %r15, %rcx
movq %rbp, %r8
movq %rax, %r9
callq 0x239ac
movq %rbx, %rdi
movq 0x8(%rsp), %rsi
movq %rbp, %rdx
movq (%rsp), %r15
movq %r15, %rcx
movq %rbp, %r8
movq 0x98(%rsp), %r9
callq 0x239ac
imulq $0x38, %r13, %rdi
addq %r14, %rdi
subq $0x8, %rsp
movq 0xb8(%rsp), %rsi
movq %r14, %rdx
movl 0x50(%rsp), %ecx
movq %r13, %r8
xorl %r9d, %r9d
pushq $0x0
callq 0x26da4
addq $0x10, %rsp
movl $0x2, %ebp
movq 0x8(%rsp), %rdi
movq %r12, %rsi
movq 0x30(%rsp), %rdx
movq 0x68(%rsp), %rcx
movq %r13, %r8
movq 0x70(%rsp), %r9
pushq %r14
pushq %rbp
callq 0x27fb4
addq $0x10, %rsp
movl %eax, %ebx
movq %r15, %rdi
movq 0x10(%rsp), %rsi
movq 0x80(%rsp), %rdx
movq 0x60(%rsp), %rcx
movq %r13, %r8
movq 0x78(%rsp), %r9
pushq %r14
pushq %rbp
callq 0x27fb4
addq $0x10, %rsp
movl %eax, %ebp
xorl %ebx, %ebp
cmpq $0x4f, %r13
jle 0x259d7
cmpq $0xf0, %r13
jle 0x25a30
cmpq $0x157, %r13            # imm = 0x157
movq 0x40(%rsp), %r15
jle 0x25a89
movq 0x20(%rsp), %rax
movq 0x28(%rsp), %rcx
leaq (%rax,%rcx,8), %rbx
addq $0x28, %rbx
movq %r15, %rdi
cmpq $0x1e0, %r13            # imm = 0x1E0
jle 0x25ada
movq 0x38(%rsp), %r12
movq %r12, %rsi
movq 0x18(%rsp), %r14
movq %r14, %rdx
movq 0x10(%rsp), %rcx
movq %r14, %r8
movq %rbx, %r9
callq 0x24860
movq %r12, %rdi
movq 0x8(%rsp), %rsi
movq %r14, %rdx
movq (%rsp), %rcx
movq %r14, %r8
movq %rbx, %r9
callq 0x24860
jmp 0x25b14
movq 0x20(%rsp), %rax
movq 0x28(%rsp), %rcx
leaq (%rax,%rcx,8), %rbx
addq $0x28, %rbx
movq %r14, %rdi
movq %r12, %rsi
movl %ebp, 0x28(%rsp)
movq 0x18(%rsp), %rbp
movq %rbp, %rdx
movq 0x10(%rsp), %rcx
movq %rbp, %r8
movq %rbx, %r9
callq 0x20908
movq %r12, %rdi
movq 0x8(%rsp), %rsi
movq %rbp, %rdx
movq %r15, %rcx
movq %rbp, %r8
movl 0x28(%rsp), %ebp
movq %rbx, %r9
callq 0x20908
movq %r14, %r15
jmp 0x25b14
movq 0x20(%rsp), %rax
movq 0x28(%rsp), %rcx
leaq (%rax,%rcx,8), %rbx
addq $0x28, %rbx
movq 0x40(%rsp), %r15
movq %r15, %rdi
movq 0x38(%rsp), %r12
movq %r12, %rsi
movq 0x18(%rsp), %r14
movq %r14, %rdx
movq 0x10(%rsp), %rcx
movq %r14, %r8
movq %rbx, %r9
callq 0x2169c
movq %r12, %rdi
movq 0x8(%rsp), %rsi
movq %r14, %rdx
movq (%rsp), %rcx
movq %r14, %r8
movq %rbx, %r9
callq 0x2169c
jmp 0x25b14
movq 0x20(%rsp), %rax
movq 0x28(%rsp), %rcx
leaq (%rax,%rcx,8), %rbx
addq $0x28, %rbx
movq %r15, %rdi
movq 0x38(%rsp), %r12
movq %r12, %rsi
movq 0x18(%rsp), %r14
movq %r14, %rdx
movq 0x10(%rsp), %rcx
movq %r14, %r8
movq %rbx, %r9
callq 0x2347c
movq %r12, %rdi
movq 0x8(%rsp), %rsi
movq %r14, %rdx
movq (%rsp), %rcx
movq %r14, %r8
movq %rbx, %r9
callq 0x2347c
jmp 0x25b14
movq 0x38(%rsp), %r12
movq %r12, %rsi
movq 0x18(%rsp), %r14
movq %r14, %rdx
movq 0x10(%rsp), %rcx
movq %r14, %r8
movq %rbx, %r9
callq 0x239ac
movq %r12, %rdi
movq 0x8(%rsp), %rsi
movq %r14, %rdx
movq (%rsp), %rcx
movq %r14, %r8
movq %rbx, %r9
callq 0x239ac
subq $0x8, %rsp
movq %r12, %rdi
movq 0xb8(%rsp), %rsi
movq %r15, %rdx
movl %ebp, %ecx
movq %r13, %r8
movl $0x2, %r9d
pushq $0x4
callq 0x26da4
addq $0x10, %rsp
cmpq $0x50, %r13
jle 0x25b83
cmpq $0xf1, %r13
movq 0x78(%rsp), %rbx
movq (%rsp), %r14
movq %r15, %rdi
jle 0x25ba9
cmpq $0x158, %r13            # imm = 0x158
jle 0x25bc3
cmpq $0x1e1, %r13            # imm = 0x1E1
jle 0x25bdd
movq 0x68(%rsp), %rsi
movq %r13, %rdx
movq 0x60(%rsp), %rcx
movq %r13, %r8
movq %r14, %r9
callq 0x24860
jmp 0x25bf5
movq %r15, %rdi
movq 0x68(%rsp), %rsi
movq %r13, %rdx
movq 0x60(%rsp), %rcx
movq %r13, %r8
movq (%rsp), %r14
movq %r14, %r9
callq 0x20908
movq 0x78(%rsp), %rbx
jmp 0x25bf5
movq 0x68(%rsp), %rsi
movq %r13, %rdx
movq 0x60(%rsp), %rcx
movq %r13, %r8
movq %r14, %r9
callq 0x2169c
jmp 0x25bf5
movq 0x68(%rsp), %rsi
movq %r13, %rdx
movq 0x60(%rsp), %rcx
movq %r13, %r8
movq %r14, %r9
callq 0x2347c
jmp 0x25bf5
movq 0x68(%rsp), %rsi
movq %r13, %rdx
movq 0x60(%rsp), %rcx
movq %r13, %r8
movq %r14, %r9
callq 0x239ac
cmpb $0x0, 0xb8(%rsp)
je 0x25da4
addq 0x70(%rsp), %rbx
subq $0x8, %rsp
movq %r15, %rdi
movq 0x58(%rsp), %rsi
movq 0x90(%rsp), %rdx
movq 0x98(%rsp), %rcx
movq 0x28(%rsp), %r8
movq %r13, %r9
pushq %r14
pushq 0x68(%rsp)
pushq %rbx
callq 0x2993c
addq $0xe8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq (%r10,%r10), %rax
leaq (%rax,%rax,4), %rdx
movq %r8, %rdi
sarq %rdi
leaq (%rdi,%rdi,4), %rcx
leaq (%rdi,%rcx,4), %rcx
cmpq %rcx, %rdx
jl 0x24894
leaq (%r10,%r10,2), %rcx
leaq (%r10,%rcx,4), %r11
movq %r8, %r9
shlq $0x4, %r9
movl $0x8, %ecx
movl $0x9, %esi
cmpq %r9, %r11
jl 0x25d03
leaq (%rdi,%rdi,8), %rcx
leaq (%rcx,%rcx,2), %r9
movl $0x7, %ecx
cmpq %r9, %rdx
jl 0x25d03
movq %rdi, %r9
shlq $0x5, %r9
addq %rdi, %r9
movl $0xa, %esi
cmpq %r9, %rdx
jl 0x25cfe
movq %r10, %r9
leaq (,%r10,4), %rdx
leaq (,%r8,8), %rdi
movq %r8, %r11
subq %r8, %rdi
movl $0x6, %ecx
cmpq %rdi, %rdx
jl 0x25cf8
leaq (%rax,%rax,2), %rax
leaq (%r11,%r11,2), %rsi
leaq (%r11,%rsi,4), %rdi
movl $0xb, %esi
cmpq %rdi, %rax
jl 0x25cf8
leaq (%r11,%r11,8), %rax
movl $0x5, %ecx
cmpq %rax, %rdx
jge 0x25e3d
movq %r11, %r8
movq %r9, %r10
movq 0x40(%rsp), %r15
movl %ecx, %edi
movq %rdi, %rax
imulq %r10, %rax
movl %esi, %edx
movq %rdx, %r9
imulq %r8, %r9
cmpq %r9, %rax
movq %r10, %rax
cmovlq %r8, %rax
leal (%rcx,%rsi), %r11d
cmovgeq %rdx, %rdi
decq %rax
xorl %edx, %edx
divq %rdi
movq %rax, %r13
incq %r13
leal -0x1(%rsi), %edx
leal -0x1(%rcx), %edi
movq %rdx, %rax
imulq %r13, %rax
subq %rax, %r10
movq %rdi, %rax
imulq %r13, %rax
subq %rax, %r8
testb $0x1, %r11b
movq %r8, 0x78(%rsp)
movq %rdi, 0x80(%rsp)
jne 0x25e14
movb $0x1, %al
movq %rax, 0xb8(%rsp)
movq $0x0, 0x58(%rsp)
jmp 0x248da
movq (%rsp), %rdi
movq 0x10(%rsp), %r15
movq %r15, %rsi
movq 0x60(%rsp), %rdx
movq %r14, %rcx
movq 0x78(%rsp), %r8
movq %rbp, %r9
callq 0x27890
jmp 0x25693
imulq $0x78, %r13, %rdi
addq %r15, %rdi
movq 0x70(%rsp), %r8
cmpq %rbx, %r8
jle 0x25de2
movl 0x30(%rsp), %eax
imulq %r13, %rax
movq 0x68(%rsp), %rcx
leaq (%rcx,%rax,8), %rsi
movl 0x80(%rsp), %eax
imulq %r13, %rax
movq 0x60(%rsp), %rcx
leaq (%rcx,%rax,8), %rcx
movq %r8, %rdx
movq %rbx, %r8
jmp 0x25e0a
movl 0x80(%rsp), %eax
imulq %r13, %rax
movq 0x60(%rsp), %rcx
leaq (%rcx,%rax,8), %rsi
movl 0x30(%rsp), %eax
imulq %r13, %rax
movq 0x68(%rsp), %rcx
leaq (%rcx,%rax,8), %rcx
movq %rbx, %rdx
callq 0x1cd58
jmp 0x25c03
testq %r10, %r10
jle 0x25e8e
testq %r8, %r8
jle 0x25eae
movl $0x1, %eax
movq %rax, 0x58(%rsp)
movq $0x0, 0xb8(%rsp)
jmp 0x248da
movq %r9, %r10
leaq (,%r9,8), %rdx
subq %r9, %rdx
movq %r11, %r8
leaq (,%r11,4), %rsi
leaq (%rsi,%rsi,4), %rdi
movl $0xc, %esi
cmpq %rdi, %rdx
movq 0x40(%rsp), %r15
jl 0x25d03
leaq (%r10,%r10,8), %rcx
leaq (%rax,%rax,2), %rax
addq %r8, %rax
xorl %esi, %esi
cmpq %rax, %rcx
setl %sil
xorl $0xd, %esi
movl $0x4, %ecx
jmp 0x25d03
movb $0x1, %al
movq %rax, 0xb8(%rsp)
movq $0x0, 0x58(%rsp)
addl $-0x2, %esi
addq %r13, %r10
movl %esi, %edx
jmp 0x248da
movq %r8, %rsi
movb $0x1, %al
movq %rax, 0xb8(%rsp)
movq $0x0, 0x58(%rsp)
addl $-0x2, %ecx
addq %r13, %rsi
movq %rsi, 0x78(%rsp)
movq %rcx, 0x80(%rsp)
jmp 0x248da