// File: /workspace/github_cpp_makefile_star2_O2/lotuskip[P]yuxtapa/server/network.cpp
// Function: Network::receive_n_handle()
bool Network::receive_n_handle()
{
	sockaddr_storage them;
	socklen_t addr_len = sizeof(them);
	unsigned char mid;
	list<Player>::iterator pit;
	char handled = 0;
	short msglen;
	unsigned short ush;
	string s;
	while(handled++ < 20 && // handle at most 20 messages; then return control
		(msglen = recvfrom(s_me, recv_buffer.getw(), BUFFER_SIZE, 0,
			(sockaddr *)&them, &addr_len)) != -1)
	{
		mid = recv_buffer.read_ch();
		switch(mid)
		{
		case MID_HELLO:
		{
			// Check that interaction versions match:
			if(recv_buffer.read_sh() != INTR_VERSION)
			{
				send_buffer.clear();
				send_buffer.add((unsigned char)MID_HELLO_VERSION);
				do_send_to(&them, addr_len);
				break;
			}
			string pl_passw = "";
			ush = recv_buffer.read_sh();
			if(ush != 0xFFFF) // indicates a password has been sent, too
				recv_buffer.read_str(pl_passw);
			recv_buffer.read_str(s); // read nick
			if(num_syms(s) > MAX_NICK_LEN)
			{
				/* Client passed version control but has too long nick??
				 * That means it's a tampered client! Ignore the bastard. */
				break;
			}
			ush = player_hello(ush, pl_passw, s, them, false);
			// Note: player_hello can call something that uses send_buffer!
			send_buffer.clear();
			if(ush == ID_STEAL)
			{
				send_buffer.add((unsigned char)MID_HELLO_STEAL);
				do_send_to(&them, addr_len);
				break;
			}
			/*else*/ if(ush == IP_BANNED)
			{
				send_buffer.add((unsigned char)MID_HELLO_BANNED);
				do_send_to(&them, addr_len);
				break;
			}
			/*else*/ if(ush == SERVER_FULL)
			{
				send_buffer.add((unsigned char)MID_HELLO_FULL);
				do_send_to(&them, addr_len);
				break;
			}
			/*else*/ if(ush == JOIN_OK_ID_OK)
				send_buffer.add((unsigned char)MID_HELLO);
			else
			{
				send_buffer.add((unsigned char)MID_HELLO_NEWID);
				send_buffer.add(ush);
				send_buffer.add(pl_passw);
			}
			do_send_to(&them, addr_len);
			// Send greeting:
			s = Config::greeting_str();
			construct_msg(s, DEF_MSG_COL);
			do_send_to(&them, addr_len);
			list<Player>::iterator pit = (--cur_players.end());
			if(intermission) // send the miniview to the new player
			{
				do_send_to(&them, addr_len, Game::get_miniview());
				Game::construct_team_msgs(pit);
			}
			else
				Game::send_flag_upds(pit);
			time(&(pit->last_switched_cl));

			Game::send_state_change(pit);
			Game::send_team_upds(pit);
			to_chat(pit->nick + " connected.");
			break;
		}
		case MID_BOTHELLO:
		{
			send_buffer.clear();
			// Check that interaction versions match:
			if(recv_buffer.read_sh() != INTR_VERSION)
			{
				send_buffer.add((unsigned char)MID_HELLO_VERSION);
				do_send_to(&them, addr_len);
				to_log("Incompatible bot connection.");
				break;
			}
			ush = recv_buffer.read_sh();
			if((ush = bot_connect(ush, them)) <= HIGHEST_VALID_ID)
			{
				send_buffer.add((unsigned char)MID_HELLO_NEWID);
				send_buffer.add(ush);
				send_buffer.add((unsigned short)Config::int_settings[Config::IS_TURNMS]);
				do_send_to(&them, addr_len);
			}
			break;
		}
		case MID_QUIT:
			if((pit = who_is_this()) != cur_players.end())
				Game::remove_player(pit, " disconnected.");
			break;
		case MID_SAY_ALOUD:
			if(!intermission && (pit = who_is_this()) != cur_players.end()
				&& pit->is_alive() && voices.find(pit->own_pc->getpos()) == voices.end())
			{
				recv_buffer.read_str(s);
				// A proper client wouldn't send too long messages:
				if(num_syms(s) > MSG_WIN_X-3)
					cheat_attempt(pit);
				else
				{
					add_voice(pit->own_pc->getpos(), s);
					event_set.insert(pit->own_pc->getpos());
				}
			}
			break;
		case MID_SAY_CHAT:
			if((pit = who_is_this()) != cur_players.end())
			{
				recv_buffer.read_str(s);
				// Check if it is a !command
				if(!s.empty() && s[0] == '!'
					&& process_cmd(pit, s))
					break;
				// (process_cmd returns true if the command should not be
				// broadcast)

				// Else, we forward the message to all clients (and add the
				// speakers nick to the end). Note that we are using the
				// "receive buffer" for sending, in order to avoid copying.
				if(!pit->muted)
				{
					*(recv_buffer.getw()+1) = *(recv_buffer.getw()+2) = 0;
					recv_buffer.set_amount(msglen);
					recv_buffer.add(pit->nick);
					recv_buffer.add((unsigned char)pit->team);
					broadcast(0xFFFF, recv_buffer);
				}
			}
			break;
		case MID_VIEW_UPD:
			if((pit = who_is_this()) != cur_players.end())
			{
				ush = recv_buffer.read_sh();
				// 't' is an ack from a client "I've received the view
				// update for turn t'. But the message might be delayed;
				// must check if the player has acted since:
				if(ush > pit->last_heard_of)
					pit->last_heard_of = ush;
			}
			break;
		case MID_TAKE_ACTION:
			if(!intermission && (pit = who_is_this()) != cur_players.end()
				&& pit->action_queue.size() < MAX_AXN_QUEUE_SIZE)
			{
				// First check sequentiality. If this action is "timestamped" earlier than
				// the latest action we have actually received from this player, ignore it!
				ush = recv_buffer.read_sh(); // turn
				if(ush >= pit->last_acted_on_turn)
				{
					// This is the latest we've heard from this client:
					if(ush > pit->last_heard_of)
						pit->last_heard_of = ush;

					unsigned char an = recv_buffer.read_ch(); // action number for the turn
					if(ush > pit->last_acted_on_turn || an > pit->last_axn_number)
					{
						// we accept this action, so update the values:
						pit->last_acted_on_turn = ush;
						pit->last_axn_number = an;

						// Now, construct the action:
						if((mid = recv_buffer.read_ch()) == XN_SHOOT) // contains two more values
						{
							// If either coordinate is too large by abs-val (out of screen), kick
							char xcoord = static_cast<char>(recv_buffer.read_ch());
							char ycoord = static_cast<char>(recv_buffer.read_ch());
							if(abs(xcoord) > VIEWSIZE/2 || abs(ycoord) > VIEWSIZE/2
								|| (!xcoord && !ycoord)) // both zero is bad, too
							{
#ifdef DEBUG
								to_log("Read illegal shot coordinates ("
									+ lex_cast(xcoord) + ","
									+ lex_cast(ycoord) + ")!");
#endif
								cheat_attempt(pit);
								break;
							}
							Game::player_action(pit, Axn(mid, xcoord, ycoord));
						}
						else if(mid == XN_MOVE || mid == XN_ZAP || mid == XN_HEAL
							|| mid == XN_CIRCLE_ATTACK || mid == XN_MINE) // one more value
						{
							char dir = static_cast<char>(recv_buffer.read_ch());
							if(dir > MAX_D || dir < 0 || (dir == MAX_D && mid != XN_HEAL))
							{
#ifdef DEBUG
								to_log("Read illegal direction "
									+ lex_cast(dir) + " in "
									+ lex_cast(mid) + "-type xn!");
#endif
								cheat_attempt(pit);
								break;
							}
							Game::player_action(pit, Axn(mid, dir));
						}
						else
							Game::player_action(pit, Axn(mid));
					}
					// else delivery order got messed up
				}
				// else delivery order got messed up
			}
			break;
		case MID_SPAWN_AXN:
			if((pit = who_is_this()) != cur_players.end())
				Game::class_switch(pit, e_Class(recv_buffer.read_ch()));
			break;
		case MID_TEAM_SWITCH:
			if((pit = who_is_this()) != cur_players.end())
				Game::team_switch(pit);
			break;
		case MID_TEAM_INFO:
			if((pit = who_is_this()) != cur_players.end())
				Game::send_team_info(pit);
			break;
		default: break;
		}
	}
	return (handled == 1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x168, %rsp            # imm = 0x168
leaq -0x30(%rbp), %r15
movl $0x80, (%r15)
leaq -0x60(%rbp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
xorl %ebx, %ebx
leaq 0x33285(%rip), %r14     # 0x3e928
cmpb $-0x14, %bl
je 0xbfc8
movl 0x33a85(%rip), %r12d    # 0x3f138
movq %r14, %rdi
callq 0x248dc
movl $0x800, %edx            # imm = 0x800
movl %r12d, %edi
movq %rax, %rsi
xorl %ecx, %ecx
leaq -0x190(%rbp), %r8
movq %r15, %r9
callq 0x42d0
movq %rax, %r12
cmpw $-0x1, %r12w
je 0xbfc8
movq %r14, %rdi
callq 0x24818
cmpb $0x9, %al
ja 0xbe0c
movzbl %al, %eax
leaq 0x1ab55(%rip), %rcx     # 0x26254
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %r14, %rdi
callq 0x24800
cmpw $0x3, %ax
jne 0xbc36
leaq -0x50(%rbp), %rdi
leaq 0x1ac27(%rip), %rsi     # 0x2634c
leaq -0x90(%rbp), %rdx
callq 0xb292
movq %r14, %rdi
callq 0x24800
movl %eax, %r12d
cmpw $-0x1, %ax
je 0xb74e
movq %r14, %rdi
leaq -0x50(%rbp), %rsi
callq 0x2482a
movq %r14, %rdi
leaq -0x70(%rbp), %rsi
callq 0x2482a
leaq -0x70(%rbp), %rdi
callq 0x24af0
cmpw $0xa, %ax
jg 0xbe03
movzwl %r12w, %edi
leaq -0x50(%rbp), %rsi
leaq -0x70(%rbp), %rdx
leaq -0x190(%rbp), %rcx
xorl %r8d, %r8d
callq 0xefe3
movl %eax, %r12d
leaq 0x32986(%rip), %rdi     # 0x3e118
callq 0x24712
movzwl %r12w, %r12d
leal -0xfffc(%r12), %eax
cmpl $0x3, %eax
ja 0xbcfb
leaq 0x1aac9(%rip), %rcx     # 0x2627c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movb $0x10, %al
jmp 0xbcd1
callq 0xc2ec
movq %rax, %r13
cmpq 0x317de(%rip), %rax     # 0x3cfb0
je 0xbe0c
movq %r14, %rdi
leaq -0x70(%rbp), %rsi
callq 0x2482a
cmpq $0x0, -0x68(%rbp)
je 0xb808
movq -0x70(%rbp), %rax
cmpb $0x21, (%rax)
jne 0xb808
movq %r13, %rdi
leaq -0x70(%rbp), %rsi
callq 0x22034
testb %al, %al
jne 0xbe0c
cmpb $0x0, 0xba(%r13)
jne 0xbe0c
movq %r14, %rdi
callq 0x248dc
movb $0x0, 0x2(%rax)
movq %r14, %rdi
callq 0x248dc
movb $0x0, 0x1(%rax)
movswl %r12w, %esi
movq %r14, %rdi
callq 0x248ee
movq %r13, %rsi
addq $0x98, %rsi
movq %r14, %rdi
callq 0x24762
movzbl 0xbc(%r13), %esi
movq %r14, %rdi
callq 0x24724
movl $0xffff, %edi           # imm = 0xFFFF
movq %r14, %rsi
callq 0xb61b
jmp 0xbe0c
callq 0xc2ec
cmpq 0x31736(%rip), %rax     # 0x3cfb0
je 0xbe0c
movq %rax, %rdi
callq 0x179e8
jmp 0xbe0c
callq 0xc2ec
movq %rax, %r12
cmpq 0x31714(%rip), %rax     # 0x3cfb0
je 0xbe0c
leaq -0x50(%rbp), %r13
movq %r13, %rdi
leaq 0x1aa3f(%rip), %rsi     # 0x262ef
leaq -0x90(%rbp), %rdx
callq 0xb292
movq %r12, %rdi
movq %r13, %rsi
callq 0x16b9c
movq %r13, %rdi
jmp 0xbe07
callq 0xc2ec
movq %rax, %r12
cmpq 0x316d2(%rip), %rax     # 0x3cfb0
je 0xbe0c
movq %r14, %rdi
callq 0x24800
cmpw 0xb8(%r12), %ax
jbe 0xbe0c
movw %ax, 0xb8(%r12)
jmp 0xbe0c
leaq 0x31af0(%rip), %rax     # 0x3d400
cmpb $0x0, (%rax)
jne 0xbe0c
callq 0xc2ec
movq %rax, %r12
cmpq 0x31688(%rip), %rax     # 0x3cfb0
je 0xbe0c
leaq 0xe8(%r12), %rdi
callq 0xc446
cmpq $0x4, %rax
ja 0xbe0c
movq %r14, %rdi
callq 0x24800
movl %eax, %r13d
cmpw 0xe0(%r12), %ax
jb 0xbe0c
cmpw 0xb8(%r12), %r13w
jbe 0xb973
movw %r13w, 0xb8(%r12)
movq %r14, %rdi
callq 0x24818
cmpw 0xe0(%r12), %r13w
ja 0xb994
cmpb 0xe2(%r12), %al
jbe 0xbe0c
movw %r13w, 0xe0(%r12)
movb %al, 0xe2(%r12)
movq %r14, %rdi
callq 0x24818
movl %eax, %r13d
movzbl %al, %esi
cmpb $0xc, %sil
ja 0xbedf
movl $0x1c90, %eax           # imm = 0x1C90
movl %esi, -0x2c(%rbp)
btl %esi, %eax
jae 0xbe60
movq %r14, %rdi
callq 0x24818
cmpb $0x8, %al
ja 0xb9ec
setne %cl
cmpb $0xc, %r13b
sete %dl
orb %cl, %dl
jne 0xbec9
movsbl %al, %esi
leaq -0xf0(%rbp), %r13
movq %r13, %rdi
callq 0x24fde
leaq -0xb0(%rbp), %rdi
leaq 0x1a917(%rip), %rsi     # 0x26323
movq %r13, %rdx
callq 0xb332
leaq -0xd0(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
leaq 0x1a912(%rip), %rdx     # 0x2633b
callq 0xb309
leaq -0x110(%rbp), %r13
movq %r13, %rdi
movl -0x2c(%rbp), %esi
callq 0x24fde
leaq -0x90(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
movq %r13, %rdx
callq 0xc45b
leaq -0x50(%rbp), %r13
movq %r13, %rdi
leaq -0x90(%rbp), %rsi
leaq 0x1a8d5(%rip), %rdx     # 0x26340
callq 0xb309
movq %r13, %rdi
callq 0x10b68
movq %r13, %rdi
callq 0x47e8
leaq -0x90(%rbp), %rdi
callq 0x47e8
leaq -0x110(%rbp), %rdi
callq 0x47e8
leaq -0xd0(%rbp), %rdi
callq 0x47e8
leaq -0xb0(%rbp), %rdi
callq 0x47e8
leaq -0xf0(%rbp), %rdi
callq 0x47e8
movq %r12, %rdi
callq 0xc320
jmp 0xbe0c
leaq 0x32648(%rip), %rdi     # 0x3e118
callq 0x24712
movq %r14, %rdi
callq 0x24800
cmpw $0x3, %ax
jne 0xbc6c
movq %r14, %rdi
callq 0x24800
movzwl %ax, %edi
leaq -0x190(%rbp), %rsi
callq 0xf68d
movl %eax, %r12d
cmpw $-0x5, %ax
ja 0xbe0c
leaq 0x32606(%rip), %rdi     # 0x3e118
pushq $0x14
popq %rsi
callq 0x24724
movzwl %r12w, %esi
leaq 0x325f3(%rip), %rdi     # 0x3e118
callq 0x24738
leaq 0x33d5f(%rip), %rax     # 0x3f890
movzwl 0x14(%rax), %esi
leaq 0x325dc(%rip), %rdi     # 0x3e118
callq 0x24738
jmp 0xbc51
callq 0xc2ec
cmpq 0x3145e(%rip), %rax     # 0x3cfb0
je 0xbe0c
movq %rax, %rdi
callq 0x1738b
jmp 0xbe0c
leaq 0x31894(%rip), %rax     # 0x3d400
cmpb $0x0, (%rax)
jne 0xbe0c
callq 0xc2ec
movq %rax, %r12
cmpq 0x3142c(%rip), %rax     # 0x3cfb0
je 0xbe0c
leaq 0x10(%r12), %rdi
callq 0xe68e
testb %al, %al
je 0xbe0c
movq 0x148(%r12), %rax
movl 0x8(%rax), %eax
movl %eax, -0x50(%rbp)
leaq 0x373cf(%rip), %r14     # 0x42f80
movq %r14, %rdi
leaq -0x50(%rbp), %rsi
callq 0xc534
movq %rax, %r13
addq $0x8, %r14
leaq -0x50(%rbp), %rdi
callq 0x24d9e
cmpq %r14, %r13
leaq 0x32d51(%rip), %r14     # 0x3e928
jne 0xbe0c
movq %r14, %rdi
leaq -0x70(%rbp), %rsi
callq 0x2482a
leaq -0x70(%rbp), %rdi
callq 0x24af0
cmpw $0x37, %ax
jl 0xbe13
movq %r12, %rdi
callq 0xc320
jmp 0xbe0c
callq 0xc2ec
movq %rax, %r12
cmpq 0x31398(%rip), %rax     # 0x3cfb0
je 0xbe0c
movq %r14, %rdi
callq 0x24818
movzbl %al, %esi
movq %r12, %rdi
callq 0x17512
jmp 0xbe0c
leaq 0x324db(%rip), %rdi     # 0x3e118
callq 0x24712
leaq 0x324cf(%rip), %rdi     # 0x3e118
pushq $0x12
popq %rsi
callq 0x24724
movl -0x30(%rbp), %esi
leaq -0x190(%rbp), %rdi
leaq 0x324b6(%rip), %rdx     # 0x3e118
callq 0xc0ce
jmp 0xbe0c
leaq 0x324a5(%rip), %rdi     # 0x3e118
pushq $0x12
popq %rsi
callq 0x24724
movl -0x30(%rbp), %esi
leaq -0x190(%rbp), %rdi
leaq 0x3248c(%rip), %rdx     # 0x3e118
callq 0xc0ce
leaq -0x50(%rbp), %r12
movq %r12, %rdi
leaq 0x1a633(%rip), %rsi     # 0x262d2
leaq -0x90(%rbp), %rdx
callq 0xb292
movq %r12, %rdi
callq 0x10b68
movq %r12, %rdi
jmp 0xbe07
movb $0x13, %al
jmp 0xbcd1
leaq 0x32452(%rip), %rdi     # 0x3e118
xorl %esi, %esi
callq 0x24724
jmp 0xbd29
movb $0x11, %al
movzbl %al, %esi
leaq 0x3243d(%rip), %rdi     # 0x3e118
callq 0x24724
movl -0x30(%rbp), %esi
leaq -0x190(%rbp), %rdi
leaq 0x32427(%rip), %rdx     # 0x3e118
callq 0xc0ce
jmp 0xbe03
leaq 0x32416(%rip), %rdi     # 0x3e118
pushq $0x14
popq %rsi
callq 0x24724
leaq 0x32407(%rip), %rdi     # 0x3e118
movl %r12d, %esi
callq 0x24738
leaq 0x323f8(%rip), %rdi     # 0x3e118
leaq -0x50(%rbp), %rsi
callq 0x24762
movl -0x30(%rbp), %esi
leaq -0x190(%rbp), %rdi
leaq 0x323de(%rip), %rdx     # 0x3e118
callq 0xc0ce
callq 0xdc71
leaq -0x70(%rbp), %rdi
movq %rax, %rsi
callq 0x4200
leaq -0x70(%rbp), %rdi
pushq $0xf
popq %rsi
callq 0xc0f2
movl -0x30(%rbp), %esi
leaq -0x190(%rbp), %rdi
leaq 0x323ab(%rip), %rdx     # 0x3e118
callq 0xc0ce
leaq 0x34337(%rip), %rax     # 0x400b0
movq 0x8(%rax), %r12
leaq 0x3167c(%rip), %rax     # 0x3d400
cmpb $0x1, (%rax)
jne 0xbdae
movl -0x30(%rbp), %r13d
callq 0x16f22
leaq -0x190(%rbp), %rdi
movl %r13d, %esi
movq %rax, %rdx
callq 0xc0ce
movq %r12, %rdi
callq 0x150cc
jmp 0xbdb6
movq %r12, %rdi
callq 0x15ff0
leaq 0xc8(%r12), %rdi
callq 0x43c0
movq %r12, %rdi
callq 0x1732d
movq %r12, %rdi
callq 0x152e9
addq $0x98, %r12
leaq -0x90(%rbp), %r13
movq %r13, %rdi
movq %r12, %rsi
leaq 0x1a4d8(%rip), %rdx     # 0x262c6
callq 0xc40d
movq %r13, %rdi
callq 0xc248
movq %r13, %rdi
callq 0x47e8
leaq -0x50(%rbp), %rdi
callq 0x47e8
decb %bl
jmp 0xb6a3
movq 0x148(%r12), %rax
movl 0x8(%rax), %eax
movl %eax, -0x50(%rbp)
leaq -0x50(%rbp), %r13
movq %r13, %rdi
leaq -0x70(%rbp), %rsi
callq 0x1b258
movq %r13, %rdi
callq 0x24d9e
movq 0x148(%r12), %rax
movl 0x8(%rax), %eax
movl %eax, -0x50(%rbp)
leaq 0x3717a(%rip), %rdi     # 0x42fc8
movq %r13, %rsi
callq 0xc5be
movq %r13, %rdi
callq 0x24d9e
jmp 0xbe0c
movl -0x2c(%rbp), %esi
cmpl $0x5, %esi
jne 0xbedf
movq %r14, %rdi
callq 0x24818
movb %al, -0x2c(%rbp)
movq %r14, %rdi
callq 0x24818
movl %eax, %r13d
movsbl -0x2c(%rbp), %esi
movl %esi, %eax
negl %eax
cmovsl %esi, %eax
movl %r13d, %ecx
orb %sil, %cl
je 0xbeec
cmpl $0xb, %eax
ja 0xbeec
movl %r13d, %eax
sarb $0x7, %al
movl %r13d, %ecx
xorb %al, %cl
subb %al, %cl
cmpb $0xc, %cl
jae 0xbeec
movzbl %r13b, %eax
shll $0x10, %eax
movzbl -0x2c(%rbp), %ecx
shll $0x8, %ecx
leal (%rax,%rcx), %esi
addl $0x5, %esi
movq %r12, %rdi
callq 0x16f2f
jmp 0xbe0c
movzbl %al, %esi
shll $0x8, %esi
addl -0x2c(%rbp), %esi
movq %r12, %rdi
callq 0x16f2f
jmp 0xbe0c
movq %r12, %rdi
callq 0x16f2f
jmp 0xbe0c
leaq -0xf0(%rbp), %rdi
callq 0x24fde
leaq -0xb0(%rbp), %rdi
leaq 0x1a3f8(%rip), %rsi     # 0x262fe
leaq -0xf0(%rbp), %rdx
callq 0xb332
leaq -0xd0(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
leaq 0x1a3f7(%rip), %rdx     # 0x2631e
callq 0xb309
movsbl %r13b, %esi
leaq -0x110(%rbp), %r13
movq %r13, %rdi
callq 0x24fde
leaq -0x90(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
movq %r13, %rdx
callq 0xc45b
leaq -0x50(%rbp), %r13
movq %r13, %rdi
leaq -0x90(%rbp), %rsi
leaq 0x1a3b6(%rip), %rdx     # 0x26320
callq 0xb309
movq %r13, %rdi
callq 0x10b68
movq %r13, %rdi
callq 0x47e8
leaq -0x90(%rbp), %rdi
callq 0x47e8
leaq -0x110(%rbp), %rdi
callq 0x47e8
leaq -0xd0(%rbp), %rdi
callq 0x47e8
leaq -0xb0(%rbp), %rdi
callq 0x47e8
leaq -0xf0(%rbp), %rdi
callq 0x47e8
movq %r12, %rdi
callq 0xc320
jmp 0xbe0c
testb %bl, %bl
sete %bl
leaq -0x70(%rbp), %rdi
callq 0x47e8
movl %ebx, %eax
addq $0x168, %rsp            # imm = 0x168
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0xc009
jmp 0xc017
jmp 0xc028
jmp 0xc039
jmp 0xc04a
jmp 0xc062
jmp 0xc0ba
jmp 0xc0ba
jmp 0xc0ba
jmp 0xc080
jmp 0xc080
movq %rax, %rbx
leaq -0x50(%rbp), %rdi
callq 0x47e8
jmp 0xc01a
movq %rax, %rbx
leaq -0x90(%rbp), %rdi
callq 0x47e8
jmp 0xc02b
movq %rax, %rbx
leaq -0x110(%rbp), %rdi
callq 0x47e8
jmp 0xc03c
movq %rax, %rbx
leaq -0xd0(%rbp), %rdi
callq 0x47e8
jmp 0xc04d
movq %rax, %rbx
leaq -0xb0(%rbp), %rdi
callq 0x47e8
leaq -0xf0(%rbp), %rdi
jmp 0xc0b3
movq %rax, %rbx
jmp 0xc059
jmp 0xc0ba
jmp 0xc0ba
movq %rax, %rbx
leaq -0x90(%rbp), %rdi
callq 0x47e8
jmp 0xc0af
jmp 0xc0ac
jmp 0xc0ba
movq %rax, %rbx
leaq -0x50(%rbp), %rdi
callq 0x24d9e
jmp 0xc0bd
jmp 0xc0ba
jmp 0xc0ac
jmp 0xc0ba
jmp 0xc0ac
jmp 0xc0ba
jmp 0xc0ba
jmp 0xc0ba
jmp 0xc0ac
jmp 0xc0ba
jmp 0xc0ba
jmp 0xc0ba
jmp 0xc0ba
jmp 0xc0ba
jmp 0xc0ba
jmp 0xc0ba
movq %rax, %rbx
leaq -0x50(%rbp), %rdi
callq 0x47e8
jmp 0xc0bd
movq %rax, %rbx
leaq -0x70(%rbp), %rdi
callq 0x47e8
movq %rbx, %rdi
callq 0x4710