// File: /workspace/github_c_makefile_star2_O0/info-telecom-strasbourg[P]code-generator/src/parse_args.cpp
// Function: parse_args(int, char**)
void parse_args (int argc, char ** argv) {
	int c = 0;
	int exit_code;

	if (argc == 1) {
		fprintf(stderr,"\033[1;31merror\033[0m: Missing arguments.\n");
		case_h (EXIT_FAILURE);
	}

 	while ((c = getopt (argc, argv, "hcdmt:a:")) != -1) {

		switch (c) {
		case -1:
		case 0:
	  		break;

		case 'h':
	  		case_h (EXIT_SUCCESS);
			break;

		case 'a':
			cout << s_execute (exit_code, CODEGEN_DIR_PARSING_BIN_PATH,
				"codegen_setup");	
			CHECK_CODE (exit_code);
			flag_a (optarg);
			break;

		case 'm':
			cout << s_execute (exit_code, CODEGEN_DIR_PARSING_BIN_PATH,
				"codegen_setup");	
			CHECK_CODE (exit_code);
			flag_m ();
			break;

		case 't':
			flag_t (optarg);
			break;

		case 'c':
			flag_c ();
			break;

		case 'd':
			flag_d ();
			break;

		default:
	  		fprintf (stderr, "Unknown option character `%c'.\n", c);
	  		case_h (EXIT_FAILURE);
		}
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movl %edi, -0x4(%rbp)
movq %rsi, -0x10(%rbp)
movl $0x0, -0x14(%rbp)
cmpl $0x1, -0x4(%rbp)
jne 0x7b71
movq 0x647a(%rip), %rax      # 0xdfd0
movq (%rax), %rdi
leaq 0x2cc5(%rip), %rsi      # 0xa825
movb $0x0, %al
callq 0x33e0
movl $0x1, %edi
callq 0x7b10
jmp 0x7b73
movl -0x4(%rbp), %edi
movq -0x10(%rbp), %rsi
leaq 0x2cca(%rip), %rdx      # 0xa84b
callq 0x3060
movl %eax, -0x14(%rbp)
cmpl $-0x1, %eax
je 0x7d2e
movl -0x14(%rbp), %eax
movl %eax, -0x6c(%rbp)
incl %eax
subl $0x2, %eax
jb 0x7bf0
jmp 0x7ba1
movl -0x6c(%rbp), %eax
subl $0x61, %eax
je 0x7c01
jmp 0x7bab
movl -0x6c(%rbp), %eax
subl $0x63, %eax
je 0x7cf6
jmp 0x7bb9
movl -0x6c(%rbp), %eax
subl $0x64, %eax
je 0x7cfd
jmp 0x7bc7
movl -0x6c(%rbp), %eax
subl $0x68, %eax
je 0x7bf5
jmp 0x7bd1
movl -0x6c(%rbp), %eax
subl $0x6d, %eax
je 0x7c7b
jmp 0x7bdf
movl -0x6c(%rbp), %eax
subl $0x74, %eax
je 0x7ce5
jmp 0x7d04
jmp 0x7d29
xorl %edi, %edi
callq 0x7b10
jmp 0x7d29
leaq 0x2c4c(%rip), %rdx      # 0xa854
leaq 0x2c69(%rip), %rcx      # 0xa878
leaq -0x38(%rbp), %rdi
movq %rdi, -0x78(%rbp)
leaq -0x18(%rbp), %rsi
callq 0x8850
movq -0x78(%rbp), %rsi
movq 0x639d(%rip), %rdi      # 0xdfc8
callq 0x3200
jmp 0x7c32
leaq -0x38(%rbp), %rdi
callq 0x3140
cmpl $0x1, -0x18(%rbp)
jne 0x7c65
movl $0x1, %edi
callq 0x3310
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x3140
jmp 0x7d37
jmp 0x7c67
movq 0x634a(%rip), %rax      # 0xdfb8
movq (%rax), %rdi
callq 0x6cd0
jmp 0x7d29
leaq 0x2bd2(%rip), %rdx      # 0xa854
leaq 0x2bef(%rip), %rcx      # 0xa878
leaq -0x68(%rbp), %rdi
movq %rdi, -0x80(%rbp)
leaq -0x18(%rbp), %rsi
callq 0x8850
movq -0x80(%rbp), %rsi
movq 0x6323(%rip), %rdi      # 0xdfc8
callq 0x3200
jmp 0x7cac
leaq -0x68(%rbp), %rdi
callq 0x3140
cmpl $0x1, -0x18(%rbp)
jne 0x7cdc
movl $0x1, %edi
callq 0x3310
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x3140
jmp 0x7d37
jmp 0x7cde
callq 0x4400
jmp 0x7d29
movq 0x62cc(%rip), %rax      # 0xdfb8
movq (%rax), %rdi
callq 0x6600
jmp 0x7d29
callq 0x76e0
jmp 0x7d29
callq 0x7870
jmp 0x7d29
movq 0x62c5(%rip), %rax      # 0xdfd0
movq (%rax), %rdi
movl -0x14(%rbp), %edx
leaq 0x2b6e(%rip), %rsi      # 0xa886
movb $0x0, %al
callq 0x33e0
movl $0x1, %edi
callq 0x7b10
jmp 0x7b73
addq $0x80, %rsp
popq %rbp
retq
movq -0x40(%rbp), %rdi
callq 0x3490