// File: /workspace/github_cpp_makefile_star2_O1/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
movl %edi, %ebp
cmpl $0x1, %edi
jg 0xfc40
leaq 0x340(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x788b(%rip), %rsi      # 0x17441
leaq 0x7888(%rip), %rdx      # 0x17445
leaq 0x330(%rsp), %rdi
callq 0x5346
leaq 0x320(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x7869(%rip), %rsi      # 0x17446
leaq 0x787e(%rip), %rdx      # 0x17462
leaq 0x310(%rsp), %rdi
callq 0x5346
leaq 0x330(%rsp), %rdi
leaq 0x310(%rsp), %rsi
callq 0xdfd8
movq 0x310(%rsp), %rdi
cmpq %r15, %rdi
je 0xfc23
movq 0x320(%rsp), %rsi
incq %rsi
callq 0x3200
movq 0x330(%rsp), %rdi
cmpq %r14, %rdi
je 0xfc40
movq 0x340(%rsp), %rsi
incq %rsi
callq 0x3200
cmpl $0x3, %ebp
jne 0xfd8e
movq 0x10(%rbx), %rsi
leaq 0xf30(%rsp), %rdi
leaq 0x1170(%rsp), %rdx
callq 0x119fa
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 0x11291
movq %rax, %r14
movslq %r14d, %rax
cmpq %r14, %rax
jne 0x1129d
movl (%r15), %eax
cmpl $0x22, %eax
je 0x1129d
testl %eax, %eax
jne 0xfcbe
movl %ebp, (%r15)
leaq 0xf40(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xfcdf
movq 0xf40(%rsp), %rsi
incq %rsi
callq 0x3200
cmpl $0x3, %r14d
jb 0xfd87
leaq 0x300(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x7745(%rip), %rsi      # 0x17441
leaq 0x7742(%rip), %rdx      # 0x17445
leaq 0x2f0(%rsp), %rdi
callq 0x5346
leaq 0x2e0(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x773f(%rip), %rsi      # 0x17463
leaq 0x774d(%rip), %rdx      # 0x17478
leaq 0x2d0(%rsp), %rdi
callq 0x5346
leaq 0x2f0(%rsp), %rdi
leaq 0x2d0(%rsp), %rsi
callq 0xdfd8
movq 0x2d0(%rsp), %rdi
cmpq %r12, %rdi
je 0xfd6a
movq 0x2e0(%rsp), %rsi
incq %rsi
callq 0x3200
movq 0x2f0(%rsp), %rdi
cmpq %r15, %rdi
je 0xfd87
movq 0x300(%rsp), %rsi
incq %rsi
callq 0x3200
movl %r14d, 0xd452(%rip)     # 0x1d1e0
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 0xfe59
leaq 0x2c0(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x7672(%rip), %rsi      # 0x17441
leaq 0x766f(%rip), %rdx      # 0x17445
leaq 0x2b0(%rsp), %rdi
callq 0x5346
leaq 0x2a0(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x7683(%rip), %rsi      # 0x17479
leaq 0x7697(%rip), %rdx      # 0x17494
leaq 0x290(%rsp), %rdi
callq 0x5346
leaq 0x2b0(%rsp), %rdi
leaq 0x290(%rsp), %rsi
callq 0xdfd8
movq 0x290(%rsp), %rdi
cmpq %r15, %rdi
je 0xfe3c
movq 0x2a0(%rsp), %rsi
incq %rsi
callq 0x3200
movq 0x2b0(%rsp), %rdi
cmpq %r14, %rdi
je 0xfe59
movq 0x2c0(%rsp), %rsi
incq %rsi
callq 0x3200
callq 0x76a4
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 0x6538
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 0x6538
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 0x6538
leaq 0x390(%rsp), %r14
leaq 0x500(%rsp), %rsi
leaq 0x4b0(%rsp), %rdx
movq %r14, %rdi
callq 0x7404
leaq 0xaa0(%rsp), %rdi
callq 0xbc54
leaq 0x958(%rsp), %rdi
leaq 0xaa0(%rsp), %rsi
leaq 0x550(%rsp), %rdx
leaq 0x3b0(%rsp), %rcx
leaq 0x350(%rsp), %r8
callq 0xcd9c
leaq 0xae0(%rsp), %r15
leaq 0x350(%rsp), %rsi
movq %r15, %rdi
callq 0x12580
leaq 0xe60(%rsp), %r12
leaq 0x350(%rsp), %rsi
leaq 0x958(%rsp), %rdx
movq %r12, %rdi
callq 0x135ac
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 0x59d0
addq $0x30, %rsp
leaq 0x8d8(%rsp), %rdi
movq $0x0, -0x8(%rdi)
callq 0x7c0a
movb $0x0, 0x950(%rsp)
leaq 0x850(%rsp), %rdi
movq $0x0, -0x8(%rdi)
callq 0x7c0a
movb $0x0, 0x8c8(%rsp)
leaq 0x7c8(%rsp), %rdi
movq $0x0, -0x8(%rdi)
callq 0x7c0a
movb $0x0, 0x840(%rsp)
leaq 0x740(%rsp), %rdi
movq $0x0, -0x8(%rdi)
callq 0x7c0a
movb $0x0, 0x7b8(%rsp)
leaq 0xf30(%rsp), %rdi
leaq 0xae0(%rsp), %rsi
leaq 0xe60(%rsp), %rdx
leaq 0x14b8(%rsp), %rcx
callq 0xafac
leaq 0x6b8(%rsp), %rdi
movl $0x0, -0x8(%rdi)
callq 0x7c0a
movb $0x0, 0x730(%rsp)
leaq 0x630(%rsp), %rdi
movl $0x0, -0x8(%rdi)
callq 0x7c0a
movb $0x0, 0x6a8(%rsp)
leaq 0x5a8(%rsp), %rdi
movl $0x0, -0x8(%rdi)
callq 0x7c0a
movb $0x0, 0x620(%rsp)
leaq 0x9d0(%rsp), %rdi
movq $0x0, -0x8(%rdi)
callq 0x7c0a
leaq 0x9c8(%rsp), %rdx
movb $0x0, 0x80(%rdx)
leaq 0xcd0(%rsp), %rdi
leaq 0x848(%rsp), %rsi
leaq 0x350(%rsp), %rcx
callq 0x419e
leaq 0xbf0(%rsp), %rdi
leaq 0x7c0(%rsp), %rsi
leaq 0x628(%rsp), %rdx
leaq 0x350(%rsp), %rcx
callq 0x4b04
leaq 0xb38(%rsp), %rdi
leaq 0x738(%rsp), %rsi
leaq 0x5a0(%rsp), %rdx
leaq 0x17d0(%rsp), %rcx
leaq 0x350(%rsp), %r14
movq %r14, %r8
callq 0x121b4
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 0x15860
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 0x7654
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 0xb022
leaq 0xf30(%rsp), %rdi
leaq 0x848(%rsp), %rdx
movl $0x1, %esi
movl $0x1, %ecx
callq 0xb022
leaq 0xf30(%rsp), %rdi
leaq 0x7c0(%rsp), %rdx
movl $0x2, %esi
movl $0x2, %ecx
callq 0xb022
leaq 0xf30(%rsp), %rdi
leaq 0x738(%rsp), %rdx
movl $0x3, %esi
movl $0x3, %ecx
callq 0xb022
leaq 0xf30(%rsp), %rdi
leaq 0x628(%rsp), %rsi
callq 0xb046
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
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)
leaq 0x1(%r14), %rax
movl %eax, 0x1430(%rsp,%r14,4)
movq %rax, %r14
cmpq $0x20, %rax
jne 0x10374
leaq 0x88(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x6f61(%rip), %rdx      # 0x172fd
leaq 0x78(%rsp), %rdi
movq %rdx, %rsi
callq 0x5346
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
movq $0x0, 0x50(%rsp)
leaq 0x78(%rsp), %r14
leaq 0x6f3a(%rip), %r15      # 0x172fd
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 0x1098e
movq %r14, %rdi
movq %r15, %rsi
callq 0x30b0
testl %eax, %eax
je 0x103d3
cmpl $0xf4241, 0xc(%rsp)     # imm = 0xF4241
jb 0x1066e
leaq 0x140(%rsp), %rax
movq %rax, 0x130(%rsp)
leaq 0x130(%rsp), %rdi
leaq 0x6ff9(%rip), %rsi      # 0x17441
leaq 0x6ff6(%rip), %rdx      # 0x17445
callq 0x5346
leaq 0x40(%rsp), %rax
movq %rax, 0x30(%rsp)
leaq 0x30(%rsp), %rdi
leaq 0x702b(%rip), %rsi      # 0x17495
leaq 0x7038(%rip), %rdx      # 0x174a9
callq 0x5346
leaq 0x20(%rsp), %rax
movq %rax, 0x10(%rsp)
movl $0x7, %esi
leaq 0x10(%rsp), %rdi
movl $0x2d, %edx
callq 0x3250
movq 0x10(%rsp), %rdi
movl $0x7, %esi
movl $0xf4240, %edx          # imm = 0xF4240
callq 0xada0
movq 0x30(%rsp), %rcx
movl $0xf, %esi
leaq 0x40(%rsp), %rax
cmpq %rax, %rcx
je 0x104c1
movq 0x40(%rsp), %rsi
movq 0x38(%rsp), %r8
movq 0x18(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rsi, %rax
jbe 0x104ef
movl $0xf, %esi
leaq 0x20(%rsp), %rdi
cmpq %rdi, 0x10(%rsp)
je 0x104ea
movq 0x20(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x10500
movq 0x10(%rsp), %rsi
leaq 0x30(%rsp), %rdi
callq 0x30c0
jmp 0x1050e
leaq 0x10(%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 0x1053f
movq %rdx, 0x98(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xa8(%rsp)
jmp 0x10547
movdqu (%rcx), %xmm0
movdqu %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 0x6f39(%rip), %rsi      # 0x174aa
callq 0x3380
leaq 0x68(%rsp), %rsi
movq %rsi, 0x58(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x1059e
movq %rdx, 0x58(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x68(%rsp)
jmp 0x105a6
movdqu (%rcx), %xmm0
movdqu %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 0xdfd8
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0x105ec
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x3200
movq 0x98(%rsp), %rdi
leaq 0xa8(%rsp), %rax
cmpq %rax, %rdi
je 0x10611
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x3200
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x1062d
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x3200
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x10649
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x3200
movq 0x130(%rsp), %rdi
leaq 0x140(%rsp), %rax
cmpq %rax, %rdi
je 0x1066e
movq 0x140(%rsp), %rsi
incq %rsi
callq 0x3200
cmpl $-0x1, %ebp
je 0x107cf
testl %ebp, %ebp
jne 0x108cd
movq %r14, %rdi
leaq 0x6e32(%rip), %rsi      # 0x174bb
callq 0x30b0
movl $0x1, %ebp
testl %eax, %eax
je 0x103d3
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 0x112a9
movq %rax, %r12
movslq %r12d, %rax
cmpq %r12, %rax
leaq 0x150(%rsp), %rbp
jne 0x112b5
movl (%r13), %eax
cmpl $0x22, %eax
je 0x112b5
testl %eax, %eax
jne 0x10707
movl 0x8(%rsp), %eax
movl %eax, (%r13)
cmpl $0x64, %r12d
jl 0x10808
leaq 0x120(%rsp), %rax
movq %rax, 0x110(%rsp)
leaq 0x110(%rsp), %rdi
leaq 0x6994(%rip), %rsi      # 0x170c4
leaq 0x6993(%rip), %rdx      # 0x170ca
callq 0x5346
leaq 0x160(%rsp), %rax
movq %rax, 0x150(%rsp)
movq %rbp, %rdi
leaq 0x6d6b(%rip), %rsi      # 0x174c1
leaq 0x6d7f(%rip), %rdx      # 0x174dc
callq 0x5346
leaq 0x98(%rsp), %r12
leaq 0x110(%rsp), %rdi
movq %rbp, %rsi
callq 0xdfd8
movq 0x150(%rsp), %rdi
leaq 0x160(%rsp), %rax
cmpq %rax, %rdi
je 0x1079f
movq 0x160(%rsp), %rsi
incq %rsi
callq 0x3200
movq 0x110(%rsp), %rdi
xorl %ebp, %ebp
leaq 0x120(%rsp), %rax
cmpq %rax, %rdi
je 0x103d3
movq 0x120(%rsp), %rsi
incq %rsi
callq 0x3200
jmp 0x103d3
movq %r14, %rdi
leaq 0x6cdc(%rip), %rsi      # 0x174b5
callq 0x30b0
xorl %ebp, %ebp
testl %eax, %eax
je 0x103d3
movq %r14, %rdi
leaq 0x6cc9(%rip), %rsi      # 0x174bb
callq 0x30b0
negl %eax
movl $0x0, %ebp
sbbl %ebp, %ebp
orl $0x1, %ebp
jmp 0x103d3
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 0x30(%rsp), %rsi
movl $0xa, %edx
callq 0x3290
cmpq %rbp, 0x30(%rsp)
je 0x112c1
movq %rax, %rdx
addq $-0x80000000, %rax      # imm = 0x80000000
movabsq $-0x100000000, %rcx     # imm = 0xFFFFFFFF00000000
cmpq %rcx, %rax
leaq 0xa8(%rsp), %rcx
jb 0x112cd
movl (%r13), %eax
cmpl $0x22, %eax
je 0x112cd
testl %eax, %eax
jne 0x10891
movl 0x8(%rsp), %eax
movl %eax, (%r13)
movq 0x98(%rsp), %rdi
cmpq %rcx, %rdi
je 0x108b4
movq 0xa8(%rsp), %rsi
incq %rsi
movq %rdx, %r13
callq 0x3200
movq %r13, %rdx
movslq %r12d, %rax
movl %edx, 0x17d0(%rsp,%rax,4)
xorl %ebp, %ebp
leaq 0x98(%rsp), %r12
jmp 0x103d3
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 0x52b6
movq %r13, %rdi
movl 0xc(%rsp), %esi
movq %rbp, %rdx
callq 0x7c26
movq 0x270(%rsp), %rdi
cmpq %r12, %rdi
je 0x1092c
movq 0x280(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0xc8c1(%rip), %rdx      # 0x1d1f4
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 0x6456
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0x10979
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x3200
incl 0xc(%rsp)
movb $0x1, %al
movq %rax, 0x50(%rsp)
movl $0x1, %ebp
jmp 0x103d3
leaq 0x15c8(%rsp), %rdi
callq 0x3080
testb $0x1, 0x50(%rsp)
jne 0x10a43
leaq 0x260(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x670b(%rip), %rsi      # 0x170c4
leaq 0x670a(%rip), %rdx      # 0x170ca
leaq 0x250(%rsp), %rdi
callq 0x5346
leaq 0x240(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x6afd(%rip), %rsi      # 0x174dd
leaq 0x6b0a(%rip), %rdx      # 0x174f1
leaq 0x230(%rsp), %rdi
callq 0x5346
leaq 0x250(%rsp), %rdi
leaq 0x230(%rsp), %rsi
callq 0xdfd8
movq 0x230(%rsp), %rdi
cmpq %r15, %rdi
je 0x10a26
movq 0x240(%rsp), %rsi
incq %rsi
callq 0x3200
movq 0x250(%rsp), %rdi
cmpq %r14, %rdi
je 0x10a43
movq 0x260(%rsp), %rsi
incq %rsi
callq 0x3200
cmpl $0x0, 0xc796(%rip)      # 0x1d1e0
jle 0x10aed
leaq 0x220(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x69de(%rip), %rsi      # 0x17441
leaq 0x69db(%rip), %rdx      # 0x17445
leaq 0x210(%rsp), %rdi
callq 0x5346
leaq 0x200(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x6a68(%rip), %rsi      # 0x174f2
leaq 0x6a79(%rip), %rdx      # 0x1750a
leaq 0x1f0(%rsp), %rdi
callq 0x5346
leaq 0x210(%rsp), %rdi
leaq 0x1f0(%rsp), %rsi
callq 0xe2fa
movq 0x1f0(%rsp), %rdi
cmpq %r15, %rdi
je 0x10ad0
movq 0x200(%rsp), %rsi
incq %rsi
callq 0x3200
movq 0x210(%rsp), %rdi
cmpq %r14, %rdi
je 0x10aed
movq 0x220(%rsp), %rsi
incq %rsi
callq 0x3200
cmpb $0x0, 0xc714(%rip)      # 0x1d208
jne 0x10bc8
incl 0xc704(%rip)            # 0x1d204
leaq 0xdb0(%rsp), %rdi
callq 0x6160
leaq 0x1170(%rsp), %rdi
callq 0x1594a
leaq 0x1328(%rsp), %rdi
callq 0x3d24
leaq 0xcd0(%rsp), %rdi
callq 0x45d0
leaq 0xbf0(%rsp), %rdi
callq 0x4c8a
leaq 0xb38(%rsp), %rdi
callq 0x1220e
leaq 0xf30(%rsp), %rdi
callq 0xb04e
leaq 0x390(%rsp), %rdi
callq 0x741e
leaq 0xdb0(%rsp), %rdi
callq 0x61a0
leaq 0xf30(%rsp), %rdi
callq 0xb3b0
leaq 0x1328(%rsp), %rdi
callq 0x400c
leaq 0xcd0(%rsp), %rdi
callq 0x48b8
leaq 0xbf0(%rsp), %rdi
callq 0x4eec
leaq 0xb38(%rsp), %rdi
callq 0x123fc
leaq 0x1170(%rsp), %rdi
callq 0x15f44
jmp 0x10aed
cmpl $0x0, 0xc611(%rip)      # 0x1d1e0
jle 0x10d77
leaq 0x1e0(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x6858(%rip), %rsi      # 0x17441
leaq 0x6855(%rip), %rdx      # 0x17445
leaq 0x1d0(%rsp), %rdi
callq 0x5346
movl 0xc601(%rip), %ebx      # 0x1d204
movl %ebx, %ebp
negl %ebp
cmovsl %ebx, %ebp
movl $0x1, %r14d
cmpl $0xa, %ebp
jb 0x10c5e
movl $0x4, %r14d
movl $0xd1b71759, %eax       # imm = 0xD1B71759
movl %ebp, %ecx
cmpl $0x63, %ecx
jbe 0x10c55
cmpl $0x3e7, %ecx            # imm = 0x3E7
jbe 0x10c5b
cmpl $0x2710, %ecx           # imm = 0x2710
jb 0x10c5e
movl %ecx, %edx
imulq %rax, %rdx
shrq $0x2d, %rdx
addl $0x4, %r14d
cmpl $0x1869f, %ecx          # imm = 0x1869F
movl %edx, %ecx
ja 0x10c22
addl $-0x3, %r14d
jmp 0x10c5e
addl $-0x2, %r14d
jmp 0x10c5e
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 0xada0
leaq 0x686a(%rip), %rcx      # 0x1750b
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 0x10ceb
movq %rdx, 0x170(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x180(%rsp)
jmp 0x10cf4
movdqu (%rcx), %xmm0
movdqu %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 0xe2fa
movq 0x170(%rsp), %rdi
cmpq %r14, %rdi
je 0x10d3d
movq 0x180(%rsp), %rsi
incq %rsi
callq 0x3200
movq 0x98(%rsp), %rdi
cmpq %rbx, %rdi
je 0x10d5a
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x3200
movq 0x1d0(%rsp), %rdi
cmpq %r12, %rdi
je 0x10d77
movq 0x1e0(%rsp), %rsi
incq %rsi
callq 0x3200
movq 0xc25a(%rip), %rdi      # 0x1cfd8
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x31e0
movsbl %al, %esi
movq 0xc23f(%rip), %rbx      # 0x1cfd8
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3180
leaq 0xa50(%rsp), %rdi
leaq 0x550(%rsp), %rsi
callq 0x11a38
leaq 0xa50(%rsp), %rdi
callq 0xf020
leaq 0xa50(%rsp), %rdi
callq 0x11b14
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x31e0
movsbl %al, %esi
movq 0xc1e2(%rip), %rbx      # 0x1cfd8
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3180
leaq 0x14b8(%rsp), %rdi
leaq 0x3b0(%rsp), %rsi
callq 0xec38
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x31e0
movsbl %al, %esi
movq 0xc19f(%rip), %rbx      # 0x1cfd8
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3180
leaq 0x17d0(%rsp), %rdi
callq 0xee92
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x31e0
movsbl %al, %esi
movq 0xc164(%rip), %rdi      # 0x1cfd8
callq 0x3030
movq %rax, %rdi
callq 0x3180
cmpl $0x0, 0xc358(%rip)      # 0x1d1e0
jle 0x10f2b
leaq 0x1c0(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x65a0(%rip), %rsi      # 0x17441
leaq 0x659d(%rip), %rdx      # 0x17445
leaq 0x1b0(%rsp), %rdi
callq 0x5346
leaq 0x1a0(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x6669(%rip), %rsi      # 0x17531
leaq 0x66a2(%rip), %rdx      # 0x17571
leaq 0x190(%rsp), %rdi
callq 0x5346
leaq 0x1b0(%rsp), %rdi
leaq 0x190(%rsp), %rsi
callq 0xe2fa
movq 0x190(%rsp), %rdi
cmpq %r15, %rdi
je 0x10f0e
movq 0x1a0(%rsp), %rsi
incq %rsi
callq 0x3200
movq 0x1b0(%rsp), %rdi
cmpq %r14, %rdi
je 0x10f2b
movq 0x1c0(%rsp), %rsi
incq %rsi
callq 0x3200
movq 0x78(%rsp), %rdi
leaq 0x88(%rsp), %rax
cmpq %rax, %rdi
je 0x10f4d
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0xbc4c(%rip), %rax      # 0x1cba0
addq $0x10, %rax
leaq 0x13a8(%rsp), %rbx
movq %rax, -0x80(%rbx)
movq %rbx, %rdi
callq 0x5266
movq -0x28(%rbx), %rdi
leaq 0x1390(%rsp), %rax
cmpq %rax, %rdi
je 0x10f8d
movq 0x1390(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0xbddc(%rip), %rax      # 0x1cd70
addq $0x10, %rax
leaq 0x12e0(%rsp), %rcx
movq %rax, -0x170(%rcx)
movq -0x10(%rcx), %rdi
cmpq %rcx, %rdi
je 0x10fc0
movq 0x12e0(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0x1260(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10fe1
movq 0x1260(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0x11e0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x11002
movq 0x11e0(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0xbd27(%rip), %rax      # 0x1cd30
addq $0x10, %rax
leaq 0xba0(%rsp), %rcx
movq %rax, -0x68(%rcx)
movq -0x10(%rcx), %rdi
cmpq %rcx, %rdi
je 0x11032
movq 0xba0(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0xbbb7(%rip), %rax      # 0x1cbf0
addq $0x10, %rax
leaq 0xc70(%rsp), %rbx
movq %rax, -0x80(%rbx)
movq %rbx, %rdi
callq 0x5266
movq -0x28(%rbx), %rdi
leaq 0xc58(%rsp), %rax
cmpq %rax, %rdi
je 0x11072
movq 0xc58(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0xbb4f(%rip), %rax      # 0x1cbc8
addq $0x10, %rax
leaq 0xd50(%rsp), %rbx
movq %rax, -0x80(%rbx)
movq %rbx, %rdi
callq 0x5266
movq -0x28(%rbx), %rdi
leaq 0xd38(%rsp), %rax
cmpq %rax, %rdi
je 0x110b2
movq 0xd38(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0xa30(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x110d3
movq 0xa30(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0x608(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x110f4
movq 0x608(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0x690(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x11115
movq 0x690(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0x718(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x11136
movq 0x718(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0xbbb3(%rip), %rax      # 0x1ccf0
addq $0x10, %rax
leaq 0x1100(%rsp), %rbx
movq %rax, -0x1d0(%rbx)
movq $-0x1e0, %r14           # imm = 0xFE20
movq -0x10(%rbx), %rdi
cmpq %rdi, %rbx
je 0x1116b
movq (%rbx), %rsi
incq %rsi
callq 0x3200
addq $-0x78, %rbx
addq $0x78, %r14
jne 0x11157
leaq 0x7a0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x11196
movq 0x7a0(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0x828(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x111b7
movq 0x828(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0x8b0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x111d8
movq 0x8b0(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0x938(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x111f9
movq 0x938(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0xba70(%rip), %rax      # 0x1cc70
addq $0x10, %rax
leaq 0xdb8(%rsp), %rdi
movq %rax, -0x8(%rdi)
callq 0x11b14
leaq 0xeb8(%rsp), %rdi
callq 0x11d12
leaq 0xe60(%rsp), %rdi
callq 0x11b14
leaq 0xae0(%rsp), %rdi
callq 0x11b14
leaq 0x958(%rsp), %rdi
callq 0x11d62
leaq 0x4b0(%rsp), %rdi
callq 0x11b14
leaq 0x500(%rsp), %rdi
callq 0x11b14
leaq 0x550(%rsp), %rdi
callq 0x11b14
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 0x62da(%rip), %rdi      # 0x17572
callq 0x3160
leaq 0x62ce(%rip), %rdi      # 0x17572
callq 0x32b0
leaq 0x62c2(%rip), %rdi      # 0x17572
callq 0x3160
leaq 0x62b6(%rip), %rdi      # 0x17572
callq 0x32b0
leaq 0x62aa(%rip), %rdi      # 0x17572
callq 0x3160
leaq 0x629e(%rip), %rdi      # 0x17572
callq 0x32b0
movq %rax, %rbx
movq 0x270(%rsp), %rdi
cmpq %r12, %rdi
je 0x117cc
movq 0x280(%rsp), %rsi
jmp 0x1165e
jmp 0x117c9
movq %rax, %rbx
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0x117cc
movq 0xf8(%rsp), %rsi
jmp 0x1165e
jmp 0x117c9
movq %rax, %rbx
movq 0x150(%rsp), %rdi
leaq 0x160(%rsp), %rax
cmpq %rax, %rdi
je 0x1135a
movq 0x160(%rsp), %rsi
incq %rsi
callq 0x3200
jmp 0x1135a
movq %rax, %rbx
movq 0x110(%rsp), %rdi
leaq 0x120(%rsp), %rax
cmpq %rax, %rdi
je 0x117cc
movq 0x120(%rsp), %rsi
jmp 0x1165e
jmp 0x117c9
movq %rax, %rbx
movq 0x2d0(%rsp), %rdi
cmpq %r12, %rdi
je 0x113aa
movq 0x2e0(%rsp), %rsi
incq %rsi
callq 0x3200
jmp 0x113aa
movq %rax, %rbx
movq 0x2f0(%rsp), %rdi
cmpq %r15, %rdi
je 0x119eb
movq 0x300(%rsp), %rsi
jmp 0x117b3
movq %rax, %rbx
cmpl $0x0, (%r13)
jne 0x113da
movl 0x8(%rsp), %eax
movl %eax, (%r13)
movq 0x98(%rsp), %rdi
leaq 0xa8(%rsp), %rax
cmpq %rax, %rdi
je 0x117cc
movq 0xa8(%rsp), %rsi
jmp 0x1165e
movq %rax, %rbx
jmp 0x11429
movq %rax, %rbx
jmp 0x1146f
movq %rax, %rbx
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0x11429
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x3200
movq 0x98(%rsp), %rdi
leaq 0xa8(%rsp), %rax
cmpq %rax, %rdi
je 0x11453
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x3200
jmp 0x11453
movq %rax, %rbx
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x1146f
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x3200
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x11490
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x3200
jmp 0x11490
movq %rax, %rbx
movq 0x130(%rsp), %rdi
leaq 0x140(%rsp), %rax
cmpq %rax, %rdi
je 0x117cc
movq 0x140(%rsp), %rsi
jmp 0x1165e
jmp 0x117c9
movq %rax, %rbx
movq 0x230(%rsp), %rdi
cmpq %r15, %rdi
je 0x114e0
movq 0x240(%rsp), %rsi
incq %rsi
callq 0x3200
jmp 0x114e0
movq %rax, %rbx
movq 0x250(%rsp), %rdi
cmpq %r14, %rdi
je 0x117cc
movq 0x260(%rsp), %rsi
jmp 0x1165e
jmp 0x117c9
movq %rax, %rbx
jmp 0x119eb
movq %rax, %rbx
movq 0x310(%rsp), %rdi
cmpq %r15, %rdi
je 0x11530
movq 0x320(%rsp), %rsi
incq %rsi
callq 0x3200
jmp 0x11530
movq %rax, %rbx
movq 0x330(%rsp), %rdi
cmpq %r14, %rdi
je 0x119eb
movq 0x340(%rsp), %rsi
jmp 0x117b3
movq %rax, %rbx
cmpl $0x0, (%r13)
jne 0x117cc
movl 0x8(%rsp), %eax
movl %eax, (%r13)
jmp 0x117cc
movq %rax, %rbx
movq 0x190(%rsp), %rdi
cmpq %r15, %rdi
je 0x1158e
movq 0x1a0(%rsp), %rsi
incq %rsi
callq 0x3200
jmp 0x1158e
movq %rax, %rbx
movq 0x1b0(%rsp), %rdi
cmpq %r14, %rdi
je 0x117cc
movq 0x1c0(%rsp), %rsi
jmp 0x1165e
jmp 0x117c9
movq %rax, %rbx
movq 0x170(%rsp), %rdi
cmpq %r14, %rdi
je 0x115d6
movq 0x180(%rsp), %rsi
incq %rsi
callq 0x3200
jmp 0x115d6
movq %rax, %rbx
movq 0x98(%rsp), %rdi
leaq 0xa8(%rsp), %rax
cmpq %rax, %rdi
je 0x11600
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x3200
jmp 0x11600
movq %rax, %rbx
movq 0x1d0(%rsp), %rdi
cmpq %r12, %rdi
je 0x117cc
movq 0x1e0(%rsp), %rsi
jmp 0x1165e
jmp 0x117c9
movq %rax, %rbx
movq 0x1f0(%rsp), %rdi
cmpq %r15, %rdi
je 0x11645
movq 0x200(%rsp), %rsi
incq %rsi
callq 0x3200
jmp 0x11645
movq %rax, %rbx
movq 0x210(%rsp), %rdi
cmpq %r14, %rdi
je 0x117cc
movq 0x220(%rsp), %rsi
incq %rsi
callq 0x3200
jmp 0x117cc
jmp 0x117c9
movq %rax, %rbx
movq 0x290(%rsp), %rdi
cmpq %r15, %rdi
je 0x11695
movq 0x2a0(%rsp), %rsi
incq %rsi
callq 0x3200
jmp 0x11695
movq %rax, %rbx
movq 0x2b0(%rsp), %rdi
cmpq %r14, %rdi
je 0x119de
movq 0x2c0(%rsp), %rsi
incq %rsi
callq 0x3200
jmp 0x119de
jmp 0x11782
movq %rax, %rbx
leaq 0xa50(%rsp), %rdi
callq 0x11b14
jmp 0x117cc
jmp 0x117c0
jmp 0x116dc
movq %rax, %rbx
jmp 0x117fb
movq %rax, %rbx
jmp 0x11808
movq %rax, %rbx
jmp 0x11838
movq %rax, %rbx
jmp 0x11845
movq %rax, %rbx
jmp 0x11852
movq %rax, %rbx
jmp 0x11873
movq %rax, %rbx
jmp 0x11894
movq %rax, %rbx
jmp 0x118b5
movq %rax, %rbx
jmp 0x118d6
movq %rax, %rbx
jmp 0x118e3
movq %rax, %rbx
jmp 0x11904
movq %rax, %rbx
jmp 0x11925
movq %rax, %rbx
jmp 0x11946
movq %rax, %rbx
jmp 0x11967
movq %rax, %rbx
jmp 0x11983
movq %rax, %rbx
jmp 0x1199d
movq %rax, %rbx
jmp 0x119aa
jmp 0x11768
jmp 0x11768
movq %rax, %rbx
jmp 0x119b7
movq %rax, %rbx
jmp 0x119c4
movq %rax, %rbx
jmp 0x119d1
jmp 0x11782
movq %rax, %rbx
jmp 0x119de
movq %rax, %rbx
cmpl $0x0, (%r15)
jne 0x11796
movl %ebp, (%r15)
leaq 0xf40(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x119eb
movq 0xf40(%rsp), %rsi
incq %rsi
callq 0x3200
jmp 0x119eb
movq %rax, %rbx
jmp 0x117ee
jmp 0x117c9
jmp 0x117c9
movq %rax, %rbx
movq 0x78(%rsp), %rdi
leaq 0x88(%rsp), %rax
cmpq %rax, %rdi
je 0x117ee
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0x1328(%rsp), %rdi
callq 0x11b5e
leaq 0x1170(%rsp), %rdi
callq 0x11b98
leaq 0xb521(%rip), %rax      # 0x1cd30
addq $0x10, %rax
leaq 0xba0(%rsp), %rcx
movq %rax, -0x68(%rcx)
movq -0x10(%rcx), %rdi
cmpq %rcx, %rdi
je 0x11838
movq 0xba0(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0xbf0(%rsp), %rdi
callq 0x11c02
leaq 0xcd0(%rsp), %rdi
callq 0x11c3c
leaq 0xa30(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x11873
movq 0xa30(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0x608(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x11894
movq 0x608(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0x690(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x118b5
movq 0x690(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0x718(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x118d6
movq 0x718(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0xf30(%rsp), %rdi
callq 0x11c76
leaq 0x7a0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x11904
movq 0x7a0(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0x828(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x11925
movq 0x828(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0x8b0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x11946
movq 0x8b0(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0x938(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x11967
movq 0x938(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0xb302(%rip), %rax      # 0x1cc70
addq $0x10, %rax
leaq 0xdb8(%rsp), %rdi
movq %rax, -0x8(%rdi)
callq 0x11b14
leaq 0xeb8(%rsp), %rdi
callq 0x11d12
leaq 0xe60(%rsp), %rdi
callq 0x11b14
leaq 0xae0(%rsp), %rdi
callq 0x11b14
leaq 0x958(%rsp), %rdi
callq 0x11d62
leaq 0x4b0(%rsp), %rdi
callq 0x11b14
leaq 0x500(%rsp), %rdi
callq 0x11b14
leaq 0x550(%rsp), %rdi
callq 0x11b14
leaq 0x15c8(%rsp), %rdi
callq 0x3090
movq %rbx, %rdi
callq 0x3340
nop