52841a:	8b 53 1c             	mov    0x1c(%ebx),%edx
52841d:	33 c0                	xor    %eax,%eax
52841f:	c7 02 07 00 00 00    	movl   $0x7,(%edx)
528425:	5f                   	pop    %edi
528426:	5e                   	pop    %esi
528427:	5b                   	pop    %ebx
528428:	c3                   	ret
528429:	90                   	nop
52842a:	90                   	nop
52842b:	90                   	nop
52842c:	85 c0                	test   %eax,%eax
52842e:	74 0f                	je     0x52843f
528430:	83 78 1c 00          	cmpl   $0x0,0x1c(%eax)
528434:	74 09                	je     0x52843f
528436:	8b 50 1c             	mov    0x1c(%eax),%edx
528439:	83 7a 14 00          	cmpl   $0x0,0x14(%edx)
52843d:	75 06                	jne    0x528445
52843f:	b8 fe ff ff ff       	mov    $0xfffffffe,%eax
528444:	c3                   	ret
528445:	8b 48 1c             	mov    0x1c(%eax),%ecx
528448:	8b 41 14             	mov    0x14(%ecx),%eax
52844b:	e8 2c 0e 00 00       	call   0x52927c
528450:	c3                   	ret
528451:	8d 40 00             	lea    0x0(%eax),%eax
528454:	53                   	push   %ebx
528455:	56                   	push   %esi
528456:	8b f2                	mov    %edx,%esi
528458:	8b d8                	mov    %eax,%ebx
52845a:	85 c9                	test   %ecx,%ecx
52845c:	74 05                	je     0x528463
52845e:	8b 43 3c             	mov    0x3c(%ebx),%eax
528461:	89 01                	mov    %eax,(%ecx)
528463:	8b 03                	mov    (%ebx),%eax
528465:	83 f8 04             	cmp    $0x4,%eax
528468:	74 05                	je     0x52846f
52846a:	83 f8 05             	cmp    $0x5,%eax
52846d:	75 09                	jne    0x528478
52846f:	8b 53 0c             	mov    0xc(%ebx),%edx
528472:	8b 46 28             	mov    0x28(%esi),%eax
528475:	ff 56 24             	call   *0x24(%esi)
528478:	83 3b 06             	cmpl   $0x6,(%ebx)
52847b:	75 0a                	jne    0x528487
52847d:	8b d6                	mov    %esi,%edx
52847f:	8b 43 04             	mov    0x4(%ebx),%eax
528482:	e8 ed 1d 00 00       	call   0x52a274
528487:	33 d2                	xor    %edx,%edx
528489:	33 c9                	xor    %ecx,%ecx
52848b:	89 13                	mov    %edx,(%ebx)
52848d:	33 c0                	xor    %eax,%eax
52848f:	89 4b 1c             	mov    %ecx,0x1c(%ebx)
528492:	89 43 20             	mov    %eax,0x20(%ebx)
528495:	8b 53 28             	mov    0x28(%ebx),%edx
528498:	89 53 34             	mov    %edx,0x34(%ebx)
52849b:	89 53 30             	mov    %edx,0x30(%ebx)
52849e:	83 7b 38 00          	cmpl   $0x0,0x38(%ebx)
5284a2:	74 0f                	je     0x5284b3
5284a4:	33 c9                	xor    %ecx,%ecx
5284a6:	33 d2                	xor    %edx,%edx
5284a8:	33 c0                	xor    %eax,%eax
5284aa:	ff 53 38             	call   *0x38(%ebx)
5284ad:	89 43 3c             	mov    %eax,0x3c(%ebx)
5284b0:	89 46 30             	mov    %eax,0x30(%esi)
5284b3:	5e                   	pop    %esi
5284b4:	5b                   	pop    %ebx
5284b5:	c3                   	ret
5284b6:	90                   	nop
5284b7:	90                   	nop
5284b8:	53                   	push   %ebx
5284b9:	56                   	push   %esi
5284ba:	57                   	push   %edi
5284bb:	8b f0                	mov    %eax,%esi
5284bd:	51                   	push   %ecx
5284be:	89 14 24             	mov    %edx,(%esp)
5284c1:	8b f9                	mov    %ecx,%edi
5284c3:	b9 40 00 00 00       	mov    $0x40,%ecx
5284c8:	ba 01 00 00 00       	mov    $0x1,%edx
5284cd:	8b 46 28             	mov    0x28(%esi),%eax
5284d0:	ff 56 20             	call   *0x20(%esi)
5284d3:	8b d8                	mov    %eax,%ebx
5284d5:	85 c0                	test   %eax,%eax
5284d7:	75 04                	jne    0x5284dd
5284d9:	8b c3                	mov    %ebx,%eax
5284db:	eb 6b                	jmp    0x528548
5284dd:	b9 a0 05 00 00       	mov    $0x5a0,%ecx
5284e2:	ba 08 00 00 00       	mov    $0x8,%edx
5284e7:	8b 46 28             	mov    0x28(%esi),%eax
5284ea:	ff 56 20             	call   *0x20(%esi)
5284ed:	89 43 24             	mov    %eax,0x24(%ebx)
5284f0:	85 c0                	test   %eax,%eax
5284f2:	75 0c                	jne    0x528500
5284f4:	8b d3                	mov    %ebx,%edx
5284f6:	8b 46 28             	mov    0x28(%esi),%eax
5284f9:	ff 56 24             	call   *0x24(%esi)
5284fc:	33 c0                	xor    %eax,%eax
5284fe:	eb 48                	jmp    0x528548
528500:	8b cf                	mov    %edi,%ecx
528502:	ba 01 00 00 00       	mov    $0x1,%edx
528507:	8b 46 28             	mov    0x28(%esi),%eax
52850a:	ff 56 20             	call   *0x20(%esi)
52850d:	89 43 28             	mov    %eax,0x28(%ebx)
528510:	85 c0                	test   %eax,%eax
528512:	75 15                	jne    0x528529
528514:	8b 53 24             	mov    0x24(%ebx),%edx
528517:	8b 46 28             	mov    0x28(%esi),%eax
52851a:	ff 56 24             	call   *0x24(%esi)
52851d:	8b d3                	mov    %ebx,%edx
52851f:	8b 46 28             	mov    0x28(%esi),%eax
528522:	ff 56 24             	call   *0x24(%esi)
528525:	33 c0                	xor    %eax,%eax
528527:	eb 1f                	jmp    0x528548
528529:	8b 53 28             	mov    0x28(%ebx),%edx
52852c:	33 c0                	xor    %eax,%eax
52852e:	03 d7                	add    %edi,%edx
528530:	89 53 2c             	mov    %edx,0x2c(%ebx)
528533:	8b d6                	mov    %esi,%edx
528535:	8b 0c 24             	mov    (%esp),%ecx
528538:	89 4b 38             	mov    %ecx,0x38(%ebx)
52853b:	89 03                	mov    %eax,(%ebx)
52853d:	8b c3                	mov    %ebx,%eax
52853f:	33 c9                	xor    %ecx,%ecx
528541:	e8 0e ff ff ff       	call   0x528454
528546:	8b c3                	mov    %ebx,%eax
528548:	5a                   	pop    %edx
528549:	5f                   	pop    %edi
52854a:	5e                   	pop    %esi
52854b:	5b                   	pop    %ebx
52854c:	c3                   	ret
52854d:	90                   	nop
52854e:	90                   	nop
52854f:	90                   	nop
528550:	53                   	push   %ebx
528551:	56                   	push   %esi
528552:	57                   	push   %edi
528553:	55                   	push   %ebp
528554:	83 c4 c4             	add    $0xffffffc4,%esp
528557:	8b f2                	mov    %edx,%esi
528559:	8b d8                	mov    %eax,%ebx
52855b:	89 0c 24             	mov    %ecx,(%esp)
52855e:	8b 06                	mov    (%esi),%eax
528560:	89 44 24 0c          	mov    %eax,0xc(%esp)
528564:	8b 56 04             	mov    0x4(%esi),%edx
528567:	89 54 24 10          	mov    %edx,0x10(%esp)
52856b:	8b 4b 20             	mov    0x20(%ebx),%ecx
52856e:	89 4c 24 08          	mov    %ecx,0x8(%esp)
528572:	8b 7b 1c             	mov    0x1c(%ebx),%edi
528575:	8b 43 34             	mov    0x34(%ebx),%eax
528578:	89 44 24 14          	mov    %eax,0x14(%esp)
52857c:	8b 54 24 14          	mov    0x14(%esp),%edx
528580:	3b 53 30             	cmp    0x30(%ebx),%edx
528583:	73 0a                	jae    0x52858f
528585:	8b 6b 30             	mov    0x30(%ebx),%ebp
528588:	2b 6c 24 14          	sub    0x14(%esp),%ebp
52858c:	4d                   	dec    %ebp
52858d:	eb 07                	jmp    0x528596
52858f:	8b 6b 2c             	mov    0x2c(%ebx),%ebp
528592:	2b 6c 24 14          	sub    0x14(%esp),%ebp
528596:	8b 03                	mov    (%ebx),%eax
528598:	83 f8 09             	cmp    $0x9,%eax
52859b:	0f 87 43 0c 00 00    	ja     0x5291e4
5285a1:	ff 24 85 a8 85 52 00 	jmp    *0x5285a8(,%eax,4)
5285a8:	d0 85 52 00 8a 87    	rolb   $1,-0x7875ffae(%ebp)
5285ae:	52                   	push   %edx
5285af:	00 8d 88 52 00 2d    	add    %cl,0x2d005288(%ebp)
5285b5:	8a 52 00             	mov    0x0(%edx),%dl
5285b8:	23 8c 52 00 fe 8e 52 	and    0x528efe00(%edx,%edx,2),%ecx
5285bf:	00 49 90             	add    %cl,-0x70(%ecx)
5285c2:	52                   	push   %edx
5285c3:	00 ef                	add    %ch,%bh
5285c5:	90                   	nop
5285c6:	52                   	push   %edx
5285c7:	00 6c 91 52          	add    %ch,0x52(%ecx,%edx,4)
5285cb:	00 a8 91 52 00 83    	add    %ch,-0x7cffad6f(%eax)
5285d1:	ff 03                	incl   (%ebx)
5285d3:	73 68                	jae    0x52863d
5285d5:	83 7c 24 10 00       	cmpl   $0x0,0x10(%esp)
5285da:	74 07                	je     0x5285e3
5285dc:	33 d2                	xor    %edx,%edx
5285de:	89 14 24             	mov    %edx,(%esp)
5285e1:	eb 38                	jmp    0x52861b
5285e3:	8b 4c 24 08          	mov    0x8(%esp),%ecx
5285e7:	89 4b 20             	mov    %ecx,0x20(%ebx)
5285ea:	89 7b 1c             	mov    %edi,0x1c(%ebx)
5285ed:	8b 44 24 10          	mov    0x10(%esp),%eax
5285f1:	89 46 04             	mov    %eax,0x4(%esi)
5285f4:	8b 54 24 0c          	mov    0xc(%esp),%edx
5285f8:	2b 16                	sub    (%esi),%edx
5285fa:	01 56 08             	add    %edx,0x8(%esi)
5285fd:	8b d6                	mov    %esi,%edx
5285ff:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
528603:	89 0e                	mov    %ecx,(%esi)
528605:	8b 44 24 14          	mov    0x14(%esp),%eax
528609:	89 43 34             	mov    %eax,0x34(%ebx)
52860c:	8b c3                	mov    %ebx,%eax
52860e:	8b 0c 24             	mov    (%esp),%ecx
528611:	e8 6a 1c 00 00       	call   0x52a280
528616:	e9 03 0c 00 00       	jmp    0x52921e
52861b:	8b cf                	mov    %edi,%ecx
52861d:	ff 4c 24 10          	decl   0x10(%esp)
528621:	8b 54 24 0c          	mov    0xc(%esp),%edx
528625:	8a 02                	mov    (%edx),%al
528627:	33 d2                	xor    %edx,%edx
528629:	8a d0                	mov    %al,%dl
52862b:	d3 e2                	shl    %cl,%edx
52862d:	09 54 24 08          	or     %edx,0x8(%esp)
528631:	ff 44 24 0c          	incl   0xc(%esp)
528635:	83 c7 08             	add    $0x8,%edi
528638:	83 ff 03             	cmp    $0x3,%edi
52863b:	72 98                	jb     0x5285d5
52863d:	8b 4c 24 08          	mov    0x8(%esp),%ecx
528641:	83 e1 07             	and    $0x7,%ecx
528644:	89 4c 24 04          	mov    %ecx,0x4(%esp)
528648:	8b 44 24 04          	mov    0x4(%esp),%eax
52864c:	83 e0 01             	and    $0x1,%eax
52864f:	89 43 18             	mov    %eax,0x18(%ebx)
528652:	8b 54 24 04          	mov    0x4(%esp),%edx
528656:	d1 ea                	shr    $1,%edx
528658:	83 ea 01             	sub    $0x1,%edx
52865b:	72 15                	jb     0x528672
52865d:	74 3b                	je     0x52869a
52865f:	4a                   	dec    %edx
528660:	0f 84 bd 00 00 00    	je     0x528723
528666:	4a                   	dec    %edx
528667:	0f 84 c9 00 00 00    	je     0x528736
52866d:	e9 24 ff ff ff       	jmp    0x528596
528672:	c1 6c 24 08 03       	shrl   $0x3,0x8(%esp)
528677:	83 ef 03             	sub    $0x3,%edi
52867a:	8b cf                	mov    %edi,%ecx
52867c:	83 e1 07             	and    $0x7,%ecx
52867f:	89 4c 24 04          	mov    %ecx,0x4(%esp)
528683:	8b 4c 24 04          	mov    0x4(%esp),%ecx
528687:	d3 6c 24 08          	shrl   %cl,0x8(%esp)
52868b:	2b 7c 24 04          	sub    0x4(%esp),%edi
52868f:	c7 03 01 00 00 00    	movl   $0x1,(%ebx)
528695:	e9 fc fe ff ff       	jmp    0x528596
52869a:	8d 44 24 24          	lea    0x24(%esp),%eax
52869e:	50                   	push   %eax
52869f:	56                   	push   %esi
5286a0:	8d 4c 24 28          	lea    0x28(%esp),%ecx
5286a4:	8d 54 24 24          	lea    0x24(%esp),%edx
5286a8:	8d 44 24 20          	lea    0x20(%esp),%eax
5286ac:	e8 ab 12 00 00       	call   0x52995c
5286b1:	8b 44 24 24          	mov    0x24(%esp),%eax
5286b5:	50                   	push   %eax
5286b6:	56                   	push   %esi
5286b7:	8b 4c 24 28          	mov    0x28(%esp),%ecx
5286bb:	8b 54 24 24          	mov    0x24(%esp),%edx
5286bf:	8b 44 24 20          	mov    0x20(%esp),%eax
5286c3:	e8 c0 12 00 00       	call   0x529988
5286c8:	89 43 04             	mov    %eax,0x4(%ebx)
5286cb:	83 7b 04 00          	cmpl   $0x0,0x4(%ebx)
5286cf:	75 3f                	jne    0x528710
5286d1:	c7 04 24 fc ff ff ff 	movl   $0xfffffffc,(%esp)
5286d8:	8b 54 24 08          	mov    0x8(%esp),%edx
5286dc:	89 53 20             	mov    %edx,0x20(%ebx)
5286df:	89 7b 1c             	mov    %edi,0x1c(%ebx)
5286e2:	8b 4c 24 10          	mov    0x10(%esp),%ecx
5286e6:	89 4e 04             	mov    %ecx,0x4(%esi)
5286e9:	8b 44 24 0c          	mov    0xc(%esp),%eax
5286ed:	2b 06                	sub    (%esi),%eax
5286ef:	01 46 08             	add    %eax,0x8(%esi)
5286f2:	8b c3                	mov    %ebx,%eax
5286f4:	8b 54 24 0c          	mov    0xc(%esp),%edx
5286f8:	89 16                	mov    %edx,(%esi)
5286fa:	8b d6                	mov    %esi,%edx
5286fc:	8b 4c 24 14          	mov    0x14(%esp),%ecx
528700:	89 4b 34             	mov    %ecx,0x34(%ebx)
528703:	8b 0c 24             	mov    (%esp),%ecx
528706:	e8 75 1b 00 00       	call   0x52a280
52870b:	e9 0e 0b 00 00       	jmp    0x52921e
528710:	c1 6c 24 08 03       	shrl   $0x3,0x8(%esp)
528715:	83 ef 03             	sub    $0x3,%edi
528718:	c7 03 06 00 00 00    	movl   $0x6,(%ebx)
52871e:	e9 73 fe ff ff       	jmp    0x528596
528723:	c1 6c 24 08 03       	shrl   $0x3,0x8(%esp)
528728:	83 ef 03             	sub    $0x3,%edi
52872b:	c7 03 03 00 00 00    	movl   $0x3,(%ebx)
528731:	e9 60 fe ff ff       	jmp    0x528596
528736:	c1 6c 24 08 03       	shrl   $0x3,0x8(%esp)
52873b:	c7 03 09 00 00 00    	movl   $0x9,(%ebx)
528741:	83 ef 03             	sub    $0x3,%edi
528744:	c7 46 18 1c 7d 69 00 	movl   $0x697d1c,0x18(%esi)
52874b:	c7 04 24 fd ff ff ff 	movl   $0xfffffffd,(%esp)
528752:	8b 44 24 08          	mov    0x8(%esp),%eax
528756:	89 43 20             	mov    %eax,0x20(%ebx)
528759:	89 7b 1c             	mov    %edi,0x1c(%ebx)
52875c:	8b 54 24 10          	mov    0x10(%esp),%edx
528760:	89 56 04             	mov    %edx,0x4(%esi)
528763:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
528767:	2b 0e                	sub    (%esi),%ecx
528769:	01 4e 08             	add    %ecx,0x8(%esi)
52876c:	8b 44 24 0c          	mov    0xc(%esp),%eax
528770:	89 06                	mov    %eax,(%esi)
528772:	8b c3                	mov    %ebx,%eax
528774:	8b 54 24 14          	mov    0x14(%esp),%edx
528778:	89 53 34             	mov    %edx,0x34(%ebx)
52877b:	8b d6                	mov    %esi,%edx
52877d:	8b 0c 24             	mov    (%esp),%ecx
528780:	e8 fb 1a 00 00       	call   0x52a280
528785:	e9 94 0a 00 00       	jmp    0x52921e
52878a:	83 ff 20             	cmp    $0x20,%edi
52878d:	73 68                	jae    0x5287f7
52878f:	83 7c 24 10 00       	cmpl   $0x0,0x10(%esp)
528794:	74 07                	je     0x52879d
528796:	33 c9                	xor    %ecx,%ecx
528798:	89 0c 24             	mov    %ecx,(%esp)
52879b:	eb 38                	jmp    0x5287d5
52879d:	8b 44 24 08          	mov    0x8(%esp),%eax
5287a1:	89 43 20             	mov    %eax,0x20(%ebx)
5287a4:	89 7b 1c             	mov    %edi,0x1c(%ebx)
5287a7:	8b 54 24 10          	mov    0x10(%esp),%edx
5287ab:	89 56 04             	mov    %edx,0x4(%esi)
5287ae:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
5287b2:	2b 0e                	sub    (%esi),%ecx
5287b4:	01 4e 08             	add    %ecx,0x8(%esi)
5287b7:	8b 44 24 0c          	mov    0xc(%esp),%eax
5287bb:	89 06                	mov    %eax,(%esi)
5287bd:	8b c3                	mov    %ebx,%eax
5287bf:	8b 54 24 14          	mov    0x14(%esp),%edx
5287c3:	89 53 34             	mov    %edx,0x34(%ebx)
5287c6:	8b d6                	mov    %esi,%edx
5287c8:	8b 0c 24             	mov    (%esp),%ecx
5287cb:	e8 b0 1a 00 00       	call   0x52a280
5287d0:	e9 49 0a 00 00       	jmp    0x52921e
5287d5:	8b cf                	mov    %edi,%ecx
5287d7:	ff 4c 24 10          	decl   0x10(%esp)
5287db:	8b 44 24 0c          	mov    0xc(%esp),%eax
5287df:	8a 10                	mov    (%eax),%dl
5287e1:	33 c0                	xor    %eax,%eax
5287e3:	8a c2                	mov    %dl,%al
5287e5:	d3 e0                	shl    %cl,%eax
5287e7:	09 44 24 08          	or     %eax,0x8(%esp)
5287eb:	ff 44 24 0c          	incl   0xc(%esp)
5287ef:	83 c7 08             	add    $0x8,%edi
5287f2:	83 ff 20             	cmp    $0x20,%edi
5287f5:	72 98                	jb     0x52878f
5287f7:	8b 54 24 08          	mov    0x8(%esp),%edx
5287fb:	8b 44 24 08          	mov    0x8(%esp),%eax
5287ff:	f7 d2                	not    %edx
528801:	c1 ea 10             	shr    $0x10,%edx
528804:	25 ff ff 00 00       	and    $0xffff,%eax
528809:	81 e2 ff ff 00 00    	and    $0xffff,%edx
52880f:	3b c2                	cmp    %edx,%eax
528811:	74 4c                	je     0x52885f
528813:	c7 03 09 00 00 00    	movl   $0x9,(%ebx)
528819:	c7 46 18 2f 7d 69 00 	movl   $0x697d2f,0x18(%esi)
528820:	c7 04 24 fd ff ff ff 	movl   $0xfffffffd,(%esp)
528827:	8b 4c 24 08          	mov    0x8(%esp),%ecx
52882b:	89 4b 20             	mov    %ecx,0x20(%ebx)
52882e:	89 7b 1c             	mov    %edi,0x1c(%ebx)
528831:	8b 44 24 10          	mov    0x10(%esp),%eax