1403f742c:	48 89 3b             	mov    %rdi,(%rbx)
1403f742f:	41 b8 15 00 00 00    	mov    $0x15,%r8d
1403f7435:	48 8d 15 a4 64 bf 00 	lea    0xbf64a4(%rip),%rdx        # 0x140fed8e0
1403f743c:	48 8d 4b 20          	lea    0x20(%rbx),%rcx
1403f7440:	e8 8b 7f da ff       	call   0x14019f3d0
1403f7445:	48 8b c3             	mov    %rbx,%rax
1403f7448:	48 8b 4d 20          	mov    0x20(%rbp),%rcx
1403f744c:	48 33 cc             	xor    %rsp,%rcx
1403f744f:	e8 ac 40 a2 00       	call   0x140e1b500
1403f7454:	48 8b 9c 24 80 01 00 	mov    0x180(%rsp),%rbx
1403f745b:	00
1403f745c:	48 81 c4 30 01 00 00 	add    $0x130,%rsp
1403f7463:	41 5f                	pop    %r15
1403f7465:	41 5e                	pop    %r14
1403f7467:	41 5d                	pop    %r13
1403f7469:	41 5c                	pop    %r12
1403f746b:	5f                   	pop    %rdi
1403f746c:	5e                   	pop    %rsi
1403f746d:	5d                   	pop    %rbp
1403f746e:	c3                   	ret
1403f746f:	e8 30 2d a3 00       	call   0x140e2a1a4
1403f7474:	cc                   	int3
1403f7475:	e8 16 5d da ff       	call   0x14019d190
1403f747a:	cc                   	int3
1403f747b:	e8 24 2d a3 00       	call   0x140e2a1a4
1403f7480:	cc                   	int3
1403f7481:	cc                   	int3
1403f7482:	cc                   	int3
1403f7483:	cc                   	int3
1403f7484:	cc                   	int3
1403f7485:	cc                   	int3
1403f7486:	cc                   	int3
1403f7487:	cc                   	int3
1403f7488:	cc                   	int3
1403f7489:	cc                   	int3
1403f748a:	cc                   	int3
1403f748b:	cc                   	int3
1403f748c:	cc                   	int3
1403f748d:	cc                   	int3
1403f748e:	cc                   	int3
1403f748f:	cc                   	int3
1403f7490:	48 89 5c 24 10       	mov    %rbx,0x10(%rsp)
1403f7495:	48 89 4c 24 08       	mov    %rcx,0x8(%rsp)
1403f749a:	57                   	push   %rdi
1403f749b:	48 83 ec 30          	sub    $0x30,%rsp
1403f749f:	48 8b f9             	mov    %rcx,%rdi
1403f74a2:	b9 78 00 00 00       	mov    $0x78,%ecx
1403f74a7:	e8 5c 3c a2 00       	call   0x140e1b108
1403f74ac:	48 8b d8             	mov    %rax,%rbx
1403f74af:	48 89 44 24 40       	mov    %rax,0x40(%rsp)
1403f74b4:	48 85 c0             	test   %rax,%rax
1403f74b7:	74 29                	je     0x1403f74e2
1403f74b9:	0f 57 c0             	xorps  %xmm0,%xmm0
1403f74bc:	0f 11 00             	movups %xmm0,(%rax)
1403f74bf:	c7 40 08 01 00 00 00 	movl   $0x1,0x8(%rax)
1403f74c6:	c7 40 0c 01 00 00 00 	movl   $0x1,0xc(%rax)
1403f74cd:	48 8d 05 2c 64 bf 00 	lea    0xbf642c(%rip),%rax        # 0x140fed900
1403f74d4:	48 89 03             	mov    %rax,(%rbx)
1403f74d7:	48 8d 4b 10          	lea    0x10(%rbx),%rcx
1403f74db:	e8 30 00 00 00       	call   0x1403f7510
1403f74e0:	eb 02                	jmp    0x1403f74e4
1403f74e2:	33 db                	xor    %ebx,%ebx
1403f74e4:	48 c7 47 08 00 00 00 	movq   $0x0,0x8(%rdi)
1403f74eb:	00
1403f74ec:	48 8d 43 10          	lea    0x10(%rbx),%rax
1403f74f0:	48 89 07             	mov    %rax,(%rdi)
1403f74f3:	48 89 5f 08          	mov    %rbx,0x8(%rdi)
1403f74f7:	48 8b c7             	mov    %rdi,%rax
1403f74fa:	48 8b 5c 24 48       	mov    0x48(%rsp),%rbx
1403f74ff:	48 83 c4 30          	add    $0x30,%rsp
1403f7503:	5f                   	pop    %rdi
1403f7504:	c3                   	ret
1403f7505:	cc                   	int3
1403f7506:	cc                   	int3
1403f7507:	cc                   	int3
1403f7508:	cc                   	int3
1403f7509:	cc                   	int3
1403f750a:	cc                   	int3
1403f750b:	cc                   	int3
1403f750c:	cc                   	int3
1403f750d:	cc                   	int3
1403f750e:	cc                   	int3
1403f750f:	cc                   	int3
1403f7510:	40 53                	rex push %rbx
1403f7512:	48 83 ec 40          	sub    $0x40,%rsp
1403f7516:	8b 05 ac 63 bf 00    	mov    0xbf63ac(%rip),%eax        # 0x140fed8c8
1403f751c:	48 8d 54 24 20       	lea    0x20(%rsp),%rdx
1403f7521:	0f 57 c0             	xorps  %xmm0,%xmm0
1403f7524:	48 c7 44 24 30 05 00 	movq   $0x5,0x30(%rsp)
1403f752b:	00 00
1403f752d:	0f 11 44 24 20       	movups %xmm0,0x20(%rsp)
1403f7532:	89 44 24 20          	mov    %eax,0x20(%rsp)
1403f7536:	41 b0 01             	mov    $0x1,%r8b
1403f7539:	0f b6 05 8c 63 bf 00 	movzbl 0xbf638c(%rip),%eax        # 0x140fed8cc
1403f7540:	48 8b d9             	mov    %rcx,%rbx
1403f7543:	88 44 24 24          	mov    %al,0x24(%rsp)
1403f7547:	48 c7 44 24 38 0f 00 	movq   $0xf,0x38(%rsp)
1403f754e:	00 00
1403f7550:	c6 44 24 25 00       	movb   $0x0,0x25(%rsp)
1403f7555:	e8 f6 45 14 00       	call   0x14053bb50
1403f755a:	48 8d 05 c7 63 bf 00 	lea    0xbf63c7(%rip),%rax        # 0x140fed928
1403f7561:	48 89 03             	mov    %rax,(%rbx)
1403f7564:	48 8b c3             	mov    %rbx,%rax
1403f7567:	48 83 c4 40          	add    $0x40,%rsp
1403f756b:	5b                   	pop    %rbx
1403f756c:	c3                   	ret
1403f756d:	cc                   	int3
1403f756e:	cc                   	int3
1403f756f:	cc                   	int3
1403f7570:	48 83 ec 38          	sub    $0x38,%rsp
1403f7574:	4d 8b d1             	mov    %r9,%r10
1403f7577:	4c 8b d9             	mov    %rcx,%r11
1403f757a:	48 83 fa 08          	cmp    $0x8,%rdx
1403f757e:	77 1d                	ja     0x1403f759d
1403f7580:	4c 8d 0d 05 c2 ba 00 	lea    0xbac205(%rip),%r9        # 0x140fa378c
1403f7587:	4d 8b c2             	mov    %r10,%r8
1403f758a:	48 8d 15 c7 63 bf 00 	lea    0xbf63c7(%rip),%rdx        # 0x140fed958
1403f7591:	e8 0a 5f 14 00       	call   0x14053d4a0
1403f7596:	32 c0                	xor    %al,%al
1403f7598:	48 83 c4 38          	add    $0x38,%rsp
1403f759c:	c3                   	ret
1403f759d:	41 0f b6 48 06       	movzbl 0x6(%r8),%ecx
1403f75a2:	48 83 c2 f8          	add    $0xfffffffffffffff8,%rdx
1403f75a6:	41 0f b6 40 07       	movzbl 0x7(%r8),%eax
1403f75ab:	49 83 c0 08          	add    $0x8,%r8
1403f75af:	c1 e1 08             	shl    $0x8,%ecx
1403f75b2:	03 c8                	add    %eax,%ecx
1403f75b4:	89 4c 24 20          	mov    %ecx,0x20(%rsp)
1403f75b8:	49 8b cb             	mov    %r11,%rcx
1403f75bb:	e8 50 57 14 00       	call   0x14053cd10
1403f75c0:	48 83 c4 38          	add    $0x38,%rsp
1403f75c4:	c3                   	ret
1403f75c5:	cc                   	int3
1403f75c6:	cc                   	int3
1403f75c7:	cc                   	int3
1403f75c8:	cc                   	int3
1403f75c9:	cc                   	int3
1403f75ca:	cc                   	int3
1403f75cb:	cc                   	int3
1403f75cc:	cc                   	int3
1403f75cd:	cc                   	int3
1403f75ce:	cc                   	int3
1403f75cf:	cc                   	int3
1403f75d0:	40 53                	rex push %rbx
1403f75d2:	48 83 ec 20          	sub    $0x20,%rsp
1403f75d6:	48 8d 05 6b 64 bf 00 	lea    0xbf646b(%rip),%rax        # 0x140feda48
1403f75dd:	48 8b d9             	mov    %rcx,%rbx
1403f75e0:	48 89 01             	mov    %rax,(%rcx)
1403f75e3:	f6 c2 01             	test   $0x1,%dl
1403f75e6:	74 0a                	je     0x1403f75f2
1403f75e8:	ba 78 00 00 00       	mov    $0x78,%edx
1403f75ed:	e8 52 3b a2 00       	call   0x140e1b144
1403f75f2:	48 8b c3             	mov    %rbx,%rax
1403f75f5:	48 83 c4 20          	add    $0x20,%rsp
1403f75f9:	5b                   	pop    %rbx
1403f75fa:	c3                   	ret
1403f75fb:	cc                   	int3
1403f75fc:	cc                   	int3
1403f75fd:	cc                   	int3
1403f75fe:	cc                   	int3
1403f75ff:	cc                   	int3
1403f7600:	48 89 5c 24 18       	mov    %rbx,0x18(%rsp)
1403f7605:	55                   	push   %rbp
1403f7606:	56                   	push   %rsi
1403f7607:	57                   	push   %rdi
1403f7608:	41 54                	push   %r12
1403f760a:	41 55                	push   %r13
1403f760c:	41 56                	push   %r14
1403f760e:	41 57                	push   %r15
1403f7610:	48 8d 6c 24 d0       	lea    -0x30(%rsp),%rbp
1403f7615:	48 81 ec 30 01 00 00 	sub    $0x130,%rsp
1403f761c:	48 8b 05 dd 18 fc 00 	mov    0xfc18dd(%rip),%rax        # 0x1413b8f00
1403f7623:	48 33 c4             	xor    %rsp,%rax
1403f7626:	48 89 45 20          	mov    %rax,0x20(%rbp)
1403f762a:	48 8b da             	mov    %rdx,%rbx
1403f762d:	4c 8b f1             	mov    %rcx,%r14
1403f7630:	48 89 54 24 28       	mov    %rdx,0x28(%rsp)
1403f7635:	33 ff                	xor    %edi,%edi
1403f7637:	8b f7                	mov    %edi,%esi
1403f7639:	89 7c 24 20          	mov    %edi,0x20(%rsp)
1403f763d:	b9 c8 00 00 00       	mov    $0xc8,%ecx
1403f7642:	e8 c1 3a a2 00       	call   0x140e1b108
1403f7647:	48 89 44 24 30       	mov    %rax,0x30(%rsp)
1403f764c:	48 85 c0             	test   %rax,%rax
1403f764f:	74 6a                	je     0x1403f76bb
1403f7651:	48 8d 4c 24 40       	lea    0x40(%rsp),%rcx
1403f7656:	48 89 4c 24 38       	mov    %rcx,0x38(%rsp)
1403f765b:	48 8d 0d 76 31 bf 00 	lea    0xbf3176(%rip),%rcx        # 0x140fea7d8
1403f7662:	48 89 4c 24 40       	mov    %rcx,0x40(%rsp)
1403f7667:	48 8d 0d 22 03 00 00 	lea    0x322(%rip),%rcx        # 0x1403f7990
1403f766e:	48 89 4c 24 48       	mov    %rcx,0x48(%rsp)
1403f7673:	48 8d 4c 24 40       	lea    0x40(%rsp),%rcx
1403f7678:	48 89 4c 24 78       	mov    %rcx,0x78(%rsp)
1403f767d:	0f 57 c0             	xorps  %xmm0,%xmm0
1403f7680:	0f 11 45 80          	movups %xmm0,-0x80(%rbp)
1403f7684:	66 0f 6f 0d 64 cc ba 	movdqa 0xbacc64(%rip),%xmm1        # 0x140fa42f0
1403f768b:	00
1403f768c:	f3 0f 7f 4d 90       	movdqu %xmm1,-0x70(%rbp)
1403f7691:	c7 45 80 56 4c 41 4e 	movl   $0x4e414c56,-0x80(%rbp)
1403f7698:	40 88 7d 84          	mov    %dil,-0x7c(%rbp)
1403f769c:	be 01 00 00 00       	mov    $0x1,%esi
1403f76a1:	89 74 24 20          	mov    %esi,0x20(%rsp)
1403f76a5:	45 33 c9             	xor    %r9d,%r9d
1403f76a8:	4c 8d 44 24 40       	lea    0x40(%rsp),%r8
1403f76ad:	48 8d 55 80          	lea    -0x80(%rbp),%rdx
1403f76b1:	48 8b c8             	mov    %rax,%rcx
1403f76b4:	e8 77 16 14 00       	call   0x140538d30
1403f76b9:	eb 03                	jmp    0x1403f76be
1403f76bb:	48 8b c7             	mov    %rdi,%rax
1403f76be:	48 8b d0             	mov    %rax,%rdx
1403f76c1:	49 8b ce             	mov    %r14,%rcx
1403f76c4:	e8 57 fa 2f 00       	call   0x1406f7120
1403f76c9:	90                   	nop
1403f76ca:	40 f6 c6 01          	test   $0x1,%sil
1403f76ce:	74 4f                	je     0x1403f771f
1403f76d0:	83 e6 fe             	and    $0xfffffffe,%esi
1403f76d3:	48 8b 55 98          	mov    -0x68(%rbp),%rdx
1403f76d7:	48 83 fa 0f          	cmp    $0xf,%rdx
1403f76db:	76 31                	jbe    0x1403f770e
1403f76dd:	48 ff c2             	inc    %rdx
1403f76e0:	48 8b 4d 80          	mov    -0x80(%rbp),%rcx
1403f76e4:	48 8b c1             	mov    %rcx,%rax
1403f76e7:	48 81 fa 00 10 00 00 	cmp    $0x1000,%rdx
1403f76ee:	72 19                	jb     0x1403f7709
1403f76f0:	48 83 c2 27          	add    $0x27,%rdx
1403f76f4:	48 8b 49 f8          	mov    -0x8(%rcx),%rcx
1403f76f8:	48 2b c1             	sub    %rcx,%rax
1403f76fb:	48 83 c0 f8          	add    $0xfffffffffffffff8,%rax
1403f76ff:	48 83 f8 1f          	cmp    $0x1f,%rax
1403f7703:	0f 87 74 02 00 00    	ja     0x1403f797d
1403f7709:	e8 36 3a a2 00       	call   0x140e1b144
1403f770e:	66 0f 6f 05 1a c7 ba 	movdqa 0xbac71a(%rip),%xmm0        # 0x140fa3e30
1403f7715:	00
1403f7716:	f3 0f 7f 45 90       	movdqu %xmm0,-0x70(%rbp)
1403f771b:	c6 45 80 00          	movb   $0x0,-0x80(%rbp)
1403f771f:	0f 57 c0             	xorps  %xmm0,%xmm0
1403f7722:	0f 11 03             	movups %xmm0,(%rbx)
1403f7725:	48 89 7b 10          	mov    %rdi,0x10(%rbx)
1403f7729:	41 be 0f 00 00 00    	mov    $0xf,%r14d
1403f772f:	4c 89 73 18          	mov    %r14,0x18(%rbx)
1403f7733:	c6 03 00             	movb   $0x0,(%rbx)
1403f7736:	0f 11 43 20          	movups %xmm0,0x20(%rbx)
1403f773a:	48 89 7b 30          	mov    %rdi,0x30(%rbx)
1403f773e:	4c 89 73 38          	mov    %r14,0x38(%rbx)
1403f7742:	c6 43 20 00          	movb   $0x0,0x20(%rbx)
1403f7746:	48 c7 43 40 ff ff ff 	movq   $0xffffffffffffffff,0x40(%rbx)
1403f774d:	ff
1403f774e:	89 7b 48             	mov    %edi,0x48(%rbx)
1403f7751:	48 8d 53 50          	lea    0x50(%rbx),%rdx
1403f7755:	48 89 7a 38          	mov    %rdi,0x38(%rdx)
1403f7759:	48 89 bb c8 00 00 00 	mov    %rdi,0xc8(%rbx)
1403f7760:	4c 8d 25 91 c6 ba 00 	lea    0xbac691(%rip),%r12        # 0x140fa3df8
1403f7767:	4c 89 65 a0          	mov    %r12,-0x60(%rbp)
1403f776b:	48 8d 05 ee 37 56 00 	lea    0x5637ee(%rip),%rax        # 0x14095af60
1403f7772:	48 89 45 a8          	mov    %rax,-0x58(%rbp)
1403f7776:	48 8d 45 a0          	lea    -0x60(%rbp),%rax
1403f777a:	48 89 45 d8          	mov    %rax,-0x28(%rbp)
1403f777e:	48 8d 4d a0          	lea    -0x60(%rbp),%rcx
1403f7782:	e8 d9 7a da ff       	call   0x14019f260
1403f7787:	48 8b 4d d8          	mov    -0x28(%rbp),%rcx
1403f778b:	48 85 c9             	test   %rcx,%rcx
1403f778e:	74 17                	je     0x1403f77a7
1403f7790:	48 8b 01             	mov    (%rcx),%rax
1403f7793:	48 8d 55 a0          	lea    -0x60(%rbp),%rdx
1403f7797:	48 3b ca             	cmp    %rdx,%rcx
1403f779a:	0f 95 c2             	setne  %dl
1403f779d:	48 8b 40 20          	mov    0x20(%rax),%rax
1403f77a1:	ff 15 79 c2 b8 00    	call   *0xb8c279(%rip)        # 0x140f83a20
1403f77a7:	4c 89 65 e0          	mov    %r12,-0x20(%rbp)
1403f77ab:	48 8d 05 ae 37 56 00 	lea    0x5637ae(%rip),%rax        # 0x14095af60
1403f77b2:	48 89 45 e8          	mov    %rax,-0x18(%rbp)
1403f77b6:	48 8d 45 e0          	lea    -0x20(%rbp),%rax
1403f77ba:	48 89 45 18          	mov    %rax,0x18(%rbp)
1403f77be:	48 8d 93 90 00 00 00 	lea    0x90(%rbx),%rdx
1403f77c5:	48 8d 4d e0          	lea    -0x20(%rbp),%rcx
1403f77c9:	e8 92 7a da ff       	call   0x14019f260
1403f77ce:	48 8b 4d 18          	mov    0x18(%rbp),%rcx
1403f77d2:	48 85 c9             	test   %rcx,%rcx
1403f77d5:	74 18                	je     0x1403f77ef
1403f77d7:	48 8b 01             	mov    (%rcx),%rax
1403f77da:	48 8d 55 e0          	lea    -0x20(%rbp),%rdx
1403f77de:	48 3b ca             	cmp    %rdx,%rcx
1403f77e1:	0f 95 c2             	setne  %dl
1403f77e4:	48 8b 40 20          	mov    0x20(%rax),%rax
1403f77e8:	ff 15 32 c2 b8 00    	call   *0xb8c232(%rip)        # 0x140f83a20
1403f77ee:	90                   	nop
1403f77ef:	83 ce 02             	or     $0x2,%esi
1403f77f2:	89 74 24 20          	mov    %esi,0x20(%rsp)
1403f77f6:	48 8b 4b 18          	mov    0x18(%rbx),%rcx
1403f77fa:	48 83 f9 0a          	cmp    $0xa,%rcx
1403f77fe:	72 32                	jb     0x1403f7832
1403f7800:	48 8b fb             	mov    %rbx,%rdi
1403f7803:	48 83 f9 0f          	cmp    $0xf,%rcx
1403f7807:	76 03                	jbe    0x1403f780c
1403f7809:	48 8b 3b             	mov    (%rbx),%rdi
1403f780c:	48 c7 43 10 0a 00 00 	movq   $0xa,0x10(%rbx)
1403f7813:	00
1403f7814:	41 b8 0a 00 00 00    	mov    $0xa,%r8d
1403f781a:	48 8d 15 f7 61 bf 00 	lea    0xbf61f7(%rip),%rdx        # 0x140feda18
1403f7821:	48 8b cf             	mov    %rdi,%rcx
1403f7824:	e8 e7 77 ae 00       	call   0x140edf010
1403f7829:	c6 47 0a 00          	movb   $0x0,0xa(%rdi)
1403f782d:	e9 ff 00 00 00       	jmp    0x1403f7931
1403f7832:	48 8b d1             	mov    %rcx,%rdx
1403f7835:	48 d1 ea             	shr    $1,%rdx
1403f7838:	48 be ff ff ff ff ff 	movabs $0x7fffffffffffffff,%rsi
1403f783f:	ff ff 7f
1403f7842:	48 8b c6             	mov    %rsi,%rax
1403f7845:	48 2b c2             	sub    %rdx,%rax
1403f7848:	48 3b c8             	cmp    %rax,%rcx
1403f784b:	76 57                	jbe    0x1403f78a4
1403f784d:	48 b8 00 00 00 00 00 	movabs $0x8000000000000000,%rax
1403f7854:	00 00 80
1403f7857:	48 83 c0 27          	add    $0x27,%rax
1403f785b:	48 8b c8             	mov    %rax,%rcx
1403f785e:	e8 a5 38 a2 00       	call   0x140e1b108
1403f7863:	48 85 c0             	test   %rax,%rax
1403f7866:	0f 84 05 01 00 00    	je     0x1403f7971
1403f786c:	48 8d 78 27          	lea    0x27(%rax),%rdi
1403f7870:	48 83 e7 e0          	and    $0xffffffffffffffe0,%rdi
1403f7874:	48 89 47 f8          	mov    %rax,-0x8(%rdi)
1403f7878:	48 c7 43 10 0a 00 00 	movq   $0xa,0x10(%rbx)
1403f787f:	00
1403f7880:	48 89 73 18          	mov    %rsi,0x18(%rbx)
1403f7884:	f2 0f 10 05 8c 61 bf 	movsd  0xbf618c(%rip),%xmm0        # 0x140feda18
1403f788b:	00
1403f788c:	f2 0f 11 07          	movsd  %xmm0,(%rdi)
1403f7890:	0f b7 05 89 61 bf 00 	movzwl 0xbf6189(%rip),%eax        # 0x140feda20
1403f7897:	66 89 47 08          	mov    %ax,0x8(%rdi)
1403f789b:	c6 47 0a 00          	movb   $0x0,0xa(%rdi)
1403f789f:	e9 8a 00 00 00       	jmp    0x1403f792e
1403f78a4:	48 8d 04 0a          	lea    (%rdx,%rcx,1),%rax
1403f78a8:	48 83 f8 0f          	cmp    $0xf,%rax
1403f78ac:	4c 0f 47 f0          	cmova  %rax,%r14
1403f78b0:	49 8b f6             	mov    %r14,%rsi
1403f78b3:	49 8d 4e 01          	lea    0x1(%r14),%rcx
1403f78b7:	48 85 c9             	test   %rcx,%rcx
1403f78ba:	75 2c                	jne    0x1403f78e8
1403f78bc:	48 c7 43 10 0a 00 00 	movq   $0xa,0x10(%rbx)
1403f78c3:	00
1403f78c4:	4c 89 73 18          	mov    %r14,0x18(%rbx)
1403f78c8:	f2 0f 10 05 48 61 bf 	movsd  0xbf6148(%rip),%xmm0        # 0x140feda18
1403f78cf:	00
1403f78d0:	f2 0f 11 07          	movsd  %xmm0,(%rdi)
1403f78d4:	0f b7 05 45 61 bf 00 	movzwl 0xbf6145(%rip),%eax        # 0x140feda20
1403f78db:	66 89 47 08          	mov    %ax,0x8(%rdi)
1403f78df:	88 0c 25 0a 00 00 00 	mov    %cl,0xa
1403f78e6:	eb 46                	jmp    0x1403f792e
1403f78e8:	48 81 f9 00 10 00 00 	cmp    $0x1000,%rcx
1403f78ef:	72 0e                	jb     0x1403f78ff