// File: kdungs[P]cpp-prelude/./prelude.h
// Function: std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>> Prelude::zipWith3<test_zipWith3()::$_0, std::vector, int, std::allocator<int>, std::__cxx11::list, bool, std::allocator<bool>, std::__cxx11::list, char, std::allocator<char>, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>(test_zipWith3()::$_0 const&, std::vector<int, std::allocator<int>> const&, std::__cxx11::list<bool, std::allocator<bool>> const&, std::__cxx11::list<char, std::allocator<char>> const&)
auto zipWith3(const FN& f, const CA<A, AllocA>& left,
              const CB<B, AllocB>& middle, const CC<C, AllocC>& right)
    -> CD<D, AllocD> {
  auto res = CD<D, AllocD>{};
  auto l = std::begin(left);
  auto m = std::begin(middle);
  auto r = std::begin(right);
  while (l != std::end(left) && m != std::end(middle) && r != std::end(right)) {
    res.emplace_back(f(*l, *m, *r));
    ++l;
    ++m;
    ++r;
  }
  return res;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xd0, %rsp
movq %rdi, -0xa8(%rbp)
movq %rdi, %rax
movq %rax, -0xa0(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movb $0x0, -0x29(%rbp)
xorps %xmm0, %xmm0
movups %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
callq 0x1ad20
movq -0x18(%rbp), %rdi
callq 0xf330
movq %rax, -0x38(%rbp)
movq -0x20(%rbp), %rdi
callq 0x16df0
movq %rax, -0x40(%rbp)
movq -0x28(%rbp), %rdi
callq 0x1ad40
movq %rax, -0x98(%rbp)
jmp 0x7f33
movq -0x98(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x18(%rbp), %rdi
callq 0xf360
movq %rax, -0x60(%rbp)
leaq -0x38(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0xf3c0
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0xa9(%rbp)
jne 0x7f69
jmp 0x7fc4
movq -0x20(%rbp), %rdi
callq 0x16e50
movq %rax, -0x68(%rbp)
leaq -0x40(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x16e20
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0xa9(%rbp)
jne 0x7f94
jmp 0x7fc4
movq -0x28(%rbp), %rdi
callq 0x1ada0
movq %rax, -0xb8(%rbp)
jmp 0x7fa6
movq -0xb8(%rbp), %rax
movq %rax, -0x70(%rbp)
leaq -0x48(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x1ad70
movb %al, -0xa9(%rbp)
movb -0xa9(%rbp), %al
testb $0x1, %al
jne 0x7fd3
jmp 0x809b
movq -0x10(%rbp), %rax
movq %rax, -0xc8(%rbp)
leaq -0x38(%rbp), %rdi
callq 0xf400
movl (%rax), %eax
movl %eax, -0xbc(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x16f00
movzbl (%rax), %eax
movl %eax, -0xcc(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x1ae50
movl -0xcc(%rbp), %ecx
movq -0xc8(%rbp), %rsi
movl -0xbc(%rbp), %edx
movsbl (%rax), %r8d
andl $0x1, %ecx
leaq -0x90(%rbp), %rdi
callq 0xa690
jmp 0x8032
movq -0xa8(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x1add0
jmp 0x8047
leaq -0x90(%rbp), %rdi
callq 0x2100
leaq -0x38(%rbp), %rdi
callq 0xf470
leaq -0x40(%rbp), %rdi
callq 0x16f30
leaq -0x48(%rbp), %rdi
callq 0x1ae80
jmp 0x7f3e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x80c1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x90(%rbp), %rdi
callq 0x2100
jmp 0x80c1
movb $0x1, -0x29(%rbp)
testb $0x1, -0x29(%rbp)
jne 0x80b1
movq -0xa8(%rbp), %rdi
callq 0xc370
movq -0xa0(%rbp), %rax
addq $0xd0, %rsp
popq %rbp
retq
movq -0xa8(%rbp), %rdi
callq 0xc370
movq -0x50(%rbp), %rdi
callq 0x22b0
nopw %cs:(%rax,%rax)