// File: /workspace/github_c_makefile_star2_O1/theck01[P]offbrand_lib/src/tests/obint_test.c
// Function: main
int main (){

  obint *a, *b, *c;
  obstring *str1, *str2;

  /* test machine integer creation and value methods */
  a = obint_new(1024);
  assert(obint_value(a) == 1024);
  b = obint_new(9581085);
  assert(obint_value(b) == 9581085);
  c = obint_new(-999);
  assert(obint_value(c) == -999);

  ob_release((obj *)a);
  ob_release((obj *)b);
  ob_release((obj *)c);

  /* test string integer creation and value methods */
  str1 = obstring_new("12345");
  a = obint_from_string(str1);
  assert(obint_value(a) == 12345);
  str2 = obint_to_string(a);
  assert(ob_compare((obj *)str1, (obj *)str2) == OB_EQUAL_TO);

  ob_release((obj *)a);
  ob_release((obj *)str1);
  ob_release((obj *)str2);

  str1 = obstring_new("-012345");
  a = obint_from_string(str1);
  ob_release((obj *)str1);
  assert(obint_value(a) == -12345);
  str1 = obstring_new("-12345");
  str2 = obint_to_string(a);
  assert(ob_compare((obj *)str1, (obj *)str2) == OB_EQUAL_TO);

  ob_release((obj *)a);
  ob_release((obj *)str1);
  ob_release((obj *)str2);

  /* test copy method */
  a = obint_new(918394);
  b = obint_copy(a);
  assert(ob_compare((obj *)a, (obj *)b) == OB_EQUAL_TO);
  assert(a != b);
  assert(a->digits != b->digits);

  ob_release((obj *)a);
  ob_release((obj *)b);

  /* test integer zero and negative methods */
  a = obint_new(1948);
  b = obint_new(-1);
  str1 = obstring_new("-0");
  c = obint_from_string(str1);
  ob_release((obj *)str1);

  assert(!obint_is_zero(a));
  assert(!obint_is_zero(b));
  assert(obint_is_zero(c));

  assert(!obint_is_negative(a));
  assert(obint_is_negative(b));
  assert(!obint_is_negative(c));

  ob_release((obj *)a);
  ob_release((obj *)b);
  ob_release((obj *)c);

  /* test integer addition */
  a = obint_new(999);
  b = obint_add_primitive(a, 1111);
  assert(obint_value(b) == 2110);
  c = obint_add(a, b);
  assert(obint_value(c) == 2110 + 999);

  ob_release((obj *)a);
  ob_release((obj *)b);
  ob_release((obj *)c);

  a = obint_new(-999);
  b = obint_add_primitive(a, 1);
  assert(obint_value(b) == -998);
  ob_release((obj *)b);
  b = obint_add_primitive(a, -1);
  assert(obint_value(b) == -1000);
  ob_release((obj *)b);
  b = obint_new(1000);
  c = obint_add(a, b);
  assert(obint_value(c) == 1);

  ob_release((obj *)a);
  ob_release((obj *)b);
  ob_release((obj *)c);

  /* test integer subtraction */
  a = obint_new(999);
  b = obint_subtract_primitive(a, 1111);
  assert(obint_value(b) == -112);
  c = obint_subtract(a, b);
  assert(obint_value(c) == 999 + 112);

  ob_release((obj *)a);
  ob_release((obj *)b);
  ob_release((obj *)c);

  a = obint_new(-999);
  b = obint_subtract_primitive(a, 1);
  assert(obint_value(b) == -1000);
  ob_release((obj *)b);
  b = obint_subtract_primitive(a, -1);
  assert(obint_value(b) == -998);
  ob_release((obj *)b);
  b = obint_new(1000);
  c = obint_subtract(a, b);
  assert(obint_value(c) == -1999);

  ob_release((obj *)a);
  ob_release((obj *)b);
  ob_release((obj *)c);

  /* test integer multiplication (size under digit limit for explicit integer
   * arithmetic) */
  a = obint_new(999);
  b = obint_multiply_primitive(a, -999);
  assert(obint_value(b) == 999*-999);
  c = obint_multiply(a, b);
  assert(obint_value(c) == 999*999*-999);

  ob_release((obj *)a);
  ob_release((obj *)b);
  ob_release((obj *)c);

  a = obint_new(-1928491);
  b = obint_multiply_primitive(a, -58);
  assert(obint_value(b) == -1928491*-58);
  ob_release((obj *)b);
  b = obint_new(2);
  c = obint_multiply(a, b);
  assert(obint_value(c) == -1928491*2);

  ob_release((obj *)a);
  ob_release((obj *)b);
  ob_release((obj *)c);

  a = obint_new(29458);
  b = obint_multiply_primitive(a, 0);
  assert(obint_is_zero(b) != 0);

  ob_release((obj *)a);
  ob_release((obj *)b);

  /* test integer division (size under digit limit for explicit integer
   * arithmetic) */
  a = obint_new(999);
  b = obint_divide_primitive(a, -999);
  assert(obint_value(b) == -1);
  c = obint_divide_primitive(a, 33);
  assert(obint_value(c) == 999/33);

  ob_release((obj *)a);
  ob_release((obj *)b);
  ob_release((obj *)c);

  a = obint_new(1940248);
  b = obint_divide_primitive(a, -2848);
  assert(obint_value(b) == 1940248/(-2848));
  c = obint_divide(a, b);
  assert(obint_value(c) == 1940248/(1940248/(-2848)));

  ob_release((obj *)a);
  ob_release((obj *)b);
  ob_release((obj *)c);

  /* test integer modulus (size under digit limit for explicit integer
   * arithmetic) */
  a = obint_new(999);
  b = obint_mod_primitive(a, -999);
  assert(obint_value(b) == 999%(-999));
  c = obint_mod_primitive(a, 33);
  assert(obint_value(c) == 999%33);

  ob_release((obj *)a);
  ob_release((obj *)b);
  ob_release((obj *)c);

  a = obint_new(1940248);
  b = obint_mod_primitive(a, -2848);
  assert(obint_value(b) == 1940248%(-2848));
  c = obint_mod(a, b);
  assert(obint_value(c) == 1940248%(1940248%(-2848)));

  ob_release((obj *)a);
  ob_release((obj *)b);
  ob_release((obj *)c);

  /* set digit limit for integer arithmetic low, for test purposes */
  obint_set_max_digits(2);

  /* test integer multiplication (size over digit limit for explicit integer
   * arithmetic) */
  a = obint_new(999);
  b = obint_multiply_primitive(a, -999);
  assert(obint_value(b) == 999*-999);
  c = obint_multiply(a, b);
  assert(obint_value(c) == 999*999*-999);

  ob_release((obj *)a);
  ob_release((obj *)b);
  ob_release((obj *)c);

  a = obint_new(-1928491);
  b = obint_multiply_primitive(a, -58);
  assert(obint_value(b) == -1928491*-58);
  ob_release((obj *)b);
  b = obint_new(2);
  c = obint_multiply(a, b);
  assert(obint_value(c) == -1928491*2);

  ob_release((obj *)a);
  ob_release((obj *)b);
  ob_release((obj *)c);

  a = obint_new(29458);
  b = obint_multiply_primitive(a, 0);
  assert(obint_is_zero(b) != 0);

  ob_release((obj *)a);
  ob_release((obj *)b);

  /* test integer division (size under digit limit for explicit integer
   * arithmetic) */
  a = obint_new(999);
  b = obint_divide_primitive(a, -999);
  assert(obint_value(b) == -1);
  c = obint_divide_primitive(a, 33);
  assert(obint_value(c) == 999/33);

  ob_release((obj *)a);
  ob_release((obj *)b);
  ob_release((obj *)c);

  a = obint_new(1940248);
  b = obint_divide_primitive(a, -2848);
  assert(obint_value(b) == 1940248/(-2848));
  c = obint_divide(a, b);
  assert(obint_value(c) == 1940248/(1940248/(-2848)));

  ob_release((obj *)a);
  ob_release((obj *)b);
  ob_release((obj *)c);

  /* test integer modulus (size over digit limit for explicit integer
   * arithmetic) */
  a = obint_new(999);
  b = obint_mod_primitive(a, -999);
  assert(obint_value(b) == 999%(-999));
  c = obint_mod_primitive(a, 33);
  assert(obint_value(c) == 999%33);

  ob_release((obj *)a);
  ob_release((obj *)b);
  ob_release((obj *)c);

  a = obint_new(1940248);
  b = obint_mod_primitive(a, -2848);
  assert(obint_value(b) == 1940248%(-2848));
  c = obint_mod(a, b);
  assert(obint_value(c) == 1940248%(1940248%(-2848)));

  ob_release((obj *)a);
  ob_release((obj *)b);
  ob_release((obj *)c);

  printf("obint: TESTS PASSED\n");
  return 0;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movl $0x400, %edi            # imm = 0x400
callq 0x2490
movq %rax, %rbx
movq %rax, %rdi
callq 0x25e5
cmpq $0x400, %rax            # imm = 0x400
jne 0x1e42
movl $0x92321d, %edi         # imm = 0x92321D
callq 0x2490
movq %rax, %r14
movq %rax, %rdi
callq 0x25e5
cmpq $0x92321d, %rax         # imm = 0x92321D
jne 0x1e61
movq $-0x3e7, %rdi           # imm = 0xFC19
callq 0x2490
movq %rax, %r15
movq %rax, %rdi
callq 0x25e5
cmpq $-0x3e7, %rax           # imm = 0xFC19
jne 0x1e80
movq %rbx, %rdi
callq 0x51fa
movq %r14, %rdi
callq 0x51fa
movq %r15, %rdi
callq 0x51fa
leaq 0x4c28(%rip), %rdi      # 0x6080
callq 0x3c04
movq %rax, %rbx
movq %rax, %rdi
callq 0x2668
movq %rax, %r14
movq %rax, %rdi
callq 0x25e5
cmpq $0x3039, %rax           # imm = 0x3039
jne 0x1e9f
movq %r14, %rdi
callq 0x27c3
movq %rax, %r15
movq %rbx, %rdi
movq %rax, %rsi
callq 0x5177
testb %al, %al
jne 0x1ebe
movq %r14, %rdi
callq 0x51fa
movq %rbx, %rdi
callq 0x51fa
movq %r15, %rdi
callq 0x51fa
leaq 0x4bfe(%rip), %rdi      # 0x60ba
callq 0x3c04
movq %rax, %r14
movq %rax, %rdi
callq 0x2668
movq %rax, %rbx
movq %r14, %rdi
callq 0x51fa
movq %rbx, %rdi
callq 0x25e5
cmpq $-0x3039, %rax          # imm = 0xCFC7
jne 0x1edd
leaq 0x4be2(%rip), %rdi      # 0x60d4
callq 0x3c04
movq %rax, %r14
movq %rbx, %rdi
callq 0x27c3
movq %rax, %r15
movq %r14, %rdi
movq %rax, %rsi
callq 0x5177
testb %al, %al
jne 0x1efc
movq %rbx, %rdi
callq 0x51fa
movq %r14, %rdi
callq 0x51fa
movq %r15, %rdi
callq 0x51fa
movl $0xe037a, %edi          # imm = 0xE037A
callq 0x2490
movq %rax, %rbx
movq %rax, %rdi
callq 0x287e
movq %rax, %r14
movq %rbx, %rdi
movq %rax, %rsi
callq 0x5177
testb %al, %al
jne 0x1f1b
cmpq %r14, %rbx
je 0x1f3a
movq 0x10(%rbx), %rax
cmpq 0x10(%r14), %rax
je 0x1f59
movq %rbx, %rdi
callq 0x51fa
movq %r14, %rdi
callq 0x51fa
movl $0x79c, %edi            # imm = 0x79C
callq 0x2490
movq %rax, %rbx
movq $-0x1, %rdi
callq 0x2490
movq %rax, %r14
leaq 0x4b82(%rip), %rdi      # 0x6127
callq 0x3c04
movq %rax, %r12
movq %rax, %rdi
callq 0x2668
movq %rax, %r15
movq %r12, %rdi
callq 0x51fa
movq %rbx, %rdi
callq 0x2771
testb %al, %al
jne 0x1f78
movq %r14, %rdi
callq 0x2771
testb %al, %al
jne 0x1f97
movq %r15, %rdi
callq 0x2771
testb %al, %al
je 0x1fb6
movq %rbx, %rdi
callq 0x28fb
testb %al, %al
jne 0x1fd5
movq %r14, %rdi
callq 0x28fb
testb %al, %al
je 0x1ff4
movq %r15, %rdi
callq 0x28fb
testb %al, %al
jne 0x2013
movq %rbx, %rdi
callq 0x51fa
movq %r14, %rdi
callq 0x51fa
movq %r15, %rdi
callq 0x51fa
movl $0x3e7, %edi            # imm = 0x3E7
callq 0x2490
movq %rax, %rbx
movl $0x457, %esi            # imm = 0x457
movq %rax, %rdi
callq 0x2cc8
movq %rax, %r14
movq %rax, %rdi
callq 0x25e5
cmpq $0x83e, %rax            # imm = 0x83E
jne 0x2032
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2928
movq %rax, %r15
movq %rax, %rdi
callq 0x25e5
cmpq $0xc25, %rax            # imm = 0xC25
jne 0x2051
movq %rbx, %rdi
callq 0x51fa
movq %r14, %rdi
callq 0x51fa
movq %r15, %rdi
callq 0x51fa
movq $-0x3e7, %rdi           # imm = 0xFC19
callq 0x2490
movq %rax, %rbx
movl $0x1, %esi
movq %rax, %rdi
callq 0x2cc8
movq %rax, %r14
movq %rax, %rdi
callq 0x25e5
cmpq $-0x3e6, %rax           # imm = 0xFC1A
jne 0x2070
movq %r14, %rdi
callq 0x51fa
movq %rbx, %rdi
movq $-0x1, %rsi
callq 0x2cc8
movq %rax, %r14
movq %rax, %rdi
callq 0x25e5
cmpq $-0x3e8, %rax           # imm = 0xFC18
jne 0x208f
movq %r14, %rdi
callq 0x51fa
movl $0x3e8, %edi            # imm = 0x3E8
callq 0x2490
movq %rax, %r14
movq %rbx, %rdi
movq %rax, %rsi
callq 0x2928
movq %rax, %r15
movq %rax, %rdi
callq 0x25e5
cmpq $0x1, %rax
jne 0x20ae
movq %rbx, %rdi
callq 0x51fa
movq %r14, %rdi
callq 0x51fa
movq %r15, %rdi
callq 0x51fa
movl $0x3e7, %edi            # imm = 0x3E7
callq 0x2490
movq %rax, %rbx
movl $0x457, %esi            # imm = 0x457
movq %rax, %rdi
callq 0x2dfa
movq %rax, %r14
movq %rax, %rdi
callq 0x25e5
cmpq $-0x70, %rax
jne 0x20cd
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2d1f
movq %rax, %r15
movq %rax, %rdi
callq 0x25e5
cmpq $0x457, %rax            # imm = 0x457
jne 0x20ec
movq %rbx, %rdi
callq 0x51fa
movq %r14, %rdi
callq 0x51fa
movq %r15, %rdi
callq 0x51fa
movq $-0x3e7, %rdi           # imm = 0xFC19
callq 0x2490
movq %rax, %rbx
movl $0x1, %esi
movq %rax, %rdi
callq 0x2dfa
movq %rax, %r14
movq %rax, %rdi
callq 0x25e5
cmpq $-0x3e8, %rax           # imm = 0xFC18
jne 0x210b
movq %r14, %rdi
callq 0x51fa
movq %rbx, %rdi
movq $-0x1, %rsi
callq 0x2dfa
movq %rax, %r14
movq %rax, %rdi
callq 0x25e5
cmpq $-0x3e6, %rax           # imm = 0xFC1A
jne 0x212a
movq %r14, %rdi
callq 0x51fa
movl $0x3e8, %edi            # imm = 0x3E8
callq 0x2490
movq %rax, %r14
movq %rbx, %rdi
movq %rax, %rsi
callq 0x2d1f
movq %rax, %r15
movq %rax, %rdi
callq 0x25e5
cmpq $-0x7cf, %rax           # imm = 0xF831
jne 0x2149
movq %rbx, %rdi
callq 0x51fa
movq %r14, %rdi
callq 0x51fa
movq %r15, %rdi
callq 0x51fa
movl $0x3e7, %edi            # imm = 0x3E7
callq 0x2490
movq %rax, %rbx
movq %rax, %rdi
movq $-0x3e7, %rsi           # imm = 0xFC19
callq 0x318c
movq %rax, %r14
movq %rax, %rdi
callq 0x25e5
cmpq $-0xf3a71, %rax         # imm = 0xFFF0C58F
jne 0x2168
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2e51
movq %rax, %r15
movq %rax, %rdi
callq 0x25e5
cmpq $-0x3b6d0ef7, %rax      # imm = 0xC492F109
jne 0x2187
movq %rbx, %rdi
callq 0x51fa
movq %r14, %rdi
callq 0x51fa
movq %r15, %rdi
callq 0x51fa
movq $-0x1d6d2b, %rdi        # imm = 0xFFE292D5
callq 0x2490
movq %rax, %rbx
movq %rax, %rdi
movq $-0x3a, %rsi
callq 0x318c
movq %rax, %r14
movq %rax, %rdi
callq 0x25e5
cmpq $0x6aabbbe, %rax        # imm = 0x6AABBBE
jne 0x21a6
movq %r14, %rdi
callq 0x51fa
movl $0x2, %edi
callq 0x2490
movq %rax, %r14
movq %rbx, %rdi
movq %rax, %rsi
callq 0x2e51
movq %rax, %r15
movq %rax, %rdi
callq 0x25e5
cmpq $-0x3ada56, %rax        # imm = 0xFFC525AA
jne 0x21c5
movq %rbx, %rdi
callq 0x51fa
movq %r14, %rdi
callq 0x51fa
movq %r15, %rdi
callq 0x51fa
movl $0x7312, %edi           # imm = 0x7312
callq 0x2490
movq %rax, %rbx
movq %rax, %rdi
xorl %esi, %esi
callq 0x318c
movq %rax, %r14
movq %rax, %rdi
callq 0x2771
testb %al, %al
je 0x21e4
movq %rbx, %rdi
callq 0x51fa
movq %r14, %rdi
callq 0x51fa
movl $0x3e7, %edi            # imm = 0x3E7
callq 0x2490
movq %rax, %rbx
movq %rax, %rdi
movq $-0x3e7, %rsi           # imm = 0xFC19
callq 0x3629
movq %rax, %r14
movq %rax, %rdi
callq 0x25e5
cmpq $-0x1, %rax
jne 0x2203
movl $0x21, %esi
movq %rbx, %rdi
callq 0x3629
movq %rax, %r15
movq %rax, %rdi
callq 0x25e5
cmpq $0x1e, %rax
jne 0x2222
movq %rbx, %rdi
callq 0x51fa
movq %r14, %rdi
callq 0x51fa
movq %r15, %rdi
callq 0x51fa
movl $0x1d9b18, %edi         # imm = 0x1D9B18
callq 0x2490
movq %rax, %rbx
movq %rax, %rdi
movq $-0xb20, %rsi           # imm = 0xF4E0
callq 0x3629
movq %rax, %r14
movq %rax, %rdi
callq 0x25e5
cmpq $-0x2a9, %rax           # imm = 0xFD57
jne 0x2241
movq %rbx, %rdi
movq %r14, %rsi
callq 0x31e3
movq %rax, %r15
movq %rax, %rdi
callq 0x25e5
cmpq $-0xb21, %rax           # imm = 0xF4DF
jne 0x2260
movq %rbx, %rdi
callq 0x51fa
movq %r14, %rdi
callq 0x51fa
movq %r15, %rdi
callq 0x51fa
movl $0x3e7, %edi            # imm = 0x3E7
callq 0x2490
movq %rax, %rbx
movq %rax, %rdi
movq $-0x3e7, %rsi           # imm = 0xFC19
callq 0x377f
movq %rax, %r14
movq %rax, %rdi
callq 0x25e5
testq %rax, %rax
jne 0x227f
movl $0x21, %esi
movq %rbx, %rdi
callq 0x377f
movq %rax, %r15
movq %rax, %rdi
callq 0x25e5
cmpq $0x9, %rax
jne 0x229e
movq %rbx, %rdi
callq 0x51fa
movq %r14, %rdi
callq 0x51fa
movq %r15, %rdi
callq 0x51fa
movl $0x1d9b18, %edi         # imm = 0x1D9B18
callq 0x2490
movq %rax, %rbx
movq %rax, %rdi
movq $-0xb20, %rsi           # imm = 0xF4E0
callq 0x377f
movq %rax, %r14
movq %rax, %rdi
callq 0x25e5
cmpq $0x2f8, %rax            # imm = 0x2F8
jne 0x22bd
movq %rbx, %rdi
movq %r14, %rsi
callq 0x36a4
movq %rax, %r15
movq %rax, %rdi
callq 0x25e5
cmpq $0x2d8, %rax            # imm = 0x2D8
jne 0x22dc
movq %rbx, %rdi
callq 0x51fa
movq %r14, %rdi
callq 0x51fa
movq %r15, %rdi
callq 0x51fa
movl $0x2, %edi
callq 0x3bf2
movl $0x3e7, %edi            # imm = 0x3E7
callq 0x2490
movq %rax, %rbx
movq %rax, %rdi
movq $-0x3e7, %rsi           # imm = 0xFC19
callq 0x318c
movq %rax, %r14
movq %rax, %rdi
callq 0x25e5
cmpq $-0xf3a71, %rax         # imm = 0xFFF0C58F
jne 0x22fb
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2e51
movq %rax, %r15
movq %rax, %rdi
callq 0x25e5
cmpq $-0x3b6d0ef7, %rax      # imm = 0xC492F109
jne 0x231a
movq %rbx, %rdi
callq 0x51fa
movq %r14, %rdi
callq 0x51fa
movq %r15, %rdi
callq 0x51fa
movq $-0x1d6d2b, %rdi        # imm = 0xFFE292D5
callq 0x2490
movq %rax, %rbx
movq %rax, %rdi
movq $-0x3a, %rsi
callq 0x318c
movq %rax, %r14
movq %rax, %rdi
callq 0x25e5
cmpq $0x6aabbbe, %rax        # imm = 0x6AABBBE
jne 0x2339
movq %r14, %rdi
callq 0x51fa
movl $0x2, %edi
callq 0x2490
movq %rax, %r14
movq %rbx, %rdi
movq %rax, %rsi
callq 0x2e51
movq %rax, %r15
movq %rax, %rdi
callq 0x25e5
cmpq $-0x3ada56, %rax        # imm = 0xFFC525AA
jne 0x2358
movq %rbx, %rdi
callq 0x51fa
movq %r14, %rdi
callq 0x51fa
movq %r15, %rdi
callq 0x51fa
movl $0x7312, %edi           # imm = 0x7312
callq 0x2490
movq %rax, %rbx
movq %rax, %rdi
xorl %esi, %esi
callq 0x318c
movq %rax, %r14
movq %rax, %rdi
callq 0x2771
testb %al, %al
je 0x2377
movq %rbx, %rdi
callq 0x51fa
movq %r14, %rdi
callq 0x51fa
movl $0x3e7, %edi            # imm = 0x3E7
callq 0x2490
movq %rax, %rbx
movq %rax, %rdi
movq $-0x3e7, %rsi           # imm = 0xFC19
callq 0x3629
movq %rax, %r14
movq %rax, %rdi
callq 0x25e5
cmpq $-0x1, %rax
jne 0x2396
movl $0x21, %esi
movq %rbx, %rdi
callq 0x3629
movq %rax, %r15
movq %rax, %rdi
callq 0x25e5
cmpq $0x1e, %rax
jne 0x23b5
movq %rbx, %rdi
callq 0x51fa
movq %r14, %rdi
callq 0x51fa
movq %r15, %rdi
callq 0x51fa
movl $0x1d9b18, %edi         # imm = 0x1D9B18
callq 0x2490
movq %rax, %rbx
movq %rax, %rdi
movq $-0xb20, %rsi           # imm = 0xF4E0
callq 0x3629
movq %rax, %r14
movq %rax, %rdi
callq 0x25e5
cmpq $-0x2a9, %rax           # imm = 0xFD57
jne 0x23d4
movq %rbx, %rdi
movq %r14, %rsi
callq 0x31e3
movq %rax, %r15
movq %rax, %rdi
callq 0x25e5
cmpq $-0xb21, %rax           # imm = 0xF4DF
jne 0x23f3
movq %rbx, %rdi
callq 0x51fa
movq %r14, %rdi
callq 0x51fa
movq %r15, %rdi
callq 0x51fa
movl $0x3e7, %edi            # imm = 0x3E7
callq 0x2490
movq %rax, %rbx
movq %rax, %rdi
movq $-0x3e7, %rsi           # imm = 0xFC19
callq 0x377f
movq %rax, %r14
movq %rax, %rdi
callq 0x25e5
testq %rax, %rax
jne 0x2412
movl $0x21, %esi
movq %rbx, %rdi
callq 0x377f
movq %rax, %r15
movq %rax, %rdi
callq 0x25e5
cmpq $0x9, %rax
jne 0x2431
movq %rbx, %rdi
callq 0x51fa
movq %r14, %rdi
callq 0x51fa
movq %r15, %rdi
callq 0x51fa
movl $0x1d9b18, %edi         # imm = 0x1D9B18
callq 0x2490
movq %rax, %rbx
movq %rax, %rdi
movq $-0xb20, %rsi           # imm = 0xF4E0
callq 0x377f
movq %rax, %r14
movq %rax, %rdi
callq 0x25e5
cmpq $0x2f8, %rax            # imm = 0x2F8
jne 0x2450
movq %rbx, %rdi
movq %r14, %rsi
callq 0x36a4
movq %rax, %r15
movq %rax, %rdi
callq 0x25e5
cmpq $0x2d8, %rax            # imm = 0x2D8
jne 0x246f
movq %rbx, %rdi
callq 0x51fa
movq %r14, %rdi
callq 0x51fa
movq %r15, %rdi
callq 0x51fa
leaq 0x45bf(%rip), %rdi      # 0x63ee
callq 0x1070
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
leaq 0x41bb(%rip), %rdi      # 0x6004
leaq 0x41cb(%rip), %rsi      # 0x601b
leaq 0x41db(%rip), %rcx      # 0x6032
movl $0x16, %edx
callq 0x10a0
leaq 0x41d5(%rip), %rdi      # 0x603d
leaq 0x41ac(%rip), %rsi      # 0x601b
leaq 0x41bc(%rip), %rcx      # 0x6032
movl $0x18, %edx
callq 0x10a0
leaq 0x41d0(%rip), %rdi      # 0x6057
leaq 0x418d(%rip), %rsi      # 0x601b
leaq 0x419d(%rip), %rcx      # 0x6032
movl $0x1a, %edx
callq 0x10a0
leaq 0x41c8(%rip), %rdi      # 0x606e
leaq 0x416e(%rip), %rsi      # 0x601b
leaq 0x417e(%rip), %rcx      # 0x6032
movl $0x23, %edx
callq 0x10a0
leaq 0x41c1(%rip), %rdi      # 0x6086
leaq 0x414f(%rip), %rsi      # 0x601b
leaq 0x415f(%rip), %rcx      # 0x6032
movl $0x25, %edx
callq 0x10a0
leaq 0x41de(%rip), %rdi      # 0x60c2
leaq 0x4130(%rip), %rsi      # 0x601b
leaq 0x4140(%rip), %rcx      # 0x6032
movl $0x2e, %edx
callq 0x10a0
leaq 0x4183(%rip), %rdi      # 0x6086
leaq 0x4111(%rip), %rsi      # 0x601b
leaq 0x4121(%rip), %rcx      # 0x6032
movl $0x31, %edx
callq 0x10a0
leaq 0x41b9(%rip), %rdi      # 0x60db
leaq 0x40f2(%rip), %rsi      # 0x601b
leaq 0x4102(%rip), %rcx      # 0x6032
movl $0x3a, %edx
callq 0x10a0
leaq 0x41c8(%rip), %rdi      # 0x6109
leaq 0x40d3(%rip), %rsi      # 0x601b
leaq 0x40e3(%rip), %rcx      # 0x6032
movl $0x3b, %edx
callq 0x10a0
leaq 0x41b0(%rip), %rdi      # 0x6110
leaq 0x40b4(%rip), %rsi      # 0x601b
leaq 0x40c4(%rip), %rcx      # 0x6032
movl $0x3c, %edx
callq 0x10a0
leaq 0x41ab(%rip), %rdi      # 0x612a
leaq 0x4095(%rip), %rsi      # 0x601b
leaq 0x40a5(%rip), %rcx      # 0x6032
movl $0x48, %edx
callq 0x10a0
leaq 0x419e(%rip), %rdi      # 0x613c
leaq 0x4076(%rip), %rsi      # 0x601b
leaq 0x4086(%rip), %rcx      # 0x6032
movl $0x49, %edx
callq 0x10a0
leaq 0x4191(%rip), %rdi      # 0x614e
leaq 0x4057(%rip), %rsi      # 0x601b
leaq 0x4067(%rip), %rcx      # 0x6032
movl $0x4a, %edx
callq 0x10a0
leaq 0x4183(%rip), %rdi      # 0x615f
leaq 0x4038(%rip), %rsi      # 0x601b
leaq 0x4048(%rip), %rcx      # 0x6032
movl $0x4c, %edx
callq 0x10a0
leaq 0x417a(%rip), %rdi      # 0x6175
leaq 0x4019(%rip), %rsi      # 0x601b
leaq 0x4029(%rip), %rcx      # 0x6032
movl $0x4d, %edx
callq 0x10a0
leaq 0x4170(%rip), %rdi      # 0x618a
leaq 0x3ffa(%rip), %rsi      # 0x601b
leaq 0x400a(%rip), %rcx      # 0x6032
movl $0x4e, %edx
callq 0x10a0
leaq 0x4167(%rip), %rdi      # 0x61a0
leaq 0x3fdb(%rip), %rsi      # 0x601b
leaq 0x3feb(%rip), %rcx      # 0x6032
movl $0x57, %edx
callq 0x10a0
leaq 0x415f(%rip), %rdi      # 0x61b7
leaq 0x3fbc(%rip), %rsi      # 0x601b
leaq 0x3fcc(%rip), %rcx      # 0x6032
movl $0x59, %edx
callq 0x10a0
leaq 0x415d(%rip), %rdi      # 0x61d4
leaq 0x3f9d(%rip), %rsi      # 0x601b
leaq 0x3fad(%rip), %rcx      # 0x6032
movl $0x61, %edx
callq 0x10a0
leaq 0x4155(%rip), %rdi      # 0x61eb
leaq 0x3f7e(%rip), %rsi      # 0x601b
leaq 0x3f8e(%rip), %rcx      # 0x6032
movl $0x64, %edx
callq 0x10a0
leaq 0x414e(%rip), %rdi      # 0x6203
leaq 0x3f5f(%rip), %rsi      # 0x601b
leaq 0x3f6f(%rip), %rcx      # 0x6032
movl $0x68, %edx
callq 0x10a0
leaq 0x4143(%rip), %rdi      # 0x6217
leaq 0x3f40(%rip), %rsi      # 0x601b
leaq 0x3f50(%rip), %rcx      # 0x6032
movl $0x71, %edx
callq 0x10a0
leaq 0x413b(%rip), %rdi      # 0x622e
leaq 0x3f21(%rip), %rsi      # 0x601b
leaq 0x3f31(%rip), %rcx      # 0x6032
movl $0x73, %edx
callq 0x10a0
leaq 0x40d9(%rip), %rdi      # 0x61eb
leaq 0x3f02(%rip), %rsi      # 0x601b
leaq 0x3f12(%rip), %rcx      # 0x6032
movl $0x7b, %edx
callq 0x10a0
leaq 0x40a3(%rip), %rdi      # 0x61d4
leaq 0x3ee3(%rip), %rsi      # 0x601b
leaq 0x3ef3(%rip), %rcx      # 0x6032
movl $0x7e, %edx
callq 0x10a0
leaq 0x40fa(%rip), %rdi      # 0x624a
leaq 0x3ec4(%rip), %rsi      # 0x601b
leaq 0x3ed4(%rip), %rcx      # 0x6032
movl $0x82, %edx
callq 0x10a0
leaq 0x40f3(%rip), %rdi      # 0x6262
leaq 0x3ea5(%rip), %rsi      # 0x601b
leaq 0x3eb5(%rip), %rcx      # 0x6032
movl $0x8c, %edx
callq 0x10a0
leaq 0x40ef(%rip), %rdi      # 0x627d
leaq 0x3e86(%rip), %rsi      # 0x601b
leaq 0x3e96(%rip), %rcx      # 0x6032
movl $0x8e, %edx
callq 0x10a0
leaq 0x40ef(%rip), %rdi      # 0x629c
leaq 0x3e67(%rip), %rsi      # 0x601b
leaq 0x3e77(%rip), %rcx      # 0x6032
movl $0x96, %edx
callq 0x10a0
leaq 0x40ef(%rip), %rdi      # 0x62bb
leaq 0x3e48(%rip), %rsi      # 0x601b
leaq 0x3e58(%rip), %rcx      # 0x6032
movl $0x9a, %edx
callq 0x10a0
leaq 0x40ed(%rip), %rdi      # 0x62d8
leaq 0x3e29(%rip), %rsi      # 0x601b
leaq 0x3e39(%rip), %rcx      # 0x6032
movl $0xa2, %edx
callq 0x10a0
leaq 0x40e4(%rip), %rdi      # 0x62ee
leaq 0x3e0a(%rip), %rsi      # 0x601b
leaq 0x3e1a(%rip), %rcx      # 0x6032
movl $0xab, %edx
callq 0x10a0
leaq 0x40da(%rip), %rdi      # 0x6303
leaq 0x3deb(%rip), %rsi      # 0x601b
leaq 0x3dfb(%rip), %rcx      # 0x6032
movl $0xad, %edx
callq 0x10a0
leaq 0x40d4(%rip), %rdi      # 0x631c
leaq 0x3dcc(%rip), %rsi      # 0x601b
leaq 0x3ddc(%rip), %rcx      # 0x6032
movl $0xb5, %edx
callq 0x10a0
leaq 0x40d7(%rip), %rdi      # 0x633e
leaq 0x3dad(%rip), %rsi      # 0x601b
leaq 0x3dbd(%rip), %rcx      # 0x6032
movl $0xb7, %edx
callq 0x10a0
leaq 0x40e4(%rip), %rdi      # 0x636a
leaq 0x3d8e(%rip), %rsi      # 0x601b
leaq 0x3d9e(%rip), %rcx      # 0x6032
movl $0xc1, %edx
callq 0x10a0
leaq 0x40e2(%rip), %rdi      # 0x6387
leaq 0x3d6f(%rip), %rsi      # 0x601b
leaq 0x3d7f(%rip), %rcx      # 0x6032
movl $0xc3, %edx
callq 0x10a0
leaq 0x40dc(%rip), %rdi      # 0x63a0
leaq 0x3d50(%rip), %rsi      # 0x601b
leaq 0x3d60(%rip), %rcx      # 0x6032
movl $0xcb, %edx
callq 0x10a0
leaq 0x40df(%rip), %rdi      # 0x63c2
leaq 0x3d31(%rip), %rsi      # 0x601b
leaq 0x3d41(%rip), %rcx      # 0x6032
movl $0xcd, %edx
callq 0x10a0
leaq 0x3f60(%rip), %rdi      # 0x6262
leaq 0x3d12(%rip), %rsi      # 0x601b
leaq 0x3d22(%rip), %rcx      # 0x6032
movl $0xda, %edx
callq 0x10a0
leaq 0x3f5c(%rip), %rdi      # 0x627d
leaq 0x3cf3(%rip), %rsi      # 0x601b
leaq 0x3d03(%rip), %rcx      # 0x6032
movl $0xdc, %edx
callq 0x10a0
leaq 0x3f5c(%rip), %rdi      # 0x629c
leaq 0x3cd4(%rip), %rsi      # 0x601b
leaq 0x3ce4(%rip), %rcx      # 0x6032
movl $0xe4, %edx
callq 0x10a0
leaq 0x3f5c(%rip), %rdi      # 0x62bb
leaq 0x3cb5(%rip), %rsi      # 0x601b
leaq 0x3cc5(%rip), %rcx      # 0x6032
movl $0xe8, %edx
callq 0x10a0
leaq 0x3f5a(%rip), %rdi      # 0x62d8
leaq 0x3c96(%rip), %rsi      # 0x601b
leaq 0x3ca6(%rip), %rcx      # 0x6032
movl $0xf0, %edx
callq 0x10a0
leaq 0x3f51(%rip), %rdi      # 0x62ee
leaq 0x3c77(%rip), %rsi      # 0x601b
leaq 0x3c87(%rip), %rcx      # 0x6032
movl $0xf9, %edx
callq 0x10a0
leaq 0x3f47(%rip), %rdi      # 0x6303
leaq 0x3c58(%rip), %rsi      # 0x601b
leaq 0x3c68(%rip), %rcx      # 0x6032
movl $0xfb, %edx
callq 0x10a0
leaq 0x3f41(%rip), %rdi      # 0x631c
leaq 0x3c39(%rip), %rsi      # 0x601b
leaq 0x3c49(%rip), %rcx      # 0x6032
movl $0x103, %edx            # imm = 0x103
callq 0x10a0
leaq 0x3f44(%rip), %rdi      # 0x633e
leaq 0x3c1a(%rip), %rsi      # 0x601b
leaq 0x3c2a(%rip), %rcx      # 0x6032
movl $0x105, %edx            # imm = 0x105
callq 0x10a0
leaq 0x3f51(%rip), %rdi      # 0x636a
leaq 0x3bfb(%rip), %rsi      # 0x601b
leaq 0x3c0b(%rip), %rcx      # 0x6032
movl $0x10f, %edx            # imm = 0x10F
callq 0x10a0
leaq 0x3f4f(%rip), %rdi      # 0x6387
leaq 0x3bdc(%rip), %rsi      # 0x601b
leaq 0x3bec(%rip), %rcx      # 0x6032
movl $0x111, %edx            # imm = 0x111
callq 0x10a0
leaq 0x3f49(%rip), %rdi      # 0x63a0
leaq 0x3bbd(%rip), %rsi      # 0x601b
leaq 0x3bcd(%rip), %rcx      # 0x6032
movl $0x119, %edx            # imm = 0x119
callq 0x10a0
leaq 0x3f4c(%rip), %rdi      # 0x63c2
leaq 0x3b9e(%rip), %rsi      # 0x601b
leaq 0x3bae(%rip), %rcx      # 0x6032
movl $0x11b, %edx            # imm = 0x11B
callq 0x10a0
nop