504295:	7e 17                	jle    0x5042ae
504297:	8b cb                	mov    %ebx,%ecx
504299:	ba 01 00 00 00       	mov    $0x1,%edx
50429e:	d3 e2                	shl    %cl,%edx
5042a0:	3b c2                	cmp    %edx,%eax
5042a2:	7c 0a                	jl     0x5042ae
5042a4:	8b cb                	mov    %ebx,%ecx
5042a6:	b8 01 00 00 00       	mov    $0x1,%eax
5042ab:	d3 e0                	shl    %cl,%eax
5042ad:	48                   	dec    %eax
5042ae:	f7 d8                	neg    %eax
5042b0:	66 89 84 24 aa 00 00 	mov    %ax,0xaa(%esp)
5042b7:	00
5042b8:	8b 54 24 50          	mov    0x50(%esp),%edx
5042bc:	8b 5a 14             	mov    0x14(%edx),%ebx
5042bf:	85 db                	test   %ebx,%ebx
5042c1:	0f 84 96 00 00 00    	je     0x50435d
5042c7:	66 83 bc 24 9c 00 00 	cmpw   $0x0,0x9c(%esp)
5042ce:	00 00
5042d0:	0f 85 87 00 00 00    	jne    0x50435d
5042d6:	03 b4 24 80 00 00 00 	add    0x80(%esp),%esi
5042dd:	8b 44 24 7c          	mov    0x7c(%esp),%eax
5042e1:	03 c0                	add    %eax,%eax
5042e3:	2b f0                	sub    %eax,%esi
5042e5:	0f af 74 24 58       	imul   0x58(%esp),%esi
5042ea:	8d 0c f6             	lea    (%esi,%esi,8),%ecx
5042ed:	85 c9                	test   %ecx,%ecx
5042ef:	7c 32                	jl     0x504323
5042f1:	8b 44 24 60          	mov    0x60(%esp),%eax
5042f5:	8b 54 24 60          	mov    0x60(%esp),%edx
5042f9:	c1 e0 07             	shl    $0x7,%eax
5042fc:	c1 e2 08             	shl    $0x8,%edx
5042ff:	03 c1                	add    %ecx,%eax
504301:	8b ca                	mov    %edx,%ecx
504303:	99                   	cltd
504304:	f7 f9                	idiv   %ecx
504306:	85 db                	test   %ebx,%ebx
504308:	7e 4b                	jle    0x504355
50430a:	8b cb                	mov    %ebx,%ecx
50430c:	ba 01 00 00 00       	mov    $0x1,%edx
504311:	d3 e2                	shl    %cl,%edx
504313:	3b c2                	cmp    %edx,%eax
504315:	7c 3e                	jl     0x504355
504317:	8b cb                	mov    %ebx,%ecx
504319:	b8 01 00 00 00       	mov    $0x1,%eax
50431e:	d3 e0                	shl    %cl,%eax
504320:	48                   	dec    %eax
504321:	eb 32                	jmp    0x504355
504323:	8b 44 24 60          	mov    0x60(%esp),%eax
504327:	8b 54 24 60          	mov    0x60(%esp),%edx
50432b:	c1 e0 07             	shl    $0x7,%eax
50432e:	c1 e2 08             	shl    $0x8,%edx
504331:	2b c1                	sub    %ecx,%eax
504333:	8b ca                	mov    %edx,%ecx
504335:	99                   	cltd
504336:	f7 f9                	idiv   %ecx
504338:	85 db                	test   %ebx,%ebx
50433a:	7e 17                	jle    0x504353
50433c:	8b cb                	mov    %ebx,%ecx
50433e:	ba 01 00 00 00       	mov    $0x1,%edx
504343:	d3 e2                	shl    %cl,%edx
504345:	3b c2                	cmp    %edx,%eax
504347:	7c 0a                	jl     0x504353
504349:	8b cb                	mov    %ebx,%ecx
50434b:	b8 01 00 00 00       	mov    $0x1,%eax
504350:	d3 e0                	shl    %cl,%eax
504352:	48                   	dec    %eax
504353:	f7 d8                	neg    %eax
504355:	66 89 84 24 9c 00 00 	mov    %ax,0x9c(%esp)
50435c:	00
50435d:	8b 54 24 38          	mov    0x38(%esp),%edx
504361:	52                   	push   %edx
504362:	8b 44 24 40          	mov    0x40(%esp),%eax
504366:	50                   	push   %eax
504367:	8d 8c 24 a0 00 00 00 	lea    0xa0(%esp),%ecx
50436e:	8b 54 24 48          	mov    0x48(%esp),%edx
504372:	8b 44 24 08          	mov    0x8(%esp),%eax
504376:	ff 54 24 4c          	call   *0x4c(%esp)
50437a:	8b 54 24 74          	mov    0x74(%esp),%edx
50437e:	89 54 24 70          	mov    %edx,0x70(%esp)
504382:	8b 4c 24 78          	mov    0x78(%esp),%ecx
504386:	89 4c 24 74          	mov    %ecx,0x74(%esp)
50438a:	8b 74 24 7c          	mov    0x7c(%esp),%esi
50438e:	8b 84 24 80 00 00 00 	mov    0x80(%esp),%eax
504395:	89 44 24 7c          	mov    %eax,0x7c(%esp)
504399:	8b 94 24 88 00 00 00 	mov    0x88(%esp),%edx
5043a0:	89 94 24 84 00 00 00 	mov    %edx,0x84(%esp)
5043a7:	8b 8c 24 8c 00 00 00 	mov    0x8c(%esp),%ecx
5043ae:	89 8c 24 88 00 00 00 	mov    %ecx,0x88(%esp)
5043b5:	81 44 24 2c 80 00 00 	addl   $0x80,0x2c(%esp)
5043bc:	00
5043bd:	81 44 24 30 80 00 00 	addl   $0x80,0x30(%esp)
5043c4:	00
5043c5:	81 44 24 34 80 00 00 	addl   $0x80,0x34(%esp)
5043cc:	00
5043cd:	8b 44 24 40          	mov    0x40(%esp),%eax
5043d1:	8b 50 24             	mov    0x24(%eax),%edx
5043d4:	01 54 24 3c          	add    %edx,0x3c(%esp)
5043d8:	ff 44 24 10          	incl   0x10(%esp)
5043dc:	8b 4c 24 10          	mov    0x10(%esp),%ecx
5043e0:	3b 4c 24 14          	cmp    0x14(%esp),%ecx
5043e4:	0f 86 e2 fb ff ff    	jbe    0x503fcc
5043ea:	8b 44 24 40          	mov    0x40(%esp),%eax
5043ee:	8b 50 24             	mov    0x24(%eax),%edx
5043f1:	c1 e2 02             	shl    $0x2,%edx
5043f4:	01 54 24 38          	add    %edx,0x38(%esp)
5043f8:	ff 44 24 1c          	incl   0x1c(%esp)
5043fc:	83 84 24 94 00 00 00 	addl   $0x4,0x94(%esp)
504403:	04
504404:	8b 4c 24 1c          	mov    0x1c(%esp),%ecx
504408:	3b 4c 24 20          	cmp    0x20(%esp),%ecx
50440c:	0f 8c f4 fa ff ff    	jl     0x503f06
504412:	ff 44 24 18          	incl   0x18(%esp)
504416:	83 44 24 40 54       	addl   $0x54,0x40(%esp)
50441b:	8b 04 24             	mov    (%esp),%eax
50441e:	8b 50 20             	mov    0x20(%eax),%edx
504421:	3b 54 24 18          	cmp    0x18(%esp),%edx
504425:	0f 8f 2f f9 ff ff    	jg     0x503d5a
50442b:	8b 0c 24             	mov    (%esp),%ecx
50442e:	ff 81 98 00 00 00    	incl   0x98(%ecx)
504434:	8b 81 98 00 00 00    	mov    0x98(%ecx),%eax
50443a:	8b 14 24             	mov    (%esp),%edx
50443d:	3b 82 38 01 00 00    	cmp    0x138(%edx),%eax
504443:	73 07                	jae    0x50444c
504445:	b8 03 00 00 00       	mov    $0x3,%eax
50444a:	eb 05                	jmp    0x504451
50444c:	b8 04 00 00 00       	mov    $0x4,%eax
504451:	81 c4 18 01 00 00    	add    $0x118,%esp
504457:	5e                   	pop    %esi
504458:	5b                   	pop    %ebx
504459:	c3                   	ret
50445a:	90                   	nop
50445b:	90                   	nop
50445c:	53                   	push   %ebx
50445d:	56                   	push   %esi
50445e:	57                   	push   %edi
50445f:	8b f8                	mov    %eax,%edi
504461:	8b c7                	mov    %edi,%eax
504463:	55                   	push   %ebp
504464:	8b da                	mov    %edx,%ebx
504466:	ba 01 00 00 00       	mov    $0x1,%edx
50446b:	8b 70 04             	mov    0x4(%eax),%esi
50446e:	83 c4 f4             	add    $0xfffffff4,%esp
504471:	b9 74 00 00 00       	mov    $0x74,%ecx
504476:	ff 16                	call   *(%esi)
504478:	8b f0                	mov    %eax,%esi
50447a:	33 c0                	xor    %eax,%eax
50447c:	89 b7 a4 01 00 00    	mov    %esi,0x1a4(%edi)
504482:	85 db                	test   %ebx,%ebx
504484:	c7 06 1c 35 50 00    	movl   $0x50351c,(%esi)
50448a:	c7 46 08 2c 35 50 00 	movl   $0x50352c,0x8(%esi)
504491:	89 46 70             	mov    %eax,0x70(%esi)
504494:	0f 84 8d 00 00 00    	je     0x504527
50449a:	33 d2                	xor    %edx,%edx
50449c:	89 14 24             	mov    %edx,(%esp)
50449f:	8b 9f d4 00 00 00    	mov    0xd4(%edi),%ebx
5044a5:	8d 46 48             	lea    0x48(%esi),%eax
5044a8:	89 44 24 08          	mov    %eax,0x8(%esp)
5044ac:	eb 5b                	jmp    0x504509
5044ae:	8b 53 0c             	mov    0xc(%ebx),%edx
5044b1:	89 54 24 04          	mov    %edx,0x4(%esp)
5044b5:	83 bf d8 00 00 00 00 	cmpl   $0x0,0xd8(%edi)
5044bc:	74 0b                	je     0x5044c9
5044be:	8b 4c 24 04          	mov    0x4(%esp),%ecx
5044c2:	8d 0c 49             	lea    (%ecx,%ecx,2),%ecx
5044c5:	89 4c 24 04          	mov    %ecx,0x4(%esp)
5044c9:	8b 53 08             	mov    0x8(%ebx),%edx
5044cc:	8b 43 1c             	mov    0x1c(%ebx),%eax
5044cf:	e8 a8 36 00 00       	call   0x507b7c
5044d4:	50                   	push   %eax
5044d5:	8b 53 0c             	mov    0xc(%ebx),%edx
5044d8:	8b 43 20             	mov    0x20(%ebx),%eax
5044db:	e8 9c 36 00 00       	call   0x507b7c
5044e0:	50                   	push   %eax
5044e1:	8b c7                	mov    %edi,%eax
5044e3:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
5044e7:	ba 01 00 00 00       	mov    $0x1,%edx
5044ec:	51                   	push   %ecx
5044ed:	b9 01 00 00 00       	mov    $0x1,%ecx
5044f2:	8b 68 04             	mov    0x4(%eax),%ebp
5044f5:	ff 55 14             	call   *0x14(%ebp)
5044f8:	8b 54 24 08          	mov    0x8(%esp),%edx
5044fc:	89 02                	mov    %eax,(%edx)
5044fe:	83 44 24 08 04       	addl   $0x4,0x8(%esp)
504503:	ff 04 24             	incl   (%esp)
504506:	83 c3 54             	add    $0x54,%ebx
504509:	8b 47 20             	mov    0x20(%edi),%eax
50450c:	3b 04 24             	cmp    (%esp),%eax
50450f:	7f 9d                	jg     0x5044ae
504511:	c7 46 04 bc 37 50 00 	movl   $0x5037bc,0x4(%esi)
504518:	c7 46 0c ac 39 50 00 	movl   $0x5039ac,0xc(%esi)
50451f:	8d 4e 48             	lea    0x48(%esi),%ecx
504522:	89 4e 10             	mov    %ecx,0x10(%esi)
504525:	eb 3e                	jmp    0x504565
504527:	8b c7                	mov    %edi,%eax
504529:	b9 00 05 00 00       	mov    $0x500,%ecx
50452e:	ba 01 00 00 00       	mov    $0x1,%edx
504533:	8b 58 04             	mov    0x4(%eax),%ebx
504536:	ff 53 04             	call   *0x4(%ebx)
504539:	8b c8                	mov    %eax,%ecx
50453b:	33 c0                	xor    %eax,%eax
50453d:	8d 56 20             	lea    0x20(%esi),%edx
504540:	8b d8                	mov    %eax,%ebx
504542:	40                   	inc    %eax
504543:	c1 e3 07             	shl    $0x7,%ebx
504546:	03 d9                	add    %ecx,%ebx
504548:	89 1a                	mov    %ebx,(%edx)
50454a:	83 c2 04             	add    $0x4,%edx
50454d:	83 f8 0a             	cmp    $0xa,%eax
504550:	7c ee                	jl     0x504540
504552:	c7 46 04 b8 37 50 00 	movl   $0x5037b8,0x4(%esi)
504559:	c7 46 0c 68 35 50 00 	movl   $0x503568,0xc(%esi)
504560:	33 c0                	xor    %eax,%eax
504562:	89 46 10             	mov    %eax,0x10(%esi)
504565:	83 c4 0c             	add    $0xc,%esp
504568:	5d                   	pop    %ebp
504569:	5f                   	pop    %edi
50456a:	5e                   	pop    %esi
50456b:	5b                   	pop    %ebx
50456c:	c3                   	ret
50456d:	8d 40 00             	lea    0x0(%eax),%eax
504570:	53                   	push   %ebx
504571:	56                   	push   %esi
504572:	8b f0                	mov    %eax,%esi
504574:	83 ea 01             	sub    $0x1,%edx
504577:	8b 9e a8 01 00 00    	mov    0x1a8(%esi),%ebx
50457d:	72 08                	jb     0x504587
50457f:	4a                   	dec    %edx
504580:	74 5c                	je     0x5045de
504582:	4a                   	dec    %edx
504583:	74 3b                	je     0x5045c0
504585:	eb 75                	jmp    0x5045fc
504587:	83 7e 50 00          	cmpl   $0x0,0x50(%esi)
50458b:	74 25                	je     0x5045b2
50458d:	c7 43 04 18 46 50 00 	movl   $0x504618,0x4(%ebx)
504594:	83 7b 0c 00          	cmpl   $0x0,0xc(%ebx)
504598:	75 71                	jne    0x50460b
50459a:	8b 43 10             	mov    0x10(%ebx),%eax
50459d:	33 c9                	xor    %ecx,%ecx
50459f:	50                   	push   %eax
5045a0:	8b c6                	mov    %esi,%eax
5045a2:	6a 01                	push   $0x1
5045a4:	8b 70 04             	mov    0x4(%eax),%esi
5045a7:	8b 53 08             	mov    0x8(%ebx),%edx
5045aa:	ff 56 1c             	call   *0x1c(%esi)
5045ad:	89 43 0c             	mov    %eax,0xc(%ebx)
5045b0:	eb 59                	jmp    0x50460b
5045b2:	8b 86 bc 01 00 00    	mov    0x1bc(%esi),%eax
5045b8:	8b 50 04             	mov    0x4(%eax),%edx
5045bb:	89 53 04             	mov    %edx,0x4(%ebx)
5045be:	eb 4b                	jmp    0x50460b
5045c0:	83 7b 08 00          	cmpl   $0x0,0x8(%ebx)
5045c4:	75 0f                	jne    0x5045d5
5045c6:	8b 0e                	mov    (%esi),%ecx
5045c8:	8b c6                	mov    %esi,%eax
5045ca:	c7 41 14 04 00 00 00 	movl   $0x4,0x14(%ecx)
5045d1:	8b 10                	mov    (%eax),%edx
5045d3:	ff 12                	call   *(%edx)
5045d5:	c7 43 04 94 46 50 00 	movl   $0x504694,0x4(%ebx)
5045dc:	eb 2d                	jmp    0x50460b
5045de:	83 7b 08 00          	cmpl   $0x0,0x8(%ebx)
5045e2:	75 0f                	jne    0x5045f3
5045e4:	8b 0e                	mov    (%esi),%ecx
5045e6:	8b c6                	mov    %esi,%eax
5045e8:	c7 41 14 04 00 00 00 	movl   $0x4,0x14(%ecx)
5045ef:	8b 10                	mov    (%eax),%edx
5045f1:	ff 12                	call   *(%edx)
5045f3:	c7 43 04 38 47 50 00 	movl   $0x504738,0x4(%ebx)
5045fa:	eb 0f                	jmp    0x50460b
5045fc:	8b 0e                	mov    (%esi),%ecx
5045fe:	8b c6                	mov    %esi,%eax
504600:	c7 41 14 04 00 00 00 	movl   $0x4,0x14(%ecx)
504607:	8b 10                	mov    (%eax),%edx
504609:	ff 12                	call   *(%edx)
50460b:	33 c9                	xor    %ecx,%ecx
50460d:	89 4b 18             	mov    %ecx,0x18(%ebx)
504610:	89 4b 14             	mov    %ecx,0x14(%ebx)
504613:	5e                   	pop    %esi
504614:	5b                   	pop    %ebx
504615:	c3                   	ret
504616:	90                   	nop
504617:	90                   	nop
504618:	55                   	push   %ebp
504619:	8b ec                	mov    %esp,%ebp
50461b:	83 c4 f4             	add    $0xfffffff4,%esp
50461e:	53                   	push   %ebx
50461f:	56                   	push   %esi
504620:	89 4d f8             	mov    %ecx,-0x8(%ebp)
504623:	89 45 fc             	mov    %eax,-0x4(%ebp)
504626:	8b 45 fc             	mov    -0x4(%ebp),%eax
504629:	8b 98 a8 01 00 00    	mov    0x1a8(%eax),%ebx
50462f:	8b 45 0c             	mov    0xc(%ebp),%eax
504632:	ff 30                	push   (%eax)
504634:	8b 45 08             	mov    0x8(%ebp),%eax
504637:	59                   	pop    %ecx
504638:	2b c1                	sub    %ecx,%eax
50463a:	8b 4b 10             	mov    0x10(%ebx),%ecx
50463d:	3b c1                	cmp    %ecx,%eax
50463f:	76 02                	jbe    0x504643
504641:	8b c1                	mov    %ecx,%eax
504643:	33 c9                	xor    %ecx,%ecx
504645:	89 4d f4             	mov    %ecx,-0xc(%ebp)
504648:	8b 4d 14             	mov    0x14(%ebp),%ecx
50464b:	51                   	push   %ecx
50464c:	8b 4b 0c             	mov    0xc(%ebx),%ecx
50464f:	51                   	push   %ecx
504650:	8d 4d f4             	lea    -0xc(%ebp),%ecx
504653:	51                   	push   %ecx
504654:	50                   	push   %eax
504655:	8b 4d f8             	mov    -0x8(%ebp),%ecx
504658:	8b 45 fc             	mov    -0x4(%ebp),%eax
50465b:	8b b0 bc 01 00 00    	mov    0x1bc(%eax),%esi
504661:	ff 56 04             	call   *0x4(%esi)
504664:	8b 45 f4             	mov    -0xc(%ebp),%eax
504667:	50                   	push   %eax
504668:	8b 55 0c             	mov    0xc(%ebp),%edx
50466b:	8b 45 fc             	mov    -0x4(%ebp),%eax
50466e:	8b 0a                	mov    (%edx),%ecx
504670:	8b 53 0c             	mov    0xc(%ebx),%edx
504673:	c1 e1 02             	shl    $0x2,%ecx
504676:	8b 98 c4 01 00 00    	mov    0x1c4(%eax),%ebx
50467c:	03 4d 10             	add    0x10(%ebp),%ecx
50467f:	ff 53 04             	call   *0x4(%ebx)
504682:	8b 45 0c             	mov    0xc(%ebp),%eax
504685:	8b 55 f4             	mov    -0xc(%ebp),%edx
504688:	01 10                	add    %edx,(%eax)
50468a:	5e                   	pop    %esi
50468b:	5b                   	pop    %ebx
50468c:	8b e5                	mov    %ebp,%esp
50468e:	5d                   	pop    %ebp
50468f:	c2 10 00             	ret    $0x10
504692:	90                   	nop
504693:	90                   	nop
504694:	55                   	push   %ebp
504695:	8b ec                	mov    %esp,%ebp
504697:	83 c4 f0             	add    $0xfffffff0,%esp
50469a:	53                   	push   %ebx
50469b:	56                   	push   %esi
50469c:	57                   	push   %edi
50469d:	8b f0                	mov    %eax,%esi
50469f:	89 4d f8             	mov    %ecx,-0x8(%ebp)
5046a2:	89 55 fc             	mov    %edx,-0x4(%ebp)
5046a5:	8b 9e a8 01 00 00    	mov    0x1a8(%esi),%ebx
5046ab:	83 7b 18 00          	cmpl   $0x0,0x18(%ebx)
5046af:	75 17                	jne    0x5046c8
5046b1:	8b 43 10             	mov    0x10(%ebx),%eax
5046b4:	50                   	push   %eax
5046b5:	8b c6                	mov    %esi,%eax
5046b7:	6a 01                	push   $0x1
5046b9:	8b 78 04             	mov    0x4(%eax),%edi