56e57e:	85 f6                	test   %esi,%esi
56e580:	7f d1                	jg     0x56e553
56e582:	8b 55 f0             	mov    -0x10(%ebp),%edx
56e585:	8b 45 10             	mov    0x10(%ebp),%eax
56e588:	4a                   	dec    %edx
56e589:	8b 5d f0             	mov    -0x10(%ebp),%ebx
56e58c:	0f af 55 20          	imul   0x20(%ebp),%edx
56e590:	c1 e2 02             	shl    $0x2,%edx
56e593:	8b 75 f8             	mov    -0x8(%ebp),%esi
56e596:	03 d0                	add    %eax,%edx
56e598:	8b 45 f4             	mov    -0xc(%ebp),%eax
56e59b:	03 c3                	add    %ebx,%eax
56e59d:	8b 5d fc             	mov    -0x4(%ebp),%ebx
56e5a0:	48                   	dec    %eax
56e5a1:	d1 f8                	sar    $1,%eax
56e5a3:	03 c0                	add    %eax,%eax
56e5a5:	0f af 45 20          	imul   0x20(%ebp),%eax
56e5a9:	c1 e0 02             	shl    $0x2,%eax
56e5ac:	03 c3                	add    %ebx,%eax
56e5ae:	8b d9                	mov    %ecx,%ebx
56e5b0:	2b de                	sub    %esi,%ebx
56e5b2:	85 db                	test   %ebx,%ebx
56e5b4:	79 03                	jns    0x56e5b9
56e5b6:	83 c3 03             	add    $0x3,%ebx
56e5b9:	c1 fb 02             	sar    $0x2,%ebx
56e5bc:	53                   	push   %ebx
56e5bd:	8b 5d f0             	mov    -0x10(%ebp),%ebx
56e5c0:	5e                   	pop    %esi
56e5c1:	2b de                	sub    %esi,%ebx
56e5c3:	eb 14                	jmp    0x56e5d9
56e5c5:	8b 30                	mov    (%eax),%esi
56e5c7:	89 32                	mov    %esi,(%edx)
56e5c9:	8b 75 20             	mov    0x20(%ebp),%esi
56e5cc:	c1 e6 02             	shl    $0x2,%esi
56e5cf:	2b d6                	sub    %esi,%edx
56e5d1:	8b 75 ec             	mov    -0x14(%ebp),%esi
56e5d4:	c1 e6 02             	shl    $0x2,%esi
56e5d7:	2b c6                	sub    %esi,%eax
56e5d9:	8b f3                	mov    %ebx,%esi
56e5db:	83 c3 ff             	add    $0xffffffff,%ebx
56e5de:	85 f6                	test   %esi,%esi
56e5e0:	7f e3                	jg     0x56e5c5
56e5e2:	8b d9                	mov    %ecx,%ebx
56e5e4:	8b 45 f8             	mov    -0x8(%ebp),%eax
56e5e7:	2b d8                	sub    %eax,%ebx
56e5e9:	85 db                	test   %ebx,%ebx
56e5eb:	79 03                	jns    0x56e5f0
56e5ed:	83 c3 03             	add    $0x3,%ebx
56e5f0:	c1 fb 02             	sar    $0x2,%ebx
56e5f3:	eb 0f                	jmp    0x56e604
56e5f5:	83 e9 04             	sub    $0x4,%ecx
56e5f8:	8b 01                	mov    (%ecx),%eax
56e5fa:	89 02                	mov    %eax,(%edx)
56e5fc:	8b 45 20             	mov    0x20(%ebp),%eax
56e5ff:	c1 e0 02             	shl    $0x2,%eax
56e602:	2b d0                	sub    %eax,%edx
56e604:	8b c3                	mov    %ebx,%eax
56e606:	83 c3 ff             	add    $0xffffffff,%ebx
56e609:	85 c0                	test   %eax,%eax
56e60b:	7f e8                	jg     0x56e5f5
56e60d:	e9 cc 00 00 00       	jmp    0x56e6de
56e612:	33 d2                	xor    %edx,%edx
56e614:	89 55 e8             	mov    %edx,-0x18(%ebp)
56e617:	8b 45 fc             	mov    -0x4(%ebp),%eax
56e61a:	8b 55 1c             	mov    0x1c(%ebp),%edx
56e61d:	8b 4d f8             	mov    -0x8(%ebp),%ecx
56e620:	8b 5d f4             	mov    -0xc(%ebp),%ebx
56e623:	eb 26                	jmp    0x56e64b
56e625:	8b 75 e8             	mov    -0x18(%ebp),%esi
56e628:	85 f6                	test   %esi,%esi
56e62a:	74 07                	je     0x56e633
56e62c:	8b 32                	mov    (%edx),%esi
56e62e:	89 31                	mov    %esi,(%ecx)
56e630:	83 c1 04             	add    $0x4,%ecx
56e633:	8b 30                	mov    (%eax),%esi
56e635:	89 32                	mov    %esi,(%edx)
56e637:	8b 75 ec             	mov    -0x14(%ebp),%esi
56e63a:	c1 e6 02             	shl    $0x2,%esi
56e63d:	03 c6                	add    %esi,%eax
56e63f:	8b 75 20             	mov    0x20(%ebp),%esi
56e642:	c1 e6 02             	shl    $0x2,%esi
56e645:	03 d6                	add    %esi,%edx
56e647:	83 75 e8 01          	xorl   $0x1,-0x18(%ebp)
56e64b:	8b f3                	mov    %ebx,%esi
56e64d:	83 c3 ff             	add    $0xffffffff,%ebx
56e650:	85 f6                	test   %esi,%esi
56e652:	7f d1                	jg     0x56e625
56e654:	8b 45 f4             	mov    -0xc(%ebp),%eax
56e657:	8b 55 f0             	mov    -0x10(%ebp),%edx
56e65a:	03 c2                	add    %edx,%eax
56e65c:	8b 5d 10             	mov    0x10(%ebp),%ebx
56e65f:	d1 f8                	sar    $1,%eax
56e661:	8b 75 f8             	mov    -0x8(%ebp),%esi
56e664:	03 c0                	add    %eax,%eax
56e666:	48                   	dec    %eax
56e667:	f7 6d 20             	imull  0x20(%ebp)
56e66a:	c1 e0 02             	shl    $0x2,%eax
56e66d:	8b 55 fc             	mov    -0x4(%ebp),%edx
56e670:	03 c2                	add    %edx,%eax
56e672:	8b 55 f0             	mov    -0x10(%ebp),%edx
56e675:	4a                   	dec    %edx
56e676:	0f af 55 20          	imul   0x20(%ebp),%edx
56e67a:	c1 e2 02             	shl    $0x2,%edx
56e67d:	03 d3                	add    %ebx,%edx
56e67f:	8b d9                	mov    %ecx,%ebx
56e681:	2b de                	sub    %esi,%ebx
56e683:	85 db                	test   %ebx,%ebx
56e685:	79 03                	jns    0x56e68a
56e687:	83 c3 03             	add    $0x3,%ebx
56e68a:	c1 fb 02             	sar    $0x2,%ebx
56e68d:	53                   	push   %ebx
56e68e:	8b 5d f0             	mov    -0x10(%ebp),%ebx
56e691:	5e                   	pop    %esi
56e692:	2b de                	sub    %esi,%ebx
56e694:	eb 14                	jmp    0x56e6aa
56e696:	8b 30                	mov    (%eax),%esi
56e698:	89 32                	mov    %esi,(%edx)
56e69a:	8b 75 ec             	mov    -0x14(%ebp),%esi
56e69d:	c1 e6 02             	shl    $0x2,%esi
56e6a0:	2b c6                	sub    %esi,%eax
56e6a2:	8b 75 20             	mov    0x20(%ebp),%esi
56e6a5:	c1 e6 02             	shl    $0x2,%esi
56e6a8:	2b d6                	sub    %esi,%edx
56e6aa:	8b f3                	mov    %ebx,%esi
56e6ac:	83 c3 ff             	add    $0xffffffff,%ebx
56e6af:	85 f6                	test   %esi,%esi
56e6b1:	7f e3                	jg     0x56e696
56e6b3:	8b d9                	mov    %ecx,%ebx
56e6b5:	8b 45 f8             	mov    -0x8(%ebp),%eax
56e6b8:	2b d8                	sub    %eax,%ebx
56e6ba:	85 db                	test   %ebx,%ebx
56e6bc:	79 03                	jns    0x56e6c1
56e6be:	83 c3 03             	add    $0x3,%ebx
56e6c1:	c1 fb 02             	sar    $0x2,%ebx
56e6c4:	eb 0f                	jmp    0x56e6d5
56e6c6:	83 e9 04             	sub    $0x4,%ecx
56e6c9:	8b 01                	mov    (%ecx),%eax
56e6cb:	89 02                	mov    %eax,(%edx)
56e6cd:	8b 45 20             	mov    0x20(%ebp),%eax
56e6d0:	c1 e0 02             	shl    $0x2,%eax
56e6d3:	2b d0                	sub    %eax,%edx
56e6d5:	8b c3                	mov    %ebx,%eax
56e6d7:	83 c3 ff             	add    $0xffffffff,%ebx
56e6da:	85 c0                	test   %eax,%eax
56e6dc:	7f e8                	jg     0x56e6c6
56e6de:	8d 95 e8 bf ff ff    	lea    -0x4018(%ebp),%edx
56e6e4:	8b 4d f8             	mov    -0x8(%ebp),%ecx
56e6e7:	3b d1                	cmp    %ecx,%edx
56e6e9:	74 08                	je     0x56e6f3
56e6eb:	8b 45 f8             	mov    -0x8(%ebp),%eax
56e6ee:	e8 91 9c 00 00       	call   0x578384
56e6f3:	5f                   	pop    %edi
56e6f4:	5e                   	pop    %esi
56e6f5:	5b                   	pop    %ebx
56e6f6:	8b e5                	mov    %ebp,%esp
56e6f8:	5d                   	pop    %ebp
56e6f9:	c2 1c 00             	ret    $0x1c
56e6fc:	55                   	push   %ebp
56e6fd:	8b ec                	mov    %esp,%ebp
56e6ff:	50                   	push   %eax
56e700:	b8 04 00 00 00       	mov    $0x4,%eax
56e705:	81 c4 04 f0 ff ff    	add    $0xfffff004,%esp
56e70b:	50                   	push   %eax
56e70c:	48                   	dec    %eax
56e70d:	75 f6                	jne    0x56e705
56e70f:	8b 45 fc             	mov    -0x4(%ebp),%eax
56e712:	83 c4 ec             	add    $0xffffffec,%esp
56e715:	53                   	push   %ebx
56e716:	56                   	push   %esi
56e717:	57                   	push   %edi
56e718:	8b f9                	mov    %ecx,%edi
56e71a:	8b f2                	mov    %edx,%esi
56e71c:	89 45 fc             	mov    %eax,-0x4(%ebp)
56e71f:	8b 5d 20             	mov    0x20(%ebp),%ebx
56e722:	8b c7                	mov    %edi,%eax
56e724:	2b c6                	sub    %esi,%eax
56e726:	79 17                	jns    0x56e73f
56e728:	68 3b 01 00 00       	push   $0x13b
56e72d:	68 3f 0d 6a 00       	push   $0x6a0d3f
56e732:	68 1e 0d 6a 00       	push   $0x6a0d1e
56e737:	e8 04 c4 fe ff       	call   0x55ab40
56e73c:	83 c4 0c             	add    $0xc,%esp
56e73f:	2b fe                	sub    %esi,%edi
56e741:	8d 95 e8 bf ff ff    	lea    -0x4018(%ebp),%edx
56e747:	83 c7 03             	add    $0x3,%edi
56e74a:	89 55 f8             	mov    %edx,-0x8(%ebp)
56e74d:	c1 ff 02             	sar    $0x2,%edi
56e750:	8b f7                	mov    %edi,%esi
56e752:	81 fe 00 10 00 00    	cmp    $0x1000,%esi
56e758:	7e 16                	jle    0x56e770
56e75a:	8b c6                	mov    %esi,%eax
56e75c:	c1 e0 02             	shl    $0x2,%eax
56e75f:	e8 18 9c 00 00       	call   0x57837c
56e764:	89 45 f8             	mov    %eax,-0x8(%ebp)
56e767:	85 c0                	test   %eax,%eax
56e769:	75 05                	jne    0x56e770
56e76b:	e8 d8 c3 fe ff       	call   0x55ab48
56e770:	8b d3                	mov    %ebx,%edx
56e772:	03 d2                	add    %edx,%edx
56e774:	89 55 ec             	mov    %edx,-0x14(%ebp)
56e777:	8b 4d 14             	mov    0x14(%ebp),%ecx
56e77a:	8b 45 18             	mov    0x18(%ebp),%eax
56e77d:	2b c8                	sub    %eax,%ecx
56e77f:	89 4d f4             	mov    %ecx,-0xc(%ebp)
56e782:	8b 55 08             	mov    0x8(%ebp),%edx
56e785:	8b 4d 0c             	mov    0xc(%ebp),%ecx
56e788:	2b d1                	sub    %ecx,%edx
56e78a:	89 55 f0             	mov    %edx,-0x10(%ebp)
56e78d:	8b 45 0c             	mov    0xc(%ebp),%eax
56e790:	8b 55 18             	mov    0x18(%ebp),%edx
56e793:	3b c2                	cmp    %edx,%eax
56e795:	0f 8d d5 00 00 00    	jge    0x56e870
56e79b:	8b 4d f8             	mov    -0x8(%ebp),%ecx
56e79e:	89 4d e8             	mov    %ecx,-0x18(%ebp)
56e7a1:	8b 55 f4             	mov    -0xc(%ebp),%edx
56e7a4:	8b 4d 10             	mov    0x10(%ebp),%ecx
56e7a7:	42                   	inc    %edx
56e7a8:	8b 45 fc             	mov    -0x4(%ebp),%eax
56e7ab:	d1 fa                	sar    $1,%edx
56e7ad:	eb 1e                	jmp    0x56e7cd
56e7af:	8b 75 e8             	mov    -0x18(%ebp),%esi
56e7b2:	8b 38                	mov    (%eax),%edi
56e7b4:	89 3e                	mov    %edi,(%esi)
56e7b6:	8b 31                	mov    (%ecx),%esi
56e7b8:	89 30                	mov    %esi,(%eax)
56e7ba:	83 45 e8 04          	addl   $0x4,-0x18(%ebp)
56e7be:	8b 75 ec             	mov    -0x14(%ebp),%esi
56e7c1:	c1 e6 02             	shl    $0x2,%esi
56e7c4:	03 c6                	add    %esi,%eax
56e7c6:	8b f3                	mov    %ebx,%esi
56e7c8:	c1 e6 02             	shl    $0x2,%esi
56e7cb:	03 ce                	add    %esi,%ecx
56e7cd:	8b f2                	mov    %edx,%esi
56e7cf:	83 c2 ff             	add    $0xffffffff,%edx
56e7d2:	85 f6                	test   %esi,%esi
56e7d4:	7f d9                	jg     0x56e7af
56e7d6:	8b 55 f4             	mov    -0xc(%ebp),%edx
56e7d9:	42                   	inc    %edx
56e7da:	d1 fa                	sar    $1,%edx
56e7dc:	52                   	push   %edx
56e7dd:	8b 55 f0             	mov    -0x10(%ebp),%edx
56e7e0:	5e                   	pop    %esi
56e7e1:	2b d6                	sub    %esi,%edx
56e7e3:	eb 13                	jmp    0x56e7f8
56e7e5:	8b 31                	mov    (%ecx),%esi
56e7e7:	89 30                	mov    %esi,(%eax)
56e7e9:	8b 75 ec             	mov    -0x14(%ebp),%esi
56e7ec:	c1 e6 02             	shl    $0x2,%esi
56e7ef:	03 c6                	add    %esi,%eax
56e7f1:	8b f3                	mov    %ebx,%esi
56e7f3:	c1 e6 02             	shl    $0x2,%esi
56e7f6:	03 ce                	add    %esi,%ecx
56e7f8:	8b f2                	mov    %edx,%esi
56e7fa:	83 c2 ff             	add    $0xffffffff,%edx
56e7fd:	85 f6                	test   %esi,%esi
56e7ff:	7f e4                	jg     0x56e7e5
56e801:	8b 55 14             	mov    0x14(%ebp),%edx
56e804:	8b 4d 08             	mov    0x8(%ebp),%ecx
56e807:	3b d1                	cmp    %ecx,%edx
56e809:	7e 04                	jle    0x56e80f
56e80b:	8b d3                	mov    %ebx,%edx
56e80d:	eb 05                	jmp    0x56e814
56e80f:	8b 55 ec             	mov    -0x14(%ebp),%edx
56e812:	03 d3                	add    %ebx,%edx
56e814:	c1 e2 02             	shl    $0x2,%edx
56e817:	2b c2                	sub    %edx,%eax
56e819:	8b 55 f4             	mov    -0xc(%ebp),%edx
56e81c:	4a                   	dec    %edx
56e81d:	8b f2                	mov    %edx,%esi
56e81f:	8b ca                	mov    %edx,%ecx
56e821:	83 e6 01             	and    $0x1,%esi
56e824:	8b 55 1c             	mov    0x1c(%ebp),%edx
56e827:	83 fe 01             	cmp    $0x1,%esi
56e82a:	1b f6                	sbb    %esi,%esi
56e82c:	0f af cb             	imul   %ebx,%ecx
56e82f:	f7 de                	neg    %esi
56e831:	c1 e1 02             	shl    $0x2,%ecx
56e834:	03 ca                	add    %edx,%ecx
56e836:	8b 55 f4             	mov    -0xc(%ebp),%edx
56e839:	eb 27                	jmp    0x56e862
56e83b:	85 f6                	test   %esi,%esi
56e83d:	74 0d                	je     0x56e84c
56e83f:	83 6d e8 04          	subl   $0x4,-0x18(%ebp)
56e843:	8b 7d e8             	mov    -0x18(%ebp),%edi
56e846:	8b 3f                	mov    (%edi),%edi
56e848:	89 38                	mov    %edi,(%eax)
56e84a:	eb 04                	jmp    0x56e850
56e84c:	8b 39                	mov    (%ecx),%edi
56e84e:	89 38                	mov    %edi,(%eax)
56e850:	8b fb                	mov    %ebx,%edi
56e852:	c1 e7 02             	shl    $0x2,%edi
56e855:	2b cf                	sub    %edi,%ecx
56e857:	8b 7d ec             	mov    -0x14(%ebp),%edi
56e85a:	c1 e7 02             	shl    $0x2,%edi
56e85d:	2b c7                	sub    %edi,%eax
56e85f:	83 f6 01             	xor    $0x1,%esi
56e862:	8b fa                	mov    %edx,%edi
56e864:	83 c2 ff             	add    $0xffffffff,%edx
56e867:	85 ff                	test   %edi,%edi
56e869:	7f d0                	jg     0x56e83b
56e86b:	e9 ca 00 00 00       	jmp    0x56e93a
56e870:	8b 45 f4             	mov    -0xc(%ebp),%eax
56e873:	48                   	dec    %eax
56e874:	8b c8                	mov    %eax,%ecx
56e876:	0f af cb             	imul   %ebx,%ecx
56e879:	c1 e1 02             	shl    $0x2,%ecx
56e87c:	8b 55 1c             	mov    0x1c(%ebp),%edx
56e87f:	03 ca                	add    %edx,%ecx
56e881:	03 c0                	add    %eax,%eax
56e883:	f7 eb                	imul   %ebx
56e885:	c1 e0 02             	shl    $0x2,%eax
56e888:	8b 55 fc             	mov    -0x4(%ebp),%edx
56e88b:	03 c2                	add    %edx,%eax
56e88d:	8b 55 f4             	mov    -0xc(%ebp),%edx
56e890:	d1 fa                	sar    $1,%edx
56e892:	8b 75 f8             	mov    -0x8(%ebp),%esi
56e895:	89 75 e8             	mov    %esi,-0x18(%ebp)
56e898:	eb 1e                	jmp    0x56e8b8
56e89a:	8b 75 e8             	mov    -0x18(%ebp),%esi
56e89d:	8b 38                	mov    (%eax),%edi
56e89f:	89 3e                	mov    %edi,(%esi)
56e8a1:	8b 31                	mov    (%ecx),%esi
56e8a3:	89 30                	mov    %esi,(%eax)
56e8a5:	83 45 e8 04          	addl   $0x4,-0x18(%ebp)
56e8a9:	8b 75 ec             	mov    -0x14(%ebp),%esi
56e8ac:	c1 e6 02             	shl    $0x2,%esi
56e8af:	2b c6                	sub    %esi,%eax
56e8b1:	8b f3                	mov    %ebx,%esi
56e8b3:	c1 e6 02             	shl    $0x2,%esi
56e8b6:	2b ce                	sub    %esi,%ecx
56e8b8:	8b f2                	mov    %edx,%esi
56e8ba:	83 c2 ff             	add    $0xffffffff,%edx
56e8bd:	85 f6                	test   %esi,%esi
56e8bf:	7f d9                	jg     0x56e89a
56e8c1:	8b 55 f4             	mov    -0xc(%ebp),%edx
56e8c4:	d1 fa                	sar    $1,%edx
56e8c6:	52                   	push   %edx
56e8c7:	8b 55 f4             	mov    -0xc(%ebp),%edx
56e8ca:	5e                   	pop    %esi
56e8cb:	2b d6                	sub    %esi,%edx
56e8cd:	eb 13                	jmp    0x56e8e2
56e8cf:	8b 31                	mov    (%ecx),%esi
56e8d1:	89 30                	mov    %esi,(%eax)
56e8d3:	8b 75 ec             	mov    -0x14(%ebp),%esi
56e8d6:	c1 e6 02             	shl    $0x2,%esi
56e8d9:	2b c6                	sub    %esi,%eax
56e8db:	8b f3                	mov    %ebx,%esi
56e8dd:	c1 e6 02             	shl    $0x2,%esi
56e8e0:	2b ce                	sub    %esi,%ecx
56e8e2:	8b f2                	mov    %edx,%esi