Function at 0x14002f330
Capabilities:
Hash data using djb2

Disassembly:
mov qword [rsp + 0x18], rbx
mov qword [rsp + 0x20], rbp
push rsi
push rdi
push r13
push r14
push r15
sub rsp, 0x90
mov rax, qword [0x1402581e0]
xor rax, rsp
mov qword [rsp + 0x70], rax
mov rsi, rcx
mov ecx, dword [0x140258268]
mov rdi, rdx
dec ecx
je 0x14002f385
cmp ecx, 0x16
je 0x14002f379
mov r14d, 0x80
lea r15d, [r14 - 0x60]
jmp 0x14002f391
mov r14d, 0x50
lea r15d, [r14 - 0x3c]
jmp 0x14002f391
mov r14d, 0xc0
mov r15d, 0x2d
lea r10, [0x1401d3814]
mov ebx, 0x1505
mov ebp, 0x64
lea r13, [0x140000000]
test rsi, rsi
je 0x14002f477
cmp dword [rsi], 0
jne 0x14002f477
mov rax, r10
mov r9d, ebx
mov ecx, ebp
nop dword [rax]
nop word [rax + rax]
imul r9, r9, 0x21
lea rax, [rax + 1]
add r9, rcx
movsx rcx, byte [rax]
test rcx, rcx
jne 0x14002f3d0
mov rcx, qword [rsi + 0x20]
xor edx, edx
mov rax, r9
div qword [r13 + rcx*8 + 0x1d3190]
lea rax, [rsi + 0x28]
shl rdx, 4
add rdx, qword [rsi + 0x18]
mov r8, qword [rdx]
cmp r8, rax
jne 0x14002f410
cmp r8, qword [rdx + 8]
je 0x14002f477
nop
cmp qword [r8 - 8], r9
jne 0x14002f462
xor ecx, ecx
nop dword [rax + rax]
movzx eax, byte [r8 + rcx + 0x20]
inc rcx
cmp al, byte [r10 + rcx - 1]
jne 0x14002f462
cmp rcx, 5
jne 0x14002f420
mov rax, qword [r8 + 0x10]
test rax, rax
je 0x14002f477
cmp dword [rax], 2
jne 0x14002f46e
mov rdx, qword [rax + 0x10]
test rdx, rdx
je 0x14002f46e
movsxd r8, r14d
mov rcx, rdi
call fcn.140041fd0
test eax, eax
jne 0x14002f620
jmp 0x14002f488
cmp r8, qword [rdx + 8]
je 0x14002f477
mov r8, qword [r8 + 8]
jmp 0x14002f410
lea rdx, str.JSON_key__s_is_not_a_string
jmp 0x14002f47e
lea rdx, str.JSON_key__s_not_found
mov r8, r10
xor ecx, ecx
call fcn.140040950
test rsi, rsi
je 0x14002fb99
cmp dword [rsi], 0
jne 0x14002fb99
lea r10, [0x1401d381c]
mov r9, rbx
mov rcx, rbp
mov rax, r10
nop word [rax + rax]
imul r9, r9, 0x21
lea rax, [rax + 1]
add r9, rcx
movsx rcx, byte [rax]
test rcx, rcx
jne 0x14002f4b0
mov rcx, qword [rsi + 0x20]
xor edx, edx
mov rax, r9
div qword [r13 + rcx*8 + 0x1d3190]
lea rax, [rsi + 0x28]
shl rdx, 4
add rdx, qword [rsi + 0x18]
mov r8, qword [rdx]
cmp r8, rax
jne 0x14002f4f3
cmp r8, qword [rdx + 8]
je 0x14002fb99
cmp qword [r8 - 8], r9
jne 0x14002f52e
xor ecx, ecx
nop dword [rax + rax]
movzx eax, byte [r8 + rcx + 0x20]
inc rcx
cmp al, byte [r10 + rcx - 1]
jne 0x14002f52e
cmp rcx, 5
jne 0x14002f500
mov rcx, qword [r8 + 0x10]
test rcx, rcx
je 0x14002fb99
cmp dword [rcx], 2
jne 0x14002f53e
mov rcx, qword [rcx + 0x10]
jmp 0x14002f540
cmp r8, qword [rdx + 8]
je 0x14002fb99
mov r8, qword [r8 + 8]
jmp 0x14002f4f3
xor ecx, ecx
or rax, 0xffffffffffffffff
inc rax
cmp byte [rcx + rax], 0
jne 0x14002f544
test eax, eax
je 0x14002fb9b
movsxd rcx, eax
cmp rcx, 0x180
ja 0x14002fb9b
cdq
lea r10, [0x1401d3854]
mov r9, rbx
sub eax, edx
mov rcx, r10
sar eax, 1
movsxd r14, eax
nop word [rax + rax]
imul r9, r9, 0x21
lea rcx, [rcx + 1]
add r9, rbp
movsx rbp, byte [rcx]
test rbp, rbp
jne 0x14002f580
mov rcx, qword [rsi + 0x20]
xor edx, edx
mov rax, r9
div qword [r13 + rcx*8 + 0x1d3190]
lea rax, [rsi + 0x28]
shl rdx, 4
add rdx, qword [rsi + 0x18]
mov r8, qword [rdx]
cmp r8, rax
jne 0x14002f5c3
cmp r8, qword [rdx + 8]
je 0x14002fb75
cmp qword [r8 - 8], r9
jne 0x14002f91d
xor ecx, ecx
nop
movzx eax, byte [r8 + rcx + 0x20]
inc rcx
cmp al, byte [r10 + rcx - 1]
jne 0x14002f91d
cmp rcx, 5
jne 0x14002f5d0
mov rax, qword [r8 + 0x10]
test rax, rax
je 0x14002fb75
cmp dword [rax], 2
jne 0x14002fb6c
mov rdx, qword [rax + 0x10]
test rdx, rdx
je 0x14002fb6c
mov r8, r14
mov rcx, rdi
call fcn.140041fd0
test eax, eax
je 0x14002fb86
cmp dword [rsi], 0
lea r9, str.target
jne 0x14002fb4b
mov rax, r9
mov ecx, reloc.WS2_32.dll_WSACleanup
nop dword [rax + rax]
imul rbx, rbx, 0x21
lea rax, [rax + 1]
add rbx, rcx
movsx rcx, byte [rax]
test rcx, rcx
jne 0x14002f640
mov rcx, qword [rsi + 0x20]
xor edx, edx
mov rax, rbx
div qword [r13 + rcx*8 + 0x1d3190]
lea rax, [rsi + 0x28]
shl rdx, 4
add rdx, qword [rsi + 0x18]
mov r8, qword [rdx]
cmp r8, rax
jne 0x14002f683
cmp r8, qword [rdx + 8]
je 0x14002fb4b
cmp qword [r8 - 8], rbx
jne 0x14002f930
xor ecx, ecx
nop
movzx eax, byte [r8 + rcx + 0x20]
inc rcx
cmp al, byte [r9 + rcx - 1]
jne 0x14002f930
cmp rcx, 7
jne 0x14002f690
mov rax, qword [r8 + 0x10]
test rax, rax
je 0x14002fb4b
cmp dword [rax], 2
jne 0x14002fb42
mov rdx, qword [rax + 0x10]
test rdx, rdx
je 0x14002fb42
lea r8d, [rcx + 0x19]
lea rbx, [rdi + 0xc0]
mov rcx, rbx
call fcn.140041fd0
test eax, eax
je 0x14002fb5c
movaps xmmword [rsp + 0x80], xmm6
mov dword [rdi + 0xe0], 0
movsxd r8, r15d
test r15d, r15d
jle 0x14002f73a
lea rdx, [rdi + 2]
nop word [rax + rax]
movzx eax, byte [rdx]
movzx ecx, byte [rdx + 1]
lea rdx, [rdx + 4]
shl ecx, 8
add ecx, eax
movzx eax, byte [rdx - 5]
shl ecx, 8
add ecx, eax
movzx eax, byte [rdx - 6]
shl ecx, 8
add ecx, eax
mov dword [rdx - 6], ecx
dec r8
jne 0x14002f710
movzx eax, byte [rbx + 2]
movzx ecx, byte [rbx + 3]
shl ecx, 8
add ecx, eax
movzx eax, byte [rbx + 1]
shl ecx, 8
add ecx, eax
movzx eax, byte [rbx]
shl ecx, 8
add ecx, eax
mov dword [rbx], ecx
movzx eax, byte [rdi + 0xc6]
movzx ecx, byte [rdi + 0xc7]
shl ecx, 8
add ecx, eax
movzx eax, byte [rdi + 0xc5]
shl ecx, 8
add ecx, eax
movzx eax, byte [rdi + 0xc4]
shl ecx, 8
add ecx, eax
mov dword [rdi + 0xc4], ecx
movzx eax, byte [rdi + 0xca]
movzx ecx, byte [rdi + 0xcb]
shl ecx, 8
add ecx, eax
movzx eax, byte [rdi + 0xc9]
shl ecx, 8
add ecx, eax
movzx eax, byte [rdi + 0xc8]
shl ecx, 8
add ecx, eax
mov dword [rdi + 0xc8], ecx
movzx eax, byte [rdi + 0xce]
movzx ecx, byte [rdi + 0xcf]
shl ecx, 8
add ecx, eax
movzx eax, byte [rdi + 0xcd]
shl ecx, 8
add ecx, eax
movzx eax, byte [rdi + 0xcc]
shl ecx, 8
add ecx, eax
mov dword [rdi + 0xcc], ecx
movzx eax, byte [rdi + 0xd2]
movzx ecx, byte [rdi + 0xd3]
shl ecx, 8
add ecx, eax
movzx eax, byte [rdi + 0xd1]
shl ecx, 8
add ecx, eax
movzx eax, byte [rdi + 0xd0]
shl ecx, 8
add ecx, eax
mov dword [rdi + 0xd0], ecx
movzx eax, byte [rdi + 0xd6]
movzx ecx, byte [rdi + 0xd7]
shl ecx, 8
add ecx, eax
movzx eax, byte [rdi + 0xd5]
shl ecx, 8
add ecx, eax
movzx eax, byte [rdi + 0xd4]
shl ecx, 8
add ecx, eax
mov dword [rdi + 0xd4], ecx
movzx eax, byte [rdi + 0xda]
movzx ecx, byte [rdi + 0xdb]
shl ecx, 8
add ecx, eax
movzx eax, byte [rdi + 0xd9]
shl ecx, 8
add ecx, eax
movzx eax, byte [rdi + 0xd8]
shl ecx, 8
add ecx, eax
mov dword [rdi + 0xd8], ecx
movzx ecx, byte [rdi + 0xdf]
movzx eax, byte [rdi + 0xde]
shl ecx, 8
add ecx, eax
movzx eax, byte [rdi + 0xdd]
shl ecx, 8
add ecx, eax
movzx eax, byte [rdi + 0xdc]
shl ecx, 8
add ecx, eax
cmp dword [reloc.WS2_32.dll_accept], 0
mov dword [rdi + 0xdc], ecx
jne 0x14002f8c2
mov rcx, rdi
call fcn.14002f130
movzx eax, byte [rbx + 0x1c]
movzx ecx, byte [rbx + 0x1d]
xorps xmm6, xmm6
shl rcx, 8
or rcx, rax
movzx eax, byte [rbx + 0x1b]
shl rcx, 8
or rcx, rax
movzx eax, byte [rbx + 0x1a]
shl rcx, 8
or rcx, rax
movzx eax, byte [rbx + 0x19]
shl rcx, 8
or rcx, rax
movzx eax, byte [rbx + 0x18]
shl rcx, 8
or rcx, rax
movzx eax, byte [rbx + 0x17]
shl rcx, 8
or rcx, rax
movzx eax, byte [rbx + 0x16]
shl rcx, 8
or rcx, rax
jne 0x14002f943
movaps xmm0, xmm6
jmp 0x14002f964
cmp r8, qword [rdx + 8]
je 0x14002fb75
mov r8, qword [r8 + 8]
jmp 0x14002f5c3
cmp r8, qword [rdx + 8]
je 0x14002fb4b
mov r8, qword [r8 + 8]
jmp 0x14002f683
xorps xmm1, xmm1
cvtsi2sd xmm1, rcx
test rcx, rcx
jns 0x14002f958
addsd xmm1, qword [0x140240f40]
movsd xmm0, qword [0x140240f30]
divsd xmm0, xmm1
lea rbx, [rdi + 0xe4]
movsd qword [rdi + 0x1a0], xmm0
movsd qword [0x1402c7b28], xmm0
mov dword [0x1402c7c98], 0
mov dword [rdi + 0x1d8], 0
mov r14d, 4
test rbx, rbx
je 0x14002f9d1
lea rsi, [rdi + 0x44]
mov rbp, rbx
mov r15d, r14d
nop dword [rax]
nop dword [rax + rax]
movzx r8d, byte [rsi]
lea rdx, [0x14023ec38]
mov rcx, rbp
call qword [sym.imp.MSVCR120.dll_sprintf]
add rbp, 2
lea rsi, [rsi + 1]
dec r15
jne 0x14002f9b0
mov eax, dword [0x140258268]
cmp eax, 1
jne 0x14002fb33
and word [rdi + 0x64], ax
movzx eax, word [0x140258b4c]
add ax, ax
or word [rdi + 0x64], ax
call qword [sym.imp.MSVCR120.dll_rand]
shl eax, 2
mov dword [rdi + 0x90], eax
call qword [sym.imp.MSVCR120.dll_rand]
mov edx, dword [rdi + 0x80]
shl eax, 0xa
cmp dword [0x1402c7bb0], 0
mov dword [rdi + 0x94], eax
mov dword [rdi + 0x1c8], edx
jne 0x14002fb06
mov rcx, qword [0x1402c7898]
inc rcx
cmp rdx, rcx
jbe 0x14002fb06
movsd xmm2, qword [0x1402c7c40]
xor eax, eax
mov byte [rsp + 0x30], 0
comisd xmm2, xmm6
mov qword [rsp + 0x31], rax
mov qword [rsp + 0x39], rax
mov qword [rsp + 0x41], rax
mov qword [rsp + 0x49], rax
mov qword [rsp + 0x51], rax
mov qword [rsp + 0x59], rax
mov qword [rsp + 0x61], rax
mov dword [rsp + 0x69], eax
mov word [rsp + 0x6d], ax
mov byte [rsp + 0x6f], al
jbe 0x14002fac6
movsd xmm3, qword [rdi + 0x1a0]
ucomisd xmm2, xmm3
jp 0x14002faaa
jne 0x14002faaa
movq r8, xmm2
lea rdx, [0x1401d38b8]
lea rcx, [rsp + 0x30]
call qword [sym.imp.MSVCR120.dll_sprintf]
jmp 0x14002fac6
movq r9, xmm3
movq r8, xmm2
lea rdx, str.__diff__.3f__pool__.1f
lea rcx, [rsp + 0x30]
call qword [sym.imp.MSVCR120.dll_sprintf]
movsxd r8, dword [0x140258268]
mov r9d, dword [rdi + 0x1c8]
lea rax, [rsp + 0x30]
mov r8, qword [r13 + r8*8 + 0x1d4e10]
lea rdx, str._s_block__d_s
mov ecx, reloc.WS2_32.dll_recv
mov qword [rsp + 0x20], rax
call fcn.140040950
mov eax, dword [rdi + 0x1c8]
dec eax
mov qword [0x1402c7898], rax
test rbx, rbx
je 0x14002fb33
add rdi, 0x88
movzx r8d, byte [rdi]
lea rdx, [0x14023ec38]
mov rcx, rbx
call qword [sym.imp.MSVCR120.dll_sprintf]
add rbx, 2
lea rdi, [rdi + 1]
dec r14
jne 0x14002fb12
movaps xmm6, xmmword [rsp + 0x80]
mov eax, 1
jmp 0x14002fbb6
lea rdx, str.JSON_key__s_is_not_a_string
jmp 0x14002fb52
lea rdx, str.JSON_key__s_not_found
mov r8, r9
xor ecx, ecx
call fcn.140040950
lea rdx, str.JSON_invalid_target
xor ecx, ecx
call fcn.140040950
jmp 0x14002fbb4
lea rdx, str.JSON_key__s_is_not_a_string
jmp 0x14002fb7c
lea rdx, str.JSON_key__s_not_found
mov r8, r10
xor ecx, ecx
call fcn.140040950
lea rdx, str.JSON_invalid_data__len__d_
mov r8d, r14d
xor ecx, ecx
call fcn.140040950
jmp 0x14002fbb4
xor eax, eax
cdq
mov r9d, r14d
xor ecx, ecx
sub eax, edx
lea rdx, str.JSON_invalid_data__len__d_____d_
sar eax, 1
mov r8d, eax
call fcn.140040950
xor eax, eax
mov rcx, qword [rsp + 0x70]
xor rcx, rsp
call fcn.1401bddc0
lea r11, [rsp + 0x90]
mov rbx, qword [r11 + 0x40]
mov rbp, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r13
pop rdi
pop rsi
ret