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

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 0xd8
lea rbp, [rsp + 0x80]
movaps xmmword [rbp + 0x40], xmm9
movaps xmmword [rbp + 0x30], xmm8
movaps xmmword [rbp + 0x20], xmm7
movaps xmmword [rbp + 0x10], xmm6
mov qword [rbp + 8], 0xfffffffffffffffe
mov qword [rbp - 0x28], rdx
xorps xmm6, xmm6
movups xmmword [rcx], xmm6
mov qword [rcx + 0x10], 0
mov qword [rbp], rcx
mov qword [rcx + 0x18], 7
lea rbx, [0x18007d838]
movaps xmm7, xmmword [0x18005d1c0]
movaps xmm8, xmmword [0x18005d1d0]
movdqa xmm9, xmmword [0x18005d1e0]
movabs r14, 0x71d67fffeda60000
mov edi, 0x24
movabs r15, 0xb5026f5aa96619e9
jmp 0x180021ffd
lea rdx, [rbp - 0x20]
mov r8d, 3
mov r9d, 0xffffffff
call fcn.180031560
test eax, eax
jne 0x1800228b2
movaps xmmword [rbp - 0x20], xmm6
mov qword [rbp - 0x10], 0
mov qword [rbp - 8], 0xf
xor eax, eax
jmp 0x180022042
mov byte [rax + r12], sil
mov byte [rax + r12 + 1], 0
movabs r15, 0xb5026f5aa96619e9
mov eax, dword [rbp - 0x2c]
inc eax
cmp eax, 0x14
je 0x1800226c0
mov dword [rbp - 0x2c], eax
mov eax, dword [0x18007ebc8]
mov ecx, dword [0x18007ec24]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x180022688
mov eax, dword [0x18007d838]
cmp eax, 0x138
jne 0x1800220f0
movq xmm0, qword [0x18007d840]
pshufd xmm0, xmm0, 0x44
mov rax, 0xfffffffffffffec8
nop
movups xmm1, xmmword [rbx + rax*8 + 0x9d0]
shufps xmm0, xmm1, 0x4e
andps xmm0, xmm7
movaps xmm2, xmm1
andps xmm2, xmm8
orps xmm2, xmm0
psrlq xmm2, 1
pshufd xmm0, xmm1, 0xa0
pslld xmm0, 0x1f
psrad xmm0, 0x1f
pand xmm0, xmm9
movdqu xmm3, xmmword [rbx + rax*8 + 0xea8]
pxor xmm3, xmm0
pxor xmm3, xmm2
movdqu xmmword [rbx + rax*8 + 0x1388], xmm3
movdqa xmm0, xmm1
add rax, 2
jne 0x180022090
mov eax, 0x138
jmp 0x180022252
cmp eax, 0x270
jb 0x180022252
movq xmm0, qword [0x18007e200]
pshufd xmm0, xmm0, 0x44
mov rax, 0xffffffffffffff64
nop
movups xmm1, xmmword [rbx + rax*8 + 0xeb0]
shufps xmm0, xmm1, 0x4e
andps xmm0, xmm7
movaps xmm2, xmm1
andps xmm2, xmm8
orps xmm2, xmm0
psrlq xmm2, 1
pshufd xmm0, xmm1, 0xa0
pslld xmm0, 0x1f
psrad xmm0, 0x1f
pand xmm0, xmm9
movdqu xmm3, xmmword [rbx + rax*8 + 0x1388]
pxor xmm3, xmm0
pxor xmm3, xmm2
movdqu xmmword [rbx + rax*8 + 0x4e8], xmm3
movdqa xmm0, xmm1
add rax, 2
jne 0x180022110
movq xmm0, qword [0x18007e6e0]
pshufd xmm0, xmm0, 0x44
xor eax, eax
nop word cs:[rax + rax]
movdqa xmm1, xmm0
movups xmm0, xmmword [rbx + rax*8 + 0xeb0]
shufps xmm1, xmm0, 0x4e
andps xmm1, xmm7
movaps xmm2, xmm0
andps xmm2, xmm8
orps xmm2, xmm1
psrlq xmm2, 1
pshufd xmm1, xmm0, 0xa0
pslld xmm1, 0x1f
psrad xmm1, 0x1f
pand xmm1, xmm9
movdqu xmm3, xmmword [rbx + rax*8 + 8]
pxor xmm3, xmm1
pxor xmm3, xmm2
movdqu xmmword [rbx + rax*8 + 0x4e8], xmm3
add rax, 2
cmp rax, 0x9a
jne 0x180022180
pshufd xmm0, xmm0, 0xee
movq rcx, xmm0
and rcx, 0xffffffff80000000
mov rax, qword [0x18007ebb8]
mov edx, eax
and edx, 0x7ffffffe
or rdx, rcx
shr rdx, 1
mov ecx, eax
and ecx, 1
neg rcx
and rcx, r15
xor rcx, qword [0x18007dd10]
xor rcx, rdx
mov qword [0x18007e1f0], rcx
and rax, 0xffffffff80000000
mov rcx, qword [0x18007d840]
mov edx, ecx
and edx, 0x7ffffffe
or rdx, rax
and ecx, 1
neg rcx
and rcx, r15
xor rcx, qword [0x18007dd18]
shr rdx, 1
xor rcx, rdx
mov qword [0x18007e1f8], rcx
xor eax, eax
lea ecx, [rax + 1]
mov dword [0x18007d838], ecx
mov eax, eax
mov rax, qword [rbx + rax*8 + 8]
mov rdx, rax
shr rdx, 0x1d
and rdx, qword [0x18007ebc0]
xor rdx, rax
mov rax, rdx
shl rax, 0x11
and rax, r14
xor rax, rdx
mov edx, eax
and edx, 0x7ffbf77
shl rdx, 0x25
xor rdx, rax
mov rax, rdx
shr rax, 0x2b
xor rax, rdx
mul rdi
test rax, 0xfffffffffffffff0
jne 0x1800224f6
jmp 0x180022304
mov ecx, 0x138
mov eax, ecx
mov rax, qword [rbx + rax*8 + 8]
mov rdx, rax
shr rdx, 0x1d
and rdx, qword [0x18007ebc0]
xor rdx, rax
mov rax, rdx
shl rax, 0x11
and rax, r14
xor rax, rdx
mov edx, eax
and edx, 0x7ffbf77
shl rdx, 0x25
xor rdx, rax
mov rax, rdx
shr rax, 0x2b
xor rax, rdx
mul rdi
inc ecx
test rax, 0xfffffffffffffff0
jne 0x1800224f0
cmp ecx, 0x138
jne 0x180022380
movq xmm0, qword [0x18007d840]
pshufd xmm0, xmm0, 0x44
mov rax, 0xfffffffffffffec8
movups xmm1, xmmword [rbx + rax*8 + 0x9d0]
shufps xmm0, xmm1, 0x4e
andps xmm0, xmm7
movaps xmm2, xmm1
andps xmm2, xmm8
orps xmm2, xmm0
psrlq xmm2, 1
pshufd xmm0, xmm1, 0xa0
pslld xmm0, 0x1f
psrad xmm0, 0x1f
pand xmm0, xmm9
movdqu xmm3, xmmword [rbx + rax*8 + 0xea8]
pxor xmm3, xmm0
pxor xmm3, xmm2
movdqu xmmword [rbx + rax*8 + 0x1388], xmm3
movdqa xmm0, xmm1
add rax, 2
jne 0x180022320
jmp 0x1800222b0
cmp ecx, 0x270
jb 0x1800222b5
movq xmm0, qword [0x18007e200]
pshufd xmm0, xmm0, 0x44
mov rax, 0xffffffffffffff64
movups xmm1, xmmword [rbx + rax*8 + 0xeb0]
shufps xmm0, xmm1, 0x4e
andps xmm0, xmm7
movaps xmm2, xmm1
andps xmm2, xmm8
orps xmm2, xmm0
psrlq xmm2, 1
pshufd xmm0, xmm1, 0xa0
pslld xmm0, 0x1f
psrad xmm0, 0x1f
pand xmm0, xmm9
movdqu xmm3, xmmword [rbx + rax*8 + 0x1388]
pxor xmm3, xmm0
pxor xmm3, xmm2
movdqu xmmword [rbx + rax*8 + 0x4e8], xmm3
movdqa xmm0, xmm1
add rax, 2
jne 0x1800223a0
movq xmm0, qword [0x18007e6e0]
pshufd xmm0, xmm0, 0x44
xor eax, eax
nop word cs:[rax + rax]
movdqa xmm1, xmm0
movups xmm0, xmmword [rbx + rax*8 + 0xeb0]
shufps xmm1, xmm0, 0x4e
andps xmm1, xmm7
movaps xmm2, xmm0
andps xmm2, xmm8
orps xmm2, xmm1
psrlq xmm2, 1
pshufd xmm1, xmm0, 0xa0
pslld xmm1, 0x1f
psrad xmm1, 0x1f
pand xmm1, xmm9
movdqu xmm3, xmmword [rbx + rax*8 + 8]
pxor xmm3, xmm1
pxor xmm3, xmm2
movdqu xmmword [rbx + rax*8 + 0x4e8], xmm3
add rax, 2
cmp rax, 0x9a
jne 0x180022410
pshufd xmm0, xmm0, 0xee
movq rcx, xmm0
and rcx, 0xffffffff80000000
mov rax, qword [0x18007ebb8]
mov edx, eax
and edx, 0x7ffffffe
or rdx, rcx
shr rdx, 1
mov ecx, eax
and ecx, 1
neg rcx
and rcx, r15
xor rcx, qword [0x18007dd10]
xor rcx, rdx
mov qword [0x18007e1f0], rcx
and rax, 0xffffffff80000000
mov rcx, qword [0x18007d840]
mov edx, ecx
and edx, 0x7ffffffe
or rdx, rax
and ecx, 1
neg rcx
and rcx, r15
xor rcx, qword [0x18007dd18]
shr rdx, 1
xor rcx, rdx
mov qword [0x18007e1f8], rcx
xor ecx, ecx
jmp 0x1800222b5
mov dword [0x18007d838], ecx
lea rax, str.ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
movzx esi, byte [rdx + rax]
mov r12, qword [rbp - 0x10]
mov r15, qword [rbp - 8]
cmp r12, r15
jae 0x180022530
lea rax, [r12 + 1]
mov qword [rbp - 0x10], rax
lea rax, [rbp - 0x20]
cmp r15, 0x10
jb 0x180022020
mov rax, qword [rbp - 0x20]
jmp 0x180022020
movabs r14, 0x7fffffffffffffff
cmp r12, r14
je 0x1800228f8
lea rdi, [r12 + 1]
cmp r12, 0xffffffffffffffff
jl 0x180022590
mov rax, r15
shr rax, 1
mov rcx, rax
xor rcx, r14
cmp rcx, r15
jb 0x180022590
mov rcx, rdi
or rcx, 0xf
add rax, r15
cmp rcx, rax
mov r14, rax
cmova r14, rcx
lea rcx, [r14 + 1]
cmp rcx, 0x1000
jb 0x180022667
cmp rcx, 0xffffffffffffffd9
jae 0x180022902
nop
lea rcx, [r14 + 0x28]
call fcn.18002f6c0
mov r13, rax
add r13, 0x27
and r13, 0xffffffffffffffe0
mov qword [r13 - 8], rax
mov qword [rbp - 0x10], rdi
mov qword [rbp - 8], r14
cmp r15, 0x10
jb 0x180022620
mov rdi, qword [rbp - 0x20]
mov rcx, r13
mov rdx, rdi
mov r8, r12
call fcn.18005a6e0
mov byte [r13 + r12], sil
mov byte [r13 + r12 + 1], 0
lea rdx, [r15 + 1]
cmp rdx, 0x1000
movabs r14, 0x71d67fffeda60000
jb 0x180022609
mov rax, qword [rdi - 8]
add rdi, 0xfffffffffffffff8
sub rdi, rax
cmp rdi, 0x20
jae 0x1800228fd
add r15, 0x28
mov rdx, r15
mov rdi, rax
movabs r15, 0xb5026f5aa96619e9
mov rcx, rdi
call fcn.18002f6b0
jmp 0x18002264e
mov rcx, r13
lea rdx, [rbp - 0x20]
mov r8, r12
call fcn.18005a6e0
mov byte [r13 + r12], sil
mov byte [r13 + r12 + 1], 0
movabs r14, 0x71d67fffeda60000
movabs r15, 0xb5026f5aa96619e9
mov qword [rbp - 0x20], r13
mov edi, 0x24
mov eax, dword [rbp - 0x2c]
inc eax
cmp eax, 0x14
jne 0x180022042
jmp 0x1800226c0
test rcx, rcx
je 0x180022679
call fcn.18002f6c0
mov r13, rax
jmp 0x1800225a8
mov r14, 0xffffffffffffffff
xor r13d, r13d
jmp 0x1800225a8
lea rcx, [0x18007ebc8]
call fcn.18002fe60
cmp dword [0x18007ebc8], 0xffffffff
jne 0x18002206a
mov rcx, rbx
call fcn.180023dc0
lea rcx, [0x18007ebc8]
call fcn.18002fdf4
jmp 0x18002206a
mov rax, qword [rbp - 0x28]
cmp qword [rax + 0x10], 0
je 0x18002278a
mov rax, qword [rbp - 0x28]
cmp qword [rax + 0x18], 0x10
jb 0x1800226e1
mov rax, qword [rbp - 0x28]
mov rax, qword [rax]
cmp byte [rax], 0x2e
je 0x180022722
mov rax, qword [rbp - 0x10]
mov rcx, qword [rbp - 8]
cmp rax, rcx
jae 0x180022711
lea rdx, [rax + 1]
mov qword [rbp - 0x10], rdx
lea rdx, [rbp - 0x20]
cmp rcx, 0x10
jb 0x180022709
mov rdx, qword [rbp - 0x20]
mov word [rdx + rax], 0x2e
jmp 0x180022722
mov edx, 1
lea rcx, [rbp - 0x20]
mov r9b, 0x2e
call fcn.18000f6c0
mov r9, qword [rbp - 0x28]
mov r8, qword [r9 + 0x10]
cmp qword [r9 + 0x18], 0x10
jb 0x180022738
mov rax, qword [rbp - 0x28]
mov r9, qword [rax]
mov rcx, qword [rbp - 0x10]
mov rax, qword [rbp - 8]
mov rdx, rax
sub rdx, rcx
cmp rdx, r8
jae 0x180022760
mov qword [rsp + 0x20], r8
lea rcx, [rbp - 0x20]
mov rdx, r8
call fcn.180006f40
jmp 0x18002278a
lea rsi, [rcx + r8]
mov qword [rbp - 0x10], rsi
lea rdi, [rbp - 0x20]
cmp rax, 0x10
jb 0x180022776
mov rdi, qword [rbp - 0x20]
add rcx, rdi
mov rdx, r9
call fcn.18005a6e0
mov byte [rdi + rsi], 0
mov edi, 0x24
lea rcx, [rbp - 0x50]
call fcn.180022e60
mov rcx, qword [rbp]
lea rax, [rbp - 0x50]
cmp rax, rcx
je 0x180022800
mov rax, qword [rcx + 0x18]
cmp rax, 8
jb 0x1800227e9
mov rcx, qword [rcx]
lea rdx, [rax*2 + 2]
cmp rdx, 0x1000
jb 0x1800227e0
mov r8, qword [rcx - 8]
add rcx, 0xfffffffffffffff8
sub rcx, r8
cmp rcx, 0x20
jae 0x18002292e
add rax, rax
add rax, 0x29
mov rdx, rax
mov rcx, r8
call fcn.18002f6b0
mov rcx, qword [rbp]
movdqu xmm0, xmmword [rbp - 0x50]
movdqu xmm1, xmmword [rbp - 0x40]
movdqu xmmword [rcx + 0x10], xmm1
movdqu xmmword [rcx], xmm0
jmp 0x180022850
mov rax, qword [rbp - 0x38]
cmp rax, 8
jb 0x180022850
mov rcx, qword [rbp - 0x50]
lea rdx, [rax*2 + 2]
cmp rdx, 0x1000
jb 0x180022841
mov r8, qword [rcx - 8]
add rcx, 0xfffffffffffffff8
sub rcx, r8
cmp rcx, 0x20
jae 0x180022933
add rax, rax
add rax, 0x29
mov rdx, rax
mov rcx, r8
call fcn.18002f6b0
mov rcx, qword [rbp]
nop word [rax + rax]
lea rdx, [rbp - 0x20]
call fcn.180022ff0
mov rax, qword [rbp - 8]
cmp rax, 0x10
jb 0x180022898
mov rcx, qword [rbp - 0x20]
lea rdx, [rax + 1]
cmp rdx, 0x1000
jb 0x180022893
mov r8, qword [rcx - 8]
add rcx, 0xfffffffffffffff8
sub rcx, r8
cmp rcx, 0x20
jae 0x180022929
add rax, 0x28
mov rdx, rax
mov rcx, r8
call fcn.18002f6b0
mov rax, qword [rbp]
cmp qword [rax + 0x18], 8
mov rcx, rax
jb 0x180021fe0
mov rcx, qword [rax]
jmp 0x180021fe0
cmp eax, 0x35
ja 0x1800228c9
mov ecx, eax
movabs rdx, 0x2000000000000c
bt rdx, rcx
jb 0x1800228ce
cmp eax, 0x7b
jne 0x180022907
mov rax, qword [rbp]
movaps xmm6, xmmword [rbp + 0x10]
movaps xmm7, xmmword [rbp + 0x20]
movaps xmm8, xmmword [rbp + 0x30]
movaps xmm9, xmmword [rbp + 0x40]
add rsp, 0xd8
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
call fcn.180005fe0
call fcn.18003810c
call fcn.180006000
mov dword [rbp - 0x50], eax
lea rax, [0x18005ce00]
mov qword [rbp - 0x48], rax
lea rcx, str.exists
lea rdx, [rbp - 0x50]
mov r8, qword [rbp]
call fcn.1800100c0
call fcn.18003810c
call fcn.18003810c
call fcn.18003810c
int3