Function at 0x140030740
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 [0x140264330]
xor rax, rsp
mov qword [rsp + 0x70], rax
mov rsi, rcx
mov ecx, dword [0x1402643b8]
mov rdi, rdx
dec ecx
je 0x140030795
cmp ecx, 0x16
je 0x140030789
mov r14d, 0x80
lea r15d, [r14 - 0x60]
jmp 0x1400307a1
mov r14d, 0x50
lea r15d, [r14 - 0x3c]
jmp 0x1400307a1
mov r14d, 0xc0
mov r15d, 0x2d
lea r10, [0x1401de944]
mov ebx, 0x1505
mov ebp, 0x64
lea r13, [0x140000000]
test rsi, rsi
je 0x140030887
cmp dword [rsi], 0
jne 0x140030887
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 0x1400307e0
mov rcx, qword [rsi + 0x20]
xor edx, edx
mov rax, r9
div qword [r13 + rcx*8 + 0x1de2c0]
lea rax, [rsi + 0x28]
shl rdx, 4
add rdx, qword [rsi + 0x18]
mov r8, qword [rdx]
cmp r8, rax
jne 0x140030820
cmp r8, qword [rdx + 8]
je 0x140030887
nop
cmp qword [r8 - 8], r9
jne 0x140030872
xor ecx, ecx
nop dword [rax + rax]
movzx eax, byte [r8 + rcx + 0x20]
inc rcx
cmp al, byte [r10 + rcx - 1]
jne 0x140030872
cmp rcx, 5
jne 0x140030830
mov rax, qword [r8 + 0x10]
test rax, rax
je 0x140030887
cmp dword [rax], 2
jne 0x14003087e
mov rdx, qword [rax + 0x10]
test rdx, rdx
je 0x14003087e
movsxd r8, r14d
mov rcx, rdi
call fcn.1400431e0
test eax, eax
jne 0x140030a30
jmp 0x140030898
cmp r8, qword [rdx + 8]
je 0x140030887
mov r8, qword [r8 + 8]
jmp 0x140030820
lea rdx, str.JSON_key__s_is_not_a_string
jmp 0x14003088e
lea rdx, str.JSON_key__s_not_found
mov r8, r10
xor ecx, ecx
call fcn.140041b60
test rsi, rsi
je 0x140030fa9
cmp dword [rsi], 0
jne 0x140030fa9
lea r10, [0x1401de94c]
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 0x1400308c0
mov rcx, qword [rsi + 0x20]
xor edx, edx
mov rax, r9
div qword [r13 + rcx*8 + 0x1de2c0]
lea rax, [rsi + 0x28]
shl rdx, 4
add rdx, qword [rsi + 0x18]
mov r8, qword [rdx]
cmp r8, rax
jne 0x140030903
cmp r8, qword [rdx + 8]
je 0x140030fa9
cmp qword [r8 - 8], r9
jne 0x14003093e
xor ecx, ecx
nop dword [rax + rax]
movzx eax, byte [r8 + rcx + 0x20]
inc rcx
cmp al, byte [r10 + rcx - 1]
jne 0x14003093e
cmp rcx, 5
jne 0x140030910
mov rcx, qword [r8 + 0x10]
test rcx, rcx
je 0x140030fa9
cmp dword [rcx], 2
jne 0x14003094e
mov rcx, qword [rcx + 0x10]
jmp 0x140030950
cmp r8, qword [rdx + 8]
je 0x140030fa9
mov r8, qword [r8 + 8]
jmp 0x140030903
xor ecx, ecx
or rax, 0xffffffffffffffff
inc rax
cmp byte [rcx + rax], 0
jne 0x140030954
test eax, eax
je 0x140030fab
movsxd rcx, eax
cmp rcx, 0x180
ja 0x140030fab
cdq
lea r10, [0x1401de984]
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 0x140030990
mov rcx, qword [rsi + 0x20]
xor edx, edx
mov rax, r9
div qword [r13 + rcx*8 + 0x1de2c0]
lea rax, [rsi + 0x28]
shl rdx, 4
add rdx, qword [rsi + 0x18]
mov r8, qword [rdx]
cmp r8, rax
jne 0x1400309d3
cmp r8, qword [rdx + 8]
je 0x140030f85
cmp qword [r8 - 8], r9
jne 0x140030d2d
xor ecx, ecx
nop
movzx eax, byte [r8 + rcx + 0x20]
inc rcx
cmp al, byte [r10 + rcx - 1]
jne 0x140030d2d
cmp rcx, 5
jne 0x1400309e0
mov rax, qword [r8 + 0x10]
test rax, rax
je 0x140030f85
cmp dword [rax], 2
jne 0x140030f7c
mov rdx, qword [rax + 0x10]
test rdx, rdx
je 0x140030f7c
mov r8, r14
mov rcx, rdi
call fcn.1400431e0
test eax, eax
je 0x140030f96
cmp dword [rsi], 0
lea r9, str.target
jne 0x140030f5b
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 0x140030a50
mov rcx, qword [rsi + 0x20]
xor edx, edx
mov rax, rbx
div qword [r13 + rcx*8 + 0x1de2c0]
lea rax, [rsi + 0x28]
shl rdx, 4
add rdx, qword [rsi + 0x18]
mov r8, qword [rdx]
cmp r8, rax
jne 0x140030a93
cmp r8, qword [rdx + 8]
je 0x140030f5b
cmp qword [r8 - 8], rbx
jne 0x140030d40
xor ecx, ecx
nop
movzx eax, byte [r8 + rcx + 0x20]
inc rcx
cmp al, byte [r9 + rcx - 1]
jne 0x140030d40
cmp rcx, 7
jne 0x140030aa0
mov rax, qword [r8 + 0x10]
test rax, rax
je 0x140030f5b
cmp dword [rax], 2
jne 0x140030f52
mov rdx, qword [rax + 0x10]
test rdx, rdx
je 0x140030f52
lea r8d, [rcx + 0x19]
lea rbx, [rdi + 0xc0]
mov rcx, rbx
call fcn.1400431e0
test eax, eax
je 0x140030f6c
movaps xmmword [rsp + 0x80], xmm6
mov dword [rdi + 0xe0], 0
movsxd r8, r15d
test r15d, r15d
jle 0x140030b4a
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 0x140030b20
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 0x140030cd2
mov rcx, rdi
call fcn.140030540
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 0x140030d53
movaps xmm0, xmm6
jmp 0x140030d74
cmp r8, qword [rdx + 8]
je 0x140030f85
mov r8, qword [r8 + 8]
jmp 0x1400309d3
cmp r8, qword [rdx + 8]
je 0x140030f5b
mov r8, qword [r8 + 8]
jmp 0x140030a93
xorps xmm1, xmm1
cvtsi2sd xmm1, rcx
test rcx, rcx
jns 0x140030d68
addsd xmm1, qword [0x14024c0a0]
movsd xmm0, qword [0x14024c090]
divsd xmm0, xmm1
lea rbx, [rdi + 0xe4]
movsd qword [rdi + 0x1a0], xmm0
movsd qword [0x1402d4d28], xmm0
mov dword [0x1402d4e98], 0
mov dword [rdi + 0x1d8], 0
mov r14d, 4
test rbx, rbx
je 0x140030de1
lea rsi, [rdi + 0x44]
mov rbp, rbx
mov r15d, r14d
nop dword [rax]
nop dword [rax + rax]
movzx r8d, byte [rsi]
lea rdx, [0x140249d80]
mov rcx, rbp
call qword [sym.imp.MSVCR120.dll_sprintf]
add rbp, 2
lea rsi, [rsi + 1]
dec r15
jne 0x140030dc0
mov eax, dword [0x1402643b8]
cmp eax, 1
jne 0x140030f43
and word [rdi + 0x64], ax
movzx eax, word [0x140264c9c]
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 [0x1402d4db0], 0
mov dword [rdi + 0x94], eax
mov dword [rdi + 0x1c8], edx
jne 0x140030f16
mov rcx, qword [0x1402d4a98]
inc rcx
cmp rdx, rcx
jbe 0x140030f16
movsd xmm2, qword [0x1402d4e40]
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 0x140030ed6
movsd xmm3, qword [rdi + 0x1a0]
ucomisd xmm2, xmm3
jp 0x140030eba
jne 0x140030eba
movq r8, xmm2
lea rdx, [0x1401de9e8]
lea rcx, [rsp + 0x30]
call qword [sym.imp.MSVCR120.dll_sprintf]
jmp 0x140030ed6
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 [0x1402643b8]
mov r9d, dword [rdi + 0x1c8]
lea rax, [rsp + 0x30]
mov r8, qword [r13 + r8*8 + 0x1dff40]
lea rdx, str._s_block__d_s
mov ecx, reloc.WS2_32.dll_recv
mov qword [rsp + 0x20], rax
call fcn.140041b60
mov eax, dword [rdi + 0x1c8]
dec eax
mov qword [0x1402d4a98], rax
test rbx, rbx
je 0x140030f43
add rdi, 0x88
movzx r8d, byte [rdi]
lea rdx, [0x140249d80]
mov rcx, rbx
call qword [sym.imp.MSVCR120.dll_sprintf]
add rbx, 2
lea rdi, [rdi + 1]
dec r14
jne 0x140030f22
movaps xmm6, xmmword [rsp + 0x80]
mov eax, 1
jmp 0x140030fc6
lea rdx, str.JSON_key__s_is_not_a_string
jmp 0x140030f62
lea rdx, str.JSON_key__s_not_found
mov r8, r9
xor ecx, ecx
call fcn.140041b60
lea rdx, str.JSON_invalid_target
xor ecx, ecx
call fcn.140041b60
jmp 0x140030fc4
lea rdx, str.JSON_key__s_is_not_a_string
jmp 0x140030f8c
lea rdx, str.JSON_key__s_not_found
mov r8, r10
xor ecx, ecx
call fcn.140041b60
lea rdx, str.JSON_invalid_data__len__d_
mov r8d, r14d
xor ecx, ecx
call fcn.140041b60
jmp 0x140030fc4
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.140041b60
xor eax, eax
mov rcx, qword [rsp + 0x70]
xor rcx, rsp
call fcn.1401bb2c0
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