477484:	50                   	push   %eax
477485:	8d 44 24 18          	lea    0x18(%esp),%eax
477489:	8b cb                	mov    %ebx,%ecx
47748b:	50                   	push   %eax
47748c:	6a 20                	push   $0x20
47748e:	56                   	push   %esi
47748f:	e8 7c de fe ff       	call   0x465310
477494:	83 c4 10             	add    $0x10,%esp
477497:	84 c0                	test   %al,%al
477499:	74 9b                	je     0x477436
47749b:	6a 00                	push   $0x0
47749d:	6a 00                	push   $0x0
47749f:	ff 74 24 18          	push   0x18(%esp)
4774a3:	ff 74 24 20          	push   0x20(%esp)
4774a7:	68 01 80 00 00       	push   $0x8001
4774ac:	ff 15 98 f5 48 00    	call   *0x48f598
4774b2:	6a 0a                	push   $0xa
4774b4:	59                   	pop    %ecx
4774b5:	e8 2c e0 fe ff       	call   0x4654e6
4774ba:	eb c2                	jmp    0x47747e
4774bc:	55                   	push   %ebp
4774bd:	8b ec                	mov    %esp,%ebp
4774bf:	51                   	push   %ecx
4774c0:	51                   	push   %ecx
4774c1:	8b 45 0c             	mov    0xc(%ebp),%eax
4774c4:	33 d2                	xor    %edx,%edx
4774c6:	8b 4d 14             	mov    0x14(%ebp),%ecx
4774c9:	42                   	inc    %edx
4774ca:	53                   	push   %ebx
4774cb:	56                   	push   %esi
4774cc:	8b 75 08             	mov    0x8(%ebp),%esi
4774cf:	03 c6                	add    %esi,%eax
4774d1:	89 45 fc             	mov    %eax,-0x4(%ebp)
4774d4:	8b 45 10             	mov    0x10(%ebp),%eax
4774d7:	8b d8                	mov    %eax,%ebx
4774d9:	0f af d9             	imul   %ecx,%ebx
4774dc:	57                   	push   %edi
4774dd:	c1 e1 02             	shl    $0x2,%ecx
4774e0:	33 ff                	xor    %edi,%edi
4774e2:	8d 04 86             	lea    (%esi,%eax,4),%eax
4774e5:	89 4d 10             	mov    %ecx,0x10(%ebp)
4774e8:	89 45 08             	mov    %eax,0x8(%ebp)
4774eb:	c1 e3 02             	shl    $0x2,%ebx
4774ee:	89 5d 0c             	mov    %ebx,0xc(%ebp)
4774f1:	8b de                	mov    %esi,%ebx
4774f3:	3b f0                	cmp    %eax,%esi
4774f5:	73 5f                	jae    0x477556
4774f7:	b9 ae 15 00 00       	mov    $0x15ae,%ecx
4774fc:	0f b6 46 02          	movzbl 0x2(%esi),%eax
477500:	03 d0                	add    %eax,%edx
477502:	0f b6 46 01          	movzbl 0x1(%esi),%eax
477506:	03 fa                	add    %edx,%edi
477508:	03 d0                	add    %eax,%edx
47750a:	0f b6 06             	movzbl (%esi),%eax
47750d:	03 fa                	add    %edx,%edi
47750f:	03 75 0c             	add    0xc(%ebp),%esi
477512:	03 d0                	add    %eax,%edx
477514:	03 fa                	add    %edx,%edi
477516:	3b 75 fc             	cmp    -0x4(%ebp),%esi
477519:	72 05                	jb     0x477520
47751b:	03 5d 10             	add    0x10(%ebp),%ebx
47751e:	8b f3                	mov    %ebx,%esi
477520:	83 e9 03             	sub    $0x3,%ecx
477523:	74 05                	je     0x47752a
477525:	3b 5d 08             	cmp    0x8(%ebp),%ebx
477528:	72 d2                	jb     0x4774fc
47752a:	8b c2                	mov    %edx,%eax
47752c:	0f b7 d2             	movzwl %dx,%edx
47752f:	c1 e8 10             	shr    $0x10,%eax
477532:	6b c8 0f             	imul   $0xf,%eax,%ecx
477535:	8b c7                	mov    %edi,%eax
477537:	c1 e8 10             	shr    $0x10,%eax
47753a:	0f b7 ff             	movzwl %di,%edi
47753d:	03 d1                	add    %ecx,%edx
47753f:	6b c8 0f             	imul   $0xf,%eax,%ecx
477542:	03 f9                	add    %ecx,%edi
477544:	3b 5d 08             	cmp    0x8(%ebp),%ebx
477547:	72 ae                	jb     0x4774f7
477549:	bb f1 ff 00 00       	mov    $0xfff1,%ebx
47754e:	3b d3                	cmp    %ebx,%edx
477550:	72 09                	jb     0x47755b
477552:	2b d3                	sub    %ebx,%edx
477554:	eb 05                	jmp    0x47755b
477556:	bb f1 ff 00 00       	mov    $0xfff1,%ebx
47755b:	8b c7                	mov    %edi,%eax
47755d:	c1 e8 10             	shr    $0x10,%eax
477560:	6b c8 0f             	imul   $0xf,%eax,%ecx
477563:	0f b7 c7             	movzwl %di,%eax
477566:	03 c8                	add    %eax,%ecx
477568:	3b cb                	cmp    %ebx,%ecx
47756a:	72 02                	jb     0x47756e
47756c:	2b cb                	sub    %ebx,%ecx
47756e:	c1 e1 10             	shl    $0x10,%ecx
477571:	0b ca                	or     %edx,%ecx
477573:	89 4d 08             	mov    %ecx,0x8(%ebp)
477576:	db 45 08             	fildl  0x8(%ebp)
477579:	79 06                	jns    0x477581
47757b:	dc 05 c8 ba 4b 00    	faddl  0x4bbac8
477581:	5f                   	pop    %edi
477582:	dd 5d f8             	fstpl  -0x8(%ebp)
477585:	dd 45 f8             	fldl   -0x8(%ebp)
477588:	5e                   	pop    %esi
477589:	5b                   	pop    %ebx
47758a:	8b e5                	mov    %ebp,%esp
47758c:	5d                   	pop    %ebp
47758d:	c2 10 00             	ret    $0x10
477590:	55                   	push   %ebp
477591:	8b ec                	mov    %esp,%ebp
477593:	51                   	push   %ecx
477594:	51                   	push   %ecx
477595:	8b 45 0c             	mov    0xc(%ebp),%eax
477598:	83 ca ff             	or     $0xffffffff,%edx
47759b:	53                   	push   %ebx
47759c:	56                   	push   %esi
47759d:	8b 75 08             	mov    0x8(%ebp),%esi
4775a0:	03 c6                	add    %esi,%eax
4775a2:	89 45 08             	mov    %eax,0x8(%ebp)
4775a5:	8b 45 10             	mov    0x10(%ebp),%eax
4775a8:	8b d8                	mov    %eax,%ebx
4775aa:	0f af 5d 14          	imul   0x14(%ebp),%ebx
4775ae:	57                   	push   %edi
4775af:	8b fe                	mov    %esi,%edi
4775b1:	8d 04 86             	lea    (%esi,%eax,4),%eax
4775b4:	89 45 10             	mov    %eax,0x10(%ebp)
4775b7:	8b 45 14             	mov    0x14(%ebp),%eax
4775ba:	c1 e3 02             	shl    $0x2,%ebx
4775bd:	c1 e0 02             	shl    $0x2,%eax
4775c0:	89 45 0c             	mov    %eax,0xc(%ebp)
4775c3:	0f b6 46 02          	movzbl 0x2(%esi),%eax
4775c7:	0f b6 ca             	movzbl %dl,%ecx
4775ca:	33 c8                	xor    %eax,%ecx
4775cc:	c1 ea 08             	shr    $0x8,%edx
4775cf:	0f b6 46 01          	movzbl 0x1(%esi),%eax
4775d3:	33 14 8d b0 70 4b 00 	xor    0x4b70b0(,%ecx,4),%edx
4775da:	0f b6 ca             	movzbl %dl,%ecx
4775dd:	33 c8                	xor    %eax,%ecx
4775df:	c1 ea 08             	shr    $0x8,%edx
4775e2:	0f b6 06             	movzbl (%esi),%eax
4775e5:	03 f3                	add    %ebx,%esi
4775e7:	33 14 8d b0 70 4b 00 	xor    0x4b70b0(,%ecx,4),%edx
4775ee:	0f b6 ca             	movzbl %dl,%ecx
4775f1:	33 c8                	xor    %eax,%ecx
4775f3:	c1 ea 08             	shr    $0x8,%edx
4775f6:	33 14 8d b0 70 4b 00 	xor    0x4b70b0(,%ecx,4),%edx
4775fd:	3b 75 08             	cmp    0x8(%ebp),%esi
477600:	72 05                	jb     0x477607
477602:	03 7d 0c             	add    0xc(%ebp),%edi
477605:	8b f7                	mov    %edi,%esi
477607:	3b 7d 10             	cmp    0x10(%ebp),%edi
47760a:	72 b7                	jb     0x4775c3
47760c:	f7 d2                	not    %edx
47760e:	89 55 08             	mov    %edx,0x8(%ebp)
477611:	db 45 08             	fildl  0x8(%ebp)
477614:	85 d2                	test   %edx,%edx
477616:	79 06                	jns    0x47761e
477618:	dc 05 c8 ba 4b 00    	faddl  0x4bbac8
47761e:	5f                   	pop    %edi
47761f:	dd 5d f8             	fstpl  -0x8(%ebp)
477622:	dd 45 f8             	fldl   -0x8(%ebp)
477625:	5e                   	pop    %esi
477626:	5b                   	pop    %ebx
477627:	8b e5                	mov    %ebp,%esp
477629:	5d                   	pop    %ebp
47762a:	c2 10 00             	ret    $0x10
47762d:	55                   	push   %ebp
47762e:	8b ec                	mov    %esp,%ebp
477630:	83 ec 48             	sub    $0x48,%esp
477633:	53                   	push   %ebx
477634:	56                   	push   %esi
477635:	8b 75 0c             	mov    0xc(%ebp),%esi
477638:	57                   	push   %edi
477639:	89 4d f0             	mov    %ecx,-0x10(%ebp)
47763c:	8b 46 08             	mov    0x8(%esi),%eax
47763f:	8b 16                	mov    (%esi),%edx
477641:	3b c2                	cmp    %edx,%eax
477643:	8b 4e 0c             	mov    0xc(%esi),%ecx
477646:	8b 7e 04             	mov    0x4(%esi),%edi
477649:	0f 9c c3             	setl   %bl
47764c:	3b cf                	cmp    %edi,%ecx
47764e:	88 5d ff             	mov    %bl,-0x1(%ebp)
477651:	0f 9c c7             	setl   %bh
477654:	88 7d 0f             	mov    %bh,0xf(%ebp)
477657:	84 db                	test   %bl,%bl
477659:	74 05                	je     0x477660
47765b:	89 06                	mov    %eax,(%esi)
47765d:	89 56 08             	mov    %edx,0x8(%esi)
477660:	84 ff                	test   %bh,%bh
477662:	74 06                	je     0x47766a
477664:	89 4e 04             	mov    %ecx,0x4(%esi)
477667:	89 7e 0c             	mov    %edi,0xc(%esi)
47766a:	ff 75 08             	push   0x8(%ebp)
47766d:	8d 45 e4             	lea    -0x1c(%ebp),%eax
477670:	50                   	push   %eax
477671:	8b 45 f0             	mov    -0x10(%ebp),%eax
477674:	ff b0 04 01 00 00    	push   0x104(%eax)
47767a:	e8 15 c6 ff ff       	call   0x473c94
47767f:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
477682:	01 4e 08             	add    %ecx,0x8(%esi)
477685:	8b 45 e8             	mov    -0x18(%ebp),%eax
477688:	01 46 0c             	add    %eax,0xc(%esi)
47768b:	01 0e                	add    %ecx,(%esi)
47768d:	01 46 04             	add    %eax,0x4(%esi)
477690:	8b 7e 08             	mov    0x8(%esi),%edi
477693:	8b 5e 0c             	mov    0xc(%esi),%ebx
477696:	2b 3e                	sub    (%esi),%edi
477698:	2b 5e 04             	sub    0x4(%esi),%ebx
47769b:	47                   	inc    %edi
47769c:	43                   	inc    %ebx
47769d:	6a 00                	push   $0x0
47769f:	89 5d f4             	mov    %ebx,-0xc(%ebp)
4776a2:	ff 15 28 f6 48 00    	call   *0x48f628
4776a8:	53                   	push   %ebx
4776a9:	57                   	push   %edi
4776aa:	50                   	push   %eax
4776ab:	89 45 f8             	mov    %eax,-0x8(%ebp)
4776ae:	ff 15 e4 f0 48 00    	call   *0x48f0e4
4776b4:	ff 75 f8             	push   -0x8(%ebp)
4776b7:	89 45 08             	mov    %eax,0x8(%ebp)
4776ba:	ff 15 e8 f0 48 00    	call   *0x48f0e8
4776c0:	ff 75 08             	push   0x8(%ebp)
4776c3:	89 45 f0             	mov    %eax,-0x10(%ebp)
4776c6:	50                   	push   %eax
4776c7:	ff 15 ec f0 48 00    	call   *0x48f0ec
4776cd:	8a 75 0f             	mov    0xf(%ebp),%dh
4776d0:	8b cb                	mov    %ebx,%ecx
4776d2:	89 45 ec             	mov    %eax,-0x14(%ebp)
4776d5:	84 f6                	test   %dh,%dh
4776d7:	74 02                	je     0x4776db
4776d9:	f7 d9                	neg    %ecx
4776db:	8a 55 ff             	mov    -0x1(%ebp),%dl
4776de:	8b c7                	mov    %edi,%eax
4776e0:	84 d2                	test   %dl,%dl
4776e2:	74 02                	je     0x4776e6
4776e4:	f7 d8                	neg    %eax
4776e6:	84 f6                	test   %dh,%dh
4776e8:	74 05                	je     0x4776ef
4776ea:	8b 5e 0c             	mov    0xc(%esi),%ebx
4776ed:	eb 03                	jmp    0x4776f2
4776ef:	8b 5e 04             	mov    0x4(%esi),%ebx
4776f2:	89 5d 0c             	mov    %ebx,0xc(%ebp)
4776f5:	8b 5d f4             	mov    -0xc(%ebp),%ebx
4776f8:	84 d2                	test   %dl,%dl
4776fa:	74 05                	je     0x477701
4776fc:	8b 56 08             	mov    0x8(%esi),%edx
4776ff:	eb 02                	jmp    0x477703
477701:	8b 16                	mov    (%esi),%edx
477703:	8b 75 f0             	mov    -0x10(%ebp),%esi
477706:	68 20 00 cc 00       	push   $0xcc0020
47770b:	51                   	push   %ecx
47770c:	50                   	push   %eax
47770d:	ff 75 0c             	push   0xc(%ebp)
477710:	52                   	push   %edx
477711:	ff 75 f8             	push   -0x8(%ebp)
477714:	53                   	push   %ebx
477715:	57                   	push   %edi
477716:	6a 00                	push   $0x0
477718:	6a 00                	push   $0x0
47771a:	56                   	push   %esi
47771b:	ff 15 f0 f0 48 00    	call   *0x48f0f0
477721:	8b c3                	mov    %ebx,%eax
477723:	c7 45 b8 28 00 00 00 	movl   $0x28,-0x48(%ebp)
47772a:	f7 d8                	neg    %eax
47772c:	89 7d bc             	mov    %edi,-0x44(%ebp)
47772f:	89 45 c0             	mov    %eax,-0x40(%ebp)
477732:	33 c9                	xor    %ecx,%ecx
477734:	6a 20                	push   $0x20
477736:	33 c0                	xor    %eax,%eax
477738:	89 4d c8             	mov    %ecx,-0x38(%ebp)
47773b:	40                   	inc    %eax
47773c:	66 89 45 c4          	mov    %ax,-0x3c(%ebp)
477740:	58                   	pop    %eax
477741:	51                   	push   %ecx
477742:	66 89 45 c6          	mov    %ax,-0x3a(%ebp)
477746:	8d 45 b8             	lea    -0x48(%ebp),%eax
477749:	50                   	push   %eax
47774a:	51                   	push   %ecx
47774b:	51                   	push   %ecx
47774c:	51                   	push   %ecx
47774d:	ff 75 08             	push   0x8(%ebp)
477750:	56                   	push   %esi
477751:	8b 35 f4 f0 48 00    	mov    0x48f0f4,%esi
477757:	ff d6                	call   *%esi
477759:	8b 45 10             	mov    0x10(%ebp),%eax
47775c:	8b 4d cc             	mov    -0x34(%ebp),%ecx
47775f:	51                   	push   %ecx
477760:	89 08                	mov    %ecx,(%eax)
477762:	e8 8f 98 fa ff       	call   0x420ff6
477767:	59                   	pop    %ecx
477768:	6a 00                	push   $0x0
47776a:	8b f8                	mov    %eax,%edi
47776c:	8d 45 b8             	lea    -0x48(%ebp),%eax
47776f:	50                   	push   %eax
477770:	57                   	push   %edi
477771:	53                   	push   %ebx
477772:	8b 5d f0             	mov    -0x10(%ebp),%ebx
477775:	6a 00                	push   $0x0
477777:	ff 75 08             	push   0x8(%ebp)
47777a:	53                   	push   %ebx
47777b:	ff d6                	call   *%esi
47777d:	ff 75 ec             	push   -0x14(%ebp)
477780:	8b f0                	mov    %eax,%esi
477782:	53                   	push   %ebx
477783:	ff 15 ec f0 48 00    	call   *0x48f0ec
477789:	ff 75 08             	push   0x8(%ebp)
47778c:	ff 15 c8 f0 48 00    	call   *0x48f0c8
477792:	53                   	push   %ebx
477793:	ff 15 08 f1 48 00    	call   *0x48f108
477799:	ff 75 f8             	push   -0x8(%ebp)
47779c:	6a 00                	push   $0x0
47779e:	ff 15 24 f6 48 00    	call   *0x48f624
4777a4:	85 f6                	test   %esi,%esi
4777a6:	74 04                	je     0x4777ac
4777a8:	8b c7                	mov    %edi,%eax
4777aa:	eb 09                	jmp    0x4777b5
4777ac:	57                   	push   %edi
4777ad:	e8 ba 98 fa ff       	call   0x42106c
4777b2:	59                   	pop    %ecx
4777b3:	33 c0                	xor    %eax,%eax
4777b5:	5f                   	pop    %edi
4777b6:	5e                   	pop    %esi
4777b7:	5b                   	pop    %ebx
4777b8:	8b e5                	mov    %ebp,%esp
4777ba:	5d                   	pop    %ebp
4777bb:	c2 0c 00             	ret    $0xc
4777be:	55                   	push   %ebp
4777bf:	8b ec                	mov    %esp,%ebp
4777c1:	81 ec b0 00 00 00    	sub    $0xb0,%esp
4777c7:	53                   	push   %ebx
4777c8:	56                   	push   %esi
4777c9:	83 ce ff             	or     $0xffffffff,%esi
4777cc:	c7 45 fc 00 00 c0 88 	movl   $0x88c00000,-0x4(%ebp)
4777d3:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
4777d6:	89 75 f8             	mov    %esi,-0x8(%ebp)
4777d9:	0b de                	or     %esi,%ebx
4777db:	c7 45 f4 08 00 00 00 	movl   $0x8,-0xc(%ebp)
4777e2:	e8 e0 ff f8 ff       	call   0x4077c7
4777e7:	a1 98 62 4c 00       	mov    0x4c6298,%eax
4777ec:	85 c0                	test   %eax,%eax
4777ee:	74 0e                	je     0x4777fe
4777f0:	50                   	push   %eax
4777f1:	ff 15 3c f6 48 00    	call   *0x48f63c
4777f7:	83 25 98 62 4c 00 00 	andl   $0x0,0x4c6298
4777fe:	83 7d 10 01          	cmpl   $0x1,0x10(%ebp)
477802:	0f 84 cd 02 00 00    	je     0x477ad5
477808:	83 7d 0c 03          	cmpl   $0x3,0xc(%ebp)
47780c:	57                   	push   %edi
47780d:	8b 7d 08             	mov    0x8(%ebp),%edi
477810:	72 1b                	jb     0x47782d
477812:	8b 47 04             	mov    0x4(%edi),%eax
477815:	8b 70 08             	mov    0x8(%eax),%esi