// File: /workspace/github_cpp_makefile_star2_O2/pdx-cs-tutors[P]pdp/tests/lll/lll_insertion_tests.cpp
// Function: LLLInsertionTests::LLLInsertionTests()
LLLInsertionTests::LLLInsertionTests() {
    test("append", [=] {
        call = "append(head, 1)";
        initialize({3, 2});
        append(head, 1);
        expectList({3, 2, 1});
    });
    test("append", [=] {
        call = "append(head, 1)";
        retval = new int(append(head, 1));
        expectList({1});
        expectReturn(1);
    });

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

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

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

    test("insert_ordered", [=] {
        call = "insert_ordered(head, 9)";
        initialize({1, 2, 4});
        retval = new int(insert_ordered(head, 9));
        expectList({1, 2, 4, 9});
        expectReturn(1);
    });
    test("insert_ordered", [=] {
        call = "insert_ordered(head, 9)";
        initialize({2, 9, 10});
        retval = new int(insert_ordered(head, 9));
        expectList({2, 9, 9, 10});
        expectReturn(1);
    });
    test("insert_ordered", [=] {
        call = "insert_ordered(head, 9)";
        initialize({10, 11});
        retval = new int(insert_ordered(head, 9));
        expectList({9, 10, 11});
        expectReturn(1);
    });
    test("insert_ordered", [=] {
        call = "insert_ordered(head, 9)";
        retval = new int(insert_ordered(head, 9));
        expectList({9});
        expectReturn(1);
    });
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x3d0, %rsp            # imm = 0x3D0
movq %rdi, %rbx
callq 0xdd70
movq 0xd38f(%rip), %rax      # 0x1ffc0
addq $0x10, %rax
movq %rax, (%rbx)
leaq 0x54a1(%rip), %rsi      # 0x180e0
leaq -0x1f8(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xd2c0
leaq -0x3d8(%rbp), %rdx
andq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0x76f(%rip), %rax       # 0x133d4
movq %rax, 0x18(%rdx)
leaq 0x7d6(%rip), %rax       # 0x13446
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x1f8(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
leaq -0x3d8(%rbp), %rdi
callq 0xd490
leaq -0x1f8(%rbp), %rdi
callq 0xd300
leaq 0x543d(%rip), %rsi      # 0x180e0
leaq -0x1d8(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xd2c0
leaq -0x3b8(%rbp), %rdx
andq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0x7a7(%rip), %rax       # 0x13470
movq %rax, 0x18(%rdx)
leaq 0x814(%rip), %rax       # 0x134e8
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x1d8(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
leaq -0x3b8(%rbp), %rdi
callq 0xd490
leaq -0x1d8(%rbp), %rdi
callq 0xd300
leaq 0x53e0(%rip), %rsi      # 0x180e7
leaq -0x1b8(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xd2c0
leaq -0x398(%rbp), %rdx
andq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0x7e5(%rip), %rax       # 0x13512
movq %rax, 0x18(%rdx)
leaq 0x852(%rip), %rax       # 0x1358a
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x1b8(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
leaq -0x398(%rbp), %rdi
callq 0xd490
leaq -0x1b8(%rbp), %rdi
callq 0xd300
leaq 0x537c(%rip), %rsi      # 0x180e7
leaq -0x198(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xd2c0
leaq -0x378(%rbp), %rdx
andq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0x823(%rip), %rax       # 0x135b4
movq %rax, 0x18(%rdx)
leaq 0x8bc(%rip), %rax       # 0x13658
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x198(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
leaq -0x378(%rbp), %rdi
callq 0xd490
leaq -0x198(%rbp), %rdi
callq 0xd300
leaq 0x5318(%rip), %rsi      # 0x180e7
leaq -0x178(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xd2c0
leaq -0x358(%rbp), %rdx
andq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0x88d(%rip), %rax       # 0x13682
movq %rax, 0x18(%rdx)
leaq 0x922(%rip), %rax       # 0x13722
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x178(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
leaq -0x358(%rbp), %rdi
callq 0xd490
leaq -0x178(%rbp), %rdi
callq 0xd300
leaq 0x52c2(%rip), %rsi      # 0x180f5
leaq -0x158(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xd2c0
leaq -0x338(%rbp), %rdx
andq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0x8f3(%rip), %rax       # 0x1374c
movq %rax, 0x18(%rdx)
leaq 0x986(%rip), %rax       # 0x137ea
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x158(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
leaq -0x338(%rbp), %rdi
callq 0xd490
leaq -0x158(%rbp), %rdi
callq 0xd300
leaq 0x525e(%rip), %rsi      # 0x180f5
leaq -0x138(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xd2c0
leaq -0x318(%rbp), %rdx
andq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0x957(%rip), %rax       # 0x13814
movq %rax, 0x18(%rdx)
leaq 0x9c4(%rip), %rax       # 0x1388c
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x138(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
leaq -0x318(%rbp), %rdi
callq 0xd490
leaq -0x138(%rbp), %rdi
callq 0xd300
leaq 0x5202(%rip), %rsi      # 0x180fd
leaq -0x118(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xd2c0
leaq -0x2f8(%rbp), %rdx
andq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0x995(%rip), %rax       # 0x138b6
movq %rax, 0x18(%rdx)
leaq 0xa02(%rip), %rax       # 0x1392e
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x118(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
leaq -0x2f8(%rbp), %rdi
callq 0xd490
leaq -0x118(%rbp), %rdi
callq 0xd300
leaq 0x519e(%rip), %rsi      # 0x180fd
leaq -0xf8(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xd2c0
leaq -0x2d8(%rbp), %rdx
andq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0x9d3(%rip), %rax       # 0x13958
movq %rax, 0x18(%rdx)
leaq 0xa56(%rip), %rax       # 0x139e6
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0xf8(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
leaq -0x2d8(%rbp), %rdi
callq 0xd490
leaq -0xf8(%rbp), %rdi
callq 0xd300
leaq 0x513a(%rip), %rsi      # 0x180fd
leaq -0xd8(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xd2c0
leaq -0x2b8(%rbp), %rdx
andq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xa27(%rip), %rax       # 0x13a10
movq %rax, 0x18(%rdx)
leaq 0xabc(%rip), %rax       # 0x13ab0
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0xd8(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
leaq -0x2b8(%rbp), %rdi
callq 0xd490
leaq -0xd8(%rbp), %rdi
callq 0xd300
leaq 0x50d6(%rip), %rsi      # 0x180fd
leaq -0xb8(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xd2c0
leaq -0x298(%rbp), %rdx
andq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xa8d(%rip), %rax       # 0x13ada
movq %rax, 0x18(%rdx)
leaq 0xb26(%rip), %rax       # 0x13b7e
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0xb8(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
leaq -0x298(%rbp), %rdi
callq 0xd490
leaq -0xb8(%rbp), %rdi
callq 0xd300
leaq 0x5081(%rip), %rsi      # 0x1810c
leaq -0x98(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xd2c0
leaq -0x278(%rbp), %rdx
andq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xaf7(%rip), %rax       # 0x13ba8
movq %rax, 0x18(%rdx)
leaq 0xb8c(%rip), %rax       # 0x13c48
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x98(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
leaq -0x278(%rbp), %rdi
callq 0xd490
leaq -0x98(%rbp), %rdi
callq 0xd300
leaq 0x501d(%rip), %rsi      # 0x1810c
leaq -0x78(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xd2c0
leaq -0x258(%rbp), %rdx
andq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xb60(%rip), %rax       # 0x13c72
movq %rax, 0x18(%rdx)
leaq 0xbf5(%rip), %rax       # 0x13d12
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x78(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
leaq -0x258(%rbp), %rdi
callq 0xd490
leaq -0x78(%rbp), %rdi
callq 0xd300
leaq 0x4fc2(%rip), %rsi      # 0x1810c
leaq -0x58(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xd2c0
leaq -0x238(%rbp), %rdx
andq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xbcf(%rip), %rax       # 0x13d3c
movq %rax, 0x18(%rdx)
leaq 0xc68(%rip), %rax       # 0x13de0
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x58(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
leaq -0x238(%rbp), %rdi
callq 0xd490
leaq -0x58(%rbp), %rdi
callq 0xd300
leaq 0x4f67(%rip), %rsi      # 0x1810c
leaq -0x38(%rbp), %rdi
leaq -0x11(%rbp), %rdx
callq 0xd2c0
leaq -0x218(%rbp), %rdx
andq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xc42(%rip), %rax       # 0x13e0a
movq %rax, 0x18(%rdx)
leaq 0xcaf(%rip), %rax       # 0x13e82
movq %rax, 0x10(%rdx)
movq (%rbx), %rax
leaq -0x38(%rbp), %rsi
movq %rbx, %rdi
callq *0x28(%rax)
leaq -0x218(%rbp), %rdi
callq 0xd490
leaq -0x38(%rbp), %rdi
callq 0xd300
addq $0x3d0, %rsp            # imm = 0x3D0
popq %rbx
popq %r14
popq %rbp
retq
movq %rax, %r14
leaq -0x218(%rbp), %rdi
callq 0xd490
leaq -0x38(%rbp), %rdi
jmp 0x133ba
jmp 0x133c1
movq %rax, %r14
leaq -0x238(%rbp), %rdi
callq 0xd490
leaq -0x58(%rbp), %rdi
jmp 0x133ba
jmp 0x133c1
movq %rax, %r14
leaq -0x258(%rbp), %rdi
callq 0xd490
leaq -0x78(%rbp), %rdi
jmp 0x133ba
jmp 0x133c1
movq %rax, %r14
leaq -0x278(%rbp), %rdi
callq 0xd490
leaq -0x98(%rbp), %rdi
jmp 0x133ba
jmp 0x133c1
movq %rax, %r14
leaq -0x298(%rbp), %rdi
callq 0xd490
leaq -0xb8(%rbp), %rdi
jmp 0x133ba
jmp 0x133c1
movq %rax, %r14
leaq -0x2b8(%rbp), %rdi
callq 0xd490
leaq -0xd8(%rbp), %rdi
jmp 0x133ba
jmp 0x133c1
movq %rax, %r14
leaq -0x2d8(%rbp), %rdi
callq 0xd490
leaq -0xf8(%rbp), %rdi
jmp 0x133ba
jmp 0x133c1
movq %rax, %r14
leaq -0x2f8(%rbp), %rdi
callq 0xd490
leaq -0x118(%rbp), %rdi
jmp 0x133ba
jmp 0x133c1
movq %rax, %r14
leaq -0x318(%rbp), %rdi
callq 0xd490
leaq -0x138(%rbp), %rdi
jmp 0x133ba
jmp 0x133c1
movq %rax, %r14
leaq -0x338(%rbp), %rdi
callq 0xd490
leaq -0x158(%rbp), %rdi
jmp 0x133ba
jmp 0x133c1
movq %rax, %r14
leaq -0x358(%rbp), %rdi
callq 0xd490
leaq -0x178(%rbp), %rdi
jmp 0x133ba
jmp 0x133c1
movq %rax, %r14
leaq -0x378(%rbp), %rdi
callq 0xd490
leaq -0x198(%rbp), %rdi
jmp 0x133ba
jmp 0x133c1
movq %rax, %r14
leaq -0x398(%rbp), %rdi
callq 0xd490
leaq -0x1b8(%rbp), %rdi
jmp 0x133ba
jmp 0x133c1
movq %rax, %r14
leaq -0x3b8(%rbp), %rdi
callq 0xd490
leaq -0x1d8(%rbp), %rdi
jmp 0x133ba
jmp 0x133c1
movq %rax, %r14
leaq -0x3d8(%rbp), %rdi
callq 0xd490
leaq -0x1f8(%rbp), %rdi
callq 0xd300
jmp 0x133c4
movq %rax, %r14
movq %rbx, %rdi
callq 0xdc70
movq %r14, %rdi
callq 0xddb0