5940b0:	0f b7 d0             	movzwl %ax,%edx
5940b3:	8d 14 52             	lea    (%edx,%edx,2),%edx
5940b6:	8b 4c 24 08          	mov    0x8(%esp),%ecx
5940ba:	66 83 3c 51 00       	cmpw   $0x0,(%ecx,%edx,2)
5940bf:	75 20                	jne    0x5940e1
5940c1:	8b 4c 24 08          	mov    0x8(%esp),%ecx
5940c5:	66 83 7c 51 02 00    	cmpw   $0x0,0x2(%ecx,%edx,2)
5940cb:	75 14                	jne    0x5940e1
5940cd:	8b 4c 24 08          	mov    0x8(%esp),%ecx
5940d1:	66 83 7c 51 04 00    	cmpw   $0x0,0x4(%ecx,%edx,2)
5940d7:	75 08                	jne    0x5940e1
5940d9:	40                   	inc    %eax
5940da:	66 ff 4c 24 3c       	decw   0x3c(%esp)
5940df:	75 cf                	jne    0x5940b0
5940e1:	0f b7 c0             	movzwl %ax,%eax
5940e4:	8b 54 24 28          	mov    0x28(%esp),%edx
5940e8:	2b d0                	sub    %eax,%edx
5940ea:	8b c2                	mov    %edx,%eax
5940ec:	03 c0                	add    %eax,%eax
5940ee:	83 e8 04             	sub    $0x4,%eax
5940f1:	89 44 24 2c          	mov    %eax,0x2c(%esp)
5940f5:	66 8b 44 24 28       	mov    0x28(%esp),%ax
5940fa:	48                   	dec    %eax
5940fb:	66 85 c0             	test   %ax,%ax
5940fe:	74 29                	je     0x594129
594100:	0f b7 d0             	movzwl %ax,%edx
594103:	8d 14 52             	lea    (%edx,%edx,2),%edx
594106:	8b 4c 24 08          	mov    0x8(%esp),%ecx
59410a:	66 83 3c 51 00       	cmpw   $0x0,(%ecx,%edx,2)
59410f:	75 18                	jne    0x594129
594111:	8b 4c 24 08          	mov    0x8(%esp),%ecx
594115:	66 83 7c 51 02 00    	cmpw   $0x0,0x2(%ecx,%edx,2)
59411b:	75 0c                	jne    0x594129
59411d:	8b 4c 24 08          	mov    0x8(%esp),%ecx
594121:	66 83 7c 51 04 00    	cmpw   $0x0,0x4(%ecx,%edx,2)
594127:	74 d1                	je     0x5940fa
594129:	0f b7 d8             	movzwl %ax,%ebx
59412c:	8b 44 24 2c          	mov    0x2c(%esp),%eax
594130:	f7 eb                	imul   %ebx
594132:	03 c0                	add    %eax,%eax
594134:	8d 04 40             	lea    (%eax,%eax,2),%eax
594137:	83 c0 0a             	add    $0xa,%eax
59413a:	e8 75 4f e7 ff       	call   0x4090b4
59413f:	89 44 24 0c          	mov    %eax,0xc(%esp)
594143:	4e                   	dec    %esi
594144:	66 85 f6             	test   %si,%si
594147:	0f 82 e2 00 00 00    	jb     0x59422f
59414d:	46                   	inc    %esi
59414e:	66 89 74 24 3c       	mov    %si,0x3c(%esp)
594153:	66 c7 44 24 30 00 00 	movw   $0x0,0x30(%esp)
59415a:	66 8b 44 24 28       	mov    0x28(%esp),%ax
59415f:	48                   	dec    %eax
594160:	66 85 c0             	test   %ax,%ax
594163:	0f 82 85 00 00 00    	jb     0x5941ee
594169:	40                   	inc    %eax
59416a:	66 89 44 24 3e       	mov    %ax,0x3e(%esp)
59416f:	33 c0                	xor    %eax,%eax
594171:	66 8b 74 24 30       	mov    0x30(%esp),%si
594176:	66 03 f0             	add    %ax,%si
594179:	8b d3                	mov    %ebx,%edx
59417b:	66 2b f2             	sub    %dx,%si
59417e:	66 83 c6 05          	add    $0x5,%si
594182:	0f b7 c8             	movzwl %ax,%ecx
594185:	0f b7 7c 24 30       	movzwl 0x30(%esp),%edi
59418a:	2b cf                	sub    %edi,%ecx
59418c:	0f b7 d2             	movzwl %dx,%edx
59418f:	03 ca                	add    %edx,%ecx
594191:	49                   	dec    %ecx
594192:	d1 f9                	sar    $1,%ecx
594194:	79 03                	jns    0x594199
594196:	83 d1 00             	adc    $0x0,%ecx
594199:	8b d1                	mov    %ecx,%edx
59419b:	0f b7 fe             	movzwl %si,%edi
59419e:	3b 7c 24 2c          	cmp    0x2c(%esp),%edi
5941a2:	7d 42                	jge    0x5941e6
5941a4:	0f b7 ca             	movzwl %dx,%ecx
5941a7:	3b d9                	cmp    %ecx,%ebx
5941a9:	7e 3b                	jle    0x5941e6
5941ab:	0f af fb             	imul   %ebx,%edi
5941ae:	0f b7 d2             	movzwl %dx,%edx
5941b1:	03 fa                	add    %edx,%edi
5941b3:	8d 14 7f             	lea    (%edi,%edi,2),%edx
5941b6:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
5941ba:	8d 14 51             	lea    (%ecx,%edx,2),%edx
5941bd:	89 54 24 18          	mov    %edx,0x18(%esp)
5941c1:	0f b7 d0             	movzwl %ax,%edx
5941c4:	8d 14 52             	lea    (%edx,%edx,2),%edx
5941c7:	8b 4c 24 08          	mov    0x8(%esp),%ecx
5941cb:	8d 14 51             	lea    (%ecx,%edx,2),%edx
5941ce:	89 54 24 1c          	mov    %edx,0x1c(%esp)
5941d2:	8b 54 24 18          	mov    0x18(%esp),%edx
5941d6:	8b 4c 24 1c          	mov    0x1c(%esp),%ecx
5941da:	8b 31                	mov    (%ecx),%esi
5941dc:	89 32                	mov    %esi,(%edx)
5941de:	66 8b 71 04          	mov    0x4(%ecx),%si
5941e2:	66 89 72 04          	mov    %si,0x4(%edx)
5941e6:	40                   	inc    %eax
5941e7:	66 ff 4c 24 3e       	decw   0x3e(%esp)
5941ec:	75 83                	jne    0x594171
5941ee:	8b 04 24             	mov    (%esp),%eax
5941f1:	8b 10                	mov    (%eax),%edx
5941f3:	ff 52 08             	call   *0x8(%edx)
5941f6:	3b 44 24 34          	cmp    0x34(%esp),%eax
5941fa:	7e 1f                	jle    0x59421b
5941fc:	8b 54 24 34          	mov    0x34(%esp),%edx
594200:	8b 04 24             	mov    (%esp),%eax
594203:	8b 08                	mov    (%eax),%ecx
594205:	ff 11                	call   *(%ecx)
594207:	8b d0                	mov    %eax,%edx
594209:	8b 44 24 28          	mov    0x28(%esp),%eax
59420d:	03 c0                	add    %eax,%eax
59420f:	8d 0c 40             	lea    (%eax,%eax,2),%ecx
594212:	8b 44 24 08          	mov    0x8(%esp),%eax
594216:	e8 a5 3c e7 ff       	call   0x407ec0
59421b:	ff 44 24 34          	incl   0x34(%esp)
59421f:	66 ff 44 24 30       	incw   0x30(%esp)
594224:	66 ff 4c 24 3c       	decw   0x3c(%esp)
594229:	0f 85 2b ff ff ff    	jne    0x59415a
59422f:	8b 44 24 08          	mov    0x8(%esp),%eax
594233:	e8 94 e5 e6 ff       	call   0x4027cc
594238:	8b c3                	mov    %ebx,%eax
59423a:	03 c0                	add    %eax,%eax
59423c:	03 c0                	add    %eax,%eax
59423e:	8d 04 40             	lea    (%eax,%eax,2),%eax
594241:	e8 6e 4e e7 ff       	call   0x4090b4
594246:	89 44 24 14          	mov    %eax,0x14(%esp)
59424a:	6a 08                	push   $0x8
59424c:	8b d3                	mov    %ebx,%edx
59424e:	03 d2                	add    %edx,%edx
594250:	8b 4c 24 30          	mov    0x30(%esp),%ecx
594254:	8b 44 24 08          	mov    0x8(%esp),%eax
594258:	8b 30                	mov    (%eax),%esi
59425a:	ff 56 24             	call   *0x24(%esi)
59425d:	66 8b 44 24 2c       	mov    0x2c(%esp),%ax
594262:	48                   	dec    %eax
594263:	66 85 c0             	test   %ax,%ax
594266:	0f 86 86 01 00 00    	jbe    0x5943f2
59426c:	66 89 44 24 3c       	mov    %ax,0x3c(%esp)
594271:	66 be 01 00          	mov    $0x1,%si
594275:	8b c3                	mov    %ebx,%eax
594277:	03 c0                	add    %eax,%eax
594279:	48                   	dec    %eax
59427a:	66 85 c0             	test   %ax,%ax
59427d:	0f 86 3f 01 00 00    	jbe    0x5943c2
594283:	66 89 44 24 3e       	mov    %ax,0x3e(%esp)
594288:	66 ba 01 00          	mov    $0x1,%dx
59428c:	0f b7 ce             	movzwl %si,%ecx
59428f:	0f af cb             	imul   %ebx,%ecx
594292:	0f b7 c2             	movzwl %dx,%eax
594295:	8b f8                	mov    %eax,%edi
594297:	d1 ef                	shr    $1,%edi
594299:	03 cf                	add    %edi,%ecx
59429b:	03 c9                	add    %ecx,%ecx
59429d:	8d 0c 49             	lea    (%ecx,%ecx,2),%ecx
5942a0:	03 4c 24 0c          	add    0xc(%esp),%ecx
5942a4:	89 4c 24 10          	mov    %ecx,0x10(%esp)
5942a8:	0f b7 ce             	movzwl %si,%ecx
5942ab:	03 c8                	add    %eax,%ecx
5942ad:	f6 c1 01             	test   $0x1,%cl
5942b0:	0f 84 e4 00 00 00    	je     0x59439a
5942b6:	0f b7 c6             	movzwl %si,%eax
5942b9:	48                   	dec    %eax
5942ba:	8b 4c 24 2c          	mov    0x2c(%esp),%ecx
5942be:	83 e9 02             	sub    $0x2,%ecx
5942c1:	3b c1                	cmp    %ecx,%eax
5942c3:	0f 8d ed 00 00 00    	jge    0x5943b6
5942c9:	0f b7 c2             	movzwl %dx,%eax
5942cc:	48                   	dec    %eax
5942cd:	8b cb                	mov    %ebx,%ecx
5942cf:	03 c9                	add    %ecx,%ecx
5942d1:	83 e9 02             	sub    $0x2,%ecx
5942d4:	3b c1                	cmp    %ecx,%eax
5942d6:	0f 8d da 00 00 00    	jge    0x5943b6
5942dc:	33 c0                	xor    %eax,%eax
5942de:	8b 4c 24 10          	mov    0x10(%esp),%ecx
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