// File: 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
movq %rsp, %rbp
subq $0x80, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movq %r9, -0x30(%rbp)
jmp 0x434e5
jmp 0x434e7
jmp 0x434e9
jmp 0x434eb
jmp 0x434ed
imulq $0x11, -0x18(%rbp), %rax
imulq $0x12, -0x28(%rbp), %rcx
cmpq %rcx, %rax
setl %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
setne %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x43569
movq -0x18(%rbp), %rax
subq $0x1, %rax
movl $0x6, %ecx
xorl %edx, %edx
divq %rcx
addq $0x1, %rax
movq %rax, -0x38(%rbp)
movl $0x5, -0x50(%rbp)
movl $0x5, -0x4c(%rbp)
movl $0x0, -0x54(%rbp)
movq -0x18(%rbp), %rax
imulq $0x5, -0x38(%rbp), %rcx
subq %rcx, %rax
movq %rax, -0x40(%rbp)
movq -0x28(%rbp), %rax
imulq $0x5, -0x38(%rbp), %rcx
subq %rcx, %rax
movq %rax, -0x48(%rbp)
jmp 0x4371c
imulq $0x5, -0x18(%rbp), %rax
imulq $0x12, %rax, %rax
imulq $0x77, -0x28(%rbp), %rcx
cmpq %rcx, %rax
jge 0x4358c
movl $0x7, -0x4c(%rbp)
movl $0x6, -0x50(%rbp)
jmp 0x43601
imulq $0x5, -0x18(%rbp), %rax
imulq $0x11, %rax, %rax
imulq $0x7e, -0x28(%rbp), %rcx
cmpq %rcx, %rax
jge 0x435af
movl $0x7, -0x4c(%rbp)
movl $0x5, -0x50(%rbp)
jmp 0x435ff
imulq $0x12, -0x18(%rbp), %rax
imulq $0x22, -0x28(%rbp), %rcx
cmpq %rcx, %rax
jge 0x435ce
movl $0x8, -0x4c(%rbp)
movl $0x5, -0x50(%rbp)
jmp 0x435fd
imulq $0x11, -0x18(%rbp), %rax
imulq $0x24, -0x28(%rbp), %rcx
cmpq %rcx, %rax
jge 0x435ed
movl $0x8, -0x4c(%rbp)
movl $0x4, -0x50(%rbp)
jmp 0x435fb
movl $0x9, -0x4c(%rbp)
movl $0x4, -0x50(%rbp)
jmp 0x435fd
jmp 0x435ff
jmp 0x43601
movl -0x4c(%rbp), %eax
xorl -0x50(%rbp), %eax
andl $0x1, %eax
movl %eax, -0x54(%rbp)
movslq -0x50(%rbp), %rax
imulq -0x18(%rbp), %rax
movslq -0x4c(%rbp), %rcx
imulq -0x28(%rbp), %rcx
cmpq %rcx, %rax
jl 0x4363b
movq -0x18(%rbp), %rax
subq $0x1, %rax
movslq -0x4c(%rbp), %rcx
xorl %edx, %edx
divq %rcx
movq %rax, -0x60(%rbp)
jmp 0x43650
movq -0x28(%rbp), %rax
subq $0x1, %rax
movslq -0x50(%rbp), %rcx
xorl %edx, %edx
divq %rcx
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x38(%rbp)
movl -0x4c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x4c(%rbp)
movl -0x50(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x50(%rbp)
movq -0x18(%rbp), %rax
movslq -0x4c(%rbp), %rcx
imulq -0x38(%rbp), %rcx
subq %rcx, %rax
movq %rax, -0x40(%rbp)
movq -0x28(%rbp), %rax
movslq -0x50(%rbp), %rcx
imulq -0x38(%rbp), %rcx
subq %rcx, %rax
movq %rax, -0x48(%rbp)
cmpl $0x0, -0x54(%rbp)
je 0x4371a
cmpq $0x1, -0x40(%rbp)
setl %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
setne %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x436da
movl -0x4c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x4c(%rbp)
movq -0x38(%rbp), %rax
addq -0x40(%rbp), %rax
movq %rax, -0x40(%rbp)
movl $0x0, -0x54(%rbp)
jmp 0x43718
cmpq $0x1, -0x48(%rbp)
setl %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
setne %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x43716
movl -0x50(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x50(%rbp)
movq -0x38(%rbp), %rax
addq -0x48(%rbp), %rax
movq %rax, -0x48(%rbp)
movl $0x0, -0x54(%rbp)
jmp 0x43718
jmp 0x4371a
jmp 0x4371c
jmp 0x4371e
jmp 0x43720
jmp 0x43722
jmp 0x43724
jmp 0x43726
jmp 0x43728
jmp 0x4372a
jmp 0x4372c
jmp 0x4372e
jmp 0x43730
jmp 0x43732
jmp 0x43734
movq -0x8(%rbp), %rdi
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
addq $0x10, %rdi
movq -0x8(%rbp), %rsi
imulq $0x7, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
movl -0x4c(%rbp), %edx
movq -0x10(%rbp), %rcx
movq -0x38(%rbp), %r8
movq -0x40(%rbp), %r9
movq -0x8(%rbp), %rax
movl $0x1, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x4a510
movl %eax, -0x64(%rbp)
movq -0x30(%rbp), %rdi
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
addq $0x18, %rdi
movq -0x8(%rbp), %rsi
movq -0x38(%rbp), %rax
shlq $0x3, %rax
shlq $0x3, %rax
addq %rax, %rsi
addq $0x8, %rsi
movl -0x50(%rbp), %edx
movq -0x20(%rbp), %rcx
movq -0x38(%rbp), %r8
movq -0x48(%rbp), %r9
movq -0x8(%rbp), %rax
movl $0x1, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x4a510
movl %eax, %ecx
movl -0x64(%rbp), %eax
xorl %ecx, %eax
movl %eax, -0x58(%rbp)
movq -0x38(%rbp), %rax
addq $0x1, %rax
cmpq $0x51, %rax
jge 0x43898
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rsi
imulq $0x7, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
movq -0x38(%rbp), %rdx
addq $0x1, %rdx
movq -0x8(%rbp), %rcx
movq -0x38(%rbp), %rax
shlq $0x3, %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x8, %rcx
movq -0x38(%rbp), %r8
addq $0x1, %r8
movq -0x30(%rbp), %r9
imulq $0xa, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x20, %r9
callq 0x3e800
movq -0x30(%rbp), %rdi
movq -0x8(%rbp), %rsi
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
addq $0x10, %rsi
movq -0x38(%rbp), %rdx
addq $0x1, %rdx
movq -0x30(%rbp), %rcx
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x18, %rcx
movq -0x38(%rbp), %r8
addq $0x1, %r8
movq -0x30(%rbp), %r9
imulq $0xa, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x20, %r9
callq 0x3e800
jmp 0x43ac9
movq -0x38(%rbp), %rax
addq $0x1, %rax
cmpq $0xf2, %rax
jge 0x4395a
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rsi
imulq $0x7, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
movq -0x38(%rbp), %rdx
addq $0x1, %rdx
movq -0x8(%rbp), %rcx
movq -0x38(%rbp), %rax
shlq $0x3, %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x8, %rcx
movq -0x38(%rbp), %r8
addq $0x1, %r8
movq -0x30(%rbp), %r9
imulq $0xa, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x20, %r9
callq 0x40340
movq -0x30(%rbp), %rdi
movq -0x8(%rbp), %rsi
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
addq $0x10, %rsi
movq -0x38(%rbp), %rdx
addq $0x1, %rdx
movq -0x30(%rbp), %rcx
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x18, %rcx
movq -0x38(%rbp), %r8
addq $0x1, %r8
movq -0x30(%rbp), %r9
imulq $0xa, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x20, %r9
callq 0x40340
jmp 0x43ac7
movq -0x38(%rbp), %rax
addq $0x1, %rax
cmpq $0x159, %rax            # imm = 0x159
jge 0x43a1c
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rsi
imulq $0x7, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
movq -0x38(%rbp), %rdx
addq $0x1, %rdx
movq -0x8(%rbp), %rcx
movq -0x38(%rbp), %rax
shlq $0x3, %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x8, %rcx
movq -0x38(%rbp), %r8
addq $0x1, %r8
movq -0x30(%rbp), %r9
imulq $0xa, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x20, %r9
callq 0x42930
movq -0x30(%rbp), %rdi
movq -0x8(%rbp), %rsi
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
addq $0x10, %rsi
movq -0x38(%rbp), %rdx
addq $0x1, %rdx
movq -0x30(%rbp), %rcx
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x18, %rcx
movq -0x38(%rbp), %r8
addq $0x1, %r8
movq -0x30(%rbp), %r9
imulq $0xa, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x20, %r9
callq 0x42930
jmp 0x43ac5
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rsi
imulq $0x7, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
movq -0x38(%rbp), %rdx
addq $0x1, %rdx
movq -0x8(%rbp), %rcx
movq -0x38(%rbp), %rax
shlq $0x3, %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x8, %rcx
movq -0x38(%rbp), %r8
addq $0x1, %r8
movq -0x30(%rbp), %r9
imulq $0xa, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x20, %r9
callq 0x434c0
movq -0x30(%rbp), %rdi
movq -0x8(%rbp), %rsi
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
addq $0x10, %rsi
movq -0x38(%rbp), %rdx
addq $0x1, %rdx
movq -0x30(%rbp), %rcx
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x18, %rcx
movq -0x38(%rbp), %r8
addq $0x1, %r8
movq -0x30(%rbp), %r9
imulq $0xa, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x20, %r9
callq 0x434c0
jmp 0x43ac7
jmp 0x43ac9
jmp 0x43acb
movq -0x30(%rbp), %rdi
movq -0x38(%rbp), %rsi
shlq %rsi
addq $0x1, %rsi
movq -0x8(%rbp), %rdx
movl -0x58(%rbp), %ecx
movq -0x38(%rbp), %r8
movl -0x54(%rbp), %r9d
addl $0x1, %r9d
movl -0x54(%rbp), %eax
movl %eax, (%rsp)
callq 0x48bc0
movq -0x8(%rbp), %rdi
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
addq $0x10, %rdi
movq -0x8(%rbp), %rsi
imulq $0x7, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
movl -0x4c(%rbp), %edx
movq -0x10(%rbp), %rcx
movq -0x38(%rbp), %r8
movq -0x40(%rbp), %r9
movq -0x8(%rbp), %rax
movq %rax, (%rsp)
callq 0x49d70
movl %eax, -0x58(%rbp)
cmpl $0x3, -0x50(%rbp)
sete %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
setne %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x43ba2
movq -0x30(%rbp), %rdi
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
addq $0x18, %rdi
movq -0x8(%rbp), %rsi
movq -0x38(%rbp), %rax
shlq $0x3, %rax
shlq $0x3, %rax
addq %rax, %rsi
addq $0x8, %rsi
movq -0x20(%rbp), %rdx
movq -0x38(%rbp), %rcx
movq -0x48(%rbp), %r8
movq -0x8(%rbp), %r9
callq 0x49ac0
xorl -0x58(%rbp), %eax
movl %eax, -0x58(%rbp)
jmp 0x43bef
movq -0x30(%rbp), %rdi
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
addq $0x18, %rdi
movq -0x8(%rbp), %rsi
movq -0x38(%rbp), %rax
shlq $0x3, %rax
shlq $0x3, %rax
addq %rax, %rsi
addq $0x8, %rsi
movl -0x50(%rbp), %edx
movq -0x20(%rbp), %rcx
movq -0x38(%rbp), %r8
movq -0x48(%rbp), %r9
movq -0x8(%rbp), %rax
movq %rax, (%rsp)
callq 0x49d70
xorl -0x58(%rbp), %eax
movl %eax, -0x58(%rbp)
jmp 0x43bf1
movq -0x38(%rbp), %rax
addq $0x1, %rax
cmpq $0x51, %rax
jge 0x43cc1
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rsi
imulq $0x7, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
movq -0x38(%rbp), %rdx
addq $0x1, %rdx
movq -0x8(%rbp), %rcx
movq -0x38(%rbp), %rax
shlq $0x3, %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x8, %rcx
movq -0x38(%rbp), %r8
addq $0x1, %r8
movq -0x30(%rbp), %r9
imulq $0xa, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x20, %r9
callq 0x3e800
movq -0x30(%rbp), %rdi
imulq $0x3, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
addq $0x8, %rdi
movq -0x8(%rbp), %rsi
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
addq $0x10, %rsi
movq -0x38(%rbp), %rdx
addq $0x1, %rdx
movq -0x30(%rbp), %rcx
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x18, %rcx
movq -0x38(%rbp), %r8
addq $0x1, %r8
movq -0x30(%rbp), %r9
imulq $0xa, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x20, %r9
callq 0x3e800
jmp 0x43f22
movq -0x38(%rbp), %rax
addq $0x1, %rax
cmpq $0xf2, %rax
jge 0x43d93
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rsi
imulq $0x7, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
movq -0x38(%rbp), %rdx
addq $0x1, %rdx
movq -0x8(%rbp), %rcx
movq -0x38(%rbp), %rax
shlq $0x3, %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x8, %rcx
movq -0x38(%rbp), %r8
addq $0x1, %r8
movq -0x30(%rbp), %r9
imulq $0xa, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x20, %r9
callq 0x40340
movq -0x30(%rbp), %rdi
imulq $0x3, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
addq $0x8, %rdi
movq -0x8(%rbp), %rsi
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
addq $0x10, %rsi
movq -0x38(%rbp), %rdx
addq $0x1, %rdx
movq -0x30(%rbp), %rcx
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x18, %rcx
movq -0x38(%rbp), %r8
addq $0x1, %r8
movq -0x30(%rbp), %r9
imulq $0xa, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x20, %r9
callq 0x40340
jmp 0x43f20
movq -0x38(%rbp), %rax
addq $0x1, %rax
cmpq $0x159, %rax            # imm = 0x159
jge 0x43e65
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rsi
imulq $0x7, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
movq -0x38(%rbp), %rdx
addq $0x1, %rdx
movq -0x8(%rbp), %rcx
movq -0x38(%rbp), %rax
shlq $0x3, %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x8, %rcx
movq -0x38(%rbp), %r8
addq $0x1, %r8
movq -0x30(%rbp), %r9
imulq $0xa, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x20, %r9
callq 0x42930
movq -0x30(%rbp), %rdi
imulq $0x3, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
addq $0x8, %rdi
movq -0x8(%rbp), %rsi
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
addq $0x10, %rsi
movq -0x38(%rbp), %rdx
addq $0x1, %rdx
movq -0x30(%rbp), %rcx
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x18, %rcx
movq -0x38(%rbp), %r8
addq $0x1, %r8
movq -0x30(%rbp), %r9
imulq $0xa, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x20, %r9
callq 0x42930
jmp 0x43f1e
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rsi
imulq $0x7, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
movq -0x38(%rbp), %rdx
addq $0x1, %rdx
movq -0x8(%rbp), %rcx
movq -0x38(%rbp), %rax
shlq $0x3, %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x8, %rcx
movq -0x38(%rbp), %r8
addq $0x1, %r8
movq -0x30(%rbp), %r9
imulq $0xa, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x20, %r9
callq 0x434c0
movq -0x30(%rbp), %rdi
imulq $0x3, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
addq $0x8, %rdi
movq -0x8(%rbp), %rsi
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
addq $0x10, %rsi
movq -0x38(%rbp), %rdx
addq $0x1, %rdx
movq -0x30(%rbp), %rcx
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x18, %rcx
movq -0x38(%rbp), %r8
addq $0x1, %r8
movq -0x30(%rbp), %r9
imulq $0xa, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x20, %r9
callq 0x434c0
jmp 0x43f20
jmp 0x43f22
jmp 0x43f24
movq -0x30(%rbp), %rdi
imulq $0x3, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
addq $0x8, %rdi
movq -0x38(%rbp), %rsi
shlq %rsi
addq $0x1, %rsi
movq -0x8(%rbp), %rdx
movl -0x58(%rbp), %ecx
movq -0x38(%rbp), %r8
xorl %r9d, %r9d
movl $0x0, (%rsp)
callq 0x48bc0
movq -0x8(%rbp), %rdi
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
addq $0x10, %rdi
movq -0x8(%rbp), %rsi
imulq $0x7, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
movl -0x4c(%rbp), %edx
movq -0x10(%rbp), %rcx
movq -0x38(%rbp), %r8
movq -0x40(%rbp), %r9
movq -0x8(%rbp), %rax
movl $0x2, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x4a270
movl %eax, -0x68(%rbp)
movq -0x30(%rbp), %rdi
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
addq $0x18, %rdi
movq -0x8(%rbp), %rsi
movq -0x38(%rbp), %rax
shlq $0x3, %rax
shlq $0x3, %rax
addq %rax, %rsi
addq $0x8, %rsi
movl -0x50(%rbp), %edx
movq -0x20(%rbp), %rcx
movq -0x38(%rbp), %r8
movq -0x48(%rbp), %r9
movq -0x8(%rbp), %rax
movl $0x2, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x4a270
movl %eax, %ecx
movl -0x68(%rbp), %eax
xorl %ecx, %eax
movl %eax, -0x58(%rbp)
movq -0x38(%rbp), %rax
addq $0x1, %rax
cmpq $0x51, %rax
jge 0x440d1
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rsi
imulq $0x7, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
movq -0x38(%rbp), %rdx
addq $0x1, %rdx
movq -0x8(%rbp), %rcx
movq -0x38(%rbp), %rax
shlq $0x3, %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x8, %rcx
movq -0x38(%rbp), %r8
addq $0x1, %r8
movq -0x30(%rbp), %r9
imulq $0xa, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x20, %r9
callq 0x3e800
movq -0x30(%rbp), %rdi
imulq $0x6, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
addq $0x10, %rdi
movq -0x8(%rbp), %rsi
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
addq $0x10, %rsi
movq -0x38(%rbp), %rdx
addq $0x1, %rdx
movq -0x30(%rbp), %rcx
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x18, %rcx
movq -0x38(%rbp), %r8
addq $0x1, %r8
movq -0x30(%rbp), %r9
imulq $0xa, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x20, %r9
callq 0x3e800
jmp 0x44332
movq -0x38(%rbp), %rax
addq $0x1, %rax
cmpq $0xf2, %rax
jge 0x441a3
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rsi
imulq $0x7, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
movq -0x38(%rbp), %rdx
addq $0x1, %rdx
movq -0x8(%rbp), %rcx
movq -0x38(%rbp), %rax
shlq $0x3, %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x8, %rcx
movq -0x38(%rbp), %r8
addq $0x1, %r8
movq -0x30(%rbp), %r9
imulq $0xa, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x20, %r9
callq 0x40340
movq -0x30(%rbp), %rdi
imulq $0x6, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
addq $0x10, %rdi
movq -0x8(%rbp), %rsi
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
addq $0x10, %rsi
movq -0x38(%rbp), %rdx
addq $0x1, %rdx
movq -0x30(%rbp), %rcx
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x18, %rcx
movq -0x38(%rbp), %r8
addq $0x1, %r8
movq -0x30(%rbp), %r9
imulq $0xa, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x20, %r9
callq 0x40340
jmp 0x44330
movq -0x38(%rbp), %rax
addq $0x1, %rax
cmpq $0x159, %rax            # imm = 0x159
jge 0x44275
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rsi
imulq $0x7, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
movq -0x38(%rbp), %rdx
addq $0x1, %rdx
movq -0x8(%rbp), %rcx
movq -0x38(%rbp), %rax
shlq $0x3, %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x8, %rcx
movq -0x38(%rbp), %r8
addq $0x1, %r8
movq -0x30(%rbp), %r9
imulq $0xa, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x20, %r9
callq 0x42930
movq -0x30(%rbp), %rdi
imulq $0x6, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
addq $0x10, %rdi
movq -0x8(%rbp), %rsi
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
addq $0x10, %rsi
movq -0x38(%rbp), %rdx
addq $0x1, %rdx
movq -0x30(%rbp), %rcx
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x18, %rcx
movq -0x38(%rbp), %r8
addq $0x1, %r8
movq -0x30(%rbp), %r9
imulq $0xa, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x20, %r9
callq 0x42930
jmp 0x4432e
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rsi
imulq $0x7, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
movq -0x38(%rbp), %rdx
addq $0x1, %rdx
movq -0x8(%rbp), %rcx
movq -0x38(%rbp), %rax
shlq $0x3, %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x8, %rcx
movq -0x38(%rbp), %r8
addq $0x1, %r8
movq -0x30(%rbp), %r9
imulq $0xa, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x20, %r9
callq 0x434c0
movq -0x30(%rbp), %rdi
imulq $0x6, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
addq $0x10, %rdi
movq -0x8(%rbp), %rsi
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
addq $0x10, %rsi
movq -0x38(%rbp), %rdx
addq $0x1, %rdx
movq -0x30(%rbp), %rcx
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x18, %rcx
movq -0x38(%rbp), %r8
addq $0x1, %r8
movq -0x30(%rbp), %r9
imulq $0xa, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x20, %r9
callq 0x434c0
jmp 0x44330
jmp 0x44332
jmp 0x44334
movq -0x30(%rbp), %rdi
imulq $0x6, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
addq $0x10, %rdi
movq -0x38(%rbp), %rsi
shlq %rsi
addq $0x1, %rsi
movq -0x8(%rbp), %rdx
movl -0x58(%rbp), %ecx
movq -0x38(%rbp), %r8
movl $0x2, %r9d
movl $0x4, (%rsp)
callq 0x48bc0
movq -0x8(%rbp), %rdi
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
addq $0x10, %rdi
movq -0x8(%rbp), %rsi
imulq $0x7, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
movl -0x4c(%rbp), %edx
movq -0x10(%rbp), %rcx
movq -0x38(%rbp), %r8
movq -0x40(%rbp), %r9
movq -0x8(%rbp), %rax
movl $0x2, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x4a510
movl %eax, -0x6c(%rbp)
movq -0x30(%rbp), %rdi
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
addq $0x18, %rdi
movq -0x8(%rbp), %rsi
movq -0x38(%rbp), %rax
shlq $0x3, %rax
shlq $0x3, %rax
addq %rax, %rsi
addq $0x8, %rsi
movl -0x50(%rbp), %edx
movq -0x20(%rbp), %rcx
movq -0x38(%rbp), %r8
movq -0x48(%rbp), %r9
movq -0x8(%rbp), %rax
movl $0x2, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x4a510
movl %eax, %ecx
movl -0x6c(%rbp), %eax
xorl %ecx, %eax
movl %eax, -0x58(%rbp)
movq -0x38(%rbp), %rax
addq $0x1, %rax
cmpq $0x51, %rax
jge 0x444e0
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rsi
imulq $0x7, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
movq -0x38(%rbp), %rdx
addq $0x1, %rdx
movq -0x8(%rbp), %rcx
movq -0x38(%rbp), %rax
shlq $0x3, %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x8, %rcx
movq -0x38(%rbp), %r8
addq $0x1, %r8
movq -0x30(%rbp), %r9
imulq $0xa, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x20, %r9
callq 0x3e800
movq -0x8(%rbp), %rdi
imulq $0x3, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
movq -0x8(%rbp), %rsi
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
addq $0x10, %rsi
movq -0x38(%rbp), %rdx
addq $0x1, %rdx
movq -0x30(%rbp), %rcx
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x18, %rcx
movq -0x38(%rbp), %r8
addq $0x1, %r8
movq -0x30(%rbp), %r9
imulq $0xa, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x20, %r9
callq 0x3e800
jmp 0x44735
movq -0x38(%rbp), %rax
addq $0x1, %rax
cmpq $0xf2, %rax
jge 0x445ae
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rsi
imulq $0x7, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
movq -0x38(%rbp), %rdx
addq $0x1, %rdx
movq -0x8(%rbp), %rcx
movq -0x38(%rbp), %rax
shlq $0x3, %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x8, %rcx
movq -0x38(%rbp), %r8
addq $0x1, %r8
movq -0x30(%rbp), %r9
imulq $0xa, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x20, %r9
callq 0x40340
movq -0x8(%rbp), %rdi
imulq $0x3, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
movq -0x8(%rbp), %rsi
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
addq $0x10, %rsi
movq -0x38(%rbp), %rdx
addq $0x1, %rdx
movq -0x30(%rbp), %rcx
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x18, %rcx
movq -0x38(%rbp), %r8
addq $0x1, %r8
movq -0x30(%rbp), %r9
imulq $0xa, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x20, %r9
callq 0x40340
jmp 0x44733
movq -0x38(%rbp), %rax
addq $0x1, %rax
cmpq $0x159, %rax            # imm = 0x159
jge 0x4467c
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rsi
imulq $0x7, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
movq -0x38(%rbp), %rdx
addq $0x1, %rdx
movq -0x8(%rbp), %rcx
movq -0x38(%rbp), %rax
shlq $0x3, %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x8, %rcx
movq -0x38(%rbp), %r8
addq $0x1, %r8
movq -0x30(%rbp), %r9
imulq $0xa, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x20, %r9
callq 0x42930
movq -0x8(%rbp), %rdi
imulq $0x3, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
movq -0x8(%rbp), %rsi
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
addq $0x10, %rsi
movq -0x38(%rbp), %rdx
addq $0x1, %rdx
movq -0x30(%rbp), %rcx
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x18, %rcx
movq -0x38(%rbp), %r8
addq $0x1, %r8
movq -0x30(%rbp), %r9
imulq $0xa, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x20, %r9
callq 0x42930
jmp 0x44731
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rsi
imulq $0x7, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
movq -0x38(%rbp), %rdx
addq $0x1, %rdx
movq -0x8(%rbp), %rcx
movq -0x38(%rbp), %rax
shlq $0x3, %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x8, %rcx
movq -0x38(%rbp), %r8
addq $0x1, %r8
movq -0x30(%rbp), %r9
imulq $0xa, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x20, %r9
callq 0x434c0
movq -0x8(%rbp), %rdi
imulq $0x3, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
movq -0x8(%rbp), %rsi
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
addq $0x10, %rsi
movq -0x38(%rbp), %rdx
addq $0x1, %rdx
movq -0x30(%rbp), %rcx
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x18, %rcx
movq -0x38(%rbp), %r8
addq $0x1, %r8
movq -0x30(%rbp), %r9
imulq $0xa, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x20, %r9
callq 0x434c0
jmp 0x44733
jmp 0x44735
jmp 0x44737
movq -0x8(%rbp), %rdi
imulq $0x3, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
movq -0x38(%rbp), %rsi
shlq %rsi
addq $0x1, %rsi
movq -0x8(%rbp), %rdx
movl -0x58(%rbp), %ecx
movq -0x38(%rbp), %r8
movl -0x54(%rbp), %r9d
addl $0x1, %r9d
shll %r9d
movl -0x54(%rbp), %eax
shll %eax
movl %eax, (%rsp)
callq 0x48bc0
movq -0x8(%rbp), %rdi
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
addq $0x10, %rdi
movq -0x8(%rbp), %rsi
imulq $0x7, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
movl -0x4c(%rbp), %edx
movq -0x10(%rbp), %rcx
movq -0x38(%rbp), %r8
movq -0x40(%rbp), %r9
movq -0x8(%rbp), %rax
movq %rax, (%rsp)
callq 0x49f90
movl %eax, -0x70(%rbp)
movq -0x30(%rbp), %rdi
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
addq $0x18, %rdi
movq -0x8(%rbp), %rsi
movq -0x38(%rbp), %rax
shlq $0x3, %rax
shlq $0x3, %rax
addq %rax, %rsi
addq $0x8, %rsi
movl -0x50(%rbp), %edx
movq -0x20(%rbp), %rcx
movq -0x38(%rbp), %r8
movq -0x48(%rbp), %r9
movq -0x8(%rbp), %rax
movq %rax, (%rsp)
callq 0x49f90
movl %eax, %ecx
movl -0x70(%rbp), %eax
xorl %ecx, %eax
movl %eax, -0x58(%rbp)
movq -0x38(%rbp), %rax
addq $0x1, %rax
cmpq $0x51, %rax
jge 0x448d5
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rsi
imulq $0x7, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
movq -0x38(%rbp), %rdx
addq $0x1, %rdx
movq -0x8(%rbp), %rcx
movq -0x38(%rbp), %rax
shlq $0x3, %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x8, %rcx
movq -0x38(%rbp), %r8
addq $0x1, %r8
movq -0x30(%rbp), %r9
imulq $0xa, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x20, %r9
callq 0x3e800
movq -0x8(%rbp), %rdi
imulq $0x7, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
movq -0x8(%rbp), %rsi
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
addq $0x10, %rsi
movq -0x38(%rbp), %rdx
addq $0x1, %rdx
movq -0x30(%rbp), %rcx
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x18, %rcx
movq -0x38(%rbp), %r8
addq $0x1, %r8
movq -0x30(%rbp), %r9
imulq $0xa, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x20, %r9
callq 0x3e800
jmp 0x44b2a
movq -0x38(%rbp), %rax
addq $0x1, %rax
cmpq $0xf2, %rax
jge 0x449a3
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rsi
imulq $0x7, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
movq -0x38(%rbp), %rdx
addq $0x1, %rdx
movq -0x8(%rbp), %rcx
movq -0x38(%rbp), %rax
shlq $0x3, %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x8, %rcx
movq -0x38(%rbp), %r8
addq $0x1, %r8
movq -0x30(%rbp), %r9
imulq $0xa, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x20, %r9
callq 0x40340
movq -0x8(%rbp), %rdi
imulq $0x7, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
movq -0x8(%rbp), %rsi
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
addq $0x10, %rsi
movq -0x38(%rbp), %rdx
addq $0x1, %rdx
movq -0x30(%rbp), %rcx
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x18, %rcx
movq -0x38(%rbp), %r8
addq $0x1, %r8
movq -0x30(%rbp), %r9
imulq $0xa, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x20, %r9
callq 0x40340
jmp 0x44b28
movq -0x38(%rbp), %rax
addq $0x1, %rax
cmpq $0x159, %rax            # imm = 0x159
jge 0x44a71
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rsi
imulq $0x7, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
movq -0x38(%rbp), %rdx
addq $0x1, %rdx
movq -0x8(%rbp), %rcx
movq -0x38(%rbp), %rax
shlq $0x3, %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x8, %rcx
movq -0x38(%rbp), %r8
addq $0x1, %r8
movq -0x30(%rbp), %r9
imulq $0xa, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x20, %r9
callq 0x42930
movq -0x8(%rbp), %rdi
imulq $0x7, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
movq -0x8(%rbp), %rsi
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
addq $0x10, %rsi
movq -0x38(%rbp), %rdx
addq $0x1, %rdx
movq -0x30(%rbp), %rcx
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x18, %rcx
movq -0x38(%rbp), %r8
addq $0x1, %r8
movq -0x30(%rbp), %r9
imulq $0xa, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x20, %r9
callq 0x42930
jmp 0x44b26
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rsi
imulq $0x7, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
movq -0x38(%rbp), %rdx
addq $0x1, %rdx
movq -0x8(%rbp), %rcx
movq -0x38(%rbp), %rax
shlq $0x3, %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x8, %rcx
movq -0x38(%rbp), %r8
addq $0x1, %r8
movq -0x30(%rbp), %r9
imulq $0xa, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x20, %r9
callq 0x434c0
movq -0x8(%rbp), %rdi
imulq $0x7, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
movq -0x8(%rbp), %rsi
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
addq $0x10, %rsi
movq -0x38(%rbp), %rdx
addq $0x1, %rdx
movq -0x30(%rbp), %rcx
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rcx
addq $0x18, %rcx
movq -0x38(%rbp), %r8
addq $0x1, %r8
movq -0x30(%rbp), %r9
imulq $0xa, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x20, %r9
callq 0x434c0
jmp 0x44b28
jmp 0x44b2a
jmp 0x44b2c
movq -0x8(%rbp), %rdi
imulq $0x7, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
movq -0x38(%rbp), %rsi
shlq %rsi
addq $0x1, %rsi
movq -0x8(%rbp), %rdx
movl -0x58(%rbp), %ecx
movq -0x38(%rbp), %r8
movl $0x1, %r9d
movl $0x2, (%rsp)
callq 0x48bc0
cmpq $0x51, -0x38(%rbp)
jge 0x44b9d
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x38(%rbp), %rdx
movq -0x20(%rbp), %rcx
movq -0x38(%rbp), %r8
movq -0x30(%rbp), %r9
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x18, %r9
callq 0x3e800
jmp 0x44c40
cmpq $0xf2, -0x38(%rbp)
jge 0x44bd6
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x38(%rbp), %rdx
movq -0x20(%rbp), %rcx
movq -0x38(%rbp), %r8
movq -0x30(%rbp), %r9
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x18, %r9
callq 0x40340
jmp 0x44c3e
cmpq $0x159, -0x38(%rbp)     # imm = 0x159
jge 0x44c0f
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x38(%rbp), %rdx
movq -0x20(%rbp), %rcx
movq -0x38(%rbp), %r8
movq -0x30(%rbp), %r9
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x18, %r9
callq 0x42930
jmp 0x44c3c
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x38(%rbp), %rdx
movq -0x20(%rbp), %rcx
movq -0x38(%rbp), %r8
movq -0x30(%rbp), %r9
imulq $0x9, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %r9
addq $0x18, %r9
callq 0x434c0
jmp 0x44c3e
jmp 0x44c40
jmp 0x44c42
cmpl $0x0, -0x54(%rbp)
setne %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
setne %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x44d03
movq -0x40(%rbp), %rax
cmpq -0x48(%rbp), %rax
jle 0x44cb8
jmp 0x44c71
movq -0x8(%rbp), %rdi
imulq $0xb, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
movq -0x10(%rbp), %rsi
movslq -0x4c(%rbp), %rax
imulq -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
movq -0x40(%rbp), %rdx
movq -0x20(%rbp), %rcx
movslq -0x50(%rbp), %rax
imulq -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rcx
movq -0x48(%rbp), %r8
callq 0x37f00
jmp 0x44d01
jmp 0x44cba
movq -0x8(%rbp), %rdi
imulq $0xb, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
movq -0x20(%rbp), %rsi
movslq -0x50(%rbp), %rax
imulq -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
movq -0x48(%rbp), %rdx
movq -0x10(%rbp), %rcx
movslq -0x4c(%rbp), %rax
imulq -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rcx
movq -0x40(%rbp), %r8
callq 0x37f00
jmp 0x44d01
jmp 0x44d03
movq -0x8(%rbp), %rdi
movq -0x30(%rbp), %rsi
imulq $0x6, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
addq $0x10, %rsi
movq -0x30(%rbp), %rdx
imulq $0x3, -0x38(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdx
addq $0x8, %rdx
movq -0x30(%rbp), %rcx
movq -0x38(%rbp), %r8
movq -0x40(%rbp), %r9
addq -0x48(%rbp), %r9
movl -0x54(%rbp), %r10d
movq -0x30(%rbp), %rax
imulq $0x9, -0x38(%rbp), %r11
shlq $0x3, %r11
addq %r11, %rax
addq $0x18, %rax
movl %r10d, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x4c100
addq $0x80, %rsp
popq %rbp
retq
nop