5942e2:	89 4c 24 18          	mov    %ecx,0x18(%esp)
5942e6:	8b fb                	mov    %ebx,%edi
5942e8:	f7 df                	neg    %edi
5942ea:	03 ff                	add    %edi,%edi
5942ec:	8d 3c 7f             	lea    (%edi,%edi,2),%edi
5942ef:	01 7c 24 18          	add    %edi,0x18(%esp)
5942f3:	89 4c 24 1c          	mov    %ecx,0x1c(%esp)
5942f7:	8b fe                	mov    %esi,%edi
5942f9:	66 83 e7 01          	and    $0x1,%di
5942fd:	0f b7 ff             	movzwl %di,%edi
594300:	33 ed                	xor    %ebp,%ebp
594302:	2b ef                	sub    %edi,%ebp
594304:	8b fd                	mov    %ebp,%edi
594306:	03 ff                	add    %edi,%edi
594308:	8d 3c 7f             	lea    (%edi,%edi,2),%edi
59430b:	01 7c 24 1c          	add    %edi,0x1c(%esp)
59430f:	89 4c 24 20          	mov    %ecx,0x20(%esp)
594313:	8b fb                	mov    %ebx,%edi
594315:	03 ff                	add    %edi,%edi
594317:	8d 3c 7f             	lea    (%edi,%edi,2),%edi
59431a:	01 7c 24 20          	add    %edi,0x20(%esp)
59431e:	89 4c 24 24          	mov    %ecx,0x24(%esp)
594322:	8b ce                	mov    %esi,%ecx
594324:	66 83 e1 01          	and    $0x1,%cx
594328:	0f b7 c9             	movzwl %cx,%ecx
59432b:	bf 01 00 00 00       	mov    $0x1,%edi
594330:	2b f9                	sub    %ecx,%edi
594332:	8b cf                	mov    %edi,%ecx
594334:	03 c9                	add    %ecx,%ecx
594336:	8d 0c 49             	lea    (%ecx,%ecx,2),%ecx
594339:	01 4c 24 24          	add    %ecx,0x24(%esp)
59433d:	0f b7 c8             	movzwl %ax,%ecx
594340:	8b 7c 24 18          	mov    0x18(%esp),%edi
594344:	0f b7 0c 4f          	movzwl (%edi,%ecx,2),%ecx
594348:	0f b7 f8             	movzwl %ax,%edi
59434b:	8b 6c 24 1c          	mov    0x1c(%esp),%ebp
59434f:	0f b7 7c 7d 00       	movzwl 0x0(%ebp,%edi,2),%edi
594354:	03 cf                	add    %edi,%ecx
594356:	0f b7 f8             	movzwl %ax,%edi
594359:	8b 6c 24 20          	mov    0x20(%esp),%ebp
59435d:	0f b7 7c 7d 00       	movzwl 0x0(%ebp,%edi,2),%edi
594362:	03 cf                	add    %edi,%ecx
594364:	0f b7 f8             	movzwl %ax,%edi
594367:	8b 6c 24 24          	mov    0x24(%esp),%ebp
59436b:	0f b7 7c 7d 00       	movzwl 0x0(%ebp,%edi,2),%edi
594370:	03 cf                	add    %edi,%ecx
594372:	c1 e9 02             	shr    $0x2,%ecx
594375:	0f b7 fa             	movzwl %dx,%edi
594378:	8d 3c 7f             	lea    (%edi,%edi,2),%edi
59437b:	8b 6c 24 14          	mov    0x14(%esp),%ebp
59437f:	8d 7c 7d 00          	lea    0x0(%ebp,%edi,2),%edi
594383:	57                   	push   %edi
594384:	0f b7 f8             	movzwl %ax,%edi
594387:	5d                   	pop    %ebp
594388:	66 89 4c 7d 00       	mov    %cx,0x0(%ebp,%edi,2)
59438d:	40                   	inc    %eax
59438e:	66 83 f8 03          	cmp    $0x3,%ax
594392:	0f 85 46 ff ff ff    	jne    0x5942de
594398:	eb 1c                	jmp    0x5943b6
59439a:	0f b7 c2             	movzwl %dx,%eax
59439d:	8d 04 40             	lea    (%eax,%eax,2),%eax
5943a0:	8b 4c 24 14          	mov    0x14(%esp),%ecx
5943a4:	8b 7c 24 10          	mov    0x10(%esp),%edi
5943a8:	8b 2f                	mov    (%edi),%ebp
5943aa:	89 2c 41             	mov    %ebp,(%ecx,%eax,2)
5943ad:	66 8b 6f 04          	mov    0x4(%edi),%bp
5943b1:	66 89 6c 41 04       	mov    %bp,0x4(%ecx,%eax,2)
5943b6:	42                   	inc    %edx
5943b7:	66 ff 4c 24 3e       	decw   0x3e(%esp)
5943bc:	0f 85 ca fe ff ff    	jne    0x59428c
5943c2:	8b 54 24 38          	mov    0x38(%esp),%edx
5943c6:	8b 44 24 04          	mov    0x4(%esp),%eax
5943ca:	8b 08                	mov    (%eax),%ecx
5943cc:	ff 11                	call   *(%ecx)
5943ce:	8b d3                	mov    %ebx,%edx
5943d0:	03 d2                	add    %edx,%edx
5943d2:	8d 14 52             	lea    (%edx,%edx,2),%edx
5943d5:	8b ca                	mov    %edx,%ecx
5943d7:	03 c9                	add    %ecx,%ecx
5943d9:	8b 54 24 14          	mov    0x14(%esp),%edx
5943dd:	e8 de 3a e7 ff       	call   0x407ec0
5943e2:	ff 44 24 38          	incl   0x38(%esp)
5943e6:	46                   	inc    %esi
5943e7:	66 ff 4c 24 3c       	decw   0x3c(%esp)
5943ec:	0f 85 83 fe ff ff    	jne    0x594275
5943f2:	8b 44 24 0c          	mov    0xc(%esp),%eax
5943f6:	e8 d1 e3 e6 ff       	call   0x4027cc
5943fb:	8b 44 24 14          	mov    0x14(%esp),%eax
5943ff:	e8 c8 e3 e6 ff       	call   0x4027cc
594404:	8b 54 24 04          	mov    0x4(%esp),%edx
594408:	8b 04 24             	mov    (%esp),%eax
59440b:	8b 08                	mov    (%eax),%ecx
59440d:	ff 51 28             	call   *0x28(%ecx)
594410:	8b 44 24 04          	mov    0x4(%esp),%eax
594414:	e8 5f f6 e6 ff       	call   0x403a78
594419:	83 c4 40             	add    $0x40,%esp
59441c:	5d                   	pop    %ebp
59441d:	5f                   	pop    %edi
59441e:	5e                   	pop    %esi
59441f:	5b                   	pop    %ebx
594420:	c3                   	ret
594421:	8d 40 00             	lea    0x0(%eax),%eax
594424:	53                   	push   %ebx
594425:	56                   	push   %esi
594426:	57                   	push   %edi
594427:	55                   	push   %ebp
594428:	83 c4 c0             	add    $0xffffffc0,%esp
59442b:	89 04 24             	mov    %eax,(%esp)
59442e:	b2 01                	mov    $0x1,%dl
594430:	a1 18 ff 5e 00       	mov    0x5eff18,%eax
594435:	e8 6a 31 06 00       	call   0x5f75a4
59443a:	89 44 24 04          	mov    %eax,0x4(%esp)
59443e:	8b 04 24             	mov    (%esp),%eax
594441:	8b 10                	mov    (%eax),%edx
594443:	ff 52 0c             	call   *0xc(%edx)
594446:	89 44 24 28          	mov    %eax,0x28(%esp)
59444a:	8b 04 24             	mov    (%esp),%eax
59444d:	8b 10                	mov    (%eax),%edx
59444f:	ff 52 08             	call   *0x8(%edx)
594452:	8b f0                	mov    %eax,%esi
594454:	33 c0                	xor    %eax,%eax
594456:	89 44 24 34          	mov    %eax,0x34(%esp)
59445a:	33 c0                	xor    %eax,%eax
59445c:	89 44 24 38          	mov    %eax,0x38(%esp)
594460:	8b 44 24 28          	mov    0x28(%esp),%eax
594464:	8d 04 40             	lea    (%eax,%eax,2),%eax
594467:	e8 48 4c e7 ff       	call   0x4090b4
59446c:	89 44 24 08          	mov    %eax,0x8(%esp)
594470:	8b 54 24 34          	mov    0x34(%esp),%edx
594474:	8b 04 24             	mov    (%esp),%eax
594477:	8b 08                	mov    (%eax),%ecx
594479:	ff 11                	call   *(%ecx)
59447b:	8b d0                	mov    %eax,%edx
59447d:	8b 44 24 28          	mov    0x28(%esp),%eax
594481:	8d 0c 40             	lea    (%eax,%eax,2),%ecx
594484:	8b 44 24 08          	mov    0x8(%esp),%eax
594488:	e8 33 3a e7 ff       	call   0x407ec0
59448d:	ff 44 24 34          	incl   0x34(%esp)
594491:	66 8b 44 24 28       	mov    0x28(%esp),%ax
594496:	48                   	dec    %eax
594497:	66 85 c0             	test   %ax,%ax
59449a:	72 36                	jb     0x5944d2
59449c:	40                   	inc    %eax
59449d:	66 89 44 24 3c       	mov    %ax,0x3c(%esp)
5944a2:	33 c0                	xor    %eax,%eax
5944a4:	0f b7 d0             	movzwl %ax,%edx
5944a7:	8d 14 52             	lea    (%edx,%edx,2),%edx
5944aa:	8b 4c 24 08          	mov    0x8(%esp),%ecx
5944ae:	80 3c 11 00          	cmpb   $0x0,(%ecx,%edx,1)
5944b2:	75 1e                	jne    0x5944d2
5944b4:	8b 4c 24 08          	mov    0x8(%esp),%ecx
5944b8:	80 7c 11 01 00       	cmpb   $0x0,0x1(%ecx,%edx,1)
5944bd:	75 13                	jne    0x5944d2
5944bf:	8b 4c 24 08          	mov    0x8(%esp),%ecx
5944c3:	80 7c 11 02 00       	cmpb   $0x0,0x2(%ecx,%edx,1)
5944c8:	75 08                	jne    0x5944d2
5944ca:	40                   	inc    %eax
5944cb:	66 ff 4c 24 3c       	decw   0x3c(%esp)
5944d0:	75 d2                	jne    0x5944a4
5944d2:	0f b7 c0             	movzwl %ax,%eax
5944d5:	8b 54 24 28          	mov    0x28(%esp),%edx
5944d9:	2b d0                	sub    %eax,%edx
5944db:	8b c2                	mov    %edx,%eax
5944dd:	03 c0                	add    %eax,%eax
5944df:	83 e8 04             	sub    $0x4,%eax
5944e2:	89 44 24 2c          	mov    %eax,0x2c(%esp)
5944e6:	66 8b 44 24 28       	mov    0x28(%esp),%ax
5944eb:	48                   	dec    %eax
5944ec:	66 85 c0             	test   %ax,%ax
5944ef:	74 26                	je     0x594517
5944f1:	0f b7 d0             	movzwl %ax,%edx
5944f4:	8d 14 52             	lea    (%edx,%edx,2),%edx
5944f7:	8b 4c 24 08          	mov    0x8(%esp),%ecx
5944fb:	80 3c 11 00          	cmpb   $0x0,(%ecx,%edx,1)
5944ff:	75 16                	jne    0x594517
594501:	8b 4c 24 08          	mov    0x8(%esp),%ecx
594505:	80 7c 11 01 00       	cmpb   $0x0,0x1(%ecx,%edx,1)
59450a:	75 0b                	jne    0x594517
59450c:	8b 4c 24 08          	mov    0x8(%esp),%ecx
594510:	80 7c 11 02 00       	cmpb   $0x0,0x2(%ecx,%edx,1)
594515:	74 d4                	je     0x5944eb
594517:	0f b7 d8             	movzwl %ax,%ebx
59451a:	8b 44 24 2c          	mov    0x2c(%esp),%eax
59451e:	f7 eb                	imul   %ebx
594520:	8d 04 40             	lea    (%eax,%eax,2),%eax
594523:	83 c0 0a             	add    $0xa,%eax
594526:	e8 89 4b e7 ff       	call   0x4090b4
59452b:	89 44 24 0c          	mov    %eax,0xc(%esp)
59452f:	4e                   	dec    %esi
594530:	66 85 f6             	test   %si,%si
594533:	0f 82 e2 00 00 00    	jb     0x59461b
594539:	46                   	inc    %esi
59453a:	66 89 74 24 3c       	mov    %si,0x3c(%esp)
59453f:	66 c7 44 24 30 00 00 	movw   $0x0,0x30(%esp)
594546:	66 8b 44 24 28       	mov    0x28(%esp),%ax
59454b:	48                   	dec    %eax
59454c:	66 85 c0             	test   %ax,%ax
59454f:	0f 82 87 00 00 00    	jb     0x5945dc
594555:	40                   	inc    %eax
594556:	66 89 44 24 3e       	mov    %ax,0x3e(%esp)
59455b:	33 c0                	xor    %eax,%eax
59455d:	66 8b 74 24 30       	mov    0x30(%esp),%si
594562:	66 03 f0             	add    %ax,%si
594565:	8b d3                	mov    %ebx,%edx
594567:	66 2b f2             	sub    %dx,%si
59456a:	66 83 c6 05          	add    $0x5,%si
59456e:	0f b7 c8             	movzwl %ax,%ecx
594571:	0f b7 7c 24 30       	movzwl 0x30(%esp),%edi
594576:	2b cf                	sub    %edi,%ecx
594578:	0f b7 d2             	movzwl %dx,%edx
59457b:	03 ca                	add    %edx,%ecx
59457d:	49                   	dec    %ecx
59457e:	d1 f9                	sar    $1,%ecx
594580:	79 03                	jns    0x594585
594582:	83 d1 00             	adc    $0x0,%ecx
594585:	8b d1                	mov    %ecx,%edx
594587:	0f b7 fe             	movzwl %si,%edi
59458a:	3b 7c 24 2c          	cmp    0x2c(%esp),%edi
59458e:	7d 44                	jge    0x5945d4
594590:	0f b7 ca             	movzwl %dx,%ecx
594593:	3b d9                	cmp    %ecx,%ebx
594595:	7e 3d                	jle    0x5945d4
594597:	0f af fb             	imul   %ebx,%edi
59459a:	0f b7 d2             	movzwl %dx,%edx
59459d:	03 fa                	add    %edx,%edi
59459f:	8d 14 7f             	lea    (%edi,%edi,2),%edx
5945a2:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
5945a6:	8d 14 11             	lea    (%ecx,%edx,1),%edx
5945a9:	89 54 24 18          	mov    %edx,0x18(%esp)
5945ad:	0f b7 d0             	movzwl %ax,%edx
5945b0:	8d 14 52             	lea    (%edx,%edx,2),%edx
5945b3:	8b 4c 24 08          	mov    0x8(%esp),%ecx
5945b7:	8d 14 11             	lea    (%ecx,%edx,1),%edx
5945ba:	89 54 24 1c          	mov    %edx,0x1c(%esp)
5945be:	8b 54 24 18          	mov    0x18(%esp),%edx
5945c2:	8b 4c 24 1c          	mov    0x1c(%esp),%ecx
5945c6:	8b f2                	mov    %edx,%esi
5945c8:	66 8b 11             	mov    (%ecx),%dx
5945cb:	66 89 16             	mov    %dx,(%esi)
5945ce:	8a 51 02             	mov    0x2(%ecx),%dl
5945d1:	88 56 02             	mov    %dl,0x2(%esi)
5945d4:	40                   	inc    %eax
5945d5:	66 ff 4c 24 3e       	decw   0x3e(%esp)
5945da:	75 81                	jne    0x59455d
5945dc:	8b 04 24             	mov    (%esp),%eax
5945df:	8b 10                	mov    (%eax),%edx
5945e1:	ff 52 08             	call   *0x8(%edx)
5945e4:	3b 44 24 34          	cmp    0x34(%esp),%eax
5945e8:	7e 1d                	jle    0x594607
5945ea:	8b 54 24 34          	mov    0x34(%esp),%edx
5945ee:	8b 04 24             	mov    (%esp),%eax
5945f1:	8b 08                	mov    (%eax),%ecx
5945f3:	ff 11                	call   *(%ecx)
5945f5:	8b d0                	mov    %eax,%edx
5945f7:	8b 44 24 28          	mov    0x28(%esp),%eax
5945fb:	8d 0c 40             	lea    (%eax,%eax,2),%ecx
5945fe:	8b 44 24 08          	mov    0x8(%esp),%eax
594602:	e8 b9 38 e7 ff       	call   0x407ec0
594607:	ff 44 24 34          	incl   0x34(%esp)
59460b:	66 ff 44 24 30       	incw   0x30(%esp)
594610:	66 ff 4c 24 3c       	decw   0x3c(%esp)
594615:	0f 85 2b ff ff ff    	jne    0x594546
59461b:	8b 44 24 08          	mov    0x8(%esp),%eax
59461f:	e8 a8 e1 e6 ff       	call   0x4027cc
594624:	8b c3                	mov    %ebx,%eax
594626:	03 c0                	add    %eax,%eax
594628:	8d 04 40             	lea    (%eax,%eax,2),%eax
59462b:	e8 84 4a e7 ff       	call   0x4090b4
594630:	89 44 24 14          	mov    %eax,0x14(%esp)
594634:	6a 05                	push   $0x5
594636:	8b d3                	mov    %ebx,%edx
594638:	03 d2                	add    %edx,%edx
59463a:	8b 4c 24 30          	mov    0x30(%esp),%ecx
59463e:	8b 44 24 08          	mov    0x8(%esp),%eax
594642:	8b 30                	mov    (%eax),%esi
594644:	ff 56 24             	call   *0x24(%esi)
594647:	66 8b 44 24 2c       	mov    0x2c(%esp),%ax
59464c:	48                   	dec    %eax
59464d:	66 85 c0             	test   %ax,%ax
594650:	0f 86 74 01 00 00    	jbe    0x5947ca
594656:	66 89 44 24 3c       	mov    %ax,0x3c(%esp)
59465b:	66 be 01 00          	mov    $0x1,%si
59465f:	8b c3                	mov    %ebx,%eax
594661:	03 c0                	add    %eax,%eax
594663:	48                   	dec    %eax
594664:	66 85 c0             	test   %ax,%ax
594667:	0f 86 2f 01 00 00    	jbe    0x59479c
59466d:	66 89 44 24 3e       	mov    %ax,0x3e(%esp)
594672:	66 ba 01 00          	mov    $0x1,%dx
594676:	0f b7 ce             	movzwl %si,%ecx
594679:	0f af cb             	imul   %ebx,%ecx
59467c:	0f b7 c2             	movzwl %dx,%eax
59467f:	8b f8                	mov    %eax,%edi
594681:	d1 ef                	shr    $1,%edi
594683:	03 cf                	add    %edi,%ecx
594685:	8d 0c 49             	lea    (%ecx,%ecx,2),%ecx
594688:	03 4c 24 0c          	add    0xc(%esp),%ecx
59468c:	89 4c 24 10          	mov    %ecx,0x10(%esp)
594690:	0f b7 ce             	movzwl %si,%ecx
594693:	03 c8                	add    %eax,%ecx
594695:	f6 c1 01             	test   $0x1,%cl
594698:	0f 84 d6 00 00 00    	je     0x594774
59469e:	0f b7 c6             	movzwl %si,%eax
5946a1:	48                   	dec    %eax
5946a2:	8b 4c 24 2c          	mov    0x2c(%esp),%ecx
5946a6:	83 e9 02             	sub    $0x2,%ecx
5946a9:	3b c1                	cmp    %ecx,%eax
5946ab:	0f 8d df 00 00 00    	jge    0x594790
5946b1:	0f b7 c2             	movzwl %dx,%eax
5946b4:	48                   	dec    %eax
5946b5:	8b cb                	mov    %ebx,%ecx
5946b7:	03 c9                	add    %ecx,%ecx
5946b9:	83 e9 02             	sub    $0x2,%ecx
5946bc:	3b c1                	cmp    %ecx,%eax
5946be:	0f 8d cc 00 00 00    	jge    0x594790
5946c4:	33 c0                	xor    %eax,%eax
5946c6:	8b 4c 24 10          	mov    0x10(%esp),%ecx
5946ca:	89 4c 24 18          	mov    %ecx,0x18(%esp)
5946ce:	8b fb                	mov    %ebx,%edi
5946d0:	f7 df                	neg    %edi
5946d2:	8d 3c 7f             	lea    (%edi,%edi,2),%edi
5946d5:	01 7c 24 18          	add    %edi,0x18(%esp)
5946d9:	89 4c 24 1c          	mov    %ecx,0x1c(%esp)
5946dd:	8b fe                	mov    %esi,%edi
5946df:	66 83 e7 01          	and    $0x1,%di
5946e3:	0f b7 ff             	movzwl %di,%edi
5946e6:	33 ed                	xor    %ebp,%ebp
5946e8:	2b ef                	sub    %edi,%ebp
5946ea:	8d 7c 6d 00          	lea    0x0(%ebp,%ebp,2),%edi
5946ee:	01 7c 24 1c          	add    %edi,0x1c(%esp)
5946f2:	89 4c 24 20          	mov    %ecx,0x20(%esp)
5946f6:	8d 3c 5b             	lea    (%ebx,%ebx,2),%edi
5946f9:	01 7c 24 20          	add    %edi,0x20(%esp)
5946fd:	89 4c 24 24          	mov    %ecx,0x24(%esp)
594701:	8b ce                	mov    %esi,%ecx
594703:	66 83 e1 01          	and    $0x1,%cx
594707:	0f b7 c9             	movzwl %cx,%ecx
59470a:	bf 01 00 00 00       	mov    $0x1,%edi
59470f:	2b f9                	sub    %ecx,%edi
594711:	8d 0c 7f             	lea    (%edi,%edi,2),%ecx
594714:	01 4c 24 24          	add    %ecx,0x24(%esp)
594718:	0f b7 c8             	movzwl %ax,%ecx
59471b:	8b 7c 24 18          	mov    0x18(%esp),%edi
59471f:	0f b6 0c 0f          	movzbl (%edi,%ecx,1),%ecx
594723:	0f b7 f8             	movzwl %ax,%edi
594726:	8b 6c 24 1c          	mov    0x1c(%esp),%ebp
59472a:	0f b6 7c 3d 00       	movzbl 0x0(%ebp,%edi,1),%edi
59472f:	03 cf                	add    %edi,%ecx
594731:	0f b7 f8             	movzwl %ax,%edi
594734:	8b 6c 24 20          	mov    0x20(%esp),%ebp