40a7ee:	23 fe                	and    %esi,%edi
40a7f0:	0b cf                	or     %edi,%ecx
40a7f2:	75 37                	jne    0x40a82b
40a7f4:	8b 90 c4 00 00 00    	mov    0xc4(%eax),%edx
40a7fa:	8b 70 44             	mov    0x44(%eax),%esi
40a7fd:	23 55 f8             	and    -0x8(%ebp),%edx
40a800:	23 75 f4             	and    -0xc(%ebp),%esi
40a803:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40a807:	8d 48 44             	lea    0x44(%eax),%ecx
40a80a:	0b d6                	or     %esi,%edx
40a80c:	8b 75 f4             	mov    -0xc(%ebp),%esi
40a80f:	75 17                	jne    0x40a828
40a811:	8b 91 84 00 00 00    	mov    0x84(%ecx),%edx
40a817:	ff 45 fc             	incl   -0x4(%ebp)
40a81a:	23 55 f8             	and    -0x8(%ebp),%edx
40a81d:	83 c1 04             	add    $0x4,%ecx
40a820:	8b fe                	mov    %esi,%edi
40a822:	23 39                	and    (%ecx),%edi
40a824:	0b d7                	or     %edi,%edx
40a826:	74 e9                	je     0x40a811
40a828:	8b 55 fc             	mov    -0x4(%ebp),%edx
40a82b:	8b ca                	mov    %edx,%ecx
40a82d:	33 ff                	xor    %edi,%edi
40a82f:	69 c9 04 02 00 00    	imul   $0x204,%ecx,%ecx
40a835:	8d 8c 01 44 01 00 00 	lea    0x144(%ecx,%eax,1),%ecx
40a83c:	89 4d f4             	mov    %ecx,-0xc(%ebp)
40a83f:	8b 4c 90 44          	mov    0x44(%eax,%edx,4),%ecx
40a843:	23 ce                	and    %esi,%ecx
40a845:	75 0d                	jne    0x40a854
40a847:	8b 8c 90 c4 00 00 00 	mov    0xc4(%eax,%edx,4),%ecx
40a84e:	6a 20                	push   $0x20
40a850:	23 4d f8             	and    -0x8(%ebp),%ecx
40a853:	5f                   	pop    %edi
40a854:	85 c9                	test   %ecx,%ecx
40a856:	7c 05                	jl     0x40a85d
40a858:	d1 e1                	shl    $1,%ecx
40a85a:	47                   	inc    %edi
40a85b:	eb f7                	jmp    0x40a854
40a85d:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40a860:	8b 54 f9 04          	mov    0x4(%ecx,%edi,8),%edx
40a864:	8b 0a                	mov    (%edx),%ecx
40a866:	2b 4d f0             	sub    -0x10(%ebp),%ecx
40a869:	8b f1                	mov    %ecx,%esi
40a86b:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40a86e:	c1 fe 04             	sar    $0x4,%esi
40a871:	4e                   	dec    %esi
40a872:	83 fe 3f             	cmp    $0x3f,%esi
40a875:	7e 03                	jle    0x40a87a
40a877:	6a 3f                	push   $0x3f
40a879:	5e                   	pop    %esi
40a87a:	3b f7                	cmp    %edi,%esi
40a87c:	0f 84 0d 01 00 00    	je     0x40a98f
40a882:	8b 4a 04             	mov    0x4(%edx),%ecx
40a885:	3b 4a 08             	cmp    0x8(%edx),%ecx
40a888:	75 61                	jne    0x40a8eb
40a88a:	83 ff 20             	cmp    $0x20,%edi
40a88d:	7d 2b                	jge    0x40a8ba
40a88f:	bb 00 00 00 80       	mov    $0x80000000,%ebx
40a894:	8b cf                	mov    %edi,%ecx
40a896:	d3 eb                	shr    %cl,%ebx
40a898:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40a89b:	8d 7c 38 04          	lea    0x4(%eax,%edi,1),%edi
40a89f:	f7 d3                	not    %ebx
40a8a1:	89 5d ec             	mov    %ebx,-0x14(%ebp)
40a8a4:	23 5c 88 44          	and    0x44(%eax,%ecx,4),%ebx
40a8a8:	89 5c 88 44          	mov    %ebx,0x44(%eax,%ecx,4)
40a8ac:	fe 0f                	decb   (%edi)
40a8ae:	75 38                	jne    0x40a8e8
40a8b0:	8b 5d 08             	mov    0x8(%ebp),%ebx
40a8b3:	8b 4d ec             	mov    -0x14(%ebp),%ecx
40a8b6:	21 0b                	and    %ecx,(%ebx)
40a8b8:	eb 31                	jmp    0x40a8eb
40a8ba:	8d 4f e0             	lea    -0x20(%edi),%ecx
40a8bd:	bb 00 00 00 80       	mov    $0x80000000,%ebx
40a8c2:	d3 eb                	shr    %cl,%ebx
40a8c4:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40a8c7:	8d 7c 38 04          	lea    0x4(%eax,%edi,1),%edi
40a8cb:	8d 8c 88 c4 00 00 00 	lea    0xc4(%eax,%ecx,4),%ecx
40a8d2:	f7 d3                	not    %ebx
40a8d4:	21 19                	and    %ebx,(%ecx)
40a8d6:	fe 0f                	decb   (%edi)
40a8d8:	89 5d ec             	mov    %ebx,-0x14(%ebp)
40a8db:	75 0b                	jne    0x40a8e8
40a8dd:	8b 5d 08             	mov    0x8(%ebp),%ebx
40a8e0:	8b 4d ec             	mov    -0x14(%ebp),%ecx
40a8e3:	21 4b 04             	and    %ecx,0x4(%ebx)
40a8e6:	eb 03                	jmp    0x40a8eb
40a8e8:	8b 5d 08             	mov    0x8(%ebp),%ebx
40a8eb:	8b 4a 08             	mov    0x8(%edx),%ecx
40a8ee:	8b 7a 04             	mov    0x4(%edx),%edi
40a8f1:	83 7d f8 00          	cmpl   $0x0,-0x8(%ebp)
40a8f5:	89 79 04             	mov    %edi,0x4(%ecx)
40a8f8:	8b 4a 04             	mov    0x4(%edx),%ecx
40a8fb:	8b 7a 08             	mov    0x8(%edx),%edi
40a8fe:	89 79 08             	mov    %edi,0x8(%ecx)
40a901:	0f 84 94 00 00 00    	je     0x40a99b
40a907:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40a90a:	8b 7c f1 04          	mov    0x4(%ecx,%esi,8),%edi
40a90e:	8d 0c f1             	lea    (%ecx,%esi,8),%ecx
40a911:	89 7a 04             	mov    %edi,0x4(%edx)
40a914:	89 4a 08             	mov    %ecx,0x8(%edx)
40a917:	89 51 04             	mov    %edx,0x4(%ecx)
40a91a:	8b 4a 04             	mov    0x4(%edx),%ecx
40a91d:	89 51 08             	mov    %edx,0x8(%ecx)
40a920:	8b 4a 04             	mov    0x4(%edx),%ecx
40a923:	3b 4a 08             	cmp    0x8(%edx),%ecx
40a926:	75 64                	jne    0x40a98c
40a928:	8a 4c 06 04          	mov    0x4(%esi,%eax,1),%cl
40a92c:	83 fe 20             	cmp    $0x20,%esi
40a92f:	88 4d 0b             	mov    %cl,0xb(%ebp)
40a932:	7d 29                	jge    0x40a95d
40a934:	fe c1                	inc    %cl
40a936:	80 7d 0b 00          	cmpb   $0x0,0xb(%ebp)
40a93a:	88 4c 06 04          	mov    %cl,0x4(%esi,%eax,1)
40a93e:	75 0b                	jne    0x40a94b
40a940:	bf 00 00 00 80       	mov    $0x80000000,%edi
40a945:	8b ce                	mov    %esi,%ecx
40a947:	d3 ef                	shr    %cl,%edi
40a949:	09 3b                	or     %edi,(%ebx)
40a94b:	bf 00 00 00 80       	mov    $0x80000000,%edi
40a950:	8b ce                	mov    %esi,%ecx
40a952:	d3 ef                	shr    %cl,%edi
40a954:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40a957:	09 7c 88 44          	or     %edi,0x44(%eax,%ecx,4)
40a95b:	eb 2f                	jmp    0x40a98c
40a95d:	fe c1                	inc    %cl
40a95f:	80 7d 0b 00          	cmpb   $0x0,0xb(%ebp)
40a963:	88 4c 06 04          	mov    %cl,0x4(%esi,%eax,1)
40a967:	75 0d                	jne    0x40a976
40a969:	8d 4e e0             	lea    -0x20(%esi),%ecx
40a96c:	bf 00 00 00 80       	mov    $0x80000000,%edi
40a971:	d3 ef                	shr    %cl,%edi
40a973:	09 7b 04             	or     %edi,0x4(%ebx)
40a976:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40a979:	8d bc 88 c4 00 00 00 	lea    0xc4(%eax,%ecx,4),%edi
40a980:	8d 4e e0             	lea    -0x20(%esi),%ecx
40a983:	be 00 00 00 80       	mov    $0x80000000,%esi
40a988:	d3 ee                	shr    %cl,%esi
40a98a:	09 37                	or     %esi,(%edi)
40a98c:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40a98f:	85 c9                	test   %ecx,%ecx
40a991:	74 0b                	je     0x40a99e
40a993:	89 0a                	mov    %ecx,(%edx)
40a995:	89 4c 11 fc          	mov    %ecx,-0x4(%ecx,%edx,1)
40a999:	eb 03                	jmp    0x40a99e
40a99b:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40a99e:	8b 75 f0             	mov    -0x10(%ebp),%esi
40a9a1:	03 d1                	add    %ecx,%edx
40a9a3:	8d 4e 01             	lea    0x1(%esi),%ecx
40a9a6:	89 0a                	mov    %ecx,(%edx)
40a9a8:	89 4c 32 fc          	mov    %ecx,-0x4(%edx,%esi,1)
40a9ac:	8b 75 f4             	mov    -0xc(%ebp),%esi
40a9af:	8b 0e                	mov    (%esi),%ecx
40a9b1:	85 c9                	test   %ecx,%ecx
40a9b3:	8d 79 01             	lea    0x1(%ecx),%edi
40a9b6:	89 3e                	mov    %edi,(%esi)
40a9b8:	75 1a                	jne    0x40a9d4
40a9ba:	3b 1d 94 1d 41 00    	cmp    0x411d94,%ebx
40a9c0:	75 12                	jne    0x40a9d4
40a9c2:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40a9c5:	3b 0d 8c 1d 41 00    	cmp    0x411d8c,%ecx
40a9cb:	75 07                	jne    0x40a9d4
40a9cd:	83 25 94 1d 41 00 00 	andl   $0x0,0x411d94
40a9d4:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40a9d7:	89 08                	mov    %ecx,(%eax)
40a9d9:	8d 42 04             	lea    0x4(%edx),%eax
40a9dc:	5f                   	pop    %edi
40a9dd:	5e                   	pop    %esi
40a9de:	5b                   	pop    %ebx
40a9df:	c9                   	leave
40a9e0:	c3                   	ret
40a9e1:	a1 98 1d 41 00       	mov    0x411d98,%eax
40a9e6:	8b 0d 88 1d 41 00    	mov    0x411d88,%ecx
40a9ec:	56                   	push   %esi
40a9ed:	57                   	push   %edi
40a9ee:	33 ff                	xor    %edi,%edi
40a9f0:	3b c1                	cmp    %ecx,%eax
40a9f2:	75 30                	jne    0x40aa24
40a9f4:	8d 44 89 50          	lea    0x50(%ecx,%ecx,4),%eax
40a9f8:	c1 e0 02             	shl    $0x2,%eax
40a9fb:	50                   	push   %eax
40a9fc:	ff 35 9c 1d 41 00    	push   0x411d9c
40aa02:	57                   	push   %edi
40aa03:	ff 35 a0 1d 41 00    	push   0x411da0
40aa09:	ff 15 fc d0 40 00    	call   *0x40d0fc
40aa0f:	3b c7                	cmp    %edi,%eax
40aa11:	74 61                	je     0x40aa74
40aa13:	83 05 88 1d 41 00 10 	addl   $0x10,0x411d88
40aa1a:	a3 9c 1d 41 00       	mov    %eax,0x411d9c
40aa1f:	a1 98 1d 41 00       	mov    0x411d98,%eax
40aa24:	8b 0d 9c 1d 41 00    	mov    0x411d9c,%ecx
40aa2a:	68 c4 41 00 00       	push   $0x41c4
40aa2f:	6a 08                	push   $0x8
40aa31:	8d 04 80             	lea    (%eax,%eax,4),%eax
40aa34:	ff 35 a0 1d 41 00    	push   0x411da0
40aa3a:	8d 34 81             	lea    (%ecx,%eax,4),%esi
40aa3d:	ff 15 00 d1 40 00    	call   *0x40d100
40aa43:	3b c7                	cmp    %edi,%eax
40aa45:	89 46 10             	mov    %eax,0x10(%esi)
40aa48:	74 2a                	je     0x40aa74
40aa4a:	6a 04                	push   $0x4
40aa4c:	68 00 20 00 00       	push   $0x2000
40aa51:	68 00 00 10 00       	push   $0x100000
40aa56:	57                   	push   %edi
40aa57:	ff 15 6c d0 40 00    	call   *0x40d06c
40aa5d:	3b c7                	cmp    %edi,%eax
40aa5f:	89 46 0c             	mov    %eax,0xc(%esi)
40aa62:	75 14                	jne    0x40aa78
40aa64:	ff 76 10             	push   0x10(%esi)
40aa67:	57                   	push   %edi
40aa68:	ff 35 a0 1d 41 00    	push   0x411da0
40aa6e:	ff 15 f4 d0 40 00    	call   *0x40d0f4
40aa74:	33 c0                	xor    %eax,%eax
40aa76:	eb 17                	jmp    0x40aa8f
40aa78:	83 4e 08 ff          	orl    $0xffffffff,0x8(%esi)
40aa7c:	89 3e                	mov    %edi,(%esi)
40aa7e:	89 7e 04             	mov    %edi,0x4(%esi)
40aa81:	ff 05 98 1d 41 00    	incl   0x411d98
40aa87:	8b 46 10             	mov    0x10(%esi),%eax
40aa8a:	83 08 ff             	orl    $0xffffffff,(%eax)
40aa8d:	8b c6                	mov    %esi,%eax
40aa8f:	5f                   	pop    %edi
40aa90:	5e                   	pop    %esi
40aa91:	c3                   	ret
40aa92:	55                   	push   %ebp
40aa93:	8b ec                	mov    %esp,%ebp
40aa95:	51                   	push   %ecx
40aa96:	8b 4d 08             	mov    0x8(%ebp),%ecx
40aa99:	53                   	push   %ebx
40aa9a:	56                   	push   %esi
40aa9b:	57                   	push   %edi
40aa9c:	8b 71 10             	mov    0x10(%ecx),%esi
40aa9f:	8b 41 08             	mov    0x8(%ecx),%eax
40aaa2:	33 db                	xor    %ebx,%ebx
40aaa4:	85 c0                	test   %eax,%eax
40aaa6:	7c 05                	jl     0x40aaad
40aaa8:	d1 e0                	shl    $1,%eax
40aaaa:	43                   	inc    %ebx
40aaab:	eb f7                	jmp    0x40aaa4
40aaad:	8b c3                	mov    %ebx,%eax
40aaaf:	6a 3f                	push   $0x3f
40aab1:	69 c0 04 02 00 00    	imul   $0x204,%eax,%eax
40aab7:	5a                   	pop    %edx
40aab8:	8d 84 30 44 01 00 00 	lea    0x144(%eax,%esi,1),%eax
40aabf:	89 45 fc             	mov    %eax,-0x4(%ebp)
40aac2:	89 40 08             	mov    %eax,0x8(%eax)
40aac5:	89 40 04             	mov    %eax,0x4(%eax)
40aac8:	83 c0 08             	add    $0x8,%eax
40aacb:	4a                   	dec    %edx
40aacc:	75 f4                	jne    0x40aac2
40aace:	8b fb                	mov    %ebx,%edi
40aad0:	6a 04                	push   $0x4
40aad2:	c1 e7 0f             	shl    $0xf,%edi
40aad5:	03 79 0c             	add    0xc(%ecx),%edi
40aad8:	68 00 10 00 00       	push   $0x1000
40aadd:	68 00 80 00 00       	push   $0x8000
40aae2:	57                   	push   %edi
40aae3:	ff 15 6c d0 40 00    	call   *0x40d06c
40aae9:	85 c0                	test   %eax,%eax
40aaeb:	75 08                	jne    0x40aaf5
40aaed:	83 c8 ff             	or     $0xffffffff,%eax
40aaf0:	e9 93 00 00 00       	jmp    0x40ab88
40aaf5:	8d 97 00 70 00 00    	lea    0x7000(%edi),%edx
40aafb:	3b fa                	cmp    %edx,%edi
40aafd:	77 3c                	ja     0x40ab3b
40aaff:	8d 47 10             	lea    0x10(%edi),%eax
40ab02:	83 48 f8 ff          	orl    $0xffffffff,-0x8(%eax)
40ab06:	83 88 ec 0f 00 00 ff 	orl    $0xffffffff,0xfec(%eax)
40ab0d:	8d 88 fc 0f 00 00    	lea    0xffc(%eax),%ecx
40ab13:	c7 40 fc f0 0f 00 00 	movl   $0xff0,-0x4(%eax)
40ab1a:	89 08                	mov    %ecx,(%eax)
40ab1c:	8d 88 fc ef ff ff    	lea    -0x1004(%eax),%ecx
40ab22:	89 48 04             	mov    %ecx,0x4(%eax)
40ab25:	c7 80 e8 0f 00 00 f0 	movl   $0xff0,0xfe8(%eax)
40ab2c:	0f 00 00
40ab2f:	05 00 10 00 00       	add    $0x1000,%eax
40ab34:	8d 48 f0             	lea    -0x10(%eax),%ecx
40ab37:	3b ca                	cmp    %edx,%ecx
40ab39:	76 c7                	jbe    0x40ab02
40ab3b:	8b 45 fc             	mov    -0x4(%ebp),%eax
40ab3e:	8d 4f 0c             	lea    0xc(%edi),%ecx
40ab41:	05 f8 01 00 00       	add    $0x1f8,%eax
40ab46:	6a 01                	push   $0x1
40ab48:	5f                   	pop    %edi
40ab49:	89 48 04             	mov    %ecx,0x4(%eax)
40ab4c:	89 41 08             	mov    %eax,0x8(%ecx)
40ab4f:	8d 4a 0c             	lea    0xc(%edx),%ecx
40ab52:	89 48 08             	mov    %ecx,0x8(%eax)
40ab55:	89 41 04             	mov    %eax,0x4(%ecx)
40ab58:	83 64 9e 44 00       	andl   $0x0,0x44(%esi,%ebx,4)
40ab5d:	89 bc 9e c4 00 00 00 	mov    %edi,0xc4(%esi,%ebx,4)
40ab64:	8a 46 43             	mov    0x43(%esi),%al
40ab67:	8a c8                	mov    %al,%cl
40ab69:	fe c1                	inc    %cl
40ab6b:	84 c0                	test   %al,%al
40ab6d:	8b 45 08             	mov    0x8(%ebp),%eax
40ab70:	88 4e 43             	mov    %cl,0x43(%esi)
40ab73:	75 03                	jne    0x40ab78
40ab75:	09 78 04             	or     %edi,0x4(%eax)
40ab78:	ba 00 00 00 80       	mov    $0x80000000,%edx
40ab7d:	8b cb                	mov    %ebx,%ecx
40ab7f:	d3 ea                	shr    %cl,%edx
40ab81:	f7 d2                	not    %edx
40ab83:	21 50 08             	and    %edx,0x8(%eax)
40ab86:	8b c3                	mov    %ebx,%eax
40ab88:	5f                   	pop    %edi
40ab89:	5e                   	pop    %esi
40ab8a:	5b                   	pop    %ebx
40ab8b:	c9                   	leave
40ab8c:	c3                   	ret
40ab8d:	55                   	push   %ebp
40ab8e:	8b ec                	mov    %esp,%ebp
40ab90:	83 ec 0c             	sub    $0xc,%esp
40ab93:	8b 4d 08             	mov    0x8(%ebp),%ecx
40ab96:	8b 45 10             	mov    0x10(%ebp),%eax
40ab99:	53                   	push   %ebx
40ab9a:	56                   	push   %esi
40ab9b:	57                   	push   %edi
40ab9c:	8b 7d 0c             	mov    0xc(%ebp),%edi
40ab9f:	8b d7                	mov    %edi,%edx
40aba1:	8d 70 17             	lea    0x17(%eax),%esi
40aba4:	2b 51 0c             	sub    0xc(%ecx),%edx
40aba7:	8b 41 10             	mov    0x10(%ecx),%eax
40abaa:	83 e6 f0             	and    $0xfffffff0,%esi
40abad:	c1 ea 0f             	shr    $0xf,%edx
40abb0:	8b ca                	mov    %edx,%ecx
40abb2:	69 c9 04 02 00 00    	imul   $0x204,%ecx,%ecx
40abb8:	8d 8c 01 44 01 00 00 	lea    0x144(%ecx,%eax,1),%ecx
40abbf:	89 4d f4             	mov    %ecx,-0xc(%ebp)
40abc2:	8b 4f fc             	mov    -0x4(%edi),%ecx
40abc5:	49                   	dec    %ecx
40abc6:	3b f1                	cmp    %ecx,%esi
40abc8:	89 4d 10             	mov    %ecx,0x10(%ebp)
40abcb:	8b 5c 39 fc          	mov    -0x4(%ecx,%edi,1),%ebx
40abcf:	8d 7c 39 fc          	lea    -0x4(%ecx,%edi,1),%edi
40abd3:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40abd6:	0f 8e 5f 01 00 00    	jle    0x40ad3b
40abdc:	f6 c3 01             	test   $0x1,%bl
40abdf:	0f 85 4f 01 00 00    	jne    0x40ad34
40abe5:	03 d9                	add    %ecx,%ebx
40abe7:	3b f3                	cmp    %ebx,%esi
40abe9:	0f 8f 45 01 00 00    	jg     0x40ad34
40abef:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40abf2:	c1 f9 04             	sar    $0x4,%ecx
40abf5:	49                   	dec    %ecx
40abf6:	83 f9 3f             	cmp    $0x3f,%ecx
40abf9:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40abfc:	76 06                	jbe    0x40ac04
40abfe:	6a 3f                	push   $0x3f
40ac00:	59                   	pop    %ecx