// File: /workspace/github_cpp_makefile_star2_O3/pdx-cs-tutors[P]pdp/tests/cll/cll_insertion_tests.cpp
// Function: CLLInsertionTests::CLLInsertionTests()
CLLInsertionTests::CLLInsertionTests() {
    test("append", [=] {
        call = "append(rear, 1)";
        initialize({3, 2});
        retval = new int(append(rear, 1));
        expectList({3, 2, 1});
        expectReturn(1);
    });
    test("append", [=] {
        call = "append(rear, 1)";
        retval = new int(append(rear, 1));
        expectList({1});
        expectReturn(1);
    });

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

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

    test("prepend_unique", [=] {
        call = "prepend_unique(rear, 7)";
        initialize({6, 1});
        retval = new int(prepend_unique(rear, 7));
        expectList({7, 6, 1});
        expectReturn(1);
    });
    test("prepend_unique", [=] {
        call = "prepend_unique(rear, 7)";
        initialize({8, 7, 5});
        retval = new int(prepend_unique(rear, 7));
        expectList({8, 7, 5});
        expectReturn(0);
    });
    test("prepend_unique", [=] {
        call = "prepend_unique(rear, 7)";
        retval = new int(prepend_unique(rear, 7));
        expectList({7});
        expectReturn(1);
    });

    test("insert_ordered", [=] {
        call = "insert_ordered(rear, 3)";
        initialize({1, 4, 5});
        retval = new int(insert_ordered(rear, 3));
        expectList({1, 3, 4, 5});
        expectReturn(1);
    });
    test("insert_ordered", [=] {
        call = "insert_ordered(rear, 1)";
        initialize({3, 4, 5});
        retval = new int(insert_ordered(rear, 1));
        expectList({1, 3, 4, 5});
        expectReturn(1);
    });
    test("insert_ordered", [=] {
        call = "insert_ordered(rear, 5)";
        initialize({1, 3, 4});
        retval = new int(insert_ordered(rear, 5));
        expectList({1, 3, 4, 5});
        expectReturn(1);
    });
    test("insert_ordered", [=] {
        call = "insert_ordered(rear, 1)";
        retval = new int(insert_ordered(rear, 1));
        expectList({1});
        expectReturn(1);
    });
}

// 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 0x10960(%rip), %rax     # 0x1cfc8
addq $0x10, %rax
movq %rax, (%rdi)
leaq -0x388(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x9a8f(%rip), %rsi      # 0x16110
leaq 0x9a8e(%rip), %rdx      # 0x16116
leaq -0x398(%rbp), %rdi
callq 0xa220
leaq -0x378(%rbp), %rdx
movq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xa7d(%rip), %rax       # 0xd12a
movq %rax, 0x18(%rdx)
leaq 0xb26(%rip), %rax       # 0xd1de
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 0xc6e9
leaq -0x378(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x398(%rbp), %rdi
cmpq %r15, %rdi
je 0xc6fa
callq 0xa570
leaq -0x348(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x9a04(%rip), %rsi      # 0x16110
leaq 0x9a03(%rip), %rdx      # 0x16116
leaq -0x358(%rbp), %rdi
callq 0xa220
leaq -0x338(%rbp), %rdx
movq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xad0(%rip), %rax       # 0xd208
movq %rax, 0x18(%rdx)
leaq 0xb51(%rip), %rax       # 0xd294
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 0xc774
leaq -0x338(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x358(%rbp), %rdi
cmpq %r15, %rdi
je 0xc785
callq 0xa570
leaq -0x308(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x9980(%rip), %rsi      # 0x16117
leaq 0x9986(%rip), %rdx      # 0x16124
leaq -0x318(%rbp), %rdi
callq 0xa220
leaq -0x2f8(%rbp), %rdx
movq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xafb(%rip), %rax       # 0xd2be
movq %rax, 0x18(%rdx)
leaq 0xba8(%rip), %rax       # 0xd376
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 0xc7ff
leaq -0x2f8(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x318(%rbp), %rdi
cmpq %r15, %rdi
je 0xc810
callq 0xa570
leaq -0x2c8(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x98f5(%rip), %rsi      # 0x16117
leaq 0x98fb(%rip), %rdx      # 0x16124
leaq -0x2d8(%rbp), %rdi
callq 0xa220
leaq -0x2b8(%rbp), %rdx
movq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xb52(%rip), %rax       # 0xd3a0
movq %rax, 0x18(%rdx)
leaq 0xbfd(%rip), %rax       # 0xd456
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 0xc88a
leaq -0x2b8(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x2d8(%rbp), %rdi
cmpq %r15, %rdi
je 0xc89b
callq 0xa570
leaq -0x288(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x986a(%rip), %rsi      # 0x16117
leaq 0x9870(%rip), %rdx      # 0x16124
leaq -0x298(%rbp), %rdi
callq 0xa220
leaq -0x278(%rbp), %rdx
movq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xba7(%rip), %rax       # 0xd480
movq %rax, 0x18(%rdx)
leaq 0xc28(%rip), %rax       # 0xd50c
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 0xc915
leaq -0x278(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x298(%rbp), %rdi
cmpq %r15, %rdi
je 0xc926
callq 0xa570
leaq -0x248(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x97ed(%rip), %rsi      # 0x16125
leaq 0x97ed(%rip), %rdx      # 0x1612c
leaq -0x258(%rbp), %rdi
callq 0xa220
leaq -0x238(%rbp), %rdx
movq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xbd2(%rip), %rax       # 0xd536
movq %rax, 0x18(%rdx)
leaq 0xc53(%rip), %rax       # 0xd5c2
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 0xc9a0
leaq -0x238(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x258(%rbp), %rdi
cmpq %r15, %rdi
je 0xc9b1
callq 0xa570
leaq -0x208(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x9762(%rip), %rsi      # 0x16125
leaq 0x9762(%rip), %rdx      # 0x1612c
leaq -0x218(%rbp), %rdi
callq 0xa220
leaq -0x1f8(%rbp), %rdx
movq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xbfd(%rip), %rax       # 0xd5ec
movq %rax, 0x18(%rdx)
leaq 0xca6(%rip), %rax       # 0xd6a0
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 0xca2b
leaq -0x1f8(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x218(%rbp), %rdi
cmpq %r15, %rdi
je 0xca3c
callq 0xa570
leaq -0x1c8(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x96df(%rip), %rsi      # 0x1612d
leaq 0x96e6(%rip), %rdx      # 0x1613b
leaq -0x1d8(%rbp), %rdi
callq 0xa220
leaq -0x1b8(%rbp), %rdx
movq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xc50(%rip), %rax       # 0xd6ca
movq %rax, 0x18(%rdx)
leaq 0xcff(%rip), %rax       # 0xd784
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 0xcab6
leaq -0x1b8(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x1d8(%rbp), %rdi
cmpq %r15, %rdi
je 0xcac7
callq 0xa570
leaq -0x188(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x9654(%rip), %rsi      # 0x1612d
leaq 0x965b(%rip), %rdx      # 0x1613b
leaq -0x198(%rbp), %rdi
callq 0xa220
leaq -0x178(%rbp), %rdx
movq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xca9(%rip), %rax       # 0xd7ae
movq %rax, 0x18(%rdx)
leaq 0xd56(%rip), %rax       # 0xd866
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 0xcb41
leaq -0x178(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x198(%rbp), %rdi
cmpq %r15, %rdi
je 0xcb52
callq 0xa570
leaq -0x148(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x95c9(%rip), %rsi      # 0x1612d
leaq 0x95d0(%rip), %rdx      # 0x1613b
leaq -0x158(%rbp), %rdi
callq 0xa220
leaq -0x138(%rbp), %rdx
movq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xd00(%rip), %rax       # 0xd890
movq %rax, 0x18(%rdx)
leaq 0xd81(%rip), %rax       # 0xd91c
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 0xcbcc
leaq -0x138(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x158(%rbp), %rdi
cmpq %r15, %rdi
je 0xcbdd
callq 0xa570
leaq -0x108(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x954d(%rip), %rsi      # 0x1613c
leaq 0x9554(%rip), %rdx      # 0x1614a
leaq -0x118(%rbp), %rdi
callq 0xa220
leaq -0xf8(%rbp), %rdx
movq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xd2b(%rip), %rax       # 0xd946
movq %rax, 0x18(%rdx)
leaq 0xdd6(%rip), %rax       # 0xd9fc
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 0xcc57
leaq -0xf8(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x118(%rbp), %rdi
cmpq %r15, %rdi
je 0xcc68
callq 0xa570
leaq -0xc8(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x94c2(%rip), %rsi      # 0x1613c
leaq 0x94c9(%rip), %rdx      # 0x1614a
leaq -0xd8(%rbp), %rdi
callq 0xa220
leaq -0xb8(%rbp), %rdx
movq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xd80(%rip), %rax       # 0xda26
movq %rax, 0x18(%rdx)
leaq 0xe2b(%rip), %rax       # 0xdadc
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 0xcce2
leaq -0xb8(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0xd8(%rbp), %rdi
cmpq %r15, %rdi
je 0xccf3
callq 0xa570
leaq -0x88(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x9437(%rip), %rsi      # 0x1613c
leaq 0x943e(%rip), %rdx      # 0x1614a
leaq -0x98(%rbp), %rdi
callq 0xa220
leaq -0x78(%rbp), %rdx
movq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xdd8(%rip), %rax       # 0xdb06
movq %rax, 0x18(%rdx)
leaq 0xe83(%rip), %rax       # 0xdbbc
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 0xcd64
leaq -0x78(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x98(%rbp), %rdi
cmpq %r15, %rdi
je 0xcd75
callq 0xa570
leaq -0x48(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x93b8(%rip), %rsi      # 0x1613c
leaq 0x93bf(%rip), %rdx      # 0x1614a
leaq -0x58(%rbp), %rdi
callq 0xa220
leaq -0x38(%rbp), %rdx
movq $0x0, 0x8(%rdx)
movq %rbx, (%rdx)
leaq 0xe3c(%rip), %rax       # 0xdbe6
movq %rax, 0x18(%rdx)
leaq 0xebd(%rip), %rax       # 0xdc72
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 0xcddd
leaq -0x38(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x58(%rbp), %rdi
cmpq %r15, %rdi
je 0xcdeb
callq 0xa570
addq $0x388, %rsp            # imm = 0x388
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
jmp 0xd10f
jmp 0xd10f
jmp 0xd10f
jmp 0xd10f
jmp 0xd10f
jmp 0xd10f
jmp 0xd10f
jmp 0xd10f
jmp 0xd10f
jmp 0xd10f
jmp 0xd10f
jmp 0xd10f
jmp 0xd10f
jmp 0xd10f
movq %rax, %r14
movq -0x28(%rbp), %rax
testq %rax, %rax
je 0xce59
leaq -0x38(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x58(%rbp), %rdi
jmp 0xd103
jmp 0xd10f
jmp 0xd117
movq %rax, %r14
movq -0x68(%rbp), %rax
testq %rax, %rax
je 0xce86
leaq -0x78(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x98(%rbp), %rdi
jmp 0xd103
jmp 0xd10f
jmp 0xd117
movq %rax, %r14
movq -0xa8(%rbp), %rax
testq %rax, %rax
je 0xcebc
leaq -0xb8(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0xd8(%rbp), %rdi
jmp 0xd103
jmp 0xd10f
jmp 0xd117
movq %rax, %r14
movq -0xe8(%rbp), %rax
testq %rax, %rax
je 0xcef2
leaq -0xf8(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x118(%rbp), %rdi
jmp 0xd103
jmp 0xd10f
jmp 0xd117
movq %rax, %r14
movq -0x128(%rbp), %rax
testq %rax, %rax
je 0xcf28
leaq -0x138(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x158(%rbp), %rdi
jmp 0xd103
jmp 0xd10f
jmp 0xd117
movq %rax, %r14
movq -0x168(%rbp), %rax
testq %rax, %rax
je 0xcf5e
leaq -0x178(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x198(%rbp), %rdi
jmp 0xd103
jmp 0xd10f
jmp 0xd117
movq %rax, %r14
movq -0x1a8(%rbp), %rax
testq %rax, %rax
je 0xcf94
leaq -0x1b8(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x1d8(%rbp), %rdi
jmp 0xd103
jmp 0xd10f
jmp 0xd117
movq %rax, %r14
movq -0x1e8(%rbp), %rax
testq %rax, %rax
je 0xcfca
leaq -0x1f8(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x218(%rbp), %rdi
jmp 0xd103
jmp 0xd10f
jmp 0xd117
movq %rax, %r14
movq -0x228(%rbp), %rax
testq %rax, %rax
je 0xd000
leaq -0x238(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x258(%rbp), %rdi
jmp 0xd103
jmp 0xd10f
jmp 0xd117
movq %rax, %r14
movq -0x268(%rbp), %rax
testq %rax, %rax
je 0xd036
leaq -0x278(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x298(%rbp), %rdi
jmp 0xd103
jmp 0xd10f
jmp 0xd117
movq %rax, %r14
movq -0x2a8(%rbp), %rax
testq %rax, %rax
je 0xd06c
leaq -0x2b8(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x2d8(%rbp), %rdi
jmp 0xd103
jmp 0xd10f
jmp 0xd117
movq %rax, %r14
movq -0x2e8(%rbp), %rax
testq %rax, %rax
je 0xd0a2
leaq -0x2f8(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x318(%rbp), %rdi
jmp 0xd103
jmp 0xd10f
jmp 0xd117
movq %rax, %r14
movq -0x328(%rbp), %rax
testq %rax, %rax
je 0xd0cf
leaq -0x338(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x358(%rbp), %rdi
jmp 0xd103
jmp 0xd10f
jmp 0xd117
movq %rax, %r14
movq -0x368(%rbp), %rax
testq %rax, %rax
je 0xd0fc
leaq -0x378(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq -0x398(%rbp), %rdi
cmpq %r15, %rdi
je 0xd11a
callq 0xa570
jmp 0xd11a
movq %rax, %rdi
callq 0xbb4c
movq %rax, %r14
movq %rbx, %rdi
callq 0xa450
movq %r14, %rdi
callq 0xa990