// File: yanniss[P]souffle-num-addon/num256_test.cpp
// Function: test_exp_invoker()
BOOST_AUTO_TEST_CASE(test_exp) {
	BOOST_TEST(
			   exp_256("0x666f",
					   "0x3")
			   ==
			   "0x10666ef0504f");
	BOOST_TEST(
			   exp_256("0x666f",
					   "0x3ff")
			   ==
			   "0x103691d9c197615a89b9b351f6122823614a541f92725975095e5f7f28a3f4f9");
	// no clue if the latter is correct, but at least it has the right number of digits
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x9e0, %rsp            # imm = 0x9E0
movq 0x10c7f6(%rip), %rax    # 0x140a98
movq %rax, -0x8e0(%rbp)
leaq 0xa8657(%rip), %rsi     # 0xdc907
leaq -0x10(%rbp), %rdi
movl $0xf, %edx
callq 0x514b0
leaq -0x1b8(%rbp), %rdi
movq %rdi, -0x8d8(%rbp)
xorl %esi, %esi
movl $0x198, %edx            # imm = 0x198
callq 0x10380
movq -0x8d8(%rbp), %rdi
callq 0x5e920
movq -0x8d8(%rbp), %rdi
callq 0x5e950
movq %rax, -0x8d0(%rbp)
jmp 0x342f9
movq -0x8d0(%rbp), %rdi
movb $0x22, -0x1c5(%rbp)
leaq -0x1c5(%rbp), %rsi
callq 0x5d170
movq %rax, -0x8e8(%rbp)
jmp 0x3431c
movq -0x8e8(%rbp), %rdi
leaq 0xa88ef(%rip), %rsi     # 0xdcc19
callq 0xaf6f0
movq %rax, -0x8f0(%rbp)
jmp 0x34338
movq -0x8f0(%rbp), %rdi
leaq 0xb1581(%rip), %rsi     # 0xe58c7
callq 0xaf6c0
movq %rax, -0x8f8(%rbp)
jmp 0x34354
movq -0x8f8(%rbp), %rdi
callq 0x5e960
movq %rax, -0x900(%rbp)
jmp 0x34369
movq -0x900(%rbp), %rsi
leaq -0x20(%rbp), %rdi
callq 0x500c0
jmp 0x3437b
movq -0x8e0(%rbp), %rdi
leaq -0x10(%rbp), %rsi
movl $0x1d, %edx
leaq -0x20(%rbp), %rcx
callq 0x29d70
jmp 0x34396
leaq -0x1b8(%rbp), %rdi
callq 0x5e9b0
movq 0x10c6ef(%rip), %rax    # 0x140a98
movq %rax, -0x918(%rbp)
leaq 0xa8550(%rip), %rsi     # 0xdc907
leaq -0x1d8(%rbp), %rdi
movl $0xf, %edx
callq 0x514b0
leaq -0x380(%rbp), %rdi
movq %rdi, -0x910(%rbp)
xorl %esi, %esi
movl $0x198, %edx            # imm = 0x198
callq 0x10380
movq -0x910(%rbp), %rdi
callq 0x5e920
movq -0x910(%rbp), %rdi
callq 0x5e950
movq %rax, -0x908(%rbp)
jmp 0x34403
movq -0x908(%rbp), %rdi
movb $0x22, -0x381(%rbp)
leaq -0x381(%rbp), %rsi
callq 0x5d170
movq %rax, -0x920(%rbp)
jmp 0x34426
movq -0x920(%rbp), %rdi
leaq 0xa87e5(%rip), %rsi     # 0xdcc19
callq 0xaf6f0
movq %rax, -0x928(%rbp)
jmp 0x34442
movq -0x928(%rbp), %rdi
leaq 0xb1486(%rip), %rsi     # 0xe58d6
callq 0xaf720
movq %rax, -0x930(%rbp)
jmp 0x3445e
movq -0x930(%rbp), %rdi
callq 0x5e960
movq %rax, -0x938(%rbp)
jmp 0x34473
movq -0x938(%rbp), %rsi
leaq -0x1e8(%rbp), %rdi
callq 0x500c0
jmp 0x34488
movq -0x918(%rbp), %rdi
leaq -0x1d8(%rbp), %rsi
movl $0x1d, %edx
leaq -0x1e8(%rbp), %rcx
callq 0x29d70
jmp 0x344a9
leaq -0x380(%rbp), %rdi
callq 0x5e9b0
leaq -0x1c6(%rbp), %rdi
callq 0xaf870
movq 0x10c5d0(%rip), %rax    # 0x140a98
movq %rax, -0x950(%rbp)
leaq 0xa8431(%rip), %rsi     # 0xdc907
leaq -0x398(%rbp), %rdi
movl $0xf, %edx
callq 0x514b0
leaq -0x540(%rbp), %rdi
movq %rdi, -0x948(%rbp)
xorl %esi, %esi
movl $0x198, %edx            # imm = 0x198
callq 0x10380
movq -0x948(%rbp), %rdi
callq 0x5e920
movq -0x948(%rbp), %rdi
callq 0x5e950
movq %rax, -0x940(%rbp)
jmp 0x34522
movq -0x940(%rbp), %rdi
movb $0x22, -0x541(%rbp)
leaq -0x541(%rbp), %rsi
callq 0x5d170
movq %rax, -0x958(%rbp)
jmp 0x34545
movq -0x958(%rbp), %rdi
leaq 0xa86c6(%rip), %rsi     # 0xdcc19
callq 0xaf6f0
movq %rax, -0x960(%rbp)
jmp 0x34561
movq -0x960(%rbp), %rdi
leaq 0xb1377(%rip), %rsi     # 0xe58e6
callq 0xaf770
movq %rax, -0x968(%rbp)
jmp 0x3457d
movq -0x968(%rbp), %rdi
callq 0x5e960
movq %rax, -0x970(%rbp)
jmp 0x34592
movq -0x970(%rbp), %rsi
leaq -0x3a8(%rbp), %rdi
callq 0x500c0
jmp 0x345a7
movq -0x950(%rbp), %rdi
leaq -0x398(%rbp), %rsi
movl $0x1d, %edx
leaq -0x3a8(%rbp), %rcx
callq 0x29d70
jmp 0x345c8
leaq -0x540(%rbp), %rdi
callq 0x5e9b0
leaq -0x1c6(%rbp), %rdi
callq 0x348d0
movq 0x10c4b1(%rip), %rax    # 0x140a98
movq %rax, -0x988(%rbp)
leaq 0xa8312(%rip), %rsi     # 0xdc907
leaq -0x558(%rbp), %rdi
movl $0xf, %edx
callq 0x514b0
leaq -0x700(%rbp), %rdi
movq %rdi, -0x980(%rbp)
xorl %esi, %esi
movl $0x198, %edx            # imm = 0x198
callq 0x10380
movq -0x980(%rbp), %rdi
callq 0x5e920
movq -0x980(%rbp), %rdi
callq 0x5e950
movq %rax, -0x978(%rbp)
jmp 0x34641
movq -0x978(%rbp), %rdi
movb $0x22, -0x701(%rbp)
leaq -0x701(%rbp), %rsi
callq 0x5d170
movq %rax, -0x990(%rbp)
jmp 0x34664
movq -0x990(%rbp), %rdi
leaq 0xa85a7(%rip), %rsi     # 0xdcc19
callq 0xaf6f0
movq %rax, -0x998(%rbp)
jmp 0x34680
movq -0x998(%rbp), %rdi
leaq 0xb1265(%rip), %rsi     # 0xe58f3
callq 0xaf7a0
movq %rax, -0x9a0(%rbp)
jmp 0x3469c
movq -0x9a0(%rbp), %rdi
callq 0x5e960
movq %rax, -0x9a8(%rbp)
jmp 0x346b1
movq -0x9a8(%rbp), %rsi
leaq -0x568(%rbp), %rdi
callq 0x500c0
jmp 0x346c6
movq -0x988(%rbp), %rdi
leaq -0x558(%rbp), %rsi
movl $0x1d, %edx
leaq -0x568(%rbp), %rcx
callq 0x29d70
jmp 0x346e7
leaq -0x700(%rbp), %rdi
callq 0x5e9b0
leaq -0x1c6(%rbp), %rdi
callq 0xaf890
movq 0x10c392(%rip), %rax    # 0x140a98
movq %rax, -0x9c0(%rbp)
leaq 0xa81f3(%rip), %rsi     # 0xdc907
leaq -0x718(%rbp), %rdi
movl $0xf, %edx
callq 0x514b0
leaq -0x8c0(%rbp), %rdi
movq %rdi, -0x9b8(%rbp)
xorl %esi, %esi
movl $0x198, %edx            # imm = 0x198
callq 0x10380
movq -0x9b8(%rbp), %rdi
callq 0x5e920
movq -0x9b8(%rbp), %rdi
callq 0x5e950
movq %rax, -0x9b0(%rbp)
jmp 0x34760
movq -0x9b0(%rbp), %rdi
movb $0x22, -0x8c1(%rbp)
leaq -0x8c1(%rbp), %rsi
callq 0x5d170
movq %rax, -0x9c8(%rbp)
jmp 0x34783
movq -0x9c8(%rbp), %rdi
leaq 0xa8488(%rip), %rsi     # 0xdcc19
callq 0xaf6f0
movq %rax, -0x9d0(%rbp)
jmp 0x3479f
movq -0x9d0(%rbp), %rdi
leaq 0xb1159(%rip), %rsi     # 0xe5906
callq 0xaf6c0
movq %rax, -0x9d8(%rbp)
jmp 0x347bb
movq -0x9d8(%rbp), %rdi
callq 0x5e960
movq %rax, -0x9e0(%rbp)
jmp 0x347d0
movq -0x9e0(%rbp), %rsi
leaq -0x728(%rbp), %rdi
callq 0x500c0
jmp 0x347e5
movq -0x9c0(%rbp), %rdi
leaq -0x718(%rbp), %rsi
movl $0x1d, %edx
leaq -0x728(%rbp), %rcx
callq 0x29d70
jmp 0x34806
leaq -0x8c0(%rbp), %rdi
callq 0x5e9b0
addq $0x9e0, %rsp            # imm = 0x9E0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c0(%rbp)
movl %eax, -0x1c4(%rbp)
leaq -0x1b8(%rbp), %rdi
callq 0x5e9b0
jmp 0x348b9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c0(%rbp)
movl %eax, -0x1c4(%rbp)
leaq -0x380(%rbp), %rdi
callq 0x5e9b0
jmp 0x348b9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c0(%rbp)
movl %eax, -0x1c4(%rbp)
leaq -0x540(%rbp), %rdi
callq 0x5e9b0
jmp 0x348b9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c0(%rbp)
movl %eax, -0x1c4(%rbp)
leaq -0x700(%rbp), %rdi
callq 0x5e9b0
jmp 0x348b9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c0(%rbp)
movl %eax, -0x1c4(%rbp)
leaq -0x8c0(%rbp), %rdi
callq 0x5e9b0
movq -0x1c0(%rbp), %rdi
callq 0x10bc0
nopw %cs:(%rax,%rax)