Function at 0x18001f460
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, 0x28
lea rbp, [rsp + 0x20]
mov esi, dword [0x18006c588]
mov ecx, 0xe3b639dd
call fcn.18002f910
cmp esi, eax
jl 0x18001f702
xor r13d, r13d
lea rsi, [0x18006d8f0]
nop word [rax + rax]
mov r15d, r13d
movsxd r13, r13d
mov ecx, dword [rsi + r13*4]
call fcn.180024280
mov r14d, eax
lea eax, [r13 + 1]
cdqe
lea rcx, [0x18006d8f0]
mov esi, dword [rcx + rax*4]
mov ecx, 0xef4f23f2
call fcn.18002f910
mov ebx, eax
not ebx
or ebx, 0xcf9185f
and ebx, esi
mov r12d, ebx
and r12d, 0x7fffffff
not ebx
mov ecx, r14d
call fcn.18002e1d0
mov edi, eax
mov ecx, 0xd64b3028
call fcn.18002f910
mov esi, eax
not esi
mov ecx, 0xd64b3028
call fcn.18002f910
and eax, edi
and r14d, esi
or r14d, eax
and ebx, 0x35fd0b85
mov eax, r12d
and eax, esi
or eax, ebx
xor eax, r14d
not edi
and edi, r12d
lea r12, [0x180070a14]
or esi, 0x35fd0b85
and esi, edi
or esi, eax
mov ecx, 0xddf1b108
call fcn.18002f910
add eax, r13d
add eax, 0xc1b876e8
cdqe
mov ebx, esi
shr ebx, 1
lea rcx, [0x18006d8f0]
xor ebx, dword [rcx + rax*4]
mov ecx, 0x9c4a51b0
call fcn.18002f910
mov edi, eax
not edi
mov ecx, 0x9c4a51b0
call fcn.18002f910
or eax, edi
and eax, esi
lea rsi, [0x18006d8f0]
and eax, 1
xor ebx, dword [r12 + rax*4]
mov dword [rsi + r13*4], ebx
xor ecx, ecx
call fcn.180021ca0
sub r13d, eax
cmp r13d, 0xe3
jl 0x18001f4a0
cmp r13d, 0x26e
jg 0x18001f686
sub r15d, eax
add r15d, 0x6000ff3a
nop word cs:[rax + rax]
lea r14d, [r15 - 0x6000ff3a]
lea rax, [0x18006d8f0]
mov esi, dword [rax + r14*4]
mov ecx, 0x63b63bad
call fcn.18002f910
mov edi, eax
and edi, esi
mov ecx, 0x7c493b6a
call fcn.18002f910
add eax, r15d
cdqe
lea rcx, [0x18006d8f0]
mov ebx, dword [rcx + rax*4]
mov r12d, ebx
and r12d, 0x7fffffff
mov ecx, edi
call fcn.18002e1d0
mov esi, eax
mov r13d, r12d
not r13d
and eax, 0x9d67ddd6
and edi, 0x62982229
or edi, eax
mov ecx, 0x7ed1e67b
call fcn.18002f910
and eax, r13d
and ebx, 0x62982229
or ebx, eax
xor ebx, edi
not esi
and esi, r12d
lea r12, [0x180070a14]
or esi, ebx
lea eax, [r15 - 0x6001001d]
lea rcx, [0x18006d8f0]
mov edi, dword [rcx + rax*4]
mov ebx, esi
shr ebx, 1
mov ecx, 0xe3b63bac
call fcn.18002f910
and eax, esi
xor edi, dword [r12 + rax*4]
xor edi, ebx
lea rax, [0x18006d8f0]
mov dword [rax + r14*4], edi
inc r15d
cmp r15d, 0x600101a9
jne 0x18001f5c0
mov r14d, 0x80000000
and r14d, dword [0x18006e2ac]
mov esi, dword [0x18006d8f0]
mov ebx, esi
not ebx
mov ecx, r14d
call fcn.18002e1d0
or ebx, 0x80000000
mov edi, eax
and edi, 0x78190465
or eax, ebx
and ebx, 0x78190465
and esi, 0x7e6fb9a
or esi, ebx
or edi, r14d
xor edi, esi
mov ecx, eax
call fcn.18002e1d0
mov esi, eax
or esi, edi
mov edi, dword [0x18006df20]
mov ecx, 0xe3b63bac
call fcn.18002f910
mov edx, esi
mov ecx, eax
shr edx, cl
and esi, 1
xor edi, dword [r12 + rsi*4]
xor edi, edx
mov dword [0x18006e2ac], edi
mov dword [0x18006c588], 0
movsxd rsi, dword [0x18006c588]
mov ecx, 0xe3b63bac
call fcn.18002f910
add eax, esi
mov dword [0x18006c588], eax
lea rax, [0x18006d8f0]
mov eax, dword [rax + rsi*4]
mov edi, eax
shr edi, 0xb
xor edi, eax
mov ecx, 0xe3b63baa
call fcn.18002f910
mov ebx, edi
mov ecx, eax
shl ebx, cl
mov ecx, 0xc4862d74
call fcn.18002f910
mov esi, eax
not esi
or esi, 0x5201680
and esi, ebx
and esi, 0x9d2c5680
xor esi, edi
mov ecx, 0xe3b63ba2
call fcn.18002f910
mov ebx, esi
mov ecx, eax
shl ebx, cl
mov ecx, 0xc703bad
call fcn.18002f910
mov edi, eax
and edi, ebx
xor edi, esi
mov ebx, edi
shr ebx, 0x12
mov ecx, 0xfc19fd3c
call fcn.18002f910
mov esi, eax
mov ecx, 0xfc19fd3c
call fcn.18002f910
mov ecx, esi
xor ecx, 0xe050396e
and ecx, edi
xor ecx, esi
mov edx, eax
xor edx, 0x396e
and edx, ebx
xor eax, edx
xor eax, ecx
add rsp, 0x28
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret