4098a5:	8b f0                	mov    %eax,%esi
4098a7:	8b 55 0c             	mov    0xc(%ebp),%edx
4098aa:	8b 83 0a 01 00 00    	mov    0x10a(%ebx),%eax
4098b0:	8b ce                	mov    %esi,%ecx
4098b2:	e8 a9 d1 ff ff       	call   0x406a60
4098b7:	89 07                	mov    %eax,(%edi)
4098b9:	8b 07                	mov    (%edi),%eax
4098bb:	29 83 0e 01 00 00    	sub    %eax,0x10e(%ebx)
4098c1:	8b 73 50             	mov    0x50(%ebx),%esi
4098c4:	8b d3                	mov    %ebx,%edx
4098c6:	8b 86 bc 01 00 00    	mov    0x1bc(%esi),%eax
4098cc:	ff 96 b8 01 00 00    	call   *0x1b8(%esi)
4098d2:	33 c0                	xor    %eax,%eax
4098d4:	5f                   	pop    %edi
4098d5:	5e                   	pop    %esi
4098d6:	5b                   	pop    %ebx
4098d7:	5d                   	pop    %ebp
4098d8:	c2 10 00             	ret    $0x10
4098db:	90                   	nop
4098dc:	55                   	push   %ebp
4098dd:	8b ec                	mov    %esp,%ebp
4098df:	83 c4 f4             	add    $0xfffffff4,%esp
4098e2:	53                   	push   %ebx
4098e3:	8b d8                	mov    %eax,%ebx
4098e5:	89 93 0a 01 00 00    	mov    %edx,0x10a(%ebx)
4098eb:	89 8b 0e 01 00 00    	mov    %ecx,0x10e(%ebx)
4098f1:	89 5d f4             	mov    %ebx,-0xc(%ebp)
4098f4:	33 c0                	xor    %eax,%eax
4098f6:	89 45 f8             	mov    %eax,-0x8(%ebp)
4098f9:	b8 8c 98 40 00       	mov    $0x40988c,%eax
4098fe:	89 45 fc             	mov    %eax,-0x4(%ebp)
409901:	33 c0                	xor    %eax,%eax
409903:	80 7d 08 00          	cmpb   $0x0,0x8(%ebp)
409907:	74 05                	je     0x40990e
409909:	b8 00 80 00 00       	mov    $0x8000,%eax
40990e:	8d 55 f4             	lea    -0xc(%ebp),%edx
409911:	52                   	push   %edx
409912:	33 d2                	xor    %edx,%edx
409914:	8a 55 0c             	mov    0xc(%ebp),%dl
409917:	0f b7 14 55 48 64 42 	movzwl 0x426448(,%edx,2),%edx
40991e:	00
40991f:	0b c2                	or     %edx,%eax
409921:	50                   	push   %eax
409922:	68 49 04 00 00       	push   $0x449
409927:	53                   	push   %ebx
409928:	e8 0f 2c 00 00       	call   0x40c53c
40992d:	33 c0                	xor    %eax,%eax
40992f:	89 83 0a 01 00 00    	mov    %eax,0x10a(%ebx)
409935:	8b 45 f8             	mov    -0x8(%ebp),%eax
409938:	89 83 06 01 00 00    	mov    %eax,0x106(%ebx)
40993e:	85 c0                	test   %eax,%eax
409940:	0f 94 c0             	sete   %al
409943:	5b                   	pop    %ebx
409944:	8b e5                	mov    %ebp,%esp
409946:	5d                   	pop    %ebp
409947:	c2 08 00             	ret    $0x8
40994a:	8b c0                	mov    %eax,%eax
40994c:	55                   	push   %ebp
40994d:	8b ec                	mov    %esp,%ebp
40994f:	51                   	push   %ecx
409950:	53                   	push   %ebx
409951:	56                   	push   %esi
409952:	57                   	push   %edi
409953:	8b d9                	mov    %ecx,%ebx
409955:	8b f2                	mov    %edx,%esi
409957:	8b f8                	mov    %eax,%edi
409959:	8b c6                	mov    %esi,%eax
40995b:	e8 98 11 00 00       	call   0x40aaf8
409960:	89 45 fc             	mov    %eax,-0x4(%ebp)
409963:	53                   	push   %ebx
409964:	8a 45 08             	mov    0x8(%ebp),%al
409967:	50                   	push   %eax
409968:	8b c7                	mov    %edi,%eax
40996a:	83 c9 ff             	or     $0xffffffff,%ecx
40996d:	8b 55 fc             	mov    -0x4(%ebp),%edx
409970:	e8 67 ff ff ff       	call   0x4098dc
409975:	8b d8                	mov    %eax,%ebx
409977:	8b 45 fc             	mov    -0x4(%ebp),%eax
40997a:	e8 91 08 00 00       	call   0x40a210
40997f:	8b c3                	mov    %ebx,%eax
409981:	5f                   	pop    %edi
409982:	5e                   	pop    %esi
409983:	5b                   	pop    %ebx
409984:	59                   	pop    %ecx
409985:	5d                   	pop    %ebp
409986:	c2 04 00             	ret    $0x4
409989:	8d 40 00             	lea    0x0(%eax),%eax
40998c:	83 78 04 00          	cmpl   $0x0,0x4(%eax)
409990:	7c 5e                	jl     0x4099f0
409992:	60                   	pusha
409993:	89 c3                	mov    %eax,%ebx
409995:	89 cd                	mov    %ecx,%ebp
409997:	8b 4b 40             	mov    0x40(%ebx),%ecx
40999a:	e3 53                	jecxz  0x4099ef
40999c:	89 ce                	mov    %ecx,%esi
40999e:	8b 4e 1c             	mov    0x1c(%esi),%ecx
4099a1:	e3 4c                	jecxz  0x4099ef
4099a3:	89 cf                	mov    %ecx,%edi
4099a5:	d1 ef                	shr    $1,%edi
4099a7:	e8 bc b7 ff ff       	call   0x405168
4099ac:	4f                   	dec    %edi
4099ad:	78 31                	js     0x4099e0
4099af:	52                   	push   %edx
4099b0:	53                   	push   %ebx
4099b1:	31 c0                	xor    %eax,%eax
4099b3:	38 05 95 98 42 00    	cmp    %al,0x429895
4099b9:	74 09                	je     0x4099c4
4099bb:	8b 4e 18             	mov    0x18(%esi),%ecx
4099be:	8b 4c f9 04          	mov    0x4(%ecx,%edi,8),%ecx
4099c2:	e3 0b                	jecxz  0x4099cf
4099c4:	8b 46 18             	mov    0x18(%esi),%eax
4099c7:	8b 04 f8             	mov    (%eax,%edi,8),%eax
4099ca:	93                   	xchg   %eax,%ebx
4099cb:	89 e9                	mov    %ebp,%ecx
4099cd:	ff d3                	call   *%ebx
4099cf:	5b                   	pop    %ebx
4099d0:	5a                   	pop    %edx
4099d1:	84 c0                	test   %al,%al
4099d3:	74 d7                	je     0x4099ac
4099d5:	89 d8                	mov    %ebx,%eax
4099d7:	e8 34 08 00 00       	call   0x40a210
4099dc:	61                   	popa
4099dd:	b0 01                	mov    $0x1,%al
4099df:	c3                   	ret
4099e0:	31 c0                	xor    %eax,%eax
4099e2:	40                   	inc    %eax
4099e3:	39 43 04             	cmp    %eax,0x4(%ebx)
4099e6:	74 ed                	je     0x4099d5
4099e8:	89 d8                	mov    %ebx,%eax
4099ea:	e8 21 08 00 00       	call   0x40a210
4099ef:	61                   	popa
4099f0:	31 c0                	xor    %eax,%eax
4099f2:	c3                   	ret
4099f3:	90                   	nop
4099f4:	53                   	push   %ebx
4099f5:	56                   	push   %esi
4099f6:	8b d8                	mov    %eax,%ebx
4099f8:	ba b4 7d 40 00       	mov    $0x407db4,%edx
4099fd:	8b c3                	mov    %ebx,%eax
4099ff:	e8 80 b8 ff ff       	call   0x405284
409a04:	8b f0                	mov    %eax,%esi
409a06:	85 f6                	test   %esi,%esi
409a08:	7c 27                	jl     0x409a31
409a0a:	8b d6                	mov    %esi,%edx
409a0c:	8b c3                	mov    %ebx,%eax
409a0e:	e8 15 b8 ff ff       	call   0x405228
409a13:	8b d6                	mov    %esi,%edx
409a15:	8b c3                	mov    %ebx,%eax
409a17:	e8 0c b8 ff ff       	call   0x405228
409a1c:	ba b4 7d 40 00       	mov    $0x407db4,%edx
409a21:	8b c3                	mov    %ebx,%eax
409a23:	e8 a8 b7 ff ff       	call   0x4051d0
409a28:	33 d2                	xor    %edx,%edx
409a2a:	8b c3                	mov    %ebx,%eax
409a2c:	e8 9f b7 ff ff       	call   0x4051d0
409a31:	5e                   	pop    %esi
409a32:	5b                   	pop    %ebx
409a33:	c3                   	ret
409a34:	c3                   	ret
409a35:	8d 40 00             	lea    0x0(%eax),%eax
409a38:	33 c9                	xor    %ecx,%ecx
409a3a:	e8 c5 39 00 00       	call   0x40d404
409a3f:	c3                   	ret
409a40:	53                   	push   %ebx
409a41:	56                   	push   %esi
409a42:	8b d8                	mov    %eax,%ebx
409a44:	8b 43 40             	mov    0x40(%ebx),%eax
409a47:	85 c0                	test   %eax,%eax
409a49:	74 1f                	je     0x409a6a
409a4b:	e8 34 b8 ff ff       	call   0x405284
409a50:	8b f0                	mov    %eax,%esi
409a52:	85 f6                	test   %esi,%esi
409a54:	7c 14                	jl     0x409a6a
409a56:	8b 43 40             	mov    0x40(%ebx),%eax
409a59:	8b d6                	mov    %esi,%edx
409a5b:	e8 c8 b7 ff ff       	call   0x405228
409a60:	8b 43 40             	mov    0x40(%ebx),%eax
409a63:	8b d6                	mov    %esi,%edx
409a65:	e8 be b7 ff ff       	call   0x405228
409a6a:	5e                   	pop    %esi
409a6b:	5b                   	pop    %ebx
409a6c:	c3                   	ret
409a6d:	8d 40 00             	lea    0x0(%eax),%eax
409a70:	53                   	push   %ebx
409a71:	8b 50 50             	mov    0x50(%eax),%edx
409a74:	8b 8a f8 00 00 00    	mov    0xf8(%edx),%ecx
409a7a:	81 f9 f4 50 40 00    	cmp    $0x4050f4,%ecx
409a80:	74 12                	je     0x409a94
409a82:	8b da                	mov    %edx,%ebx
409a84:	8b d0                	mov    %eax,%edx
409a86:	8b 83 fc 00 00 00    	mov    0xfc(%ebx),%eax
409a8c:	ff 93 f8 00 00 00    	call   *0xf8(%ebx)
409a92:	5b                   	pop    %ebx
409a93:	c3                   	ret
409a94:	8b da                	mov    %edx,%ebx
409a96:	8b d0                	mov    %eax,%edx
409a98:	8b 83 94 00 00 00    	mov    0x94(%ebx),%eax
409a9e:	ff 93 90 00 00 00    	call   *0x90(%ebx)
409aa4:	5b                   	pop    %ebx
409aa5:	c3                   	ret
409aa6:	8b c0                	mov    %eax,%eax
409aa8:	55                   	push   %ebp
409aa9:	8b ec                	mov    %esp,%ebp
409aab:	83 c4 d0             	add    $0xffffffd0,%esp
409aae:	53                   	push   %ebx
409aaf:	56                   	push   %esi
409ab0:	57                   	push   %edi
409ab1:	33 d2                	xor    %edx,%edx
409ab3:	89 55 e4             	mov    %edx,-0x1c(%ebp)
409ab6:	8b f8                	mov    %eax,%edi
409ab8:	33 c0                	xor    %eax,%eax
409aba:	55                   	push   %ebp
409abb:	68 d4 9c 40 00       	push   $0x409cd4
409ac0:	64 ff 30             	push   %fs:(%eax)
409ac3:	64 89 20             	mov    %esp,%fs:(%eax)
409ac6:	8d 45 e4             	lea    -0x1c(%ebp),%eax
409ac9:	8b df                	mov    %edi,%ebx
409acb:	8b 93 e2 00 00 00    	mov    0xe2(%ebx),%edx
409ad1:	e8 56 9c ff ff       	call   0x40372c
409ad6:	33 c0                	xor    %eax,%eax
409ad8:	89 45 f0             	mov    %eax,-0x10(%ebp)
409adb:	33 c0                	xor    %eax,%eax
409add:	89 45 f4             	mov    %eax,-0xc(%ebp)
409ae0:	83 7d e4 00          	cmpl   $0x0,-0x1c(%ebp)
409ae4:	0f 84 0a 01 00 00    	je     0x409bf4
409aea:	8b 83 a8 00 00 00    	mov    0xa8(%ebx),%eax
409af0:	85 c0                	test   %eax,%eax
409af2:	74 13                	je     0x409b07
409af4:	80 78 45 00          	cmpb   $0x0,0x45(%eax)
409af8:	74 0d                	je     0x409b07
409afa:	8d 45 e4             	lea    -0x1c(%ebp),%eax
409afd:	ba ec 9c 40 00       	mov    $0x409cec,%edx
409b02:	e8 f5 9d ff ff       	call   0x4038fc
409b07:	8b c3                	mov    %ebx,%eax
409b09:	e8 36 41 00 00       	call   0x40dc44
409b0e:	8d 45 e8             	lea    -0x18(%ebp),%eax
409b11:	50                   	push   %eax
409b12:	8b c3                	mov    %ebx,%eax
409b14:	e8 9b 28 00 00       	call   0x40c3b4
409b19:	8d 4d f0             	lea    -0x10(%ebp),%ecx
409b1c:	8b 55 e4             	mov    -0x1c(%ebp),%edx
409b1f:	e8 a4 0d 00 00       	call   0x40a8c8
409b24:	8b df                	mov    %edi,%ebx
409b26:	f6 43 34 01          	testb  $0x1,0x34(%ebx)
409b2a:	0f 84 c4 00 00 00    	je     0x409bf4
409b30:	80 bb 3a 01 00 00 05 	cmpb   $0x5,0x13a(%ebx)
409b37:	0f 84 b7 00 00 00    	je     0x409bf4
409b3d:	8d 55 d0             	lea    -0x30(%ebp),%edx
409b40:	8b c3                	mov    %ebx,%eax
409b42:	e8 d9 1e 00 00       	call   0x40ba20
409b47:	be 50 04 00 00       	mov    $0x450,%esi
409b4c:	8a 43 3a             	mov    0x3a(%ebx),%al
409b4f:	fe c8                	dec    %al
409b51:	74 09                	je     0x409b5c
409b53:	fe c8                	dec    %al
409b55:	75 08                	jne    0x409b5f
409b57:	83 ce 01             	or     $0x1,%esi
409b5a:	eb 03                	jmp    0x409b5f
409b5c:	83 ce 02             	or     $0x2,%esi
409b5f:	89 5d e0             	mov    %ebx,-0x20(%ebp)
409b62:	eb 09                	jmp    0x409b6d
409b64:	8b 45 e0             	mov    -0x20(%ebp),%eax
409b67:	8b 40 30             	mov    0x30(%eax),%eax
409b6a:	89 45 e0             	mov    %eax,-0x20(%ebp)
409b6d:	83 7d e0 00          	cmpl   $0x0,-0x20(%ebp)
409b71:	74 0c                	je     0x409b7f
409b73:	8b 45 e0             	mov    -0x20(%ebp),%eax
409b76:	83 b8 a8 00 00 00 00 	cmpl   $0x0,0xa8(%eax)
409b7d:	74 e5                	je     0x409b64
409b7f:	33 db                	xor    %ebx,%ebx
409b81:	83 7d e0 00          	cmpl   $0x0,-0x20(%ebp)
409b85:	74 22                	je     0x409ba9
409b87:	8b 45 e0             	mov    -0x20(%ebp),%eax
409b8a:	e8 c1 23 00 00       	call   0x40bf50
409b8f:	e8 3c 0a 00 00       	call   0x40a5d0
409b94:	50                   	push   %eax
409b95:	8b c7                	mov    %edi,%eax
409b97:	e8 18 28 00 00       	call   0x40c3b4
409b9c:	e8 8f 0d 00 00       	call   0x40a930
409ba1:	50                   	push   %eax
409ba2:	e8 b1 ad ff ff       	call   0x404958
409ba7:	8b d8                	mov    %eax,%ebx
409ba9:	56                   	push   %esi
409baa:	8d 45 d0             	lea    -0x30(%ebp),%eax
409bad:	50                   	push   %eax
409bae:	8b 45 e4             	mov    -0x1c(%ebp),%eax
409bb1:	e8 3e 9d ff ff       	call   0x4038f4
409bb6:	50                   	push   %eax
409bb7:	8b 45 e4             	mov    -0x1c(%ebp),%eax
409bba:	e8 35 9f ff ff       	call   0x403af4
409bbf:	50                   	push   %eax
409bc0:	8b 87 ca 00 00 00    	mov    0xca(%edi),%eax
409bc6:	e8 65 0d 00 00       	call   0x40a930
409bcb:	50                   	push   %eax
409bcc:	e8 b3 b3 ff ff       	call   0x404f84
409bd1:	89 45 f4             	mov    %eax,-0xc(%ebp)
409bd4:	83 7d e0 00          	cmpl   $0x0,-0x20(%ebp)
409bd8:	74 11                	je     0x409beb
409bda:	53                   	push   %ebx
409bdb:	8b c7                	mov    %edi,%eax
409bdd:	e8 d2 27 00 00       	call   0x40c3b4
409be2:	8b 40 1c             	mov    0x1c(%eax),%eax
409be5:	50                   	push   %eax
409be6:	e8 6d ad ff ff       	call   0x404958
409beb:	8b 45 d8             	mov    -0x28(%ebp),%eax
409bee:	2b 45 d0             	sub    -0x30(%ebp),%eax
409bf1:	89 45 f0             	mov    %eax,-0x10(%ebp)
409bf4:	33 db                	xor    %ebx,%ebx
409bf6:	8b f7                	mov    %edi,%esi
409bf8:	8a 86 3a 01 00 00    	mov    0x13a(%esi),%al
409bfe:	2c 02                	sub    $0x2,%al
409c00:	72 04                	jb     0x409c06
409c02:	2c 01                	sub    $0x1,%al
409c04:	75 4d                	jne    0x409c53
409c06:	33 c0                	xor    %eax,%eax
409c08:	8a 86 38 01 00 00    	mov    0x138(%esi),%al
409c0e:	89 45 fc             	mov    %eax,-0x4(%ebp)
409c11:	8b c6                	mov    %esi,%eax
409c13:	e8 24 20 00 00       	call   0x40bc3c
409c18:	8b 55 f0             	mov    -0x10(%ebp),%edx
409c1b:	03 55 fc             	add    -0x4(%ebp),%edx
409c1e:	3b c2                	cmp    %edx,%eax
409c20:	74 0f                	je     0x409c31
409c22:	8b 55 f0             	mov    -0x10(%ebp),%edx
409c25:	03 55 fc             	add    -0x4(%ebp),%edx
409c28:	8b c6                	mov    %esi,%eax
409c2a:	e8 19 20 00 00       	call   0x40bc48
409c2f:	b3 01                	mov    $0x1,%bl
409c31:	8b c6                	mov    %esi,%eax
409c33:	e8 04 20 00 00       	call   0x40bc3c
409c38:	0f bf 96 d8 00 00 00 	movswl 0xd8(%esi),%edx
409c3f:	3b c2                	cmp    %edx,%eax
409c41:	7d 10                	jge    0x409c53
409c43:	0f bf 96 d8 00 00 00 	movswl 0xd8(%esi),%edx
409c4a:	8b c6                	mov    %esi,%eax
409c4c:	e8 f7 1f 00 00       	call   0x40bc48
409c51:	b3 01                	mov    $0x1,%bl
409c53:	8a 86 3a 01 00 00    	mov    0x13a(%esi),%al
409c59:	84 c0                	test   %al,%al
409c5b:	74 08                	je     0x409c65
409c5d:	2c 02                	sub    $0x2,%al
409c5f:	74 04                	je     0x409c65
409c61:	2c 02                	sub    $0x2,%al
409c63:	75 4d                	jne    0x409cb2
409c65:	33 c0                	xor    %eax,%eax
409c67:	8a 86 39 01 00 00    	mov    0x139(%esi),%al
409c6d:	89 45 f8             	mov    %eax,-0x8(%ebp)
409c70:	8b c6                	mov    %esi,%eax
409c72:	e8 ed 1f 00 00       	call   0x40bc64
409c77:	8b 55 f4             	mov    -0xc(%ebp),%edx