// File: aisthesis[P]realnumber/tst/array_arithmetic_test.cpp
// Function: multiplication::school_multiply_invoker()
BOOST_AUTO_TEST_CASE(school_multiply) {
		array_arithmetic::convert::from_int(5000000, bigger_arr1, bigger_arr_len);
		array_arithmetic::convert::from_int(400, big_arr, bigger_arr_len - 2);
		array_arithmetic::school_multiply(bigger_arr1, big_arr, big_product_arr, bigger_arr_len, bigger_arr_len - 2);
		BOOST_CHECK_EQUAL(array_arithmetic::convert::to_int(big_product_arr, bigger_arr_len * 2 - 1), 
				two_billion);
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa50, %rsp            # imm = 0xA50
movq 0x11a4e(%rip), %rax     # 0x25220
movq %rax, -0x970(%rbp)
leaq 0x982f(%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 0x1383f
movq -0x960(%rbp), %rdi
leaq 0x9fe7(%rip), %rsi      # 0x1d834
callq 0x18200
movq %rax, -0x978(%rbp)
jmp 0x1385b
movq -0x978(%rbp), %rdi
leaq 0xa120(%rip), %rsi      # 0x1d989
callq 0x18080
movq %rax, -0x980(%rbp)
jmp 0x13877
movq -0x980(%rbp), %rdi
callq 0x18160
movq %rax, -0x988(%rbp)
jmp 0x1388c
movq -0x988(%rbp), %rsi
leaq -0x20(%rbp), %rdi
callq 0x18020
jmp 0x1389e
movq -0x970(%rbp), %rdi
leaq -0x10(%rbp), %rsi
movl $0x157, %edx            # imm = 0x157
leaq -0x20(%rbp), %rcx
callq 0x3390
jmp 0x138b9
leaq -0x1b8(%rbp), %rdi
callq 0x181b0
leaq -0x258(%rbp), %rdi
callq 0x19370
movq 0x11948(%rip), %rax     # 0x25220
movq %rax, -0x990(%rbp)
leaq 0x9729(%rip), %rsi      # 0x1d00f
leaq -0x268(%rbp), %rdi
movl $0x1d, %edx
callq 0x17390
jmp 0x138f9
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 0x13921
leaq -0x410(%rbp), %rdi
callq 0x18150
movq %rax, %rdi
movb $0x22, -0x411(%rbp)
leaq -0x411(%rbp), %rsi
callq 0x180e0
movq %rax, -0x9a0(%rbp)
jmp 0x1394c
movq -0x9a0(%rbp), %rdi
leaq 0x9eda(%rip), %rsi      # 0x1d834
callq 0x18200
movq %rax, -0x9a8(%rbp)
jmp 0x13968
movq -0x9a8(%rbp), %rdi
leaq 0xa022(%rip), %rsi      # 0x1d998
callq 0x18200
movq %rax, -0x9b0(%rbp)
jmp 0x13984
movq -0x9b0(%rbp), %rdi
callq 0x18160
movq %rax, -0x9b8(%rbp)
jmp 0x13999
movq -0x9b8(%rbp), %rsi
leaq -0x278(%rbp), %rdi
callq 0x18020
jmp 0x139ae
movq -0x990(%rbp), %rdi
leaq -0x268(%rbp), %rsi
movl $0x157, %edx            # imm = 0x157
leaq -0x278(%rbp), %rcx
callq 0x3390
jmp 0x139cf
leaq -0x410(%rbp), %rdi
callq 0x181b0
leaq -0x258(%rbp), %rdi
callq 0x19390
jmp 0x139e9
movq 0x11830(%rip), %rax     # 0x25220
movq %rax, -0x9c0(%rbp)
leaq 0x9611(%rip), %rsi      # 0x1d00f
leaq -0x428(%rbp), %rdi
movl $0x1d, %edx
callq 0x17390
jmp 0x13a11
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 0x13a39
leaq -0x5d0(%rbp), %rdi
callq 0x18150
movq %rax, %rdi
movb $0x22, -0x5d1(%rbp)
leaq -0x5d1(%rbp), %rsi
callq 0x180e0
movq %rax, -0x9d0(%rbp)
jmp 0x13a64
movq -0x9d0(%rbp), %rdi
leaq 0x9dc2(%rip), %rsi      # 0x1d834
callq 0x18200
movq %rax, -0x9d8(%rbp)
jmp 0x13a80
movq -0x9d8(%rbp), %rdi
leaq 0x9f1a(%rip), %rsi      # 0x1d9a8
callq 0x18250
movq %rax, -0x9e0(%rbp)
jmp 0x13a9c
movq -0x9e0(%rbp), %rdi
callq 0x18160
movq %rax, -0x9e8(%rbp)
jmp 0x13ab1
movq -0x9e8(%rbp), %rsi
leaq -0x438(%rbp), %rdi
callq 0x18020
jmp 0x13ac6
movq -0x9c0(%rbp), %rdi
leaq -0x428(%rbp), %rsi
movl $0x157, %edx            # imm = 0x157
leaq -0x438(%rbp), %rcx
callq 0x3390
jmp 0x13ae7
leaq -0x5d0(%rbp), %rdi
callq 0x181b0
leaq -0x258(%rbp), %rdi
callq 0x13e10
jmp 0x13b01
movq 0x11718(%rip), %rax     # 0x25220
movq %rax, -0x9f0(%rbp)
leaq 0x94f9(%rip), %rsi      # 0x1d00f
leaq -0x5e8(%rbp), %rdi
movl $0x1d, %edx
callq 0x17390
jmp 0x13b29
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 0x13b51
leaq -0x790(%rbp), %rdi
callq 0x18150
movq %rax, %rdi
movb $0x22, -0x791(%rbp)
leaq -0x791(%rbp), %rsi
callq 0x180e0
movq %rax, -0xa00(%rbp)
jmp 0x13b7c
movq -0xa00(%rbp), %rdi
leaq 0x9caa(%rip), %rsi      # 0x1d834
callq 0x18200
movq %rax, -0xa08(%rbp)
jmp 0x13b98
movq -0xa08(%rbp), %rdi
leaq 0x9e0f(%rip), %rsi      # 0x1d9b5
callq 0x18280
movq %rax, -0xa10(%rbp)
jmp 0x13bb4
movq -0xa10(%rbp), %rdi
callq 0x18160
movq %rax, -0xa18(%rbp)
jmp 0x13bc9
movq -0xa18(%rbp), %rsi
leaq -0x5f8(%rbp), %rdi
callq 0x18020
jmp 0x13bde
movq -0x9f0(%rbp), %rdi
leaq -0x5e8(%rbp), %rsi
movl $0x157, %edx            # imm = 0x157
leaq -0x5f8(%rbp), %rcx
callq 0x3390
jmp 0x13bff
leaq -0x790(%rbp), %rdi
callq 0x181b0
leaq -0x258(%rbp), %rdi
callq 0x193b0
jmp 0x13c19
movq 0x11600(%rip), %rax     # 0x25220
movq %rax, -0xa20(%rbp)
leaq 0x93e1(%rip), %rsi      # 0x1d00f
leaq -0x7a8(%rbp), %rdi
movl $0x1d, %edx
callq 0x17390
jmp 0x13c41
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 0x13c69
leaq -0x950(%rbp), %rdi
callq 0x18150
movq %rax, %rdi
movb $0x22, -0x951(%rbp)
leaq -0x951(%rbp), %rsi
callq 0x180e0
movq %rax, -0xa30(%rbp)
jmp 0x13c94
movq -0xa30(%rbp), %rdi
leaq 0x9b92(%rip), %rsi      # 0x1d834
callq 0x18200
movq %rax, -0xa38(%rbp)
jmp 0x13cb0
movq -0xa38(%rbp), %rdi
leaq 0x9d0a(%rip), %rsi      # 0x1d9c8
callq 0x18080
movq %rax, -0xa40(%rbp)
jmp 0x13ccc
movq -0xa40(%rbp), %rdi
callq 0x18160
movq %rax, -0xa48(%rbp)
jmp 0x13ce1
movq -0xa48(%rbp), %rsi
leaq -0x7b8(%rbp), %rdi
callq 0x18020
jmp 0x13cf6
movq -0xa20(%rbp), %rdi
leaq -0x7a8(%rbp), %rsi
movl $0x157, %edx            # imm = 0x157
leaq -0x7b8(%rbp), %rcx
callq 0x3390
jmp 0x13d17
leaq -0x950(%rbp), %rdi
callq 0x181b0
leaq -0x258(%rbp), %rdi
callq 0x193d0
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 0x13df9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0x13ded
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
leaq -0x410(%rbp), %rdi
callq 0x181b0
jmp 0x13ded
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
leaq -0x5d0(%rbp), %rdi
callq 0x181b0
jmp 0x13ded
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
leaq -0x790(%rbp), %rdi
callq 0x181b0
jmp 0x13ded
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 0x193d0
movq -0x1c8(%rbp), %rdi
callq 0x3340
nopw %cs:(%rax,%rax)