40746f:	8b 75 e8             	mov    -0x18(%ebp),%esi
407472:	8b f8                	mov    %eax,%edi
407474:	59                   	pop    %ecx
407475:	85 ff                	test   %edi,%edi
407477:	75 1f                	jne    0x407498
407479:	8b 45 ec             	mov    -0x14(%ebp),%eax
40747c:	2b c6                	sub    %esi,%eax
40747e:	a9 fe ff ff ff       	test   $0xfffffffe,%eax
407483:	74 11                	je     0x407496
407485:	85 f6                	test   %esi,%esi
407487:	74 0d                	je     0x407496
407489:	8b d6                	mov    %esi,%edx
40748b:	8b cb                	mov    %ebx,%ecx
40748d:	e8 82 fe ff ff       	call   0x407314
407492:	8b f8                	mov    %eax,%edi
407494:	eb 02                	jmp    0x407498
407496:	33 ff                	xor    %edi,%edi
407498:	85 f6                	test   %esi,%esi
40749a:	74 08                	je     0x4074a4
40749c:	56                   	push   %esi
40749d:	ff 15 e4 21 41 00    	call   *0x4121e4
4074a3:	59                   	pop    %ecx
4074a4:	8b c7                	mov    %edi,%eax
4074a6:	e8 71 71 00 00       	call   0x40e61c
4074ab:	c3                   	ret
4074ac:	6a 3c                	push   $0x3c
4074ae:	b8 7e ee 40 00       	mov    $0x40ee7e,%eax
4074b3:	e8 c9 71 00 00       	call   0x40e681
4074b8:	8b f1                	mov    %ecx,%esi
4074ba:	83 65 e8 00          	andl   $0x0,-0x18(%ebp)
4074be:	33 c0                	xor    %eax,%eax
4074c0:	c7 45 ec 07 00 00 00 	movl   $0x7,-0x14(%ebp)
4074c7:	66 89 45 d8          	mov    %ax,-0x28(%ebp)
4074cb:	21 45 fc             	and    %eax,-0x4(%ebp)
4074ce:	8d 4d d8             	lea    -0x28(%ebp),%ecx
4074d1:	52                   	push   %edx
4074d2:	e8 ca ef ff ff       	call   0x4064a1
4074d7:	89 75 d4             	mov    %esi,-0x2c(%ebp)
4074da:	c7 45 fc 01 00 00 00 	movl   $0x1,-0x4(%ebp)
4074e1:	8b 15 00 10 41 00    	mov    0x411000,%edx
4074e7:	81 fa 00 10 41 00    	cmp    $0x411000,%edx
4074ed:	74 21                	je     0x407510
4074ef:	f6 42 1c 01          	testb  $0x1,0x1c(%edx)
4074f3:	74 1b                	je     0x407510
4074f5:	80 7a 19 02          	cmpb   $0x2,0x19(%edx)
4074f9:	72 15                	jb     0x407510
4074fb:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
4074fe:	e8 de fd ff ff       	call   0x4072e1
407503:	50                   	push   %eax
407504:	51                   	push   %ecx
407505:	ff 72 14             	push   0x14(%edx)
407508:	ff 72 10             	push   0x10(%edx)
40750b:	e8 d4 fd ff ff       	call   0x4072e4
407510:	8d 45 d4             	lea    -0x2c(%ebp),%eax
407513:	50                   	push   %eax
407514:	8d 4d b8             	lea    -0x48(%ebp),%ecx
407517:	e8 0f 00 00 00       	call   0x40752b
40751c:	68 50 03 41 00       	push   $0x410350
407521:	8d 45 b8             	lea    -0x48(%ebp),%eax
407524:	50                   	push   %eax
407525:	e8 ec 70 00 00       	call   0x40e616
40752a:	cc                   	int3
40752b:	8b ff                	mov    %edi,%edi
40752d:	55                   	push   %ebp
40752e:	8b ec                	mov    %esp,%ebp
407530:	8b 55 08             	mov    0x8(%ebp),%edx
407533:	56                   	push   %esi
407534:	8b f1                	mov    %ecx,%esi
407536:	8b 02                	mov    (%edx),%eax
407538:	89 06                	mov    %eax,(%esi)
40753a:	8d 4e 04             	lea    0x4(%esi),%ecx
40753d:	8d 42 04             	lea    0x4(%edx),%eax
407540:	50                   	push   %eax
407541:	e8 37 fd ff ff       	call   0x40727d
407546:	8b c6                	mov    %esi,%eax
407548:	5e                   	pop    %esi
407549:	5d                   	pop    %ebp
40754a:	c2 04 00             	ret    $0x4
40754d:	cc                   	int3
40754e:	cc                   	int3
40754f:	cc                   	int3
407550:	8b ff                	mov    %edi,%edi
407552:	55                   	push   %ebp
407553:	8b ec                	mov    %esp,%ebp
407555:	51                   	push   %ecx
407556:	8b 55 08             	mov    0x8(%ebp),%edx
407559:	56                   	push   %esi
40755a:	8b f1                	mov    %ecx,%esi
40755c:	6a ff                	push   $0xffffffff
40755e:	8b 02                	mov    (%edx),%eax
407560:	89 75 fc             	mov    %esi,-0x4(%ebp)
407563:	89 06                	mov    %eax,(%esi)
407565:	8d 4e 04             	lea    0x4(%esi),%ecx
407568:	83 61 10 00          	andl   $0x0,0x10(%ecx)
40756c:	33 c0                	xor    %eax,%eax
40756e:	c7 41 14 07 00 00 00 	movl   $0x7,0x14(%ecx)
407575:	50                   	push   %eax
407576:	66 89 01             	mov    %ax,(%ecx)
407579:	8d 42 04             	lea    0x4(%edx),%eax
40757c:	50                   	push   %eax
40757d:	e8 94 ec ff ff       	call   0x406216
407582:	8b c6                	mov    %esi,%eax
407584:	5e                   	pop    %esi
407585:	c9                   	leave
407586:	c2 04 00             	ret    $0x4
407589:	6a 10                	push   $0x10
40758b:	b8 ab ee 40 00       	mov    $0x40eeab,%eax
407590:	e8 b9 70 00 00       	call   0x40e64e
407595:	8b f1                	mov    %ecx,%esi
407597:	33 ff                	xor    %edi,%edi
407599:	8d 45 f0             	lea    -0x10(%ebp),%eax
40759c:	57                   	push   %edi
40759d:	57                   	push   %edi
40759e:	50                   	push   %eax
40759f:	68 00 04 00 00       	push   $0x400
4075a4:	89 7d f0             	mov    %edi,-0x10(%ebp)
4075a7:	ff 15 70 20 41 00    	call   *0x412070
4075ad:	50                   	push   %eax
4075ae:	57                   	push   %edi
4075af:	68 00 13 00 00       	push   $0x1300
4075b4:	ff 15 c4 20 41 00    	call   *0x4120c4
4075ba:	85 c0                	test   %eax,%eax
4075bc:	75 0c                	jne    0x4075ca
4075be:	ba d4 24 40 00       	mov    $0x4024d4,%edx
4075c3:	8b ce                	mov    %esi,%ecx
4075c5:	e8 e2 fe ff ff       	call   0x4074ac
4075ca:	ff 75 f0             	push   -0x10(%ebp)
4075cd:	8b 15 a8 20 41 00    	mov    0x4120a8,%edx
4075d3:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
4075d6:	e8 03 eb ff ff       	call   0x4060de
4075db:	89 7d fc             	mov    %edi,-0x4(%ebp)
4075de:	8b 55 f0             	mov    -0x10(%ebp),%edx
4075e1:	eb e0                	jmp    0x4075c3
4075e3:	6a 0c                	push   $0xc
4075e5:	b8 78 ec 40 00       	mov    $0x40ec78,%eax
4075ea:	e8 5f 70 00 00       	call   0x40e64e
4075ef:	8b f1                	mov    %ecx,%esi
4075f1:	8d 4d e8             	lea    -0x18(%ebp),%ecx
4075f4:	e8 a1 e8 ff ff       	call   0x405e9a
4075f9:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
4075fd:	e8 86 62 00 00       	call   0x40d888
407602:	51                   	push   %ecx
407603:	8d 4d e8             	lea    -0x18(%ebp),%ecx
407606:	e8 85 e8 ff ff       	call   0x405e90
40760b:	8b d0                	mov    %eax,%edx
40760d:	8b ce                	mov    %esi,%ecx
40760f:	e8 98 fe ff ff       	call   0x4074ac
407614:	cc                   	int3
407615:	6a 14                	push   $0x14
407617:	b8 ce ee 40 00       	mov    $0x40eece,%eax
40761c:	e8 2d 70 00 00       	call   0x40e64e
407621:	33 db                	xor    %ebx,%ebx
407623:	53                   	push   %ebx
407624:	ff 15 b0 20 41 00    	call   *0x4120b0
40762a:	8b f8                	mov    %eax,%edi
40762c:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
40762f:	89 5d e8             	mov    %ebx,-0x18(%ebp)
407632:	89 5d ec             	mov    %ebx,-0x14(%ebp)
407635:	89 5d fc             	mov    %ebx,-0x4(%ebp)
407638:	6a 40                	push   $0x40
40763a:	eb 2a                	jmp    0x407666
40763c:	89 5d f0             	mov    %ebx,-0x10(%ebp)
40763f:	ff 15 70 20 41 00    	call   *0x412070
407645:	85 c0                	test   %eax,%eax
407647:	74 05                	je     0x40764e
407649:	83 f8 7a             	cmp    $0x7a,%eax
40764c:	75 5a                	jne    0x4076a8
40764e:	b8 00 00 01 00       	mov    $0x10000,%eax
407653:	3b f0                	cmp    %eax,%esi
407655:	73 51                	jae    0x4076a8
407657:	81 fe 00 80 00 00    	cmp    $0x8000,%esi
40765d:	72 04                	jb     0x407663
40765f:	8b f0                	mov    %eax,%esi
407661:	eb 02                	jmp    0x407665
407663:	03 f6                	add    %esi,%esi
407665:	56                   	push   %esi
407666:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
407669:	e8 7f 02 00 00       	call   0x4078ed
40766e:	8b 75 e8             	mov    -0x18(%ebp),%esi
407671:	8d 45 10             	lea    0x10(%ebp),%eax
407674:	2b 75 e4             	sub    -0x1c(%ebp),%esi
407677:	89 45 f0             	mov    %eax,-0x10(%ebp)
40767a:	8d 45 f0             	lea    -0x10(%ebp),%eax
40767d:	50                   	push   %eax
40767e:	d1 fe                	sar    $1,%esi
407680:	56                   	push   %esi
407681:	ff 75 e4             	push   -0x1c(%ebp)
407684:	53                   	push   %ebx
407685:	ff 75 0c             	push   0xc(%ebp)
407688:	57                   	push   %edi
407689:	68 00 08 00 00       	push   $0x800
40768e:	ff 15 c4 20 41 00    	call   *0x4120c4
407694:	85 c0                	test   %eax,%eax
407696:	74 a4                	je     0x40763c
407698:	51                   	push   %ecx
407699:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
40769c:	89 5d f0             	mov    %ebx,-0x10(%ebp)
40769f:	e8 ec e7 ff ff       	call   0x405e90
4076a4:	8b d0                	mov    %eax,%edx
4076a6:	eb 05                	jmp    0x4076ad
4076a8:	ba f8 24 40 00       	mov    $0x4024f8,%edx
4076ad:	8b 4d 08             	mov    0x8(%ebp),%ecx
4076b0:	e8 f7 fd ff ff       	call   0x4074ac
4076b5:	cc                   	int3
4076b6:	8b ff                	mov    %edi,%edi
4076b8:	55                   	push   %ebp
4076b9:	8b ec                	mov    %esp,%ebp
4076bb:	83 e4 f8             	and    $0xfffffff8,%esp
4076be:	83 ec 1c             	sub    $0x1c,%esp
4076c1:	a1 54 13 41 00       	mov    0x411354,%eax
4076c6:	33 c4                	xor    %esp,%eax
4076c8:	89 44 24 18          	mov    %eax,0x18(%esp)
4076cc:	53                   	push   %ebx
4076cd:	56                   	push   %esi
4076ce:	57                   	push   %edi
4076cf:	33 c0                	xor    %eax,%eax
4076d1:	8d 7c 24 14          	lea    0x14(%esp),%edi
4076d5:	ab                   	stos   %eax,%es:(%edi)
4076d6:	8b f2                	mov    %edx,%esi
4076d8:	8b d1                	mov    %ecx,%edx
4076da:	ab                   	stos   %eax,%es:(%edi)
4076db:	8d 5a 02             	lea    0x2(%edx),%ebx
4076de:	ab                   	stos   %eax,%es:(%edi)
4076df:	ab                   	stos   %eax,%es:(%edi)
4076e0:	33 ff                	xor    %edi,%edi
4076e2:	66 8b 02             	mov    (%edx),%ax
4076e5:	83 c2 02             	add    $0x2,%edx
4076e8:	66 3b c7             	cmp    %di,%ax
4076eb:	75 f5                	jne    0x4076e2
4076ed:	2b d3                	sub    %ebx,%edx
4076ef:	d1 fa                	sar    $1,%edx
4076f1:	0f 88 8e 00 00 00    	js     0x407785
4076f7:	0f b7 44 51 fe       	movzwl -0x2(%ecx,%edx,2),%eax
4076fc:	83 f8 5a             	cmp    $0x5a,%eax
4076ff:	74 05                	je     0x407706
407701:	83 f8 7a             	cmp    $0x7a,%eax
407704:	75 04                	jne    0x40770a
407706:	33 ff                	xor    %edi,%edi
407708:	47                   	inc    %edi
407709:	4a                   	dec    %edx
40770a:	83 fa 17             	cmp    $0x17,%edx
40770d:	0f 85 87 00 00 00    	jne    0x40779a
407713:	6a 2d                	push   $0x2d
407715:	58                   	pop    %eax
407716:	66 3b 41 08          	cmp    0x8(%ecx),%ax
40771a:	75 69                	jne    0x407785
40771c:	66 3b 41 0e          	cmp    0xe(%ecx),%ax
407720:	75 63                	jne    0x407785
407722:	0f b7 41 14          	movzwl 0x14(%ecx),%eax
407726:	6a 54                	push   $0x54
407728:	5a                   	pop    %edx
407729:	66 3b d0             	cmp    %ax,%dx
40772c:	74 08                	je     0x407736
40772e:	6a 74                	push   $0x74
407730:	5a                   	pop    %edx
407731:	66 3b d0             	cmp    %ax,%dx
407734:	75 4f                	jne    0x407785
407736:	6a 3a                	push   $0x3a
407738:	58                   	pop    %eax
407739:	66 3b 41 1a          	cmp    0x1a(%ecx),%ax
40773d:	75 46                	jne    0x407785
40773f:	66 3b 41 20          	cmp    0x20(%ecx),%ax
407743:	75 40                	jne    0x407785
407745:	6a 2e                	push   $0x2e
407747:	58                   	pop    %eax
407748:	66 3b 41 26          	cmp    0x26(%ecx),%ax
40774c:	75 37                	jne    0x407785
40774e:	8d 44 24 22          	lea    0x22(%esp),%eax
407752:	50                   	push   %eax
407753:	8d 44 24 24          	lea    0x24(%esp),%eax
407757:	50                   	push   %eax
407758:	8d 44 24 26          	lea    0x26(%esp),%eax
40775c:	50                   	push   %eax
40775d:	8d 44 24 28          	lea    0x28(%esp),%eax
407761:	50                   	push   %eax
407762:	8d 44 24 2a          	lea    0x2a(%esp),%eax
407766:	50                   	push   %eax
407767:	8d 44 24 2a          	lea    0x2a(%esp),%eax
40776b:	50                   	push   %eax
40776c:	8d 44 24 2c          	lea    0x2c(%esp),%eax
407770:	50                   	push   %eax
407771:	68 40 25 40 00       	push   $0x402540
407776:	51                   	push   %ecx
407777:	ff 15 b4 21 41 00    	call   *0x4121b4
40777d:	83 c4 24             	add    $0x24,%esp
407780:	83 f8 07             	cmp    $0x7,%eax
407783:	74 7e                	je     0x407803
407785:	6a 57                	push   $0x57
407787:	58                   	pop    %eax
407788:	8b 4c 24 24          	mov    0x24(%esp),%ecx
40778c:	5f                   	pop    %edi
40778d:	5e                   	pop    %esi
40778e:	5b                   	pop    %ebx
40778f:	33 cc                	xor    %esp,%ecx
407791:	e8 0a 6c 00 00       	call   0x40e3a0
407796:	8b e5                	mov    %ebp,%esp
407798:	5d                   	pop    %ebp
407799:	c3                   	ret
40779a:	83 fa 13             	cmp    $0x13,%edx
40779d:	75 e6                	jne    0x407785
40779f:	6a 2d                	push   $0x2d
4077a1:	58                   	pop    %eax
4077a2:	66 3b 41 08          	cmp    0x8(%ecx),%ax
4077a6:	75 dd                	jne    0x407785
4077a8:	66 3b 41 0e          	cmp    0xe(%ecx),%ax
4077ac:	75 d7                	jne    0x407785
4077ae:	0f b7 41 14          	movzwl 0x14(%ecx),%eax
4077b2:	6a 54                	push   $0x54
4077b4:	5a                   	pop    %edx
4077b5:	66 3b d0             	cmp    %ax,%dx
4077b8:	74 08                	je     0x4077c2
4077ba:	6a 74                	push   $0x74
4077bc:	5a                   	pop    %edx
4077bd:	66 3b d0             	cmp    %ax,%dx
4077c0:	75 c3                	jne    0x407785
4077c2:	6a 3a                	push   $0x3a
4077c4:	58                   	pop    %eax
4077c5:	66 3b 41 1a          	cmp    0x1a(%ecx),%ax
4077c9:	75 ba                	jne    0x407785
4077cb:	66 3b 41 20          	cmp    0x20(%ecx),%ax
4077cf:	75 b4                	jne    0x407785
4077d1:	8d 44 24 20          	lea    0x20(%esp),%eax
4077d5:	50                   	push   %eax
4077d6:	8d 44 24 22          	lea    0x22(%esp),%eax
4077da:	50                   	push   %eax
4077db:	8d 44 24 24          	lea    0x24(%esp),%eax
4077df:	50                   	push   %eax
4077e0:	8d 44 24 26          	lea    0x26(%esp),%eax
4077e4:	50                   	push   %eax
4077e5:	8d 44 24 26          	lea    0x26(%esp),%eax
4077e9:	50                   	push   %eax
4077ea:	8d 44 24 28          	lea    0x28(%esp),%eax
4077ee:	50                   	push   %eax
4077ef:	68 88 25 40 00       	push   $0x402588
4077f4:	51                   	push   %ecx
4077f5:	ff 15 b4 21 41 00    	call   *0x4121b4
4077fb:	83 c4 20             	add    $0x20,%esp
4077fe:	83 f8 06             	cmp    $0x6,%eax
407801:	75 82                	jne    0x407785
407803:	56                   	push   %esi
407804:	8d 44 24 18          	lea    0x18(%esp),%eax
407808:	50                   	push   %eax
407809:	ff 15 1c 21 41 00    	call   *0x41211c
40780f:	85 c0                	test   %eax,%eax
407811:	75 0b                	jne    0x40781e
407813:	ff 15 70 20 41 00    	call   *0x412070
407819:	e9 6a ff ff ff       	jmp    0x407788
40781e:	85 ff                	test   %edi,%edi
407820:	75 1d                	jne    0x40783f
407822:	8d 44 24 0c          	lea    0xc(%esp),%eax