Function at 0x1801a6600
Capabilities:
Hash data using djb2

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
mov qword [rsp + 0x20], rdi
push r12
push r14
push r15
sub rsp, 0x70
movzx ebp, byte [rcx]
xor edi, edi
movsxd r15, r8d
mov r14, rcx
movsxd r12, edx
mov rbx, rcx
test bpl, bpl
je 0x1801a66b3
lea rsi, [0x1805c7660]
nop dword [rax + rax]
mov edx, r14d
mov rcx, rbx
sub edx, ebx
dec edx
call fcn.1801a9410
test eax, eax
js 0x1801a677a
cmp eax, 0x110000
jae 0x1801a677a
mov ecx, eax
and ecx, 0xfffff800
cmp ecx, 0xd800
je 0x1801a677a
lea ecx, [rax - 0xfdd0]
cmp ecx, 0x1f
jbe 0x1801a677a
and eax, 0xfffe
cmp eax, 0xfffe
je 0x1801a677a
inc edi
cmp edi, 0x7fffffff
je 0x1801a677a
movzx eax, byte [rbx]
movsx rax, byte [rax + rsi]
add rbx, rax
cmp byte [rbx], 0
jne 0x1801a6640
cmp r12d, 2
ja 0x1801a68a7
cmp r15d, 1
ja 0x1801a689e
test bpl, bpl
lea rsi, str.Arial
cmovne rsi, r14
call fcn.1801a6560
mov rbp, rax
test rax, rax
je 0x1801a6895
mov qword [rsp + 0x50], rsi
mov edi, 0x1505
mov dword [rsp + 0x58], 0
mov r8d, edi
mov dword [rsp + 0x5c], r12d
mov rcx, rsi
mov dword [rsp + 0x60], r15d
test rsi, rsi
je 0x1801a6728
nop dword [rax]
movzx eax, byte [rcx]
test al, al
je 0x1801a6728
imul r8, r8, 0x21
movsx rax, al
add r8, rax
add rcx, 1
jne 0x1801a6710
imul rcx, r15, 0x5ab
imul r14, r12, 0x647
lea rdx, [rsp + 0x20]
add r14, rcx
mov rcx, rbp
lea rax, [r14 + r8]
mov qword [rsp + 0x20], rax
call fcn.1801d6e70
mov rbx, rax
test rax, rax
je 0x1801a6791
cmp dword [rax + 8], 0
jne 0x1801a6786
mov rcx, rax
call fcn.1801a4650
lea rcx, [0x1806d4d38]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov rax, rbx
jmp 0x1801a68ae
lea rax, [0x1805c7240]
jmp 0x1801a68ae
mov rdx, rbx
mov rcx, rbp
call fcn.1801d70d0
mov ecx, 0x50
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
mov rbx, rax
test rax, rax
je 0x1801a6888
mov rcx, rsi
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll__strdup]
mov rsi, rax
test rax, rax
je 0x1801a687f
mov qword [rbx + 0x30], rax
mov rcx, rax
mov dword [rbx + 0x38], 0
mov dword [rbx + 0x3c], r12d
mov dword [rbx + 0x40], r15d
movzx eax, byte [rcx]
test al, al
je 0x1801a67eb
imul rdi, rdi, 0x21
movsx rax, al
add rdi, rax
add rcx, 1
jne 0x1801a67d3
lea rax, [r14 + rdi]
mov dword [rbx + 0x38], 1
lea rdx, [0x1805c5708]
mov qword [rbx], rax
mov rcx, rbx
call fcn.1801ac2d0
mov eax, dword [rbx + 8]
test eax, eax
jne 0x1801a6849
mov rcx, qword [rbx + 0x30]
lea r8d, [rax + 7]
lea rdx, str._cairo:
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strncmp]
test eax, eax
je 0x1801a6839
lea rdx, [rbx + 0x48]
mov rcx, rbx
call fcn.1801da9e0
cmp eax, 0x64
jne 0x1801a6845
lea rdx, [rbx + 0x48]
mov rcx, rbx
call fcn.1801d99e0
test eax, eax
je 0x1801a6854
mov rcx, rsi
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
jmp 0x1801a687f
mov rdx, rbx
mov rcx, rbp
call fcn.1801d7080
test eax, eax
je 0x1801a6765
mov rcx, qword [rbx + 0x30]
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
mov rcx, qword [rbx + 0x48]
test rcx, rcx
je 0x1801a687f
call fcn.1801ac3b0
mov rcx, rbx
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
lea rcx, [0x1806d4d38]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
lea rax, [0x1805c77b0]
jmp 0x1801a68ae
lea rax, [0x1805c7210]
jmp 0x1801a68ae
lea rax, [0x1805c72a0]
lea r11, [rsp + 0x70]
mov rbx, qword [r11 + 0x20]
mov rbp, qword [r11 + 0x28]
mov rsi, qword [r11 + 0x30]
mov rdi, qword [r11 + 0x38]
mov rsp, r11
pop r15
pop r14
pop r12
ret