4804cd:	8b 30                	mov    (%eax),%esi
4804cf:	8b ce                	mov    %esi,%ecx
4804d1:	e8 c1 94 f8 ff       	call   0x409997
4804d6:	8b 46 08             	mov    0x8(%esi),%eax
4804d9:	83 ec 10             	sub    $0x10,%esp
4804dc:	8b cc                	mov    %esp,%ecx
4804de:	ff 30                	push   (%eax)
4804e0:	e8 5c 7a f8 ff       	call   0x407f41
4804e5:	8d 44 24 60          	lea    0x60(%esp),%eax
4804e9:	50                   	push   %eax
4804ea:	8d 44 24 44          	lea    0x44(%esp),%eax
4804ee:	50                   	push   %eax
4804ef:	8d 44 24 58          	lea    0x58(%esp),%eax
4804f3:	50                   	push   %eax
4804f4:	e8 4e 0e 00 00       	call   0x481347
4804f9:	8b 44 24 30          	mov    0x30(%esp),%eax
4804fd:	83 ec 10             	sub    $0x10,%esp
480500:	8b cc                	mov    %esp,%ecx
480502:	89 01                	mov    %eax,(%ecx)
480504:	8b 44 24 44          	mov    0x44(%esp),%eax
480508:	89 41 04             	mov    %eax,0x4(%ecx)
48050b:	8b 44 24 48          	mov    0x48(%esp),%eax
48050f:	89 41 08             	mov    %eax,0x8(%ecx)
480512:	8b 44 24 4c          	mov    0x4c(%esp),%eax
480516:	89 41 0c             	mov    %eax,0xc(%ecx)
480519:	ff 00                	incl   (%eax)
48051b:	8d 44 24 2c          	lea    0x2c(%esp),%eax
48051f:	50                   	push   %eax
480520:	8d 44 24 2c          	lea    0x2c(%esp),%eax
480524:	50                   	push   %eax
480525:	e8 7b 0b 00 00       	call   0x4810a5
48052a:	84 c0                	test   %al,%al
48052c:	75 06                	jne    0x480534
48052e:	6a 00                	push   $0x0
480530:	6a 02                	push   $0x2
480532:	eb 22                	jmp    0x480556
480534:	83 7c 24 44 00       	cmpl   $0x0,0x44(%esp)
480539:	74 32                	je     0x48056d
48053b:	8d 44 24 10          	lea    0x10(%esp),%eax
48053f:	50                   	push   %eax
480540:	ff 74 24 1c          	push   0x1c(%esp)
480544:	ff 74 24 48          	push   0x48(%esp)
480548:	ff 15 24 f0 48 00    	call   *0x48f024
48054e:	85 c0                	test   %eax,%eax
480550:	74 15                	je     0x480567
480552:	6a 00                	push   $0x0
480554:	6a 03                	push   $0x3
480556:	8b 07                	mov    (%edi),%eax
480558:	8b 48 04             	mov    0x4(%eax),%ecx
48055b:	03 cf                	add    %edi,%ecx
48055d:	e8 41 65 fd ff       	call   0x456aa3
480562:	e9 bf 00 00 00       	jmp    0x480626
480567:	8b 4c 24 10          	mov    0x10(%esp),%ecx
48056b:	eb 04                	jmp    0x480571
48056d:	8b 4c 24 18          	mov    0x18(%esp),%ecx
480571:	8d 44 24 14          	lea    0x14(%esp),%eax
480575:	33 f6                	xor    %esi,%esi
480577:	50                   	push   %eax
480578:	8b 44 24 20          	mov    0x20(%esp),%eax
48057c:	0d 19 00 02 00       	or     $0x20019,%eax
480581:	50                   	push   %eax
480582:	56                   	push   %esi
480583:	ff 74 24 5c          	push   0x5c(%esp)
480587:	51                   	push   %ecx
480588:	ff 15 18 f0 48 00    	call   *0x48f018
48058e:	56                   	push   %esi
48058f:	85 c0                	test   %eax,%eax
480591:	74 20                	je     0x4805b3
480593:	8b 07                	mov    (%edi),%eax
480595:	6a 01                	push   $0x1
480597:	8b 48 04             	mov    0x4(%eax),%ecx
48059a:	03 cf                	add    %edi,%ecx
48059c:	e8 02 65 fd ff       	call   0x456aa3
4805a1:	39 74 24 10          	cmp    %esi,0x10(%esp)
4805a5:	74 7f                	je     0x480626
4805a7:	ff 74 24 10          	push   0x10(%esp)
4805ab:	ff 15 1c f0 48 00    	call   *0x48f01c
4805b1:	eb 73                	jmp    0x480626
4805b3:	8b 43 04             	mov    0x4(%ebx),%eax
4805b6:	8d 4c 24 28          	lea    0x28(%esp),%ecx
4805ba:	56                   	push   %esi
4805bb:	51                   	push   %ecx
4805bc:	56                   	push   %esi
4805bd:	8d 4c 24 30          	lea    0x30(%esp),%ecx
4805c1:	51                   	push   %ecx
4805c2:	ff 74 24 3c          	push   0x3c(%esp)
4805c6:	8b 48 04             	mov    0x4(%eax),%ecx
4805c9:	e8 ce 96 f8 ff       	call   0x409c9c
4805ce:	48                   	dec    %eax
4805cf:	50                   	push   %eax
4805d0:	ff 74 24 30          	push   0x30(%esp)
4805d4:	ff 15 04 f0 48 00    	call   *0x48f004
4805da:	85 c0                	test   %eax,%eax
4805dc:	74 11                	je     0x4805ef
4805de:	8b 07                	mov    (%edi),%eax
4805e0:	56                   	push   %esi
4805e1:	6a ff                	push   $0xffffffff
4805e3:	8b 48 04             	mov    0x4(%eax),%ecx
4805e6:	03 cf                	add    %edi,%ecx
4805e8:	e8 b6 64 fd ff       	call   0x456aa3
4805ed:	eb 1e                	jmp    0x48060d
4805ef:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4805f2:	8d 44 24 28          	lea    0x28(%esp),%eax
4805f6:	50                   	push   %eax
4805f7:	e8 3c 71 fe ff       	call   0x467738
4805fc:	8b 07                	mov    (%edi),%eax
4805fe:	56                   	push   %esi
4805ff:	ff 74 24 28          	push   0x28(%esp)
480603:	8b 48 04             	mov    0x4(%eax),%ecx
480606:	03 cf                	add    %edi,%ecx
480608:	e8 54 f9 f9 ff       	call   0x41ff61
48060d:	ff 74 24 14          	push   0x14(%esp)
480611:	8b 35 1c f0 48 00    	mov    0x48f01c,%esi
480617:	ff d6                	call   *%esi
480619:	83 7c 24 10 00       	cmpl   $0x0,0x10(%esp)
48061e:	74 06                	je     0x480626
480620:	ff 74 24 10          	push   0x10(%esp)
480624:	ff d6                	call   *%esi
480626:	8d 4c 24 50          	lea    0x50(%esp),%ecx
48062a:	e8 35 54 f8 ff       	call   0x405a64
48062f:	8d 4c 24 30          	lea    0x30(%esp),%ecx
480633:	e8 2c 54 f8 ff       	call   0x405a64
480638:	8d 4c 24 40          	lea    0x40(%esp),%ecx
48063c:	e8 23 54 f8 ff       	call   0x405a64
480641:	8b 44 24 2c          	mov    0x2c(%esp),%eax
480645:	ff 08                	decl   (%eax)
480647:	75 11                	jne    0x48065a
480649:	50                   	push   %eax
48064a:	e8 1d 0a fa ff       	call   0x42106c
48064f:	59                   	pop    %ecx
480650:	ff 74 24 28          	push   0x28(%esp)
480654:	e8 13 0a fa ff       	call   0x42106c
480659:	59                   	pop    %ecx
48065a:	5f                   	pop    %edi
48065b:	5e                   	pop    %esi
48065c:	33 c0                	xor    %eax,%eax
48065e:	5b                   	pop    %ebx
48065f:	8b e5                	mov    %ebp,%esp
480661:	5d                   	pop    %ebp
480662:	c2 08 00             	ret    $0x8
480665:	55                   	push   %ebp
480666:	8b ec                	mov    %esp,%ebp
480668:	83 e4 f8             	and    $0xfffffff8,%esp
48066b:	83 ec 4c             	sub    $0x4c,%esp
48066e:	53                   	push   %ebx
48066f:	56                   	push   %esi
480670:	57                   	push   %edi
480671:	8b 7d 0c             	mov    0xc(%ebp),%edi
480674:	8b d9                	mov    %ecx,%ebx
480676:	68 10 f9 48 00       	push   $0x48f910
48067b:	8b cf                	mov    %edi,%ecx
48067d:	e8 76 95 f8 ff       	call   0x409bf8
480682:	8d 4c 24 38          	lea    0x38(%esp),%ecx
480686:	e8 3c 71 f8 ff       	call   0x4077c7
48068b:	8d 4c 24 28          	lea    0x28(%esp),%ecx
48068f:	e8 33 71 f8 ff       	call   0x4077c7
480694:	8d 4c 24 48          	lea    0x48(%esp),%ecx
480698:	e8 2a 71 f8 ff       	call   0x4077c7
48069d:	8b 45 08             	mov    0x8(%ebp),%eax
4806a0:	8b 40 04             	mov    0x4(%eax),%eax
4806a3:	8b 30                	mov    (%eax),%esi
4806a5:	8b ce                	mov    %esi,%ecx
4806a7:	e8 eb 92 f8 ff       	call   0x409997
4806ac:	8b 4e 08             	mov    0x8(%esi),%ecx
4806af:	83 ec 10             	sub    $0x10,%esp
4806b2:	8b d4                	mov    %esp,%edx
4806b4:	8b 01                	mov    (%ecx),%eax
4806b6:	89 02                	mov    %eax,(%edx)
4806b8:	8b 41 04             	mov    0x4(%ecx),%eax
4806bb:	89 42 04             	mov    %eax,0x4(%edx)
4806be:	8b 41 08             	mov    0x8(%ecx),%eax
4806c1:	89 42 08             	mov    %eax,0x8(%edx)
4806c4:	8b 41 0c             	mov    0xc(%ecx),%eax
4806c7:	89 42 0c             	mov    %eax,0xc(%edx)
4806ca:	ff 00                	incl   (%eax)
4806cc:	8d 44 24 58          	lea    0x58(%esp),%eax
4806d0:	50                   	push   %eax
4806d1:	8d 44 24 3c          	lea    0x3c(%esp),%eax
4806d5:	50                   	push   %eax
4806d6:	8d 44 24 50          	lea    0x50(%esp),%eax
4806da:	50                   	push   %eax
4806db:	e8 67 0c 00 00       	call   0x481347
4806e0:	8b 44 24 28          	mov    0x28(%esp),%eax
4806e4:	83 ec 10             	sub    $0x10,%esp
4806e7:	8b cc                	mov    %esp,%ecx
4806e9:	89 01                	mov    %eax,(%ecx)
4806eb:	8b 44 24 3c          	mov    0x3c(%esp),%eax
4806ef:	89 41 04             	mov    %eax,0x4(%ecx)
4806f2:	8b 44 24 40          	mov    0x40(%esp),%eax
4806f6:	89 41 08             	mov    %eax,0x8(%ecx)
4806f9:	8b 44 24 44          	mov    0x44(%esp),%eax
4806fd:	89 41 0c             	mov    %eax,0xc(%ecx)
480700:	ff 00                	incl   (%eax)
480702:	8d 44 24 30          	lea    0x30(%esp),%eax
480706:	50                   	push   %eax
480707:	8d 44 24 2c          	lea    0x2c(%esp),%eax
48070b:	50                   	push   %eax
48070c:	e8 94 09 00 00       	call   0x4810a5
480711:	84 c0                	test   %al,%al
480713:	75 09                	jne    0x48071e
480715:	6a 00                	push   $0x0
480717:	6a 02                	push   $0x2
480719:	e9 80 00 00 00       	jmp    0x48079e
48071e:	33 f6                	xor    %esi,%esi
480720:	89 74 24 14          	mov    %esi,0x14(%esp)
480724:	39 74 24 3c          	cmp    %esi,0x3c(%esp)
480728:	74 30                	je     0x48075a
48072a:	8d 44 24 14          	lea    0x14(%esp),%eax
48072e:	50                   	push   %eax
48072f:	ff 74 24 1c          	push   0x1c(%esp)
480733:	ff 74 24 40          	push   0x40(%esp)
480737:	ff 15 24 f0 48 00    	call   *0x48f024
48073d:	85 c0                	test   %eax,%eax
48073f:	74 13                	je     0x480754
480741:	56                   	push   %esi
480742:	50                   	push   %eax
480743:	8b 03                	mov    (%ebx),%eax
480745:	8b 48 04             	mov    0x4(%eax),%ecx
480748:	03 cb                	add    %ebx,%ecx
48074a:	e8 12 f8 f9 ff       	call   0x41ff61
48074f:	56                   	push   %esi
480750:	6a 03                	push   $0x3
480752:	eb 4a                	jmp    0x48079e
480754:	8b 4c 24 14          	mov    0x14(%esp),%ecx
480758:	eb 04                	jmp    0x48075e
48075a:	8b 4c 24 18          	mov    0x18(%esp),%ecx
48075e:	8d 44 24 10          	lea    0x10(%esp),%eax
480762:	50                   	push   %eax
480763:	8b 44 24 24          	mov    0x24(%esp),%eax
480767:	0d 19 00 02 00       	or     $0x20019,%eax
48076c:	50                   	push   %eax
48076d:	56                   	push   %esi
48076e:	ff 74 24 54          	push   0x54(%esp)
480772:	51                   	push   %ecx
480773:	ff 15 18 f0 48 00    	call   *0x48f018
480779:	85 c0                	test   %eax,%eax
48077b:	74 32                	je     0x4807af
48077d:	56                   	push   %esi
48077e:	50                   	push   %eax
48077f:	8b 03                	mov    (%ebx),%eax
480781:	8b 48 04             	mov    0x4(%eax),%ecx
480784:	03 cb                	add    %ebx,%ecx
480786:	e8 d6 f7 f9 ff       	call   0x41ff61
48078b:	39 74 24 14          	cmp    %esi,0x14(%esp)
48078f:	74 0a                	je     0x48079b
480791:	ff 74 24 14          	push   0x14(%esp)
480795:	ff 15 1c f0 48 00    	call   *0x48f01c
48079b:	56                   	push   %esi
48079c:	6a 01                	push   $0x1
48079e:	8b 03                	mov    (%ebx),%eax
4807a0:	8b 48 04             	mov    0x4(%eax),%ecx
4807a3:	03 cb                	add    %ebx,%ecx
4807a5:	e8 f9 62 fd ff       	call   0x456aa3
4807aa:	e9 0d 03 00 00       	jmp    0x480abc
4807af:	8b 45 08             	mov    0x8(%ebp),%eax
4807b2:	8b 40 04             	mov    0x4(%eax),%eax
4807b5:	8b 70 04             	mov    0x4(%eax),%esi
4807b8:	8b ce                	mov    %esi,%ecx
4807ba:	e8 d8 91 f8 ff       	call   0x409997
4807bf:	8b 46 08             	mov    0x8(%esi),%eax
4807c2:	8d 4c 24 0c          	lea    0xc(%esp),%ecx
4807c6:	51                   	push   %ecx
4807c7:	33 f6                	xor    %esi,%esi
4807c9:	8d 4c 24 20          	lea    0x20(%esp),%ecx
4807cd:	56                   	push   %esi
4807ce:	51                   	push   %ecx
4807cf:	56                   	push   %esi
4807d0:	ff 30                	push   (%eax)
4807d2:	ff 74 24 24          	push   0x24(%esp)
4807d6:	ff 15 20 f0 48 00    	call   *0x48f020
4807dc:	56                   	push   %esi
4807dd:	85 c0                	test   %eax,%eax
4807df:	74 15                	je     0x4807f6
4807e1:	50                   	push   %eax
4807e2:	8b 03                	mov    (%ebx),%eax
4807e4:	8b 48 04             	mov    0x4(%eax),%ecx
4807e7:	03 cb                	add    %ebx,%ecx
4807e9:	e8 73 f7 f9 ff       	call   0x41ff61
4807ee:	56                   	push   %esi
4807ef:	6a ff                	push   $0xffffffff
4807f1:	e9 a1 02 00 00       	jmp    0x480a97
4807f6:	8b 03                	mov    (%ebx),%eax
4807f8:	ff 74 24 20          	push   0x20(%esp)
4807fc:	8b 48 04             	mov    0x4(%eax),%ecx
4807ff:	03 cb                	add    %ebx,%ecx
480801:	e8 5b f7 f9 ff       	call   0x41ff61
480806:	8b 44 24 1c          	mov    0x1c(%esp),%eax
48080a:	85 c0                	test   %eax,%eax
48080c:	0f 84 82 02 00 00    	je     0x480a94
480812:	6a 02                	push   $0x2
480814:	5a                   	pop    %edx
480815:	3b c2                	cmp    %edx,%eax
480817:	0f 86 e7 01 00 00    	jbe    0x480a04
48081d:	83 f8 03             	cmp    $0x3,%eax
480820:	0f 84 6b 01 00 00    	je     0x480991
480826:	6a 04                	push   $0x4
480828:	59                   	pop    %ecx
480829:	3b c1                	cmp    %ecx,%eax
48082b:	0f 84 14 01 00 00    	je     0x480945
480831:	83 f8 07             	cmp    $0x7,%eax
480834:	74 60                	je     0x480896
480836:	83 f8 0b             	cmp    $0xb,%eax
480839:	0f 85 55 02 00 00    	jne    0x480a94
48083f:	8b 45 08             	mov    0x8(%ebp),%eax
480842:	c7 44 24 0c 08 00 00 	movl   $0x8,0xc(%esp)
480849:	00
48084a:	8b 40 04             	mov    0x4(%eax),%eax
48084d:	8b 70 04             	mov    0x4(%eax),%esi
480850:	8b ce                	mov    %esi,%ecx
480852:	e8 40 91 f8 ff       	call   0x409997
480857:	8d 44 24 0c          	lea    0xc(%esp),%eax
48085b:	33 ff                	xor    %edi,%edi
48085d:	50                   	push   %eax
48085e:	8d 44 24 24          	lea    0x24(%esp),%eax
480862:	50                   	push   %eax
480863:	8b 46 08             	mov    0x8(%esi),%eax
480866:	57                   	push   %edi
480867:	57                   	push   %edi
480868:	ff 30                	push   (%eax)
48086a:	ff 74 24 24          	push   0x24(%esp)
48086e:	ff 15 20 f0 48 00    	call   *0x48f020
480874:	8b 5d 0c             	mov    0xc(%ebp),%ebx
480877:	8b cb                	mov    %ebx,%ecx
480879:	8b 74 24 20          	mov    0x20(%esp),%esi
48087d:	8b 7c 24 24          	mov    0x24(%esp),%edi
480881:	e8 9a 91 f8 ff       	call   0x409a20
480886:	6a 02                	push   $0x2
480888:	58                   	pop    %eax
480889:	89 43 0c             	mov    %eax,0xc(%ebx)
48088c:	89 33                	mov    %esi,(%ebx)
48088e:	89 7b 04             	mov    %edi,0x4(%ebx)
480891:	e9 0d 02 00 00       	jmp    0x480aa3
480896:	8b 44 24 0c          	mov    0xc(%esp),%eax
48089a:	33 c9                	xor    %ecx,%ecx
48089c:	d1 e8                	shr    $1,%eax
48089e:	03 c2                	add    %edx,%eax
4808a0:	f7 e2                	mul    %edx
4808a2:	0f 90 c1             	seto   %cl
4808a5:	f7 d9                	neg    %ecx
4808a7:	0b c8                	or     %eax,%ecx
4808a9:	51                   	push   %ecx
4808aa:	e8 47 07 fa ff       	call   0x420ff6
4808af:	89 44 24 24          	mov    %eax,0x24(%esp)
4808b3:	8b 45 08             	mov    0x8(%ebp),%eax
4808b6:	59                   	pop    %ecx
4808b7:	8b 48 04             	mov    0x4(%eax),%ecx
4808ba:	8b 71 04             	mov    0x4(%ecx),%esi
4808bd:	8b ce                	mov    %esi,%ecx
4808bf:	e8 d3 90 f8 ff       	call   0x409997
4808c4:	8b 4e 08             	mov    0x8(%esi),%ecx