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
56e8e4:	83 c2 ff             	add    $0xffffffff,%edx
56e8e7:	85 f6                	test   %esi,%esi
56e8e9:	7f e4                	jg     0x56e8cf
56e8eb:	8b c3                	mov    %ebx,%eax
56e8ed:	8b 55 fc             	mov    -0x4(%ebp),%edx
56e8f0:	c1 e0 02             	shl    $0x2,%eax
56e8f3:	8b 75 f4             	mov    -0xc(%ebp),%esi
56e8f6:	03 c2                	add    %edx,%eax
56e8f8:	83 e6 01             	and    $0x1,%esi
56e8fb:	83 fe 01             	cmp    $0x1,%esi
56e8fe:	8b 55 f0             	mov    -0x10(%ebp),%edx
56e901:	1b f6                	sbb    %esi,%esi
56e903:	8b 4d 10             	mov    0x10(%ebp),%ecx
56e906:	f7 de                	neg    %esi
56e908:	eb 27                	jmp    0x56e931
56e90a:	85 f6                	test   %esi,%esi
56e90c:	74 0d                	je     0x56e91b
56e90e:	83 6d e8 04          	subl   $0x4,-0x18(%ebp)
56e912:	8b 7d e8             	mov    -0x18(%ebp),%edi
56e915:	8b 3f                	mov    (%edi),%edi
56e917:	89 38                	mov    %edi,(%eax)
56e919:	eb 04                	jmp    0x56e91f
56e91b:	8b 39                	mov    (%ecx),%edi
56e91d:	89 38                	mov    %edi,(%eax)
56e91f:	8b fb                	mov    %ebx,%edi
56e921:	c1 e7 02             	shl    $0x2,%edi
56e924:	03 cf                	add    %edi,%ecx
56e926:	8b 7d ec             	mov    -0x14(%ebp),%edi
56e929:	c1 e7 02             	shl    $0x2,%edi
56e92c:	03 c7                	add    %edi,%eax
56e92e:	83 f6 01             	xor    $0x1,%esi
56e931:	8b fa                	mov    %edx,%edi
56e933:	83 c2 ff             	add    $0xffffffff,%edx
56e936:	85 ff                	test   %edi,%edi
56e938:	7f d0                	jg     0x56e90a
56e93a:	8d 85 e8 bf ff ff    	lea    -0x4018(%ebp),%eax
56e940:	8b 55 f8             	mov    -0x8(%ebp),%edx
56e943:	3b c2                	cmp    %edx,%eax
56e945:	74 08                	je     0x56e94f
56e947:	8b 45 f8             	mov    -0x8(%ebp),%eax
56e94a:	e8 35 9a 00 00       	call   0x578384
56e94f:	5f                   	pop    %edi
56e950:	5e                   	pop    %esi
56e951:	5b                   	pop    %ebx
56e952:	8b e5                	mov    %ebp,%esp
56e954:	5d                   	pop    %ebp
56e955:	c2 1c 00             	ret    $0x1c
56e958:	b8 02 00 00 00       	mov    $0x2,%eax
56e95d:	c3                   	ret
56e95e:	90                   	nop
56e95f:	90                   	nop
56e960:	e8 e3 c1 fe ff       	call   0x55ab48
56e965:	83 c8 ff             	or     $0xffffffff,%eax
56e968:	c3                   	ret
56e969:	90                   	nop
56e96a:	90                   	nop
56e96b:	90                   	nop
56e96c:	53                   	push   %ebx
56e96d:	56                   	push   %esi
56e96e:	57                   	push   %edi
56e96f:	8b f9                	mov    %ecx,%edi
56e971:	33 f6                	xor    %esi,%esi
56e973:	33 db                	xor    %ebx,%ebx
56e975:	83 fa 01             	cmp    $0x1,%edx
56e978:	7f 08                	jg     0x56e982
56e97a:	85 d2                	test   %edx,%edx
56e97c:	0f 85 de 00 00 00    	jne    0x56ea60
56e982:	6a 01                	push   $0x1
56e984:	b9 02 00 00 00       	mov    $0x2,%ecx
56e989:	33 d2                	xor    %edx,%edx
56e98b:	83 c8 ff             	or     $0xffffffff,%eax
56e98e:	e8 c5 92 00 00       	call   0x577c58
56e993:	8b f0                	mov    %eax,%esi
56e995:	85 c0                	test   %eax,%eax
56e997:	0f 84 28 01 00 00    	je     0x56eac5
56e99d:	8b 46 1c             	mov    0x1c(%esi),%eax
56e9a0:	8b 4e 04             	mov    0x4(%esi),%ecx
56e9a3:	83 ca ff             	or     $0xffffffff,%edx
56e9a6:	2b d1                	sub    %ecx,%edx
56e9a8:	8b 08                	mov    (%eax),%ecx
56e9aa:	c7 04 91 00 10 00 00 	movl   $0x1000,(%ecx,%edx,4)
56e9b1:	33 d2                	xor    %edx,%edx
56e9b3:	8b 4e 1c             	mov    0x1c(%esi),%ecx
56e9b6:	8b 46 04             	mov    0x4(%esi),%eax
56e9b9:	2b d0                	sub    %eax,%edx
56e9bb:	8b 01                	mov    (%ecx),%eax
56e9bd:	c7 04 90 00 20 00 00 	movl   $0x2000,(%eax,%edx,4)
56e9c4:	ba 01 00 00 00       	mov    $0x1,%edx
56e9c9:	8b 46 1c             	mov    0x1c(%esi),%eax
56e9cc:	8b 4e 04             	mov    0x4(%esi),%ecx
56e9cf:	2b d1                	sub    %ecx,%edx
56e9d1:	8b 08                	mov    (%eax),%ecx
56e9d3:	c7 04 91 00 10 00 00 	movl   $0x1000,(%ecx,%edx,4)
56e9da:	33 d2                	xor    %edx,%edx
56e9dc:	83 c8 ff             	or     $0xffffffff,%eax
56e9df:	b9 04 00 00 00       	mov    $0x4,%ecx
56e9e4:	6a 01                	push   $0x1
56e9e6:	e8 6d 92 00 00       	call   0x577c58
56e9eb:	8b d8                	mov    %eax,%ebx
56e9ed:	85 c0                	test   %eax,%eax
56e9ef:	0f 84 d0 00 00 00    	je     0x56eac5
56e9f5:	8b 43 1c             	mov    0x1c(%ebx),%eax
56e9f8:	8b 4b 04             	mov    0x4(%ebx),%ecx
56e9fb:	83 ca ff             	or     $0xffffffff,%edx
56e9fe:	2b d1                	sub    %ecx,%edx
56ea00:	8b 08                	mov    (%eax),%ecx
56ea02:	c7 04 91 00 fc ff ff 	movl   $0xfffffc00,(%ecx,%edx,4)
56ea09:	33 d2                	xor    %edx,%edx
56ea0b:	8b 4b 1c             	mov    0x1c(%ebx),%ecx
56ea0e:	8b 43 04             	mov    0x4(%ebx),%eax
56ea11:	2b d0                	sub    %eax,%edx
56ea13:	8b 01                	mov    (%ecx),%eax
56ea15:	c7 04 90 00 f8 ff ff 	movl   $0xfffff800,(%eax,%edx,4)
56ea1c:	ba 01 00 00 00       	mov    $0x1,%edx
56ea21:	8b 43 1c             	mov    0x1c(%ebx),%eax
56ea24:	8b 4b 04             	mov    0x4(%ebx),%ecx
56ea27:	2b d1                	sub    %ecx,%edx
56ea29:	8b 08                	mov    (%eax),%ecx
56ea2b:	c7 04 91 00 18 00 00 	movl   $0x1800,(%ecx,%edx,4)
56ea32:	ba 02 00 00 00       	mov    $0x2,%edx
56ea37:	8b 4b 1c             	mov    0x1c(%ebx),%ecx
56ea3a:	8b 43 04             	mov    0x4(%ebx),%eax
56ea3d:	2b d0                	sub    %eax,%edx
56ea3f:	8b 01                	mov    (%ecx),%eax
56ea41:	c7 04 90 00 f8 ff ff 	movl   $0xfffff800,(%eax,%edx,4)
56ea48:	ba 03 00 00 00       	mov    $0x3,%edx
56ea4d:	8b 43 1c             	mov    0x1c(%ebx),%eax
56ea50:	8b 4b 04             	mov    0x4(%ebx),%ecx
56ea53:	2b d1                	sub    %ecx,%edx
56ea55:	8b 08                	mov    (%eax),%ecx
56ea57:	c7 04 91 00 fc ff ff 	movl   $0xfffffc00,(%ecx,%edx,4)
56ea5e:	eb 5c                	jmp    0x56eabc
56ea60:	4a                   	dec    %edx
56ea61:	75 54                	jne    0x56eab7
56ea63:	6a 01                	push   $0x1
56ea65:	b9 01 00 00 00       	mov    $0x1,%ecx
56ea6a:	33 d2                	xor    %edx,%edx
56ea6c:	33 c0                	xor    %eax,%eax
56ea6e:	e8 e5 91 00 00       	call   0x577c58
56ea73:	8b f0                	mov    %eax,%esi
56ea75:	85 c0                	test   %eax,%eax
56ea77:	74 4c                	je     0x56eac5
56ea79:	8b 46 1c             	mov    0x1c(%esi),%eax
56ea7c:	8b 4e 04             	mov    0x4(%esi),%ecx
56ea7f:	33 d2                	xor    %edx,%edx
56ea81:	2b d1                	sub    %ecx,%edx
56ea83:	8b 08                	mov    (%eax),%ecx
56ea85:	c7 04 91 00 20 00 00 	movl   $0x2000,(%ecx,%edx,4)
56ea8c:	33 d2                	xor    %edx,%edx
56ea8e:	33 c0                	xor    %eax,%eax
56ea90:	b9 01 00 00 00       	mov    $0x1,%ecx
56ea95:	6a 01                	push   $0x1
56ea97:	e8 bc 91 00 00       	call   0x577c58
56ea9c:	8b d8                	mov    %eax,%ebx
56ea9e:	85 c0                	test   %eax,%eax
56eaa0:	74 23                	je     0x56eac5
56eaa2:	8b 43 1c             	mov    0x1c(%ebx),%eax
56eaa5:	8b 4b 04             	mov    0x4(%ebx),%ecx
56eaa8:	33 d2                	xor    %edx,%edx
56eaaa:	2b d1                	sub    %ecx,%edx
56eaac:	8b 08                	mov    (%eax),%ecx
56eaae:	c7 04 91 00 40 00 00 	movl   $0x4000,(%ecx,%edx,4)
56eab5:	eb 05                	jmp    0x56eabc
56eab7:	e8 8c c0 fe ff       	call   0x55ab48
56eabc:	89 37                	mov    %esi,(%edi)
56eabe:	89 5f 04             	mov    %ebx,0x4(%edi)
56eac1:	33 c0                	xor    %eax,%eax
56eac3:	eb 19                	jmp    0x56eade
56eac5:	85 f6                	test   %esi,%esi
56eac7:	74 07                	je     0x56ead0
56eac9:	8b c6                	mov    %esi,%eax
56eacb:	e8 c4 92 00 00       	call   0x577d94
56ead0:	85 db                	test   %ebx,%ebx
56ead2:	74 07                	je     0x56eadb
56ead4:	8b c3                	mov    %ebx,%eax