40a842:	8b 44 24 14          	mov    0x14(%esp),%eax
40a846:	8b 48 fc             	mov    -0x4(%eax),%ecx
40a849:	33 c8                	xor    %eax,%ecx
40a84b:	e8 54 75 ff ff       	call   0x401da4
40a850:	55                   	push   %ebp
40a851:	8b 68 10             	mov    0x10(%eax),%ebp
40a854:	8b 50 28             	mov    0x28(%eax),%edx
40a857:	52                   	push   %edx
40a858:	8b 50 24             	mov    0x24(%eax),%edx
40a85b:	52                   	push   %edx
40a85c:	e8 14 00 00 00       	call   0x40a875
40a861:	83 c4 08             	add    $0x8,%esp
40a864:	5d                   	pop    %ebp
40a865:	8b 44 24 08          	mov    0x8(%esp),%eax
40a869:	8b 54 24 10          	mov    0x10(%esp),%edx
40a86d:	89 02                	mov    %eax,(%edx)
40a86f:	b8 03 00 00 00       	mov    $0x3,%eax
40a874:	c3                   	ret
40a875:	53                   	push   %ebx
40a876:	56                   	push   %esi
40a877:	57                   	push   %edi
40a878:	8b 44 24 10          	mov    0x10(%esp),%eax
40a87c:	55                   	push   %ebp
40a87d:	50                   	push   %eax
40a87e:	6a fe                	push   $0xfffffffe
40a880:	68 30 a8 40 00       	push   $0x40a830
40a885:	64 ff 35 00 00 00 00 	push   %fs:0x0
40a88c:	a1 84 22 41 00       	mov    0x412284,%eax
40a891:	33 c4                	xor    %esp,%eax
40a893:	50                   	push   %eax
40a894:	8d 44 24 04          	lea    0x4(%esp),%eax
40a898:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
40a89e:	8b 44 24 28          	mov    0x28(%esp),%eax
40a8a2:	8b 58 08             	mov    0x8(%eax),%ebx
40a8a5:	8b 70 0c             	mov    0xc(%eax),%esi
40a8a8:	83 fe ff             	cmp    $0xffffffff,%esi
40a8ab:	74 3a                	je     0x40a8e7
40a8ad:	83 7c 24 2c ff       	cmpl   $0xffffffff,0x2c(%esp)
40a8b2:	74 06                	je     0x40a8ba
40a8b4:	3b 74 24 2c          	cmp    0x2c(%esp),%esi
40a8b8:	76 2d                	jbe    0x40a8e7
40a8ba:	8d 34 76             	lea    (%esi,%esi,2),%esi
40a8bd:	8b 0c b3             	mov    (%ebx,%esi,4),%ecx
40a8c0:	89 4c 24 0c          	mov    %ecx,0xc(%esp)
40a8c4:	89 48 0c             	mov    %ecx,0xc(%eax)
40a8c7:	83 7c b3 04 00       	cmpl   $0x0,0x4(%ebx,%esi,4)
40a8cc:	75 17                	jne    0x40a8e5
40a8ce:	68 01 01 00 00       	push   $0x101
40a8d3:	8b 44 b3 08          	mov    0x8(%ebx,%esi,4),%eax
40a8d7:	e8 49 00 00 00       	call   0x40a925
40a8dc:	8b 44 b3 08          	mov    0x8(%ebx,%esi,4),%eax
40a8e0:	e8 5f 00 00 00       	call   0x40a944
40a8e5:	eb b7                	jmp    0x40a89e
40a8e7:	8b 4c 24 04          	mov    0x4(%esp),%ecx
40a8eb:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40a8f2:	83 c4 18             	add    $0x18,%esp
40a8f5:	5f                   	pop    %edi
40a8f6:	5e                   	pop    %esi
40a8f7:	5b                   	pop    %ebx
40a8f8:	c3                   	ret
40a8f9:	33 c0                	xor    %eax,%eax
40a8fb:	64 8b 0d 00 00 00 00 	mov    %fs:0x0,%ecx
40a902:	81 79 04 30 a8 40 00 	cmpl   $0x40a830,0x4(%ecx)
40a909:	75 10                	jne    0x40a91b
40a90b:	8b 51 0c             	mov    0xc(%ecx),%edx
40a90e:	8b 52 0c             	mov    0xc(%edx),%edx
40a911:	39 51 08             	cmp    %edx,0x8(%ecx)
40a914:	75 05                	jne    0x40a91b
40a916:	b8 01 00 00 00       	mov    $0x1,%eax
40a91b:	c3                   	ret
40a91c:	53                   	push   %ebx
40a91d:	51                   	push   %ecx
40a91e:	bb f0 2d 41 00       	mov    $0x412df0,%ebx
40a923:	eb 0b                	jmp    0x40a930
40a925:	53                   	push   %ebx
40a926:	51                   	push   %ecx
40a927:	bb f0 2d 41 00       	mov    $0x412df0,%ebx
40a92c:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
40a930:	89 4b 08             	mov    %ecx,0x8(%ebx)
40a933:	89 43 04             	mov    %eax,0x4(%ebx)
40a936:	89 6b 0c             	mov    %ebp,0xc(%ebx)
40a939:	55                   	push   %ebp
40a93a:	51                   	push   %ecx
40a93b:	50                   	push   %eax
40a93c:	58                   	pop    %eax
40a93d:	59                   	pop    %ecx
40a93e:	5d                   	pop    %ebp
40a93f:	59                   	pop    %ecx
40a940:	5b                   	pop    %ebx
40a941:	c2 04 00             	ret    $0x4
40a944:	ff d0                	call   *%eax
40a946:	c3                   	ret
40a947:	8b ff                	mov    %edi,%edi
40a949:	55                   	push   %ebp
40a94a:	8b ec                	mov    %esp,%ebp
40a94c:	8b 45 08             	mov    0x8(%ebp),%eax
40a94f:	83 f8 fe             	cmp    $0xfffffffe,%eax
40a952:	75 0f                	jne    0x40a963
40a954:	e8 ce 97 ff ff       	call   0x404127
40a959:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40a95f:	33 c0                	xor    %eax,%eax
40a961:	5d                   	pop    %ebp
40a962:	c3                   	ret
40a963:	85 c0                	test   %eax,%eax
40a965:	78 08                	js     0x40a96f
40a967:	3b 05 00 46 41 00    	cmp    0x414600,%eax
40a96d:	72 12                	jb     0x40a981
40a96f:	e8 b3 97 ff ff       	call   0x404127
40a974:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40a97a:	e8 08 83 ff ff       	call   0x402c87
40a97f:	eb de                	jmp    0x40a95f
40a981:	8b c8                	mov    %eax,%ecx
40a983:	83 e0 1f             	and    $0x1f,%eax
40a986:	c1 f9 05             	sar    $0x5,%ecx
40a989:	8b 0c 8d 20 46 41 00 	mov    0x414620(,%ecx,4),%ecx
40a990:	c1 e0 06             	shl    $0x6,%eax
40a993:	0f be 44 01 04       	movsbl 0x4(%ecx,%eax,1),%eax
40a998:	83 e0 40             	and    $0x40,%eax
40a99b:	5d                   	pop    %ebp
40a99c:	c3                   	ret
40a99d:	8b ff                	mov    %edi,%edi
40a99f:	55                   	push   %ebp
40a9a0:	8b ec                	mov    %esp,%ebp
40a9a2:	83 ec 10             	sub    $0x10,%esp
40a9a5:	a1 84 22 41 00       	mov    0x412284,%eax
40a9aa:	33 c5                	xor    %ebp,%eax
40a9ac:	89 45 fc             	mov    %eax,-0x4(%ebp)
40a9af:	53                   	push   %ebx
40a9b0:	56                   	push   %esi
40a9b1:	8b 75 0c             	mov    0xc(%ebp),%esi
40a9b4:	f6 46 0c 40          	testb  $0x40,0xc(%esi)
40a9b8:	57                   	push   %edi
40a9b9:	0f 85 36 01 00 00    	jne    0x40aaf5
40a9bf:	56                   	push   %esi
40a9c0:	e8 eb 80 ff ff       	call   0x402ab0
40a9c5:	59                   	pop    %ecx
40a9c6:	bb 78 2b 41 00       	mov    $0x412b78,%ebx
40a9cb:	83 f8 ff             	cmp    $0xffffffff,%eax
40a9ce:	74 2e                	je     0x40a9fe
40a9d0:	56                   	push   %esi
40a9d1:	e8 da 80 ff ff       	call   0x402ab0
40a9d6:	59                   	pop    %ecx
40a9d7:	83 f8 fe             	cmp    $0xfffffffe,%eax
40a9da:	74 22                	je     0x40a9fe
40a9dc:	56                   	push   %esi
40a9dd:	e8 ce 80 ff ff       	call   0x402ab0
40a9e2:	c1 f8 05             	sar    $0x5,%eax
40a9e5:	56                   	push   %esi
40a9e6:	8d 3c 85 20 46 41 00 	lea    0x414620(,%eax,4),%edi
40a9ed:	e8 be 80 ff ff       	call   0x402ab0
40a9f2:	83 e0 1f             	and    $0x1f,%eax
40a9f5:	59                   	pop    %ecx
40a9f6:	c1 e0 06             	shl    $0x6,%eax
40a9f9:	03 07                	add    (%edi),%eax
40a9fb:	59                   	pop    %ecx
40a9fc:	eb 02                	jmp    0x40aa00
40a9fe:	8b c3                	mov    %ebx,%eax
40aa00:	8a 40 24             	mov    0x24(%eax),%al
40aa03:	24 7f                	and    $0x7f,%al
40aa05:	3c 02                	cmp    $0x2,%al
40aa07:	0f 84 e8 00 00 00    	je     0x40aaf5
40aa0d:	56                   	push   %esi
40aa0e:	e8 9d 80 ff ff       	call   0x402ab0
40aa13:	59                   	pop    %ecx
40aa14:	83 f8 ff             	cmp    $0xffffffff,%eax
40aa17:	74 2e                	je     0x40aa47
40aa19:	56                   	push   %esi
40aa1a:	e8 91 80 ff ff       	call   0x402ab0
40aa1f:	59                   	pop    %ecx
40aa20:	83 f8 fe             	cmp    $0xfffffffe,%eax
40aa23:	74 22                	je     0x40aa47
40aa25:	56                   	push   %esi
40aa26:	e8 85 80 ff ff       	call   0x402ab0
40aa2b:	c1 f8 05             	sar    $0x5,%eax
40aa2e:	56                   	push   %esi
40aa2f:	8d 3c 85 20 46 41 00 	lea    0x414620(,%eax,4),%edi
40aa36:	e8 75 80 ff ff       	call   0x402ab0
40aa3b:	83 e0 1f             	and    $0x1f,%eax
40aa3e:	59                   	pop    %ecx
40aa3f:	c1 e0 06             	shl    $0x6,%eax
40aa42:	03 07                	add    (%edi),%eax
40aa44:	59                   	pop    %ecx
40aa45:	eb 02                	jmp    0x40aa49
40aa47:	8b c3                	mov    %ebx,%eax
40aa49:	8a 40 24             	mov    0x24(%eax),%al
40aa4c:	24 7f                	and    $0x7f,%al
40aa4e:	3c 01                	cmp    $0x1,%al
40aa50:	0f 84 9f 00 00 00    	je     0x40aaf5
40aa56:	56                   	push   %esi
40aa57:	e8 54 80 ff ff       	call   0x402ab0
40aa5c:	59                   	pop    %ecx
40aa5d:	83 f8 ff             	cmp    $0xffffffff,%eax
40aa60:	74 2e                	je     0x40aa90
40aa62:	56                   	push   %esi
40aa63:	e8 48 80 ff ff       	call   0x402ab0
40aa68:	59                   	pop    %ecx
40aa69:	83 f8 fe             	cmp    $0xfffffffe,%eax
40aa6c:	74 22                	je     0x40aa90
40aa6e:	56                   	push   %esi
40aa6f:	e8 3c 80 ff ff       	call   0x402ab0
40aa74:	c1 f8 05             	sar    $0x5,%eax
40aa77:	56                   	push   %esi
40aa78:	8d 3c 85 20 46 41 00 	lea    0x414620(,%eax,4),%edi
40aa7f:	e8 2c 80 ff ff       	call   0x402ab0
40aa84:	83 e0 1f             	and    $0x1f,%eax
40aa87:	59                   	pop    %ecx
40aa88:	c1 e0 06             	shl    $0x6,%eax
40aa8b:	03 07                	add    (%edi),%eax
40aa8d:	59                   	pop    %ecx
40aa8e:	eb 02                	jmp    0x40aa92
40aa90:	8b c3                	mov    %ebx,%eax
40aa92:	f6 40 04 80          	testb  $0x80,0x4(%eax)
40aa96:	74 5d                	je     0x40aaf5
40aa98:	ff 75 08             	push   0x8(%ebp)
40aa9b:	8d 45 f4             	lea    -0xc(%ebp),%eax
40aa9e:	6a 05                	push   $0x5
40aaa0:	50                   	push   %eax
40aaa1:	8d 45 f0             	lea    -0x10(%ebp),%eax
40aaa4:	50                   	push   %eax
40aaa5:	e8 58 31 00 00       	call   0x40dc02
40aaaa:	83 c4 10             	add    $0x10,%esp
40aaad:	85 c0                	test   %eax,%eax
40aaaf:	74 07                	je     0x40aab8
40aab1:	b8 ff ff 00 00       	mov    $0xffff,%eax
40aab6:	eb 5d                	jmp    0x40ab15
40aab8:	33 ff                	xor    %edi,%edi
40aaba:	39 7d f0             	cmp    %edi,-0x10(%ebp)
40aabd:	7e 30                	jle    0x40aaef
40aabf:	ff 4e 04             	decl   0x4(%esi)
40aac2:	78 12                	js     0x40aad6
40aac4:	8b 06                	mov    (%esi),%eax
40aac6:	8a 4c 3d f4          	mov    -0xc(%ebp,%edi,1),%cl
40aaca:	88 08                	mov    %cl,(%eax)
40aacc:	8b 0e                	mov    (%esi),%ecx
40aace:	0f b6 01             	movzbl (%ecx),%eax
40aad1:	41                   	inc    %ecx
40aad2:	89 0e                	mov    %ecx,(%esi)
40aad4:	eb 0e                	jmp    0x40aae4
40aad6:	0f be 44 3d f4       	movsbl -0xc(%ebp,%edi,1),%eax
40aadb:	56                   	push   %esi
40aadc:	50                   	push   %eax
40aadd:	e8 4a c5 ff ff       	call   0x40702c
40aae2:	59                   	pop    %ecx
40aae3:	59                   	pop    %ecx
40aae4:	83 f8 ff             	cmp    $0xffffffff,%eax
40aae7:	74 c8                	je     0x40aab1
40aae9:	47                   	inc    %edi
40aaea:	3b 7d f0             	cmp    -0x10(%ebp),%edi
40aaed:	7c d0                	jl     0x40aabf
40aaef:	66 8b 45 08          	mov    0x8(%ebp),%ax
40aaf3:	eb 20                	jmp    0x40ab15
40aaf5:	83 46 04 fe          	addl   $0xfffffffe,0x4(%esi)
40aaf9:	78 0d                	js     0x40ab08
40aafb:	8b 0e                	mov    (%esi),%ecx
40aafd:	8b 45 08             	mov    0x8(%ebp),%eax
40ab00:	66 89 01             	mov    %ax,(%ecx)
40ab03:	83 06 02             	addl   $0x2,(%esi)
40ab06:	eb 0d                	jmp    0x40ab15
40ab08:	0f b7 45 08          	movzwl 0x8(%ebp),%eax
40ab0c:	56                   	push   %esi
40ab0d:	50                   	push   %eax
40ab0e:	e8 ad 37 00 00       	call   0x40e2c0
40ab13:	59                   	pop    %ecx
40ab14:	59                   	pop    %ecx
40ab15:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40ab18:	5f                   	pop    %edi
40ab19:	5e                   	pop    %esi
40ab1a:	33 cd                	xor    %ebp,%ecx
40ab1c:	5b                   	pop    %ebx
40ab1d:	e8 82 72 ff ff       	call   0x401da4
40ab22:	c9                   	leave
40ab23:	c3                   	ret
40ab24:	8b ff                	mov    %edi,%edi
40ab26:	56                   	push   %esi
40ab27:	57                   	push   %edi
40ab28:	33 ff                	xor    %edi,%edi
40ab2a:	ff b7 00 2e 41 00    	push   0x412e00(%edi)
40ab30:	ff 15 8c f0 40 00    	call   *0x40f08c
40ab36:	89 87 00 2e 41 00    	mov    %eax,0x412e00(%edi)
40ab3c:	83 c7 04             	add    $0x4,%edi
40ab3f:	83 ff 28             	cmp    $0x28,%edi
40ab42:	72 e6                	jb     0x40ab2a
40ab44:	5f                   	pop    %edi
40ab45:	5e                   	pop    %esi
40ab46:	c3                   	ret
40ab47:	a1 84 22 41 00       	mov    0x412284,%eax
40ab4c:	83 c8 01             	or     $0x1,%eax
40ab4f:	33 c9                	xor    %ecx,%ecx
40ab51:	39 05 24 3b 41 00    	cmp    %eax,0x413b24
40ab57:	0f 94 c1             	sete   %cl
40ab5a:	8b c1                	mov    %ecx,%eax
40ab5c:	c3                   	ret
40ab5d:	cc                   	int3
40ab5e:	cc                   	int3
40ab5f:	cc                   	int3
40ab60:	8b 4c 24 04          	mov    0x4(%esp),%ecx
40ab64:	f7 c1 03 00 00 00    	test   $0x3,%ecx
40ab6a:	74 24                	je     0x40ab90
40ab6c:	8a 01                	mov    (%ecx),%al
40ab6e:	83 c1 01             	add    $0x1,%ecx
40ab71:	84 c0                	test   %al,%al
40ab73:	74 4e                	je     0x40abc3
40ab75:	f7 c1 03 00 00 00    	test   $0x3,%ecx
40ab7b:	75 ef                	jne    0x40ab6c
40ab7d:	05 00 00 00 00       	add    $0x0,%eax
40ab82:	8d a4 24 00 00 00 00 	lea    0x0(%esp),%esp
40ab89:	8d a4 24 00 00 00 00 	lea    0x0(%esp),%esp
40ab90:	8b 01                	mov    (%ecx),%eax
40ab92:	ba ff fe fe 7e       	mov    $0x7efefeff,%edx
40ab97:	03 d0                	add    %eax,%edx
40ab99:	83 f0 ff             	xor    $0xffffffff,%eax
40ab9c:	33 c2                	xor    %edx,%eax
40ab9e:	83 c1 04             	add    $0x4,%ecx
40aba1:	a9 00 01 01 81       	test   $0x81010100,%eax
40aba6:	74 e8                	je     0x40ab90
40aba8:	8b 41 fc             	mov    -0x4(%ecx),%eax
40abab:	84 c0                	test   %al,%al
40abad:	74 32                	je     0x40abe1
40abaf:	84 e4                	test   %ah,%ah
40abb1:	74 24                	je     0x40abd7
40abb3:	a9 00 00 ff 00       	test   $0xff0000,%eax
40abb8:	74 13                	je     0x40abcd
40abba:	a9 00 00 00 ff       	test   $0xff000000,%eax
40abbf:	74 02                	je     0x40abc3
40abc1:	eb cd                	jmp    0x40ab90
40abc3:	8d 41 ff             	lea    -0x1(%ecx),%eax
40abc6:	8b 4c 24 04          	mov    0x4(%esp),%ecx
40abca:	2b c1                	sub    %ecx,%eax
40abcc:	c3                   	ret
40abcd:	8d 41 fe             	lea    -0x2(%ecx),%eax
40abd0:	8b 4c 24 04          	mov    0x4(%esp),%ecx
40abd4:	2b c1                	sub    %ecx,%eax
40abd6:	c3                   	ret
40abd7:	8d 41 fd             	lea    -0x3(%ecx),%eax
40abda:	8b 4c 24 04          	mov    0x4(%esp),%ecx
40abde:	2b c1                	sub    %ecx,%eax
40abe0:	c3                   	ret
40abe1:	8d 41 fc             	lea    -0x4(%ecx),%eax
40abe4:	8b 4c 24 04          	mov    0x4(%esp),%ecx
40abe8:	2b c1                	sub    %ecx,%eax
40abea:	c3                   	ret
40abeb:	8b ff                	mov    %edi,%edi
40abed:	55                   	push   %ebp
40abee:	8b ec                	mov    %esp,%ebp
40abf0:	83 ec 10             	sub    $0x10,%esp
40abf3:	53                   	push   %ebx
40abf4:	56                   	push   %esi
40abf5:	8b 75 0c             	mov    0xc(%ebp),%esi
40abf8:	33 db                	xor    %ebx,%ebx
40abfa:	3b f3                	cmp    %ebx,%esi