40c867:	e8 d6 fa ff ff       	call   0x40c342
40c86c:	59                   	pop    %ecx
40c86d:	85 c0                	test   %eax,%eax
40c86f:	74 16                	je     0x40c887
40c871:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40c875:	ff d0                	call   *%eax
40c877:	eb 07                	jmp    0x40c880
40c879:	33 c0                	xor    %eax,%eax
40c87b:	40                   	inc    %eax
40c87c:	c3                   	ret
40c87d:	8b 65 e8             	mov    -0x18(%ebp),%esp
40c880:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40c887:	e9 7d ff ff ff       	jmp    0x40c809
40c88c:	68 09 c8 40 00       	push   $0x40c809
40c891:	e8 40 fa ff ff       	call   0x40c2d6
40c896:	59                   	pop    %ecx
40c897:	a3 58 dd 41 00       	mov    %eax,0x41dd58
40c89c:	c3                   	ret
40c89d:	cc                   	int3
40c89e:	cc                   	int3
40c89f:	cc                   	int3
40c8a0:	55                   	push   %ebp
40c8a1:	8b ec                	mov    %esp,%ebp
40c8a3:	83 ec 04             	sub    $0x4,%esp
40c8a6:	53                   	push   %ebx
40c8a7:	51                   	push   %ecx
40c8a8:	8b 45 0c             	mov    0xc(%ebp),%eax
40c8ab:	83 c0 0c             	add    $0xc,%eax
40c8ae:	89 45 fc             	mov    %eax,-0x4(%ebp)
40c8b1:	8b 45 08             	mov    0x8(%ebp),%eax
40c8b4:	55                   	push   %ebp
40c8b5:	ff 75 10             	push   0x10(%ebp)
40c8b8:	8b 4d 10             	mov    0x10(%ebp),%ecx
40c8bb:	8b 6d fc             	mov    -0x4(%ebp),%ebp
40c8be:	e8 6d 77 00 00       	call   0x414030
40c8c3:	56                   	push   %esi
40c8c4:	57                   	push   %edi
40c8c5:	ff d0                	call   *%eax
40c8c7:	5f                   	pop    %edi
40c8c8:	5e                   	pop    %esi
40c8c9:	8b dd                	mov    %ebp,%ebx
40c8cb:	5d                   	pop    %ebp
40c8cc:	8b 4d 10             	mov    0x10(%ebp),%ecx
40c8cf:	55                   	push   %ebp
40c8d0:	8b eb                	mov    %ebx,%ebp
40c8d2:	81 f9 00 01 00 00    	cmp    $0x100,%ecx
40c8d8:	75 05                	jne    0x40c8df
40c8da:	b9 02 00 00 00       	mov    $0x2,%ecx
40c8df:	51                   	push   %ecx
40c8e0:	e8 4b 77 00 00       	call   0x414030
40c8e5:	5d                   	pop    %ebp
40c8e6:	59                   	pop    %ecx
40c8e7:	5b                   	pop    %ebx
40c8e8:	c9                   	leave
40c8e9:	c2 0c 00             	ret    $0xc
40c8ec:	55                   	push   %ebp
40c8ed:	8b ec                	mov    %esp,%ebp
40c8ef:	51                   	push   %ecx
40c8f0:	51                   	push   %ecx
40c8f1:	56                   	push   %esi
40c8f2:	8d 45 fc             	lea    -0x4(%ebp),%eax
40c8f5:	33 f6                	xor    %esi,%esi
40c8f7:	50                   	push   %eax
40c8f8:	89 75 fc             	mov    %esi,-0x4(%ebp)
40c8fb:	89 75 f8             	mov    %esi,-0x8(%ebp)
40c8fe:	e8 ec 0f 00 00       	call   0x40d8ef
40c903:	85 c0                	test   %eax,%eax
40c905:	59                   	pop    %ecx
40c906:	74 0d                	je     0x40c915
40c908:	56                   	push   %esi
40c909:	56                   	push   %esi
40c90a:	56                   	push   %esi
40c90b:	56                   	push   %esi
40c90c:	56                   	push   %esi
40c90d:	e8 42 ac ff ff       	call   0x407554
40c912:	83 c4 14             	add    $0x14,%esp
40c915:	8d 45 f8             	lea    -0x8(%ebp),%eax
40c918:	50                   	push   %eax
40c919:	e8 08 10 00 00       	call   0x40d926
40c91e:	85 c0                	test   %eax,%eax
40c920:	59                   	pop    %ecx
40c921:	74 0d                	je     0x40c930
40c923:	56                   	push   %esi
40c924:	56                   	push   %esi
40c925:	56                   	push   %esi
40c926:	56                   	push   %esi
40c927:	56                   	push   %esi
40c928:	e8 27 ac ff ff       	call   0x407554
40c92d:	83 c4 14             	add    $0x14,%esp
40c930:	83 7d fc 02          	cmpl   $0x2,-0x4(%ebp)
40c934:	5e                   	pop    %esi
40c935:	75 0b                	jne    0x40c942
40c937:	83 7d f8 05          	cmpl   $0x5,-0x8(%ebp)
40c93b:	72 05                	jb     0x40c942
40c93d:	33 c0                	xor    %eax,%eax
40c93f:	40                   	inc    %eax
40c940:	c9                   	leave
40c941:	c3                   	ret
40c942:	6a 03                	push   $0x3
40c944:	58                   	pop    %eax
40c945:	c9                   	leave
40c946:	c3                   	ret
40c947:	33 c0                	xor    %eax,%eax
40c949:	39 44 24 04          	cmp    %eax,0x4(%esp)
40c94d:	6a 00                	push   $0x0
40c94f:	0f 94 c0             	sete   %al
40c952:	68 00 10 00 00       	push   $0x1000
40c957:	50                   	push   %eax
40c958:	ff 15 0c 71 41 00    	call   *0x41710c
40c95e:	85 c0                	test   %eax,%eax
40c960:	a3 5c dd 41 00       	mov    %eax,0x41dd5c
40c965:	75 03                	jne    0x40c96a
40c967:	33 c0                	xor    %eax,%eax
40c969:	c3                   	ret
40c96a:	e8 7d ff ff ff       	call   0x40c8ec
40c96f:	83 f8 03             	cmp    $0x3,%eax
40c972:	a3 f0 e5 41 00       	mov    %eax,0x41e5f0
40c977:	75 24                	jne    0x40c99d
40c979:	68 f8 03 00 00       	push   $0x3f8
40c97e:	e8 c5 01 00 00       	call   0x40cb48
40c983:	85 c0                	test   %eax,%eax
40c985:	59                   	pop    %ecx
40c986:	75 15                	jne    0x40c99d
40c988:	ff 35 5c dd 41 00    	push   0x41dd5c
40c98e:	ff 15 08 71 41 00    	call   *0x417108
40c994:	83 25 5c dd 41 00 00 	andl   $0x0,0x41dd5c
40c99b:	eb ca                	jmp    0x40c967
40c99d:	33 c0                	xor    %eax,%eax
40c99f:	40                   	inc    %eax
40c9a0:	c3                   	ret
40c9a1:	56                   	push   %esi
40c9a2:	57                   	push   %edi
40c9a3:	33 f6                	xor    %esi,%esi
40c9a5:	bf 60 dd 41 00       	mov    $0x41dd60,%edi
40c9aa:	83 3c f5 8c c9 41 00 	cmpl   $0x1,0x41c98c(,%esi,8)
40c9b1:	01
40c9b2:	75 1e                	jne    0x40c9d2
40c9b4:	8d 04 f5 88 c9 41 00 	lea    0x41c988(,%esi,8),%eax
40c9bb:	89 38                	mov    %edi,(%eax)
40c9bd:	68 a0 0f 00 00       	push   $0xfa0
40c9c2:	ff 30                	push   (%eax)
40c9c4:	83 c7 18             	add    $0x18,%edi
40c9c7:	e8 a9 76 00 00       	call   0x414075
40c9cc:	85 c0                	test   %eax,%eax
40c9ce:	59                   	pop    %ecx
40c9cf:	59                   	pop    %ecx
40c9d0:	74 0c                	je     0x40c9de
40c9d2:	46                   	inc    %esi
40c9d3:	83 fe 24             	cmp    $0x24,%esi
40c9d6:	7c d2                	jl     0x40c9aa
40c9d8:	33 c0                	xor    %eax,%eax
40c9da:	40                   	inc    %eax
40c9db:	5f                   	pop    %edi
40c9dc:	5e                   	pop    %esi
40c9dd:	c3                   	ret
40c9de:	83 24 f5 88 c9 41 00 	andl   $0x0,0x41c988(,%esi,8)
40c9e5:	00
40c9e6:	33 c0                	xor    %eax,%eax
40c9e8:	eb f1                	jmp    0x40c9db
40c9ea:	53                   	push   %ebx
40c9eb:	8b 1d 84 70 41 00    	mov    0x417084,%ebx
40c9f1:	56                   	push   %esi
40c9f2:	be 88 c9 41 00       	mov    $0x41c988,%esi
40c9f7:	57                   	push   %edi
40c9f8:	8b 3e                	mov    (%esi),%edi
40c9fa:	85 ff                	test   %edi,%edi
40c9fc:	74 13                	je     0x40ca11
40c9fe:	83 7e 04 01          	cmpl   $0x1,0x4(%esi)
40ca02:	74 0d                	je     0x40ca11
40ca04:	57                   	push   %edi
40ca05:	ff d3                	call   *%ebx
40ca07:	57                   	push   %edi
40ca08:	e8 46 9a ff ff       	call   0x406453
40ca0d:	83 26 00             	andl   $0x0,(%esi)
40ca10:	59                   	pop    %ecx
40ca11:	83 c6 08             	add    $0x8,%esi
40ca14:	81 fe a8 ca 41 00    	cmp    $0x41caa8,%esi
40ca1a:	7c dc                	jl     0x40c9f8
40ca1c:	be 88 c9 41 00       	mov    $0x41c988,%esi
40ca21:	5f                   	pop    %edi
40ca22:	8b 06                	mov    (%esi),%eax
40ca24:	85 c0                	test   %eax,%eax
40ca26:	74 09                	je     0x40ca31
40ca28:	83 7e 04 01          	cmpl   $0x1,0x4(%esi)
40ca2c:	75 03                	jne    0x40ca31
40ca2e:	50                   	push   %eax
40ca2f:	ff d3                	call   *%ebx
40ca31:	83 c6 08             	add    $0x8,%esi
40ca34:	81 fe a8 ca 41 00    	cmp    $0x41caa8,%esi
40ca3a:	7c e6                	jl     0x40ca22
40ca3c:	5e                   	pop    %esi
40ca3d:	5b                   	pop    %ebx
40ca3e:	c3                   	ret
40ca3f:	55                   	push   %ebp
40ca40:	8b ec                	mov    %esp,%ebp
40ca42:	8b 45 08             	mov    0x8(%ebp),%eax
40ca45:	ff 34 c5 88 c9 41 00 	push   0x41c988(,%eax,8)
40ca4c:	ff 15 8c 70 41 00    	call   *0x41708c
40ca52:	5d                   	pop    %ebp
40ca53:	c3                   	ret
40ca54:	6a 0c                	push   $0xc
40ca56:	68 98 ac 41 00       	push   $0x41ac98
40ca5b:	e8 e8 0b 00 00       	call   0x40d648
40ca60:	33 ff                	xor    %edi,%edi
40ca62:	47                   	inc    %edi
40ca63:	89 7d e4             	mov    %edi,-0x1c(%ebp)
40ca66:	33 db                	xor    %ebx,%ebx
40ca68:	39 1d 5c dd 41 00    	cmp    %ebx,0x41dd5c
40ca6e:	75 18                	jne    0x40ca88
40ca70:	e8 79 12 00 00       	call   0x40dcee
40ca75:	6a 1e                	push   $0x1e
40ca77:	e8 d2 10 00 00       	call   0x40db4e
40ca7c:	68 ff 00 00 00       	push   $0xff
40ca81:	e8 0a 0e 00 00       	call   0x40d890
40ca86:	59                   	pop    %ecx
40ca87:	59                   	pop    %ecx
40ca88:	8b 75 08             	mov    0x8(%ebp),%esi
40ca8b:	8d 34 f5 88 c9 41 00 	lea    0x41c988(,%esi,8),%esi
40ca92:	39 1e                	cmp    %ebx,(%esi)
40ca94:	74 04                	je     0x40ca9a
40ca96:	8b c7                	mov    %edi,%eax
40ca98:	eb 6e                	jmp    0x40cb08
40ca9a:	6a 18                	push   $0x18
40ca9c:	e8 4b c8 ff ff       	call   0x4092ec
40caa1:	59                   	pop    %ecx
40caa2:	8b f8                	mov    %eax,%edi
40caa4:	3b fb                	cmp    %ebx,%edi
40caa6:	75 0f                	jne    0x40cab7
40caa8:	e8 4d c9 ff ff       	call   0x4093fa
40caad:	c7 00 0c 00 00 00    	movl   $0xc,(%eax)
40cab3:	33 c0                	xor    %eax,%eax
40cab5:	eb 51                	jmp    0x40cb08
40cab7:	6a 0a                	push   $0xa
40cab9:	e8 59 00 00 00       	call   0x40cb17
40cabe:	59                   	pop    %ecx
40cabf:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40cac2:	39 1e                	cmp    %ebx,(%esi)
40cac4:	75 2c                	jne    0x40caf2
40cac6:	68 a0 0f 00 00       	push   $0xfa0
40cacb:	57                   	push   %edi
40cacc:	e8 a4 75 00 00       	call   0x414075
40cad1:	59                   	pop    %ecx
40cad2:	59                   	pop    %ecx
40cad3:	85 c0                	test   %eax,%eax
40cad5:	75 17                	jne    0x40caee
40cad7:	57                   	push   %edi
40cad8:	e8 76 99 ff ff       	call   0x406453
40cadd:	59                   	pop    %ecx
40cade:	e8 17 c9 ff ff       	call   0x4093fa
40cae3:	c7 00 0c 00 00 00    	movl   $0xc,(%eax)
40cae9:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
40caec:	eb 0b                	jmp    0x40caf9
40caee:	89 3e                	mov    %edi,(%esi)
40caf0:	eb 07                	jmp    0x40caf9
40caf2:	57                   	push   %edi
40caf3:	e8 5b 99 ff ff       	call   0x406453
40caf8:	59                   	pop    %ecx
40caf9:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40cb00:	e8 09 00 00 00       	call   0x40cb0e
40cb05:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40cb08:	e8 80 0b 00 00       	call   0x40d68d
40cb0d:	c3                   	ret
40cb0e:	6a 0a                	push   $0xa
40cb10:	e8 2a ff ff ff       	call   0x40ca3f
40cb15:	59                   	pop    %ecx
40cb16:	c3                   	ret
40cb17:	55                   	push   %ebp
40cb18:	8b ec                	mov    %esp,%ebp
40cb1a:	8b 45 08             	mov    0x8(%ebp),%eax
40cb1d:	56                   	push   %esi
40cb1e:	8d 34 c5 88 c9 41 00 	lea    0x41c988(,%eax,8),%esi
40cb25:	83 3e 00             	cmpl   $0x0,(%esi)
40cb28:	75 13                	jne    0x40cb3d
40cb2a:	50                   	push   %eax
40cb2b:	e8 24 ff ff ff       	call   0x40ca54
40cb30:	85 c0                	test   %eax,%eax
40cb32:	59                   	pop    %ecx
40cb33:	75 08                	jne    0x40cb3d
40cb35:	6a 11                	push   $0x11
40cb37:	e8 0a 0d 00 00       	call   0x40d846
40cb3c:	59                   	pop    %ecx
40cb3d:	ff 36                	push   (%esi)
40cb3f:	ff 15 88 70 41 00    	call   *0x417088
40cb45:	5e                   	pop    %esi
40cb46:	5d                   	pop    %ebp
40cb47:	c3                   	ret
40cb48:	68 40 01 00 00       	push   $0x140
40cb4d:	6a 00                	push   $0x0
40cb4f:	ff 35 5c dd 41 00    	push   0x41dd5c
40cb55:	ff 15 c0 70 41 00    	call   *0x4170c0
40cb5b:	85 c0                	test   %eax,%eax
40cb5d:	a3 dc e5 41 00       	mov    %eax,0x41e5dc
40cb62:	75 01                	jne    0x40cb65
40cb64:	c3                   	ret
40cb65:	8b 4c 24 04          	mov    0x4(%esp),%ecx
40cb69:	83 25 b0 de 41 00 00 	andl   $0x0,0x41deb0
40cb70:	83 25 d8 e5 41 00 00 	andl   $0x0,0x41e5d8
40cb77:	a3 e4 e5 41 00       	mov    %eax,0x41e5e4
40cb7c:	33 c0                	xor    %eax,%eax
40cb7e:	89 0d e0 e5 41 00    	mov    %ecx,0x41e5e0
40cb84:	c7 05 e8 e5 41 00 10 	movl   $0x10,0x41e5e8
40cb8b:	00 00 00
40cb8e:	40                   	inc    %eax
40cb8f:	c3                   	ret
40cb90:	8b 0d d8 e5 41 00    	mov    0x41e5d8,%ecx
40cb96:	a1 dc e5 41 00       	mov    0x41e5dc,%eax
40cb9b:	6b c9 14             	imul   $0x14,%ecx,%ecx
40cb9e:	03 c8                	add    %eax,%ecx
40cba0:	eb 12                	jmp    0x40cbb4
40cba2:	8b 54 24 04          	mov    0x4(%esp),%edx
40cba6:	2b 50 0c             	sub    0xc(%eax),%edx
40cba9:	81 fa 00 00 10 00    	cmp    $0x100000,%edx
40cbaf:	72 09                	jb     0x40cbba
40cbb1:	83 c0 14             	add    $0x14,%eax
40cbb4:	3b c1                	cmp    %ecx,%eax
40cbb6:	72 ea                	jb     0x40cba2
40cbb8:	33 c0                	xor    %eax,%eax
40cbba:	c3                   	ret
40cbbb:	55                   	push   %ebp
40cbbc:	8b ec                	mov    %esp,%ebp
40cbbe:	83 ec 10             	sub    $0x10,%esp
40cbc1:	8b 4d 08             	mov    0x8(%ebp),%ecx
40cbc4:	8b 41 10             	mov    0x10(%ecx),%eax
40cbc7:	56                   	push   %esi
40cbc8:	8b 75 0c             	mov    0xc(%ebp),%esi
40cbcb:	57                   	push   %edi
40cbcc:	8b fe                	mov    %esi,%edi
40cbce:	2b 79 0c             	sub    0xc(%ecx),%edi
40cbd1:	83 c6 fc             	add    $0xfffffffc,%esi
40cbd4:	c1 ef 0f             	shr    $0xf,%edi
40cbd7:	8b cf                	mov    %edi,%ecx
40cbd9:	69 c9 04 02 00 00    	imul   $0x204,%ecx,%ecx
40cbdf:	8d 8c 01 44 01 00 00 	lea    0x144(%ecx,%eax,1),%ecx
40cbe6:	89 4d f0             	mov    %ecx,-0x10(%ebp)
40cbe9:	8b 0e                	mov    (%esi),%ecx
40cbeb:	49                   	dec    %ecx
40cbec:	f6 c1 01             	test   $0x1,%cl
40cbef:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40cbf2:	0f 85 d3 02 00 00    	jne    0x40cecb
40cbf8:	53                   	push   %ebx
40cbf9:	8d 1c 31             	lea    (%ecx,%esi,1),%ebx
40cbfc:	8b 13                	mov    (%ebx),%edx
40cbfe:	89 55 f4             	mov    %edx,-0xc(%ebp)
40cc01:	8b 56 fc             	mov    -0x4(%esi),%edx
40cc04:	89 55 f8             	mov    %edx,-0x8(%ebp)
40cc07:	8b 55 f4             	mov    -0xc(%ebp),%edx
40cc0a:	f6 c2 01             	test   $0x1,%dl
40cc0d:	89 5d 0c             	mov    %ebx,0xc(%ebp)
40cc10:	75 74                	jne    0x40cc86
40cc12:	c1 fa 04             	sar    $0x4,%edx