4284a5:	0f 83 43 02 00 00    	jae    0x4286ee
4284ab:	b8 fd bf 00 00       	mov    $0xbffd,%eax
4284b0:	66 3b f0             	cmp    %ax,%si
4284b3:	0f 87 35 02 00 00    	ja     0x4286ee
4284b9:	b8 bf 3f 00 00       	mov    $0x3fbf,%eax
4284be:	66 3b f0             	cmp    %ax,%si
4284c1:	77 4b                	ja     0x42850e
4284c3:	33 c0                	xor    %eax,%eax
4284c5:	89 45 e4             	mov    %eax,-0x1c(%ebp)
4284c8:	89 45 e0             	mov    %eax,-0x20(%ebp)
4284cb:	e9 39 02 00 00       	jmp    0x428709
4284d0:	66 8b 45 f2          	mov    -0xe(%ebp),%ax
4284d4:	0b 7d b8             	or     -0x48(%ebp),%edi
4284d7:	66 89 45 e0          	mov    %ax,-0x20(%ebp)
4284db:	8b 45 f4             	mov    -0xc(%ebp),%eax
4284de:	89 45 e2             	mov    %eax,-0x1e(%ebp)
4284e1:	8b 45 f8             	mov    -0x8(%ebp),%eax
4284e4:	89 45 e6             	mov    %eax,-0x1a(%ebp)
4284e7:	66 89 7d ea          	mov    %di,-0x16(%ebp)
4284eb:	e9 56 ff ff ff       	jmp    0x428446
4284f0:	33 c0                	xor    %eax,%eax
4284f2:	33 f6                	xor    %esi,%esi
4284f4:	66 39 75 b8          	cmp    %si,-0x48(%ebp)
4284f8:	0f 94 c0             	sete   %al
4284fb:	48                   	dec    %eax
4284fc:	25 00 00 00 80       	and    $0x80000000,%eax
428501:	05 00 80 ff 7f       	add    $0x7fff8000,%eax
428506:	89 45 e8             	mov    %eax,-0x18(%ebp)
428509:	e9 5c fd ff ff       	jmp    0x42826a
42850e:	33 c0                	xor    %eax,%eax
428510:	66 3b c8             	cmp    %ax,%cx
428513:	75 1d                	jne    0x428532
428515:	46                   	inc    %esi
428516:	f7 45 e8 ff ff ff 7f 	testl  $0x7fffffff,-0x18(%ebp)
42851d:	75 13                	jne    0x428532
42851f:	39 45 e4             	cmp    %eax,-0x1c(%ebp)
428522:	75 0e                	jne    0x428532
428524:	39 45 e0             	cmp    %eax,-0x20(%ebp)
428527:	75 09                	jne    0x428532
428529:	66 89 45 ea          	mov    %ax,-0x16(%ebp)
42852d:	e9 da 01 00 00       	jmp    0x42870c
428532:	66 3b d0             	cmp    %ax,%dx
428535:	75 18                	jne    0x42854f
428537:	46                   	inc    %esi
428538:	f7 45 d8 ff ff ff 7f 	testl  $0x7fffffff,-0x28(%ebp)
42853f:	75 0e                	jne    0x42854f
428541:	39 45 d4             	cmp    %eax,-0x2c(%ebp)
428544:	75 09                	jne    0x42854f
428546:	39 45 d0             	cmp    %eax,-0x30(%ebp)
428549:	0f 84 76 ff ff ff    	je     0x4284c5
42854f:	89 45 a8             	mov    %eax,-0x58(%ebp)
428552:	8d 7d f4             	lea    -0xc(%ebp),%edi
428555:	c7 45 c0 05 00 00 00 	movl   $0x5,-0x40(%ebp)
42855c:	8b 45 a8             	mov    -0x58(%ebp),%eax
42855f:	8b 4d c0             	mov    -0x40(%ebp),%ecx
428562:	03 c0                	add    %eax,%eax
428564:	89 4d ac             	mov    %ecx,-0x54(%ebp)
428567:	85 c9                	test   %ecx,%ecx
428569:	7e 4a                	jle    0x4285b5
42856b:	8d 4d d8             	lea    -0x28(%ebp),%ecx
42856e:	89 4d b8             	mov    %ecx,-0x48(%ebp)
428571:	8d 44 05 e0          	lea    -0x20(%ebp,%eax,1),%eax
428575:	8b 4d b8             	mov    -0x48(%ebp),%ecx
428578:	0f b7 10             	movzwl (%eax),%edx
42857b:	0f b7 09             	movzwl (%ecx),%ecx
42857e:	83 65 bc 00          	andl   $0x0,-0x44(%ebp)
428582:	0f af ca             	imul   %edx,%ecx
428585:	8b 57 fc             	mov    -0x4(%edi),%edx
428588:	8d 1c 0a             	lea    (%edx,%ecx,1),%ebx
42858b:	3b da                	cmp    %edx,%ebx
42858d:	72 04                	jb     0x428593
42858f:	3b d9                	cmp    %ecx,%ebx
428591:	73 07                	jae    0x42859a
428593:	c7 45 bc 01 00 00 00 	movl   $0x1,-0x44(%ebp)
42859a:	83 7d bc 00          	cmpl   $0x0,-0x44(%ebp)
42859e:	89 5f fc             	mov    %ebx,-0x4(%edi)
4285a1:	74 03                	je     0x4285a6
4285a3:	66 ff 07             	incw   (%edi)
4285a6:	83 6d b8 02          	subl   $0x2,-0x48(%ebp)
4285aa:	40                   	inc    %eax
4285ab:	40                   	inc    %eax
4285ac:	ff 4d ac             	decl   -0x54(%ebp)
4285af:	83 7d ac 00          	cmpl   $0x0,-0x54(%ebp)
4285b3:	7f c0                	jg     0x428575
4285b5:	47                   	inc    %edi
4285b6:	47                   	inc    %edi
4285b7:	ff 45 a8             	incl   -0x58(%ebp)
4285ba:	ff 4d c0             	decl   -0x40(%ebp)
4285bd:	83 7d c0 00          	cmpl   $0x0,-0x40(%ebp)
4285c1:	7f 99                	jg     0x42855c
4285c3:	81 c6 02 c0 00 00    	add    $0xc002,%esi
4285c9:	66 85 f6             	test   %si,%si
4285cc:	7e 37                	jle    0x428605
4285ce:	8b 7d f8             	mov    -0x8(%ebp),%edi
4285d1:	85 ff                	test   %edi,%edi
4285d3:	78 2b                	js     0x428600
4285d5:	8b 45 f4             	mov    -0xc(%ebp),%eax
4285d8:	8b 4d f0             	mov    -0x10(%ebp),%ecx
4285db:	d1 65 f0             	shll   $1,-0x10(%ebp)
4285de:	8b d0                	mov    %eax,%edx
4285e0:	03 c0                	add    %eax,%eax
4285e2:	c1 e9 1f             	shr    $0x1f,%ecx
4285e5:	0b c1                	or     %ecx,%eax
4285e7:	89 45 f4             	mov    %eax,-0xc(%ebp)
4285ea:	c1 ea 1f             	shr    $0x1f,%edx
4285ed:	8d 04 3f             	lea    (%edi,%edi,1),%eax
4285f0:	0b c2                	or     %edx,%eax
4285f2:	81 c6 ff ff 00 00    	add    $0xffff,%esi
4285f8:	89 45 f8             	mov    %eax,-0x8(%ebp)
4285fb:	66 85 f6             	test   %si,%si
4285fe:	7f ce                	jg     0x4285ce
428600:	66 85 f6             	test   %si,%si
428603:	7f 4d                	jg     0x428652
428605:	81 c6 ff ff 00 00    	add    $0xffff,%esi
42860b:	66 85 f6             	test   %si,%si
42860e:	7d 42                	jge    0x428652
428610:	8b c6                	mov    %esi,%eax
428612:	f7 d8                	neg    %eax
428614:	0f b7 c0             	movzwl %ax,%eax
428617:	03 f0                	add    %eax,%esi
428619:	f6 45 f0 01          	testb  $0x1,-0x10(%ebp)
42861d:	74 03                	je     0x428622
42861f:	ff 45 b0             	incl   -0x50(%ebp)
428622:	8b 4d f8             	mov    -0x8(%ebp),%ecx
428625:	8b 7d f4             	mov    -0xc(%ebp),%edi
428628:	8b 55 f4             	mov    -0xc(%ebp),%edx
42862b:	d1 6d f8             	shrl   $1,-0x8(%ebp)
42862e:	c1 e1 1f             	shl    $0x1f,%ecx
428631:	d1 ef                	shr    $1,%edi
428633:	0b f9                	or     %ecx,%edi
428635:	8b 4d f0             	mov    -0x10(%ebp),%ecx
428638:	c1 e2 1f             	shl    $0x1f,%edx
42863b:	d1 e9                	shr    $1,%ecx
42863d:	0b ca                	or     %edx,%ecx
42863f:	48                   	dec    %eax
428640:	89 7d f4             	mov    %edi,-0xc(%ebp)
428643:	89 4d f0             	mov    %ecx,-0x10(%ebp)
428646:	75 d1                	jne    0x428619
428648:	39 45 b0             	cmp    %eax,-0x50(%ebp)
42864b:	74 05                	je     0x428652
42864d:	66 83 4d f0 01       	orw    $0x1,-0x10(%ebp)
428652:	b8 00 80 00 00       	mov    $0x8000,%eax
428657:	8b c8                	mov    %eax,%ecx
428659:	66 39 4d f0          	cmp    %cx,-0x10(%ebp)
42865d:	77 11                	ja     0x428670
42865f:	8b 4d f0             	mov    -0x10(%ebp),%ecx
428662:	81 e1 ff ff 01 00    	and    $0x1ffff,%ecx
428668:	81 f9 00 80 01 00    	cmp    $0x18000,%ecx
42866e:	75 34                	jne    0x4286a4
428670:	83 7d f2 ff          	cmpl   $0xffffffff,-0xe(%ebp)
428674:	75 2b                	jne    0x4286a1
428676:	83 65 f2 00          	andl   $0x0,-0xe(%ebp)
42867a:	83 7d f6 ff          	cmpl   $0xffffffff,-0xa(%ebp)
42867e:	75 1c                	jne    0x42869c
428680:	83 65 f6 00          	andl   $0x0,-0xa(%ebp)
428684:	b9 ff ff 00 00       	mov    $0xffff,%ecx
428689:	66 39 4d fa          	cmp    %cx,-0x6(%ebp)
42868d:	75 07                	jne    0x428696
42868f:	66 89 45 fa          	mov    %ax,-0x6(%ebp)
428693:	46                   	inc    %esi
428694:	eb 0e                	jmp    0x4286a4
428696:	66 ff 45 fa          	incw   -0x6(%ebp)
42869a:	eb 08                	jmp    0x4286a4
42869c:	ff 45 f6             	incl   -0xa(%ebp)
42869f:	eb 03                	jmp    0x4286a4
4286a1:	ff 45 f2             	incl   -0xe(%ebp)
4286a4:	b8 ff 7f 00 00       	mov    $0x7fff,%eax
4286a9:	66 3b f0             	cmp    %ax,%si
4286ac:	72 23                	jb     0x4286d1
4286ae:	33 c0                	xor    %eax,%eax
4286b0:	33 c9                	xor    %ecx,%ecx
4286b2:	66 39 45 a4          	cmp    %ax,-0x5c(%ebp)
4286b6:	89 45 e4             	mov    %eax,-0x1c(%ebp)
4286b9:	0f 94 c1             	sete   %cl
4286bc:	89 45 e0             	mov    %eax,-0x20(%ebp)
4286bf:	49                   	dec    %ecx
4286c0:	81 e1 00 00 00 80    	and    $0x80000000,%ecx
4286c6:	81 c1 00 80 ff 7f    	add    $0x7fff8000,%ecx
4286cc:	89 4d e8             	mov    %ecx,-0x18(%ebp)
4286cf:	eb 3b                	jmp    0x42870c
4286d1:	66 8b 45 f2          	mov    -0xe(%ebp),%ax
4286d5:	0b 75 a4             	or     -0x5c(%ebp),%esi
4286d8:	66 89 45 e0          	mov    %ax,-0x20(%ebp)
4286dc:	8b 45 f4             	mov    -0xc(%ebp),%eax
4286df:	89 45 e2             	mov    %eax,-0x1e(%ebp)
4286e2:	8b 45 f8             	mov    -0x8(%ebp),%eax
4286e5:	89 45 e6             	mov    %eax,-0x1a(%ebp)
4286e8:	66 89 75 ea          	mov    %si,-0x16(%ebp)
4286ec:	eb 1e                	jmp    0x42870c
4286ee:	33 c0                	xor    %eax,%eax
4286f0:	66 85 db             	test   %bx,%bx
4286f3:	0f 94 c0             	sete   %al
4286f6:	83 65 e4 00          	andl   $0x0,-0x1c(%ebp)
4286fa:	48                   	dec    %eax
4286fb:	25 00 00 00 80       	and    $0x80000000,%eax
428700:	05 00 80 ff 7f       	add    $0x7fff8000,%eax
428705:	83 65 e0 00          	andl   $0x0,-0x20(%ebp)
428709:	89 45 e8             	mov    %eax,-0x18(%ebp)
42870c:	f6 45 18 01          	testb  $0x1,0x18(%ebp)
428710:	8b 55 a0             	mov    -0x60(%ebp),%edx
428713:	8b 45 b4             	mov    -0x4c(%ebp),%eax
428716:	8b 7d 14             	mov    0x14(%ebp),%edi
428719:	66 89 02             	mov    %ax,(%edx)
42871c:	74 32                	je     0x428750
42871e:	98                   	cwtl
42871f:	03 f8                	add    %eax,%edi
428721:	85 ff                	test   %edi,%edi
428723:	7f 2b                	jg     0x428750
428725:	33 c0                	xor    %eax,%eax
428727:	66 89 02             	mov    %ax,(%edx)
42872a:	b8 00 80 00 00       	mov    $0x8000,%eax
42872f:	66 39 45 90          	cmp    %ax,-0x70(%ebp)
428733:	c6 42 03 01          	movb   $0x1,0x3(%edx)
428737:	0f 95 c0             	setne  %al
42873a:	fe c8                	dec    %al
42873c:	24 0d                	and    $0xd,%al
42873e:	04 20                	add    $0x20,%al
428740:	88 42 02             	mov    %al,0x2(%edx)
428743:	c6 42 04 30          	movb   $0x30,0x4(%edx)
428747:	c6 42 05 00          	movb   $0x0,0x5(%edx)
42874b:	e9 5e f9 ff ff       	jmp    0x4280ae
428750:	83 ff 15             	cmp    $0x15,%edi
428753:	7e 03                	jle    0x428758
428755:	6a 15                	push   $0x15
428757:	5f                   	pop    %edi
428758:	8b 75 e8             	mov    -0x18(%ebp),%esi
42875b:	c1 ee 10             	shr    $0x10,%esi
42875e:	81 ee fe 3f 00 00    	sub    $0x3ffe,%esi
428764:	33 c0                	xor    %eax,%eax
428766:	66 89 45 ea          	mov    %ax,-0x16(%ebp)
42876a:	c7 45 bc 08 00 00 00 	movl   $0x8,-0x44(%ebp)
428771:	8b 45 e0             	mov    -0x20(%ebp),%eax
428774:	8b 5d e4             	mov    -0x1c(%ebp),%ebx
428777:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
42877a:	d1 65 e0             	shll   $1,-0x20(%ebp)
42877d:	c1 e8 1f             	shr    $0x1f,%eax
428780:	03 db                	add    %ebx,%ebx
428782:	0b d8                	or     %eax,%ebx
428784:	8b 45 e8             	mov    -0x18(%ebp),%eax
428787:	c1 e9 1f             	shr    $0x1f,%ecx
42878a:	03 c0                	add    %eax,%eax
42878c:	0b c1                	or     %ecx,%eax
42878e:	ff 4d bc             	decl   -0x44(%ebp)
428791:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
428794:	89 45 e8             	mov    %eax,-0x18(%ebp)
428797:	75 d8                	jne    0x428771
428799:	85 f6                	test   %esi,%esi
42879b:	7d 32                	jge    0x4287cf
42879d:	f7 de                	neg    %esi
42879f:	81 e6 ff 00 00 00    	and    $0xff,%esi
4287a5:	7e 28                	jle    0x4287cf
4287a7:	8b 45 e8             	mov    -0x18(%ebp),%eax
4287aa:	8b 5d e4             	mov    -0x1c(%ebp),%ebx
4287ad:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
4287b0:	d1 6d e8             	shrl   $1,-0x18(%ebp)
4287b3:	c1 e0 1f             	shl    $0x1f,%eax
4287b6:	d1 eb                	shr    $1,%ebx
4287b8:	0b d8                	or     %eax,%ebx
4287ba:	8b 45 e0             	mov    -0x20(%ebp),%eax
4287bd:	c1 e1 1f             	shl    $0x1f,%ecx
4287c0:	d1 e8                	shr    $1,%eax
4287c2:	0b c1                	or     %ecx,%eax
4287c4:	4e                   	dec    %esi
4287c5:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
4287c8:	89 45 e0             	mov    %eax,-0x20(%ebp)
4287cb:	85 f6                	test   %esi,%esi
4287cd:	7f d8                	jg     0x4287a7
4287cf:	8d 47 01             	lea    0x1(%edi),%eax
4287d2:	8d 5a 04             	lea    0x4(%edx),%ebx
4287d5:	89 5d c0             	mov    %ebx,-0x40(%ebp)
4287d8:	89 45 b4             	mov    %eax,-0x4c(%ebp)
4287db:	85 c0                	test   %eax,%eax
4287dd:	0f 8e b5 00 00 00    	jle    0x428898
4287e3:	8b 55 e0             	mov    -0x20(%ebp),%edx
4287e6:	8b 45 e4             	mov    -0x1c(%ebp),%eax
4287e9:	8d 75 e0             	lea    -0x20(%ebp),%esi
4287ec:	8d 7d c4             	lea    -0x3c(%ebp),%edi
4287ef:	a5                   	movsl  %ds:(%esi),%es:(%edi)
4287f0:	a5                   	movsl  %ds:(%esi),%es:(%edi)
4287f1:	a5                   	movsl  %ds:(%esi),%es:(%edi)
4287f2:	d1 65 e0             	shll   $1,-0x20(%ebp)
4287f5:	8b 7d e0             	mov    -0x20(%ebp),%edi
4287f8:	d1 65 e0             	shll   $1,-0x20(%ebp)
4287fb:	c1 ea 1f             	shr    $0x1f,%edx
4287fe:	8d 0c 00             	lea    (%eax,%eax,1),%ecx
428801:	0b ca                	or     %edx,%ecx
428803:	8b 55 e8             	mov    -0x18(%ebp),%edx
428806:	8b f0                	mov    %eax,%esi
428808:	c1 ee 1f             	shr    $0x1f,%esi
42880b:	03 d2                	add    %edx,%edx
42880d:	0b d6                	or     %esi,%edx
42880f:	8b c1                	mov    %ecx,%eax
428811:	8d 34 09             	lea    (%ecx,%ecx,1),%esi
428814:	c1 e8 1f             	shr    $0x1f,%eax
428817:	8d 0c 12             	lea    (%edx,%edx,1),%ecx
42881a:	8b 55 c4             	mov    -0x3c(%ebp),%edx
42881d:	c1 ef 1f             	shr    $0x1f,%edi
428820:	0b c8                	or     %eax,%ecx
428822:	8b 45 e0             	mov    -0x20(%ebp),%eax
428825:	0b f7                	or     %edi,%esi
428827:	8d 3c 02             	lea    (%edx,%eax,1),%edi
42882a:	3b f8                	cmp    %eax,%edi
42882c:	72 04                	jb     0x428832
42882e:	3b fa                	cmp    %edx,%edi
428830:	73 18                	jae    0x42884a
428832:	8d 46 01             	lea    0x1(%esi),%eax
428835:	33 d2                	xor    %edx,%edx
428837:	3b c6                	cmp    %esi,%eax
428839:	72 05                	jb     0x428840
42883b:	83 f8 01             	cmp    $0x1,%eax
42883e:	73 03                	jae    0x428843
428840:	33 d2                	xor    %edx,%edx
428842:	42                   	inc    %edx
428843:	8b f0                	mov    %eax,%esi
428845:	85 d2                	test   %edx,%edx
428847:	74 01                	je     0x42884a
428849:	41                   	inc    %ecx
42884a:	8b 45 c8             	mov    -0x38(%ebp),%eax
42884d:	8d 14 30             	lea    (%eax,%esi,1),%edx
428850:	89 55 bc             	mov    %edx,-0x44(%ebp)
428853:	3b d6                	cmp    %esi,%edx
428855:	72 04                	jb     0x42885b
428857:	3b d0                	cmp    %eax,%edx
428859:	73 01                	jae    0x42885c
42885b:	41                   	inc    %ecx
42885c:	03 4d cc             	add    -0x34(%ebp),%ecx
42885f:	c1 ea 1f             	shr    $0x1f,%edx
428862:	03 c9                	add    %ecx,%ecx
428864:	0b ca                	or     %edx,%ecx
428866:	8d 34 3f             	lea    (%edi,%edi,1),%esi
428869:	89 75 e0             	mov    %esi,-0x20(%ebp)
42886c:	8b 75 bc             	mov    -0x44(%ebp),%esi
42886f:	89 4d e8             	mov    %ecx,-0x18(%ebp)
428872:	c1 e9 18             	shr    $0x18,%ecx
428875:	03 f6                	add    %esi,%esi
428877:	80 c1 30             	add    $0x30,%cl
42887a:	8b c7                	mov    %edi,%eax
42887c:	c1 e8 1f             	shr    $0x1f,%eax
42887f:	0b f0                	or     %eax,%esi
428881:	88 0b                	mov    %cl,(%ebx)
428883:	43                   	inc    %ebx
428884:	ff 4d b4             	decl   -0x4c(%ebp)
428887:	83 7d b4 00          	cmpl   $0x0,-0x4c(%ebp)
42888b:	89 75 e4             	mov    %esi,-0x1c(%ebp)
42888e:	c6 45 eb 00          	movb   $0x0,-0x15(%ebp)
428892:	0f 8f 4b ff ff ff    	jg     0x4287e3
428898:	4b                   	dec    %ebx
428899:	8a 03                	mov    (%ebx),%al
42889b:	4b                   	dec    %ebx
42889c:	3c 35                	cmp    $0x35,%al