40550c:	51                   	push   %ecx
40550d:	50                   	push   %eax
40550e:	89 85 48 fe ff ff    	mov    %eax,-0x1b8(%ebp)
405514:	8b f3                	mov    %ebx,%esi
405516:	89 9d 58 fe ff ff    	mov    %ebx,-0x1a8(%ebp)
40551c:	ff 15 0c f0 40 00    	call   *0x40f00c
405522:	85 c0                	test   %eax,%eax
405524:	75 5f                	jne    0x405585
405526:	8b b5 58 fe ff ff    	mov    -0x1a8(%ebp),%esi
40552c:	8d 85 60 fe ff ff    	lea    -0x1a0(%ebp),%eax
405532:	53                   	push   %ebx
405533:	53                   	push   %ebx
405534:	53                   	push   %ebx
405535:	53                   	push   %ebx
405536:	53                   	push   %ebx
405537:	53                   	push   %ebx
405538:	53                   	push   %ebx
405539:	50                   	push   %eax
40553a:	53                   	push   %ebx
40553b:	53                   	push   %ebx
40553c:	53                   	push   %ebx
40553d:	56                   	push   %esi
40553e:	ff 15 04 f0 40 00    	call   *0x40f004
405544:	89 85 54 fe ff ff    	mov    %eax,-0x1ac(%ebp)
40554a:	85 f6                	test   %esi,%esi
40554c:	74 0d                	je     0x40555b
40554e:	56                   	push   %esi
40554f:	ff 15 00 f0 40 00    	call   *0x40f000
405555:	8b 85 54 fe ff ff    	mov    -0x1ac(%ebp),%eax
40555b:	8b fe                	mov    %esi,%edi
40555d:	f7 df                	neg    %edi
40555f:	1b ff                	sbb    %edi,%edi
405561:	f7 d7                	not    %edi
405563:	23 fe                	and    %esi,%edi
405565:	8b f7                	mov    %edi,%esi
405567:	85 c0                	test   %eax,%eax
405569:	75 1a                	jne    0x405585
40556b:	39 9d 60 fe ff ff    	cmp    %ebx,-0x1a0(%ebp)
405571:	75 12                	jne    0x405585
405573:	8d 85 f4 fe ff ff    	lea    -0x10c(%ebp),%eax
405579:	50                   	push   %eax
40557a:	8d 8d 48 fe ff ff    	lea    -0x1b8(%ebp),%ecx
405580:	e8 0b 18 00 00       	call   0x406d90
405585:	68 98 24 40 00       	push   $0x402498
40558a:	bf 80 00 00 00       	mov    $0x80,%edi
40558f:	8d 85 f4 fe ff ff    	lea    -0x10c(%ebp),%eax
405595:	57                   	push   %edi
405596:	50                   	push   %eax
405597:	ff 15 e8 f1 40 00    	call   *0x40f1e8
40559d:	83 c4 0c             	add    $0xc,%esp
4055a0:	8b c8                	mov    %eax,%ecx
4055a2:	e8 c2 15 00 00       	call   0x406b69
4055a7:	8d 85 74 fe ff ff    	lea    -0x18c(%ebp),%eax
4055ad:	50                   	push   %eax
4055ae:	8d 85 f4 fe ff ff    	lea    -0x10c(%ebp),%eax
4055b4:	57                   	push   %edi
4055b5:	50                   	push   %eax
4055b6:	ff 15 e4 f1 40 00    	call   *0x40f1e4
4055bc:	83 c4 0c             	add    $0xc,%esp
4055bf:	8b c8                	mov    %eax,%ecx
4055c1:	e8 a3 15 00 00       	call   0x406b69
4055c6:	68 a8 24 40 00       	push   $0x4024a8
4055cb:	8d 85 f4 fe ff ff    	lea    -0x10c(%ebp),%eax
4055d1:	57                   	push   %edi
4055d2:	50                   	push   %eax
4055d3:	ff 15 e4 f1 40 00    	call   *0x40f1e4
4055d9:	83 c4 0c             	add    $0xc,%esp
4055dc:	8b c8                	mov    %eax,%ecx
4055de:	e8 86 15 00 00       	call   0x406b69
4055e3:	8b bd 48 fe ff ff    	mov    -0x1b8(%ebp),%edi
4055e9:	8d 85 54 fe ff ff    	lea    -0x1ac(%ebp),%eax
4055ef:	50                   	push   %eax
4055f0:	68 19 00 02 00       	push   $0x20019
4055f5:	53                   	push   %ebx
4055f6:	8d 85 f4 fe ff ff    	lea    -0x10c(%ebp),%eax
4055fc:	89 9d 54 fe ff ff    	mov    %ebx,-0x1ac(%ebp)
405602:	50                   	push   %eax
405603:	57                   	push   %edi
405604:	ff 15 0c f0 40 00    	call   *0x40f00c
40560a:	85 c0                	test   %eax,%eax
40560c:	75 76                	jne    0x405684
40560e:	8b c3                	mov    %ebx,%eax
405610:	85 f6                	test   %esi,%esi
405612:	74 07                	je     0x40561b
405614:	56                   	push   %esi
405615:	ff 15 00 f0 40 00    	call   *0x40f000
40561b:	8b b5 54 fe ff ff    	mov    -0x1ac(%ebp),%esi
405621:	85 c0                	test   %eax,%eax
405623:	75 5f                	jne    0x405684
405625:	53                   	push   %ebx
405626:	53                   	push   %ebx
405627:	53                   	push   %ebx
405628:	53                   	push   %ebx
405629:	53                   	push   %ebx
40562a:	53                   	push   %ebx
40562b:	53                   	push   %ebx
40562c:	8d 85 60 fe ff ff    	lea    -0x1a0(%ebp),%eax
405632:	50                   	push   %eax
405633:	53                   	push   %ebx
405634:	53                   	push   %ebx
405635:	53                   	push   %ebx
405636:	56                   	push   %esi
405637:	ff 15 04 f0 40 00    	call   *0x40f004
40563d:	89 85 44 fe ff ff    	mov    %eax,-0x1bc(%ebp)
405643:	85 f6                	test   %esi,%esi
405645:	74 0d                	je     0x405654
405647:	56                   	push   %esi
405648:	ff 15 00 f0 40 00    	call   *0x40f000
40564e:	8b 85 44 fe ff ff    	mov    -0x1bc(%ebp),%eax
405654:	8b fe                	mov    %esi,%edi
405656:	f7 df                	neg    %edi
405658:	1b ff                	sbb    %edi,%edi
40565a:	f7 d7                	not    %edi
40565c:	23 fe                	and    %esi,%edi
40565e:	8b f7                	mov    %edi,%esi
405660:	85 c0                	test   %eax,%eax
405662:	75 1a                	jne    0x40567e
405664:	39 9d 60 fe ff ff    	cmp    %ebx,-0x1a0(%ebp)
40566a:	75 12                	jne    0x40567e
40566c:	8d 85 f4 fe ff ff    	lea    -0x10c(%ebp),%eax
405672:	50                   	push   %eax
405673:	8d 8d 48 fe ff ff    	lea    -0x1b8(%ebp),%ecx
405679:	e8 12 17 00 00       	call   0x406d90
40567e:	8b bd 48 fe ff ff    	mov    -0x1b8(%ebp),%edi
405684:	85 f6                	test   %esi,%esi
405686:	74 07                	je     0x40568f
405688:	56                   	push   %esi
405689:	ff 15 00 f0 40 00    	call   *0x40f000
40568f:	85 ff                	test   %edi,%edi
405691:	74 07                	je     0x40569a
405693:	57                   	push   %edi
405694:	ff 15 00 f0 40 00    	call   *0x40f000
40569a:	8d 8d 40 fe ff ff    	lea    -0x1c0(%ebp),%ecx
4056a0:	e8 e7 0f 00 00       	call   0x40668c
4056a5:	8b b5 5c fe ff ff    	mov    -0x1a4(%ebp),%esi
4056ab:	e9 f3 fc ff ff       	jmp    0x4053a3
4056b0:	8b ff                	mov    %edi,%edi
4056b2:	55                   	push   %ebp
4056b3:	8b ec                	mov    %esp,%ebp
4056b5:	81 ec 38 02 00 00    	sub    $0x238,%esp
4056bb:	a1 e4 c1 40 00       	mov    0x40c1e4,%eax
4056c0:	33 c5                	xor    %ebp,%eax
4056c2:	89 45 fc             	mov    %eax,-0x4(%ebp)
4056c5:	8b 45 08             	mov    0x8(%ebp),%eax
4056c8:	89 85 cc fd ff ff    	mov    %eax,-0x234(%ebp)
4056ce:	56                   	push   %esi
4056cf:	8b 75 0c             	mov    0xc(%ebp),%esi
4056d2:	89 b5 d0 fd ff ff    	mov    %esi,-0x230(%ebp)
4056d8:	85 c0                	test   %eax,%eax
4056da:	0f 84 2a 01 00 00    	je     0x40580a
4056e0:	85 f6                	test   %esi,%esi
4056e2:	0f 84 22 01 00 00    	je     0x40580a
4056e8:	53                   	push   %ebx
4056e9:	57                   	push   %edi
4056ea:	33 ff                	xor    %edi,%edi
4056ec:	bb 04 01 00 00       	mov    $0x104,%ebx
4056f1:	89 38                	mov    %edi,(%eax)
4056f3:	8d 85 d4 fd ff ff    	lea    -0x22c(%ebp),%eax
4056f9:	53                   	push   %ebx
4056fa:	50                   	push   %eax
4056fb:	51                   	push   %ecx
4056fc:	89 3e                	mov    %edi,(%esi)
4056fe:	89 bd c8 fd ff ff    	mov    %edi,-0x238(%ebp)
405704:	ff 15 ac f0 40 00    	call   *0x40f0ac
40570a:	85 c0                	test   %eax,%eax
40570c:	75 0c                	jne    0x40571a
40570e:	e8 e3 0b 00 00       	call   0x4062f6
405713:	8b f0                	mov    %eax,%esi
405715:	e9 df 00 00 00       	jmp    0x4057f9
40571a:	3b c3                	cmp    %ebx,%eax
40571c:	75 0a                	jne    0x405728
40571e:	be 7a 00 07 80       	mov    $0x8007007a,%esi
405723:	e9 d1 00 00 00       	jmp    0x4057f9
405728:	66 8b 8d d4 fd ff ff 	mov    -0x22c(%ebp),%cx
40572f:	8d 85 d4 fd ff ff    	lea    -0x22c(%ebp),%eax
405735:	8b df                	mov    %edi,%ebx
405737:	66 85 c9             	test   %cx,%cx
40573a:	74 2a                	je     0x405766
40573c:	0f b7 d1             	movzwl %cx,%edx
40573f:	66 83 fa 2e          	cmp    $0x2e,%dx
405743:	74 0a                	je     0x40574f
405745:	66 83 fa 5c          	cmp    $0x5c,%dx
405749:	75 06                	jne    0x405751
40574b:	8b df                	mov    %edi,%ebx
40574d:	eb 02                	jmp    0x405751
40574f:	8b d8                	mov    %eax,%ebx
405751:	50                   	push   %eax
405752:	ff 15 f8 f0 40 00    	call   *0x40f0f8
405758:	0f b7 08             	movzwl (%eax),%ecx
40575b:	8b d1                	mov    %ecx,%edx
40575d:	66 85 c9             	test   %cx,%cx
405760:	75 dd                	jne    0x40573f
405762:	85 db                	test   %ebx,%ebx
405764:	75 02                	jne    0x405768
405766:	8b d8                	mov    %eax,%ebx
405768:	56                   	push   %esi
405769:	8d 85 d4 fd ff ff    	lea    -0x22c(%ebp),%eax
40576f:	50                   	push   %eax
405770:	ff 15 dc f0 40 00    	call   *0x40f0dc
405776:	8b f0                	mov    %eax,%esi
405778:	85 f6                	test   %esi,%esi
40577a:	79 5f                	jns    0x4057db
40577c:	be d8 24 40 00       	mov    $0x4024d8,%esi
405781:	8d 85 d4 fd ff ff    	lea    -0x22c(%ebp),%eax
405787:	8d 7d f0             	lea    -0x10(%ebp),%edi
40578a:	8b cb                	mov    %ebx,%ecx
40578c:	2b c8                	sub    %eax,%ecx
40578e:	d1 f9                	sar    $1,%ecx
405790:	a5                   	movsl  %ds:(%esi),%es:(%edi)
405791:	8d 41 05             	lea    0x5(%ecx),%eax
405794:	a5                   	movsl  %ds:(%esi),%es:(%edi)
405795:	66 a5                	movsw  %ds:(%esi),%es:(%edi)
405797:	3d 04 01 00 00       	cmp    $0x104,%eax
40579c:	76 07                	jbe    0x4057a5
40579e:	be 05 40 00 80       	mov    $0x80004005,%esi
4057a3:	eb 54                	jmp    0x4057f9
4057a5:	8d 45 f0             	lea    -0x10(%ebp),%eax
4057a8:	50                   	push   %eax
4057a9:	b8 0e 01 00 00       	mov    $0x10e,%eax
4057ae:	2b c1                	sub    %ecx,%eax
4057b0:	50                   	push   %eax
4057b1:	53                   	push   %ebx
4057b2:	ff 15 e8 f1 40 00    	call   *0x40f1e8
4057b8:	83 c4 0c             	add    $0xc,%esp
4057bb:	8b c8                	mov    %eax,%ecx
4057bd:	e8 a7 13 00 00       	call   0x406b69
4057c2:	ff b5 d0 fd ff ff    	push   -0x230(%ebp)
4057c8:	8d 85 d4 fd ff ff    	lea    -0x22c(%ebp),%eax
4057ce:	50                   	push   %eax
4057cf:	ff 15 dc f0 40 00    	call   *0x40f0dc
4057d5:	8b f0                	mov    %eax,%esi
4057d7:	85 f6                	test   %esi,%esi
4057d9:	78 1e                	js     0x4057f9
4057db:	8d 85 d4 fd ff ff    	lea    -0x22c(%ebp),%eax
4057e1:	50                   	push   %eax
4057e2:	ff 15 d8 f0 40 00    	call   *0x40f0d8
4057e8:	8b 8d cc fd ff ff    	mov    -0x234(%ebp),%ecx
4057ee:	89 01                	mov    %eax,(%ecx)
4057f0:	85 c0                	test   %eax,%eax
4057f2:	75 05                	jne    0x4057f9
4057f4:	be 0e 00 07 80       	mov    $0x8007000e,%esi
4057f9:	8d 8d c8 fd ff ff    	lea    -0x238(%ebp),%ecx
4057ff:	e8 88 0e 00 00       	call   0x40668c
405804:	5f                   	pop    %edi
405805:	8b c6                	mov    %esi,%eax
405807:	5b                   	pop    %ebx
405808:	eb 05                	jmp    0x40580f
40580a:	b8 03 40 00 80       	mov    $0x80004003,%eax
40580f:	8b 4d fc             	mov    -0x4(%ebp),%ecx
405812:	33 cd                	xor    %ebp,%ecx
405814:	5e                   	pop    %esi
405815:	e8 46 40 00 00       	call   0x409860
40581a:	c9                   	leave
40581b:	c2 08 00             	ret    $0x8
40581e:	8b ff                	mov    %edi,%edi
405820:	55                   	push   %ebp
405821:	8b ec                	mov    %esp,%ebp
405823:	83 ec 0c             	sub    $0xc,%esp
405826:	83 65 f4 00          	andl   $0x0,-0xc(%ebp)
40582a:	8d 45 fc             	lea    -0x4(%ebp),%eax
40582d:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
405831:	56                   	push   %esi
405832:	57                   	push   %edi
405833:	50                   	push   %eax
405834:	8d 45 f4             	lea    -0xc(%ebp),%eax
405837:	50                   	push   %eax
405838:	e8 73 fe ff ff       	call   0x4056b0
40583d:	8b f8                	mov    %eax,%edi
40583f:	85 ff                	test   %edi,%edi
405841:	78 4f                	js     0x405892
405843:	8b 45 fc             	mov    -0x4(%ebp),%eax
405846:	8d 55 f8             	lea    -0x8(%ebp),%edx
405849:	52                   	push   %edx
40584a:	50                   	push   %eax
40584b:	8b 08                	mov    (%eax),%ecx
40584d:	8b 71 1c             	mov    0x1c(%ecx),%esi
405850:	8b ce                	mov    %esi,%ecx
405852:	ff 15 20 f2 40 00    	call   *0x40f220
405858:	ff d6                	call   *%esi
40585a:	8b f8                	mov    %eax,%edi
40585c:	85 ff                	test   %edi,%edi
40585e:	78 32                	js     0x405892
405860:	8b 4d f8             	mov    -0x8(%ebp),%ecx
405863:	ff 71 14             	push   0x14(%ecx)
405866:	0f b7 41 1a          	movzwl 0x1a(%ecx),%eax
40586a:	ff 71 10             	push   0x10(%ecx)
40586d:	50                   	push   %eax
40586e:	0f b7 41 18          	movzwl 0x18(%ecx),%eax
405872:	50                   	push   %eax
405873:	51                   	push   %ecx
405874:	ff 15 cc f0 40 00    	call   *0x40f0cc
40587a:	ff 75 f8             	push   -0x8(%ebp)
40587d:	8b f8                	mov    %eax,%edi
40587f:	8b 45 fc             	mov    -0x4(%ebp),%eax
405882:	50                   	push   %eax
405883:	8b 08                	mov    (%eax),%ecx
405885:	8b 71 30             	mov    0x30(%ecx),%esi
405888:	8b ce                	mov    %esi,%ecx
40588a:	ff 15 20 f2 40 00    	call   *0x40f220
405890:	ff d6                	call   *%esi
405892:	8b 45 fc             	mov    -0x4(%ebp),%eax
405895:	85 c0                	test   %eax,%eax
405897:	74 10                	je     0x4058a9
405899:	8b 08                	mov    (%eax),%ecx
40589b:	50                   	push   %eax
40589c:	8b 71 08             	mov    0x8(%ecx),%esi
40589f:	8b ce                	mov    %esi,%ecx
4058a1:	ff 15 20 f2 40 00    	call   *0x40f220
4058a7:	ff d6                	call   *%esi
4058a9:	ff 75 f4             	push   -0xc(%ebp)
4058ac:	ff 15 d0 f0 40 00    	call   *0x40f0d0
4058b2:	8b c7                	mov    %edi,%eax
4058b4:	5f                   	pop    %edi
4058b5:	5e                   	pop    %esi
4058b6:	c9                   	leave
4058b7:	c3                   	ret
4058b8:	8b ff                	mov    %edi,%edi
4058ba:	53                   	push   %ebx
4058bb:	8b dc                	mov    %esp,%ebx
4058bd:	51                   	push   %ecx
4058be:	51                   	push   %ecx
4058bf:	83 e4 f8             	and    $0xfffffff8,%esp
4058c2:	83 c4 04             	add    $0x4,%esp
4058c5:	55                   	push   %ebp
4058c6:	8b 6b 04             	mov    0x4(%ebx),%ebp
4058c9:	89 6c 24 04          	mov    %ebp,0x4(%esp)
4058cd:	8b ec                	mov    %esp,%ebp
4058cf:	51                   	push   %ecx
4058d0:	51                   	push   %ecx
4058d1:	56                   	push   %esi
4058d2:	57                   	push   %edi
4058d3:	8b 79 2c             	mov    0x2c(%ecx),%edi
4058d6:	85 ff                	test   %edi,%edi
4058d8:	74 41                	je     0x40591b
4058da:	eb 3a                	jmp    0x405916
4058dc:	8b 77 1c             	mov    0x1c(%edi),%esi
4058df:	8b ce                	mov    %esi,%ecx
4058e1:	6a 00                	push   $0x0
4058e3:	ff 15 20 f2 40 00    	call   *0x40f220
4058e9:	ff d6                	call   *%esi
4058eb:	8b 0f                	mov    (%edi),%ecx
4058ed:	8b d0                	mov    %eax,%edx
4058ef:	e8 3f fa ff ff       	call   0x405333
4058f4:	85 c0                	test   %eax,%eax
4058f6:	0f 88 a0 00 00 00    	js     0x40599c
4058fc:	8b 77 04             	mov    0x4(%edi),%esi
4058ff:	8b ce                	mov    %esi,%ecx
405901:	6a 00                	push   $0x0
405903:	ff 15 20 f2 40 00    	call   *0x40f220
405909:	ff d6                	call   *%esi