// File: /workspace/github_cpp_makefile_star2_O2/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 %r14
pushq %rbx
subq $0x390, %rsp            # imm = 0x390
movq %rdi, %rbx
callq 0xdd70
movq 0xc04b(%rip), %rax      # 0x1ff68
addq $0x10, %rax
movq %rax, (%rbx)
leaq 0x4475(%rip), %rsi      # 0x183a0
leaq -0x1d8(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xd2c0
leaq -0x398(%rbp), %rdx
andq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0x6eb(%rip), %rax       # 0x1463c
movq %rax, 0x18(%rdx)
leaq 0x784(%rip), %rax       # 0x146e0
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x1d8(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
leaq -0x398(%rbp), %rdi
callq 0xd490
leaq -0x1d8(%rbp), %rdi
callq 0xd300
leaq 0x4411(%rip), %rsi      # 0x183a0
leaq -0x1b8(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xd2c0
leaq -0x378(%rbp), %rdx
andq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0x755(%rip), %rax       # 0x1470a
movq %rax, 0x18(%rdx)
leaq 0x7ee(%rip), %rax       # 0x147ae
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x1b8(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
leaq -0x378(%rbp), %rdi
callq 0xd490
leaq -0x1b8(%rbp), %rdi
callq 0xd300
leaq 0x43ad(%rip), %rsi      # 0x183a0
leaq -0x198(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xd2c0
leaq -0x358(%rbp), %rdx
andq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0x7bf(%rip), %rax       # 0x147d8
movq %rax, 0x18(%rdx)
leaq 0x852(%rip), %rax       # 0x14876
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x198(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
leaq -0x358(%rbp), %rdi
callq 0xd490
leaq -0x198(%rbp), %rdi
callq 0xd300
leaq 0x4349(%rip), %rsi      # 0x183a0
leaq -0x178(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xd2c0
leaq -0x338(%rbp), %rdx
andq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0x823(%rip), %rax       # 0x148a0
movq %rax, 0x18(%rdx)
leaq 0x8bc(%rip), %rax       # 0x14944
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x178(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
leaq -0x338(%rbp), %rdi
callq 0xd490
leaq -0x178(%rbp), %rdi
callq 0xd300
leaq 0x42e5(%rip), %rsi      # 0x183a0
leaq -0x158(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xd2c0
leaq -0x318(%rbp), %rdx
andq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0x88d(%rip), %rax       # 0x1496e
movq %rax, 0x18(%rdx)
leaq 0x8e8(%rip), %rax       # 0x149d4
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x158(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
leaq -0x318(%rbp), %rdi
callq 0xd490
leaq -0x158(%rbp), %rdi
callq 0xd300
leaq 0x4288(%rip), %rsi      # 0x183a7
leaq -0x138(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xd2c0
leaq -0x2f8(%rbp), %rdx
andq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0x8b9(%rip), %rax       # 0x149fe
movq %rax, 0x18(%rdx)
leaq 0x952(%rip), %rax       # 0x14aa2
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x138(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
leaq -0x2f8(%rbp), %rdi
callq 0xd490
leaq -0x138(%rbp), %rdi
callq 0xd300
leaq 0x4224(%rip), %rsi      # 0x183a7
leaq -0x118(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xd2c0
leaq -0x2d8(%rbp), %rdx
andq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0x923(%rip), %rax       # 0x14acc
movq %rax, 0x18(%rdx)
leaq 0x9b4(%rip), %rax       # 0x14b68
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x118(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
leaq -0x2d8(%rbp), %rdi
callq 0xd490
leaq -0x118(%rbp), %rdi
callq 0xd300
leaq 0x41c0(%rip), %rsi      # 0x183a7
leaq -0xf8(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xd2c0
leaq -0x2b8(%rbp), %rdx
andq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0x985(%rip), %rax       # 0x14b92
movq %rax, 0x18(%rdx)
leaq 0xa18(%rip), %rax       # 0x14c30
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0xf8(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
leaq -0x2b8(%rbp), %rdi
callq 0xd490
leaq -0xf8(%rbp), %rdi
callq 0xd300
leaq 0x415c(%rip), %rsi      # 0x183a7
leaq -0xd8(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xd2c0
leaq -0x298(%rbp), %rdx
andq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0x9e9(%rip), %rax       # 0x14c5a
movq %rax, 0x18(%rdx)
leaq 0xa7c(%rip), %rax       # 0x14cf8
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0xd8(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
leaq -0x298(%rbp), %rdi
callq 0xd490
leaq -0xd8(%rbp), %rdi
callq 0xd300
leaq 0x40f8(%rip), %rsi      # 0x183a7
leaq -0xb8(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xd2c0
leaq -0x278(%rbp), %rdx
andq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xa4d(%rip), %rax       # 0x14d22
movq %rax, 0x18(%rdx)
leaq 0xaa8(%rip), %rax       # 0x14d88
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0xb8(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
leaq -0x278(%rbp), %rdi
callq 0xd490
leaq -0xb8(%rbp), %rdi
callq 0xd300
leaq 0x409f(%rip), %rsi      # 0x183b2
leaq -0x98(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xd2c0
leaq -0x258(%rbp), %rdx
andq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xa79(%rip), %rax       # 0x14db2
movq %rax, 0x18(%rdx)
leaq 0xad0(%rip), %rax       # 0x14e14
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x98(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
leaq -0x258(%rbp), %rdi
callq 0xd490
leaq -0x98(%rbp), %rdi
callq 0xd300
leaq 0x403b(%rip), %rsi      # 0x183b2
leaq -0x78(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xd2c0
leaq -0x238(%rbp), %rdx
andq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xaa4(%rip), %rax       # 0x14e3e
movq %rax, 0x18(%rdx)
leaq 0xb23(%rip), %rax       # 0x14ec8
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x78(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
leaq -0x238(%rbp), %rdi
callq 0xd490
leaq -0x78(%rbp), %rdi
callq 0xd300
leaq 0x3fe0(%rip), %rsi      # 0x183b2
leaq -0x58(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xd2c0
leaq -0x218(%rbp), %rdx
andq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xafd(%rip), %rax       # 0x14ef2
movq %rax, 0x18(%rdx)
leaq 0xb8c(%rip), %rax       # 0x14f8c
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x58(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
leaq -0x218(%rbp), %rdi
callq 0xd490
leaq -0x58(%rbp), %rdi
callq 0xd300
leaq 0x3f85(%rip), %rsi      # 0x183b2
leaq -0x38(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xd2c0
leaq -0x1f8(%rbp), %rdx
andq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xb66(%rip), %rax       # 0x14fb6
movq %rax, 0x18(%rdx)
leaq 0xbf1(%rip), %rax       # 0x1504c
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x38(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
leaq -0x1f8(%rbp), %rdi
callq 0xd490
leaq -0x38(%rbp), %rdi
callq 0xd300
addq $0x390, %rsp            # imm = 0x390
popq %rbx
popq %r14
popq %rbp
retq
movq %rax, %r14
leaq -0x1f8(%rbp), %rdi
callq 0xd490
leaq -0x38(%rbp), %rdi
jmp 0x14622
jmp 0x14629
movq %rax, %r14
leaq -0x218(%rbp), %rdi
callq 0xd490
leaq -0x58(%rbp), %rdi
jmp 0x14622
jmp 0x14629
movq %rax, %r14
leaq -0x238(%rbp), %rdi
callq 0xd490
leaq -0x78(%rbp), %rdi
jmp 0x14622
jmp 0x14629
movq %rax, %r14
leaq -0x258(%rbp), %rdi
callq 0xd490
leaq -0x98(%rbp), %rdi
jmp 0x14622
jmp 0x14629
movq %rax, %r14
leaq -0x278(%rbp), %rdi
callq 0xd490
leaq -0xb8(%rbp), %rdi
jmp 0x14622
jmp 0x14629
movq %rax, %r14
leaq -0x298(%rbp), %rdi
callq 0xd490
leaq -0xd8(%rbp), %rdi
jmp 0x14622
jmp 0x14629
movq %rax, %r14
leaq -0x2b8(%rbp), %rdi
callq 0xd490
leaq -0xf8(%rbp), %rdi
jmp 0x14622
jmp 0x14629
movq %rax, %r14
leaq -0x2d8(%rbp), %rdi
callq 0xd490
leaq -0x118(%rbp), %rdi
jmp 0x14622
jmp 0x14629
movq %rax, %r14
leaq -0x2f8(%rbp), %rdi
callq 0xd490
leaq -0x138(%rbp), %rdi
jmp 0x14622
jmp 0x14629
movq %rax, %r14
leaq -0x318(%rbp), %rdi
callq 0xd490
leaq -0x158(%rbp), %rdi
jmp 0x14622
jmp 0x14629
movq %rax, %r14
leaq -0x338(%rbp), %rdi
callq 0xd490
leaq -0x178(%rbp), %rdi
jmp 0x14622
jmp 0x14629
movq %rax, %r14
leaq -0x358(%rbp), %rdi
callq 0xd490
leaq -0x198(%rbp), %rdi
jmp 0x14622
jmp 0x14629
movq %rax, %r14
leaq -0x378(%rbp), %rdi
callq 0xd490
leaq -0x1b8(%rbp), %rdi
jmp 0x14622
jmp 0x14629
movq %rax, %r14
leaq -0x398(%rbp), %rdi
callq 0xd490
leaq -0x1d8(%rbp), %rdi
callq 0xd300
jmp 0x1462c
movq %rax, %r14
movq %rbx, %rdi
callq 0xdc70
movq %r14, %rdi
callq 0xddb0