Function at 0x5147d0
Capabilities:
Hash data using fnv

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0xdcafb5
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x80
mov eax, dword [0xe3c018]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
movss dword [ebp - 0x6c], xmm3
mov dword [ebp - 0x54], ecx
mov edi, dword [ebx + 8]
mov eax, dword [ebx + 0xc]
mov dword [ebp - 0x5c], edi
mov dword [ebp - 0x64], eax
push 0
push 0
push edi
mov dword [ebp - 4], 0
call dword [sym.imp.GDI32.dll_GetKerningPairsW]
mov esi, eax
push 0
mov dword [ebp - 0x70], esi
call fcn.00d9e0ad
lea ecx, [esi*8]
add esp, 4
test ecx, ecx
jne 0x514855
xor eax, eax
jmp 0x514860
push 8
push esi
call fcn.00da184c
add esp, 8
push eax
push esi
push edi
mov dword [ebp - 0x60], eax
mov dword [ebp - 0x1c], eax
call dword [sym.imp.GDI32.dll_GetKerningPairsW]
xorps xmm0, xmm0
lea ecx, [ebp - 0x3c]
movups xmmword [ebp - 0x3c], xmm0
movups xmmword [ebp - 0x2c], xmm0
call fcn.00515100
mov byte [ebp - 4], 1
test esi, esi
je 0x5149e5
mov esi, dword [ebp - 0x60]
add esi, 4
mov dword [ebp - 0x58], esi
movzx eax, word [esi - 4]
mov ecx, edi
mov edx, dword [ebp - 0x64]
push eax
call fcn.00514a20
movzx ecx, word [esi - 2]
add esp, 4
mov edx, dword [ebp - 0x64]
mov edi, eax
mov dword [ebp - 0x68], edi
push ecx
mov ecx, dword [ebp - 0x5c]
call fcn.00514a20
mov dword [ebp - 0x74], eax
add esp, 4
mov eax, edi
movzx ecx, al
xor ecx, 0x811c9dc5
mov dword [ebp - 0x18], eax
imul edx, ecx, 0x1000193
mov ecx, eax
shr ecx, 8
movzx ecx, cl
shr eax, 0x10
movzx eax, al
xor edx, ecx
imul ecx, edx, 0x1000193
xor ecx, eax
mov eax, edi
imul ecx, ecx, 0x1000193
shr eax, 0x18
xor ecx, eax
imul eax, ecx, 0x1000193
lea ecx, [ebp - 0x3c]
push eax
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x90]
push eax
call fcn.0051e520
mov esi, dword [eax + 4]
test esi, esi
je 0x514928
cmp esi, dword [ebp - 0x38]
je 0x514928
mov esi, dword [esi + 0xc]
jmp 0x51495a
push 0xdf2870
xor eax, eax
push eax
push eax
mov word [ebp - 0x40], ax
lea eax, [ebp - 0x50]
push eax
push 0x82
push edi
push dword [ebp - 0x5c]
call dword [sym.imp.GDI32.dll_GetGlyphOutlineW]
movsx esi, word [ebp - 0x40]
lea eax, [ebp - 0x18]
push eax
lea ecx, [ebp - 0x3c]
call fcn.005150e0
mov dword [eax], esi
mov eax, dword [ebp - 0x58]
mov ecx, dword [ebp - 0x74]
mov eax, dword [eax]
add eax, esi
mov dword [ebp - 0x80], ecx
mov ecx, dword [ebp - 0x54]
movd xmm0, eax
xor eax, eax
cvtdq2ps xmm0, xmm0
or eax, edi
lea ecx, [ecx + 0x8c]
mov dword [ebp - 0x7c], eax
lea eax, [ebp - 0x80]
push eax
divss xmm0, dword [ebp - 0x6c]
movss dword [ebp - 0x18], xmm0
call fcn.00515240
movss xmm0, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x54]
mov dword [ebp - 0x88], 0xffffffff
movss dword [eax], xmm0
lea eax, [ebp - 0x88]
push eax
lea ecx, [ecx + 0x8c]
mov dword [ebp - 0x84], edi
call fcn.00515240
movd xmm0, esi
cvtdq2ps xmm0, xmm0
mov esi, dword [ebp - 0x58]
mov edi, dword [ebp - 0x5c]
add esi, 8
sub dword [ebp - 0x70], 1
mov dword [ebp - 0x58], esi
divss xmm0, dword [ebp - 0x6c]
movss dword [eax], xmm0
jne 0x514897
lea ecx, [ebp - 0x3c]
call fcn.00514d90
push dword [ebp - 0x60]
call fcn.00d9e0ad
add esp, 4
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.00d491ba
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 8