// File: /workspace/github_cpp_makefile_star2_O2/eecs280staff[P]unit_test_framework/test/test_special_asserts.cpp
// Function: test_assert_equal()
void test_assert_equal() {
    cout << "test_assert_equal" << endl;
    int i = 42;

    ASSERT_EQUAL(42, 42);
    ASSERT_EQUAL(42.5, 42.5);
    ASSERT_EQUAL(string("spam"), string("spam"));
    ASSERT_EQUAL(&i, &i);
    ASSERT_EQUAL(true, true);

    ASSERT_TEST_FAILURE_RAISED(ASSERT_EQUAL(42, 3));
    ASSERT_TEST_FAILURE_RAISED(ASSERT_EQUAL(42.6, 42.5));
    ASSERT_TEST_FAILURE_RAISED(ASSERT_EQUAL(string("spam"), string("EGG")));
    ASSERT_TEST_FAILURE_RAISED(ASSERT_EQUAL(&i + 1, &i));
    ASSERT_TEST_FAILURE_RAISED(ASSERT_EQUAL(true, false));

    ASSERT_TEST_FAILURE_RAISED(ASSERT_EQUAL(Printable{1}, Printable{2}));
    ASSERT_TEST_FAILURE_RAISED(ASSERT_EQUAL(NotPrintable{1}, NotPrintable{2}));
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x58, %rsp
movq 0x5ba6(%rip), %rdi      # 0x7fd8
leaq 0x2c14(%rip), %rsi      # 0x504d
callq 0x2140
movq %rax, %rdi
callq 0x2090
pushq $0x2a
popq %rax
movl %eax, 0x34(%rsp)
leaq 0x10(%rsp), %rbx
movl %eax, (%rbx)
leaq 0x38(%rsp), %r14
movl %eax, (%r14)
leaq 0x2bfc(%rip), %rcx      # 0x505f
pushq $0x4b
popq %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3528
movabsq $0x4045400000000000, %r15 # imm = 0x4045400000000000
movq %r15, (%rbx)
movq %r15, (%r14)
leaq 0x2bec(%rip), %rcx      # 0x5074
leaq 0x10(%rsp), %rdi
leaq 0x38(%rsp), %rsi
pushq $0x4c
popq %rdx
callq 0x363c
leaq 0x2bec(%rip), %rsi      # 0x508d
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x3870
leaq 0x2bd6(%rip), %rsi      # 0x508d
leaq 0x38(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x3870
leaq 0x2bc5(%rip), %rcx      # 0x5092
leaq 0x10(%rsp), %rdi
leaq 0x38(%rsp), %rsi
pushq $0x4d
popq %rdx
callq 0x3758
leaq 0x38(%rsp), %rbx
movq %rbx, %rdi
callq 0x2080
leaq 0x10(%rsp), %r14
movq %r14, %rdi
callq 0x2080
leaq 0x34(%rsp), %r12
movq %r12, (%r14)
movq %r12, (%rbx)
leaq 0x2bb4(%rip), %rcx      # 0x50bf
leaq 0x10(%rsp), %rbx
leaq 0x38(%rsp), %r14
pushq $0x4e
popq %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x38ac
movb $0x1, %al
movb %al, (%rbx)
movb %al, (%r14)
leaq 0x2ba3(%rip), %rcx      # 0x50d4
leaq 0x10(%rsp), %rbx
leaq 0x38(%rsp), %r14
pushq $0x4f
popq %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x39c2
movl $0x2a, (%rbx)
movl $0x3, (%r14)
leaq 0x2b90(%rip), %rcx      # 0x50ed
leaq 0x10(%rsp), %rdi
leaq 0x38(%rsp), %rsi
pushq $0x51
popq %rdx
callq 0x3528
movq 0x5a62(%rip), %rdi      # 0x7fd8
leaq 0x2b84(%rip), %rsi      # 0x5101
callq 0x2140
movq %rax, %rdi
callq 0x2090
leaq 0x2f85(%rip), %rdi      # 0x5516
leaq 0x2b80(%rip), %rsi      # 0x5118
leaq 0x2b97(%rip), %rcx      # 0x5136
pushq $0x51
popq %rdx
callq 0x20c0
jmp 0x25a9
movq %rdx, %rbx
movq %rax, %r14
cmpl $0x1, %ebx
jne 0x2b31
movq %r14, %rdi
callq 0x2050
leaq 0x10(%rsp), %rdi
movq %rax, %rsi
callq 0x3ad6
movq 0x5a04(%rip), %rdi      # 0x7fd8
leaq 0x10(%rsp), %rsi
callq 0x2130
movq %rax, %rdi
callq 0x2090
leaq 0x10(%rsp), %r14
movq %r14, %rdi
callq 0x2080
callq 0x21e0
movabsq $0x40454ccccccccccd, %rax # imm = 0x40454CCCCCCCCCCD
movq %rax, (%r14)
leaq 0x38(%rsp), %rsi
movq %r15, (%rsi)
leaq 0x2b3b(%rip), %rcx      # 0x514f
leaq 0x10(%rsp), %rdi
pushq $0x52
popq %rdx
callq 0x363c
movq 0x59b0(%rip), %rdi      # 0x7fd8
leaq 0x2ad2(%rip), %rsi      # 0x5101
callq 0x2140
movq %rax, %rdi
callq 0x2090
leaq 0x2ed3(%rip), %rdi      # 0x5516
leaq 0x2ace(%rip), %rsi      # 0x5118
leaq 0x2ae5(%rip), %rcx      # 0x5136
pushq $0x52
jmp 0x25a1
jmp 0x265a
movq %rax, %r14
cmpl %ebx, %edx
jne 0x2b31
movq %r14, %rdi
callq 0x2050
leaq 0x10(%rsp), %rdi
movq %rax, %rsi
callq 0x3ad6
movq 0x5957(%rip), %rdi      # 0x7fd8
leaq 0x10(%rsp), %rsi
callq 0x2130
movq %rax, %rdi
callq 0x2090
leaq 0x10(%rsp), %rdi
callq 0x2080
callq 0x21e0
leaq 0x29e4(%rip), %rsi      # 0x508d
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x3870
leaq 0x2aa9(%rip), %rsi      # 0x5168
leaq 0x38(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x3870
leaq 0x2a97(%rip), %rcx      # 0x516c
leaq 0x10(%rsp), %rdi
leaq 0x38(%rsp), %rsi
pushq $0x53
popq %rdx
callq 0x3758
leaq 0x38(%rsp), %rdi
callq 0x2080
leaq 0x10(%rsp), %rdi
callq 0x2080
movq 0x58d6(%rip), %rdi      # 0x7fd8
leaq 0x29f8(%rip), %rsi      # 0x5101
callq 0x2140
movq %rax, %rdi
callq 0x2090
leaq 0x2df9(%rip), %rdi      # 0x5516
leaq 0x29f4(%rip), %rsi      # 0x5118
leaq 0x2a0b(%rip), %rcx      # 0x5136
pushq $0x53
jmp 0x25a1
jmp 0x2758
movq %rdx, %r15
movq %rax, %r14
leaq 0x38(%rsp), %rdi
callq 0x2080
jmp 0x274c
movq %rdx, %r15
movq %rax, %r14
leaq 0x10(%rsp), %rdi
callq 0x2080
jmp 0x275e
movq %rdx, %r15
movq %rax, %r14
cmpl %ebx, %r15d
jne 0x2b31
movq %r14, %rdi
callq 0x2050
leaq 0x10(%rsp), %rdi
movq %rax, %rsi
callq 0x3ad6
movq 0x5855(%rip), %rdi      # 0x7fd8
leaq 0x10(%rsp), %rsi
callq 0x2130
movq %rax, %rdi
callq 0x2090
leaq 0x10(%rsp), %r14
movq %r14, %rdi
callq 0x2080
callq 0x21e0
leaq 0x38(%rsp), %rax
movq %rax, (%r14)
leaq 0x38(%rsp), %rsi
movq %r12, (%rsi)
leaq 0x29da(%rip), %rcx      # 0x5198
leaq 0x10(%rsp), %rdi
pushq $0x54
popq %rdx
callq 0x38ac
movq 0x5806(%rip), %rdi      # 0x7fd8
leaq 0x2928(%rip), %rsi      # 0x5101
callq 0x2140
movq %rax, %rdi
callq 0x2090
leaq 0x2d29(%rip), %rdi      # 0x5516
leaq 0x2924(%rip), %rsi      # 0x5118
leaq 0x293b(%rip), %rcx      # 0x5136
pushq $0x54
jmp 0x25a1
jmp 0x2804
movq %rax, %r14
cmpl %ebx, %edx
jne 0x2b31
movq %r14, %rdi
callq 0x2050
leaq 0x10(%rsp), %rdi
movq %rax, %rsi
callq 0x3ad6
movq 0x57ad(%rip), %rdi      # 0x7fd8
leaq 0x10(%rsp), %rsi
callq 0x2130
movq %rax, %rdi
callq 0x2090
leaq 0x10(%rsp), %r14
movq %r14, %rdi
callq 0x2080
callq 0x21e0
movb $0x1, (%r14)
leaq 0x38(%rsp), %rsi
movb $0x0, (%rsi)
leaq 0x294f(%rip), %rcx      # 0x51b1
leaq 0x10(%rsp), %rdi
pushq $0x55
popq %rdx
callq 0x39c2
movq 0x5762(%rip), %rdi      # 0x7fd8
leaq 0x2884(%rip), %rsi      # 0x5101
callq 0x2140
movq %rax, %rdi
callq 0x2090
leaq 0x2c85(%rip), %rdi      # 0x5516
leaq 0x2880(%rip), %rsi      # 0x5118
leaq 0x2897(%rip), %rcx      # 0x5136
pushq $0x55
jmp 0x25a1
jmp 0x28a8
movq %rax, %r14
cmpl %ebx, %edx
jne 0x2b31
movq %r14, %rdi
callq 0x2050
leaq 0x10(%rsp), %rdi
movq %rax, %rsi
callq 0x3ad6
movq 0x5709(%rip), %rdi      # 0x7fd8
leaq 0x10(%rsp), %rsi
callq 0x2130
movq %rax, %rdi
callq 0x2090
leaq 0x10(%rsp), %r14
movq %r14, %rdi
callq 0x2080
callq 0x21e0
movl $0x1, (%r14)
leaq 0x38(%rsp), %rsi
movl $0x2, (%rsi)
leaq 0x28bf(%rip), %rcx      # 0x51cb
leaq 0x10(%rsp), %rdi
pushq $0x57
popq %rdx
callq 0x3b48
movq 0x56b8(%rip), %rdi      # 0x7fd8
leaq 0x27da(%rip), %rsi      # 0x5101
callq 0x2140
movq %rax, %rdi
callq 0x2090
leaq 0x2bdb(%rip), %rdi      # 0x5516
leaq 0x27d6(%rip), %rsi      # 0x5118
leaq 0x27ed(%rip), %rcx      # 0x5136
pushq $0x57
jmp 0x25a1
jmp 0x2952
movq %rax, %r14
cmpl %ebx, %edx
jne 0x2b31
movq %r14, %rdi
callq 0x2050
leaq 0x10(%rsp), %rdi
movq %rax, %rsi
callq 0x3ad6
movq 0x565f(%rip), %rdi      # 0x7fd8
leaq 0x10(%rsp), %rsi
callq 0x2130
movq %rax, %rdi
callq 0x2090
leaq 0x10(%rsp), %r14
movq %r14, %rdi
callq 0x2080
callq 0x21e0
movl $0x1, (%r14)
leaq 0x38(%rsp), %rsi
movl $0x2, (%rsi)
leaq 0x283e(%rip), %rcx      # 0x51f4
leaq 0x10(%rsp), %rdi
pushq $0x58
popq %rdx
callq 0x3c5c
movq 0x560e(%rip), %rdi      # 0x7fd8
leaq 0x2730(%rip), %rsi      # 0x5101
callq 0x2140
movq %rax, %rdi
callq 0x2090
leaq 0x2b31(%rip), %rdi      # 0x5516
leaq 0x272c(%rip), %rsi      # 0x5118
leaq 0x2743(%rip), %rcx      # 0x5136
pushq $0x58
jmp 0x25a1
jmp 0x29fc
movq %rax, %r14
cmpl %ebx, %edx
jne 0x2b31
movq %r14, %rdi
callq 0x2050
leaq 0x10(%rsp), %rdi
movq %rax, %rsi
callq 0x3ad6
movq 0x55b5(%rip), %rdi      # 0x7fd8
leaq 0x10(%rsp), %rsi
callq 0x2130
movq %rax, %rdi
callq 0x2090
leaq 0x10(%rsp), %rdi
callq 0x2080
callq 0x21e0
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq %rax, %r14
jmp 0x2a62
movq %rax, %r14
leaq 0x10(%rsp), %rdi
callq 0x2080
callq 0x21e0
jmp 0x2b31
movq %rax, %r14
leaq 0x10(%rsp), %rdi
callq 0x2080
jmp 0x2a7e
movq %rax, %r14
callq 0x21e0
jmp 0x2b31
movq %rax, %r14
leaq 0x10(%rsp), %rdi
callq 0x2080
jmp 0x2a9a
movq %rax, %r14
callq 0x21e0
jmp 0x2b31
movq %rax, %r14
leaq 0x10(%rsp), %rdi
callq 0x2080
jmp 0x2ab6
movq %rax, %r14
callq 0x21e0
jmp 0x2b31
movq %rax, %r14
leaq 0x10(%rsp), %rdi
callq 0x2080
jmp 0x2acf
movq %rax, %r14
callq 0x21e0
jmp 0x2b31
movq %rax, %r14
leaq 0x10(%rsp), %rdi
callq 0x2080
jmp 0x2ae8
movq %rax, %r14
callq 0x21e0
jmp 0x2b31
movq %rax, %r14
leaq 0x10(%rsp), %rdi
callq 0x2080
jmp 0x2b01
movq %rax, %r14
callq 0x21e0
jmp 0x2b31
movq %rax, %rdi
callq 0x3b3c
movq %rax, %r14
leaq 0x38(%rsp), %rdi
callq 0x2080
jmp 0x2b22
movq %rax, %r14
leaq 0x10(%rsp), %rdi
callq 0x2080
jmp 0x2b31
movq %rax, %r14
movq %r14, %rdi
callq 0x2220