// File: aisthesis[P]realnumber/tst/array_arithmetic_test.cpp
// Function: addition::uniform_length_invoker()
BOOST_AUTO_TEST_CASE(uniform_length) {
		// small array size
		array_arithmetic::convert::from_int(one, small_arr1, small_arr_len);
		array_arithmetic::convert::from_int(two, small_arr2, small_arr_len);
		array_arithmetic::add(small_arr1, small_arr2, small_arr3, small_arr_len);
		BOOST_CHECK_EQUAL(array_arithmetic::convert::to_int(small_arr3, small_arr_len), three);
		array_arithmetic::convert::from_int(x1, small_arr1, small_arr_len);
		array_arithmetic::add(small_arr1, small_arr1, small_arr3, small_arr_len);
		BOOST_CHECK_EQUAL(array_arithmetic::convert::to_int(small_arr3, small_arr_len), x2);
		// large array size
		array_arithmetic::convert::from_int(one_billion, bigger_arr1, bigger_arr_len);
		array_arithmetic::convert::from_int(two_billion, bigger_arr2, bigger_arr_len);
		array_arithmetic::add(bigger_arr1, bigger_arr2, bigger_arr3, bigger_arr_len);
		BOOST_CHECK_EQUAL(array_arithmetic::convert::to_int(bigger_arr3, bigger_arr_len),
				three_billion);
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa50, %rsp            # imm = 0xA50
movq 0x1416e(%rip), %rax     # 0x25220
movq %rax, -0x970(%rbp)
leaq 0xbf4f(%rip), %rsi      # 0x1d00f
leaq -0x10(%rbp), %rdi
movl $0x1d, %edx
callq 0x17390
leaq -0x1b8(%rbp), %rdi
movq %rdi, -0x968(%rbp)
xorl %esi, %esi
movl $0x198, %edx            # imm = 0x198
callq 0x30d0
movq -0x968(%rbp), %rdi
callq 0x18120
movq -0x968(%rbp), %rdi
callq 0x18150
movq %rax, %rdi
movb $0x22, -0x1b9(%rbp)
leaq -0x1b9(%rbp), %rsi
callq 0x180e0
movq %rax, -0x960(%rbp)
jmp 0x1111f
movq -0x960(%rbp), %rdi
leaq 0xc549(%rip), %rsi      # 0x1d676
callq 0x18080
movq %rax, -0x978(%rbp)
jmp 0x1113b
movq -0x978(%rbp), %rdi
leaq 0xc840(%rip), %rsi      # 0x1d989
callq 0x18080
movq %rax, -0x980(%rbp)
jmp 0x11157
movq -0x980(%rbp), %rdi
callq 0x18160
movq %rax, -0x988(%rbp)
jmp 0x1116c
movq -0x988(%rbp), %rsi
leaq -0x20(%rbp), %rdi
callq 0x18020
jmp 0x1117e
movq -0x970(%rbp), %rdi
leaq -0x10(%rbp), %rsi
movl $0x11e, %edx            # imm = 0x11E
leaq -0x20(%rbp), %rcx
callq 0x3390
jmp 0x11199
leaq -0x1b8(%rbp), %rdi
callq 0x181b0
leaq -0x258(%rbp), %rdi
callq 0x18e10
movq 0x14068(%rip), %rax     # 0x25220
movq %rax, -0x990(%rbp)
leaq 0xbe49(%rip), %rsi      # 0x1d00f
leaq -0x268(%rbp), %rdi
movl $0x1d, %edx
callq 0x17390
jmp 0x111d9
leaq -0x410(%rbp), %rdi
movq %rdi, -0x998(%rbp)
xorl %esi, %esi
movl $0x198, %edx            # imm = 0x198
callq 0x30d0
movq -0x998(%rbp), %rdi
callq 0x18120
jmp 0x11201
leaq -0x410(%rbp), %rdi
callq 0x18150
movq %rax, %rdi
movb $0x22, -0x411(%rbp)
leaq -0x411(%rbp), %rsi
callq 0x180e0
movq %rax, -0x9a0(%rbp)
jmp 0x1122c
movq -0x9a0(%rbp), %rdi
leaq 0xc43c(%rip), %rsi      # 0x1d676
callq 0x18080
movq %rax, -0x9a8(%rbp)
jmp 0x11248
movq -0x9a8(%rbp), %rdi
leaq 0xc742(%rip), %rsi      # 0x1d998
callq 0x18200
movq %rax, -0x9b0(%rbp)
jmp 0x11264
movq -0x9b0(%rbp), %rdi
callq 0x18160
movq %rax, -0x9b8(%rbp)
jmp 0x11279
movq -0x9b8(%rbp), %rsi
leaq -0x278(%rbp), %rdi
callq 0x18020
jmp 0x1128e
movq -0x990(%rbp), %rdi
leaq -0x268(%rbp), %rsi
movl $0x11e, %edx            # imm = 0x11E
leaq -0x278(%rbp), %rcx
callq 0x3390
jmp 0x112af
leaq -0x410(%rbp), %rdi
callq 0x181b0
leaq -0x258(%rbp), %rdi
callq 0x18e30
jmp 0x112c9
movq 0x13f50(%rip), %rax     # 0x25220
movq %rax, -0x9c0(%rbp)
leaq 0xbd31(%rip), %rsi      # 0x1d00f
leaq -0x428(%rbp), %rdi
movl $0x1d, %edx
callq 0x17390
jmp 0x112f1
leaq -0x5d0(%rbp), %rdi
movq %rdi, -0x9c8(%rbp)
xorl %esi, %esi
movl $0x198, %edx            # imm = 0x198
callq 0x30d0
movq -0x9c8(%rbp), %rdi
callq 0x18120
jmp 0x11319
leaq -0x5d0(%rbp), %rdi
callq 0x18150
movq %rax, %rdi
movb $0x22, -0x5d1(%rbp)
leaq -0x5d1(%rbp), %rsi
callq 0x180e0
movq %rax, -0x9d0(%rbp)
jmp 0x11344
movq -0x9d0(%rbp), %rdi
leaq 0xc324(%rip), %rsi      # 0x1d676
callq 0x18080
movq %rax, -0x9d8(%rbp)
jmp 0x11360
movq -0x9d8(%rbp), %rdi
leaq 0xc63a(%rip), %rsi      # 0x1d9a8
callq 0x18250
movq %rax, -0x9e0(%rbp)
jmp 0x1137c
movq -0x9e0(%rbp), %rdi
callq 0x18160
movq %rax, -0x9e8(%rbp)
jmp 0x11391
movq -0x9e8(%rbp), %rsi
leaq -0x438(%rbp), %rdi
callq 0x18020
jmp 0x113a6
movq -0x9c0(%rbp), %rdi
leaq -0x428(%rbp), %rsi
movl $0x11e, %edx            # imm = 0x11E
leaq -0x438(%rbp), %rcx
callq 0x3390
jmp 0x113c7
leaq -0x5d0(%rbp), %rdi
callq 0x181b0
leaq -0x258(%rbp), %rdi
callq 0x116f0
jmp 0x113e1
movq 0x13e38(%rip), %rax     # 0x25220
movq %rax, -0x9f0(%rbp)
leaq 0xbc19(%rip), %rsi      # 0x1d00f
leaq -0x5e8(%rbp), %rdi
movl $0x1d, %edx
callq 0x17390
jmp 0x11409
leaq -0x790(%rbp), %rdi
movq %rdi, -0x9f8(%rbp)
xorl %esi, %esi
movl $0x198, %edx            # imm = 0x198
callq 0x30d0
movq -0x9f8(%rbp), %rdi
callq 0x18120
jmp 0x11431
leaq -0x790(%rbp), %rdi
callq 0x18150
movq %rax, %rdi
movb $0x22, -0x791(%rbp)
leaq -0x791(%rbp), %rsi
callq 0x180e0
movq %rax, -0xa00(%rbp)
jmp 0x1145c
movq -0xa00(%rbp), %rdi
leaq 0xc20c(%rip), %rsi      # 0x1d676
callq 0x18080
movq %rax, -0xa08(%rbp)
jmp 0x11478
movq -0xa08(%rbp), %rdi
leaq 0xc52f(%rip), %rsi      # 0x1d9b5
callq 0x18280
movq %rax, -0xa10(%rbp)
jmp 0x11494
movq -0xa10(%rbp), %rdi
callq 0x18160
movq %rax, -0xa18(%rbp)
jmp 0x114a9
movq -0xa18(%rbp), %rsi
leaq -0x5f8(%rbp), %rdi
callq 0x18020
jmp 0x114be
movq -0x9f0(%rbp), %rdi
leaq -0x5e8(%rbp), %rsi
movl $0x11e, %edx            # imm = 0x11E
leaq -0x5f8(%rbp), %rcx
callq 0x3390
jmp 0x114df
leaq -0x790(%rbp), %rdi
callq 0x181b0
leaq -0x258(%rbp), %rdi
callq 0x18e50
jmp 0x114f9
movq 0x13d20(%rip), %rax     # 0x25220
movq %rax, -0xa20(%rbp)
leaq 0xbb01(%rip), %rsi      # 0x1d00f
leaq -0x7a8(%rbp), %rdi
movl $0x1d, %edx
callq 0x17390
jmp 0x11521
leaq -0x950(%rbp), %rdi
movq %rdi, -0xa28(%rbp)
xorl %esi, %esi
movl $0x198, %edx            # imm = 0x198
callq 0x30d0
movq -0xa28(%rbp), %rdi
callq 0x18120
jmp 0x11549
leaq -0x950(%rbp), %rdi
callq 0x18150
movq %rax, %rdi
movb $0x22, -0x951(%rbp)
leaq -0x951(%rbp), %rsi
callq 0x180e0
movq %rax, -0xa30(%rbp)
jmp 0x11574
movq -0xa30(%rbp), %rdi
leaq 0xc0f4(%rip), %rsi      # 0x1d676
callq 0x18080
movq %rax, -0xa38(%rbp)
jmp 0x11590
movq -0xa38(%rbp), %rdi
leaq 0xc42a(%rip), %rsi      # 0x1d9c8
callq 0x18080
movq %rax, -0xa40(%rbp)
jmp 0x115ac
movq -0xa40(%rbp), %rdi
callq 0x18160
movq %rax, -0xa48(%rbp)
jmp 0x115c1
movq -0xa48(%rbp), %rsi
leaq -0x7b8(%rbp), %rdi
callq 0x18020
jmp 0x115d6
movq -0xa20(%rbp), %rdi
leaq -0x7a8(%rbp), %rsi
movl $0x11e, %edx            # imm = 0x11E
leaq -0x7b8(%rbp), %rcx
callq 0x3390
jmp 0x115f7
leaq -0x950(%rbp), %rdi
callq 0x181b0
leaq -0x258(%rbp), %rdi
callq 0x18e70
addq $0xa50, %rsp            # imm = 0xA50
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
leaq -0x1b8(%rbp), %rdi
callq 0x181b0
jmp 0x116d9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0x116cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
leaq -0x410(%rbp), %rdi
callq 0x181b0
jmp 0x116cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
leaq -0x5d0(%rbp), %rdi
callq 0x181b0
jmp 0x116cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
leaq -0x790(%rbp), %rdi
callq 0x181b0
jmp 0x116cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
leaq -0x950(%rbp), %rdi
callq 0x181b0
leaq -0x258(%rbp), %rdi
callq 0x18e70
movq -0x1c8(%rbp), %rdi
callq 0x3340
nopw %cs:(%rax,%rax)