4073f7:	56                   	push   %esi
4073f8:	8b 75 08             	mov    0x8(%ebp),%esi
4073fb:	57                   	push   %edi
4073fc:	8b f9                	mov    %ecx,%edi
4073fe:	88 47 02             	mov    %al,0x2(%edi)
407401:	83 7e 04 00          	cmpl   $0x0,0x4(%esi)
407405:	0f 84 40 7a 03 00    	je     0x43ee4b
40740b:	8b d6                	mov    %esi,%edx
40740d:	8b ce                	mov    %esi,%ecx
40740f:	e8 9a d4 ff ff       	call   0x4048ae
407414:	8b d6                	mov    %esi,%edx
407416:	8b ce                	mov    %esi,%ecx
407418:	e8 b8 95 01 00       	call   0x4209d5
40741d:	ff 75 0c             	push   0xc(%ebp)
407420:	51                   	push   %ecx
407421:	56                   	push   %esi
407422:	8b cf                	mov    %edi,%ecx
407424:	e8 42 fd ff ff       	call   0x40716b
407429:	59                   	pop    %ecx
40742a:	50                   	push   %eax
40742b:	56                   	push   %esi
40742c:	8b cf                	mov    %edi,%ecx
40742e:	e8 97 f5 ff ff       	call   0x4069ca
407433:	5f                   	pop    %edi
407434:	5e                   	pop    %esi
407435:	8b e5                	mov    %ebp,%esp
407437:	5d                   	pop    %ebp
407438:	c2 10 00             	ret    $0x10
40743b:	53                   	push   %ebx
40743c:	57                   	push   %edi
40743d:	8b f9                	mov    %ecx,%edi
40743f:	8b 5f 08             	mov    0x8(%edi),%ebx
407442:	85 db                	test   %ebx,%ebx
407444:	74 1a                	je     0x407460
407446:	56                   	push   %esi
407447:	ff 33                	push   (%ebx)
407449:	8b 73 0c             	mov    0xc(%ebx),%esi
40744c:	e8 1b 9c 01 00       	call   0x42106c
407451:	53                   	push   %ebx
407452:	e8 15 9c 01 00       	call   0x42106c
407457:	8b de                	mov    %esi,%ebx
407459:	59                   	pop    %ecx
40745a:	59                   	pop    %ecx
40745b:	85 f6                	test   %esi,%esi
40745d:	75 e8                	jne    0x407447
40745f:	5e                   	pop    %esi
407460:	8b 4f 4c             	mov    0x4c(%edi),%ecx
407463:	33 db                	xor    %ebx,%ebx
407465:	85 c9                	test   %ecx,%ecx
407467:	74 0d                	je     0x407476
407469:	8d 41 fc             	lea    -0x4(%ecx),%eax
40746c:	39 18                	cmp    %ebx,(%eax)
40746e:	74 44                	je     0x4074b4
407470:	8b 01                	mov    (%ecx),%eax
407472:	6a 03                	push   $0x3
407474:	ff 10                	call   *(%eax)
407476:	ff 77 14             	push   0x14(%edi)
407479:	e8 ee 9b 01 00       	call   0x42106c
40747e:	59                   	pop    %ecx
40747f:	8d 4f 18             	lea    0x18(%edi),%ecx
407482:	89 5f 08             	mov    %ebx,0x8(%edi)
407485:	89 5f 0c             	mov    %ebx,0xc(%edi)
407488:	89 5f 10             	mov    %ebx,0x10(%edi)
40748b:	89 5f 14             	mov    %ebx,0x14(%edi)
40748e:	89 5f 4c             	mov    %ebx,0x4c(%edi)
407491:	66 89 1f             	mov    %bx,(%edi)
407494:	e8 87 ca ff ff       	call   0x403f20
407499:	8d 4f 28             	lea    0x28(%edi),%ecx
40749c:	e8 b3 ec 00 00       	call   0x416154
4074a1:	39 5f 58             	cmp    %ebx,0x58(%edi)
4074a4:	0f 87 26 7a 03 00    	ja     0x43eed0
4074aa:	8d 4f 50             	lea    0x50(%edi),%ecx
4074ad:	5f                   	pop    %edi
4074ae:	5b                   	pop    %ebx
4074af:	e9 9f c0 ff ff       	jmp    0x403553
4074b4:	50                   	push   %eax
4074b5:	e8 b2 9b 01 00       	call   0x42106c
4074ba:	59                   	pop    %ecx
4074bb:	eb b9                	jmp    0x407476
4074bd:	55                   	push   %ebp
4074be:	8b ec                	mov    %esp,%ebp
4074c0:	51                   	push   %ecx
4074c1:	53                   	push   %ebx
4074c2:	8b 5d 08             	mov    0x8(%ebp),%ebx
4074c5:	56                   	push   %esi
4074c6:	8b f1                	mov    %ecx,%esi
4074c8:	3b f3                	cmp    %ebx,%esi
4074ca:	0f 84 af 00 00 00    	je     0x40757f
4074d0:	57                   	push   %edi
4074d1:	e8 0a 01 00 00       	call   0x4075e0
4074d6:	8b 43 08             	mov    0x8(%ebx),%eax
4074d9:	39 46 0c             	cmp    %eax,0xc(%esi)
4074dc:	73 34                	jae    0x407512
4074de:	6a 08                	push   $0x8
4074e0:	5a                   	pop    %edx
4074e1:	3b c2                	cmp    %edx,%eax
4074e3:	0f 83 d4 00 00 00    	jae    0x4075bd
4074e9:	89 56 0c             	mov    %edx,0xc(%esi)
4074ec:	33 c9                	xor    %ecx,%ecx
4074ee:	8b c2                	mov    %edx,%eax
4074f0:	6a 04                	push   $0x4
4074f2:	5a                   	pop    %edx
4074f3:	f7 e2                	mul    %edx
4074f5:	0f 90 c1             	seto   %cl
4074f8:	f7 d9                	neg    %ecx
4074fa:	0b c8                	or     %eax,%ecx
4074fc:	51                   	push   %ecx
4074fd:	e8 f4 9a 01 00       	call   0x420ff6
407502:	83 7e 04 00          	cmpl   $0x0,0x4(%esi)
407506:	8b f8                	mov    %eax,%edi
407508:	59                   	pop    %ecx
407509:	0f 85 de 79 03 00    	jne    0x43eeed
40750f:	89 7e 04             	mov    %edi,0x4(%esi)
407512:	8b 43 08             	mov    0x8(%ebx),%eax
407515:	33 db                	xor    %ebx,%ebx
407517:	89 46 08             	mov    %eax,0x8(%esi)
40751a:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40751d:	85 c0                	test   %eax,%eax
40751f:	74 5d                	je     0x40757e
407521:	6a 0c                	push   $0xc
407523:	e8 ce 9a 01 00       	call   0x420ff6
407528:	8b f8                	mov    %eax,%edi
40752a:	59                   	pop    %ecx
40752b:	85 ff                	test   %edi,%edi
40752d:	0f 84 9b 00 00 00    	je     0x4075ce
407533:	8b 45 08             	mov    0x8(%ebp),%eax
407536:	8b 48 04             	mov    0x4(%eax),%ecx
407539:	8b 1c 99             	mov    (%ecx,%ebx,4),%ebx
40753c:	66 8b 4b 08          	mov    0x8(%ebx),%cx
407540:	66 89 4f 08          	mov    %cx,0x8(%edi)
407544:	0f b7 47 08          	movzwl 0x8(%edi),%eax
407548:	66 8b 4b 0a          	mov    0xa(%ebx),%cx
40754c:	66 89 4f 0a          	mov    %cx,0xa(%edi)
407550:	66 83 f8 3f          	cmp    $0x3f,%ax
407554:	7e 33                	jle    0x407589
407556:	6a 10                	push   $0x10
407558:	59                   	pop    %ecx
407559:	66 3b c1             	cmp    %cx,%ax
40755c:	0f 84 99 79 03 00    	je     0x43eefb
407562:	66 83 f8 20          	cmp    $0x20,%ax
407566:	74 5c                	je     0x4075c4
407568:	8b 03                	mov    (%ebx),%eax
40756a:	89 07                	mov    %eax,(%edi)
40756c:	8b 5d fc             	mov    -0x4(%ebp),%ebx
40756f:	8b 46 04             	mov    0x4(%esi),%eax
407572:	89 3c 98             	mov    %edi,(%eax,%ebx,4)
407575:	43                   	inc    %ebx
407576:	89 5d fc             	mov    %ebx,-0x4(%ebp)
407579:	3b 5e 08             	cmp    0x8(%esi),%ebx
40757c:	72 a3                	jb     0x407521
40757e:	5f                   	pop    %edi
40757f:	8b c6                	mov    %esi,%eax
407581:	5e                   	pop    %esi
407582:	5b                   	pop    %ebx
407583:	8b e5                	mov    %ebp,%esp
407585:	5d                   	pop    %ebp
407586:	c2 04 00             	ret    $0x4
407589:	66 83 f8 30          	cmp    $0x30,%ax
40758d:	7c c7                	jl     0x407556
40758f:	6a 10                	push   $0x10
407591:	58                   	pop    %eax
407592:	50                   	push   %eax
407593:	e8 5e 9a 01 00       	call   0x420ff6
407598:	8b d0                	mov    %eax,%edx
40759a:	59                   	pop    %ecx
40759b:	85 d2                	test   %edx,%edx
40759d:	74 2b                	je     0x4075ca
40759f:	8b 03                	mov    (%ebx),%eax
4075a1:	8b 08                	mov    (%eax),%ecx
4075a3:	89 0a                	mov    %ecx,(%edx)
4075a5:	8b 48 04             	mov    0x4(%eax),%ecx
4075a8:	89 4a 04             	mov    %ecx,0x4(%edx)
4075ab:	8b 48 08             	mov    0x8(%eax),%ecx
4075ae:	89 4a 08             	mov    %ecx,0x8(%edx)
4075b1:	8b 40 0c             	mov    0xc(%eax),%eax
4075b4:	89 42 0c             	mov    %eax,0xc(%edx)
4075b7:	ff 00                	incl   (%eax)
4075b9:	89 17                	mov    %edx,(%edi)
4075bb:	eb af                	jmp    0x40756c
4075bd:	8b d0                	mov    %eax,%edx
4075bf:	e9 25 ff ff ff       	jmp    0x4074e9
4075c4:	dd 03                	fldl   (%ebx)
4075c6:	dd 1f                	fstpl  (%edi)
4075c8:	eb a2                	jmp    0x40756c
4075ca:	33 d2                	xor    %edx,%edx
4075cc:	eb eb                	jmp    0x4075b9
4075ce:	33 ff                	xor    %edi,%edi
4075d0:	eb 9d                	jmp    0x40756f
4075d2:	cc                   	int3
4075d3:	cc                   	int3
4075d4:	cc                   	int3
4075d5:	cc                   	int3
4075d6:	cc                   	int3
4075d7:	cc                   	int3
4075d8:	cc                   	int3
4075d9:	cc                   	int3
4075da:	cc                   	int3
4075db:	cc                   	int3
4075dc:	cc                   	int3
4075dd:	cc                   	int3
4075de:	cc                   	int3
4075df:	cc                   	int3
4075e0:	55                   	push   %ebp
4075e1:	8b ec                	mov    %esp,%ebp
4075e3:	51                   	push   %ecx
4075e4:	53                   	push   %ebx
4075e5:	8b d9                	mov    %ecx,%ebx
4075e7:	56                   	push   %esi
4075e8:	33 f6                	xor    %esi,%esi
4075ea:	39 73 08             	cmp    %esi,0x8(%ebx)
4075ed:	76 7b                	jbe    0x40766a
4075ef:	57                   	push   %edi
4075f0:	8b 43 04             	mov    0x4(%ebx),%eax
4075f3:	8b 3c b0             	mov    (%eax,%esi,4),%edi
4075f6:	85 ff                	test   %edi,%edi
4075f8:	74 13                	je     0x40760d
4075fa:	0f b7 47 08          	movzwl 0x8(%edi),%eax
4075fe:	66 83 f8 3f          	cmp    $0x3f,%ax
407602:	7e 27                	jle    0x40762b
407604:	57                   	push   %edi
407605:	e8 62 9a 01 00       	call   0x42106c
40760a:	83 c4 04             	add    $0x4,%esp
40760d:	8b 43 04             	mov    0x4(%ebx),%eax
407610:	c7 04 b0 00 00 00 00 	movl   $0x0,(%eax,%esi,4)
407617:	46                   	inc    %esi
407618:	3b 73 08             	cmp    0x8(%ebx),%esi
40761b:	72 d3                	jb     0x4075f0
40761d:	c7 43 08 00 00 00 00 	movl   $0x0,0x8(%ebx)
407624:	5f                   	pop    %edi
407625:	5e                   	pop    %esi
407626:	5b                   	pop    %ebx
407627:	8b e5                	mov    %ebp,%esp
407629:	5d                   	pop    %ebp
40762a:	c3                   	ret
40762b:	66 83 f8 30          	cmp    $0x30,%ax
40762f:	7c d3                	jl     0x407604
407631:	8b 0f                	mov    (%edi),%ecx
407633:	89 4d fc             	mov    %ecx,-0x4(%ebp)
407636:	85 c9                	test   %ecx,%ecx
407638:	74 ca                	je     0x407604
40763a:	8b 41 0c             	mov    0xc(%ecx),%eax
40763d:	ff 08                	decl   (%eax)
40763f:	8b 41 0c             	mov    0xc(%ecx),%eax
407642:	83 38 00             	cmpl   $0x0,(%eax)
407645:	75 18                	jne    0x40765f
407647:	ff 31                	push   (%ecx)
407649:	e8 1e 9a 01 00       	call   0x42106c
40764e:	8b 45 fc             	mov    -0x4(%ebp),%eax
407651:	ff 70 0c             	push   0xc(%eax)
407654:	e8 13 9a 01 00       	call   0x42106c
407659:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40765c:	83 c4 08             	add    $0x8,%esp
40765f:	51                   	push   %ecx
407660:	e8 07 9a 01 00       	call   0x42106c
407665:	83 c4 04             	add    $0x4,%esp
407668:	eb 9a                	jmp    0x407604
40766a:	89 73 08             	mov    %esi,0x8(%ebx)
40766d:	eb b6                	jmp    0x407625
40766f:	55                   	push   %ebp
407670:	8b ec                	mov    %esp,%ebp
407672:	56                   	push   %esi
407673:	57                   	push   %edi
407674:	8b f9                	mov    %ecx,%edi
407676:	8b 47 0c             	mov    0xc(%edi),%eax
407679:	39 47 08             	cmp    %eax,0x8(%edi)
40767c:	0f 84 8d 00 00 00    	je     0x40770f
407682:	6a 0c                	push   $0xc
407684:	e8 6d 99 01 00       	call   0x420ff6
407689:	8b f0                	mov    %eax,%esi
40768b:	59                   	pop    %ecx
40768c:	85 f6                	test   %esi,%esi
40768e:	0f 84 db 00 00 00    	je     0x40776f
407694:	53                   	push   %ebx
407695:	8b 5d 08             	mov    0x8(%ebp),%ebx
407698:	66 8b 4b 08          	mov    0x8(%ebx),%cx
40769c:	66 89 4e 08          	mov    %cx,0x8(%esi)
4076a0:	0f b7 46 08          	movzwl 0x8(%esi),%eax
4076a4:	66 8b 4b 0a          	mov    0xa(%ebx),%cx
4076a8:	66 89 4e 0a          	mov    %cx,0xa(%esi)
4076ac:	66 83 f8 3f          	cmp    $0x3f,%ax
4076b0:	7e 2b                	jle    0x4076dd
4076b2:	66 83 f8 10          	cmp    $0x10,%ax
4076b6:	0f 84 4e 78 03 00    	je     0x43ef0a
4076bc:	66 83 f8 20          	cmp    $0x20,%ax
4076c0:	0f 84 9c 00 00 00    	je     0x407762
4076c6:	8b 03                	mov    (%ebx),%eax
4076c8:	89 06                	mov    %eax,(%esi)
4076ca:	5b                   	pop    %ebx
4076cb:	8b 4f 08             	mov    0x8(%edi),%ecx
4076ce:	8b 47 04             	mov    0x4(%edi),%eax
4076d1:	89 34 88             	mov    %esi,(%eax,%ecx,4)
4076d4:	ff 47 08             	incl   0x8(%edi)
4076d7:	5f                   	pop    %edi
4076d8:	5e                   	pop    %esi
4076d9:	5d                   	pop    %ebp
4076da:	c2 04 00             	ret    $0x4
4076dd:	66 83 f8 30          	cmp    $0x30,%ax
4076e1:	7c cf                	jl     0x4076b2
4076e3:	6a 10                	push   $0x10
4076e5:	e8 0c 99 01 00       	call   0x420ff6
4076ea:	8b d0                	mov    %eax,%edx
4076ec:	59                   	pop    %ecx
4076ed:	85 d2                	test   %edx,%edx
4076ef:	74 7a                	je     0x40776b
4076f1:	8b 03                	mov    (%ebx),%eax
4076f3:	8b 08                	mov    (%eax),%ecx
4076f5:	89 0a                	mov    %ecx,(%edx)
4076f7:	8b 48 04             	mov    0x4(%eax),%ecx
4076fa:	89 4a 04             	mov    %ecx,0x4(%edx)
4076fd:	8b 48 08             	mov    0x8(%eax),%ecx
407700:	89 4a 08             	mov    %ecx,0x8(%edx)
407703:	8b 40 0c             	mov    0xc(%eax),%eax
407706:	89 42 0c             	mov    %eax,0xc(%edx)
407709:	ff 00                	incl   (%eax)
40770b:	89 16                	mov    %edx,(%esi)
40770d:	eb bb                	jmp    0x4076ca
40770f:	8d 0c 00             	lea    (%eax,%eax,1),%ecx
407712:	6a 08                	push   $0x8
407714:	58                   	pop    %eax
407715:	3b c8                	cmp    %eax,%ecx
407717:	72 02                	jb     0x40771b
407719:	8b c1                	mov    %ecx,%eax
40771b:	33 c9                	xor    %ecx,%ecx
40771d:	89 47 0c             	mov    %eax,0xc(%edi)
407720:	6a 04                	push   $0x4
407722:	5a                   	pop    %edx
407723:	f7 e2                	mul    %edx
407725:	0f 90 c1             	seto   %cl
407728:	f7 d9                	neg    %ecx
40772a:	0b c8                	or     %eax,%ecx
40772c:	51                   	push   %ecx
40772d:	e8 c4 98 01 00       	call   0x420ff6
407732:	83 7f 04 00          	cmpl   $0x0,0x4(%edi)
407736:	8b f0                	mov    %eax,%esi
407738:	59                   	pop    %ecx
407739:	74 1f                	je     0x40775a
40773b:	8b 47 08             	mov    0x8(%edi),%eax
40773e:	85 c0                	test   %eax,%eax
407740:	74 18                	je     0x40775a
407742:	c1 e0 02             	shl    $0x2,%eax
407745:	50                   	push   %eax
407746:	ff 77 04             	push   0x4(%edi)
407749:	56                   	push   %esi
40774a:	e8 31 99 01 00       	call   0x421080
40774f:	ff 77 04             	push   0x4(%edi)
407752:	e8 15 99 01 00       	call   0x42106c
407757:	83 c4 10             	add    $0x10,%esp
40775a:	89 77 04             	mov    %esi,0x4(%edi)
40775d:	e9 20 ff ff ff       	jmp    0x407682
407762:	dd 03                	fldl   (%ebx)