// File: CoinXu[P]reviser-compiler/src/command_line_interface.cpp
// Function: reviser::CommandLineInterface::MakeSourceCodeInputs(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
string CommandLineInterface::MakeSourceCodeInputs(const string& path) {
    const string file_path = io::absolute(path)
      ? path
      : io::join(string(getenv("PWD")), path);

    ifstream f(file_path, ifstream::binary);

    if (!f) {
      cerr << "not found file : " << file_path;
      return "";
    }

    f.seekg(0, f.end);
    int length = f.tellg();
    f.seekg(0, f.beg);
    char* buffer = new char[length];
    f.read(buffer, length);
    f.close();

    string content(buffer, length);
    delete[] buffer;
    return content;
  }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x320, %rsp            # imm = 0x320
movq %rdi, -0x2b8(%rbp)
movq %rdi, %rax
movq %rax, -0x2b0(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x18(%rbp), %rdi
callq 0xc22b0
movb $0x0, -0x5a(%rbp)
movb $0x0, -0x6d(%rbp)
testb $0x1, %al
jne 0xa00df
jmp 0xa00ee
movq -0x18(%rbp), %rsi
leaq -0x38(%rbp), %rdi
callq 0x991c0
jmp 0xa0147
leaq 0x5ef1b(%rip), %rdi     # 0xff010
callq 0x99580
movq %rax, -0x2c8(%rbp)
leaq -0x59(%rbp), %rdi
movq %rdi, -0x2c0(%rbp)
callq 0x99850
movq -0x2c8(%rbp), %rsi
movq -0x2c0(%rbp), %rdx
movb $0x1, -0x5a(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x99640
jmp 0xa012e
movb $0x1, -0x6d(%rbp)
movq -0x18(%rbp), %rdx
leaq -0x38(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0xc2020
jmp 0xa0145
jmp 0xa0147
testb $0x1, -0x6d(%rbp)
jne 0xa014f
jmp 0xa0158
leaq -0x58(%rbp), %rdi
callq 0x992c0
testb $0x1, -0x5a(%rbp)
jne 0xa0160
jmp 0xa0169
leaq -0x59(%rbp), %rdi
callq 0x994f0
leaq -0x278(%rbp), %rdi
leaq -0x38(%rbp), %rsi
movl $0x4, %edx
callq 0x99750
jmp 0xa0180
movq -0x278(%rbp), %rax
movq -0x18(%rax), %rax
leaq -0x278(%rbp,%rax), %rdi
callq 0x991f0
movb %al, -0x2c9(%rbp)
jmp 0xa01a0
movb -0x2c9(%rbp), %al
testb $0x1, %al
jne 0xa01af
jmp 0xa02a9
movq 0x8fe2a(%rip), %rdi     # 0x12ffe0
leaq 0x5f0d1(%rip), %rsi     # 0xff28e
callq 0x99470
movq %rax, -0x2d8(%rbp)
jmp 0xa01cb
movq -0x2d8(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x99410
jmp 0xa01dd
leaq -0x279(%rbp), %rdi
movq %rdi, -0x2e0(%rbp)
callq 0x99850
movq -0x2b8(%rbp), %rdi
movq -0x2e0(%rbp), %rdx
leaq 0x609aa(%rip), %rsi     # 0x100baf
callq 0x99640
jmp 0xa020c
leaq -0x279(%rbp), %rdi
callq 0x994f0
movl $0x1, -0x280(%rbp)
jmp 0xa0450
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xa0254
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
testb $0x1, -0x6d(%rbp)
jne 0xa0249
jmp 0xa0252
leaq -0x58(%rbp), %rdi
callq 0x992c0
jmp 0xa0254
testb $0x1, -0x5a(%rbp)
jne 0xa025c
jmp 0xa0265
leaq -0x59(%rbp), %rdi
callq 0x994f0
jmp 0xa048a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xa0481
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0xa0475
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x279(%rbp), %rdi
callq 0x994f0
jmp 0xa0475
xorl %eax, %eax
movl %eax, %esi
leaq -0x278(%rbp), %rdi
movl $0x2, %edx
callq 0x99620
jmp 0xa02c0
leaq -0x278(%rbp), %rdi
callq 0x99820
movq %rdx, -0x2f0(%rbp)
movq %rax, -0x2e8(%rbp)
jmp 0xa02dc
movq -0x2f0(%rbp), %rax
movq -0x2e8(%rbp), %rcx
movq %rcx, -0x298(%rbp)
movq %rax, -0x290(%rbp)
leaq -0x298(%rbp), %rdi
callq 0xa1450
movq %rax, -0x2f8(%rbp)
jmp 0xa030d
movq -0x2f8(%rbp), %rax
movl %eax, -0x284(%rbp)
xorl %edx, %edx
movl %edx, %esi
leaq -0x278(%rbp), %rdi
callq 0x99620
jmp 0xa032c
movslq -0x284(%rbp), %rdi
testq %rdi, %rdi
movq $-0x1, %rax
cmovsq %rax, %rdi
callq 0x99040
movq %rax, -0x300(%rbp)
jmp 0xa034f
movq -0x300(%rbp), %rax
movq %rax, -0x2a0(%rbp)
movq -0x2a0(%rbp), %rsi
movslq -0x284(%rbp), %rdx
leaq -0x278(%rbp), %rdi
callq 0x995b0
jmp 0xa0379
leaq -0x278(%rbp), %rdi
callq 0x990c0
jmp 0xa0387
movb $0x0, -0x2a1(%rbp)
movq -0x2a0(%rbp), %rax
movq %rax, -0x318(%rbp)
movslq -0x284(%rbp), %rax
movq %rax, -0x310(%rbp)
leaq -0x2a2(%rbp), %rdi
movq %rdi, -0x308(%rbp)
callq 0x99850
movq -0x2b8(%rbp), %rdi
movq -0x318(%rbp), %rsi
movq -0x310(%rbp), %rdx
movq -0x308(%rbp), %rcx
callq 0x99530
jmp 0xa03e0
leaq -0x2a2(%rbp), %rdi
callq 0x994f0
movq -0x2a0(%rbp), %rax
movq %rax, -0x320(%rbp)
cmpq $0x0, %rax
je 0xa040c
movq -0x320(%rbp), %rdi
callq 0x995f0
movb $0x1, -0x2a1(%rbp)
movl $0x1, -0x280(%rbp)
testb $0x1, -0x2a1(%rbp)
jne 0xa044e
jmp 0xa0442
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x2a2(%rbp), %rdi
callq 0x994f0
jmp 0xa0475
movq -0x2b8(%rbp), %rdi
callq 0x992c0
jmp 0xa0450
leaq -0x278(%rbp), %rdi
callq 0x990f0
leaq -0x38(%rbp), %rdi
callq 0x992c0
movq -0x2b0(%rbp), %rax
addq $0x320, %rsp            # imm = 0x320
popq %rbp
retq
leaq -0x278(%rbp), %rdi
callq 0x990f0
leaq -0x38(%rbp), %rdi
callq 0x992c0
movq -0x68(%rbp), %rdi
callq 0x99840
nopw %cs:(%rax,%rax)