// File: /workspace/github_cpp_makefile_star2_O3/pdx-cs-tutors[P]pdp/tests/lll/lll_removal_tests.cpp
// Function: LLLRemovalTests::LLLRemovalTests()
LLLRemovalTests::LLLRemovalTests() {
    test("remove", [=] {
        call = "remove(head, 8)";
        initialize({3, 8, 1, 4});
        retval = new int(remove(head, 8));
        expectList({3, 1, 4});
        expectReturn(1);
    });
    test("remove", [=] {
        call = "remove(head, 6)";
        initialize({9, 9, 4});
        retval = new int(remove(head, 6));
        expectList({9, 9, 4});
        expectReturn(0);
    });
    test("remove", [=] {
        call = "remove(head, 6)";
        initialize({1, 2, 6});
        retval = new int(remove(head, 6));
        expectList({1, 2});
        expectReturn(1);
    });
    test("remove", [=] {
        call = "remove(head, 6)";
        initialize({6, 1, 2, 6});
        retval = new int(remove(head, 6));
        expectList({1, 2, 6});
        expectReturn(1);
    });
    test("remove", [=] {
        call = "remove(head, 4)";
        retval = new int(remove(head, 4));
        expectList({});
        expectReturn(0);
    });

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

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

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x388, %rsp            # imm = 0x388
movq %rdi, %rbx
leaq 0x10(%rdi), %rax
movl $0x0, 0x10(%rdi)
xorl %ecx, %ecx
movq %rcx, 0x18(%rdi)
movq %rax, 0x20(%rdi)
movq %rax, 0x28(%rdi)
leaq 0x68(%rdi), %rax
xorps %xmm0, %xmm0
movups %xmm0, 0x30(%rdi)
movups %xmm0, 0x40(%rdi)
movq %rax, 0x58(%rdi)
movq %rcx, 0x60(%rdi)
movb $0x0, 0x68(%rdi)
movups %xmm0, 0x80(%rdi)
movq %rcx, 0x90(%rdi)
movq 0xb1bc(%rip), %rax      # 0x1cf60
addq $0x10, %rax
movq %rax, (%rdi)
leaq -0x388(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x4613(%rip), %rsi      # 0x163d0
leaq 0x4612(%rip), %rdx      # 0x163d6
leaq -0x398(%rbp), %rdi
callq 0xa220
leaq -0x378(%rbp), %rdx
movq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xa7d(%rip), %rax       # 0x12866
movq %rax, 0x18(%rdx)
leaq 0xb28(%rip), %rax       # 0x1291c
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x398(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
movq -0x368(%rbp), %rax
testq %rax, %rax
je 0x11e25
leaq -0x378(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x398(%rbp), %rdi
cmpq %r15, %rdi
je 0x11e36
callq 0xa570
leaq -0x348(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x4588(%rip), %rsi      # 0x163d0
leaq 0x4587(%rip), %rdx      # 0x163d6
leaq -0x358(%rbp), %rdi
callq 0xa220
leaq -0x338(%rbp), %rdx
movq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xad2(%rip), %rax       # 0x12946
movq %rax, 0x18(%rdx)
leaq 0xb7f(%rip), %rax       # 0x129fe
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x358(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
movq -0x328(%rbp), %rax
testq %rax, %rax
je 0x11eb0
leaq -0x338(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x358(%rbp), %rdi
cmpq %r15, %rdi
je 0x11ec1
callq 0xa570
leaq -0x308(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x44fd(%rip), %rsi      # 0x163d0
leaq 0x44fc(%rip), %rdx      # 0x163d6
leaq -0x318(%rbp), %rdi
callq 0xa220
leaq -0x2f8(%rbp), %rdx
movq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xb29(%rip), %rax       # 0x12a28
movq %rax, 0x18(%rdx)
leaq 0xbd2(%rip), %rax       # 0x12adc
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x318(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
movq -0x2e8(%rbp), %rax
testq %rax, %rax
je 0x11f3b
leaq -0x2f8(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x318(%rbp), %rdi
cmpq %r15, %rdi
je 0x11f4c
callq 0xa570
leaq -0x2c8(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x4472(%rip), %rsi      # 0x163d0
leaq 0x4471(%rip), %rdx      # 0x163d6
leaq -0x2d8(%rbp), %rdi
callq 0xa220
leaq -0x2b8(%rbp), %rdx
movq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xb7c(%rip), %rax       # 0x12b06
movq %rax, 0x18(%rdx)
leaq 0xc27(%rip), %rax       # 0x12bbc
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x2d8(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
movq -0x2a8(%rbp), %rax
testq %rax, %rax
je 0x11fc6
leaq -0x2b8(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x2d8(%rbp), %rdi
cmpq %r15, %rdi
je 0x11fd7
callq 0xa570
leaq -0x288(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x43e7(%rip), %rsi      # 0x163d0
leaq 0x43e6(%rip), %rdx      # 0x163d6
leaq -0x298(%rbp), %rdi
callq 0xa220
leaq -0x278(%rbp), %rdx
movq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xbd1(%rip), %rax       # 0x12be6
movq %rax, 0x18(%rdx)
leaq 0xc3c(%rip), %rax       # 0x12c5c
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x298(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
movq -0x268(%rbp), %rax
testq %rax, %rax
je 0x12051
leaq -0x278(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x298(%rbp), %rdi
cmpq %r15, %rdi
je 0x12062
callq 0xa570
leaq -0x248(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x4363(%rip), %rsi      # 0x163d7
leaq 0x4366(%rip), %rdx      # 0x163e1
leaq -0x258(%rbp), %rdi
callq 0xa220
leaq -0x238(%rbp), %rdx
movq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xbe6(%rip), %rax       # 0x12c86
movq %rax, 0x18(%rdx)
leaq 0xc91(%rip), %rax       # 0x12d3c
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x258(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
movq -0x228(%rbp), %rax
testq %rax, %rax
je 0x120dc
leaq -0x238(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x258(%rbp), %rdi
cmpq %r15, %rdi
je 0x120ed
callq 0xa570
leaq -0x208(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x42d8(%rip), %rsi      # 0x163d7
leaq 0x42db(%rip), %rdx      # 0x163e1
leaq -0x218(%rbp), %rdi
callq 0xa220
leaq -0x1f8(%rbp), %rdx
movq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xc3b(%rip), %rax       # 0x12d66
movq %rax, 0x18(%rdx)
leaq 0xce2(%rip), %rax       # 0x12e18
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x218(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
movq -0x1e8(%rbp), %rax
testq %rax, %rax
je 0x12167
leaq -0x1f8(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x218(%rbp), %rdi
cmpq %r15, %rdi
je 0x12178
callq 0xa570
leaq -0x1c8(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x424d(%rip), %rsi      # 0x163d7
leaq 0x4250(%rip), %rdx      # 0x163e1
leaq -0x1d8(%rbp), %rdi
callq 0xa220
leaq -0x1b8(%rbp), %rdx
movq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xc8c(%rip), %rax       # 0x12e42
movq %rax, 0x18(%rdx)
leaq 0xd31(%rip), %rax       # 0x12ef2
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x1d8(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
movq -0x1a8(%rbp), %rax
testq %rax, %rax
je 0x121f2
leaq -0x1b8(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x1d8(%rbp), %rdi
cmpq %r15, %rdi
je 0x12203
callq 0xa570
leaq -0x188(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x41c2(%rip), %rsi      # 0x163d7
leaq 0x41c5(%rip), %rdx      # 0x163e1
leaq -0x198(%rbp), %rdi
callq 0xa220
leaq -0x178(%rbp), %rdx
movq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xcdb(%rip), %rax       # 0x12f1c
movq %rax, 0x18(%rdx)
leaq 0xd80(%rip), %rax       # 0x12fcc
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x198(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
movq -0x168(%rbp), %rax
testq %rax, %rax
je 0x1227d
leaq -0x178(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x198(%rbp), %rdi
cmpq %r15, %rdi
je 0x1228e
callq 0xa570
leaq -0x148(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x4137(%rip), %rsi      # 0x163d7
leaq 0x413a(%rip), %rdx      # 0x163e1
leaq -0x158(%rbp), %rdi
callq 0xa220
leaq -0x138(%rbp), %rdx
movq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xd2a(%rip), %rax       # 0x12ff6
movq %rax, 0x18(%rdx)
leaq 0xd95(%rip), %rax       # 0x1306c
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x158(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
movq -0x128(%rbp), %rax
testq %rax, %rax
je 0x12308
leaq -0x138(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x158(%rbp), %rdi
cmpq %r15, %rdi
je 0x12319
callq 0xa570
leaq -0x108(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x40b7(%rip), %rsi      # 0x163e2
leaq 0x40bc(%rip), %rdx      # 0x163ee
leaq -0x118(%rbp), %rdi
callq 0xa220
leaq -0xf8(%rbp), %rdx
movq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xd3f(%rip), %rax       # 0x13096
movq %rax, 0x18(%rdx)
leaq 0xda4(%rip), %rax       # 0x13106
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x118(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
movq -0xe8(%rbp), %rax
testq %rax, %rax
je 0x12393
leaq -0xf8(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x118(%rbp), %rdi
cmpq %r15, %rdi
je 0x123a4
callq 0xa570
leaq -0xc8(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x402c(%rip), %rsi      # 0x163e2
leaq 0x4031(%rip), %rdx      # 0x163ee
leaq -0xd8(%rbp), %rdi
callq 0xa220
leaq -0xb8(%rbp), %rdx
movq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xd4e(%rip), %rax       # 0x13130
movq %rax, 0x18(%rdx)
leaq 0xddb(%rip), %rax       # 0x131c8
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0xd8(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
movq -0xa8(%rbp), %rax
testq %rax, %rax
je 0x1241e
leaq -0xb8(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0xd8(%rbp), %rdi
cmpq %r15, %rdi
je 0x1242f
callq 0xa570
leaq -0x88(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x3fa1(%rip), %rsi      # 0x163e2
leaq 0x3fa6(%rip), %rdx      # 0x163ee
leaq -0x98(%rbp), %rdi
callq 0xa220
leaq -0x78(%rbp), %rdx
movq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xd88(%rip), %rax       # 0x131f2
movq %rax, 0x18(%rdx)
leaq 0xe27(%rip), %rax       # 0x1329c
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x98(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
movq -0x68(%rbp), %rax
testq %rax, %rax
je 0x124a0
leaq -0x78(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x98(%rbp), %rdi
cmpq %r15, %rdi
je 0x124b1
callq 0xa570
leaq -0x48(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x3f22(%rip), %rsi      # 0x163e2
leaq 0x3f27(%rip), %rdx      # 0x163ee
leaq -0x58(%rbp), %rdi
callq 0xa220
leaq -0x38(%rbp), %rdx
movq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xde0(%rip), %rax       # 0x132c6
movq %rax, 0x18(%rdx)
leaq 0xe79(%rip), %rax       # 0x1336a
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x58(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
movq -0x28(%rbp), %rax
testq %rax, %rax
je 0x12519
leaq -0x38(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x58(%rbp), %rdi
cmpq %r15, %rdi
je 0x12527
callq 0xa570
addq $0x388, %rsp            # imm = 0x388
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
jmp 0x1284b
jmp 0x1284b
jmp 0x1284b
jmp 0x1284b
jmp 0x1284b
jmp 0x1284b
jmp 0x1284b
jmp 0x1284b
jmp 0x1284b
jmp 0x1284b
jmp 0x1284b
jmp 0x1284b
jmp 0x1284b
jmp 0x1284b
movq %rax, %r14
movq -0x28(%rbp), %rax
testq %rax, %rax
je 0x12595
leaq -0x38(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x58(%rbp), %rdi
jmp 0x1283f
jmp 0x1284b
jmp 0x12853
movq %rax, %r14
movq -0x68(%rbp), %rax
testq %rax, %rax
je 0x125c2
leaq -0x78(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x98(%rbp), %rdi
jmp 0x1283f
jmp 0x1284b
jmp 0x12853
movq %rax, %r14
movq -0xa8(%rbp), %rax
testq %rax, %rax
je 0x125f8
leaq -0xb8(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0xd8(%rbp), %rdi
jmp 0x1283f
jmp 0x1284b
jmp 0x12853
movq %rax, %r14
movq -0xe8(%rbp), %rax
testq %rax, %rax
je 0x1262e
leaq -0xf8(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x118(%rbp), %rdi
jmp 0x1283f
jmp 0x1284b
jmp 0x12853
movq %rax, %r14
movq -0x128(%rbp), %rax
testq %rax, %rax
je 0x12664
leaq -0x138(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x158(%rbp), %rdi
jmp 0x1283f
jmp 0x1284b
jmp 0x12853
movq %rax, %r14
movq -0x168(%rbp), %rax
testq %rax, %rax
je 0x1269a
leaq -0x178(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x198(%rbp), %rdi
jmp 0x1283f
jmp 0x1284b
jmp 0x12853
movq %rax, %r14
movq -0x1a8(%rbp), %rax
testq %rax, %rax
je 0x126d0
leaq -0x1b8(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x1d8(%rbp), %rdi
jmp 0x1283f
jmp 0x1284b
jmp 0x12853
movq %rax, %r14
movq -0x1e8(%rbp), %rax
testq %rax, %rax
je 0x12706
leaq -0x1f8(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x218(%rbp), %rdi
jmp 0x1283f
jmp 0x1284b
jmp 0x12853
movq %rax, %r14
movq -0x228(%rbp), %rax
testq %rax, %rax
je 0x1273c
leaq -0x238(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x258(%rbp), %rdi
jmp 0x1283f
jmp 0x1284b
jmp 0x12853
movq %rax, %r14
movq -0x268(%rbp), %rax
testq %rax, %rax
je 0x12772
leaq -0x278(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x298(%rbp), %rdi
jmp 0x1283f
jmp 0x1284b
jmp 0x12853
movq %rax, %r14
movq -0x2a8(%rbp), %rax
testq %rax, %rax
je 0x127a8
leaq -0x2b8(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x2d8(%rbp), %rdi
jmp 0x1283f
jmp 0x1284b
jmp 0x12853
movq %rax, %r14
movq -0x2e8(%rbp), %rax
testq %rax, %rax
je 0x127de
leaq -0x2f8(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x318(%rbp), %rdi
jmp 0x1283f
jmp 0x1284b
jmp 0x12853
movq %rax, %r14
movq -0x328(%rbp), %rax
testq %rax, %rax
je 0x1280b
leaq -0x338(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x358(%rbp), %rdi
jmp 0x1283f
jmp 0x1284b
jmp 0x12853
movq %rax, %r14
movq -0x368(%rbp), %rax
testq %rax, %rax
je 0x12838
leaq -0x378(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x398(%rbp), %rdi
cmpq %r15, %rdi
je 0x12856
callq 0xa570
jmp 0x12856
movq %rax, %rdi
callq 0xbb4c
movq %rax, %r14
movq %rbx, %rdi
callq 0xa8c0
movq %r14, %rdi
callq 0xa990