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
40203c:	53                   	push   %ebx
40203d:	56                   	push   %esi
40203e:	e8 8b 9c 00 00       	call   0x40bcce
402043:	8b 75 14             	mov    0x14(%ebp),%esi
402046:	32 db                	xor    %bl,%bl
402048:	ff 36                	push   (%esi)
40204a:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40204d:	e8 34 00 00 00       	call   0x402086
402052:	0f b7 00             	movzwl (%eax),%eax
402055:	66 85 c0             	test   %ax,%ax
402058:	74 1b                	je     0x402075
40205a:	84 db                	test   %bl,%bl
40205c:	75 17                	jne    0x402075
40205e:	66 3b 45 08          	cmp    0x8(%ebp),%ax
402062:	74 0d                	je     0x402071
402064:	8b 4d 10             	mov    0x10(%ebp),%ecx
402067:	50                   	push   %eax
402068:	e8 2c a7 00 00       	call   0x40c799
40206d:	ff 06                	incl   (%esi)
40206f:	eb d7                	jmp    0x402048
402071:	b3 01                	mov    $0x1,%bl
402073:	eb f8                	jmp    0x40206d
402075:	66 83 7d 08 00       	cmpw   $0x0,0x8(%ebp)
40207a:	b0 01                	mov    $0x1,%al
40207c:	74 02                	je     0x402080
40207e:	8a c3                	mov    %bl,%al
402080:	5e                   	pop    %esi
402081:	5b                   	pop    %ebx
402082:	5d                   	pop    %ebp
402083:	c2 10 00             	ret    $0x10
402086:	55                   	push   %ebp
402087:	8b ec                	mov    %esp,%ebp
402089:	8b 51 04             	mov    0x4(%ecx),%edx
40208c:	8b 01                	mov    (%ecx),%eax
40208e:	56                   	push   %esi
40208f:	8b 75 08             	mov    0x8(%ebp),%esi
402092:	3b f2                	cmp    %edx,%esi
402094:	73 08                	jae    0x40209e
402096:	8d 04 70             	lea    (%eax,%esi,2),%eax
402099:	5e                   	pop    %esi
40209a:	5d                   	pop    %ebp
40209b:	c2 04 00             	ret    $0x4
40209e:	8d 04 50             	lea    (%eax,%edx,2),%eax
4020a1:	eb f6                	jmp    0x402099
4020a3:	56                   	push   %esi
4020a4:	57                   	push   %edi
4020a5:	8b f1                	mov    %ecx,%esi
4020a7:	33 ff                	xor    %edi,%edi
4020a9:	39 7e 08             	cmp    %edi,0x8(%esi)
4020ac:	76 19                	jbe    0x4020c7
4020ae:	8b 46 04             	mov    0x4(%esi),%eax
4020b1:	ff 34 b8             	push   (%eax,%edi,4)
4020b4:	e8 a5 d4 01 00       	call   0x41f55e
4020b9:	8b 46 04             	mov    0x4(%esi),%eax
4020bc:	59                   	pop    %ecx
4020bd:	83 24 b8 00          	andl   $0x0,(%eax,%edi,4)
4020c1:	47                   	inc    %edi
4020c2:	3b 7e 08             	cmp    0x8(%esi),%edi
4020c5:	72 e7                	jb     0x4020ae
4020c7:	83 66 08 00          	andl   $0x0,0x8(%esi)
4020cb:	5f                   	pop    %edi
4020cc:	5e                   	pop    %esi
4020cd:	c3                   	ret
4020ce:	55                   	push   %ebp
4020cf:	8b ec                	mov    %esp,%ebp
4020d1:	83 ec 10             	sub    $0x10,%esp
4020d4:	53                   	push   %ebx
4020d5:	56                   	push   %esi
4020d6:	57                   	push   %edi
4020d7:	8b f1                	mov    %ecx,%esi
4020d9:	33 ff                	xor    %edi,%edi
4020db:	39 7e 24             	cmp    %edi,0x24(%esi)
4020de:	74 57                	je     0x402137
4020e0:	80 7e 10 00          	cmpb   $0x0,0x10(%esi)
4020e4:	74 51                	je     0x402137
4020e6:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4020e9:	e8 b5 ff ff ff       	call   0x4020a3
4020ee:	6a 01                	push   $0x1
4020f0:	8d 45 08             	lea    0x8(%ebp),%eax
4020f3:	50                   	push   %eax
4020f4:	8b ce                	mov    %esi,%ecx
4020f6:	e8 5b 08 00 00       	call   0x402956
4020fb:	85 c0                	test   %eax,%eax
4020fd:	7e 38                	jle    0x402137
4020ff:	39 7e 34             	cmp    %edi,0x34(%esi)
402102:	7e 29                	jle    0x40212d
402104:	8b df                	mov    %edi,%ebx
402106:	8b 46 2c             	mov    0x2c(%esi),%eax
402109:	8b 0c 18             	mov    (%eax,%ebx,1),%ecx
40210c:	8b 44 18 04          	mov    0x4(%eax,%ebx,1),%eax
402110:	2b c1                	sub    %ecx,%eax
402112:	89 45 f8             	mov    %eax,-0x8(%ebp)
402115:	8d 45 f4             	lea    -0xc(%ebp),%eax
402118:	89 4d f4             	mov    %ecx,-0xc(%ebp)
40211b:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40211e:	50                   	push   %eax
40211f:	e8 17 00 00 00       	call   0x40213b
402124:	47                   	inc    %edi
402125:	8d 5b 08             	lea    0x8(%ebx),%ebx
402128:	3b 7e 34             	cmp    0x34(%esi),%edi
40212b:	7c d9                	jl     0x402106
40212d:	8b 46 34             	mov    0x34(%esi),%eax
402130:	5f                   	pop    %edi
402131:	5e                   	pop    %esi
402132:	5b                   	pop    %ebx
402133:	c9                   	leave
402134:	c2 0c 00             	ret    $0xc
402137:	33 c0                	xor    %eax,%eax
402139:	eb f5                	jmp    0x402130
40213b:	55                   	push   %ebp
40213c:	8b ec                	mov    %esp,%ebp
40213e:	56                   	push   %esi
40213f:	8b f1                	mov    %ecx,%esi
402141:	57                   	push   %edi
402142:	8b 46 0c             	mov    0xc(%esi),%eax
402145:	39 46 08             	cmp    %eax,0x8(%esi)
402148:	74 31                	je     0x40217b
40214a:	6a 08                	push   $0x8
40214c:	e8 99 d3 01 00       	call   0x41f4ea
402151:	8b f8                	mov    %eax,%edi
402153:	59                   	pop    %ecx
402154:	85 ff                	test   %edi,%edi
402156:	0f 84 54 04 07 00    	je     0x4725b0
40215c:	8b 55 08             	mov    0x8(%ebp),%edx
40215f:	8b 0a                	mov    (%edx),%ecx
402161:	89 0f                	mov    %ecx,(%edi)
402163:	8b 4a 04             	mov    0x4(%edx),%ecx
402166:	89 4f 04             	mov    %ecx,0x4(%edi)
402169:	8b 4e 08             	mov    0x8(%esi),%ecx
40216c:	8b 46 04             	mov    0x4(%esi),%eax
40216f:	89 3c 88             	mov    %edi,(%eax,%ecx,4)
402172:	ff 46 08             	incl   0x8(%esi)
402175:	5f                   	pop    %edi
402176:	5e                   	pop    %esi
402177:	5d                   	pop    %ebp
402178:	c2 04 00             	ret    $0x4
40217b:	03 c0                	add    %eax,%eax
40217d:	83 f8 08             	cmp    $0x8,%eax
402180:	73 03                	jae    0x402185
402182:	6a 08                	push   $0x8
402184:	58                   	pop    %eax
402185:	33 c9                	xor    %ecx,%ecx
402187:	6a 04                	push   $0x4
402189:	5a                   	pop    %edx
40218a:	89 46 0c             	mov    %eax,0xc(%esi)
40218d:	f7 e2                	mul    %edx
40218f:	0f 90 c1             	seto   %cl
402192:	f7 d9                	neg    %ecx
402194:	0b c8                	or     %eax,%ecx
402196:	51                   	push   %ecx
402197:	e8 4e d3 01 00       	call   0x41f4ea
40219c:	83 7e 04 00          	cmpl   $0x0,0x4(%esi)
4021a0:	59                   	pop    %ecx
4021a1:	8b f8                	mov    %eax,%edi
4021a3:	0f 85 df 03 07 00    	jne    0x472588
4021a9:	89 7e 04             	mov    %edi,0x4(%esi)
4021ac:	eb 9c                	jmp    0x40214a
4021ae:	55                   	push   %ebp
4021af:	8b ec                	mov    %esp,%ebp
4021b1:	83 ec 38             	sub    $0x38,%esp
4021b4:	56                   	push   %esi
4021b5:	57                   	push   %edi
4021b6:	6a 58                	push   $0x58
4021b8:	8b f9                	mov    %ecx,%edi
4021ba:	e8 2b d3 01 00       	call   0x41f4ea
4021bf:	59                   	pop    %ecx
4021c0:	85 c0                	test   %eax,%eax
4021c2:	0f 84 fe 3c 07 00    	je     0x475ec6
4021c8:	8b c8                	mov    %eax,%ecx
4021ca:	e8 af 00 00 00       	call   0x40227e
4021cf:	8b f0                	mov    %eax,%esi
4021d1:	8b 87 f4 00 00 00    	mov    0xf4(%edi),%eax
4021d7:	89 06                	mov    %eax,(%esi)
4021d9:	8d 87 d8 01 00 00    	lea    0x1d8(%edi),%eax
4021df:	50                   	push   %eax