Function at 0x140037ba0
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 [0x140047dd0], eax
jle 0x140037ea9
lea rcx, [0x140047dd0]
call fcn.140040288
cmp dword [0x140047dd0], 0xffffffff
jne 0x140037ea9
xor eax, eax
mov qword [0x140047de1], rax
mov dword [0x140047de9], eax
mov word [0x140047ded], ax
mov byte [0x140047def], 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 + 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 0x140037c40
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 0x140037c70
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 [0x140047ddc], 5
movzx ecx, byte [0x140047de0]
test cl, cl
jne 0x140037d15
add r8d, 5
mov cl, 1
test cl, cl
je 0x140037d1b
sub r8d, 5
xor cl, cl
movzx eax, r8b
xor al, 0x77
mov byte [0x140047de1], al
test cl, cl
jne 0x140037d2f
add r8d, 5
add r8d, 0xfffffffb
lea ecx, [r8 + 1]
mov eax, 1
cdq
idiv ecx
add dl, r8b
xor dl, 0x69
mov byte [0x140047de2], dl
lea ecx, [r8 + 1]
mov eax, 2
cdq
idiv ecx
add dl, r8b
xor dl, 0x6e
mov byte [0x140047de3], dl
lea ecx, [r8 + 1]
mov eax, 3
cdq
idiv ecx
add dl, r8b
xor dl, 0x69
mov byte [0x140047de4], dl
lea ecx, [r8 + 1]
mov eax, 4
cdq
idiv ecx
add dl, r8b
xor dl, 0x6f
mov byte [0x140047de5], dl
lea ecx, [r8 + 1]
mov eax, 5
cdq
idiv ecx
add dl, r8b
xor dl, 0x5f
mov byte [0x140047de6], dl
lea ecx, [r8 + 1]
mov eax, 6
cdq
idiv ecx
add dl, r8b
xor dl, 0x64
mov byte [0x140047de7], dl
lea ecx, [r8 + 1]
mov eax, 7
cdq
idiv ecx
add dl, r8b
xor dl, 0x73
mov byte [0x140047de8], dl
lea ecx, [r8 + 1]
mov eax, 8
cdq
idiv ecx
add dl, r8b
xor dl, 0x65
mov byte [0x140047de9], dl
lea ecx, [r8 + 1]
mov eax, 9
cdq
idiv ecx
add dl, r8b
xor dl, 0x5f
mov byte [0x140047dea], dl
lea ecx, [r8 + 1]
mov eax, 0xa
cdq
idiv ecx
add dl, r8b
xor dl, 0x68
mov byte [0x140047deb], dl
lea ecx, [r8 + 1]
mov eax, 0xb
cdq
idiv ecx
add dl, r8b
xor dl, 0x6f
mov byte [0x140047dec], dl
lea ecx, [r8 + 1]
mov eax, 0xc
cdq
idiv ecx
add dl, r8b
xor dl, 0x6f
mov byte [0x140047ded], dl
mov r9d, r8d
lea ecx, [r8 + 1]
mov eax, 0xd
cdq
idiv ecx
add dl, r8b
xor dl, 0x6b
mov byte [0x140047dee], dl
lea r10d, [r9 + 5]
mov byte [0x140047de0], 0
lea r8d, [r10 - 4]
mov eax, 0xe
cdq
idiv r8d
add dl, r9b
mov byte [0x140047def], dl
mov dword [0x140047dd8], r10d
mov byte [0x140047de0], 1
lea rcx, [0x140047dd0]
call fcn.14004021c
movups xmm0, xmmword [0x140047dd8]
movups xmmword [rbx], xmm0
movsd xmm1, qword [0x140047de8]
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