416359:	7f 8e                	jg     0x4162e9
41635b:	8b 75 a4             	mov    -0x5c(%ebp),%esi
41635e:	8b 55 dc             	mov    -0x24(%ebp),%edx
416361:	8b 7d d4             	mov    -0x2c(%ebp),%edi
416364:	81 c6 02 c0 00 00    	add    $0xc002,%esi
41636a:	89 55 b0             	mov    %edx,-0x50(%ebp)
41636d:	66 85 f6             	test   %si,%si
416370:	7e 3b                	jle    0x4163ad
416372:	85 d2                	test   %edx,%edx
416374:	78 32                	js     0x4163a8
416376:	8b 45 d8             	mov    -0x28(%ebp),%eax
416379:	8b c8                	mov    %eax,%ecx
41637b:	8b d7                	mov    %edi,%edx
41637d:	c1 ea 1f             	shr    $0x1f,%edx
416380:	03 c0                	add    %eax,%eax
416382:	0b c2                	or     %edx,%eax
416384:	8b 55 b0             	mov    -0x50(%ebp),%edx
416387:	89 45 d8             	mov    %eax,-0x28(%ebp)
41638a:	c1 e9 1f             	shr    $0x1f,%ecx
41638d:	03 d2                	add    %edx,%edx
41638f:	b8 ff ff 00 00       	mov    $0xffff,%eax
416394:	0b d1                	or     %ecx,%edx
416396:	03 ff                	add    %edi,%edi
416398:	03 f0                	add    %eax,%esi
41639a:	89 7d d4             	mov    %edi,-0x2c(%ebp)
41639d:	89 55 b0             	mov    %edx,-0x50(%ebp)
4163a0:	89 55 dc             	mov    %edx,-0x24(%ebp)
4163a3:	66 85 f6             	test   %si,%si
4163a6:	7f ca                	jg     0x416372
4163a8:	66 85 f6             	test   %si,%si
4163ab:	7f 69                	jg     0x416416
4163ad:	b8 ff ff 00 00       	mov    $0xffff,%eax
4163b2:	03 f0                	add    %eax,%esi
4163b4:	66 85 f6             	test   %si,%si
4163b7:	79 5d                	jns    0x416416
4163b9:	8b 5d 88             	mov    -0x78(%ebp),%ebx
4163bc:	8b c6                	mov    %esi,%eax
4163be:	f7 d8                	neg    %eax
4163c0:	0f b7 c0             	movzwl %ax,%eax
4163c3:	89 45 98             	mov    %eax,-0x68(%ebp)
4163c6:	03 f0                	add    %eax,%esi
4163c8:	f6 45 d4 01          	testb  $0x1,-0x2c(%ebp)
4163cc:	74 01                	je     0x4163cf
4163ce:	43                   	inc    %ebx
4163cf:	8b 4d d8             	mov    -0x28(%ebp),%ecx
4163d2:	8b c2                	mov    %edx,%eax
4163d4:	c1 e0 1f             	shl    $0x1f,%eax
4163d7:	89 4d b0             	mov    %ecx,-0x50(%ebp)
4163da:	d1 6d b0             	shrl   $1,-0x50(%ebp)
4163dd:	09 45 b0             	or     %eax,-0x50(%ebp)
4163e0:	8b 45 b0             	mov    -0x50(%ebp),%eax
4163e3:	c1 e1 1f             	shl    $0x1f,%ecx
4163e6:	d1 ef                	shr    $1,%edi
4163e8:	d1 ea                	shr    $1,%edx
4163ea:	0b f9                	or     %ecx,%edi
4163ec:	ff 4d 98             	decl   -0x68(%ebp)
4163ef:	89 55 dc             	mov    %edx,-0x24(%ebp)
4163f2:	89 45 d8             	mov    %eax,-0x28(%ebp)
4163f5:	89 7d d4             	mov    %edi,-0x2c(%ebp)
4163f8:	75 ce                	jne    0x4163c8
4163fa:	6a 00                	push   $0x0
4163fc:	85 db                	test   %ebx,%ebx
4163fe:	89 55 b0             	mov    %edx,-0x50(%ebp)
416401:	5b                   	pop    %ebx
416402:	74 12                	je     0x416416
416404:	66 8b c7             	mov    %di,%ax
416407:	33 ff                	xor    %edi,%edi
416409:	47                   	inc    %edi
41640a:	66 0b c7             	or     %di,%ax
41640d:	66 89 45 d4          	mov    %ax,-0x2c(%ebp)
416411:	8b 7d d4             	mov    -0x2c(%ebp),%edi
416414:	eb 04                	jmp    0x41641a
416416:	66 8b 45 d4          	mov    -0x2c(%ebp),%ax
41641a:	ba 00 80 00 00       	mov    $0x8000,%edx
41641f:	66 3b c2             	cmp    %dx,%ax
416422:	77 0e                	ja     0x416432
416424:	81 e7 ff ff 01 00    	and    $0x1ffff,%edi
41642a:	81 ff 00 80 01 00    	cmp    $0x18000,%edi
416430:	75 40                	jne    0x416472
416432:	8b 45 d6             	mov    -0x2a(%ebp),%eax
416435:	83 f8 ff             	cmp    $0xffffffff,%eax
416438:	75 34                	jne    0x41646e
41643a:	8b 45 da             	mov    -0x26(%ebp),%eax
41643d:	89 5d d6             	mov    %ebx,-0x2a(%ebp)
416440:	83 f8 ff             	cmp    $0xffffffff,%eax
416443:	75 20                	jne    0x416465
416445:	66 8b 45 de          	mov    -0x22(%ebp),%ax
416449:	b9 ff ff 00 00       	mov    $0xffff,%ecx
41644e:	89 5d da             	mov    %ebx,-0x26(%ebp)
416451:	66 3b c1             	cmp    %cx,%ax
416454:	75 07                	jne    0x41645d
416456:	66 89 55 de          	mov    %dx,-0x22(%ebp)
41645a:	46                   	inc    %esi
41645b:	eb 0c                	jmp    0x416469
41645d:	66 40                	inc    %ax
41645f:	66 89 45 de          	mov    %ax,-0x22(%ebp)
416463:	eb 04                	jmp    0x416469
416465:	40                   	inc    %eax
416466:	89 45 da             	mov    %eax,-0x26(%ebp)
416469:	8b 4d dc             	mov    -0x24(%ebp),%ecx
41646c:	eb 07                	jmp    0x416475
41646e:	40                   	inc    %eax
41646f:	89 45 d6             	mov    %eax,-0x2a(%ebp)
416472:	8b 4d b0             	mov    -0x50(%ebp),%ecx
416475:	ba ff 7f 00 00       	mov    $0x7fff,%edx
41647a:	66 3b f2             	cmp    %dx,%si
41647d:	73 1a                	jae    0x416499
41647f:	66 8b 45 d6          	mov    -0x2a(%ebp),%ax
416483:	0b 75 a0             	or     -0x60(%ebp),%esi
416486:	66 89 45 c4          	mov    %ax,-0x3c(%ebp)
41648a:	8b 45 d8             	mov    -0x28(%ebp),%eax
41648d:	89 45 c6             	mov    %eax,-0x3a(%ebp)
416490:	89 4d ca             	mov    %ecx,-0x36(%ebp)
416493:	66 89 75 ce          	mov    %si,-0x32(%ebp)
416497:	eb 1d                	jmp    0x4164b6
416499:	33 c0                	xor    %eax,%eax
41649b:	66 39 45 a0          	cmp    %ax,-0x60(%ebp)
41649f:	0f 94 c0             	sete   %al
4164a2:	48                   	dec    %eax
4164a3:	25 00 00 00 80       	and    $0x80000000,%eax
4164a8:	05 00 80 ff 7f       	add    $0x7fff8000,%eax
4164ad:	89 45 cc             	mov    %eax,-0x34(%ebp)
4164b0:	89 5d c4             	mov    %ebx,-0x3c(%ebp)
4164b3:	89 5d c8             	mov    %ebx,-0x38(%ebp)
4164b6:	8b 45 b4             	mov    -0x4c(%ebp),%eax
4164b9:	8b 75 ac             	mov    -0x54(%ebp),%esi
4164bc:	85 f6                	test   %esi,%esi
4164be:	0f 85 31 fd ff ff    	jne    0x4161f5
4164c4:	8b 45 cc             	mov    -0x34(%ebp),%eax
4164c7:	0f b7 4d c4          	movzwl -0x3c(%ebp),%ecx
4164cb:	8b 55 c6             	mov    -0x3a(%ebp),%edx
4164ce:	8b 75 ca             	mov    -0x36(%ebp),%esi
4164d1:	c1 e8 10             	shr    $0x10,%eax
4164d4:	eb 32                	jmp    0x416508
4164d6:	33 ff                	xor    %edi,%edi
4164d8:	8b cb                	mov    %ebx,%ecx
4164da:	8b c3                	mov    %ebx,%eax
4164dc:	8b f3                	mov    %ebx,%esi
4164de:	8b d3                	mov    %ebx,%edx
4164e0:	8d 5f 01             	lea    0x1(%edi),%ebx
4164e3:	eb 23                	jmp    0x416508
4164e5:	b8 ff 7f 00 00       	mov    $0x7fff,%eax
4164ea:	be 00 00 00 80       	mov    $0x80000000,%esi
4164ef:	6a 02                	push   $0x2
4164f1:	eb 10                	jmp    0x416503
4164f3:	8b cb                	mov    %ebx,%ecx
4164f5:	8b c3                	mov    %ebx,%eax
4164f7:	8b f3                	mov    %ebx,%esi
4164f9:	8b d3                	mov    %ebx,%edx
4164fb:	eb 0b                	jmp    0x416508
4164fd:	8b c3                	mov    %ebx,%eax
4164ff:	8b f3                	mov    %ebx,%esi
416501:	6a 04                	push   $0x4
416503:	8b cb                	mov    %ebx,%ecx
416505:	8b d3                	mov    %ebx,%edx
416507:	5b                   	pop    %ebx
416508:	8b 7d 8c             	mov    -0x74(%ebp),%edi
41650b:	0b 45 94             	or     -0x6c(%ebp),%eax
41650e:	66 89 0f             	mov    %cx,(%edi)
416511:	66 89 47 0a          	mov    %ax,0xa(%edi)
416515:	89 57 02             	mov    %edx,0x2(%edi)
416518:	89 77 06             	mov    %esi,0x6(%edi)
41651b:	8b c3                	mov    %ebx,%eax
41651d:	8b 4d fc             	mov    -0x4(%ebp),%ecx
416520:	5f                   	pop    %edi
416521:	5e                   	pop    %esi
416522:	33 cd                	xor    %ebp,%ecx
416524:	5b                   	pop    %ebx
416525:	e8 0f e2 fe ff       	call   0x404739
41652a:	c9                   	leave
41652b:	c3                   	ret
41652c:	90                   	nop
41652d:	71 5e                	jno    0x41658d
41652f:	41                   	inc    %ecx
416530:	00 c3                	add    %al,%bl
416532:	5e                   	pop    %esi
416533:	41                   	inc    %ecx
416534:	00 1d 5f 41 00 4e    	add    %bl,0x4e00415f
41653a:	5f                   	pop    %edi
41653b:	41                   	inc    %ecx
41653c:	00 af 5f 41 00 32    	add    %ch,0x3200415f(%edi)
416542:	60                   	pusha
416543:	41                   	inc    %ecx
416544:	00 4b 60             	add    %cl,0x60(%ebx)
416547:	41                   	inc    %ecx
416548:	00 ae 60 41 00 90    	add    %ch,-0x6fffbea0(%esi)
41654e:	60                   	pusha
41654f:	41                   	inc    %ecx
416550:	00 f0                	add    %dh,%al
416552:	60                   	pusha
416553:	41                   	inc    %ecx
416554:	00 e5                	add    %ah,%ch
416556:	60                   	pusha
416557:	41                   	inc    %ecx
416558:	00 ba 60 41 00 55    	add    %bh,0x55004160(%edx)
41655e:	8b ec                	mov    %esp,%ebp
416560:	81 ec 88 00 00 00    	sub    $0x88,%esp
416566:	a1 90 08 42 00       	mov    0x420890,%eax
41656b:	33 c5                	xor    %ebp,%eax
41656d:	89 45 fc             	mov    %eax,-0x4(%ebp)
416570:	0f b7 55 10          	movzwl 0x10(%ebp),%edx
416574:	53                   	push   %ebx
416575:	8b 5d 1c             	mov    0x1c(%ebp),%ebx
416578:	56                   	push   %esi
416579:	be 00 80 00 00       	mov    $0x8000,%esi
41657e:	23 d6                	and    %esi,%edx
416580:	0f b7 75 10          	movzwl 0x10(%ebp),%esi
416584:	33 c9                	xor    %ecx,%ecx
416586:	b8 ff 7f 00 00       	mov    $0x7fff,%eax
41658b:	41                   	inc    %ecx
41658c:	23 f0                	and    %eax,%esi
41658e:	57                   	push   %edi
41658f:	89 5d 90             	mov    %ebx,-0x70(%ebp)
416592:	c7 45 d0 cc cc cc cc 	movl   $0xcccccccc,-0x30(%ebp)
416599:	c7 45 d4 cc cc cc cc 	movl   $0xcccccccc,-0x2c(%ebp)
4165a0:	c7 45 d8 cc cc fb 3f 	movl   $0x3ffbcccc,-0x28(%ebp)
4165a7:	89 55 88             	mov    %edx,-0x78(%ebp)
4165aa:	89 45 98             	mov    %eax,-0x68(%ebp)
4165ad:	66 85 d2             	test   %dx,%dx
4165b0:	74 06                	je     0x4165b8
4165b2:	c6 43 02 2d          	movb   $0x2d,0x2(%ebx)
4165b6:	eb 04                	jmp    0x4165bc
4165b8:	c6 43 02 20          	movb   $0x20,0x2(%ebx)
4165bc:	8b 7d 0c             	mov    0xc(%ebp),%edi
4165bf:	66 85 f6             	test   %si,%si
4165c2:	75 3a                	jne    0x4165fe
4165c4:	85 ff                	test   %edi,%edi
4165c6:	0f 85 c7 00 00 00    	jne    0x416693
4165cc:	39 7d 08             	cmp    %edi,0x8(%ebp)
4165cf:	0f 85 be 00 00 00    	jne    0x416693
4165d5:	33 c0                	xor    %eax,%eax
4165d7:	66 89 03             	mov    %ax,(%ebx)
4165da:	b8 00 80 00 00       	mov    $0x8000,%eax
4165df:	66 3b d0             	cmp    %ax,%dx
4165e2:	0f 95 c0             	setne  %al
4165e5:	fe c8                	dec    %al
4165e7:	24 0d                	and    $0xd,%al
4165e9:	04 20                	add    $0x20,%al
4165eb:	88 43 02             	mov    %al,0x2(%ebx)
4165ee:	88 4b 03             	mov    %cl,0x3(%ebx)
4165f1:	66 c7 43 04 30 00    	movw   $0x30,0x4(%ebx)
4165f7:	8b c1                	mov    %ecx,%eax
4165f9:	e9 ce 08 00 00       	jmp    0x416ecc
4165fe:	66 3b f0             	cmp    %ax,%si
416601:	0f 85 8c 00 00 00    	jne    0x416693
416607:	8b 45 0c             	mov    0xc(%ebp),%eax
41660a:	ba 00 00 00 80       	mov    $0x80000000,%edx
41660f:	66 89 0b             	mov    %cx,(%ebx)
416612:	8b 4d 08             	mov    0x8(%ebp),%ecx
416615:	3b c2                	cmp    %edx,%eax
416617:	75 04                	jne    0x41661d
416619:	85 c9                	test   %ecx,%ecx
41661b:	74 0e                	je     0x41662b
41661d:	a9 00 00 00 40       	test   $0x40000000,%eax
416622:	75 07                	jne    0x41662b
416624:	68 7c d3 41 00       	push   $0x41d37c
416629:	eb 47                	jmp    0x416672
41662b:	66 83 7d 88 00       	cmpw   $0x0,-0x78(%ebp)
416630:	74 12                	je     0x416644
416632:	3d 00 00 00 c0       	cmp    $0xc0000000,%eax
416637:	75 0b                	jne    0x416644
416639:	85 c9                	test   %ecx,%ecx
41663b:	75 30                	jne    0x41666d
41663d:	68 84 d3 41 00       	push   $0x41d384
416642:	eb 0d                	jmp    0x416651
416644:	3b c2                	cmp    %edx,%eax
416646:	75 25                	jne    0x41666d
416648:	85 c9                	test   %ecx,%ecx
41664a:	75 21                	jne    0x41666d
41664c:	68 8c d3 41 00       	push   $0x41d38c
416651:	8d 43 04             	lea    0x4(%ebx),%eax
416654:	6a 16                	push   $0x16
416656:	50                   	push   %eax
416657:	e8 e9 4d ff ff       	call   0x40b445
41665c:	83 c4 0c             	add    $0xc,%esp
41665f:	85 c0                	test   %eax,%eax
416661:	0f 85 ad 08 00 00    	jne    0x416f14
416667:	c6 43 03 05          	movb   $0x5,0x3(%ebx)
41666b:	eb 1f                	jmp    0x41668c
41666d:	68 94 d3 41 00       	push   $0x41d394
416672:	8d 43 04             	lea    0x4(%ebx),%eax
416675:	6a 16                	push   $0x16
416677:	50                   	push   %eax
416678:	e8 c8 4d ff ff       	call   0x40b445
41667d:	83 c4 0c             	add    $0xc,%esp
416680:	85 c0                	test   %eax,%eax
416682:	0f 85 8c 08 00 00    	jne    0x416f14
416688:	c6 43 03 06          	movb   $0x6,0x3(%ebx)
41668c:	33 c0                	xor    %eax,%eax
41668e:	e9 39 08 00 00       	jmp    0x416ecc
416693:	0f b7 d6             	movzwl %si,%edx
416696:	8b c2                	mov    %edx,%eax
416698:	69 d2 10 4d 00 00    	imul   $0x4d10,%edx,%edx
41669e:	c1 e8 08             	shr    $0x8,%eax
4166a1:	8b cf                	mov    %edi,%ecx
4166a3:	c1 e9 18             	shr    $0x18,%ecx
4166a6:	81 c2 0c ed bc ec    	add    $0xecbced0c,%edx
4166ac:	8d 04 48             	lea    (%eax,%ecx,2),%eax
4166af:	6b c0 4d             	imul   $0x4d,%eax,%eax
4166b2:	03 c2                	add    %edx,%eax
4166b4:	c1 f8 10             	sar    $0x10,%eax
4166b7:	0f b7 c8             	movzwl %ax,%ecx
4166ba:	8b 45 08             	mov    0x8(%ebp),%eax
4166bd:	89 45 e2             	mov    %eax,-0x1e(%ebp)
4166c0:	33 c0                	xor    %eax,%eax
4166c2:	89 4d b8             	mov    %ecx,-0x48(%ebp)
4166c5:	0f bf c9             	movswl %cx,%ecx
4166c8:	66 89 45 e0          	mov    %ax,-0x20(%ebp)
4166cc:	f7 d9                	neg    %ecx
4166ce:	b8 40 14 42 00       	mov    $0x421440,%eax
4166d3:	83 e8 60             	sub    $0x60,%eax
4166d6:	33 db                	xor    %ebx,%ebx
4166d8:	66 89 75 ea          	mov    %si,-0x16(%ebp)
4166dc:	89 7d e6             	mov    %edi,-0x1a(%ebp)
4166df:	89 4d bc             	mov    %ecx,-0x44(%ebp)
4166e2:	c7 45 a4 05 00 00 00 	movl   $0x5,-0x5c(%ebp)
4166e9:	c7 45 94 fd bf 00 00 	movl   $0xbffd,-0x6c(%ebp)
4166f0:	c7 45 a8 bf 3f 00 00 	movl   $0x3fbf,-0x58(%ebp)
4166f7:	85 c9                	test   %ecx,%ecx
4166f9:	0f 84 21 03 00 00    	je     0x416a20
4166ff:	79 0f                	jns    0x416710
416701:	f7 d9                	neg    %ecx
416703:	b8 a0 15 42 00       	mov    $0x4215a0,%eax
416708:	83 e8 60             	sub    $0x60,%eax
41670b:	89 4d bc             	mov    %ecx,-0x44(%ebp)
41670e:	85 c9                	test   %ecx,%ecx
416710:	0f 84 0a 03 00 00    	je     0x416a20
416716:	8b 75 e0             	mov    -0x20(%ebp),%esi
416719:	8b 55 e4             	mov    -0x1c(%ebp),%edx
41671c:	89 75 c0             	mov    %esi,-0x40(%ebp)
41671f:	c1 7d bc 03          	sarl   $0x3,-0x44(%ebp)
416723:	83 c0 54             	add    $0x54,%eax
416726:	89 45 ac             	mov    %eax,-0x54(%ebp)
416729:	83 e1 07             	and    $0x7,%ecx
41672c:	0f 84 e1 02 00 00    	je     0x416a13
416732:	6b c9 0c             	imul   $0xc,%ecx,%ecx
416735:	03 c8                	add    %eax,%ecx
416737:	b8 00 80 00 00       	mov    $0x8000,%eax
41673c:	89 8d 78 ff ff ff    	mov    %ecx,-0x88(%ebp)
416742:	66 39 01             	cmp    %ax,(%ecx)
416745:	72 14                	jb     0x41675b
416747:	8b f1                	mov    %ecx,%esi
416749:	8d 7d c4             	lea    -0x3c(%ebp),%edi
41674c:	a5                   	movsl  %ds:(%esi),%es:(%edi)
41674d:	a5                   	movsl  %ds:(%esi),%es:(%edi)
41674e:	8d 4d c4             	lea    -0x3c(%ebp),%ecx
416751:	a5                   	movsl  %ds:(%esi),%es:(%edi)
416752:	ff 4d c6             	decl   -0x3a(%ebp)
416755:	89 8d 78 ff ff ff    	mov    %ecx,-0x88(%ebp)
41675b:	0f b7 79 0a          	movzwl 0xa(%ecx),%edi