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

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 0x98
lea rbp, [rsp + 0x80]
movaps xmmword [rbp], xmm6
mov qword [rbp - 8], 0xfffffffffffffffe
mov qword [rbp - 0x38], rdx
movsxd rax, dword [rdx]
lea rdx, str.head
mov rdx, qword [rdx + rax*8]
xor r8d, r8d
call fcn.1400cea20
test al, al
je 0x14005066c
xor r15d, r15d
xorps xmm6, xmm6
lea r13, [rbp - 0x30]
movabs r12, 0x100000001b3
jmp 0x1400502ad
inc r15
cmp r15, 0xe
je 0x140050667
lea rax, str.head
mov rdi, qword [rax + r15*8]
movaps xmmword [rbp - 0x20], xmm6
movaps xmmword [rbp - 0x30], xmm6
mov rcx, rdi
call fcn.14023e390
test rax, rax
js 0x140050684
mov rsi, rax
cmp rax, 0xf
mov qword [rbp - 0x40], r15
mov qword [rbp - 0x48], rdi
ja 0x140050310
mov qword [rbp - 0x20], rsi
mov qword [rbp - 0x18], reloc.WS2_32.dll_ntohs
mov rcx, r13
mov rdx, rdi
mov r8, rsi
call fcn.14021e3b0
add rsi, rbp
add rsi, 0xffffffffffffffd0
jmp 0x140050379
mov rbx, rsi
or rbx, 0xf
cmp rbx, 0x17
mov eax, reloc.WS2_32.dll_shutdown
cmovb rbx, rax
cmp rbx, 0xfff
jb 0x140050350
lea rcx, [rbx + 0x28]
call fcn.140140ff0
lea r14, [rax + 0x27]
and r14, 0xffffffffffffffe0
mov qword [r14 - 8], rax
jmp 0x14005035c
lea rcx, [rbx + 1]
call fcn.140140ff0
mov r14, rax
mov qword [rbp - 0x30], r14
mov qword [rbp - 0x20], rsi
mov qword [rbp - 0x18], rbx
mov rcx, r14
mov rdx, rdi
mov r8, rsi
call fcn.14021e3b0
add rsi, r14
mov byte [rsi], 0
mov rsi, qword [rbp - 0x30]
mov r15, qword [rbp - 0x20]
mov r14, qword [rbp - 0x18]
cmp r14, 0x10
cmovae r13, rsi
movabs rdx, 0xcbf29ce484222325
test r15, r15
je 0x140050456
lea rcx, [r15 - 1]
mov eax, r15d
and eax, 3
cmp rcx, 3
jae 0x1400503d0
xor ecx, ecx
movabs rbx, 0xcbf29ce484222325
jmp 0x14005042d
mov rdi, r15
and rdi, 0xfffffffffffffffc
xor ecx, ecx
movabs rbx, 0xcbf29ce484222325
nop word cs:[rax + rax]
movzx edx, byte [r13 + rcx]
xor rdx, rbx
imul rdx, r12
movzx ebx, byte [r13 + rcx + 1]
xor rbx, rdx
imul rbx, r12
movzx edx, byte [r13 + rcx + 2]
xor rdx, rbx
imul rdx, r12
movzx ebx, byte [r13 + rcx + 3]
xor rbx, rdx
imul rbx, r12
add rcx, 4
cmp rdi, rcx
jne 0x1400503f0
mov rdx, rbx
test rax, rax
je 0x140050456
add rcx, r13
xor edi, edi
nop word [rax + rax]
movzx edx, byte [rcx + rdi]
xor rdx, rbx
imul rdx, r12
inc rdi
mov rbx, rdx
cmp rax, rdi
jne 0x140050440
and rdx, qword [0x14032b320]
mov rax, qword [0x14032b308]
mov rcx, rdx
shl rcx, 4
mov rbx, qword [rax + rcx + 8]
cmp rbx, qword [0x14032b2f8]
je 0x1400504d0
add rdx, rdx
mov rdi, qword [rax + rdx*8]
cmp r15, qword [rbx + 0x20]
jne 0x1400504b3
nop word cs:[rax + rax]
cmp qword [rbx + 0x28], 0x10
jb 0x1400504a0
mov rdx, qword [rbx + 0x10]
jmp 0x1400504a4
lea rdx, [rbx + 0x10]
mov rcx, r13
mov r8, r15
call fcn.14021e2b0
test eax, eax
je 0x1400504d2
cmp rbx, rdi
je 0x1400504d0
mov rbx, qword [rbx + 8]
cmp r15, qword [rbx + 0x20]
je 0x140050490
jmp 0x1400504b3
xor ebx, ebx
cmp r14, 0x10
lea r13, [rbp - 0x30]
mov rdi, qword [rbp - 0x48]
jb 0x140050514
lea rdx, [r14 + 1]
cmp rdx, 0x1000
jb 0x14005050c
mov rax, qword [rsi - 8]
add rsi, 0xfffffffffffffff8
sub rsi, rax
cmp rsi, 0x20
jae 0x140050689
add r14, 0x28
mov rdx, r14
mov rsi, rax
mov rcx, rsi
call fcn.140141034
test rbx, rbx
mov r15, qword [rbp - 0x40]
je 0x1400502a0
movaps xmmword [rbp - 0x20], xmm6
movaps xmmword [rbp - 0x30], xmm6
mov rcx, rdi
call fcn.14023e390
test rax, rax
js 0x140050684
mov rsi, rax
cmp rax, 0xf
ja 0x140050570
mov qword [rbp - 0x20], rsi
mov qword [rbp - 0x18], reloc.WS2_32.dll_ntohs
mov rcx, r13
mov rdx, rdi
mov r8, rsi
call fcn.14021e3b0
add rsi, rbp
add rsi, 0xffffffffffffffd0
jmp 0x1400505d5
mov qword [rbp - 0x18], reloc.WS2_32.dll_ntohs
mov rbx, rsi
or rbx, 0xf
cmp rbx, 0x17
mov eax, reloc.WS2_32.dll_shutdown
cmovb rbx, rax
cmp rbx, 0xfff
jb 0x1400505ac
lea rcx, [rbx + 0x28]
call fcn.140140ff0
lea r14, [rax + 0x27]
and r14, 0xffffffffffffffe0
mov qword [r14 - 8], rax
jmp 0x1400505b8
lea rcx, [rbx + 1]
call fcn.140140ff0
mov r14, rax
mov qword [rbp - 0x30], r14
mov qword [rbp - 0x20], rsi
mov qword [rbp - 0x18], rbx
mov rcx, r14
mov rdx, rdi
mov r8, rsi
call fcn.14021e3b0
add rsi, r14
mov byte [rsi], 0
lea rcx, [0x14032b2f0]
lea rdx, [rbp - 0x58]
mov r8, r13
call fcn.14005a2f0
mov rax, qword [rbp - 0x58]
mov esi, dword [rax + 0x30]
mov rax, qword [rbp - 0x18]
cmp rax, 0x10
jb 0x14005062d
mov rcx, qword [rbp - 0x30]
lea rdx, [rax + 1]
cmp rdx, 0x1000
jb 0x140050628
mov rbx, qword [rcx - 8]
add rcx, 0xfffffffffffffff8
sub rcx, rbx
cmp rcx, 0x20
jae 0x140050689
add rax, 0x28
mov rdx, rax
mov rcx, rbx
call fcn.140141034
mov rax, qword [rbp - 0x38]
mov ebx, dword [rax]
cmp ebx, esi
sete dl
movlps qword [rbp - 0x30], xmm6
mov rcx, rdi
xor r8d, r8d
mov r9, r13
call fcn.1400cf2f0
test al, al
je 0x140050655
mov rax, qword [rbp - 0x38]
mov dword [rax], r15d
cmp ebx, esi
jne 0x1400502a0
call fcn.14009ed20
jmp 0x1400502a0
call fcn.1400cf2d0
movaps xmm6, xmmword [rbp]
add rsp, 0x98
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
call fcn.1400026a0
call fcn.140231990
int3