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

Disassembly:
push rbx
mov eax, 0x13c0
call fcn.140041130
sub rsp, rax
mov rax, qword [0x140047040]
xor rax, rsp
mov qword [rsp + 0x13b0], rax
mov rbx, rdx
mov edx, 4
mov rax, qword gs:[0x58]
mov rcx, qword [rax]
mov eax, dword [rdx + rcx]
cmp dword [0x140047e90], eax
jle 0x14003c759
lea rcx, [0x140047e90]
call fcn.140040288
cmp dword [0x140047e90], 0xffffffff
jne 0x14003c759
xor eax, eax
mov qword [0x140047ef1], rax
mov dword [0x140047ef9], eax
mov byte [0x140047efd], al
call qword [sym.imp.MSVCP140.dll_unsigned_int___cdecl_std::_Random_device_void_]
mov edx, eax
mov dword [rsp + 0x13a4], 0xffffffff
mov dword [rsp + 0x24], eax
mov ecx, 1
mov r9d, 0x270
nop dword [rax]
nop dword [rax + rax]
mov eax, edx
shr eax, 0x1e
xor eax, edx
imul edx, eax, 0x6c078965
add edx, ecx
mov dword [rsp + rcx*4 + 0x24], edx
inc rcx
cmp rcx, r9
jb 0x14003c520
mov dword [rsp + 0x20], r9d
lea rax, [rsp + 0x28]
nop word [rax + rax]
mov r8d, dword [rax - 4]
xor r8d, dword [rax]
btr r8d, 0x1f
xor r8d, dword [rax - 4]
mov ecx, r8d
and cl, 1
neg cl
sbb edx, edx
and edx, 0x9908b0df
xor edx, dword [rax + 0x630]
shr r8d, 1
xor edx, r8d
mov dword [rax + 0x9bc], edx
lea rax, [rax + 4]
sub r9, 1
jne 0x14003c550
mov eax, dword [rsp + 0x20]
mov edx, dword [rsp + rax*4 + 0x24]
mov eax, edx
shr eax, 0xb
and eax, dword [rsp + 0x13a4]
xor edx, eax
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
lea eax, [rcx - 0x80000000]
mov edx, 0x80000000
lea r8d, [rcx + rdx]
cmp ecx, edx
cmovae r8d, eax
mov dword [0x140047eec], 5
movzx ecx, byte [0x140047ef0]
test cl, cl
jne 0x14003c5f5
add r8d, 5
mov cl, 1
test cl, cl
je 0x14003c5fb
sub r8d, 5
xor cl, cl
movzx eax, r8b
xor al, 0x20
mov byte [0x140047ef1], al
test cl, cl
jne 0x14003c60f
add r8d, 5
add r8d, 0xfffffffb
lea ecx, [r8 + 1]
mov eax, 1
cdq
idiv ecx
add dl, r8b
xor dl, 0x43
mov byte [0x140047ef2], dl
lea ecx, [r8 + 1]
mov eax, 2
cdq
idiv ecx
add dl, r8b
xor dl, 0x3a
mov byte [0x140047ef3], dl
lea ecx, [r8 + 1]
mov eax, 3
cdq
idiv ecx
add dl, r8b
xor dl, 0x5c
mov byte [0x140047ef4], dl
lea ecx, [r8 + 1]
mov eax, 4
cdq
idiv ecx
add dl, r8b
xor dl, 0x46
mov byte [0x140047ef5], dl
lea ecx, [r8 + 1]
mov eax, 5
cdq
idiv ecx
add dl, r8b
xor dl, 0x69
mov byte [0x140047ef6], dl
lea ecx, [r8 + 1]
mov eax, 6
cdq
idiv ecx
add dl, r8b
xor dl, 0x6c
mov byte [0x140047ef7], dl
lea ecx, [r8 + 1]
mov eax, 7
cdq
idiv ecx
add dl, r8b
xor dl, 0x65
mov byte [0x140047ef8], dl
lea ecx, [r8 + 1]
mov eax, 8
cdq
idiv ecx
add dl, r8b
xor dl, 0x2e
mov byte [0x140047ef9], dl
lea ecx, [r8 + 1]
mov eax, 9
cdq
idiv ecx
add dl, r8b
xor dl, 0x73
mov byte [0x140047efa], dl
lea ecx, [r8 + 1]
mov eax, 0xa
cdq
idiv ecx
add dl, r8b
xor dl, 0x79
mov byte [0x140047efb], dl
mov r9d, r8d
lea ecx, [r8 + 1]
mov eax, 0xb
cdq
idiv ecx
add dl, r8b
xor dl, 0x73
mov byte [0x140047efc], dl
lea r10d, [r9 + 5]
mov byte [0x140047ef0], 0
lea r8d, [r10 - 4]
mov eax, 0xc
cdq
idiv r8d
add dl, r9b
mov byte [0x140047efd], dl
mov dword [0x140047ee8], r10d
mov byte [0x140047ef0], 1
lea rcx, [0x140047e90]
call fcn.14004021c
movups xmm0, xmmword [0x140047ee8]
movups xmmword [rbx], xmm0
movsd xmm1, qword [0x140047ef8]
movsd qword [rbx + 0x10], xmm1
mov rax, rbx
mov rcx, qword [rsp + 0x13b0]
xor rcx, rsp
call fcn.1400401c0
add rsp, 0x13c0
pop rbx
ret