// File: /workspace/github_cpp_makefile_star2_O3/shreyas-gopalakrishna[P]Concurrent-Skip-list/main.cpp
// Function: skiplist_combined_operations()
void skiplist_combined_operations(){

    int start = (rand() % static_cast<int>(numbers_insert.size() + 1));
    int end = start + (rand() % static_cast<int>(numbers_insert.size() - start + 1));
    cout << "Add: " << start << " " << end << endl;
    skiplist_add(start, end);

    start = (rand() % static_cast<int>(numbers_delete.size() + 1));
    end = start + (rand() % static_cast<int>(numbers_delete.size() - start + 1));
    cout << "Remove: " << start << " " << end << endl;
    skiplist_remove(start, end);

    start = (rand() % static_cast<int>(numbers_get.size() + 1));
    end = start + (rand() % static_cast<int>(numbers_get.size() - start + 1));
    cout << "Searching: " << start << " " << end << endl;
    skiplist_search(start, end);

    start = (rand() % static_cast<int>(numbers_insert.size() + 1));
    end = start + (rand() % static_cast<int>(numbers_insert.size() - start + 1));
    cout << "Range: " << start << " " << end << endl;
    skiplist_range(start, end);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
callq 0x2070
movq 0x7d82(%rip), %rcx      # 0xb2a8
subq 0x7d73(%rip), %rcx      # 0xb2a0
shrq $0x2, %rcx
incl %ecx
cltd
idivl %ecx
movl %edx, %ebx
callq 0x2070
movq 0x7d64(%rip), %rcx      # 0xb2a8
subq 0x7d55(%rip), %rcx      # 0xb2a0
shrq $0x2, %rcx
movslq %ebx, %r15
subl %r15d, %ecx
incl %ecx
cltd
idivl %ecx
movl %edx, %ebp
addl %r15d, %ebp
movq 0x7a6a(%rip), %rbx      # 0xafd0
leaq 0x3fb0(%rip), %rsi      # 0x751d
movl $0x5, %edx
movq %rbx, %rdi
callq 0x2250
movq %rbx, %rdi
movl %r15d, %esi
callq 0x2340
movq %rax, %r12
leaq 0x428e(%rip), %r14      # 0x781d
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x2250
movq %r12, %rdi
movl %ebp, %esi
callq 0x2340
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x2200
movsbl %al, %esi
movq %r12, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2170
movslq %ebp, %rsi
movq %r15, %rdi
callq 0x288b
callq 0x2070
movq 0x7cd6(%rip), %rcx      # 0xb2c0
subq 0x7cc7(%rip), %rcx      # 0xb2b8
shrq $0x2, %rcx
incl %ecx
cltd
idivl %ecx
movl %edx, %ebp
callq 0x2070
movq 0x7cb8(%rip), %rcx      # 0xb2c0
subq 0x7ca9(%rip), %rcx      # 0xb2b8
shrq $0x2, %rcx
movslq %ebp, %r15
subl %r15d, %ecx
incl %ecx
cltd
idivl %ecx
movl %edx, %ebp
addl %r15d, %ebp
leaq 0x3ef9(%rip), %rsi      # 0x7523
movl $0x8, %edx
movq %rbx, %rdi
callq 0x2250
movq %rbx, %rdi
movl %r15d, %esi
callq 0x2340
movq %rax, %r12
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x2250
movq %r12, %rdi
movl %ebp, %esi
callq 0x2340
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x2200
movsbl %al, %esi
movq %r12, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2170
movslq %ebp, %rsi
movq %r15, %rdi
callq 0x2ad3
callq 0x2070
movq 0x7c38(%rip), %rcx      # 0xb2d8
subq 0x7c29(%rip), %rcx      # 0xb2d0
shrq $0x2, %rcx
incl %ecx
cltd
idivl %ecx
movl %edx, %ebp
callq 0x2070
movq 0x7c1a(%rip), %rcx      # 0xb2d8
subq 0x7c0b(%rip), %rcx      # 0xb2d0
shrq $0x2, %rcx
movslq %ebp, %r15
subl %r15d, %ecx
incl %ecx
cltd
idivl %ecx
movl %edx, %ebp
addl %r15d, %ebp
leaq 0x3e4c(%rip), %rsi      # 0x752c
movl $0xb, %edx
movq %rbx, %rdi
callq 0x2250
movq %rbx, %rdi
movl %r15d, %esi
callq 0x2340
movq %rax, %r12
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x2250
movq %r12, %rdi
movl %ebp, %esi
callq 0x2340
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x2200
movsbl %al, %esi
movq %r12, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2170
movslq %ebp, %rsi
movq %r15, %rdi
callq 0x2b37
callq 0x2070
movq 0x7b52(%rip), %rcx      # 0xb2a8
subq 0x7b43(%rip), %rcx      # 0xb2a0
shrq $0x2, %rcx
incl %ecx
cltd
idivl %ecx
movl %edx, %r15d
callq 0x2070
movq 0x7b33(%rip), %rcx      # 0xb2a8
subq 0x7b24(%rip), %rcx      # 0xb2a0
shrq $0x2, %rcx
subl %r15d, %ecx
incl %ecx
cltd
idivl %ecx
leal (%rdx,%r15), %ebp
leaq 0x3da5(%rip), %rsi      # 0x7538
movl $0x7, %edx
movq %rbx, %rdi
callq 0x2250
movq %rbx, %rdi
movl %r15d, %esi
callq 0x2340
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x2250
movq %rbx, %rdi
movl %ebp, %esi
callq 0x2340
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2200
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2170
movl %r15d, %edi
movl %ebp, %esi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x2c96