401c2f:	59                   	pop    %ecx
401c30:	85 c0                	test   %eax,%eax
401c32:	75 67                	jne    0x401c9b
401c34:	8b 0e                	mov    (%esi),%ecx
401c36:	53                   	push   %ebx
401c37:	0f b7 04 4f          	movzwl (%edi,%ecx,2),%eax
401c3b:	8b 5d 08             	mov    0x8(%ebp),%ebx
401c3e:	33 d2                	xor    %edx,%edx
401c40:	89 13                	mov    %edx,(%ebx)
401c42:	83 e8 2b             	sub    $0x2b,%eax
401c45:	74 5c                	je     0x401ca3
401c47:	48                   	dec    %eax
401c48:	48                   	dec    %eax
401c49:	74 54                	je     0x401c9f
401c4b:	8b 06                	mov    (%esi),%eax
401c4d:	66 39 14 47          	cmp    %dx,(%edi,%eax,2)
401c51:	74 34                	je     0x401c87
401c53:	8b 06                	mov    (%esi),%eax
401c55:	0f b7 04 47          	movzwl (%edi,%eax,2),%eax
401c59:	50                   	push   %eax
401c5a:	e8 c6 00 02 00       	call   0x421d25
401c5f:	59                   	pop    %ecx
401c60:	85 c0                	test   %eax,%eax
401c62:	74 23                	je     0x401c87
401c64:	8b 03                	mov    (%ebx),%eax
401c66:	8b 16                	mov    (%esi),%edx
401c68:	6b c0 0a             	imul   $0xa,%eax,%eax
401c6b:	0f b7 0c 57          	movzwl (%edi,%edx,2),%ecx
401c6f:	83 c0 d0             	add    $0xffffffd0,%eax
401c72:	03 c1                	add    %ecx,%eax
401c74:	8d 4a 01             	lea    0x1(%edx),%ecx
401c77:	89 03                	mov    %eax,(%ebx)
401c79:	33 c0                	xor    %eax,%eax
401c7b:	c6 45 ff 01          	movb   $0x1,-0x1(%ebp)
401c7f:	89 0e                	mov    %ecx,(%esi)
401c81:	66 39 04 4f          	cmp    %ax,(%edi,%ecx,2)
401c85:	75 cc                	jne    0x401c53
401c87:	8b 0b                	mov    (%ebx),%ecx
401c89:	0f af 4d f8          	imul   -0x8(%ebp),%ecx
401c8d:	8a 45 ff             	mov    -0x1(%ebp),%al
401c90:	89 0b                	mov    %ecx,(%ebx)
401c92:	5b                   	pop    %ebx
401c93:	5f                   	pop    %edi
401c94:	5e                   	pop    %esi
401c95:	c9                   	leave
401c96:	c3                   	ret
401c97:	32 c0                	xor    %al,%al
401c99:	eb f8                	jmp    0x401c93
401c9b:	ff 06                	incl   (%esi)
401c9d:	eb 84                	jmp    0x401c23
401c9f:	83 4d f8 ff          	orl    $0xffffffff,-0x8(%ebp)
401ca3:	8d 41 01             	lea    0x1(%ecx),%eax
401ca6:	89 06                	mov    %eax,(%esi)
401ca8:	eb a1                	jmp    0x401c4b
401caa:	55                   	push   %ebp
401cab:	8b ec                	mov    %esp,%ebp
401cad:	8b 55 08             	mov    0x8(%ebp),%edx
401cb0:	56                   	push   %esi
401cb1:	8b 02                	mov    (%edx),%eax
401cb3:	83 ec 10             	sub    $0x10,%esp
401cb6:	8b f4                	mov    %esp,%esi
401cb8:	81 c1 38 01 00 00    	add    $0x138,%ecx
401cbe:	89 06                	mov    %eax,(%esi)
401cc0:	8b 42 04             	mov    0x4(%edx),%eax
401cc3:	89 46 04             	mov    %eax,0x4(%esi)
401cc6:	8b 42 08             	mov    0x8(%edx),%eax
401cc9:	89 46 08             	mov    %eax,0x8(%esi)
401ccc:	8b 42 0c             	mov    0xc(%edx),%eax
401ccf:	89 46 0c             	mov    %eax,0xc(%esi)
401cd2:	ff 00                	incl   (%eax)
401cd4:	e8 57 a0 00 00       	call   0x40bd30
401cd9:	5e                   	pop    %esi
401cda:	5d                   	pop    %ebp
401cdb:	c2 04 00             	ret    $0x4
401cde:	55                   	push   %ebp
401cdf:	8b ec                	mov    %esp,%ebp
401ce1:	83 e4 f8             	and    $0xfffffff8,%esp
401ce4:	81 ec 9c 00 00 00    	sub    $0x9c,%esp
401cea:	53                   	push   %ebx
401ceb:	8b 5d 08             	mov    0x8(%ebp),%ebx
401cee:	56                   	push   %esi
401cef:	57                   	push   %edi
401cf0:	8b 7b 08             	mov    0x8(%ebx),%edi
401cf3:	68 00 04 00 00       	push   $0x400
401cf8:	8d 4c 24 24          	lea    0x24(%esp),%ecx
401cfc:	e8 0e 4e 00 00       	call   0x406b0f
401d01:	be 00 00 02 00       	mov    $0x20000,%esi
401d06:	56                   	push   %esi
401d07:	e8 de d7 01 00       	call   0x41f4ea
401d0c:	59                   	pop    %ecx
401d0d:	50                   	push   %eax
401d0e:	8d 4c 24 18          	lea    0x18(%esp),%ecx
401d12:	e8 a0 2a 00 00       	call   0x4047b7
401d17:	56                   	push   %esi
401d18:	e8 cd d7 01 00       	call   0x41f4ea
401d1d:	59                   	pop    %ecx
401d1e:	50                   	push   %eax
401d1f:	8d 4c 24 5c          	lea    0x5c(%esp),%ecx
401d23:	e8 8f 2a 00 00       	call   0x4047b7
401d28:	8b 43 04             	mov    0x4(%ebx),%eax
401d2b:	8b 30                	mov    (%eax),%esi
401d2d:	8b ce                	mov    %esi,%ecx
401d2f:	e8 38 76 00 00       	call   0x40936c
401d34:	8b 5e 08             	mov    0x8(%esi),%ebx
401d37:	8d 4c 24 48          	lea    0x48(%esp),%ecx
401d3b:	e8 b7 ba 00 00       	call   0x40d7f7
401d40:	8d 4c 24 60          	lea    0x60(%esp),%ecx
401d44:	e8 5e 09 00 00       	call   0x4026a7
401d49:	68 18 26 4b 00       	push   $0x4b2618
401d4e:	8d 4c 24 34          	lea    0x34(%esp),%ecx
401d52:	e8 c2 b0 00 00       	call   0x40ce19
401d57:	8d 44 24 30          	lea    0x30(%esp),%eax
401d5b:	50                   	push   %eax
401d5c:	8d 4c 24 64          	lea    0x64(%esp),%ecx
401d60:	e8 16 51 00 00       	call   0x406e7b
401d65:	8d 4c 24 30          	lea    0x30(%esp),%ecx
401d69:	e8 c9 ad 00 00       	call   0x40cb37
401d6e:	53                   	push   %ebx
401d6f:	8d 4c 24 64          	lea    0x64(%esp),%ecx
401d73:	e8 e6 50 00 00       	call   0x406e5e
401d78:	33 f6                	xor    %esi,%esi
401d7a:	8b ce                	mov    %esi,%ecx
401d7c:	8d 47 ff             	lea    -0x1(%edi),%eax
401d7f:	c7 44 24 30 4c dc 49 	movl   $0x49dc4c,0x30(%esp)
401d86:	00
401d87:	89 74 24 34          	mov    %esi,0x34(%esp)
401d8b:	89 74 24 38          	mov    %esi,0x38(%esp)
401d8f:	89 74 24 3c          	mov    %esi,0x3c(%esp)
401d93:	89 4c 24 10          	mov    %ecx,0x10(%esp)
401d97:	89 44 24 40          	mov    %eax,0x40(%esp)
401d9b:	3b 73 04             	cmp    0x4(%ebx),%esi
401d9e:	0f 8d 29 01 00 00    	jge    0x401ecd
401da4:	51                   	push   %ecx
401da5:	8d 44 24 34          	lea    0x34(%esp),%eax
401da9:	50                   	push   %eax
401daa:	56                   	push   %esi
401dab:	8d 4c 24 6c          	lea    0x6c(%esp),%ecx
401daf:	e8 1a 03 00 00       	call   0x4020ce
401db4:	85 c0                	test   %eax,%eax
401db6:	0f 8e 08 01 00 00    	jle    0x401ec4
401dbc:	8b 44 24 34          	mov    0x34(%esp),%eax
401dc0:	8d 4c 24 20          	lea    0x20(%esp),%ecx
401dc4:	8b 00                	mov    (%eax),%eax
401dc6:	8b 38                	mov    (%eax),%edi
401dc8:	8b 40 04             	mov    0x4(%eax),%eax
401dcb:	89 44 24 1c          	mov    %eax,0x1c(%esp)
401dcf:	8b c7                	mov    %edi,%eax
401dd1:	2b c6                	sub    %esi,%eax
401dd3:	50                   	push   %eax
401dd4:	56                   	push   %esi
401dd5:	53                   	push   %ebx
401dd6:	e8 a9 95 00 00       	call   0x40b384
401ddb:	8b 74 24 1c          	mov    0x1c(%esp),%esi
401ddf:	03 f7                	add    %edi,%esi
401de1:	57                   	push   %edi
401de2:	8b cb                	mov    %ebx,%ecx
401de4:	89 74 24 48          	mov    %esi,0x48(%esp)
401de8:	e8 99 02 00 00       	call   0x402086
401ded:	6a 25                	push   $0x25
401def:	59                   	pop    %ecx
401df0:	66 39 08             	cmp    %cx,(%eax)
401df3:	75 17                	jne    0x401e0c
401df5:	8d 47 01             	lea    0x1(%edi),%eax
401df8:	50                   	push   %eax
401df9:	8b cb                	mov    %ebx,%ecx
401dfb:	e8 86 02 00 00       	call   0x402086
401e00:	6a 25                	push   $0x25
401e02:	59                   	pop    %ecx
401e03:	66 39 08             	cmp    %cx,(%eax)
401e06:	0f 84 0f 01 00 00    	je     0x401f1b
401e0c:	57                   	push   %edi
401e0d:	8b cb                	mov    %ebx,%ecx
401e0f:	e8 72 02 00 00       	call   0x402086
401e14:	6a 5c                	push   $0x5c
401e16:	59                   	pop    %ecx
401e17:	66 39 08             	cmp    %cx,(%eax)
401e1a:	0f 84 b0 a6 07 00    	je     0x47c4d0
401e20:	8b 44 24 10          	mov    0x10(%esp),%eax
401e24:	3b 44 24 40          	cmp    0x40(%esp),%eax
401e28:	0f 84 8d 00 00 00    	je     0x401ebb
401e2e:	ff 74 24 1c          	push   0x1c(%esp)
401e32:	40                   	inc    %eax
401e33:	57                   	push   %edi
401e34:	53                   	push   %ebx
401e35:	8d 4c 24 54          	lea    0x54(%esp),%ecx
401e39:	89 44 24 1c          	mov    %eax,0x1c(%esp)
401e3d:	e8 a7 4b 00 00       	call   0x4069e9
401e42:	8b 44 24 4c          	mov    0x4c(%esp),%eax
401e46:	48                   	dec    %eax
401e47:	50                   	push   %eax
401e48:	8d 4c 24 4c          	lea    0x4c(%esp),%ecx
401e4c:	e8 55 43 00 00       	call   0x4061a6
401e51:	0f b7 00             	movzwl (%eax),%eax
401e54:	83 f8 69             	cmp    $0x69,%eax
401e57:	0f 8f a7 a6 07 00    	jg     0x47c504
401e5d:	0f 84 b8 a6 07 00    	je     0x47c51b
401e63:	83 f8 45             	cmp    $0x45,%eax
401e66:	74 1f                	je     0x401e87
401e68:	83 f8 47             	cmp    $0x47,%eax
401e6b:	74 1a                	je     0x401e87
401e6d:	83 f8 58             	cmp    $0x58,%eax
401e70:	0f 84 a5 a6 07 00    	je     0x47c51b
401e76:	83 f8 64             	cmp    $0x64,%eax
401e79:	0f 84 9c a6 07 00    	je     0x47c51b
401e7f:	83 c0 9b             	add    $0xffffff9b,%eax
401e82:	83 f8 02             	cmp    $0x2,%eax
401e85:	77 27                	ja     0x401eae
401e87:	8b 45 08             	mov    0x8(%ebp),%eax
401e8a:	8b 4c 24 10          	mov    0x10(%esp),%ecx
401e8e:	8b 40 04             	mov    0x4(%eax),%eax
401e91:	8b 0c 88             	mov    (%eax,%ecx,4),%ecx
401e94:	e8 37 0e 01 00       	call   0x412cd0
401e99:	51                   	push   %ecx
401e9a:	51                   	push   %ecx
401e9b:	dd 1c 24             	fstpl  (%esp)
401e9e:	ff 74 24 50          	push   0x50(%esp)
401ea2:	ff 74 24 20          	push   0x20(%esp)
401ea6:	e8 80 f8 01 00       	call   0x42172b
401eab:	83 c4 10             	add    $0x10,%esp
401eae:	ff 74 24 14          	push   0x14(%esp)
401eb2:	8d 4c 24 24          	lea    0x24(%esp),%ecx
401eb6:	e8 d1 32 00 00       	call   0x40518c
401ebb:	3b 73 04             	cmp    0x4(%ebx),%esi
401ebe:	0f 8c e0 fe ff ff    	jl     0x401da4
401ec4:	3b 73 04             	cmp    0x4(%ebx),%esi
401ec7:	0f 8c be a6 07 00    	jl     0x47c58b
401ecd:	8b 4d 0c             	mov    0xc(%ebp),%ecx
401ed0:	8d 44 24 20          	lea    0x20(%esp),%eax
401ed4:	50                   	push   %eax
401ed5:	e8 8e 4c 00 00       	call   0x406b68
401eda:	8d 4c 24 30          	lea    0x30(%esp),%ecx
401ede:	e8 c2 d7 03 00       	call   0x43f6a5
401ee3:	8d 4c 24 60          	lea    0x60(%esp),%ecx
401ee7:	e8 2e 6f 00 00       	call   0x408e1a
401eec:	8d 4c 24 48          	lea    0x48(%esp),%ecx
401ef0:	e8 42 ac 00 00       	call   0x40cb37
401ef5:	8d 4c 24 58          	lea    0x58(%esp),%ecx
401ef9:	e8 e4 28 00 00       	call   0x4047e2
401efe:	8d 4c 24 14          	lea    0x14(%esp),%ecx
401f02:	e8 db 28 00 00       	call   0x4047e2
401f07:	8d 4c 24 20          	lea    0x20(%esp),%ecx
401f0b:	e8 27 ac 00 00       	call   0x40cb37
401f10:	5f                   	pop    %edi
401f11:	5e                   	pop    %esi
401f12:	33 c0                	xor    %eax,%eax
401f14:	5b                   	pop    %ebx
401f15:	8b e5                	mov    %ebp,%esp
401f17:	5d                   	pop    %ebp
401f18:	c2 08 00             	ret    $0x8
401f1b:	51                   	push   %ecx
401f1c:	e9 a1 a5 07 00       	jmp    0x47c4c2
401f21:	55                   	push   %ebp
401f22:	8b ec                	mov    %esp,%ebp
401f24:	83 ec 24             	sub    $0x24,%esp
401f27:	8b 45 08             	mov    0x8(%ebp),%eax
401f2a:	53                   	push   %ebx
401f2b:	33 d2                	xor    %edx,%edx
401f2d:	33 db                	xor    %ebx,%ebx
401f2f:	56                   	push   %esi
401f30:	43                   	inc    %ebx
401f31:	57                   	push   %edi
401f32:	89 55 fc             	mov    %edx,-0x4(%ebp)
401f35:	89 55 f0             	mov    %edx,-0x10(%ebp)
401f38:	39 50 04             	cmp    %edx,0x4(%eax)
401f3b:	0f 84 da 1a 07 00    	je     0x473a1b
401f41:	8b 45 1c             	mov    0x1c(%ebp),%eax
401f44:	8b 4d 18             	mov    0x18(%ebp),%ecx
401f47:	8b 7d 0c             	mov    0xc(%ebp),%edi
401f4a:	8b 75 08             	mov    0x8(%ebp),%esi
401f4d:	88 10                	mov    %dl,(%eax)
401f4f:	8b 45 10             	mov    0x10(%ebp),%eax
401f52:	88 11                	mov    %dl,(%ecx)
401f54:	8b 4d 14             	mov    0x14(%ebp),%ecx
401f57:	89 17                	mov    %edx,(%edi)
401f59:	88 11                	mov    %dl,(%ecx)
401f5b:	88 10                	mov    %dl,(%eax)
401f5d:	c7 45 f4 2b 00 00 00 	movl   $0x2b,-0xc(%ebp)
401f64:	c7 45 f8 23 00 00 00 	movl   $0x23,-0x8(%ebp)
401f6b:	8b fa                	mov    %edx,%edi
401f6d:	57                   	push   %edi
401f6e:	8b ce                	mov    %esi,%ecx
401f70:	e8 11 01 00 00       	call   0x402086
401f75:	0f b7 00             	movzwl (%eax),%eax
401f78:	6a 2b                	push   $0x2b
401f7a:	59                   	pop    %ecx
401f7b:	6a 5e                	push   $0x5e
401f7d:	66 3b c1             	cmp    %cx,%ax
401f80:	59                   	pop    %ecx
401f81:	6a 21                	push   $0x21
401f83:	5a                   	pop    %edx
401f84:	0f 84 98 1a 07 00    	je     0x473a22
401f8a:	66 3b c1             	cmp    %cx,%ax
401f8d:	0f 84 8f 1a 07 00    	je     0x473a22
401f93:	66 3b c2             	cmp    %dx,%ax
401f96:	0f 84 86 1a 07 00    	je     0x473a22
401f9c:	66 3b 45 f8          	cmp    -0x8(%ebp),%ax
401fa0:	0f 84 7c 1a 07 00    	je     0x473a22
401fa6:	57                   	push   %edi
401fa7:	47                   	inc    %edi
401fa8:	8b ce                	mov    %esi,%ecx
401faa:	89 7d 1c             	mov    %edi,0x1c(%ebp)
401fad:	e8 d4 00 00 00       	call   0x402086
401fb2:	0f b7 00             	movzwl (%eax),%eax
401fb5:	8b 75 f0             	mov    -0x10(%ebp),%esi
401fb8:	8b 7d 0c             	mov    0xc(%ebp),%edi
401fbb:	83 f8 7b             	cmp    $0x7b,%eax
401fbe:	0f 85 d9 1a 07 00    	jne    0x473a9d
401fc4:	6a 40                	push   $0x40
401fc6:	8d 4d e0             	lea    -0x20(%ebp),%ecx
401fc9:	e8 41 4b 00 00       	call   0x406b0f
401fce:	8d 45 1c             	lea    0x1c(%ebp),%eax
401fd1:	50                   	push   %eax
401fd2:	8d 45 e0             	lea    -0x20(%ebp),%eax
401fd5:	50                   	push   %eax
401fd6:	8b 45 08             	mov    0x8(%ebp),%eax
401fd9:	50                   	push   %eax
401fda:	6a 7d                	push   $0x7d
401fdc:	e8 55 00 00 00       	call   0x402036
401fe1:	84 c0                	test   %al,%al
401fe3:	74 4d                	je     0x402032
401fe5:	ff 75 e0             	push   -0x20(%ebp)
401fe8:	ff 34 b5 d0 b5 4b 00 	push   0x4bb5d0(,%esi,4)
401fef:	e8 b3 ef 01 00       	call   0x420fa7
401ff4:	59                   	pop    %ecx
401ff5:	59                   	pop    %ecx
401ff6:	85 c0                	test   %eax,%eax
401ff8:	74 06                	je     0x402000
401ffa:	46                   	inc    %esi
401ffb:	83 fe 62             	cmp    $0x62,%esi
401ffe:	7c e5                	jl     0x401fe5
402000:	83 fe 62             	cmp    $0x62,%esi
402003:	0f 84 4b 1a 07 00    	je     0x473a54
402009:	80 be 68 b5 4b 00 00 	cmpb   $0x0,0x4bb568(%esi)
402010:	75 20                	jne    0x402032
402012:	0f b6 86 00 b5 4b 00 	movzbl 0x4bb500(%esi),%eax
402019:	89 07                	mov    %eax,(%edi)
40201b:	8d 4d e0             	lea    -0x20(%ebp),%ecx
40201e:	e8 14 ab 00 00       	call   0x40cb37
402023:	81 27 ff 00 00 00    	andl   $0xff,(%edi)
402029:	8a c3                	mov    %bl,%al
40202b:	5f                   	pop    %edi
40202c:	5e                   	pop    %esi
40202d:	5b                   	pop    %ebx
40202e:	c9                   	leave
40202f:	c2 18 00             	ret    $0x18
402032:	32 db                	xor    %bl,%bl
402034:	eb e5                	jmp    0x40201b
402036:	55                   	push   %ebp
402037:	8b ec                	mov    %esp,%ebp
402039:	8b 4d 10             	mov    0x10(%ebp),%ecx