// File: akinanop[P]mvl-solver/src/Global.cc
// Function: ParseCommandLine(CommandLine*, int, char**)
void ParseCommandLine(CommandLine * cline, int argc, char ** argv)
{
	//local variables
	int current = 1;

	//Default Initialization
	cline->NUM_VAR = -1;
	cline->NUM_CLAUSE = -1;
	cline->CLAUSE_SIZE = 3;
	cline->SAT_UNSAT = true;
	cline->DOMAIN_SIZE = 10;
	cline->DRAND = false;
	cline->BOOL_FINITE = false;
	cline->FILE = NULL;
	cline->MODEL_FILE = NULL;
	cline->TIME = 3600000; //1000 hours = 1000 * 60mins * 60secs
	cline -> RESTARTS = 0;
	cline->MODEL = true;
	cline -> WATCH = false;
	cline -> heuristic = Heuristic::BK;
	cline -> LOG = false;


	//Check if enough arguments supplied
	if(argc < 2)
	{
		PrintHelp();
	}

	else
	{
		//If Menu/Help option selected
		if(!strcmp(argv[1], "-help"))
		{
			PrintHelp();
		}

		//If option is for generating benchmark problems
		else if(!strcmp(argv[1],"-genben"))
		{
			for(current = 2; current < argc; current++)
			{
				if(!strcmp(argv[current], "-var"))
					cline->NUM_VAR = atoi(argv[++current]);
				else if(!strcmp(argv[current], "-clause"))
					cline->NUM_CLAUSE = atoi(argv[++current]);
				else if(!strcmp(argv[current], "-clausesize"))
					cline->CLAUSE_SIZE = atoi(argv[++current]);
				else if(!strcmp(argv[current], "-sat"))
					cline->SAT_UNSAT = atoi(argv[++current]);
				else if(!strcmp(argv[current], "-domain"))
					cline->DOMAIN_SIZE = atoi(argv[++current]);
				else if(!strcmp(argv[current], "-drand"))
					cline->DRAND = atoi(argv[++current]);
				else if(!strcmp(argv[current], "-bool"))
					cline->BOOL_FINITE = atoi(argv[++current]);
				else if(!strcmp(argv[current], "-file"))
					cline->FILE = argv[++current];
				else
					;
			}
		}

		//If option is for converting boolean to finite domain
		else if(!strcmp(argv[1], "-b2f"))
		{
			for(current = 2; current < argc; current++)
			{
				if(!strcmp(argv[current], "-file"))
					cline->FILE = argv[++current];
				else if(!strcmp(argv[current], "-model"))
					cline->MODEL_FILE = argv[++current];
				else
					;
			}
		}

		//If option if for converting finite domain to boolean : Linear Encoding
		else if(!strcmp(argv[1], "-linenc"))
		{
			for(current = 2; current < argc; current++)
			{
				if(!strcmp(argv[current], "-file"))
					cline->FILE = argv[++current];
				else if(!strcmp(argv[current], "-model"))
					cline->MODEL_FILE = argv[++current];
				else
					;
			}
		}

		//If option if for converting finite domain to boolean : Quadratic Encoding
		else if(!strcmp(argv[1], "-quadenc"))
		{
			for(current = 2; current < argc; current++)
			{
				if(!strcmp(argv[current], "-file"))
					cline->FILE = argv[++current];
				else if(!strcmp(argv[current], "-model"))
					cline->MODEL_FILE = argv[++current];
				else
					;
			}
		}

		//If option is for solving a domain problem : Chronological Backtracking
		else if(!strcmp(argv[1],"-solvech"))
		{
			for(current = 2; current < argc; current++)
			{
				if(!strcmp(argv[current], "-var"))
					cline->NUM_VAR = atoi(argv[++current]);
				else if(!strcmp(argv[current], "-clause"))
					cline->NUM_CLAUSE = atoi(argv[++current]);
				else if(!strcmp(argv[current], "-clausesize"))
					cline->CLAUSE_SIZE = atoi(argv[++current]);
				else if(!strcmp(argv[current], "-file"))
					cline->FILE = argv[++current];
				else if(!strcmp(argv[current], "-model"))
					cline->MODEL_FILE = argv[++current];
				else if(!strcmp(argv[current], "-time"))
					cline->TIME = atoi(argv[++current]);
				else if(!strcmp(argv[current], "-lazy"))
					cline -> heuristic = Heuristic::lazy;
				else if(!strcmp(argv[current], "-verbose"))
					cline->LOG = true;
				else
					;
			}

		}

		//If option is for solving a domain problem : Non Chronological Backtracking
		else if(!strcmp(argv[1],"-solvenc"))
		{
			for(current = 2; current < argc; current++)
			{
				if (!strcmp(argv[current], "-restart"))
					cline->RESTARTS = atoi(argv[++current]);
				else if(!strcmp(argv[current], "-verbose"))
					cline->LOG = true;
				else if(!strcmp(argv[current], "-wl")) {
					cline -> WATCH = true;
					if (cline->heuristic == Heuristic::BK)
						cline->heuristic = Heuristic::VSIDS;
				}
				else if(!strcmp(argv[current], "-vsids"))
					cline -> heuristic = Heuristic::VSIDS;
				else if(!strcmp(argv[current], "-vsids_pos"))
					cline -> heuristic = Heuristic::VSIDS_pos;
				else if(!strcmp(argv[current], "-lazy"))
					cline -> heuristic = Heuristic::lazy;
				else if(!strcmp(argv[current], "-model"))
					cline->MODEL = true;
				else if(!strcmp(argv[current], "-var"))
					cline->NUM_VAR = atoi(argv[++current]);
				else if(!strcmp(argv[current], "-clause"))
					cline->NUM_CLAUSE = atoi(argv[++current]);
				else if(!strcmp(argv[current], "-clausesize"))
					cline->CLAUSE_SIZE = atoi(argv[++current]);
				else if(!strcmp(argv[current], "-file"))
					cline->FILE = argv[++current];
				else if(!strcmp(argv[current], "-time"))
					cline->TIME = atoi(argv[++current]);
				else
					;
			}

		}

		else
		{
			//nothing
			;
		}
	}
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movl %esi, 0x1c(%rsp)
movq %rdx, 0x10(%rsp)
movl $0x1, 0xc(%rsp)
movq 0x20(%rsp), %rax
movl $0xffffffff, 0x4(%rax)  # imm = 0xFFFFFFFF
movq 0x20(%rsp), %rax
movl $0xffffffff, 0x8(%rax)  # imm = 0xFFFFFFFF
movq 0x20(%rsp), %rax
movl $0x3, 0xc(%rax)
movq 0x20(%rsp), %rax
movb $0x1, 0x10(%rax)
movq 0x20(%rsp), %rax
movl $0xa, 0x14(%rax)
movq 0x20(%rsp), %rax
movb $0x0, 0x18(%rax)
movq 0x20(%rsp), %rax
movb $0x0, 0x19(%rax)
movq 0x20(%rsp), %rax
movq $0x0, 0x20(%rax)
movq 0x20(%rsp), %rax
movq $0x0, 0x28(%rax)
movq 0x20(%rsp), %rax
movl $0x36ee80, 0x30(%rax)   # imm = 0x36EE80
movq 0x20(%rsp), %rax
movl $0x0, 0x34(%rax)
movq 0x20(%rsp), %rax
movb $0x1, (%rax)
movq 0x20(%rsp), %rax
movb $0x0, 0x1(%rax)
movq 0x20(%rsp), %rax
movl $0x0, 0x38(%rax)
movq 0x20(%rsp), %rax
movb $0x0, 0x2(%rax)
cmpl $0x2, 0x1c(%rsp)
jge 0x3b8e
callq 0x2f00
jmp 0x4685
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
leaq 0x13ebc(%rip), %rsi     # 0x17a5a
callq 0x2350
cmpl $0x0, %eax
jne 0x3bb2
callq 0x2f00
jmp 0x4683
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
leaq 0x134a4(%rip), %rsi     # 0x17066
callq 0x2350
cmpl $0x0, %eax
jne 0x3e66
movl $0x2, 0xc(%rsp)
movl 0xc(%rsp), %eax
cmpl 0x1c(%rsp), %eax
jge 0x3e61
movq 0x10(%rsp), %rax
movslq 0xc(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x13e65(%rip), %rsi     # 0x17a60
callq 0x2350
cmpl $0x0, %eax
jne 0x3c30
movq 0x10(%rsp), %rax
movl 0xc(%rsp), %ecx
addl $0x1, %ecx
movl %ecx, 0xc(%rsp)
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x23a0
movl %eax, %ecx
movq 0x20(%rsp), %rax
movl %ecx, 0x4(%rax)
jmp 0x3e4f
movq 0x10(%rsp), %rax
movslq 0xc(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x13e20(%rip), %rsi     # 0x17a65
callq 0x2350
cmpl $0x0, %eax
jne 0x3c7a
movq 0x10(%rsp), %rax
movl 0xc(%rsp), %ecx
addl $0x1, %ecx
movl %ecx, 0xc(%rsp)
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x23a0
movl %eax, %ecx
movq 0x20(%rsp), %rax
movl %ecx, 0x8(%rax)
jmp 0x3e4d
movq 0x10(%rsp), %rax
movslq 0xc(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x13dde(%rip), %rsi     # 0x17a6d
callq 0x2350
cmpl $0x0, %eax
jne 0x3cc4
movq 0x10(%rsp), %rax
movl 0xc(%rsp), %ecx
addl $0x1, %ecx
movl %ecx, 0xc(%rsp)
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x23a0
movl %eax, %ecx
movq 0x20(%rsp), %rax
movl %ecx, 0xc(%rax)
jmp 0x3e4b
movq 0x10(%rsp), %rax
movslq 0xc(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x13da0(%rip), %rsi     # 0x17a79
callq 0x2350
cmpl $0x0, %eax
jne 0x3d15
movq 0x10(%rsp), %rax
movl 0xc(%rsp), %ecx
addl $0x1, %ecx
movl %ecx, 0xc(%rsp)
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x23a0
cmpl $0x0, %eax
setne %cl
movq 0x20(%rsp), %rax
andb $0x1, %cl
movb %cl, 0x10(%rax)
jmp 0x3e49
movq 0x10(%rsp), %rax
movslq 0xc(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x13d54(%rip), %rsi     # 0x17a7e
callq 0x2350
cmpl $0x0, %eax
jne 0x3d5f
movq 0x10(%rsp), %rax
movl 0xc(%rsp), %ecx
addl $0x1, %ecx
movl %ecx, 0xc(%rsp)
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x23a0
movl %eax, %ecx
movq 0x20(%rsp), %rax
movl %ecx, 0x14(%rax)
jmp 0x3e47
movq 0x10(%rsp), %rax
movslq 0xc(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x13d12(%rip), %rsi     # 0x17a86
callq 0x2350
cmpl $0x0, %eax
jne 0x3db0
movq 0x10(%rsp), %rax
movl 0xc(%rsp), %ecx
addl $0x1, %ecx
movl %ecx, 0xc(%rsp)
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x23a0
cmpl $0x0, %eax
setne %cl
movq 0x20(%rsp), %rax
andb $0x1, %cl
movb %cl, 0x18(%rax)
jmp 0x3e45
movq 0x10(%rsp), %rax
movslq 0xc(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x13cc8(%rip), %rsi     # 0x17a8d
callq 0x2350
cmpl $0x0, %eax
jne 0x3dfe
movq 0x10(%rsp), %rax
movl 0xc(%rsp), %ecx
addl $0x1, %ecx
movl %ecx, 0xc(%rsp)
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x23a0
cmpl $0x0, %eax
setne %cl
movq 0x20(%rsp), %rax
andb $0x1, %cl
movb %cl, 0x19(%rax)
jmp 0x3e43
movq 0x10(%rsp), %rax
movslq 0xc(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x13c80(%rip), %rsi     # 0x17a93
callq 0x2350
cmpl $0x0, %eax
jne 0x3e3f
movq 0x10(%rsp), %rax
movl 0xc(%rsp), %ecx
addl $0x1, %ecx
movl %ecx, 0xc(%rsp)
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rcx
movq 0x20(%rsp), %rax
movq %rcx, 0x20(%rax)
jmp 0x3e41
jmp 0x3e41
jmp 0x3e43
jmp 0x3e45
jmp 0x3e47
jmp 0x3e49
jmp 0x3e4b
jmp 0x3e4d
jmp 0x3e4f
jmp 0x3e51
movl 0xc(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xc(%rsp)
jmp 0x3bd8
jmp 0x4681
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
leaq 0x131f8(%rip), %rsi     # 0x1706e
callq 0x2350
cmpl $0x0, %eax
jne 0x3f37
movl $0x2, 0xc(%rsp)
movl 0xc(%rsp), %eax
cmpl 0x1c(%rsp), %eax
jge 0x3f32
movq 0x10(%rsp), %rax
movslq 0xc(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x13be4(%rip), %rsi     # 0x17a93
callq 0x2350
cmpl $0x0, %eax
jne 0x3edb
movq 0x10(%rsp), %rax
movl 0xc(%rsp), %ecx
addl $0x1, %ecx
movl %ecx, 0xc(%rsp)
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rcx
movq 0x20(%rsp), %rax
movq %rcx, 0x20(%rax)
jmp 0x3f20
movq 0x10(%rsp), %rax
movslq 0xc(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x13ba9(%rip), %rsi     # 0x17a99
callq 0x2350
cmpl $0x0, %eax
jne 0x3f1c
movq 0x10(%rsp), %rax
movl 0xc(%rsp), %ecx
addl $0x1, %ecx
movl %ecx, 0xc(%rsp)
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rcx
movq 0x20(%rsp), %rax
movq %rcx, 0x28(%rax)
jmp 0x3f1e
jmp 0x3f1e
jmp 0x3f20
jmp 0x3f22
movl 0xc(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xc(%rsp)
jmp 0x3e8c
jmp 0x467f
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
leaq 0x1312c(%rip), %rsi     # 0x17073
callq 0x2350
cmpl $0x0, %eax
jne 0x4008
movl $0x2, 0xc(%rsp)
movl 0xc(%rsp), %eax
cmpl 0x1c(%rsp), %eax
jge 0x4003
movq 0x10(%rsp), %rax
movslq 0xc(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x13b13(%rip), %rsi     # 0x17a93
callq 0x2350
cmpl $0x0, %eax
jne 0x3fac
movq 0x10(%rsp), %rax
movl 0xc(%rsp), %ecx
addl $0x1, %ecx
movl %ecx, 0xc(%rsp)
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rcx
movq 0x20(%rsp), %rax
movq %rcx, 0x20(%rax)
jmp 0x3ff1
movq 0x10(%rsp), %rax
movslq 0xc(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x13ad8(%rip), %rsi     # 0x17a99
callq 0x2350
cmpl $0x0, %eax
jne 0x3fed
movq 0x10(%rsp), %rax
movl 0xc(%rsp), %ecx
addl $0x1, %ecx
movl %ecx, 0xc(%rsp)
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rcx
movq 0x20(%rsp), %rax
movq %rcx, 0x28(%rax)
jmp 0x3fef
jmp 0x3fef
jmp 0x3ff1
jmp 0x3ff3
movl 0xc(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xc(%rsp)
jmp 0x3f5d
jmp 0x467d
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
leaq 0x13063(%rip), %rsi     # 0x1707b
callq 0x2350
cmpl $0x0, %eax
jne 0x40d9
movl $0x2, 0xc(%rsp)
movl 0xc(%rsp), %eax
cmpl 0x1c(%rsp), %eax
jge 0x40d4
movq 0x10(%rsp), %rax
movslq 0xc(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x13a42(%rip), %rsi     # 0x17a93
callq 0x2350
cmpl $0x0, %eax
jne 0x407d
movq 0x10(%rsp), %rax
movl 0xc(%rsp), %ecx
addl $0x1, %ecx
movl %ecx, 0xc(%rsp)
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rcx
movq 0x20(%rsp), %rax
movq %rcx, 0x20(%rax)
jmp 0x40c2
movq 0x10(%rsp), %rax
movslq 0xc(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x13a07(%rip), %rsi     # 0x17a99
callq 0x2350
cmpl $0x0, %eax
jne 0x40be
movq 0x10(%rsp), %rax
movl 0xc(%rsp), %ecx
addl $0x1, %ecx
movl %ecx, 0xc(%rsp)
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rcx
movq 0x20(%rsp), %rax
movq %rcx, 0x28(%rax)
jmp 0x40c0
jmp 0x40c0
jmp 0x40c2
jmp 0x40c4
movl 0xc(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xc(%rsp)
jmp 0x402e
jmp 0x467b
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
leaq 0x12f9b(%rip), %rsi     # 0x17084
callq 0x2350
cmpl $0x0, %eax
jne 0x4338
movl $0x2, 0xc(%rsp)
movl 0xc(%rsp), %eax
cmpl 0x1c(%rsp), %eax
jge 0x4333
movq 0x10(%rsp), %rax
movslq 0xc(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x1393e(%rip), %rsi     # 0x17a60
callq 0x2350
cmpl $0x0, %eax
jne 0x4157
movq 0x10(%rsp), %rax
movl 0xc(%rsp), %ecx
addl $0x1, %ecx
movl %ecx, 0xc(%rsp)
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x23a0
movl %eax, %ecx
movq 0x20(%rsp), %rax
movl %ecx, 0x4(%rax)
jmp 0x4321
movq 0x10(%rsp), %rax
movslq 0xc(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x138f9(%rip), %rsi     # 0x17a65
callq 0x2350
cmpl $0x0, %eax
jne 0x41a1
movq 0x10(%rsp), %rax
movl 0xc(%rsp), %ecx
addl $0x1, %ecx
movl %ecx, 0xc(%rsp)
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x23a0
movl %eax, %ecx
movq 0x20(%rsp), %rax
movl %ecx, 0x8(%rax)
jmp 0x431f
movq 0x10(%rsp), %rax
movslq 0xc(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x138b7(%rip), %rsi     # 0x17a6d
callq 0x2350
cmpl $0x0, %eax
jne 0x41eb
movq 0x10(%rsp), %rax
movl 0xc(%rsp), %ecx
addl $0x1, %ecx
movl %ecx, 0xc(%rsp)
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x23a0
movl %eax, %ecx
movq 0x20(%rsp), %rax
movl %ecx, 0xc(%rax)
jmp 0x431d
movq 0x10(%rsp), %rax
movslq 0xc(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x13893(%rip), %rsi     # 0x17a93
callq 0x2350
cmpl $0x0, %eax
jne 0x422f
movq 0x10(%rsp), %rax
movl 0xc(%rsp), %ecx
addl $0x1, %ecx
movl %ecx, 0xc(%rsp)
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rcx
movq 0x20(%rsp), %rax
movq %rcx, 0x20(%rax)
jmp 0x431b
movq 0x10(%rsp), %rax
movslq 0xc(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x13855(%rip), %rsi     # 0x17a99
callq 0x2350
cmpl $0x0, %eax
jne 0x4273
movq 0x10(%rsp), %rax
movl 0xc(%rsp), %ecx
addl $0x1, %ecx
movl %ecx, 0xc(%rsp)
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rcx
movq 0x20(%rsp), %rax
movq %rcx, 0x28(%rax)
jmp 0x4319
movq 0x10(%rsp), %rax
movslq 0xc(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x13818(%rip), %rsi     # 0x17aa0
callq 0x2350
cmpl $0x0, %eax
jne 0x42ba
movq 0x10(%rsp), %rax
movl 0xc(%rsp), %ecx
addl $0x1, %ecx
movl %ecx, 0xc(%rsp)
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x23a0
movl %eax, %ecx
movq 0x20(%rsp), %rax
movl %ecx, 0x30(%rax)
jmp 0x4317
movq 0x10(%rsp), %rax
movslq 0xc(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x137d7(%rip), %rsi     # 0x17aa6
callq 0x2350
cmpl $0x0, %eax
jne 0x42e7
movq 0x20(%rsp), %rax
movl $0x2, 0x38(%rax)
jmp 0x4315
movq 0x10(%rsp), %rax
movslq 0xc(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x137b0(%rip), %rsi     # 0x17aac
callq 0x2350
cmpl $0x0, %eax
jne 0x4311
movq 0x20(%rsp), %rax
movb $0x1, 0x2(%rax)
jmp 0x4313
jmp 0x4313
jmp 0x4315
jmp 0x4317
jmp 0x4319
jmp 0x431b
jmp 0x431d
jmp 0x431f
jmp 0x4321
jmp 0x4323
movl 0xc(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xc(%rsp)
jmp 0x40ff
jmp 0x4679
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
leaq 0x12d45(%rip), %rsi     # 0x1708d
callq 0x2350
cmpl $0x0, %eax
jne 0x4675
movl $0x2, 0xc(%rsp)
movl 0xc(%rsp), %eax
cmpl 0x1c(%rsp), %eax
jge 0x4673
movq 0x10(%rsp), %rax
movslq 0xc(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x13734(%rip), %rsi     # 0x17ab5
callq 0x2350
cmpl $0x0, %eax
jne 0x43b6
movq 0x10(%rsp), %rax
movl 0xc(%rsp), %ecx
addl $0x1, %ecx
movl %ecx, 0xc(%rsp)
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x23a0
movl %eax, %ecx
movq 0x20(%rsp), %rax
movl %ecx, 0x34(%rax)
jmp 0x4661
movq 0x10(%rsp), %rax
movslq 0xc(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x136e1(%rip), %rsi     # 0x17aac
callq 0x2350
cmpl $0x0, %eax
jne 0x43e3
movq 0x20(%rsp), %rax
movb $0x1, 0x2(%rax)
jmp 0x465f
movq 0x10(%rsp), %rax
movslq 0xc(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x136c6(%rip), %rsi     # 0x17abe
callq 0x2350
cmpl $0x0, %eax
jne 0x4427
movq 0x20(%rsp), %rax
movb $0x1, 0x1(%rax)
movq 0x20(%rsp), %rax
cmpl $0x0, 0x38(%rax)
jne 0x4422
movq 0x20(%rsp), %rax
movl $0x1, 0x38(%rax)
jmp 0x465d
movq 0x10(%rsp), %rax
movslq 0xc(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x13686(%rip), %rsi     # 0x17ac2
callq 0x2350
cmpl $0x0, %eax
jne 0x4457
movq 0x20(%rsp), %rax
movl $0x1, 0x38(%rax)
jmp 0x465b
movq 0x10(%rsp), %rax
movslq 0xc(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x1365d(%rip), %rsi     # 0x17ac9
callq 0x2350
cmpl $0x0, %eax
jne 0x4487
movq 0x20(%rsp), %rax
movl $0x3, 0x38(%rax)
jmp 0x4659
movq 0x10(%rsp), %rax
movslq 0xc(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x1360a(%rip), %rsi     # 0x17aa6
callq 0x2350
cmpl $0x0, %eax
jne 0x44b7
movq 0x20(%rsp), %rax
movl $0x2, 0x38(%rax)
jmp 0x4657
movq 0x10(%rsp), %rax
movslq 0xc(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x135cd(%rip), %rsi     # 0x17a99
callq 0x2350
cmpl $0x0, %eax
jne 0x44e3
movq 0x20(%rsp), %rax
movb $0x1, (%rax)
jmp 0x4655
movq 0x10(%rsp), %rax
movslq 0xc(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x13568(%rip), %rsi     # 0x17a60
callq 0x2350
cmpl $0x0, %eax
jne 0x452d
movq 0x10(%rsp), %rax
movl 0xc(%rsp), %ecx
addl $0x1, %ecx
movl %ecx, 0xc(%rsp)
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x23a0
movl %eax, %ecx
movq 0x20(%rsp), %rax
movl %ecx, 0x4(%rax)
jmp 0x4653
movq 0x10(%rsp), %rax
movslq 0xc(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x13523(%rip), %rsi     # 0x17a65
callq 0x2350
cmpl $0x0, %eax
jne 0x4577
movq 0x10(%rsp), %rax
movl 0xc(%rsp), %ecx
addl $0x1, %ecx
movl %ecx, 0xc(%rsp)
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x23a0
movl %eax, %ecx
movq 0x20(%rsp), %rax
movl %ecx, 0x8(%rax)
jmp 0x4651
movq 0x10(%rsp), %rax
movslq 0xc(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x134e1(%rip), %rsi     # 0x17a6d
callq 0x2350
cmpl $0x0, %eax
jne 0x45c1
movq 0x10(%rsp), %rax
movl 0xc(%rsp), %ecx
addl $0x1, %ecx
movl %ecx, 0xc(%rsp)
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x23a0
movl %eax, %ecx
movq 0x20(%rsp), %rax
movl %ecx, 0xc(%rax)
jmp 0x464f
movq 0x10(%rsp), %rax
movslq 0xc(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x134bd(%rip), %rsi     # 0x17a93
callq 0x2350
cmpl $0x0, %eax
jne 0x4602
movq 0x10(%rsp), %rax
movl 0xc(%rsp), %ecx
addl $0x1, %ecx
movl %ecx, 0xc(%rsp)
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rcx
movq 0x20(%rsp), %rax
movq %rcx, 0x20(%rax)
jmp 0x464d
movq 0x10(%rsp), %rax
movslq 0xc(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x13489(%rip), %rsi     # 0x17aa0
callq 0x2350
cmpl $0x0, %eax
jne 0x4649
movq 0x10(%rsp), %rax
movl 0xc(%rsp), %ecx
addl $0x1, %ecx
movl %ecx, 0xc(%rsp)
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x23a0
movl %eax, %ecx
movq 0x20(%rsp), %rax
movl %ecx, 0x30(%rax)
jmp 0x464b
jmp 0x464b
jmp 0x464d
jmp 0x464f
jmp 0x4651
jmp 0x4653
jmp 0x4655
jmp 0x4657
jmp 0x4659
jmp 0x465b
jmp 0x465d
jmp 0x465f
jmp 0x4661
jmp 0x4663
movl 0xc(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xc(%rsp)
jmp 0x435e
jmp 0x4677
jmp 0x4677
jmp 0x4679
jmp 0x467b
jmp 0x467d
jmp 0x467f
jmp 0x4681
jmp 0x4683
jmp 0x4685
addq $0x28, %rsp
retq
nopw (%rax,%rax)