Function at 0x18002a890
Capabilities:
Hash data using fnv

Disassembly:
mov rax, rsp
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rsi
mov qword [rax + 0x18], rdi
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rax - 0x48]
sub rsp, 0x120
movaps xmmword [rax - 0x38], xmm6
movaps xmmword [rax - 0x48], xmm7
movaps xmm7, xmm3
mov r13, r8
mov r15, rdx
mov rdi, rcx
xor r8d, r8d
xor edx, edx
mov rcx, r15
call qword [sym.imp.GDI32.dll_GetKerningPairsW]
mov ebx, eax
xor ecx, ecx
call fcn.180124068
mov qword [rsp + 0x48], rbx
test ebx, ebx
jne 0x18002a8f4
xor r14d, r14d
mov esi, r14d
mov qword [rsp + 0x50], r14
jmp 0x18002a90c
mov edx, 8
mov rcx, rbx
call fcn.180124058
mov rsi, rax
mov qword [rsp + 0x50], rax
xor r14d, r14d
mov qword [rsp + 0x68], rsi
mov r8, rsi
mov edx, ebx
mov rcx, r15
call qword [sym.imp.GDI32.dll_GetKerningPairsW]
lea rcx, [rsp + 0x70]
call fcn.18002b1e0
nop
test ebx, ebx
je 0x18002acc0
add rdi, 0xc8
mov qword [rsp + 0x60], rdi
lea r12, [rsi + 4]
movabs rdx, 0xcbf29ce484222325
movabs rbx, 0x100000001b3
mov esi, 0xffffffff
nop dword [rax + rax]
movzx edi, word [r12 - 4]
movzx ecx, dil
xor rcx, rdx
imul rcx, rbx
mov eax, edi
shr rax, 8
xor rcx, rax
imul rcx, rbx
mov eax, edi
shr rax, 0x10
xor rcx, rax
imul rcx, rbx
mov eax, edi
shr rax, 0x18
xor rcx, rax
imul rcx, rbx
mov rdx, qword [r13 + 0x30]
and rdx, rcx
add rdx, rdx
mov rcx, qword [r13 + 0x18]
mov rax, qword [rcx + rdx*8 + 8]
mov r8, qword [r13 + 8]
cmp rax, r8
je 0x18002a9d0
mov rcx, qword [rcx + rdx*8]
cmp edi, dword [rax + 0x10]
je 0x18002a9d3
nop dword [rax]
cmp rax, rcx
je 0x18002a9d0
mov rax, qword [rax + 8]
cmp edi, dword [rax + 0x10]
jne 0x18002a9c0
jmp 0x18002a9d3
mov rax, r14
test rax, rax
cmove rax, r8
cmp rax, r8
je 0x18002a9e4
mov edi, dword [rax + 0x14]
jmp 0x18002aa5c
mov word [rsp + 0x40], di
mov word [rsp + 0x42], r14w
mov word [rsp + 0x30], r14w
mov dword [rsp + 0x20], 1
lea r9, [rsp + 0x30]
mov r8d, 1
lea rdx, [rsp + 0x40]
mov rcx, r15
call qword [sym.imp.GDI32.dll_GetGlyphIndicesW]
cmp eax, esi
je 0x18002aa57
movzx eax, word [rsp + 0x30]
mov ecx, 0xffff
cmp ax, cx
je 0x18002aa57
mov ebx, eax
mov dword [rsp + 0x38], edi
lea r8, [rsp + 0x38]
lea rdx, [rbp - 0x50]
mov rcx, r13
call fcn.1800342f0
mov rcx, qword [rax]
mov dword [rcx + 0x14], ebx
movzx edi, word [rsp + 0x30]
movabs rbx, 0x100000001b3
jmp 0x18002aa5c
mov edi, 0xffffffff
movzx esi, word [r12 - 2]
movzx ecx, sil
movabs rax, 0xcbf29ce484222325
xor rcx, rax
imul rcx, rbx
mov eax, esi
shr rax, 8
xor rcx, rax
imul rcx, rbx
mov eax, esi
shr rax, 0x10
xor rcx, rax
imul rcx, rbx
mov eax, esi
shr rax, 0x18
xor rcx, rax
imul rcx, rbx
mov rdx, qword [r13 + 0x30]
and rdx, rcx
add rdx, rdx
mov rcx, qword [r13 + 0x18]
mov rax, qword [rcx + rdx*8 + 8]
mov r8, qword [r13 + 8]
cmp rax, r8
je 0x18002aad3
mov rcx, qword [rcx + rdx*8]
cmp esi, dword [rax + 0x10]
je 0x18002aad6
cmp rax, rcx
je 0x18002aad3
mov rax, qword [rax + 8]
cmp esi, dword [rax + 0x10]
jne 0x18002aac3
jmp 0x18002aad6
mov rax, r14
test rax, rax
cmove rax, r8
cmp rax, r8
je 0x18002aae8
mov r14d, dword [rax + 0x14]
jmp 0x18002ab67
mov word [rsp + 0x44], si
mov word [rsp + 0x46], r14w
mov word [rsp + 0x34], r14w
mov dword [rsp + 0x20], 1
lea r9, [rsp + 0x34]
mov r8d, 1
lea rdx, [rsp + 0x44]
mov rcx, r15
call qword [sym.imp.GDI32.dll_GetGlyphIndicesW]
mov ecx, 0xffffffff
cmp eax, ecx
je 0x18002ab61
movzx eax, word [rsp + 0x34]
mov ecx, 0xffff
cmp ax, cx
je 0x18002ab61
mov ebx, eax
mov dword [rsp + 0x38], esi
lea r8, [rsp + 0x38]
lea rdx, [rbp - 0x40]
mov rcx, r13
call fcn.1800342f0
mov rcx, qword [rax]
mov dword [rcx + 0x14], ebx
movzx r14d, word [rsp + 0x34]
movabs rbx, 0x100000001b3
jmp 0x18002ab67
mov r14d, 0xffffffff
mov dword [rsp + 0x38], edi
mov eax, edi
shr eax, 8
movzx edx, al
movzx eax, dil
movabs rcx, 0xcbf29ce484222325
xor rax, rcx
imul rax, rbx
xor rdx, rax
imul rdx, rbx
mov eax, edi
shr eax, 0x10
movzx ecx, al
xor rdx, rcx
imul rdx, rbx
mov eax, edi
shr rax, 0x18
xor rdx, rax
imul rdx, rbx
mov rcx, qword [rbp - 0x60]
and rcx, rdx
add rcx, rcx
mov rdx, qword [rbp - 0x78]
mov rax, qword [rdx + rcx*8 + 8]
mov r8, qword [rsp + 0x78]
cmp rax, r8
je 0x18002abe1
mov rcx, qword [rdx + rcx*8]
cmp edi, dword [rax + 0x10]
je 0x18002abe3
cmp rax, rcx
je 0x18002abe1
mov rax, qword [rax + 8]
cmp edi, dword [rax + 0x10]
jne 0x18002abd1
jmp 0x18002abe3
xor eax, eax
mov rcx, r8
test rax, rax
cmovne rcx, rax
cmp rcx, r8
je 0x18002abf7
mov esi, dword [rcx + 0x14]
jmp 0x18002ac1c
mov edx, edi
mov rcx, r15
call fcn.18002ae50
mov esi, eax
lea r8, [rsp + 0x38]
lea rdx, [rbp - 0x30]
lea rcx, [rsp + 0x70]
call fcn.1800340b0
mov rcx, qword [rax]
mov dword [rcx + 0x14], esi
mov ecx, dword [r12]
add ecx, esi
movd xmm6, ecx
cvtdq2ps xmm6, xmm6
divss xmm6, xmm7
mov ebx, edi
shl rbx, 0x20
mov eax, r14d
or rax, rbx
mov qword [rsp + 0x58], rax
lea r8, [rsp + 0x58]
lea rdx, [rbp - 0x20]
mov rcx, qword [rsp + 0x60]
call fcn.180034530
mov rcx, qword [rax]
movss dword [rcx + 0x18], xmm6
mov eax, 0xffffffff
or rbx, rax
mov qword [rsp + 0x38], rbx
lea r8, [rsp + 0x38]
lea rdx, [rbp - 0x10]
mov rcx, qword [rsp + 0x60]
call fcn.180034530
movd xmm0, esi
cvtdq2ps xmm0, xmm0
divss xmm0, xmm7
mov rax, qword [rax]
movss dword [rax + 0x18], xmm0
add r12, 8
sub qword [rsp + 0x48], 1
movabs rbx, 0x100000001b3
mov esi, 0xffffffff
movabs rdx, 0xcbf29ce484222325
mov r14d, 0
jne 0x18002a960
mov rsi, qword [rsp + 0x50]
lea rcx, [rbp - 0x78]
call fcn.18002b2f0
lea rcx, [rsp + 0x78]
call fcn.18002b350
nop
mov rcx, rsi
call fcn.180124068
lea r11, [rsp + 0x120]
mov rbx, qword [r11 + 0x30]
mov rsi, qword [r11 + 0x38]
mov rdi, qword [r11 + 0x40]
movaps xmm6, xmmword [r11 - 0x10]
movaps xmm7, xmmword [r11 - 0x20]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret