40ca02:	0f b7 c0             	movzwl %ax,%eax
40ca05:	50                   	push   %eax
40ca06:	e8 c5 4c 01 00       	call   0x4216d0
40ca0b:	59                   	pop    %ecx
40ca0c:	85 c0                	test   %eax,%eax
40ca0e:	0f 85 f2 00 00 00    	jne    0x40cb06
40ca14:	80 7c 24 24 01       	cmpb   $0x1,0x24(%esp)
40ca19:	0f 84 40 6a 06 00    	je     0x47345f
40ca1f:	ff b4 24 88 00 00 00 	push   0x88(%esp)
40ca26:	8d 4c 24 6c          	lea    0x6c(%esp),%ecx
40ca2a:	e8 ea 03 00 00       	call   0x40ce19
40ca2f:	8d 84 24 98 00 00 00 	lea    0x98(%esp),%eax
40ca36:	50                   	push   %eax
40ca37:	8d 44 24 20          	lea    0x20(%esp),%eax
40ca3b:	50                   	push   %eax
40ca3c:	8d 44 24 70          	lea    0x70(%esp),%eax
40ca40:	50                   	push   %eax
40ca41:	56                   	push   %esi
40ca42:	8b cf                	mov    %edi,%ecx
40ca44:	e8 db 01 00 00       	call   0x40cc24
40ca49:	8d 4c 24 68          	lea    0x68(%esp),%ecx
40ca4d:	89 44 24 34          	mov    %eax,0x34(%esp)
40ca51:	e8 e1 00 00 00       	call   0x40cb37
40ca56:	8b 44 24 34          	mov    0x34(%esp),%eax
40ca5a:	85 c0                	test   %eax,%eax
40ca5c:	0f 84 cf 00 00 00    	je     0x40cb31
40ca62:	83 f8 01             	cmp    $0x1,%eax
40ca65:	0f 8e b9 00 00 00    	jle    0x40cb24
40ca6b:	83 f8 03             	cmp    $0x3,%eax
40ca6e:	0f 8f a7 00 00 00    	jg     0x40cb1b
40ca74:	ff 75 0c             	push   0xc(%ebp)
40ca77:	8b 44 24 20          	mov    0x20(%esp),%eax
40ca7b:	56                   	push   %esi
40ca7c:	50                   	push   %eax
40ca7d:	8b cf                	mov    %edi,%ecx
40ca7f:	89 44 24 20          	mov    %eax,0x20(%esp)
40ca83:	e8 fa fb 00 00       	call   0x41c682
40ca88:	80 7c 24 22 01       	cmpb   $0x1,0x22(%esp)
40ca8d:	0f 94 44 24 24       	sete   0x24(%esp)
40ca92:	80 7c 24 13 01       	cmpb   $0x1,0x13(%esp)
40ca97:	0f 84 fe fe ff ff    	je     0x40c99b
40ca9d:	8d 8c 24 98 00 00 00 	lea    0x98(%esp),%ecx
40caa4:	e8 5e 7e ff ff       	call   0x404907
40caa9:	ff b4 24 d0 00 00 00 	push   0xd0(%esp)
40cab0:	89 9c 24 c8 00 00 00 	mov    %ebx,0xc8(%esp)
40cab7:	89 9c 24 cc 00 00 00 	mov    %ebx,0xcc(%esp)
40cabe:	ff 15 18 d3 48 00    	call   *0x48d318
40cac4:	8a 5c 24 13          	mov    0x13(%esp),%bl
40cac8:	8d 4c 24 44          	lea    0x44(%esp),%ecx
40cacc:	e8 11 7d ff ff       	call   0x4047e2
40cad1:	8d 8c 24 88 00 00 00 	lea    0x88(%esp),%ecx
40cad8:	e8 5a 00 00 00       	call   0x40cb37
40cadd:	8d 8c 24 d0 00 00 00 	lea    0xd0(%esp),%ecx
40cae4:	e8 4e 00 00 00       	call   0x40cb37
40cae9:	8d 8c 24 98 00 00 00 	lea    0x98(%esp),%ecx
40caf0:	e8 e8 7d ff ff       	call   0x4048dd
40caf5:	ff 0d 74 21 4c 00    	decl   0x4c2174
40cafb:	5f                   	pop    %edi
40cafc:	5e                   	pop    %esi
40cafd:	8a c3                	mov    %bl,%al
40caff:	5b                   	pop    %ebx
40cb00:	8b e5                	mov    %ebp,%esp
40cb02:	5d                   	pop    %ebp
40cb03:	c2 14 00             	ret    $0x14
40cb06:	8b 44 24 34          	mov    0x34(%esp),%eax
40cb0a:	66 83 7c 46 fe 5f    	cmpw   $0x5f,-0x2(%esi,%eax,2)
40cb10:	0f 85 fe fe ff ff    	jne    0x40ca14
40cb16:	e9 33 69 06 00       	jmp    0x47344e
40cb1b:	83 f8 04             	cmp    $0x4,%eax
40cb1e:	75 04                	jne    0x40cb24
40cb20:	88 5c 24 23          	mov    %bl,0x23(%esp)
40cb24:	8b 44 24 1c          	mov    0x1c(%esp),%eax
40cb28:	89 44 24 14          	mov    %eax,0x14(%esp)
40cb2c:	e9 57 ff ff ff       	jmp    0x40ca88
40cb31:	88 5c 24 13          	mov    %bl,0x13(%esp)
40cb35:	eb ed                	jmp    0x40cb24
40cb37:	56                   	push   %esi
40cb38:	8b f1                	mov    %ecx,%esi
40cb3a:	8b 46 0c             	mov    0xc(%esi),%eax
40cb3d:	ff 08                	decl   (%eax)
40cb3f:	8b 46 0c             	mov    0xc(%esi),%eax
40cb42:	83 38 00             	cmpl   $0x0,(%eax)
40cb45:	75 11                	jne    0x40cb58
40cb47:	ff 36                	push   (%esi)
40cb49:	e8 10 2a 01 00       	call   0x41f55e
40cb4e:	ff 76 0c             	push   0xc(%esi)
40cb51:	e8 08 2a 01 00       	call   0x41f55e
40cb56:	59                   	pop    %ecx
40cb57:	59                   	pop    %ecx
40cb58:	5e                   	pop    %esi
40cb59:	c3                   	ret
40cb5a:	55                   	push   %ebp
40cb5b:	8b ec                	mov    %esp,%ebp
40cb5d:	57                   	push   %edi
40cb5e:	8b 7d 08             	mov    0x8(%ebp),%edi
40cb61:	57                   	push   %edi
40cb62:	e8 74 41 01 00       	call   0x420cdb
40cb67:	59                   	pop    %ecx
40cb68:	85 c0                	test   %eax,%eax
40cb6a:	74 1d                	je     0x40cb89
40cb6c:	56                   	push   %esi
40cb6d:	8d 70 ff             	lea    -0x1(%eax),%esi
40cb70:	85 f6                	test   %esi,%esi
40cb72:	78 0d                	js     0x40cb81
40cb74:	66 8b 0c 77          	mov    (%edi,%esi,2),%cx
40cb78:	e8 a3 08 01 00       	call   0x41d420
40cb7d:	85 c0                	test   %eax,%eax
40cb7f:	75 0d                	jne    0x40cb8e
40cb81:	33 c0                	xor    %eax,%eax
40cb83:	66 89 44 77 02       	mov    %ax,0x2(%edi,%esi,2)
40cb88:	5e                   	pop    %esi
40cb89:	5f                   	pop    %edi
40cb8a:	5d                   	pop    %ebp
40cb8b:	c2 04 00             	ret    $0x4
40cb8e:	4e                   	dec    %esi
40cb8f:	79 e3                	jns    0x40cb74
40cb91:	eb ee                	jmp    0x40cb81
40cb93:	55                   	push   %ebp
40cb94:	8b ec                	mov    %esp,%ebp
40cb96:	53                   	push   %ebx
40cb97:	56                   	push   %esi
40cb98:	57                   	push   %edi
40cb99:	8b 7d 08             	mov    0x8(%ebp),%edi
40cb9c:	33 db                	xor    %ebx,%ebx
40cb9e:	8b f3                	mov    %ebx,%esi
40cba0:	85 ff                	test   %edi,%edi
40cba2:	74 75                	je     0x40cc19
40cba4:	66 83 3f 23          	cmpw   $0x23,(%edi)
40cba8:	74 52                	je     0x40cbfc
40cbaa:	66 39 1f             	cmp    %bx,(%edi)
40cbad:	74 17                	je     0x40cbc6
40cbaf:	0f b7 07             	movzwl (%edi),%eax
40cbb2:	83 f8 22             	cmp    $0x22,%eax
40cbb5:	74 1c                	je     0x40cbd3
40cbb7:	83 f8 27             	cmp    $0x27,%eax
40cbba:	74 34                	je     0x40cbf0
40cbbc:	83 f8 3b             	cmp    $0x3b,%eax
40cbbf:	74 24                	je     0x40cbe5
40cbc1:	83 c7 02             	add    $0x2,%edi
40cbc4:	eb e4                	jmp    0x40cbaa
40cbc6:	85 f6                	test   %esi,%esi
40cbc8:	75 4a                	jne    0x40cc14
40cbca:	b0 01                	mov    $0x1,%al
40cbcc:	5f                   	pop    %edi
40cbcd:	5e                   	pop    %esi
40cbce:	5b                   	pop    %ebx
40cbcf:	5d                   	pop    %ebp
40cbd0:	c2 04 00             	ret    $0x4
40cbd3:	83 fe 02             	cmp    $0x2,%esi
40cbd6:	74 09                	je     0x40cbe1
40cbd8:	85 f6                	test   %esi,%esi
40cbda:	75 e5                	jne    0x40cbc1
40cbdc:	6a 02                	push   $0x2
40cbde:	5e                   	pop    %esi
40cbdf:	eb e0                	jmp    0x40cbc1
40cbe1:	8b f3                	mov    %ebx,%esi
40cbe3:	eb dc                	jmp    0x40cbc1
40cbe5:	85 f6                	test   %esi,%esi
40cbe7:	75 34                	jne    0x40cc1d
40cbe9:	33 c9                	xor    %ecx,%ecx
40cbeb:	66 89 0f             	mov    %cx,(%edi)
40cbee:	eb da                	jmp    0x40cbca
40cbf0:	83 fe 01             	cmp    $0x1,%esi
40cbf3:	74 ec                	je     0x40cbe1
40cbf5:	85 f6                	test   %esi,%esi
40cbf7:	75 c8                	jne    0x40cbc1
40cbf9:	46                   	inc    %esi
40cbfa:	eb c5                	jmp    0x40cbc1
40cbfc:	6a 08                	push   $0x8
40cbfe:	68 b4 dc 49 00       	push   $0x49dcb4
40cc03:	57                   	push   %edi
40cc04:	e8 52 4c 01 00       	call   0x42185b
40cc09:	83 c4 0c             	add    $0xc,%esp
40cc0c:	85 c0                	test   %eax,%eax
40cc0e:	74 9a                	je     0x40cbaa
40cc10:	6a 03                	push   $0x3
40cc12:	eb ca                	jmp    0x40cbde
40cc14:	83 fe 03             	cmp    $0x3,%esi
40cc17:	74 b1                	je     0x40cbca
40cc19:	32 c0                	xor    %al,%al
40cc1b:	eb af                	jmp    0x40cbcc
40cc1d:	83 fe 03             	cmp    $0x3,%esi
40cc20:	74 c7                	je     0x40cbe9
40cc22:	eb 9d                	jmp    0x40cbc1
40cc24:	55                   	push   %ebp
40cc25:	8b ec                	mov    %esp,%ebp
40cc27:	83 ec 2c             	sub    $0x2c,%esp
40cc2a:	53                   	push   %ebx
40cc2b:	56                   	push   %esi
40cc2c:	57                   	push   %edi
40cc2d:	68 00 20 00 00       	push   $0x2000
40cc32:	8b f9                	mov    %ecx,%edi
40cc34:	e8 b1 28 01 00       	call   0x41f4ea
40cc39:	59                   	pop    %ecx
40cc3a:	50                   	push   %eax
40cc3b:	8d 4d f8             	lea    -0x8(%ebp),%ecx
40cc3e:	e8 74 7b ff ff       	call   0x4047b7
40cc43:	8b 75 08             	mov    0x8(%ebp),%esi
40cc46:	66 83 3e 23          	cmpw   $0x23,(%esi)
40cc4a:	74 14                	je     0x40cc60
40cc4c:	6a 03                	push   $0x3
40cc4e:	5b                   	pop    %ebx
40cc4f:	8d 4d f8             	lea    -0x8(%ebp),%ecx
40cc52:	e8 8b 7b ff ff       	call   0x4047e2
40cc57:	5f                   	pop    %edi
40cc58:	5e                   	pop    %esi
40cc59:	8b c3                	mov    %ebx,%eax
40cc5b:	5b                   	pop    %ebx
40cc5c:	c9                   	leave
40cc5d:	c2 10 00             	ret    $0x10
40cc60:	6a 0f                	push   $0xf
40cc62:	68 c8 dc 49 00       	push   $0x49dcc8
40cc67:	56                   	push   %esi
40cc68:	e8 ee 4b 01 00       	call   0x42185b
40cc6d:	83 c4 0c             	add    $0xc,%esp
40cc70:	85 c0                	test   %eax,%eax
40cc72:	0f 84 31 01 00 00    	je     0x40cda9
40cc78:	6a 0b                	push   $0xb
40cc7a:	68 e8 dc 49 00       	push   $0x49dce8
40cc7f:	56                   	push   %esi
40cc80:	e8 d6 4b 01 00       	call   0x42185b
40cc85:	83 c4 0c             	add    $0xc,%esp
40cc88:	85 c0                	test   %eax,%eax
40cc8a:	0f 84 d1 61 06 00    	je     0x472e61
40cc90:	6a 0d                	push   $0xd
40cc92:	68 00 dd 49 00       	push   $0x49dd00
40cc97:	56                   	push   %esi
40cc98:	e8 be 4b 01 00       	call   0x42185b
40cc9d:	83 c4 0c             	add    $0xc,%esp
40cca0:	85 c0                	test   %eax,%eax
40cca2:	0f 84 c3 61 06 00    	je     0x472e6b
40cca8:	6a 16                	push   $0x16
40ccaa:	68 1c dd 49 00       	push   $0x49dd1c
40ccaf:	56                   	push   %esi
40ccb0:	e8 a6 4b 01 00       	call   0x42185b
40ccb5:	83 c4 0c             	add    $0xc,%esp
40ccb8:	85 c0                	test   %eax,%eax
40ccba:	0f 84 b6 61 06 00    	je     0x472e76
40ccc0:	6a 0d                	push   $0xd
40ccc2:	68 4c dd 49 00       	push   $0x49dd4c
40ccc7:	56                   	push   %esi
40ccc8:	e8 8e 4b 01 00       	call   0x42185b
40cccd:	83 c4 0c             	add    $0xc,%esp
40ccd0:	85 c0                	test   %eax,%eax
40ccd2:	0f 84 21 62 06 00    	je     0x472ef9
40ccd8:	6a 08                	push   $0x8
40ccda:	68 b4 dc 49 00       	push   $0x49dcb4
40ccdf:	56                   	push   %esi
40cce0:	e8 76 4b 01 00       	call   0x42185b
40cce5:	83 c4 0c             	add    $0xc,%esp
40cce8:	85 c0                	test   %eax,%eax
40ccea:	0f 84 4b 62 06 00    	je     0x472f3b
40ccf0:	6a 0f                	push   $0xf
40ccf2:	68 68 dd 49 00       	push   $0x49dd68
40ccf7:	56                   	push   %esi
40ccf8:	e8 5e 4b 01 00       	call   0x42185b
40ccfd:	83 c4 0c             	add    $0xc,%esp
40cd00:	85 c0                	test   %eax,%eax
40cd02:	74 18                	je     0x40cd1c
40cd04:	6a 03                	push   $0x3
40cd06:	68 88 dd 49 00       	push   $0x49dd88
40cd0b:	56                   	push   %esi
40cd0c:	e8 4a 4b 01 00       	call   0x42185b
40cd11:	83 c4 0c             	add    $0xc,%esp
40cd14:	85 c0                	test   %eax,%eax
40cd16:	0f 85 8d 00 00 00    	jne    0x40cda9
40cd1c:	33 db                	xor    %ebx,%ebx
40cd1e:	43                   	inc    %ebx
40cd1f:	89 5d 08             	mov    %ebx,0x8(%ebp)
40cd22:	51                   	push   %ecx
40cd23:	8b 4d 14             	mov    0x14(%ebp),%ecx
40cd26:	56                   	push   %esi
40cd27:	e8 0b e6 ff ff       	call   0x40b337
40cd2c:	84 c0                	test   %al,%al
40cd2e:	0f 84 74 62 06 00    	je     0x472fa8
40cd34:	8b 45 10             	mov    0x10(%ebp),%eax
40cd37:	56                   	push   %esi
40cd38:	ff 00                	incl   (%eax)
40cd3a:	e8 1b fe ff ff       	call   0x40cb5a
40cd3f:	56                   	push   %esi
40cd40:	e8 13 f5 00 00       	call   0x41c258
40cd45:	6a 0f                	push   $0xf
40cd47:	68 68 dd 49 00       	push   $0x49dd68
40cd4c:	56                   	push   %esi
40cd4d:	e8 09 4b 01 00       	call   0x42185b
40cd52:	83 c4 0c             	add    $0xc,%esp
40cd55:	85 c0                	test   %eax,%eax
40cd57:	74 58                	je     0x40cdb1
40cd59:	6a 03                	push   $0x3
40cd5b:	68 88 dd 49 00       	push   $0x49dd88
40cd60:	56                   	push   %esi
40cd61:	e8 f5 4a 01 00       	call   0x42185b
40cd66:	83 c4 0c             	add    $0xc,%esp
40cd69:	85 c0                	test   %eax,%eax
40cd6b:	74 44                	je     0x40cdb1
40cd6d:	6a 0d                	push   $0xd
40cd6f:	68 90 dd 49 00       	push   $0x49dd90
40cd74:	56                   	push   %esi
40cd75:	e8 e1 4a 01 00       	call   0x42185b
40cd7a:	83 c4 0c             	add    $0xc,%esp
40cd7d:	85 c0                	test   %eax,%eax
40cd7f:	74 14                	je     0x40cd95
40cd81:	6a 03                	push   $0x3
40cd83:	68 ac dd 49 00       	push   $0x49ddac
40cd88:	56                   	push   %esi
40cd89:	e8 cd 4a 01 00       	call   0x42185b
40cd8e:	83 c4 0c             	add    $0xc,%esp
40cd91:	85 c0                	test   %eax,%eax
40cd93:	75 8d                	jne    0x40cd22
40cd95:	8b 45 08             	mov    0x8(%ebp),%eax
40cd98:	48                   	dec    %eax
40cd99:	89 45 08             	mov    %eax,0x8(%ebp)
40cd9c:	85 c0                	test   %eax,%eax
40cd9e:	0f 8e ab fe ff ff    	jle    0x40cc4f
40cda4:	e9 79 ff ff ff       	jmp    0x40cd22
40cda9:	33 db                	xor    %ebx,%ebx
40cdab:	43                   	inc    %ebx
40cdac:	e9 9e fe ff ff       	jmp    0x40cc4f
40cdb1:	ff 45 08             	incl   0x8(%ebp)
40cdb4:	e9 69 ff ff ff       	jmp    0x40cd22
40cdb9:	55                   	push   %ebp
40cdba:	8b ec                	mov    %esp,%ebp
40cdbc:	56                   	push   %esi
40cdbd:	8b f1                	mov    %ecx,%esi
40cdbf:	83 7e 0c 04          	cmpl   $0x4,0xc(%esi)
40cdc3:	74 36                	je     0x40cdfb
40cdc5:	e8 56 5e 00 00       	call   0x412c20
40cdca:	6a 10                	push   $0x10
40cdcc:	c7 46 0c 04 00 00 00 	movl   $0x4,0xc(%esi)
40cdd3:	e8 12 27 01 00       	call   0x41f4ea
40cdd8:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
40cddc:	59                   	pop    %ecx
40cddd:	0f 84 3e 78 06 00    	je     0x474621
40cde3:	85 c0                	test   %eax,%eax
40cde5:	74 2e                	je     0x40ce15
40cde7:	ff 75 08             	push   0x8(%ebp)
40cdea:	8b c8                	mov    %eax,%ecx
40cdec:	e8 28 00 00 00       	call   0x40ce19
40cdf1:	89 46 08             	mov    %eax,0x8(%esi)
40cdf4:	8b c6                	mov    %esi,%eax
40cdf6:	5e                   	pop    %esi
40cdf7:	5d                   	pop    %ebp
40cdf8:	c2 04 00             	ret    $0x4
40cdfb:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
40cdff:	8b 4e 08             	mov    0x8(%esi),%ecx
40ce02:	74 0a                	je     0x40ce0e
40ce04:	ff 75 08             	push   0x8(%ebp)
40ce07:	e8 57 9c ff ff       	call   0x406a63
40ce0c:	eb e6                	jmp    0x40cdf4
40ce0e:	e8 bb ee ff ff       	call   0x40bcce