43a366:	5b                   	pop    %ebx
43a367:	66 85 ff             	test   %di,%di
43a36a:	7e 5b                	jle    0x43a3c7
43a36c:	66 8b 4d f0          	mov    -0x10(%ebp),%cx
43a370:	b8 00 80 00 00       	mov    $0x8000,%eax
43a375:	66 3b c8             	cmp    %ax,%cx
43a378:	77 12                	ja     0x43a38c
43a37a:	81 e2 ff ff 01 00    	and    $0x1ffff,%edx
43a380:	81 fa 00 80 01 00    	cmp    $0x18000,%edx
43a386:	0f 85 bd 00 00 00    	jne    0x43a449
43a38c:	8b 45 f2             	mov    -0xe(%ebp),%eax
43a38f:	83 f8 ff             	cmp    $0xffffffff,%eax
43a392:	0f 85 ad 00 00 00    	jne    0x43a445
43a398:	8b 45 f6             	mov    -0xa(%ebp),%eax
43a39b:	89 5d f2             	mov    %ebx,-0xe(%ebp)
43a39e:	83 f8 ff             	cmp    $0xffffffff,%eax
43a3a1:	0f 85 95 00 00 00    	jne    0x43a43c
43a3a7:	66 8b 45 fa          	mov    -0x6(%ebp),%ax
43a3ab:	b9 ff ff 00 00       	mov    $0xffff,%ecx
43a3b0:	89 5d f6             	mov    %ebx,-0xa(%ebp)
43a3b3:	66 3b c1             	cmp    %cx,%ax
43a3b6:	75 7c                	jne    0x43a434
43a3b8:	b8 00 80 00 00       	mov    $0x8000,%eax
43a3bd:	47                   	inc    %edi
43a3be:	66 89 45 fa          	mov    %ax,-0x6(%ebp)
43a3c2:	eb 7c                	jmp    0x43a440
43a3c4:	8b 55 f0             	mov    -0x10(%ebp),%edx
43a3c7:	b8 ff ff 00 00       	mov    $0xffff,%eax
43a3cc:	03 f8                	add    %eax,%edi
43a3ce:	66 85 ff             	test   %di,%di
43a3d1:	79 99                	jns    0x43a36c
43a3d3:	8b c7                	mov    %edi,%eax
43a3d5:	f7 d8                	neg    %eax
43a3d7:	0f b7 c0             	movzwl %ax,%eax
43a3da:	03 f8                	add    %eax,%edi
43a3dc:	89 45 a8             	mov    %eax,-0x58(%ebp)
43a3df:	89 7d b4             	mov    %edi,-0x4c(%ebp)
43a3e2:	8b 7d 88             	mov    -0x78(%ebp),%edi
43a3e5:	f6 45 f0 01          	testb  $0x1,-0x10(%ebp)
43a3e9:	74 01                	je     0x43a3ec
43a3eb:	47                   	inc    %edi
43a3ec:	8b 5d f4             	mov    -0xc(%ebp),%ebx
43a3ef:	8b c6                	mov    %esi,%eax
43a3f1:	8b cb                	mov    %ebx,%ecx
43a3f3:	c1 e0 1f             	shl    $0x1f,%eax
43a3f6:	c1 e1 1f             	shl    $0x1f,%ecx
43a3f9:	d1 eb                	shr    $1,%ebx
43a3fb:	d1 ea                	shr    $1,%edx
43a3fd:	0b d8                	or     %eax,%ebx
43a3ff:	0b d1                	or     %ecx,%edx
43a401:	d1 ee                	shr    $1,%esi
43a403:	ff 4d a8             	decl   -0x58(%ebp)
43a406:	89 5d f4             	mov    %ebx,-0xc(%ebp)
43a409:	89 55 f0             	mov    %edx,-0x10(%ebp)
43a40c:	75 d7                	jne    0x43a3e5
43a40e:	6a 00                	push   $0x0
43a410:	85 ff                	test   %edi,%edi
43a412:	89 75 f8             	mov    %esi,-0x8(%ebp)
43a415:	8b 7d b4             	mov    -0x4c(%ebp),%edi
43a418:	5b                   	pop    %ebx
43a419:	0f 84 4d ff ff ff    	je     0x43a36c
43a41f:	33 c0                	xor    %eax,%eax
43a421:	66 8b ca             	mov    %dx,%cx
43a424:	40                   	inc    %eax
43a425:	66 0b c8             	or     %ax,%cx
43a428:	66 89 4d f0          	mov    %cx,-0x10(%ebp)
43a42c:	8b 55 f0             	mov    -0x10(%ebp),%edx
43a42f:	e9 3c ff ff ff       	jmp    0x43a370
43a434:	66 40                	inc    %ax
43a436:	66 89 45 fa          	mov    %ax,-0x6(%ebp)
43a43a:	eb 04                	jmp    0x43a440
43a43c:	40                   	inc    %eax
43a43d:	89 45 f6             	mov    %eax,-0xa(%ebp)
43a440:	8b 75 f8             	mov    -0x8(%ebp),%esi
43a443:	eb 04                	jmp    0x43a449
43a445:	40                   	inc    %eax
43a446:	89 45 f2             	mov    %eax,-0xe(%ebp)
43a449:	b8 ff 7f 00 00       	mov    $0x7fff,%eax
43a44e:	66 3b f8             	cmp    %ax,%di
43a451:	73 20                	jae    0x43a473
43a453:	66 8b 45 f2          	mov    -0xe(%ebp),%ax
43a457:	0b 7d bc             	or     -0x44(%ebp),%edi
43a45a:	66 89 45 e0          	mov    %ax,-0x20(%ebp)
43a45e:	8b 45 f4             	mov    -0xc(%ebp),%eax
43a461:	89 45 e2             	mov    %eax,-0x1e(%ebp)
43a464:	89 75 e6             	mov    %esi,-0x1a(%ebp)
43a467:	8b 55 e4             	mov    -0x1c(%ebp),%edx
43a46a:	8b 75 e0             	mov    -0x20(%ebp),%esi
43a46d:	66 89 7d ea          	mov    %di,-0x16(%ebp)
43a471:	eb 1b                	jmp    0x43a48e
43a473:	33 c0                	xor    %eax,%eax
43a475:	66 39 45 bc          	cmp    %ax,-0x44(%ebp)
43a479:	0f 94 c0             	sete   %al
43a47c:	48                   	dec    %eax
43a47d:	25 00 00 00 80       	and    $0x80000000,%eax
43a482:	05 00 80 ff 7f       	add    $0x7fff8000,%eax
43a487:	89 45 e8             	mov    %eax,-0x18(%ebp)
43a48a:	8b f3                	mov    %ebx,%esi
43a48c:	8b d3                	mov    %ebx,%edx
43a48e:	f6 45 18 01          	testb  $0x1,0x18(%ebp)
43a492:	8b 4d 8c             	mov    -0x74(%ebp),%ecx
43a495:	8b 45 b8             	mov    -0x48(%ebp),%eax
43a498:	8b 7d 14             	mov    0x14(%ebp),%edi
43a49b:	66 89 01             	mov    %ax,(%ecx)
43a49e:	74 36                	je     0x43a4d6
43a4a0:	98                   	cwtl
43a4a1:	03 f8                	add    %eax,%edi
43a4a3:	89 7d b8             	mov    %edi,-0x48(%ebp)
43a4a6:	85 ff                	test   %edi,%edi
43a4a8:	7f 2f                	jg     0x43a4d9
43a4aa:	33 c0                	xor    %eax,%eax
43a4ac:	66 89 01             	mov    %ax,(%ecx)
43a4af:	b8 00 80 00 00       	mov    $0x8000,%eax
43a4b4:	66 39 45 80          	cmp    %ax,-0x80(%ebp)
43a4b8:	0f 95 c0             	setne  %al
43a4bb:	fe c8                	dec    %al
43a4bd:	24 0d                	and    $0xd,%al
43a4bf:	04 20                	add    $0x20,%al
43a4c1:	88 41 02             	mov    %al,0x2(%ecx)
43a4c4:	33 c0                	xor    %eax,%eax
43a4c6:	40                   	inc    %eax
43a4c7:	88 41 03             	mov    %al,0x3(%ecx)
43a4ca:	c6 41 04 30          	movb   $0x30,0x4(%ecx)
43a4ce:	88 59 05             	mov    %bl,0x5(%ecx)
43a4d1:	e9 ac 01 00 00       	jmp    0x43a682
43a4d6:	89 7d b8             	mov    %edi,-0x48(%ebp)
43a4d9:	6a 15                	push   $0x15
43a4db:	58                   	pop    %eax
43a4dc:	3b f8                	cmp    %eax,%edi
43a4de:	7e 03                	jle    0x43a4e3
43a4e0:	89 45 b8             	mov    %eax,-0x48(%ebp)
43a4e3:	8b 7d e8             	mov    -0x18(%ebp),%edi
43a4e6:	c1 ef 10             	shr    $0x10,%edi
43a4e9:	81 ef fe 3f 00 00    	sub    $0x3ffe,%edi
43a4ef:	33 c0                	xor    %eax,%eax
43a4f1:	6a 08                	push   $0x8
43a4f3:	89 7d 9c             	mov    %edi,-0x64(%ebp)
43a4f6:	66 89 45 ea          	mov    %ax,-0x16(%ebp)
43a4fa:	8b 5d e8             	mov    -0x18(%ebp),%ebx
43a4fd:	5f                   	pop    %edi
43a4fe:	8b ca                	mov    %edx,%ecx
43a500:	8b c6                	mov    %esi,%eax
43a502:	c1 e8 1f             	shr    $0x1f,%eax
43a505:	03 d2                	add    %edx,%edx
43a507:	c1 e9 1f             	shr    $0x1f,%ecx
43a50a:	03 db                	add    %ebx,%ebx
43a50c:	03 f6                	add    %esi,%esi
43a50e:	0b d9                	or     %ecx,%ebx
43a510:	0b d0                	or     %eax,%edx
43a512:	89 75 e0             	mov    %esi,-0x20(%ebp)
43a515:	89 5d e8             	mov    %ebx,-0x18(%ebp)
43a518:	4f                   	dec    %edi
43a519:	75 e3                	jne    0x43a4fe
43a51b:	8b 7d 9c             	mov    -0x64(%ebp),%edi
43a51e:	89 5d bc             	mov    %ebx,-0x44(%ebp)
43a521:	89 55 e4             	mov    %edx,-0x1c(%ebp)
43a524:	89 75 c0             	mov    %esi,-0x40(%ebp)
43a527:	6a 00                	push   $0x0
43a529:	5b                   	pop    %ebx
43a52a:	85 ff                	test   %edi,%edi
43a52c:	79 37                	jns    0x43a565
43a52e:	f7 df                	neg    %edi
43a530:	81 e7 ff 00 00 00    	and    $0xff,%edi
43a536:	7e 2d                	jle    0x43a565
43a538:	8b 5d bc             	mov    -0x44(%ebp),%ebx
43a53b:	8b ca                	mov    %edx,%ecx
43a53d:	d1 ee                	shr    $1,%esi
43a53f:	8b c3                	mov    %ebx,%eax
43a541:	c1 e1 1f             	shl    $0x1f,%ecx
43a544:	c1 e0 1f             	shl    $0x1f,%eax
43a547:	0b f1                	or     %ecx,%esi
43a549:	d1 ea                	shr    $1,%edx
43a54b:	d1 eb                	shr    $1,%ebx
43a54d:	0b d0                	or     %eax,%edx
43a54f:	4f                   	dec    %edi
43a550:	89 5d e8             	mov    %ebx,-0x18(%ebp)
43a553:	89 75 e0             	mov    %esi,-0x20(%ebp)
43a556:	85 ff                	test   %edi,%edi
43a558:	7f e1                	jg     0x43a53b
43a55a:	89 5d bc             	mov    %ebx,-0x44(%ebp)
43a55d:	33 db                	xor    %ebx,%ebx
43a55f:	89 55 e4             	mov    %edx,-0x1c(%ebp)
43a562:	89 75 c0             	mov    %esi,-0x40(%ebp)
43a565:	8b 75 8c             	mov    -0x74(%ebp),%esi
43a568:	8b 45 b8             	mov    -0x48(%ebp),%eax
43a56b:	40                   	inc    %eax
43a56c:	89 45 ac             	mov    %eax,-0x54(%ebp)
43a56f:	8d 7e 04             	lea    0x4(%esi),%edi
43a572:	89 7d 9c             	mov    %edi,-0x64(%ebp)
43a575:	8b cf                	mov    %edi,%ecx
43a577:	89 4d a8             	mov    %ecx,-0x58(%ebp)
43a57a:	85 c0                	test   %eax,%eax
43a57c:	0f 8e c8 00 00 00    	jle    0x43a64a
43a582:	8d 75 e0             	lea    -0x20(%ebp),%esi
43a585:	8b ca                	mov    %edx,%ecx
43a587:	8d 7d c4             	lea    -0x3c(%ebp),%edi
43a58a:	c1 e9 1f             	shr    $0x1f,%ecx
43a58d:	a5                   	movsl  %ds:(%esi),%es:(%edi)
43a58e:	03 d2                	add    %edx,%edx
43a590:	a5                   	movsl  %ds:(%esi),%es:(%edi)
43a591:	a5                   	movsl  %ds:(%esi),%es:(%edi)
43a592:	8b 7d c0             	mov    -0x40(%ebp),%edi
43a595:	8b c7                	mov    %edi,%eax
43a597:	c1 e8 1f             	shr    $0x1f,%eax
43a59a:	03 ff                	add    %edi,%edi
43a59c:	0b d0                	or     %eax,%edx
43a59e:	8b 45 bc             	mov    -0x44(%ebp),%eax
43a5a1:	8d 34 00             	lea    (%eax,%eax,1),%esi
43a5a4:	8b c7                	mov    %edi,%eax
43a5a6:	0b f1                	or     %ecx,%esi
43a5a8:	c1 e8 1f             	shr    $0x1f,%eax
43a5ab:	8b ca                	mov    %edx,%ecx
43a5ad:	03 ff                	add    %edi,%edi
43a5af:	03 d2                	add    %edx,%edx
43a5b1:	c1 e9 1f             	shr    $0x1f,%ecx
43a5b4:	0b d0                	or     %eax,%edx
43a5b6:	03 f6                	add    %esi,%esi
43a5b8:	8b 45 c4             	mov    -0x3c(%ebp),%eax
43a5bb:	0b f1                	or     %ecx,%esi
43a5bd:	8d 0c 38             	lea    (%eax,%edi,1),%ecx
43a5c0:	89 4d b8             	mov    %ecx,-0x48(%ebp)
43a5c3:	3b cf                	cmp    %edi,%ecx
43a5c5:	72 04                	jb     0x43a5cb
43a5c7:	3b c8                	cmp    %eax,%ecx
43a5c9:	73 1b                	jae    0x43a5e6
43a5cb:	8d 42 01             	lea    0x1(%edx),%eax
43a5ce:	8b cb                	mov    %ebx,%ecx
43a5d0:	3b c2                	cmp    %edx,%eax
43a5d2:	72 05                	jb     0x43a5d9
43a5d4:	83 f8 01             	cmp    $0x1,%eax
43a5d7:	73 03                	jae    0x43a5dc
43a5d9:	33 c9                	xor    %ecx,%ecx
43a5db:	41                   	inc    %ecx
43a5dc:	85 c9                	test   %ecx,%ecx
43a5de:	8b d0                	mov    %eax,%edx
43a5e0:	8b 4d b8             	mov    -0x48(%ebp),%ecx
43a5e3:	74 01                	je     0x43a5e6
43a5e5:	46                   	inc    %esi
43a5e6:	8b 45 c8             	mov    -0x38(%ebp),%eax
43a5e9:	8d 3c 10             	lea    (%eax,%edx,1),%edi
43a5ec:	3b fa                	cmp    %edx,%edi
43a5ee:	72 04                	jb     0x43a5f4
43a5f0:	3b f8                	cmp    %eax,%edi
43a5f2:	73 01                	jae    0x43a5f5
43a5f4:	46                   	inc    %esi
43a5f5:	03 75 cc             	add    -0x34(%ebp),%esi
43a5f8:	8b c1                	mov    %ecx,%eax
43a5fa:	8b 55 b8             	mov    -0x48(%ebp),%edx
43a5fd:	8b cf                	mov    %edi,%ecx
43a5ff:	03 d2                	add    %edx,%edx
43a601:	c1 e8 1f             	shr    $0x1f,%eax
43a604:	89 55 c0             	mov    %edx,-0x40(%ebp)
43a607:	89 55 e0             	mov    %edx,-0x20(%ebp)
43a60a:	8d 14 3f             	lea    (%edi,%edi,1),%edx
43a60d:	0b d0                	or     %eax,%edx
43a60f:	c1 e9 1f             	shr    $0x1f,%ecx
43a612:	8d 04 36             	lea    (%esi,%esi,1),%eax
43a615:	89 55 e4             	mov    %edx,-0x1c(%ebp)
43a618:	0b c1                	or     %ecx,%eax
43a61a:	8b 4d a8             	mov    -0x58(%ebp),%ecx
43a61d:	89 45 e8             	mov    %eax,-0x18(%ebp)
43a620:	c1 e8 18             	shr    $0x18,%eax
43a623:	04 30                	add    $0x30,%al
43a625:	88 5d eb             	mov    %bl,-0x15(%ebp)
43a628:	88 01                	mov    %al,(%ecx)
43a62a:	41                   	inc    %ecx
43a62b:	8b 45 ac             	mov    -0x54(%ebp),%eax
43a62e:	48                   	dec    %eax
43a62f:	89 4d a8             	mov    %ecx,-0x58(%ebp)
43a632:	89 45 ac             	mov    %eax,-0x54(%ebp)
43a635:	85 c0                	test   %eax,%eax
43a637:	7e 0b                	jle    0x43a644
43a639:	8b 45 e8             	mov    -0x18(%ebp),%eax
43a63c:	89 45 bc             	mov    %eax,-0x44(%ebp)
43a63f:	e9 3e ff ff ff       	jmp    0x43a582
43a644:	8b 75 8c             	mov    -0x74(%ebp),%esi
43a647:	8b 7d 9c             	mov    -0x64(%ebp),%edi
43a64a:	8a 41 ff             	mov    -0x1(%ecx),%al
43a64d:	83 e9 02             	sub    $0x2,%ecx
43a650:	3c 35                	cmp    $0x35,%al
43a652:	7c 45                	jl     0x43a699
43a654:	eb 09                	jmp    0x43a65f
43a656:	80 39 39             	cmpb   $0x39,(%ecx)
43a659:	75 08                	jne    0x43a663
43a65b:	c6 01 30             	movb   $0x30,(%ecx)
43a65e:	49                   	dec    %ecx
43a65f:	3b cf                	cmp    %edi,%ecx
43a661:	73 f3                	jae    0x43a656
43a663:	3b cf                	cmp    %edi,%ecx
43a665:	73 04                	jae    0x43a66b
43a667:	41                   	inc    %ecx
43a668:	66 ff 06             	incw   (%esi)
43a66b:	fe 01                	incb   (%ecx)
43a66d:	8b 45 8c             	mov    -0x74(%ebp),%eax
43a670:	2a c8                	sub    %al,%cl
43a672:	80 e9 03             	sub    $0x3,%cl
43a675:	88 48 03             	mov    %cl,0x3(%eax)
43a678:	0f be c9             	movsbl %cl,%ecx
43a67b:	88 5c 01 04          	mov    %bl,0x4(%ecx,%eax,1)
43a67f:	33 c0                	xor    %eax,%eax
43a681:	40                   	inc    %eax
43a682:	8b 4d fc             	mov    -0x4(%ebp),%ecx
43a685:	5f                   	pop    %edi
43a686:	5e                   	pop    %esi
43a687:	33 cd                	xor    %ebp,%ecx
43a689:	5b                   	pop    %ebx
43a68a:	e8 a7 21 ff ff       	call   0x42c836
43a68f:	8b e5                	mov    %ebp,%esp
43a691:	5d                   	pop    %ebp
43a692:	c3                   	ret
43a693:	80 39 30             	cmpb   $0x30,(%ecx)
43a696:	75 05                	jne    0x43a69d
43a698:	49                   	dec    %ecx
43a699:	3b cf                	cmp    %edi,%ecx
43a69b:	73 f6                	jae    0x43a693
43a69d:	3b cf                	cmp    %edi,%ecx
43a69f:	73 cc                	jae    0x43a66d
43a6a1:	8b 4d 8c             	mov    -0x74(%ebp),%ecx
43a6a4:	33 c0                	xor    %eax,%eax
43a6a6:	66 89 01             	mov    %ax,(%ecx)
43a6a9:	b8 00 80 00 00       	mov    $0x8000,%eax
43a6ae:	66 39 45 80          	cmp    %ax,-0x80(%ebp)
43a6b2:	0f 95 c0             	setne  %al
43a6b5:	fe c8                	dec    %al
43a6b7:	24 0d                	and    $0xd,%al
43a6b9:	04 20                	add    $0x20,%al
43a6bb:	88 41 02             	mov    %al,0x2(%ecx)
43a6be:	33 c0                	xor    %eax,%eax
43a6c0:	40                   	inc    %eax
43a6c1:	88 41 03             	mov    %al,0x3(%ecx)
43a6c4:	c6 07 30             	movb   $0x30,(%edi)
43a6c7:	e9 02 fe ff ff       	jmp    0x43a4ce
43a6cc:	33 db                	xor    %ebx,%ebx
43a6ce:	53                   	push   %ebx
43a6cf:	53                   	push   %ebx
43a6d0:	53                   	push   %ebx
43a6d1:	53                   	push   %ebx
43a6d2:	53                   	push   %ebx
43a6d3:	e8 2e e9 fe ff       	call   0x429006
43a6d8:	cc                   	int3
43a6d9:	55                   	push   %ebp
43a6da:	8b ec                	mov    %esp,%ebp
43a6dc:	8b 4d 08             	mov    0x8(%ebp),%ecx
43a6df:	33 c0                	xor    %eax,%eax
43a6e1:	f6 c1 10             	test   $0x10,%cl
43a6e4:	74 05                	je     0x43a6eb
43a6e6:	b8 80 00 00 00       	mov    $0x80,%eax
43a6eb:	53                   	push   %ebx
43a6ec:	56                   	push   %esi
43a6ed:	57                   	push   %edi