Function at 0x1400aa950
Capabilities:
Generate random numbers using a mersenne twister

Disassembly:
push r15
push r14
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x68
lea rax, [rcx + 4]
mov ebp, 0xac15a797
mov r8d, 0x18019025
mov r9d, 0x80000000
mov r15d, 0x7fffffff
mov r10d, 0x270
mov r11d, 0x29cd9d03
mov r14d, 0xbafda633
jmp 0x1400aa9b0
mov edx, dword [rsp + 0x40]
or edx, dword [rsp + 0x44]
mov esi, edx
shr esi, 1
mov dword [rsp + 0x48], esi
and edx, 1
mov dword [rsp + 0x4c], edx
mov ebp, 0x399985b8
nop word [rax + rax]
cmp ebp, 0xfdac0abe
jle 0x1400aa9f0
cmp ebp, 0x18019024
jle 0x1400aaa30
cmp ebp, 0x70b1f4b4
jle 0x1400aab24
cmp ebp, 0x70b1f4b5
je 0x1400aab5c
cmp ebp, 0x7adf1c14
jne 0x1400aa9b0
mov ebp, 0xfdac0abf
xor edi, edi
jmp 0x1400aa9b0
cmp ebp, 0xb50b5505
jg 0x1400aaab0
cmp ebp, 0x877f1419
je 0x1400aab7f
cmp ebp, 0x9ad75fbc
je 0x1400aab9c
cmp ebp, 0xac15a797
jne 0x1400aa9b0
mov ebp, 0x7adf1c14
jmp 0x1400aa9b0
cmp ebp, 0xfdac0abf
je 0x1400aabde
cmp ebp, 0x26e6f78
je 0x1400aac02
cmp ebp, 0x883cd26
jne 0x1400aa9b0
mov rdx, qword [rsp + 0x20]
mov rsi, qword [rsp + 0x60]
mov edx, dword [rdx + rsi*4]
and edx, r15d
or edx, dword [rsp + 0x3c]
mov esi, edx
shr esi, 1
and edx, 1
neg edx
mov rbx, qword [rsp]
mov rbp, qword [rsp + 0x20]
xor esi, dword [rbp + rbx*4 - 0x38c]
and edx, 0x9908b0df
xor esi, edx
mov rdx, qword [rsp + 0x20]
mov rbx, qword [rsp]
mov dword [rdx + rbx*4], esi
mov rbx, qword [rsp]
add rbx, 1
mov ebp, 0x877f1419
jmp 0x1400aa9b0
cmp ebp, 0xb50b5506
je 0x1400aa98b
cmp ebp, 0xbafda633
je 0x1400aac34
cmp ebp, 0xca86ee2e
jne 0x1400aa9b0
mov edx, dword [rsp + 0x14]
shr edx, 1
test dword [rsp + 0x14], 1
mov esi, 0xb0c52ddc
cmove esi, r11d
mov rdi, qword [rsp + 0x30]
mov rbp, qword [rsp + 0x18]
xor esi, edx
xor esi, dword [rbp + rdi*4 + 0x634]
xor esi, 0x29cd9d03
mov rdx, qword [rsp + 0x18]
mov rdi, qword [rsp + 8]
mov dword [rdx + rdi*4], esi
mov rdi, qword [rsp + 8]
add rdi, 1
mov ebp, 0xfdac0abf
jmp 0x1400aa9b0
cmp ebp, 0x18019025
jne 0x1400aac50
mov qword [rsp + 0x20], rax
mov rdx, qword [rsp]
add rdx, r10
mov qword [rsp + 0x50], rdx
mov rdx, qword [rsp + 0x20]
mov rsi, qword [rsp + 0x50]
mov edx, dword [rdx + rsi*4]
mov dword [rsp + 0x38], edx
mov ebp, 0x70b1f4b5
jmp 0x1400aa9b0
mov edx, dword [rsp + 0x38]
and edx, r9d
mov dword [rsp + 0x3c], edx
mov rdx, qword [rsp + 0x50]
add rdx, 1
mov qword [rsp + 0x60], rdx
mov ebp, 0x883cd26
jmp 0x1400aa9b0
mov qword [rsp], rbx
mov rdx, qword [rsp]
cmp rdx, 0x26f
mov ebp, 0x9ad75fbc
cmovb ebp, r8d
jmp 0x1400aa9b0
mov qword [rsp + 0x58], rcx
mov rdx, qword [rsp + 0x58]
add rdx, 4
mov qword [rsp + 0x28], rdx
mov rdx, qword [rsp]
mov rsi, qword [rsp + 0x28]
mov edx, dword [rsi + rdx*4 + 0x9c0]
and edx, r9d
mov dword [rsp + 0x40], edx
mov rdx, qword [rsp + 0x28]
mov edx, dword [rdx]
and edx, r15d
mov dword [rsp + 0x44], edx
mov ebp, 0xb50b5506
jmp 0x1400aa9b0
mov qword [rsp + 8], rdi
mov rbx, qword [rsp + 8]
cmp rbx, 0xe3
mov ebp, 0x877f1419
cmovb ebp, r14d
mov rbx, qword [rsp + 8]
jmp 0x1400aa9b0
mov rbp, qword [rsp + 0x18]
mov rsi, qword [rsp + 0x30]
mov esi, dword [rbp + rsi*4]
and esi, r9d
mov rbp, qword [rsp + 0x30]
mov rdx, qword [rsp + 0x18]
mov edx, dword [rdx + rbp*4 + 4]
and edx, r15d
or edx, esi
mov dword [rsp + 0x14], edx
mov ebp, 0xca86ee2e
jmp 0x1400aa9b0
mov qword [rsp + 0x18], rax
mov rbp, qword [rsp + 8]
add rbp, r10
mov qword [rsp + 0x30], rbp
mov ebp, 0x26e6f78
jmp 0x1400aa9b0
cmp ebp, 0x399985b8
jne 0x1400aa9b0
mov eax, dword [rsp + 0x4c]
test eax, eax
mov ecx, 0x9908b0df
cmove ecx, eax
xor ecx, dword [rsp + 0x48]
mov rax, qword [rsp + 0x28]
xor ecx, dword [rax + 0x630]
mov rax, qword [rsp + 0x28]
mov rdx, qword [rsp]
mov dword [rax + rdx*4], ecx
mov rax, qword [rsp + 0x58]
mov dword [rax], 0
add rsp, 0x68
pop rbx
pop rbp
pop rdi
pop rsi
pop r14
pop r15
ret