56f400:	39 73 0c             	cmp    %esi,0xc(%ebx)
56f403:	75 28                	jne    0x56f42d
56f405:	6a 00                	push   $0x0
56f407:	ff 75 08             	push   0x8(%ebp)
56f40a:	be 01 00 00 00       	mov    $0x1,%esi
56f40f:	e8 dc 40 f4 ff       	call   0x4b34f0
56f414:	83 c4 08             	add    $0x8,%esp
56f417:	8b c6                	mov    %esi,%eax
56f419:	8d 65 94             	lea    -0x6c(%ebp),%esp
56f41c:	5f                   	pop    %edi
56f41d:	5e                   	pop    %esi
56f41e:	5b                   	pop    %ebx
56f41f:	8b 4d fc             	mov    -0x4(%ebp),%ecx
56f422:	33 cd                	xor    %ebp,%ecx
56f424:	e8 b1 20 07 00       	call   0x5e14da
56f429:	8b e5                	mov    %ebp,%esp
56f42b:	5d                   	pop    %ebp
56f42c:	c3                   	ret
56f42d:	6a 01                	push   $0x1
56f42f:	ff 75 08             	push   0x8(%ebp)
56f432:	e8 b9 40 f4 ff       	call   0x4b34f0
56f437:	8b f0                	mov    %eax,%esi
56f439:	83 c4 08             	add    $0x8,%esp
56f43c:	8d 65 94             	lea    -0x6c(%ebp),%esp
56f43f:	5f                   	pop    %edi
56f440:	5e                   	pop    %esi
56f441:	5b                   	pop    %ebx
56f442:	8b 4d fc             	mov    -0x4(%ebp),%ecx
56f445:	33 cd                	xor    %ebp,%ecx
56f447:	e8 8e 20 07 00       	call   0x5e14da
56f44c:	8b e5                	mov    %ebp,%esp
56f44e:	5d                   	pop    %ebp
56f44f:	c3                   	ret
56f450:	ff 75 18             	push   0x18(%ebp)
56f453:	e8 48 8a f6 ff       	call   0x4d7ea0
56f458:	8b 45 1c             	mov    0x1c(%ebp),%eax
56f45b:	83 c4 04             	add    $0x4,%esp
56f45e:	85 c0                	test   %eax,%eax
56f460:	74 07                	je     0x56f469
56f462:	8b f8                	mov    %eax,%edi
56f464:	89 7d ec             	mov    %edi,-0x14(%ebp)
56f467:	eb 27                	jmp    0x56f490
56f469:	e8 12 15 00 00       	call   0x570980
56f46e:	8b f8                	mov    %eax,%edi
56f470:	89 7d ec             	mov    %edi,-0x14(%ebp)
56f473:	85 ff                	test   %edi,%edi
56f475:	0f 84 b8 04 00 00    	je     0x56f933
56f47b:	ff 75 18             	push   0x18(%ebp)
56f47e:	53                   	push   %ebx
56f47f:	57                   	push   %edi
56f480:	e8 5b 15 00 00       	call   0x5709e0
56f485:	83 c4 0c             	add    $0xc,%esp
56f488:	85 c0                	test   %eax,%eax
56f48a:	0f 84 73 04 00 00    	je     0x56f903
56f490:	81 fe a9 03 00 00    	cmp    $0x3a9,%esi
56f496:	7e 07                	jle    0x56f49f
56f498:	bb 06 00 00 00       	mov    $0x6,%ebx
56f49d:	eb 2a                	jmp    0x56f4c9
56f49f:	81 fe 32 01 00 00    	cmp    $0x132,%esi
56f4a5:	7e 07                	jle    0x56f4ae
56f4a7:	bb 05 00 00 00       	mov    $0x5,%ebx
56f4ac:	eb 1b                	jmp    0x56f4c9
56f4ae:	83 fe 59             	cmp    $0x59,%esi
56f4b1:	7e 07                	jle    0x56f4ba
56f4b3:	bb 04 00 00 00       	mov    $0x4,%ebx
56f4b8:	eb 0f                	jmp    0x56f4c9
56f4ba:	33 db                	xor    %ebx,%ebx
56f4bc:	83 fe 16             	cmp    $0x16,%esi
56f4bf:	0f 9f c3             	setg   %bl
56f4c2:	8d 1c 5d 01 00 00 00 	lea    0x1(,%ebx,2),%ebx
56f4c9:	8b 55 f8             	mov    -0x8(%ebp),%edx
56f4cc:	8b cb                	mov    %ebx,%ecx
56f4ce:	b8 01 00 00 00       	mov    $0x1,%eax
56f4d3:	89 5d f0             	mov    %ebx,-0x10(%ebp)
56f4d6:	d3 e0                	shl    %cl,%eax
56f4d8:	89 45 e0             	mov    %eax,-0x20(%ebp)
56f4db:	8b 4d e0             	mov    -0x20(%ebp),%ecx
56f4de:	8d 04 12             	lea    (%edx,%edx,1),%eax
56f4e1:	3b c1                	cmp    %ecx,%eax
56f4e3:	0f 4f c8             	cmovg  %eax,%ecx
56f4e6:	8b 45 e0             	mov    -0x20(%ebp),%eax
56f4e9:	0f af c2             	imul   %edx,%eax
56f4ec:	89 45 e4             	mov    %eax,-0x1c(%ebp)
56f4ef:	03 c1                	add    %ecx,%eax
56f4f1:	c1 e0 02             	shl    $0x2,%eax
56f4f4:	89 45 d4             	mov    %eax,-0x2c(%ebp)
56f4f7:	3d 00 0c 00 00       	cmp    $0xc00,%eax
56f4fc:	7d 0f                	jge    0x56f50d
56f4fe:	83 c0 40             	add    $0x40,%eax
56f501:	e8 4a 29 07 00       	call   0x5e1e50
56f506:	8b cc                	mov    %esp,%ecx
56f508:	89 4d dc             	mov    %ecx,-0x24(%ebp)
56f50b:	eb 23                	jmp    0x56f530
56f50d:	68 2e 03 00 00       	push   $0x32e
56f512:	83 c0 40             	add    $0x40,%eax
56f515:	68 88 c9 6b 00       	push   $0x6bc988
56f51a:	50                   	push   %eax
56f51b:	e8 90 0c f3 ff       	call   0x4a01b0
56f520:	8b c8                	mov    %eax,%ecx
56f522:	83 c4 0c             	add    $0xc,%esp
56f525:	89 4d dc             	mov    %ecx,-0x24(%ebp)
56f528:	85 c9                	test   %ecx,%ecx
56f52a:	0f 84 ca 03 00 00    	je     0x56f8fa
56f530:	ff 75 d4             	push   -0x2c(%ebp)
56f533:	8b c1                	mov    %ecx,%eax
56f535:	83 e0 3f             	and    $0x3f,%eax
56f538:	2b c8                	sub    %eax,%ecx
56f53a:	83 c1 40             	add    $0x40,%ecx
56f53d:	6a 00                	push   $0x0
56f53f:	51                   	push   %ecx
56f540:	89 4d f4             	mov    %ecx,-0xc(%ebp)
56f543:	e8 b8 44 07 00       	call   0x5e3a00
56f548:	8b 45 dc             	mov    -0x24(%ebp),%eax
56f54b:	33 c9                	xor    %ecx,%ecx
56f54d:	8b 55 f8             	mov    -0x8(%ebp),%edx
56f550:	83 c4 0c             	add    $0xc,%esp
56f553:	81 7d d4 00 0c 00 00 	cmpl   $0xc00,-0x2c(%ebp)
56f55a:	c7 45 a4 00 00 00 00 	movl   $0x0,-0x5c(%ebp)
56f561:	0f 4c c1             	cmovl  %ecx,%eax
56f564:	c7 45 c4 00 00 00 00 	movl   $0x0,-0x3c(%ebp)
56f56b:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
56f56e:	89 45 dc             	mov    %eax,-0x24(%ebp)
56f571:	8b 45 f4             	mov    -0xc(%ebp),%eax
56f574:	89 55 a8             	mov    %edx,-0x58(%ebp)
56f577:	89 55 c8             	mov    %edx,-0x38(%ebp)
56f57a:	c7 45 ac 00 00 00 00 	movl   $0x0,-0x54(%ebp)
56f581:	8d 04 88             	lea    (%eax,%ecx,4),%eax
56f584:	c7 45 cc 00 00 00 00 	movl   $0x0,-0x34(%ebp)
56f58b:	8b 4d 14             	mov    0x14(%ebp),%ecx
56f58e:	89 45 c0             	mov    %eax,-0x40(%ebp)
56f591:	89 45 e4             	mov    %eax,-0x1c(%ebp)
56f594:	8d 04 90             	lea    (%eax,%edx,4),%eax
56f597:	89 45 a0             	mov    %eax,-0x60(%ebp)
56f59a:	8b 01                	mov    (%ecx),%eax
56f59c:	c7 45 b0 02 00 00 00 	movl   $0x2,-0x50(%ebp)
56f5a3:	c7 45 d0 02 00 00 00 	movl   $0x2,-0x30(%ebp)
56f5aa:	f7 44 90 fc 00 00 00 	testl  $0x80000000,-0x4(%eax,%edx,4)
56f5b1:	80
56f5b2:	0f 84 de 00 00 00    	je     0x56f696
56f5b8:	8b 00                	mov    (%eax),%eax
56f5ba:	8b 55 e4             	mov    -0x1c(%ebp),%edx
56f5bd:	f7 d8                	neg    %eax
56f5bf:	89 02                	mov    %eax,(%edx)
56f5c1:	ba 01 00 00 00       	mov    $0x1,%edx
56f5c6:	8b 45 f8             	mov    -0x8(%ebp),%eax
56f5c9:	8d 78 ff             	lea    -0x1(%eax),%edi
56f5cc:	89 7d e8             	mov    %edi,-0x18(%ebp)
56f5cf:	8b 7d ec             	mov    -0x14(%ebp),%edi
56f5d2:	3b c2                	cmp    %edx,%eax
56f5d4:	0f 8e b4 00 00 00    	jle    0x56f68e
56f5da:	83 7d e8 08          	cmpl   $0x8,-0x18(%ebp)
56f5de:	0f 82 87 00 00 00    	jb     0x56f66b
56f5e4:	8b 01                	mov    (%ecx),%eax
56f5e6:	89 45 e4             	mov    %eax,-0x1c(%ebp)
56f5e9:	8b 45 c0             	mov    -0x40(%ebp),%eax
56f5ec:	8d 58 04             	lea    0x4(%eax),%ebx
56f5ef:	89 5d b8             	mov    %ebx,-0x48(%ebp)
56f5f2:	8b 5d e8             	mov    -0x18(%ebp),%ebx
56f5f5:	8d 04 98             	lea    (%eax,%ebx,4),%eax
56f5f8:	8b 5d e4             	mov    -0x1c(%ebp),%ebx
56f5fb:	89 45 bc             	mov    %eax,-0x44(%ebp)
56f5fe:	8d 43 04             	lea    0x4(%ebx),%eax
56f601:	89 45 d8             	mov    %eax,-0x28(%ebp)
56f604:	8b 45 e8             	mov    -0x18(%ebp),%eax
56f607:	8d 04 83             	lea    (%ebx,%eax,4),%eax
56f60a:	8b 5d f0             	mov    -0x10(%ebp),%ebx
56f60d:	39 45 b8             	cmp    %eax,-0x48(%ebp)
56f610:	8b 45 bc             	mov    -0x44(%ebp),%eax
56f613:	77 05                	ja     0x56f61a
56f615:	3b 45 d8             	cmp    -0x28(%ebp),%eax
56f618:	73 51                	jae    0x56f66b
56f61a:	39 4d b8             	cmp    %ecx,-0x48(%ebp)
56f61d:	77 04                	ja     0x56f623
56f61f:	3b c1                	cmp    %ecx,%eax
56f621:	73 48                	jae    0x56f66b
56f623:	8b 45 e8             	mov    -0x18(%ebp),%eax
56f626:	25 07 00 00 80       	and    $0x80000007,%eax
56f62b:	79 05                	jns    0x56f632
56f62d:	48                   	dec    %eax
56f62e:	83 c8 f8             	or     $0xfffffff8,%eax
56f631:	40                   	inc    %eax
56f632:	8b 4d f8             	mov    -0x8(%ebp),%ecx
56f635:	0f 10 0d 60 0f 6b 00 	movups 0x6b0f60,%xmm1
56f63c:	8b 7d e4             	mov    -0x1c(%ebp),%edi
56f63f:	2b c8                	sub    %eax,%ecx
56f641:	0f 10 04 97          	movups (%edi,%edx,4),%xmm0
56f645:	8b 45 c0             	mov    -0x40(%ebp),%eax
56f648:	66 0f df c1          	pandn  %xmm1,%xmm0
56f64c:	0f 11 04 90          	movups %xmm0,(%eax,%edx,4)
56f650:	8b 45 c0             	mov    -0x40(%ebp),%eax
56f653:	0f 10 44 97 10       	movups 0x10(%edi,%edx,4),%xmm0
56f658:	66 0f df c1          	pandn  %xmm1,%xmm0
56f65c:	0f 11 44 90 10       	movups %xmm0,0x10(%eax,%edx,4)
56f661:	83 c2 08             	add    $0x8,%edx
56f664:	3b d1                	cmp    %ecx,%edx
56f666:	7c d9                	jl     0x56f641
56f668:	8b 7d ec             	mov    -0x14(%ebp),%edi
56f66b:	3b 55 f8             	cmp    -0x8(%ebp),%edx
56f66e:	7d 1e                	jge    0x56f68e
56f670:	8b 7d 14             	mov    0x14(%ebp),%edi
56f673:	8b 5d f8             	mov    -0x8(%ebp),%ebx
56f676:	8b 07                	mov    (%edi),%eax
56f678:	8b 0c 90             	mov    (%eax,%edx,4),%ecx
56f67b:	8b 45 c0             	mov    -0x40(%ebp),%eax
56f67e:	f7 d1                	not    %ecx
56f680:	89 0c 90             	mov    %ecx,(%eax,%edx,4)
56f683:	42                   	inc    %edx
56f684:	3b d3                	cmp    %ebx,%edx
56f686:	7c ee                	jl     0x56f676
56f688:	8b 5d f0             	mov    -0x10(%ebp),%ebx
56f68b:	8b 7d ec             	mov    -0x14(%ebp),%edi
56f68e:	8b 55 f8             	mov    -0x8(%ebp),%edx
56f691:	89 55 c4             	mov    %edx,-0x3c(%ebp)
56f694:	eb 22                	jmp    0x56f6b8
56f696:	ff 75 18             	push   0x18(%ebp)
56f699:	8d 47 04             	lea    0x4(%edi),%eax
56f69c:	57                   	push   %edi
56f69d:	50                   	push   %eax
56f69e:	e8 fd 3e f4 ff       	call   0x4b35a0
56f6a3:	50                   	push   %eax
56f6a4:	8d 45 c0             	lea    -0x40(%ebp),%eax
56f6a7:	50                   	push   %eax
56f6a8:	e8 73 18 00 00       	call   0x570f20
56f6ad:	83 c4 14             	add    $0x14,%esp
56f6b0:	85 c0                	test   %eax,%eax
56f6b2:	0f 84 42 02 00 00    	je     0x56f8fa
56f6b8:	8b 45 0c             	mov    0xc(%ebp),%eax
56f6bb:	83 78 0c 00          	cmpl   $0x0,0xc(%eax)
56f6bf:	75 33                	jne    0x56f6f4
56f6c1:	ff 75 14             	push   0x14(%ebp)
56f6c4:	50                   	push   %eax
56f6c5:	e8 86 3e f4 ff       	call   0x4b3550
56f6ca:	83 c4 08             	add    $0x8,%esp
56f6cd:	85 c0                	test   %eax,%eax
56f6cf:	79 20                	jns    0x56f6f1
56f6d1:	ff 75 18             	push   0x18(%ebp)
56f6d4:	8d 47 04             	lea    0x4(%edi),%eax
56f6d7:	57                   	push   %edi
56f6d8:	50                   	push   %eax
56f6d9:	ff 75 0c             	push   0xc(%ebp)
56f6dc:	8d 45 a0             	lea    -0x60(%ebp),%eax
56f6df:	50                   	push   %eax
56f6e0:	e8 3b 18 00 00       	call   0x570f20
56f6e5:	83 c4 14             	add    $0x14,%esp
56f6e8:	85 c0                	test   %eax,%eax
56f6ea:	75 42                	jne    0x56f72e
56f6ec:	e9 09 02 00 00       	jmp    0x56f8fa
56f6f1:	8b 45 0c             	mov    0xc(%ebp),%eax
56f6f4:	ff 75 18             	push   0x18(%ebp)
56f6f7:	ff 75 14             	push   0x14(%ebp)
56f6fa:	50                   	push   %eax
56f6fb:	8d 45 a0             	lea    -0x60(%ebp),%eax
56f6fe:	50                   	push   %eax
56f6ff:	6a 00                	push   $0x0
56f701:	e8 9a 0c 00 00       	call   0x5703a0
56f706:	83 c4 14             	add    $0x14,%esp
56f709:	85 c0                	test   %eax,%eax
56f70b:	0f 84 e9 01 00 00    	je     0x56f8fa
56f711:	ff 75 18             	push   0x18(%ebp)
56f714:	8d 47 04             	lea    0x4(%edi),%eax
56f717:	57                   	push   %edi
56f718:	50                   	push   %eax
56f719:	8d 45 a0             	lea    -0x60(%ebp),%eax
56f71c:	50                   	push   %eax
56f71d:	50                   	push   %eax
56f71e:	e8 fd 17 00 00       	call   0x570f20
56f723:	83 c4 14             	add    $0x14,%esp
56f726:	85 c0                	test   %eax,%eax
56f728:	0f 84 cc 01 00 00    	je     0x56f8fa
56f72e:	53                   	push   %ebx
56f72f:	6a 00                	push   $0x0
56f731:	ff 75 f4             	push   -0xc(%ebp)
56f734:	8d 45 c0             	lea    -0x40(%ebp),%eax
56f737:	ff 75 f8             	push   -0x8(%ebp)
56f73a:	50                   	push   %eax
56f73b:	e8 10 0c 00 00       	call   0x570350
56f740:	83 c4 14             	add    $0x14,%esp
56f743:	85 c0                	test   %eax,%eax
56f745:	0f 84 af 01 00 00    	je     0x56f8fa
56f74b:	53                   	push   %ebx
56f74c:	6a 01                	push   $0x1
56f74e:	ff 75 f4             	push   -0xc(%ebp)
56f751:	8d 45 a0             	lea    -0x60(%ebp),%eax
56f754:	ff 75 f8             	push   -0x8(%ebp)
56f757:	50                   	push   %eax
56f758:	e8 f3 0b 00 00       	call   0x570350
56f75d:	83 c4 14             	add    $0x14,%esp
56f760:	85 c0                	test   %eax,%eax
56f762:	0f 84 92 01 00 00    	je     0x56f8fa
56f768:	83 fb 01             	cmp    $0x1,%ebx
56f76b:	0f 8e 91 00 00 00    	jle    0x56f802
56f771:	ff 75 18             	push   0x18(%ebp)
56f774:	8d 45 a0             	lea    -0x60(%ebp),%eax
56f777:	57                   	push   %edi
56f778:	50                   	push   %eax
56f779:	50                   	push   %eax
56f77a:	8d 45 c0             	lea    -0x40(%ebp),%eax
56f77d:	50                   	push   %eax
56f77e:	e8 9d 17 00 00       	call   0x570f20
56f783:	83 c4 14             	add    $0x14,%esp
56f786:	85 c0                	test   %eax,%eax
56f788:	0f 84 6c 01 00 00    	je     0x56f8fa
56f78e:	53                   	push   %ebx
56f78f:	6a 02                	push   $0x2
56f791:	ff 75 f4             	push   -0xc(%ebp)
56f794:	8d 45 c0             	lea    -0x40(%ebp),%eax
56f797:	ff 75 f8             	push   -0x8(%ebp)
56f79a:	50                   	push   %eax
56f79b:	e8 b0 0b 00 00       	call   0x570350
56f7a0:	83 c4 14             	add    $0x14,%esp
56f7a3:	85 c0                	test   %eax,%eax
56f7a5:	0f 84 4f 01 00 00    	je     0x56f8fa
56f7ab:	83 7d e0 03          	cmpl   $0x3,-0x20(%ebp)
56f7af:	c7 45 e8 03 00 00 00 	movl   $0x3,-0x18(%ebp)
56f7b6:	7e 4a                	jle    0x56f802
56f7b8:	ff 75 18             	push   0x18(%ebp)
56f7bb:	8d 45 c0             	lea    -0x40(%ebp),%eax
56f7be:	57                   	push   %edi
56f7bf:	50                   	push   %eax
56f7c0:	8d 45 a0             	lea    -0x60(%ebp),%eax
56f7c3:	50                   	push   %eax
56f7c4:	8d 45 c0             	lea    -0x40(%ebp),%eax
56f7c7:	50                   	push   %eax
56f7c8:	e8 53 17 00 00       	call   0x570f20
56f7cd:	83 c4 14             	add    $0x14,%esp
56f7d0:	85 c0                	test   %eax,%eax
56f7d2:	0f 84 22 01 00 00    	je     0x56f8fa
56f7d8:	53                   	push   %ebx
56f7d9:	ff 75 e8             	push   -0x18(%ebp)
56f7dc:	8d 45 c0             	lea    -0x40(%ebp),%eax
56f7df:	ff 75 f4             	push   -0xc(%ebp)
56f7e2:	ff 75 f8             	push   -0x8(%ebp)
56f7e5:	50                   	push   %eax
56f7e6:	e8 65 0b 00 00       	call   0x570350
56f7eb:	83 c4 14             	add    $0x14,%esp
56f7ee:	85 c0                	test   %eax,%eax
56f7f0:	0f 84 04 01 00 00    	je     0x56f8fa
56f7f6:	8b 45 e8             	mov    -0x18(%ebp),%eax
56f7f9:	40                   	inc    %eax
56f7fa:	89 45 e8             	mov    %eax,-0x18(%ebp)
56f7fd:	3b 45 e0             	cmp    -0x20(%ebp),%eax
56f800:	7c b6                	jl     0x56f7b8
56f802:	4e                   	dec    %esi
56f803:	33 c9                	xor    %ecx,%ecx
56f805:	8b c6                	mov    %esi,%eax
56f807:	99                   	cltd
56f808:	f7 fb                	idiv   %ebx
56f80a:	89 55 d8             	mov    %edx,-0x28(%ebp)
56f80d:	85 d2                	test   %edx,%edx
56f80f:	78 25                	js     0x56f836