// File: /workspace/github_cpp_makefile_star2_O2/akinanop[P]mvl-solver/src/Global.cc
// Function: PrintHelp()
void PrintHelp()
{
	//local variable
	int option = 0;
	do
	{
		//Print Menu
		cout<<"**** Menu Options ****"<<endl;
		cout<<" (1) Generate Benchmark Problems "<<endl;
		cout<<" (2) Finite Domain Solver (Chronological Backtracking) "<<endl;
		cout<<" (3) Finite Domain Solver (Non Chronological Backtracking) "<<endl;
		cout<<" (4) Convert Boolean to Finite "<<endl;
		cout<<" (5) Convert Finite to Boolean : Linear Encoding"<<endl;
		cout<<" (6) Convert Finite to Boolean : Quadratic Encoding"<<endl;
		cout<<" (0) Quit"<<endl;
		cout<<endl;
		cout<<" Enter Choice now : ";
		cin>>option;
		cout<<endl;

		//Start Printing messages based on option
		switch(option)
		{
		case 0:
		{
			cout<<"    Goodbye!!!     "<<endl;
			exit(1);
			break;
		}
		case 1:
		{
			cout<<"**** Generating Benchmark Problem Help ****"<<endl;
			cout<<"**** Use the following format to run the program ****"<<endl;
			cout<<"% exe -genben -var <int> -clause <int> -clausesize <int> -sat <1/0>"<<endl;
			cout<<"      -domain <int> -drand <1/0> -file <string>"<<endl<<endl;
			cout<<"where : "<<endl;
			cout<<"  exe             : * name of executable"<<endl;
			cout<<"  -genben         : * option stating create benchmark problem"<<endl;
			cout<<"  -var            : * number of variables in benchmark problem"<<endl;
			cout<<"  -clause         : * number of clauses in benchmark problem"<<endl;
			cout<<"  -clausesize     :   number of atoms in each clause, [DEFAULT : 3]"<<endl;
			cout<<"  -sat            :   states whether this benchmark problem is satisfiable or not"<<endl;
			cout<<"                      [possible value : 1/0] [default : 1/true]"<<endl;
			cout<<"  -domain         :   states the domain size of each variables, [DEFAULT : 10]"<<endl;
			cout<<"  -drand          :   states whether to assign domain size of each variable randomly"<<endl;
			cout<<"                      [possible value : 1/0] [DEFAULT : 0/false]"<<endl;
			cout<<"  -bool           :   states whether the file is in boolean cnf or modified cnf"<<endl;
			cout<<"  -file           : * name of the output file"<<endl;
			cout<<endl;
			cout<<" * - required fields"<<endl<<endl;
			break;
		}

		case 2:
		{
			cout<<"**** Finite Domain Solver (Chronological Backtracking) Help ****"<<endl;
			cout<<"**** Use the following format to run the program ****"<<endl;
			cout<<"% exe -solvech -var <int> -clause <int> -file <string> -time <int> "<<endl<<endl;
			cout<<"where : "<<endl;
			cout<<"  exe             : * name of executable"<<endl;
			cout<<"  -solvech        : * option stating to solve the finite domain problem"<<endl;
			cout<<"  -var            : * number of variables in benchmark problem"<<endl;
			cout<<"  -clause         : * number of clauses in benchmark problem"<<endl;
			cout<<"  -file           : * name of the output file"<<endl;
			cout<<"  -time           : amount of time allowed for solver to run"<<endl;
			cout<<endl;
			cout<<" * - required fields"<<endl<<endl;
			break;
		}

		case 3:
		{
			cout<<"**** Finite Domain Solver (NonChronological Backtracking) Help ****"<<endl;
			cout<<"**** Use the following format to run the program ****"<<endl;
			cout<<"% exe -solvenc -var <int> -clause <int> -file <string> -time <int> "<<endl<<endl;
			cout<<"where : "<<endl;
			cout<<"  exe             : * name of executable"<<endl;
			cout<<"  -solvenc        : * option stating to solve the finite domain problem"<<endl;
			cout<<"  -var            : * number of variables in benchmark problem"<<endl;
			cout<<"  -clause         : * number of clauses in benchmark problem"<<endl;
			cout<<"  -file           : * name of the output file"<<endl;
			cout<<"  -time           : amount of time allowed for solver to run"<<endl;
			cout<<endl;
			cout<<" * - required fields"<<endl<<endl;
			break;
		}

		case 4:
		{
			cout<<"**** Convert Boolean to Finite Domain ****"<<endl;
			cout<<"**** Use the following format to run the program ****"<<endl;
			cout<<"% exe -b2f -file <string> -model <string>"<<endl;
			cout<<"where : "<<endl;
			cout<<" exe             : * name of executable"<<endl;
			cout<<" -b2f            : * option stating to convert file "<<endl;
			cout<<" -file           : * name of the boolean file "<<endl;
			cout<<" -model          : * name of the finite file "<<endl;
			cout<<endl;
			cout<<" * - required fields"<<endl<<endl;
			break;
		}

		case 5:
		{
			cout<<"**** Convert Finite Domain to Boolean : Linear Encoding****"<<endl;
			cout<<"**** Use the following format to run the program ****"<<endl;
			cout<<"% exe -linenc -file <string> -model <string>"<<endl;
			cout<<"where : "<<endl;
			cout<<" exe             : * name of executable"<<endl;
			cout<<" -linenc         : * option stating to convert file "<<endl;
			cout<<" -file           : * name of the boolean file "<<endl;
			cout<<" -model          : * name of the finite file "<<endl;
			cout<<endl;
			cout<<" * - required fields"<<endl<<endl;
			break;
		}

		case 6:
		{
			cout<<"**** Convert Finite Domain to Boolean : Quadratic Encoding****"<<endl;
			cout<<"**** Use the following format to run the program ****"<<endl;
			cout<<"% exe -quadenc -file <string> -model <string>"<<endl;
			cout<<"where : "<<endl;
			cout<<" exe             : * name of executable"<<endl;
			cout<<" -quadenc        : * option stating to convert file "<<endl;
			cout<<" -file           : * name of the boolean file "<<endl;
			cout<<" -model          : * name of the finite file "<<endl;
			cout<<endl;
			cout<<" * - required fields"<<endl<<endl;
			break;
		}

		default:
		{
			break;
		}
		}
		getchar();
		getchar();
	}while(option != 0);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
leaq 0x4(%rsp), %rax
andl $0x0, (%rax)
movq 0xc67a(%rip), %r14      # 0xefd0
movq %r14, %rdi
leaq 0x7784(%rip), %rsi      # 0xa0e4
callq 0x2210
movq %rax, %rdi
callq 0x2140
movq %r14, %rdi
leaq 0x7784(%rip), %rsi      # 0xa0fb
callq 0x2210
movq %rax, %rdi
callq 0x2140
movq %r14, %rdi
leaq 0x778f(%rip), %rsi      # 0xa11d
callq 0x2210
movq %rax, %rdi
callq 0x2140
movq %r14, %rdi
leaq 0x77b0(%rip), %rsi      # 0xa155
callq 0x2210
movq %rax, %rdi
callq 0x2140
movq %r14, %rdi
leaq 0x77d5(%rip), %rsi      # 0xa191
callq 0x2210
movq %rax, %rdi
callq 0x2140
movq %r14, %rdi
leaq 0x77de(%rip), %rsi      # 0xa1b1
callq 0x2210
movq %rax, %rdi
callq 0x2140
movq %r14, %rdi
leaq 0x77f8(%rip), %rsi      # 0xa1e2
callq 0x2210
movq %rax, %rdi
callq 0x2140
movq %r14, %rdi
leaq 0x7815(%rip), %rsi      # 0xa216
callq 0x2210
movq %rax, %rdi
callq 0x2140
movq %r14, %rdi
callq 0x2140
movq %r14, %rdi
leaq 0x7800(%rip), %rsi      # 0xa220
callq 0x2210
movq 0xc5b4(%rip), %rdi      # 0xefe0
leaq 0x4(%rsp), %rsi
callq 0x2180
movq %r14, %rdi
callq 0x2140
movl 0x4(%rsp), %eax
cmpq $0x6, %rax
ja 0x2dc6
leaq 0x7675(%rip), %rcx      # 0xa0c8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %r14, %rdi
leaq 0x77e3(%rip), %rsi      # 0xa249
callq 0x2210
movq %rax, %rdi
callq 0x2140
movq %r14, %rdi
leaq 0x77f8(%rip), %rsi      # 0xa275
callq 0x2210
movq %rax, %rdi
callq 0x2140
movq %r14, %rdi
leaq 0x7817(%rip), %rsi      # 0xa2ab
callq 0x2210
movq %rax, %rdi
callq 0x2140
movq %r14, %rdi
leaq 0x7844(%rip), %rsi      # 0xa2ef
callq 0x2210
movq %rax, %rdi
callq 0x2140
movq %rax, %rdi
callq 0x2140
movq %r14, %rdi
leaq 0x7855(%rip), %rsi      # 0xa31f
callq 0x2210
movq %rax, %rdi
callq 0x2140
movq %r14, %rdi
leaq 0x7847(%rip), %rsi      # 0xa328
callq 0x2210
movq %rax, %rdi
callq 0x2140
movq %r14, %rdi
leaq 0x7859(%rip), %rsi      # 0xa351
callq 0x2210
movq %rax, %rdi
callq 0x2140
movq %r14, %rdi
leaq 0x7880(%rip), %rsi      # 0xa38f
callq 0x2210
movq %rax, %rdi
callq 0x2140
movq %r14, %rdi
leaq 0x78a8(%rip), %rsi      # 0xa3ce
callq 0x2210
movq %rax, %rdi
callq 0x2140
movq %r14, %rdi
leaq 0x78ce(%rip), %rsi      # 0xa40b
callq 0x2210
leaq 0x7906(%rip), %rbp      # 0xa44f
leaq 0x7951(%rip), %r13      # 0xa4a1
leaq 0x798a(%rip), %rbx      # 0xa4e1
leaq 0x79d2(%rip), %r12      # 0xa530
leaq 0x7a20(%rip), %r15      # 0xa585
leaq 0x7a5a(%rip), %rcx      # 0xa5c6
movq %rcx, 0x8(%rsp)
leaq 0x7a9e(%rip), %rcx      # 0xa616
jmp 0x2d09
movq %r14, %rdi
leaq 0x7d93(%rip), %rsi      # 0xa91a
callq 0x2210
leaq 0x76e2(%rip), %rbp      # 0xa275
leaq 0x7dbc(%rip), %r13      # 0xa956
leaq 0x777e(%rip), %rbx      # 0xa31f
leaq 0x7781(%rip), %r12      # 0xa329
leaq 0x7dd4(%rip), %r15      # 0xa983
jmp 0x2cf6
movq %r14, %rdi
leaq 0x7c75(%rip), %rsi      # 0xa833
callq 0x2210
leaq 0x76ab(%rip), %rbp      # 0xa275
leaq 0x7c8d(%rip), %r13      # 0xa85e
leaq 0x7747(%rip), %rbx      # 0xa31f
leaq 0x774a(%rip), %r12      # 0xa329
leaq 0x7ca2(%rip), %r15      # 0xa888
jmp 0x2cf6
movq %r14, %rdi
leaq 0x7b6e(%rip), %rsi      # 0xa763
callq 0x2210
movq %rax, %rdi
callq 0x2140
movq %r14, %rdi
leaq 0x7669(%rip), %rsi      # 0xa275
callq 0x2210
movq %rax, %rdi
callq 0x2140
movq %r14, %rdi
leaq 0x7b84(%rip), %rsi      # 0xa7a7
callq 0x2210
movq %rax, %rdi
callq 0x2140
leaq 0x76e8(%rip), %rbp      # 0xa31f
leaq 0x76ea(%rip), %r13      # 0xa328
leaq 0x7ba6(%rip), %rbx      # 0xa7eb
jmp 0x2ca1
movq %r14, %rdi
leaq 0x7a08(%rip), %rsi      # 0xa659
callq 0x2210
movq %rax, %rdi
callq 0x2140
movq %r14, %rdi
leaq 0x760d(%rip), %rsi      # 0xa275
callq 0x2210
movq %rax, %rdi
callq 0x2140
movq %r14, %rdi
leaq 0x7a1b(%rip), %rsi      # 0xa69a
callq 0x2210
movq %rax, %rdi
callq 0x2140
leaq 0x768c(%rip), %rbp      # 0xa31f
leaq 0x768e(%rip), %r13      # 0xa328
leaq 0x7a3d(%rip), %rbx      # 0xa6de
leaq 0x76e7(%rip), %r12      # 0xa38f
leaq 0x771f(%rip), %r15      # 0xa3ce
leaq 0x7960(%rip), %rcx      # 0xa616
movq %rcx, 0x8(%rsp)
leaq 0x7a64(%rip), %rcx      # 0xa726
jmp 0x2d09
movq %r14, %rdi
leaq 0x7cea(%rip), %rsi      # 0xa9b8
callq 0x2210
leaq 0x759b(%rip), %rbp      # 0xa275
leaq 0x7d16(%rip), %r13      # 0xa9f7
leaq 0x7637(%rip), %rbx      # 0xa31f
leaq 0x763a(%rip), %r12      # 0xa329
leaq 0x7d2f(%rip), %r15      # 0xaa25
leaq 0x7bc0(%rip), %rcx      # 0xa8bd
movq %rcx, 0x8(%rsp)
leaq 0x7be3(%rip), %rcx      # 0xa8ec
movq %rcx, 0x10(%rsp)
movq %rax, %rdi
callq 0x2140
movq %r14, %rdi
movq %rbp, %rsi
callq 0x2210
movq %rax, %rdi
callq 0x2140
movq %r14, %rdi
movq %r13, %rsi
callq 0x2210
movq %rax, %rdi
callq 0x2140
movq %r14, %rdi
movq %rbx, %rsi
callq 0x2210
movq %rax, %rdi
callq 0x2140
movq %r14, %rdi
movq %r12, %rsi
callq 0x2210
movq %rax, %rdi
callq 0x2140
movq %r14, %rdi
movq %r15, %rsi
callq 0x2210
movq %rax, %rdi
callq 0x2140
movq %r14, %rdi
movq 0x8(%rsp), %rsi
callq 0x2210
movq %rax, %rdi
callq 0x2140
movq %r14, %rdi
movq 0x10(%rsp), %rsi
callq 0x2210
movq %rax, %rdi
callq 0x2140
movq %r14, %rdi
callq 0x2140
movq %r14, %rdi
leaq 0x7893(%rip), %rsi      # 0xa644
callq 0x2210
movq %rax, %rdi
callq 0x2140
movq %rax, %rdi
callq 0x2140
callq 0x22b0
callq 0x22b0
cmpl $0x0, 0x4(%rsp)
jne 0x2956
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0xc1df(%rip), %rdi      # 0xefd0
leaq 0x743d(%rip), %rsi      # 0xa235
callq 0x2210
movq %rax, %rdi
callq 0x2140
pushq $0x1
popq %rdi
callq 0x2280