46c525:	8d 34 c2             	lea    (%edx,%eax,8),%esi
46c528:	8b 45 f0             	mov    -0x10(%ebp),%eax
46c52b:	2b c3                	sub    %ebx,%eax
46c52d:	03 c0                	add    %eax,%eax
46c52f:	8b 55 fc             	mov    -0x4(%ebp),%edx
46c532:	8d 04 c2             	lea    (%edx,%eax,8),%eax
46c535:	8b d6                	mov    %esi,%edx
46c537:	e8 bc 3a fa ff       	call   0x40fff8
46c53c:	43                   	inc    %ebx
46c53d:	4f                   	dec    %edi
46c53e:	75 dc                	jne    0x46c51c
46c540:	8b 45 08             	mov    0x8(%ebp),%eax
46c543:	8b 40 04             	mov    0x4(%eax),%eax
46c546:	85 c0                	test   %eax,%eax
46c548:	74 0b                	je     0x46c555
46c54a:	8d 4d fc             	lea    -0x4(%ebp),%ecx
46c54d:	8b 55 0c             	mov    0xc(%ebp),%edx
46c550:	8b 18                	mov    (%eax),%ebx
46c552:	ff 53 38             	call   *0x38(%ebx)
46c555:	8b 45 f8             	mov    -0x8(%ebp),%eax
46c558:	83 78 0c 00          	cmpl   $0x0,0xc(%eax)
46c55c:	7e 42                	jle    0x46c5a0
46c55e:	8b 5d f4             	mov    -0xc(%ebp),%ebx
46c561:	8b 7d f0             	mov    -0x10(%ebp),%edi
46c564:	2b fb                	sub    %ebx,%edi
46c566:	7c 74                	jl     0x46c5dc
46c568:	47                   	inc    %edi
46c569:	8b c3                	mov    %ebx,%eax
46c56b:	03 c0                	add    %eax,%eax
46c56d:	8b 55 f8             	mov    -0x8(%ebp),%edx
46c570:	8b 12                	mov    (%edx),%edx
46c572:	8d 34 c2             	lea    (%edx,%eax,8),%esi
46c575:	0f b7 06             	movzwl (%esi),%eax
46c578:	66 25 00 40          	and    $0x4000,%ax
46c57c:	66 3d 00 40          	cmp    $0x4000,%ax
46c580:	75 18                	jne    0x46c59a
46c582:	8b c6                	mov    %esi,%eax
46c584:	8b 55 f8             	mov    -0x8(%ebp),%edx
46c587:	8b 52 04             	mov    0x4(%edx),%edx
46c58a:	8b 14 9a             	mov    (%edx,%ebx,4),%edx
46c58d:	03 d2                	add    %edx,%edx
46c58f:	8b 4d fc             	mov    -0x4(%ebp),%ecx
46c592:	8d 14 d1             	lea    (%ecx,%edx,8),%edx
46c595:	e8 5e 3a fa ff       	call   0x40fff8
46c59a:	43                   	inc    %ebx
46c59b:	4f                   	dec    %edi
46c59c:	75 cb                	jne    0x46c569
46c59e:	eb 3c                	jmp    0x46c5dc
46c5a0:	8b 5d f4             	mov    -0xc(%ebp),%ebx
46c5a3:	8b 7d f0             	mov    -0x10(%ebp),%edi
46c5a6:	2b fb                	sub    %ebx,%edi
46c5a8:	7c 32                	jl     0x46c5dc
46c5aa:	47                   	inc    %edi
46c5ab:	8b c3                	mov    %ebx,%eax
46c5ad:	03 c0                	add    %eax,%eax
46c5af:	8b 55 f8             	mov    -0x8(%ebp),%edx
46c5b2:	8b 12                	mov    (%edx),%edx
46c5b4:	8d 34 c2             	lea    (%edx,%eax,8),%esi
46c5b7:	0f b7 06             	movzwl (%esi),%eax
46c5ba:	66 25 00 40          	and    $0x4000,%ax
46c5be:	66 3d 00 40          	cmp    $0x4000,%ax
46c5c2:	75 14                	jne    0x46c5d8
46c5c4:	8b c6                	mov    %esi,%eax
46c5c6:	8b 55 f0             	mov    -0x10(%ebp),%edx
46c5c9:	2b d3                	sub    %ebx,%edx
46c5cb:	03 d2                	add    %edx,%edx
46c5cd:	8b 4d fc             	mov    -0x4(%ebp),%ecx
46c5d0:	8d 14 d1             	lea    (%ecx,%edx,8),%edx
46c5d3:	e8 20 3a fa ff       	call   0x40fff8
46c5d8:	43                   	inc    %ebx
46c5d9:	4f                   	dec    %edi
46c5da:	75 cf                	jne    0x46c5ab
46c5dc:	6a 00                	push   $0x0
46c5de:	8d 45 fc             	lea    -0x4(%ebp),%eax
46c5e1:	b9 01 00 00 00       	mov    $0x1,%ecx
46c5e6:	8b 15 34 c0 46 00    	mov    0x46c034,%edx
46c5ec:	e8 a3 94 f9 ff       	call   0x405a94
46c5f1:	83 c4 04             	add    $0x4,%esp
46c5f4:	33 db                	xor    %ebx,%ebx
46c5f6:	33 c0                	xor    %eax,%eax
46c5f8:	5a                   	pop    %edx
46c5f9:	59                   	pop    %ecx
46c5fa:	59                   	pop    %ecx
46c5fb:	64 89 10             	mov    %edx,%fs:(%eax)
46c5fe:	68 19 c6 46 00       	push   $0x46c619
46c603:	8d 45 fc             	lea    -0x4(%ebp),%eax
46c606:	8b 15 34 c0 46 00    	mov    0x46c034,%edx
46c60c:	e8 8f 94 f9 ff       	call   0x405aa0
46c611:	c3                   	ret
46c612:	e9 99 7a f9 ff       	jmp    0x4040b0
46c617:	eb ea                	jmp    0x46c603
46c619:	8b c3                	mov    %ebx,%eax
46c61b:	5f                   	pop    %edi
46c61c:	5e                   	pop    %esi
46c61d:	5b                   	pop    %ebx
46c61e:	8b e5                	mov    %ebp,%esp
46c620:	5d                   	pop    %ebp
46c621:	c2 24 00             	ret    $0x24
46c624:	33 d2                	xor    %edx,%edx
46c626:	89 50 04             	mov    %edx,0x4(%eax)
46c629:	85 d2                	test   %edx,%edx
46c62b:	74 03                	je     0x46c630
46c62d:	33 c0                	xor    %eax,%eax
46c62f:	c3                   	ret
46c630:	b0 01                	mov    $0x1,%al
46c632:	c3                   	ret
46c633:	90                   	nop
46c634:	53                   	push   %ebx
46c635:	56                   	push   %esi
46c636:	84 d2                	test   %dl,%dl
46c638:	74 08                	je     0x46c642
46c63a:	83 c4 f0             	add    $0xfffffff0,%esp
46c63d:	e8 fe 75 f9 ff       	call   0x403c40
46c642:	8b da                	mov    %edx,%ebx
46c644:	8b f0                	mov    %eax,%esi
46c646:	33 d2                	xor    %edx,%edx
46c648:	8b c6                	mov    %esi,%eax
46c64a:	e8 c1 21 fb ff       	call   0x41e810
46c64f:	8b c6                	mov    %esi,%eax
46c651:	8b 10                	mov    (%eax),%edx
46c653:	ff 52 30             	call   *0x30(%edx)
46c656:	8b 46 30             	mov    0x30(%esi),%eax
46c659:	ff 40 38             	incl   0x38(%eax)
46c65c:	8b ce                	mov    %esi,%ecx
46c65e:	b2 01                	mov    $0x1,%dl
46c660:	a1 80 c1 46 00       	mov    0x46c180,%eax
46c665:	e8 1a fd ff ff       	call   0x46c384
46c66a:	89 46 38             	mov    %eax,0x38(%esi)
46c66d:	8b c6                	mov    %esi,%eax
46c66f:	84 db                	test   %bl,%bl
46c671:	74 0f                	je     0x46c682
46c673:	e8 20 76 f9 ff       	call   0x403c98
46c678:	64 8f 05 00 00 00 00 	pop    %fs:0x0
46c67f:	83 c4 0c             	add    $0xc,%esp
46c682:	8b c6                	mov    %esi,%eax
46c684:	5e                   	pop    %esi
46c685:	5b                   	pop    %ebx
46c686:	c3                   	ret
46c687:	90                   	nop
46c688:	53                   	push   %ebx
46c689:	56                   	push   %esi
46c68a:	e8 59 76 f9 ff       	call   0x403ce8
46c68f:	8b da                	mov    %edx,%ebx
46c691:	8b f0                	mov    %eax,%esi
46c693:	8b c6                	mov    %esi,%eax
46c695:	8b 10                	mov    (%eax),%edx
46c697:	ff 52 40             	call   *0x40(%edx)
46c69a:	8b 46 38             	mov    0x38(%esi),%eax
46c69d:	e8 82 ff ff ff       	call   0x46c624
46c6a2:	8b 46 38             	mov    0x38(%esi),%eax
46c6a5:	50                   	push   %eax
46c6a6:	e8 89 fd ff ff       	call   0x46c434
46c6ab:	85 c0                	test   %eax,%eax
46c6ad:	75 08                	jne    0x46c6b7
46c6af:	8b 46 38             	mov    0x38(%esi),%eax
46c6b2:	e8 65 72 f9 ff       	call   0x40391c
46c6b7:	8b 46 30             	mov    0x30(%esi),%eax
46c6ba:	ff 48 38             	decl   0x38(%eax)
46c6bd:	8b d3                	mov    %ebx,%edx
46c6bf:	80 e2 fc             	and    $0xfc,%dl
46c6c2:	8b c6                	mov    %esi,%eax
46c6c4:	e8 93 21 fb ff       	call   0x41e85c
46c6c9:	84 db                	test   %bl,%bl
46c6cb:	7e 07                	jle    0x46c6d4
46c6cd:	8b c6                	mov    %esi,%eax
46c6cf:	e8 bc 75 f9 ff       	call   0x403c90
46c6d4:	5e                   	pop    %esi
46c6d5:	5b                   	pop    %ebx
46c6d6:	c3                   	ret
46c6d7:	90                   	nop
46c6d8:	53                   	push   %ebx
46c6d9:	8b d8                	mov    %eax,%ebx
46c6db:	8b c3                	mov    %ebx,%eax
46c6dd:	e8 96 25 fb ff       	call   0x41ec78
46c6e2:	f6 43 1c 10          	testb  $0x10,0x1c(%ebx)
46c6e6:	75 12                	jne    0x46c6fa
46c6e8:	8b c3                	mov    %ebx,%eax
46c6ea:	e8 81 01 00 00       	call   0x46c870
46c6ef:	84 c0                	test   %al,%al
46c6f1:	74 07                	je     0x46c6fa
46c6f3:	8b c3                	mov    %ebx,%eax
46c6f5:	8b 10                	mov    (%eax),%edx
46c6f7:	ff 52 3c             	call   *0x3c(%edx)
46c6fa:	5b                   	pop    %ebx
46c6fb:	c3                   	ret
46c6fc:	c3                   	ret
46c6fd:	8d 40 00             	lea    0x0(%eax),%eax
46c700:	55                   	push   %ebp
46c701:	8b ec                	mov    %esp,%ebp
46c703:	b9 04 00 00 00       	mov    $0x4,%ecx
46c708:	6a 00                	push   $0x0
46c70a:	6a 00                	push   $0x0
46c70c:	49                   	dec    %ecx
46c70d:	75 f9                	jne    0x46c708
46c70f:	51                   	push   %ecx
46c710:	53                   	push   %ebx
46c711:	56                   	push   %esi
46c712:	8b f2                	mov    %edx,%esi
46c714:	8b d8                	mov    %eax,%ebx
46c716:	33 c0                	xor    %eax,%eax
46c718:	55                   	push   %ebp
46c719:	68 4a c8 46 00       	push   $0x46c84a
46c71e:	64 ff 30             	push   %fs:(%eax)
46c721:	64 89 20             	mov    %esp,%fs:(%eax)
46c724:	8b c3                	mov    %ebx,%eax
46c726:	e8 2d 01 00 00       	call   0x46c858
46c72b:	2c 01                	sub    $0x1,%al
46c72d:	0f 82 a9 00 00 00    	jb     0x46c7dc
46c733:	74 11                	je     0x46c746
46c735:	fe c8                	dec    %al
46c737:	74 1c                	je     0x46c755
46c739:	fe c8                	dec    %al
46c73b:	0f 84 c6 00 00 00    	je     0x46c807
46c741:	e9 d9 00 00 00       	jmp    0x46c81f
46c746:	8b d6                	mov    %esi,%edx
46c748:	8b 43 30             	mov    0x30(%ebx),%eax
46c74b:	e8 c4 e9 ff ff       	call   0x46b114
46c750:	e9 ca 00 00 00       	jmp    0x46c81f
46c755:	8b c6                	mov    %esi,%eax
46c757:	e8 1c 9a f9 ff       	call   0x406178
46c75c:	50                   	push   %eax
46c75d:	6a 00                	push   $0x0
46c75f:	8b 43 30             	mov    0x30(%ebx),%eax
46c762:	50                   	push   %eax
46c763:	e8 d0 b0 f9 ff       	call   0x407838
46c768:	8b f0                	mov    %eax,%esi
46c76a:	f7 c6 00 00 00 80    	test   $0x80000000,%esi
46c770:	0f 84 a9 00 00 00    	je     0x46c81f
46c776:	8d 45 fc             	lea    -0x4(%ebp),%eax
46c779:	50                   	push   %eax
46c77a:	8d 55 e8             	lea    -0x18(%ebp),%edx
46c77d:	8b 43 30             	mov    0x30(%ebx),%eax
46c780:	e8 63 e9 ff ff       	call   0x46b0e8
46c785:	8b 45 e8             	mov    -0x18(%ebp),%eax
46c788:	89 45 ec             	mov    %eax,-0x14(%ebp)
46c78b:	c6 45 f0 0b          	movb   $0xb,-0x10(%ebp)
46c78f:	8d 55 e4             	lea    -0x1c(%ebp),%edx
46c792:	8b 43 30             	mov    0x30(%ebx),%eax
46c795:	e8 22 e9 ff ff       	call   0x46b0bc
46c79a:	8b 45 e4             	mov    -0x1c(%ebp),%eax
46c79d:	89 45 f4             	mov    %eax,-0xc(%ebp)
46c7a0:	c6 45 f8 0b          	movb   $0xb,-0x8(%ebp)
46c7a4:	8d 45 ec             	lea    -0x14(%ebp),%eax
46c7a7:	50                   	push   %eax
46c7a8:	8d 55 e0             	lea    -0x20(%ebp),%edx
46c7ab:	a1 78 77 4a 00       	mov    0x4a7778,%eax
46c7b0:	e8 bf 9e f9 ff       	call   0x406674
46c7b5:	8b 45 e0             	mov    -0x20(%ebp),%eax
46c7b8:	b9 01 00 00 00       	mov    $0x1,%ecx
46c7bd:	5a                   	pop    %edx
46c7be:	e8 a1 d2 f9 ff       	call   0x409a64
46c7c3:	56                   	push   %esi
46c7c4:	6a 00                	push   $0x0
46c7c6:	8b 4d fc             	mov    -0x4(%ebp),%ecx
46c7c9:	b2 01                	mov    $0x1,%dl
46c7cb:	a1 c0 ad 46 00       	mov    0x46adc0,%eax
46c7d0:	e8 4f e7 ff ff       	call   0x46af24
46c7d5:	e8 b6 79 f9 ff       	call   0x404190
46c7da:	eb 43                	jmp    0x46c81f
46c7dc:	8b c6                	mov    %esi,%eax
46c7de:	e8 95 99 f9 ff       	call   0x406178
46c7e3:	50                   	push   %eax
46c7e4:	6a 00                	push   $0x0
46c7e6:	8b 43 30             	mov    0x30(%ebx),%eax
46c7e9:	50                   	push   %eax
46c7ea:	e8 49 b0 f9 ff       	call   0x407838
46c7ef:	a9 00 00 00 80       	test   $0x80000000,%eax
46c7f4:	0f 94 c0             	sete   %al
46c7f7:	84 c0                	test   %al,%al
46c7f9:	75 24                	jne    0x46c81f
46c7fb:	8b d6                	mov    %esi,%edx
46c7fd:	8b 43 30             	mov    0x30(%ebx),%eax
46c800:	e8 0f e9 ff ff       	call   0x46b114
46c805:	eb 18                	jmp    0x46c81f
46c807:	8d 45 dc             	lea    -0x24(%ebp),%eax
46c80a:	8b 53 44             	mov    0x44(%ebx),%edx
46c80d:	e8 92 88 f9 ff       	call   0x4050a4
46c812:	8b 45 dc             	mov    -0x24(%ebp),%eax
46c815:	8b ce                	mov    %esi,%ecx
46c817:	8b 53 30             	mov    0x30(%ebx),%edx
46c81a:	e8 09 ea ff ff       	call   0x46b228
46c81f:	33 c0                	xor    %eax,%eax
46c821:	5a                   	pop    %edx
46c822:	59                   	pop    %ecx
46c823:	59                   	pop    %ecx
46c824:	64 89 10             	mov    %edx,%fs:(%eax)
46c827:	68 51 c8 46 00       	push   $0x46c851
46c82c:	8d 45 dc             	lea    -0x24(%ebp),%eax
46c82f:	e8 20 87 f9 ff       	call   0x404f54
46c834:	8d 45 e0             	lea    -0x20(%ebp),%eax
46c837:	ba 03 00 00 00       	mov    $0x3,%edx
46c83c:	e8 2b 7f f9 ff       	call   0x40476c
46c841:	8d 45 fc             	lea    -0x4(%ebp),%eax
46c844:	e8 ff 7e f9 ff       	call   0x404748
46c849:	c3                   	ret
46c84a:	e9 61 78 f9 ff       	jmp    0x4040b0
46c84f:	eb db                	jmp    0x46c82c
46c851:	5e                   	pop    %esi
46c852:	5b                   	pop    %ebx
46c853:	8b e5                	mov    %ebp,%esp
46c855:	5d                   	pop    %ebp
46c856:	c3                   	ret
46c857:	90                   	nop
46c858:	53                   	push   %ebx
46c859:	8b d8                	mov    %eax,%ebx
46c85b:	83 7b 44 00          	cmpl   $0x0,0x44(%ebx)
46c85f:	74 04                	je     0x46c865
46c861:	b0 03                	mov    $0x3,%al
46c863:	5b                   	pop    %ebx
46c864:	c3                   	ret
46c865:	0f b6 43 48          	movzbl 0x48(%ebx),%eax
46c869:	5b                   	pop    %ebx
46c86a:	c3                   	ret
46c86b:	90                   	nop
46c86c:	88 50 48             	mov    %dl,0x48(%eax)
46c86f:	c3                   	ret
46c870:	53                   	push   %ebx
46c871:	8b d8                	mov    %eax,%ebx
46c873:	8b c3                	mov    %ebx,%eax
46c875:	e8 de ff ff ff       	call   0x46c858
46c87a:	3c 04                	cmp    $0x4,%al
46c87c:	75 04                	jne    0x46c882
46c87e:	33 c0                	xor    %eax,%eax
46c880:	5b                   	pop    %ebx
46c881:	c3                   	ret
46c882:	0f b6 43 40          	movzbl 0x40(%ebx),%eax
46c886:	5b                   	pop    %ebx
46c887:	c3                   	ret
46c888:	88 50 40             	mov    %dl,0x40(%eax)
46c88b:	c3                   	ret
46c88c:	55                   	push   %ebp
46c88d:	8b ec                	mov    %esp,%ebp
46c88f:	53                   	push   %ebx
46c890:	8b 5d 08             	mov    0x8(%ebp),%ebx
46c893:	8b 4d 10             	mov    0x10(%ebp),%ecx
46c896:	8b 55 0c             	mov    0xc(%ebp),%edx
46c899:	8b c3                	mov    %ebx,%eax
46c89b:	e8 30 71 f9 ff       	call   0x4039d0
46c8a0:	84 c0                	test   %al,%al
46c8a2:	74 04                	je     0x46c8a8
46c8a4:	33 c0                	xor    %eax,%eax
46c8a6:	eb 05                	jmp    0x46c8ad
46c8a8:	b8 02 40 00 80       	mov    $0x80004002,%eax
46c8ad:	5b                   	pop    %ebx
46c8ae:	5d                   	pop    %ebp
46c8af:	c2 0c 00             	ret    $0xc
46c8b2:	8b c0                	mov    %eax,%eax
46c8b4:	55                   	push   %ebp
46c8b5:	8b ec                	mov    %esp,%ebp
46c8b7:	8b 45 08             	mov    0x8(%ebp),%eax