// File: /workspace/github_c_makefile_star2_O2/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 0x352a(%rip), %rdi      # 0x6290
callq 0x4abf
testb %al, %al
jne 0x32fe
leaq 0x34e7(%rip), %rdi      # 0x6261
callq 0x4abf
testb %al, %al
jne 0x32fe
leaq 0x158(%rsp), %rcx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
xorl %eax, %eax
movb %al, (%rcx)
leaq 0x138(%rsp), %rcx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
leaq 0x118(%rsp), %rdx
movq %rdx, -0x10(%rdx)
andq $0x0, -0x8(%rdx)
movb %al, (%rcx)
movb %al, (%rdx)
leaq 0xf8(%rsp), %rcx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
leaq 0xd8(%rsp), %rdx
movq %rdx, -0x10(%rdx)
andq $0x0, -0x8(%rdx)
movb %al, (%rcx)
movb %al, (%rdx)
leaq 0xb8(%rsp), %rcx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
leaq 0x98(%rsp), %rdx
movq %rdx, -0x10(%rdx)
andq $0x0, -0x8(%rdx)
movb %al, (%rcx)
movb %al, (%rdx)
leaq 0x78(%rsp), %rcx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x348f(%rip), %rdi      # 0x62b4
leaq 0x349c(%rip), %rsi      # 0x62c8
callq 0x2220
testq %rax, %rax
je 0x335d
movq %rax, %r14
movl $0x380, %edi            # imm = 0x380
callq 0x2290
movq %rax, %rbx
pushq $0x1
popq %r15
movl $0x80, %esi
movq %rax, %rdi
movq %r15, %rdx
movq %r14, %rcx
callq 0x22f0
leaq 0x80(%rbx), %r12
movl $0x80, %esi
movq %r12, %rdi
movq %r15, %rdx
movq %r14, %rcx
callq 0x22f0
leaq 0x100(%rbx), %rdi
movl $0x80, %esi
movq %rdi, 0x30(%rsp)
movq %r15, %rdx
movq %r14, %rcx
callq 0x22f0
leaq 0x180(%rbx), %rdi
movl $0x80, %esi
movq %rdi, 0x48(%rsp)
movq %r15, %rdx
movq %r14, %rcx
callq 0x22f0
leaq 0x200(%rbx), %rdi
movl $0x80, %esi
movq %rdi, 0x40(%rsp)
movq %r15, %rdx
movq %r14, %rcx
callq 0x22f0
leaq 0x280(%rbx), %rbp
movl $0x80, %esi
movq %rbp, %rdi
movq %r15, %rdx
movq %r14, %rcx
callq 0x22f0
leaq 0x300(%rbx), %r13
movl $0x80, %esi
movq %r13, %rdi
movq %r15, %rdx
movq %r14, %rcx
callq 0x22f0
leaq 0x33e0(%rip), %rsi      # 0x62ea
movq %rbx, %rdi
callq 0x22d0
testl %eax, %eax
je 0x3372
leaq 0x33c9(%rip), %rsi      # 0x62ea
movq %r12, %rdi
callq 0x22d0
testl %eax, %eax
je 0x3385
leaq 0x33b2(%rip), %rsi      # 0x62ea
movq 0x30(%rsp), %rdi
callq 0x22d0
testl %eax, %eax
movq 0x48(%rsp), %r15
je 0x339a
leaq 0x3394(%rip), %rsi      # 0x62ea
movq %r15, %rdi
callq 0x22d0
testl %eax, %eax
movq 0x40(%rsp), %r14
je 0x33ad
leaq 0x3378(%rip), %rsi      # 0x62ea
movq %r14, %rdi
callq 0x22d0
testl %eax, %eax
je 0x33c2
leaq 0x3361(%rip), %rsi      # 0x62ea
movq %rbp, %rdi
callq 0x22d0
testl %eax, %eax
je 0x3330
cmpb $0x0, (%rbp)
je 0x3330
leaq 0x3340(%rip), %rsi      # 0x62ea
movq %r13, %rdi
callq 0x22d0
testl %eax, %eax
je 0x3348
cmpb $0x0, (%r13)
je 0x3348
leaq 0x10(%rsp), %rdi
movq %rbx, %rsi
movq %rbp, %rdx
xorl %ecx, %ecx
callq 0x29b6
leaq 0xa8(%rsp), %rdi
leaq 0x10(%rsp), %r14
movq %r14, %rsi
callq 0x2250
movq %r14, %rdi
callq 0x20c0
leaq 0x10(%rsp), %rdi
pushq $0x1
popq %rcx
movq %r12, %rsi
movq %r13, %rdx
callq 0x29b6
leaq 0xe8(%rsp), %rdi
leaq 0x10(%rsp), %r14
movq %r14, %rsi
callq 0x2250
movq %r14, %rdi
callq 0x20c0
leaq 0x33eb(%rip), %rdx      # 0x6416
leaq 0x1a8(%rsp), %rdi
pushq $0x2
popq %rcx
movq 0x30(%rsp), %rsi
callq 0x29b6
leaq 0x1a8(%rsp), %rdi
callq 0x20c0
leaq 0x33c2(%rip), %rdx      # 0x6416
leaq 0x188(%rsp), %rdi
pushq $0x2
popq %rcx
movq %r15, %rsi
callq 0x29b6
leaq 0x188(%rsp), %rdi
callq 0x20c0
movq %rbp, %rdi
callq 0x20a0
cmpq $0x1, %rax
leaq 0x3391(%rip), %rax      # 0x6418
leaq 0x338e(%rip), %rsi      # 0x641c
cmoveq %rax, %rsi
leaq 0x148(%rsp), %rdi
callq 0x2390
leaq 0x128(%rsp), %rdi
movq %rbp, %rsi
callq 0x2390
leaq 0x108(%rsp), %rdi
movq %r13, %rsi
callq 0x2390
leaq 0xc8(%rsp), %rdi
movq 0x40(%rsp), %rsi
callq 0x2390
leaq 0x88(%rsp), %rdi
movq 0x30(%rsp), %rsi
callq 0x2390
leaq 0x68(%rsp), %rdi
movq %r15, %rsi
callq 0x2390
movq %rbx, %rdi
callq 0x2230
xorps %xmm0, %xmm0
leaq 0x10(%rsp), %rdi
andq $0x0, 0x10(%rdi)
movaps %xmm0, (%rdi)
leaq 0x2fea(%rip), %rax      # 0x60f9
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
callq 0x35bc
leaq 0x32fd(%rip), %rax      # 0x6420
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x10(%rsp), %rdi
callq 0x35bc
movq 0x148(%rsp), %rax
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x10(%rsp), %rdi
callq 0x35bc
movq 0x128(%rsp), %rax
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x10(%rsp), %rdi
callq 0x35bc
movq 0x108(%rsp), %rax
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x10(%rsp), %rdi
callq 0x35bc
movq 0xe8(%rsp), %rax
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x10(%rsp), %rdi
callq 0x35bc
movq 0xc8(%rsp), %rax
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x10(%rsp), %rdi
callq 0x35bc
movq 0xa8(%rsp), %rax
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x10(%rsp), %rdi
callq 0x35bc
movq 0x88(%rsp), %rax
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x10(%rsp), %rdi
callq 0x35bc
movq 0x68(%rsp), %rax
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x10(%rsp), %rdi
callq 0x35bc
leaq 0x3247(%rip), %rax      # 0x6450
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
leaq 0x10(%rsp), %rdi
callq 0x35bc
leaq 0x50(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x349c
leaq 0x2ebf(%rip), %rdx      # 0x60f0
leaq 0x168(%rsp), %rdi
leaq 0x3c(%rsp), %rsi
leaq 0x50(%rsp), %rcx
callq 0x4d8c
leaq 0x168(%rsp), %rdi
callq 0x20c0
leaq 0x50(%rsp), %rdi
callq 0x3588
cmpl $0x1, 0x3c(%rsp)
je 0x33de
movq 0x5d57(%rip), %rdi      # 0x8fc8
leaq 0x3205(%rip), %rsi      # 0x647d
callq 0x21b0
leaq 0x10(%rsp), %rdi
callq 0x3588
leaq 0x68(%rsp), %rdi
callq 0x20c0
leaq 0x88(%rsp), %rdi
callq 0x20c0
leaq 0xa8(%rsp), %rdi
callq 0x20c0
leaq 0xc8(%rsp), %rdi
callq 0x20c0
leaq 0xe8(%rsp), %rdi
callq 0x20c0
leaq 0x108(%rsp), %rdi
callq 0x20c0
leaq 0x128(%rsp), %rdi
callq 0x20c0
leaq 0x148(%rsp), %rdi
callq 0x20c0
addq $0x1c8, %rsp            # imm = 0x1C8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x5ceb(%rip), %rbx      # 0x8ff0
leaq 0x2f5e(%rip), %rsi      # 0x626a
movq %rbx, %rdi
callq 0x21b0
leaq 0x2f7e(%rip), %rsi      # 0x6299
movq %rbx, %rdi
callq 0x21b0
movq %rax, %rdi
callq 0x20e0
jmp 0x33de
movq 0x5c99(%rip), %rax      # 0x8fd0
movq (%rax), %rcx
leaq 0x3070(%rip), %rdi      # 0x63b1
pushq $0x31
jmp 0x33d5
movq 0x5c81(%rip), %rax      # 0x8fd0
movq (%rax), %rcx
leaq 0x308a(%rip), %rdi      # 0x63e3
pushq $0x32
jmp 0x33d5
movq 0x5c6c(%rip), %rax      # 0x8fd0
movq (%rax), %rcx
leaq 0x2f5c(%rip), %rdi      # 0x62ca
pushq $0x1f
jmp 0x33d5
movq 0x5c57(%rip), %rax      # 0x8fd0
movq (%rax), %rcx
leaq 0x2f6d(%rip), %rdi      # 0x62f0
jmp 0x33d3
movq 0x5c44(%rip), %rax      # 0x8fd0
movq (%rax), %rcx
leaq 0x2f81(%rip), %rdi      # 0x6317
pushq $0x27
jmp 0x33d5
movq 0x5c2f(%rip), %rax      # 0x8fd0
movq (%rax), %rcx
leaq 0x2f94(%rip), %rdi      # 0x633f
jmp 0x33d3
movq 0x5c1c(%rip), %rax      # 0x8fd0
movq (%rax), %rcx
leaq 0x2fa8(%rip), %rdi      # 0x6366
pushq $0x23
jmp 0x33d5
movq 0x5c07(%rip), %rax      # 0x8fd0
movq (%rax), %rcx
leaq 0x2fb7(%rip), %rdi      # 0x638a
pushq $0x26
popq %rsi
pushq $0x1
popq %rdx
callq 0x23a0
pushq $0x1
popq %rdi
callq 0x2240
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x3588
jmp 0x3412
jmp 0x340f
jmp 0x340f
jmp 0x340f
jmp 0x340f
jmp 0x340f
jmp 0x340f
jmp 0x340f
jmp 0x340f
jmp 0x340f
jmp 0x340f
jmp 0x340f
jmp 0x341e
jmp 0x341e
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x3588
jmp 0x3421
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x20c0
leaq 0x88(%rsp), %rdi
callq 0x20c0
leaq 0xa8(%rsp), %rdi
callq 0x20c0
leaq 0xc8(%rsp), %rdi
callq 0x20c0
leaq 0xe8(%rsp), %rdi
callq 0x20c0
leaq 0x108(%rsp), %rdi
callq 0x20c0
leaq 0x128(%rsp), %rdi
callq 0x20c0
leaq 0x148(%rsp), %rdi
callq 0x20c0
movq %rbx, %rdi
callq 0x2350