// File: /workspace/github_cpp_makefile_star2_O1/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 0x7d9d(%rip), %rcx      # 0xb2a8
subq 0x7d8e(%rip), %rcx      # 0xb2a0
shrq $0x2, %rcx
incl %ecx
cltd
idivl %ecx
movl %edx, %ebx
callq 0x2070
movq 0x7d7f(%rip), %rcx      # 0xb2a8
subq 0x7d70(%rip), %rcx      # 0xb2a0
shrq $0x2, %rcx
movslq %ebx, %r15
subl %r15d, %ecx
incl %ecx
cltd
idivl %ecx
movl %edx, %ebp
addl %r15d, %ebp
movq 0x7a85(%rip), %rbx      # 0xafd0
leaq 0x3fcb(%rip), %rsi      # 0x751d
movl $0x5, %edx
movq %rbx, %rdi
callq 0x2250
movq %rbx, %rdi
movl %r15d, %esi
callq 0x2340
movq %rax, %r12
leaq 0x42a9(%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 0x287d
callq 0x2070
movq 0x7cf1(%rip), %rcx      # 0xb2c0
subq 0x7ce2(%rip), %rcx      # 0xb2b8
shrq $0x2, %rcx
incl %ecx
cltd
idivl %ecx
movl %edx, %ebp
callq 0x2070
movq 0x7cd3(%rip), %rcx      # 0xb2c0
subq 0x7cc4(%rip), %rcx      # 0xb2b8
shrq $0x2, %rcx
movslq %ebp, %r15
subl %r15d, %ecx
incl %ecx
cltd
idivl %ecx
movl %edx, %ebp
addl %r15d, %ebp
leaq 0x3f14(%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 0x2ac5
callq 0x2070
movq 0x7c53(%rip), %rcx      # 0xb2d8
subq 0x7c44(%rip), %rcx      # 0xb2d0
shrq $0x2, %rcx
incl %ecx
cltd
idivl %ecx
movl %edx, %ebp
callq 0x2070
movq 0x7c35(%rip), %rcx      # 0xb2d8
subq 0x7c26(%rip), %rcx      # 0xb2d0
shrq $0x2, %rcx
movslq %ebp, %r15
subl %r15d, %ecx
incl %ecx
cltd
idivl %ecx
movl %edx, %ebp
addl %r15d, %ebp
leaq 0x3e67(%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 0x2b29
callq 0x2070
movq 0x7b6d(%rip), %rcx      # 0xb2a8
subq 0x7b5e(%rip), %rcx      # 0xb2a0
shrq $0x2, %rcx
incl %ecx
cltd
idivl %ecx
movl %edx, %r15d
callq 0x2070
movq 0x7b4e(%rip), %rcx      # 0xb2a8
subq 0x7b3f(%rip), %rcx      # 0xb2a0
shrq $0x2, %rcx
subl %r15d, %ecx
incl %ecx
cltd
idivl %ecx
leal (%rdx,%r15), %ebp
leaq 0x3dc0(%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 0x2c88