407558:	59                   	pop    %ecx
407559:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40755c:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
407563:	e8 09 00 00 00       	call   0x407571
407568:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40756b:	e8 49 c7 ff ff       	call   0x403cb9
407570:	c3                   	ret
407571:	6a 04                	push   $0x4
407573:	e8 b9 d7 ff ff       	call   0x404d31
407578:	59                   	pop    %ecx
407579:	c3                   	ret
40757a:	8b ff                	mov    %edi,%edi
40757c:	55                   	push   %ebp
40757d:	8b ec                	mov    %esp,%ebp
40757f:	56                   	push   %esi
407580:	8b 75 08             	mov    0x8(%ebp),%esi
407583:	83 fe e0             	cmp    $0xffffffe0,%esi
407586:	0f 87 a1 00 00 00    	ja     0x40762d
40758c:	53                   	push   %ebx
40758d:	57                   	push   %edi
40758e:	8b 3d 04 11 40 00    	mov    0x401104,%edi
407594:	83 3d dc cd 45 00 00 	cmpl   $0x0,0x45cddc
40759b:	75 18                	jne    0x4075b5
40759d:	e8 48 b9 ff ff       	call   0x402eea
4075a2:	6a 1e                	push   $0x1e
4075a4:	e8 96 b7 ff ff       	call   0x402d3f
4075a9:	68 ff 00 00 00       	push   $0xff
4075ae:	e8 d8 b4 ff ff       	call   0x402a8b
4075b3:	59                   	pop    %ecx
4075b4:	59                   	pop    %ecx
4075b5:	a1 e4 0a 89 00       	mov    0x890ae4,%eax
4075ba:	83 f8 01             	cmp    $0x1,%eax
4075bd:	75 0e                	jne    0x4075cd
4075bf:	85 f6                	test   %esi,%esi
4075c1:	74 04                	je     0x4075c7
4075c3:	8b c6                	mov    %esi,%eax
4075c5:	eb 03                	jmp    0x4075ca
4075c7:	33 c0                	xor    %eax,%eax
4075c9:	40                   	inc    %eax
4075ca:	50                   	push   %eax
4075cb:	eb 1c                	jmp    0x4075e9
4075cd:	83 f8 03             	cmp    $0x3,%eax
4075d0:	75 0b                	jne    0x4075dd
4075d2:	56                   	push   %esi
4075d3:	e8 53 ff ff ff       	call   0x40752b
4075d8:	59                   	pop    %ecx
4075d9:	85 c0                	test   %eax,%eax
4075db:	75 16                	jne    0x4075f3
4075dd:	85 f6                	test   %esi,%esi
4075df:	75 01                	jne    0x4075e2
4075e1:	46                   	inc    %esi
4075e2:	83 c6 0f             	add    $0xf,%esi
4075e5:	83 e6 f0             	and    $0xfffffff0,%esi
4075e8:	56                   	push   %esi
4075e9:	6a 00                	push   $0x0
4075eb:	ff 35 dc cd 45 00    	push   0x45cddc
4075f1:	ff d7                	call   *%edi
4075f3:	8b d8                	mov    %eax,%ebx
4075f5:	85 db                	test   %ebx,%ebx
4075f7:	75 2e                	jne    0x407627
4075f9:	6a 0c                	push   $0xc
4075fb:	5e                   	pop    %esi
4075fc:	39 05 88 d0 45 00    	cmp    %eax,0x45d088
407602:	74 15                	je     0x407619
407604:	ff 75 08             	push   0x8(%ebp)
407607:	e8 8f dd ff ff       	call   0x40539b
40760c:	59                   	pop    %ecx
40760d:	85 c0                	test   %eax,%eax
40760f:	74 0f                	je     0x407620
407611:	8b 75 08             	mov    0x8(%ebp),%esi
407614:	e9 7b ff ff ff       	jmp    0x407594
407619:	e8 3b d5 ff ff       	call   0x404b59
40761e:	89 30                	mov    %esi,(%eax)
407620:	e8 34 d5 ff ff       	call   0x404b59
407625:	89 30                	mov    %esi,(%eax)
407627:	5f                   	pop    %edi
407628:	8b c3                	mov    %ebx,%eax
40762a:	5b                   	pop    %ebx
40762b:	eb 14                	jmp    0x407641
40762d:	56                   	push   %esi
40762e:	e8 68 dd ff ff       	call   0x40539b
407633:	59                   	pop    %ecx
407634:	e8 20 d5 ff ff       	call   0x404b59
407639:	c7 00 0c 00 00 00    	movl   $0xc,(%eax)
40763f:	33 c0                	xor    %eax,%eax
407641:	5e                   	pop    %esi
407642:	5d                   	pop    %ebp
407643:	c3                   	ret
407644:	6a 0c                	push   $0xc
407646:	68 d8 a6 40 00       	push   $0x40a6d8
40764b:	e8 24 c6 ff ff       	call   0x403c74
407650:	8b 4d 08             	mov    0x8(%ebp),%ecx
407653:	33 ff                	xor    %edi,%edi
407655:	3b cf                	cmp    %edi,%ecx
407657:	76 2e                	jbe    0x407687
407659:	6a e0                	push   $0xffffffe0
40765b:	58                   	pop    %eax
40765c:	33 d2                	xor    %edx,%edx
40765e:	f7 f1                	div    %ecx
407660:	3b 45 0c             	cmp    0xc(%ebp),%eax
407663:	1b c0                	sbb    %eax,%eax
407665:	40                   	inc    %eax
407666:	75 1f                	jne    0x407687
407668:	e8 ec d4 ff ff       	call   0x404b59
40766d:	c7 00 0c 00 00 00    	movl   $0xc,(%eax)
407673:	57                   	push   %edi
407674:	57                   	push   %edi
407675:	57                   	push   %edi
407676:	57                   	push   %edi
407677:	57                   	push   %edi
407678:	e8 74 d4 ff ff       	call   0x404af1
40767d:	83 c4 14             	add    $0x14,%esp
407680:	33 c0                	xor    %eax,%eax
407682:	e9 d5 00 00 00       	jmp    0x40775c
407687:	0f af 4d 0c          	imul   0xc(%ebp),%ecx
40768b:	8b f1                	mov    %ecx,%esi
40768d:	89 75 08             	mov    %esi,0x8(%ebp)
407690:	3b f7                	cmp    %edi,%esi
407692:	75 03                	jne    0x407697
407694:	33 f6                	xor    %esi,%esi
407696:	46                   	inc    %esi
407697:	33 db                	xor    %ebx,%ebx
407699:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
40769c:	83 fe e0             	cmp    $0xffffffe0,%esi
40769f:	77 69                	ja     0x40770a
4076a1:	83 3d e4 0a 89 00 03 	cmpl   $0x3,0x890ae4
4076a8:	75 4b                	jne    0x4076f5
4076aa:	83 c6 0f             	add    $0xf,%esi
4076ad:	83 e6 f0             	and    $0xfffffff0,%esi
4076b0:	89 75 0c             	mov    %esi,0xc(%ebp)
4076b3:	8b 45 08             	mov    0x8(%ebp),%eax
4076b6:	3b 05 cc 0a 89 00    	cmp    0x890acc,%eax
4076bc:	77 37                	ja     0x4076f5
4076be:	6a 04                	push   $0x4
4076c0:	e8 46 d7 ff ff       	call   0x404e0b
4076c5:	59                   	pop    %ecx
4076c6:	89 7d fc             	mov    %edi,-0x4(%ebp)
4076c9:	ff 75 08             	push   0x8(%ebp)
4076cc:	e8 13 ee ff ff       	call   0x4064e4
4076d1:	59                   	pop    %ecx
4076d2:	89 45 e4             	mov    %eax,-0x1c(%ebp)
4076d5:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
4076dc:	e8 5f 00 00 00       	call   0x407740
4076e1:	8b 5d e4             	mov    -0x1c(%ebp),%ebx
4076e4:	3b df                	cmp    %edi,%ebx
4076e6:	74 11                	je     0x4076f9
4076e8:	ff 75 08             	push   0x8(%ebp)
4076eb:	57                   	push   %edi
4076ec:	53                   	push   %ebx
4076ed:	e8 2e f2 ff ff       	call   0x406920
4076f2:	83 c4 0c             	add    $0xc,%esp
4076f5:	3b df                	cmp    %edi,%ebx
4076f7:	75 61                	jne    0x40775a
4076f9:	56                   	push   %esi
4076fa:	6a 08                	push   $0x8
4076fc:	ff 35 dc cd 45 00    	push   0x45cddc
407702:	ff 15 04 11 40 00    	call   *0x401104
407708:	8b d8                	mov    %eax,%ebx
40770a:	3b df                	cmp    %edi,%ebx
40770c:	75 4c                	jne    0x40775a
40770e:	39 3d 88 d0 45 00    	cmp    %edi,0x45d088
407714:	74 33                	je     0x407749
407716:	56                   	push   %esi
407717:	e8 7f dc ff ff       	call   0x40539b
40771c:	59                   	pop    %ecx
40771d:	85 c0                	test   %eax,%eax
40771f:	0f 85 72 ff ff ff    	jne    0x407697
407725:	8b 45 10             	mov    0x10(%ebp),%eax
407728:	3b c7                	cmp    %edi,%eax
40772a:	0f 84 50 ff ff ff    	je     0x407680
407730:	c7 00 0c 00 00 00    	movl   $0xc,(%eax)
407736:	e9 45 ff ff ff       	jmp    0x407680
40773b:	33 ff                	xor    %edi,%edi
40773d:	8b 75 0c             	mov    0xc(%ebp),%esi
407740:	6a 04                	push   $0x4
407742:	e8 ea d5 ff ff       	call   0x404d31
407747:	59                   	pop    %ecx
407748:	c3                   	ret
407749:	3b df                	cmp    %edi,%ebx
40774b:	75 0d                	jne    0x40775a
40774d:	8b 45 10             	mov    0x10(%ebp),%eax
407750:	3b c7                	cmp    %edi,%eax
407752:	74 06                	je     0x40775a
407754:	c7 00 0c 00 00 00    	movl   $0xc,(%eax)
40775a:	8b c3                	mov    %ebx,%eax
40775c:	e8 58 c5 ff ff       	call   0x403cb9
407761:	c3                   	ret
407762:	6a 10                	push   $0x10
407764:	68 f8 a6 40 00       	push   $0x40a6f8
407769:	e8 06 c5 ff ff       	call   0x403c74
40776e:	8b 5d 08             	mov    0x8(%ebp),%ebx
407771:	85 db                	test   %ebx,%ebx
407773:	75 0e                	jne    0x407783
407775:	ff 75 0c             	push   0xc(%ebp)
407778:	e8 fd fd ff ff       	call   0x40757a
40777d:	59                   	pop    %ecx
40777e:	e9 cc 01 00 00       	jmp    0x40794f
407783:	8b 75 0c             	mov    0xc(%ebp),%esi
407786:	85 f6                	test   %esi,%esi
407788:	75 0c                	jne    0x407796
40778a:	53                   	push   %ebx
40778b:	e8 0e e0 ff ff       	call   0x40579e
407790:	59                   	pop    %ecx
407791:	e9 b7 01 00 00       	jmp    0x40794d
407796:	83 3d e4 0a 89 00 03 	cmpl   $0x3,0x890ae4
40779d:	0f 85 93 01 00 00    	jne    0x407936
4077a3:	33 ff                	xor    %edi,%edi
4077a5:	89 7d e4             	mov    %edi,-0x1c(%ebp)
4077a8:	83 fe e0             	cmp    $0xffffffe0,%esi
4077ab:	0f 87 8a 01 00 00    	ja     0x40793b
4077b1:	6a 04                	push   $0x4
4077b3:	e8 53 d6 ff ff       	call   0x404e0b
4077b8:	59                   	pop    %ecx
4077b9:	89 7d fc             	mov    %edi,-0x4(%ebp)
4077bc:	53                   	push   %ebx
4077bd:	e8 43 e5 ff ff       	call   0x405d05
4077c2:	59                   	pop    %ecx
4077c3:	89 45 e0             	mov    %eax,-0x20(%ebp)
4077c6:	3b c7                	cmp    %edi,%eax
4077c8:	0f 84 9e 00 00 00    	je     0x40786c
4077ce:	3b 35 cc 0a 89 00    	cmp    0x890acc,%esi
4077d4:	77 49                	ja     0x40781f
4077d6:	56                   	push   %esi
4077d7:	53                   	push   %ebx
4077d8:	50                   	push   %eax
4077d9:	e8 25 ea ff ff       	call   0x406203
4077de:	83 c4 0c             	add    $0xc,%esp
4077e1:	85 c0                	test   %eax,%eax
4077e3:	74 05                	je     0x4077ea
4077e5:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
4077e8:	eb 35                	jmp    0x40781f
4077ea:	56                   	push   %esi
4077eb:	e8 f4 ec ff ff       	call   0x4064e4
4077f0:	59                   	pop    %ecx
4077f1:	89 45 e4             	mov    %eax,-0x1c(%ebp)
4077f4:	3b c7                	cmp    %edi,%eax
4077f6:	74 27                	je     0x40781f
4077f8:	8b 43 fc             	mov    -0x4(%ebx),%eax
4077fb:	48                   	dec    %eax
4077fc:	3b c6                	cmp    %esi,%eax
4077fe:	72 02                	jb     0x407802
407800:	8b c6                	mov    %esi,%eax
407802:	50                   	push   %eax
407803:	53                   	push   %ebx
407804:	ff 75 e4             	push   -0x1c(%ebp)
407807:	e8 94 e1 ff ff       	call   0x4059a0
40780c:	53                   	push   %ebx
40780d:	e8 f3 e4 ff ff       	call   0x405d05
407812:	89 45 e0             	mov    %eax,-0x20(%ebp)
407815:	53                   	push   %ebx
407816:	50                   	push   %eax
407817:	e8 19 e5 ff ff       	call   0x405d35
40781c:	83 c4 18             	add    $0x18,%esp
40781f:	39 7d e4             	cmp    %edi,-0x1c(%ebp)
407822:	75 48                	jne    0x40786c
407824:	3b f7                	cmp    %edi,%esi
407826:	75 06                	jne    0x40782e
407828:	33 f6                	xor    %esi,%esi
40782a:	46                   	inc    %esi
40782b:	89 75 0c             	mov    %esi,0xc(%ebp)
40782e:	83 c6 0f             	add    $0xf,%esi
407831:	83 e6 f0             	and    $0xfffffff0,%esi
407834:	89 75 0c             	mov    %esi,0xc(%ebp)
407837:	56                   	push   %esi
407838:	57                   	push   %edi
407839:	ff 35 dc cd 45 00    	push   0x45cddc
40783f:	ff 15 04 11 40 00    	call   *0x401104
407845:	89 45 e4             	mov    %eax,-0x1c(%ebp)
407848:	3b c7                	cmp    %edi,%eax
40784a:	74 20                	je     0x40786c
40784c:	8b 43 fc             	mov    -0x4(%ebx),%eax
40784f:	48                   	dec    %eax
407850:	3b c6                	cmp    %esi,%eax
407852:	72 02                	jb     0x407856
407854:	8b c6                	mov    %esi,%eax
407856:	50                   	push   %eax
407857:	53                   	push   %ebx
407858:	ff 75 e4             	push   -0x1c(%ebp)
40785b:	e8 40 e1 ff ff       	call   0x4059a0
407860:	53                   	push   %ebx
407861:	ff 75 e0             	push   -0x20(%ebp)
407864:	e8 cc e4 ff ff       	call   0x405d35
407869:	83 c4 14             	add    $0x14,%esp
40786c:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
407873:	e8 2e 00 00 00       	call   0x4078a6
407878:	83 7d e0 00          	cmpl   $0x0,-0x20(%ebp)
40787c:	75 31                	jne    0x4078af
40787e:	85 f6                	test   %esi,%esi
407880:	75 01                	jne    0x407883
407882:	46                   	inc    %esi
407883:	83 c6 0f             	add    $0xf,%esi
407886:	83 e6 f0             	and    $0xfffffff0,%esi
407889:	89 75 0c             	mov    %esi,0xc(%ebp)
40788c:	56                   	push   %esi
40788d:	53                   	push   %ebx
40788e:	6a 00                	push   $0x0
407890:	ff 35 dc cd 45 00    	push   0x45cddc
407896:	ff 15 0c 11 40 00    	call   *0x40110c
40789c:	8b f8                	mov    %eax,%edi
40789e:	eb 12                	jmp    0x4078b2
4078a0:	8b 75 0c             	mov    0xc(%ebp),%esi
4078a3:	8b 5d 08             	mov    0x8(%ebp),%ebx
4078a6:	6a 04                	push   $0x4
4078a8:	e8 84 d4 ff ff       	call   0x404d31
4078ad:	59                   	pop    %ecx
4078ae:	c3                   	ret
4078af:	8b 7d e4             	mov    -0x1c(%ebp),%edi
4078b2:	85 ff                	test   %edi,%edi
4078b4:	0f 85 bf 00 00 00    	jne    0x407979
4078ba:	39 3d 88 d0 45 00    	cmp    %edi,0x45d088
4078c0:	74 2c                	je     0x4078ee
4078c2:	56                   	push   %esi
4078c3:	e8 d3 da ff ff       	call   0x40539b
4078c8:	59                   	pop    %ecx
4078c9:	85 c0                	test   %eax,%eax
4078cb:	0f 85 d2 fe ff ff    	jne    0x4077a3
4078d1:	e8 83 d2 ff ff       	call   0x404b59
4078d6:	39 7d e0             	cmp    %edi,-0x20(%ebp)
4078d9:	75 6c                	jne    0x407947
4078db:	8b f0                	mov    %eax,%esi
4078dd:	ff 15 c8 10 40 00    	call   *0x4010c8
4078e3:	50                   	push   %eax
4078e4:	e8 2e d2 ff ff       	call   0x404b17
4078e9:	59                   	pop    %ecx
4078ea:	89 06                	mov    %eax,(%esi)
4078ec:	eb 5f                	jmp    0x40794d
4078ee:	85 ff                	test   %edi,%edi
4078f0:	0f 85 83 00 00 00    	jne    0x407979
4078f6:	e8 5e d2 ff ff       	call   0x404b59
4078fb:	39 7d e0             	cmp    %edi,-0x20(%ebp)
4078fe:	74 68                	je     0x407968
407900:	c7 00 0c 00 00 00    	movl   $0xc,(%eax)
407906:	eb 71                	jmp    0x407979
407908:	85 f6                	test   %esi,%esi
40790a:	75 01                	jne    0x40790d
40790c:	46                   	inc    %esi
40790d:	56                   	push   %esi
40790e:	53                   	push   %ebx
40790f:	6a 00                	push   $0x0
407911:	ff 35 dc cd 45 00    	push   0x45cddc
407917:	ff 15 0c 11 40 00    	call   *0x40110c
40791d:	8b f8                	mov    %eax,%edi
40791f:	85 ff                	test   %edi,%edi
407921:	75 56                	jne    0x407979
407923:	39 05 88 d0 45 00    	cmp    %eax,0x45d088
407929:	74 34                	je     0x40795f
40792b:	56                   	push   %esi
40792c:	e8 6a da ff ff       	call   0x40539b
407931:	59                   	pop    %ecx
407932:	85 c0                	test   %eax,%eax