// File: /workspace/github_cpp_makefile_star2_O2/aisthesis[P]realnumber/tst/array_arithmetic_test.cpp
// Function: addition::different_lengths_invoker()
BOOST_AUTO_TEST_CASE(different_lengths) {
		// inputs of equal 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, big_sum_arr, bigger_arr_len, bigger_arr_len);
		BOOST_CHECK_EQUAL(array_arithmetic::convert::to_int(big_sum_arr, bigger_arr_len + 1),
				three_billion);
		// different input sizes: small
		array_arithmetic::convert::from_int(one, small_arr1, small_arr_len);
		array_arithmetic::convert::from_int(two, smaller_arr, small_arr_len - 1);
		array_arithmetic::add(small_arr1, smaller_arr, small_result_arr, small_arr_len, small_arr_len - 1);
		BOOST_CHECK_EQUAL(array_arithmetic::convert::to_int(small_result_arr, small_arr_len + 1), three);
		// different input sizes: large
		array_arithmetic::convert::from_int(one_billion, bigger_arr1, bigger_arr_len);
		array_arithmetic::convert::from_int(255, big_arr, bigger_arr_len - 2);
		array_arithmetic::add(bigger_arr1, big_arr, big_sum_arr, bigger_arr_len, bigger_arr_len - 2);
		BOOST_CHECK_EQUAL(array_arithmetic::convert::to_int(big_sum_arr, bigger_arr_len + 1),
				static_cast<unsigned int>(1000000255));
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x2c0, %rsp            # imm = 0x2C0
movq 0xa8bd(%rip), %rbx      # 0x16198
leaq 0x5779(%rip), %r15      # 0x1105b
movq %r15, -0x70(%rbp)
leaq 0x578b(%rip), %r12      # 0x11078
movq %r12, -0x68(%rbp)
leaq -0x208(%rbp), %r14
movl $0x198, %edx            # imm = 0x198
movq %r14, %rdi
xorl %esi, %esi
callq 0x30c0
movq %r14, %rdi
callq 0xeecc
pushq $0x22
popq %rsi
movq %r14, %rdi
callq 0x31a0
leaq 0x5e3f(%rip), %rsi      # 0x11760
leaq -0x208(%rbp), %rdi
callq 0x3140
leaq 0x609b(%rip), %rsi      # 0x119cf
leaq -0x208(%rbp), %rdi
callq 0x3140
leaq -0x208(%rbp), %rdi
callq 0xeefe
movq (%rax), %rdx
leaq -0x258(%rbp), %rcx
movq %rdx, (%rcx)
addq 0x8(%rax), %rdx
movq %rdx, 0x8(%rcx)
leaq -0x70(%rbp), %rsi
movl $0x12f, %edx            # imm = 0x12F
movq %rbx, %rdi
callq 0x32a0
leaq -0x208(%rbp), %rdi
callq 0xef42
leaq -0x2e0(%rbp), %rdi
callq 0xf04c
movq 0xa807(%rip), %rbx      # 0x16198
movq %r15, -0x60(%rbp)
movq %r12, -0x58(%rbp)
movl $0x198, %edx            # imm = 0x198
movq %r14, %rdi
xorl %esi, %esi
callq 0x30c0
movq %r14, %rdi
callq 0xeecc
leaq -0x208(%rbp), %rdi
pushq $0x22
popq %rsi
callq 0x31a0
leaq 0x5d9a(%rip), %rsi      # 0x11760
leaq -0x208(%rbp), %rdi
callq 0x3140
leaq 0x6005(%rip), %rsi      # 0x119de
leaq -0x208(%rbp), %rdi
callq 0x3140
leaq -0x208(%rbp), %rdi
callq 0xeefe
movq (%rax), %rdx
leaq -0x248(%rbp), %rcx
movq %rdx, (%rcx)
addq 0x8(%rax), %rdx
movq %rdx, 0x8(%rcx)
leaq -0x60(%rbp), %rsi
movl $0x12f, %edx            # imm = 0x12F
movq %rbx, %rdi
callq 0x32a0
leaq -0x208(%rbp), %rdi
callq 0xef42
movq 0xa76e(%rip), %rbx      # 0x16198
movq %r15, -0x50(%rbp)
movq %r12, -0x48(%rbp)
movl $0x198, %edx            # imm = 0x198
movq %r14, %rdi
xorl %esi, %esi
callq 0x30c0
movq %r14, %rdi
callq 0xeecc
leaq -0x208(%rbp), %rdi
pushq $0x22
popq %rsi
callq 0x31a0
leaq 0x5d01(%rip), %rsi      # 0x11760
leaq -0x208(%rbp), %rdi
callq 0x3140
leaq 0x5f7c(%rip), %rsi      # 0x119ee
leaq -0x208(%rbp), %rdi
callq 0x3140
leaq -0x208(%rbp), %rdi
callq 0xeefe
movq (%rax), %rdx
leaq -0x238(%rbp), %rcx
movq %rdx, (%rcx)
addq 0x8(%rax), %rdx
movq %rdx, 0x8(%rcx)
leaq -0x50(%rbp), %rsi
movl $0x12f, %edx            # imm = 0x12F
movq %rbx, %rdi
callq 0x32a0
leaq -0x208(%rbp), %rdi
callq 0xef42
leaq -0x2e0(%rbp), %rdi
callq 0xbc5e
movq 0xa6c9(%rip), %rbx      # 0x16198
movq %r15, -0x40(%rbp)
movq %r12, -0x38(%rbp)
movl $0x198, %edx            # imm = 0x198
movq %r14, %rdi
xorl %esi, %esi
callq 0x30c0
movq %r14, %rdi
callq 0xeecc
leaq -0x208(%rbp), %rdi
pushq $0x22
popq %rsi
callq 0x31a0
leaq 0x5c5c(%rip), %rsi      # 0x11760
leaq -0x208(%rbp), %rdi
callq 0x3140
leaq 0x5ee4(%rip), %rsi      # 0x119fb
leaq -0x208(%rbp), %rdi
callq 0x3140
leaq -0x208(%rbp), %rdi
callq 0xeefe
movq (%rax), %rdx
leaq -0x228(%rbp), %rcx
movq %rdx, (%rcx)
addq 0x8(%rax), %rdx
movq %rdx, 0x8(%rcx)
leaq -0x40(%rbp), %rsi
movl $0x12f, %edx            # imm = 0x12F
movq %rbx, %rdi
callq 0x32a0
leaq -0x208(%rbp), %rdi
callq 0xef42
movq 0xa630(%rip), %rbx      # 0x16198
movq %r15, -0x30(%rbp)
movq %r12, -0x28(%rbp)
movl $0x198, %edx            # imm = 0x198
movq %r14, %rdi
xorl %esi, %esi
callq 0x30c0
movq %r14, %rdi
callq 0xeecc
leaq -0x208(%rbp), %rdi
pushq $0x22
popq %rsi
callq 0x31a0
leaq 0x5bc3(%rip), %rsi      # 0x11760
leaq -0x208(%rbp), %rdi
callq 0x3140
leaq 0x5e5e(%rip), %rsi      # 0x11a0e
leaq -0x208(%rbp), %rdi
callq 0x3140
leaq -0x208(%rbp), %rdi
callq 0xeefe
movq (%rax), %rdx
leaq -0x218(%rbp), %rcx
movq %rdx, (%rcx)
addq 0x8(%rax), %rdx
movq %rdx, 0x8(%rcx)
leaq -0x30(%rbp), %rsi
movl $0x12f, %edx            # imm = 0x12F
movq %rbx, %rdi
callq 0x32a0
leaq -0x208(%rbp), %rdi
callq 0xef42
leaq -0x2e0(%rbp), %rdi
callq 0xf118
addq $0x2c0, %rsp            # imm = 0x2C0
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
jmp 0xbc1e
jmp 0xbc1e
jmp 0xbc1e
jmp 0xbc1e
movq %rax, %rbx
jmp 0xbc38
jmp 0xbc29
jmp 0xbc29
jmp 0xbc29
movq %rax, %rbx
leaq -0x208(%rbp), %rdi
callq 0xef42
leaq -0x2e0(%rbp), %rdi
callq 0xf118
movq %rbx, %rdi
callq 0x3260
movq %rax, %rbx
leaq -0x208(%rbp), %rdi
callq 0xef42
jmp 0xbc44
nop