// File: /workspace/github_cpp_makefile_star2_O3/chrissimpkins[P]octopus/src/io.cpp
// Function: IO::read_file[abi:cxx11]()
string& IO::read_file(){
	//if the path variable is assigned in constructor
	if (!path.empty()){
		try{
			ifstream infile(path);
			if (infile.good()){
				// define the input string from the calling function with the reference that was passed in
				ifstream& inr = infile;
				get_string(inr);
				string& isr = inputstring;
				infile.close();
				return isr;
			}
			else{
				throw runtime_error("Unable to open the input file " + path);
			}
		}
		catch(...){
			print_error("Unable to open the input file " + path);
		}
	}
	//otherwise use the ipath from constructor
	else if (!ipath.empty()) {
		try{
			ifstream infile(ipath);
			if (infile.good()){
				// define the input string from the calling function with the reference that was passed in
				ifstream& inr = infile;
				get_string(inr);
				string& isr = inputstring;
				infile.close();
				return isr;
			}
			else{
				throw runtime_error("Unable to open the input file " + path);
			}
		}
		catch (...){
			print_error("Unable to open the input file " + path);
		}
	}
	else{
		throw runtime_error("Missing a file path for the input file.");
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x268, %rsp            # imm = 0x268
movq %rdi, %rbx
cmpq $0x0, 0x8(%rdi)
je 0xe087
leaq 0x60(%rsp), %rdi
movq %rbx, %rsi
movl $0x8, %edx
callq 0x33a0
movq 0x60(%rsp), %rax
movq -0x18(%rax), %rax
cmpl $0x0, 0x80(%rsp,%rax)
jne 0xe0f2
leaq 0x60(%rsp), %rsi
movq %rbx, %rdi
callq 0xe310
leaq 0x60(%rsp), %rdi
callq 0x3060
jmp 0xe0d3
cmpq $0x0, 0x28(%rbx)
je 0xe139
leaq 0x20(%rbx), %rsi
leaq 0x60(%rsp), %rdi
movl $0x8, %edx
callq 0x33a0
movq 0x60(%rsp), %rax
movq -0x18(%rax), %rax
cmpl $0x0, 0x80(%rsp,%rax)
jne 0xe16b
leaq 0x60(%rsp), %rsi
movq %rbx, %rdi
callq 0xe310
leaq 0x60(%rsp), %rdi
callq 0x3060
leaq 0x60(%rsp), %rdi
callq 0x3070
addq $0x60, %rbx
movq %rbx, %rax
addq $0x268, %rsp            # imm = 0x268
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movl $0x10, %edi
callq 0x3140
movq %rax, %r14
leaq 0x267c(%rip), %rsi      # 0x10782
movq %rsp, %rdi
movq %rbx, %rdx
callq 0xbab1
movb $0x1, %bpl
movq %rsp, %rsi
movq %r14, %rdi
callq 0x33b0
xorl %ebp, %ebp
movq 0x5ec8(%rip), %rsi      # 0x13ff0
movq 0x5e91(%rip), %rdx      # 0x13fc0
movq %r14, %rdi
callq 0x33d0
jmp 0xe1b0
movl $0x10, %edi
callq 0x3140
movq %rax, %r14
leaq 0x2654(%rip), %rsi      # 0x107a1
movq %rax, %rdi
callq 0x30e0
movq 0x5e94(%rip), %rsi      # 0x13ff0
movq 0x5e5d(%rip), %rdx      # 0x13fc0
movq %r14, %rdi
callq 0x33d0
movl $0x10, %edi
callq 0x3140
movq %rax, %r14
leaq 0x2603(%rip), %rsi      # 0x10782
movq %rsp, %rdi
movq %rbx, %rdx
callq 0xbab1
movb $0x1, %bpl
movq %rsp, %rsi
movq %r14, %rdi
callq 0x33b0
xorl %ebp, %ebp
movq 0x5e4f(%rip), %rsi      # 0x13ff0
movq 0x5e18(%rip), %rdx      # 0x13fc0
movq %r14, %rdi
callq 0x33d0
movq %rax, %r15
leaq 0x10(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe1ce
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3270
testb %bpl, %bpl
jne 0xe1d8
jmp 0xe229
movq %rax, %r15
movq %r14, %rdi
callq 0x3190
jmp 0xe229
movq %rax, %rbx
movq %r14, %rdi
callq 0x3190
jmp 0xe300
movq %rax, %r15
leaq 0x10(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe210
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3270
testb %bpl, %bpl
jne 0xe21a
jmp 0xe26a
movq %rax, %r15
movq %r14, %rdi
callq 0x3190
jmp 0xe26a
jmp 0xe226
movq %rax, %r15
leaq 0x60(%rsp), %rdi
callq 0x3070
jmp 0xe238
movq %rax, %r15
movq %r15, %rdi
callq 0x30f0
leaq 0x253b(%rip), %rsi      # 0x10782
leaq 0x20(%rsp), %rdi
movq %rbx, %rdx
callq 0xbab1
leaq 0x20(%rsp), %rdi
callq 0xba72
leaq 0x20(%rsp), %rdi
jmp 0xe2a4
jmp 0xe267
movq %rax, %r15
leaq 0x60(%rsp), %rdi
callq 0x3070
jmp 0xe279
movq %rax, %r15
movq %r15, %rdi
callq 0x30f0
leaq 0x24fa(%rip), %rsi      # 0x10782
leaq 0x40(%rsp), %rdi
movq %rbx, %rdx
callq 0xbab1
leaq 0x40(%rsp), %rdi
callq 0xba72
leaq 0x40(%rsp), %rdi
callq 0x3110
callq 0x33c0
movq %rax, %rbx
leaq 0x30(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe2d1
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x3270
jmp 0xe2d1
movq %rax, %rbx
callq 0x33c0
jmp 0xe300
movq %rax, %rbx
leaq 0x50(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe2fb
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x3270
jmp 0xe2fb
movq %rax, %rbx
callq 0x33c0
movq %rbx, %rdi
callq 0x33e0
movq %rax, %rdi
callq 0xdab7