// File: /workspace/github_cpp_makefile_star2_O3/ys1998[P]spsim/src/main.cpp
// Function: main
int main(int argc, char const *argv[])
{
	if(argc <= 1) {
		error_msg("main", "Program needed for execution");
	}
	if(argc == 3){
		int l = std::stoi(argv[2]);
		if(l < 0 || l > 2)
			error_msg("main", "Invalid logging level");
		LOG_LEVEL = l;
	}

	std::ifstream programFile(argv[1]);
	if(!programFile) {
    	error_msg("main", "Unable to open program file");
 	}

	initialize_ISA();

	/**********************************************************************************
						Instantiate classes and build data path
	**********************************************************************************/

	Buffer<Instruction> output_order, ICache, if_de_queue;
	int DCache[DCACHE_SIZE];
	int RegisterMapping[NUM_LOG_REGS];
	bool BusyBitTable[NUM_PHY_REGS];

	int BranchPredict[BRANCH_PREDICT_SLOTS];
	int BranchPredictAddr[BRANCH_PREDICT_SLOTS];

	Fetcher f(&ICache, &if_de_queue);

	FreeList fl;
	ActiveList al(&fl, &output_order, &RegisterMapping[0], &BusyBitTable[0]);
	IntegerQueue iq(&BusyBitTable[0]);
	AddressQueue aq(&BusyBitTable[0],&al);
	IntegerRegisterFile rf;

	Decoder d(&if_de_queue, &fl, &al, &RegisterMapping[0], &BusyBitTable[0],
				&iq, &aq, &BranchPredict[0], &BranchPredictAddr[0], &f);

	Latch< std::tuple<Instruction, int, int> > in_latch_1, in_latch_2,in_latch_3,in_latch_4;

	Issuer is(&iq, &aq, &rf);

	Latch< std::tuple<Instruction, int> > out_latch_1,out_latch_3,out_latch_4;
	Latch< std::tuple<Instruction, int, int> > out_latch_2;

	ALU2 a2(&in_latch_2, &out_latch_2, &BusyBitTable[0]);
	ALU3 a3(&in_latch_3, &out_latch_3, &BusyBitTable[0]);
	MEM  mem(&in_latch_4,&out_latch_4, &DCache[0], &BusyBitTable[0]);

	Writer w(&out_latch_1, &out_latch_2, &out_latch_4, &al, &rf, &BusyBitTable[0]);
	Flusher flsh(&is, &f, &d, &w);
	ALU1 a1(&in_latch_1, &out_latch_1, &BusyBitTable[0], &a2, &a3, &flsh,
			&BranchPredict[0], &BranchPredictAddr[0]);

	is.attach_latch(0, &in_latch_1,1);
	is.attach_latch(1, &in_latch_2,1);
	is.attach_latch(2,&in_latch_3,2);
	is.attach_latch(3,&in_latch_4,3);
	is.attach_cal_latch_outer(&out_latch_3);

	/**********************************************************************************/

	for(int i=0; i<NUM_LOG_REGS; ++i)
		RegisterMapping[i] = -1;
	for(int i=0; i<NUM_PHY_REGS; ++i)
		BusyBitTable[i] = false;
	for(int i=0; i<DCACHE_SIZE;++i)
		DCache[i] = 0;
	for(int i=0; i<BRANCH_PREDICT_SLOTS; ++i){
		BranchPredict[i] = STRONGLY_NOT_TAKEN;
		BranchPredictAddr[i] = i + 1;
	}

	int PC = 0, stage = -1;
	bool main_found = false;
	std::string input = "";

	while(std::getline(programFile, input)){
		if(input.compare("") == 0)
			continue;
		if(PC > PROG_SIZE) {
			error_msg("main", std::string("Program size limit [") + std::to_string(PROG_SIZE) + "] exceeded");
		}
		switch(stage){
			case -1:
			if(input.compare("data:") == 0)
				stage = 0;
			else if(input.compare("main:") == 0)
				stage = 1;
			break;

			case 0:
			if(input.compare("main:") == 0)
				stage = 1;
			else{
				size_t pos;
				int idx = std::stoi(input, &pos);
				if(idx >= DCACHE_SIZE)
					error_msg("parser", "D-Cache size limit exceeded");
				else{
					int value = std::stoi(input.substr(pos));
					DCache[idx] = value;
				}
			}
			break;

			case 1:
			main_found = true;
			Instruction instr(PC, input);
			instr.set_id();
			ICache.push_back(instr);
			PC++;
			break;
		}
	}
	programFile.close();

	if(!main_found)
		error_msg("parser", "Main label not found");

	if(LOG_LEVEL >= 1)
		status_msg("main", "Program parsing complete");
	
	while(!terminate){
		CLOCK++;
		f.tick();
		d.tick();
		w.tick(); // for preventing additional stall
		a1.tick();
		a2.tick();
		a3.tick();
		mem.tick();
		is.tick();

		f.tock();
		d.tock();
		is.tock();
		a1.tock();
		a2.tock();
		a3.tock();
		mem.tock();
		w.tock();
	}
	if(LOG_LEVEL >= 1)
		status_msg("main", "Program simulation complete, ticks = " + std::to_string(CLOCK));

	std::cout << std::endl;
	print_std(output_order);

	std::cout << std::endl;
	print_regs(rf, &RegisterMapping[0]);

	std::cout << std::endl;
	print_mem(&DCache[0]);

	std::cout << std::endl;
	if(LOG_LEVEL >= 1)
		status_msg("main", "Space-Time Diagram, register values and memory content displayed");

    return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1968, %rsp           # imm = 0x1968
movq %rsi, %rbx
cmpl $0x1, %edi
jg 0xf71b
leaq 0x340(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x6df4(%rip), %rsi      # 0x1647c
leaq 0x6df1(%rip), %rdx      # 0x16480
leaq 0x330(%rsp), %rdi
callq 0x530a
leaq 0x320(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x6dd2(%rip), %rsi      # 0x16481
leaq 0x6de7(%rip), %rdx      # 0x1649d
leaq 0x310(%rsp), %rdi
callq 0x530a
leaq 0x330(%rsp), %rdi
leaq 0x310(%rsp), %rsi
callq 0xdab0
movq 0x310(%rsp), %rdi
cmpq %r15, %rdi
je 0xf6f5
movq 0x320(%rsp), %rsi
incq %rsi
callq 0x3200
movq 0x330(%rsp), %rdi
cmpq %r14, %rdi
je 0xf869
movq 0x340(%rsp), %rsi
incq %rsi
callq 0x3200
jmp 0xf869
cmpl $0x3, %edi
jne 0xf869
movq 0x10(%rbx), %rsi
leaq 0xf30(%rsp), %rdi
leaq 0x1170(%rsp), %rdx
callq 0x114f4
movq 0xf30(%rsp), %r12
callq 0x3050
movq %rax, %r15
movl (%rax), %ebp
movl $0x0, (%rax)
leaq 0x15c8(%rsp), %r13
movq %r12, %rdi
movq %r13, %rsi
movl $0xa, %edx
callq 0x3290
cmpq %r12, (%r13)
je 0x10da6
movq %rax, %r14
movslq %r14d, %rax
cmpq %r14, %rax
jne 0x10db2
movl (%r15), %eax
cmpl $0x22, %eax
je 0x10db2
testl %eax, %eax
jne 0xf799
movl %ebp, (%r15)
leaq 0xf40(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xf7ba
movq 0xf40(%rsp), %rsi
incq %rsi
callq 0x3200
cmpl $0x3, %r14d
jb 0xf862
leaq 0x300(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x6ca5(%rip), %rsi      # 0x1647c
leaq 0x6ca2(%rip), %rdx      # 0x16480
leaq 0x2f0(%rsp), %rdi
callq 0x530a
leaq 0x2e0(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x6c9f(%rip), %rsi      # 0x1649e
leaq 0x6cad(%rip), %rdx      # 0x164b3
leaq 0x2d0(%rsp), %rdi
callq 0x530a
leaq 0x2f0(%rsp), %rdi
leaq 0x2d0(%rsp), %rsi
callq 0xdab0
movq 0x2d0(%rsp), %rdi
cmpq %r12, %rdi
je 0xf845
movq 0x2e0(%rsp), %rsi
incq %rsi
callq 0x3200
movq 0x2f0(%rsp), %rdi
cmpq %r15, %rdi
je 0xf862
movq 0x300(%rsp), %rsi
incq %rsi
callq 0x3200
movl %r14d, 0xc977(%rip)     # 0x1c1e0
movq 0x8(%rbx), %rsi
leaq 0x15c8(%rsp), %rbx
movq %rbx, %rdi
movl $0x8, %edx
callq 0x3360
movq (%rbx), %rax
movq -0x18(%rax), %rax
testb $0x5, 0x15e8(%rsp,%rax)
je 0xf934
leaq 0x2c0(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x6bd2(%rip), %rsi      # 0x1647c
leaq 0x6bcf(%rip), %rdx      # 0x16480
leaq 0x2b0(%rsp), %rdi
callq 0x530a
leaq 0x2a0(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x6be3(%rip), %rsi      # 0x164b4
leaq 0x6bf7(%rip), %rdx      # 0x164cf
leaq 0x290(%rsp), %rdi
callq 0x530a
leaq 0x2b0(%rsp), %rdi
leaq 0x290(%rsp), %rsi
callq 0xdab0
movq 0x290(%rsp), %rdi
cmpq %r15, %rdi
je 0xf917
movq 0x2a0(%rsp), %rsi
incq %rsi
callq 0x3200
movq 0x2b0(%rsp), %rdi
cmpq %r14, %rdi
je 0xf934
movq 0x2c0(%rsp), %rsi
incq %rsi
callq 0x3200
callq 0x74f4
pxor %xmm0, %xmm0
leaq 0x550(%rsp), %rdi
movdqa %xmm0, 0x40(%rdi)
movdqa %xmm0, 0x30(%rdi)
movdqa %xmm0, 0x20(%rdi)
movdqa %xmm0, 0x10(%rdi)
movdqa %xmm0, (%rdi)
xorl %esi, %esi
callq 0x64a8
leaq 0x500(%rsp), %rdi
pxor %xmm0, %xmm0
movdqa %xmm0, 0x40(%rdi)
movdqa %xmm0, 0x30(%rdi)
movdqa %xmm0, 0x20(%rdi)
movdqa %xmm0, 0x10(%rdi)
movdqa %xmm0, (%rdi)
xorl %esi, %esi
callq 0x64a8
pxor %xmm0, %xmm0
leaq 0x4b0(%rsp), %rdi
movdqa %xmm0, 0x40(%rdi)
movdqa %xmm0, 0x30(%rdi)
movdqa %xmm0, 0x20(%rdi)
movdqa %xmm0, 0x10(%rdi)
movdqa %xmm0, (%rdi)
xorl %esi, %esi
callq 0x64a8
leaq 0x390(%rsp), %r14
leaq 0x500(%rsp), %rsi
leaq 0x4b0(%rsp), %rdx
movq %r14, %rdi
callq 0x727c
leaq 0xaa0(%rsp), %rdi
callq 0xb858
leaq 0x958(%rsp), %rdi
leaq 0xaa0(%rsp), %rsi
leaq 0x550(%rsp), %rdx
leaq 0x3b0(%rsp), %rcx
leaq 0x350(%rsp), %r8
callq 0xc990
leaq 0xae0(%rsp), %r15
leaq 0x350(%rsp), %rsi
movq %r15, %rdi
callq 0x12050
leaq 0xe60(%rsp), %r12
leaq 0x350(%rsp), %rsi
leaq 0x958(%rsp), %rdx
movq %r12, %rdi
callq 0x12d84
leaq 0x14b8(%rsp), %rdi
movl $0x110, %edx            # imm = 0x110
xorl %esi, %esi
callq 0x3150
subq $0x8, %rsp
leaq 0x1438(%rsp), %rbp
leaq 0x438(%rsp), %r13
leaq 0xdb8(%rsp), %rdi
leaq 0x4b8(%rsp), %rsi
leaq 0xaa8(%rsp), %rdx
leaq 0x960(%rsp), %rcx
leaq 0x3b8(%rsp), %r8
leaq 0x358(%rsp), %r9
pushq %r14
pushq %rbp
pushq %r13
pushq %r12
pushq %r15
callq 0x5998
addq $0x30, %rsp
leaq 0x8d8(%rsp), %rdi
movq $0x0, -0x8(%rdi)
callq 0x7a5a
movb $0x0, 0x950(%rsp)
leaq 0x850(%rsp), %rdi
movq $0x0, -0x8(%rdi)
callq 0x7a5a
movb $0x0, 0x8c8(%rsp)
leaq 0x7c8(%rsp), %rdi
movq $0x0, -0x8(%rdi)
callq 0x7a5a
movb $0x0, 0x840(%rsp)
leaq 0x740(%rsp), %rdi
movq $0x0, -0x8(%rdi)
callq 0x7a5a
movb $0x0, 0x7b8(%rsp)
leaq 0xf30(%rsp), %rdi
leaq 0xae0(%rsp), %rsi
leaq 0xe60(%rsp), %rdx
leaq 0x14b8(%rsp), %rcx
callq 0xabdc
leaq 0x6b8(%rsp), %rdi
movl $0x0, -0x8(%rdi)
callq 0x7a5a
movb $0x0, 0x730(%rsp)
leaq 0x630(%rsp), %rdi
movl $0x0, -0x8(%rdi)
callq 0x7a5a
movb $0x0, 0x6a8(%rsp)
leaq 0x5a8(%rsp), %rdi
movl $0x0, -0x8(%rdi)
callq 0x7a5a
movb $0x0, 0x620(%rsp)
leaq 0x9d0(%rsp), %rdi
movq $0x0, -0x8(%rdi)
callq 0x7a5a
leaq 0x9c8(%rsp), %rdx
movb $0x0, 0x80(%rdx)
leaq 0xcd0(%rsp), %rdi
leaq 0x848(%rsp), %rsi
leaq 0x350(%rsp), %rcx
callq 0x4182
leaq 0xbf0(%rsp), %rdi
leaq 0x7c0(%rsp), %rsi
leaq 0x628(%rsp), %rdx
leaq 0x350(%rsp), %rcx
callq 0x4ac8
leaq 0xb38(%rsp), %rdi
leaq 0x738(%rsp), %rsi
leaq 0x5a0(%rsp), %rdx
leaq 0x17d0(%rsp), %rcx
leaq 0x350(%rsp), %r14
movq %r14, %r8
callq 0x11c88
subq $0x8, %rsp
leaq 0x1178(%rsp), %rdi
leaq 0x6b8(%rsp), %rsi
leaq 0x9d0(%rsp), %rdx
leaq 0x5a8(%rsp), %rcx
leaq 0x960(%rsp), %r8
leaq 0x14c0(%rsp), %r9
pushq %r14
callq 0x14bac
addq $0x10, %rsp
leaq 0xf10(%rsp), %r14
leaq 0xf30(%rsp), %rsi
leaq 0x390(%rsp), %rdx
leaq 0xdb0(%rsp), %rcx
leaq 0x1170(%rsp), %r8
movq %r14, %rdi
callq 0x74a4
subq $0x8, %rsp
leaq 0x1330(%rsp), %rdi
leaq 0x8d8(%rsp), %rsi
leaq 0x6b8(%rsp), %rdx
leaq 0x358(%rsp), %rcx
leaq 0xcd8(%rsp), %r8
leaq 0xbf8(%rsp), %r9
pushq %rbp
pushq %r13
pushq %r14
callq 0x37ac
addq $0x20, %rsp
leaq 0xf30(%rsp), %rdi
leaq 0x8d0(%rsp), %rdx
xorl %esi, %esi
movl $0x1, %ecx
callq 0xac52
leaq 0xf30(%rsp), %rdi
leaq 0x848(%rsp), %rdx
movl $0x1, %esi
movl $0x1, %ecx
callq 0xac52
leaq 0xf30(%rsp), %rdi
leaq 0x7c0(%rsp), %rdx
movl $0x2, %esi
movl $0x2, %ecx
callq 0xac52
leaq 0xf30(%rsp), %rdi
leaq 0x738(%rsp), %rdx
movl $0x3, %esi
movl $0x3, %ecx
callq 0xac52
leaq 0xf30(%rsp), %rdi
leaq 0x628(%rsp), %rsi
callq 0xac76
pcmpeqd %xmm0, %xmm0
movdqa %xmm0, 0x420(%rsp)
movdqa %xmm0, 0x410(%rsp)
movdqa %xmm0, 0x400(%rsp)
movdqa %xmm0, 0x3f0(%rsp)
movdqa %xmm0, 0x3e0(%rsp)
movdqa %xmm0, 0x3d0(%rsp)
movdqa %xmm0, 0x3c0(%rsp)
movdqa %xmm0, 0x3b0(%rsp)
pxor %xmm0, %xmm0
movdqa %xmm0, 0x350(%rsp)
movdqa %xmm0, 0x360(%rsp)
movdqa %xmm0, 0x370(%rsp)
movdqa %xmm0, 0x380(%rsp)
leaq 0x17d0(%rsp), %rdi
xorl %r14d, %r14d
movl $0x190, %edx            # imm = 0x190
xorl %esi, %esi
callq 0x3150
pcmpeqd %xmm4, %xmm4
pxor %xmm0, %xmm0
movdqa %xmm0, 0x430(%rsp)
movdqa %xmm0, 0x440(%rsp)
movdqa %xmm0, 0x450(%rsp)
movdqa %xmm0, 0x460(%rsp)
movdqa %xmm0, 0x470(%rsp)
movdqa %xmm0, 0x480(%rsp)
movdqa %xmm0, 0x490(%rsp)
movdqa %xmm0, 0x4a0(%rsp)
movaps 0x64d6(%rip), %xmm0     # 0x16330
movaps 0x64df(%rip), %xmm1     # 0x16340
movdqa 0x64e7(%rip), %xmm2     # 0x16350
movaps %xmm1, %xmm3
shufps $0x88, %xmm0, %xmm3     # xmm3 = xmm3[0,2],xmm0[0,2]
psubd %xmm4, %xmm3
movdqa %xmm3, 0x1430(%rsp,%r14,4)
addq $0x4, %r14
paddq %xmm2, %xmm1
paddq %xmm2, %xmm0
cmpq $0x20, %r14
jne 0xfe69
leaq 0x88(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x645a(%rip), %rdx      # 0x162fd
leaq 0x78(%rsp), %rdi
movq %rdx, %rsi
callq 0x530a
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
movq $0x0, 0x50(%rsp)
leaq 0x78(%rsp), %r14
leaq 0x6433(%rip), %r15      # 0x162fd
leaq 0x98(%rsp), %r12
movl $0x0, 0xc(%rsp)
movq 0x15c8(%rsp), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x31e0
movsbl %al, %edx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3370
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x1048d
movq %r14, %rdi
movq %r15, %rsi
callq 0x30b0
testl %eax, %eax
je 0xfeda
cmpl $0xf4241, 0xc(%rsp)     # imm = 0xF4241
jb 0x1016f
leaq 0x140(%rsp), %rax
movq %rax, 0x130(%rsp)
leaq 0x130(%rsp), %rdi
leaq 0x652d(%rip), %rsi      # 0x1647c
leaq 0x652a(%rip), %rdx      # 0x16480
callq 0x530a
leaq 0x20(%rsp), %rax
movq %rax, 0x10(%rsp)
leaq 0x10(%rsp), %rdi
leaq 0x655f(%rip), %rsi      # 0x164d0
leaq 0x656c(%rip), %rdx      # 0x164e4
callq 0x530a
leaq 0x40(%rsp), %rax
movq %rax, 0x30(%rsp)
movl $0x7, %esi
leaq 0x30(%rsp), %rdi
movl $0x2d, %edx
callq 0x3250
movq 0x30(%rsp), %rdi
movl $0x7, %esi
movl $0xf4240, %edx          # imm = 0xF4240
callq 0xa9ce
movq 0x10(%rsp), %rcx
movl $0xf, %edi
leaq 0x20(%rsp), %rax
cmpq %rax, %rcx
je 0xffc8
movq 0x20(%rsp), %rdi
movq 0x18(%rsp), %r8
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rdi, %rax
jbe 0xfff9
movl $0xf, %edi
leaq 0x40(%rsp), %r9
cmpq %r9, %rsi
je 0xfff4
movq 0x40(%rsp), %rdi
cmpq %rdi, %rax
jbe 0x10005
leaq 0x10(%rsp), %rdi
callq 0x30c0
jmp 0x10013
leaq 0x30(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3230
leaq 0xa8(%rsp), %rsi
movq %rsi, 0x98(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x10044
movq %rdx, 0x98(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xa8(%rsp)
jmp 0x1004a
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0xa0(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
movq %r12, %rdi
leaq 0x6471(%rip), %rsi      # 0x164e5
callq 0x3380
leaq 0x68(%rsp), %rsi
movq %rsi, 0x58(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x100a1
movq %rdx, 0x58(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x68(%rsp)
jmp 0x100a7
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x60(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x130(%rsp), %rdi
leaq 0x58(%rsp), %rsi
callq 0xdab0
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0x100ed
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x3200
movq 0x98(%rsp), %rdi
leaq 0xa8(%rsp), %rax
cmpq %rax, %rdi
je 0x10112
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x3200
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x1012e
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x3200
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x1014a
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x3200
movq 0x130(%rsp), %rdi
leaq 0x140(%rsp), %rax
cmpq %rax, %rdi
je 0x1016f
movq 0x140(%rsp), %rsi
incq %rsi
callq 0x3200
cmpl $-0x1, %ebp
je 0x102d0
testl %ebp, %ebp
jne 0x103cc
movq %r14, %rdi
leaq 0x636c(%rip), %rsi      # 0x164f6
callq 0x30b0
movl $0x1, %ebp
testl %eax, %eax
je 0xfeda
movq 0x78(%rsp), %rbp
callq 0x3050
movq %rax, %r13
movl (%rax), %eax
movl %eax, 0x8(%rsp)
movl $0x0, (%r13)
movq %rbp, %rdi
movq %r12, %rsi
movl $0xa, %edx
callq 0x3290
movq 0x98(%rsp), %rdx
subq %rbp, %rdx
je 0x10d8e
movq %rax, %r12
movslq %r12d, %rax
cmpq %r12, %rax
leaq 0x150(%rsp), %rbp
jne 0x10d9a
movl (%r13), %eax
cmpl $0x22, %eax
je 0x10d9a
testl %eax, %eax
jne 0x10208
movl 0x8(%rsp), %eax
movl %eax, (%r13)
cmpl $0x64, %r12d
jl 0x10309
leaq 0x120(%rsp), %rax
movq %rax, 0x110(%rsp)
leaq 0x110(%rsp), %rdi
leaq 0x5e93(%rip), %rsi      # 0x160c4
leaq 0x5e92(%rip), %rdx      # 0x160ca
callq 0x530a
leaq 0x160(%rsp), %rax
movq %rax, 0x150(%rsp)
movq %rbp, %rdi
leaq 0x62a5(%rip), %rsi      # 0x164fc
leaq 0x62b9(%rip), %rdx      # 0x16517
callq 0x530a
leaq 0x98(%rsp), %r12
leaq 0x110(%rsp), %rdi
movq %rbp, %rsi
callq 0xdab0
movq 0x150(%rsp), %rdi
leaq 0x160(%rsp), %rax
cmpq %rax, %rdi
je 0x102a0
movq 0x160(%rsp), %rsi
incq %rsi
callq 0x3200
movq 0x110(%rsp), %rdi
xorl %ebp, %ebp
leaq 0x120(%rsp), %rax
cmpq %rax, %rdi
je 0xfeda
movq 0x120(%rsp), %rsi
incq %rsi
callq 0x3200
jmp 0xfeda
movq %r14, %rdi
leaq 0x6216(%rip), %rsi      # 0x164f0
callq 0x30b0
xorl %ebp, %ebp
testl %eax, %eax
je 0xfeda
movq %r14, %rdi
leaq 0x6203(%rip), %rsi      # 0x164f6
callq 0x30b0
negl %eax
movl $0x0, %ebp
sbbl %ebp, %ebp
orl $0x1, %ebp
jmp 0xfeda
leaq 0x98(%rsp), %rdi
movq %r14, %rsi
movq $-0x1, %rcx
callq 0x3210
movq 0x98(%rsp), %rbp
movl (%r13), %eax
movl %eax, 0x8(%rsp)
movl $0x0, (%r13)
movq %rbp, %rdi
leaq 0x10(%rsp), %rsi
movl $0xa, %edx
callq 0x3290
cmpq %rbp, 0x10(%rsp)
je 0x10dbe
movq %rax, %rdx
addq $-0x80000000, %rax      # imm = 0x80000000
movabsq $-0x100000000, %rcx     # imm = 0xFFFFFFFF00000000
cmpq %rcx, %rax
leaq 0xa8(%rsp), %rcx
jb 0x10dca
movl (%r13), %eax
cmpl $0x22, %eax
je 0x10dca
testl %eax, %eax
jne 0x10392
movl 0x8(%rsp), %eax
movl %eax, (%r13)
movq 0x98(%rsp), %rdi
cmpq %rcx, %rdi
je 0x103b5
movq 0xa8(%rsp), %rsi
incq %rsi
movq %rdx, %r13
callq 0x3200
movq %r13, %rdx
movl %edx, 0x17d0(%rsp,%r12,4)
xorl %ebp, %ebp
leaq 0x98(%rsp), %r12
jmp 0xfeda
movq %r12, %r13
leaq 0x280(%rsp), %r12
movq %r12, 0x270(%rsp)
movq 0x78(%rsp), %rsi
movq 0x80(%rsp), %rdx
addq %rsi, %rdx
leaq 0x270(%rsp), %rbp
movq %rbp, %rdi
callq 0x5274
movq %r13, %rdi
movl 0xc(%rsp), %esi
movq %rbp, %rdx
callq 0x7a76
movq 0x270(%rsp), %rdi
cmpq %r12, %rdi
je 0x1042b
movq 0x280(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0xbdc2(%rip), %rdx      # 0x1c1f4
movl (%rdx), %eax
leal 0x1(%rax), %ecx
movl %ecx, (%rdx)
movl %eax, 0x98(%rsp)
leaq 0x500(%rsp), %rdi
movq %r13, %r12
movq %r13, %rsi
callq 0x63d2
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0x10478
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x3200
incl 0xc(%rsp)
movb $0x1, %al
movq %rax, 0x50(%rsp)
movl $0x1, %ebp
jmp 0xfeda
leaq 0x15c8(%rsp), %rdi
callq 0x3080
testb $0x1, 0x50(%rsp)
jne 0x10542
leaq 0x260(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x5c0c(%rip), %rsi      # 0x160c4
leaq 0x5c0b(%rip), %rdx      # 0x160ca
leaq 0x250(%rsp), %rdi
callq 0x530a
leaq 0x240(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x6039(%rip), %rsi      # 0x16518
leaq 0x6046(%rip), %rdx      # 0x1652c
leaq 0x230(%rsp), %rdi
callq 0x530a
leaq 0x250(%rsp), %rdi
leaq 0x230(%rsp), %rsi
callq 0xdab0
movq 0x230(%rsp), %rdi
cmpq %r15, %rdi
je 0x10525
movq 0x240(%rsp), %rsi
incq %rsi
callq 0x3200
movq 0x250(%rsp), %rdi
cmpq %r14, %rdi
je 0x10542
movq 0x260(%rsp), %rsi
incq %rsi
callq 0x3200
cmpl $0x0, 0xbc97(%rip)      # 0x1c1e0
jle 0x105ec
leaq 0x220(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x5f1a(%rip), %rsi      # 0x1647c
leaq 0x5f17(%rip), %rdx      # 0x16480
leaq 0x210(%rsp), %rdi
callq 0x530a
leaq 0x200(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x5fa4(%rip), %rsi      # 0x1652d
leaq 0x5fb5(%rip), %rdx      # 0x16545
leaq 0x1f0(%rsp), %rdi
callq 0x530a
leaq 0x210(%rsp), %rdi
leaq 0x1f0(%rsp), %rsi
callq 0xddd0
movq 0x1f0(%rsp), %rdi
cmpq %r15, %rdi
je 0x105cf
movq 0x200(%rsp), %rsi
incq %rsi
callq 0x3200
movq 0x210(%rsp), %rdi
cmpq %r14, %rdi
je 0x105ec
movq 0x220(%rsp), %rsi
incq %rsi
callq 0x3200
cmpb $0x0, 0xbc15(%rip)      # 0x1c208
jne 0x106c7
incl 0xbc05(%rip)            # 0x1c204
leaq 0xdb0(%rsp), %rdi
callq 0x60f2
leaq 0x1170(%rsp), %rdi
callq 0x14c96
leaq 0x1328(%rsp), %rdi
callq 0x3d18
leaq 0xcd0(%rsp), %rdi
callq 0x45b4
leaq 0xbf0(%rsp), %rdi
callq 0x4c4e
leaq 0xb38(%rsp), %rdi
callq 0x11ce2
leaq 0xf30(%rsp), %rdi
callq 0xac7e
leaq 0x390(%rsp), %rdi
callq 0x7296
leaq 0xdb0(%rsp), %rdi
callq 0x6132
leaq 0xf30(%rsp), %rdi
callq 0xafca
leaq 0x1328(%rsp), %rdi
callq 0x3ff0
leaq 0xcd0(%rsp), %rdi
callq 0x488c
leaq 0xbf0(%rsp), %rdi
callq 0x4ea6
leaq 0xb38(%rsp), %rdi
callq 0x11ece
leaq 0x1170(%rsp), %rdi
callq 0x15284
jmp 0x105ec
cmpl $0x0, 0xbb12(%rip)      # 0x1c1e0
jle 0x10874
leaq 0x1e0(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x5d94(%rip), %rsi      # 0x1647c
leaq 0x5d91(%rip), %rdx      # 0x16480
leaq 0x1d0(%rsp), %rdi
callq 0x530a
movl 0xbb02(%rip), %ebx      # 0x1c204
movl %ebx, %ebp
negl %ebp
cmovsl %ebx, %ebp
movl $0x1, %r14d
cmpl $0xa, %ebp
jb 0x1075d
movl $0x4, %r14d
movl $0xd1b71759, %eax       # imm = 0xD1B71759
movl %ebp, %ecx
cmpl $0x63, %ecx
jbe 0x10754
cmpl $0x3e7, %ecx            # imm = 0x3E7
jbe 0x1075a
cmpl $0x2710, %ecx           # imm = 0x2710
jb 0x1075d
movl %ecx, %edx
imulq %rax, %rdx
shrq $0x2d, %rdx
addl $0x4, %r14d
cmpl $0x1869f, %ecx          # imm = 0x1869F
movl %edx, %ecx
ja 0x10721
addl $-0x3, %r14d
jmp 0x1075d
addl $-0x2, %r14d
jmp 0x1075d
decl %r14d
shrl $0x1f, %ebx
leal (%r14,%rbx), %esi
leaq 0x98(%rsp), %rdi
leaq 0xa8(%rsp), %rax
movq %rax, (%rdi)
movl $0x2d, %edx
callq 0x3250
leaq 0x98(%rsp), %r15
addq (%r15), %rbx
movq %rbx, %rdi
movl %r14d, %esi
movl %ebp, %edx
callq 0xa9ce
leaq 0x5da6(%rip), %rcx      # 0x16546
movl $0x25, %r8d
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3230
leaq 0x180(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
leaq 0xa8(%rsp), %rbx
je 0x107ea
movq %rdx, 0x170(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x180(%rsp)
jmp 0x107f1
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
leaq 0x170(%rsp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x1d0(%rsp), %rdi
callq 0xddd0
movq 0x170(%rsp), %rdi
cmpq %r14, %rdi
je 0x1083a
movq 0x180(%rsp), %rsi
incq %rsi
callq 0x3200
movq 0x98(%rsp), %rdi
cmpq %rbx, %rdi
je 0x10857
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x3200
movq 0x1d0(%rsp), %rdi
cmpq %r12, %rdi
je 0x10874
movq 0x1e0(%rsp), %rsi
incq %rsi
callq 0x3200
movq 0xb75d(%rip), %rdi      # 0x1bfd8
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x31e0
movsbl %al, %esi
movq 0xb742(%rip), %rbx      # 0x1bfd8
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3180
leaq 0xa50(%rsp), %rdi
leaq 0x550(%rsp), %rsi
callq 0x11532
leaq 0xa50(%rsp), %rdi
callq 0xeac3
leaq 0xa50(%rsp), %rdi
callq 0x1160c
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x31e0
movsbl %al, %esi
movq 0xb6e5(%rip), %rbx      # 0x1bfd8
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3180
leaq 0x14b8(%rsp), %rdi
leaq 0x3b0(%rsp), %rsi
callq 0xe704
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x31e0
movsbl %al, %esi
movq 0xb6a2(%rip), %rbx      # 0x1bfd8
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3180
leaq 0x17d0(%rsp), %rdi
callq 0xe942
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x31e0
movsbl %al, %esi
movq 0xb667(%rip), %rdi      # 0x1bfd8
callq 0x3030
movq %rax, %rdi
callq 0x3180
cmpl $0x0, 0xb85b(%rip)      # 0x1c1e0
jle 0x10a28
leaq 0x1c0(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x5ade(%rip), %rsi      # 0x1647c
leaq 0x5adb(%rip), %rdx      # 0x16480
leaq 0x1b0(%rsp), %rdi
callq 0x530a
leaq 0x1a0(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x5ba7(%rip), %rsi      # 0x1656c
leaq 0x5be0(%rip), %rdx      # 0x165ac
leaq 0x190(%rsp), %rdi
callq 0x530a
leaq 0x1b0(%rsp), %rdi
leaq 0x190(%rsp), %rsi
callq 0xddd0
movq 0x190(%rsp), %rdi
cmpq %r15, %rdi
je 0x10a0b
movq 0x1a0(%rsp), %rsi
incq %rsi
callq 0x3200
movq 0x1b0(%rsp), %rdi
cmpq %r14, %rdi
je 0x10a28
movq 0x1c0(%rsp), %rsi
incq %rsi
callq 0x3200
movq 0x78(%rsp), %rdi
leaq 0x88(%rsp), %rax
cmpq %rax, %rdi
je 0x10a4a
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0xb14f(%rip), %rax      # 0x1bba0
addq $0x10, %rax
leaq 0x13a8(%rsp), %rbx
movq %rax, -0x80(%rbx)
movq %rbx, %rdi
callq 0x5224
movq -0x28(%rbx), %rdi
leaq 0x1390(%rsp), %rax
cmpq %rax, %rdi
je 0x10a8a
movq 0x1390(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0xb2df(%rip), %rax      # 0x1bd70
addq $0x10, %rax
leaq 0x12e0(%rsp), %rcx
movq %rax, -0x170(%rcx)
movq -0x10(%rcx), %rdi
cmpq %rcx, %rdi
je 0x10abd
movq 0x12e0(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0x1260(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10ade
movq 0x1260(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0x11e0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10aff
movq 0x11e0(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0xb22a(%rip), %rax      # 0x1bd30
addq $0x10, %rax
leaq 0xba0(%rsp), %rcx
movq %rax, -0x68(%rcx)
movq -0x10(%rcx), %rdi
cmpq %rcx, %rdi
je 0x10b2f
movq 0xba0(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0xb0ba(%rip), %rax      # 0x1bbf0
addq $0x10, %rax
leaq 0xc70(%rsp), %rbx
movq %rax, -0x80(%rbx)
movq %rbx, %rdi
callq 0x5224
movq -0x28(%rbx), %rdi
leaq 0xc58(%rsp), %rax
cmpq %rax, %rdi
je 0x10b6f
movq 0xc58(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0xb052(%rip), %rax      # 0x1bbc8
addq $0x10, %rax
leaq 0xd50(%rsp), %rbx
movq %rax, -0x80(%rbx)
movq %rbx, %rdi
callq 0x5224
movq -0x28(%rbx), %rdi
leaq 0xd38(%rsp), %rax
cmpq %rax, %rdi
je 0x10baf
movq 0xd38(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0xa30(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10bd0
movq 0xa30(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0x608(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10bf1
movq 0x608(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0x690(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10c12
movq 0x690(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0x718(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10c33
movq 0x718(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0xb0b6(%rip), %rax      # 0x1bcf0
addq $0x10, %rax
leaq 0x1100(%rsp), %rbx
movq %rax, -0x1d0(%rbx)
movq $-0x1e0, %r14           # imm = 0xFE20
movq -0x10(%rbx), %rdi
cmpq %rdi, %rbx
je 0x10c68
movq (%rbx), %rsi
incq %rsi
callq 0x3200
addq $-0x78, %rbx
addq $0x78, %r14
jne 0x10c54
leaq 0x7a0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10c93
movq 0x7a0(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0x828(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10cb4
movq 0x828(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0x8b0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10cd5
movq 0x8b0(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0x938(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10cf6
movq 0x938(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0xaf73(%rip), %rax      # 0x1bc70
addq $0x10, %rax
leaq 0xdb8(%rsp), %rdi
movq %rax, -0x8(%rdi)
callq 0x1160c
leaq 0xeb8(%rsp), %rdi
callq 0x1180a
leaq 0xe60(%rsp), %rdi
callq 0x1160c
leaq 0xae0(%rsp), %rdi
callq 0x1160c
leaq 0x958(%rsp), %rdi
callq 0x11862
leaq 0x4b0(%rsp), %rdi
callq 0x1160c
leaq 0x500(%rsp), %rdi
callq 0x1160c
leaq 0x550(%rsp), %rdi
callq 0x1160c
leaq 0x15c8(%rsp), %rdi
callq 0x3090
xorl %eax, %eax
addq $0x1968, %rsp           # imm = 0x1968
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x5818(%rip), %rdi      # 0x165ad
callq 0x3160
leaq 0x580c(%rip), %rdi      # 0x165ad
callq 0x32b0
leaq 0x5800(%rip), %rdi      # 0x165ad
callq 0x3160
leaq 0x57f4(%rip), %rdi      # 0x165ad
callq 0x32b0
leaq 0x57e8(%rip), %rdi      # 0x165ad
callq 0x3160
leaq 0x57dc(%rip), %rdi      # 0x165ad
callq 0x32b0
movq %rax, %rbx
movq 0x270(%rsp), %rdi
cmpq %r12, %rdi
je 0x112c6
movq 0x280(%rsp), %rsi
jmp 0x1118e
jmp 0x112c3
movq %rax, %rbx
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0x112c6
movq 0xf8(%rsp), %rsi
jmp 0x1118e
movq %rax, %rbx
movq 0x2d0(%rsp), %rdi
cmpq %r12, %rdi
je 0x10e4a
movq 0x2e0(%rsp), %rsi
incq %rsi
callq 0x3200
jmp 0x10e4a
movq %rax, %rbx
movq 0x2f0(%rsp), %rdi
cmpq %r15, %rdi
je 0x114e5
movq 0x300(%rsp), %rsi
jmp 0x11071
jmp 0x112c3
movq %rax, %rbx
movq 0x150(%rsp), %rdi
leaq 0x160(%rsp), %rax
cmpq %rax, %rdi
je 0x10e9a
movq 0x160(%rsp), %rsi
incq %rsi
callq 0x3200
jmp 0x10e9a
movq %rax, %rbx
movq 0x110(%rsp), %rdi
leaq 0x120(%rsp), %rax
cmpq %rax, %rdi
je 0x112c6
movq 0x120(%rsp), %rsi
jmp 0x1118e
jmp 0x112c3
movq %rax, %rbx
jmp 0x114e5
movq %rax, %rbx
cmpl $0x0, (%r13)
jne 0x10edf
movl 0x8(%rsp), %eax
movl %eax, (%r13)
movq 0x98(%rsp), %rdi
leaq 0xa8(%rsp), %rax
cmpq %rax, %rdi
je 0x112c6
movq 0xa8(%rsp), %rsi
jmp 0x1118e
movq %rax, %rbx
jmp 0x10f2e
movq %rax, %rbx
jmp 0x10f74
movq %rax, %rbx
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0x10f2e
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x3200
movq 0x98(%rsp), %rdi
leaq 0xa8(%rsp), %rax
cmpq %rax, %rdi
je 0x10f58
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x3200
jmp 0x10f58
movq %rax, %rbx
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x10f74
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x3200
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x10f95
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x3200
jmp 0x10f95
movq %rax, %rbx
movq 0x130(%rsp), %rdi
leaq 0x140(%rsp), %rax
cmpq %rax, %rdi
je 0x112c6
movq 0x140(%rsp), %rsi
jmp 0x1118e
jmp 0x112c3
movq %rax, %rbx
movq 0x230(%rsp), %rdi
cmpq %r15, %rdi
je 0x10fe5
movq 0x240(%rsp), %rsi
incq %rsi
callq 0x3200
jmp 0x10fe5
movq %rax, %rbx
movq 0x250(%rsp), %rdi
cmpq %r14, %rdi
je 0x112c6
movq 0x260(%rsp), %rsi
jmp 0x1118e
jmp 0x112c3
movq %rax, %rbx
cmpl $0x0, (%r15)
jne 0x11014
movl %ebp, (%r15)
leaq 0xf40(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x114e5
movq 0xf40(%rsp), %rsi
jmp 0x11071
movq %rax, %rbx
movq 0x310(%rsp), %rdi
cmpq %r15, %rdi
je 0x11058
movq 0x320(%rsp), %rsi
incq %rsi
callq 0x3200
jmp 0x11058
movq %rax, %rbx
movq 0x330(%rsp), %rdi
cmpq %r14, %rdi
je 0x114e5
movq 0x340(%rsp), %rsi
incq %rsi
callq 0x3200
jmp 0x114e5
movq %rax, %rbx
cmpl $0x0, (%r13)
jne 0x112c6
movl 0x8(%rsp), %eax
movl %eax, (%r13)
jmp 0x112c6
movq %rax, %rbx
movq 0x190(%rsp), %rdi
cmpq %r15, %rdi
je 0x110be
movq 0x1a0(%rsp), %rsi
incq %rsi
callq 0x3200
jmp 0x110be
movq %rax, %rbx
movq 0x1b0(%rsp), %rdi
cmpq %r14, %rdi
je 0x112c6
movq 0x1c0(%rsp), %rsi
jmp 0x1118e
jmp 0x112c3
movq %rax, %rbx
movq 0x170(%rsp), %rdi
cmpq %r14, %rdi
je 0x11106
movq 0x180(%rsp), %rsi
incq %rsi
callq 0x3200
jmp 0x11106
movq %rax, %rbx
movq 0x98(%rsp), %rdi
leaq 0xa8(%rsp), %rax
cmpq %rax, %rdi
je 0x11130
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x3200
jmp 0x11130
movq %rax, %rbx
movq 0x1d0(%rsp), %rdi
cmpq %r12, %rdi
je 0x112c6
movq 0x1e0(%rsp), %rsi
jmp 0x1118e
jmp 0x112c3
movq %rax, %rbx
movq 0x1f0(%rsp), %rdi
cmpq %r15, %rdi
je 0x11175
movq 0x200(%rsp), %rsi
incq %rsi
callq 0x3200
jmp 0x11175
movq %rax, %rbx
movq 0x210(%rsp), %rdi
cmpq %r14, %rdi
je 0x112c6
movq 0x220(%rsp), %rsi
incq %rsi
callq 0x3200
jmp 0x112c6
jmp 0x112c3
movq %rax, %rbx
movq 0x290(%rsp), %rdi
cmpq %r15, %rdi
je 0x111c5
movq 0x2a0(%rsp), %rsi
incq %rsi
callq 0x3200
jmp 0x111c5
movq %rax, %rbx
movq 0x2b0(%rsp), %rdi
cmpq %r14, %rdi
je 0x114d8
movq 0x2c0(%rsp), %rsi
incq %rsi
callq 0x3200
jmp 0x114d8
jmp 0x112b2
movq %rax, %rbx
leaq 0xa50(%rsp), %rdi
callq 0x1160c
jmp 0x112c6
jmp 0x112ba
jmp 0x1120c
movq %rax, %rbx
jmp 0x112f5
movq %rax, %rbx
jmp 0x11302
movq %rax, %rbx
jmp 0x11332
movq %rax, %rbx
jmp 0x1133f
movq %rax, %rbx
jmp 0x1134c
movq %rax, %rbx
jmp 0x1136d
movq %rax, %rbx
jmp 0x1138e
movq %rax, %rbx
jmp 0x113af
movq %rax, %rbx
jmp 0x113d0
movq %rax, %rbx
jmp 0x113dd
movq %rax, %rbx
jmp 0x113fe
movq %rax, %rbx
jmp 0x1141f
movq %rax, %rbx
jmp 0x11440
movq %rax, %rbx
jmp 0x11461
movq %rax, %rbx
jmp 0x1147d
movq %rax, %rbx
jmp 0x11497
movq %rax, %rbx
jmp 0x114a4
jmp 0x11298
jmp 0x11298
movq %rax, %rbx
jmp 0x114b1
movq %rax, %rbx
jmp 0x114be
movq %rax, %rbx
jmp 0x114cb
jmp 0x112b2
movq %rax, %rbx
jmp 0x114d8
movq %rax, %rbx
jmp 0x112e8
jmp 0x112c3
jmp 0x112c3
movq %rax, %rbx
movq 0x78(%rsp), %rdi
leaq 0x88(%rsp), %rax
cmpq %rax, %rdi
je 0x112e8
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0x1328(%rsp), %rdi
callq 0x11656
leaq 0x1170(%rsp), %rdi
callq 0x11690
leaq 0xaa27(%rip), %rax      # 0x1bd30
addq $0x10, %rax
leaq 0xba0(%rsp), %rcx
movq %rax, -0x68(%rcx)
movq -0x10(%rcx), %rdi
cmpq %rcx, %rdi
je 0x11332
movq 0xba0(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0xbf0(%rsp), %rdi
callq 0x116fa
leaq 0xcd0(%rsp), %rdi
callq 0x11734
leaq 0xa30(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1136d
movq 0xa30(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0x608(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1138e
movq 0x608(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0x690(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x113af
movq 0x690(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0x718(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x113d0
movq 0x718(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0xf30(%rsp), %rdi
callq 0x1176e
leaq 0x7a0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x113fe
movq 0x7a0(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0x828(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1141f
movq 0x828(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0x8b0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x11440
movq 0x8b0(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0x938(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x11461
movq 0x938(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0xa808(%rip), %rax      # 0x1bc70
addq $0x10, %rax
leaq 0xdb8(%rsp), %rdi
movq %rax, -0x8(%rdi)
callq 0x1160c
leaq 0xeb8(%rsp), %rdi
callq 0x1180a
leaq 0xe60(%rsp), %rdi
callq 0x1160c
leaq 0xae0(%rsp), %rdi
callq 0x1160c
leaq 0x958(%rsp), %rdi
callq 0x11862
leaq 0x4b0(%rsp), %rdi
callq 0x1160c
leaq 0x500(%rsp), %rdi
callq 0x1160c
leaq 0x550(%rsp), %rdi
callq 0x1160c
leaq 0x15c8(%rsp), %rdi
callq 0x3090
movq %rbx, %rdi
callq 0x3340
nop