// File: /workspace/github_cpp_makefile_star2_O3/rthoelen[P]NXCore_Kenwood/main.cc
// Function: main
int main(int argc, char *argv[])
{
	unsigned int i, j;
	int len;
	struct addrinfo hints, *result;

	boost::property_tree::ptree pt;

	try {

	boost::property_tree::ini_parser::read_ini("NXCore.ini", pt);

	}
	catch(const boost::property_tree::ptree_error  &e)
	{
		std::cout << "Config file not found!" << std::endl << std::endl;
		exit(1);
	}


	if(argc > 1)
		if (strcmp(argv[1], "-d") == 0)
			debug = 1;

	// Print out version and copyright info
	std::cout << version << std::endl;
	std::cout << copyright << std::endl << std::endl;

	// Get list of repeaters

	std::string s = pt.get<std::string>("repeaters");
	std::string tg;

	std::vector<std::string> elems;
	std::vector<std::string> tg_elems;

	// Split by space or tab
	boost::split(elems, s, boost::is_any_of("\t ,"), boost::token_compress_on);

	repeater_count = elems.size();
	std::cout << "Repeater Count:  " << repeater_count << std::endl << std::endl;

	r_list = elems;

	repeater = (struct rpt *)calloc(repeater_count, sizeof(struct rpt));


	tempaddr = inet_addr(pt.get<std::string>("nodeip").c_str());

	up_packet[4] = (tempaddr >> 24);
	up_packet[5] = (tempaddr >> 16) & 0xff;
	up_packet[6] = (tempaddr >> 8) & 0xff;
	up_packet[7] = (tempaddr & 0xff);

	down_packet[4] = (tempaddr >> 24);
	down_packet[5] = (tempaddr >> 16) & 0xff;
	down_packet[6] = (tempaddr >> 8) & 0xff;
	down_packet[7] = (tempaddr & 0xff);


	// Start populating structure
	std::string key;

	for(i = 0; i < elems.size(); i++)
	{

		key.assign(elems[i]);
		key.append(".address");

		memset(&hints,0, sizeof(hints));
		hints.ai_family = AF_INET;

		
		len = pt.get<std::string>(key).size();
		repeater[i].hostname = (char *)calloc(1, len+1);
		memcpy(repeater[i].hostname, (char *)pt.get<std::string>(key).c_str(),len+1);

		if(getaddrinfo(repeater[i].hostname, NULL, &hints, &result) == -1)
		{
			std::cout << "Error resolving " << pt.get<std::string>(key) << ", exiting" << std::endl;
			exit(1);
		}	
	
		repeater[i].rpt_addr_00.sin_addr.s_addr = ((struct sockaddr_in *)(result->ai_addr))->sin_addr.s_addr;
		repeater[i].rpt_addr_01.sin_addr.s_addr = ((struct sockaddr_in *)(result->ai_addr))->sin_addr.s_addr;
		repeater[i].rpt_addr_00.sin_family = AF_INET;
		repeater[i].rpt_addr_01.sin_family = AF_INET;
		repeater[i].rpt_addr_00.sin_port = htons(64000);
		repeater[i].rpt_addr_01.sin_port = htons(64001);
		
		freeaddrinfo(result);
		std::cout << std::endl << std::endl;
		std::cout << "Repeater " << r_list[i] << " address: " 
			<< inet_ntoa(repeater[i].rpt_addr_00.sin_addr) << std::endl << std::endl;

		// Parse out the talkgroups

		key.assign(elems[i]);
		key.append(".tg_list");
		tg = pt.get<std::string>(key).c_str();

		boost::split(tg_elems, tg, boost::is_any_of("\t ,"), boost::token_compress_on);
	
		repeater[i].tg_list = (int *)calloc(tg_elems.size()+1,sizeof(int));
		std::cout << "Talkgroups " << tg_elems.size() << std::endl; 
		std::cout << "Repeater " << r_list[i] << "  Talkgroups: ";

		for(j = 0; j < tg_elems.size(); j++)
		{
			repeater[i].tg_list[j] = atoi(tg_elems[j].c_str());
			std::cout << " " << repeater[i].tg_list[j];

		}
		std::cout << std::endl;

		// Do the same for the tactical list

		key.assign(elems[i]);
		key.append(".tac_list");
		tg = pt.get<std::string>(key).c_str();

		boost::split(tg_elems, tg, boost::is_any_of("\t ,"), boost::token_compress_on);
	
		repeater[i].tac_list = (int *)calloc(tg_elems.size()+1,sizeof(int));
		std::cout << "Tactical Talkgroups " << tg_elems.size() << std::endl; 
		std::cout << "Repeater " << i << "  Tactical Talkgroup List: ";

		for(j = 0; j < tg_elems.size(); j++)
		{
			repeater[i].tac_list[j] = atoi(tg_elems[j].c_str());
			std::cout << " " << repeater[i].tac_list[j];

		}


		std::cout << std::endl << std::endl;
		repeater[i].tx_ran = pt.get<int>(elems[i] + ".tx_ran");
		repeater[i].rx_ran = pt.get<int>(elems[i] + ".rx_ran");
		repeater[i].hold_time = pt.get<int>(elems[i] + ".rx_hold_time");
		repeater[i].time_since_rx = repeater[i].hold_time;
		repeater[i].stealth = pt.get<int>(elems[i] + ".stealth");
		repeater[i].tx_hold_time = pt.get<int>(elems[i] + ".tx_hold_time");
		repeater[i].time_since_tx = repeater[i].tx_hold_time;
		repeater[i].tx_otaa = pt.get<int>(elems[i] + ".tx_otaa");

                try {
                        repeater[i].tg_network_off = pt.get<int>(elems[i] + ".tg_network_off");
                        repeater[i].tg_network_on = pt.get<int>(elems[i] + ".tg_network_on");
                }
                catch(const boost::property_tree::ptree_error &e)
                {
                        repeater[i].tg_network_off = 0;
                        repeater[i].tg_network_on = 0;
                }
		
		try {
			repeater[i].msg_flag = pt.get<int>(elems[i] + ".msg_flag");
		}
		catch(const boost::property_tree::ptree_error &e)
		{
			repeater[i].msg_flag = 0;
		}

	}

	//

	tx_sem = 0;
	tx_busy_sem = 0;

	// start the threads


	pthread_t l_thread;
	pthread_t t_thread;

	if(pthread_create(&l_thread, NULL, listen_thread, (void *)0))  {
		fprintf(stderr, "Problem creating thread.  Exiting\n");
		return 1; 
	}
	
	if(pthread_create(&t_thread, NULL, timing_thread, (void *)0))  {
		fprintf(stderr, "Problem creating thread.  Exiting\n");
		return 1; 
	}

	int counter = 0;


	while(1==1)
	{
	
		sleep(10);
		counter++;

		if (counter > 90)
		{
			while(tx_sem==1)
				usleep(1);
			tx_sem = 1;
		
			for (i = 0; i < (unsigned int)repeater_count; i++)
			{
                       		if(getaddrinfo(repeater[i].hostname, NULL, &hints, &result) == 0)
                        	{
                                	repeater[i].rpt_addr_00.sin_addr.s_addr = ((struct sockaddr_in *)(result->ai_addr))->sin_addr.s_addr;
                                	repeater[i].rpt_addr_01.sin_addr.s_addr = ((struct sockaddr_in *)(result->ai_addr))->sin_addr.s_addr;
				freeaddrinfo(result);
                        	}
			}
			tx_sem = 0;
		counter = 0;
		}

	}
	pthread_exit(NULL);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1f8, %rsp            # imm = 0x1F8
movq %rsi, %rbx
movl %edi, %r14d
leaq -0x110(%rbp), %r12
movq %r12, -0x10(%r12)
movq $0x0, -0x8(%r12)
movb $0x0, (%r12)
movl $0x20, %edi
callq 0x4300
movq %rax, %r15
movl $0x70, %edi
callq 0x4300
movq %rax, 0x8(%r15)
leaq 0x48(%rax), %rcx
xorl %edx, %edx
movq %rdx, 0x48(%rax)
movq %rcx, 0x50(%rax)
movq %rcx, 0x58(%rax)
movq %rax, %rcx
addq $0x60, %rcx
movq %rcx, 0x68(%rax)
movq %rcx, 0x60(%rax)
movq %rdx, 0x18(%r15)
movq %r15, -0x100(%rbp)
leaq -0x68(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x8d1b(%rip), %rsi      # 0xf367
leaq 0x8d1e(%rip), %rdx      # 0xf371
leaq -0x78(%rbp), %rdi
callq 0x8b14
leaq -0x170(%rbp), %r15
movq %r15, %rdi
callq 0x45d0
leaq -0x78(%rbp), %rdi
leaq -0x120(%rbp), %rsi
movq %r15, %rdx
callq 0x856a
leaq -0x170(%rbp), %rdi
callq 0x4440
movq -0x78(%rbp), %rdi
leaq -0x68(%rbp), %rax
cmpq %rax, %rdi
je 0x66a3
movq -0x68(%rbp), %rsi
incq %rsi
callq 0x4320
cmpl $0x1, %r14d
jle 0x66c8
movq 0x8(%rbx), %rax
cmpb $0x2d, (%rax)
jne 0x66c8
cmpb $0x64, 0x1(%rax)
jne 0x66c8
cmpb $0x0, 0x2(%rax)
jne 0x66c8
movl $0x1, 0xed14(%rip)      # 0x153dc
leaq 0xec31(%rip), %r14      # 0x15300
movq %r14, %rdi
callq 0x4120
movq 0xe8f2(%rip), %rbx      # 0x14fd0
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x4370
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x42f0
movsbl %al, %esi
movq 0xe8c6(%rip), %rdi      # 0x14fd0
callq 0x4040
movq %rax, %rdi
callq 0x41f0
leaq 0xec12(%rip), %r14      # 0x15330
movq %r14, %rdi
callq 0x4120
movq 0xe8a3(%rip), %rbx      # 0x14fd0
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x4370
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x42f0
movsbl %al, %esi
movq 0xe877(%rip), %rdi      # 0x14fd0
callq 0x4040
movq %rax, %rdi
callq 0x41f0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x42f0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x4040
movq %rax, %rdi
callq 0x41f0
leaq -0x78(%rbp), %rdi
leaq -0x68(%rbp), %rax
movq %rax, (%rdi)
leaq 0x8be7(%rip), %rsi      # 0xf389
leaq 0x8be9(%rip), %rdx      # 0xf392
callq 0x8b14
leaq -0x78(%rbp), %rsi
movb $0x2e, 0x20(%rsi)
movq (%rsi), %rax
movq %rax, 0x28(%rsi)
leaq -0x120(%rbp), %rdi
callq 0xbb3e
leaq -0x170(%rbp), %rdi
movq %rax, %rsi
callq 0xc884
movq -0x78(%rbp), %rdi
leaq -0x68(%rbp), %rax
cmpq %rax, %rdi
je 0x67f1
movq -0x68(%rbp), %rsi
incq %rsi
callq 0x4320
leaq -0x140(%rbp), %rcx
movq %rcx, -0x10(%rcx)
xorl %eax, %eax
movq %rax, -0x8(%rcx)
movb $0x0, (%rcx)
movq %rax, -0xa0(%rbp)
xorps %xmm0, %xmm0
movaps %xmm0, -0xb0(%rbp)
movq %rax, -0xc0(%rbp)
movaps %xmm0, -0xd0(%rbp)
leaq 0x8b68(%rip), %rax      # 0xf393
leaq -0x78(%rbp), %rsi
movq %rax, (%rsi)
leaq 0x8b5d(%rip), %rax      # 0xf396
movq %rax, 0x8(%rsi)
leaq -0x1b8(%rbp), %rdi
callq 0xcf8a
leaq -0xb0(%rbp), %rdi
leaq -0x170(%rbp), %rsi
leaq -0x1b8(%rbp), %rdx
xorl %ecx, %ecx
callq 0x879f
cmpq $0x11, -0x1a8(%rbp)
jb 0x6880
movq -0x1b8(%rbp), %rdi
testq %rdi, %rdi
je 0x6880
callq 0x43d0
movq -0xa8(%rbp), %rax
subq -0xb0(%rbp), %rax
shrq $0x5, %rax
movl %eax, 0xeb40(%rip)      # 0x153d8
movq 0xe731(%rip), %rdi      # 0x14fd0
leaq 0x8af1(%rip), %rsi      # 0xf397
movl $0x11, %edx
callq 0x4370
movl 0xeb22(%rip), %esi      # 0x153d8
movq 0xe713(%rip), %rbx      # 0x14fd0
movq %rbx, %rdi
callq 0x4520
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x42f0
movsbl %al, %esi
movq %r14, %rdi
callq 0x4040
movq %rax, %rdi
callq 0x41f0
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x42f0
movsbl %al, %esi
movq %r14, %rdi
callq 0x4040
movq %rax, %rdi
callq 0x41f0
leaq 0xeac0(%rip), %rdi      # 0x153e0
leaq -0xb0(%rbp), %rsi
callq 0x8922
movslq 0xeaa5(%rip), %rdi      # 0x153d8
movl $0x90, %esi
callq 0x41d0
movq %rax, 0xea8c(%rip)      # 0x153d0
leaq -0x78(%rbp), %rdi
leaq -0x68(%rbp), %rax
movq %rax, (%rdi)
leaq 0x8a53(%rip), %rsi      # 0xf3a9
leaq 0x8a52(%rip), %rdx      # 0xf3af
callq 0x8b14
leaq -0x78(%rbp), %rsi
movb $0x2e, 0x20(%rsi)
movq (%rsi), %rax
movq %rax, 0x28(%rsi)
leaq -0x120(%rbp), %rdi
callq 0xbb3e
leaq -0xf0(%rbp), %rdi
movq %rax, %rsi
callq 0xc884
leaq -0xe0(%rbp), %r14
movq -0x10(%r14), %rdi
callq 0x4310
movl %eax, 0xea56(%rip)      # 0x153f8
movq -0x10(%r14), %rdi
cmpq %r14, %rdi
je 0x69ba
movq -0xe0(%rbp), %rsi
incq %rsi
callq 0x4320
movq -0x78(%rbp), %rdi
leaq -0x68(%rbp), %rax
cmpq %rax, %rdi
je 0x69d3
movq -0x68(%rbp), %rsi
incq %rsi
callq 0x4320
movl 0xea1f(%rip), %eax      # 0x153f8
movl %eax, %ecx
shrl $0x18, %ecx
movl %eax, %edx
shrl $0x10, %edx
movb %cl, 0xe99b(%rip)       # 0x15384
movb %dl, 0xe996(%rip)       # 0x15385
movb %ah, 0xe991(%rip)       # 0x15386
movb %al, 0xe98c(%rip)       # 0x15387
bswapl %eax
movl %eax, 0xe961(%rip)      # 0x15364
leaq -0xe0(%rbp), %rax
movq %rax, -0xf0(%rbp)
movq $0x0, -0xe8(%rbp)
movb $0x0, -0xe0(%rbp)
movq -0xb0(%rbp), %rsi
cmpq %rsi, -0xa8(%rbp)
jne 0x6b3a
xorl %eax, %eax
movl %eax, 0xe9c5(%rip)      # 0x15404
movl %eax, 0xe9c3(%rip)      # 0x15408
leaq -0x21e8(%rip), %rdx     # 0x4864
leaq -0x78(%rbp), %rdi
xorl %esi, %esi
xorl %ecx, %ecx
callq 0x4560
testl %eax, %eax
jne 0x6a7c
leaq -0x7e7(%rip), %rdx      # 0x627d
xorl %r15d, %r15d
leaq -0x48(%rbp), %rdi
xorl %esi, %esi
xorl %ecx, %ecx
callq 0x4560
testl %eax, %eax
je 0x7e7e
movq 0xe555(%rip), %rax      # 0x14fd8
movq (%rax), %rcx
leaq 0x8a0c(%rip), %rdi      # 0xf499
movl $0x22, %esi
movl $0x1, %edx
callq 0x45c0
movq -0xf0(%rbp), %rdi
leaq -0xe0(%rbp), %rax
cmpq %rax, %rdi
je 0x6abe
movq -0xe0(%rbp), %rsi
incq %rsi
callq 0x4320
leaq -0xd0(%rbp), %rdi
callq 0x835c
leaq -0xb0(%rbp), %rdi
callq 0x835c
movq -0x150(%rbp), %rdi
leaq -0x140(%rbp), %rax
cmpq %rax, %rdi
je 0x6af8
movq -0x140(%rbp), %rsi
incq %rsi
callq 0x4320
leaq -0x160(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x6b17
movq -0x160(%rbp), %rsi
incq %rsi
callq 0x4320
leaq -0x120(%rbp), %rdi
callq 0x8ad0
movl $0x1, %eax
addq $0x1f8, %rsp            # imm = 0x1F8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
xorl %r12d, %r12d
movq %r12, -0xf8(%rbp)
shlq $0x5, %r12
movq %r12, -0x80(%rbp)
addq %r12, %rsi
leaq -0xf0(%rbp), %rdi
callq 0x4180
leaq -0x120(%rbp), %r12
leaq -0xf0(%rbp), %rdi
leaq 0x8840(%rip), %rsi      # 0xf3b0
callq 0x45b0
xorps %xmm0, %xmm0
movaps %xmm0, -0x1f0(%rbp)
movaps %xmm0, -0x1d0(%rbp)
movaps %xmm0, -0x1e0(%rbp)
movl $0x2, -0x1ec(%rbp)
leaq -0x68(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0xf0(%rbp), %rsi
movq -0xe8(%rbp), %rdx
addq %rsi, %rdx
leaq -0x78(%rbp), %r14
movq %r14, %rdi
callq 0x8bb2
movb $0x2e, -0x58(%rbp)
movq -0x78(%rbp), %rax
movq %rax, -0x50(%rbp)
movq %r12, %rdi
movq %r14, %rsi
callq 0xbb3e
leaq -0x48(%rbp), %rdi
movq %rax, %rsi
callq 0xc884
movq -0x48(%rbp), %rdi
movq -0x40(%rbp), %r14
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x6bfc
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4320
movq -0x78(%rbp), %rdi
leaq -0x68(%rbp), %rax
cmpq %rax, %rdi
movq -0xf8(%rbp), %r13
je 0x6c1c
movq -0x68(%rbp), %rsi
incq %rsi
callq 0x4320
incl %r14d
movslq %r14d, %r14
movl $0x1, %edi
movq %r14, %rsi
callq 0x41d0
movq 0xe79a(%rip), %rcx      # 0x153d0
movq %r13, %rdx
shlq $0x4, %rdx
leaq (%rdx,%rdx,8), %rdx
movq %rax, 0x20(%rcx,%rdx)
movq 0xe783(%rip), %rax      # 0x153d0
movq 0x20(%rax,%rdx), %r15
leaq -0x68(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0xf0(%rbp), %rsi
movq -0xe8(%rbp), %rdx
addq %rsi, %rdx
leaq -0x78(%rbp), %r12
movq %r12, %rdi
callq 0x8bb2
movb $0x2e, -0x58(%rbp)
movq -0x78(%rbp), %rax
movq %rax, -0x50(%rbp)
leaq -0x120(%rbp), %rdi
movq %r12, %rsi
callq 0xbb3e
leaq -0x48(%rbp), %rdi
movq %rax, %rsi
callq 0xc884
movq -0x48(%rbp), %rsi
movq %r15, %rdi
movq %r14, %rdx
callq 0x42a0
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x6cc6
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4320
movq -0x78(%rbp), %rdi
leaq -0x68(%rbp), %rax
cmpq %rax, %rdi
je 0x6cdf
movq -0x68(%rbp), %rsi
incq %rsi
callq 0x4320
movq 0xe6ea(%rip), %rax      # 0x153d0
leaq (%r13,%r13,8), %r13
shlq $0x4, %r13
movq 0x20(%rax,%r13), %rdi
xorl %esi, %esi
leaq -0x1f0(%rbp), %rdx
leaq -0x130(%rbp), %rcx
callq 0x43c0
cmpl $-0x1, %eax
je 0x7dd4
movq -0x130(%rbp), %rdi
movq 0x18(%rdi), %rax
movl 0x4(%rax), %eax
movq 0xe6a9(%rip), %rcx      # 0x153d0
movl %eax, 0x4(%rcx,%r13)
movl %eax, 0x14(%rcx,%r13)
movl $0xfa0002, (%rcx,%r13)  # imm = 0xFA0002
movl $0x1fa0002, 0x10(%rcx,%r13) # imm = 0x1FA0002
callq 0x43f0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x42f0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x4040
movq %rax, %rdi
callq 0x41f0
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x42f0
movsbl %al, %esi
movq %r14, %rdi
callq 0x4040
movq %rax, %rdi
callq 0x41f0
movl $0x9, %edx
movq %rbx, %rdi
leaq 0x8424(%rip), %rsi      # 0xf1cb
callq 0x4370
movq 0xe62d(%rip), %rax      # 0x153e0
movq -0x80(%rbp), %rcx
movq (%rax,%rcx), %rsi
movq 0x8(%rax,%rcx), %rdx
movq %rbx, %rdi
callq 0x4370
movq %rax, %r14
movl $0xa, %edx
movq %rax, %rdi
leaq 0x85fa(%rip), %rsi      # 0xf3d4
callq 0x4370
movq 0xe5ea(%rip), %rax      # 0x153d0
movl 0x4(%rax,%r13), %edi
callq 0x4130
testq %rax, %rax
je 0x6e10
movq %rax, %r15
movq %rax, %rdi
callq 0x4120
movq %r14, %rdi
movq %r15, %rsi
movq %rax, %rdx
callq 0x4370
jmp 0x6e2a
movq (%r14), %rax
movq -0x18(%rax), %rax
movq %r14, %rdi
addq %rax, %rdi
movl 0x20(%r14,%rax), %esi
orl $0x1, %esi
callq 0x44f0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x42f0
movsbl %al, %esi
movq %r14, %rdi
callq 0x4040
movq %rax, %rdi
callq 0x41f0
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x42f0
movsbl %al, %esi
movq %r14, %rdi
callq 0x4040
movq %rax, %rdi
callq 0x41f0
movq -0xb0(%rbp), %rsi
addq -0x80(%rbp), %rsi
leaq -0xf0(%rbp), %rdi
callq 0x4180
leaq -0xf0(%rbp), %rdi
leaq 0x853f(%rip), %rsi      # 0xf3df
callq 0x45b0
leaq -0x68(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0xf0(%rbp), %rsi
movq -0xe8(%rbp), %rdx
addq %rsi, %rdx
leaq -0x78(%rbp), %r14
movq %r14, %rdi
callq 0x8bb2
movb $0x2e, -0x58(%rbp)
movq -0x78(%rbp), %rax
movq %rax, -0x50(%rbp)
leaq -0x120(%rbp), %rdi
movq %r14, %rsi
callq 0xbb3e
leaq -0x48(%rbp), %rdi
movq %rax, %rsi
callq 0xc884
movq -0x48(%rbp), %r14
movq -0x148(%rbp), %r15
movq %r14, %rdi
callq 0x4120
leaq -0x150(%rbp), %rdi
xorl %esi, %esi
movq %r15, %rdx
movq %r14, %rcx
movq %rax, %r8
callq 0x4490
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x6f34
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4320
movq -0x78(%rbp), %rdi
leaq -0x68(%rbp), %rax
cmpq %rax, %rdi
leaq -0x78(%rbp), %r14
je 0x6f51
movq -0x68(%rbp), %rsi
incq %rsi
callq 0x4320
leaq 0x843b(%rip), %rax      # 0xf393
movq %rax, -0x78(%rbp)
leaq 0x8433(%rip), %rax      # 0xf396
movq %rax, -0x70(%rbp)
leaq -0x1a0(%rbp), %rdi
movq %r14, %rsi
callq 0xcf8a
leaq -0xd0(%rbp), %rdi
leaq -0x150(%rbp), %rsi
leaq -0x1a0(%rbp), %rdx
xorl %ecx, %ecx
callq 0x879f
cmpq $0x11, -0x190(%rbp)
jb 0x6fad
movq -0x1a0(%rbp), %rdi
testq %rdi, %rdi
je 0x6fad
callq 0x43d0
movq -0xc8(%rbp), %rdi
subq -0xd0(%rbp), %rdi
sarq $0x5, %rdi
incq %rdi
movl $0x4, %esi
callq 0x41d0
movq 0xe3fd(%rip), %rcx      # 0x153d0
movq %rax, 0x58(%rcx,%r13)
movl $0xb, %edx
movq %rbx, %rdi
leaq 0x8423(%rip), %rsi      # 0xf40a
callq 0x4370
movq -0xc8(%rbp), %rsi
subq -0xd0(%rbp), %rsi
sarq $0x5, %rsi
movq %rbx, %rdi
callq 0x41e0
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x42f0
movsbl %al, %esi
movq %r14, %rdi
callq 0x4040
movq %rax, %rdi
callq 0x41f0
movl $0x9, %edx
movq %rbx, %rdi
leaq 0x818c(%rip), %rsi      # 0xf1cb
callq 0x4370
movq 0xe395(%rip), %rax      # 0x153e0
movq -0x80(%rbp), %rcx
movq (%rax,%rcx), %rsi
movq 0x8(%rax,%rcx), %rdx
movq %rbx, %rdi
callq 0x4370
movl $0xe, %edx
movq %rax, %rdi
leaq 0x8379(%rip), %rsi      # 0xf3e8
callq 0x4370
movq -0xd0(%rbp), %rax
cmpq %rax, -0xc8(%rbp)
je 0x70f9
movl $0x1, %r14d
xorl %r15d, %r15d
movq %r15, %rcx
shlq $0x5, %rcx
movq (%rax,%rcx), %rdi
callq 0x44a0
movq 0xe32c(%rip), %rcx      # 0x153d0
movq 0x58(%rcx,%r13), %rcx
movl %eax, (%rcx,%r15,4)
movl $0x1, %edx
movq %rbx, %rdi
leaq 0x82eb(%rip), %rsi      # 0xf3a7
callq 0x4370
movq 0xe308(%rip), %rax      # 0x153d0
movq 0x58(%rax,%r13), %rax
movl (%rax,%r15,4), %esi
movq %rbx, %rdi
callq 0x4520
movl %r14d, %r15d
movq -0xd0(%rbp), %rax
movq -0xc8(%rbp), %rcx
subq %rax, %rcx
sarq $0x5, %rcx
incl %r14d
cmpq %r15, %rcx
ja 0x708d
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x42f0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x4040
movq %rax, %rdi
callq 0x41f0
movq -0xb0(%rbp), %rsi
addq -0x80(%rbp), %rsi
leaq -0xf0(%rbp), %rdi
callq 0x4180
leaq -0xf0(%rbp), %rdi
leaq 0x82b2(%rip), %rsi      # 0xf3f7
callq 0x45b0
leaq -0x68(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0xf0(%rbp), %rsi
movq -0xe8(%rbp), %rdx
addq %rsi, %rdx
leaq -0x78(%rbp), %r14
movq %r14, %rdi
callq 0x8bb2
movb $0x2e, -0x58(%rbp)
movq -0x78(%rbp), %rax
movq %rax, -0x50(%rbp)
leaq -0x120(%rbp), %rdi
movq %r14, %rsi
callq 0xbb3e
leaq -0x48(%rbp), %rdi
movq %rax, %rsi
callq 0xc884
movq -0x48(%rbp), %r14
movq -0x148(%rbp), %r15
movq %r14, %rdi
callq 0x4120
leaq -0x150(%rbp), %rdi
xorl %esi, %esi
movq %r15, %rdx
movq %r14, %rcx
movq %rax, %r8
callq 0x4490
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x71d9
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4320
movq -0x78(%rbp), %rdi
leaq -0x68(%rbp), %rax
cmpq %rax, %rdi
leaq -0x78(%rbp), %r14
je 0x71f6
movq -0x68(%rbp), %rsi
incq %rsi
callq 0x4320
leaq 0x8196(%rip), %rax      # 0xf393
movq %rax, -0x78(%rbp)
leaq 0x818e(%rip), %rax      # 0xf396
movq %rax, -0x70(%rbp)
leaq -0x188(%rbp), %rdi
movq %r14, %rsi
callq 0xcf8a
leaq -0xd0(%rbp), %rdi
leaq -0x150(%rbp), %rsi
leaq -0x188(%rbp), %rdx
xorl %ecx, %ecx
callq 0x879f
cmpq $0x11, -0x178(%rbp)
jb 0x7252
movq -0x188(%rbp), %rdi
testq %rdi, %rdi
je 0x7252
callq 0x43d0
movq -0xc8(%rbp), %rdi
subq -0xd0(%rbp), %rdi
sarq $0x5, %rdi
incq %rdi
movl $0x4, %esi
callq 0x41d0
movq 0xe158(%rip), %rcx      # 0x153d0
movq %rax, 0x60(%rcx,%r13)
movl $0x14, %edx
movq %rbx, %rdi
leaq 0x8175(%rip), %rsi      # 0xf401
callq 0x4370
movq -0xc8(%rbp), %rsi
subq -0xd0(%rbp), %rsi
sarq $0x5, %rsi
movq %rbx, %rdi
callq 0x41e0
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x42f0
movsbl %al, %esi
movq %r14, %rdi
callq 0x4040
movq %rax, %rdi
callq 0x41f0
movl $0x9, %edx
movq %rbx, %rdi
leaq 0x7ee7(%rip), %rsi      # 0xf1cb
callq 0x4370
movq %rbx, %rdi
movq -0xf8(%rbp), %rsi
callq 0x41e0
movl $0x1b, %edx
movq %rax, %rdi
leaq 0x810f(%rip), %rsi      # 0xf416
callq 0x4370
movq -0xd0(%rbp), %rax
cmpq %rax, -0xc8(%rbp)
je 0x7391
movl $0x1, %r14d
xorl %r15d, %r15d
movq %r15, %rcx
shlq $0x5, %rcx
movq (%rax,%rcx), %rdi
callq 0x44a0
movq 0xe094(%rip), %rcx      # 0x153d0
movq 0x60(%rcx,%r13), %rcx
movl %eax, (%rcx,%r15,4)
movl $0x1, %edx
movq %rbx, %rdi
leaq 0x8053(%rip), %rsi      # 0xf3a7
callq 0x4370
movq 0xe070(%rip), %rax      # 0x153d0
movq 0x60(%rax,%r13), %rax
movl (%rax,%r15,4), %esi
movq %rbx, %rdi
callq 0x4520
movl %r14d, %r15d
movq -0xd0(%rbp), %rax
movq -0xc8(%rbp), %rcx
subq %rax, %rcx
sarq $0x5, %rcx
incl %r14d
cmpq %r15, %rcx
ja 0x7325
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x42f0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x4040
movq %rax, %rdi
callq 0x41f0
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x42f0
movsbl %al, %esi
movq %r14, %rdi
callq 0x4040
movq %rax, %rdi
callq 0x41f0
movq -0xb0(%rbp), %rax
leaq -0x38(%rbp), %rcx
movq %rcx, -0x48(%rbp)
movq -0x80(%rbp), %rcx
movq (%rax,%rcx), %rsi
movq 0x8(%rax,%rcx), %rdx
addq %rsi, %rdx
leaq -0x48(%rbp), %r14
movq %r14, %rdi
callq 0x8bb2
movq %r14, %rdi
leaq 0x801b(%rip), %rsi      # 0xf432
callq 0x45b0
leaq -0x68(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
addq %rsi, %rdx
leaq -0x78(%rbp), %r14
movq %r14, %rdi
callq 0x8bb2
movb $0x2e, -0x58(%rbp)
movq -0x78(%rbp), %rax
movq %rax, -0x50(%rbp)
leaq -0x120(%rbp), %rdi
movq %r14, %rsi
callq 0xbb3e
movq %rax, %r14
leaq -0x88(%rbp), %r12
movq %r12, %rdi
callq 0x45d0
leaq -0x90(%rbp), %r15
movq %r15, %rdi
movq %r12, %rsi
callq 0x41a0
movq %r14, %rdi
movq %r15, %rsi
callq 0xebd4
movl %eax, %r14d
movq %r15, %rdi
callq 0x4440
movq %r12, %rdi
callq 0x4440
movq 0xdf31(%rip), %rax      # 0x153d0
movb %r14b, 0x48(%rax,%r13)
movq -0x78(%rbp), %rdi
leaq -0x68(%rbp), %rax
cmpq %rax, %rdi
je 0x74bd
movq -0x68(%rbp), %rsi
incq %rsi
callq 0x4320
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x74d6
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4320
movq -0xb0(%rbp), %rax
leaq -0x38(%rbp), %rcx
movq %rcx, -0x48(%rbp)
movq -0x80(%rbp), %rcx
movq (%rax,%rcx), %rsi
movq 0x8(%rax,%rcx), %rdx
addq %rsi, %rdx
leaq -0x48(%rbp), %r14
movq %r14, %rdi
callq 0x8bb2
movq %r14, %rdi
leaq 0x7f2f(%rip), %rsi      # 0xf43a
callq 0x45b0
leaq -0x68(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
addq %rsi, %rdx
leaq -0x78(%rbp), %r14
movq %r14, %rdi
callq 0x8bb2
movb $0x2e, -0x58(%rbp)
movq -0x78(%rbp), %rax
movq %rax, -0x50(%rbp)
leaq -0x120(%rbp), %rdi
movq %r14, %rsi
callq 0xbb3e
movq %rax, %r14
movq %r12, %rdi
callq 0x45d0
movq %r15, %rdi
movq %r12, %rsi
callq 0x41a0
movq %r14, %rdi
movq %r15, %rsi
callq 0xebd4
movl %eax, %r14d
movq %r15, %rdi
callq 0x4440
movq %r12, %rdi
callq 0x4440
movq 0xde4b(%rip), %rax      # 0x153d0
movb %r14b, 0x49(%rax,%r13)
movq -0x78(%rbp), %rdi
leaq -0x68(%rbp), %rax
cmpq %rax, %rdi
je 0x75a3
movq -0x68(%rbp), %rsi
incq %rsi
callq 0x4320
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x75bc
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4320
movq -0xb0(%rbp), %rax
leaq -0x38(%rbp), %rcx
movq %rcx, -0x48(%rbp)
movq -0x80(%rbp), %rcx
movq (%rax,%rcx), %rsi
movq 0x8(%rax,%rcx), %rdx
addq %rsi, %rdx
leaq -0x48(%rbp), %r14
movq %r14, %rdi
callq 0x8bb2
movq %r14, %rdi
leaq 0x7e51(%rip), %rsi      # 0xf442
callq 0x45b0
leaq -0x68(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
addq %rsi, %rdx
leaq -0x78(%rbp), %r14
movq %r14, %rdi
callq 0x8bb2
movb $0x2e, -0x58(%rbp)
movq -0x78(%rbp), %rax
movq %rax, -0x50(%rbp)
leaq -0x120(%rbp), %rdi
movq %r14, %rsi
callq 0xbb3e
movq %rax, %r14
movq %r12, %rdi
callq 0x45d0
movq %r15, %rdi
movq %r12, %rsi
callq 0x41a0
movq %r14, %rdi
movq %r15, %rsi
callq 0xebd4
movl %eax, %r14d
movq %r15, %rdi
callq 0x4440
movq %r12, %rdi
callq 0x4440
movq 0xdd65(%rip), %rax      # 0x153d0
movl %r14d, 0x30(%rax,%r13)
movq -0x78(%rbp), %rdi
leaq -0x68(%rbp), %rax
cmpq %rax, %rdi
je 0x7689
movq -0x68(%rbp), %rsi
incq %rsi
callq 0x4320
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x76a2
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4320
movq 0xdd27(%rip), %rax      # 0x153d0
movl 0x30(%rax,%r13), %ecx
movl %ecx, 0x28(%rax,%r13)
movq -0xb0(%rbp), %rax
leaq -0x38(%rbp), %rcx
movq %rcx, -0x48(%rbp)
movq -0x80(%rbp), %rcx
movq (%rax,%rcx), %rsi
movq 0x8(%rax,%rcx), %rdx
addq %rsi, %rdx
leaq -0x48(%rbp), %r14
movq %r14, %rdi
callq 0x8bb2
movq %r14, %rdi
leaq 0x7d68(%rip), %rsi      # 0xf450
callq 0x45b0
leaq -0x68(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
addq %rsi, %rdx
leaq -0x78(%rbp), %r14
movq %r14, %rdi
callq 0x8bb2
movb $0x2e, -0x58(%rbp)
movq -0x78(%rbp), %rax
movq %rax, -0x50(%rbp)
leaq -0x120(%rbp), %rdi
movq %r14, %rsi
callq 0xbb3e
movq %rax, %r14
movq %r12, %rdi
callq 0x45d0
movq %r15, %rdi
movq %r12, %rsi
callq 0x41a0
movq %r14, %rdi
movq %r15, %rsi
callq 0xebd4
movl %eax, %r14d
movq %r15, %rdi
callq 0x4440
movq %r12, %rdi
callq 0x4440
movq 0xdc6e(%rip), %rax      # 0x153d0
movl %r14d, 0x44(%rax,%r13)
movq -0x78(%rbp), %rdi
leaq -0x68(%rbp), %rax
cmpq %rax, %rdi
je 0x7780
movq -0x68(%rbp), %rsi
incq %rsi
callq 0x4320
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x7799
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4320
movq -0xb0(%rbp), %rax
leaq -0x38(%rbp), %rcx
movq %rcx, -0x48(%rbp)
movq -0x80(%rbp), %rcx
movq (%rax,%rcx), %rsi
movq 0x8(%rax,%rcx), %rdx
addq %rsi, %rdx
leaq -0x48(%rbp), %r14
movq %r14, %rdi
callq 0x8bb2
movq %r14, %rdi
leaq 0x7c8b(%rip), %rsi      # 0xf459
callq 0x45b0
leaq -0x68(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
addq %rsi, %rdx
leaq -0x78(%rbp), %r14
movq %r14, %rdi
callq 0x8bb2
movb $0x2e, -0x58(%rbp)
movq -0x78(%rbp), %rax
movq %rax, -0x50(%rbp)
leaq -0x120(%rbp), %rdi
movq %r14, %rsi
callq 0xbb3e
movq %rax, %r14
movq %r12, %rdi
callq 0x45d0
movq %r15, %rdi
movq %r12, %rsi
callq 0x41a0
movq %r14, %rdi
movq %r15, %rsi
callq 0xebd4
movl %eax, %r14d
movq %r15, %rdi
callq 0x4440
movq %r12, %rdi
callq 0x4440
movq 0xdb88(%rip), %rax      # 0x153d0
movl %r14d, 0x34(%rax,%r13)
movq -0x78(%rbp), %rdi
leaq -0x68(%rbp), %rax
cmpq %rax, %rdi
je 0x7866
movq -0x68(%rbp), %rsi
incq %rsi
callq 0x4320
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x787f
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4320
movq 0xdb4a(%rip), %rax      # 0x153d0
movl 0x34(%rax,%r13), %ecx
movl %ecx, 0x2c(%rax,%r13)
movq -0xb0(%rbp), %rax
leaq -0x38(%rbp), %rcx
movq %rcx, -0x48(%rbp)
movq -0x80(%rbp), %rcx
movq (%rax,%rcx), %rsi
movq 0x8(%rax,%rcx), %rdx
addq %rsi, %rdx
leaq -0x48(%rbp), %r14
movq %r14, %rdi
callq 0x8bb2
movq %r14, %rdi
leaq 0x7ba2(%rip), %rsi      # 0xf467
callq 0x45b0
leaq -0x68(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
addq %rsi, %rdx
leaq -0x78(%rbp), %r14
movq %r14, %rdi
callq 0x8bb2
movb $0x2e, -0x58(%rbp)
movq -0x78(%rbp), %rax
movq %rax, -0x50(%rbp)
leaq -0x120(%rbp), %rdi
movq %r14, %rsi
callq 0xbb3e
movq %rax, %r14
movq %r12, %rdi
callq 0x45d0
movq %r15, %rdi
movq %r12, %rsi
callq 0x41a0
movq %r14, %rdi
movq %r15, %rsi
callq 0xebd4
movl %eax, %r14d
movq %r15, %rdi
callq 0x4440
movq %r12, %rdi
callq 0x4440
movq 0xda91(%rip), %rax      # 0x153d0
movl %r14d, 0x70(%rax,%r13)
movq -0x78(%rbp), %rdi
leaq -0x68(%rbp), %rax
cmpq %rax, %rdi
je 0x795d
movq -0x68(%rbp), %rsi
incq %rsi
callq 0x4320
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
leaq -0x1f8(%rbp), %r15
leaq -0x200(%rbp), %r12
je 0x7984
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4320
movq -0xb0(%rbp), %rax
leaq -0x38(%rbp), %rcx
movq %rcx, -0x48(%rbp)
movq -0x80(%rbp), %rcx
movq (%rax,%rcx), %rsi
movq 0x8(%rax,%rcx), %rdx
addq %rsi, %rdx
leaq -0x48(%rbp), %r14
movq %r14, %rdi
callq 0x8bb2
movq %r14, %rdi
leaq 0x7ab7(%rip), %rsi      # 0xf470
callq 0x45b0
leaq -0x68(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
addq %rsi, %rdx
leaq -0x78(%rbp), %r14
movq %r14, %rdi
callq 0x8bb2
movb $0x2e, -0x58(%rbp)
movq -0x78(%rbp), %rax
movq %rax, -0x50(%rbp)
leaq -0x120(%rbp), %rdi
movq %r14, %rsi
callq 0xbb3e
movq %rax, %r14
movq %r15, %rdi
callq 0x45d0
movq %r12, %rdi
movq %r15, %rsi
callq 0x41a0
movq %r14, %rdi
movq %r12, %rsi
callq 0xebd4
movl %eax, %r14d
movq %r12, %rdi
callq 0x4440
movq %r15, %rdi
callq 0x4440
movq 0xd99d(%rip), %rax      # 0x153d0
movl %r14d, 0x84(%rax,%r13)
movq -0x78(%rbp), %rdi
leaq -0x68(%rbp), %rax
cmpq %rax, %rdi
je 0x7a54
movq -0x68(%rbp), %rsi
incq %rsi
callq 0x4320
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x7a6d
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4320
movq -0xb0(%rbp), %rax
leaq -0x38(%rbp), %rcx
movq %rcx, -0x48(%rbp)
movq -0x80(%rbp), %rcx
movq (%rax,%rcx), %rsi
movq 0x8(%rax,%rcx), %rdx
addq %rsi, %rdx
leaq -0x48(%rbp), %r14
movq %r14, %rdi
callq 0x8bb2
movq %r14, %rdi
leaq 0x79de(%rip), %rsi      # 0xf480
callq 0x45b0
leaq -0x68(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
addq %rsi, %rdx
leaq -0x78(%rbp), %r14
movq %r14, %rdi
callq 0x8bb2
movb $0x2e, -0x58(%rbp)
movq -0x78(%rbp), %rax
movq %rax, -0x50(%rbp)
leaq -0x120(%rbp), %rdi
movq %r14, %rsi
callq 0xbb3e
movq %rax, %r14
leaq -0x208(%rbp), %r15
movq %r15, %rdi
callq 0x45d0
leaq -0x210(%rbp), %r12
movq %r12, %rdi
movq %r15, %rsi
callq 0x41a0
movq %r14, %rdi
movq %r12, %rsi
callq 0xebd4
movl %eax, %r14d
movq %r12, %rdi
callq 0x4440
movq %r15, %rdi
callq 0x4440
movq 0xd8a6(%rip), %rax      # 0x153d0
movl %r14d, 0x80(%rax,%r13)
movq -0x78(%rbp), %rdi
leaq -0x68(%rbp), %rax
cmpq %rax, %rdi
je 0x7b4b
movq -0x68(%rbp), %rsi
incq %rsi
callq 0x4320
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x7b64
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4320
movq -0xb0(%rbp), %rax
leaq -0x38(%rbp), %rcx
movq %rcx, -0x48(%rbp)
movq -0x80(%rbp), %rcx
movq (%rax,%rcx), %rsi
movq 0x8(%rax,%rcx), %rdx
addq %rsi, %rdx
leaq -0x48(%rbp), %r14
movq %r14, %rdi
callq 0x8bb2
movq %r14, %rdi
leaq 0x78f6(%rip), %rsi      # 0xf48f
callq 0x45b0
leaq -0x68(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
addq %rsi, %rdx
leaq -0x78(%rbp), %r14
movq %r14, %rdi
callq 0x8bb2
movb $0x2e, -0x58(%rbp)
movq -0x78(%rbp), %rax
movq %rax, -0x50(%rbp)
leaq -0x120(%rbp), %rdi
movq %r14, %rsi
callq 0xbb3e
movq %rax, %r14
leaq -0x218(%rbp), %r15
movq %r15, %rdi
callq 0x45d0
leaq -0x220(%rbp), %r12
movq %r12, %rdi
movq %r15, %rsi
callq 0x41a0
movq %r14, %rdi
movq %r12, %rsi
callq 0xebd4
movl %eax, %r14d
movq %r12, %rdi
callq 0x4440
movq %r15, %rdi
callq 0x4440
movq 0xd7af(%rip), %rax      # 0x153d0
movl %r14d, 0x88(%rax,%r13)
movq -0x78(%rbp), %rdi
leaq -0x68(%rbp), %rax
cmpq %rax, %rdi
je 0x7c42
movq -0x68(%rbp), %rsi
incq %rsi
callq 0x4320
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
movq -0xf8(%rbp), %r12
je 0x7c62
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4320
incl %r12d
movq -0xb0(%rbp), %rsi
movq -0xa8(%rbp), %rax
subq %rsi, %rax
sarq $0x5, %rax
cmpq %r12, %rax
ja 0x6b3d
jmp 0x6a37
jmp 0x7cb8
jmp 0x7cfc
jmp 0x7d42
jmp 0x7d42
jmp 0x7d9f
movq %rdx, -0x80(%rbp)
movq %rax, %r14
movq %r12, %rdi
callq 0x4440
movq %r15, %rdi
movq -0x80(%rbp), %r15
callq 0x4440
jmp 0x7ce1
movq %rdx, -0x128(%rbp)
movq %rax, %r14
movq %r12, %rdi
callq 0x4440
movq %r15, %rdi
movq -0x128(%rbp), %r15
callq 0x4440
jmp 0x7d02
movq %rdx, %r15
movq %rax, %r14
movq -0x78(%rbp), %rdi
leaq -0x68(%rbp), %rax
cmpq %rax, %rdi
je 0x7d27
movq -0x68(%rbp), %rsi
incq %rsi
callq 0x4320
jmp 0x7d27
movq %rdx, %r15
movq %rax, %r14
movq -0x78(%rbp), %rdi
leaq -0x68(%rbp), %rax
cmpq %rax, %rdi
je 0x7d48
movq -0x68(%rbp), %rsi
incq %rsi
callq 0x4320
jmp 0x7d48
jmp 0x7d21
jmp 0x7d42
movq %rdx, %r15
movq %rax, %r14
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x7d69
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4320
jmp 0x7d69
movq %rdx, %r15
movq %rax, %r14
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x7da5
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4320
jmp 0x7da5
movq %rdx, %r15
movq %rax, %r14
cmpl $0x1, %r15d
jne 0x81ce
movq %r14, %rdi
callq 0x4100
movq 0xd64e(%rip), %rax      # 0x153d0
movl $0x0, 0x88(%rax,%r13)
callq 0x44d0
movq -0xf8(%rbp), %r12
jmp 0x7c62
movq %rdx, %r15
movq %rax, %r14
cmpl $0x1, %r15d
jne 0x81ce
movq %r14, %rdi
callq 0x4100
movq 0xd612(%rip), %rax      # 0x153d0
movq $0x0, 0x80(%rax,%r13)
callq 0x44d0
jmp 0x7b64
movq 0xd1f5(%rip), %rdi      # 0x14fd0
leaq 0x75d7(%rip), %rsi      # 0xf3b9
movl $0x10, %edx
callq 0x4370
leaq -0x78(%rbp), %rdi
leaq -0x68(%rbp), %rax
movq %rax, (%rdi)
movq -0xf0(%rbp), %rsi
movq -0xe8(%rbp), %rdx
addq %rsi, %rdx
callq 0x8bb2
leaq -0x78(%rbp), %rsi
movb $0x2e, 0x20(%rsi)
movq (%rsi), %rax
movq %rax, 0x28(%rsi)
leaq -0x120(%rbp), %rdi
callq 0xbb3e
leaq -0x48(%rbp), %rdi
movq %rax, %rsi
callq 0xc884
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq 0xd18d(%rip), %rdi      # 0x14fd0
callq 0x4370
movq %rax, %rbx
leaq 0x7578(%rip), %rsi      # 0xf3ca
movl $0x9, %edx
movq %rax, %rdi
callq 0x4370
movq %rbx, %rdi
callq 0x4150
leaq -0x48(%rbp), %rdi
callq 0x4140
leaq -0x78(%rbp), %rdi
callq 0x877e
jmp 0x7ffc
leaq -0x1f0(%rbp), %rbx
leaq -0x130(%rbp), %r14
movl $0xa, %edi
callq 0x4260
leal 0x1(%r15), %eax
cmpl $0x5a, %r15d
movl %eax, %r15d
jl 0x7e8c
cmpl $0x1, 0xd55a(%rip)      # 0x15404
jne 0x7eb8
movl $0x1, %edi
callq 0x4450
jmp 0x7ea3
movl $0x1, 0xd542(%rip)      # 0x15404
cmpl $0x0, 0xd50f(%rip)      # 0x153d8
je 0x7f27
xorl %r15d, %r15d
xorl %r12d, %r12d
movq 0xd4f8(%rip), %rax      # 0x153d0
movq 0x20(%rax,%r15), %rdi
xorl %esi, %esi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x43c0
testl %eax, %eax
jne 0x7f12
movq -0x130(%rbp), %rdi
movq 0x18(%rdi), %rax
movl 0x4(%rax), %eax
movq 0xd4cd(%rip), %rcx      # 0x153d0
movl %eax, 0x4(%rcx,%r15)
movl %eax, 0x14(%rcx,%r15)
callq 0x43f0
incq %r12
movl 0xd4bd(%rip), %eax      # 0x153d8
addq $0x90, %r15
cmpq %rax, %r12
jb 0x7ed1
movl $0x0, 0xd4d3(%rip)      # 0x15404
xorl %r15d, %r15d
jmp 0x7e8c
jmp 0x81cb
jmp 0x81cb
jmp 0x81cb
jmp 0x81cb
jmp 0x81cb
jmp 0x817f
jmp 0x8098
movq %rax, %r14
cmpq $0x11, -0x1a8(%rbp)
jb 0x81f0
movq -0x1b8(%rbp), %rdi
testq %rdi, %rdi
je 0x81f0
callq 0x43d0
jmp 0x81f0
jmp 0x80a0
movq %rdx, %rbx
movq %rax, %r14
leaq -0x170(%rbp), %rdi
callq 0x4440
movq -0x78(%rbp), %rdi
leaq -0x68(%rbp), %rax
cmpq %rax, %rdi
je 0x7fbf
movq -0x68(%rbp), %rsi
incq %rsi
callq 0x4320
jmp 0x7fbf
movq %rdx, %rbx
movq %rax, %r14
cmpl $0x1, %ebx
jne 0x8249
movq %r14, %rdi
callq 0x4100
movq 0xcff9(%rip), %rdi      # 0x14fd0
leaq 0x7394(%rip), %rsi      # 0xf372
movl $0x16, %edx
callq 0x4370
movq 0xcfe1(%rip), %rdi      # 0x14fd0
callq 0x4150
movq %rax, %rdi
callq 0x4150
movl $0x1, %edi
callq 0x4390
movq %rax, %r14
callq 0x44d0
jmp 0x8249
movq %rax, %rdi
callq 0x8770
movq %rax, %r14
movl $0x20, %esi
movq %r15, %rdi
callq 0x4320
movq -0x120(%rbp), %rdi
cmpq %r12, %rdi
je 0x8255
movq -0x110(%rbp), %rsi
incq %rsi
callq 0x4320
jmp 0x8255
movq %rax, %r14
movq -0x78(%rbp), %rdi
leaq -0x68(%rbp), %rax
cmpq %rax, %rdi
je 0x81f0
movq -0x68(%rbp), %rsi
jmp 0x81e8
movq %rax, %r14
movq -0x78(%rbp), %rdi
leaq -0x68(%rbp), %rax
cmpq %rax, %rdi
je 0x8249
movq -0x68(%rbp), %rsi
jmp 0x8241
jmp 0x81a9
jmp 0x81cb
jmp 0x81cb
movq %rax, %r14
jmp 0x81f0
movq %rax, %r14
jmp 0x8249
jmp 0x80ee
jmp 0x8126
jmp 0x80e9
jmp 0x81cb
jmp 0x8126
jmp 0x80ee
jmp 0x80e9
jmp 0x8126
jmp 0x8126
jmp 0x81cb
jmp 0x80ee
jmp 0x8126
jmp 0x80e9
jmp 0x8126
jmp 0x81cb
jmp 0x80e9
jmp 0x80ee
jmp 0x8126
jmp 0x8126
jmp 0x80ee
jmp 0x81cb
jmp 0x8126
jmp 0x80e9
jmp 0x8126
jmp 0x81cb
movq %rax, %r14
jmp 0x8109
movq %rax, %r14
leaq -0x90(%rbp), %rdi
callq 0x4440
leaq -0x88(%rbp), %rdi
callq 0x4440
movq -0x78(%rbp), %rdi
leaq -0x68(%rbp), %rax
cmpq %rax, %rdi
je 0x8129
movq -0x68(%rbp), %rsi
incq %rsi
callq 0x4320
jmp 0x8129
jmp 0x8126
movq %rax, %r14
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x81ce
movq -0x38(%rbp), %rsi
jmp 0x81bd
jmp 0x81cb
movq %rax, %r14
cmpq $0x11, -0x178(%rbp)
jb 0x81ce
movq -0x188(%rbp), %rdi
jmp 0x8173
jmp 0x817f
jmp 0x81cb
movq %rax, %r14
cmpq $0x11, -0x190(%rbp)
jb 0x81ce
movq -0x1a0(%rbp), %rdi
testq %rdi, %rdi
je 0x81ce
callq 0x43d0
jmp 0x81ce
movq %rax, %r14
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x81ac
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4320
jmp 0x81ac
jmp 0x81cb
jmp 0x81cb
jmp 0x81cb
jmp 0x81a9
jmp 0x81a9
jmp 0x81a9
movq %rax, %r14
movq -0x78(%rbp), %rdi
leaq -0x68(%rbp), %rax
cmpq %rax, %rdi
je 0x81ce
movq -0x68(%rbp), %rsi
incq %rsi
callq 0x4320
jmp 0x81ce
jmp 0x81cb
jmp 0x81cb
movq %rax, %r14
movq -0xf0(%rbp), %rdi
leaq -0xe0(%rbp), %rax
cmpq %rax, %rdi
je 0x81f0
movq -0xe0(%rbp), %rsi
incq %rsi
callq 0x4320
leaq -0xd0(%rbp), %rdi
callq 0x835c
leaq -0xb0(%rbp), %rdi
callq 0x835c
movq -0x150(%rbp), %rdi
leaq -0x140(%rbp), %rax
cmpq %rax, %rdi
je 0x822a
movq -0x140(%rbp), %rsi
incq %rsi
callq 0x4320
leaq -0x160(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x8249
movq -0x160(%rbp), %rsi
incq %rsi
callq 0x4320
leaq -0x120(%rbp), %rdi
callq 0x8ad0
movq %r14, %rdi
callq 0x4530
nop