// File: /workspace/github_cpp_makefile_star2_O3/kdungs[P]cpp-prelude/test_prelude.cc
// Function: test_zip3()
auto test_zip3() -> void {
  using Prelude::zip3;
  auto expect = std::vector<std::tuple<int, bool, char>>{
      std::make_tuple(1, true, 'a'), std::make_tuple(2, false, 'b'),
      std::make_tuple(3, true, 'm')};
  auto result =
      zip3(std::vector<int>{1, 2, 3}, std::list<bool>{true, false, true},
           std::vector<char>{'a', 'b', 'm'});
  assert(result == expect);
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0xa0, %rsp
leaq 0x60(%rsp), %rsi
movw $0x161, (%rsi)          # imm = 0x161
movl $0x1, 0x4(%rsi)
movw $0x62, 0x8(%rsi)
movl $0x2, 0xc(%rsi)
movw $0x16d, 0x10(%rsi)      # imm = 0x16D
movl $0x3, %ebx
movl %ebx, 0x14(%rsi)
leaq 0x30(%rsp), %rdi
leaq 0x18(%rsp), %rcx
movl $0x3, %edx
callq 0x7054
movabsq $0x200000001, %rax      # imm = 0x200000001
leaq 0x94(%rsp), %rsi
movq %rax, (%rsi)
movl %ebx, 0x8(%rsi)
leaq 0x18(%rsp), %rdi
leaq 0x11(%rsp), %rcx
movl $0x3, %edx
callq 0x6c08
leaq 0x15(%rsp), %rsi
movw $0x1, (%rsi)
movb $0x1, 0x2(%rsi)
leaq 0x78(%rsp), %rbx
leaq 0x10(%rsp), %rcx
movl $0x3, %edx
movq %rbx, %rdi
callq 0x7006
leaq 0x12(%rsp), %rsi
movw $0x6261, (%rsi)         # imm = 0x6261
movb $0x6d, 0x2(%rsi)
leaq 0x48(%rsp), %rdi
leaq 0xf(%rsp), %rcx
movl $0x3, %edx
callq 0x7142
leaq 0x60(%rsp), %rdi
leaq 0x18(%rsp), %rsi
leaq 0x78(%rsp), %r14
leaq 0x48(%rsp), %rcx
movq %r14, %rdx
callq 0x7099
movq 0x48(%rsp), %rdi
testq %rdi, %rdi
je 0x5aa7
movq 0x58(%rsp), %rsi
subq %rdi, %rsi
callq 0x20f0
movq 0x78(%rsp), %rdi
cmpq %r14, %rdi
je 0x5ac6
movq (%rdi), %rbx
movl $0x18, %esi
callq 0x20f0
movq %rbx, %rdi
cmpq %r14, %rbx
jne 0x5ab1
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x5add
movq 0x28(%rsp), %rsi
subq %rdi, %rsi
callq 0x20f0
movq 0x60(%rsp), %rax
movq 0x68(%rsp), %rcx
movq %rcx, %rdx
subq %rax, %rdx
movq 0x30(%rsp), %rdi
movq 0x38(%rsp), %rsi
subq %rdi, %rsi
cmpq %rsi, %rdx
jne 0x5b6c
cmpq %rcx, %rax
je 0x5b33
movq %rdi, %rdx
movq %rax, %rsi
movl 0x4(%rsi), %r8d
cmpl 0x4(%rdx), %r8d
jne 0x5b6c
movb 0x1(%rsi), %r8b
cmpb 0x1(%rdx), %r8b
jne 0x5b6c
movb (%rdx), %r8b
cmpb %r8b, (%rsi)
jne 0x5b6c
addq $0x8, %rsi
addq $0x8, %rdx
cmpq %rcx, %rsi
jne 0x5b0a
testq %rax, %rax
je 0x5b4d
movq 0x70(%rsp), %rsi
subq %rax, %rsi
movq %rax, %rdi
callq 0x20f0
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x5b5f
movq 0x40(%rsp), %rsi
subq %rdi, %rsi
callq 0x20f0
addq $0xa0, %rsp
popq %rbx
popq %r14
popq %r15
retq
leaq 0x452d(%rip), %rdi      # 0xa0a0
leaq 0x44f5(%rip), %rsi      # 0xa06f
leaq 0x4a53(%rip), %rcx      # 0xa5d4
movl $0x12a, %edx            # imm = 0x12A
callq 0x2090
movq %rax, %r14
movq 0x48(%rsp), %rdi
testq %rdi, %rdi
je 0x5baa
movq 0x58(%rsp), %rsi
subq %rdi, %rsi
callq 0x20f0
jmp 0x5baa
movq %rax, %r14
movq 0x78(%rsp), %rdi
cmpq %rbx, %rdi
je 0x5bce
movq (%rdi), %r15
movl $0x18, %esi
callq 0x20f0
movq %r15, %rdi
cmpq %rbx, %r15
jne 0x5bb4
jmp 0x5bce
movq %rax, %r14
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x5bea
movq 0x28(%rsp), %rsi
subq %rdi, %rsi
callq 0x20f0
jmp 0x5bea
movq %rax, %r14
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x5c01
movq 0x40(%rsp), %rsi
subq %rdi, %rsi
callq 0x20f0
movq %r14, %rdi
callq 0x2170