// File: /workspace/github_c_makefile_star2_O1/info-telecom-strasbourg[P]code-generator/src/flag_m.cpp
// Function: flag_m()
void flag_m () {
	if ( file_exists ("Makefile") || file_exists ("makefile") ) {
		cerr << "\n\033[1;31merror\033[0m: There is already a Makefile";
		cerr << " in the current directory." << endl;
		exit (EXIT_FAILURE);
	}

	int exit_code;
	string opt_0, opt_1, opt_2, opt_3, opt_4, opt_5, opt_6, opt_7;

	GET_CONFIG (
		opt_5 = parse_path (ds->source, ds->c_extension, IS_SOURCE);
		opt_3 = parse_path (ds->include, ds->h_extension, IS_INCLUDE);
		parse_path (ds->object, "?", IS_OTHER);
		parse_path (ds->bin, "?", IS_OTHER);

		opt_0 = strlen(ds->c_extension) == 1 ? "gcc" : "g++";
		opt_1 = ds->c_extension;
		opt_2 = ds->h_extension;

		opt_4 = ds->name;
		
		opt_6 = ds->object;
		opt_7 = ds->bin;
	)

	vector<char*> cmd;
	LOAD_CMD("bash");
	LOAD_CMD (BUILD_MAKEFILE_SCRIPT_PATH);
	LOAD_CMD (opt_0.c_str());
	LOAD_CMD (opt_1.c_str());
	LOAD_CMD (opt_2.c_str());
	LOAD_CMD (opt_3.c_str());
	LOAD_CMD (opt_4.c_str());
	LOAD_CMD (opt_5.c_str());
	LOAD_CMD (opt_6.c_str());
	LOAD_CMD (opt_7.c_str());
	LOAD_CMD (MAKEFILE_TEMPLATE_PATH);

	execute (exit_code, BASH_PATH, cmd);
	CHECK_CODE (exit_code);

	cout << "\n\033[1;32minfo\033[0m: Successfully created the Makefile !\n";
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1c8, %rsp            # imm = 0x1C8
leaq 0x3dde(%rip), %rdi      # 0x7290
callq 0x5bbf
testb %al, %al
jne 0x3c11
leaq 0x3d9b(%rip), %rdi      # 0x7261
callq 0x5bbf
testb %al, %al
jne 0x3c11
leaq 0x138(%rsp), %rcx
movq %rcx, -0x10(%rcx)
xorl %eax, %eax
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x118(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0xf8(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0xd8(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0xb8(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x98(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x78(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x58(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x3d4e(%rip), %rdi      # 0x72b4
leaq 0x3d5b(%rip), %rsi      # 0x72c8
callq 0x2220
testq %rax, %rax
je 0x3c52
movq %rax, %r14
movl $0x380, %edi            # imm = 0x380
callq 0x2280
movq %rax, %rbx
movl $0x80, %esi
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rcx
callq 0x22d0
leaq 0x80(%rbx), %r12
movl $0x80, %esi
movl $0x1, %edx
movq %r12, %rdi
movq %r14, %rcx
callq 0x22d0
leaq 0x100(%rbx), %rdi
movl $0x80, %esi
movl $0x1, %edx
movq %rdi, 0x30(%rsp)
movq %r14, %rcx
callq 0x22d0
leaq 0x180(%rbx), %r15
movl $0x80, %esi
movl $0x1, %edx
movq %r15, %rdi
movq %r14, %rcx
callq 0x22d0
leaq 0x200(%rbx), %rdi
movl $0x80, %esi
movl $0x1, %edx
movq %rdi, 0x40(%rsp)
movq %r14, %rcx
callq 0x22d0
leaq 0x280(%rbx), %rbp
movl $0x80, %esi
movl $0x1, %edx
movq %rbp, %rdi
movq %r14, %rcx
callq 0x22d0
leaq 0x300(%rbx), %r13
movl $0x80, %esi
movl $0x1, %edx
movq %r13, %rdi
movq %r14, %rcx
callq 0x22d0
leaq 0x3c97(%rip), %rsi      # 0x72ea
movq %rbx, %rdi
callq 0x22b0
testl %eax, %eax
je 0x3c57
leaq 0x3c80(%rip), %rsi      # 0x72ea
movq %r12, %rdi
callq 0x22b0
testl %eax, %eax
je 0x3c5c
leaq 0x3c69(%rip), %rsi      # 0x72ea
movq 0x30(%rsp), %rdi
callq 0x22b0
testl %eax, %eax
je 0x3c61
leaq 0x3c50(%rip), %rsi      # 0x72ea
movq %r15, %rdi
callq 0x22b0
testl %eax, %eax
je 0x3c66
leaq 0x3c39(%rip), %rsi      # 0x72ea
movq 0x40(%rsp), %rdi
callq 0x22b0
testl %eax, %eax
je 0x3c6b
leaq 0x3c20(%rip), %rsi      # 0x72ea
movq %rbp, %rdi
callq 0x22b0
testl %eax, %eax
je 0x3c48
cmpb $0x0, (%rbp)
je 0x3c48
leaq 0x3bff(%rip), %rsi      # 0x72ea
movq %r13, %rdi
callq 0x22b0
testl %eax, %eax
je 0x3c4d
cmpb $0x0, (%r13)
je 0x3c4d
movq %r15, 0x148(%rsp)
leaq 0x10(%rsp), %rdi
movq %rbx, %rsi
movq %rbp, %rdx
xorl %ecx, %ecx
callq 0x2e4a
leaq 0x88(%rsp), %rdi
leaq 0x10(%rsp), %r14
movq %r14, %rsi
callq 0x2250
movq (%r14), %rdi
leaq 0x20(%rsp), %r15
cmpq %r15, %rdi
je 0x374f
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x21d0
leaq 0x10(%rsp), %rdi
movq %r12, %rsi
movq %r13, %rdx
movl $0x1, %ecx
callq 0x2e4a
leaq 0xc8(%rsp), %rdi
leaq 0x10(%rsp), %r14
movq %r14, %rsi
callq 0x2250
movq (%r14), %rdi
cmpq %r15, %rdi
je 0x378e
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x21d0
leaq 0x3c81(%rip), %rdx      # 0x7416
leaq 0x1a8(%rsp), %rdi
movq 0x30(%rsp), %rsi
movl $0x2, %ecx
callq 0x2e4a
movq 0x148(%rsp), %r15
leaq 0x1b8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x37d5
movq 0x1b8(%rsp), %rsi
incq %rsi
callq 0x21d0
leaq 0x3c3a(%rip), %rdx      # 0x7416
leaq 0x188(%rsp), %rdi
movq %r15, %rsi
movl $0x2, %ecx
callq 0x2e4a
leaq 0x198(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3812
movq 0x198(%rsp), %rsi
incq %rsi
callq 0x21d0
movq %rbp, %rdi
callq 0x20a0
cmpq $0x1, %rax
leaq 0x3bf3(%rip), %rax      # 0x7418
leaq 0x3bf0(%rip), %rcx      # 0x741c
cmoveq %rax, %rcx
leaq 0x128(%rsp), %rdi
movq 0x8(%rdi), %rdx
movl $0x3, %r8d
xorl %esi, %esi
callq 0x2300
leaq 0x108(%rsp), %r14
movq 0x8(%r14), %r12
movq %rbp, %rdi
callq 0x20a0
movq %r14, %rdi
xorl %esi, %esi
movq %r12, %rdx
movq %rbp, %rcx
movq %rax, %r8
callq 0x2300
leaq 0xe8(%rsp), %r14
movq 0x8(%r14), %r12
movq %r13, %rdi
callq 0x20a0
movq %r14, %rdi
xorl %esi, %esi
movq %r12, %rdx
movq %r13, %rcx
movq %rax, %r8
callq 0x2300
leaq 0xa8(%rsp), %r14
movq 0x8(%r14), %r12
movq 0x40(%rsp), %r13
movq %r13, %rdi
callq 0x20a0
movq %r14, %rdi
xorl %esi, %esi
movq %r12, %rdx
movq %r13, %rcx
movq %rax, %r8
callq 0x2300
leaq 0x68(%rsp), %r14
movq 0x8(%r14), %r12
movq 0x30(%rsp), %r13
movq %r13, %rdi
callq 0x20a0
movq %r14, %rdi
xorl %esi, %esi
movq %r12, %rdx
movq %r13, %rcx
movq %rax, %r8
callq 0x2300
leaq 0x48(%rsp), %r14
movq %r15, %r12
movq 0x8(%r14), %r15
movq %r12, %rdi
callq 0x20a0
movq %r14, %rdi
xorl %esi, %esi
movq %r15, %rdx
movq %r12, %rcx
movq %rax, %r8
callq 0x2300
movq %rbx, %rdi
callq 0x2230
xorps %xmm0, %xmm0
leaq 0x10(%rsp), %rdi
movaps %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
leaq 0x37c4(%rip), %rax      # 0x70f9
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
callq 0x3f94
leaq 0x3ad7(%rip), %rax      # 0x7420
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x10(%rsp), %rdi
callq 0x3f94
movq 0x128(%rsp), %rax
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x10(%rsp), %rdi
callq 0x3f94
movq 0x108(%rsp), %rax
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x10(%rsp), %rdi
callq 0x3f94
movq 0xe8(%rsp), %rax
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x10(%rsp), %rdi
callq 0x3f94
movq 0xc8(%rsp), %rax
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x10(%rsp), %rdi
callq 0x3f94
movq 0xa8(%rsp), %rax
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x10(%rsp), %rdi
callq 0x3f94
movq 0x88(%rsp), %rax
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x10(%rsp), %rdi
callq 0x3f94
movq 0x68(%rsp), %rax
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x10(%rsp), %rdi
callq 0x3f94
movq 0x48(%rsp), %rax
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x10(%rsp), %rdi
callq 0x3f94
leaq 0x3a24(%rip), %rax      # 0x7450
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x10(%rsp), %rdi
callq 0x3f94
leaq 0x150(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x3dea
leaq 0x3699(%rip), %rdx      # 0x70f0
leaq 0x168(%rsp), %rdi
leaq 0x3c(%rsp), %rsi
leaq 0x150(%rsp), %rcx
callq 0x5e87
leaq 0x178(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3a92
movq 0x178(%rsp), %rsi
incq %rsi
callq 0x21d0
movq 0x150(%rsp), %rdi
testq %rdi, %rdi
je 0x3aaf
movq 0x160(%rsp), %rsi
subq %rdi, %rsi
callq 0x21d0
cmpl $0x1, 0x3c(%rsp)
je 0x3c3e
movq 0x6507(%rip), %rdi      # 0x9fc8
leaq 0x39b5(%rip), %rsi      # 0x747d
movl $0x36, %edx
callq 0x2210
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x3ae9
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x21d0
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x3b05
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x21d0
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0x3b21
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x21d0
movq 0x88(%rsp), %rdi
leaq 0x98(%rsp), %rax
cmpq %rax, %rdi
je 0x3b46
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x21d0
movq 0xa8(%rsp), %rdi
leaq 0xb8(%rsp), %rax
cmpq %rax, %rdi
je 0x3b6b
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x21d0
movq 0xc8(%rsp), %rdi
leaq 0xd8(%rsp), %rax
cmpq %rax, %rdi
je 0x3b90
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x21d0
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0x3bb5
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x21d0
movq 0x108(%rsp), %rdi
leaq 0x118(%rsp), %rax
cmpq %rax, %rdi
je 0x3bda
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x21d0
movq 0x128(%rsp), %rdi
leaq 0x138(%rsp), %rax
cmpq %rax, %rdi
je 0x3bff
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x21d0
addq $0x1c8, %rsp            # imm = 0x1C8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x63d8(%rip), %rbx      # 0x9ff0
leaq 0x364b(%rip), %rsi      # 0x726a
movq %rbx, %rdi
callq 0x21a0
leaq 0x366b(%rip), %rsi      # 0x7299
movq %rbx, %rdi
callq 0x21a0
movq %rax, %rdi
callq 0x20c0
movl $0x1, %edi
callq 0x2240
callq 0x23e5
callq 0x23c0
callq 0x24c3
callq 0x249e
callq 0x2479
callq 0x2454
callq 0x242f
callq 0x240a
movq %rax, %rbx
movq 0x150(%rsp), %rdi
testq %rdi, %rdi
je 0x3caf
movq 0x160(%rsp), %rsi
subq %rdi, %rsi
callq 0x21d0
jmp 0x3caf
jmp 0x3cac
jmp 0x3cac
jmp 0x3cac
jmp 0x3cac
jmp 0x3cac
jmp 0x3cac
jmp 0x3cac
jmp 0x3cac
jmp 0x3cac
jmp 0x3cac
jmp 0x3cac
jmp 0x3cc8
jmp 0x3cc8
movq %rax, %rbx
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x3ccb
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x21d0
jmp 0x3ccb
movq %rax, %rbx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x3ce7
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x21d0
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0x3d03
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x21d0
movq 0x88(%rsp), %rdi
leaq 0x98(%rsp), %rax
cmpq %rax, %rdi
je 0x3d28
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x21d0
movq 0xa8(%rsp), %rdi
leaq 0xb8(%rsp), %rax
cmpq %rax, %rdi
je 0x3d4d
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x21d0
movq 0xc8(%rsp), %rdi
leaq 0xd8(%rsp), %rax
cmpq %rax, %rdi
je 0x3d72
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x21d0
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0x3d97
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x21d0
movq 0x108(%rsp), %rdi
leaq 0x118(%rsp), %rax
cmpq %rax, %rdi
je 0x3dbc
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x21d0
movq 0x128(%rsp), %rdi
leaq 0x138(%rsp), %rax
cmpq %rax, %rdi
je 0x3de1
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x21d0
movq %rbx, %rdi
callq 0x2340
nop