// File: /workspace/github_cpp_makefile_star2_O1/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 %rbx
subq $0x80, %rsp
movaps 0x5a18(%rip), %xmm0     # 0xa050
leaq 0x50(%rsp), %rbx
movups %xmm0, (%rbx)
leaq 0x20(%rsp), %rdi
leaq 0x38(%rsp), %rcx
movl $0x4, %edx
movq %rbx, %rsi
callq 0x7016
movups 0x655e(%rip), %xmm0     # 0xabbc
movaps %xmm0, 0x10(%rbx)
movups 0x6543(%rip), %xmm0     # 0xabac
movaps %xmm0, (%rbx)
leaq 0x8(%rsp), %rdi
leaq 0x50(%rsp), %rsi
leaq 0x6(%rsp), %rcx
movl $0x8, %edx
callq 0x7016
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %rdx, %rax
subq %rsi, %rax
addq $0x10, %rsi
cmpq $0x10, %rax
cmovbq %rdx, %rsi
leaq 0x38(%rsp), %rdi
leaq 0x70(%rsp), %rcx
callq 0x860a
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x46c7
movq 0x18(%rsp), %rsi
subq %rdi, %rsi
callq 0x20f0
movq 0x38(%rsp), %rdi
movq 0x40(%rsp), %rax
movq %rax, %rdx
subq %rdi, %rdx
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rcx
subq %rsi, %rcx
cmpq %rcx, %rdx
jne 0x484a
cmpq %rdi, %rax
je 0x46ff
callq 0x2100
testl %eax, %eax
jne 0x484a
movaps 0x590a(%rip), %xmm0     # 0xa010
leaq 0x70(%rsp), %rsi
movups %xmm0, (%rsi)
leaq 0x8(%rsp), %rdi
leaq 0x7(%rsp), %rcx
movl $0x4, %edx
callq 0x7016
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 0x50(%rsp), %rdi
leaq 0x6(%rsp), %rcx
callq 0x860a
movq 0x38(%rsp), %rdi
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rax
movq %rax, 0x38(%rsp)
movups 0x58(%rsp), %xmm0
movups %xmm0, 0x40(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x50(%rsp)
movq $0x0, 0x60(%rsp)
testq %rdi, %rdi
je 0x478c
subq %rdi, %rsi
callq 0x20f0
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x47a3
movq 0x60(%rsp), %rsi
subq %rdi, %rsi
callq 0x20f0
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x47ba
movq 0x18(%rsp), %rsi
subq %rdi, %rsi
callq 0x20f0
movq 0x20(%rsp), %rdi
movq 0x30(%rsp), %rsi
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%rsp)
movq $0x0, 0x30(%rsp)
testq %rdi, %rdi
je 0x47e2
subq %rdi, %rsi
callq 0x20f0
movq 0x38(%rsp), %rbx
movq 0x40(%rsp), %rax
movq %rax, %rdx
subq %rbx, %rdx
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rcx
subq %rsi, %rcx
cmpq %rcx, %rdx
jne 0x4869
cmpq %rbx, %rax
je 0x4815
movq %rbx, %rdi
callq 0x2100
testl %eax, %eax
jne 0x4869
testq %rbx, %rbx
je 0x482a
movq 0x48(%rsp), %rsi
subq %rbx, %rsi
movq %rbx, %rdi
callq 0x20f0
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0x4841
movq 0x30(%rsp), %rsi
subq %rdi, %rsi
callq 0x20f0
addq $0x80, %rsp
popq %rbx
retq
leaq 0x584f(%rip), %rdi      # 0xa0a0
leaq 0x5817(%rip), %rsi      # 0xa06f
leaq 0x5cca(%rip), %rcx      # 0xa529
movl $0xd4, %edx
callq 0x2090
leaq 0x5c84(%rip), %rdi      # 0xa4f4
leaq 0x57f8(%rip), %rsi      # 0xa06f
leaq 0x5cab(%rip), %rcx      # 0xa529
movl $0xd8, %edx
callq 0x2090
movq %rax, %rbx
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x48a7
movq 0x18(%rsp), %rsi
subq %rdi, %rsi
callq 0x20f0
jmp 0x48a7
movq %rax, %rbx
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x48d7
movq 0x48(%rsp), %rsi
jmp 0x48ca
movq %rax, %rbx
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x48d7
movq 0x18(%rsp), %rsi
subq %rdi, %rsi
callq 0x20f0
jmp 0x48d7
movq %rax, %rbx
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0x48ee
movq 0x30(%rsp), %rsi
subq %rdi, %rsi
callq 0x20f0
movq %rbx, %rdi
callq 0x2170