// File: /workspace/github_cpp_makefile_star2_O2/pdx-cs-tutors[P]pdp/tests/cll/cll_removal_tests.cpp
// Function: CLLRemovalTests::CLLRemovalTests()
CLLRemovalTests::CLLRemovalTests() {
    test("remove", [=] {
        call = "remove(rear, 5)";
        initialize({4, 5, 9});
        retval = new int(remove(rear, 5));
        expectList({4, 9});
        expectReturn(1);
    });
    test("remove", [=] {
        call = "remove(rear, 9)";
        initialize({4, 5, 9});
        retval = new int(remove(rear, 9));
        expectList({4, 5});
        expectReturn(1);
    });
    test("remove", [=] {
        call = "remove(rear, 4)";
        initialize({4, 5, 9});
        retval = new int(remove(rear, 4));
        expectList({5, 9});
        expectReturn(1);
    });
    test("remove", [=] {
        call = "remove(rear, 4)";
        initialize({1, 11, 2});
        retval = new int(remove(rear, 4));
        expectList({1, 11, 2});
        expectReturn(0);
    });

    test("remove_all", [=] {
        call = "remove_all(rear, 1)";
        initialize({1, 2, 1, 1, 5});
        retval = new int(remove_all(rear, 1));
        expectList({2, 5});
        expectReturn(3);
    });
    test("remove_all", [=] {
        call = "remove_all(rear, 1)";
        initialize({3, 2, 1, 1});
        retval = new int(remove_all(rear, 1));
        expectList({3, 2});
        expectReturn(2);
    });
    test("remove_all", [=] {
        call = "remove_all(rear, 1)";
        initialize({5, 6, 6});
        retval = new int(remove_all(rear, 1));
        expectList({5, 6, 6});
        expectReturn(0);
    });
    test("remove_all", [=] {
        call = "remove_all(rear, 1)";
        initialize({1});
        retval = new int(remove_all(rear, 1));
        expectList({});
        expectReturn(1);
    });

    test("remove_evens", [=] {
        call = "remove_evens(rear)";
        initialize({3, 5, 6, 7});
        retval = new int(remove_evens(rear));
        expectList({3, 5, 7});
        expectReturn(1);
    });
    test("remove_evens", [=] {
        call = "remove_evens(rear)";
        initialize({2, 3, 4, 5, 6});
        retval = new int(remove_evens(rear));
        expectList({3, 5});
        expectReturn(3);
    });
    test("remove_evens", [=] {
        call = "remove_evens(rear)";
        initialize({12, 8, 4});
        retval = new int(remove_evens(rear));
        expectList({});
        expectReturn(3);
    });
    test("remove_evens", [=] {
        call = "remove_evens(rear)";
        initialize({1, 9, 3});
        retval = new int(remove_evens(rear));
        expectList({1, 9, 3});
        expectReturn(0);
    });
    test("remove_evens", [=] {
        call = "remove_evens(rear)";
        initialize({});
        retval = new int(remove_evens(rear));
        expectList({});
        expectReturn(0);
    });

    test("destroy", [=] {
        call = "destroy(rear)";
        initialize({5, 11, 10});
        retval = new int(destroy(rear));
        expectList({});
        expectReturn(3);
    });
    test("destroy", [=] {
        call = "destroy(rear)";
        initialize({5});
        retval = new int(destroy(rear));
        expectList({});
        expectReturn(1);
    });
    test("destroy", [=] {
        call = "destroy(rear)";
        initialize({});
        retval = new int(destroy(rear));
        expectList({});
        expectReturn(0);
    });
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x410, %rsp            # imm = 0x410
movq %rdi, %rbx
callq 0xd9a0
movq 0xf46f(%rip), %rax      # 0x1ff98
addq $0x10, %rax
movq %rax, (%rbx)
leaq 0x7869(%rip), %rsi      # 0x183a0
leaq -0x218(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xd2c0
leaq -0x418(%rbp), %rdx
andq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0x7f3(%rip), %rax       # 0x11350
movq %rax, 0x18(%rdx)
leaq 0x88c(%rip), %rax       # 0x113f4
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x218(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
leaq -0x418(%rbp), %rdi
callq 0xd490
leaq -0x218(%rbp), %rdi
callq 0xd300
leaq 0x7805(%rip), %rsi      # 0x183a0
leaq -0x1f8(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xd2c0
leaq -0x3f8(%rbp), %rdx
andq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0x85d(%rip), %rax       # 0x1141e
movq %rax, 0x18(%rdx)
leaq 0x8f0(%rip), %rax       # 0x114bc
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x1f8(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
leaq -0x3f8(%rbp), %rdi
callq 0xd490
leaq -0x1f8(%rbp), %rdi
callq 0xd300
leaq 0x77a1(%rip), %rsi      # 0x183a0
leaq -0x1d8(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xd2c0
leaq -0x3d8(%rbp), %rdx
andq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0x8c1(%rip), %rax       # 0x114e6
movq %rax, 0x18(%rdx)
leaq 0x95a(%rip), %rax       # 0x1158a
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x1d8(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
leaq -0x3d8(%rbp), %rdi
callq 0xd490
leaq -0x1d8(%rbp), %rdi
callq 0xd300
leaq 0x773d(%rip), %rsi      # 0x183a0
leaq -0x1b8(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xd2c0
leaq -0x3b8(%rbp), %rdx
andq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0x92b(%rip), %rax       # 0x115b4
movq %rax, 0x18(%rdx)
leaq 0x9c4(%rip), %rax       # 0x11658
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x1b8(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
leaq -0x3b8(%rbp), %rdi
callq 0xd490
leaq -0x1b8(%rbp), %rdi
callq 0xd300
leaq 0x76e0(%rip), %rsi      # 0x183a7
leaq -0x198(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xd2c0
leaq -0x398(%rbp), %rdx
andq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0x995(%rip), %rax       # 0x11682
movq %rax, 0x18(%rdx)
leaq 0xa2a(%rip), %rax       # 0x11722
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x198(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
leaq -0x398(%rbp), %rdi
callq 0xd490
leaq -0x198(%rbp), %rdi
callq 0xd300
leaq 0x767c(%rip), %rsi      # 0x183a7
leaq -0x178(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xd2c0
leaq -0x378(%rbp), %rdx
andq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0x9fb(%rip), %rax       # 0x1174c
movq %rax, 0x18(%rdx)
leaq 0xa8e(%rip), %rax       # 0x117ea
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x178(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
leaq -0x378(%rbp), %rdi
callq 0xd490
leaq -0x178(%rbp), %rdi
callq 0xd300
leaq 0x7618(%rip), %rsi      # 0x183a7
leaq -0x158(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xd2c0
leaq -0x358(%rbp), %rdx
andq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xa5f(%rip), %rax       # 0x11814
movq %rax, 0x18(%rdx)
leaq 0xaf8(%rip), %rax       # 0x118b8
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x158(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
leaq -0x358(%rbp), %rdi
callq 0xd490
leaq -0x158(%rbp), %rdi
callq 0xd300
leaq 0x75b4(%rip), %rsi      # 0x183a7
leaq -0x138(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xd2c0
leaq -0x338(%rbp), %rdx
andq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xac9(%rip), %rax       # 0x118e2
movq %rax, 0x18(%rdx)
leaq 0xb44(%rip), %rax       # 0x11968
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x138(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
leaq -0x338(%rbp), %rdi
callq 0xd490
leaq -0x138(%rbp), %rdi
callq 0xd300
leaq 0x755b(%rip), %rsi      # 0x183b2
leaq -0x118(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xd2c0
leaq -0x318(%rbp), %rdx
andq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xb15(%rip), %rax       # 0x11992
movq %rax, 0x18(%rdx)
leaq 0xbac(%rip), %rax       # 0x11a34
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x118(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
leaq -0x318(%rbp), %rdi
callq 0xd490
leaq -0x118(%rbp), %rdi
callq 0xd300
leaq 0x74f7(%rip), %rsi      # 0x183b2
leaq -0xf8(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xd2c0
leaq -0x2f8(%rbp), %rdx
andq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xb7d(%rip), %rax       # 0x11a5e
movq %rax, 0x18(%rdx)
leaq 0xc10(%rip), %rax       # 0x11afc
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0xf8(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
leaq -0x2f8(%rbp), %rdi
callq 0xd490
leaq -0xf8(%rbp), %rdi
callq 0xd300
leaq 0x7493(%rip), %rsi      # 0x183b2
leaq -0xd8(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xd2c0
leaq -0x2d8(%rbp), %rdx
andq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xbe1(%rip), %rax       # 0x11b26
movq %rax, 0x18(%rdx)
leaq 0xc66(%rip), %rax       # 0x11bb6
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0xd8(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
leaq -0x2d8(%rbp), %rdi
callq 0xd490
leaq -0xd8(%rbp), %rdi
callq 0xd300
leaq 0x742f(%rip), %rsi      # 0x183b2
leaq -0xb8(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xd2c0
leaq -0x2b8(%rbp), %rdx
andq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xc37(%rip), %rax       # 0x11be0
movq %rax, 0x18(%rdx)
leaq 0xccc(%rip), %rax       # 0x11c80
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0xb8(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
leaq -0x2b8(%rbp), %rdi
callq 0xd490
leaq -0xb8(%rbp), %rdi
callq 0xd300
leaq 0x73cb(%rip), %rsi      # 0x183b2
leaq -0x98(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xd2c0
leaq -0x298(%rbp), %rdx
andq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xc9d(%rip), %rax       # 0x11caa
movq %rax, 0x18(%rdx)
leaq 0xd02(%rip), %rax       # 0x11d1a
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x98(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
leaq -0x298(%rbp), %rdi
callq 0xd490
leaq -0x98(%rbp), %rdi
callq 0xd300
leaq 0x7374(%rip), %rsi      # 0x183bf
leaq -0x78(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xd2c0
leaq -0x278(%rbp), %rdx
andq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xcd6(%rip), %rax       # 0x11d44
movq %rax, 0x18(%rdx)
leaq 0xd5b(%rip), %rax       # 0x11dd4
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x78(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
leaq -0x278(%rbp), %rdi
callq 0xd490
leaq -0x78(%rbp), %rdi
callq 0xd300
leaq 0x7319(%rip), %rsi      # 0x183bf
leaq -0x58(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xd2c0
leaq -0x258(%rbp), %rdx
andq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xd35(%rip), %rax       # 0x11dfe
movq %rax, 0x18(%rdx)
leaq 0xdac(%rip), %rax       # 0x11e80
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x58(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
leaq -0x258(%rbp), %rdi
callq 0xd490
leaq -0x58(%rbp), %rdi
callq 0xd300
leaq 0x72be(%rip), %rsi      # 0x183bf
leaq -0x38(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xd2c0
leaq -0x238(%rbp), %rdx
andq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xd86(%rip), %rax       # 0x11eaa
movq %rax, 0x18(%rdx)
leaq 0xdeb(%rip), %rax       # 0x11f1a
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x38(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
leaq -0x238(%rbp), %rdi
callq 0xd490
leaq -0x38(%rbp), %rdi
callq 0xd300
addq $0x410, %rsp            # imm = 0x410
popq %rbx
popq %r14
popq %rbp
retq
movq %rax, %r14
leaq -0x238(%rbp), %rdi
callq 0xd490
leaq -0x38(%rbp), %rdi
jmp 0x11336
jmp 0x1133d
movq %rax, %r14
leaq -0x258(%rbp), %rdi
callq 0xd490
leaq -0x58(%rbp), %rdi
jmp 0x11336
jmp 0x1133d
movq %rax, %r14
leaq -0x278(%rbp), %rdi
callq 0xd490
leaq -0x78(%rbp), %rdi
jmp 0x11336
jmp 0x1133d
movq %rax, %r14
leaq -0x298(%rbp), %rdi
callq 0xd490
leaq -0x98(%rbp), %rdi
jmp 0x11336
jmp 0x1133d
movq %rax, %r14
leaq -0x2b8(%rbp), %rdi
callq 0xd490
leaq -0xb8(%rbp), %rdi
jmp 0x11336
jmp 0x1133d
movq %rax, %r14
leaq -0x2d8(%rbp), %rdi
callq 0xd490
leaq -0xd8(%rbp), %rdi
jmp 0x11336
jmp 0x1133d
movq %rax, %r14
leaq -0x2f8(%rbp), %rdi
callq 0xd490
leaq -0xf8(%rbp), %rdi
jmp 0x11336
jmp 0x1133d
movq %rax, %r14
leaq -0x318(%rbp), %rdi
callq 0xd490
leaq -0x118(%rbp), %rdi
jmp 0x11336
jmp 0x1133d
movq %rax, %r14
leaq -0x338(%rbp), %rdi
callq 0xd490
leaq -0x138(%rbp), %rdi
jmp 0x11336
jmp 0x1133d
movq %rax, %r14
leaq -0x358(%rbp), %rdi
callq 0xd490
leaq -0x158(%rbp), %rdi
jmp 0x11336
jmp 0x1133d
movq %rax, %r14
leaq -0x378(%rbp), %rdi
callq 0xd490
leaq -0x178(%rbp), %rdi
jmp 0x11336
jmp 0x1133d
movq %rax, %r14
leaq -0x398(%rbp), %rdi
callq 0xd490
leaq -0x198(%rbp), %rdi
jmp 0x11336
jmp 0x1133d
movq %rax, %r14
leaq -0x3b8(%rbp), %rdi
callq 0xd490
leaq -0x1b8(%rbp), %rdi
jmp 0x11336
jmp 0x1133d
movq %rax, %r14
leaq -0x3d8(%rbp), %rdi
callq 0xd490
leaq -0x1d8(%rbp), %rdi
jmp 0x11336
jmp 0x1133d
movq %rax, %r14
leaq -0x3f8(%rbp), %rdi
callq 0xd490
leaq -0x1f8(%rbp), %rdi
jmp 0x11336
jmp 0x1133d
movq %rax, %r14
leaq -0x418(%rbp), %rdi
callq 0xd490
leaq -0x218(%rbp), %rdi
callq 0xd300
jmp 0x11340
movq %rax, %r14
movq %rbx, %rdi
callq 0xd5b0
movq %r14, %rdi
callq 0xddb0