// File: pointwiseproduct[P]untyped_lambda/untyped_lambda.cpp
// Function: open_file(boost::filesystem::path const&)
std::vector<char> open_file(const fs::path &path){
    try{
        const boost::uintmax_t size = fs::file_size(path);
        std::vector<char> r(size);
        std::ifstream ifile(path.c_str(), std::ios::binary);
        ifile.read(&r[0], size);
        return r;
    }catch(fs::filesystem_error ex){
#ifdef _MSC_VER
        throw open_file_exception(wstring_to_string(path.c_str()), ex.what());
#else
        throw open_file_exception(path.c_str(), ex.what());
#endif
    }catch(...){
        throw app_exception();
    }
}

// Assembly:
subq $0x328, %rsp            # imm = 0x328
movq %rdi, 0x48(%rsp)
movq %rdi, %rax
movq %rax, 0x50(%rsp)
movq %rdi, 0x320(%rsp)
movq %rsi, 0x318(%rsp)
movq 0x318(%rsp), %rdi
callq 0xb280
movq %rax, 0x58(%rsp)
jmp 0x5af8
movq 0x58(%rsp), %rax
movq %rax, 0x310(%rsp)
movb $0x0, 0x303(%rsp)
movq 0x310(%rsp), %rax
movq %rax, 0x38(%rsp)
leaq 0x302(%rsp), %rdi
movq %rdi, 0x40(%rsp)
callq 0x55d0
movq 0x48(%rsp), %rdi
movq 0x38(%rsp), %rsi
movq 0x40(%rsp), %rdx
callq 0xb0a0
jmp 0x5b42
leaq 0x302(%rsp), %rdi
callq 0x53c0
movq 0x318(%rsp), %rdi
callq 0xb1d0
movq %rax, %rsi
leaq 0xf8(%rsp), %rdi
movl $0x4, %edx
callq 0x5600
jmp 0x5b73
movq 0x48(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xb120
movq %rax, %rsi
movq 0x310(%rsp), %rdx
leaq 0xf8(%rsp), %rdi
callq 0x5460
jmp 0x5b9b
movb $0x1, 0x303(%rsp)
leaq 0xf8(%rsp), %rdi
callq 0x50d0
testb $0x1, 0x303(%rsp)
jne 0x5c38
jmp 0x5c2e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x308(%rsp)
movl %eax, 0x304(%rsp)
jmp 0x5c4f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x308(%rsp)
movl %eax, 0x304(%rsp)
leaq 0x302(%rsp), %rdi
callq 0x53c0
jmp 0x5c4f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x308(%rsp)
movl %eax, 0x304(%rsp)
jmp 0x5c45
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x308(%rsp)
movl %eax, 0x304(%rsp)
leaq 0xf8(%rsp), %rdi
callq 0x50d0
jmp 0x5c45
movq 0x48(%rsp), %rdi
callq 0xb140
movq 0x50(%rsp), %rax
addq $0x328, %rsp            # imm = 0x328
retq
movq 0x48(%rsp), %rdi
callq 0xb140
movl 0x304(%rsp), %eax
movl $0x2, %ecx
cmpl %ecx, %eax
jne 0x5d54
movq 0x308(%rsp), %rdi
movq %rdi, 0x30(%rsp)
callq 0x5440
movq %rax, %rsi
leaq 0xb0(%rsp), %rdi
callq 0x50a0
jmp 0x5c87
movq 0x30(%rsp), %rdi
callq 0x5130
movb $0x1, 0x66(%rsp)
movl $0x10, %edi
callq 0x5180
movq %rax, 0x18(%rsp)
movq 0x318(%rsp), %rdi
callq 0xb1d0
movq %rax, 0x20(%rsp)
leaq 0x8f(%rsp), %rdi
movq %rdi, 0x28(%rsp)
callq 0x55d0
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
leaq 0x90(%rsp), %rdi
callq 0x54b0
jmp 0x5ce2
leaq 0xb0(%rsp), %rdi
callq 0x50b0
movq %rax, 0x8(%rsp)
leaq 0x67(%rsp), %rdi
movq %rdi, 0x10(%rsp)
callq 0x55d0
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0x68(%rsp), %rdi
callq 0x54b0
jmp 0x5d19
movq 0x18(%rsp), %rdi
leaq 0x90(%rsp), %rsi
leaq 0x68(%rsp), %rdx
callq 0xb2f0
jmp 0x5d32
movq 0x18(%rsp), %rdi
movb $0x0, 0x66(%rsp)
leaq 0x1fb8d(%rip), %rsi     # 0x258d0
leaq 0x56c6(%rip), %rdx      # 0xb410
callq 0x5590
jmp 0x5e83
movq 0x308(%rsp), %rdi
callq 0x5130
movl $0x10, %edi
callq 0x5180
movq %rax, %rdi
movq %rdi, %rax
movq %rax, (%rsp)
callq 0xb2a0
jmp 0x5d7c
movq (%rsp), %rdi
leaq 0x1fb19(%rip), %rsi     # 0x258a0
leaq 0x5552(%rip), %rdx      # 0xb2e0
callq 0x5590
jmp 0x5e83
movq (%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x308(%rsp)
movl %eax, 0x304(%rsp)
callq 0x52a0
jmp 0x5dcb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x308(%rsp)
movl %eax, 0x304(%rsp)
callq 0x5570
jmp 0x5dd2
jmp 0x5e6e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x308(%rsp)
movl %eax, 0x304(%rsp)
jmp 0x5e38
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x308(%rsp)
movl %eax, 0x304(%rsp)
jmp 0x5e21
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x308(%rsp)
movl %eax, 0x304(%rsp)
leaq 0x68(%rsp), %rdi
callq 0x5210
leaq 0x67(%rsp), %rdi
callq 0x53c0
leaq 0x90(%rsp), %rdi
callq 0x5210
leaq 0x8f(%rsp), %rdi
callq 0x53c0
testb $0x1, 0x66(%rsp)
jne 0x5e4e
jmp 0x5e58
movq 0x18(%rsp), %rdi
callq 0x52a0
leaq 0xb0(%rsp), %rdi
callq 0x5090
callq 0x5570
jmp 0x5e6c
jmp 0x5e6e
movq 0x308(%rsp), %rdi
callq 0x55c0
movq %rax, %rdi
callq 0xae60
nopw %cs:(%rax,%rax)