// File: lotuskip[P]yuxtapa/server/chores.cpp
// Function: process_action(Axn const&, std::_List_iterator<Player>)
void process_action(const Axn &axn, const list<Player>::iterator pit)
{
	Coords c;
	// Stuff that happens whenever a PC acts:
	pit->acted_this_turn = true;
	pit->wants_to_move_to = MAX_D;

	switch(axn.xncode)
	{
	case XN_CLOSE_DOOR:
	{
		// Find an open door, starting the search from the facing direction:
		e_Dir d = pit->facing;
		Tile *t;
		do {
			c = pit->own_pc->getpos().in(d);
			t = Game::curmap->mod_tile(c);
			if(t->symbol == '\\' && !(t->flags & TF_OCCUPIED))
			{
				t->symbol = '+';
				t->flags &= ~(TF_WALKTHRU|TF_SEETHRU);
				update_lights_around(c);
				if(random()%2)
					add_sound(c, S_CREAK);
				else // a sound sets an event
					event_set.insert(c);
				pit->facing = d;
				break;
			}
			++d;
		} while(d != pit->facing);
		break;
	}
	case XN_TORCH_HANDLE:
	{
		c = pit->own_pc->getpos();
		if(pit->own_pc->torch_is_lit())
		{
			pit->own_pc->toggle_torch();
			event_set.insert(c);
		}
		else if(pit->torch_left) // wants to light it
		{
			// Check the three conditions: wizard, on a static torch, or
			// next to a teammate with a lit torch:
			if(pit->cl == C_WIZARD || any_noccent_at(c, NOE_TORCH) != noccents[NOE_TORCH].end())
			{
				pit->own_pc->toggle_torch();
				event_set.insert(c);
			}
			else // Check the teammates:
			{
				for(list<PCEnt>::const_iterator pcit = PCs.begin();
					pcit != PCs.end(); ++pcit)
				{
					if(pcit->getpos().dist_walk(c) == 1
						&& pcit->torch_is_lit()
						&& pcit->get_owner()->team == pit->team)
					{
						pit->own_pc->toggle_torch();
						event_set.insert(c);
						break;
					}
				}
			}
		} // trying to light a torch
		break;
	}
	case XN_TRAP_TRIGGER:
		if(Game::curmap->get_tile(pit->own_pc->getpos()).flags & TF_TRAP)
			trigger_trap(pit, any_trap_at(pit->own_pc->getpos()), true);
		break;
	case XN_SUICIDE:
	{
		// Check for "scared to death" possibility:
		// Go through the PCs looking for any visible enemy close enough
		list<PCEnt>::iterator it = PCs.begin();
		while(it != PCs.end())
		{
			// not void, visible, enemy (NOTE: pass the actual
			// distance to LOS_between; this way it will only check one
			// direction (whether 'pit' sees 'it', not if 'it' sees 'pit'))
			if(!it->isvoid() && it->visible_to_team(pit->team)
				&& it->get_owner()->team != pit->team
				&& Game::curmap->LOS_between(pit->own_pc->getpos(), it->getpos(),
					SCARED_TO_DEATH_DIST, it->getpos().dist_walk(pit->own_pc->getpos())))
			{
				player_death(pit, " was scared to death by "
					+ it->get_owner()->nick + '.', true);
				record_kill(it->get_owner(), WTK_SCARE);
				break;
			}
			++it;
		}
		if(it != PCs.end()) // was broken
			break;
		// If here, check for being poisoned with just 1 hp:
		if(pit->poisoner != cur_players.end() && pit->cl_props.hp == 1)
			player_poisoned(pit);
		else // a valid suicide
			player_death(pit, " suicided.", true);
		break;
	}
	case XN_MOVE:
		// If player is in water and action queue is nonempty, do not allow swimming
		if(pit->action_queue.empty() ||
			!(Game::curmap->mod_tile(pit->own_pc->getpos())->flags & TF_DROWNS))
			try_move(pit, (pit->facing = e_Dir(axn.var1)));
		break;
	case XN_SHOOT:
	{
		// The coords are already validated in network.cpp upon receiving!
		c.x = axn.var1; c.y = axn.var2;
		pit->facing = Coords(0,0).dir_of(c);
		pit->stats_i->arch_shots++;
		arrows.push_back(Arrow(c, pit));
		break;
	}
	case XN_FLASH:
		if(pit->limiter) // have flashbombs left
		{
			flash_at(pit->own_pc->getpos());
			pit->limiter--;
		}
		break;
	case XN_ZAP:
		limiter_upd(pit);

		pit->facing = e_Dir(axn.var1);
		zaps.push_back(Zap(pit, pit->facing));
		pit->stats_i->cm_shots++;
		break;
	case XN_CIRCLE_ATTACK:
		pit->facing = e_Dir(axn.var1);
		pit->doing_a_chore = 2;
		break;
	case XN_HEAL:
		if(axn.var1 != MAX_D)
		{
			c = pit->own_pc->getpos().in((pit->facing = e_Dir(axn.var1)));
			list<PCEnt>::iterator pc_it = any_pc_at(c);
			if(pc_it != PCs.end())
			{
				list<Player>::iterator nit = pc_it->get_owner();
				if(nit->team == pit->team) // teammate => heal
					heal_PC(nit);
				else // enemy => poison
				{
					nit->poisoner = pit;
					add_action_ind(c, A_POISON);
				}
			}
		}
		else // healing self
			heal_PC(pit);
		break;
	case XN_BLINK:
	{
		limiter_upd(pit);

		// Determine a point to blink to, if any:
		Coords opos = pit->own_pc->getpos();
		vector<Coords> optimals;
		Coords cg = opos; // "good" coords
		char line, ind;
		for(line = 0; line < MAX_BLK_DIST*8; ++line)
		{
			for(ind = 0; ind < 2*MAX_BLK_DIST; ind += 2)
			{
				c.x = loslookup[MAX_BLK_DIST-2][line*2*MAX_BLK_DIST+ind]
					+ opos.x;
				c.y = loslookup[MAX_BLK_DIST-2][line*2*MAX_BLK_DIST+ind+1]
					+ opos.y;
				// the point must be visible:
				if(!(Game::curmap->get_tile(c).flags & TF_SEETHRU))
					break;
				//else
				cg = c;
			}
			// Note that points outside of the map cannot be reached; the edge
			// wall prevents them from being visible!
			// Endpoint must be walkable and not occupied:
			if((Game::curmap->get_tile(cg).flags & TF_WALKTHRU)
				&& !(Game::curmap->get_tile(cg).flags & TF_OCCUPIED))
			{
				// Trying to get as far as possible:
				if(optimals.empty())
					optimals.push_back(cg); // no previous record
				else if(cg.dist_walk(opos) > optimals.front().dist_walk(opos))
				{
					optimals.clear(); // a new record!
					optimals.push_back(cg);
				}
				else if(cg.dist_walk(opos) == optimals.front().dist_walk(opos))
					optimals.push_back(cg); // repeat old record
			}
		}
		if(optimals.empty())
			break; // cannot blink!
		c = optimals[randor0(optimals.size())];

		// Do the transfer:
		event_set.insert(opos);
		move_player_to(pit, c, true);
		pit->action_queue.clear(); /* Rarely does one plan her actions
			beyond a blink. */
		break;
	}
	case XN_MINE:
	{
		pit->facing = e_Dir(axn.var1);
		c = pit->own_pc->getpos().in(e_Dir(axn.var1));
		char rv;
		if(!(rv = cant_dig_in(c, e_Dir(axn.var1))))
		{
			pit->doing_a_chore = DIG_TURNS;
			add_sound(c, S_RUMBLE);
		}
		else if(rv == -1) // illusory wall
		{
			string msg = "That is no real wall!";
			Network::construct_msg(msg, C_WALL_LIT);
			Network::send_to_player(*pit);
		}
		// else there is nothing to dig
		break;
	}
	case XN_DISGUISE:
	{
		c = pit->own_pc->getpos();
		if(Game::curmap->get_tile(c).flags & TF_NOCCENT)
		{
			// check that there's an enemy corpse
			list<NOccEnt>::iterator c_it = any_noccent_at(c, NOE_CORPSE);
			if(c_it != noccents[NOE_CORPSE].end()
				&& c_it->get_colour() != team_colour[pit->team])
			{
				pit->doing_a_chore = DISGUISE_TURNS;
				add_action_ind(c, A_DISGUISE);
			}
		}
		break;
	}
	case XN_SET_TRAP:
	{
		// A trap can be set/disarmed where there is no noccent:
		if(!(Game::curmap->get_tile(pit->own_pc->getpos()).flags
			& TF_NOCCENT))
		{
			pit->doing_a_chore = TRAP_TURNS;
			add_action_ind(pit->own_pc->getpos(), A_TRAP);
		}
		break;
	}
	case XN_MM:
	{
		limiter_upd(pit);

		e_Dir d;
		unsigned short flgs;
		for(char ch = 0; ch < 4; ++ch)
		{
			d = e_Dir((pit->facing + 2*ch)%MAX_D);
			c = pit->own_pc->getpos().in(d);
			flgs = Game::curmap->mod_tile(c)->flags;
			if(flgs & TF_WALKTHRU && !(flgs & TF_OCCUPIED))
			{
				MMs.push_back(MM(pit, d));
				event_set.insert(c);
			}
			// else cannot conjure a MM there
		}
		break;
	}
	case XN_MINDS_EYE:
		if(!(pit->limiter = !pit->limiter)) // turning mind's eye off
		{
			pit->own_vp->set_pos(pit->own_pc->getpos());
			pit->cl_props.dv = classes[pit->cl].dv;
		}
		else // turning mind's eye on
		{
			pit->cl_props.dv = 11;
			while(pit->own_vp->is_blind())
				pit->own_vp->reduce_blind();
		}
		pit->needs_state_upd = true;
		break;
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x590, %rsp            # imm = 0x590
movq %rsi, -0x8(%rbp)
movq %rdi, -0x10(%rbp)
leaq -0x14(%rbp), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x60430
leaq -0x8(%rbp), %rdi
movq %rdi, -0x390(%rbp)
callq 0x1b050
movq -0x390(%rbp), %rdi
movb $0x1, 0x128(%rax)
callq 0x1b050
movl $0x8, 0x12c(%rax)
movq -0x10(%rbp), %rax
movzbl (%rax), %eax
movq %rax, -0x388(%rbp)
subq $0xf, %rax
ja 0x50c1c
movq -0x388(%rbp), %rax
leaq 0x1b48d(%rip), %rcx     # 0x6a270
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq -0x8(%rbp), %rdi
callq 0x1b050
movl 0x158(%rax), %eax
movl %eax, -0x18(%rbp)
leaq -0x8(%rbp), %rdi
callq 0x1b050
movq 0x138(%rax), %rsi
leaq -0x28(%rbp), %rdi
callq 0x1b190
jmp 0x4ee19
movl -0x18(%rbp), %edx
leaq -0x24(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x60550
jmp 0x4ee2b
movl -0x24(%rbp), %eax
movl %eax, -0x14(%rbp)
leaq -0x24(%rbp), %rdi
callq 0x60460
leaq -0x28(%rbp), %rdi
callq 0x60460
leaq 0x42f8e(%rip), %rax     # 0x91dd8
movq (%rax), %rdi
leaq -0x14(%rbp), %rsi
callq 0x3d2d0
movq %rax, -0x398(%rbp)
jmp 0x4ee5f
movq -0x398(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movsbl 0x2(%rax), %eax
cmpl $0x5c, %eax
jne 0x4ef54
movq -0x20(%rbp), %rax
movzwl (%rax), %eax
andl $0x40, %eax
cmpl $0x0, %eax
jne 0x4ef54
movq -0x20(%rbp), %rax
movb $0x2b, 0x2(%rax)
movq -0x20(%rbp), %rax
movw (%rax), %cx
andw $-0x6, %cx
movw %cx, (%rax)
leaq -0x14(%rbp), %rdi
callq 0x50c40
jmp 0x4eeaf
callq 0x5270
movl $0x2, %ecx
cqto
idivq %rcx
cmpq $0x0, %rdx
je 0x4ef01
leaq -0x14(%rbp), %rdi
movl $0x1, %esi
callq 0x48080
jmp 0x4eed4
jmp 0x4ef34
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x50c2e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x60460
jmp 0x50c2e
leaq 0x44240(%rip), %rdi     # 0x93148
leaq -0x14(%rbp), %rsi
callq 0x4a010
movb %dl, -0x3a1(%rbp)
movq %rax, -0x3a0(%rbp)
jmp 0x4ef20
movb -0x3a1(%rbp), %al
movq -0x3a0(%rbp), %rcx
movq %rcx, -0x48(%rbp)
movb %al, -0x40(%rbp)
movl -0x18(%rbp), %eax
movl %eax, -0x3a8(%rbp)
leaq -0x8(%rbp), %rdi
callq 0x1b050
movl -0x3a8(%rbp), %ecx
movl %ecx, 0x158(%rax)
jmp 0x4ef88
leaq -0x18(%rbp), %rdi
callq 0x60390
jmp 0x4ef5f
jmp 0x4ef61
movl -0x18(%rbp), %eax
movl %eax, -0x3ac(%rbp)
leaq -0x8(%rbp), %rdi
callq 0x1b050
movq %rax, %rcx
movl -0x3ac(%rbp), %eax
cmpl 0x158(%rcx), %eax
jne 0x4edfe
jmp 0x50c1c
leaq -0x8(%rbp), %rdi
callq 0x1b050
movq 0x138(%rax), %rsi
leaq -0x4c(%rbp), %rdi
callq 0x1b190
jmp 0x4efa8
movl -0x4c(%rbp), %eax
movl %eax, -0x14(%rbp)
leaq -0x4c(%rbp), %rdi
callq 0x60460
leaq -0x8(%rbp), %rdi
callq 0x1b050
movq 0x138(%rax), %rdi
callq 0x3d0d0
movb %al, -0x3ad(%rbp)
jmp 0x4efd4
movb -0x3ad(%rbp), %al
testb $0x1, %al
jne 0x4efe0
jmp 0x4f02f
leaq -0x8(%rbp), %rdi
callq 0x1b050
movq 0x138(%rax), %rdi
callq 0x4da90
jmp 0x4eff7
leaq 0x4414a(%rip), %rdi     # 0x93148
leaq -0x14(%rbp), %rsi
callq 0x4a010
movb %dl, -0x3b9(%rbp)
movq %rax, -0x3b8(%rbp)
jmp 0x4f016
movb -0x3b9(%rbp), %al
movq -0x3b8(%rbp), %rcx
movq %rcx, -0x60(%rbp)
movb %al, -0x58(%rbp)
jmp 0x4f304
leaq -0x8(%rbp), %rdi
callq 0x1b050
cmpw $0x0, 0x160(%rax)
je 0x4f302
leaq -0x8(%rbp), %rdi
callq 0x1b050
movq %rax, %rcx
movb $0x1, %al
cmpl $0x8, 0xb0(%rcx)
movb %al, -0x3ba(%rbp)
je 0x4f0af
leaq -0x14(%rbp), %rdi
movl $0x6, %esi
callq 0x49390
movq %rax, -0x3c8(%rbp)
jmp 0x4f07a
movq -0x3c8(%rbp), %rax
movq %rax, -0x68(%rbp)
leaq 0x43ea4(%rip), %rdi     # 0x92f30
addq $0x90, %rdi
callq 0x3c9d0
movq %rax, -0x70(%rbp)
leaq -0x68(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x3cdc0
movb %al, -0x3ba(%rbp)
movb -0x3ba(%rbp), %al
testb $0x1, %al
jne 0x4f0bb
jmp 0x4f10a
leaq -0x8(%rbp), %rdi
callq 0x1b050
movq 0x138(%rax), %rdi
callq 0x4da90
jmp 0x4f0d2
leaq 0x4406f(%rip), %rdi     # 0x93148
leaq -0x14(%rbp), %rsi
callq 0x4a010
movb %dl, -0x3d1(%rbp)
movq %rax, -0x3d0(%rbp)
jmp 0x4f0f1
movb -0x3d1(%rbp), %al
movq -0x3d0(%rbp), %rcx
movq %rcx, -0x80(%rbp)
movb %al, -0x78(%rbp)
jmp 0x4f300
leaq 0x43f3f(%rip), %rdi     # 0x93050
callq 0x3cfb0
movq %rax, -0x90(%rbp)
leaq -0x88(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x3d0b0
leaq 0x43f19(%rip), %rdi     # 0x93050
callq 0x3d010
movq %rax, -0xa0(%rbp)
leaq -0x98(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x3d0b0
leaq -0x88(%rbp), %rdi
leaq -0x98(%rbp), %rsi
callq 0x4a4f0
testb $0x1, %al
jne 0x4f172
jmp 0x4f2fe
leaq -0x88(%rbp), %rdi
callq 0x4a520
movq %rax, %rsi
leaq -0xa4(%rbp), %rdi
callq 0x1b190
jmp 0x4f18f
leaq -0xa4(%rbp), %rdi
leaq -0x14(%rbp), %rsi
callq 0x604f0
movw %ax, -0x3d4(%rbp)
jmp 0x4f1a8
movw -0x3d4(%rbp), %ax
movswl %ax, %ecx
xorl %eax, %eax
cmpl $0x1, %ecx
movb %al, -0x3d5(%rbp)
jne 0x4f258
leaq -0x88(%rbp), %rdi
callq 0x4a520
movq %rax, %rdi
callq 0x3d0d0
movb %al, -0x3d6(%rbp)
jmp 0x4f1df
movb -0x3d6(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x3d5(%rbp)
jne 0x4f1f4
jmp 0x4f258
leaq -0x88(%rbp), %rdi
callq 0x4a520
movq %rax, %rdi
callq 0x3d0f0
movq %rax, -0x3e0(%rbp)
jmp 0x4f211
movq -0x3e0(%rbp), %rax
movq %rax, -0xb0(%rbp)
leaq -0xb0(%rbp), %rdi
callq 0x1b050
movl 0xac(%rax), %eax
movl %eax, -0x3e4(%rbp)
leaq -0x8(%rbp), %rdi
callq 0x1b050
movq %rax, %rcx
movl -0x3e4(%rbp), %eax
cmpl 0xac(%rcx), %eax
sete %al
movb %al, -0x3d5(%rbp)
movb -0x3d5(%rbp), %al
movb %al, -0x3e5(%rbp)
leaq -0xa4(%rbp), %rdi
callq 0x60460
movb -0x3e5(%rbp), %al
testb $0x1, %al
jne 0x4f27c
jmp 0x4f2eb
leaq -0x8(%rbp), %rdi
callq 0x1b050
movq 0x138(%rax), %rdi
callq 0x4da90
jmp 0x4f293
leaq 0x43eae(%rip), %rdi     # 0x93148
leaq -0x14(%rbp), %rsi
callq 0x4a010
movb %dl, -0x3f1(%rbp)
movq %rax, -0x3f0(%rbp)
jmp 0x4f2b2
movb -0x3f1(%rbp), %al
movq -0x3f0(%rbp), %rcx
movq %rcx, -0xc0(%rbp)
movb %al, -0xb8(%rbp)
jmp 0x4f2fe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0xa4(%rbp), %rdi
callq 0x60460
jmp 0x50c2e
jmp 0x4f2ed
leaq -0x88(%rbp), %rdi
callq 0x4a550
jmp 0x4f130
jmp 0x4f300
jmp 0x4f302
jmp 0x4f304
jmp 0x50c1c
leaq 0x42ac8(%rip), %rax     # 0x91dd8
movq (%rax), %rax
movq %rax, -0x400(%rbp)
leaq -0x8(%rbp), %rdi
callq 0x1b050
movq 0x138(%rax), %rsi
leaq -0xc8(%rbp), %rdi
callq 0x1b190
jmp 0x4f338
movq -0x400(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
callq 0x3dcd0
movl %eax, -0x404(%rbp)
jmp 0x4f353
movl -0x404(%rbp), %eax
movl %eax, -0xc4(%rbp)
movzwl -0xc4(%rbp), %eax
andl $0x800, %eax            # imm = 0x800
movl %eax, -0x408(%rbp)
leaq -0xc8(%rbp), %rdi
callq 0x60460
movl -0x408(%rbp), %eax
cmpl $0x0, %eax
je 0x4f43a
movq -0x8(%rbp), %rax
movq %rax, -0xd0(%rbp)
leaq -0x8(%rbp), %rdi
callq 0x1b050
movq 0x138(%rax), %rsi
leaq -0xdc(%rbp), %rdi
callq 0x1b190
jmp 0x4f3b5
leaq -0xdc(%rbp), %rdi
callq 0x494b0
movq %rax, -0x410(%rbp)
jmp 0x4f3ca
movq -0x410(%rbp), %rax
movq %rax, -0xd8(%rbp)
movq -0xd0(%rbp), %rdi
movq -0xd8(%rbp), %rsi
movl $0x1, %edx
callq 0x50d80
jmp 0x4f3f2
leaq -0xdc(%rbp), %rdi
callq 0x60460
jmp 0x4f43a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0xc8(%rbp), %rdi
callq 0x60460
jmp 0x50c2e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0xdc(%rbp), %rdi
callq 0x60460
jmp 0x50c2e
jmp 0x50c1c
leaq 0x43c0a(%rip), %rdi     # 0x93050
callq 0x3cfb0
movq %rax, -0xe8(%rbp)
leaq 0x43bf7(%rip), %rdi     # 0x93050
callq 0x3d010
movq %rax, -0xf0(%rbp)
leaq -0xe8(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x3cfe0
testb $0x1, %al
jne 0x4f481
jmp 0x4f8d4
leaq -0xe8(%rbp), %rdi
callq 0x3d040
movq %rax, %rdi
movb $0x0, -0xfd(%rbp)
movb $0x0, -0x103(%rbp)
movb $0x0, -0x109(%rbp)
movb $0x0, -0x10f(%rbp)
callq 0x3ce40
movb %al, -0x411(%rbp)
jmp 0x4f4b9
movb -0x411(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x412(%rbp)
jne 0x4f688
jmp 0x4f4d2
leaq -0xe8(%rbp), %rdi
callq 0x3d040
movq %rax, -0x420(%rbp)
leaq -0x8(%rbp), %rdi
callq 0x1b050
movq -0x420(%rbp), %rdi
movl 0xac(%rax), %esi
callq 0x43050
movb %al, -0x413(%rbp)
jmp 0x4f508
movb -0x413(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x412(%rbp)
jne 0x4f520
jmp 0x4f688
leaq -0xe8(%rbp), %rdi
callq 0x3d040
movq %rax, %rdi
callq 0x3d0f0
movq %rax, -0x428(%rbp)
jmp 0x4f53d
movq -0x428(%rbp), %rax
movq %rax, -0xf8(%rbp)
leaq -0xf8(%rbp), %rdi
callq 0x1b050
movl 0xac(%rax), %eax
movl %eax, -0x42c(%rbp)
leaq -0x8(%rbp), %rdi
callq 0x1b050
movl -0x42c(%rbp), %ecx
movq %rax, %rdx
xorl %eax, %eax
cmpl 0xac(%rdx), %ecx
movb %al, -0x412(%rbp)
je 0x4f688
leaq 0x42848(%rip), %rax     # 0x91dd8
movq (%rax), %rax
movq %rax, -0x438(%rbp)
leaq -0x8(%rbp), %rdi
callq 0x1b050
movq 0x138(%rax), %rsi
leaq -0xfc(%rbp), %rdi
callq 0x1b190
jmp 0x4f5b8
movb $0x1, -0xfd(%rbp)
leaq -0xe8(%rbp), %rdi
callq 0x3d040
movq %rax, %rsi
leaq -0x102(%rbp), %rdi
callq 0x1b190
jmp 0x4f5dc
movb $0x1, -0x103(%rbp)
leaq -0xe8(%rbp), %rdi
callq 0x3d040
movq %rax, %rsi
leaq -0x108(%rbp), %rdi
callq 0x1b190
jmp 0x4f600
movb $0x1, -0x109(%rbp)
leaq -0x8(%rbp), %rdi
callq 0x1b050
movq 0x138(%rax), %rsi
leaq -0x10e(%rbp), %rdi
callq 0x1b190
jmp 0x4f625
movb $0x1, -0x10f(%rbp)
leaq -0x108(%rbp), %rdi
leaq -0x10e(%rbp), %rsi
callq 0x604f0
movw %ax, -0x43a(%rbp)
jmp 0x4f648
movq -0x438(%rbp), %rdi
movw -0x43a(%rbp), %ax
movswl %ax, %r8d
leaq -0xfc(%rbp), %rsi
leaq -0x102(%rbp), %rdx
movl $0x3, %ecx
callq 0x2c2b0
movb %al, -0x43b(%rbp)
jmp 0x4f67a
movb -0x43b(%rbp), %al
movb %al, -0x412(%rbp)
jmp 0x4f688
movb -0x412(%rbp), %al
movb %al, -0x43c(%rbp)
testb $0x1, -0x10f(%rbp)
jne 0x4f69f
jmp 0x4f6ab
leaq -0x10e(%rbp), %rdi
callq 0x60460
testb $0x1, -0x109(%rbp)
jne 0x4f6b6
jmp 0x4f6c2
leaq -0x108(%rbp), %rdi
callq 0x60460
testb $0x1, -0x103(%rbp)
jne 0x4f6cd
jmp 0x4f6d9
leaq -0x102(%rbp), %rdi
callq 0x60460
testb $0x1, -0xfd(%rbp)
jne 0x4f6e4
jmp 0x4f6f0
leaq -0xfc(%rbp), %rdi
callq 0x60460
movb -0x43c(%rbp), %al
testb $0x1, %al
jne 0x4f6ff
jmp 0x4f8c3
movq -0x8(%rbp), %rax
movq %rax, -0x118(%rbp)
leaq -0xe8(%rbp), %rdi
callq 0x3d040
movq %rax, %rdi
callq 0x3d0f0
movq %rax, -0x448(%rbp)
jmp 0x4f727
movq -0x448(%rbp), %rax
movq %rax, -0x160(%rbp)
leaq -0x160(%rbp), %rdi
callq 0x1b050
movq %rax, %rdx
addq $0x88, %rdx
leaq 0x1cc2b(%rip), %rsi     # 0x6c37d
leaq -0x158(%rbp), %rdi
callq 0x1f390
jmp 0x4f760
leaq -0x138(%rbp), %rdi
leaq -0x158(%rbp), %rsi
movl $0x2e, %edx
callq 0x3ca50
jmp 0x4f77a
movq -0x118(%rbp), %rdi
leaq -0x138(%rbp), %rsi
movl $0x1, %edx
callq 0x517d0
jmp 0x4f794
leaq -0x138(%rbp), %rdi
callq 0x5a48
leaq -0x158(%rbp), %rdi
callq 0x5a48
leaq -0xe8(%rbp), %rdi
callq 0x3d040
movq %rax, %rdi
callq 0x3d0f0
movq %rax, -0x450(%rbp)
jmp 0x4f7c9
movq -0x450(%rbp), %rax
movq %rax, -0x168(%rbp)
movq -0x168(%rbp), %rdi
movl $0xa, %esi
callq 0x51b40
jmp 0x4f7ea
jmp 0x4f8d4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x4f870
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x4f857
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x4f83e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
testb $0x1, -0x10f(%rbp)
jne 0x4f830
jmp 0x4f83c
leaq -0x10e(%rbp), %rdi
callq 0x60460
jmp 0x4f83e
testb $0x1, -0x109(%rbp)
jne 0x4f849
jmp 0x4f855
leaq -0x108(%rbp), %rdi
callq 0x60460
jmp 0x4f857
testb $0x1, -0x103(%rbp)
jne 0x4f862
jmp 0x4f86e
leaq -0x102(%rbp), %rdi
callq 0x60460
jmp 0x4f870
testb $0x1, -0xfd(%rbp)
jne 0x4f87b
jmp 0x4f887
leaq -0xfc(%rbp), %rdi
callq 0x60460
jmp 0x50c2e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x4f8b2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x138(%rbp), %rdi
callq 0x5a48
leaq -0x158(%rbp), %rdi
callq 0x5a48
jmp 0x50c2e
leaq -0xe8(%rbp), %rdi
callq 0x3d110
jmp 0x4f452
leaq 0x43775(%rip), %rdi     # 0x93050
callq 0x3d010
movq %rax, -0x170(%rbp)
leaq -0xe8(%rbp), %rdi
leaq -0x170(%rbp), %rsi
callq 0x3cfe0
testb $0x1, %al
jne 0x4f900
jmp 0x4f905
jmp 0x50c1c
leaq -0x8(%rbp), %rdi
callq 0x1b050
addq $0x150, %rax            # imm = 0x150
movq %rax, -0x460(%rbp)
leaq 0x4090e(%rip), %rdi     # 0x90230
callq 0x189f0
movq -0x460(%rbp), %rdi
movq %rax, -0x178(%rbp)
leaq -0x178(%rbp), %rsi
callq 0x1b100
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x451(%rbp)
jne 0x4f952
jmp 0x4f96e
leaq -0x8(%rbp), %rdi
callq 0x1b050
movsbl 0x143(%rax), %eax
cmpl $0x1, %eax
sete %al
movb %al, -0x451(%rbp)
movb -0x451(%rbp), %al
testb $0x1, %al
jne 0x4f97a
jmp 0x4f998
movq -0x8(%rbp), %rax
movq %rax, -0x180(%rbp)
movq -0x180(%rbp), %rdi
callq 0x51c20
jmp 0x4f993
jmp 0x4fa3d
movq -0x8(%rbp), %rax
movq %rax, -0x188(%rbp)
leaq -0x1a9(%rbp), %rdi
movq %rdi, -0x468(%rbp)
callq 0x5930
movq -0x468(%rbp), %rdx
leaq 0x1c9d2(%rip), %rsi     # 0x6c396
leaq -0x1a8(%rbp), %rdi
callq 0x18880
jmp 0x4f9d2
movq -0x188(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
movl $0x1, %edx
callq 0x517d0
jmp 0x4f9ec
leaq -0x1a8(%rbp), %rdi
callq 0x5a48
leaq -0x1a9(%rbp), %rdi
callq 0x5590
jmp 0x4fa3d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x4fa2c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0x5a48
leaq -0x1a9(%rbp), %rdi
callq 0x5590
jmp 0x50c2e
jmp 0x50c1c
leaq -0x8(%rbp), %rdi
callq 0x1b050
movq %rax, %rdi
addq $0xd8, %rdi
callq 0x3d310
movb %al, %cl
movb $0x0, -0x1af(%rbp)
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x469(%rbp)
jne 0x4fadf
leaq 0x42361(%rip), %rax     # 0x91dd8
movq (%rax), %rax
movq %rax, -0x478(%rbp)
leaq -0x8(%rbp), %rdi
callq 0x1b050
movq 0x138(%rax), %rsi
leaq -0x1ae(%rbp), %rdi
callq 0x1b190
jmp 0x4fa9f
movq -0x478(%rbp), %rdi
movb $0x1, -0x1af(%rbp)
leaq -0x1ae(%rbp), %rsi
callq 0x3d2d0
movq %rax, -0x480(%rbp)
jmp 0x4fac2
movq -0x480(%rbp), %rax
movzwl (%rax), %eax
andl $0x400, %eax            # imm = 0x400
cmpl $0x0, %eax
setne %al
xorb $-0x1, %al
movb %al, -0x469(%rbp)
movb -0x469(%rbp), %al
movb %al, -0x481(%rbp)
testb $0x1, -0x1af(%rbp)
jne 0x4faf6
jmp 0x4fb02
leaq -0x1ae(%rbp), %rdi
callq 0x60460
movb -0x481(%rbp), %al
testb $0x1, %al
jne 0x4fb0e
jmp 0x4fb74
movq -0x8(%rbp), %rax
movq %rax, -0x1b8(%rbp)
movq -0x10(%rbp), %rax
movsbl 0x1(%rax), %eax
movl %eax, -0x488(%rbp)
leaq -0x8(%rbp), %rdi
callq 0x1b050
movl -0x488(%rbp), %esi
movl %esi, 0x158(%rax)
movq -0x1b8(%rbp), %rdi
callq 0x51d20
jmp 0x4fb4a
jmp 0x4fb74
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
testb $0x1, -0x1af(%rbp)
jne 0x4fb63
jmp 0x4fb6f
leaq -0x1ae(%rbp), %rdi
callq 0x60460
jmp 0x50c2e
jmp 0x50c1c
movq -0x10(%rbp), %rax
movsbl 0x1(%rax), %eax
movw %ax, -0x14(%rbp)
movq -0x10(%rbp), %rax
movsbl 0x2(%rax), %eax
movw %ax, -0x12(%rbp)
leaq -0x1bc(%rbp), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x60430
jmp 0x4fba3
movl -0x14(%rbp), %eax
movl %eax, -0x1c0(%rbp)
leaq -0x1bc(%rbp), %rdi
leaq -0x1c0(%rbp), %rsi
callq 0x60710
movl %eax, -0x48c(%rbp)
jmp 0x4fbc7
leaq -0x8(%rbp), %rdi
movq %rdi, -0x498(%rbp)
callq 0x1b050
movl -0x48c(%rbp), %ecx
movl %ecx, 0x158(%rax)
leaq -0x1c0(%rbp), %rdi
callq 0x60460
leaq -0x1bc(%rbp), %rdi
callq 0x60460
movq -0x498(%rbp), %rdi
callq 0x1b050
movq %rax, %rdi
subq $-0x80, %rdi
callq 0x1b390
movq 0x110(%rax), %rcx
incq %rcx
movq %rcx, 0x110(%rax)
movl -0x14(%rbp), %eax
movl %eax, -0x1fc(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x208(%rbp)
movq -0x208(%rbp), %rdx
leaq -0x1f8(%rbp), %rdi
leaq -0x1fc(%rbp), %rsi
callq 0x4dac0
jmp 0x4fc54
leaq 0x433ad(%rip), %rdi     # 0x93008
leaq -0x1f8(%rbp), %rsi
callq 0x582c0
jmp 0x4fc69
leaq -0x1f8(%rbp), %rdi
callq 0x4ea80
leaq -0x1fc(%rbp), %rdi
callq 0x60460
jmp 0x50c1c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x1c0(%rbp), %rdi
callq 0x60460
leaq -0x1bc(%rbp), %rdi
callq 0x60460
jmp 0x50c2e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x4fcd5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x1f8(%rbp), %rdi
callq 0x4ea80
leaq -0x1fc(%rbp), %rdi
callq 0x60460
jmp 0x50c2e
leaq -0x8(%rbp), %rdi
callq 0x1b050
cmpb $0x0, 0x130(%rax)
je 0x4fd67
leaq -0x8(%rbp), %rdi
callq 0x1b050
movq 0x138(%rax), %rsi
leaq -0x20c(%rbp), %rdi
callq 0x1b190
jmp 0x4fd16
leaq -0x20c(%rbp), %rdi
callq 0x53530
jmp 0x4fd24
leaq -0x20c(%rbp), %rdi
callq 0x60460
leaq -0x8(%rbp), %rdi
callq 0x1b050
movb 0x130(%rax), %cl
addb $-0x1, %cl
movb %cl, 0x130(%rax)
jmp 0x4fd67
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x20c(%rbp), %rdi
callq 0x60460
jmp 0x50c2e
jmp 0x50c1c
movq -0x8(%rbp), %rax
movq %rax, -0x218(%rbp)
movq -0x218(%rbp), %rdi
callq 0x53680
jmp 0x4fd85
movq -0x10(%rbp), %rax
movsbl 0x1(%rax), %eax
movl %eax, -0x4a4(%rbp)
leaq -0x8(%rbp), %rdi
movq %rdi, -0x4a0(%rbp)
callq 0x1b050
movl -0x4a4(%rbp), %ecx
movq -0x4a0(%rbp), %rdi
movl %ecx, 0x158(%rax)
movq -0x8(%rbp), %rax
movq %rax, -0x240(%rbp)
callq 0x1b050
movl 0x158(%rax), %edx
movq -0x240(%rbp), %rsi
leaq -0x238(%rbp), %rdi
callq 0x4e650
jmp 0x4fde1
leaq 0x43250(%rip), %rdi     # 0x93038
leaq -0x238(%rbp), %rsi
callq 0x58300
jmp 0x4fdf6
leaq -0x238(%rbp), %rdi
callq 0x4eb40
leaq -0x8(%rbp), %rdi
callq 0x1b050
movq %rax, %rdi
addq $0x80, %rdi
callq 0x1b390
movq 0x120(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0x120(%rax)
jmp 0x50c1c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x238(%rbp), %rdi
callq 0x4eb40
jmp 0x50c2e
movq -0x10(%rbp), %rax
movsbl 0x1(%rax), %eax
movl %eax, -0x4a8(%rbp)
leaq -0x8(%rbp), %rdi
callq 0x1b050
movl -0x4a8(%rbp), %ecx
movl %ecx, 0x158(%rax)
leaq -0x8(%rbp), %rdi
callq 0x1b050
movb $0x2, 0x132(%rax)
jmp 0x50c1c
movq -0x10(%rbp), %rax
movsbl 0x1(%rax), %eax
cmpl $0x8, %eax
je 0x50022
leaq -0x8(%rbp), %rdi
callq 0x1b050
movq 0x138(%rax), %rsi
leaq -0x248(%rbp), %rdi
callq 0x1b190
jmp 0x4feb5
movq -0x10(%rbp), %rax
movsbl 0x1(%rax), %eax
movl %eax, -0x4ac(%rbp)
leaq -0x8(%rbp), %rdi
callq 0x1b050
movl -0x4ac(%rbp), %edx
movl %edx, 0x158(%rax)
leaq -0x244(%rbp), %rdi
leaq -0x248(%rbp), %rsi
callq 0x60550
jmp 0x4feed
movl -0x244(%rbp), %eax
movl %eax, -0x14(%rbp)
leaq -0x244(%rbp), %rdi
callq 0x60460
leaq -0x248(%rbp), %rdi
callq 0x60460
leaq -0x14(%rbp), %rdi
callq 0x49290
movq %rax, -0x4b8(%rbp)
jmp 0x4ff20
movq -0x4b8(%rbp), %rax
movq %rax, -0x250(%rbp)
leaq 0x4311b(%rip), %rdi     # 0x93050
callq 0x3d010
movq %rax, -0x258(%rbp)
leaq -0x250(%rbp), %rdi
leaq -0x258(%rbp), %rsi
callq 0x3cfe0
testb $0x1, %al
jne 0x4ff5d
jmp 0x50020
leaq -0x250(%rbp), %rdi
callq 0x3d040
movq %rax, %rdi
callq 0x3d0f0
movq %rax, -0x4c0(%rbp)
jmp 0x4ff7a
movq -0x4c0(%rbp), %rax
movq %rax, -0x260(%rbp)
leaq -0x260(%rbp), %rdi
callq 0x1b050
movl 0xac(%rax), %eax
movl %eax, -0x4c4(%rbp)
leaq -0x8(%rbp), %rdi
callq 0x1b050
movq %rax, %rcx
movl -0x4c4(%rbp), %eax
cmpl 0xac(%rcx), %eax
jne 0x4fff5
movq -0x260(%rbp), %rax
movq %rax, -0x268(%rbp)
movq -0x268(%rbp), %rdi
callq 0x536f0
jmp 0x4ffd6
jmp 0x5001e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x248(%rbp), %rdi
callq 0x60460
jmp 0x50c2e
leaq -0x260(%rbp), %rdi
callq 0x1b050
movq -0x8(%rbp), %rcx
movq %rcx, 0x150(%rax)
leaq -0x14(%rbp), %rdi
movl $0x2, %esi
callq 0x47f20
jmp 0x5001c
jmp 0x5001e
jmp 0x50020
jmp 0x5003d
movq -0x8(%rbp), %rax
movq %rax, -0x270(%rbp)
movq -0x270(%rbp), %rdi
callq 0x536f0
jmp 0x5003b
jmp 0x5003d
jmp 0x50c1c
movq -0x8(%rbp), %rax
movq %rax, -0x278(%rbp)
movq -0x278(%rbp), %rdi
callq 0x53680
jmp 0x5005b
leaq -0x8(%rbp), %rdi
callq 0x1b050
movq 0x138(%rax), %rsi
leaq -0x27c(%rbp), %rdi
callq 0x1b190
jmp 0x50079
leaq -0x298(%rbp), %rdi
callq 0x49f30
movl -0x27c(%rbp), %eax
movl %eax, -0x29c(%rbp)
movb $0x0, -0x29d(%rbp)
movsbl -0x29d(%rbp), %eax
cmpl $0x20, %eax
jge 0x50391
movb $0x0, -0x29e(%rbp)
movsbl -0x29e(%rbp), %eax
cmpl $0x8, %eax
jge 0x501b3
movq 0x3cc7a(%rip), %rax     # 0x8cd40
movsbl -0x29d(%rbp), %ecx
movsbl -0x29e(%rbp), %esi
movl %ecx, %edx
movl %esi, %ecx
leal (%rcx,%rdx,8), %ecx
movslq %ecx, %rcx
movsbl (%rax,%rcx), %eax
movzwl -0x27c(%rbp), %ecx
addl %ecx, %eax
movw %ax, -0x14(%rbp)
movq 0x3cc4a(%rip), %rcx     # 0x8cd40
movsbl -0x29d(%rbp), %eax
movsbl -0x29e(%rbp), %esi
movl %eax, %edx
movl %esi, %eax
leal (%rax,%rdx,8), %eax
cltq
movsbl 0x1(%rax,%rcx), %eax
movzwl -0x27a(%rbp), %ecx
addl %ecx, %eax
movw %ax, -0x12(%rbp)
leaq 0x41cb2(%rip), %rax     # 0x91dd8
movq (%rax), %rdi
leaq -0x14(%rbp), %rsi
callq 0x3dcd0
movl %eax, -0x4c8(%rbp)
jmp 0x5013a
movl -0x4c8(%rbp), %eax
movl %eax, -0x2a2(%rbp)
movzwl -0x2a2(%rbp), %eax
andl $0x4, %eax
cmpl $0x0, %eax
setne %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x5015e
jmp 0x50195
jmp 0x501b3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x29c(%rbp), %rdi
callq 0x60460
leaq -0x298(%rbp), %rdi
callq 0x2e6e0
leaq -0x27c(%rbp), %rdi
callq 0x60460
jmp 0x50c2e
movl -0x14(%rbp), %eax
movl %eax, -0x29c(%rbp)
movsbl -0x29e(%rbp), %eax
addl $0x2, %eax
movb %al, -0x29e(%rbp)
jmp 0x500af
leaq 0x41c1e(%rip), %rax     # 0x91dd8
movq (%rax), %rdi
leaq -0x29c(%rbp), %rsi
callq 0x3dcd0
movl %eax, -0x4cc(%rbp)
jmp 0x501d1
movl -0x4cc(%rbp), %eax
movl %eax, -0x2a6(%rbp)
movzwl -0x2a6(%rbp), %ecx
andl $0x1, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x4cd(%rbp)
je 0x50236
leaq 0x41bdd(%rip), %rax     # 0x91dd8
movq (%rax), %rdi
leaq -0x29c(%rbp), %rsi
callq 0x3dcd0
movl %eax, -0x4d4(%rbp)
jmp 0x50212
movl -0x4d4(%rbp), %eax
movl %eax, -0x2aa(%rbp)
movzwl -0x2aa(%rbp), %eax
andl $0x40, %eax
cmpl $0x0, %eax
setne %al
xorb $-0x1, %al
movb %al, -0x4cd(%rbp)
movb -0x4cd(%rbp), %al
testb $0x1, %al
jne 0x50245
jmp 0x5037c
leaq -0x298(%rbp), %rdi
callq 0x58340
testb $0x1, %al
jne 0x50257
jmp 0x50271
leaq -0x298(%rbp), %rdi
leaq -0x29c(%rbp), %rsi
callq 0x2e630
jmp 0x5026c
jmp 0x5037a
leaq -0x29c(%rbp), %rdi
leaq -0x27c(%rbp), %rsi
callq 0x604f0
movw %ax, -0x4d6(%rbp)
jmp 0x5028d
movw -0x4d6(%rbp), %ax
cwtl
movl %eax, -0x4dc(%rbp)
leaq -0x298(%rbp), %rdi
callq 0x58380
movq %rax, %rdi
leaq -0x27c(%rbp), %rsi
callq 0x604f0
movw %ax, -0x4d8(%rbp)
jmp 0x502bf
movl -0x4dc(%rbp), %eax
movw -0x4d8(%rbp), %cx
movswl %cx, %ecx
cmpl %ecx, %eax
jle 0x502fd
leaq -0x298(%rbp), %rdi
movq %rdi, -0x4e8(%rbp)
callq 0x583b0
movq -0x4e8(%rbp), %rdi
leaq -0x29c(%rbp), %rsi
callq 0x2e630
jmp 0x502fb
jmp 0x50378
leaq -0x29c(%rbp), %rdi
leaq -0x27c(%rbp), %rsi
callq 0x604f0
movw %ax, -0x4ea(%rbp)
jmp 0x50319
movw -0x4ea(%rbp), %ax
cwtl
movl %eax, -0x4f0(%rbp)
leaq -0x298(%rbp), %rdi
callq 0x58380
movq %rax, %rdi
leaq -0x27c(%rbp), %rsi
callq 0x604f0
movw %ax, -0x4ec(%rbp)
jmp 0x5034b
movl -0x4f0(%rbp), %eax
movw -0x4ec(%rbp), %cx
movswl %cx, %ecx
cmpl %ecx, %eax
jne 0x50376
leaq -0x298(%rbp), %rdi
leaq -0x29c(%rbp), %rsi
callq 0x2e630
jmp 0x50374
jmp 0x50376
jmp 0x50378
jmp 0x5037a
jmp 0x5037c
jmp 0x5037e
movb -0x29d(%rbp), %al
addb $0x1, %al
movb %al, -0x29d(%rbp)
jmp 0x50098
leaq -0x298(%rbp), %rdi
callq 0x58340
testb $0x1, %al
jne 0x503a3
jmp 0x503b2
movl $0x2, -0x2b0(%rbp)
jmp 0x5046b
leaq -0x298(%rbp), %rdi
callq 0x2e5f0
movswl %ax, %edi
callq 0x608b0
movw %ax, -0x4f2(%rbp)
jmp 0x503cf
movw -0x4f2(%rbp), %ax
movswq %ax, %rsi
leaq -0x298(%rbp), %rdi
callq 0x2e610
movl (%rax), %eax
movl %eax, -0x14(%rbp)
leaq 0x42d56(%rip), %rdi     # 0x93148
leaq -0x27c(%rbp), %rsi
callq 0x4a010
movb %dl, -0x501(%rbp)
movq %rax, -0x500(%rbp)
jmp 0x5040d
movb -0x501(%rbp), %al
movq -0x500(%rbp), %rcx
movq %rcx, -0x2c0(%rbp)
movb %al, -0x2b8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x2c8(%rbp)
movq -0x2c8(%rbp), %rdi
leaq -0x14(%rbp), %rsi
movl $0x1, %edx
callq 0x53890
jmp 0x50449
leaq -0x8(%rbp), %rdi
callq 0x1b050
movq %rax, %rdi
addq $0xd8, %rdi
callq 0x3d5f0
movl $0x2, -0x2b0(%rbp)
leaq -0x29c(%rbp), %rdi
callq 0x60460
leaq -0x298(%rbp), %rdi
callq 0x2e6e0
leaq -0x27c(%rbp), %rdi
callq 0x60460
jmp 0x50c1c
movq -0x10(%rbp), %rax
movsbl 0x1(%rax), %eax
movl %eax, -0x514(%rbp)
leaq -0x8(%rbp), %rdi
movq %rdi, -0x510(%rbp)
callq 0x1b050
movl -0x514(%rbp), %ecx
movq -0x510(%rbp), %rdi
movl %ecx, 0x158(%rax)
callq 0x1b050
movq 0x138(%rax), %rsi
leaq -0x2d0(%rbp), %rdi
callq 0x1b190
jmp 0x504df
movq -0x10(%rbp), %rax
movsbl 0x1(%rax), %edx
leaq -0x2cc(%rbp), %rdi
leaq -0x2d0(%rbp), %rsi
callq 0x60550
jmp 0x504fc
movl -0x2cc(%rbp), %eax
movl %eax, -0x14(%rbp)
leaq -0x2cc(%rbp), %rdi
callq 0x60460
leaq -0x2d0(%rbp), %rdi
callq 0x60460
movq -0x10(%rbp), %rax
movsbl 0x1(%rax), %esi
leaq -0x14(%rbp), %rdi
callq 0x54410
movb %al, -0x515(%rbp)
jmp 0x50536
movb -0x515(%rbp), %al
movb %al, -0x2d1(%rbp)
cmpb $0x0, %al
jne 0x50588
leaq -0x8(%rbp), %rdi
callq 0x1b050
movb $0x5, 0x132(%rax)
leaq -0x14(%rbp), %rdi
movl $0x5, %esi
callq 0x48080
jmp 0x50566
jmp 0x5064a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x2d0(%rbp), %rdi
callq 0x60460
jmp 0x50c2e
movsbl -0x2d1(%rbp), %eax
cmpl $-0x1, %eax
jne 0x50648
leaq -0x2f9(%rbp), %rdi
movq %rdi, -0x520(%rbp)
callq 0x5930
movq -0x520(%rbp), %rdx
leaq 0x1bde8(%rip), %rsi     # 0x6c3a1
leaq -0x2f8(%rbp), %rdi
callq 0x18880
jmp 0x505c7
leaq -0x2f9(%rbp), %rdi
callq 0x5590
leaq -0x2f8(%rbp), %rdi
movl $0x2e, %esi
callq 0x1ab10
jmp 0x505e6
leaq -0x8(%rbp), %rdi
callq 0x28450
movq %rax, %rdi
leaq 0x3dc9f(%rip), %rsi     # 0x8e298
callq 0x1af60
jmp 0x50600
leaq -0x2f8(%rbp), %rdi
callq 0x5a48
jmp 0x50648
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x2f9(%rbp), %rdi
callq 0x5590
jmp 0x50c2e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x2f8(%rbp), %rdi
callq 0x5a48
jmp 0x50c2e
jmp 0x5064a
jmp 0x50c1c
leaq -0x8(%rbp), %rdi
callq 0x1b050
movq 0x138(%rax), %rsi
leaq -0x2fe(%rbp), %rdi
callq 0x1b190
jmp 0x5066d
movl -0x2fe(%rbp), %eax
movl %eax, -0x14(%rbp)
leaq -0x2fe(%rbp), %rdi
callq 0x60460
leaq 0x4174f(%rip), %rax     # 0x91dd8
movq (%rax), %rdi
leaq -0x14(%rbp), %rsi
callq 0x3dcd0
movl %eax, -0x524(%rbp)
jmp 0x5069d
movl -0x524(%rbp), %eax
movl %eax, -0x302(%rbp)
movzwl -0x302(%rbp), %eax
andl $0x20, %eax
cmpl $0x0, %eax
je 0x507a0
leaq -0x14(%rbp), %rdi
xorl %esi, %esi
callq 0x49390
movq %rax, -0x530(%rbp)
jmp 0x506d0
movq -0x530(%rbp), %rax
movq %rax, -0x310(%rbp)
leaq 0x4284b(%rip), %rdi     # 0x92f30
callq 0x3c9d0
movq %rax, -0x318(%rbp)
leaq -0x310(%rbp), %rdi
leaq -0x318(%rbp), %rsi
callq 0x3cdc0
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x531(%rbp)
jne 0x50715
jmp 0x50770
leaq -0x310(%rbp), %rdi
callq 0x3cdf0
movq %rax, %rdi
callq 0x583d0
movb %al, -0x532(%rbp)
jmp 0x50731
movb -0x532(%rbp), %al
movsbl %al, %eax
movl %eax, -0x538(%rbp)
leaq -0x8(%rbp), %rdi
callq 0x1b050
movq %rax, %rcx
movl -0x538(%rbp), %eax
movl 0xac(%rcx), %ecx
movl %ecx, %edx
leaq 0x19b97(%rip), %rcx     # 0x6a2f8
movzbl (%rcx,%rdx), %ecx
cmpl %ecx, %eax
setne %al
movb %al, -0x531(%rbp)
movb -0x531(%rbp), %al
testb $0x1, %al
jne 0x5077c
jmp 0x5079e
leaq -0x8(%rbp), %rdi
callq 0x1b050
movb $0x7, 0x132(%rax)
leaq -0x14(%rbp), %rdi
movl $0x3, %esi
callq 0x47f20
jmp 0x5079c
jmp 0x5079e
jmp 0x507a0
jmp 0x50c1c
leaq 0x4162c(%rip), %rax     # 0x91dd8
movq (%rax), %rax
movq %rax, -0x540(%rbp)
leaq -0x8(%rbp), %rdi
callq 0x1b050
movq 0x138(%rax), %rsi
leaq -0x320(%rbp), %rdi
callq 0x1b190
jmp 0x507d4
movq -0x540(%rbp), %rdi
leaq -0x320(%rbp), %rsi
callq 0x3dcd0
movl %eax, -0x544(%rbp)
jmp 0x507ef
movl -0x544(%rbp), %eax
movl %eax, -0x31c(%rbp)
movzwl -0x31c(%rbp), %eax
andl $0x20, %eax
cmpl $0x0, %eax
setne %al
xorb $-0x1, %al
movb %al, -0x545(%rbp)
leaq -0x320(%rbp), %rdi
callq 0x60460
movb -0x545(%rbp), %al
testb $0x1, %al
jne 0x5082e
jmp 0x508c1
leaq -0x8(%rbp), %rdi
movq %rdi, -0x550(%rbp)
callq 0x1b050
movq -0x550(%rbp), %rdi
movb $0x6, 0x132(%rax)
callq 0x1b050
movq 0x138(%rax), %rsi
leaq -0x324(%rbp), %rdi
callq 0x1b190
jmp 0x50866
leaq -0x324(%rbp), %rdi
movl $0x1, %esi
callq 0x47f20
jmp 0x50879
leaq -0x324(%rbp), %rdi
callq 0x60460
jmp 0x508c1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x320(%rbp), %rdi
callq 0x60460
jmp 0x50c2e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x324(%rbp), %rdi
callq 0x60460
jmp 0x50c2e
jmp 0x50c1c
movq -0x8(%rbp), %rax
movq %rax, -0x330(%rbp)
movq -0x330(%rbp), %rdi
callq 0x53680
jmp 0x508df
movb $0x0, -0x337(%rbp)
movsbl -0x337(%rbp), %eax
cmpl $0x4, %eax
jge 0x50ab1
leaq -0x8(%rbp), %rdi
movq %rdi, -0x558(%rbp)
callq 0x1b050
movq -0x558(%rbp), %rdi
movl 0x158(%rax), %eax
movsbl -0x337(%rbp), %ecx
movl %ecx, %edx
movl %eax, %ecx
leal (%rcx,%rdx,2), %eax
leal 0x7(%rcx,%rdx,2), %edx
testl %eax, %eax
movl %eax, %ecx
cmovsl %edx, %ecx
andl $-0x8, %ecx
subl %ecx, %eax
movl %eax, -0x334(%rbp)
callq 0x1b050
movq 0x138(%rax), %rsi
leaq -0x340(%rbp), %rdi
callq 0x1b190
jmp 0x50951
movl -0x334(%rbp), %edx
leaq -0x33c(%rbp), %rdi
leaq -0x340(%rbp), %rsi
callq 0x60550
jmp 0x5096c
movl -0x33c(%rbp), %eax
movl %eax, -0x14(%rbp)
leaq -0x33c(%rbp), %rdi
callq 0x60460
leaq -0x340(%rbp), %rdi
callq 0x60460
leaq 0x41444(%rip), %rax     # 0x91dd8
movq (%rax), %rdi
leaq -0x14(%rbp), %rsi
callq 0x3d2d0
movq %rax, -0x560(%rbp)
jmp 0x509a9
movq -0x560(%rbp), %rax
movw (%rax), %ax
movw %ax, -0x336(%rbp)
movzwl -0x336(%rbp), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x50a9c
movzwl -0x336(%rbp), %eax
andl $0x40, %eax
cmpl $0x0, %eax
jne 0x50a9c
movq -0x8(%rbp), %rax
movq %rax, -0x368(%rbp)
movl -0x334(%rbp), %edx
movq -0x368(%rbp), %rsi
leaq -0x360(%rbp), %rdi
callq 0x4dfe0
jmp 0x50a06
leaq 0x42613(%rip), %rdi     # 0x93020
leaq -0x360(%rbp), %rsi
callq 0x583f0
jmp 0x50a1b
leaq -0x360(%rbp), %rdi
callq 0x4eaf0
leaq 0x4271a(%rip), %rdi     # 0x93148
leaq -0x14(%rbp), %rsi
callq 0x4a010
movb %dl, -0x569(%rbp)
movq %rax, -0x568(%rbp)
jmp 0x50a46
movb -0x569(%rbp), %al
movq -0x568(%rbp), %rcx
movq %rcx, -0x378(%rbp)
movb %al, -0x370(%rbp)
jmp 0x50a9c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x340(%rbp), %rdi
callq 0x60460
jmp 0x50c2e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x360(%rbp), %rdi
callq 0x4eaf0
jmp 0x50c2e
jmp 0x50a9e
movb -0x337(%rbp), %al
addb $0x1, %al
movb %al, -0x337(%rbp)
jmp 0x508e6
jmp 0x50c1c
leaq -0x8(%rbp), %rdi
callq 0x1b050
cmpb $0x0, 0x130(%rax)
setne %al
xorb $-0x1, %al
movb %al, -0x56a(%rbp)
andb $0x1, %al
movb %al, -0x56b(%rbp)
leaq -0x8(%rbp), %rdi
callq 0x1b050
movb -0x56b(%rbp), %dl
movq %rax, %rcx
movb -0x56a(%rbp), %al
movb %dl, 0x130(%rcx)
testb $0x1, %al
jne 0x50bb8
leaq -0x8(%rbp), %rdi
movq %rdi, -0x580(%rbp)
callq 0x1b050
movq -0x580(%rbp), %rdi
movq 0xc0(%rax), %rax
movq %rax, -0x578(%rbp)
callq 0x1b050
movq 0x138(%rax), %rsi
leaq -0x37c(%rbp), %rdi
callq 0x1b190
jmp 0x50b3e
movq -0x578(%rbp), %rdi
leaq -0x37c(%rbp), %rsi
callq 0x426b0
jmp 0x50b53
leaq -0x37c(%rbp), %rdi
callq 0x60460
leaq -0x8(%rbp), %rdi
callq 0x1b050
movl 0xb0(%rax), %eax
movl %eax, %ecx
leaq 0x19789(%rip), %rax     # 0x6a300
imulq $0xd, %rcx, %rcx
addq %rcx, %rax
movb 0x8(%rax), %al
movb %al, -0x581(%rbp)
leaq -0x8(%rbp), %rdi
callq 0x1b050
movb -0x581(%rbp), %cl
movb %cl, 0x148(%rax)
jmp 0x50c0c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x37c(%rbp), %rdi
callq 0x60460
jmp 0x50c2e
leaq -0x8(%rbp), %rdi
callq 0x1b050
movb $0xb, 0x148(%rax)
leaq -0x8(%rbp), %rdi
callq 0x1b050
movq 0xc0(%rax), %rdi
callq 0x3d340
movb %al, -0x582(%rbp)
jmp 0x50be5
movb -0x582(%rbp), %al
testb $0x1, %al
jne 0x50bf1
jmp 0x50c0a
leaq -0x8(%rbp), %rdi
callq 0x1b050
movq 0xc0(%rax), %rdi
callq 0x42740
jmp 0x50c08
jmp 0x50bc8
jmp 0x50c0c
leaq -0x8(%rbp), %rdi
callq 0x1b050
movb $0x1, 0x14d(%rax)
leaq -0x14(%rbp), %rdi
callq 0x60460
addq $0x590, %rsp            # imm = 0x590
popq %rbp
retq
leaq -0x14(%rbp), %rdi
callq 0x60460
movq -0x30(%rbp), %rdi
callq 0x5920