Function at 0x18001bcec
Capabilities:
Encode data using xor
Hash data using fnv

Disassembly:
mov qword [rsp + 0x18], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x60]
sub rsp, 0x160
mov rax, qword [0x1800c86c0]
xor rax, rsp
mov qword [rbp + 0x50], rax
mov rdi, rdx
mov r12, rcx
mov qword [rsp + 0x30], rcx
xor r11d, r11d
mov dword [rsp + 0x40], r11d
mov r9, qword [rdx]
lea r14d, [r11 + 1]
lea r15d, [r11 + 0x1f]
jmp 0x18001bd39
add r9, r14
movzx eax, byte [r9]
sub eax, r14d
cmp eax, r15d
jbe 0x18001bd36
mov qword [rdx], r9
mov rdx, qword [rdx + 8]
cmp r9, rdx
jae 0x18001c38c
cmp byte [r9], 0x7b
jne 0x18001c38c
mov r13, qword [rdi + 0x10]
mov rsi, qword [rdi + 0x18]
mov qword [rsp + 0x30], rsi
mov qword [rdi + 0x10], r9
mov qword [rdi + 0x18], rdx
inc r9
mov qword [rdi], r9
jmp 0x18001bd7f
add r9, r14
movzx eax, byte [r9]
sub eax, r14d
cmp eax, r15d
jbe 0x18001bd7c
mov qword [rdi], r9
mov r8d, 0x811c9dc5
mov rcx, r11
mov r10, qword [str.derpyUsers]
movzx eax, byte [rcx + r10]
xor eax, r8d
imul r8d, eax, 0x1000193
add rcx, r14
cmp rcx, 0xa
jb 0x18001bd9e
mov dword [rsp + 0x60], r8d
xor eax, eax
mov dword [rsp + 0x64], eax
movups xmm0, xmmword [str.derpyUsers]
movdqu xmmword [rsp + 0x68], xmm0
xorps xmm1, xmm1
movdqu xmmword [rsp + 0x78], xmm1
xorps xmm0, xmm0
movdqu xmmword [rbp - 0x78], xmm0
mov qword [rbp - 0x68], r11
movups xmm0, xmmword [rsp + 0x60]
movaps xmmword [rbp + 0x10], xmm0
movups xmm1, xmmword [rsp + 0x70]
movaps xmmword [rbp + 0x20], xmm1
movups xmm0, xmmword [rbp - 0x80]
movaps xmmword [rbp + 0x30], xmm0
movups xmm1, xmmword [rbp - 0x70]
movaps xmmword [rbp + 0x40], xmm1
jmp 0x18001be0a
add r9, r14
movzx eax, byte [r9]
sub eax, r14d
cmp eax, r15d
jbe 0x18001be07
mov qword [rdi], r9
mov al, byte [r9]
cmp al, 0x2c
jne 0x18001be3d
inc r9
mov qword [rdi], r9
jmp 0x18001be2b
add r9, r14
movzx eax, byte [r9]
sub eax, r14d
cmp eax, r15d
jbe 0x18001be28
mov qword [rdi], r9
mov al, byte [r9]
mov r10b, 0x7d
cmp al, r10b
sete r8b
cmp al, 0x22
sete cl
or cl, r8b
je 0x18001c39a
cmp r9, rdx
jae 0x18001be63
cmp al, r10b
je 0x18001c3a8
movzx ecx, al
sub ecx, r14d
cmp ecx, r15d
ja 0x18001be7d
add r9, r14
movzx eax, byte [r9]
sub eax, r14d
cmp eax, r15d
jbe 0x18001be6e
mov qword [rdi], r9
mov rbx, qword [rbp + 0x28]
cmp byte [r9], r10b
je 0x18001c075
mov rdx, rdi
lea rcx, [rsp + 0x50]
call fcn.18001c6d4
mov rdx, qword [rsp + 0x58]
xor r9d, r9d
mov r15, qword [rsp + 0x50]
cmp rdx, 4
ja 0x18001bed3
mov ecx, r9d
mov r8d, r9d
test rdx, rdx
je 0x18001beca
movzx eax, byte [r15 + r8]
shl ecx, 8
or ecx, eax
add r8, r14
cmp r8, rdx
jb 0x18001beb8
imul r11d, ecx, 0xcc9e2d51
jmp 0x18001bef8
mov r11d, 0x811c9dc5
mov rcx, r9
test rdx, rdx
je 0x18001bef8
movzx eax, byte [r15 + rcx]
xor eax, r11d
imul r11d, eax, 0x1000193
add rcx, r14
cmp rcx, rdx
jb 0x18001bee1
mov rcx, r9
lea r14, [rbp + 0x18]
cmp dword [rbp + rcx*4 + 0x10], r11d
jne 0x18001bf4b
movups xmm1, xmmword [r14]
mov rsi, rdx
mov r9, qword [r14 + 8]
cmp r9, rdx
cmovb rsi, r9
mov r8, r15
add rsi, r15
cmp r15, rsi
je 0x18001bf3e
movq r10, xmm1
sub r10, r15
mov al, byte [r8 + r10]
cmp byte [r8], al
jl 0x18001bf84
jg 0x18001bf7d
inc r8
cmp r8, rsi
jne 0x18001bf2b
xor eax, eax
cmp rdx, r9
jb 0x18001bf4b
ja 0x18001bf4b
test eax, eax
je 0x18001bf89
inc rcx
add r14, 0x38
cmp rcx, 1
jb 0x18001beff
mov r14d, 1
mov ecx, r14d
cmp rcx, r14
jb 0x18001bfcc
mov rdx, rdi
lea rcx, [rbp - 0x60]
call fcn.18001c79c
mov r9, qword [rdi]
mov r15d, 0x1f
jmp 0x18001bf94
mov eax, 1
jmp 0x18001bf47
or eax, 0xffffffff
jmp 0x18001bf47
mov r14d, 1
jmp 0x18001bf61
add r9, r14
movzx eax, byte [r9]
sub eax, r14d
cmp eax, r15d
jbe 0x18001bf91
mov qword [rdi], r9
cmp byte [r9], 0x2c
jne 0x18001c058
inc r9
mov qword [rdi], r9
jmp 0x18001bfb8
add r9, r14
movzx eax, byte [r9]
sub eax, r14d
cmp eax, r15d
jbe 0x18001bfb5
mov qword [rdi], r9
jmp 0x18001c058
xor r11d, r11d
test rcx, rcx
je 0x18001c0b8
imul rbx, rcx, 0x38
mov rdx, rdi
lea rcx, [rbp - 0x20]
call fcn.18001c79c
mov rcx, rax
mov rax, qword [rax]
mov qword [rbp + rbx + 0x28], rax
mov rax, qword [rcx + 8]
mov qword [rbp + rbx + 0x30], rax
mov rax, qword [rcx + 0x10]
mov qword [rbp + rbx + 0x38], rax
mov rax, qword [rcx + 0x18]
mov qword [rbp + rbx + 0x40], rax
mov rax, qword [rcx + 0x20]
mov qword [rbp + rbx + 0x48], rax
mov r9, qword [rdi]
mov r15d, 0x1f
jmp 0x18001c025
add r9, r14
movzx eax, byte [r9]
sub eax, r14d
cmp eax, r15d
jbe 0x18001c022
mov qword [rdi], r9
cmp byte [r9], 0x2c
jne 0x18001c054
inc r9
mov qword [rdi], r9
jmp 0x18001c045
add r9, r14
movzx eax, byte [r9]
sub eax, r14d
cmp eax, r15d
jbe 0x18001c042
mov qword [rdi], r9
mov rbx, qword [rbp + 0x28]
cmp byte [r9], 0x7d
setne cl
xor r11d, r11d
test rbx, rbx
sete al
test cl, al
jne 0x18001be8d
mov rsi, qword [rsp + 0x30]
mov rcx, qword [rbp + 0x30]
mov r10, qword [rbp + 0x38]
mov r8, qword [rbp + 0x40]
mov rdx, qword [rbp + 0x48]
movzx eax, r11b
test rbx, rbx
cmove eax, r14d
mov qword [rsp + 0x68], rcx
mov qword [rsp + 0x70], r10
mov qword [rsp + 0x78], r8
mov qword [rbp - 0x80], rdx
mov byte [rbp - 0x78], al
test al, al
je 0x18001c0de
test rbx, rbx
je 0x18001c326
jmp 0x18001c184
mov r9, qword [rdi]
mov rbx, r9
mov rcx, qword [rdi + 8]
mov r10, qword [rdi + 0x10]
mov r8, qword [rdi + 0x18]
mov rdx, qword [rdi + 0x20]
mov rsi, qword [rsp + 0x30]
mov r15d, 0x1f
jmp 0x18001c085
add r9, r14
movzx eax, byte [r9]
sub eax, r14d
cmp eax, r15d
jbe 0x18001c0db
mov qword [rdi], r9
cmp r9, qword [rdi + 8]
jae 0x18001c3e2
cmp byte [r9], 0x5b
jne 0x18001c3e2
inc r9
mov qword [rdi], r9
jmp 0x18001c10c
add r9, r14
movzx eax, byte [r9]
sub eax, r14d
cmp eax, r15d
jbe 0x18001c109
mov qword [rdi], r9
mov rbx, rdi
cmp byte [r9], 0x5d
jne 0x18001c141
inc r9
mov qword [rdi], r9
jmp 0x18001c12f
add r9, r14
movzx eax, byte [r9]
sub eax, r14d
cmp eax, r15d
jbe 0x18001c12c
mov qword [rdi], r9
mov rbx, r11
xorps xmm0, xmm0
movdqu xmmword [rbp - 0x60], xmm0
mov qword [rbp - 0x50], r11
mov dword [rsp + 0x40], 0x20
mov qword [rsp + 0x30], 7
lea rdx, [rsp + 0x30]
lea rcx, [rbp - 0x60]
call fcn.18001cf14
xor r8d, r8d
mov rdx, rbx
lea rcx, [rbp - 0x60]
call fcn.18001d0ac
nop
jmp 0x18001c224
add rbx, r14
movzx eax, byte [rbx]
sub eax, r14d
cmp eax, r15d
jbe 0x18001c181
mov qword [rsp + 0x60], rbx
cmp rbx, rcx
jae 0x18001c316
cmp byte [rbx], 0x5b
jne 0x18001c316
lea rcx, [rbx + 1]
jmp 0x18001c1af
add rcx, r14
movzx eax, byte [rcx]
sub eax, r14d
cmp eax, r15d
jbe 0x18001c1ac
mov qword [rsp + 0x60], rcx
lea rbx, [rsp + 0x60]
cmp byte [rcx], 0x5d
jne 0x18001c1e9
inc rcx
mov qword [rsp + 0x60], rcx
jmp 0x18001c1d6
add rcx, r14
movzx eax, byte [rcx]
sub eax, r14d
cmp eax, r15d
jbe 0x18001c1d3
mov qword [rsp + 0x60], rcx
mov rbx, r11
xorps xmm0, xmm0
movdqu xmmword [rbp - 0x60], xmm0
mov qword [rbp - 0x50], r11
mov dword [rsp + 0x40], 0x200
mov qword [rsp + 0x30], 7
lea rdx, [rsp + 0x30]
lea rcx, [rbp - 0x60]
call fcn.18001cf14
xor r8d, r8d
mov rdx, rbx
lea rcx, [rbp - 0x60]
call fcn.18001d0ac
nop
mov rdx, qword [rdi]
cmp rdx, qword [rdi + 8]
jae 0x18001c380
jmp 0x18001c236
add rdx, r14
movzx eax, byte [rdx]
sub eax, r14d
cmp eax, r15d
jbe 0x18001c233
mov qword [rdi], rdx
cmp byte [rdx], 0x2c
jne 0x18001c262
inc rdx
mov qword [rdi], rdx
jmp 0x18001c254
add rdx, r14
movzx eax, byte [rdx]
sub eax, r14d
cmp eax, r15d
jbe 0x18001c251
mov qword [rdi], rdx
cmp rdx, qword [rdi + 8]
jae 0x18001c380
mov al, byte [rdx]
test al, al
je 0x18001c380
cmp al, 0x7d
sete cl
cmp al, 0x22
sete al
or al, cl
jne 0x18001c2a5
add rdx, r14
mov r8b, byte [rdx]
cmp r8b, 0x7d
sete cl
cmp r8b, 0x22
sete al
or al, cl
je 0x18001c284
test r8b, r8b
je 0x18001c380
mov qword [rdi], rdx
lea rdx, [rbp - 0x20]
mov rcx, rdi
call fcn.18001c3f0
mov rcx, qword [rdi]
jmp 0x18001c2bc
add rcx, r14
movzx eax, byte [rcx]
sub eax, r14d
cmp eax, r15d
jbe 0x18001c2b9
mov qword [rdi], rcx
mov qword [rdi + 0x10], r13
mov qword [rdi + 0x18], rsi
mov rdx, qword [rbp - 0x50]
mov rcx, qword [rbp - 0x60]
mov qword [r12], rcx
mov rcx, qword [rbp - 0x58]
mov qword [r12 + 8], rcx
mov qword [r12 + 0x10], rdx
mov rax, r12
mov rcx, qword [rbp + 0x50]
xor rcx, rsp
call fcn.1800a21a0
mov rbx, qword [rsp + 0x1b0]
add rsp, 0x160
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
lea rdx, [rsp + 0x60]
mov ecx, recv
call fcn.18001bc9c
int3
lea rcx, str.derpyUsers
call fcn.18001a244
mov r8, rax
call fcn.180005a04
mov rdx, rax
lea rcx, [rbp - 0x30]
call fcn.1800096fc
mov rcx, rax
mov rax, qword [rax]
mov qword [rsp + 0x30], rax
mov rax, qword [rcx + 8]
mov qword [rsp + 0x38], rax
movaps xmm0, xmmword [rsp + 0x30]
movdqa xmmword [rsp + 0x30], xmm0
lea rdx, [rsp + 0x30]
lea rcx, [rsp + 0x50]
call fcn.180019d4c
mov rdx, rdi
mov rcx, qword [rax]
call fcn.18001c610
nop
mov rdx, rdi
mov ecx, r14d
call fcn.18001bc9c
nop
mov rdx, rdi
mov ecx, reloc.WS2_32.dll_ntohs
call fcn.18001bc9c
int3
mov rdx, rdi
mov ecx, 0x25
call fcn.18001bc9c
int3
mov rax, qword [str.derpyUsers]
mov qword [rsp + 0x50], rax
mov qword [rsp + 0x58], 0xa
movaps xmm0, xmmword [rsp + 0x50]
movdqa xmmword [rsp + 0x50], xmm0
lea rdx, [rsp + 0x50]
lea rcx, [rbp - 0x38]
call fcn.180019d4c
mov rdx, rdi
mov rcx, qword [rax]
call fcn.18001c610
int3
mov rdx, rdi
mov ecx, recv
call fcn.18001bc9c
int3