1400d7917:	76 3d                	jbe    0x1400d7956
1400d7919:	48 ff c2             	inc    %rdx
1400d791c:	48 8b 4c 24 70       	mov    0x70(%rsp),%rcx
1400d7921:	48 8b c1             	mov    %rcx,%rax
1400d7924:	48 81 fa 00 10 00 00 	cmp    $0x1000,%rdx
1400d792b:	72 1c                	jb     0x1400d7949
1400d792d:	48 83 c2 27          	add    $0x27,%rdx
1400d7931:	48 8b 49 f8          	mov    -0x8(%rcx),%rcx
1400d7935:	48 2b c1             	sub    %rcx,%rax
1400d7938:	48 83 c0 f8          	add    $0xfffffffffffffff8,%rax
1400d793c:	48 83 f8 1f          	cmp    $0x1f,%rax
1400d7940:	76 07                	jbe    0x1400d7949
1400d7942:	ff 15 b0 26 25 00    	call   *0x2526b0(%rip)        # 0x140329ff8
1400d7948:	cc                   	int3
1400d7949:	e8 36 29 22 00       	call   0x1402fa284
1400d794e:	66 0f 6f 15 da 30 25 	movdqa 0x2530da(%rip),%xmm2        # 0x14032aa30
1400d7955:	00
1400d7956:	f3 0f 7f 55 80       	movdqu %xmm2,-0x80(%rbp)
1400d795b:	c6 44 24 70 00       	movb   $0x0,0x70(%rsp)
1400d7960:	49 83 fe 0f          	cmp    $0xf,%r14
1400d7964:	76 35                	jbe    0x1400d799b
1400d7966:	49 8d 56 01          	lea    0x1(%r14),%rdx
1400d796a:	48 8b c7             	mov    %rdi,%rax
1400d796d:	48 81 fa 00 10 00 00 	cmp    $0x1000,%rdx
1400d7974:	72 1c                	jb     0x1400d7992
1400d7976:	48 83 c2 27          	add    $0x27,%rdx
1400d797a:	48 8b 7f f8          	mov    -0x8(%rdi),%rdi
1400d797e:	48 2b c7             	sub    %rdi,%rax
1400d7981:	48 83 c0 f8          	add    $0xfffffffffffffff8,%rax
1400d7985:	48 83 f8 1f          	cmp    $0x1f,%rax
1400d7989:	76 07                	jbe    0x1400d7992
1400d798b:	ff 15 67 26 25 00    	call   *0x252667(%rip)        # 0x140329ff8
1400d7991:	cc                   	int3
1400d7992:	48 8b cf             	mov    %rdi,%rcx
1400d7995:	e8 ea 28 22 00       	call   0x1402fa284
1400d799a:	90                   	nop
1400d799b:	48 8d 05 56 75 25 00 	lea    0x257556(%rip),%rax        # 0x14032eef8
1400d79a2:	48 89 45 90          	mov    %rax,-0x70(%rbp)
1400d79a6:	48 8d 4d d0          	lea    -0x30(%rbp),%rcx
1400d79aa:	e8 01 95 fe ff       	call   0x1400c0eb0
1400d79af:	48 8b 55 c8          	mov    -0x38(%rbp),%rdx
1400d79b3:	48 83 fa 0f          	cmp    $0xf,%rdx
1400d79b7:	76 34                	jbe    0x1400d79ed
1400d79b9:	48 ff c2             	inc    %rdx
1400d79bc:	48 8b 4d b0          	mov    -0x50(%rbp),%rcx
1400d79c0:	48 8b c1             	mov    %rcx,%rax
1400d79c3:	48 81 fa 00 10 00 00 	cmp    $0x1000,%rdx
1400d79ca:	72 1c                	jb     0x1400d79e8
1400d79cc:	48 83 c2 27          	add    $0x27,%rdx
1400d79d0:	48 8b 49 f8          	mov    -0x8(%rcx),%rcx
1400d79d4:	48 2b c1             	sub    %rcx,%rax
1400d79d7:	48 83 c0 f8          	add    $0xfffffffffffffff8,%rax
1400d79db:	48 83 f8 1f          	cmp    $0x1f,%rax
1400d79df:	76 07                	jbe    0x1400d79e8
1400d79e1:	ff 15 11 26 25 00    	call   *0x252611(%rip)        # 0x140329ff8
1400d79e7:	cc                   	int3
1400d79e8:	e8 97 28 22 00       	call   0x1402fa284
1400d79ed:	66 0f 6f 05 3b 30 25 	movdqa 0x25303b(%rip),%xmm0        # 0x14032aa30
1400d79f4:	00
1400d79f5:	66 0f 7f 45 c0       	movdqa %xmm0,-0x40(%rbp)
1400d79fa:	c6 45 b0 00          	movb   $0x0,-0x50(%rbp)
1400d79fe:	48 8b 4d a8          	mov    -0x58(%rbp),%rcx
1400d7a02:	48 85 c9             	test   %rcx,%rcx
1400d7a05:	74 19                	je     0x1400d7a20
1400d7a07:	48 8b 11             	mov    (%rcx),%rdx
1400d7a0a:	ff 52 10             	call   *0x10(%rdx)
1400d7a0d:	48 85 c0             	test   %rax,%rax
1400d7a10:	74 0e                	je     0x1400d7a20
1400d7a12:	4c 8b 00             	mov    (%rax),%r8
1400d7a15:	ba 01 00 00 00       	mov    $0x1,%edx
1400d7a1a:	48 8b c8             	mov    %rax,%rcx
1400d7a1d:	41 ff 10             	call   *(%r8)
1400d7a20:	48 8b c6             	mov    %rsi,%rax
1400d7a23:	48 8b 4d 10          	mov    0x10(%rbp),%rcx
1400d7a27:	48 33 cc             	xor    %rsp,%rcx
1400d7a2a:	e8 11 2c 22 00       	call   0x1402fa640
1400d7a2f:	48 8b 9c 24 60 01 00 	mov    0x160(%rsp),%rbx
1400d7a36:	00
1400d7a37:	48 81 c4 20 01 00 00 	add    $0x120,%rsp
1400d7a3e:	41 5f                	pop    %r15
1400d7a40:	41 5e                	pop    %r14
1400d7a42:	5f                   	pop    %rdi
1400d7a43:	5e                   	pop    %rsi
1400d7a44:	5d                   	pop    %rbp
1400d7a45:	c3                   	ret
1400d7a46:	cc                   	int3
1400d7a47:	cc                   	int3
1400d7a48:	cc                   	int3
1400d7a49:	cc                   	int3
1400d7a4a:	cc                   	int3
1400d7a4b:	cc                   	int3
1400d7a4c:	cc                   	int3
1400d7a4d:	cc                   	int3
1400d7a4e:	cc                   	int3
1400d7a4f:	cc                   	int3
1400d7a50:	48 89 5c 24 18       	mov    %rbx,0x18(%rsp)
1400d7a55:	48 89 74 24 20       	mov    %rsi,0x20(%rsp)
1400d7a5a:	57                   	push   %rdi
1400d7a5b:	48 83 ec 20          	sub    $0x20,%rsp
1400d7a5f:	48 8b 41 08          	mov    0x8(%rcx),%rax
1400d7a63:	0f b6 f2             	movzbl %dl,%esi
1400d7a66:	48 8b d9             	mov    %rcx,%rbx
1400d7a69:	83 78 08 06          	cmpl   $0x6,0x8(%rax)
1400d7a6d:	75 06                	jne    0x1400d7a75
1400d7a6f:	f6 40 0c 04          	testb  $0x4,0xc(%rax)
1400d7a73:	74 73                	je     0x1400d7ae8
1400d7a75:	b9 30 00 00 00       	mov    $0x30,%ecx
1400d7a7a:	e8 c9 27 22 00       	call   0x1402fa248
1400d7a7f:	48 89 44 24 30       	mov    %rax,0x30(%rsp)
1400d7a84:	48 8b d0             	mov    %rax,%rdx
1400d7a87:	48 85 c0             	test   %rax,%rax
1400d7a8a:	74 28                	je     0x1400d7ab4
1400d7a8c:	c7 40 08 06 00 00 00 	movl   $0x6,0x8(%rax)
1400d7a93:	48 8d 0d 56 77 25 00 	lea    0x257756(%rip),%rcx        # 0x14032f1f0
1400d7a9a:	33 c0                	xor    %eax,%eax
1400d7a9c:	48 89 0a             	mov    %rcx,(%rdx)
1400d7a9f:	89 42 0c             	mov    %eax,0xc(%rdx)
1400d7aa2:	48 89 42 10          	mov    %rax,0x10(%rdx)
1400d7aa6:	48 89 42 18          	mov    %rax,0x18(%rdx)
1400d7aaa:	48 89 42 20          	mov    %rax,0x20(%rdx)
1400d7aae:	48 89 42 28          	mov    %rax,0x28(%rdx)
1400d7ab2:	eb 03                	jmp    0x1400d7ab7
1400d7ab4:	48 8b d0             	mov    %rax,%rdx
1400d7ab7:	48 8b 43 08          	mov    0x8(%rbx),%rax
1400d7abb:	48 89 42 18          	mov    %rax,0x18(%rdx)
1400d7abf:	48 8b 43 08          	mov    0x8(%rbx),%rax
1400d7ac3:	48 8b 48 10          	mov    0x10(%rax),%rcx
1400d7ac7:	48 85 c9             	test   %rcx,%rcx
1400d7aca:	74 10                	je     0x1400d7adc
1400d7acc:	48 89 4a 10          	mov    %rcx,0x10(%rdx)
1400d7ad0:	48 8b 43 08          	mov    0x8(%rbx),%rax
1400d7ad4:	48 8b 48 10          	mov    0x10(%rax),%rcx
1400d7ad8:	48 89 51 18          	mov    %rdx,0x18(%rcx)
1400d7adc:	48 8b 43 08          	mov    0x8(%rbx),%rax
1400d7ae0:	48 89 50 10          	mov    %rdx,0x10(%rax)
1400d7ae4:	48 89 53 08          	mov    %rdx,0x8(%rbx)
1400d7ae8:	8b 43 10             	mov    0x10(%rbx),%eax
1400d7aeb:	0f ba e0 08          	bt     $0x8,%eax
1400d7aef:	73 14                	jae    0x1400d7b05
1400d7af1:	48 8b 43 18          	mov    0x18(%rbx),%rax
1400d7af5:	40 0f b6 d6          	movzbl %sil,%edx
1400d7af9:	48 8b 48 08          	mov    0x8(%rax),%rcx
1400d7afd:	ff 15 1d 1b 25 00    	call   *0x251b1d(%rip)        # 0x140329620
1400d7b03:	eb 13                	jmp    0x1400d7b18
1400d7b05:	0f ba e0 0b          	bt     $0xb,%eax
1400d7b09:	73 10                	jae    0x1400d7b1b
1400d7b0b:	48 8b 4b 18          	mov    0x18(%rbx),%rcx
1400d7b0f:	40 0f b6 d6          	movzbl %sil,%edx
1400d7b13:	e8 48 d5 fe ff       	call   0x1400c5060
1400d7b18:	0f b6 f0             	movzbl %al,%esi
1400d7b1b:	48 8b 5b 08          	mov    0x8(%rbx),%rbx
1400d7b1f:	48 89 6c 24 38       	mov    %rbp,0x38(%rsp)
1400d7b24:	8b 43 24             	mov    0x24(%rbx),%eax
1400d7b27:	39 43 20             	cmp    %eax,0x20(%rbx)
1400d7b2a:	77 1b                	ja     0x1400d7b47
1400d7b2c:	48 8b 4b 28          	mov    0x28(%rbx),%rcx
1400d7b30:	8d 68 10             	lea    0x10(%rax),%ebp
1400d7b33:	8b d5                	mov    %ebp,%edx
1400d7b35:	ff 15 cd 23 25 00    	call   *0x2523cd(%rip)        # 0x140329f08
1400d7b3b:	48 85 c0             	test   %rax,%rax
1400d7b3e:	74 2a                	je     0x1400d7b6a
1400d7b40:	48 89 43 28          	mov    %rax,0x28(%rbx)
1400d7b44:	89 6b 20             	mov    %ebp,0x20(%rbx)
1400d7b47:	8b 4b 24             	mov    0x24(%rbx),%ecx
1400d7b4a:	48 8b 43 28          	mov    0x28(%rbx),%rax
1400d7b4e:	48 8b 6c 24 38       	mov    0x38(%rsp),%rbp
1400d7b53:	40 88 34 01          	mov    %sil,(%rcx,%rax,1)
1400d7b57:	ff 43 24             	incl   0x24(%rbx)
1400d7b5a:	48 8b 5c 24 40       	mov    0x40(%rsp),%rbx
1400d7b5f:	48 8b 74 24 48       	mov    0x48(%rsp),%rsi
1400d7b64:	48 83 c4 20          	add    $0x20,%rsp
1400d7b68:	5f                   	pop    %rdi
1400d7b69:	c3                   	ret
1400d7b6a:	e8 e7 4c 22 00       	call   0x1402fc856
1400d7b6f:	cc                   	int3
1400d7b70:	48 89 5c 24 18       	mov    %rbx,0x18(%rsp)
1400d7b75:	48 89 74 24 20       	mov    %rsi,0x20(%rsp)
1400d7b7a:	57                   	push   %rdi
1400d7b7b:	48 83 ec 20          	sub    $0x20,%rsp
1400d7b7f:	f7 41 10 00 01 00 00 	testl  $0x100,0x10(%rcx)
1400d7b86:	0f b6 f2             	movzbl %dl,%esi
1400d7b89:	48 8b d9             	mov    %rcx,%rbx
1400d7b8c:	74 11                	je     0x1400d7b9f
1400d7b8e:	48 8b 41 18          	mov    0x18(%rcx),%rax
1400d7b92:	48 8b 48 08          	mov    0x8(%rax),%rcx
1400d7b96:	ff 15 84 1a 25 00    	call   *0x251a84(%rip)        # 0x140329620
1400d7b9c:	0f b6 f0             	movzbl %al,%esi
1400d7b9f:	48 8b 7b 08          	mov    0x8(%rbx),%rdi
1400d7ba3:	48 8b 5f 30          	mov    0x30(%rdi),%rbx
1400d7ba7:	48 85 db             	test   %rbx,%rbx
1400d7baa:	75 29                	jne    0x1400d7bd5
1400d7bac:	b9 10 00 00 00       	mov    $0x10,%ecx
1400d7bb1:	e8 92 26 22 00       	call   0x1402fa248
1400d7bb6:	48 89 44 24 30       	mov    %rax,0x30(%rsp)
1400d7bbb:	48 8b d8             	mov    %rax,%rbx
1400d7bbe:	48 85 c0             	test   %rax,%rax
1400d7bc1:	74 0b                	je     0x1400d7bce
1400d7bc3:	33 c0                	xor    %eax,%eax
1400d7bc5:	48 89 03             	mov    %rax,(%rbx)
1400d7bc8:	48 89 43 08          	mov    %rax,0x8(%rbx)
1400d7bcc:	eb 03                	jmp    0x1400d7bd1
1400d7bce:	48 8b d8             	mov    %rax,%rbx
1400d7bd1:	48 89 5f 30          	mov    %rbx,0x30(%rdi)
1400d7bd5:	8b 43 04             	mov    0x4(%rbx),%eax
1400d7bd8:	48 89 6c 24 38       	mov    %rbp,0x38(%rsp)
1400d7bdd:	39 03                	cmp    %eax,(%rbx)
1400d7bdf:	77 1a                	ja     0x1400d7bfb
1400d7be1:	48 8b 4b 08          	mov    0x8(%rbx),%rcx
1400d7be5:	8d 68 10             	lea    0x10(%rax),%ebp
1400d7be8:	8b d5                	mov    %ebp,%edx
1400d7bea:	ff 15 18 23 25 00    	call   *0x252318(%rip)        # 0x140329f08
1400d7bf0:	48 85 c0             	test   %rax,%rax
1400d7bf3:	74 29                	je     0x1400d7c1e
1400d7bf5:	48 89 43 08          	mov    %rax,0x8(%rbx)
1400d7bf9:	89 2b                	mov    %ebp,(%rbx)
1400d7bfb:	8b 4b 04             	mov    0x4(%rbx),%ecx
1400d7bfe:	48 8b 43 08          	mov    0x8(%rbx),%rax
1400d7c02:	48 8b 6c 24 38       	mov    0x38(%rsp),%rbp
1400d7c07:	40 88 34 01          	mov    %sil,(%rcx,%rax,1)
1400d7c0b:	ff 43 04             	incl   0x4(%rbx)
1400d7c0e:	48 8b 5c 24 40       	mov    0x40(%rsp),%rbx
1400d7c13:	48 8b 74 24 48       	mov    0x48(%rsp),%rsi
1400d7c18:	48 83 c4 20          	add    $0x20,%rsp
1400d7c1c:	5f                   	pop    %rdi
1400d7c1d:	c3                   	ret
1400d7c1e:	e8 33 4c 22 00       	call   0x1402fc856
1400d7c23:	cc                   	int3
1400d7c24:	cc                   	int3
1400d7c25:	cc                   	int3
1400d7c26:	cc                   	int3
1400d7c27:	cc                   	int3
1400d7c28:	cc                   	int3
1400d7c29:	cc                   	int3
1400d7c2a:	cc                   	int3
1400d7c2b:	cc                   	int3
1400d7c2c:	cc                   	int3
1400d7c2d:	cc                   	int3
1400d7c2e:	cc                   	int3
1400d7c2f:	cc                   	int3
1400d7c30:	48 89 5c 24 08       	mov    %rbx,0x8(%rsp)
1400d7c35:	57                   	push   %rdi
1400d7c36:	48 83 ec 20          	sub    $0x20,%rsp
1400d7c3a:	f7 41 10 00 01 00 00 	testl  $0x100,0x10(%rcx)
1400d7c41:	0f b6 fa             	movzbl %dl,%edi
1400d7c44:	48 8b d9             	mov    %rcx,%rbx
1400d7c47:	74 11                	je     0x1400d7c5a
1400d7c49:	48 8b 41 18          	mov    0x18(%rcx),%rax
1400d7c4d:	48 8b 48 08          	mov    0x8(%rax),%rcx
1400d7c51:	ff 15 c9 19 25 00    	call   *0x2519c9(%rip)        # 0x140329620
1400d7c57:	0f b6 f8             	movzbl %al,%edi
1400d7c5a:	48 8b 5b 08          	mov    0x8(%rbx),%rbx
1400d7c5e:	48 8b 4b 28          	mov    0x28(%rbx),%rcx
1400d7c62:	48 85 c9             	test   %rcx,%rcx
1400d7c65:	75 29                	jne    0x1400d7c90
1400d7c67:	b9 20 00 00 00       	mov    $0x20,%ecx
1400d7c6c:	e8 d7 25 22 00       	call   0x1402fa248
1400d7c71:	48 89 44 24 40       	mov    %rax,0x40(%rsp)
1400d7c76:	48 8b c8             	mov    %rax,%rcx
1400d7c79:	48 85 c0             	test   %rax,%rax
1400d7c7c:	74 0c                	je     0x1400d7c8a
1400d7c7e:	0f 57 c0             	xorps  %xmm0,%xmm0
1400d7c81:	0f 11 00             	movups %xmm0,(%rax)
1400d7c84:	0f 11 40 10          	movups %xmm0,0x10(%rax)
1400d7c88:	eb 02                	jmp    0x1400d7c8c
1400d7c8a:	33 c9                	xor    %ecx,%ecx
1400d7c8c:	48 89 4b 28          	mov    %rcx,0x28(%rbx)
1400d7c90:	48 8b 5c 24 30       	mov    0x30(%rsp),%rbx
1400d7c95:	40 0f b6 d7          	movzbl %dil,%edx
1400d7c99:	8b c2                	mov    %edx,%eax
1400d7c9b:	83 e2 07             	and    $0x7,%edx
1400d7c9e:	48 c1 e8 03          	shr    $0x3,%rax
1400d7ca2:	48 03 c8             	add    %rax,%rcx
1400d7ca5:	0f b6 01             	movzbl (%rcx),%eax
1400d7ca8:	0f ab d0             	bts    %edx,%eax
1400d7cab:	88 01                	mov    %al,(%rcx)
1400d7cad:	48 83 c4 20          	add    $0x20,%rsp
1400d7cb1:	5f                   	pop    %rdi
1400d7cb2:	c3                   	ret
1400d7cb3:	cc                   	int3
1400d7cb4:	cc                   	int3
1400d7cb5:	cc                   	int3
1400d7cb6:	cc                   	int3
1400d7cb7:	cc                   	int3
1400d7cb8:	cc                   	int3
1400d7cb9:	cc                   	int3
1400d7cba:	cc                   	int3
1400d7cbb:	cc                   	int3
1400d7cbc:	cc                   	int3
1400d7cbd:	cc                   	int3
1400d7cbe:	cc                   	int3
1400d7cbf:	cc                   	int3
1400d7cc0:	40 53                	rex push %rbx
1400d7cc2:	48 83 ec 20          	sub    $0x20,%rsp
1400d7cc6:	48 8b d9             	mov    %rcx,%rbx
1400d7cc9:	b9 50 00 00 00       	mov    $0x50,%ecx
1400d7cce:	e8 75 25 22 00       	call   0x1402fa248
1400d7cd3:	48 89 44 24 30       	mov    %rax,0x30(%rsp)
1400d7cd8:	48 8b d0             	mov    %rax,%rdx
1400d7cdb:	48 85 c0             	test   %rax,%rax
1400d7cde:	74 38                	je     0x1400d7d18
1400d7ce0:	c7 40 08 07 00 00 00 	movl   $0x7,0x8(%rax)
1400d7ce7:	48 8d 0d 0a 75 25 00 	lea    0x25750a(%rip),%rcx        # 0x14032f1f8
1400d7cee:	33 c0                	xor    %eax,%eax
1400d7cf0:	48 89 0a             	mov    %rcx,(%rdx)
1400d7cf3:	89 42 0c             	mov    %eax,0xc(%rdx)
1400d7cf6:	48 89 42 10          	mov    %rax,0x10(%rdx)
1400d7cfa:	48 89 42 18          	mov    %rax,0x18(%rdx)
1400d7cfe:	48 89 42 20          	mov    %rax,0x20(%rdx)
1400d7d02:	48 89 42 28          	mov    %rax,0x28(%rdx)
1400d7d06:	48 89 42 30          	mov    %rax,0x30(%rdx)
1400d7d0a:	48 89 42 38          	mov    %rax,0x38(%rdx)
1400d7d0e:	66 89 42 40          	mov    %ax,0x40(%rdx)
1400d7d12:	48 89 42 48          	mov    %rax,0x48(%rdx)
1400d7d16:	eb 03                	jmp    0x1400d7d1b
1400d7d18:	48 8b d0             	mov    %rax,%rdx
1400d7d1b:	48 8b 43 08          	mov    0x8(%rbx),%rax
1400d7d1f:	48 89 42 18          	mov    %rax,0x18(%rdx)
1400d7d23:	48 8b 43 08          	mov    0x8(%rbx),%rax
1400d7d27:	48 8b 48 10          	mov    0x10(%rax),%rcx
1400d7d2b:	48 85 c9             	test   %rcx,%rcx
1400d7d2e:	74 10                	je     0x1400d7d40
1400d7d30:	48 89 4a 10          	mov    %rcx,0x10(%rdx)
1400d7d34:	48 8b 43 08          	mov    0x8(%rbx),%rax
1400d7d38:	48 8b 48 10          	mov    0x10(%rax),%rcx
1400d7d3c:	48 89 51 18          	mov    %rdx,0x18(%rcx)
1400d7d40:	48 8b 43 08          	mov    0x8(%rbx),%rax
1400d7d44:	48 89 50 10          	mov    %rdx,0x10(%rax)
1400d7d48:	48 89 53 08          	mov    %rdx,0x8(%rbx)
1400d7d4c:	48 83 c4 20          	add    $0x20,%rsp
1400d7d50:	5b                   	pop    %rbx
1400d7d51:	c3                   	ret
1400d7d52:	cc                   	int3
1400d7d53:	cc                   	int3
1400d7d54:	cc                   	int3
1400d7d55:	cc                   	int3
1400d7d56:	cc                   	int3
1400d7d57:	cc                   	int3
1400d7d58:	cc                   	int3
1400d7d59:	cc                   	int3
1400d7d5a:	cc                   	int3
1400d7d5b:	cc                   	int3
1400d7d5c:	cc                   	int3
1400d7d5d:	cc                   	int3
1400d7d5e:	cc                   	int3
1400d7d5f:	cc                   	int3
1400d7d60:	48 89 5c 24 20       	mov    %rbx,0x20(%rsp)
1400d7d65:	55                   	push   %rbp
1400d7d66:	56                   	push   %rsi
1400d7d67:	57                   	push   %rdi
1400d7d68:	48 81 ec 80 00 00 00 	sub    $0x80,%rsp