// File: rvthak[P]Makefile-Maker/output.cpp
// Function: Output(Makefile&)
void Output(Makefile &mk){
	// Safely Create the output file
	ofstream file;
	file.open("makefile");
	if(!file.is_open()){
		cout << " (!) Fatal Error: Failed to create makefile. Exiting.. " << endl;
		exit(1);
	}

	// Write the Makefile info 
	file << "OUT=" << mk.getName() << endl;
	file << "OBJS=" << mk.getFileList() << endl;
	file << "CXX=" << mk.getCompiler() << endl;

	if(mk.getCompParam()){
		file << "CXXFLAGS=" << mk.getCompParamList() << endl;
	}
	else{
		file << "CXXFLAGS=" << endl;
	}

	if(mk.getExecParam()){
		file << "EXECUTION_PARAMETERS=" << mk.getExecParamList() << endl;
	}
	else{
		file << "EXECUTION_PARAMETERS=" << endl;
	}
	
	// Write Body + any other part
	file << mkflBody();

	if(mk.getInstall()){
		file << mkflInst();
	}

	if(mk.getDebug()){
		file << mkflDB();
	}

	if(mk.getValgrind()){
		file << mkflVal(mk.getDebug());
	}

	file << mkflClean();

	file.close();
	return;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x3f0, %rsp            # imm = 0x3F0
movq %rdi, -0x8(%rbp)
leaq -0x208(%rbp), %rdi
movq %rdi, -0x360(%rbp)
callq 0x2350
movq -0x360(%rbp), %rdi
leaq 0x1bfd(%rip), %rsi      # 0x67fd
movl $0x10, %edx
callq 0x2060
jmp 0x4c0c
leaq -0x208(%rbp), %rdi
callq 0x2160
movb %al, -0x361(%rbp)
jmp 0x4c20
movb -0x361(%rbp), %al
testb $0x1, %al
jne 0x4c7e
jmp 0x4c2c
movq 0x439d(%rip), %rdi      # 0x8fd0
leaq 0x1bcc(%rip), %rsi      # 0x6806
callq 0x21e0
movq %rax, -0x370(%rbp)
jmp 0x4c48
movq -0x370(%rbp), %rdi
movq 0x436a(%rip), %rsi      # 0x8fc0
callq 0x21f0
jmp 0x4c5d
movl $0x1, %edi
callq 0x2260
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x210(%rbp)
movl %eax, -0x214(%rbp)
jmp 0x5220
leaq 0x1bb9(%rip), %rsi      # 0x683e
leaq -0x208(%rbp), %rdi
callq 0x21e0
movq %rax, -0x378(%rbp)
jmp 0x4c9a
movq -0x8(%rbp), %rsi
leaq -0x238(%rbp), %rdi
callq 0x43e0
jmp 0x4cac
movq -0x378(%rbp), %rdi
leaq -0x238(%rbp), %rsi
callq 0x21b0
movq %rax, -0x380(%rbp)
jmp 0x4cc8
movq -0x380(%rbp), %rdi
movq 0x42ea(%rip), %rsi      # 0x8fc0
callq 0x21f0
jmp 0x4cdd
leaq -0x238(%rbp), %rdi
callq 0x2110
leaq 0x1b53(%rip), %rsi      # 0x6843
leaq -0x208(%rbp), %rdi
callq 0x21e0
movq %rax, -0x388(%rbp)
jmp 0x4d05
movq -0x8(%rbp), %rsi
leaq -0x258(%rbp), %rdi
callq 0x45e0
jmp 0x4d17
movq -0x388(%rbp), %rdi
leaq -0x258(%rbp), %rsi
callq 0x21b0
movq %rax, -0x390(%rbp)
jmp 0x4d33
movq -0x390(%rbp), %rdi
movq 0x427f(%rip), %rsi      # 0x8fc0
callq 0x21f0
jmp 0x4d48
leaq -0x258(%rbp), %rdi
callq 0x2110
leaq 0x1aee(%rip), %rsi      # 0x6849
leaq -0x208(%rbp), %rdi
callq 0x21e0
movq %rax, -0x398(%rbp)
jmp 0x4d70
movq -0x8(%rbp), %rsi
leaq -0x278(%rbp), %rdi
callq 0x4410
jmp 0x4d82
movq -0x398(%rbp), %rdi
leaq -0x278(%rbp), %rsi
callq 0x21b0
movq %rax, -0x3a0(%rbp)
jmp 0x4d9e
movq -0x3a0(%rbp), %rdi
movq 0x4214(%rip), %rsi      # 0x8fc0
callq 0x21f0
jmp 0x4db3
leaq -0x278(%rbp), %rdi
callq 0x2110
movq -0x8(%rbp), %rdi
callq 0x4500
movb %al, -0x3a1(%rbp)
jmp 0x4dd0
movb -0x3a1(%rbp), %al
testb $0x1, %al
jne 0x4ddf
jmp 0x4edb
leaq 0x1a68(%rip), %rsi      # 0x684e
leaq -0x208(%rbp), %rdi
callq 0x21e0
movq %rax, -0x3b0(%rbp)
jmp 0x4dfb
movq -0x8(%rbp), %rsi
leaq -0x298(%rbp), %rdi
callq 0x4560
jmp 0x4e0d
movq -0x3b0(%rbp), %rdi
leaq -0x298(%rbp), %rsi
callq 0x21b0
movq %rax, -0x3b8(%rbp)
jmp 0x4e29
movq -0x3b8(%rbp), %rdi
movq 0x4189(%rip), %rsi      # 0x8fc0
callq 0x21f0
jmp 0x4e3e
leaq -0x298(%rbp), %rdi
callq 0x2110
jmp 0x4f0e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x210(%rbp)
movl %eax, -0x214(%rbp)
leaq -0x238(%rbp), %rdi
callq 0x2110
jmp 0x5220
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x210(%rbp)
movl %eax, -0x214(%rbp)
leaq -0x258(%rbp), %rdi
callq 0x2110
jmp 0x5220
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x210(%rbp)
movl %eax, -0x214(%rbp)
leaq -0x278(%rbp), %rdi
callq 0x2110
jmp 0x5220
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x210(%rbp)
movl %eax, -0x214(%rbp)
leaq -0x298(%rbp), %rdi
callq 0x2110
jmp 0x5220
leaq 0x196c(%rip), %rsi      # 0x684e
leaq -0x208(%rbp), %rdi
callq 0x21e0
movq %rax, -0x3c0(%rbp)
jmp 0x4ef7
movq -0x3c0(%rbp), %rdi
movq 0x40bb(%rip), %rsi      # 0x8fc0
callq 0x21f0
jmp 0x4f0c
jmp 0x4f0e
movq -0x8(%rbp), %rdi
callq 0x4520
movb %al, -0x3c1(%rbp)
jmp 0x4f1f
movb -0x3c1(%rbp), %al
testb $0x1, %al
jne 0x4f2e
jmp 0x4fbe
leaq 0x1923(%rip), %rsi      # 0x6858
leaq -0x208(%rbp), %rdi
callq 0x21e0
movq %rax, -0x3d0(%rbp)
jmp 0x4f4a
movq -0x8(%rbp), %rsi
leaq -0x2b8(%rbp), %rdi
callq 0x45a0
jmp 0x4f5c
movq -0x3d0(%rbp), %rdi
leaq -0x2b8(%rbp), %rsi
callq 0x21b0
movq %rax, -0x3d8(%rbp)
jmp 0x4f78
movq -0x3d8(%rbp), %rdi
movq 0x403a(%rip), %rsi      # 0x8fc0
callq 0x21f0
jmp 0x4f8d
leaq -0x2b8(%rbp), %rdi
callq 0x2110
jmp 0x4ff1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x210(%rbp)
movl %eax, -0x214(%rbp)
leaq -0x2b8(%rbp), %rdi
callq 0x2110
jmp 0x5220
leaq 0x1893(%rip), %rsi      # 0x6858
leaq -0x208(%rbp), %rdi
callq 0x21e0
movq %rax, -0x3e0(%rbp)
jmp 0x4fda
movq -0x3e0(%rbp), %rdi
movq 0x3fd8(%rip), %rsi      # 0x8fc0
callq 0x21f0
jmp 0x4fef
jmp 0x4ff1
leaq -0x2d8(%rbp), %rdi
callq 0x5240
jmp 0x4fff
leaq -0x208(%rbp), %rdi
leaq -0x2d8(%rbp), %rsi
callq 0x21b0
jmp 0x5014
leaq -0x2d8(%rbp), %rdi
callq 0x2110
movq -0x8(%rbp), %rdi
callq 0x44e0
movb %al, -0x3e1(%rbp)
jmp 0x5031
movb -0x3e1(%rbp), %al
testb $0x1, %al
jne 0x503d
jmp 0x50b4
leaq -0x2f8(%rbp), %rdi
callq 0x5320
jmp 0x504b
leaq -0x208(%rbp), %rdi
leaq -0x2f8(%rbp), %rsi
callq 0x21b0
jmp 0x5060
leaq -0x2f8(%rbp), %rdi
callq 0x2110
jmp 0x50b4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x210(%rbp)
movl %eax, -0x214(%rbp)
leaq -0x2d8(%rbp), %rdi
callq 0x2110
jmp 0x5220
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x210(%rbp)
movl %eax, -0x214(%rbp)
leaq -0x2f8(%rbp), %rdi
callq 0x2110
jmp 0x5220
movq -0x8(%rbp), %rdi
callq 0x44a0
movb %al, -0x3e2(%rbp)
jmp 0x50c5
movb -0x3e2(%rbp), %al
testb $0x1, %al
jne 0x50d1
jmp 0x5125
leaq -0x318(%rbp), %rdi
callq 0x53d0
jmp 0x50df
leaq -0x208(%rbp), %rdi
leaq -0x318(%rbp), %rsi
callq 0x21b0
jmp 0x50f4
leaq -0x318(%rbp), %rdi
callq 0x2110
jmp 0x5125
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x210(%rbp)
movl %eax, -0x214(%rbp)
leaq -0x318(%rbp), %rdi
callq 0x2110
jmp 0x5220
movq -0x8(%rbp), %rdi
callq 0x44c0
movb %al, -0x3e3(%rbp)
jmp 0x5136
movb -0x3e3(%rbp), %al
testb $0x1, %al
jne 0x5142
jmp 0x51b0
movq -0x8(%rbp), %rdi
callq 0x44a0
movb %al, -0x3e4(%rbp)
jmp 0x5153
movb -0x3e4(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
leaq -0x338(%rbp), %rdi
callq 0x5490
jmp 0x516d
leaq -0x208(%rbp), %rdi
leaq -0x338(%rbp), %rsi
callq 0x21b0
jmp 0x5182
leaq -0x338(%rbp), %rdi
callq 0x2110
jmp 0x51b0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x210(%rbp)
movl %eax, -0x214(%rbp)
leaq -0x338(%rbp), %rdi
callq 0x2110
jmp 0x5220
leaq -0x358(%rbp), %rdi
callq 0x55b0
jmp 0x51be
leaq -0x208(%rbp), %rdi
leaq -0x358(%rbp), %rsi
callq 0x21b0
jmp 0x51d3
leaq -0x358(%rbp), %rdi
callq 0x2110
leaq -0x208(%rbp), %rdi
callq 0x22d0
jmp 0x51ed
leaq -0x208(%rbp), %rdi
callq 0x22f0
addq $0x3f0, %rsp            # imm = 0x3F0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x210(%rbp)
movl %eax, -0x214(%rbp)
leaq -0x358(%rbp), %rdi
callq 0x2110
leaq -0x208(%rbp), %rdi
callq 0x22f0
movq -0x210(%rbp), %rdi
callq 0x2360
nopl (%rax,%rax)