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
56f811:	8b fa                	mov    %edx,%edi
56f813:	33 db                	xor    %ebx,%ebx
56f815:	56                   	push   %esi
56f816:	ff 75 10             	push   0x10(%ebp)
56f819:	e8 22 3a f4 ff       	call   0x4b3240
56f81e:	83 c4 08             	add    $0x8,%esp
56f821:	4e                   	dec    %esi
56f822:	83 ef 01             	sub    $0x1,%edi
56f825:	8d 1c 58             	lea    (%eax,%ebx,2),%ebx
56f828:	79 eb                	jns    0x56f815
56f82a:	8b 7d ec             	mov    -0x14(%ebp),%edi
56f82d:	89 5d d8             	mov    %ebx,-0x28(%ebp)
56f830:	8b 5d f0             	mov    -0x10(%ebp),%ebx
56f833:	8b 4d d8             	mov    -0x28(%ebp),%ecx
56f836:	53                   	push   %ebx
56f837:	51                   	push   %ecx
56f838:	ff 75 f4             	push   -0xc(%ebp)
56f83b:	8d 45 c0             	lea    -0x40(%ebp),%eax
56f83e:	ff 75 f8             	push   -0x8(%ebp)
56f841:	50                   	push   %eax
56f842:	e8 c9 08 00 00       	call   0x570110
56f847:	83 c4 14             	add    $0x14,%esp
56f84a:	85 c0                	test   %eax,%eax
56f84c:	0f 84 a8 00 00 00    	je     0x56f8fa
56f852:	85 f6                	test   %esi,%esi
56f854:	0f 88 7e 00 00 00    	js     0x56f8d8
56f85a:	66 0f 1f 44 00 00    	nopw   0x0(%eax,%eax,1)
56f860:	8b 45 f0             	mov    -0x10(%ebp),%eax
56f863:	33 db                	xor    %ebx,%ebx
56f865:	33 ff                	xor    %edi,%edi
56f867:	85 c0                	test   %eax,%eax
56f869:	7e 35                	jle    0x56f8a0
56f86b:	0f 1f 44 00 00       	nopl   0x0(%eax,%eax,1)
56f870:	ff 75 18             	push   0x18(%ebp)
56f873:	8d 45 c0             	lea    -0x40(%ebp),%eax
56f876:	ff 75 ec             	push   -0x14(%ebp)
56f879:	50                   	push   %eax
56f87a:	50                   	push   %eax
56f87b:	50                   	push   %eax
56f87c:	e8 9f 16 00 00       	call   0x570f20
56f881:	83 c4 14             	add    $0x14,%esp
56f884:	85 c0                	test   %eax,%eax
56f886:	74 72                	je     0x56f8fa
56f888:	56                   	push   %esi
56f889:	ff 75 10             	push   0x10(%ebp)
56f88c:	e8 af 39 f4 ff       	call   0x4b3240
56f891:	47                   	inc    %edi
56f892:	83 c4 08             	add    $0x8,%esp
56f895:	4e                   	dec    %esi
56f896:	8d 1c 58             	lea    (%eax,%ebx,2),%ebx
56f899:	8b 45 f0             	mov    -0x10(%ebp),%eax
56f89c:	3b f8                	cmp    %eax,%edi
56f89e:	7c d0                	jl     0x56f870
56f8a0:	50                   	push   %eax
56f8a1:	53                   	push   %ebx
56f8a2:	ff 75 f4             	push   -0xc(%ebp)
56f8a5:	8d 45 a0             	lea    -0x60(%ebp),%eax
56f8a8:	ff 75 f8             	push   -0x8(%ebp)
56f8ab:	50                   	push   %eax
56f8ac:	e8 5f 08 00 00       	call   0x570110
56f8b1:	83 c4 14             	add    $0x14,%esp
56f8b4:	85 c0                	test   %eax,%eax
56f8b6:	74 42                	je     0x56f8fa
56f8b8:	ff 75 18             	push   0x18(%ebp)
56f8bb:	8b 7d ec             	mov    -0x14(%ebp),%edi
56f8be:	8d 45 a0             	lea    -0x60(%ebp),%eax
56f8c1:	57                   	push   %edi
56f8c2:	50                   	push   %eax
56f8c3:	8d 45 c0             	lea    -0x40(%ebp),%eax
56f8c6:	50                   	push   %eax
56f8c7:	50                   	push   %eax
56f8c8:	e8 53 16 00 00       	call   0x570f20
56f8cd:	83 c4 14             	add    $0x14,%esp
56f8d0:	85 c0                	test   %eax,%eax
56f8d2:	74 26                	je     0x56f8fa
56f8d4:	85 f6                	test   %esi,%esi
56f8d6:	79 88                	jns    0x56f860
56f8d8:	ff 75 18             	push   0x18(%ebp)
56f8db:	8d 45 c0             	lea    -0x40(%ebp),%eax
56f8de:	57                   	push   %edi
56f8df:	50                   	push   %eax
56f8e0:	ff 75 08             	push   0x8(%ebp)
56f8e3:	e8 38 13 00 00       	call   0x570c20
56f8e8:	33 c9                	xor    %ecx,%ecx
56f8ea:	83 c4 10             	add    $0x10,%esp
56f8ed:	85 c0                	test   %eax,%eax
56f8ef:	b8 01 00 00 00       	mov    $0x1,%eax
56f8f4:	0f 45 c8             	cmovne %eax,%ecx
56f8f7:	89 4d b4             	mov    %ecx,-0x4c(%ebp)
56f8fa:	83 7d 1c 00          	cmpl   $0x0,0x1c(%ebp)
56f8fe:	75 10                	jne    0x56f910
56f900:	8b 7d ec             	mov    -0x14(%ebp),%edi
56f903:	85 ff                	test   %edi,%edi
56f905:	74 09                	je     0x56f910
56f907:	57                   	push   %edi
56f908:	e8 33 10 00 00       	call   0x570940
56f90d:	83 c4 04             	add    $0x4,%esp
56f910:	8b 45 f4             	mov    -0xc(%ebp),%eax
56f913:	85 c0                	test   %eax,%eax
56f915:	74 1c                	je     0x56f933
56f917:	ff 75 d4             	push   -0x2c(%ebp)
56f91a:	50                   	push   %eax
56f91b:	e8 30 0a f3 ff       	call   0x4a0350
56f920:	8b 45 dc             	mov    -0x24(%ebp),%eax
56f923:	83 c4 08             	add    $0x8,%esp
56f926:	85 c0                	test   %eax,%eax
56f928:	74 09                	je     0x56f933
56f92a:	50                   	push   %eax
56f92b:	e8 00 08 f3 ff       	call   0x4a0130
56f930:	83 c4 04             	add    $0x4,%esp
56f933:	ff 75 18             	push   0x18(%ebp)
56f936:	e8 15 84 f6 ff       	call   0x4d7d50
56f93b:	8b 45 b4             	mov    -0x4c(%ebp),%eax
56f93e:	83 c4 04             	add    $0x4,%esp
56f941:	8d 65 94             	lea    -0x6c(%ebp),%esp
56f944:	5f                   	pop    %edi
56f945:	5e                   	pop    %esi
56f946:	5b                   	pop    %ebx
56f947:	8b 4d fc             	mov    -0x4(%ebp),%ecx
56f94a:	33 cd                	xor    %ebp,%ecx
56f94c:	e8 89 1b 07 00       	call   0x5e14da
56f951:	8b e5                	mov    %ebp,%esp
56f953:	5d                   	pop    %ebp
56f954:	c3                   	ret
56f955:	68 cd 02 00 00       	push   $0x2cd
56f95a:	68 88 c9 6b 00       	push   $0x6bc988
56f95f:	6a 66                	push   $0x66
56f961:	6a 7c                	push   $0x7c
56f963:	6a 03                	push   $0x3
56f965:	e8 36 1b f3 ff       	call   0x4a14a0
56f96a:	83 c4 14             	add    $0x14,%esp
56f96d:	33 c0                	xor    %eax,%eax
56f96f:	8d 65 94             	lea    -0x6c(%ebp),%esp
56f972:	5f                   	pop    %edi
56f973:	5e                   	pop    %esi
56f974:	5b                   	pop    %ebx
56f975:	8b 4d fc             	mov    -0x4(%ebp),%ecx
56f978:	33 cd                	xor    %ebp,%ecx
56f97a:	e8 5b 1b 07 00       	call   0x5e14da
56f97f:	8b e5                	mov    %ebp,%esp
56f981:	5d                   	pop    %ebp
56f982:	c3                   	ret
56f983:	cc                   	int3
56f984:	cc                   	int3
56f985:	cc                   	int3
56f986:	cc                   	int3
56f987:	cc                   	int3
56f988:	cc                   	int3
56f989:	cc                   	int3
56f98a:	cc                   	int3
56f98b:	cc                   	int3
56f98c:	cc                   	int3
56f98d:	cc                   	int3
56f98e:	cc                   	int3
56f98f:	cc                   	int3
56f990:	b8 14 00 00 00       	mov    $0x14,%eax
56f995:	e8 56 1b 07 00       	call   0x5e14f0
56f99a:	55                   	push   %ebp
56f99b:	57                   	push   %edi
56f99c:	8b 7c 24 28          	mov    0x28(%esp),%edi
56f9a0:	33 ed                	xor    %ebp,%ebp
56f9a2:	89 6c 24 18          	mov    %ebp,0x18(%esp)
56f9a6:	f6 47 10 04          	testb  $0x4,0x10(%edi)
56f9aa:	74 21                	je     0x56f9cd
56f9ac:	68 c6 04 00 00       	push   $0x4c6
56f9b1:	68 88 c9 6b 00       	push   $0x6bc988
56f9b6:	6a 42                	push   $0x42
56f9b8:	6a 75                	push   $0x75
56f9ba:	6a 03                	push   $0x3
56f9bc:	e8 df 1a f3 ff       	call   0x4a14a0
56f9c1:	83 c4 14             	add    $0x14,%esp
56f9c4:	83 c8 ff             	or     $0xffffffff,%eax
56f9c7:	5f                   	pop    %edi
56f9c8:	5d                   	pop    %ebp
56f9c9:	83 c4 14             	add    $0x14,%esp