// File: /workspace/github_cpp_makefile_star2_O3/kdungs[P]cpp-prelude/test_prelude.cc
// Function: test_drop()
auto test_drop() -> void {
  using Prelude::drop;
  auto expect = std::vector<int>{5, 6, 7, 8};
  auto result = drop(4, std::vector<int>{1, 2, 3, 4, 5, 6, 7, 8});
  assert(result == expect);
  // also check case for n > size
  result = drop(100, std::vector<int>{1, 2, 3, 4});
  expect = std::vector<int>{};
  assert(result == expect && "Also has to work for n > size!");
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x98, %rsp
movaps 0x5bdf(%rip), %xmm0     # 0xa050
leaq 0x60(%rsp), %rbx
movaps %xmm0, (%rbx)
leaq 0x40(%rsp), %rdi
leaq 0x20(%rsp), %rcx
movl $0x4, %edx
movq %rbx, %rsi
callq 0x6c08
movups 0x6715(%rip), %xmm0     # 0xabac
movaps %xmm0, 0x10(%rbx)
movups 0x66fa(%rip), %xmm0     # 0xab9c
movaps %xmm0, (%rbx)
leaq 0x8(%rsp), %rdi
leaq 0x60(%rsp), %rsi
leaq 0x6(%rsp), %rcx
movl $0x8, %edx
callq 0x6c08
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %rdx, %rax
subq %rsi, %rax
addq $0x10, %rsi
cmpq $0x10, %rax
cmovbq %rdx, %rsi
leaq 0x20(%rsp), %rdi
leaq 0x80(%rsp), %rcx
callq 0x80e2
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x4503
movq 0x18(%rsp), %rsi
subq %rdi, %rsi
callq 0x20f0
movq 0x20(%rsp), %rdi
movq 0x28(%rsp), %rax
movq %rax, %rdx
subq %rdi, %rdx
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rcx
subq %rsi, %rcx
cmpq %rcx, %rdx
jne 0x4697
cmpq %rdi, %rax
je 0x453b
callq 0x2100
testl %eax, %eax
jne 0x4697
movaps 0x5ace(%rip), %xmm0     # 0xa010
leaq 0x80(%rsp), %rsi
movaps %xmm0, (%rsi)
leaq 0x8(%rsp), %rdi
leaq 0x7(%rsp), %rcx
movl $0x4, %edx
callq 0x6c08
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %rdx, %rax
subq %rsi, %rax
movl $0x190, %ecx            # imm = 0x190
addq %rcx, %rsi
cmpq %rcx, %rax
cmovbq %rdx, %rsi
leaq 0x60(%rsp), %rdi
leaq 0x6(%rsp), %rcx
callq 0x80e2
movq 0x20(%rsp), %rdi
movq 0x30(%rsp), %rsi
movaps 0x60(%rsp), %xmm0
movaps %xmm0, 0x20(%rsp)
movq 0x70(%rsp), %rax
movq %rax, 0x30(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x60(%rsp)
movq $0x0, 0x70(%rsp)
testq %rdi, %rdi
je 0x45e2
subq %rdi, %rsi
callq 0x20f0
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0x45e2
movq 0x70(%rsp), %rsi
subq %rdi, %rsi
callq 0x20f0
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x45f9
movq 0x18(%rsp), %rsi
subq %rdi, %rsi
callq 0x20f0
movq 0x40(%rsp), %rdi
movq 0x50(%rsp), %rsi
xorps %xmm0, %xmm0
movaps %xmm0, 0x40(%rsp)
movq $0x0, 0x50(%rsp)
testq %rdi, %rdi
je 0x462d
subq %rdi, %rsi
callq 0x20f0
movq 0x40(%rsp), %rbx
movq 0x48(%rsp), %rax
jmp 0x4631
xorl %ebx, %ebx
xorl %eax, %eax
movq 0x20(%rsp), %r14
movq 0x28(%rsp), %rcx
movq %rcx, %rdx
subq %r14, %rdx
subq %rbx, %rax
cmpq %rax, %rdx
jne 0x46b6
cmpq %r14, %rcx
je 0x465d
movq %r14, %rdi
movq %rbx, %rsi
callq 0x2100
testl %eax, %eax
jne 0x46b6
testq %r14, %r14
je 0x4677
movq 0x30(%rsp), %rsi
subq %r14, %rsi
movq %r14, %rdi
callq 0x20f0
movq 0x40(%rsp), %rbx
testq %rbx, %rbx
je 0x468c
movq 0x50(%rsp), %rsi
subq %rbx, %rsi
movq %rbx, %rdi
callq 0x20f0
addq $0x98, %rsp
popq %rbx
popq %r14
retq
leaq 0x5a02(%rip), %rdi      # 0xa0a0
leaq 0x59ca(%rip), %rsi      # 0xa06f
leaq 0x5e7d(%rip), %rcx      # 0xa529
movl $0xd4, %edx
callq 0x2090
leaq 0x5e37(%rip), %rdi      # 0xa4f4
leaq 0x59ab(%rip), %rsi      # 0xa06f
leaq 0x5e5e(%rip), %rcx      # 0xa529
movl $0xd8, %edx
callq 0x2090
movq %rax, %rbx
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x46f4
movq 0x18(%rsp), %rsi
subq %rdi, %rsi
callq 0x20f0
jmp 0x46f4
movq %rax, %rbx
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0x4724
movq 0x30(%rsp), %rsi
jmp 0x4717
movq %rax, %rbx
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x4724
movq 0x18(%rsp), %rsi
subq %rdi, %rsi
callq 0x20f0
jmp 0x4724
movq %rax, %rbx
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x473b
movq 0x50(%rsp), %rsi
subq %rdi, %rsi
callq 0x20f0
movq %rbx, %rdi
callq 0x2170