5606c5:	8b 46 1c             	mov    0x1c(%esi),%eax
5606c8:	85 c0                	test   %eax,%eax
5606ca:	7d 17                	jge    0x5606e3
5606cc:	68 07 03 00 00       	push   $0x307
5606d1:	68 f1 e9 69 00       	push   $0x69e9f1
5606d6:	68 c5 e9 69 00       	push   $0x69e9c5
5606db:	e8 60 a4 ff ff       	call   0x55ab40
5606e0:	83 c4 0c             	add    $0xc,%esp
5606e3:	8b 4e 1c             	mov    0x1c(%esi),%ecx
5606e6:	b8 01 00 00 00       	mov    $0x1,%eax
5606eb:	d3 e0                	shl    %cl,%eax
5606ed:	8b 56 14             	mov    0x14(%esi),%edx
5606f0:	8b 4e 1c             	mov    0x1c(%esi),%ecx
5606f3:	03 c2                	add    %edx,%eax
5606f5:	48                   	dec    %eax
5606f6:	d3 e8                	shr    %cl,%eax
5606f8:	8b 4e 1c             	mov    0x1c(%esi),%ecx
5606fb:	d3 e0                	shl    %cl,%eax
5606fd:	89 44 24 30          	mov    %eax,0x30(%esp)
560701:	8b 44 24 2c          	mov    0x2c(%esp),%eax
560705:	8b 54 24 24          	mov    0x24(%esp),%edx
560709:	2b c2                	sub    %edx,%eax
56070b:	8b 4e 18             	mov    0x18(%esi),%ecx
56070e:	d3 e8                	shr    %cl,%eax
560710:	89 46 20             	mov    %eax,0x20(%esi)
560713:	8b 44 24 30          	mov    0x30(%esp),%eax
560717:	8b 54 24 28          	mov    0x28(%esp),%edx
56071b:	2b c2                	sub    %edx,%eax
56071d:	8b 4e 1c             	mov    0x1c(%esi),%ecx
560720:	d3 e8                	shr    %cl,%eax
560722:	89 46 24             	mov    %eax,0x24(%esi)
560725:	8b 46 20             	mov    0x20(%esi),%eax
560728:	f7 6e 24             	imull  0x24(%esi)
56072b:	89 46 28             	mov    %eax,0x28(%esi)
56072e:	8b 56 08             	mov    0x8(%esi),%edx
560731:	8b 4e 10             	mov    0x10(%esi),%ecx
560734:	3b d1                	cmp    %ecx,%edx
560736:	73 0a                	jae    0x560742
560738:	8b 46 0c             	mov    0xc(%esi),%eax
56073b:	8b 56 14             	mov    0x14(%esi),%edx
56073e:	3b c2                	cmp    %edx,%eax
560740:	72 19                	jb     0x56075b
560742:	33 c9                	xor    %ecx,%ecx
560744:	89 4e 04             	mov    %ecx,0x4(%esi)
560747:	33 c0                	xor    %eax,%eax
560749:	89 46 28             	mov    %eax,0x28(%esi)
56074c:	33 d2                	xor    %edx,%edx
56074e:	89 56 20             	mov    %edx,0x20(%esi)
560751:	33 c9                	xor    %ecx,%ecx
560753:	89 4e 24             	mov    %ecx,0x24(%esi)
560756:	e9 58 06 00 00       	jmp    0x560db3
56075b:	8b 44 24 10          	mov    0x10(%esp),%eax
56075f:	85 c0                	test   %eax,%eax
560761:	75 2e                	jne    0x560791
560763:	8b 54 24 24          	mov    0x24(%esp),%edx
560767:	89 54 24 34          	mov    %edx,0x34(%esp)
56076b:	8b 4c 24 28          	mov    0x28(%esp),%ecx
56076f:	89 4c 24 38          	mov    %ecx,0x38(%esp)
560773:	8b 44 24 2c          	mov    0x2c(%esp),%eax
560777:	89 44 24 3c          	mov    %eax,0x3c(%esp)
56077b:	8b 54 24 30          	mov    0x30(%esp),%edx
56077f:	89 54 24 40          	mov    %edx,0x40(%esp)
560783:	8b 4e 18             	mov    0x18(%esi),%ecx
560786:	89 4e 2c             	mov    %ecx,0x2c(%esi)
560789:	8b 46 1c             	mov    0x1c(%esi),%eax
56078c:	89 46 30             	mov    %eax,0x30(%esi)
56078f:	eb 46                	jmp    0x5607d7
560791:	8b 54 24 24          	mov    0x24(%esp),%edx
560795:	83 c2 02             	add    $0x2,%edx
560798:	4a                   	dec    %edx
560799:	d1 ea                	shr    $1,%edx
56079b:	89 54 24 34          	mov    %edx,0x34(%esp)
56079f:	8b 4c 24 28          	mov    0x28(%esp),%ecx
5607a3:	83 c1 02             	add    $0x2,%ecx
5607a6:	49                   	dec    %ecx
5607a7:	d1 e9                	shr    $1,%ecx
5607a9:	89 4c 24 38          	mov    %ecx,0x38(%esp)
5607ad:	8b 44 24 2c          	mov    0x2c(%esp),%eax
5607b1:	83 c0 02             	add    $0x2,%eax
5607b4:	48                   	dec    %eax
5607b5:	d1 e8                	shr    $1,%eax
5607b7:	89 44 24 3c          	mov    %eax,0x3c(%esp)
5607bb:	8b 54 24 30          	mov    0x30(%esp),%edx
5607bf:	83 c2 02             	add    $0x2,%edx
5607c2:	4a                   	dec    %edx
5607c3:	d1 ea                	shr    $1,%edx
5607c5:	89 54 24 40          	mov    %edx,0x40(%esp)
5607c9:	8b 4e 18             	mov    0x18(%esi),%ecx
5607cc:	49                   	dec    %ecx
5607cd:	89 4e 2c             	mov    %ecx,0x2c(%esi)
5607d0:	8b 46 1c             	mov    0x1c(%esi),%eax
5607d3:	48                   	dec    %eax
5607d4:	89 46 30             	mov    %eax,0x30(%esi)
5607d7:	8b 54 24 18          	mov    0x18(%esp),%edx
5607db:	33 c9                	xor    %ecx,%ecx
5607dd:	8a 4a 06             	mov    0x6(%edx),%cl
5607e0:	8b 46 2c             	mov    0x2c(%esi),%eax
5607e3:	3b c8                	cmp    %eax,%ecx
5607e5:	7d 0b                	jge    0x5607f2
5607e7:	8b 54 24 18          	mov    0x18(%esp),%edx
5607eb:	33 c9                	xor    %ecx,%ecx
5607ed:	8a 4a 06             	mov    0x6(%edx),%cl
5607f0:	eb 04                	jmp    0x5607f6
5607f2:	66 8b 4e 2c          	mov    0x2c(%esi),%cx
5607f6:	66 89 4e 34          	mov    %cx,0x34(%esi)
5607fa:	8b 44 24 18          	mov    0x18(%esp),%eax
5607fe:	33 d2                	xor    %edx,%edx
560800:	8a 50 07             	mov    0x7(%eax),%dl
560803:	8b 46 30             	mov    0x30(%esi),%eax
560806:	3b d0                	cmp    %eax,%edx
560808:	7d 0b                	jge    0x560815
56080a:	8b 54 24 18          	mov    0x18(%esp),%edx
56080e:	33 c9                	xor    %ecx,%ecx
560810:	8a 4a 07             	mov    0x7(%edx),%cl
560813:	eb 04                	jmp    0x560819
560815:	66 8b 4e 30          	mov    0x30(%esi),%cx
560819:	66 89 4e 36          	mov    %cx,0x36(%esi)
56081d:	8b 44 24 10          	mov    0x10(%esp),%eax
560821:	85 c0                	test   %eax,%eax
560823:	75 07                	jne    0x56082c
560825:	ba 01 00 00 00       	mov    $0x1,%edx
56082a:	eb 05                	jmp    0x560831
56082c:	ba 03 00 00 00       	mov    $0x3,%edx
560831:	89 16                	mov    %edx,(%esi)
560833:	8b 06                	mov    (%esi),%eax
560835:	c1 e0 05             	shl    $0x5,%eax
560838:	e8 3f 7b 01 00       	call   0x57837c
56083d:	89 46 04             	mov    %eax,0x4(%esi)
560840:	85 c0                	test   %eax,%eax
560842:	75 08                	jne    0x56084c
560844:	83 c8 ff             	or     $0xffffffff,%eax
560847:	e9 55 06 00 00       	jmp    0x560ea1
56084c:	33 d2                	xor    %edx,%edx
56084e:	89 54 24 14          	mov    %edx,0x14(%esp)
560852:	8b 7e 04             	mov    0x4(%esi),%edi
560855:	e9 4b 05 00 00       	jmp    0x560da5
56085a:	8b 44 24 10          	mov    0x10(%esp),%eax
56085e:	85 c0                	test   %eax,%eax
560860:	75 04                	jne    0x560866
560862:	33 c0                	xor    %eax,%eax
560864:	eb 10                	jmp    0x560876
560866:	8b 44 24 10          	mov    0x10(%esp),%eax
56086a:	8d 04 40             	lea    (%eax,%eax,2),%eax
56086d:	8b 54 24 14          	mov    0x14(%esp),%edx
560871:	03 c2                	add    %edx,%eax
560873:	83 c0 fe             	add    $0xfffffffe,%eax
560876:	8b d8                	mov    %eax,%ebx
560878:	8d 94 24 8c 00 00 00 	lea    0x8c(%esp),%edx
56087f:	c1 e3 03             	shl    $0x3,%ebx
560882:	8d 1c 9b             	lea    (%ebx,%ebx,4),%ebx
560885:	03 da                	add    %edx,%ebx
560887:	8b 4b 10             	mov    0x10(%ebx),%ecx
56088a:	89 4f 08             	mov    %ecx,0x8(%edi)
56088d:	8b 54 24 18          	mov    0x18(%esp),%edx
560891:	0f b7 44 42 0c       	movzwl 0xc(%edx,%eax,2),%eax
560896:	89 47 0c             	mov    %eax,0xc(%edi)
560899:	8b 4f 08             	mov    0x8(%edi),%ecx
56089c:	51                   	push   %ecx
56089d:	8b 44 24 0c          	mov    0xc(%esp),%eax
5608a1:	8b 4c 24 1c          	mov    0x1c(%esp),%ecx
5608a5:	0f b7 50 14          	movzwl 0x14(%eax),%edx
5608a9:	4a                   	dec    %edx
5608aa:	33 c0                	xor    %eax,%eax
5608ac:	8a 41 08             	mov    0x8(%ecx),%al
5608af:	8b 4c 24 14          	mov    0x14(%esp),%ecx
5608b3:	e8 c0 c5 00 00       	call   0x56ce78
5608b8:	89 47 18             	mov    %eax,0x18(%edi)
5608bb:	8b 94 24 84 00 00 00 	mov    0x84(%esp),%edx
5608c2:	8b 47 18             	mov    0x18(%edi),%eax
5608c5:	0f b7 52 10          	movzwl 0x10(%edx),%edx
5608c9:	03 d0                	add    %eax,%edx
5608cb:	8b 47 0c             	mov    0xc(%edi),%eax
5608ce:	e8 21 1a 00 00       	call   0x5622f4
5608d3:	89 47 10             	mov    %eax,0x10(%edi)
5608d6:	33 c9                	xor    %ecx,%ecx
5608d8:	8b 54 24 18          	mov    0x18(%esp),%edx
5608dc:	8b 47 0c             	mov    0xc(%edi),%eax
5608df:	c1 f8 0b             	sar    $0xb,%eax
5608e2:	8a 8a d4 00 00 00    	mov    0xd4(%edx),%cl
5608e8:	03 c8                	add    %eax,%ecx
5608ea:	49                   	dec    %ecx
5608eb:	89 4f 14             	mov    %ecx,0x14(%edi)
5608ee:	33 c9                	xor    %ecx,%ecx
5608f0:	8b 54 24 18          	mov    0x18(%esp),%edx
5608f4:	8b 47 14             	mov    0x14(%edi),%eax
5608f7:	8a 8a d5 00 00 00    	mov    0xd5(%edx),%cl
5608fd:	03 c8                	add    %eax,%ecx
5608ff:	83 f9 20             	cmp    $0x20,%ecx
560902:	7c 0c                	jl     0x560910
560904:	ba 1f 00 00 00       	mov    $0x1f,%edx
560909:	8b 4f 14             	mov    0x14(%edi),%ecx
56090c:	2b d1                	sub    %ecx,%edx
56090e:	eb 0c                	jmp    0x56091c
560910:	8b 44 24 18          	mov    0x18(%esp),%eax
560914:	33 d2                	xor    %edx,%edx
560916:	8a 90 d5 00 00 00    	mov    0xd5(%eax),%dl
56091c:	89 57 1c             	mov    %edx,0x1c(%edi)
56091f:	33 c9                	xor    %ecx,%ecx
560921:	89 4f 04             	mov    %ecx,0x4(%edi)
560924:	33 c0                	xor    %eax,%eax
560926:	89 07                	mov    %eax,(%edi)
560928:	8b 13                	mov    (%ebx),%edx
56092a:	8b 4b 08             	mov    0x8(%ebx),%ecx
56092d:	3b d1                	cmp    %ecx,%edx
56092f:	0f 84 69 04 00 00    	je     0x560d9e
560935:	8b 43 04             	mov    0x4(%ebx),%eax
560938:	8b 53 0c             	mov    0xc(%ebx),%edx
56093b:	3b c2                	cmp    %edx,%eax
56093d:	0f 84 5b 04 00 00    	je     0x560d9e
560943:	6a 00                	push   $0x0
560945:	33 c9                	xor    %ecx,%ecx
560947:	33 d2                	xor    %edx,%edx
560949:	33 c0                	xor    %eax,%eax
56094b:	e8 08 73 01 00       	call   0x577c58
560950:	89 47 04             	mov    %eax,0x4(%edi)
560953:	85 c0                	test   %eax,%eax
560955:	75 08                	jne    0x56095f
560957:	83 c8 ff             	or     $0xffffffff,%eax
56095a:	e9 42 05 00 00       	jmp    0x560ea1
56095f:	8b 53 18             	mov    0x18(%ebx),%edx
560962:	52                   	push   %edx
560963:	8b 4b 1c             	mov    0x1c(%ebx),%ecx
560966:	51                   	push   %ecx
560967:	8b 43 20             	mov    0x20(%ebx),%eax
56096a:	50                   	push   %eax
56096b:	8b 4b 14             	mov    0x14(%ebx),%ecx
56096e:	8b 54 24 14          	mov    0x14(%esp),%edx
560972:	8b 52 10             	mov    0x10(%edx),%edx
560975:	8b 47 04             	mov    0x4(%edi),%eax
560978:	e8 0f 75 01 00       	call   0x577e8c
56097d:	8b 0b                	mov    (%ebx),%ecx
56097f:	8b 47 04             	mov    0x4(%edi),%eax
560982:	89 48 04             	mov    %ecx,0x4(%eax)
560985:	8b 53 04             	mov    0x4(%ebx),%edx
560988:	89 50 08             	mov    %edx,0x8(%eax)
56098b:	8b 48 04             	mov    0x4(%eax),%ecx
56098e:	8b 50 18             	mov    0x18(%eax),%edx
560991:	03 ca                	add    %edx,%ecx
560993:	89 48 0c             	mov    %ecx,0xc(%eax)
560996:	8b 48 08             	mov    0x8(%eax),%ecx
560999:	8b 50 14             	mov    0x14(%eax),%edx
56099c:	03 ca                	add    %edx,%ecx
56099e:	89 48 10             	mov    %ecx,0x10(%eax)
5609a1:	8b 46 28             	mov    0x28(%esi),%eax
5609a4:	85 c0                	test   %eax,%eax
5609a6:	75 17                	jne    0x5609bf
5609a8:	68 49 03 00 00       	push   $0x349
5609ad:	68 99 ea 69 00       	push   $0x69ea99
5609b2:	68 8b ea 69 00       	push   $0x69ea8b
5609b7:	e8 84 a1 ff ff       	call   0x55ab40
5609bc:	83 c4 0c             	add    $0xc,%esp
5609bf:	8b 46 28             	mov    0x28(%esi),%eax
5609c2:	c1 e0 03             	shl    $0x3,%eax
5609c5:	8d 04 80             	lea    (%eax,%eax,4),%eax
5609c8:	e8 af 79 01 00       	call   0x57837c
5609cd:	89 07                	mov    %eax,(%edi)
5609cf:	85 c0                	test   %eax,%eax
5609d1:	75 08                	jne    0x5609db
5609d3:	83 c8 ff             	or     $0xffffffff,%eax
5609d6:	e9 c6 04 00 00       	jmp    0x560ea1
5609db:	8b 54 24 34          	mov    0x34(%esp),%edx
5609df:	89 54 24 44          	mov    %edx,0x44(%esp)
5609e3:	8b 4c 24 38          	mov    0x38(%esp),%ecx
5609e7:	89 4c 24 48          	mov    %ecx,0x48(%esp)
5609eb:	8b 46 28             	mov    0x28(%esi),%eax
5609ee:	89 44 24 1c          	mov    %eax,0x1c(%esp)
5609f2:	8b 1f                	mov    (%edi),%ebx
5609f4:	8b 44 24 1c          	mov    0x1c(%esp),%eax
5609f8:	85 c0                	test   %eax,%eax
5609fa:	0f 8e 9e 03 00 00    	jle    0x560d9e
560a00:	8b 4e 2c             	mov    0x2c(%esi),%ecx
560a03:	ba 01 00 00 00       	mov    $0x1,%edx
560a08:	d3 e2                	shl    %cl,%edx
560a0a:	8b 44 24 44          	mov    0x44(%esp),%eax
560a0e:	03 d0                	add    %eax,%edx
560a10:	b8 01 00 00 00       	mov    $0x1,%eax
560a15:	89 54 24 4c          	mov    %edx,0x4c(%esp)
560a19:	8b 4e 30             	mov    0x30(%esi),%ecx
560a1c:	8b 54 24 48          	mov    0x48(%esp),%edx
560a20:	d3 e0                	shl    %cl,%eax
560a22:	8b 4f 04             	mov    0x4(%edi),%ecx
560a25:	03 c2                	add    %edx,%eax
560a27:	8b 51 04             	mov    0x4(%ecx),%edx
560a2a:	8b 4c 24 44          	mov    0x44(%esp),%ecx
560a2e:	3b d1                	cmp    %ecx,%edx
560a30:	73 06                	jae    0x560a38
560a32:	8b 54 24 44          	mov    0x44(%esp),%edx
560a36:	eb 06                	jmp    0x560a3e
560a38:	8b 4f 04             	mov    0x4(%edi),%ecx
560a3b:	8b 51 04             	mov    0x4(%ecx),%edx
560a3e:	89 13                	mov    %edx,(%ebx)
560a40:	8b 4f 04             	mov    0x4(%edi),%ecx
560a43:	8b 51 08             	mov    0x8(%ecx),%edx
560a46:	8b 4c 24 48          	mov    0x48(%esp),%ecx
560a4a:	3b d1                	cmp    %ecx,%edx
560a4c:	73 06                	jae    0x560a54
560a4e:	8b 54 24 48          	mov    0x48(%esp),%edx
560a52:	eb 06                	jmp    0x560a5a
560a54:	8b 4f 04             	mov    0x4(%edi),%ecx
560a57:	8b 51 08             	mov    0x8(%ecx),%edx
560a5a:	89 53 04             	mov    %edx,0x4(%ebx)
560a5d:	8b 4f 04             	mov    0x4(%edi),%ecx
560a60:	8b 51 0c             	mov    0xc(%ecx),%edx
560a63:	8b 4c 24 4c          	mov    0x4c(%esp),%ecx
560a67:	3b d1                	cmp    %ecx,%edx
560a69:	76 06                	jbe    0x560a71
560a6b:	8b 54 24 4c          	mov    0x4c(%esp),%edx
560a6f:	eb 06                	jmp    0x560a77
560a71:	8b 4f 04             	mov    0x4(%edi),%ecx
560a74:	8b 51 0c             	mov    0xc(%ecx),%edx
560a77:	89 53 08             	mov    %edx,0x8(%ebx)
560a7a:	8b 4f 04             	mov    0x4(%edi),%ecx
560a7d:	8b 51 10             	mov    0x10(%ecx),%edx
560a80:	3b c2                	cmp    %edx,%eax
560a82:	72 06                	jb     0x560a8a
560a84:	8b 47 04             	mov    0x4(%edi),%eax
560a87:	8b 40 10             	mov    0x10(%eax),%eax
560a8a:	89 43 0c             	mov    %eax,0xc(%ebx)
560a8d:	8b 53 08             	mov    0x8(%ebx),%edx
560a90:	8b 0b                	mov    (%ebx),%ecx
560a92:	3b d1                	cmp    %ecx,%edx
560a94:	0f 86 b2 02 00 00    	jbe    0x560d4c
560a9a:	8b 43 0c             	mov    0xc(%ebx),%eax
560a9d:	8b 53 04             	mov    0x4(%ebx),%edx
560aa0:	3b c2                	cmp    %edx,%eax
560aa2:	0f 86 a4 02 00 00    	jbe    0x560d4c
560aa8:	66 83 7e 34 00       	cmpw   $0x0,0x34(%esi)
560aad:	77 17                	ja     0x560ac6
560aaf:	68 5c 03 00 00       	push   $0x35c
560ab4:	68 cf ea 69 00       	push   $0x69eacf
560ab9:	68 a3 ea 69 00       	push   $0x69eaa3
560abe:	e8 7d a0 ff ff       	call   0x55ab40
560ac3:	83 c4 0c             	add    $0xc,%esp
560ac6:	66 8b 4e 34          	mov    0x34(%esi),%cx
560aca:	8b 03                	mov    (%ebx),%eax
560acc:	d3 e8                	shr    %cl,%eax
560ace:	66 8b 4e 34          	mov    0x34(%esi),%cx
560ad2:	d3 e0                	shl    %cl,%eax
560ad4:	89 44 24 50          	mov    %eax,0x50(%esp)
560ad8:	66 83 7e 36 00       	cmpw   $0x0,0x36(%esi)
560add:	77 17                	ja     0x560af6
560adf:	68 5e 03 00 00       	push   $0x35e
560ae4:	68 06 eb 69 00       	push   $0x69eb06
560ae9:	68 d9 ea 69 00       	push   $0x69ead9
560aee:	e8 4d a0 ff ff       	call   0x55ab40
560af3:	83 c4 0c             	add    $0xc,%esp
560af6:	66 8b 6e 36          	mov    0x36(%esi),%bp
560afa:	8b cd                	mov    %ebp,%ecx
560afc:	8b 43 04             	mov    0x4(%ebx),%eax
560aff:	d3 e8                	shr    %cl,%eax