40a76f:	55                   	push   %ebp
40a770:	68 d1 a7 40 00       	push   $0x40a7d1
40a775:	64 ff 30             	push   %fs:(%eax)
40a778:	64 89 20             	mov    %esp,%fs:(%eax)
40a77b:	33 db                	xor    %ebx,%ebx
40a77d:	85 ff                	test   %edi,%edi
40a77f:	74 3a                	je     0x40a7bb
40a781:	8b d6                	mov    %esi,%edx
40a783:	8b 45 fc             	mov    -0x4(%ebp),%eax
40a786:	e8 15 ff ff ff       	call   0x40a6a0
40a78b:	8d 45 f8             	lea    -0x8(%ebp),%eax
40a78e:	50                   	push   %eax
40a78f:	8b c7                	mov    %edi,%eax
40a791:	e8 e6 9a ff ff       	call   0x40427c
40a796:	8b c8                	mov    %eax,%ecx
40a798:	8b 16                	mov    (%esi),%edx
40a79a:	8b 45 fc             	mov    -0x4(%ebp),%eax
40a79d:	e8 3a 9d ff ff       	call   0x4044dc
40a7a2:	8b 55 f8             	mov    -0x8(%ebp),%edx
40a7a5:	8b c7                	mov    %edi,%eax
40a7a7:	e8 80 d5 ff ff       	call   0x407d2c
40a7ac:	85 c0                	test   %eax,%eax
40a7ae:	75 0b                	jne    0x40a7bb
40a7b0:	8b c7                	mov    %edi,%eax
40a7b2:	e8 c5 9a ff ff       	call   0x40427c
40a7b7:	01 06                	add    %eax,(%esi)
40a7b9:	b3 01                	mov    $0x1,%bl
40a7bb:	33 c0                	xor    %eax,%eax
40a7bd:	5a                   	pop    %edx
40a7be:	59                   	pop    %ecx
40a7bf:	59                   	pop    %ecx
40a7c0:	64 89 10             	mov    %edx,%fs:(%eax)
40a7c3:	68 d8 a7 40 00       	push   $0x40a7d8
40a7c8:	8d 45 f8             	lea    -0x8(%ebp),%eax
40a7cb:	e8 ec 97 ff ff       	call   0x403fbc
40a7d0:	c3                   	ret
40a7d1:	e9 ea 91 ff ff       	jmp    0x4039c0
40a7d6:	eb f0                	jmp    0x40a7c8
40a7d8:	8b c3                	mov    %ebx,%eax
40a7da:	5f                   	pop    %edi
40a7db:	5e                   	pop    %esi
40a7dc:	5b                   	pop    %ebx
40a7dd:	59                   	pop    %ecx
40a7de:	59                   	pop    %ecx
40a7df:	5d                   	pop    %ebp
40a7e0:	c3                   	ret
40a7e1:	8d 40 00             	lea    0x0(%eax),%eax
40a7e4:	53                   	push   %ebx
40a7e5:	56                   	push   %esi
40a7e6:	57                   	push   %edi
40a7e7:	51                   	push   %ecx
40a7e8:	88 0c 24             	mov    %cl,(%esp)
40a7eb:	8b fa                	mov    %edx,%edi
40a7ed:	8b f0                	mov    %eax,%esi
40a7ef:	33 db                	xor    %ebx,%ebx
40a7f1:	8b d7                	mov    %edi,%edx
40a7f3:	8b c6                	mov    %esi,%eax
40a7f5:	e8 a6 fe ff ff       	call   0x40a6a0
40a7fa:	8b c6                	mov    %esi,%eax
40a7fc:	e8 7b 9a ff ff       	call   0x40427c
40a801:	3b 07                	cmp    (%edi),%eax
40a803:	7c 0f                	jl     0x40a814
40a805:	8b 07                	mov    (%edi),%eax
40a807:	8a 44 06 ff          	mov    -0x1(%esi,%eax,1),%al
40a80b:	3a 04 24             	cmp    (%esp),%al
40a80e:	75 04                	jne    0x40a814
40a810:	ff 07                	incl   (%edi)
40a812:	b3 01                	mov    $0x1,%bl
40a814:	8b c3                	mov    %ebx,%eax
40a816:	5a                   	pop    %edx
40a817:	5f                   	pop    %edi
40a818:	5e                   	pop    %esi
40a819:	5b                   	pop    %ebx
40a81a:	c3                   	ret
40a81b:	90                   	nop
40a81c:	53                   	push   %ebx
40a81d:	56                   	push   %esi
40a81e:	57                   	push   %edi
40a81f:	8b f0                	mov    %eax,%esi
40a821:	33 db                	xor    %ebx,%ebx
40a823:	bf 01 00 00 00       	mov    $0x1,%edi
40a828:	eb 29                	jmp    0x40a853
40a82a:	8a 44 3e ff          	mov    -0x1(%esi,%edi,1),%al
40a82e:	24 df                	and    $0xdf,%al
40a830:	2c 44                	sub    $0x44,%al
40a832:	74 1a                	je     0x40a84e
40a834:	fe c8                	dec    %al
40a836:	74 0a                	je     0x40a842
40a838:	2c 08                	sub    $0x8,%al
40a83a:	74 0e                	je     0x40a84a
40a83c:	2c 0c                	sub    $0xc,%al
40a83e:	74 06                	je     0x40a846
40a840:	eb 10                	jmp    0x40a852
40a842:	b3 02                	mov    $0x2,%bl
40a844:	eb 1a                	jmp    0x40a860
40a846:	b3 02                	mov    $0x2,%bl
40a848:	eb 16                	jmp    0x40a860
40a84a:	33 db                	xor    %ebx,%ebx
40a84c:	eb 12                	jmp    0x40a860
40a84e:	b3 01                	mov    $0x1,%bl
40a850:	eb 0e                	jmp    0x40a860
40a852:	47                   	inc    %edi
40a853:	8b c6                	mov    %esi,%eax
40a855:	e8 22 9a ff ff       	call   0x40427c
40a85a:	3b f8                	cmp    %eax,%edi
40a85c:	7e cc                	jle    0x40a82a
40a85e:	33 db                	xor    %ebx,%ebx
40a860:	8b c3                	mov    %ebx,%eax
40a862:	5f                   	pop    %edi
40a863:	5e                   	pop    %esi
40a864:	5b                   	pop    %ebx
40a865:	c3                   	ret
40a866:	8b c0                	mov    %eax,%eax
40a868:	53                   	push   %ebx
40a869:	56                   	push   %esi
40a86a:	8b da                	mov    %edx,%ebx
40a86c:	8b f0                	mov    %eax,%esi
40a86e:	eb 23                	jmp    0x40a893
40a870:	8b 03                	mov    (%ebx),%eax
40a872:	8a 44 06 ff          	mov    -0x1(%esi,%eax,1),%al
40a876:	25 ff 00 00 00       	and    $0xff,%eax
40a87b:	0f a3 05 0c d1 45 00 	bt     %eax,0x45d10c
40a882:	73 0d                	jae    0x40a891
40a884:	8b 13                	mov    (%ebx),%edx
40a886:	8b c6                	mov    %esi,%eax
40a888:	e8 fb 1a 00 00       	call   0x40c388
40a88d:	89 03                	mov    %eax,(%ebx)
40a88f:	eb 02                	jmp    0x40a893
40a891:	ff 03                	incl   (%ebx)
40a893:	8b c6                	mov    %esi,%eax
40a895:	e8 e2 99 ff ff       	call   0x40427c
40a89a:	3b 03                	cmp    (%ebx),%eax
40a89c:	7c 0c                	jl     0x40a8aa
40a89e:	8b 03                	mov    (%ebx),%eax
40a8a0:	8a 44 06 ff          	mov    -0x1(%esi,%eax,1),%al
40a8a4:	04 d0                	add    $0xd0,%al
40a8a6:	2c 0a                	sub    $0xa,%al
40a8a8:	73 c6                	jae    0x40a870
40a8aa:	5e                   	pop    %esi
40a8ab:	5b                   	pop    %ebx
40a8ac:	c3                   	ret
40a8ad:	8d 40 00             	lea    0x0(%eax),%eax
40a8b0:	53                   	push   %ebx
40a8b1:	56                   	push   %esi
40a8b2:	57                   	push   %edi
40a8b3:	55                   	push   %ebp
40a8b4:	51                   	push   %ecx
40a8b5:	8b e8                	mov    %eax,%ebp
40a8b7:	33 c0                	xor    %eax,%eax
40a8b9:	89 04 24             	mov    %eax,(%esp)
40a8bc:	bf 07 00 00 00       	mov    $0x7,%edi
40a8c1:	bb 50 97 46 00       	mov    $0x469750,%ebx
40a8c6:	be 6c 97 46 00       	mov    $0x46976c,%esi
40a8cb:	83 3b 00             	cmpl   $0x0,(%ebx)
40a8ce:	74 29                	je     0x40a8f9
40a8d0:	8b c5                	mov    %ebp,%eax
40a8d2:	e8 a5 9b ff ff       	call   0x40447c
40a8d7:	50                   	push   %eax
40a8d8:	8b 03                	mov    (%ebx),%eax
40a8da:	e8 9d 9b ff ff       	call   0x40447c
40a8df:	5a                   	pop    %edx
40a8e0:	e8 1b 1c 00 00       	call   0x40c500
40a8e5:	85 c0                	test   %eax,%eax
40a8e7:	74 07                	je     0x40a8f0
40a8e9:	8b 06                	mov    (%esi),%eax
40a8eb:	89 04 24             	mov    %eax,(%esp)
40a8ee:	eb 09                	jmp    0x40a8f9
40a8f0:	83 c6 04             	add    $0x4,%esi
40a8f3:	83 c3 04             	add    $0x4,%ebx
40a8f6:	4f                   	dec    %edi
40a8f7:	75 d2                	jne    0x40a8cb
40a8f9:	8b 04 24             	mov    (%esp),%eax
40a8fc:	5a                   	pop    %edx
40a8fd:	5d                   	pop    %ebp
40a8fe:	5f                   	pop    %edi
40a8ff:	5e                   	pop    %esi
40a900:	5b                   	pop    %ebx
40a901:	c3                   	ret
40a902:	8b c0                	mov    %eax,%eax
40a904:	55                   	push   %ebp
40a905:	8b ec                	mov    %esp,%ebp
40a907:	53                   	push   %ebx
40a908:	8b d8                	mov    %eax,%ebx
40a90a:	83 3d 44 97 46 00 12 	cmpl   $0x12,0x469744
40a911:	75 3a                	jne    0x40a94d
40a913:	83 fb 63             	cmp    $0x63,%ebx
40a916:	7f 24                	jg     0x40a93c
40a918:	e8 6f f1 ff ff       	call   0x409a8c
40a91d:	0f b7 c8             	movzwl %ax,%ecx
40a920:	8b 45 08             	mov    0x8(%ebp),%eax
40a923:	8b 40 fc             	mov    -0x4(%eax),%eax
40a926:	99                   	cltd
40a927:	33 c2                	xor    %edx,%eax
40a929:	2b c2                	sub    %edx,%eax
40a92b:	03 c8                	add    %eax,%ecx
40a92d:	8b c1                	mov    %ecx,%eax
40a92f:	b9 64 00 00 00       	mov    $0x64,%ecx
40a934:	99                   	cltd
40a935:	f7 f9                	idiv   %ecx
40a937:	6b c0 64             	imul   $0x64,%eax,%eax
40a93a:	03 d8                	add    %eax,%ebx
40a93c:	8b 45 08             	mov    0x8(%ebp),%eax
40a93f:	83 78 fc 00          	cmpl   $0x0,-0x4(%eax)
40a943:	7e 0e                	jle    0x40a953
40a945:	8b 45 08             	mov    0x8(%ebp),%eax
40a948:	f7 58 fc             	negl   -0x4(%eax)
40a94b:	eb 06                	jmp    0x40a953
40a94d:	8b 45 08             	mov    0x8(%ebp),%eax
40a950:	ff 48 fc             	decl   -0x4(%eax)
40a953:	8b 45 08             	mov    0x8(%ebp),%eax
40a956:	8b 40 fc             	mov    -0x4(%eax),%eax
40a959:	03 c3                	add    %ebx,%eax
40a95b:	5b                   	pop    %ebx
40a95c:	5d                   	pop    %ebp
40a95d:	c3                   	ret
40a95e:	8b c0                	mov    %eax,%eax
40a960:	55                   	push   %ebp
40a961:	8b ec                	mov    %esp,%ebp
40a963:	83 c4 d8             	add    $0xffffffd8,%esp
40a966:	53                   	push   %ebx
40a967:	56                   	push   %esi
40a968:	57                   	push   %edi
40a969:	33 db                	xor    %ebx,%ebx
40a96b:	89 5d d8             	mov    %ebx,-0x28(%ebp)
40a96e:	89 5d dc             	mov    %ebx,-0x24(%ebp)
40a971:	89 5d e0             	mov    %ebx,-0x20(%ebp)
40a974:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
40a977:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40a97a:	8b da                	mov    %edx,%ebx
40a97c:	8b f0                	mov    %eax,%esi
40a97e:	33 c0                	xor    %eax,%eax
40a980:	55                   	push   %ebp
40a981:	68 7b ac 40 00       	push   $0x40ac7b
40a986:	64 ff 30             	push   %fs:(%eax)
40a989:	64 89 20             	mov    %esp,%fs:(%eax)
40a98c:	33 ff                	xor    %edi,%edi
40a98e:	66 c7 45 ee 00 00    	movw   $0x0,-0x12(%ebp)
40a994:	66 c7 45 ec 00 00    	movw   $0x0,-0x14(%ebp)
40a99a:	c6 45 e8 00          	movb   $0x0,-0x18(%ebp)
40a99e:	c6 45 f7 00          	movb   $0x0,-0x9(%ebp)
40a9a2:	a1 8c 96 46 00       	mov    0x46968c,%eax
40a9a7:	e8 70 fe ff ff       	call   0x40a81c
40a9ac:	88 45 f6             	mov    %al,-0xa(%ebp)
40a9af:	33 c0                	xor    %eax,%eax
40a9b1:	89 45 fc             	mov    %eax,-0x4(%ebp)
40a9b4:	83 3d 8c 96 46 00 00 	cmpl   $0x0,0x46968c
40a9bb:	74 3e                	je     0x40a9fb
40a9bd:	a1 8c 96 46 00       	mov    0x46968c,%eax
40a9c2:	80 38 67             	cmpb   $0x67,(%eax)
40a9c5:	75 34                	jne    0x40a9fb
40a9c7:	8b d3                	mov    %ebx,%edx
40a9c9:	8b c6                	mov    %esi,%eax
40a9cb:	e8 98 fe ff ff       	call   0x40a868
40a9d0:	8d 45 e0             	lea    -0x20(%ebp),%eax
40a9d3:	50                   	push   %eax
40a9d4:	8b 0b                	mov    (%ebx),%ecx
40a9d6:	49                   	dec    %ecx
40a9d7:	ba 01 00 00 00       	mov    $0x1,%edx
40a9dc:	8b c6                	mov    %esi,%eax
40a9de:	e8 f9 9a ff ff       	call   0x4044dc
40a9e3:	8b 45 e0             	mov    -0x20(%ebp),%eax
40a9e6:	8d 55 e4             	lea    -0x1c(%ebp),%edx
40a9e9:	e8 ae d3 ff ff       	call   0x407d9c
40a9ee:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40a9f1:	e8 ba fe ff ff       	call   0x40a8b0
40a9f6:	89 45 fc             	mov    %eax,-0x4(%ebp)
40a9f9:	eb 1c                	jmp    0x40aa17
40a9fb:	8b 15 8c 96 46 00    	mov    0x46968c,%edx
40aa01:	b8 94 ac 40 00       	mov    $0x40ac94,%eax
40aa06:	e8 31 1a 00 00       	call   0x40c43c
40aa0b:	85 c0                	test   %eax,%eax
40aa0d:	7e 08                	jle    0x40aa17
40aa0f:	a1 6c 97 46 00       	mov    0x46976c,%eax
40aa14:	89 45 fc             	mov    %eax,-0x4(%ebp)
40aa17:	8d 45 eb             	lea    -0x15(%ebp),%eax
40aa1a:	50                   	push   %eax
40aa1b:	8d 4d f4             	lea    -0xc(%ebp),%ecx
40aa1e:	8b d3                	mov    %ebx,%edx
40aa20:	8b c6                	mov    %esi,%eax
40aa22:	e8 9d fc ff ff       	call   0x40a6c4
40aa27:	84 c0                	test   %al,%al
40aa29:	0f 84 31 02 00 00    	je     0x40ac60
40aa2f:	8b d3                	mov    %ebx,%edx
40aa31:	8a 0d 89 96 46 00    	mov    0x469689,%cl
40aa37:	8b c6                	mov    %esi,%eax
40aa39:	e8 a6 fd ff ff       	call   0x40a7e4
40aa3e:	84 c0                	test   %al,%al
40aa40:	0f 84 1a 02 00 00    	je     0x40ac60
40aa46:	8d 45 ea             	lea    -0x16(%ebp),%eax
40aa49:	50                   	push   %eax
40aa4a:	8d 4d f2             	lea    -0xe(%ebp),%ecx
40aa4d:	8b d3                	mov    %ebx,%edx
40aa4f:	8b c6                	mov    %esi,%eax
40aa51:	e8 6e fc ff ff       	call   0x40a6c4
40aa56:	84 c0                	test   %al,%al
40aa58:	0f 84 02 02 00 00    	je     0x40ac60
40aa5e:	8b d3                	mov    %ebx,%edx
40aa60:	8a 0d 89 96 46 00    	mov    0x469689,%cl
40aa66:	8b c6                	mov    %esi,%eax
40aa68:	e8 77 fd ff ff       	call   0x40a7e4
40aa6d:	84 c0                	test   %al,%al
40aa6f:	0f 84 ce 00 00 00    	je     0x40ab43
40aa75:	8d 45 e9             	lea    -0x17(%ebp),%eax
40aa78:	50                   	push   %eax
40aa79:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40aa7c:	8b d3                	mov    %ebx,%edx
40aa7e:	8b c6                	mov    %esi,%eax
40aa80:	e8 3f fc ff ff       	call   0x40a6c4
40aa85:	84 c0                	test   %al,%al
40aa87:	0f 84 d3 01 00 00    	je     0x40ac60
40aa8d:	8a 45 f6             	mov    -0xa(%ebp),%al
40aa90:	2c 01                	sub    $0x1,%al
40aa92:	72 08                	jb     0x40aa9c
40aa94:	74 22                	je     0x40aab8
40aa96:	fe c8                	dec    %al
40aa98:	74 3a                	je     0x40aad4
40aa9a:	eb 52                	jmp    0x40aaee
40aa9c:	66 8b 7d f0          	mov    -0x10(%ebp),%di
40aaa0:	8a 45 e9             	mov    -0x17(%ebp),%al
40aaa3:	88 45 e8             	mov    %al,-0x18(%ebp)
40aaa6:	66 8b 45 f4          	mov    -0xc(%ebp),%ax
40aaaa:	66 89 45 ee          	mov    %ax,-0x12(%ebp)
40aaae:	66 8b 45 f2          	mov    -0xe(%ebp),%ax
40aab2:	66 89 45 ec          	mov    %ax,-0x14(%ebp)
40aab6:	eb 36                	jmp    0x40aaee
40aab8:	66 8b 7d f0          	mov    -0x10(%ebp),%di
40aabc:	8a 45 e9             	mov    -0x17(%ebp),%al
40aabf:	88 45 e8             	mov    %al,-0x18(%ebp)
40aac2:	66 8b 45 f2          	mov    -0xe(%ebp),%ax
40aac6:	66 89 45 ee          	mov    %ax,-0x12(%ebp)
40aaca:	66 8b 45 f4          	mov    -0xc(%ebp),%ax
40aace:	66 89 45 ec          	mov    %ax,-0x14(%ebp)
40aad2:	eb 1a                	jmp    0x40aaee
40aad4:	66 8b 7d f4          	mov    -0xc(%ebp),%di
40aad8:	8a 45 eb             	mov    -0x15(%ebp),%al
40aadb:	88 45 e8             	mov    %al,-0x18(%ebp)
40aade:	66 8b 45 f2          	mov    -0xe(%ebp),%ax
40aae2:	66 89 45 ee          	mov    %ax,-0x12(%ebp)
40aae6:	66 8b 45 f0          	mov    -0x10(%ebp),%ax
40aaea:	66 89 45 ec          	mov    %ax,-0x14(%ebp)
40aaee:	83 7d fc 00          	cmpl   $0x0,-0x4(%ebp)
40aaf2:	7e 0e                	jle    0x40ab02
40aaf4:	55                   	push   %ebp
40aaf5:	0f b7 c7             	movzwl %di,%eax
40aaf8:	e8 07 fe ff ff       	call   0x40a904
40aafd:	59                   	pop    %ecx
40aafe:	8b f8                	mov    %eax,%edi
40ab00:	eb 70                	jmp    0x40ab72
40ab02:	80 7d e8 02          	cmpb   $0x2,-0x18(%ebp)
40ab06:	77 6a                	ja     0x40ab72