408550:	53                   	push   %ebx
408551:	56                   	push   %esi
408552:	8b 75 08             	mov    0x8(%ebp),%esi
408555:	57                   	push   %edi
408556:	ff 75 10             	push   0x10(%ebp)
408559:	8b 7d 0c             	mov    0xc(%ebp),%edi
40855c:	8d 4d dc             	lea    -0x24(%ebp),%ecx
40855f:	e8 6a c0 ff ff       	call   0x4045ce
408564:	8d 45 dc             	lea    -0x24(%ebp),%eax
408567:	50                   	push   %eax
408568:	33 db                	xor    %ebx,%ebx
40856a:	53                   	push   %ebx
40856b:	53                   	push   %ebx
40856c:	53                   	push   %ebx
40856d:	53                   	push   %ebx
40856e:	57                   	push   %edi
40856f:	8d 45 d8             	lea    -0x28(%ebp),%eax
408572:	50                   	push   %eax
408573:	8d 45 f0             	lea    -0x10(%ebp),%eax
408576:	50                   	push   %eax
408577:	e8 33 13 00 00       	call   0x4098af
40857c:	89 45 ec             	mov    %eax,-0x14(%ebp)
40857f:	8d 45 f0             	lea    -0x10(%ebp),%eax
408582:	56                   	push   %esi
408583:	50                   	push   %eax
408584:	e8 9e 08 00 00       	call   0x408e27
408589:	83 c4 28             	add    $0x28,%esp
40858c:	f6 45 ec 03          	testb  $0x3,-0x14(%ebp)
408590:	75 2b                	jne    0x4085bd
408592:	83 f8 01             	cmp    $0x1,%eax
408595:	75 11                	jne    0x4085a8
408597:	38 5d e8             	cmp    %bl,-0x18(%ebp)
40859a:	74 07                	je     0x4085a3
40859c:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40859f:	83 60 70 fd          	andl   $0xfffffffd,0x70(%eax)
4085a3:	6a 03                	push   $0x3
4085a5:	58                   	pop    %eax
4085a6:	eb 2f                	jmp    0x4085d7
4085a8:	83 f8 02             	cmp    $0x2,%eax
4085ab:	75 1c                	jne    0x4085c9
4085ad:	38 5d e8             	cmp    %bl,-0x18(%ebp)
4085b0:	74 07                	je     0x4085b9
4085b2:	8b 45 e4             	mov    -0x1c(%ebp),%eax
4085b5:	83 60 70 fd          	andl   $0xfffffffd,0x70(%eax)
4085b9:	6a 04                	push   $0x4
4085bb:	eb e8                	jmp    0x4085a5
4085bd:	f6 45 ec 01          	testb  $0x1,-0x14(%ebp)
4085c1:	75 ea                	jne    0x4085ad
4085c3:	f6 45 ec 02          	testb  $0x2,-0x14(%ebp)
4085c7:	75 ce                	jne    0x408597
4085c9:	38 5d e8             	cmp    %bl,-0x18(%ebp)
4085cc:	74 07                	je     0x4085d5
4085ce:	8b 45 e4             	mov    -0x1c(%ebp),%eax
4085d1:	83 60 70 fd          	andl   $0xfffffffd,0x70(%eax)
4085d5:	33 c0                	xor    %eax,%eax
4085d7:	8b 4d fc             	mov    -0x4(%ebp),%ecx
4085da:	5f                   	pop    %edi
4085db:	5e                   	pop    %esi
4085dc:	33 cd                	xor    %ebp,%ecx
4085de:	5b                   	pop    %ebx
4085df:	e8 1c 8a ff ff       	call   0x401000
4085e4:	c9                   	leave
4085e5:	c3                   	ret
4085e6:	8b ff                	mov    %edi,%edi
4085e8:	55                   	push   %ebp
4085e9:	8b ec                	mov    %esp,%ebp
4085eb:	83 ec 28             	sub    $0x28,%esp
4085ee:	a1 04 f0 41 00       	mov    0x41f004,%eax
4085f3:	33 c5                	xor    %ebp,%eax
4085f5:	89 45 fc             	mov    %eax,-0x4(%ebp)
4085f8:	53                   	push   %ebx
4085f9:	56                   	push   %esi
4085fa:	8b 75 08             	mov    0x8(%ebp),%esi
4085fd:	57                   	push   %edi
4085fe:	ff 75 10             	push   0x10(%ebp)
408601:	8b 7d 0c             	mov    0xc(%ebp),%edi
408604:	8d 4d dc             	lea    -0x24(%ebp),%ecx
408607:	e8 c2 bf ff ff       	call   0x4045ce
40860c:	8d 45 dc             	lea    -0x24(%ebp),%eax
40860f:	50                   	push   %eax
408610:	33 db                	xor    %ebx,%ebx
408612:	53                   	push   %ebx
408613:	53                   	push   %ebx
408614:	53                   	push   %ebx
408615:	53                   	push   %ebx
408616:	57                   	push   %edi
408617:	8d 45 d8             	lea    -0x28(%ebp),%eax
40861a:	50                   	push   %eax
40861b:	8d 45 f0             	lea    -0x10(%ebp),%eax
40861e:	50                   	push   %eax
40861f:	e8 8b 12 00 00       	call   0x4098af
408624:	89 45 ec             	mov    %eax,-0x14(%ebp)
408627:	8d 45 f0             	lea    -0x10(%ebp),%eax
40862a:	56                   	push   %esi
40862b:	50                   	push   %eax
40862c:	e8 3a 0d 00 00       	call   0x40936b
408631:	83 c4 28             	add    $0x28,%esp
408634:	f6 45 ec 03          	testb  $0x3,-0x14(%ebp)
408638:	75 2b                	jne    0x408665
40863a:	83 f8 01             	cmp    $0x1,%eax
40863d:	75 11                	jne    0x408650
40863f:	38 5d e8             	cmp    %bl,-0x18(%ebp)
408642:	74 07                	je     0x40864b
408644:	8b 45 e4             	mov    -0x1c(%ebp),%eax
408647:	83 60 70 fd          	andl   $0xfffffffd,0x70(%eax)
40864b:	6a 03                	push   $0x3
40864d:	58                   	pop    %eax
40864e:	eb 2f                	jmp    0x40867f
408650:	83 f8 02             	cmp    $0x2,%eax
408653:	75 1c                	jne    0x408671
408655:	38 5d e8             	cmp    %bl,-0x18(%ebp)
408658:	74 07                	je     0x408661
40865a:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40865d:	83 60 70 fd          	andl   $0xfffffffd,0x70(%eax)
408661:	6a 04                	push   $0x4
408663:	eb e8                	jmp    0x40864d
408665:	f6 45 ec 01          	testb  $0x1,-0x14(%ebp)
408669:	75 ea                	jne    0x408655
40866b:	f6 45 ec 02          	testb  $0x2,-0x14(%ebp)
40866f:	75 ce                	jne    0x40863f
408671:	38 5d e8             	cmp    %bl,-0x18(%ebp)
408674:	74 07                	je     0x40867d
408676:	8b 45 e4             	mov    -0x1c(%ebp),%eax
408679:	83 60 70 fd          	andl   $0xfffffffd,0x70(%eax)
40867d:	33 c0                	xor    %eax,%eax
40867f:	8b 4d fc             	mov    -0x4(%ebp),%ecx
408682:	5f                   	pop    %edi
408683:	5e                   	pop    %esi
408684:	33 cd                	xor    %ebp,%ecx
408686:	5b                   	pop    %ebx
408687:	e8 74 89 ff ff       	call   0x401000
40868c:	c9                   	leave
40868d:	c3                   	ret
40868e:	8b ff                	mov    %edi,%edi
408690:	55                   	push   %ebp
408691:	8b ec                	mov    %esp,%ebp
408693:	8b 4d 14             	mov    0x14(%ebp),%ecx
408696:	53                   	push   %ebx
408697:	56                   	push   %esi
408698:	8b 75 08             	mov    0x8(%ebp),%esi
40869b:	33 db                	xor    %ebx,%ebx
40869d:	57                   	push   %edi
40869e:	8b 79 0c             	mov    0xc(%ecx),%edi
4086a1:	3b f3                	cmp    %ebx,%esi
4086a3:	75 1e                	jne    0x4086c3
4086a5:	e8 a2 a7 ff ff       	call   0x402e4c
4086aa:	6a 16                	push   $0x16
4086ac:	5e                   	pop    %esi
4086ad:	89 30                	mov    %esi,(%eax)
4086af:	53                   	push   %ebx
4086b0:	53                   	push   %ebx
4086b1:	53                   	push   %ebx
4086b2:	53                   	push   %ebx
4086b3:	53                   	push   %ebx
4086b4:	e8 88 b5 ff ff       	call   0x403c41
4086b9:	83 c4 14             	add    $0x14,%esp
4086bc:	8b c6                	mov    %esi,%eax
4086be:	e9 85 00 00 00       	jmp    0x408748
4086c3:	39 5d 0c             	cmp    %ebx,0xc(%ebp)
4086c6:	76 dd                	jbe    0x4086a5
4086c8:	8b 55 10             	mov    0x10(%ebp),%edx
4086cb:	3b d3                	cmp    %ebx,%edx
4086cd:	88 1e                	mov    %bl,(%esi)
4086cf:	7e 04                	jle    0x4086d5
4086d1:	8b c2                	mov    %edx,%eax
4086d3:	eb 02                	jmp    0x4086d7
4086d5:	33 c0                	xor    %eax,%eax
4086d7:	40                   	inc    %eax
4086d8:	39 45 0c             	cmp    %eax,0xc(%ebp)
4086db:	77 0e                	ja     0x4086eb
4086dd:	e8 6a a7 ff ff       	call   0x402e4c
4086e2:	6a 22                	push   $0x22
4086e4:	59                   	pop    %ecx
4086e5:	89 08                	mov    %ecx,(%eax)
4086e7:	8b f1                	mov    %ecx,%esi
4086e9:	eb c4                	jmp    0x4086af
4086eb:	3b d3                	cmp    %ebx,%edx
4086ed:	c6 06 30             	movb   $0x30,(%esi)
4086f0:	8d 46 01             	lea    0x1(%esi),%eax
4086f3:	7e 1a                	jle    0x40870f
4086f5:	8a 0f                	mov    (%edi),%cl
4086f7:	3a cb                	cmp    %bl,%cl
4086f9:	74 06                	je     0x408701
4086fb:	0f be c9             	movsbl %cl,%ecx
4086fe:	47                   	inc    %edi
4086ff:	eb 03                	jmp    0x408704
408701:	6a 30                	push   $0x30
408703:	59                   	pop    %ecx
408704:	88 08                	mov    %cl,(%eax)
408706:	40                   	inc    %eax
408707:	4a                   	dec    %edx
408708:	3b d3                	cmp    %ebx,%edx
40870a:	7f e9                	jg     0x4086f5
40870c:	8b 4d 14             	mov    0x14(%ebp),%ecx
40870f:	3b d3                	cmp    %ebx,%edx
408711:	88 18                	mov    %bl,(%eax)
408713:	7c 12                	jl     0x408727
408715:	80 3f 35             	cmpb   $0x35,(%edi)
408718:	7c 0d                	jl     0x408727
40871a:	eb 03                	jmp    0x40871f
40871c:	c6 00 30             	movb   $0x30,(%eax)
40871f:	48                   	dec    %eax
408720:	80 38 39             	cmpb   $0x39,(%eax)
408723:	74 f7                	je     0x40871c
408725:	fe 00                	incb   (%eax)
408727:	80 3e 31             	cmpb   $0x31,(%esi)
40872a:	75 05                	jne    0x408731
40872c:	ff 41 04             	incl   0x4(%ecx)
40872f:	eb 15                	jmp    0x408746
408731:	8d 7e 01             	lea    0x1(%esi),%edi
408734:	57                   	push   %edi
408735:	e8 56 bd ff ff       	call   0x404490
40873a:	40                   	inc    %eax
40873b:	50                   	push   %eax
40873c:	57                   	push   %edi
40873d:	56                   	push   %esi
40873e:	e8 ed f7 ff ff       	call   0x407f30
408743:	83 c4 10             	add    $0x10,%esp
408746:	33 c0                	xor    %eax,%eax
408748:	5f                   	pop    %edi
408749:	5e                   	pop    %esi
40874a:	5b                   	pop    %ebx
40874b:	5d                   	pop    %ebp
40874c:	c3                   	ret
40874d:	8b ff                	mov    %edi,%edi
40874f:	55                   	push   %ebp
408750:	8b ec                	mov    %esp,%ebp
408752:	51                   	push   %ecx
408753:	8b 55 0c             	mov    0xc(%ebp),%edx
408756:	0f b7 42 06          	movzwl 0x6(%edx),%eax
40875a:	53                   	push   %ebx
40875b:	8b c8                	mov    %eax,%ecx
40875d:	56                   	push   %esi
40875e:	57                   	push   %edi
40875f:	c1 e9 04             	shr    $0x4,%ecx
408762:	25 00 80 00 00       	and    $0x8000,%eax
408767:	bf ff 07 00 00       	mov    $0x7ff,%edi
40876c:	23 cf                	and    %edi,%ecx
40876e:	89 45 0c             	mov    %eax,0xc(%ebp)
408771:	8b 42 04             	mov    0x4(%edx),%eax
408774:	8b 12                	mov    (%edx),%edx
408776:	0f b7 d9             	movzwl %cx,%ebx
408779:	be 00 00 00 80       	mov    $0x80000000,%esi
40877e:	25 ff ff 0f 00       	and    $0xfffff,%eax
408783:	89 75 fc             	mov    %esi,-0x4(%ebp)
408786:	85 db                	test   %ebx,%ebx
408788:	74 13                	je     0x40879d
40878a:	3b df                	cmp    %edi,%ebx
40878c:	74 08                	je     0x408796
40878e:	81 c1 00 3c 00 00    	add    $0x3c00,%ecx
408794:	eb 28                	jmp    0x4087be
408796:	bf ff 7f 00 00       	mov    $0x7fff,%edi
40879b:	eb 24                	jmp    0x4087c1
40879d:	33 db                	xor    %ebx,%ebx
40879f:	3b c3                	cmp    %ebx,%eax
4087a1:	75 12                	jne    0x4087b5
4087a3:	3b d3                	cmp    %ebx,%edx
4087a5:	75 0e                	jne    0x4087b5
4087a7:	8b 45 08             	mov    0x8(%ebp),%eax
4087aa:	66 8b 4d 0c          	mov    0xc(%ebp),%cx
4087ae:	89 58 04             	mov    %ebx,0x4(%eax)
4087b1:	89 18                	mov    %ebx,(%eax)
4087b3:	eb 4c                	jmp    0x408801
4087b5:	81 c1 01 3c 00 00    	add    $0x3c01,%ecx
4087bb:	89 5d fc             	mov    %ebx,-0x4(%ebp)
4087be:	0f b7 f9             	movzwl %cx,%edi
4087c1:	8b ca                	mov    %edx,%ecx
4087c3:	c1 e9 15             	shr    $0x15,%ecx
4087c6:	c1 e0 0b             	shl    $0xb,%eax
4087c9:	0b c8                	or     %eax,%ecx
4087cb:	0b 4d fc             	or     -0x4(%ebp),%ecx
4087ce:	8b 45 08             	mov    0x8(%ebp),%eax
4087d1:	c1 e2 0b             	shl    $0xb,%edx
4087d4:	89 48 04             	mov    %ecx,0x4(%eax)
4087d7:	89 10                	mov    %edx,(%eax)
4087d9:	85 ce                	test   %ecx,%esi
4087db:	75 1f                	jne    0x4087fc
4087dd:	8b 08                	mov    (%eax),%ecx
4087df:	8b 50 04             	mov    0x4(%eax),%edx
4087e2:	8b d9                	mov    %ecx,%ebx
4087e4:	03 d2                	add    %edx,%edx
4087e6:	c1 eb 1f             	shr    $0x1f,%ebx
4087e9:	0b d3                	or     %ebx,%edx
4087eb:	03 c9                	add    %ecx,%ecx
4087ed:	81 c7 ff ff 00 00    	add    $0xffff,%edi
4087f3:	89 50 04             	mov    %edx,0x4(%eax)
4087f6:	89 08                	mov    %ecx,(%eax)
4087f8:	85 d6                	test   %edx,%esi
4087fa:	74 e1                	je     0x4087dd
4087fc:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4087ff:	0b cf                	or     %edi,%ecx
408801:	5f                   	pop    %edi
408802:	5e                   	pop    %esi
408803:	66 89 48 08          	mov    %cx,0x8(%eax)
408807:	5b                   	pop    %ebx
408808:	c9                   	leave
408809:	c3                   	ret
40880a:	8b ff                	mov    %edi,%edi
40880c:	55                   	push   %ebp
40880d:	8b ec                	mov    %esp,%ebp
40880f:	83 ec 30             	sub    $0x30,%esp
408812:	a1 04 f0 41 00       	mov    0x41f004,%eax
408817:	33 c5                	xor    %ebp,%eax
408819:	89 45 fc             	mov    %eax,-0x4(%ebp)
40881c:	8b 45 14             	mov    0x14(%ebp),%eax
40881f:	53                   	push   %ebx
408820:	8b 5d 10             	mov    0x10(%ebp),%ebx
408823:	56                   	push   %esi
408824:	89 45 d0             	mov    %eax,-0x30(%ebp)
408827:	57                   	push   %edi
408828:	8d 45 08             	lea    0x8(%ebp),%eax
40882b:	50                   	push   %eax
40882c:	8d 45 f0             	lea    -0x10(%ebp),%eax
40882f:	50                   	push   %eax
408830:	e8 18 ff ff ff       	call   0x40874d
408835:	59                   	pop    %ecx
408836:	59                   	pop    %ecx
408837:	8d 45 d4             	lea    -0x2c(%ebp),%eax
40883a:	50                   	push   %eax
40883b:	6a 00                	push   $0x0
40883d:	6a 11                	push   $0x11
40883f:	83 ec 0c             	sub    $0xc,%esp
408842:	8d 75 f0             	lea    -0x10(%ebp),%esi
408845:	8b fc                	mov    %esp,%edi
408847:	a5                   	movsl  %ds:(%esi),%es:(%edi)
408848:	a5                   	movsl  %ds:(%esi),%es:(%edi)
408849:	66 a5                	movsw  %ds:(%esi),%es:(%edi)
40884b:	e8 57 17 00 00       	call   0x409fa7
408850:	8b 75 d0             	mov    -0x30(%ebp),%esi
408853:	89 43 08             	mov    %eax,0x8(%ebx)
408856:	0f be 45 d6          	movsbl -0x2a(%ebp),%eax
40885a:	89 03                	mov    %eax,(%ebx)
40885c:	0f bf 45 d4          	movswl -0x2c(%ebp),%eax
408860:	89 43 04             	mov    %eax,0x4(%ebx)
408863:	8d 45 d8             	lea    -0x28(%ebp),%eax
408866:	50                   	push   %eax
408867:	ff 75 18             	push   0x18(%ebp)
40886a:	56                   	push   %esi
40886b:	e8 ab bc ff ff       	call   0x40451b
408870:	83 c4 24             	add    $0x24,%esp
408873:	85 c0                	test   %eax,%eax
408875:	74 0f                	je     0x408886
408877:	33 c0                	xor    %eax,%eax
408879:	50                   	push   %eax
40887a:	50                   	push   %eax
40887b:	50                   	push   %eax
40887c:	50                   	push   %eax
40887d:	50                   	push   %eax
40887e:	e8 96 b2 ff ff       	call   0x403b19
408883:	83 c4 14             	add    $0x14,%esp