40a3dc:	8d 8c 01 44 01 00 00 	lea    0x144(%ecx,%eax,1),%ecx
40a3e3:	89 5d f4             	mov    %ebx,-0xc(%ebp)
40a3e6:	89 4d f0             	mov    %ecx,-0x10(%ebp)
40a3e9:	8b 0c 13             	mov    (%ebx,%edx,1),%ecx
40a3ec:	f6 c1 01             	test   $0x1,%cl
40a3ef:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40a3f2:	75 7f                	jne    0x40a473
40a3f4:	c1 f9 04             	sar    $0x4,%ecx
40a3f7:	6a 3f                	push   $0x3f
40a3f9:	49                   	dec    %ecx
40a3fa:	5f                   	pop    %edi
40a3fb:	89 4d 0c             	mov    %ecx,0xc(%ebp)
40a3fe:	3b cf                	cmp    %edi,%ecx
40a400:	76 03                	jbe    0x40a405
40a402:	89 7d 0c             	mov    %edi,0xc(%ebp)
40a405:	8b 4c 13 04          	mov    0x4(%ebx,%edx,1),%ecx
40a409:	3b 4c 13 08          	cmp    0x8(%ebx,%edx,1),%ecx
40a40d:	75 48                	jne    0x40a457
40a40f:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40a412:	83 f9 20             	cmp    $0x20,%ecx
40a415:	73 1c                	jae    0x40a433
40a417:	bf 00 00 00 80       	mov    $0x80000000,%edi
40a41c:	d3 ef                	shr    %cl,%edi
40a41e:	8d 4c 01 04          	lea    0x4(%ecx,%eax,1),%ecx
40a422:	f7 d7                	not    %edi
40a424:	21 7c b0 44          	and    %edi,0x44(%eax,%esi,4)
40a428:	fe 09                	decb   (%ecx)
40a42a:	75 2b                	jne    0x40a457
40a42c:	8b 4d 08             	mov    0x8(%ebp),%ecx
40a42f:	21 39                	and    %edi,(%ecx)
40a431:	eb 24                	jmp    0x40a457
40a433:	83 c1 e0             	add    $0xffffffe0,%ecx
40a436:	bf 00 00 00 80       	mov    $0x80000000,%edi
40a43b:	d3 ef                	shr    %cl,%edi
40a43d:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40a440:	8d 4c 01 04          	lea    0x4(%ecx,%eax,1),%ecx
40a444:	f7 d7                	not    %edi
40a446:	21 bc b0 c4 00 00 00 	and    %edi,0xc4(%eax,%esi,4)
40a44d:	fe 09                	decb   (%ecx)
40a44f:	75 06                	jne    0x40a457
40a451:	8b 4d 08             	mov    0x8(%ebp),%ecx
40a454:	21 79 04             	and    %edi,0x4(%ecx)
40a457:	8b 4c 13 08          	mov    0x8(%ebx,%edx,1),%ecx
40a45b:	8b 7c 13 04          	mov    0x4(%ebx,%edx,1),%edi
40a45f:	89 79 04             	mov    %edi,0x4(%ecx)
40a462:	8b 4c 13 04          	mov    0x4(%ebx,%edx,1),%ecx
40a466:	8b 7c 13 08          	mov    0x8(%ebx,%edx,1),%edi
40a46a:	03 5d f8             	add    -0x8(%ebp),%ebx
40a46d:	89 79 08             	mov    %edi,0x8(%ecx)
40a470:	89 5d f4             	mov    %ebx,-0xc(%ebp)
40a473:	8b fb                	mov    %ebx,%edi
40a475:	c1 ff 04             	sar    $0x4,%edi
40a478:	4f                   	dec    %edi
40a479:	83 ff 3f             	cmp    $0x3f,%edi
40a47c:	76 03                	jbe    0x40a481
40a47e:	6a 3f                	push   $0x3f
40a480:	5f                   	pop    %edi
40a481:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40a484:	83 e1 01             	and    $0x1,%ecx
40a487:	89 4d ec             	mov    %ecx,-0x14(%ebp)
40a48a:	0f 85 a0 00 00 00    	jne    0x40a530
40a490:	2b 55 fc             	sub    -0x4(%ebp),%edx
40a493:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40a496:	c1 f9 04             	sar    $0x4,%ecx
40a499:	6a 3f                	push   $0x3f
40a49b:	89 55 f8             	mov    %edx,-0x8(%ebp)
40a49e:	49                   	dec    %ecx
40a49f:	5a                   	pop    %edx
40a4a0:	3b ca                	cmp    %edx,%ecx
40a4a2:	89 4d 0c             	mov    %ecx,0xc(%ebp)
40a4a5:	76 05                	jbe    0x40a4ac
40a4a7:	89 55 0c             	mov    %edx,0xc(%ebp)
40a4aa:	8b ca                	mov    %edx,%ecx
40a4ac:	03 5d fc             	add    -0x4(%ebp),%ebx
40a4af:	8b fb                	mov    %ebx,%edi
40a4b1:	89 5d f4             	mov    %ebx,-0xc(%ebp)
40a4b4:	c1 ff 04             	sar    $0x4,%edi
40a4b7:	4f                   	dec    %edi
40a4b8:	3b fa                	cmp    %edx,%edi
40a4ba:	76 02                	jbe    0x40a4be
40a4bc:	8b fa                	mov    %edx,%edi
40a4be:	3b cf                	cmp    %edi,%ecx
40a4c0:	74 6b                	je     0x40a52d
40a4c2:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40a4c5:	8b 51 04             	mov    0x4(%ecx),%edx
40a4c8:	3b 51 08             	cmp    0x8(%ecx),%edx
40a4cb:	75 48                	jne    0x40a515
40a4cd:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40a4d0:	83 f9 20             	cmp    $0x20,%ecx
40a4d3:	73 1c                	jae    0x40a4f1
40a4d5:	ba 00 00 00 80       	mov    $0x80000000,%edx
40a4da:	d3 ea                	shr    %cl,%edx
40a4dc:	8d 4c 01 04          	lea    0x4(%ecx,%eax,1),%ecx
40a4e0:	f7 d2                	not    %edx
40a4e2:	21 54 b0 44          	and    %edx,0x44(%eax,%esi,4)
40a4e6:	fe 09                	decb   (%ecx)
40a4e8:	75 2b                	jne    0x40a515
40a4ea:	8b 4d 08             	mov    0x8(%ebp),%ecx
40a4ed:	21 11                	and    %edx,(%ecx)
40a4ef:	eb 24                	jmp    0x40a515
40a4f1:	83 c1 e0             	add    $0xffffffe0,%ecx
40a4f4:	ba 00 00 00 80       	mov    $0x80000000,%edx
40a4f9:	d3 ea                	shr    %cl,%edx
40a4fb:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40a4fe:	8d 4c 01 04          	lea    0x4(%ecx,%eax,1),%ecx
40a502:	f7 d2                	not    %edx
40a504:	21 94 b0 c4 00 00 00 	and    %edx,0xc4(%eax,%esi,4)
40a50b:	fe 09                	decb   (%ecx)
40a50d:	75 06                	jne    0x40a515
40a50f:	8b 4d 08             	mov    0x8(%ebp),%ecx
40a512:	21 51 04             	and    %edx,0x4(%ecx)
40a515:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40a518:	8b 51 08             	mov    0x8(%ecx),%edx
40a51b:	8b 49 04             	mov    0x4(%ecx),%ecx
40a51e:	89 4a 04             	mov    %ecx,0x4(%edx)
40a521:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40a524:	8b 51 04             	mov    0x4(%ecx),%edx
40a527:	8b 49 08             	mov    0x8(%ecx),%ecx
40a52a:	89 4a 08             	mov    %ecx,0x8(%edx)
40a52d:	8b 55 f8             	mov    -0x8(%ebp),%edx
40a530:	83 7d ec 00          	cmpl   $0x0,-0x14(%ebp)
40a534:	75 09                	jne    0x40a53f
40a536:	39 7d 0c             	cmp    %edi,0xc(%ebp)
40a539:	0f 84 89 00 00 00    	je     0x40a5c8
40a53f:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40a542:	8d 0c f9             	lea    (%ecx,%edi,8),%ecx
40a545:	8b 49 04             	mov    0x4(%ecx),%ecx
40a548:	89 4a 04             	mov    %ecx,0x4(%edx)
40a54b:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40a54e:	8d 0c f9             	lea    (%ecx,%edi,8),%ecx
40a551:	89 4a 08             	mov    %ecx,0x8(%edx)
40a554:	89 51 04             	mov    %edx,0x4(%ecx)
40a557:	8b 4a 04             	mov    0x4(%edx),%ecx
40a55a:	89 51 08             	mov    %edx,0x8(%ecx)
40a55d:	8b 4a 04             	mov    0x4(%edx),%ecx
40a560:	3b 4a 08             	cmp    0x8(%edx),%ecx
40a563:	75 63                	jne    0x40a5c8
40a565:	8a 4c 07 04          	mov    0x4(%edi,%eax,1),%cl
40a569:	83 ff 20             	cmp    $0x20,%edi
40a56c:	88 4d 0f             	mov    %cl,0xf(%ebp)
40a56f:	fe c1                	inc    %cl
40a571:	88 4c 07 04          	mov    %cl,0x4(%edi,%eax,1)
40a575:	73 25                	jae    0x40a59c
40a577:	80 7d 0f 00          	cmpb   $0x0,0xf(%ebp)
40a57b:	75 0e                	jne    0x40a58b
40a57d:	bb 00 00 00 80       	mov    $0x80000000,%ebx
40a582:	8b cf                	mov    %edi,%ecx
40a584:	d3 eb                	shr    %cl,%ebx
40a586:	8b 4d 08             	mov    0x8(%ebp),%ecx
40a589:	09 19                	or     %ebx,(%ecx)
40a58b:	bb 00 00 00 80       	mov    $0x80000000,%ebx
40a590:	8b cf                	mov    %edi,%ecx
40a592:	d3 eb                	shr    %cl,%ebx
40a594:	8d 44 b0 44          	lea    0x44(%eax,%esi,4),%eax
40a598:	09 18                	or     %ebx,(%eax)
40a59a:	eb 29                	jmp    0x40a5c5
40a59c:	80 7d 0f 00          	cmpb   $0x0,0xf(%ebp)
40a5a0:	75 10                	jne    0x40a5b2
40a5a2:	8d 4f e0             	lea    -0x20(%edi),%ecx
40a5a5:	bb 00 00 00 80       	mov    $0x80000000,%ebx
40a5aa:	d3 eb                	shr    %cl,%ebx
40a5ac:	8b 4d 08             	mov    0x8(%ebp),%ecx
40a5af:	09 59 04             	or     %ebx,0x4(%ecx)
40a5b2:	8d 4f e0             	lea    -0x20(%edi),%ecx
40a5b5:	bf 00 00 00 80       	mov    $0x80000000,%edi
40a5ba:	d3 ef                	shr    %cl,%edi
40a5bc:	8d 84 b0 c4 00 00 00 	lea    0xc4(%eax,%esi,4),%eax
40a5c3:	09 38                	or     %edi,(%eax)
40a5c5:	8b 5d f4             	mov    -0xc(%ebp),%ebx
40a5c8:	8b 45 f0             	mov    -0x10(%ebp),%eax
40a5cb:	89 1a                	mov    %ebx,(%edx)
40a5cd:	89 5c 13 fc          	mov    %ebx,-0x4(%ebx,%edx,1)
40a5d1:	ff 08                	decl   (%eax)
40a5d3:	0f 85 fa 00 00 00    	jne    0x40a6d3
40a5d9:	a1 94 1d 41 00       	mov    0x411d94,%eax
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