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
40ce13:	eb df                	jmp    0x40cdf4
40ce15:	33 c0                	xor    %eax,%eax
40ce17:	eb d8                	jmp    0x40cdf1
40ce19:	55                   	push   %ebp
40ce1a:	8b ec                	mov    %esp,%ebp
40ce1c:	56                   	push   %esi
40ce1d:	57                   	push   %edi
40ce1e:	ff 75 08             	push   0x8(%ebp)
40ce21:	8b f1                	mov    %ecx,%esi
40ce23:	e8 b3 3e 01 00       	call   0x420cdb
40ce28:	8d 78 01             	lea    0x1(%eax),%edi
40ce2b:	59                   	pop    %ecx
40ce2c:	89 46 04             	mov    %eax,0x4(%esi)
40ce2f:	85 ff                	test   %edi,%edi
40ce31:	74 4b                	je     0x40ce7e
40ce33:	8d 47 07             	lea    0x7(%edi),%eax
40ce36:	83 e0 f8             	and    $0xfffffff8,%eax
40ce39:	33 c9                	xor    %ecx,%ecx
40ce3b:	6a 02                	push   $0x2
40ce3d:	5a                   	pop    %edx
40ce3e:	89 46 08             	mov    %eax,0x8(%esi)
40ce41:	f7 e2                	mul    %edx
40ce43:	0f 90 c1             	seto   %cl
40ce46:	f7 d9                	neg    %ecx
40ce48:	0b c8                	or     %eax,%ecx
40ce4a:	51                   	push   %ecx
40ce4b:	e8 25 20 01 00       	call   0x41ee75
40ce50:	8d 0c 3f             	lea    (%edi,%edi,1),%ecx
40ce53:	51                   	push   %ecx
40ce54:	ff 75 08             	push   0x8(%ebp)
40ce57:	89 06                	mov    %eax,(%esi)
40ce59:	50                   	push   %eax
40ce5a:	e8 21 20 01 00       	call   0x41ee80
40ce5f:	6a 04                	push   $0x4
40ce61:	e8 84 26 01 00       	call   0x41f4ea
40ce66:	83 c4 14             	add    $0x14,%esp
40ce69:	85 c0                	test   %eax,%eax
40ce6b:	74 16                	je     0x40ce83
40ce6d:	c7 00 01 00 00 00    	movl   $0x1,(%eax)
40ce73:	89 46 0c             	mov    %eax,0xc(%esi)
40ce76:	5f                   	pop    %edi
40ce77:	8b c6                	mov    %esi,%eax
40ce79:	5e                   	pop    %esi
40ce7a:	5d                   	pop    %ebp
40ce7b:	c2 04 00             	ret    $0x4
40ce7e:	6a 08                	push   $0x8
40ce80:	58                   	pop    %eax
40ce81:	eb b6                	jmp    0x40ce39
40ce83:	33 c0                	xor    %eax,%eax
40ce85:	eb ec                	jmp    0x40ce73
40ce87:	55                   	push   %ebp
40ce88:	8b ec                	mov    %esp,%ebp
40ce8a:	83 ec 28             	sub    $0x28,%esp
40ce8d:	53                   	push   %ebx
40ce8e:	56                   	push   %esi
40ce8f:	57                   	push   %edi
40ce90:	8b d9                	mov    %ecx,%ebx
40ce92:	6a 08                	push   $0x8
40ce94:	59                   	pop    %ecx
40ce95:	be 70 ec 4a 00       	mov    $0x4aec70,%esi
40ce9a:	8d 7d d8             	lea    -0x28(%ebp),%edi
40ce9d:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
40ce9f:	8b c2                	mov    %edx,%eax
40cea1:	8b 55 0c             	mov    0xc(%ebp),%edx
40cea4:	8d 48 ff             	lea    -0x1(%eax),%ecx
40cea7:	66 a5                	movsw  %ds:(%esi),%es:(%edi)
40cea9:	8b 75 08             	mov    0x8(%ebp),%esi
40ceac:	89 45 fc             	mov    %eax,-0x4(%ebp)
40ceaf:	85 c9                	test   %ecx,%ecx
40ceb1:	78 1b                	js     0x40cece
40ceb3:	8b c6                	mov    %esi,%eax
40ceb5:	83 e0 0f             	and    $0xf,%eax
40ceb8:	0f ac d6 04          	shrd   $0x4,%edx,%esi
40cebc:	66 8b 44 45 d8       	mov    -0x28(%ebp,%eax,2),%ax
40cec1:	66 89 04 4b          	mov    %ax,(%ebx,%ecx,2)
40cec5:	c1 ea 04             	shr    $0x4,%edx
40cec8:	49                   	dec    %ecx
40cec9:	79 e8                	jns    0x40ceb3
40cecb:	8b 45 fc             	mov    -0x4(%ebp),%eax
40cece:	33 c9                	xor    %ecx,%ecx
40ced0:	5f                   	pop    %edi
40ced1:	0b f2                	or     %edx,%esi
40ced3:	5e                   	pop    %esi
40ced4:	66 89 0c 43          	mov    %cx,(%ebx,%eax,2)
40ced8:	5b                   	pop    %ebx
40ced9:	75 04                	jne    0x40cedf
40cedb:	b0 01                	mov    $0x1,%al
40cedd:	c9                   	leave
40cede:	c3                   	ret
40cedf:	32 c0                	xor    %al,%al
40cee1:	c9                   	leave
40cee2:	c3                   	ret
40cee3:	55                   	push   %ebp
40cee4:	8b ec                	mov    %esp,%ebp
40cee6:	83 ec 10             	sub    $0x10,%esp
40cee9:	56                   	push   %esi
40ceea:	57                   	push   %edi
40ceeb:	8b 7d 08             	mov    0x8(%ebp),%edi
40ceee:	33 f6                	xor    %esi,%esi
40cef0:	83 7f 08 01          	cmpl   $0x1,0x8(%edi)
40cef4:	0f 87 25 95 06 00    	ja     0x47641f
40cefa:	85 f6                	test   %esi,%esi
40cefc:	0f 85 42 95 06 00    	jne    0x476444
40cf02:	8b 47 04             	mov    0x4(%edi),%eax
40cf05:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40cf08:	ff 30                	push   (%eax)
40cf0a:	e8 9f 0d 00 00       	call   0x40dcae
40cf0f:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40cf12:	e8 08 00 00 00       	call   0x40cf1f
40cf17:	5f                   	pop    %edi
40cf18:	33 c0                	xor    %eax,%eax
40cf1a:	5e                   	pop    %esi
40cf1b:	c9                   	leave
40cf1c:	c2 08 00             	ret    $0x8
40cf1f:	55                   	push   %ebp
40cf20:	8b ec                	mov    %esp,%ebp
40cf22:	51                   	push   %ecx
40cf23:	56                   	push   %esi
40cf24:	8b f1                	mov    %ecx,%esi
40cf26:	83 7e 0c 01          	cmpl   $0x1,0xc(%esi)
40cf2a:	74 60                	je     0x40cf8c
40cf2c:	83 7e 0c 02          	cmpl   $0x2,0xc(%esi)
40cf30:	74 5a                	je     0x40cf8c
40cf32:	53                   	push   %ebx
40cf33:	57                   	push   %edi
40cf34:	e8 5a 00 00 00       	call   0x40cf93
40cf39:	33 db                	xor    %ebx,%ebx
40cf3b:	83 7e 0c 04          	cmpl   $0x4,0xc(%esi)
40cf3f:	8b f8                	mov    %eax,%edi
40cf41:	89 55 fc             	mov    %edx,-0x4(%ebp)
40cf44:	75 0f                	jne    0x40cf55
40cf46:	8b ce                	mov    %esi,%ecx
40cf48:	e8 ba 00 00 00       	call   0x40d007
40cf4d:	84 c0                	test   %al,%al
40cf4f:	0f 85 fa 7a 06 00    	jne    0x474a4f
40cf55:	83 fa ff             	cmp    $0xffffffff,%edx
40cf58:	7c 35                	jl     0x40cf8f
40cf5a:	7f 08                	jg     0x40cf64
40cf5c:	81 ff 00 00 00 80    	cmp    $0x80000000,%edi
40cf62:	72 2b                	jb     0x40cf8f
40cf64:	3b d3                	cmp    %ebx,%edx
40cf66:	7c 0a                	jl     0x40cf72
40cf68:	7f 25                	jg     0x40cf8f
40cf6a:	81 ff ff ff ff 7f    	cmp    $0x7fffffff,%edi
40cf70:	77 1d                	ja     0x40cf8f
40cf72:	8b ce                	mov    %esi,%ecx
40cf74:	e8 a7 5c 00 00       	call   0x412c20
40cf79:	89 3e                	mov    %edi,(%esi)
40cf7b:	84 db                	test   %bl,%bl
40cf7d:	0f 85 e2 7a 06 00    	jne    0x474a65
40cf83:	c7 46 0c 01 00 00 00 	movl   $0x1,0xc(%esi)
40cf8a:	5f                   	pop    %edi
40cf8b:	5b                   	pop    %ebx
40cf8c:	5e                   	pop    %esi
40cf8d:	c9                   	leave
40cf8e:	c3                   	ret
40cf8f:	b3 01                	mov    $0x1,%bl
40cf91:	eb df                	jmp    0x40cf72
40cf93:	55                   	push   %ebp
40cf94:	8b ec                	mov    %esp,%ebp
40cf96:	51                   	push   %ecx
40cf97:	51                   	push   %ecx
40cf98:	56                   	push   %esi
40cf99:	8b f1                	mov    %ecx,%esi
40cf9b:	8b 46 0c             	mov    0xc(%esi),%eax
40cf9e:	48                   	dec    %eax
40cf9f:	74 3c                	je     0x40cfdd
40cfa1:	48                   	dec    %eax
40cfa2:	74 3e                	je     0x40cfe2
40cfa4:	48                   	dec    %eax
40cfa5:	74 23                	je     0x40cfca
40cfa7:	48                   	dec    %eax
40cfa8:	0f 85 5b 7e 06 00    	jne    0x474e09
40cfae:	8b 46 08             	mov    0x8(%esi),%eax
40cfb1:	8b 10                	mov    (%eax),%edx