40c4e6:	e8 89 a1 ff ff       	call   0x406674
40c4eb:	8b c7                	mov    %edi,%eax
40c4ed:	84 db                	test   %bl,%bl
40c4ef:	74 0f                	je     0x40c500
40c4f1:	e8 a2 77 ff ff       	call   0x403c98
40c4f6:	64 8f 05 00 00 00 00 	pop    %fs:0x0
40c4fd:	83 c4 0c             	add    $0xc,%esp
40c500:	8b c7                	mov    %edi,%eax
40c502:	5f                   	pop    %edi
40c503:	5e                   	pop    %esi
40c504:	5b                   	pop    %ebx
40c505:	c3                   	ret
40c506:	8b c0                	mov    %eax,%eax
40c508:	55                   	push   %ebp
40c509:	8b ec                	mov    %esp,%ebp
40c50b:	6a 00                	push   $0x0
40c50d:	6a 00                	push   $0x0
40c50f:	53                   	push   %ebx
40c510:	56                   	push   %esi
40c511:	57                   	push   %edi
40c512:	84 d2                	test   %dl,%dl
40c514:	74 08                	je     0x40c51e
40c516:	83 c4 f0             	add    $0xfffffff0,%esp
40c519:	e8 22 77 ff ff       	call   0x403c40
40c51e:	8b f1                	mov    %ecx,%esi
40c520:	8b da                	mov    %edx,%ebx
40c522:	8b f8                	mov    %eax,%edi
40c524:	33 c0                	xor    %eax,%eax
40c526:	55                   	push   %ebp
40c527:	68 74 c5 40 00       	push   $0x40c574
40c52c:	64 ff 30             	push   %fs:(%eax)
40c52f:	64 89 20             	mov    %esp,%fs:(%eax)
40c532:	8d 45 fc             	lea    -0x4(%ebp),%eax
40c535:	50                   	push   %eax
40c536:	8d 55 f8             	lea    -0x8(%ebp),%edx
40c539:	8b c6                	mov    %esi,%eax
40c53b:	e8 34 a1 ff ff       	call   0x406674
40c540:	8b 45 f8             	mov    -0x8(%ebp),%eax
40c543:	8b 55 0c             	mov    0xc(%ebp),%edx
40c546:	8b 4d 08             	mov    0x8(%ebp),%ecx
40c549:	e8 16 d5 ff ff       	call   0x409a64
40c54e:	8b 55 fc             	mov    -0x4(%ebp),%edx
40c551:	8d 47 04             	lea    0x4(%edi),%eax
40c554:	e8 43 82 ff ff       	call   0x40479c
40c559:	33 c0                	xor    %eax,%eax
40c55b:	5a                   	pop    %edx
40c55c:	59                   	pop    %ecx
40c55d:	59                   	pop    %ecx
40c55e:	64 89 10             	mov    %edx,%fs:(%eax)
40c561:	68 7b c5 40 00       	push   $0x40c57b
40c566:	8d 45 f8             	lea    -0x8(%ebp),%eax
40c569:	ba 02 00 00 00       	mov    $0x2,%edx
40c56e:	e8 f9 81 ff ff       	call   0x40476c
40c573:	c3                   	ret
40c574:	e9 37 7b ff ff       	jmp    0x4040b0
40c579:	eb eb                	jmp    0x40c566
40c57b:	8b c7                	mov    %edi,%eax
40c57d:	84 db                	test   %bl,%bl
40c57f:	74 0f                	je     0x40c590
40c581:	e8 12 77 ff ff       	call   0x403c98
40c586:	64 8f 05 00 00 00 00 	pop    %fs:0x0
40c58d:	83 c4 0c             	add    $0xc,%esp
40c590:	8b c7                	mov    %edi,%eax
40c592:	5f                   	pop    %edi
40c593:	5e                   	pop    %esi
40c594:	5b                   	pop    %ebx
40c595:	59                   	pop    %ecx
40c596:	59                   	pop    %ecx
40c597:	5d                   	pop    %ebp
40c598:	c2 08 00             	ret    $0x8
40c59b:	90                   	nop
40c59c:	55                   	push   %ebp
40c59d:	8b ec                	mov    %esp,%ebp
40c59f:	53                   	push   %ebx
40c5a0:	56                   	push   %esi
40c5a1:	57                   	push   %edi
40c5a2:	84 d2                	test   %dl,%dl
40c5a4:	74 08                	je     0x40c5ae
40c5a6:	83 c4 f0             	add    $0xfffffff0,%esp
40c5a9:	e8 92 76 ff ff       	call   0x403c40
40c5ae:	8b f1                	mov    %ecx,%esi
40c5b0:	8b da                	mov    %edx,%ebx
40c5b2:	8b f8                	mov    %eax,%edi
40c5b4:	8d 47 04             	lea    0x4(%edi),%eax
40c5b7:	8b d6                	mov    %esi,%edx
40c5b9:	e8 de 81 ff ff       	call   0x40479c
40c5be:	8b 45 08             	mov    0x8(%ebp),%eax
40c5c1:	89 47 08             	mov    %eax,0x8(%edi)
40c5c4:	8b c7                	mov    %edi,%eax
40c5c6:	84 db                	test   %bl,%bl
40c5c8:	74 0f                	je     0x40c5d9
40c5ca:	e8 c9 76 ff ff       	call   0x403c98
40c5cf:	64 8f 05 00 00 00 00 	pop    %fs:0x0
40c5d6:	83 c4 0c             	add    $0xc,%esp
40c5d9:	8b c7                	mov    %edi,%eax
40c5db:	5f                   	pop    %edi
40c5dc:	5e                   	pop    %esi
40c5dd:	5b                   	pop    %ebx
40c5de:	5d                   	pop    %ebp
40c5df:	c2 04 00             	ret    $0x4
40c5e2:	8b c0                	mov    %eax,%eax
40c5e4:	80 78 0c 00          	cmpb   $0x0,0xc(%eax)
40c5e8:	74 05                	je     0x40c5ef
40c5ea:	e8 e1 72 ff ff       	call   0x4038d0
40c5ef:	c3                   	ret
40c5f0:	f4                   	hlt
40c5f1:	c5 40 00             	lds    0x0(%eax),%eax
40c5f4:	0e                   	push   %cs
40c5f5:	09 54 45 72          	or     %edx,0x72(%ebp,%eax,2)
40c5f9:	72 6f                	jb     0x40c66a
40c5fb:	72 52                	jb     0x40c64f
40c5fd:	65 63 08             	arpl   %ecx,%gs:(%eax)
40c600:	00 00                	add    %al,(%eax)
40c602:	00 01                	add    %al,(%ecx)
40c604:	00 00                	add    %al,(%eax)
40c606:	00 a4 10 40 00 04 00 	add    %ah,0x40040(%eax,%edx,1)
40c60d:	00 00                	add    %al,(%eax)
40c60f:	90                   	nop
40c610:	53                   	push   %ebx
40c611:	56                   	push   %esi
40c612:	83 c4 f8             	add    $0xfffffff8,%esp
40c615:	33 db                	xor    %ebx,%ebx
40c617:	e8 b0 68 ff ff       	call   0x402ecc
40c61c:	8b f0                	mov    %eax,%esi
40c61e:	eb 01                	jmp    0x40c621
40c620:	43                   	inc    %ebx
40c621:	83 fb 06             	cmp    $0x6,%ebx
40c624:	7f 09                	jg     0x40c62f
40c626:	3b 34 dd 1c b9 49 00 	cmp    0x49b91c(,%ebx,8),%esi
40c62d:	75 f1                	jne    0x40c620
40c62f:	83 fb 06             	cmp    $0x6,%ebx
40c632:	7f 15                	jg     0x40c649
40c634:	8b 0c dd 20 b9 49 00 	mov    0x49b920(,%ebx,8),%ecx
40c63b:	b2 01                	mov    $0x1,%dl
40c63d:	a1 ac 7c 40 00       	mov    0x407cac,%eax
40c642:	e8 c9 fd ff ff       	call   0x40c410
40c647:	eb 1d                	jmp    0x40c666
40c649:	89 34 24             	mov    %esi,(%esp)
40c64c:	c6 44 24 04 00       	movb   $0x0,0x4(%esp)
40c651:	54                   	push   %esp
40c652:	6a 00                	push   $0x0
40c654:	8b 0d 88 74 4a 00    	mov    0x4a7488,%ecx
40c65a:	b2 01                	mov    $0x1,%dl
40c65c:	a1 ac 7c 40 00       	mov    0x407cac,%eax
40c661:	e8 a2 fe ff ff       	call   0x40c508
40c666:	89 70 0c             	mov    %esi,0xc(%eax)
40c669:	59                   	pop    %ecx
40c66a:	5a                   	pop    %edx
40c66b:	5e                   	pop    %esi
40c66c:	5b                   	pop    %ebx
40c66d:	c3                   	ret
40c66e:	8b c0                	mov    %eax,%eax
40c670:	74 c6                	je     0x40c638
40c672:	40                   	inc    %eax
40c673:	00 0e                	add    %cl,(%esi)
40c675:	0a 54 45 78          	or     0x78(%ebp,%eax,2),%dl
40c679:	63 65 70             	arpl   %esp,0x70(%ebp)
40c67c:	74 52                	je     0x40c6d0
40c67e:	65 63 08             	arpl   %ecx,%gs:(%eax)
40c681:	00 00                	add    %al,(%eax)
40c683:	00 01                	add    %al,(%ecx)
40c685:	00 00                	add    %al,(%eax)
40c687:	00 a4 10 40 00 04 00 	add    %ah,0x40040(%eax,%edx,1)
40c68e:	00 00                	add    %al,(%eax)
40c690:	53                   	push   %ebx
40c691:	8b da                	mov    %edx,%ebx
40c693:	8b d0                	mov    %eax,%edx
40c695:	fe ca                	dec    %dl
40c697:	74 0c                	je     0x40c6a5
40c699:	fe ca                	dec    %dl
40c69b:	74 10                	je     0x40c6ad
40c69d:	4a                   	dec    %edx
40c69e:	80 ea 16             	sub    $0x16,%dl
40c6a1:	72 12                	jb     0x40c6b5
40c6a3:	eb 2a                	jmp    0x40c6cf
40c6a5:	8b 15 1c a9 4a 00    	mov    0x4aa91c,%edx
40c6ab:	eb 29                	jmp    0x40c6d6
40c6ad:	8b 15 20 a9 4a 00    	mov    0x4aa920,%edx
40c6b3:	eb 21                	jmp    0x40c6d6
40c6b5:	0f b6 c0             	movzbl %al,%eax
40c6b8:	8d 04 c5 3c b9 49 00 	lea    0x49b93c(,%eax,8),%eax
40c6bf:	8b 48 04             	mov    0x4(%eax),%ecx
40c6c2:	8b 00                	mov    (%eax),%eax
40c6c4:	b2 01                	mov    $0x1,%dl
40c6c6:	e8 45 fd ff ff       	call   0x40c410
40c6cb:	8b d0                	mov    %eax,%edx
40c6cd:	eb 07                	jmp    0x40c6d6
40c6cf:	e8 3c ff ff ff       	call   0x40c610
40c6d4:	8b d0                	mov    %eax,%edx
40c6d6:	53                   	push   %ebx
40c6d7:	8b c2                	mov    %edx,%eax
40c6d9:	e9 b2 7a ff ff       	jmp    0x404190
40c6de:	5b                   	pop    %ebx
40c6df:	c3                   	ret
40c6e0:	55                   	push   %ebp
40c6e1:	8b ec                	mov    %esp,%ebp
40c6e3:	83 c4 e0             	add    $0xffffffe0,%esp
40c6e6:	53                   	push   %ebx
40c6e7:	56                   	push   %esi
40c6e8:	57                   	push   %edi
40c6e9:	33 db                	xor    %ebx,%ebx
40c6eb:	89 5d e0             	mov    %ebx,-0x20(%ebp)
40c6ee:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40c6f1:	8b f9                	mov    %ecx,%edi
40c6f3:	8b f2                	mov    %edx,%esi
40c6f5:	8b d8                	mov    %eax,%ebx
40c6f7:	33 c0                	xor    %eax,%eax
40c6f9:	55                   	push   %ebp
40c6fa:	68 7c c7 40 00       	push   $0x40c77c
40c6ff:	64 ff 30             	push   %fs:(%eax)
40c702:	64 89 20             	mov    %esp,%fs:(%eax)
40c705:	85 db                	test   %ebx,%ebx
40c707:	74 0c                	je     0x40c715
40c709:	8d 45 fc             	lea    -0x4(%ebp),%eax
40c70c:	8b d3                	mov    %ebx,%edx
40c70e:	e8 cd 80 ff ff       	call   0x4047e0
40c713:	eb 0d                	jmp    0x40c722
40c715:	8d 55 fc             	lea    -0x4(%ebp),%edx
40c718:	a1 f0 76 4a 00       	mov    0x4a76f0,%eax
40c71d:	e8 52 9f ff ff       	call   0x406674
40c722:	8b 45 fc             	mov    -0x4(%ebp),%eax
40c725:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40c728:	c6 45 e8 0b          	movb   $0xb,-0x18(%ebp)
40c72c:	89 75 ec             	mov    %esi,-0x14(%ebp)
40c72f:	c6 45 f0 0b          	movb   $0xb,-0x10(%ebp)
40c733:	89 7d f4             	mov    %edi,-0xc(%ebp)
40c736:	c6 45 f8 00          	movb   $0x0,-0x8(%ebp)
40c73a:	8d 45 e4             	lea    -0x1c(%ebp),%eax
40c73d:	50                   	push   %eax
40c73e:	6a 02                	push   $0x2
40c740:	8d 55 e0             	lea    -0x20(%ebp),%edx
40c743:	a1 60 77 4a 00       	mov    0x4a7760,%eax
40c748:	e8 27 9f ff ff       	call   0x406674
40c74d:	8b 4d e0             	mov    -0x20(%ebp),%ecx
40c750:	b2 01                	mov    $0x1,%dl
40c752:	a1 b4 83 40 00       	mov    0x4083b4,%eax
40c757:	e8 f0 fc ff ff       	call   0x40c44c
40c75c:	8b d8                	mov    %eax,%ebx
40c75e:	33 c0                	xor    %eax,%eax
40c760:	5a                   	pop    %edx
40c761:	59                   	pop    %ecx
40c762:	59                   	pop    %ecx
40c763:	64 89 10             	mov    %edx,%fs:(%eax)
40c766:	68 83 c7 40 00       	push   $0x40c783
40c76b:	8d 45 e0             	lea    -0x20(%ebp),%eax
40c76e:	e8 d5 7f ff ff       	call   0x404748
40c773:	8d 45 fc             	lea    -0x4(%ebp),%eax
40c776:	e8 cd 7f ff ff       	call   0x404748
40c77b:	c3                   	ret
40c77c:	e9 2f 79 ff ff       	jmp    0x4040b0
40c781:	eb e8                	jmp    0x40c76b
40c783:	8b c3                	mov    %ebx,%eax
40c785:	5f                   	pop    %edi
40c786:	5e                   	pop    %esi
40c787:	5b                   	pop    %ebx
40c788:	8b e5                	mov    %ebp,%esp
40c78a:	5d                   	pop    %ebp
40c78b:	c3                   	ret
40c78c:	89 cc                	mov    %ecx,%esp
40c78e:	89 14 24             	mov    %edx,(%esp)
40c791:	8b 6d 00             	mov    0x0(%ebp),%ebp
40c794:	e9 f7 79 ff ff       	jmp    0x404190
40c799:	c3                   	ret
40c79a:	8b c0                	mov    %eax,%eax
40c79c:	55                   	push   %ebp
40c79d:	8b ec                	mov    %esp,%ebp
40c79f:	e8 3c ff ff ff       	call   0x40c6e0
40c7a4:	8d 4d 08             	lea    0x8(%ebp),%ecx
40c7a7:	83 c1 04             	add    $0x4,%ecx
40c7aa:	8b 55 08             	mov    0x8(%ebp),%edx
40c7ad:	e8 da ff ff ff       	call   0x40c78c
40c7b2:	5d                   	pop    %ebp
40c7b3:	c2 04 00             	ret    $0x4
40c7b6:	8b c0                	mov    %eax,%eax
40c7b8:	8b 0d b0 74 4a 00    	mov    0x4a74b0,%ecx
40c7be:	b2 01                	mov    $0x1,%dl
40c7c0:	a1 14 84 40 00       	mov    0x408414,%eax
40c7c5:	e8 02 fd ff ff       	call   0x40c4cc
40c7ca:	e8 c1 79 ff ff       	call   0x404190
40c7cf:	c3                   	ret
40c7d0:	8b 00                	mov    (%eax),%eax
40c7d2:	3d 92 00 00 c0       	cmp    $0xc0000092,%eax
40c7d7:	7f 2c                	jg     0x40c805
40c7d9:	74 59                	je     0x40c834
40c7db:	3d 8e 00 00 c0       	cmp    $0xc000008e,%eax
40c7e0:	7f 15                	jg     0x40c7f7
40c7e2:	74 53                	je     0x40c837
40c7e4:	2d 05 00 00 c0       	sub    $0xc0000005,%eax
40c7e9:	74 55                	je     0x40c840
40c7eb:	2d 87 00 00 00       	sub    $0x87,%eax
40c7f0:	74 3c                	je     0x40c82e
40c7f2:	48                   	dec    %eax
40c7f3:	74 48                	je     0x40c83d
40c7f5:	eb 55                	jmp    0x40c84c
40c7f7:	05 71 ff ff 3f       	add    $0x3fffff71,%eax
40c7fc:	83 e8 02             	sub    $0x2,%eax
40c7ff:	72 33                	jb     0x40c834
40c801:	74 37                	je     0x40c83a
40c803:	eb 47                	jmp    0x40c84c
40c805:	3d 96 00 00 c0       	cmp    $0xc0000096,%eax
40c80a:	7f 11                	jg     0x40c81d
40c80c:	74 35                	je     0x40c843
40c80e:	2d 93 00 00 c0       	sub    $0xc0000093,%eax
40c813:	74 28                	je     0x40c83d
40c815:	48                   	dec    %eax
40c816:	74 13                	je     0x40c82b
40c818:	48                   	dec    %eax
40c819:	74 16                	je     0x40c831
40c81b:	eb 2f                	jmp    0x40c84c
40c81d:	2d fd 00 00 c0       	sub    $0xc00000fd,%eax
40c822:	74 25                	je     0x40c849
40c824:	83 e8 3d             	sub    $0x3d,%eax
40c827:	74 1d                	je     0x40c846
40c829:	eb 21                	jmp    0x40c84c
40c82b:	b0 03                	mov    $0x3,%al
40c82d:	c3                   	ret
40c82e:	b0 04                	mov    $0x4,%al
40c830:	c3                   	ret
40c831:	b0 05                	mov    $0x5,%al
40c833:	c3                   	ret
40c834:	b0 06                	mov    $0x6,%al
40c836:	c3                   	ret
40c837:	b0 07                	mov    $0x7,%al
40c839:	c3                   	ret
40c83a:	b0 08                	mov    $0x8,%al
40c83c:	c3                   	ret
40c83d:	b0 09                	mov    $0x9,%al
40c83f:	c3                   	ret
40c840:	b0 0b                	mov    $0xb,%al
40c842:	c3                   	ret
40c843:	b0 0c                	mov    $0xc,%al
40c845:	c3                   	ret
40c846:	b0 0d                	mov    $0xd,%al
40c848:	c3                   	ret
40c849:	b0 0e                	mov    $0xe,%al
40c84b:	c3                   	ret
40c84c:	b0 16                	mov    $0x16,%al
40c84e:	c3                   	ret
40c84f:	90                   	nop
40c850:	53                   	push   %ebx
40c851:	8b d8                	mov    %eax,%ebx
40c853:	8b c3                	mov    %ebx,%eax
40c855:	e8 76 ff ff ff       	call   0x40c7d0
40c85a:	0f b6 c0             	movzbl %al,%eax
40c85d:	8b 04 c5 3c b9 49 00 	mov    0x49b93c(,%eax,8),%eax
40c864:	5b                   	pop    %ebx
40c865:	c3                   	ret
40c866:	8b c0                	mov    %eax,%eax
40c868:	55                   	push   %ebp
40c869:	8b ec                	mov    %esp,%ebp