Function at 0x14002b170
Capabilities:
Hash data using fnv

Disassembly:
mov qword [rsp + 0x20], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x40]
sub rsp, 0x140
movaps xmmword [rsp + 0x130], xmm6
mov rax, qword [0x14041d440]
xor rax, rsp
mov qword [rbp + 0x28], rax
movaps xmm6, xmm3
mov r15, r8
mov r12, rdx
mov rsi, rcx
xor r8d, r8d
xor edx, edx
mov rcx, r12
call qword [sym.imp.GDI32.dll_GetKerningPairsW]
mov edi, eax
xor ecx, ecx
call fcn.1400e1bf4
mov ecx, edi
mov qword [rsp + 0x60], rcx
mov edx, 8
call fcn.1400eb0e4
mov rbx, rax
mov qword [rsp + 0x70], rax
mov r8, rax
mov edx, edi
mov rcx, r12
call qword [sym.imp.GDI32.dll_GetKerningPairsW]
mov dword [rbp - 0x80], 0
xor r14d, r14d
mov qword [rbp - 0x78], r14
mov qword [rbp - 0x70], r14
lea ecx, [r14 + 0x18]
call fcn.1400daadc
mov qword [rax], rax
mov qword [rax + 8], rax
mov qword [rbp - 0x78], rax
mov qword [rbp - 0x68], r14
xorps xmm0, xmm0
movdqa xmmword [rbp - 0x60], xmm0
mov qword [rbp - 0x50], 7
mov qword [rbp - 0x48], 8
mov dword [rbp - 0x80], 0x3f800000
mov r8, rax
lea edx, [r14 + 0x10]
lea rcx, [rbp - 0x68]
call fcn.1400332a0
nop
test edi, edi
je 0x14002b5ee
add rsi, 0xc8
mov qword [rsp + 0x68], rsi
lea r13, [rbx + 4]
movabs rax, 0xcbf29ce484222325
mov esi, 0xffff
xor ebx, ebx
movabs r9, 0x100000001b3
mov r14d, 0xffffffff
nop
movzx edi, word [r13 - 4]
movzx ecx, dil
xor rcx, rax
imul rcx, r9
mov eax, edi
shr rax, 8
xor rcx, rax
imul rcx, r9
mov eax, edi
shr rax, 0x10
xor rcx, rax
imul rcx, r9
mov eax, edi
shr rax, 0x18
xor rcx, rax
imul rcx, r9
mov rdx, qword [r15 + 0x30]
and rdx, rcx
add rdx, rdx
mov rcx, qword [r15 + 0x18]
mov rax, qword [rcx + rdx*8 + 8]
mov r8, qword [r15 + 8]
cmp rax, r8
je 0x14002b2f0
mov rcx, qword [rcx + rdx*8]
cmp edi, dword [rax + 0x10]
je 0x14002b2f3
nop dword [rax]
cmp rax, rcx
je 0x14002b2f0
mov rax, qword [rax + 8]
cmp edi, dword [rax + 0x10]
jne 0x14002b2e0
jmp 0x14002b2f3
mov rax, rbx
test rax, rax
cmove rax, r8
cmp rax, r8
je 0x14002b304
mov edi, dword [rax + 0x14]
jmp 0x14002b376
mov word [rsp + 0x58], di
mov word [rsp + 0x5a], bx
mov word [rsp + 0x40], bx
mov dword [rsp + 0x20], 1
lea r9, [rsp + 0x40]
mov r8d, 1
lea rdx, [rsp + 0x58]
mov rcx, r12
call qword [sym.imp.GDI32.dll_GetGlyphIndicesW]
cmp eax, r14d
je 0x14002b367
cmp word [rsp + 0x40], si
je 0x14002b367
mov dword [rsp + 0x48], edi
lea r8, [rsp + 0x48]
lea rdx, [rbp - 0x40]
mov rcx, r15
call fcn.1400343a0
mov rcx, qword [rax]
movzx eax, word [rsp + 0x40]
mov dword [rcx + 0x14], eax
movzx edi, word [rsp + 0x40]
jmp 0x14002b36c
mov edi, 0xffffffff
movabs r9, 0x100000001b3
mov dword [rsp + 0x48], edi
movzx esi, word [r13 - 2]
movzx ecx, sil
movabs rax, 0xcbf29ce484222325
xor rcx, rax
imul rcx, r9
mov eax, esi
shr rax, 8
xor rcx, rax
imul rcx, r9
mov eax, esi
shr rax, 0x10
xor rcx, rax
imul rcx, r9
mov eax, esi
shr rax, 0x18
xor rcx, rax
imul rcx, r9
mov rdx, qword [r15 + 0x30]
and rdx, rcx
add rdx, rdx
mov rcx, qword [r15 + 0x18]
mov rax, qword [rcx + rdx*8 + 8]
mov r8, qword [r15 + 8]
cmp rax, r8
je 0x14002b3f0
mov rcx, qword [rcx + rdx*8]
cmp esi, dword [rax + 0x10]
je 0x14002b3f3
cmp rax, rcx
je 0x14002b3f0
mov rax, qword [rax + 8]
cmp esi, dword [rax + 0x10]
jne 0x14002b3e0
jmp 0x14002b3f3
mov rax, rbx
test rax, rax
cmove rax, r8
cmp rax, r8
je 0x14002b405
mov r14d, dword [rax + 0x14]
jmp 0x14002b47e
mov word [rsp + 0x5c], si
mov word [rsp + 0x5e], bx
mov word [rsp + 0x44], bx
mov dword [rsp + 0x20], 1
lea r9, [rsp + 0x44]
mov r8d, 1
lea rdx, [rsp + 0x5c]
mov rcx, r12
call qword [sym.imp.GDI32.dll_GetGlyphIndicesW]
cmp eax, r14d
je 0x14002b46e
mov eax, 0xffff
cmp word [rsp + 0x44], ax
je 0x14002b46e
mov dword [rsp + 0x50], esi
lea r8, [rsp + 0x50]
lea rdx, [rbp - 0x30]
mov rcx, r15
call fcn.1400343a0
mov rcx, qword [rax]
movzx eax, word [rsp + 0x44]
mov dword [rcx + 0x14], eax
movzx r14d, word [rsp + 0x44]
jmp 0x14002b474
mov r14d, 0xffffffff
movabs r9, 0x100000001b3
mov dword [rsp + 0x50], edi
movzx ecx, dil
movabs rax, 0xcbf29ce484222325
xor rcx, rax
imul rcx, r9
movzx eax, byte [rsp + 0x49]
xor rcx, rax
imul rcx, r9
movzx eax, byte [rsp + 0x4a]
xor rcx, rax
imul rcx, r9
movzx eax, byte [rsp + 0x4b]
xor rcx, rax
imul rcx, r9
mov rdx, qword [rbp - 0x50]
and rdx, rcx
add rdx, rdx
mov rcx, qword [rbp - 0x68]
mov rax, qword [rcx + rdx*8 + 8]
mov r8, qword [rbp - 0x78]
cmp rax, r8
je 0x14002b4f0
mov rcx, qword [rcx + rdx*8]
cmp edi, dword [rax + 0x10]
je 0x14002b4f3
cmp rax, rcx
je 0x14002b4f0
mov rax, qword [rax + 8]
cmp edi, dword [rax + 0x10]
jne 0x14002b4e0
jmp 0x14002b4f3
mov rax, rbx
test rax, rax
je 0x14002b502
cmp rax, r8
je 0x14002b502
mov esi, dword [rax + 0x14]
jmp 0x14002b54c
mov word [rbp + 0x20], bx
lea rax, [0x140373b30]
mov qword [rsp + 0x30], rax
mov qword [rsp + 0x28], rbx
mov dword [rsp + 0x20], ebx
lea r9, [rbp + 0x10]
mov r8d, 0x82
mov edx, edi
mov rcx, r12
call qword [sym.imp.GDI32.dll_GetGlyphOutlineW]
movsx esi, word [rbp + 0x20]
lea r8, [rsp + 0x50]
lea rdx, [rbp - 0x20]
lea rcx, [rbp - 0x80]
call fcn.140034160
mov rcx, qword [rax]
mov dword [rcx + 0x14], esi
shl rdi, 0x20
mov eax, r14d
or rax, rdi
mov qword [rsp + 0x50], rax
lea r8, [rsp + 0x50]
lea rdx, [rbp - 0x10]
mov rcx, qword [rsp + 0x68]
call fcn.1400345e0
mov rcx, qword [rax]
mov eax, dword [r13]
add eax, esi
movd xmm0, eax
cvtdq2ps xmm0, xmm0
divss xmm0, xmm6
movss dword [rcx + 0x18], xmm0
mov eax, 0xffffffff
or rdi, rax
mov qword [rsp + 0x50], rdi
lea r8, [rsp + 0x50]
lea rdx, [rbp]
mov rcx, qword [rsp + 0x68]
call fcn.1400345e0
movd xmm0, esi
cvtdq2ps xmm0, xmm0
divss xmm0, xmm6
mov rax, qword [rax]
movss dword [rax + 0x18], xmm0
add r13, 8
sub qword [rsp + 0x60], 1
mov esi, 0xffff
movabs rax, 0xcbf29ce484222325
movabs r9, 0x100000001b3
mov r14d, 0xffffffff
jne 0x14002b280
mov rbx, qword [rsp + 0x70]
lea rcx, [rbp - 0x68]
call fcn.14000ab90
lea rcx, [rbp - 0x78]
call fcn.14002baf0
nop
mov rcx, rbx
call fcn.1400e1bf4
mov rcx, qword [rbp + 0x28]
xor rcx, rsp
call fcn.1400da5a0
mov rbx, qword [rsp + 0x198]
movaps xmm6, xmmword [rsp + 0x130]
add rsp, 0x140
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret