Function at 0x140278fab
Capabilities:
Encode data using xor
Generate random numbers using the delphi lcg

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x88
mov rax, qword [0x14033f038]
xor rax, rsp
mov qword [rsp + 0x80], rax
mov ebx, 0xffffff9a
test rcx, rcx
je 0x140279365
mov qword [rsp + 0x58], r9
mov ebp, dword [rsp + 0x110]
mov eax, ebp
and eax, 0xfffffff7
jne 0x140279365
mov r13, r8
mov r15, rdx
mov rsi, rcx
cmp dword [rcx + 0x70], 1
je 0x1402793c1
test r15, r15
lea r14, [0x140302ca8]
cmovne r14, r15
mov r15, qword [rsp + 0x108]
xor r12d, r12d
mov eax, 0
test r15, r15
je 0x140279033
mov rcx, r15
call fcn.140198c60
mov qword [rsp + 0x48], rax
mov edi, dword [rsp + 0x158]
mov rcx, r14
call fcn.140198c60
mov qword [rsp + 0x40], rax
test r13, r13
je 0x1402790a7
mov r12d, dword [r13 + 0x18]
test r12d, r12d
jne 0x1402790a7
mov eax, dword [r13 + 0x14]
lea ecx, [rax + 0x44]
lea edx, [rax + 0x30]
cmp eax, 0x50
cmovb edx, eax
cmp eax, 0x7bc
cmovae edx, ecx
mov eax, dword [r13 + 0x10]
shl eax, 5
shl edx, 9
add eax, dword [r13 + 0xc]
add eax, edx
shl eax, 0x10
add eax, 0x200000
mov ecx, dword [r13]
mov edx, dword [r13 + 4]
shr ecx, 1
shl edx, 5
add edx, ecx
mov r12d, dword [r13 + 8]
shl r12d, 0xb
add r12d, edx
or r12d, eax
mov dword [rsi + 0x10100], r12d
mov edx, dword [rsp + 0x118]
mov ecx, edx
and ecx, 0xfffffffe
mov eax, edi
or eax, 2
cmp ecx, 8
cmovne eax, edi
mov dword [rsi + 0xf4], eax
cmp edx, 2
je 0x1402790dc
cmp edx, 1
jne 0x1402790e9
mov ecx, 6
jmp 0x1402790e1
mov ecx, 4
or eax, ecx
mov dword [rsi + 0xf4], eax
mov ecx, dword [rsp + 0x120]
cmp qword [rsp + 0x140], 0
je 0x140279104
or eax, 1
mov dword [rsi + 0xf4], eax
mov rdi, qword [rsp + 0xf8]
lea rax, [rsi + 0x78]
mov qword [rsp + 0x50], rax
xor r12d, r12d
mov qword [rsi + 0x10104], r12
mov dword [rsi + 0xf8], ebp
mov qword [rsi + 0xd0], r12
mov dword [rsi + 0xfc], ecx
mov rdx, qword [rsi + 0x58]
mov rcx, rsi
call fcn.140297053
mov rbp, rax
mov qword [rsi + 0xd8], rax
mov rax, qword [rsp + 0x48]
mov ebx, dword [rsp + 0x100]
add eax, ebx
mov rdx, qword [rsp + 0x40]
lea ecx, [rdx + rax + 0x2e]
mov dword [rsi + 0xec], ecx
mov dword [rsi + 0xf0], 0x20
lea ecx, [rdx + rax]
add ecx, 0x4e
call fcn.140070a20
mov qword [rsi + 0xe0], rax
mov dword [rsi + 0xe8], ebx
mov ecx, 0x2014b50
mov byte [rax + r12], cl
shr rcx, 8
inc r12
cmp r12, 4
jne 0x14027918c
mov ecx, dword [rsp + 0x150]
mov word [rax + 4], cx
cmp ecx, 0x10000
jb 0x1402791b6
mov word [rax + 4], 0xffff
mov word [rax + 6], 0x14
mov ecx, dword [rsi + 0xf4]
mov word [rax + 8], cx
cmp ecx, 0x10000
mov r11, qword [rsp + 0x48]
jb 0x1402791d9
mov word [rax + 8], 0xffff
mov ecx, dword [rsi + 0xf8]
mov word [rax + 0xa], cx
cmp ecx, 0x10000
jb 0x1402791f1
mov word [rax + 0xa], 0xffff
mov ecx, dword [rsi + 0x10100]
xor edx, edx
mov r8, rcx
mov byte [rax + rdx + 0xc], r8b
shr rcx, 8
inc rdx
cmp rdx, 4
jne 0x1402791f9
cmp r8, 0x100
jb 0x14027921e
mov dword [rax + 0xc], 0xffffffff
mov qword [rax + 0x10], 0
mov dword [rax + 0x18], 0
mov rdx, qword [rsp + 0x40]
mov ecx, edx
mov byte [rax + 0x1c], dl
mov byte [rax + 0x1d], dh
cmp rcx, 0x10000
jb 0x140279249
mov word [rax + 0x1c], 0xffff
mov word [rax + 0x1e], bx
cmp ebx, 0x10000
jb 0x14027925b
mov word [rax + 0x1e], 0xffff
mov word [rax + 0x20], r11w
cmp r11d, 0x10000
jb 0x14027926f
mov word [rax + 0x20], 0xffff
mov word [rax + 0x22], 0
test r13, r13
je 0x1402792be
mov edx, dword [r13 + 0x1c]
mov word [rax + 0x24], dx
cmp edx, 0x10000
jb 0x140279290
mov word [rax + 0x24], 0xffff
mov edx, dword [r13 + 0x20]
xor r8d, r8d
mov r9, rdx
mov byte [rax + r8 + 0x26], r9b
shr rdx, 8
inc r8
cmp r8, 4
jne 0x140279297
cmp r9, 0x100
jb 0x1402792cb
mov dword [rax + 0x26], 0xffffffff
jmp 0x1402792cb
mov word [rax + 0x24], 0
mov dword [rax + 0x26], 0
mov edx, 0xffffffff
cmp rbp, rdx
jb 0x14027938b
add rax, 0x2a
mov dword [rax], 0xffffffff
mov eax, ebx
cmp dword [rsp + 0x40], 0
je 0x140279306
xor edx, edx
mov r8b, byte [r14 + rdx]
mov r9, qword [rsi + 0xe0]
mov byte [r9 + rdx + 0x2e], r8b
inc rdx
cmp rcx, rdx
jne 0x1402792ee
test ebx, ebx
je 0x14027932b
lea rdx, [rcx + 0x2e]
xor r8d, r8d
mov r9b, byte [rdi + r8]
mov r10, qword [rsi + 0xe0]
add r10, rdx
mov byte [r8 + r10], r9b
inc r8
cmp rax, r8
jne 0x140279311
test r11d, r11d
je 0x140279356
mov edx, r11d
add rax, rcx
add rax, 0x2e
xor ecx, ecx
mov r8b, byte [r15 + rcx]
mov r9, qword [rsi + 0xe0]
add r9, rax
mov byte [rcx + r9], r8b
inc rcx
cmp rdx, rcx
jne 0x14027933c
mov ebx, 0xffffff98
cmp qword [rsi + 0xe0], 0
jne 0x1402793d4
mov rcx, qword [rsp + 0x80]
xor rcx, rsp
call fcn.140171860
mov eax, ebx
add rsp, 0x88
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov rdx, qword [rsi + 0x10150]
sub rbp, rdx
add rax, 0x2a
xor edx, edx
mov r8, rbp
mov byte [rax + rdx], r8b
shr rbp, 8
inc rdx
cmp rdx, 4
jne 0x14027939b
cmp r8, 0x100
jae 0x1402792dd
jmp 0x1402792e3
mov rcx, rsi
call fcn.140279a57
mov ebx, eax
test eax, eax
jne 0x140279365
jmp 0x140279008
mov eax, dword [rsp + 0x160]
mov dword [rsi + 0x1010c], eax
xorps xmm0, xmm0
movups xmmword [rsi + 0x10110], xmm0
xor edi, edi
mov qword [rsi + 0x10120], rdi
mov rcx, rsi
mov rdx, r14
mov r8d, dword [rsp + 0xf0]
mov r9, qword [rsp + 0x58]
call fcn.140278c95
mov ebx, eax
mov qword [rsi + 0x80], rdi
mov qword [rsi + 0x90], 0x10000
lea rax, [rsi + 0x100]
mov qword [rsi + 0x88], rax
mov dword [rsi + 0xc0], 0
test ebx, ebx
je 0x14027944b
mov dword [rsi + 0x10140], 0
jmp 0x140279365
cmp dword [rsi + 0xf8], 8
jne 0x14027945d
cmp dword [rsi + 0xfc], 0
je 0x140279484
mov dword [rsi + 0x10140], 0
cmp qword [rsp + 0x140], 0
jne 0x140279504
mov dword [rsi + 0x70], 1
xor ebx, ebx
jmp 0x140279365
mov eax, dword [rsp + 0x128]
mov r9d, eax
neg r9d
cmovns r9d, eax
xorps xmm0, xmm0
movups xmmword [rsi + 0xa8], xmm0
mov qword [rsi + 0xb8], 0
lea rax, str.1.2.13
mov qword [rsp + 0x30], rax
mov eax, dword [rsp + 0x138]
mov dword [rsp + 0x28], eax
mov eax, dword [rsp + 0x130]
mov dword [rsp + 0x20], eax
mov dword [rsp + 0x38], 0x58
mov rcx, qword [rsp + 0x50]
mov edx, dword [rsp + 0x118]
mov r8d, 8
call fcn.1400ec790
mov ebx, eax
test eax, eax
jne 0x14027943c
mov dword [rsi + 0xd0], 8
jmp 0x14027945d
movabs r14, 0xaaaaaaaaaaaaaaaa
mov qword [rsp + 0x60], r14
mov dword [rsp + 0x68], 0xaaaaaaaa
mov dword [rsi + 0x10108], 1
call fcn.14021bce0
mov rdi, rax
mov qword [rsi + 0x10138], rax
lea rbx, [rsi + 0x10128]
mov qword [rsp + 0x70], r14
mov word [rsp + 0x78], 0xaaaa
mov eax, dword [0x14035c500]
lea ecx, [rax + 1]
mov dword [0x14035c500], ecx
test eax, eax
jne 0x14027956d
xor ecx, ecx
call fcn.14016f578
xor eax, 0xbb40e64e
mov ecx, eax
call fcn.140170064
mov rcx, qword [rsp + 0x140]
mov rdx, rbx
mov r8, rdi
call fcn.14027a448
xor r14d, r14d
mov ebp, 0xff
call fcn.14017026c
shr eax, 7
mov r8d, dword [rsi + 0x10128]
mov edx, dword [rsi + 0x10130]
mov ecx, edx
and ecx, 0xfffd
mov r9d, edx
or r9d, 2
xor ecx, 3
imul ecx, r9d
mov r9d, r8d
xor r9d, eax
and r9d, ebp
shr r8d, 8
xor r8d, dword [rdi + r9*4]
mov dword [rsi + 0x10128], r8d
and r8d, ebp
add r8d, dword [rsi + 0x1012c]
shr ecx, 8
imul r8d, r8d, 0x8088405
inc r8d
mov dword [rsi + 0x1012c], r8d
shr r8d, 0x18
mov r9d, edx
and r9d, ebp
xor r9d, r8d
shr edx, 8
xor edx, dword [rdi + r9*4]
mov dword [rsi + 0x10130], edx
xor ecx, eax
mov byte [rsp + r14 + 0x70], cl
inc r14
cmp r14, 0xa
jne 0x140279588
mov rcx, qword [rsp + 0x140]
mov rdx, rbx
mov r8, rdi
call fcn.14027a448
mov eax, dword [rsi + 0x10130]
mov ecx, dword [rsi + 0x10128]
mov edx, dword [rsi + 0x1012c]
xor r8d, r8d
mov r9d, 0xff
mov r10d, eax
and r10d, 0xfffd
mov r11d, eax
or r11d, 2
xor r10d, 3
imul r10d, r11d
shr r10d, 8
mov r11b, byte [rsp + r8 + 0x70]
mov ebx, ecx
xor bl, r11b
movzx ebx, bl
shr ecx, 8
xor ecx, dword [rdi + rbx*4]
mov dword [rsi + 0x10128], ecx
mov ebx, ecx
and ebx, r9d
add ebx, edx
imul edx, ebx, 0x8088405
inc edx
mov dword [rsi + 0x1012c], edx
mov ebx, edx
shr ebx, 0x18
mov r14d, eax
and r14d, r9d
xor r14d, ebx
shr eax, 8
xor eax, dword [rdi + r14*4]
mov dword [rsi + 0x10130], eax
xor r10b, r11b
mov byte [rsp + r8 + 0x60], r10b
inc r8
cmp r8, 0xa
jne 0x140279645
mov r9d, 0xfffd
mov r8d, eax
and r8d, r9d
mov r10d, eax
or r10d, 2
xor r8d, 3
imul r8d, r10d
shr r8d, 8
mov r15d, dword [rsp + 0x148]
mov ebx, r15d
shr ebx, 0x10
mov r11d, ecx
xor r11d, ebx
mov r10d, 0xff
and r11d, r10d
shr ecx, 8
xor ecx, dword [rdi + r11*4]
mov dword [rsi + 0x10128], ecx
mov r11d, ecx
and r11d, r10d
add edx, r11d
imul edx, edx, 0x8088405
lea ebp, [rdx + 1]
mov dword [rsi + 0x1012c], ebp
shr ebp, 0x18
mov r14d, eax
and r14d, r10d
xor r14d, ebp
shr eax, 8
xor eax, dword [rdi + r14*4]
mov dword [rsi + 0x10130], eax
xor ebx, r8d
lea r8, [rsp + 0x60]
mov byte [r8 + 0xa], bl
and r9d, eax
mov ebx, eax
or ebx, 2
xor r9d, 3
imul r9d, ebx
shr r15d, 0x18
xor r11d, r15d
shr ecx, 8
xor ecx, dword [rdi + r11*4]
mov dword [rsi + 0x10128], ecx
and ecx, r10d
add ecx, edx
inc ecx
imul ecx, ecx, 0x8088405
inc ecx
mov dword [rsi + 0x1012c], ecx
shr ecx, 0x18
and r10d, eax
xor r10d, ecx
shr eax, 8
xor eax, dword [rdi + r10*4]
shr r9d, 8
mov dword [rsi + 0x10130], eax
xor r15d, r9d
mov byte [r8 + 0xb], r15b
mov dword [rsi + 0x10140], 0xc
mov rdx, qword [rsi + 0x58]
mov rax, qword [rsi + 0x10]
mov rcx, qword [rsi + 0x38]
mov r9d, 0xc
call qword [case.0x140211850.0]
mov ebx, 0xffffffff
cmp eax, 0xc
jne 0x140279365
jmp 0x140279476