Function at 0x18016ede0
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 0x18016ee93
lea rsi, [0x180589290]
nop dword [rax + rax]
mov edx, r14d
mov rcx, rbx
sub edx, ebx
dec edx
call fcn.180171dd0
test eax, eax
js 0x18016ef5a
cmp eax, 0x110000
jae 0x18016ef5a
mov ecx, eax
and ecx, 0xfffff800
cmp ecx, 0xd800
je 0x18016ef5a
lea ecx, [rax - 0xfdd0]
cmp ecx, 0x1f
jbe 0x18016ef5a
and eax, 0xfffe
cmp eax, 0xfffe
je 0x18016ef5a
inc edi
cmp edi, 0x7fffffff
je 0x18016ef5a
movzx eax, byte [rbx]
movsx rax, byte [rax + rsi]
add rbx, rax
cmp byte [rbx], 0
jne 0x18016ee20
cmp r12d, 2
ja 0x18016f087
cmp r15d, 1
ja 0x18016f07e
test bpl, bpl
lea rsi, str.Arial
cmovne rsi, r14
call fcn.18016ed40
mov rbp, rax
test rax, rax
je 0x18016f075
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 0x18016ef08
nop dword [rax]
movzx eax, byte [rcx]
test al, al
je 0x18016ef08
imul r8, r8, 0x21
movsx rax, al
add r8, rax
add rcx, 1
jne 0x18016eef0
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.18019f8f0
mov rbx, rax
test rax, rax
je 0x18016ef71
cmp dword [rax + 8], 0
jne 0x18016ef66
mov rcx, rax
call fcn.18016ce30
lea rcx, [0x18067c230]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov rax, rbx
jmp 0x18016f08e
lea rax, [0x180588e70]
jmp 0x18016f08e
mov rdx, rbx
mov rcx, rbp
call fcn.18019fb50
mov ecx, 0x50
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
mov rbx, rax
test rax, rax
je 0x18016f068
mov rcx, rsi
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll__strdup]
mov rsi, rax
test rax, rax
je 0x18016f05f
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 0x18016efcb
imul rdi, rdi, 0x21
movsx rax, al
add rdi, rax
add rcx, 1
jne 0x18016efb3
lea rax, [r14 + rdi]
mov dword [rbx + 0x38], 1
lea rdx, [0x180587368]
mov qword [rbx], rax
mov rcx, rbx
call fcn.180174e30
mov eax, dword [rbx + 8]
test eax, eax
jne 0x18016f029
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 0x18016f019
lea rdx, [rbx + 0x48]
mov rcx, rbx
call fcn.1801a34f0
cmp eax, 0x64
jne 0x18016f025
lea rdx, [rbx + 0x48]
mov rcx, rbx
call fcn.1801a24f0
test eax, eax
je 0x18016f034
mov rcx, rsi
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
jmp 0x18016f05f
mov rdx, rbx
mov rcx, rbp
call fcn.18019fb00
test eax, eax
je 0x18016ef45
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 0x18016f05f
call fcn.180174f10
mov rcx, rbx
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
lea rcx, [0x18067c230]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
lea rax, [0x180589418]
jmp 0x18016f08e
lea rax, [0x180588ea0]
jmp 0x18016f08e
lea rax, [0x180588f00]
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