Function at 0x140021c60
Capabilities:
Encode data using xor
Generate random numbers using a mersenne twister

Disassembly:
mov qword [rsp + 0x18], rbx
mov qword [rsp + 0x20], rsi
push rbp
push rdi
push r12
push r14
push r15
lea rbp, [rsp - 0x1310]
mov eax, 0x1410
call fcn.140053900
sub rsp, rax
mov rax, qword [0x14009b0c0]
xor rax, rsp
mov qword [rbp + 0x1300], rax
xor edi, edi
mov qword [rsp + 0x20], rcx
mov ebx, edx
mov qword [rsp + 0x40], rdi
xorps xmm0, xmm0
mov qword [rsp + 0x48], rdi
lea rdx, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
lea r8d, [rdi + 0x3e]
lea rcx, [rsp + 0x30]
movups xmmword [rsp + 0x30], xmm0
call fcn.140018180
xorps xmm0, xmm0
mov qword [rsp + 0x60], rdi
movups xmmword [rsp + 0x50], xmm0
mov word [rsp + 0x50], di
lea ecx, [rdi + 1]
mov qword [rsp + 0x68], 7
mov dword [rbp + 0x12f4], 0xffffffff
mov dword [rsp + 0x74], ebx
nop dword [rax]
nop dword [rax + rax]
mov eax, ebx
shr eax, 0x1e
xor eax, ebx
imul ebx, eax, 0x6c078965
add ebx, ecx
mov dword [rsp + rcx*4 + 0x74], ebx
inc rcx
cmp rcx, 0x270
jb 0x140021d00
mov esi, dword [rsp + 0x40]
mov ebx, 0x270
mov r14, qword [rsp + 0x30]
dec esi
mov r15, qword [rsp + 0x48]
mov r12d, 5
mov dword [rsp + 0x70], ebx
nop
cmp esi, 0xffffffff
jne 0x140021eb7
cmp ebx, 0x270
jne 0x140021da2
lea r8, [rsp + 0x78]
mov r9d, ebx
nop dword [rax]
mov edx, dword [r8 - 4]
xor edx, dword [r8]
lea r8, [r8 + 4]
btr edx, 0x1f
xor edx, dword [r8 - 8]
mov eax, edx
and al, 1
neg al
sbb ecx, ecx
shr edx, 1
and ecx, 0x9908b0df
xor ecx, edx
xor ecx, dword [r8 + 0x62c]
mov dword [r8 + 0x9b8], ecx
sub r9, 1
jne 0x140021d60
mov ebx, dword [rsp + 0x70]
jmp 0x140021e7d
cmp ebx, 0x4e0
jb 0x140021e7d
mov r8, rdi
mov eax, dword [rbp + r8*4 + 0x934]
mov edx, eax
xor edx, dword [rbp + r8*4 + 0x938]
btr edx, 0x1f
xor edx, eax
mov eax, edx
and al, 1
neg al
sbb ecx, ecx
shr edx, 1
and ecx, 0x9908b0df
xor ecx, dword [rbp + r8*4 + 0xf68]
xor ecx, edx
mov dword [rsp + r8*4 + 0x74], ecx
inc r8
cmp r8, 0xe3
jb 0x140021db1
mov r8d, 0xe3
nop word [rax + rax]
mov eax, dword [rbp + r8*4 + 0x934]
mov edx, eax
xor edx, dword [rbp + r8*4 + 0x938]
btr edx, 0x1f
xor edx, eax
mov eax, edx
and al, 1
neg al
sbb ecx, ecx
shr edx, 1
and ecx, 0x9908b0df
xor ecx, dword [rbp + r8*4 - 0x418]
xor ecx, edx
mov dword [rsp + r8*4 + 0x74], ecx
inc r8
cmp r8, 0x26f
jb 0x140021e00
mov edx, dword [rbp + 0x12f0]
mov ebx, edi
mov eax, dword [rsp + 0x74]
and edx, 0x80000000
btr eax, 0x1f
mov dword [rsp + 0x70], ebx
or edx, eax
mov eax, edx
and al, 1
neg al
sbb ecx, ecx
shr edx, 1
and ecx, 0x9908b0df
xor ecx, edx
xor ecx, dword [rbp + 0x5a4]
mov dword [rbp + 0x930], ecx
mov eax, ebx
inc ebx
mov edx, dword [rsp + rax*4 + 0x74]
mov eax, edx
shr eax, 0xb
and eax, dword [rbp + 0x12f4]
xor edx, eax
mov dword [rsp + 0x70], ebx
mov eax, edx
and eax, 0xff3a58ad
shl eax, 7
xor edx, eax
mov eax, edx
and eax, 0xffffdf8c
shl eax, 0xf
xor edx, eax
mov ecx, edx
shr ecx, 0x12
xor ecx, edx
jmp 0x140021efe
lea rcx, [rsp + 0x70]
lea ebx, [rsi + 1]
call fcn.140022580
mov ecx, eax
mov edi, ebx
imul rcx, rdi
cmp ecx, ebx
jae 0x140021ef4
mov eax, ebx
xor edx, edx
neg eax
div ebx
mov ebx, edx
cmp ecx, edx
jae 0x140021ef4
nop
lea rcx, [rsp + 0x70]
call fcn.140022580
mov ecx, eax
imul rcx, rdi
cmp ecx, ebx
jb 0x140021ee0
mov ebx, dword [rsp + 0x70]
shr rcx, 0x20
xor edi, edi
movsxd rdx, ecx
lea rax, [rsp + 0x30]
cmp r15, 7
lea rcx, [rsp + 0x50]
cmova rax, r14
movzx edx, word [rax + rdx*2]
call fcn.140022420
sub r12, 1
jne 0x140021d40
mov r14, qword [rsp + 0x60]
movabs rbx, 0x7ffffffffffffffe
mov rax, rbx
sub rax, r14
cmp rax, 1
jb 0x14002209f
mov rcx, qword [rsp + 0x20]
lea r15, [r14 + 1]
mov r12, qword [rsp + 0x68]
xorps xmm0, xmm0
mov rdi, qword [rsp + 0x50]
cmp r12, 7
mov qword [rsp + 0x1448], r13
mov rsi, rcx
movups xmmword [rcx], xmm0
lea r13, [rsp + 0x50]
cmova r13, rdi
xor eax, eax
mov qword [rcx + 0x10], rax
mov qword [rcx + 0x18], rax
cmp r15, 7
jbe 0x140021fc3
mov rax, r15
or rax, 7
cmp rax, rbx
ja 0x140021fa1
mov edx, 0xa
mov rbx, rax
cmp rax, rdx
cmovb rbx, rdx
inc rbx
lea rdx, [rsp + 0x28]
mov qword [rsp + 0x28], rbx
call fcn.1400183a0
mov rcx, qword [rsp + 0x20]
mov rsi, rax
dec rbx
mov qword [rcx], rax
jmp 0x140021fc8
mov ebx, 7
mov qword [rcx + 0x10], r15
lea r8, [r14 + r14]
mov qword [rcx + 0x18], rbx
mov rdx, r13
lea rcx, [rsi + 2]
mov word [rsi], 0x2e
call fcn.14007e680
mov r13, qword [rsp + 0x1448]
xor eax, eax
mov word [rsi + r15*2], ax
cmp r12, 7
jbe 0x14002202b
lea rdx, [r12*2 + 2]
mov rax, rdi
cmp rdx, 0x1000
jb 0x140022023
mov rdi, qword [rdi - 8]
add rdx, 0x27
sub rax, rdi
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140022099
mov rcx, rdi
call fcn.140053554
mov rax, qword [rsp + 0x48]
cmp rax, 7
jbe 0x140022069
mov rcx, qword [rsp + 0x30]
lea rdx, [rax*2 + 2]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140022064
mov rcx, qword [rcx - 8]
add rdx, 0x27
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140022099
call fcn.140053554
mov rax, qword [rsp + 0x20]
mov rcx, qword [rbp + 0x1300]
xor rcx, rsp
call fcn.140052f30
lea r11, [rsp + 0x1410]
mov rbx, qword [r11 + 0x40]
mov rsi, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r12
pop rdi
pop rbp
ret
call fcn.140059d54
int3
call fcn.1400064e0
int3