40d24a:	89 4b fc             	mov    %ecx,-0x4(%ebx)
40d24d:	76 03                	jbe    0x40d252
40d24f:	6a 3f                	push   $0x3f
40d251:	5e                   	pop    %esi
40d252:	f6 45 fc 01          	testb  $0x1,-0x4(%ebp)
40d256:	0f 85 80 00 00 00    	jne    0x40d2dc
40d25c:	8b 75 fc             	mov    -0x4(%ebp),%esi
40d25f:	c1 fe 04             	sar    $0x4,%esi
40d262:	4e                   	dec    %esi
40d263:	83 fe 3f             	cmp    $0x3f,%esi
40d266:	76 03                	jbe    0x40d26b
40d268:	6a 3f                	push   $0x3f
40d26a:	5e                   	pop    %esi
40d26b:	8b 4f 04             	mov    0x4(%edi),%ecx
40d26e:	3b 4f 08             	cmp    0x8(%edi),%ecx
40d271:	75 42                	jne    0x40d2b5
40d273:	83 fe 20             	cmp    $0x20,%esi
40d276:	bb 00 00 00 80       	mov    $0x80000000,%ebx
40d27b:	73 19                	jae    0x40d296
40d27d:	8b ce                	mov    %esi,%ecx
40d27f:	d3 eb                	shr    %cl,%ebx
40d281:	8d 74 06 04          	lea    0x4(%esi,%eax,1),%esi
40d285:	f7 d3                	not    %ebx
40d287:	21 5c 90 44          	and    %ebx,0x44(%eax,%edx,4)
40d28b:	fe 0e                	decb   (%esi)
40d28d:	75 23                	jne    0x40d2b2
40d28f:	8b 4d 08             	mov    0x8(%ebp),%ecx
40d292:	21 19                	and    %ebx,(%ecx)
40d294:	eb 1c                	jmp    0x40d2b2
40d296:	8d 4e e0             	lea    -0x20(%esi),%ecx
40d299:	d3 eb                	shr    %cl,%ebx
40d29b:	8d 4c 06 04          	lea    0x4(%esi,%eax,1),%ecx
40d29f:	f7 d3                	not    %ebx
40d2a1:	21 9c 90 c4 00 00 00 	and    %ebx,0xc4(%eax,%edx,4)
40d2a8:	fe 09                	decb   (%ecx)
40d2aa:	75 06                	jne    0x40d2b2
40d2ac:	8b 4d 08             	mov    0x8(%ebp),%ecx
40d2af:	21 59 04             	and    %ebx,0x4(%ecx)
40d2b2:	8b 5d 0c             	mov    0xc(%ebp),%ebx
40d2b5:	8b 4f 08             	mov    0x8(%edi),%ecx
40d2b8:	8b 77 04             	mov    0x4(%edi),%esi
40d2bb:	89 71 04             	mov    %esi,0x4(%ecx)
40d2be:	8b 77 08             	mov    0x8(%edi),%esi
40d2c1:	8b 4f 04             	mov    0x4(%edi),%ecx
40d2c4:	89 71 08             	mov    %esi,0x8(%ecx)
40d2c7:	8b 75 10             	mov    0x10(%ebp),%esi
40d2ca:	03 75 fc             	add    -0x4(%ebp),%esi
40d2cd:	89 75 10             	mov    %esi,0x10(%ebp)
40d2d0:	c1 fe 04             	sar    $0x4,%esi
40d2d3:	4e                   	dec    %esi
40d2d4:	83 fe 3f             	cmp    $0x3f,%esi
40d2d7:	76 03                	jbe    0x40d2dc
40d2d9:	6a 3f                	push   $0x3f
40d2db:	5e                   	pop    %esi
40d2dc:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40d2df:	8d 0c f1             	lea    (%ecx,%esi,8),%ecx
40d2e2:	8b 79 04             	mov    0x4(%ecx),%edi
40d2e5:	89 4b 08             	mov    %ecx,0x8(%ebx)
40d2e8:	89 7b 04             	mov    %edi,0x4(%ebx)
40d2eb:	89 59 04             	mov    %ebx,0x4(%ecx)
40d2ee:	8b 4b 04             	mov    0x4(%ebx),%ecx
40d2f1:	89 59 08             	mov    %ebx,0x8(%ecx)
40d2f4:	8b 4b 04             	mov    0x4(%ebx),%ecx
40d2f7:	3b 4b 08             	cmp    0x8(%ebx),%ecx
40d2fa:	75 57                	jne    0x40d353
40d2fc:	8a 4c 06 04          	mov    0x4(%esi,%eax,1),%cl
40d300:	88 4d 0f             	mov    %cl,0xf(%ebp)
40d303:	fe c1                	inc    %cl
40d305:	83 fe 20             	cmp    $0x20,%esi
40d308:	88 4c 06 04          	mov    %cl,0x4(%esi,%eax,1)
40d30c:	73 1c                	jae    0x40d32a
40d30e:	80 7d 0f 00          	cmpb   $0x0,0xf(%ebp)
40d312:	75 0e                	jne    0x40d322
40d314:	8b ce                	mov    %esi,%ecx
40d316:	bf 00 00 00 80       	mov    $0x80000000,%edi
40d31b:	d3 ef                	shr    %cl,%edi
40d31d:	8b 4d 08             	mov    0x8(%ebp),%ecx
40d320:	09 39                	or     %edi,(%ecx)
40d322:	8d 44 90 44          	lea    0x44(%eax,%edx,4),%eax
40d326:	8b ce                	mov    %esi,%ecx
40d328:	eb 20                	jmp    0x40d34a
40d32a:	80 7d 0f 00          	cmpb   $0x0,0xf(%ebp)
40d32e:	75 10                	jne    0x40d340
40d330:	8d 4e e0             	lea    -0x20(%esi),%ecx
40d333:	bf 00 00 00 80       	mov    $0x80000000,%edi
40d338:	d3 ef                	shr    %cl,%edi
40d33a:	8b 4d 08             	mov    0x8(%ebp),%ecx
40d33d:	09 79 04             	or     %edi,0x4(%ecx)
40d340:	8d 84 90 c4 00 00 00 	lea    0xc4(%eax,%edx,4),%eax
40d347:	8d 4e e0             	lea    -0x20(%esi),%ecx
40d34a:	ba 00 00 00 80       	mov    $0x80000000,%edx
40d34f:	d3 ea                	shr    %cl,%edx
40d351:	09 10                	or     %edx,(%eax)
40d353:	8b 45 10             	mov    0x10(%ebp),%eax
40d356:	89 03                	mov    %eax,(%ebx)
40d358:	89 44 18 fc          	mov    %eax,-0x4(%eax,%ebx,1)
40d35c:	33 c0                	xor    %eax,%eax
40d35e:	40                   	inc    %eax
40d35f:	5f                   	pop    %edi
40d360:	5e                   	pop    %esi
40d361:	5b                   	pop    %ebx
40d362:	c9                   	leave
40d363:	c3                   	ret
40d364:	55                   	push   %ebp
40d365:	8b ec                	mov    %esp,%ebp
40d367:	83 ec 14             	sub    $0x14,%esp
40d36a:	a1 d8 e5 41 00       	mov    0x41e5d8,%eax
40d36f:	8b 4d 08             	mov    0x8(%ebp),%ecx
40d372:	6b c0 14             	imul   $0x14,%eax,%eax
40d375:	03 05 dc e5 41 00    	add    0x41e5dc,%eax
40d37b:	83 c1 17             	add    $0x17,%ecx
40d37e:	83 e1 f0             	and    $0xfffffff0,%ecx
40d381:	89 4d f0             	mov    %ecx,-0x10(%ebp)
40d384:	c1 f9 04             	sar    $0x4,%ecx
40d387:	53                   	push   %ebx
40d388:	49                   	dec    %ecx
40d389:	83 f9 20             	cmp    $0x20,%ecx
40d38c:	56                   	push   %esi
40d38d:	57                   	push   %edi
40d38e:	7d 0b                	jge    0x40d39b
40d390:	83 ce ff             	or     $0xffffffff,%esi
40d393:	d3 ee                	shr    %cl,%esi
40d395:	83 4d f8 ff          	orl    $0xffffffff,-0x8(%ebp)
40d399:	eb 0d                	jmp    0x40d3a8
40d39b:	83 c1 e0             	add    $0xffffffe0,%ecx
40d39e:	83 ca ff             	or     $0xffffffff,%edx
40d3a1:	33 f6                	xor    %esi,%esi
40d3a3:	d3 ea                	shr    %cl,%edx
40d3a5:	89 55 f8             	mov    %edx,-0x8(%ebp)
40d3a8:	8b 0d e4 e5 41 00    	mov    0x41e5e4,%ecx
40d3ae:	8b d9                	mov    %ecx,%ebx
40d3b0:	eb 11                	jmp    0x40d3c3
40d3b2:	8b 53 04             	mov    0x4(%ebx),%edx
40d3b5:	8b 3b                	mov    (%ebx),%edi
40d3b7:	23 55 f8             	and    -0x8(%ebp),%edx
40d3ba:	23 fe                	and    %esi,%edi
40d3bc:	0b d7                	or     %edi,%edx
40d3be:	75 0a                	jne    0x40d3ca
40d3c0:	83 c3 14             	add    $0x14,%ebx
40d3c3:	3b d8                	cmp    %eax,%ebx
40d3c5:	89 5d 08             	mov    %ebx,0x8(%ebp)
40d3c8:	72 e8                	jb     0x40d3b2
40d3ca:	3b d8                	cmp    %eax,%ebx
40d3cc:	75 7f                	jne    0x40d44d
40d3ce:	8b 1d dc e5 41 00    	mov    0x41e5dc,%ebx
40d3d4:	eb 11                	jmp    0x40d3e7
40d3d6:	8b 53 04             	mov    0x4(%ebx),%edx
40d3d9:	8b 3b                	mov    (%ebx),%edi
40d3db:	23 55 f8             	and    -0x8(%ebp),%edx
40d3de:	23 fe                	and    %esi,%edi
40d3e0:	0b d7                	or     %edi,%edx
40d3e2:	75 0a                	jne    0x40d3ee
40d3e4:	83 c3 14             	add    $0x14,%ebx
40d3e7:	3b d9                	cmp    %ecx,%ebx
40d3e9:	89 5d 08             	mov    %ebx,0x8(%ebp)
40d3ec:	72 e8                	jb     0x40d3d6
40d3ee:	3b d9                	cmp    %ecx,%ebx
40d3f0:	75 5b                	jne    0x40d44d
40d3f2:	eb 0c                	jmp    0x40d400
40d3f4:	83 7b 08 00          	cmpl   $0x0,0x8(%ebx)
40d3f8:	75 0a                	jne    0x40d404
40d3fa:	83 c3 14             	add    $0x14,%ebx
40d3fd:	89 5d 08             	mov    %ebx,0x8(%ebp)
40d400:	3b d8                	cmp    %eax,%ebx
40d402:	72 f0                	jb     0x40d3f4
40d404:	3b d8                	cmp    %eax,%ebx
40d406:	75 31                	jne    0x40d439
40d408:	8b 1d dc e5 41 00    	mov    0x41e5dc,%ebx
40d40e:	eb 09                	jmp    0x40d419
40d410:	83 7b 08 00          	cmpl   $0x0,0x8(%ebx)
40d414:	75 0a                	jne    0x40d420
40d416:	83 c3 14             	add    $0x14,%ebx
40d419:	3b d9                	cmp    %ecx,%ebx
40d41b:	89 5d 08             	mov    %ebx,0x8(%ebp)
40d41e:	72 f0                	jb     0x40d410
40d420:	3b d9                	cmp    %ecx,%ebx
40d422:	75 15                	jne    0x40d439
40d424:	e8 a6 fa ff ff       	call   0x40cecf
40d429:	8b d8                	mov    %eax,%ebx
40d42b:	85 db                	test   %ebx,%ebx
40d42d:	89 5d 08             	mov    %ebx,0x8(%ebp)
40d430:	75 07                	jne    0x40d439
40d432:	33 c0                	xor    %eax,%eax
40d434:	e9 09 02 00 00       	jmp    0x40d642
40d439:	53                   	push   %ebx
40d43a:	e8 40 fb ff ff       	call   0x40cf7f
40d43f:	59                   	pop    %ecx
40d440:	8b 4b 10             	mov    0x10(%ebx),%ecx
40d443:	89 01                	mov    %eax,(%ecx)
40d445:	8b 43 10             	mov    0x10(%ebx),%eax
40d448:	83 38 ff             	cmpl   $0xffffffff,(%eax)
40d44b:	74 e5                	je     0x40d432
40d44d:	89 1d e4 e5 41 00    	mov    %ebx,0x41e5e4
40d453:	8b 43 10             	mov    0x10(%ebx),%eax
40d456:	8b 10                	mov    (%eax),%edx
40d458:	83 fa ff             	cmp    $0xffffffff,%edx
40d45b:	89 55 fc             	mov    %edx,-0x4(%ebp)
40d45e:	74 14                	je     0x40d474
40d460:	8b 8c 90 c4 00 00 00 	mov    0xc4(%eax,%edx,4),%ecx
40d467:	8b 7c 90 44          	mov    0x44(%eax,%edx,4),%edi
40d46b:	23 4d f8             	and    -0x8(%ebp),%ecx
40d46e:	23 fe                	and    %esi,%edi
40d470:	0b cf                	or     %edi,%ecx
40d472:	75 29                	jne    0x40d49d
40d474:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40d478:	8b 90 c4 00 00 00    	mov    0xc4(%eax),%edx
40d47e:	8d 48 44             	lea    0x44(%eax),%ecx
40d481:	8b 39                	mov    (%ecx),%edi
40d483:	23 55 f8             	and    -0x8(%ebp),%edx
40d486:	23 fe                	and    %esi,%edi
40d488:	0b d7                	or     %edi,%edx
40d48a:	75 0e                	jne    0x40d49a
40d48c:	ff 45 fc             	incl   -0x4(%ebp)
40d48f:	8b 91 84 00 00 00    	mov    0x84(%ecx),%edx
40d495:	83 c1 04             	add    $0x4,%ecx
40d498:	eb e7                	jmp    0x40d481
40d49a:	8b 55 fc             	mov    -0x4(%ebp),%edx
40d49d:	8b ca                	mov    %edx,%ecx
40d49f:	69 c9 04 02 00 00    	imul   $0x204,%ecx,%ecx
40d4a5:	8d 8c 01 44 01 00 00 	lea    0x144(%ecx,%eax,1),%ecx
40d4ac:	89 4d f4             	mov    %ecx,-0xc(%ebp)
40d4af:	8b 4c 90 44          	mov    0x44(%eax,%edx,4),%ecx
40d4b3:	33 ff                	xor    %edi,%edi
40d4b5:	23 ce                	and    %esi,%ecx
40d4b7:	75 12                	jne    0x40d4cb
40d4b9:	8b 8c 90 c4 00 00 00 	mov    0xc4(%eax,%edx,4),%ecx
40d4c0:	23 4d f8             	and    -0x8(%ebp),%ecx
40d4c3:	6a 20                	push   $0x20
40d4c5:	5f                   	pop    %edi
40d4c6:	eb 03                	jmp    0x40d4cb
40d4c8:	03 c9                	add    %ecx,%ecx
40d4ca:	47                   	inc    %edi
40d4cb:	85 c9                	test   %ecx,%ecx
40d4cd:	7d f9                	jge    0x40d4c8
40d4cf:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40d4d2:	8b 54 f9 04          	mov    0x4(%ecx,%edi,8),%edx
40d4d6:	8b 0a                	mov    (%edx),%ecx
40d4d8:	2b 4d f0             	sub    -0x10(%ebp),%ecx
40d4db:	8b f1                	mov    %ecx,%esi
40d4dd:	c1 fe 04             	sar    $0x4,%esi
40d4e0:	4e                   	dec    %esi
40d4e1:	83 fe 3f             	cmp    $0x3f,%esi
40d4e4:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40d4e7:	7e 03                	jle    0x40d4ec
40d4e9:	6a 3f                	push   $0x3f
40d4eb:	5e                   	pop    %esi
40d4ec:	3b f7                	cmp    %edi,%esi
40d4ee:	0f 84 01 01 00 00    	je     0x40d5f5
40d4f4:	8b 4a 04             	mov    0x4(%edx),%ecx
40d4f7:	3b 4a 08             	cmp    0x8(%edx),%ecx
40d4fa:	75 5c                	jne    0x40d558
40d4fc:	83 ff 20             	cmp    $0x20,%edi
40d4ff:	bb 00 00 00 80       	mov    $0x80000000,%ebx
40d504:	7d 26                	jge    0x40d52c
40d506:	8b cf                	mov    %edi,%ecx
40d508:	d3 eb                	shr    %cl,%ebx
40d50a:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40d50d:	8d 7c 38 04          	lea    0x4(%eax,%edi,1),%edi
40d511:	f7 d3                	not    %ebx
40d513:	89 5d ec             	mov    %ebx,-0x14(%ebp)
40d516:	23 5c 88 44          	and    0x44(%eax,%ecx,4),%ebx
40d51a:	89 5c 88 44          	mov    %ebx,0x44(%eax,%ecx,4)
40d51e:	fe 0f                	decb   (%edi)
40d520:	75 33                	jne    0x40d555
40d522:	8b 4d ec             	mov    -0x14(%ebp),%ecx
40d525:	8b 5d 08             	mov    0x8(%ebp),%ebx
40d528:	21 0b                	and    %ecx,(%ebx)
40d52a:	eb 2c                	jmp    0x40d558
40d52c:	8d 4f e0             	lea    -0x20(%edi),%ecx
40d52f:	d3 eb                	shr    %cl,%ebx
40d531:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40d534:	8d 8c 88 c4 00 00 00 	lea    0xc4(%eax,%ecx,4),%ecx
40d53b:	8d 7c 38 04          	lea    0x4(%eax,%edi,1),%edi
40d53f:	f7 d3                	not    %ebx
40d541:	21 19                	and    %ebx,(%ecx)
40d543:	fe 0f                	decb   (%edi)
40d545:	89 5d ec             	mov    %ebx,-0x14(%ebp)
40d548:	75 0b                	jne    0x40d555
40d54a:	8b 5d 08             	mov    0x8(%ebp),%ebx
40d54d:	8b 4d ec             	mov    -0x14(%ebp),%ecx
40d550:	21 4b 04             	and    %ecx,0x4(%ebx)
40d553:	eb 03                	jmp    0x40d558
40d555:	8b 5d 08             	mov    0x8(%ebp),%ebx
40d558:	83 7d f8 00          	cmpl   $0x0,-0x8(%ebp)
40d55c:	8b 4a 08             	mov    0x8(%edx),%ecx
40d55f:	8b 7a 04             	mov    0x4(%edx),%edi
40d562:	89 79 04             	mov    %edi,0x4(%ecx)
40d565:	8b 4a 04             	mov    0x4(%edx),%ecx
40d568:	8b 7a 08             	mov    0x8(%edx),%edi
40d56b:	89 79 08             	mov    %edi,0x8(%ecx)
40d56e:	0f 84 8d 00 00 00    	je     0x40d601
40d574:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40d577:	8d 0c f1             	lea    (%ecx,%esi,8),%ecx
40d57a:	8b 79 04             	mov    0x4(%ecx),%edi
40d57d:	89 4a 08             	mov    %ecx,0x8(%edx)
40d580:	89 7a 04             	mov    %edi,0x4(%edx)
40d583:	89 51 04             	mov    %edx,0x4(%ecx)
40d586:	8b 4a 04             	mov    0x4(%edx),%ecx
40d589:	89 51 08             	mov    %edx,0x8(%ecx)
40d58c:	8b 4a 04             	mov    0x4(%edx),%ecx
40d58f:	3b 4a 08             	cmp    0x8(%edx),%ecx
40d592:	75 5e                	jne    0x40d5f2
40d594:	8a 4c 06 04          	mov    0x4(%esi,%eax,1),%cl
40d598:	88 4d 0b             	mov    %cl,0xb(%ebp)
40d59b:	fe c1                	inc    %cl
40d59d:	83 fe 20             	cmp    $0x20,%esi
40d5a0:	88 4c 06 04          	mov    %cl,0x4(%esi,%eax,1)
40d5a4:	7d 23                	jge    0x40d5c9
40d5a6:	80 7d 0b 00          	cmpb   $0x0,0xb(%ebp)
40d5aa:	75 0b                	jne    0x40d5b7
40d5ac:	bf 00 00 00 80       	mov    $0x80000000,%edi
40d5b1:	8b ce                	mov    %esi,%ecx
40d5b3:	d3 ef                	shr    %cl,%edi
40d5b5:	09 3b                	or     %edi,(%ebx)
40d5b7:	8b ce                	mov    %esi,%ecx
40d5b9:	bf 00 00 00 80       	mov    $0x80000000,%edi
40d5be:	d3 ef                	shr    %cl,%edi
40d5c0:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40d5c3:	09 7c 88 44          	or     %edi,0x44(%eax,%ecx,4)
40d5c7:	eb 29                	jmp    0x40d5f2
40d5c9:	80 7d 0b 00          	cmpb   $0x0,0xb(%ebp)
40d5cd:	75 0d                	jne    0x40d5dc
40d5cf:	8d 4e e0             	lea    -0x20(%esi),%ecx
40d5d2:	bf 00 00 00 80       	mov    $0x80000000,%edi
40d5d7:	d3 ef                	shr    %cl,%edi
40d5d9:	09 7b 04             	or     %edi,0x4(%ebx)
40d5dc:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40d5df:	8d bc 88 c4 00 00 00 	lea    0xc4(%eax,%ecx,4),%edi
40d5e6:	8d 4e e0             	lea    -0x20(%esi),%ecx
40d5e9:	be 00 00 00 80       	mov    $0x80000000,%esi
40d5ee:	d3 ee                	shr    %cl,%esi
40d5f0:	09 37                	or     %esi,(%edi)
40d5f2:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40d5f5:	85 c9                	test   %ecx,%ecx
40d5f7:	74 0b                	je     0x40d604
40d5f9:	89 0a                	mov    %ecx,(%edx)
40d5fb:	89 4c 11 fc          	mov    %ecx,-0x4(%ecx,%edx,1)
40d5ff:	eb 03                	jmp    0x40d604
40d601:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40d604:	8b 75 f0             	mov    -0x10(%ebp),%esi
40d607:	03 d1                	add    %ecx,%edx
40d609:	8d 4e 01             	lea    0x1(%esi),%ecx
40d60c:	89 0a                	mov    %ecx,(%edx)
40d60e:	89 4c 32 fc          	mov    %ecx,-0x4(%edx,%esi,1)
40d612:	8b 75 f4             	mov    -0xc(%ebp),%esi
40d615:	8b 0e                	mov    (%esi),%ecx
40d617:	85 c9                	test   %ecx,%ecx
40d619:	8d 79 01             	lea    0x1(%ecx),%edi
40d61c:	89 3e                	mov    %edi,(%esi)
40d61e:	75 1a                	jne    0x40d63a