Function at 0x1401e4598
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 [0x14028f028]
xor rax, rsp
mov qword [rsp + 0x80], rax
mov ebx, 0xffffff9a
test rcx, rcx
je 0x1401e3b75
mov qword [rsp + 0x50], r9
mov eax, dword [rsp + 0x110]
and eax, 0xfffffff7
jne 0x1401e3b75
mov rbp, rdx
mov r12, rcx
cmp dword [rcx + 0x70], 1
mov qword [rsp + 0x40], r8
je 0x1401e3b9b
test rbp, rbp
lea rdx, [0x140257ad8]
cmovne rdx, rbp
mov r13, qword [rsp + 0x108]
xor edi, edi
mov eax, 0
test r13, r13
je 0x1401e37df
mov rcx, r13
mov rsi, rdx
call fcn.1400ed270
mov rdx, rsi
mov rbp, rax
mov r15d, dword [rsp + 0x158]
mov r14d, dword [rsp + 0x118]
mov qword [rsp + 0x58], rdx
mov rcx, rdx
call fcn.1400ed270
mov rsi, rax
mov rbx, qword [rsp + 0x40]
test rbx, rbx
je 0x1401e3856
mov edi, dword [rbx + 0x18]
test edi, edi
jne 0x1401e3856
mov eax, dword [rbx + 0x14]
lea ecx, [rax + 0x44]
lea edx, [rax + 0x30]
cmp eax, 0x4f
cmovbe edx, eax
cmp eax, 0x7bb
cmova edx, ecx
mov eax, dword [rbx + 0x10]
shl eax, 5
shl edx, 9
add eax, dword [rbx + 0xc]
add eax, edx
shl eax, 0x10
add eax, 0x200000
mov ecx, dword [rbx]
mov edx, dword [rbx + 4]
shr ecx, 1
shl edx, 5
add edx, ecx
mov edi, dword [rbx + 8]
shl edi, 0xb
add edi, edx
or edi, eax
mov dword [r12 + 0x10100], edi
mov ecx, r14d
and ecx, 0xfffffffe
mov eax, r15d
or eax, 2
cmp ecx, 8
cmovne eax, r15d
mov dword [r12 + 0xf4], eax
cmp r14d, 1
je 0x1401e388a
cmp r14d, 2
jne 0x1401e3895
or eax, 4
jmp 0x1401e388d
or eax, 6
mov dword [r12 + 0xf4], eax
mov ecx, dword [rsp + 0x120]
mov ebx, dword [rsp + 0x100]
cmp qword [rsp + 0x140], 0
je 0x1401e38b9
or eax, 1
mov dword [r12 + 0xf4], eax
mov r15, qword [rsp + 0xf8]
lea rax, [r12 + 0x78]
mov qword [rsp + 0x48], rax
xor edi, edi
mov qword [r12 + 0x10104], rdi
mov eax, dword [rsp + 0x110]
mov dword [r12 + 0xf8], eax
mov qword [r12 + 0xd0], rdi
mov dword [r12 + 0xfc], ecx
mov rdx, qword [r12 + 0x58]
mov rcx, r12
call fcn.1401e2a6e
mov r14, rax
mov qword [r12 + 0xd8], rax
lea eax, [rbx + rbp]
lea ecx, [rsi + rax]
add ecx, 0x2e
mov dword [r12 + 0xec], ecx
mov dword [r12 + 0xf0], 0x20
lea ecx, [rsi + rax]
add ecx, 0x4e
call fcn.14008fb20
mov r10, rbx
mov qword [r12 + 0xe0], rax
mov dword [r12 + 0xe8], r10d
mov ecx, 0x2014b50
mov byte [rax + rdi], cl
shr rcx, 8
inc rdi
cmp rdi, 4
jne 0x1401e394c
mov ecx, dword [rsp + 0x150]
mov word [rax + 4], cx
cmp ecx, 0x10000
mov rdx, qword [rsp + 0x58]
jb 0x1401e397a
mov word [rax + 4], 0xffff
mov word [rax + 6], 0x14
mov ecx, dword [r12 + 0xf4]
mov word [rax + 8], cx
cmp ecx, 0x10000
mov r9, rbp
mov rbx, qword [rsp + 0x40]
jb 0x1401e39a2
mov word [rax + 8], 0xffff
mov ecx, dword [r12 + 0xf8]
mov word [rax + 0xa], cx
cmp ecx, 0x10000
jb 0x1401e39bc
mov word [rax + 0xa], 0xffff
mov ecx, dword [r12 + 0x10100]
xor ebp, ebp
mov byte [rax + rbp + 0xc], cl
shr rcx, 8
inc rbp
cmp rbp, 4
jne 0x1401e39c6
test rcx, rcx
je 0x1401e39e3
mov dword [rax + 0xc], 0xffffffff
mov qword [rax + 0x10], 0
mov dword [rax + 0x18], 0
mov rcx, rsi
mov byte [rax + 0x1c], cl
mov byte [rax + 0x1d], ch
test ecx, 0xffff0000
je 0x1401e3a09
mov word [rax + 0x1c], 0xffff
mov esi, r10d
mov word [rax + 0x1e], r10w
test esi, 0xffff0000
je 0x1401e3a1f
mov word [rax + 0x1e], 0xffff
mov r8d, r9d
mov word [rax + 0x20], r9w
test r8d, 0xffff0000
je 0x1401e3a36
mov word [rax + 0x20], 0xffff
mov word [rax + 0x22], 0
test rbx, rbx
je 0x1401e3a7e
mov ebp, dword [rbx + 0x1c]
mov word [rax + 0x24], bp
cmp ebp, 0x10000
jb 0x1401e3a56
mov word [rax + 0x24], 0xffff
mov ebx, dword [rbx + 0x20]
mov rdi, rax
add rdi, 0x26
xor ebp, ebp
mov byte [rdi + rbp], bl
shr rbx, 8
inc rbp
cmp rbp, 4
jne 0x1401e3a62
mov ebp, 0xffffffff
test rbx, rbx
jne 0x1401e3a8d
jmp 0x1401e3a8f
mov word [rax + 0x24], 0
mov rdi, rax
add rdi, 0x26
xor ebp, ebp
mov dword [rdi], ebp
mov edi, ecx
mov ebx, 0xfffffffe
cmp r14, rbx
jbe 0x1401e3ab3
inc rbx
xor ebp, ebp
mov byte [rax + rbp + 0x2a], bl
shr rbx, 8
inc rbp
cmp rbp, 4
jne 0x1401e3aa0
jmp 0x1401e3ade
mov rbp, qword [r12 + 0x10150]
sub r14, rbp
xor ebp, ebp
mov byte [rax + rbp + 0x2a], r14b
shr r14, 8
inc rbp
cmp rbp, 4
jne 0x1401e3ac0
test r14, r14
je 0x1401e3ade
mov dword [rax + 0x2a], 0xffffffff
test ecx, ecx
je 0x1401e3b15
mov bl, byte [rdx]
mov byte [rax + 0x2e], bl
cmp edi, 1
je 0x1401e3b15
mov bl, byte [rdx + 1]
mov byte [rax + 0x2f], bl
cmp edi, 2
je 0x1401e3b15
lea rax, [rdi - 2]
xor ebp, ebp
mov rbx, qword [r12 + 0xe0]
mov cl, byte [rdx + rbp + 2]
mov byte [rbx + rbp + 0x30], cl
inc rbp
cmp rax, rbp
jne 0x1401e3afd
test r10d, r10d
je 0x1401e3b3b
lea rax, [rdi + 0x2e]
xor ebp, ebp
mov cl, byte [r15 + rbp]
mov rbx, qword [r12 + 0xe0]
add rbx, rax
mov byte [rbp + rbx], cl
inc rbp
cmp rsi, rbp
jne 0x1401e3b20
test r9d, r9d
je 0x1401e3b65
lea rax, [rsi + rdi]
add rax, 0x2e
xor ebx, ebx
mov cl, byte [r13 + rbx]
mov rbp, qword [r12 + 0xe0]
add rbp, rax
mov byte [rbx + rbp], cl
inc rbx
cmp r8, rbx
jne 0x1401e3b4a
mov ebx, 0xffffff98
cmp qword [r12 + 0xe0], 0
jne 0x1401e3bae
mov rcx, qword [rsp + 0x80]
xor rcx, rsp
call fcn.1400ccfe0
mov eax, ebx
add rsp, 0x88
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov rcx, r12
call fcn.1401e40ac
mov ebx, eax
test eax, eax
jne 0x1401e3b75
jmp 0x1401e37af
xorps xmm0, xmm0
movups xmmword [r12 + 0x10118], xmm0
movups xmmword [r12 + 0x1010c], xmm0
mov rcx, r12
mov r8d, dword [rsp + 0xf0]
mov r9, qword [rsp + 0x50]
call fcn.1401e3465
mov ebx, eax
mov qword [r12 + 0x80], 0
mov qword [r12 + 0x90], 0x10000
lea rax, [r12 + 0x100]
mov qword [r12 + 0x88], rax
mov dword [r12 + 0xc0], 0
test ebx, ebx
je 0x1401e3c23
mov dword [r12 + 0x10140], 0
jmp 0x1401e3b75
cmp dword [r12 + 0xf8], 8
jne 0x1401e3c3d
cmp dword [r12 + 0xfc], 0
je 0x1401e4024
mov dword [r12 + 0x10140], 0
cmp qword [rsp + 0x140], 0
je 0x1401e4014
movabs rsi, 0xaaaaaaaaaaaaaaaa
mov qword [rsp + 0x60], rsi
mov dword [rsp + 0x68], 0xaaaaaaaa
mov dword [r12 + 0x10108], 1
call fcn.1401e4590
mov r15, rax
mov qword [r12 + 0x10138], rax
mov qword [rsp + 0x70], rsi
mov word [rsp + 0x78], 0xaaaa
mov eax, dword [0x14029b8a8]
lea ecx, [rax + 1]
mov dword [0x14029b8a8], ecx
test eax, eax
jne 0x1401e3cbd
xor ecx, ecx
call fcn.1400ca094
xor eax, 0xbb40e64e
mov ecx, eax
call fcn.1400cbf5c
movabs r14, 0x2345678912345678
mov qword [r12 + 0x10128], r14
mov dword [r12 + 0x10130], 0x34567890
mov rax, qword [rsp + 0x140]
mov bl, byte [rax]
test bl, bl
je 0x1401e3d5d
mov rax, qword [rsp + 0x140]
inc rax
mov edi, 0x12345678
mov ebp, 0x23456789
mov edx, 0x34567890
mov r8d, 0xff
movzx ebx, bl
mov esi, edi
and esi, r8d
xor esi, ebx
shr edi, 8
xor edi, dword [r15 + rsi*4]
mov dword [r12 + 0x10128], edi
mov ecx, edi
and ecx, r8d
add ecx, ebp
imul ebp, ecx, 0x8088405
inc ebp
mov dword [r12 + 0x1012c], ebp
mov ecx, ebp
shr ecx, 0x18
mov ebx, edx
and ebx, r8d
xor ebx, ecx
shr edx, 8
xor edx, dword [r15 + rbx*4]
mov dword [r12 + 0x10130], edx
mov bl, byte [rax]
inc rax
test bl, bl
jne 0x1401e3d09
xor ebp, ebp
mov ebx, 0xff
call fcn.1400cbf74
shr eax, 7
mov edi, dword [r12 + 0x10128]
mov edx, dword [r12 + 0x10130]
mov ecx, edx
and ecx, 0xfffd
lea esi, [rcx + 2]
xor ecx, 3
imul ecx, esi
shr ecx, 8
mov esi, edi
xor esi, eax
and esi, ebx
shr edi, 8
xor edi, dword [r15 + rsi*4]
mov dword [r12 + 0x10128], edi
and edi, ebx
add edi, dword [r12 + 0x1012c]
imul edi, edi, 0x8088405
inc edi
mov dword [r12 + 0x1012c], edi
shr edi, 0x18
mov esi, edx
and esi, ebx
xor esi, edi
shr edx, 8
xor edx, dword [r15 + rsi*4]
mov dword [r12 + 0x10130], edx
xor ecx, eax
mov byte [rsp + rbp + 0x70], cl
inc rbp
cmp rbp, 0xa
jne 0x1401e3d64
mov qword [r12 + 0x10128], r14
mov dword [r12 + 0x10130], 0x34567890
mov rdx, qword [rsp + 0x140]
mov cl, byte [rdx]
test cl, cl
je 0x1401e3e79
inc rdx
mov esi, 0x12345678
mov eax, 0x23456789
mov r11d, 0x34567890
mov ebp, 0xff
movzx edi, cl
mov ecx, esi
and ecx, ebp
xor ecx, edi
shr esi, 8
xor esi, dword [r15 + rcx*4]
mov dword [r12 + 0x10128], esi
mov ecx, esi
and ecx, ebp
add ecx, eax
imul eax, ecx, 0x8088405
inc eax
mov dword [r12 + 0x1012c], eax
mov ecx, eax
shr ecx, 0x18
mov edi, r11d
and edi, ebp
xor edi, ecx
shr r11d, 8
xor r11d, dword [r15 + rdi*4]
mov dword [r12 + 0x10130], r11d
mov cl, byte [rdx]
inc rdx
test cl, cl
jne 0x1401e3e24
jmp 0x1401e3e89
mov r11d, 0x34567890
mov esi, 0x12345678
mov eax, 0x23456789
xor ebp, ebp
mov r8d, 0xff
mov edi, r11d
and edi, 0xfffd
lea ebx, [rdi + 2]
xor edi, 3
imul edi, ebx
shr edi, 8
movzx ecx, byte [rsp + rbp + 0x70]
mov ebx, esi
and ebx, r8d
xor ebx, ecx
shr esi, 8
xor esi, dword [r15 + rbx*4]
mov dword [r12 + 0x10128], esi
mov ebx, esi
and ebx, r8d
add ebx, eax
imul eax, ebx, 0x8088405
inc eax
mov dword [r12 + 0x1012c], eax
mov edx, eax
shr edx, 0x18
mov ebx, r11d
and ebx, r8d
xor ebx, edx
shr r11d, 8
xor r11d, dword [r15 + rbx*4]
mov dword [r12 + 0x10130], r11d
xor edi, ecx
mov byte [rsp + rbp + 0x60], dil
inc rbp
cmp rbp, 0xa
jne 0x1401e3e91
mov r10d, 0xfffd
mov edi, r11d
and edi, r10d
lea ecx, [rdi + 2]
xor edi, 3
imul edi, ecx
shr edi, 8
mov edx, dword [rsp + 0x148]
mov ebp, edx
shr ebp, 0x10
mov ecx, esi
xor ecx, ebp
mov r9d, 0xff
and ecx, r9d
shr esi, 8
xor esi, dword [r15 + rcx*4]
mov dword [r12 + 0x10128], esi
mov ecx, esi
and ecx, r9d
add eax, ecx
imul r14d, eax, 0x8088405
lea eax, [r14 + 1]
mov dword [r12 + 0x1012c], eax
shr eax, 0x18
mov ebx, r11d
and ebx, r9d
xor ebx, eax
shr r11d, 8
xor r11d, dword [r15 + rbx*4]
mov dword [r12 + 0x10130], r11d
xor ebp, edi
lea r8, [rsp + 0x60]
mov byte [r8 + 0xa], bpl
and r10d, r11d
lea eax, [r10 + 2]
xor r10d, 3
imul r10d, eax
shr r10d, 8
shr edx, 0x18
xor ecx, edx
shr esi, 8
xor esi, dword [r15 + rcx*4]
mov dword [r12 + 0x10128], esi
and esi, r9d
lea eax, [rsi + r14]
inc eax
imul eax, eax, 0x8088405
inc eax
mov dword [r12 + 0x1012c], eax
shr eax, 0x18
and r9d, r11d
xor r9d, eax
shr r11d, 8
xor r11d, dword [r15 + r9*4]
mov dword [r12 + 0x10130], r11d
xor edx, r10d
mov byte [r8 + 0xb], dl
mov dword [r12 + 0x10140], 0xc
mov rcx, qword [r12 + 0x38]
mov rdx, qword [r12 + 0x58]
mov r9d, 0xc
call qword [r12 + 0x10]
mov ebx, 0xffffffff
cmp eax, 0xc
jne 0x1401e3b75
mov dword [r12 + 0x70], 1
xor ebx, ebx
jmp 0x1401e3b75
mov eax, dword [rsp + 0x128]
mov r9d, eax
neg r9d
cmovl r9d, eax
neg r9d
xorps xmm0, xmm0
movups xmmword [r12 + 0xa8], xmm0
mov qword [r12 + 0xb8], 0
lea rax, str.1.2.11
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 + 0x48]
mov edx, dword [rsp + 0x118]
mov r8d, 8
call fcn.140129630
mov ebx, eax
test eax, eax
jne 0x1401e3c12
mov dword [r12 + 0xd0], 8
jmp 0x1401e3c3d
jmp 0x1401e3752