// File: /workspace/github_cpp_makefile_star2_O2/rvthak[P]Makefile-Maker/input.cpp
// Function: HandleParameter(int&, int&, char const**, Makefile&)
int HandleParameter(int &count, int &argc, char const **argv, Makefile &mk){
	string param=argv[count];

	if(param.at(0)!='-'){
		cout << " \n(!) User Input Error: illegal argument. Exiting..." << endl;
		printInputFormat();
		return 1;
	}

	if(!param.compare(HELP_A)){
		printInputFormat();
		return 1;
	}
	else if(!param.compare(VERS_A)){
		printVersion();
		return 1;
	}
	else if(!param.compare(NAME_A)){
		if( count == argc || argv[count+1][0]=='-' ){
			cout << " \n(!) User Input Error: name missing. Exiting..." << endl;
			printInputFormat();
			return 1;
		}
		string tmp=argv[count+1];
		mk.setName(tmp);
		count+=2;
	}
	else if(!param.compare(FRMT_A)){
		if( count == argc || argv[count+1][0]=='-'){
			cout << " \n(!) User Input Error: source format missing. Exiting..." << endl;
			printInputFormat();
			return 1;
		}
		string tmp=argv[count+1];
		mk.setFormat(tmp);
		count+=2;
	}
	else if(!param.compare(HEAD_A)){
		if( count == argc || argv[count+1][0]=='-'){
			cout << " \n(!) User Input Error: header format missing. Exiting..." << endl;
			printInputFormat();
			return 1;
		}
		string tmp=argv[count+1];
		mk.setHeader(tmp);
		count+=2;
	}
	else if(!param.compare(COMP_A)){
		if( count == argc || argv[count+1][0]=='-'){
			cout << " \n(!) User Input Error: compiler missing. Exiting..." << endl;
			printInputFormat();
			return 1;
		}
		string tmp=argv[count+1];
		mk.setCompiler(tmp);
		count+=2;
	}
	else if(!param.compare(DEBG_A)){
		if(mk.getDebug()){
			mk.setDebug(0);
		}
		else{
			mk.setDebug(1);
		}
		count++;
	}
	else if(!param.compare(VALG_A)){
		if(mk.getValgrind()){
			mk.setValgrind(0);
		}
		else{
			mk.setValgrind(1);
		}
		count++;
	}

	else if(!param.compare(INST_A)){
		if(mk.getInstall()){
			mk.setInstall(0);
		}
		else{
			mk.setInstall(1);
		}
		count++;
	}

	else if(!param.compare(PARM_A)){
		if(mk.getCompParam()){
			mk.setCompParam(0);
		}
		else{
			mk.setCompParam(1);
		}
		count++;
	}
	else if(!param.compare(EXEC_A)){
		if(mk.getExecParam()){
			mk.setExecParam(0);
		}
		else{
			mk.setExecParam(1);
		}
		count++;
	}
	else if(!param.compare(ORGN_A)){
		if(mk.getOrganize()){
			mk.setOrganize(0);
		}
		else{
			mk.setOrganize(1);
		}
		count++;
	}
	else{
		cout << " \n(!) User Input Error: given argument does not exist. Exiting..." << endl;
		printInputFormat();
		return 1;
	}

	return 0;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x50, %rsp
movq %rcx, %r14
movq %rdx, %r15
movq %rsi, %r12
movq %rdi, %rbx
movslq (%rdi), %rax
movq (%rdx,%rax,8), %rsi
leaq 0x30(%rsp), %r13
leaq 0x10(%rsp), %rdx
movq %r13, %rdi
callq 0x30c2
movq %r13, %rdi
xorl %esi, %esi
callq 0x2280
cmpb $0x2d, (%rax)
jne 0x26d1
leaq 0x1fab(%rip), %rsi      # 0x453a
leaq 0x30(%rsp), %rdi
callq 0x2090
testl %eax, %eax
je 0x26ec
leaq 0x1ac7(%rip), %rsi      # 0x406f
leaq 0x30(%rsp), %rdi
callq 0x2090
testl %eax, %eax
je 0x270e
leaq 0x1ab8(%rip), %rsi      # 0x4079
leaq 0x30(%rsp), %rdi
callq 0x2090
testl %eax, %eax
je 0x2715
leaq 0x1ad3(%rip), %rsi      # 0x40ad
leaq 0x30(%rsp), %rdi
callq 0x2090
testl %eax, %eax
je 0x2749
leaq 0x1af7(%rip), %rsi      # 0x40ea
leaq 0x30(%rsp), %rdi
callq 0x2090
testl %eax, %eax
je 0x2780
leaq 0x1b1b(%rip), %rsi      # 0x4127
leaq 0x30(%rsp), %rdi
callq 0x2090
testl %eax, %eax
je 0x27d8
leaq 0x1b3a(%rip), %rsi      # 0x415f
leaq 0x30(%rsp), %rdi
callq 0x2090
testl %eax, %eax
je 0x2830
leaq 0x1b25(%rip), %rsi      # 0x4163
leaq 0x30(%rsp), %rdi
callq 0x2090
testl %eax, %eax
je 0x286f
leaq 0x1b10(%rip), %rsi      # 0x4167
leaq 0x30(%rsp), %rdi
callq 0x2090
testl %eax, %eax
je 0x28ce
leaq 0x1afa(%rip), %rsi      # 0x416a
leaq 0x30(%rsp), %rdi
callq 0x2090
testl %eax, %eax
je 0x28ff
leaq 0x1ae4(%rip), %rsi      # 0x416d
leaq 0x30(%rsp), %rdi
callq 0x2090
testl %eax, %eax
je 0x292a
leaq 0x1ace(%rip), %rsi      # 0x4170
leaq 0x30(%rsp), %rdi
callq 0x2090
testl %eax, %eax
je 0x2955
movq 0x4915(%rip), %rdi      # 0x6fd0
leaq 0x1ab3(%rip), %rsi      # 0x4175
callq 0x2160
movq %rax, %rdi
callq 0x20c0
jmp 0x26ec
movq 0x48f8(%rip), %rdi      # 0x6fd0
leaq 0x195b(%rip), %rsi      # 0x403a
callq 0x2160
movq %rax, %rdi
callq 0x20c0
callq 0x29de
pushq $0x1
popq %rbx
leaq 0x30(%rsp), %rdi
callq 0x20b0
movl %ebx, %eax
addq $0x50, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
callq 0x2a88
jmp 0x26f1
movslq (%rbx), %rax
cmpl (%r12), %eax
je 0x272c
movq 0x8(%r15,%rax,8), %rsi
cmpb $0x2d, (%rsi)
jne 0x27b7
movq 0x489d(%rip), %rdi      # 0x6fd0
leaq 0x1942(%rip), %rsi      # 0x407c
callq 0x2160
movq %rax, %rdi
callq 0x20c0
jmp 0x26ec
movslq (%rbx), %rax
cmpl (%r12), %eax
je 0x2760
movq 0x8(%r15,%rax,8), %rsi
cmpb $0x2d, (%rsi)
jne 0x280f
movq 0x4869(%rip), %rdi      # 0x6fd0
leaq 0x1942(%rip), %rsi      # 0x40b0
callq 0x2160
movq %rax, %rdi
callq 0x20c0
jmp 0x26ec
movslq (%rbx), %rax
cmpl (%r12), %eax
je 0x2797
movq 0x8(%r15,%rax,8), %rsi
cmpb $0x2d, (%rsi)
jne 0x2851
movq 0x4832(%rip), %rdi      # 0x6fd0
leaq 0x1948(%rip), %rsi      # 0x40ed
callq 0x2160
movq %rax, %rdi
callq 0x20c0
jmp 0x26ec
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x30c2
leaq 0x10(%rsp), %rsi
movq %r14, %rdi
callq 0x3664
jmp 0x28bc
movslq (%rbx), %rax
cmpl (%r12), %eax
je 0x27ef
movq 0x8(%r15,%rax,8), %rsi
cmpb $0x2d, (%rsi)
jne 0x28a0
movq 0x47da(%rip), %rdi      # 0x6fd0
leaq 0x192d(%rip), %rsi      # 0x412a
callq 0x2160
movq %rax, %rdi
callq 0x20c0
jmp 0x26ec
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x30c2
leaq 0x10(%rsp), %rsi
movq %r14, %rdi
callq 0x3674
jmp 0x28bc
movq %r14, %rdi
callq 0x35f2
leaq 0x10(%rsp), %rsi
testb %al, %al
je 0x2890
movb $0x0, (%rsi)
movq %r14, %rdi
callq 0x3688
jmp 0x298b
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x30c2
leaq 0x10(%rsp), %rsi
movq %r14, %rdi
callq 0x367e
jmp 0x28bc
movq %r14, %rdi
callq 0x35fa
leaq 0x10(%rsp), %rsi
testb %al, %al
je 0x28ef
movb $0x0, (%rsi)
movq %r14, %rdi
callq 0x3692
jmp 0x298b
movb $0x1, (%rsi)
movq %r14, %rdi
callq 0x3688
jmp 0x298b
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x30c2
leaq 0x10(%rsp), %rsi
movq %r14, %rdi
callq 0x366a
addl $0x2, (%rbx)
leaq 0x10(%rsp), %rdi
callq 0x20b0
jmp 0x298d
movq %r14, %rdi
callq 0x3602
leaq 0x10(%rsp), %rsi
testb %al, %al
je 0x291d
movb $0x0, (%rsi)
movq %r14, %rdi
callq 0x369c
jmp 0x298b
movb $0x1, (%rsi)
movq %r14, %rdi
callq 0x3692
jmp 0x298b
movq %r14, %rdi
callq 0x360a
leaq 0x10(%rsp), %rsi
testb %al, %al
je 0x2948
movb $0x0, (%rsi)
movq %r14, %rdi
callq 0x36a6
jmp 0x298b
movb $0x1, (%rsi)
movq %r14, %rdi
callq 0x369c
jmp 0x298b
movq %r14, %rdi
callq 0x3612
leaq 0x10(%rsp), %rsi
testb %al, %al
je 0x2973
movb $0x0, (%rsi)
movq %r14, %rdi
callq 0x36b0
jmp 0x298b
movb $0x1, (%rsi)
movq %r14, %rdi
callq 0x36a6
jmp 0x298b
movq %r14, %rdi
callq 0x361a
leaq 0x10(%rsp), %rsi
testb %al, %al
je 0x2980
movb $0x0, (%rsi)
movq %r14, %rdi
callq 0x36ba
jmp 0x298b
movb $0x1, (%rsi)
movq %r14, %rdi
callq 0x36b0
jmp 0x298b
movb $0x1, (%rsi)
movq %r14, %rdi
callq 0x36ba
incl (%rbx)
xorl %ebx, %ebx
jmp 0x26f4
jmp 0x29c9
jmp 0x29c9
jmp 0x29c9
jmp 0x29c9
jmp 0x29c9
jmp 0x29c9
jmp 0x29c9
jmp 0x29c9
jmp 0x29c9
jmp 0x29c9
jmp 0x29b8
jmp 0x29c9
jmp 0x29c9
jmp 0x29c9
jmp 0x29b8
jmp 0x29c9
jmp 0x29b8
jmp 0x29c9
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x20b0
jmp 0x29cc
jmp 0x29c9
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x20b0
movq %rbx, %rdi
callq 0x2240