// File: eecs280staff[P]unit_test_framework/test/test_special_asserts.cpp
// Function: test_assert_not_equal()
void test_assert_not_equal() {
    cout << "test_assert_not_equal" << endl;

    int i = 42;

    ASSERT_NOT_EQUAL(42, 43);
    ASSERT_NOT_EQUAL(42.5, 42.6);
    ASSERT_NOT_EQUAL(string("spam"), string("egg"));
    ASSERT_NOT_EQUAL(&i, &i + 1);
    ASSERT_NOT_EQUAL(true, false);

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

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

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2d0, %rsp            # imm = 0x2D0
movq 0x8ea6(%rip), %rdi      # 0xbfd8
leaq 0x511a(%rip), %rsi      # 0x8253
callq 0x2180
movq %rax, %rdi
movq 0x8e80(%rip), %rsi      # 0xbfc8
callq 0x21c0
movl $0x2a, -0x4(%rbp)
movl $0x2a, -0x8(%rbp)
movl $0x2b, -0xc(%rbp)
leaq 0x5100(%rip), %rcx      # 0x8269
leaq -0x8(%rbp), %rdi
leaq -0xc(%rbp), %rsi
movl $0x60, %edx
callq 0x4d10
movabsq $0x4045400000000000, %rax # imm = 0x4045400000000000
movq %rax, -0x18(%rbp)
movabsq $0x40454ccccccccccd, %rax # imm = 0x40454CCCCCCCCCCD
movq %rax, -0x20(%rbp)
leaq 0x50e4(%rip), %rcx      # 0x8282
leaq -0x18(%rbp), %rdi
leaq -0x20(%rbp), %rsi
movl $0x61, %edx
callq 0x4e90
leaq -0x41(%rbp), %rdi
movq %rdi, -0x248(%rbp)
callq 0x22d0
movq -0x248(%rbp), %rdx
leaq 0x4eef(%rip), %rsi      # 0x80bd
leaq -0x40(%rbp), %rdi
callq 0x45d0
jmp 0x31d9
leaq -0x79(%rbp), %rdi
movq %rdi, -0x250(%rbp)
callq 0x22d0
movq -0x250(%rbp), %rdx
leaq 0x50a8(%rip), %rsi      # 0x829f
leaq -0x78(%rbp), %rdi
callq 0x45d0
jmp 0x3202
leaq 0x509a(%rip), %rcx      # 0x82a3
leaq -0x40(%rbp), %rdi
leaq -0x78(%rbp), %rsi
movl $0x62, %edx
callq 0x5010
jmp 0x321d
leaq -0x78(%rbp), %rdi
callq 0x20c0
leaq -0x79(%rbp), %rdi
callq 0x21e0
leaq -0x40(%rbp), %rdi
callq 0x20c0
leaq -0x41(%rbp), %rdi
callq 0x21e0
leaq -0x4(%rbp), %rax
movq %rax, -0x88(%rbp)
leaq (%rbp), %rax
movq %rax, -0x90(%rbp)
leaq 0x5075(%rip), %rcx      # 0x82d3
leaq -0x88(%rbp), %rdi
leaq -0x90(%rbp), %rsi
movl $0x63, %edx
callq 0x5190
movb $0x1, -0x91(%rbp)
movb $0x0, -0x92(%rbp)
leaq 0x5065(%rip), %rcx      # 0x82f0
leaq -0x91(%rbp), %rdi
leaq -0x92(%rbp), %rsi
movl $0x64, %edx
callq 0x5310
movl $0x2a, -0x98(%rbp)
movl $0x2a, -0x9c(%rbp)
leaq 0x5050(%rip), %rcx      # 0x830e
leaq -0x98(%rbp), %rdi
leaq -0x9c(%rbp), %rsi
movl $0x66, %edx
callq 0x4d10
jmp 0x32d8
movq 0x8cf9(%rip), %rdi      # 0xbfd8
leaq 0x4e4b(%rip), %rsi      # 0x8131
callq 0x2180
movq %rax, -0x258(%rbp)
jmp 0x32f4
movq -0x258(%rbp), %rdi
movq 0x8cc6(%rip), %rsi      # 0xbfc8
callq 0x21c0
jmp 0x3309
leaq 0x52ab(%rip), %rdi      # 0x85bb
leaq 0x4e31(%rip), %rsi      # 0x8148
movl $0x66, %edx
leaq 0x5004(%rip), %rcx      # 0x8327
callq 0x20d0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x336b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x3359
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x20c0
leaq -0x79(%rbp), %rdi
callq 0x21e0
leaq -0x40(%rbp), %rdi
callq 0x20c0
leaq -0x41(%rbp), %rdi
callq 0x21e0
jmp 0x3c60
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
movl -0x54(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0x3c60
movq -0x50(%rbp), %rdi
callq 0x2060
movq %rax, -0xa8(%rbp)
movq -0xa8(%rbp), %rsi
leaq -0xc8(%rbp), %rdi
callq 0x4960
jmp 0x33ba
movq 0x8c17(%rip), %rdi      # 0xbfd8
leaq -0xc8(%rbp), %rsi
callq 0x2170
movq %rax, -0x260(%rbp)
jmp 0x33d6
movq -0x260(%rbp), %rdi
movq 0x8be4(%rip), %rsi      # 0xbfc8
callq 0x21c0
jmp 0x33eb
leaq -0xc8(%rbp), %rdi
callq 0x20c0
callq 0x2290
movabsq $0x4045400000000000, %rax # imm = 0x4045400000000000
movq %rax, -0xd0(%rbp)
movq %rax, -0xd8(%rbp)
leaq 0x4f29(%rip), %rcx      # 0x8344
leaq -0xd0(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
movl $0x67, %edx
callq 0x4e90
jmp 0x3435
movq 0x8b9c(%rip), %rdi      # 0xbfd8
leaq 0x4cee(%rip), %rsi      # 0x8131
callq 0x2180
movq %rax, -0x268(%rbp)
jmp 0x3451
movq -0x268(%rbp), %rdi
movq 0x8b69(%rip), %rsi      # 0xbfc8
callq 0x21c0
jmp 0x3466
leaq 0x514e(%rip), %rdi      # 0x85bb
leaq 0x4cd4(%rip), %rsi      # 0x8148
movl $0x67, %edx
leaq 0x4ea7(%rip), %rcx      # 0x8327
callq 0x20d0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x34ab
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xc8(%rbp), %rdi
callq 0x20c0
callq 0x2290
jmp 0x34b2
jmp 0x3c60
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
movl -0x54(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0x3c60
movq -0x50(%rbp), %rdi
callq 0x2060
movq %rax, -0xe0(%rbp)
movq -0xe0(%rbp), %rsi
leaq -0x100(%rbp), %rdi
callq 0x4960
jmp 0x34f8
movq 0x8ad9(%rip), %rdi      # 0xbfd8
leaq -0x100(%rbp), %rsi
callq 0x2170
movq %rax, -0x270(%rbp)
jmp 0x3514
movq -0x270(%rbp), %rdi
movq 0x8aa6(%rip), %rsi      # 0xbfc8
callq 0x21c0
jmp 0x3529
leaq -0x100(%rbp), %rdi
callq 0x20c0
callq 0x2290
leaq -0x121(%rbp), %rdi
movq %rdi, -0x278(%rbp)
callq 0x22d0
movq -0x278(%rbp), %rdx
leaq 0x4b62(%rip), %rsi      # 0x80bd
leaq -0x120(%rbp), %rdi
callq 0x45d0
jmp 0x3569
leaq -0x149(%rbp), %rdi
movq %rdi, -0x280(%rbp)
callq 0x22d0
movq -0x280(%rbp), %rdx
leaq 0x4b33(%rip), %rsi      # 0x80bd
leaq -0x148(%rbp), %rdi
callq 0x45d0
jmp 0x3598
leaq 0x4dc2(%rip), %rcx      # 0x8361
leaq -0x120(%rbp), %rdi
leaq -0x148(%rbp), %rsi
movl $0x69, %edx
callq 0x5010
jmp 0x35b9
leaq -0x148(%rbp), %rdi
callq 0x20c0
leaq -0x149(%rbp), %rdi
callq 0x21e0
leaq -0x120(%rbp), %rdi
callq 0x20c0
leaq -0x121(%rbp), %rdi
callq 0x21e0
movq 0x89e8(%rip), %rdi      # 0xbfd8
leaq 0x4b3a(%rip), %rsi      # 0x8131
callq 0x2180
movq %rax, -0x288(%rbp)
jmp 0x3605
movq -0x288(%rbp), %rdi
movq 0x89b5(%rip), %rsi      # 0xbfc8
callq 0x21c0
jmp 0x361a
leaq 0x4f9a(%rip), %rdi      # 0x85bb
leaq 0x4b20(%rip), %rsi      # 0x8148
movl $0x69, %edx
leaq 0x4cf3(%rip), %rcx      # 0x8327
callq 0x20d0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x365f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x100(%rbp), %rdi
callq 0x20c0
callq 0x2290
jmp 0x3666
jmp 0x3c60
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x36b7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x369f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x148(%rbp), %rdi
callq 0x20c0
leaq -0x149(%rbp), %rdi
callq 0x21e0
leaq -0x120(%rbp), %rdi
callq 0x20c0
leaq -0x121(%rbp), %rdi
callq 0x21e0
jmp 0x36d1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
movl -0x54(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0x3c60
movq -0x50(%rbp), %rdi
callq 0x2060
movq %rax, -0x158(%rbp)
movq -0x158(%rbp), %rsi
leaq -0x178(%rbp), %rdi
callq 0x4960
jmp 0x3706
movq 0x88cb(%rip), %rdi      # 0xbfd8
leaq -0x178(%rbp), %rsi
callq 0x2170
movq %rax, -0x290(%rbp)
jmp 0x3722
movq -0x290(%rbp), %rdi
movq 0x8898(%rip), %rsi      # 0xbfc8
callq 0x21c0
jmp 0x3737
leaq -0x178(%rbp), %rdi
callq 0x20c0
callq 0x2290
leaq -0x4(%rbp), %rax
movq %rax, -0x180(%rbp)
movq %rax, -0x188(%rbp)
leaq 0x4c31(%rip), %rcx      # 0x8392
leaq -0x180(%rbp), %rdi
leaq -0x188(%rbp), %rsi
movl $0x6a, %edx
callq 0x5190
jmp 0x377b
movq 0x8856(%rip), %rdi      # 0xbfd8
leaq 0x49a8(%rip), %rsi      # 0x8131
callq 0x2180
movq %rax, -0x298(%rbp)
jmp 0x3797
movq -0x298(%rbp), %rdi
movq 0x8823(%rip), %rsi      # 0xbfc8
callq 0x21c0
jmp 0x37ac
leaq 0x4e08(%rip), %rdi      # 0x85bb
leaq 0x498e(%rip), %rsi      # 0x8148
movl $0x6a, %edx
leaq 0x4b61(%rip), %rcx      # 0x8327
callq 0x20d0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x37f1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x178(%rbp), %rdi
callq 0x20c0
callq 0x2290
jmp 0x37f8
jmp 0x3c60
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
movl -0x54(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0x3c60
movq -0x50(%rbp), %rdi
callq 0x2060
movq %rax, -0x190(%rbp)
movq -0x190(%rbp), %rsi
leaq -0x1b0(%rbp), %rdi
callq 0x4960
jmp 0x383e
movq 0x8793(%rip), %rdi      # 0xbfd8
leaq -0x1b0(%rbp), %rsi
callq 0x2170
movq %rax, -0x2a0(%rbp)
jmp 0x385a
movq -0x2a0(%rbp), %rdi
movq 0x8760(%rip), %rsi      # 0xbfc8
callq 0x21c0
jmp 0x386f
leaq -0x1b0(%rbp), %rdi
callq 0x20c0
callq 0x2290
movb $0x1, -0x1b1(%rbp)
movb $0x1, -0x1b2(%rbp)
leaq 0x4b16(%rip), %rcx      # 0x83ab
leaq -0x1b1(%rbp), %rdi
leaq -0x1b2(%rbp), %rsi
movl $0x6b, %edx
callq 0x5310
jmp 0x38af
movq 0x8722(%rip), %rdi      # 0xbfd8
leaq 0x4874(%rip), %rsi      # 0x8131
callq 0x2180
movq %rax, -0x2a8(%rbp)
jmp 0x38cb
movq -0x2a8(%rbp), %rdi
movq 0x86ef(%rip), %rsi      # 0xbfc8
callq 0x21c0
jmp 0x38e0
leaq 0x4cd4(%rip), %rdi      # 0x85bb
leaq 0x485a(%rip), %rsi      # 0x8148
movl $0x6b, %edx
leaq 0x4a2d(%rip), %rcx      # 0x8327
callq 0x20d0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x3925
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x1b0(%rbp), %rdi
callq 0x20c0
callq 0x2290
jmp 0x392c
jmp 0x3c60
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
movl -0x54(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0x3c60
movq -0x50(%rbp), %rdi
callq 0x2060
movq %rax, -0x1c0(%rbp)
movq -0x1c0(%rbp), %rsi
leaq -0x1e0(%rbp), %rdi
callq 0x4960
jmp 0x3972
movq 0x865f(%rip), %rdi      # 0xbfd8
leaq -0x1e0(%rbp), %rsi
callq 0x2170
movq %rax, -0x2b0(%rbp)
jmp 0x398e
movq -0x2b0(%rbp), %rdi
movq 0x862c(%rip), %rsi      # 0xbfc8
callq 0x21c0
jmp 0x39a3
leaq -0x1e0(%rbp), %rdi
callq 0x20c0
callq 0x2290
movl $0x1, -0x1e4(%rbp)
movl $0x1, -0x1e8(%rbp)
leaq 0x49f9(%rip), %rcx      # 0x83c8
leaq -0x1e4(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
movl $0x6d, %edx
callq 0x5490
jmp 0x39e9
movq 0x85e8(%rip), %rdi      # 0xbfd8
leaq 0x473a(%rip), %rsi      # 0x8131
callq 0x2180
movq %rax, -0x2b8(%rbp)
jmp 0x3a05
movq -0x2b8(%rbp), %rdi
movq 0x85b5(%rip), %rsi      # 0xbfc8
callq 0x21c0
jmp 0x3a1a
leaq 0x4b9a(%rip), %rdi      # 0x85bb
leaq 0x4720(%rip), %rsi      # 0x8148
movl $0x6d, %edx
leaq 0x48f3(%rip), %rcx      # 0x8327
callq 0x20d0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x3a5f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x1e0(%rbp), %rdi
callq 0x20c0
callq 0x2290
jmp 0x3a66
jmp 0x3c60
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
movl -0x54(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0x3c60
movq -0x50(%rbp), %rdi
callq 0x2060
movq %rax, -0x1f0(%rbp)
movq -0x1f0(%rbp), %rsi
leaq -0x210(%rbp), %rdi
callq 0x4960
jmp 0x3aac
movq 0x8525(%rip), %rdi      # 0xbfd8
leaq -0x210(%rbp), %rsi
callq 0x2170
movq %rax, -0x2c0(%rbp)
jmp 0x3ac8
movq -0x2c0(%rbp), %rdi
movq 0x84f2(%rip), %rsi      # 0xbfc8
callq 0x21c0
jmp 0x3add
leaq -0x210(%rbp), %rdi
callq 0x20c0
callq 0x2290
movl $0x2, -0x214(%rbp)
movl $0x2, -0x218(%rbp)
leaq 0x48ec(%rip), %rcx      # 0x83f5
leaq -0x214(%rbp), %rdi
leaq -0x218(%rbp), %rsi
movl $0x6f, %edx
callq 0x5610
jmp 0x3b23
movq 0x84ae(%rip), %rdi      # 0xbfd8
leaq 0x4600(%rip), %rsi      # 0x8131
callq 0x2180
movq %rax, -0x2c8(%rbp)
jmp 0x3b3f
movq -0x2c8(%rbp), %rdi
movq 0x847b(%rip), %rsi      # 0xbfc8
callq 0x21c0
jmp 0x3b54
leaq 0x4a60(%rip), %rdi      # 0x85bb
leaq 0x45e6(%rip), %rsi      # 0x8148
movl $0x6f, %edx
leaq 0x47b9(%rip), %rcx      # 0x8327
callq 0x20d0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x3b99
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x210(%rbp), %rdi
callq 0x20c0
callq 0x2290
jmp 0x3ba0
jmp 0x3c60
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
movl -0x54(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0x3c60
movq -0x50(%rbp), %rdi
callq 0x2060
movq %rax, -0x220(%rbp)
movq -0x220(%rbp), %rsi
leaq -0x240(%rbp), %rdi
callq 0x4960
jmp 0x3be6
movq 0x83eb(%rip), %rdi      # 0xbfd8
leaq -0x240(%rbp), %rsi
callq 0x2170
movq %rax, -0x2d0(%rbp)
jmp 0x3c02
movq -0x2d0(%rbp), %rdi
movq 0x83b8(%rip), %rsi      # 0xbfc8
callq 0x21c0
jmp 0x3c17
leaq -0x240(%rbp), %rdi
callq 0x20c0
callq 0x2290
addq $0x2d0, %rsp            # imm = 0x2D0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x3c57
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x240(%rbp), %rdi
callq 0x20c0
callq 0x2290
jmp 0x3c5e
jmp 0x3c60
movq -0x50(%rbp), %rdi
callq 0x22c0
movq %rax, %rdi
callq 0x4a20
nopw %cs:(%rax,%rax)