46b46b:	3b fe                	cmp    %esi,%edi
46b46d:	0f 84 68 ff ff ff    	je     0x46b3db
46b473:	57                   	push   %edi
46b474:	53                   	push   %ebx
46b475:	e8 16 5a 16 00       	call   0x5d0e90
46b47a:	56                   	push   %esi
46b47b:	57                   	push   %edi
46b47c:	e8 0f 5a 16 00       	call   0x5d0e90
46b481:	56                   	push   %esi
46b482:	53                   	push   %ebx
46b483:	e8 08 5a 16 00       	call   0x5d0e90
46b488:	8b c6                	mov    %esi,%eax
46b48a:	83 c4 18             	add    $0x18,%esp
46b48d:	2b c7                	sub    %edi,%eax
46b48f:	c1 f8 02             	sar    $0x2,%eax
46b492:	8d 3c 83             	lea    (%ebx,%eax,4),%edi
46b495:	ff 75 24             	push   0x24(%ebp)
46b498:	ff 75 20             	push   0x20(%ebp)
46b49b:	ff 75 1c             	push   0x1c(%ebp)
46b49e:	ff 75 34             	push   0x34(%ebp)
46b4a1:	ff 75 30             	push   0x30(%ebp)
46b4a4:	57                   	push   %edi
46b4a5:	53                   	push   %ebx
46b4a6:	ff 75 08             	push   0x8(%ebp)
46b4a9:	e8 32 00 00 00       	call   0x46b4e0
46b4ae:	ff 75 24             	push   0x24(%ebp)
46b4b1:	8b 45 18             	mov    0x18(%ebp),%eax
46b4b4:	ff 75 20             	push   0x20(%ebp)
46b4b7:	2b 45 34             	sub    0x34(%ebp),%eax
46b4ba:	ff 75 1c             	push   0x1c(%ebp)
46b4bd:	50                   	push   %eax
46b4be:	ff 75 14             	push   0x14(%ebp)
46b4c1:	ff 75 10             	push   0x10(%ebp)
46b4c4:	56                   	push   %esi
46b4c5:	57                   	push   %edi
46b4c6:	e8 15 00 00 00       	call   0x46b4e0
46b4cb:	83 c4 40             	add    $0x40,%esp
46b4ce:	5f                   	pop    %edi
46b4cf:	5e                   	pop    %esi
46b4d0:	5b                   	pop    %ebx
46b4d1:	5d                   	pop    %ebp
46b4d2:	c3                   	ret
46b4d3:	cc                   	int3
46b4d4:	cc                   	int3
46b4d5:	cc                   	int3
46b4d6:	cc                   	int3
46b4d7:	cc                   	int3
46b4d8:	cc                   	int3
46b4d9:	cc                   	int3
46b4da:	cc                   	int3
46b4db:	cc                   	int3
46b4dc:	cc                   	int3
46b4dd:	cc                   	int3
46b4de:	cc                   	int3
46b4df:	cc                   	int3
46b4e0:	55                   	push   %ebp
46b4e1:	8b ec                	mov    %esp,%ebp
46b4e3:	51                   	push   %ecx
46b4e4:	53                   	push   %ebx
46b4e5:	8b 5d 0c             	mov    0xc(%ebp),%ebx
46b4e8:	3b 5d 10             	cmp    0x10(%ebp),%ebx
46b4eb:	0f 84 b8 00 00 00    	je     0x46b5a9
46b4f1:	56                   	push   %esi
46b4f2:	8b 75 08             	mov    0x8(%ebp),%esi
46b4f5:	3b f3                	cmp    %ebx,%esi
46b4f7:	0f 84 ab 00 00 00    	je     0x46b5a8
46b4fd:	57                   	push   %edi
46b4fe:	8b 7d 14             	mov    0x14(%ebp),%edi
46b501:	ff 36                	push   (%esi)
46b503:	8d 4d 24             	lea    0x24(%ebp),%ecx
46b506:	ff 33                	push   (%ebx)
46b508:	e8 b3 38 00 00       	call   0x46edc0
46b50d:	84 c0                	test   %al,%al
46b50f:	75 0f                	jne    0x46b520
46b511:	83 c6 04             	add    $0x4,%esi
46b514:	4f                   	dec    %edi
46b515:	3b f3                	cmp    %ebx,%esi
46b517:	75 e8                	jne    0x46b501
46b519:	5f                   	pop    %edi
46b51a:	5e                   	pop    %esi
46b51b:	5b                   	pop    %ebx
46b51c:	8b e5                	mov    %ebp,%esp
46b51e:	5d                   	pop    %ebp
46b51f:	c3                   	ret
46b520:	8b 45 10             	mov    0x10(%ebp),%eax
46b523:	8b 4d 18             	mov    0x18(%ebp),%ecx
46b526:	89 45 0c             	mov    %eax,0xc(%ebp)
46b529:	83 e8 04             	sub    $0x4,%eax
46b52c:	89 4d fc             	mov    %ecx,-0x4(%ebp)
46b52f:	49                   	dec    %ecx
46b530:	89 45 10             	mov    %eax,0x10(%ebp)
46b533:	89 4d 18             	mov    %ecx,0x18(%ebp)
46b536:	3b d8                	cmp    %eax,%ebx
46b538:	74 57                	je     0x46b591
46b53a:	ff 73 fc             	push   -0x4(%ebx)
46b53d:	8d 4d 24             	lea    0x24(%ebp),%ecx
46b540:	ff 30                	push   (%eax)
46b542:	e8 79 38 00 00       	call   0x46edc0
46b547:	84 c0                	test   %al,%al
46b549:	74 d5                	je     0x46b520
46b54b:	8b 45 0c             	mov    0xc(%ebp),%eax
46b54e:	83 ff 01             	cmp    $0x1,%edi
46b551:	75 1f                	jne    0x46b572
46b553:	8b 3e                	mov    (%esi),%edi
46b555:	2b c3                	sub    %ebx,%eax
46b557:	50                   	push   %eax
46b558:	53                   	push   %ebx
46b559:	56                   	push   %esi
46b55a:	89 45 0c             	mov    %eax,0xc(%ebp)
46b55d:	e8 6e 78 16 00       	call   0x5d2dd0
46b562:	8b 45 0c             	mov    0xc(%ebp),%eax
46b565:	83 c4 0c             	add    $0xc,%esp
46b568:	89 3c 30             	mov    %edi,(%eax,%esi,1)
46b56b:	5f                   	pop    %edi
46b56c:	5e                   	pop    %esi
46b56d:	5b                   	pop    %ebx
46b56e:	8b e5                	mov    %ebp,%esp
46b570:	5d                   	pop    %ebp
46b571:	c3                   	ret
46b572:	ff 75 24             	push   0x24(%ebp)
46b575:	ff 75 20             	push   0x20(%ebp)
46b578:	ff 75 1c             	push   0x1c(%ebp)
46b57b:	ff 75 fc             	push   -0x4(%ebp)
46b57e:	57                   	push   %edi
46b57f:	50                   	push   %eax
46b580:	53                   	push   %ebx
46b581:	56                   	push   %esi
46b582:	e8 29 00 00 00       	call   0x46b5b0
46b587:	83 c4 20             	add    $0x20,%esp
46b58a:	5f                   	pop    %edi
46b58b:	5e                   	pop    %esi
46b58c:	5b                   	pop    %ebx
46b58d:	8b e5                	mov    %ebp,%esp
46b58f:	5d                   	pop    %ebp
46b590:	c3                   	ret
46b591:	8b 3b                	mov    (%ebx),%edi
46b593:	2b de                	sub    %esi,%ebx
46b595:	53                   	push   %ebx
46b596:	2b c3                	sub    %ebx,%eax
46b598:	83 c0 04             	add    $0x4,%eax
46b59b:	56                   	push   %esi
46b59c:	50                   	push   %eax
46b59d:	e8 2e 78 16 00       	call   0x5d2dd0
46b5a2:	83 c4 0c             	add    $0xc,%esp
46b5a5:	89 3e                	mov    %edi,(%esi)
46b5a7:	5f                   	pop    %edi
46b5a8:	5e                   	pop    %esi
46b5a9:	5b                   	pop    %ebx
46b5aa:	8b e5                	mov    %ebp,%esp
46b5ac:	5d                   	pop    %ebp
46b5ad:	c3                   	ret
46b5ae:	cc                   	int3
46b5af:	cc                   	int3
46b5b0:	55                   	push   %ebp
46b5b1:	8b ec                	mov    %esp,%ebp
46b5b3:	51                   	push   %ecx
46b5b4:	8b 45 14             	mov    0x14(%ebp),%eax
46b5b7:	8b 4d 18             	mov    0x18(%ebp),%ecx
46b5ba:	8b 55 20             	mov    0x20(%ebp),%edx
46b5bd:	53                   	push   %ebx
46b5be:	56                   	push   %esi
46b5bf:	57                   	push   %edi
46b5c0:	3b c1                	cmp    %ecx,%eax
46b5c2:	0f 8f af 00 00 00    	jg     0x46b677
46b5c8:	3b c2                	cmp    %edx,%eax
46b5ca:	0f 8f a7 00 00 00    	jg     0x46b677
46b5d0:	8b 5d 0c             	mov    0xc(%ebp),%ebx
46b5d3:	8b f3                	mov    %ebx,%esi
46b5d5:	8b 7d 08             	mov    0x8(%ebp),%edi
46b5d8:	2b f7                	sub    %edi,%esi
46b5da:	8b 45 24             	mov    0x24(%ebp),%eax
46b5dd:	56                   	push   %esi
46b5de:	57                   	push   %edi
46b5df:	ff 75 1c             	push   0x1c(%ebp)
46b5e2:	89 45 fc             	mov    %eax,-0x4(%ebp)
46b5e5:	e8 e6 77 16 00       	call   0x5d2dd0
46b5ea:	8b 45 1c             	mov    0x1c(%ebp),%eax
46b5ed:	83 c4 0c             	add    $0xc,%esp
46b5f0:	03 c6                	add    %esi,%eax
46b5f2:	8d 73 04             	lea    0x4(%ebx),%esi
46b5f5:	89 45 14             	mov    %eax,0x14(%ebp)
46b5f8:	8b 03                	mov    (%ebx),%eax
46b5fa:	8b 5d 1c             	mov    0x1c(%ebp),%ebx
46b5fd:	89 07                	mov    %eax,(%edi)
46b5ff:	83 c7 04             	add    $0x4,%edi
46b602:	ff 33                	push   (%ebx)
46b604:	8d 47 04             	lea    0x4(%edi),%eax
46b607:	ff 36                	push   (%esi)
46b609:	8d 4d fc             	lea    -0x4(%ebp),%ecx
46b60c:	89 45 18             	mov    %eax,0x18(%ebp)
46b60f:	e8 ac 37 00 00       	call   0x46edc0
46b614:	84 c0                	test   %al,%al
46b616:	74 26                	je     0x46b63e
46b618:	8b 06                	mov    (%esi),%eax
46b61a:	83 c6 04             	add    $0x4,%esi
46b61d:	89 07                	mov    %eax,(%edi)
46b61f:	3b 75 10             	cmp    0x10(%ebp),%esi
46b622:	75 2b                	jne    0x46b64f
46b624:	8b 45 14             	mov    0x14(%ebp),%eax
46b627:	8b 7d 18             	mov    0x18(%ebp),%edi
46b62a:	2b c3                	sub    %ebx,%eax
46b62c:	50                   	push   %eax
46b62d:	53                   	push   %ebx
46b62e:	57                   	push   %edi
46b62f:	e8 9c 77 16 00       	call   0x5d2dd0
46b634:	83 c4 0c             	add    $0xc,%esp
46b637:	5f                   	pop    %edi
46b638:	5e                   	pop    %esi
46b639:	5b                   	pop    %ebx
46b63a:	8b e5                	mov    %ebp,%esp
46b63c:	5d                   	pop    %ebp
46b63d:	c3                   	ret
46b63e:	8b 03                	mov    (%ebx),%eax
46b640:	83 c3 04             	add    $0x4,%ebx
46b643:	89 07                	mov    %eax,(%edi)
46b645:	8b 45 14             	mov    0x14(%ebp),%eax
46b648:	83 c0 fc             	add    $0xfffffffc,%eax
46b64b:	3b d8                	cmp    %eax,%ebx
46b64d:	74 05                	je     0x46b654
46b64f:	8b 7d 18             	mov    0x18(%ebp),%edi
46b652:	eb ae                	jmp    0x46b602
46b654:	8b 5d 10             	mov    0x10(%ebp),%ebx
46b657:	8b 7d 18             	mov    0x18(%ebp),%edi
46b65a:	2b de                	sub    %esi,%ebx
46b65c:	53                   	push   %ebx
46b65d:	56                   	push   %esi
46b65e:	57                   	push   %edi
46b65f:	e8 6c 77 16 00       	call   0x5d2dd0
46b664:	8b 4d 14             	mov    0x14(%ebp),%ecx
46b667:	83 c4 0c             	add    $0xc,%esp
46b66a:	8b 41 fc             	mov    -0x4(%ecx),%eax
46b66d:	89 04 3b             	mov    %eax,(%ebx,%edi,1)
46b670:	5f                   	pop    %edi
46b671:	5e                   	pop    %esi
46b672:	5b                   	pop    %ebx
46b673:	8b e5                	mov    %ebp,%esp
46b675:	5d                   	pop    %ebp
46b676:	c3                   	ret
46b677:	3b ca                	cmp    %edx,%ecx
46b679:	0f 8f af 00 00 00    	jg     0x46b72e
46b67f:	8b 7d 10             	mov    0x10(%ebp),%edi
46b682:	8b df                	mov    %edi,%ebx
46b684:	8b 75 0c             	mov    0xc(%ebp),%esi
46b687:	2b de                	sub    %esi,%ebx
46b689:	8b 45 24             	mov    0x24(%ebp),%eax
46b68c:	53                   	push   %ebx
46b68d:	56                   	push   %esi
46b68e:	ff 75 1c             	push   0x1c(%ebp)
46b691:	89 45 18             	mov    %eax,0x18(%ebp)
46b694:	e8 37 77 16 00       	call   0x5d2dd0
46b699:	8b 46 fc             	mov    -0x4(%esi),%eax
46b69c:	8d 4f fc             	lea    -0x4(%edi),%ecx
46b69f:	89 01                	mov    %eax,(%ecx)
46b6a1:	83 c4 0c             	add    $0xc,%esp
46b6a4:	8b 45 1c             	mov    0x1c(%ebp),%eax
46b6a7:	83 c0 fc             	add    $0xfffffffc,%eax
46b6aa:	03 d8                	add    %eax,%ebx
46b6ac:	83 ee 08             	sub    $0x8,%esi
46b6af:	90                   	nop
46b6b0:	ff 36                	push   (%esi)
46b6b2:	8d 79 fc             	lea    -0x4(%ecx),%edi
46b6b5:	ff 33                	push   (%ebx)
46b6b7:	8d 4d 18             	lea    0x18(%ebp),%ecx
46b6ba:	89 7d 14             	mov    %edi,0x14(%ebp)
46b6bd:	e8 fe 36 00 00       	call   0x46edc0
46b6c2:	84 c0                	test   %al,%al
46b6c4:	74 10                	je     0x46b6d6
46b6c6:	8b 06                	mov    (%esi),%eax
46b6c8:	89 07                	mov    %eax,(%edi)
46b6ca:	39 75 08             	cmp    %esi,0x8(%ebp)
46b6cd:	74 18                	je     0x46b6e7
46b6cf:	83 ee 04             	sub    $0x4,%esi
46b6d2:	8b cf                	mov    %edi,%ecx
46b6d4:	eb da                	jmp    0x46b6b0
46b6d6:	8b 03                	mov    (%ebx),%eax
46b6d8:	83 eb 04             	sub    $0x4,%ebx
46b6db:	89 07                	mov    %eax,(%edi)
46b6dd:	39 5d 1c             	cmp    %ebx,0x1c(%ebp)
46b6e0:	74 25                	je     0x46b707
46b6e2:	8b 4d 14             	mov    0x14(%ebp),%ecx
46b6e5:	eb c9                	jmp    0x46b6b0
46b6e7:	8b 03                	mov    (%ebx),%eax
46b6e9:	83 ef 04             	sub    $0x4,%edi
46b6ec:	89 07                	mov    %eax,(%edi)
46b6ee:	8b 45 1c             	mov    0x1c(%ebp),%eax
46b6f1:	2b d8                	sub    %eax,%ebx
46b6f3:	53                   	push   %ebx
46b6f4:	50                   	push   %eax
46b6f5:	2b fb                	sub    %ebx,%edi
46b6f7:	57                   	push   %edi
46b6f8:	e8 d3 76 16 00       	call   0x5d2dd0
46b6fd:	83 c4 0c             	add    $0xc,%esp
46b700:	5f                   	pop    %edi
46b701:	5e                   	pop    %esi
46b702:	5b                   	pop    %ebx
46b703:	8b e5                	mov    %ebp,%esp
46b705:	5d                   	pop    %ebp
46b706:	c3                   	ret
46b707:	8b 06                	mov    (%esi),%eax
46b709:	83 ef 04             	sub    $0x4,%edi
46b70c:	8b 5d 08             	mov    0x8(%ebp),%ebx
46b70f:	2b f3                	sub    %ebx,%esi
46b711:	56                   	push   %esi
46b712:	53                   	push   %ebx
46b713:	89 07                	mov    %eax,(%edi)
46b715:	2b fe                	sub    %esi,%edi
46b717:	57                   	push   %edi
46b718:	e8 b3 76 16 00       	call   0x5d2dd0
46b71d:	8b 45 1c             	mov    0x1c(%ebp),%eax
46b720:	83 c4 0c             	add    $0xc,%esp
46b723:	8b 00                	mov    (%eax),%eax
46b725:	5f                   	pop    %edi
46b726:	5e                   	pop    %esi
46b727:	89 03                	mov    %eax,(%ebx)
46b729:	5b                   	pop    %ebx
46b72a:	8b e5                	mov    %ebp,%esp
46b72c:	5d                   	pop    %ebp
46b72d:	c3                   	ret
46b72e:	ff 75 24             	push   0x24(%ebp)
46b731:	3b c1                	cmp    %ecx,%eax
46b733:	7f 4a                	jg     0x46b77f
46b735:	8b 5d 0c             	mov    0xc(%ebp),%ebx
46b738:	8b f8                	mov    %eax,%edi
46b73a:	8b 45 08             	mov    0x8(%ebp),%eax
46b73d:	d1 ff                	sar    $1,%edi
46b73f:	8d 34 b8             	lea    (%eax,%edi,4),%esi
46b742:	56                   	push   %esi
46b743:	ff 75 10             	push   0x10(%ebp)
46b746:	53                   	push   %ebx
46b747:	e8 e4 2e 00 00       	call   0x46e630
46b74c:	8b c8                	mov    %eax,%ecx
46b74e:	2b cb                	sub    %ebx,%ecx
46b750:	c1 f9 02             	sar    $0x2,%ecx
46b753:	51                   	push   %ecx
46b754:	57                   	push   %edi
46b755:	50                   	push   %eax
46b756:	8b 45 20             	mov    0x20(%ebp),%eax
46b759:	56                   	push   %esi
46b75a:	ff 75 24             	push   0x24(%ebp)
46b75d:	50                   	push   %eax
46b75e:	ff 75 1c             	push   0x1c(%ebp)
46b761:	8b 45 18             	mov    0x18(%ebp),%eax
46b764:	50                   	push   %eax
46b765:	8b 45 14             	mov    0x14(%ebp),%eax
46b768:	50                   	push   %eax
46b769:	ff 75 10             	push   0x10(%ebp)
46b76c:	53                   	push   %ebx
46b76d:	ff 75 08             	push   0x8(%ebp)
46b770:	e8 3b fc ff ff       	call   0x46b3b0
46b775:	83 c4 40             	add    $0x40,%esp