// File: /workspace/github_cpp_makefile_star2_O2/aisthesis[P]realnumber/tst/array_arithmetic_test.cpp
// Function: bits::set_invoker()
BOOST_AUTO_TEST_CASE(set) {
		unsigned char arr[] = {0, 0};
		// test setting first bit at each index
		array_arithmetic::bits::set(arr, 0);
		BOOST_CHECK_EQUAL(arr[0], 128);
		array_arithmetic::bits::set(arr, 8);
		BOOST_CHECK_EQUAL(arr[1], 128);
		// reset arr
		for (std::size_t i = 0; i < 2; ++i) { arr[i] = 0; }
		// test setting last bit at each index
		array_arithmetic::bits::set(arr, 7);
		BOOST_CHECK_EQUAL(arr[0], 1);
		array_arithmetic::bits::set(arr, 15);
		BOOST_CHECK_EQUAL(arr[1], 1);
		// verify that there is no change to bits that are already set
		arr[0] = 255;
		array_arithmetic::bits::set(arr, 3);
		BOOST_CHECK_EQUAL(arr[0], 255);
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x240, %rsp            # imm = 0x240
movq 0xb6a5(%rip), %rbx      # 0x16198
leaq 0x6561(%rip), %r15      # 0x1105b
movq %r15, -0x70(%rbp)
leaq 0x6573(%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 0x6b74(%rip), %rsi      # 0x116ad
leaq -0x208(%rbp), %rdi
callq 0x3140
leaq 0x6e83(%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 $0xcc, %edx
movq %rbx, %rdi
callq 0x32a0
leaq -0x208(%rbp), %rdi
callq 0xef42
movq 0xb5fb(%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
pushq $0x22
popq %rsi
movq %r14, %rdi
callq 0x31a0
leaq 0x6adf(%rip), %rsi      # 0x116ad
leaq -0x208(%rbp), %rdi
callq 0x3140
leaq 0x6dfd(%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 $0xcc, %edx
movq %rbx, %rdi
callq 0x32a0
leaq -0x208(%rbp), %rdi
callq 0xef42
movq 0xb566(%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
pushq $0x22
popq %rsi
movq %r14, %rdi
callq 0x31a0
leaq 0x6a4a(%rip), %rsi      # 0x116ad
leaq -0x208(%rbp), %rdi
callq 0x3140
leaq 0x6d78(%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 $0xcc, %edx
movq %rbx, %rdi
callq 0x32a0
leaq -0x208(%rbp), %rdi
callq 0xef42
callq 0xae1e
movq 0xb4cc(%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
pushq $0x22
popq %rsi
movq %r14, %rdi
callq 0x31a0
leaq 0x69b0(%rip), %rsi      # 0x116ad
leaq -0x208(%rbp), %rdi
callq 0x3140
leaq 0x6ceb(%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 $0xcc, %edx
movq %rbx, %rdi
callq 0x32a0
leaq -0x208(%rbp), %rdi
callq 0xef42
movq 0xb437(%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
pushq $0x22
popq %rsi
movq %r14, %rdi
callq 0x31a0
leaq 0x691b(%rip), %rsi      # 0x116ad
leaq -0x208(%rbp), %rdi
callq 0x3140
leaq 0x6c69(%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 $0xcc, %edx
movq %rbx, %rdi
callq 0x32a0
leaq -0x208(%rbp), %rdi
callq 0xef42
addq $0x240, %rsp            # imm = 0x240
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
jmp 0xae07
jmp 0xae07
jmp 0xae07
jmp 0xae07
movq %rax, %rbx
leaq -0x208(%rbp), %rdi
callq 0xef42
movq %rbx, %rdi
callq 0x3260