Function at 0x1400277e0
Capabilities:
Encode data using xor
Generate random numbers using the delphi lcg
Hash data with crc32

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
mov qword [rsp + 0x20], rdi
push r12
push r13
push r14
sub rsp, 0x20
mov rax, qword [rcx + 0xf8]
xor r13d, r13d
mov rsi, rcx
cmp r8, rax
mov qword [rcx + 0xc8], rdx
cmova r8, rax
mov qword [rcx + 0xd0], r8
test r8, r8
je 0x140027a88
lea r14, [0x140118b60]
cmp qword [rsi + 0xb8], 0
jne 0x140027944
mov rax, qword [rsi + 0xf0]
test rax, rax
je 0x140027944
mov rdx, qword [rsi + 0xa8]
mov ebx, 0x4000
mov rcx, rsi
cmp rax, rbx
cmovb rbx, rax
mov r8d, ebx
call fcn.140026b10
test eax, eax
je 0x140027aaa
mov rax, qword [rsi + 0xa8]
sub qword [rsi + 0xf0], rbx
test byte [rsi + 0x64], 1
mov qword [rsi + 0xb0], rax
mov qword [rsi + 0xb8], rbx
je 0x140027944
xor r8d, r8d
test rbx, rbx
je 0x140027944
xor r9d, r9d
nop dword [rax]
mov edx, dword [rsi + 0x108]
mov rcx, qword [rsi + 0xa8]
inc r8d
and edx, 0xfffd
or edx, 2
mov eax, edx
xor eax, 1
imul eax, edx
shr eax, 8
xor byte [r9 + rcx], al
mov rax, qword [rsi + 0xa8]
mov edx, dword [rsi + 0x100]
movsx rcx, byte [r9 + rax]
mov r9d, r8d
xor rcx, rdx
shr edx, 8
movzx eax, cl
mov ecx, dword [r14 + rax*4]
xor ecx, edx
mov edx, dword [rsi + 0x108]
movzx eax, cl
mov dword [rsi + 0x100], ecx
movzx ecx, dl
add eax, dword [rsi + 0x104]
shr edx, 8
imul eax, eax, 0x8088405
inc eax
mov dword [rsi + 0x104], eax
movzx eax, byte [rsi + 0x107]
xor rcx, rax
mov eax, dword [r14 + rcx*4]
xor eax, edx
mov dword [rsi + 0x108], eax
cmp r9, rbx
jb 0x1400278b0
mov rdx, qword [rsi + 0x110]
mov r8, qword [rsi + 0xb8]
cmp rdx, r8
cmova rdx, r8
test rdx, rdx
je 0x140027994
mov rax, qword [rsi + 0xb0]
sub r8, rdx
lea rcx, [rax + rdx]
movzx eax, byte [rax + rdx - 1]
sub qword [rsi + 0x110], rdx
mov qword [rsi + 0xb8], r8
mov qword [rsi + 0xb0], rcx
jne 0x140027994
cmp al, byte [rsi + 0x118]
jne 0x140027ab5
cmp word [rsi + 0x66], 0
jne 0x140027a17
mov rax, qword [rsi + 0xd0]
mov rdi, qword [rsi + 0xb8]
mov rdx, qword [rsi + 0xb0]
mov rcx, qword [rsi + 0xc8]
cmp rax, rdi
cmovb rdi, rax
mov r8d, edi
call sub.MSVCR100.dll_memcpy
mov rbx, qword [rsi + 0xc8]
mov ecx, dword [rsi + 0xe8]
mov rdx, rbx
mov r8d, edi
call fcn.1400265d0
sub qword [rsi + 0xf8], rdi
sub qword [rsi + 0xb8], rdi
sub qword [rsi + 0xd0], rdi
add qword [rsi + 0xb0], rdi
add qword [rsi + 0xd8], rdi
mov dword [rsi + 0xe8], eax
lea rax, [rbx + rdi]
add r13, rdi
mov qword [rsi + 0xc8], rax
jmp 0x140027a70
mov rbp, qword [rsi + 0xd8]
mov r12, qword [rsi + 0xc8]
lea rcx, [rsi + 0xb0]
call fcn.140026710
mov edi, eax
test eax, eax
je 0x140027a40
cmp eax, 1
jne 0x140027ac0
mov rbx, qword [rsi + 0xd8]
mov ecx, dword [rsi + 0xe8]
mov rdx, r12
sub rbx, rbp
mov r8d, ebx
call fcn.1400265d0
sub qword [rsi + 0xf8], rbx
add r13, rbx
mov dword [rsi + 0xe8], eax
cmp edi, 1
je 0x140027a88
cmp qword [rsi + 0xf8], 0
je 0x140027a88
cmp qword [rsi + 0xd0], 0
jne 0x140027830
mov rax, r13
mov rbx, qword [rsp + 0x40]
mov rbp, qword [rsp + 0x48]
mov rsi, qword [rsp + 0x50]
mov rdi, qword [rsp + 0x58]
add rsp, 0x20
pop r14
pop r13
pop r12
ret
mov dword [rsi + 0x10], 7
xor eax, eax
jmp 0x140027a8b
mov dword [rsi + 0x10], reloc.WSOCK32.dll_send
xor eax, eax
jmp 0x140027a8b
mov dword [rsi + 0x10], reloc.OLEAUT32.dll_SafeArrayGetUBound
xor eax, eax
jmp 0x140027a8b