// File: aisthesis[P]realnumber/tst/array_arithmetic_test.cpp
// Function: division_helpers::readjust_invoker()
BOOST_AUTO_TEST_CASE(readjust) {
		unsigned char arr1[] = {129, 0};
		unsigned char arr2[] = {0, 129};
		unsigned char zero_arr[] = {0, 0};
		unsigned char arr3[] = {129, 129};
		// verify proper return value
		BOOST_CHECK_EQUAL(array_arithmetic::helpers::division::readjust(arr2, arr1, 2), 8);
		// arr1 properly shifted
		BOOST_CHECK_EQUAL(arr1[0], 0);
		BOOST_CHECK_EQUAL(arr1[1], 129);
		// arr2 unchanged
		BOOST_CHECK_EQUAL(arr2[0], 0);
		BOOST_CHECK_EQUAL(arr2[1], 129);
		// check edge case when dividend is 0
		BOOST_CHECK_EQUAL(array_arithmetic::helpers::division::readjust(zero_arr, arr3, 2), 16);
		BOOST_CHECK_EQUAL(arr3[0], 0);
		BOOST_CHECK_EQUAL(arr3[1], 0);
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x9c0, %rsp            # imm = 0x9C0
movq 0x1778e(%rip), %rax     # 0x25220
movq %rax, -0x8e8(%rbp)
leaq 0xf56f(%rip), %rsi      # 0x1d00f
leaq -0x10(%rbp), %rdi
movl $0x1d, %edx
callq 0x17390
leaq -0x1b8(%rbp), %rdi
movq %rdi, -0x8e0(%rbp)
xorl %esi, %esi
movl $0x198, %edx            # imm = 0x198
callq 0x30d0
movq -0x8e0(%rbp), %rdi
callq 0x18120
movq -0x8e0(%rbp), %rdi
callq 0x18150
movq %rax, %rdi
movb $0x22, -0x1b9(%rbp)
leaq -0x1b9(%rbp), %rsi
callq 0x180e0
movq %rax, -0x8d8(%rbp)
jmp 0xdaff
movq -0x8d8(%rbp), %rdi
leaq 0xfa14(%rip), %rsi      # 0x1d521
callq 0x18c60
movq %rax, -0x8f0(%rbp)
jmp 0xdb1b
movq -0x8f0(%rbp), %rdi
leaq 0xfe60(%rip), %rsi      # 0x1d989
callq 0x18080
movq %rax, -0x8f8(%rbp)
jmp 0xdb37
movq -0x8f8(%rbp), %rdi
callq 0x18160
movq %rax, -0x900(%rbp)
jmp 0xdb4c
movq -0x900(%rbp), %rsi
leaq -0x20(%rbp), %rdi
callq 0x18020
jmp 0xdb5e
movq -0x8e8(%rbp), %rdi
leaq -0x10(%rbp), %rsi
movl $0xa4, %edx
leaq -0x20(%rbp), %rcx
callq 0x3390
jmp 0xdb79
leaq -0x1b8(%rbp), %rdi
callq 0x181b0
movq 0x17694(%rip), %rax     # 0x25220
movq %rax, -0x918(%rbp)
leaq 0xf475(%rip), %rsi      # 0x1d00f
leaq -0x1e0(%rbp), %rdi
movl $0x1d, %edx
callq 0x17390
leaq -0x388(%rbp), %rdi
movq %rdi, -0x910(%rbp)
xorl %esi, %esi
movl $0x198, %edx            # imm = 0x198
callq 0x30d0
movq -0x910(%rbp), %rdi
callq 0x18120
movq -0x910(%rbp), %rdi
callq 0x18150
movq %rax, %rdi
movb $0x22, -0x389(%rbp)
leaq -0x389(%rbp), %rsi
callq 0x180e0
movq %rax, -0x908(%rbp)
jmp 0xdbfc
movq -0x908(%rbp), %rdi
leaq 0xf917(%rip), %rsi      # 0x1d521
callq 0x18c60
movq %rax, -0x920(%rbp)
jmp 0xdc18
movq -0x920(%rbp), %rdi
leaq 0xfd72(%rip), %rsi      # 0x1d998
callq 0x18200
movq %rax, -0x928(%rbp)
jmp 0xdc34
movq -0x928(%rbp), %rdi
callq 0x18160
movq %rax, -0x930(%rbp)
jmp 0xdc49
movq -0x930(%rbp), %rsi
leaq -0x1f0(%rbp), %rdi
callq 0x18020
jmp 0xdc5e
movq -0x918(%rbp), %rdi
leaq -0x1e0(%rbp), %rsi
movl $0xa4, %edx
leaq -0x1f0(%rbp), %rcx
callq 0x3390
jmp 0xdc7f
leaq -0x388(%rbp), %rdi
callq 0x181b0
leaq -0x1cd(%rbp), %rdi
callq 0x18c90
movq 0x17582(%rip), %rax     # 0x25220
movq %rax, -0x948(%rbp)
leaq 0xf363(%rip), %rsi      # 0x1d00f
leaq -0x3a0(%rbp), %rdi
movl $0x1d, %edx
callq 0x17390
leaq -0x548(%rbp), %rdi
movq %rdi, -0x940(%rbp)
xorl %esi, %esi
movl $0x198, %edx            # imm = 0x198
callq 0x30d0
movq -0x940(%rbp), %rdi
callq 0x18120
movq -0x940(%rbp), %rdi
callq 0x18150
movq %rax, %rdi
movb $0x22, -0x549(%rbp)
leaq -0x549(%rbp), %rsi
callq 0x180e0
movq %rax, -0x938(%rbp)
jmp 0xdd0e
movq -0x938(%rbp), %rdi
leaq 0xf805(%rip), %rsi      # 0x1d521
callq 0x18c60
movq %rax, -0x950(%rbp)
jmp 0xdd2a
movq -0x950(%rbp), %rdi
leaq 0xfc70(%rip), %rsi      # 0x1d9a8
callq 0x18250
movq %rax, -0x958(%rbp)
jmp 0xdd46
movq -0x958(%rbp), %rdi
callq 0x18160
movq %rax, -0x960(%rbp)
jmp 0xdd5b
movq -0x960(%rbp), %rsi
leaq -0x3b0(%rbp), %rdi
callq 0x18020
jmp 0xdd70
movq -0x948(%rbp), %rdi
leaq -0x3a0(%rbp), %rsi
movl $0xa4, %edx
leaq -0x3b0(%rbp), %rcx
callq 0x3390
jmp 0xdd91
leaq -0x548(%rbp), %rdi
callq 0x181b0
leaq -0x1cd(%rbp), %rdi
callq 0xe080
movq 0x17470(%rip), %rax     # 0x25220
movq %rax, -0x978(%rbp)
leaq 0xf251(%rip), %rsi      # 0x1d00f
leaq -0x560(%rbp), %rdi
movl $0x1d, %edx
callq 0x17390
leaq -0x708(%rbp), %rdi
movq %rdi, -0x970(%rbp)
xorl %esi, %esi
movl $0x198, %edx            # imm = 0x198
callq 0x30d0
movq -0x970(%rbp), %rdi
callq 0x18120
movq -0x970(%rbp), %rdi
callq 0x18150
movq %rax, %rdi
movb $0x22, -0x709(%rbp)
leaq -0x709(%rbp), %rsi
callq 0x180e0
movq %rax, -0x968(%rbp)
jmp 0xde20
movq -0x968(%rbp), %rdi
leaq 0xf6f3(%rip), %rsi      # 0x1d521
callq 0x18c60
movq %rax, -0x980(%rbp)
jmp 0xde3c
movq -0x980(%rbp), %rdi
leaq 0xfb6b(%rip), %rsi      # 0x1d9b5
callq 0x18280
movq %rax, -0x988(%rbp)
jmp 0xde58
movq -0x988(%rbp), %rdi
callq 0x18160
movq %rax, -0x990(%rbp)
jmp 0xde6d
movq -0x990(%rbp), %rsi
leaq -0x570(%rbp), %rdi
callq 0x18020
jmp 0xde82
movq -0x978(%rbp), %rdi
leaq -0x560(%rbp), %rsi
movl $0xa4, %edx
leaq -0x570(%rbp), %rcx
callq 0x3390
jmp 0xdea3
leaq -0x708(%rbp), %rdi
callq 0x181b0
leaq -0x1cd(%rbp), %rdi
callq 0x18cb0
movq 0x1735e(%rip), %rax     # 0x25220
movq %rax, -0x9a8(%rbp)
leaq 0xf13f(%rip), %rsi      # 0x1d00f
leaq -0x720(%rbp), %rdi
movl $0x1d, %edx
callq 0x17390
leaq -0x8c8(%rbp), %rdi
movq %rdi, -0x9a0(%rbp)
xorl %esi, %esi
movl $0x198, %edx            # imm = 0x198
callq 0x30d0
movq -0x9a0(%rbp), %rdi
callq 0x18120
movq -0x9a0(%rbp), %rdi
callq 0x18150
movq %rax, %rdi
movb $0x22, -0x8c9(%rbp)
leaq -0x8c9(%rbp), %rsi
callq 0x180e0
movq %rax, -0x998(%rbp)
jmp 0xdf32
movq -0x998(%rbp), %rdi
leaq 0xf5e1(%rip), %rsi      # 0x1d521
callq 0x18c60
movq %rax, -0x9b0(%rbp)
jmp 0xdf4e
movq -0x9b0(%rbp), %rdi
leaq 0xfa6c(%rip), %rsi      # 0x1d9c8
callq 0x18080
movq %rax, -0x9b8(%rbp)
jmp 0xdf6a
movq -0x9b8(%rbp), %rdi
callq 0x18160
movq %rax, -0x9c0(%rbp)
jmp 0xdf7f
movq -0x9c0(%rbp), %rsi
leaq -0x730(%rbp), %rdi
callq 0x18020
jmp 0xdf94
movq -0x9a8(%rbp), %rdi
leaq -0x720(%rbp), %rsi
movl $0xa4, %edx
leaq -0x730(%rbp), %rcx
callq 0x3390
jmp 0xdfb5
leaq -0x8c8(%rbp), %rdi
callq 0x181b0
addq $0x9c0, %rsp            # imm = 0x9C0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
leaq -0x1b8(%rbp), %rdi
callq 0x181b0
jmp 0xe068
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
leaq -0x388(%rbp), %rdi
callq 0x181b0
jmp 0xe068
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
leaq -0x548(%rbp), %rdi
callq 0x181b0
jmp 0xe068
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
leaq -0x708(%rbp), %rdi
callq 0x181b0
jmp 0xe068
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
leaq -0x8c8(%rbp), %rdi
callq 0x181b0
movq -0x1c8(%rbp), %rdi
callq 0x3340
nopw %cs:(%rax,%rax)