// File: /workspace/github_c_makefile_star2_O0/open-mesh-mirror[P]batmand/posix/unix_socket.c
// Function: unix_listen
void *unix_listen(void * BATMANUNUSED(arg)) {

	struct unix_client *unix_client;
	struct debug_level_info *debug_level_info;
	struct list_head *list_pos, *unix_pos_tmp, *debug_pos, *debug_pos_tmp, *prev_list_head, *prev_list_head_unix;
	struct hna_local_entry *hna_local_entry;
	struct batman_if *batman_if;
	struct timeval tv;
	struct sockaddr_un sun_addr;
	struct in_addr tmp_ip_holder;
	int32_t status, max_sock, unix_opts, download_speed, upload_speed;
	int8_t res;
	char buff[100], str[16], was_gateway, tmp_unix_value;
	fd_set wait_sockets, tmp_wait_sockets;
	socklen_t sun_size = sizeof(struct sockaddr_un);


	INIT_LIST_HEAD_FIRST(unix_if.client_list);

	FD_ZERO(&wait_sockets);
	FD_SET(unix_if.unix_sock, &wait_sockets);

	max_sock = unix_if.unix_sock;

	while (!is_aborted()) {

		tv.tv_sec = 1;
		tv.tv_usec = 0;
		memcpy(&tmp_wait_sockets, &wait_sockets, sizeof(fd_set));

		res = select(max_sock + 1, &tmp_wait_sockets, NULL, NULL, &tv);

		if ( res > 0 ) {

			/* new client */
			if ( FD_ISSET( unix_if.unix_sock, &tmp_wait_sockets ) ) {

				unix_client = debugMalloc( sizeof(struct unix_client), 201 );
				memset( unix_client, 0, sizeof(struct unix_client) );

				if ( ( unix_client->sock = accept( unix_if.unix_sock, (struct sockaddr *)&sun_addr, &sun_size) ) == -1 ) {
					debug_output( 0, "Error - can't accept unix client: %s\n", strerror(errno) );
					continue;
				}

				INIT_LIST_HEAD( &unix_client->list );

				FD_SET( unix_client->sock, &wait_sockets );
				if ( unix_client->sock > max_sock )
					max_sock = unix_client->sock;

				/* make unix socket non blocking */
				unix_opts = fcntl( unix_client->sock, F_GETFL, 0 );
				fcntl( unix_client->sock, F_SETFL, unix_opts | O_NONBLOCK );

				list_add_tail( &unix_client->list, &unix_if.client_list );

				debug_output( 3, "Unix socket: got connection\n" );

			/* client sent data */
			} else {

				max_sock = unix_if.unix_sock;

				prev_list_head_unix = (struct list_head *)&unix_if.client_list;

				list_for_each_safe( list_pos, unix_pos_tmp, &unix_if.client_list ) {

					unix_client = list_entry( list_pos, struct unix_client, list );

					if ( FD_ISSET( unix_client->sock, &tmp_wait_sockets ) ) {

						status = read( unix_client->sock, buff, sizeof( buff ) );

						if ( status > 0 ) {

							if ( unix_client->sock > max_sock )
								max_sock = unix_client->sock;

							/* debug_output( 3, "gateway: client sent data via unix socket: %s\n", buff ); */

							if (buff[0] == 'a') {

								if (status > 2) {
									hna_local_task_add_str(buff + 2, ROUTE_ADD, 1);
									dprintf(unix_client->sock, "EOD\n");
								}

							} else if (buff[0] == 'A') {

								if (status > 2) {
									hna_local_task_add_str(buff + 2, ROUTE_DEL, 1);
									dprintf(unix_client->sock, "EOD\n");
								}

							} else if ( buff[0] == 'd' ) {

								if ( ( status > 2 ) && ( ( buff[2] > 0 ) && ( buff[2] <= debug_level_max ) ) ) {

									if ( unix_client->debug_level != 0 ) {

										prev_list_head = (struct list_head *)debug_clients.fd_list[unix_client->debug_level - 1];

										if ( pthread_mutex_lock( (pthread_mutex_t *)debug_clients.mutex[unix_client->debug_level - 1] ) != 0 )
											debug_output( 0, "Error - could not lock mutex (unix_listen => 1): %s \n", strerror( errno ) );

										list_for_each_safe( debug_pos, debug_pos_tmp, (struct list_head *)debug_clients.fd_list[unix_client->debug_level - 1] ) {

											debug_level_info = list_entry( debug_pos, struct debug_level_info, list );

											if ( debug_level_info->fd == unix_client->sock ) {

												list_del( prev_list_head, debug_pos, debug_clients.fd_list[unix_client->debug_level - 1] );
												debug_clients.clients_num[unix_client->debug_level - 1]--;

												debugFree( debug_pos, 1201 );

												break;

											}

											prev_list_head = &debug_level_info->list;

										}

										if ( pthread_mutex_unlock( (pthread_mutex_t *)debug_clients.mutex[unix_client->debug_level - 1] ) != 0 )
											debug_output( 0, "Error - could not unlock mutex (unix_listen => 1): %s \n", strerror( errno ) );

									}

									if ( unix_client->debug_level != buff[2] ) {

										if ( pthread_mutex_lock( (pthread_mutex_t *)debug_clients.mutex[buff[2] - 1] ) != 0 )
											debug_output( 0, "Error - could not lock mutex (unix_listen => 2): %s \n", strerror( errno ) );

										debug_level_info = debugMalloc( sizeof(struct debug_level_info), 202 );
										INIT_LIST_HEAD( &debug_level_info->list );
										debug_level_info->fd = unix_client->sock;
										list_add( &debug_level_info->list, (struct list_head_first *)debug_clients.fd_list[buff[2] - 1] );
										debug_clients.clients_num[buff[2] - 1]++;

										unix_client->debug_level = buff[2];

										if ( pthread_mutex_unlock( (pthread_mutex_t *)debug_clients.mutex[buff[2] - 1] ) != 0 )
											debug_output( 0, "Error - could not unlock mutex (unix_listen => 2): %s \n", strerror( errno ) );

									} else {

										unix_client->debug_level = 0;

									}

								}

							} else if ( buff[0] == 'i' ) {

								internal_output(unix_client->sock);
								dprintf( unix_client->sock, "EOD\n" );

							} else if ( buff[0] == 'g' ) {

								if ( status > 2 ) {

									if ((buff[2] == 0) || (probe_tun(0))) {

										was_gateway = ( gateway_class > 0 ? 1 : 0 );

										gateway_class = buff[2];
										((struct batman_if *)if_list.next)->out.gwflags = gateway_class;

										if ( ( gateway_class > 0 ) && ( routing_class > 0 ) ) {

											if ((routing_class != 0) && (curr_gateway != NULL))
												del_default_route();

											add_del_interface_rules(RULE_DEL);
											routing_class = 0;

										}

										if ( ( !was_gateway ) && ( gateway_class > 0 ) )
											init_interface_gw();
										else if ((was_gateway) && (gateway_class == 0))
											del_gw_interface();
									}

								}

								dprintf( unix_client->sock, "EOD\n" );

							} else if ( buff[0] == 'm' ) {

								if ( status > 2 ) {
									debug_output(3, "Unix socket: changing hop penalty points from: %i to: %i\n", hop_penalty, buff[2]);
									hop_penalty = buff[2];
								}

								dprintf( unix_client->sock, "EOD\n" );

							} else if ( buff[0] == 'q' ) {

								if ( status > 2 ) {
									debug_output(3, "Unix socket: changing purge timeout from: %i to: %li\n", purge_timeout, strtol(buff + 2, NULL, 10));
									purge_timeout = strtol(buff + 2, NULL, 10);
								}

								dprintf( unix_client->sock, "EOD\n" );

							} else if ( buff[0] == 'r' ) {

								if ( status > 2 ) {

									if ((buff[2] == 0) || (probe_tun(0))) {

										tmp_unix_value = buff[2];

										if ( ( tmp_unix_value >= 0 ) && ( tmp_unix_value <= 3 ) && (tmp_unix_value != routing_class) ) {

											if ((routing_class != 0) && (curr_gateway != NULL))
												del_default_route();

											if ( ( tmp_unix_value > 0 ) && ( gateway_class > 0 ) ) {

												gateway_class = 0;
												((struct batman_if *)if_list.next)->out.gwflags = gateway_class;
												del_gw_interface();

											}

											if ((tmp_unix_value > 0) && (routing_class == 0))
												add_del_interface_rules(RULE_ADD);
											else if ((tmp_unix_value == 0) && (routing_class > 0))
												add_del_interface_rules(RULE_DEL);

											routing_class = tmp_unix_value;

										}

									}

								}

								dprintf( unix_client->sock, "EOD\n" );

							} else if ( buff[0] == 'p' ) {

								if ( status > 2 ) {

									if ( inet_pton( AF_INET, buff + 2, &tmp_ip_holder ) > 0 ) {

										pref_gateway = tmp_ip_holder.s_addr;

										if ( curr_gateway != NULL )
											del_default_route();

									} else {

										debug_output( 3, "Unix socket: rejected new preferred gw (%s) - invalid IP specified\n", buff + 2 );

									}

								}

								dprintf( unix_client->sock, "EOD\n" );

							} else if (buff[0] == 'y') {

								dprintf(unix_client->sock, "%s", prog_name);

								if (routing_class > 0)
									dprintf(unix_client->sock, " -r %i", routing_class);

								if (pref_gateway > 0) {

									addr_to_string( pref_gateway, str, sizeof (str) );

									dprintf(unix_client->sock, " -p %s", str);

								}

								if (gateway_class > 0) {

									get_gw_speeds(gateway_class, &download_speed, &upload_speed);

									dprintf(unix_client->sock, " -g %i%s/%i%s", (download_speed > 2048 ? download_speed / 1024 : download_speed), (download_speed > 2048 ? "MBit" : "KBit"), (upload_speed > 2048 ? upload_speed / 1024 : upload_speed), (upload_speed > 2048 ? "MBit" : "KBit"));

								}

								list_for_each(debug_pos, &hna_list) {

									hna_local_entry = list_entry(debug_pos, struct hna_local_entry, list);

									addr_to_string(hna_local_entry->addr, str, sizeof (str));
									dprintf(unix_client->sock, " -a %s/%i", str, hna_local_entry->netmask);
								}

								if (debug_level != 0)
									dprintf(unix_client->sock, " -d %i", debug_level);

								if (originator_interval != 1000)
									dprintf(unix_client->sock, " -o %i", originator_interval);

								if (vis_if.sock) {
									addr_to_string(vis_if.addr.sin_addr.s_addr, str, sizeof(str));
									dprintf(unix_client->sock, " -s %s", str);
								}

								if (policy_routing_script != NULL)
									dprintf(unix_client->sock, " --policy-routing-script %s", policy_routing_script);

								if (hop_penalty != TQ_HOP_PENALTY)
									dprintf(unix_client->sock, " --hop-penalty %i", hop_penalty);

								if (!aggregation_enabled)
									dprintf(unix_client->sock, " --disable-aggregation");

								if (purge_timeout != PURGE_TIMEOUT)
									dprintf(unix_client->sock, " --purge-timeout %u", purge_timeout);

								list_for_each(debug_pos, &if_list) {

									batman_if = list_entry(debug_pos, struct batman_if, list);

									dprintf(unix_client->sock, " %s", batman_if->dev);

								}

								dprintf(unix_client->sock, "\nEOD\n");

							}

							prev_list_head_unix = &unix_client->list;

						} else {

							if ( status < 0 )
								debug_output( 0, "Error - can't read unix message: %s\n", strerror(errno) );

							if ( unix_client->debug_level != 0 ) {

								prev_list_head = (struct list_head *)debug_clients.fd_list[unix_client->debug_level - 1];

								if ( pthread_mutex_lock( (pthread_mutex_t *)debug_clients.mutex[unix_client->debug_level - 1] ) != 0 )
									debug_output( 0, "Error - could not lock mutex (unix_listen => 3): %s \n", strerror( errno ) );

								list_for_each_safe( debug_pos, debug_pos_tmp, (struct list_head *)debug_clients.fd_list[unix_client->debug_level - 1] ) {

									debug_level_info = list_entry( debug_pos, struct debug_level_info, list );

									if ( debug_level_info->fd == unix_client->sock ) {

										list_del( prev_list_head, debug_pos, debug_clients.fd_list[unix_client->debug_level - 1] );
										debug_clients.clients_num[unix_client->debug_level - 1]--;

										debugFree( debug_pos, 1202 );

										break;

									}

									prev_list_head = &debug_level_info->list;

								}

								if ( pthread_mutex_unlock( (pthread_mutex_t *)debug_clients.mutex[unix_client->debug_level - 1] ) != 0 )
									debug_output( 0, "Error - could not unlock mutex (unix_listen => 3): %s \n", strerror( errno ) );

							}

							debug_output( 3, "Unix client closed connection ...\n" );

							FD_CLR(unix_client->sock, &wait_sockets);
							close( unix_client->sock );

							list_del( prev_list_head_unix, list_pos, &unix_if.client_list );
							debugFree( list_pos, 1203 );

						}

					} else {

						if ( unix_client->sock > max_sock )
							max_sock = unix_client->sock;

					}

				}

			}

		} else if ((res < 0) && (errno != EINTR)) {

			debug_output(0, "Error - can't select (unix_listen): %s\n", strerror(errno));
			break;

		}

	}

	list_for_each_safe( list_pos, unix_pos_tmp, &unix_if.client_list ) {

		unix_client = list_entry( list_pos, struct unix_client, list );

		if ( unix_client->debug_level != 0 ) {

			prev_list_head = (struct list_head *)debug_clients.fd_list[unix_client->debug_level - 1];

			if ( pthread_mutex_lock( (pthread_mutex_t *)debug_clients.mutex[unix_client->debug_level - 1] ) != 0 )
				debug_output( 0, "Error - could not lock mutex (unix_listen => 4): %s \n", strerror( errno ) );

			list_for_each_safe( debug_pos, debug_pos_tmp, (struct list_head *)debug_clients.fd_list[unix_client->debug_level - 1] ) {

				debug_level_info = list_entry(debug_pos, struct debug_level_info, list);

				if ( debug_level_info->fd == unix_client->sock ) {

					list_del( prev_list_head, debug_pos, debug_clients.fd_list[unix_client->debug_level - 1] );
					debug_clients.clients_num[unix_client->debug_level - 1]--;

					debugFree( debug_pos, 1204 );

					break;

				}

				prev_list_head = &debug_level_info->list;

			}

			if ( pthread_mutex_unlock( (pthread_mutex_t *)debug_clients.mutex[unix_client->debug_level - 1] ) != 0 )
				debug_output( 0, "Error - could not unlock mutex (unix_listen => 4): %s \n", strerror( errno ) );

		}

		list_del( (struct list_head *)&unix_if.client_list, list_pos, &unix_if.client_list );
		debugFree( list_pos, 1205 );

	}

	return NULL;

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2c0, %rsp            # imm = 0x2C0
movq %rdi, -0x8(%rbp)
movl $0x6e, -0x27c(%rbp)
leaq 0x8ad8(%rip), %rax      # 0x1b4a8
movq %rax, %rcx
addq $0x80, %rcx
movq %rcx, 0x80(%rax)
leaq 0x8ac0(%rip), %rax      # 0x1b4a8
movq %rax, %rcx
addq $0x80, %rcx
movq %rcx, 0x88(%rax)
leaq -0x1f8(%rbp), %rax
movq %rax, -0x288(%rbp)
movl $0x0, -0x280(%rbp)
movl -0x280(%rbp), %eax
cmpq $0x10, %rax
jae 0x12a43
movq -0x288(%rbp), %rax
movl -0x280(%rbp), %ecx
movq $0x0, (%rax,%rcx,8)
movl -0x280(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x280(%rbp)
jmp 0x12a11
jmp 0x12a45
leaq 0x8a5c(%rip), %rax      # 0x1b4a8
movl (%rax), %eax
movl $0x40, %ecx
cltd
idivl %ecx
movl %edx, %eax
movl %eax, %ecx
movl $0x1, %eax
shlq %cl, %rax
movq %rax, %rcx
leaq 0x8a3c(%rip), %rax      # 0x1b4a8
movl (%rax), %eax
movl $0x40, %esi
cltd
idivl %esi
cltq
orq -0x1f8(%rbp,%rax,8), %rcx
movq %rcx, -0x1f8(%rbp,%rax,8)
leaq 0x8a19(%rip), %rax      # 0x1b4a8
movl (%rax), %eax
movl %eax, -0xe4(%rbp)
callq 0xfaf0
cmpb $0x0, %al
setne %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x12aac
jmp 0x13c5a
movq $0x1, -0x68(%rbp)
movq $0x0, -0x60(%rbp)
leaq -0x278(%rbp), %rdi
leaq -0x1f8(%rbp), %rsi
movl $0x80, %edx
callq 0x22c0
movl -0xe4(%rbp), %edi
addl $0x1, %edi
leaq -0x278(%rbp), %rsi
xorl %eax, %eax
movl %eax, %ecx
leaq -0x68(%rbp), %r8
movq %rcx, %rdx
callq 0x22f0
movb %al, -0xf1(%rbp)
movsbl -0xf1(%rbp), %eax
cmpl $0x0, %eax
jle 0x13c1c
leaq 0x8997(%rip), %rax      # 0x1b4a8
movl (%rax), %eax
movl $0x40, %ecx
cltd
idivl %ecx
cltq
movq -0x278(%rbp,%rax,8), %rax
movq %rax, -0x298(%rbp)
leaq 0x8975(%rip), %rax      # 0x1b4a8
movl (%rax), %eax
movl $0x40, %ecx
cltd
idivl %ecx
movq -0x298(%rbp), %rax
movl %edx, %ecx
movl $0x1, %edx
shlq %cl, %rdx
movq %rdx, %rcx
andq %rcx, %rax
cmpq $0x0, %rax
je 0x12cac
movl $0x10, %edi
movl $0xc9, %esi
callq 0x7220
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rdi
xorl %esi, %esi
movl $0x10, %edx
callq 0x21e0
leaq 0x8920(%rip), %rax      # 0x1b4a8
movl (%rax), %edi
leaq -0xd6(%rbp), %rax
movq %rax, -0x290(%rbp)
movq -0x290(%rbp), %rsi
leaq -0x27c(%rbp), %rdx
callq 0x2430
movq -0x10(%rbp), %rcx
movl %eax, 0x8(%rcx)
cmpl $-0x1, %eax
jne 0x12bdb
callq 0x2070
movl (%rax), %edi
callq 0x24a0
movq %rax, %rdx
xorl %edi, %edi
leaq 0x5366(%rip), %rsi      # 0x17f35
movb $0x0, %al
callq 0x123f0
jmp 0x12a97
jmp 0x12bdd
movq -0x10(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, (%rax)
movq -0x10(%rbp), %rax
movl 0x8(%rax), %eax
movl $0x40, %ecx
cltd
idivl %ecx
movl %edx, %eax
movl %eax, %ecx
movl $0x1, %eax
shlq %cl, %rax
movq %rax, %rcx
movq -0x10(%rbp), %rax
movl 0x8(%rax), %eax
movl $0x40, %esi
cltd
idivl %esi
cltq
orq -0x1f8(%rbp,%rax,8), %rcx
movq %rcx, -0x1f8(%rbp,%rax,8)
movq -0x10(%rbp), %rax
movl 0x8(%rax), %eax
cmpl -0xe4(%rbp), %eax
jle 0x12c43
movq -0x10(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0xe4(%rbp)
movq -0x10(%rbp), %rax
movl 0x8(%rax), %edi
movl $0x3, %esi
xorl %edx, %edx
movb $0x0, %al
callq 0x20e0
movl %eax, -0xe8(%rbp)
movq -0x10(%rbp), %rax
movl 0x8(%rax), %edi
movl -0xe8(%rbp), %edx
orl $0x800, %edx            # imm = 0x800
movl $0x4, %esi
movb $0x0, %al
callq 0x20e0
movq -0x10(%rbp), %rdi
leaq 0x8820(%rip), %rsi      # 0x1b4a8
addq $0x80, %rsi
callq 0x6e60
movl $0x3, %edi
leaq 0x52bb(%rip), %rsi      # 0x17f5b
movb $0x0, %al
callq 0x123f0
jmp 0x13c1a
leaq 0x87f5(%rip), %rax      # 0x1b4a8
movl (%rax), %eax
movl %eax, -0xe4(%rbp)
leaq 0x87e6(%rip), %rax      # 0x1b4a8
addq $0x80, %rax
movq %rax, -0x48(%rbp)
leaq 0x87d5(%rip), %rax      # 0x1b4a8
movq 0x80(%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x28(%rbp)
leaq 0x87b8(%rip), %rax      # 0x1b4a8
addq $0x80, %rax
cmpq %rax, -0x20(%rbp)
je 0x13c18
movq -0x20(%rbp), %rax
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movl 0x8(%rax), %eax
movl $0x40, %ecx
cltd
idivl %ecx
cltq
movq -0x278(%rbp,%rax,8), %rax
movq %rax, -0x2a0(%rbp)
movq -0x10(%rbp), %rax
movl 0x8(%rax), %eax
movl $0x40, %ecx
cltd
idivl %ecx
movq -0x2a0(%rbp), %rax
movl %edx, %ecx
movl $0x1, %edx
shlq %cl, %rdx
movq %rdx, %rcx
andq %rcx, %rax
cmpq $0x0, %rax
je 0x13be0
movq -0x10(%rbp), %rax
movl 0x8(%rax), %edi
leaq -0x160(%rbp), %rsi
movl $0x64, %edx
callq 0x2250
movl %eax, -0xe0(%rbp)
cmpl $0x0, -0xe0(%rbp)
jle 0x13982
movq -0x10(%rbp), %rax
movl 0x8(%rax), %eax
cmpl -0xe4(%rbp), %eax
jle 0x12d9f
movq -0x10(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0xe4(%rbp)
movsbl -0x160(%rbp), %eax
cmpl $0x61, %eax
jne 0x12de5
cmpl $0x2, -0xe0(%rbp)
jle 0x12de0
leaq -0x160(%rbp), %rdi
addq $0x2, %rdi
xorl %esi, %esi
movl $0x1, %edx
callq 0x8cc0
movq -0x10(%rbp), %rax
movl 0x8(%rax), %edi
leaq 0x53c4(%rip), %rsi      # 0x1819d
movb $0x0, %al
callq 0x2220
jmp 0x13975
movsbl -0x160(%rbp), %eax
cmpl $0x41, %eax
jne 0x12e2b
cmpl $0x2, -0xe0(%rbp)
jle 0x12e26
leaq -0x160(%rbp), %rdi
addq $0x2, %rdi
movl $0x1, %edx
movl %edx, %esi
callq 0x8cc0
movq -0x10(%rbp), %rax
movl 0x8(%rax), %edi
leaq 0x537e(%rip), %rsi      # 0x1819d
movb $0x0, %al
callq 0x2220
jmp 0x13973
movsbl -0x160(%rbp), %eax
cmpl $0x64, %eax
jne 0x1314d
cmpl $0x2, -0xe0(%rbp)
jle 0x13148
movsbl -0x15e(%rbp), %eax
cmpl $0x0, %eax
jle 0x13148
movsbl -0x15e(%rbp), %eax
leaq 0x843a(%rip), %rcx      # 0x1b2a0
movzbl (%rcx), %ecx
cmpl %ecx, %eax
jg 0x13148
movq -0x10(%rbp), %rax
movzbl 0xc(%rax), %eax
cmpl $0x0, %eax
je 0x1301a
leaq 0x855f(%rip), %rax      # 0x1b3e8
movq (%rax), %rax
movq -0x10(%rbp), %rcx
movzbl 0xc(%rcx), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x40(%rbp)
leaq 0x853f(%rip), %rax      # 0x1b3e8
movq 0x10(%rax), %rax
movq -0x10(%rbp), %rcx
movzbl 0xc(%rcx), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x24e0
cmpl $0x0, %eax
je 0x12ee8
callq 0x2070
movl (%rax), %edi
callq 0x24a0
movq %rax, %rdx
xorl %edi, %edi
leaq 0x5097(%rip), %rsi      # 0x17f78
movb $0x0, %al
callq 0x123f0
leaq 0x84f9(%rip), %rax      # 0x1b3e8
movq (%rax), %rax
movq -0x10(%rbp), %rcx
movzbl 0xc(%rcx), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movq (%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x38(%rbp)
movq -0x30(%rbp), %rax
leaq 0x84c7(%rip), %rcx      # 0x1b3e8
movq (%rcx), %rcx
movq -0x10(%rbp), %rdx
movzbl 0xc(%rdx), %edx
subl $0x1, %edx
movslq %edx, %rdx
cmpq (%rcx,%rdx,8), %rax
je 0x12fd2
movq -0x30(%rbp), %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movl 0x8(%rax), %eax
movq -0x10(%rbp), %rcx
cmpl 0x8(%rcx), %eax
jne 0x12fb2
movq -0x40(%rbp), %rdi
movq -0x30(%rbp), %rsi
leaq 0x8485(%rip), %rax      # 0x1b3e8
movq (%rax), %rax
movq -0x10(%rbp), %rcx
movzbl 0xc(%rcx), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdx
callq 0x6ed0
leaq 0x8464(%rip), %rax      # 0x1b3e8
movq 0x8(%rax), %rax
movq -0x10(%rbp), %rcx
movzbl 0xc(%rcx), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movw (%rax,%rcx,2), %dx
addw $-0x1, %dx
movw %dx, (%rax,%rcx,2)
movq -0x30(%rbp), %rdi
movl $0x4b1, %esi            # imm = 0x4B1
callq 0x7720
jmp 0x12fd2
movq -0x18(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x38(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x38(%rbp)
jmp 0x12f16
leaq 0x840f(%rip), %rax      # 0x1b3e8
movq 0x10(%rax), %rax
movq -0x10(%rbp), %rcx
movzbl 0xc(%rcx), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x2300
cmpl $0x0, %eax
je 0x13018
callq 0x2070
movl (%rax), %edi
callq 0x24a0
movq %rax, %rdx
xorl %edi, %edi
leaq 0x4f9d(%rip), %rsi      # 0x17fae
movb $0x0, %al
callq 0x123f0
jmp 0x1301a
movq -0x10(%rbp), %rax
movzbl 0xc(%rax), %eax
movsbl -0x15e(%rbp), %ecx
cmpl %ecx, %eax
je 0x1313e
leaq 0x83b0(%rip), %rax      # 0x1b3e8
movq 0x10(%rax), %rax
movsbl -0x15e(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x24e0
cmpl $0x0, %eax
je 0x13076
callq 0x2070
movl (%rax), %edi
callq 0x24a0
movq %rax, %rdx
xorl %edi, %edi
leaq 0x4f77(%rip), %rsi      # 0x17fe6
movb $0x0, %al
callq 0x123f0
movl $0x10, %edi
movl $0xca, %esi
callq 0x7220
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
movq -0x10(%rbp), %rax
movl 0x8(%rax), %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0x18(%rbp), %rdi
leaq 0x833b(%rip), %rax      # 0x1b3e8
movq (%rax), %rax
movsbl -0x15e(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rsi
callq 0x6de0
leaq 0x831b(%rip), %rax      # 0x1b3e8
movq 0x8(%rax), %rax
movsbl -0x15e(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movw (%rax,%rcx,2), %dx
addw $0x1, %dx
movw %dx, (%rax,%rcx,2)
movb -0x15e(%rbp), %cl
movq -0x10(%rbp), %rax
movb %cl, 0xc(%rax)
leaq 0x82ea(%rip), %rax      # 0x1b3e8
movq 0x10(%rax), %rax
movsbl -0x15e(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x2300
cmpl $0x0, %eax
je 0x1313c
callq 0x2070
movl (%rax), %edi
callq 0x24a0
movq %rax, %rdx
xorl %edi, %edi
leaq 0x4ee7(%rip), %rsi      # 0x1801c
movb $0x0, %al
callq 0x123f0
jmp 0x13146
movq -0x10(%rbp), %rax
movb $0x0, 0xc(%rax)
jmp 0x13148
jmp 0x13971
movsbl -0x160(%rbp), %eax
cmpl $0x69, %eax
jne 0x1317f
movq -0x10(%rbp), %rax
movl 0x8(%rax), %edi
callq 0x12770
movq -0x10(%rbp), %rax
movl 0x8(%rax), %edi
leaq 0x502a(%rip), %rsi      # 0x1819d
movb $0x0, %al
callq 0x2220
jmp 0x1396f
movsbl -0x160(%rbp), %eax
cmpl $0x67, %eax
jne 0x132af
cmpl $0x2, -0xe0(%rbp)
jle 0x13295
movsbl -0x15e(%rbp), %eax
cmpl $0x0, %eax
je 0x131bb
xorl %edi, %edi
callq 0xc140
movsbl %al, %eax
cmpl $0x0, %eax
je 0x13293
leaq 0x8197(%rip), %rax      # 0x1b359
movzbl (%rax), %edx
xorl %eax, %eax
movl $0x1, %ecx
cmpl $0x0, %edx
cmovgl %ecx, %eax
movb %al, -0x171(%rbp)
movb -0x15e(%rbp), %cl
leaq 0x8174(%rip), %rax      # 0x1b359
movb %cl, (%rax)
leaq 0x816b(%rip), %rax      # 0x1b359
movb (%rax), %cl
leaq 0x81b9(%rip), %rax      # 0x1b3b0
movq (%rax), %rax
movb %cl, 0x59(%rax)
leaq 0x8155(%rip), %rax      # 0x1b359
movzbl (%rax), %eax
cmpl $0x0, %eax
jle 0x13250
leaq 0x8147(%rip), %rax      # 0x1b35a
movzbl (%rax), %eax
cmpl $0x0, %eax
jle 0x13250
leaq 0x8138(%rip), %rax      # 0x1b35a
movzbl (%rax), %eax
cmpl $0x0, %eax
je 0x1323c
leaq 0x812f(%rip), %rax      # 0x1b360
cmpq $0x0, (%rax)
je 0x1323c
callq 0xfb30
movl $0x1, %edi
callq 0xb2f0
leaq 0x810d(%rip), %rax      # 0x1b35a
movb $0x0, (%rax)
cmpb $0x0, -0x171(%rbp)
jne 0x1326f
leaq 0x80f9(%rip), %rax      # 0x1b359
movzbl (%rax), %eax
cmpl $0x0, %eax
jle 0x1326f
callq 0xe6f0
jmp 0x13291
movsbl -0x171(%rbp), %eax
cmpl $0x0, %eax
je 0x1328f
leaq 0x80d7(%rip), %rax      # 0x1b359
movzbl (%rax), %eax
cmpl $0x0, %eax
jne 0x1328f
callq 0xff40
jmp 0x13291
jmp 0x13293
jmp 0x13295
movq -0x10(%rbp), %rax
movl 0x8(%rax), %edi
leaq 0x4efa(%rip), %rsi      # 0x1819d
movb $0x0, %al
callq 0x2220
jmp 0x1396d
movsbl -0x160(%rbp), %eax
cmpl $0x6d, %eax
jne 0x13311
cmpl $0x2, -0xe0(%rbp)
jle 0x132f7
leaq 0x7fd9(%rip), %rax      # 0x1b2a4
movzbl (%rax), %edx
movsbl -0x15e(%rbp), %ecx
movl $0x3, %edi
leaq 0x4d73(%rip), %rsi      # 0x18054
movb $0x0, %al
callq 0x123f0
movb -0x15e(%rbp), %cl
leaq 0x7faf(%rip), %rax      # 0x1b2a4
movb %cl, (%rax)
movq -0x10(%rbp), %rax
movl 0x8(%rax), %edi
leaq 0x4e98(%rip), %rsi      # 0x1819d
movb $0x0, %al
callq 0x2220
jmp 0x1396b
movsbl -0x160(%rbp), %eax
cmpl $0x71, %eax
jne 0x133ac
cmpl $0x2, -0xe0(%rbp)
jle 0x13392
leaq 0x7f77(%rip), %rax      # 0x1b2a8
movl (%rax), %eax
movl %eax, -0x2a4(%rbp)
leaq -0x160(%rbp), %rdi
addq $0x2, %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0xa, %edx
callq 0x22b0
movl -0x2a4(%rbp), %edx
movq %rax, %rcx
movl $0x3, %edi
leaq 0x4d27(%rip), %rsi      # 0x1808e
movb $0x0, %al
callq 0x123f0
leaq -0x160(%rbp), %rdi
addq $0x2, %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0xa, %edx
callq 0x22b0
movl %eax, %ecx
leaq 0x7f18(%rip), %rax      # 0x1b2a8
movl %ecx, (%rax)
movq -0x10(%rbp), %rax
movl 0x8(%rax), %edi
leaq 0x4dfd(%rip), %rsi      # 0x1819d
movb $0x0, %al
callq 0x2220
jmp 0x13969
movsbl -0x160(%rbp), %eax
cmpl $0x72, %eax
jne 0x13506
cmpl $0x2, -0xe0(%rbp)
jle 0x134ec
movsbl -0x15e(%rbp), %eax
cmpl $0x0, %eax
je 0x133e8
xorl %edi, %edi
callq 0xc140
movsbl %al, %eax
cmpl $0x0, %eax
je 0x134ea
movb -0x15e(%rbp), %al
movb %al, -0x172(%rbp)
movsbl -0x172(%rbp), %eax
cmpl $0x0, %eax
jl 0x134e8
movsbl -0x172(%rbp), %eax
cmpl $0x3, %eax
jg 0x134e8
movsbl -0x172(%rbp), %eax
leaq 0x7f38(%rip), %rcx      # 0x1b35a
movzbl (%rcx), %ecx
cmpl %ecx, %eax
je 0x134e8
leaq 0x7f26(%rip), %rax      # 0x1b35a
movzbl (%rax), %eax
cmpl $0x0, %eax
je 0x1344e
leaq 0x7f1d(%rip), %rax      # 0x1b360
cmpq $0x0, (%rax)
je 0x1344e
callq 0xfb30
movsbl -0x172(%rbp), %eax
cmpl $0x0, %eax
jle 0x1348e
leaq 0x7ef8(%rip), %rax      # 0x1b359
movzbl (%rax), %eax
cmpl $0x0, %eax
jle 0x1348e
leaq 0x7ee9(%rip), %rax      # 0x1b359
movb $0x0, (%rax)
leaq 0x7edf(%rip), %rax      # 0x1b359
movb (%rax), %cl
leaq 0x7f2d(%rip), %rax      # 0x1b3b0
movq (%rax), %rax
movb %cl, 0x59(%rax)
callq 0xff40
movsbl -0x172(%rbp), %eax
cmpl $0x0, %eax
jle 0x134b2
leaq 0x7eb9(%rip), %rax      # 0x1b35a
movzbl (%rax), %eax
cmpl $0x0, %eax
jne 0x134b2
xorl %edi, %edi
callq 0xb2f0
jmp 0x134d9
movsbl -0x172(%rbp), %eax
cmpl $0x0, %eax
jne 0x134d7
leaq 0x7e95(%rip), %rax      # 0x1b35a
movzbl (%rax), %eax
cmpl $0x0, %eax
jle 0x134d7
movl $0x1, %edi
callq 0xb2f0
jmp 0x134d9
movb -0x172(%rbp), %cl
leaq 0x7e74(%rip), %rax      # 0x1b35a
movb %cl, (%rax)
jmp 0x134ea
jmp 0x134ec
movq -0x10(%rbp), %rax
movl 0x8(%rax), %edi
leaq 0x4ca3(%rip), %rsi      # 0x1819d
movb $0x0, %al
callq 0x2220
jmp 0x13967
movsbl -0x160(%rbp), %eax
cmpl $0x70, %eax
jne 0x1359d
cmpl $0x2, -0xe0(%rbp)
jle 0x13583
leaq -0x160(%rbp), %rsi
addq $0x2, %rsi
movl $0x2, %edi
leaq -0xdc(%rbp), %rdx
callq 0x22d0
cmpl $0x0, %eax
jle 0x13563
movl -0xdc(%rbp), %ecx
leaq 0x7e23(%rip), %rax      # 0x1b370
movl %ecx, (%rax)
leaq 0x7e0a(%rip), %rax      # 0x1b360
cmpq $0x0, (%rax)
je 0x13561
callq 0xfb30
jmp 0x13581
leaq -0x160(%rbp), %rdx
addq $0x2, %rdx
movl $0x3, %edi
leaq 0x4b4a(%rip), %rsi      # 0x180c4
movb $0x0, %al
callq 0x123f0
jmp 0x13583
movq -0x10(%rbp), %rax
movl 0x8(%rax), %edi
leaq 0x4c0c(%rip), %rsi      # 0x1819d
movb $0x0, %al
callq 0x2220
jmp 0x13965
movsbl -0x160(%rbp), %eax
cmpl $0x79, %eax
jne 0x13963
movq -0x10(%rbp), %rax
movl 0x8(%rax), %edi
leaq 0x7e5d(%rip), %rax      # 0x1b418
movq (%rax), %rdx
leaq 0x4b4e(%rip), %rsi      # 0x18113
movb $0x0, %al
callq 0x2220
leaq 0x7d87(%rip), %rax      # 0x1b35a
movzbl (%rax), %eax
cmpl $0x0, %eax
jle 0x135fa
movq -0x10(%rbp), %rax
movl 0x8(%rax), %edi
leaq 0x7d71(%rip), %rax      # 0x1b35a
movzbl (%rax), %edx
leaq 0x4b15(%rip), %rsi      # 0x18108
movb $0x0, %al
callq 0x2220
leaq 0x7d6f(%rip), %rax      # 0x1b370
cmpl $0x0, (%rax)
jbe 0x1363c
leaq 0x7d63(%rip), %rax      # 0x1b370
movl (%rax), %edi
leaq -0x170(%rbp), %rsi
movl $0x10, %edx
callq 0xfa90
movq -0x10(%rbp), %rax
movl 0x8(%rax), %edi
leaq -0x170(%rbp), %rdx
leaq 0x4ada(%rip), %rsi      # 0x1810f
movb $0x0, %al
callq 0x2220
leaq 0x7d16(%rip), %rax      # 0x1b359
movzbl (%rax), %eax
cmpl $0x0, %eax
jle 0x1374c
leaq -0xec(%rbp), %rsi
leaq -0xf0(%rbp), %rdx
leaq 0x7cf5(%rip), %rax      # 0x1b359
movzbl (%rax), %edi
callq 0x3030
movq -0x10(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0x2a8(%rbp)
cmpl $0x800, -0xec(%rbp)     # imm = 0x800
jle 0x1369b
movl -0xec(%rbp), %eax
movl $0x400, %ecx            # imm = 0x400
cltd
idivl %ecx
movl %eax, -0x2ac(%rbp)
jmp 0x136a7
movl -0xec(%rbp), %eax
movl %eax, -0x2ac(%rbp)
movl -0x2ac(%rbp), %eax
movl %eax, -0x2bc(%rbp)
movl -0xec(%rbp), %edx
leaq 0x14c3(%rip), %rax      # 0x14b83
leaq 0x14b7(%rip), %rcx      # 0x14b7e
cmpl $0x800, %edx            # imm = 0x800
cmovgq %rcx, %rax
movq %rax, -0x2b8(%rbp)
cmpl $0x800, -0xf0(%rbp)     # imm = 0x800
jle 0x136fa
movl -0xf0(%rbp), %eax
movl $0x400, %ecx            # imm = 0x400
cltd
idivl %ecx
movl %eax, -0x2c0(%rbp)
jmp 0x13706
movl -0xf0(%rbp), %eax
movl %eax, -0x2c0(%rbp)
movq -0x2b8(%rbp), %rcx
movl -0x2bc(%rbp), %edx
movl -0x2a8(%rbp), %edi
movl -0x2c0(%rbp), %r8d
movl -0xf0(%rbp), %esi
leaq 0x1456(%rip), %r9       # 0x14b83
leaq 0x144a(%rip), %rax      # 0x14b7e
cmpl $0x800, %esi            # imm = 0x800
cmovgq %rax, %r9
leaq 0x49d1(%rip), %rsi      # 0x18116
movb $0x0, %al
callq 0x2220
leaq 0x7f7d(%rip), %rax      # 0x1b6d0
movq (%rax), %rax
movq %rax, -0x30(%rbp)
leaq 0x7f6f(%rip), %rax      # 0x1b6d0
cmpq %rax, -0x30(%rbp)
je 0x137b8
movq -0x30(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
movl 0x8(%rax), %edi
leaq -0x170(%rbp), %rsi
movl $0x10, %edx
callq 0xfa90
movq -0x10(%rbp), %rax
movl 0x8(%rax), %edi
leaq -0x170(%rbp), %rdx
movq -0x50(%rbp), %rax
movzbl 0xc(%rax), %ecx
leaq 0x4980(%rip), %rsi      # 0x18124
movb $0x0, %al
callq 0x2220
movq -0x30(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x30(%rbp)
jmp 0x1375a
leaq 0x7b99(%rip), %rax      # 0x1b358
movzbl (%rax), %eax
cmpl $0x0, %eax
je 0x137e6
movq -0x10(%rbp), %rax
movl 0x8(%rax), %edi
leaq 0x7b83(%rip), %rax      # 0x1b358
movzbl (%rax), %edx
leaq 0x494f(%rip), %rsi      # 0x1812e
movb $0x0, %al
callq 0x2220
leaq 0x7ab5(%rip), %rax      # 0x1b2a2
movswl (%rax), %eax
cmpl $0x3e8, %eax            # imm = 0x3E8
je 0x13816
movq -0x10(%rbp), %rax
movl 0x8(%rax), %edi
leaq 0x7a9d(%rip), %rax      # 0x1b2a2
movswl (%rax), %edx
leaq 0x4926(%rip), %rsi      # 0x18135
movb $0x0, %al
callq 0x2220
leaq 0x7be3(%rip), %rax      # 0x1b400
cmpl $0x0, (%rax)
je 0x13859
leaq 0x7bd7(%rip), %rax      # 0x1b400
movl 0x8(%rax), %edi
leaq -0x170(%rbp), %rsi
movl $0x10, %edx
callq 0xfa90
movq -0x10(%rbp), %rax
movl 0x8(%rax), %edi
leaq -0x170(%rbp), %rdx
leaq 0x48ea(%rip), %rsi      # 0x1813c
movb $0x0, %al
callq 0x2220
leaq 0x7b18(%rip), %rax      # 0x1b378
cmpq $0x0, (%rax)
je 0x13885
movq -0x10(%rbp), %rax
movl 0x8(%rax), %edi
leaq 0x7b04(%rip), %rax      # 0x1b378
movq (%rax), %rdx
leaq 0x48c5(%rip), %rsi      # 0x18143
movb $0x0, %al
callq 0x2220
leaq 0x7a18(%rip), %rax      # 0x1b2a4
movzbl (%rax), %eax
cmpl $0xa, %eax
je 0x138b3
movq -0x10(%rbp), %rax
movl 0x8(%rax), %edi
leaq 0x7a02(%rip), %rax      # 0x1b2a4
movzbl (%rax), %edx
leaq 0x48b3(%rip), %rsi      # 0x1815f
movb $0x0, %al
callq 0x2220
leaq 0x79f7(%rip), %rax      # 0x1b2b1
cmpb $0x0, (%rax)
jne 0x138d4
movq -0x10(%rbp), %rax
movl 0x8(%rax), %edi
leaq 0x48a4(%rip), %rsi      # 0x18171
movb $0x0, %al
callq 0x2220
leaq 0x79cd(%rip), %rax      # 0x1b2a8
cmpl $0x30d40, (%rax)        # imm = 0x30D40
je 0x13901
movq -0x10(%rbp), %rax
movl 0x8(%rax), %edi
leaq 0x79b7(%rip), %rax      # 0x1b2a8
movl (%rax), %edx
leaq 0x488e(%rip), %rsi      # 0x18188
movb $0x0, %al
callq 0x2220
leaq 0x7aa8(%rip), %rax      # 0x1b3b0
movq (%rax), %rax
movq %rax, -0x30(%rbp)
leaq 0x7a9a(%rip), %rax      # 0x1b3b0
cmpq %rax, -0x30(%rbp)
je 0x1394e
movq -0x30(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x10(%rbp), %rax
movl 0x8(%rax), %edi
movq -0x58(%rbp), %rax
movq 0x8(%rax), %rdx
leaq 0x47d8(%rip), %rsi      # 0x18112
movb $0x0, %al
callq 0x2220
movq -0x30(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x30(%rbp)
jmp 0x1390f
movq -0x10(%rbp), %rax
movl 0x8(%rax), %edi
leaq 0x4840(%rip), %rsi      # 0x1819c
movb $0x0, %al
callq 0x2220
jmp 0x13965
jmp 0x13967
jmp 0x13969
jmp 0x1396b
jmp 0x1396d
jmp 0x1396f
jmp 0x13971
jmp 0x13973
jmp 0x13975
movq -0x10(%rbp), %rax
movq %rax, -0x48(%rbp)
jmp 0x13bde
cmpl $0x0, -0xe0(%rbp)
jge 0x139aa
callq 0x2070
movl (%rax), %edi
callq 0x24a0
movq %rax, %rdx
xorl %edi, %edi
leaq 0x47ff(%rip), %rsi      # 0x181a2
movb $0x0, %al
callq 0x123f0
movq -0x10(%rbp), %rax
movzbl 0xc(%rax), %eax
cmpl $0x0, %eax
je 0x13b53
leaq 0x7a26(%rip), %rax      # 0x1b3e8
movq (%rax), %rax
movq -0x10(%rbp), %rcx
movzbl 0xc(%rcx), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x40(%rbp)
leaq 0x7a06(%rip), %rax      # 0x1b3e8
movq 0x10(%rax), %rax
movq -0x10(%rbp), %rcx
movzbl 0xc(%rcx), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x24e0
cmpl $0x0, %eax
je 0x13a21
callq 0x2070
movl (%rax), %edi
callq 0x24a0
movq %rax, %rdx
xorl %edi, %edi
leaq 0x47ad(%rip), %rsi      # 0x181c7
movb $0x0, %al
callq 0x123f0
leaq 0x79c0(%rip), %rax      # 0x1b3e8
movq (%rax), %rax
movq -0x10(%rbp), %rcx
movzbl 0xc(%rcx), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movq (%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x38(%rbp)
movq -0x30(%rbp), %rax
leaq 0x798e(%rip), %rcx      # 0x1b3e8
movq (%rcx), %rcx
movq -0x10(%rbp), %rdx
movzbl 0xc(%rdx), %edx
subl $0x1, %edx
movslq %edx, %rdx
cmpq (%rcx,%rdx,8), %rax
je 0x13b0b
movq -0x30(%rbp), %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movl 0x8(%rax), %eax
movq -0x10(%rbp), %rcx
cmpl 0x8(%rcx), %eax
jne 0x13aeb
movq -0x40(%rbp), %rdi
movq -0x30(%rbp), %rsi
leaq 0x794c(%rip), %rax      # 0x1b3e8
movq (%rax), %rax
movq -0x10(%rbp), %rcx
movzbl 0xc(%rcx), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdx
callq 0x6ed0
leaq 0x792b(%rip), %rax      # 0x1b3e8
movq 0x8(%rax), %rax
movq -0x10(%rbp), %rcx
movzbl 0xc(%rcx), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movw (%rax,%rcx,2), %dx
addw $-0x1, %dx
movw %dx, (%rax,%rcx,2)
movq -0x30(%rbp), %rdi
movl $0x4b2, %esi            # imm = 0x4B2
callq 0x7720
jmp 0x13b0b
movq -0x18(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x38(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x38(%rbp)
jmp 0x13a4f
leaq 0x78d6(%rip), %rax      # 0x1b3e8
movq 0x10(%rax), %rax
movq -0x10(%rbp), %rcx
movzbl 0xc(%rcx), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x2300
cmpl $0x0, %eax
je 0x13b51
callq 0x2070
movl (%rax), %edi
callq 0x24a0
movq %rax, %rdx
xorl %edi, %edi
leaq 0x46b3(%rip), %rsi      # 0x181fd
movb $0x0, %al
callq 0x123f0
jmp 0x13b53
movl $0x3, %edi
leaq 0x46d6(%rip), %rsi      # 0x18235
movb $0x0, %al
callq 0x123f0
movq -0x10(%rbp), %rax
movl 0x8(%rax), %eax
movl $0x40, %ecx
cltd
idivl %ecx
movl %edx, %eax
movl %eax, %ecx
movl $0x1, %eax
shlq %cl, %rax
movq %rax, %rcx
xorq $-0x1, %rcx
movq -0x10(%rbp), %rax
movl 0x8(%rax), %eax
movl $0x40, %esi
cltd
idivl %esi
cltq
andq -0x1f8(%rbp,%rax,8), %rcx
movq %rcx, -0x1f8(%rbp,%rax,8)
movq -0x10(%rbp), %rax
movl 0x8(%rax), %edi
callq 0x2210
movq -0x48(%rbp), %rdi
movq -0x20(%rbp), %rsi
leaq 0x78e4(%rip), %rdx      # 0x1b4a8
addq $0x80, %rdx
callq 0x6ed0
movq -0x20(%rbp), %rdi
movl $0x4b3, %esi            # imm = 0x4B3
callq 0x7720
jmp 0x13bfe
movq -0x10(%rbp), %rax
movl 0x8(%rax), %eax
cmpl -0xe4(%rbp), %eax
jle 0x13bfc
movq -0x10(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0xe4(%rbp)
jmp 0x13bfe
jmp 0x13c00
movq -0x28(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x28(%rbp)
jmp 0x12ce9
jmp 0x13c1a
jmp 0x13c55
movsbl -0xf1(%rbp), %eax
cmpl $0x0, %eax
jge 0x13c53
callq 0x2070
cmpl $0x4, (%rax)
je 0x13c53
callq 0x2070
movl (%rax), %edi
callq 0x24a0
movq %rax, %rdx
xorl %edi, %edi
leaq 0x460e(%rip), %rsi      # 0x18258
movb $0x0, %al
callq 0x123f0
jmp 0x13c5a
jmp 0x13c55
jmp 0x12a97
leaq 0x7847(%rip), %rax      # 0x1b4a8
movq 0x80(%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x28(%rbp)
leaq 0x782a(%rip), %rax      # 0x1b4a8
addq $0x80, %rax
cmpq %rax, -0x20(%rbp)
je 0x13e7f
movq -0x20(%rbp), %rax
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movzbl 0xc(%rax), %eax
cmpl $0x0, %eax
je 0x13e3f
leaq 0x773a(%rip), %rax      # 0x1b3e8
movq (%rax), %rax
movq -0x10(%rbp), %rcx
movzbl 0xc(%rcx), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x40(%rbp)
leaq 0x771a(%rip), %rax      # 0x1b3e8
movq 0x10(%rax), %rax
movq -0x10(%rbp), %rcx
movzbl 0xc(%rcx), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x24e0
cmpl $0x0, %eax
je 0x13d0d
callq 0x2070
movl (%rax), %edi
callq 0x24a0
movq %rax, %rdx
xorl %edi, %edi
leaq 0x457a(%rip), %rsi      # 0x18280
movb $0x0, %al
callq 0x123f0
leaq 0x76d4(%rip), %rax      # 0x1b3e8
movq (%rax), %rax
movq -0x10(%rbp), %rcx
movzbl 0xc(%rcx), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movq (%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x38(%rbp)
movq -0x30(%rbp), %rax
leaq 0x76a2(%rip), %rcx      # 0x1b3e8
movq (%rcx), %rcx
movq -0x10(%rbp), %rdx
movzbl 0xc(%rdx), %edx
subl $0x1, %edx
movslq %edx, %rdx
cmpq (%rcx,%rdx,8), %rax
je 0x13df7
movq -0x30(%rbp), %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movl 0x8(%rax), %eax
movq -0x10(%rbp), %rcx
cmpl 0x8(%rcx), %eax
jne 0x13dd7
movq -0x40(%rbp), %rdi
movq -0x30(%rbp), %rsi
leaq 0x7660(%rip), %rax      # 0x1b3e8
movq (%rax), %rax
movq -0x10(%rbp), %rcx
movzbl 0xc(%rcx), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdx
callq 0x6ed0
leaq 0x763f(%rip), %rax      # 0x1b3e8
movq 0x8(%rax), %rax
movq -0x10(%rbp), %rcx
movzbl 0xc(%rcx), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movw (%rax,%rcx,2), %dx
addw $-0x1, %dx
movw %dx, (%rax,%rcx,2)
movq -0x30(%rbp), %rdi
movl $0x4b4, %esi            # imm = 0x4B4
callq 0x7720
jmp 0x13df7
movq -0x18(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x38(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x38(%rbp)
jmp 0x13d3b
leaq 0x75ea(%rip), %rax      # 0x1b3e8
movq 0x10(%rax), %rax
movq -0x10(%rbp), %rcx
movzbl 0xc(%rcx), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x2300
cmpl $0x0, %eax
je 0x13e3d
callq 0x2070
movl (%rax), %edi
callq 0x24a0
movq %rax, %rdx
xorl %edi, %edi
leaq 0x4480(%rip), %rsi      # 0x182b6
movb $0x0, %al
callq 0x123f0
jmp 0x13e3f
movq -0x20(%rbp), %rsi
leaq 0x765e(%rip), %rdx      # 0x1b4a8
addq $0x80, %rdx
movq %rdx, %rdi
callq 0x6ed0
movq -0x20(%rbp), %rdi
movl $0x4b5, %esi            # imm = 0x4B5
callq 0x7720
movq -0x28(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x28(%rbp)
jmp 0x13c77
xorl %eax, %eax
addq $0x2c0, %rsp            # imm = 0x2C0
popq %rbp
retq