Function at 0x14008ec50
Capabilities:
Encode data using xor
Hash data using fnv

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x288
movaps xmmword [rsp + 0x270], xmm9
movaps xmmword [rsp + 0x260], xmm8
movaps xmmword [rsp + 0x250], xmm7
movaps xmmword [rsp + 0x240], xmm6
mov qword [rsp + 0x48], rdx
cmp qword [rcx + 0x10], 0
jne 0x14008f513
mov edi, r8d
mov rbx, rcx
lea rax, [rcx + 0x10]
movabs r15, 0xcbf29ce484222325
movabs r13, 0x100000001b3
mov qword [rsp + 0x50], rax
mov qword [rax], 0xffffffffffffffff
mov word [rsp + 0x70], r8w
xor eax, eax
mov r12, r15
movzx ecx, byte [rsp + rax + 0x70]
inc rax
xor r12, rcx
imul r12, r13
cmp rax, 2
jne 0x14008ecca
lea rcx, [rbx + 0x18]
mov rbp, r12
shr rbp, 0x39
mov rax, qword [rbx + 0x18]
mov rdx, qword [rbx + 0x20]
mov r8, rdx
and r8, r12
movd xmm0, ebp
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
pshufd xmm0, xmm0, 0
lea r9, [rax - 0xa8]
xor r10d, r10d
pcmpeqd xmm1, xmm1
movdqu xmm2, xmmword [rax + r8]
movdqa xmm3, xmm2
pcmpeqb xmm3, xmm0
pmovmskb r11d, xmm3
test r11w, r11w
je 0x14008ed58
lea r14d, [r11 - 1]
and r14d, r11d
bsf r11d, r11d
add r11, r8
and r11, rdx
neg r11
imul rsi, r11, 0xa8
mov r11d, r14d
cmp word [r9 + rsi], di
jne 0x14008ed2b
jmp 0x14008ed7a
pcmpeqb xmm2, xmm1
pmovmskb r11d, xmm2
test r11d, r11d
jne 0x14008ee99
add r8, r10
add r8, 0x10
add r10, 0x10
and r8, rdx
jmp 0x14008ed18
mov r14, qword [rsp + 0x50]
mov qword [r14], 0
mov rcx, 0xffffffffffffffff
xor eax, eax
add rcx, 2
mov qword [rbx + 0x10], rcx
cmp qword [rbx + 0x30], 0
je 0x14008ee5b
mov word [rsp + 0x70], di
xor ecx, ecx
movzx edx, byte [rsp + rcx + 0x70]
inc rcx
xor r15, rdx
imul r15, r13
cmp rcx, 2
jne 0x14008eda9
mov rcx, qword [rbx + 0x18]
mov rdx, qword [rbx + 0x20]
mov r8, rdx
and r8, r15
shr r15, 0x39
movd xmm0, r15d
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
pshufd xmm0, xmm0, 0
lea r9, [rcx - 0xa8]
xor r10d, r10d
pcmpeqd xmm1, xmm1
movdqu xmm2, xmmword [rcx + r8]
movdqa xmm3, xmm2
pcmpeqb xmm3, xmm0
pmovmskb r11d, xmm3
test r11w, r11w
je 0x14008ee31
lea esi, [r11 - 1]
and esi, r11d
bsf r11d, r11d
add r11, r8
and r11, rdx
neg r11
imul rbx, r11, 0xa8
mov r11d, esi
cmp word [r9 + rbx], di
jne 0x14008ee04
jmp 0x14008ee4f
pcmpeqb xmm2, xmm1
pmovmskb r11d, xmm2
test r11d, r11d
jne 0x14008ee5b
add r8, r10
add r8, 0x10
add r10, 0x10
and r8, rdx
jmp 0x14008edf1
lea rax, [rcx + rbx]
add rax, 0xffffffffffffff60
jmp 0x14008ee60
mov qword [r14], rax
xor eax, eax
mov rdx, r14
movaps xmm6, xmmword [rsp + 0x240]
movaps xmm7, xmmword [rsp + 0x250]
movaps xmm8, xmmword [rsp + 0x260]
movaps xmm9, xmmword [rsp + 0x270]
add rsp, 0x288
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
cmp qword [rbx + 0x28], 0
jne 0x14008eea5
call fcn.14008d851
movabs rcx, 0x8000000000000000
xor eax, eax
mov qword [rsp + 0x100], rax
mov qword [rsp + 0x108], 1
pxor xmm0, xmm0
movdqu xmmword [rsp + 0x110], xmm0
mov qword [rsp + 0x120], 4
movdqu xmmword [rsp + 0x128], xmm0
mov dword [rsp + 0x188], 0x3c23d70a
mov qword [rsp + 0x138], rax
mov qword [rsp + 0x148], rcx
lea rsi, [rsp + 0x70]
mov rcx, rsi
mov r14, qword [rsp + 0x48]
mov rdx, r14
mov r8d, edi
mov r9w, 0xffff
call fcn.14008eba5
mov al, byte [rsi + 0x1a]
mov byte [rsp + 0x47], al
test al, al
je 0x14008efbc
cmp dword [r14 + 0x28], 2
mov r8, qword [r14]
jne 0x14008f012
cmp r8, 2
jne 0x14008f0ac
cmp dword [r14 + 0x1b0], 5
jne 0x14008f2fc
cmp byte [r14 + 0x530], 0
movabs rsi, 0x8000000000000000
je 0x14008f4ca
movzx r9d, byte [r14 + 0x990]
cmp r9, 0x20
ja 0x14008f51f
lea rdx, [r14 + 0x488]
add r14, 0x950
lea rax, fcn.14008ad15
mov qword [rsp + 0x30], rax
lea rax, [rsp + 0x100]
mov qword [rsp + 0x28], rax
mov word [rsp + 0x20], di
lea rcx, [rsp + 0x70]
mov r8, r14
call fcn.1402851c0
jmp 0x14008f331
movzx ecx, word [rsp + 0x80]
movzx eax, word [rsp + 0x82]
movzx r8d, word [rsp + 0x84]
movzx edx, word [rsp + 0x86]
movzx r9d, word [rsp + 0x88]
test r9w, r9w
je 0x14008f1b0
movzx r10d, word [rbx + 0x54]
xorps xmm0, xmm0
cvtsi2ss xmm0, r10d
movzx r9d, r9w
xorps xmm1, xmm1
cvtsi2ss xmm1, r9d
divss xmm0, xmm1
jmp 0x14008f1b8
cmp r8, 2
movabs rsi, 0x8000000000000000
je 0x14008f4ca
movdqu xmm0, xmmword [r14 + 8]
movdqu xmm1, xmmword [r14 + 0x18]
movdqu xmmword [rsp + 0x1a8], xmm1
movdqu xmmword [rsp + 0x198], xmm0
mov qword [rsp + 0x190], r8
movzx r9d, byte [r14 + 0x990]
cmp r9, 0x21
jae 0x14008f51f
lea rdx, [r14 + 0x28]
add r14, 0x950
lea rax, fcn.14008ad15
mov qword [rsp + 0x38], rax
lea rax, [rsp + 0x100]
mov qword [rsp + 0x30], rax
mov word [rsp + 0x28], di
mov qword [rsp + 0x20], r9
lea rcx, [rsp + 0x5c]
lea r8, [rsp + 0x190]
mov r9, r14
call fcn.14028c819
movzx r14d, word [rsp + 0x5c]
jmp 0x14008f34c
lea rax, [rsp + 0x100]
mov qword [rsp + 0x80], rax
lea rax, fcn.14008ad15
mov qword [rsp + 0x88], rax
movaps xmm0, xmmword [0x1402eaa20]
movups xmmword [rsp + 0x90], xmm0
mov qword [rsp + 0xa0], 0
mov byte [rsp + 0xcc], 1
movdqa xmm0, xmmword [0x1402eaa30]
movdqu xmmword [rsp + 0x70], xmm0
xor eax, eax
mov dword [rsp + 0xa8], eax
mov dword [rsp + 0xb4], eax
mov dword [rsp + 0xc0], eax
cmp di, 0xffff
je 0x14008f4c0
lea edx, [rdi + 1]
mov rax, qword [rsp + 0x48]
mov rax, qword [rax + 0x10]
cmp r8, 1
mov cl, 2
sbb cl, 0
mov r9, rax
shr r9, cl
cmp dx, r9w
jae 0x14008f4c0
test r8, r8
je 0x14008f3eb
mov r8d, eax
shr r8d, 2
cmp r8w, di
jbe 0x14008f4c0
movzx ecx, di
lea r9, [rcx*4 + 4]
cmp r9, rax
ja 0x14008f4c0
cmp dx, r8w
jae 0x14008f4c0
movzx edx, dx
lea r8, [rdx*4 + 4]
cmp r8, rax
ja 0x14008f4c0
shl rcx, 2
mov rax, qword [rsp + 0x48]
mov r8, qword [rax + 8]
mov eax, dword [r8 + rcx]
bswap eax
shl rdx, 2
mov ecx, dword [r8 + rdx]
bswap ecx
jmp 0x14008f45a
movss xmm0, dword [0x1402eaa40]
movabs r10, 0x8000000000000000
movzx r8d, r8w
cvtsi2ss xmm6, r8d
movzx edx, dx
xorps xmm1, xmm1
cvtsi2ss xmm1, edx
mulss xmm6, xmm0
movaps xmm7, xmm0
mulss xmm7, xmm1
movsx ecx, cx
cvtsi2ss xmm8, ecx
cwde
cvtsi2ss xmm9, eax
mulss xmm8, xmm0
addss xmm9, xmm1
mulss xmm9, xmm0
mov sil, byte [rsp + 0x47]
mov rax, qword [rbx + 0x18]
mov rcx, qword [rbx + 0x20]
and r12, rcx
movdqu xmm0, xmmword [rax + r12]
pmovmskb edx, xmm0
test edx, edx
jne 0x14008f239
mov r8d, 0x10
add r12, r8
and r12, rcx
movdqu xmm0, xmmword [rax + r12]
pmovmskb edx, xmm0
add r8, 0x10
test edx, edx
je 0x14008f221
bsf edx, edx
add rdx, r12
and rdx, rcx
mov r8b, byte [rax + rdx]
test r8b, r8b
js 0x14008f25a
movdqa xmm0, xmmword [rax]
pmovmskb edx, xmm0
bsf edx, edx
mov r8b, byte [rax + rdx]
lea r9, [rdx - 0x10]
and r9, rcx
mov byte [rax + rdx], bpl
mov byte [r9 + rax + 0x10], bpl
neg rdx
and r8b, 1
movzx ecx, r8b
sub qword [rbx + 0x28], rcx
imul rcx, rdx, 0xa8
lea r14, [rax + rcx]
add r14, 0xffffffffffffff68
mov word [r14 - 0x10], di
mov qword [r14 - 8], r10
lea rdx, [rsp + 0x1b8]
mov r8d, 0x88
mov rcx, r14
call sub.msvcrt.dll_memcpy
movss dword [r14 + 0x88], xmm6
movss dword [r14 + 0x8c], xmm7
movss dword [r14 + 0x90], xmm8
movss dword [r14 + 0x94], xmm9
inc qword [rbx + 0x30]
test sil, sil
mov r14, qword [rsp + 0x50]
movabs rsi, 0x8000000000000000
jne 0x14008f4f1
lea rcx, [rsp + 0x100]
call fcn.14008ad15
jmp 0x14008f4f1
add r14, 0x1b0
lea rax, fcn.14008ad15
mov qword [rsp + 0x20], rax
lea rcx, [rsp + 0x70]
lea r9, [rsp + 0x100]
mov rdx, r14
mov r8d, edi
call fcn.14027fa39
movabs rsi, 0x8000000000000000
cmp byte [rsp + 0x70], 0
je 0x14008f33d
xor r14d, r14d
jmp 0x14008f34c
mov rax, qword [rsp + 0x72]
mov qword [rsp + 0x5e], rax
mov r14w, 1
lea rcx, [rsp + 0x70]
lea rdx, [rsp + 0x100]
mov r8d, 0x90
call sub.msvcrt.dll_memcpy
test r14w, r14w
je 0x14008f4e2
mov rax, qword [rsp + 0x5e]
mov qword [rsp + 0x48], rax
lea rdx, [rsp + 0x78]
mov r14, qword [rdx - 8]
lea rcx, [rsp + 0x1b8]
mov r8d, 0x88
call sub.msvcrt.dll_memcpy
lea rax, [rsi + 1]
cmp r14, rax
je 0x14008f4ec
mov r10, r14
mov r9, qword [rsp + 0x48]
mov eax, r9d
shr eax, 0x10
mov rcx, r9
shr rcx, 0x20
mov rdx, r9
shr rdx, 0x30
sub ecx, r9d
mov r8d, edx
sub r8d, eax
movsx eax, cx
cvtsi2ss xmm6, eax
movsx eax, r8w
cvtsi2ss xmm7, eax
movsx eax, r9w
cvtsi2ss xmm8, eax
movsx eax, dx
cvtsi2ss xmm9, eax
jmp 0x14008f1fd
mov r8d, eax
shr r8d, 1
cmp r8w, di
jbe 0x14008f4c0
movzx ecx, di
lea r9, [rcx*2 + 2]
cmp r9, rax
ja 0x14008f4c0
cmp dx, r8w
jae 0x14008f4c0
movzx edx, dx
lea r8, [rdx*2 + 2]
cmp r8, rax
ja 0x14008f4c0
add rcx, rcx
mov rax, qword [rsp + 0x48]
mov r8, qword [rax + 8]
movzx eax, word [r8 + rcx]
rol ax, 8
movzx eax, ax
add rax, rax
add rdx, rdx
movzx ecx, word [r8 + rdx]
rol cx, 8
movzx ecx, cx
add rcx, rcx
mov r10, rcx
sub r10, rax
jbe 0x14008f4c0
mov rdx, qword [rsp + 0x48]
mov r9, qword [rdx + 0x20]
cmp rcx, r9
ja 0x14008f4c0
mov rdx, qword [rsp + 0x48]
mov r8, qword [rdx + 0x18]
add rax, r8
mov qword [rsp + 0x38], rsi
mov qword [rsp + 0x28], r10
mov qword [rsp + 0x20], rax
mov byte [rsp + 0x30], 0
lea rcx, [rsp + 0x66]
call fcn.14008f55b
movabs rsi, 0x8000000000000000
movzx r14d, word [rsp + 0x66]
cmp r14w, 2
je 0x14008f4ca
mov rax, qword [rsp + 0x68]
mov qword [rsp + 0x5e], rax
jmp 0x14008f34c
movabs rsi, 0x8000000000000000
lea rcx, [rsp + 0x70]
lea rdx, [rsp + 0x100]
mov r8d, 0x90
call sub.msvcrt.dll_memcpy
lea rcx, [rsp + 0x70]
call fcn.14008ad15
mov r14, qword [rsp + 0x50]
mov rcx, qword [r14]
lea rax, [rcx + 1]
mov qword [r14], rax
dec rsi
cmp rax, rsi
jb 0x14008ed8f
lea rcx, str._home_janus_.cargo_registry_src_index.crates.io_6f17d22bba15001f_femtovg_0.8.2_src_text_font.rs
call fcn.14007ed30
lea rcx, str._home_janus_.cargo_registry_src_index.crates.io_6f17d22bba15001f_femtovg_0.8.2_src_text_font.rs
call fcn.14007ecd0
lea r8, str.x8__
mov edx, 0x20
mov rcx, r9
call fcn.14007a270
ud2