// File: marxn[P]pupp/3rdparty/gmp/gen-fac.c
// Function: gen_consts
int
gen_consts (int numb, int nail, int limb)
{
  mpz_t x, mask, y, last;
  unsigned long a, b;
  unsigned long ofl, ofe;

  printf ("/* This file is automatically generated by gen-fac.c */\n\n");
  printf ("#if GMP_NUMB_BITS != %d\n", numb);
  printf ("Error , error this data is for %d GMP_NUMB_BITS only\n", numb);
  printf ("#endif\n");
#if 0
  printf ("#if GMP_LIMB_BITS != %d\n", limb);
  printf ("Error , error this data is for %d GMP_LIMB_BITS only\n", limb);
  printf ("#endif\n");
#endif

  printf
    ("/* This table is 0!,1!,2!,3!,...,n! where n! has <= GMP_NUMB_BITS bits */\n");
  printf
    ("#define ONE_LIMB_FACTORIAL_TABLE CNST_LIMB(0x1),CNST_LIMB(0x1");
  mpz_init_set_ui (x, 1);
  mpz_init (last);
  for (b = 2;; b++)
    {
      mpz_mul_ui (x, x, b);	/* so b!=a       */
      if (mpz_sizeinbase (x, 2) > numb)
	break;
      printf ("),CNST_LIMB(0x");
      mpz_out_str (stdout, 16, x);
    }
  printf (")\n");

  printf
    ("\n/* This table is 0!,1!,2!/2,3!/2,...,n!/2^sn where n!/2^sn is an */\n");
  printf
    ("/* odd integer for each n, and n!/2^sn has <= GMP_NUMB_BITS bits */\n");
  printf
    ("#define ONE_LIMB_ODD_FACTORIAL_TABLE CNST_LIMB(0x1),CNST_LIMB(0x1),CNST_LIMB(0x1");
  mpz_set_ui (x, 1);
  for (b = 3;; b++)
    {
      for (a = b; (a & 1) == 0; a >>= 1);
      mpz_swap (last, x);
      mpz_mul_ui (x, last, a);
      if (mpz_sizeinbase (x, 2) > numb)
	break;
      printf ("),CNST_LIMB(0x");
      mpz_out_str (stdout, 16, x);
    }
  printf (")\n");
  printf
    ("#define ODD_FACTORIAL_TABLE_MAX CNST_LIMB(0x");
  mpz_out_str (stdout, 16, last);
  printf (")\n");

  ofl = b - 1;
  printf
    ("#define ODD_FACTORIAL_TABLE_LIMIT (%lu)\n", ofl);
  mpz_init2 (mask, numb + 1);
  mpz_setbit (mask, numb);
  mpz_sub_ui (mask, mask, 1);
  printf
    ("\n/* Previous table, continued, values modulo 2^GMP_NUMB_BITS */\n");
  printf
    ("#define ONE_LIMB_ODD_FACTORIAL_EXTTABLE CNST_LIMB(0x");
  mpz_and (x, x, mask);
  mpz_out_str (stdout, 16, x);
  mpz_init (y);
  mpz_bin_uiui (y, b, b/2);
  b++;
  for (;; b++)
    {
      for (a = b; (a & 1) == 0; a >>= 1);
      if (a == b) {
	mpz_divexact_ui (y, y, a/2+1);
	mpz_mul_ui (y, y, a);
      } else
	mpz_mul_2exp (y, y, 1);
      if (mpz_sizeinbase (y, 2) > numb)
	break;
      mpz_mul_ui (x, x, a);
      mpz_and (x, x, mask);
      printf ("),CNST_LIMB(0x");
      mpz_out_str (stdout, 16, x);
    }
  printf (")\n");
  ofe = b - 1;
  printf
    ("#define ODD_FACTORIAL_EXTTABLE_LIMIT (%lu)\n", ofe);

  printf
    ("\n/* This table is 1!!,3!!,...,(2n+1)!! where (2n+1)!! has <= GMP_NUMB_BITS bits */\n");
  printf
    ("#define ONE_LIMB_ODD_DOUBLEFACTORIAL_TABLE CNST_LIMB(0x1");
  mpz_set_ui (x, 1);
  for (b = 3;; b+=2)
    {
      mpz_swap (last, x);
      mpz_mul_ui (x, last, b);
      if (mpz_sizeinbase (x, 2) > numb)
	break;
      printf ("),CNST_LIMB(0x");
      mpz_out_str (stdout, 16, x);
    }
  printf (")\n");
  printf
    ("#define ODD_DOUBLEFACTORIAL_TABLE_MAX CNST_LIMB(0x");
  mpz_out_str (stdout, 16, last);
  printf (")\n");

  printf
    ("#define ODD_DOUBLEFACTORIAL_TABLE_LIMIT (%lu)\n", b - 2);

  printf
    ("\n/* This table x_1, x_2,... contains values s.t. x_n^n has <= GMP_NUMB_BITS bits */\n");
  printf
    ("#define NTH_ROOT_NUMB_MASK_TABLE (GMP_NUMB_MASK");
  for (b = 2;b <= 8; b++)
    {
      mpz_root (x, mask, b);
      printf ("),CNST_LIMB(0x");
      mpz_out_str (stdout, 16, x);
    }
  printf (")\n");

  mpz_add_ui (mask, mask, 1);
  printf
    ("\n/* This table contains inverses of odd factorials, modulo 2^GMP_NUMB_BITS */\n");
  printf
    ("\n/* It begins with (2!/2)^-1=1 */\n");
  printf
    ("#define ONE_LIMB_ODD_FACTORIAL_INVERSES_TABLE CNST_LIMB(0x1");
  mpz_set_ui (x, 1);
  for (b = 3;b <= ofe - 2; b++)
    {
      for (a = b; (a & 1) == 0; a >>= 1);
      mpz_mul_ui (x, x, a);
      mpz_invert (y, x, mask);
      printf ("),CNST_LIMB(0x");
      mpz_out_str (stdout, 16, y);
    }
  printf (")\n");

  ofe = (ofe / 16 + 1) * 16;

  printf
    ("\n/* This table contains 2n-popc(2n) for small n */\n");
  printf
    ("\n/* It begins with 2-1=1 (n=1) */\n");
  printf
    ("#define TABLE_2N_MINUS_POPC_2N 1");
  for (b = 4; b <= ofe; b += 2)
    {
      mpz_set_ui (x, b);
      printf (",%lu",b - mpz_popcount (x));
    }
  printf ("\n");
  printf
    ("#define TABLE_LIMIT_2N_MINUS_POPC_2N %lu\n", ofe + 1);


  ofl = (ofl + 1) / 2;
  printf
    ("#define ODD_CENTRAL_BINOMIAL_OFFSET (%lu)\n", ofl);
  printf
    ("\n/* This table contains binomial(2k,k)/2^t */\n");
  printf
    ("\n/* It begins with ODD_CENTRAL_BINOMIAL_TABLE_MIN */\n");
  printf
    ("#define ONE_LIMB_ODD_CENTRAL_BINOMIAL_TABLE ");
  for (b = ofl;; b++)
    {
      mpz_bin_uiui (x, 2 * b, b);
      mpz_remove_twos (x);
      if (mpz_sizeinbase (x, 2) > numb)
	break;
      if (b != ofl)
	printf ("),");
      printf("CNST_LIMB(0x");
      mpz_out_str (stdout, 16, x);
    }
  printf (")\n");

  ofe = b - 1;
  printf
    ("#define ODD_CENTRAL_BINOMIAL_TABLE_LIMIT (%lu)\n", ofe);

  printf
    ("\n/* This table contains the inverses of elements in the previous table. */\n");
  printf
    ("#define ONE_LIMB_ODD_CENTRAL_BINOMIAL_INVERSE_TABLE CNST_LIMB(0x");
  for (b = ofl; b <= ofe; b++)
    {
      mpz_bin_uiui (x, 2 * b, b);
      mpz_remove_twos (x);
      mpz_invert (x, x, mask);
      mpz_out_str (stdout, 16, x);
      if (b != ofe)
	printf ("),CNST_LIMB(0x");
    }
  printf (")\n");

  printf
    ("\n/* This table contains the values t in the formula binomial(2k,k)/2^t */\n");
  printf
    ("#define CENTRAL_BINOMIAL_2FAC_TABLE ");
  for (b = ofl; b <= ofe; b++)
    {
      mpz_bin_uiui (x, 2 * b, b);
      printf ("%d", mpz_remove_twos (x));
      if (b != ofe)
	printf (",");
    }
  printf ("\n");

  return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movl %edi, -0x4(%rbp)
movl %esi, -0x8(%rbp)
movl %edx, -0xc(%rbp)
leaq 0x3309(%rip), %rdi      # 0xeb64
movb $0x0, %al
callq 0x1060
movl -0x4(%rbp), %esi
leaq 0x3332(%rip), %rdi      # 0xeb9e
movb $0x0, %al
callq 0x1060
movl -0x4(%rbp), %esi
leaq 0x333a(%rip), %rdi      # 0xebb7
movb $0x0, %al
callq 0x1060
leaq 0x3362(%rip), %rdi      # 0xebed
movb $0x0, %al
callq 0x1060
leaq 0x335c(%rip), %rdi      # 0xebf5
movb $0x0, %al
callq 0x1060
leaq 0x3399(%rip), %rdi      # 0xec40
movb $0x0, %al
callq 0x1060
leaq -0x20(%rbp), %rdi
movl $0x1, %esi
callq 0x3520
leaq -0x50(%rbp), %rdi
callq 0x31e0
movq $0x2, -0x60(%rbp)
leaq -0x20(%rbp), %rdi
leaq -0x20(%rbp), %rsi
movq -0x60(%rbp), %rdx
callq 0x4d50
leaq -0x20(%rbp), %rdi
movl $0x2, %esi
callq 0x8230
movslq -0x4(%rbp), %rcx
cmpq %rcx, %rax
jbe 0xb8f7
jmp 0xb92b
leaq 0x3380(%rip), %rdi      # 0xec7e
movb $0x0, %al
callq 0x1060
movq 0x76cc(%rip), %rax      # 0x12fd8
movq (%rax), %rdi
leaq -0x20(%rbp), %rdx
movl $0x10, %esi
callq 0xacd0
movq -0x60(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x60(%rbp)
jmp 0xb8cd
leaq 0x3820(%rip), %rdi      # 0xf152
movb $0x0, %al
callq 0x1060
leaq 0x334d(%rip), %rdi      # 0xec8d
movb $0x0, %al
callq 0x1060
leaq 0x3385(%rip), %rdi      # 0xecd3
movb $0x0, %al
callq 0x1060
leaq 0x33bc(%rip), %rdi      # 0xed18
movb $0x0, %al
callq 0x1060
leaq -0x20(%rbp), %rdi
movl $0x1, %esi
callq 0x3350
movq $0x3, -0x60(%rbp)
movq -0x60(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rax
andq $0x1, %rax
cmpq $0x0, %rax
jne 0xb99e
jmp 0xb991
movq -0x58(%rbp), %rax
shrq %rax
movq %rax, -0x58(%rbp)
jmp 0xb981
leaq -0x50(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0x4480
leaq -0x20(%rbp), %rdi
leaq -0x50(%rbp), %rsi
movq -0x58(%rbp), %rdx
callq 0x4d50
leaq -0x20(%rbp), %rdi
movl $0x2, %esi
callq 0x8230
movslq -0x4(%rbp), %rcx
cmpq %rcx, %rax
jbe 0xb9d5
jmp 0xba0c
leaq 0x32a2(%rip), %rdi      # 0xec7e
movb $0x0, %al
callq 0x1060
movq 0x75ee(%rip), %rax      # 0x12fd8
movq (%rax), %rdi
leaq -0x20(%rbp), %rdx
movl $0x10, %esi
callq 0xacd0
movq -0x60(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x60(%rbp)
jmp 0xb979
leaq 0x373f(%rip), %rdi      # 0xf152
movb $0x0, %al
callq 0x1060
leaq 0x3348(%rip), %rdi      # 0xed69
movb $0x0, %al
callq 0x1060
movq 0x75a9(%rip), %rax      # 0x12fd8
movq (%rax), %rdi
leaq -0x50(%rbp), %rdx
movl $0x10, %esi
callq 0xacd0
leaq 0x370b(%rip), %rdi      # 0xf152
movb $0x0, %al
callq 0x1060
movq -0x60(%rbp), %rax
subq $0x1, %rax
movq %rax, -0x68(%rbp)
movq -0x68(%rbp), %rsi
leaq 0x3331(%rip), %rdi      # 0xed96
movb $0x0, %al
callq 0x1060
leaq -0x30(%rbp), %rdi
movl -0x4(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rsi
callq 0x3250
leaq -0x30(%rbp), %rdi
movslq -0x4(%rbp), %rsi
callq 0x7420
leaq -0x30(%rbp), %rdi
leaq -0x30(%rbp), %rsi
movl $0x1, %edx
callq 0x47c0
leaq 0x331b(%rip), %rdi      # 0xedbf
movb $0x0, %al
callq 0x1060
leaq 0x334e(%rip), %rdi      # 0xee00
movb $0x0, %al
callq 0x1060
leaq -0x20(%rbp), %rdi
leaq -0x20(%rbp), %rsi
leaq -0x30(%rbp), %rdx
callq 0x91f0
movq 0x7507(%rip), %rax      # 0x12fd8
movq (%rax), %rdi
leaq -0x20(%rbp), %rdx
movl $0x10, %esi
callq 0xacd0
leaq -0x40(%rbp), %rdi
callq 0x31e0
leaq -0x40(%rbp), %rdi
movq -0x60(%rbp), %rsi
movq -0x60(%rbp), %rdx
shrq %rdx
callq 0x87b0
movq -0x60(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rax
andq $0x1, %rax
cmpq $0x0, %rax
jne 0xbb30
jmp 0xbb23
movq -0x58(%rbp), %rax
shrq %rax
movq %rax, -0x58(%rbp)
jmp 0xbb13
movq -0x58(%rbp), %rax
cmpq -0x60(%rbp), %rax
jne 0xbb65
leaq -0x40(%rbp), %rdi
leaq -0x40(%rbp), %rsi
movq -0x58(%rbp), %rdx
shrq %rdx
addq $0x1, %rdx
callq 0x66e0
leaq -0x40(%rbp), %rdi
leaq -0x40(%rbp), %rsi
movq -0x58(%rbp), %rdx
callq 0x4d50
jmp 0xbb77
leaq -0x40(%rbp), %rdi
leaq -0x40(%rbp), %rsi
movl $0x1, %edx
callq 0x5000
leaq -0x40(%rbp), %rdi
movl $0x2, %esi
callq 0x8230
movslq -0x4(%rbp), %rcx
cmpq %rcx, %rax
jbe 0xbb90
jmp 0xbbe9
leaq -0x20(%rbp), %rdi
leaq -0x20(%rbp), %rsi
movq -0x58(%rbp), %rdx
callq 0x4d50
leaq -0x20(%rbp), %rdi
leaq -0x20(%rbp), %rsi
leaq -0x30(%rbp), %rdx
callq 0x91f0
leaq 0x30c5(%rip), %rdi      # 0xec7e
movb $0x0, %al
callq 0x1060
movq 0x7411(%rip), %rax      # 0x12fd8
movq (%rax), %rdi
leaq -0x20(%rbp), %rdx
movl $0x10, %esi
callq 0xacd0
movq -0x60(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x60(%rbp)
jmp 0xbb0b
leaq 0x3562(%rip), %rdi      # 0xf152
movb $0x0, %al
callq 0x1060
movq -0x60(%rbp), %rax
subq $0x1, %rax
movq %rax, -0x70(%rbp)
movq -0x70(%rbp), %rsi
leaq 0x3227(%rip), %rdi      # 0xee35
movb $0x0, %al
callq 0x1060
leaq 0x3245(%rip), %rdi      # 0xee61
movb $0x0, %al
callq 0x1060
leaq 0x328b(%rip), %rdi      # 0xeeb5
movb $0x0, %al
callq 0x1060
leaq -0x20(%rbp), %rdi
movl $0x1, %esi
callq 0x3350
movq $0x3, -0x60(%rbp)
leaq -0x50(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0x4480
leaq -0x20(%rbp), %rdi
leaq -0x50(%rbp), %rsi
movq -0x60(%rbp), %rdx
callq 0x4d50
leaq -0x20(%rbp), %rdi
movl $0x2, %esi
callq 0x8230
movslq -0x4(%rbp), %rcx
cmpq %rcx, %rax
jbe 0xbc7e
jmp 0xbcb2
leaq 0x2ff9(%rip), %rdi      # 0xec7e
movb $0x0, %al
callq 0x1060
movq 0x7345(%rip), %rax      # 0x12fd8
movq (%rax), %rdi
leaq -0x20(%rbp), %rdx
movl $0x10, %esi
callq 0xacd0
movq -0x60(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x60(%rbp)
jmp 0xbc47
leaq 0x3499(%rip), %rdi      # 0xf152
movb $0x0, %al
callq 0x1060
leaq 0x3227(%rip), %rdi      # 0xeeee
movb $0x0, %al
callq 0x1060
movq 0x7303(%rip), %rax      # 0x12fd8
movq (%rax), %rdi
leaq -0x50(%rbp), %rdx
movl $0x10, %esi
callq 0xacd0
leaq 0x3465(%rip), %rdi      # 0xf152
movb $0x0, %al
callq 0x1060
movq -0x60(%rbp), %rsi
subq $0x2, %rsi
leaq 0x321e(%rip), %rdi      # 0xef21
movb $0x0, %al
callq 0x1060
leaq 0x323f(%rip), %rdi      # 0xef50
movb $0x0, %al
callq 0x1060
leaq 0x3286(%rip), %rdi      # 0xefa5
movb $0x0, %al
callq 0x1060
movq $0x2, -0x60(%rbp)
cmpq $0x8, -0x60(%rbp)
ja 0xbd7a
leaq -0x20(%rbp), %rdi
leaq -0x30(%rbp), %rsi
movq -0x60(%rbp), %rdx
callq 0x8450
leaq 0x2f31(%rip), %rdi      # 0xec7e
movb $0x0, %al
callq 0x1060
movq 0x727d(%rip), %rax      # 0x12fd8
movq (%rax), %rdi
leaq -0x20(%rbp), %rdx
movl $0x10, %esi
callq 0xacd0
movq -0x60(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x60(%rbp)
jmp 0xbd2e
leaq 0x33d1(%rip), %rdi      # 0xf152
movb $0x0, %al
callq 0x1060
leaq -0x30(%rbp), %rdi
leaq -0x30(%rbp), %rsi
movl $0x1, %edx
callq 0x4510
leaq 0x3234(%rip), %rdi      # 0xefd5
movb $0x0, %al
callq 0x1060
leaq 0x3275(%rip), %rdi      # 0xf024
movb $0x0, %al
callq 0x1060
leaq 0x328a(%rip), %rdi      # 0xf047
movb $0x0, %al
callq 0x1060
leaq -0x20(%rbp), %rdi
movl $0x1, %esi
callq 0x3350
movq $0x3, -0x60(%rbp)
movq -0x60(%rbp), %rax
movq -0x70(%rbp), %rcx
subq $0x2, %rcx
cmpq %rcx, %rax
ja 0xbe69
movq -0x60(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rax
andq $0x1, %rax
cmpq $0x0, %rax
jne 0xbe10
jmp 0xbe03
movq -0x58(%rbp), %rax
shrq %rax
movq %rax, -0x58(%rbp)
jmp 0xbdf3
leaq -0x20(%rbp), %rdi
leaq -0x20(%rbp), %rsi
movq -0x58(%rbp), %rdx
callq 0x4d50
leaq -0x40(%rbp), %rdi
leaq -0x20(%rbp), %rsi
leaq -0x30(%rbp), %rdx
callq 0x7580
leaq 0x2e45(%rip), %rdi      # 0xec7e
movb $0x0, %al
callq 0x1060
movq 0x7191(%rip), %rax      # 0x12fd8
movq (%rax), %rdi
leaq -0x40(%rbp), %rdx
movl $0x10, %esi
callq 0xacd0
movq -0x60(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x60(%rbp)
jmp 0xbdda
leaq 0x32e2(%rip), %rdi      # 0xf152
movb $0x0, %al
callq 0x1060
movq -0x70(%rbp), %rax
shrq $0x4, %rax
addq $0x1, %rax
shlq $0x4, %rax
movq %rax, -0x70(%rbp)
leaq 0x31f1(%rip), %rdi      # 0xf083
movb $0x0, %al
callq 0x1060
leaq 0x3217(%rip), %rdi      # 0xf0b7
movb $0x0, %al
callq 0x1060
leaq 0x322c(%rip), %rdi      # 0xf0da
movb $0x0, %al
callq 0x1060
movq $0x4, -0x60(%rbp)
movq -0x60(%rbp), %rax
cmpq -0x70(%rbp), %rax
ja 0xbf08
leaq -0x20(%rbp), %rdi
movq -0x60(%rbp), %rsi
callq 0x3350
movq -0x60(%rbp), %rax
movq %rax, -0x78(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x9e20
movq -0x78(%rbp), %rsi
subq %rax, %rsi
leaq 0x3208(%rip), %rdi      # 0xf0fb
movb $0x0, %al
callq 0x1060
movq -0x60(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x60(%rbp)
jmp 0xbebd
leaq 0x2c8d(%rip), %rdi      # 0xeb9c
movb $0x0, %al
callq 0x1060
movq -0x70(%rbp), %rsi
addq $0x1, %rsi
leaq 0x31db(%rip), %rdi      # 0xf100
movb $0x0, %al
callq 0x1060
movq -0x68(%rbp), %rax
addq $0x1, %rax
shrq %rax
movq %rax, -0x68(%rbp)
movq -0x68(%rbp), %rsi
leaq 0x31e4(%rip), %rdi      # 0xf12a
movb $0x0, %al
callq 0x1060
leaq 0x3201(%rip), %rdi      # 0xf155
movb $0x0, %al
callq 0x1060
leaq 0x3222(%rip), %rdi      # 0xf184
movb $0x0, %al
callq 0x1060
leaq 0x324a(%rip), %rdi      # 0xf1ba
movb $0x0, %al
callq 0x1060
movq -0x68(%rbp), %rax
movq %rax, -0x60(%rbp)
leaq -0x20(%rbp), %rdi
movq -0x60(%rbp), %rsi
shlq %rsi
movq -0x60(%rbp), %rdx
callq 0x87b0
leaq -0x20(%rbp), %rdi
callq 0xb800
leaq -0x20(%rbp), %rdi
movl $0x2, %esi
callq 0x8230
movslq -0x4(%rbp), %rcx
cmpq %rcx, %rax
jbe 0xbfb5
jmp 0xc004
movq -0x60(%rbp), %rax
cmpq -0x68(%rbp), %rax
je 0xbfcd
leaq 0x3221(%rip), %rdi      # 0xf1e7
movb $0x0, %al
callq 0x1060
leaq 0x2e54(%rip), %rdi      # 0xee28
movb $0x0, %al
callq 0x1060
movq 0x6ff6(%rip), %rax      # 0x12fd8
movq (%rax), %rdi
leaq -0x20(%rbp), %rdx
movl $0x10, %esi
callq 0xacd0
movq -0x60(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x60(%rbp)
jmp 0xbf7f
leaq 0x3147(%rip), %rdi      # 0xf152
movb $0x0, %al
callq 0x1060
movq -0x60(%rbp), %rax
subq $0x1, %rax
movq %rax, -0x70(%rbp)
movq -0x70(%rbp), %rsi
leaq 0x31c1(%rip), %rdi      # 0xf1ea
movb $0x0, %al
callq 0x1060
leaq 0x31e3(%rip), %rdi      # 0xf21a
movb $0x0, %al
callq 0x1060
leaq 0x3221(%rip), %rdi      # 0xf266
movb $0x0, %al
callq 0x1060
movq -0x68(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rax
cmpq -0x70(%rbp), %rax
ja 0xc0cc
leaq -0x20(%rbp), %rdi
movq -0x60(%rbp), %rsi
shlq %rsi
movq -0x60(%rbp), %rdx
callq 0x87b0
leaq -0x20(%rbp), %rdi
callq 0xb800
leaq -0x20(%rbp), %rdi
leaq -0x20(%rbp), %rsi
leaq -0x30(%rbp), %rdx
callq 0x7580
movq 0x6f45(%rip), %rax      # 0x12fd8
movq (%rax), %rdi
leaq -0x20(%rbp), %rdx
movl $0x10, %esi
callq 0xacd0
movq -0x60(%rbp), %rax
cmpq -0x70(%rbp), %rax
je 0xc0bc
leaq 0x2bc9(%rip), %rdi      # 0xec7e
movb $0x0, %al
callq 0x1060
jmp 0xc0be
movq -0x60(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x60(%rbp)
jmp 0xc054
leaq 0x307f(%rip), %rdi      # 0xf152
movb $0x0, %al
callq 0x1060
leaq 0x31c6(%rip), %rdi      # 0xf2a7
movb $0x0, %al
callq 0x1060
leaq 0x3203(%rip), %rdi      # 0xf2f2
movb $0x0, %al
callq 0x1060
movq -0x68(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rax
cmpq -0x70(%rbp), %rax
ja 0xc15d
leaq -0x20(%rbp), %rdi
movq -0x60(%rbp), %rsi
shlq %rsi
movq -0x60(%rbp), %rdx
callq 0x87b0
leaq -0x20(%rbp), %rdi
callq 0xb800
movl %eax, %esi
leaq 0x31e9(%rip), %rdi      # 0xf317
movb $0x0, %al
callq 0x1060
movq -0x60(%rbp), %rax
cmpq -0x70(%rbp), %rax
je 0xc14d
leaq 0x30a2(%rip), %rdi      # 0xf1e8
movb $0x0, %al
callq 0x1060
jmp 0xc14f
movq -0x60(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x60(%rbp)
jmp 0xc0fe
leaq 0x2a38(%rip), %rdi      # 0xeb9c
movb $0x0, %al
callq 0x1060
xorl %eax, %eax
addq $0x80, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)