40a5de:	85 c0                	test   %eax,%eax
40a5e0:	0f 84 df 00 00 00    	je     0x40a6c5
40a5e6:	8b 0d 8c 1d 41 00    	mov    0x411d8c,%ecx
40a5ec:	8b 3d 84 d0 40 00    	mov    0x40d084,%edi
40a5f2:	c1 e1 0f             	shl    $0xf,%ecx
40a5f5:	03 48 0c             	add    0xc(%eax),%ecx
40a5f8:	bb 00 80 00 00       	mov    $0x8000,%ebx
40a5fd:	68 00 40 00 00       	push   $0x4000
40a602:	53                   	push   %ebx
40a603:	51                   	push   %ecx
40a604:	ff d7                	call   *%edi
40a606:	8b 0d 8c 1d 41 00    	mov    0x411d8c,%ecx
40a60c:	a1 94 1d 41 00       	mov    0x411d94,%eax
40a611:	ba 00 00 00 80       	mov    $0x80000000,%edx
40a616:	d3 ea                	shr    %cl,%edx
40a618:	09 50 08             	or     %edx,0x8(%eax)
40a61b:	a1 94 1d 41 00       	mov    0x411d94,%eax
40a620:	8b 0d 8c 1d 41 00    	mov    0x411d8c,%ecx
40a626:	8b 40 10             	mov    0x10(%eax),%eax
40a629:	83 a4 88 c4 00 00 00 	andl   $0x0,0xc4(%eax,%ecx,4)
40a630:	00
40a631:	a1 94 1d 41 00       	mov    0x411d94,%eax
40a636:	8b 40 10             	mov    0x10(%eax),%eax
40a639:	fe 48 43             	decb   0x43(%eax)
40a63c:	a1 94 1d 41 00       	mov    0x411d94,%eax
40a641:	8b 48 10             	mov    0x10(%eax),%ecx
40a644:	80 79 43 00          	cmpb   $0x0,0x43(%ecx)
40a648:	75 09                	jne    0x40a653
40a64a:	83 60 04 fe          	andl   $0xfffffffe,0x4(%eax)
40a64e:	a1 94 1d 41 00       	mov    0x411d94,%eax
40a653:	83 78 08 ff          	cmpl   $0xffffffff,0x8(%eax)
40a657:	75 6c                	jne    0x40a6c5
40a659:	53                   	push   %ebx
40a65a:	6a 00                	push   $0x0
40a65c:	ff 70 0c             	push   0xc(%eax)
40a65f:	ff d7                	call   *%edi
40a661:	a1 94 1d 41 00       	mov    0x411d94,%eax
40a666:	ff 70 10             	push   0x10(%eax)
40a669:	6a 00                	push   $0x0
40a66b:	ff 35 a0 1d 41 00    	push   0x411da0
40a671:	ff 15 f4 d0 40 00    	call   *0x40d0f4
40a677:	a1 98 1d 41 00       	mov    0x411d98,%eax
40a67c:	8b 15 9c 1d 41 00    	mov    0x411d9c,%edx
40a682:	8d 04 80             	lea    (%eax,%eax,4),%eax
40a685:	c1 e0 02             	shl    $0x2,%eax
40a688:	8b c8                	mov    %eax,%ecx
40a68a:	a1 94 1d 41 00       	mov    0x411d94,%eax
40a68f:	2b c8                	sub    %eax,%ecx
40a691:	8d 4c 11 ec          	lea    -0x14(%ecx,%edx,1),%ecx
40a695:	51                   	push   %ecx
40a696:	8d 48 14             	lea    0x14(%eax),%ecx
40a699:	51                   	push   %ecx
40a69a:	50                   	push   %eax
40a69b:	e8 a0 bf ff ff       	call   0x406640
40a6a0:	8b 45 08             	mov    0x8(%ebp),%eax
40a6a3:	83 c4 0c             	add    $0xc,%esp
40a6a6:	ff 0d 98 1d 41 00    	decl   0x411d98
40a6ac:	3b 05 94 1d 41 00    	cmp    0x411d94,%eax
40a6b2:	76 03                	jbe    0x40a6b7
40a6b4:	83 e8 14             	sub    $0x14,%eax
40a6b7:	8b 0d 9c 1d 41 00    	mov    0x411d9c,%ecx
40a6bd:	89 0d 90 1d 41 00    	mov    %ecx,0x411d90
40a6c3:	eb 03                	jmp    0x40a6c8
40a6c5:	8b 45 08             	mov    0x8(%ebp),%eax
40a6c8:	a3 94 1d 41 00       	mov    %eax,0x411d94
40a6cd:	89 35 8c 1d 41 00    	mov    %esi,0x411d8c
40a6d3:	5f                   	pop    %edi
40a6d4:	5e                   	pop    %esi
40a6d5:	5b                   	pop    %ebx
40a6d6:	c9                   	leave
40a6d7:	c3                   	ret
40a6d8:	55                   	push   %ebp
40a6d9:	8b ec                	mov    %esp,%ebp
40a6db:	83 ec 14             	sub    $0x14,%esp
40a6de:	a1 98 1d 41 00       	mov    0x411d98,%eax
40a6e3:	8b 15 9c 1d 41 00    	mov    0x411d9c,%edx
40a6e9:	53                   	push   %ebx
40a6ea:	56                   	push   %esi
40a6eb:	8d 04 80             	lea    (%eax,%eax,4),%eax
40a6ee:	57                   	push   %edi
40a6ef:	8d 3c 82             	lea    (%edx,%eax,4),%edi
40a6f2:	8b 45 08             	mov    0x8(%ebp),%eax
40a6f5:	89 7d fc             	mov    %edi,-0x4(%ebp)
40a6f8:	8d 48 17             	lea    0x17(%eax),%ecx
40a6fb:	83 e1 f0             	and    $0xfffffff0,%ecx
40a6fe:	89 4d f0             	mov    %ecx,-0x10(%ebp)
40a701:	c1 f9 04             	sar    $0x4,%ecx
40a704:	49                   	dec    %ecx
40a705:	83 f9 20             	cmp    $0x20,%ecx
40a708:	7d 0e                	jge    0x40a718
40a70a:	83 ce ff             	or     $0xffffffff,%esi
40a70d:	d3 ee                	shr    %cl,%esi
40a70f:	83 4d f8 ff          	orl    $0xffffffff,-0x8(%ebp)
40a713:	89 75 f4             	mov    %esi,-0xc(%ebp)
40a716:	eb 10                	jmp    0x40a728
40a718:	83 c1 e0             	add    $0xffffffe0,%ecx
40a71b:	83 c8 ff             	or     $0xffffffff,%eax
40a71e:	33 f6                	xor    %esi,%esi
40a720:	d3 e8                	shr    %cl,%eax
40a722:	89 75 f4             	mov    %esi,-0xc(%ebp)
40a725:	89 45 f8             	mov    %eax,-0x8(%ebp)
40a728:	a1 90 1d 41 00       	mov    0x411d90,%eax
40a72d:	8b d8                	mov    %eax,%ebx
40a72f:	3b df                	cmp    %edi,%ebx
40a731:	89 5d 08             	mov    %ebx,0x8(%ebp)
40a734:	73 19                	jae    0x40a74f
40a736:	8b 4b 04             	mov    0x4(%ebx),%ecx
40a739:	8b 3b                	mov    (%ebx),%edi
40a73b:	23 4d f8             	and    -0x8(%ebp),%ecx
40a73e:	23 fe                	and    %esi,%edi
40a740:	0b cf                	or     %edi,%ecx
40a742:	75 0b                	jne    0x40a74f
40a744:	83 c3 14             	add    $0x14,%ebx
40a747:	3b 5d fc             	cmp    -0x4(%ebp),%ebx
40a74a:	89 5d 08             	mov    %ebx,0x8(%ebp)
40a74d:	72 e7                	jb     0x40a736
40a74f:	3b 5d fc             	cmp    -0x4(%ebp),%ebx
40a752:	75 79                	jne    0x40a7cd
40a754:	8b da                	mov    %edx,%ebx
40a756:	3b d8                	cmp    %eax,%ebx
40a758:	89 5d 08             	mov    %ebx,0x8(%ebp)
40a75b:	73 15                	jae    0x40a772
40a75d:	8b 4b 04             	mov    0x4(%ebx),%ecx
40a760:	8b 3b                	mov    (%ebx),%edi
40a762:	23 4d f8             	and    -0x8(%ebp),%ecx
40a765:	23 fe                	and    %esi,%edi
40a767:	0b cf                	or     %edi,%ecx
40a769:	75 05                	jne    0x40a770
40a76b:	83 c3 14             	add    $0x14,%ebx
40a76e:	eb e6                	jmp    0x40a756
40a770:	3b d8                	cmp    %eax,%ebx
40a772:	75 59                	jne    0x40a7cd
40a774:	3b 5d fc             	cmp    -0x4(%ebp),%ebx
40a777:	73 11                	jae    0x40a78a
40a779:	83 7b 08 00          	cmpl   $0x0,0x8(%ebx)
40a77d:	75 08                	jne    0x40a787
40a77f:	83 c3 14             	add    $0x14,%ebx
40a782:	89 5d 08             	mov    %ebx,0x8(%ebp)
40a785:	eb ed                	jmp    0x40a774
40a787:	3b 5d fc             	cmp    -0x4(%ebp),%ebx
40a78a:	75 26                	jne    0x40a7b2
40a78c:	8b da                	mov    %edx,%ebx
40a78e:	3b d8                	cmp    %eax,%ebx
40a790:	89 5d 08             	mov    %ebx,0x8(%ebp)
40a793:	73 0d                	jae    0x40a7a2
40a795:	83 7b 08 00          	cmpl   $0x0,0x8(%ebx)
40a799:	75 05                	jne    0x40a7a0
40a79b:	83 c3 14             	add    $0x14,%ebx
40a79e:	eb ee                	jmp    0x40a78e
40a7a0:	3b d8                	cmp    %eax,%ebx
40a7a2:	75 0e                	jne    0x40a7b2
40a7a4:	e8 38 02 00 00       	call   0x40a9e1
40a7a9:	8b d8                	mov    %eax,%ebx
40a7ab:	85 db                	test   %ebx,%ebx
40a7ad:	89 5d 08             	mov    %ebx,0x8(%ebp)
40a7b0:	74 14                	je     0x40a7c6
40a7b2:	53                   	push   %ebx
40a7b3:	e8 da 02 00 00       	call   0x40aa92
40a7b8:	59                   	pop    %ecx
40a7b9:	8b 4b 10             	mov    0x10(%ebx),%ecx
40a7bc:	89 01                	mov    %eax,(%ecx)
40a7be:	8b 43 10             	mov    0x10(%ebx),%eax
40a7c1:	83 38 ff             	cmpl   $0xffffffff,(%eax)
40a7c4:	75 07                	jne    0x40a7cd
40a7c6:	33 c0                	xor    %eax,%eax
40a7c8:	e9 0f 02 00 00       	jmp    0x40a9dc
40a7cd:	89 1d 90 1d 41 00    	mov    %ebx,0x411d90
40a7d3:	8b 43 10             	mov    0x10(%ebx),%eax
40a7d6:	8b 10                	mov    (%eax),%edx
40a7d8:	83 fa ff             	cmp    $0xffffffff,%edx
40a7db:	89 55 fc             	mov    %edx,-0x4(%ebp)
40a7de:	74 14                	je     0x40a7f4
40a7e0:	8b 8c 90 c4 00 00 00 	mov    0xc4(%eax,%edx,4),%ecx
40a7e7:	8b 7c 90 44          	mov    0x44(%eax,%edx,4),%edi
40a7eb:	23 4d f8             	and    -0x8(%ebp),%ecx
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