7c7470:	57                   	push   %edi
7c7471:	c7 44 24 24 00 00 00 	movl   $0x0,0x24(%esp)
7c7478:	00
7c7479:	c7 44 24 28 00 00 00 	movl   $0x0,0x28(%esp)
7c7480:	00
7c7481:	89 54 24 18          	mov    %edx,0x18(%esp)
7c7485:	89 54 24 2c          	mov    %edx,0x2c(%esp)
7c7489:	89 74 24 14          	mov    %esi,0x14(%esp)
7c748d:	39 13                	cmp    %edx,(%ebx)
7c748f:	0f 84 fa 00 00 00    	je     0x7c758f
7c7495:	8b c3                	mov    %ebx,%eax
7c7497:	ff 30                	push   (%eax)
7c7499:	8d 44 24 1c          	lea    0x1c(%esp),%eax
7c749d:	50                   	push   %eax
7c749e:	e8 4d dc ff ff       	call   0x7c50f0
7c74a3:	83 c4 08             	add    $0x8,%esp
7c74a6:	8b 10                	mov    (%eax),%edx
7c74a8:	33 c0                	xor    %eax,%eax
7c74aa:	c7 44 24 44 07 00 00 	movl   $0x7,0x44(%esp)
7c74b1:	00
7c74b2:	c7 44 24 40 00 00 00 	movl   $0x0,0x40(%esp)
7c74b9:	00
7c74ba:	66 89 44 24 30       	mov    %ax,0x30(%esp)
7c74bf:	66 39 02             	cmp    %ax,(%edx)
7c74c2:	74 1b                	je     0x7c74df
7c74c4:	8b c2                	mov    %edx,%eax
7c74c6:	8d 78 02             	lea    0x2(%eax),%edi
7c74c9:	0f 1f 80 00 00 00 00 	nopl   0x0(%eax)
7c74d0:	66 8b 08             	mov    (%eax),%cx
7c74d3:	83 c0 02             	add    $0x2,%eax
7c74d6:	66 85 c9             	test   %cx,%cx
7c74d9:	75 f5                	jne    0x7c74d0
7c74db:	2b c7                	sub    %edi,%eax
7c74dd:	d1 f8                	sar    $1,%eax
7c74df:	50                   	push   %eax
7c74e0:	52                   	push   %edx
7c74e1:	8d 4c 24 38          	lea    0x38(%esp),%ecx
7c74e5:	e8 cd 3c c5 ff       	call   0x41b1b7
7c74ea:	8d 44 24 30          	lea    0x30(%esp),%eax
7c74ee:	50                   	push   %eax
7c74ef:	8d 4c 24 28          	lea    0x28(%esp),%ecx
7c74f3:	e8 d3 45 c6 ff       	call   0x42bacb
7c74f8:	8b 44 24 44          	mov    0x44(%esp),%eax
7c74fc:	83 f8 08             	cmp    $0x8,%eax
7c74ff:	72 4c                	jb     0x7c754d
7c7501:	8b 4c 24 30          	mov    0x30(%esp),%ecx
7c7505:	40                   	inc    %eax
7c7506:	3d ff ff ff 7f       	cmp    $0x7fffffff,%eax
7c750b:	0f 87 c6 03 00 00    	ja     0x7c78d7
7c7511:	03 c0                	add    %eax,%eax
7c7513:	3d 00 10 00 00       	cmp    $0x1000,%eax
7c7518:	72 2a                	jb     0x7c7544
7c751a:	f6 c1 1f             	test   $0x1f,%cl
7c751d:	0f 85 b4 03 00 00    	jne    0x7c78d7
7c7523:	8b 41 fc             	mov    -0x4(%ecx),%eax
7c7526:	3b c1                	cmp    %ecx,%eax
7c7528:	0f 83 a9 03 00 00    	jae    0x7c78d7
7c752e:	2b c8                	sub    %eax,%ecx
7c7530:	83 f9 04             	cmp    $0x4,%ecx
7c7533:	0f 82 9e 03 00 00    	jb     0x7c78d7
7c7539:	83 f9 23             	cmp    $0x23,%ecx
7c753c:	0f 87 95 03 00 00    	ja     0x7c78d7
7c7542:	8b c8                	mov    %eax,%ecx
7c7544:	51                   	push   %ecx
7c7545:	e8 45 a2 c3 ff       	call   0x40178f
7c754a:	83 c4 04             	add    $0x4,%esp
7c754d:	33 c0                	xor    %eax,%eax
7c754f:	c7 44 24 44 07 00 00 	movl   $0x7,0x44(%esp)
7c7556:	00
7c7557:	66 89 44 24 30       	mov    %ax,0x30(%esp)
7c755c:	8b 44 24 18          	mov    0x18(%esp),%eax
7c7560:	c7 44 24 40 00 00 00 	movl   $0x0,0x40(%esp)
7c7567:	00
7c7568:	85 c0                	test   %eax,%eax
7c756a:	74 09                	je     0x7c7575
7c756c:	50                   	push   %eax
7c756d:	e8 a0 70 c7 ff       	call   0x43e612
7c7572:	83 c4 04             	add    $0x4,%esp
7c7575:	46                   	inc    %esi
7c7576:	83 3c b3 00          	cmpl   $0x0,(%ebx,%esi,4)
7c757a:	89 74 24 14          	mov    %esi,0x14(%esp)
7c757e:	8d 04 b3             	lea    (%ebx,%esi,4),%eax
7c7581:	0f 85 10 ff ff ff    	jne    0x7c7497
7c7587:	8b 44 24 2c          	mov    0x2c(%esp),%eax
7c758b:	89 44 24 18          	mov    %eax,0x18(%esp)
7c758f:	33 db                	xor    %ebx,%ebx
7c7591:	8d 46 01             	lea    0x1(%esi),%eax
7c7594:	33 c9                	xor    %ecx,%ecx
7c7596:	89 5c 24 30          	mov    %ebx,0x30(%esp)
7c759a:	33 ff                	xor    %edi,%edi
7c759c:	89 4c 24 34          	mov    %ecx,0x34(%esp)
7c75a0:	89 7c 24 38          	mov    %edi,0x38(%esp)
7c75a4:	85 c0                	test   %eax,%eax
7c75a6:	74 22                	je     0x7c75ca
7c75a8:	3d ff ff ff 3f       	cmp    $0x3fffffff,%eax
7c75ad:	76 05                	jbe    0x7c75b4
7c75af:	e9 19 03 00 00       	jmp    0x7c78cd
7c75b4:	50                   	push   %eax
7c75b5:	8d 4c 24 34          	lea    0x34(%esp),%ecx
7c75b9:	e8 81 e7 c3 ff       	call   0x405d3f
7c75be:	8b 7c 24 38          	mov    0x38(%esp),%edi
7c75c2:	8b 4c 24 34          	mov    0x34(%esp),%ecx
7c75c6:	8b 5c 24 30          	mov    0x30(%esp),%ebx
7c75ca:	33 c0                	xor    %eax,%eax
7c75cc:	89 44 24 10          	mov    %eax,0x10(%esp)
7c75d0:	55                   	push   %ebp
7c75d1:	bd ff ff ff 3f       	mov    $0x3fffffff,%ebp
7c75d6:	85 f6                	test   %esi,%esi
7c75d8:	0f 8e 3c 01 00 00    	jle    0x7c771a
7c75de:	8b 54 24 28          	mov    0x28(%esp),%edx
7c75e2:	89 54 24 10          	mov    %edx,0x10(%esp)
7c75e6:	83 7a 14 08          	cmpl   $0x8,0x14(%edx)
7c75ea:	72 04                	jb     0x7c75f0
7c75ec:	8b 2a                	mov    (%edx),%ebp
7c75ee:	eb 02                	jmp    0x7c75f2
7c75f0:	8b ea                	mov    %edx,%ebp
7c75f2:	8d 74 24 24          	lea    0x24(%esp),%esi
7c75f6:	89 6c 24 24          	mov    %ebp,0x24(%esp)
7c75fa:	3b f1                	cmp    %ecx,%esi
7c75fc:	8b 74 24 18          	mov    0x18(%esp),%esi
7c7600:	0f 83 87 00 00 00    	jae    0x7c768d
7c7606:	8d 44 24 24          	lea    0x24(%esp),%eax
7c760a:	3b d8                	cmp    %eax,%ebx
7c760c:	8b 44 24 14          	mov    0x14(%esp),%eax
7c7610:	77 7b                	ja     0x7c768d
7c7612:	8d 6c 24 24          	lea    0x24(%esp),%ebp
7c7616:	2b eb                	sub    %ebx,%ebp
7c7618:	c1 fd 02             	sar    $0x2,%ebp
7c761b:	3b cf                	cmp    %edi,%ecx
7c761d:	75 5f                	jne    0x7c767e
7c761f:	8b c7                	mov    %edi,%eax
7c7621:	2b c1                	sub    %ecx,%eax
7c7623:	c1 f8 02             	sar    $0x2,%eax
7c7626:	83 f8 01             	cmp    $0x1,%eax
7c7629:	73 53                	jae    0x7c767e
7c762b:	2b cb                	sub    %ebx,%ecx
7c762d:	ba ff ff ff 3f       	mov    $0x3fffffff,%edx
7c7632:	c1 f9 02             	sar    $0x2,%ecx
7c7635:	8b c2                	mov    %edx,%eax
7c7637:	2b c1                	sub    %ecx,%eax
7c7639:	83 f8 01             	cmp    $0x1,%eax
7c763c:	0f 82 9a 02 00 00    	jb     0x7c78dc
7c7642:	2b fb                	sub    %ebx,%edi
7c7644:	8d 71 01             	lea    0x1(%ecx),%esi
7c7647:	c1 ff 02             	sar    $0x2,%edi
7c764a:	8b ca                	mov    %edx,%ecx
7c764c:	8b c7                	mov    %edi,%eax
7c764e:	33 d2                	xor    %edx,%edx
7c7650:	d1 e8                	shr    $1,%eax
7c7652:	2b c8                	sub    %eax,%ecx
7c7654:	03 c7                	add    %edi,%eax
7c7656:	3b cf                	cmp    %edi,%ecx
7c7658:	8d 4c 24 34          	lea    0x34(%esp),%ecx
7c765c:	0f 43 d0             	cmovae %eax,%edx
7c765f:	3b d6                	cmp    %esi,%edx
7c7661:	0f 43 f2             	cmovae %edx,%esi
7c7664:	56                   	push   %esi
7c7665:	e8 d5 e6 c3 ff       	call   0x405d3f
7c766a:	8b 7c 24 3c          	mov    0x3c(%esp),%edi
7c766e:	8b 4c 24 38          	mov    0x38(%esp),%ecx
7c7672:	8b 5c 24 34          	mov    0x34(%esp),%ebx
7c7676:	8b 54 24 10          	mov    0x10(%esp),%edx
7c767a:	8b 74 24 18          	mov    0x18(%esp),%esi
7c767e:	85 c9                	test   %ecx,%ecx
7c7680:	74 05                	je     0x7c7687
7c7682:	8b 04 ab             	mov    (%ebx,%ebp,4),%eax
7c7685:	89 01                	mov    %eax,(%ecx)
7c7687:	8b 44 24 14          	mov    0x14(%esp),%eax
7c768b:	eb 6d                	jmp    0x7c76fa
7c768d:	3b cf                	cmp    %edi,%ecx
7c768f:	75 63                	jne    0x7c76f4
7c7691:	8b c7                	mov    %edi,%eax
7c7693:	2b c1                	sub    %ecx,%eax
7c7695:	c1 f8 02             	sar    $0x2,%eax
7c7698:	83 f8 01             	cmp    $0x1,%eax
7c769b:	73 53                	jae    0x7c76f0
7c769d:	2b cb                	sub    %ebx,%ecx
7c769f:	ba ff ff ff 3f       	mov    $0x3fffffff,%edx
7c76a4:	c1 f9 02             	sar    $0x2,%ecx
7c76a7:	8b c2                	mov    %edx,%eax
7c76a9:	2b c1                	sub    %ecx,%eax
7c76ab:	83 f8 01             	cmp    $0x1,%eax
7c76ae:	0f 82 28 02 00 00    	jb     0x7c78dc
7c76b4:	2b fb                	sub    %ebx,%edi
7c76b6:	8d 71 01             	lea    0x1(%ecx),%esi
7c76b9:	c1 ff 02             	sar    $0x2,%edi
7c76bc:	8b ca                	mov    %edx,%ecx
7c76be:	8b c7                	mov    %edi,%eax
7c76c0:	33 d2                	xor    %edx,%edx
7c76c2:	d1 e8                	shr    $1,%eax
7c76c4:	2b c8                	sub    %eax,%ecx
7c76c6:	03 c7                	add    %edi,%eax
7c76c8:	3b cf                	cmp    %edi,%ecx
7c76ca:	8d 4c 24 34          	lea    0x34(%esp),%ecx
7c76ce:	0f 43 d0             	cmovae %eax,%edx
7c76d1:	3b d6                	cmp    %esi,%edx
7c76d3:	0f 43 f2             	cmovae %edx,%esi
7c76d6:	56                   	push   %esi
7c76d7:	e8 63 e6 c3 ff       	call   0x405d3f
7c76dc:	8b 7c 24 3c          	mov    0x3c(%esp),%edi
7c76e0:	8b 4c 24 38          	mov    0x38(%esp),%ecx
7c76e4:	8b 5c 24 34          	mov    0x34(%esp),%ebx
7c76e8:	8b 54 24 10          	mov    0x10(%esp),%edx
7c76ec:	8b 74 24 18          	mov    0x18(%esp),%esi
7c76f0:	8b 44 24 14          	mov    0x14(%esp),%eax
7c76f4:	85 c9                	test   %ecx,%ecx
7c76f6:	74 02                	je     0x7c76fa
7c76f8:	89 29                	mov    %ebp,(%ecx)
7c76fa:	40                   	inc    %eax
7c76fb:	83 c1 04             	add    $0x4,%ecx
7c76fe:	83 c2 18             	add    $0x18,%edx
7c7701:	89 4c 24 38          	mov    %ecx,0x38(%esp)
7c7705:	89 44 24 14          	mov    %eax,0x14(%esp)
7c7709:	89 54 24 10          	mov    %edx,0x10(%esp)
7c770d:	3b c6                	cmp    %esi,%eax
7c770f:	0f 8c d1 fe ff ff    	jl     0x7c75e6
7c7715:	bd ff ff ff 3f       	mov    $0x3fffffff,%ebp
7c771a:	8d 44 24 10          	lea    0x10(%esp),%eax
7c771e:	c7 44 24 10 00 00 00 	movl   $0x0,0x10(%esp)
7c7725:	00
7c7726:	3b c1                	cmp    %ecx,%eax
7c7728:	73 6a                	jae    0x7c7794
7c772a:	3b d8                	cmp    %eax,%ebx
7c772c:	77 66                	ja     0x7c7794
7c772e:	8b f0                	mov    %eax,%esi
7c7730:	2b f3                	sub    %ebx,%esi
7c7732:	c1 fe 02             	sar    $0x2,%esi
7c7735:	3b cf                	cmp    %edi,%ecx
7c7737:	75 50                	jne    0x7c7789
7c7739:	8b c7                	mov    %edi,%eax
7c773b:	2b c1                	sub    %ecx,%eax
7c773d:	c1 f8 02             	sar    $0x2,%eax
7c7740:	83 f8 01             	cmp    $0x1,%eax
7c7743:	73 44                	jae    0x7c7789
7c7745:	2b cb                	sub    %ebx,%ecx
7c7747:	8b c5                	mov    %ebp,%eax
7c7749:	c1 f9 02             	sar    $0x2,%ecx
7c774c:	2b c1                	sub    %ecx,%eax
7c774e:	83 f8 01             	cmp    $0x1,%eax
7c7751:	0f 82 85 01 00 00    	jb     0x7c78dc
7c7757:	2b fb                	sub    %ebx,%edi
7c7759:	8d 51 01             	lea    0x1(%ecx),%edx
7c775c:	c1 ff 02             	sar    $0x2,%edi
7c775f:	33 c9                	xor    %ecx,%ecx
7c7761:	8b c7                	mov    %edi,%eax
7c7763:	d1 e8                	shr    $1,%eax
7c7765:	2b e8                	sub    %eax,%ebp
7c7767:	03 c7                	add    %edi,%eax
7c7769:	3b ef                	cmp    %edi,%ebp
7c776b:	0f 43 c8             	cmovae %eax,%ecx
7c776e:	3b ca                	cmp    %edx,%ecx
7c7770:	0f 43 d1             	cmovae %ecx,%edx
7c7773:	8d 4c 24 34          	lea    0x34(%esp),%ecx
7c7777:	52                   	push   %edx
7c7778:	e8 c2 e5 c3 ff       	call   0x405d3f
7c777d:	8b 7c 24 3c          	mov    0x3c(%esp),%edi
7c7781:	8b 4c 24 38          	mov    0x38(%esp),%ecx
7c7785:	8b 5c 24 34          	mov    0x34(%esp),%ebx
7c7789:	85 c9                	test   %ecx,%ecx
7c778b:	74 65                	je     0x7c77f2
7c778d:	8b 04 b3             	mov    (%ebx,%esi,4),%eax
7c7790:	89 01                	mov    %eax,(%ecx)
7c7792:	eb 5e                	jmp    0x7c77f2
7c7794:	3b cf                	cmp    %edi,%ecx
7c7796:	75 50                	jne    0x7c77e8
7c7798:	8b c7                	mov    %edi,%eax
7c779a:	2b c1                	sub    %ecx,%eax
7c779c:	c1 f8 02             	sar    $0x2,%eax
7c779f:	83 f8 01             	cmp    $0x1,%eax
7c77a2:	73 44                	jae    0x7c77e8
7c77a4:	2b cb                	sub    %ebx,%ecx
7c77a6:	8b c5                	mov    %ebp,%eax
7c77a8:	c1 f9 02             	sar    $0x2,%ecx
7c77ab:	2b c1                	sub    %ecx,%eax
7c77ad:	83 f8 01             	cmp    $0x1,%eax
7c77b0:	0f 82 30 01 00 00    	jb     0x7c78e6
7c77b6:	2b fb                	sub    %ebx,%edi
7c77b8:	8d 51 01             	lea    0x1(%ecx),%edx
7c77bb:	c1 ff 02             	sar    $0x2,%edi
7c77be:	33 c9                	xor    %ecx,%ecx
7c77c0:	8b c7                	mov    %edi,%eax
7c77c2:	d1 e8                	shr    $1,%eax
7c77c4:	2b e8                	sub    %eax,%ebp
7c77c6:	03 c7                	add    %edi,%eax
7c77c8:	3b ef                	cmp    %edi,%ebp
7c77ca:	0f 43 c8             	cmovae %eax,%ecx
7c77cd:	3b ca                	cmp    %edx,%ecx
7c77cf:	0f 43 d1             	cmovae %ecx,%edx
7c77d2:	8d 4c 24 34          	lea    0x34(%esp),%ecx
7c77d6:	52                   	push   %edx
7c77d7:	e8 63 e5 c3 ff       	call   0x405d3f
7c77dc:	8b 7c 24 3c          	mov    0x3c(%esp),%edi
7c77e0:	8b 4c 24 38          	mov    0x38(%esp),%ecx
7c77e4:	8b 5c 24 34          	mov    0x34(%esp),%ebx
7c77e8:	85 c9                	test   %ecx,%ecx
7c77ea:	74 06                	je     0x7c77f2
7c77ec:	c7 01 00 00 00 00    	movl   $0x0,(%ecx)
7c77f2:	ff 74 24 20          	push   0x20(%esp)
7c77f6:	8d 44 24 24          	lea    0x24(%esp),%eax
7c77fa:	50                   	push   %eax
7c77fb:	e8 f0 d8 ff ff       	call   0x7c50f0
7c7800:	53                   	push   %ebx
7c7801:	ff 30                	push   (%eax)
7c7803:	ff 74 24 64          	push   0x64(%esp)
7c7807:	e8 9a 46 c4 ff       	call   0x40bea6
7c780c:	8b 4c 24 34          	mov    0x34(%esp),%ecx
7c7810:	83 c4 14             	add    $0x14,%esp
7c7813:	8b f0                	mov    %eax,%esi
7c7815:	85 c9                	test   %ecx,%ecx
7c7817:	74 09                	je     0x7c7822
7c7819:	51                   	push   %ecx
7c781a:	e8 f3 6d c7 ff       	call   0x43e612
7c781f:	83 c4 04             	add    $0x4,%esp
7c7822:	85 db                	test   %ebx,%ebx
7c7824:	74 52                	je     0x7c7878
7c7826:	2b fb                	sub    %ebx,%edi
7c7828:	c1 ff 02             	sar    $0x2,%edi
7c782b:	81 ff ff ff ff 3f    	cmp    $0x3fffffff,%edi
7c7831:	0f 87 b9 00 00 00    	ja     0x7c78f0
7c7837:	8d 04 bd 00 00 00 00 	lea    0x0(,%edi,4),%eax
7c783e:	3d 00 10 00 00       	cmp    $0x1000,%eax
7c7843:	72 2a                	jb     0x7c786f
7c7845:	f6 c3 1f             	test   $0x1f,%bl
7c7848:	0f 85 a7 00 00 00    	jne    0x7c78f5
7c784e:	8b 43 fc             	mov    -0x4(%ebx),%eax
7c7851:	3b c3                	cmp    %ebx,%eax
7c7853:	0f 83 a1 00 00 00    	jae    0x7c78fa
7c7859:	2b d8                	sub    %eax,%ebx
7c785b:	83 fb 04             	cmp    $0x4,%ebx
7c785e:	0f 82 9b 00 00 00    	jb     0x7c78ff
7c7864:	83 fb 23             	cmp    $0x23,%ebx
7c7867:	0f 87 97 00 00 00    	ja     0x7c7904
7c786d:	8b d8                	mov    %eax,%ebx
7c786f:	53                   	push   %ebx
7c7870:	e8 1a 9f c3 ff       	call   0x40178f
7c7875:	83 c4 04             	add    $0x4,%esp
7c7878:	8b 5c 24 28          	mov    0x28(%esp),%ebx
7c787c:	85 db                	test   %ebx,%ebx
7c787e:	74 38                	je     0x7c78b8
7c7880:	ff 74 24 20          	push   0x20(%esp)
7c7884:	8d 44 24 2c          	lea    0x2c(%esp),%eax
7c7888:	50                   	push   %eax
7c7889:	ff 74 24 34          	push   0x34(%esp)
7c788d:	53                   	push   %ebx
7c788e:	e8 83 a2 c5 ff       	call   0x421b16
7c7893:	8b 4c 24 2c          	mov    0x2c(%esp),%ecx
7c7897:	b8 ab aa aa 2a       	mov    $0x2aaaaaab,%eax
7c789c:	2b cb                	sub    %ebx,%ecx
7c789e:	83 c4 10             	add    $0x10,%esp
7c78a1:	f7 e9                	imul   %ecx