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

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0xe8
mov rsi, rcx
cmp qword [rdx + 0x10], 0
je 0x14000d661
mov rdi, rdx
mov eax, dword [0x140050580]
mov ecx, dword [0x140051950]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x14000da96
mov eax, dword [0x14005190c]
mov ecx, dword [0x140051950]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x14000dadf
mov eax, dword [0x140051914]
mov ecx, dword [0x140051950]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 4]
jg 0x14000db6a
cmp byte [0x140051918], 0
movabs rax, 0x449612026810536c
movabs r14, 0xb8e763579a0f78f2
movabs rcx, 0x44f0126c68595337
movabs rbx, 0x9b5393dd8d91074
movabs r11, 0xd22f23423273feb1
movabs r10, 0x56f8b00bddb8337e
movabs r9, 0x5933a70895c677cb
movabs r8, 0x3f924b8903379448
movabs rdx, 0x6e22e0bea7463605
jne 0x14000d62e
mov qword [rsp + 0x20], rax
movabs rax, 0x9fc391dd884101b
mov qword [rsp + 0x28], rax
movabs rax, 0xd2462336321afedf
mov qword [rsp + 0x30], rax
movabs rax, 0x5682b062ddd4331f
mov qword [rsp + 0x38], rax
movabs rax, 0x5941a72895a277ae
mov qword [rsp + 0x40], rax
movabs rax, 0x3ffd4bed03599429
mov qword [rsp + 0x48], rax
movabs rax, 0x6e57e0d0a7663668
mov qword [rsp + 0x50], rax
movabs rax, 0xb89563329a6d789f
mov qword [rsp + 0x58], rax
movabs rax, 0x10438b4117ca435f
mov qword [rsp + 0x60], rax
movabs rax, 0xf52fd1d44d3517d9
mov qword [rsp + 0x68], rax
movabs rax, 0x4d1603f429400a56
mov qword [rsp + 0x70], rax
movabs rax, 0xb5d8826395ee27c6
mov qword [rsp + 0x78], rax
mov qword [rsp + 0x80], rcx
mov rcx, rbx
mov qword [rsp + 0x88], rcx
mov rcx, r11
mov qword [rsp + 0x90], rcx
mov rcx, r10
mov qword [rsp + 0x98], rcx
mov rcx, r9
mov qword [rsp + 0xa0], rcx
mov rcx, r8
mov qword [rsp + 0xa8], rcx
mov rcx, rdx
mov qword [rsp + 0xb0], rcx
mov rcx, r14
mov qword [rsp + 0xb8], rcx
movabs rcx, 0x102d8b2417ad437f
mov qword [rsp + 0xc0], rcx
movabs rcx, 0xf55bd1b54d4717bc
mov qword [rsp + 0xc8], rcx
movabs rcx, 0x4d1603da29320a39
mov qword [rsp + 0xd0], rcx
mov qword [rsp + 0xd8], rax
lea rax, [rsp + 0x80]
movaps xmm0, xmmword [rsp + 0x20]
xorps xmm0, xmmword [rax]
movaps xmmword [rsp + 0x20], xmm0
movaps xmm0, xmmword [rsp + 0x30]
xorps xmm0, xmmword [rax + 0x10]
movaps xmmword [rsp + 0x30], xmm0
movaps xmm0, xmmword [rsp + 0x40]
xorps xmm0, xmmword [rax + 0x20]
movaps xmmword [rsp + 0x40], xmm0
movaps xmm0, xmmword [rsp + 0x50]
xorps xmm0, xmmword [rax + 0x30]
movaps xmmword [rsp + 0x50], xmm0
movaps xmm0, xmmword [rsp + 0x60]
xorps xmm0, xmmword [rax + 0x40]
movaps xmmword [rsp + 0x60], xmm0
movaps xmm0, xmmword [rsp + 0x70]
xorps xmm0, xmmword [rax + 0x50]
movaps xmmword [rsp + 0x70], xmm0
lea rcx, [0x140052150]
lea rdx, [rsp + 0x20]
call fcn.140001db0
mov rbx, rax
mov rax, qword [rax]
movsxd rax, dword [rax + 4]
mov rax, qword [rbx + rax + 0x40]
mov rcx, qword [rax + 8]
mov qword [rsp + 0x88], rcx
mov rax, qword [rcx]
call qword [rax + 8]
lea rcx, [rsp + 0x80]
call fcn.140002d60
mov r8, qword [rax]
mov rcx, rax
mov dl, 0xa
call qword [r8 + 0x60]
mov ebp, eax
mov rcx, qword [rsp + 0x88]
test rcx, rcx
je 0x14000d615
mov rax, qword [rcx]
call qword [rax + 0x10]
test rax, rax
je 0x14000d615
mov r8, qword [rax]
mov rcx, rax
mov edx, 1
call qword [r8]
mov rcx, rbx
mov edx, ebp
call fcn.140007870
mov rcx, rbx
call fcn.1400022a0
mov byte [0x140051918], 1
mov rcx, rsi
mov rdx, rdi
call fcn.14000dd20
mov rax, qword [rsi + 0x10]
cmp qword [rsi + 0x18], 8
mov qword [rsp + 0xe0], rsi
jb 0x14000d7f4
mov rbp, qword [rsi]
test rax, rax
jne 0x14000d800
jmp 0x14000d8bf
movabs rax, 0x4482121e681c536c
mov qword [rsp + 0x20], rax
movabs rax, 0x9953960d8ab101b
mov qword [rsp + 0x28], rax
movabs rax, 0xd25b2332321efef4
mov qword [rsp + 0x30], rax
movabs rax, 0x5699b066dd983307
mov qword [rsp + 0x38], rax
movabs rax, 0x5933a72695ad77b8
mov qword [rsp + 0x40], rax
movabs rax, 0x3f924b8903379448
mov qword [rsp + 0x48], rax
movabs rcx, 0x44f0126c68595337
mov qword [rsp + 0x80], rcx
movabs rcx, 0x9b5393dd8d91074
mov qword [rsp + 0x88], rcx
movabs rcx, 0xd22f23423273feb1
mov qword [rsp + 0x90], rcx
movabs rcx, 0x56f8b00bddb8337e
mov qword [rsp + 0x98], rcx
movabs rcx, 0x5933a70895c677cb
mov qword [rsp + 0xa0], rcx
mov qword [rsp + 0xa8], rax
lea rax, [rsp + 0x80]
movaps xmm0, xmmword [rsp + 0x20]
xorps xmm0, xmmword [rax]
movaps xmmword [rsp + 0x20], xmm0
movaps xmm0, xmmword [rsp + 0x30]
xorps xmm0, xmmword [rax + 0x10]
movaps xmmword [rsp + 0x30], xmm0
movaps xmm0, xmmword [rsp + 0x40]
xorps xmm0, xmmword [rax + 0x20]
movaps xmmword [rsp + 0x40], xmm0
lea rcx, [0x140052150]
lea rdx, [rsp + 0x20]
call fcn.140001db0
mov rdi, rax
mov rax, qword [rax]
movsxd rax, dword [rax + 4]
mov rax, qword [rdi + rax + 0x40]
mov rcx, qword [rax + 8]
mov qword [rsp + 0x88], rcx
mov rax, qword [rcx]
call qword [rax + 8]
lea rcx, [rsp + 0x80]
call fcn.140002d60
mov r8, qword [rax]
mov rcx, rax
mov dl, 0xa
call qword [r8 + 0x60]
mov ebx, eax
mov rcx, qword [rsp + 0x88]
test rcx, rcx
je 0x14000d7c1
mov rax, qword [rcx]
call qword [rax + 0x10]
test rax, rax
je 0x14000d7c1
mov r8, qword [rax]
mov rcx, rax
mov edx, 1
call qword [r8]
mov rcx, rdi
mov edx, ebx
call fcn.140007870
mov rcx, rdi
call fcn.1400022a0
xorps xmm0, xmm0
movups xmmword [rsi + 0x10], xmm0
movups xmmword [rsi], xmm0
lea rdx, [0x14004718e]
mov rcx, rsi
xor r8d, r8d
call fcn.140002040
jmp 0x14000da7f
mov rbp, rsi
test rax, rax
je 0x14000d8bf
lea r12, [rax*2]
add r12, rbp
mov esi, 0xffffffff
lea rdi, [0x140050584]
lea r13, [0x140050560]
jmp 0x14000d835
movzx ecx, word [rcx + rax*2]
mov word [rbp], cx
add rbp, 2
cmp rbp, r12
je 0x14000d8bf
cmp word [rbp], 0x3f
jne 0x14000d828
mov ebx, dword [0x140051910]
cmp rbx, rsi
je 0x14000d888
lea r15, [rbx + 1]
mov rcx, rdi
call fcn.14000ff60
mov ecx, eax
imul rcx, r15
cmp ebx, ecx
jb 0x14000d882
not ebx
mov eax, ebx
xor edx, edx
div r15d
cmp edx, ecx
jbe 0x14000d882
mov ebx, edx
nop dword [rax]
mov rcx, rdi
call fcn.14000ff60
mov ecx, eax
imul rcx, r15
cmp ebx, ecx
ja 0x14000d870
shr rcx, 0x20
jmp 0x14000d892
mov rcx, rdi
call fcn.14000ff60
mov ecx, eax
movsxd rax, ecx
mov cx, 0x58
cmp qword [0x140050570], rax
jbe 0x14000d824
cmp qword [0x140050578], 8
mov rcx, r13
jb 0x14000d820
mov rcx, qword [0x140050560]
jmp 0x14000d820
movabs rax, 0x449612026810536c
mov qword [rsp + 0x20], rax
movabs rax, 0x9f2391dd884101b
mov qword [rsp + 0x28], rax
movabs rax, 0xd25d2327321dfed4
mov qword [rsp + 0x30], rax
movabs rax, 0x569cb06eddcc331f
mov qword [rsp + 0x38], rax
movabs rax, 0x595da76995a577eb
mov qword [rsp + 0x40], rax
movabs rax, 0x3ff34bed035e942c
mov qword [rsp + 0x48], rax
movabs rax, 0x6e22e090a7233671
mov qword [rsp + 0x50], rax
mov qword [rsp + 0x58], r14
movabs rax, 0x44f0126c68595337
mov qword [rsp + 0x80], rax
movabs rax, 0x9b5393dd8d91074
mov qword [rsp + 0x88], rax
movabs rax, 0xd22f23423273feb1
mov qword [rsp + 0x90], rax
movabs rax, 0x56f8b00bddb8337e
mov qword [rsp + 0x98], rax
movabs rax, 0x5933a70895c677cb
mov qword [rsp + 0xa0], rax
movabs rax, 0x3f924b8903379448
mov qword [rsp + 0xa8], rax
movabs rax, 0x6e22e0bea7463605
mov qword [rsp + 0xb0], rax
mov qword [rsp + 0xb8], r14
lea rax, [rsp + 0x80]
movaps xmm0, xmmword [rsp + 0x20]
xorps xmm0, xmmword [rax]
movaps xmmword [rsp + 0x20], xmm0
movaps xmm0, xmmword [rsp + 0x30]
xorps xmm0, xmmword [rax + 0x10]
movaps xmmword [rsp + 0x30], xmm0
movaps xmm0, xmmword [rsp + 0x40]
xorps xmm0, xmmword [rax + 0x20]
movaps xmmword [rsp + 0x40], xmm0
movaps xmm0, xmmword [rsp + 0x50]
xorps xmm0, xmmword [rax + 0x30]
movaps xmmword [rsp + 0x50], xmm0
lea rcx, [0x140052150]
lea rdx, [rsp + 0x20]
call fcn.140001db0
mov rdi, rax
mov rax, qword [rax]
movsxd rax, dword [rax + 4]
mov rax, qword [rdi + rax + 0x40]
mov rcx, qword [rax + 8]
mov qword [rsp + 0x88], rcx
mov rax, qword [rcx]
call qword [rax + 8]
lea rcx, [rsp + 0x80]
call fcn.140002d60
mov r8, qword [rax]
mov rcx, rax
mov dl, 0xa
call qword [r8 + 0x60]
mov ebx, eax
mov rcx, qword [rsp + 0x88]
test rcx, rcx
je 0x14000da65
mov rax, qword [rcx]
call qword [rax + 0x10]
test rax, rax
je 0x14000da65
mov r8, qword [rax]
mov rcx, rax
mov edx, 1
call qword [r8]
mov rcx, rdi
mov edx, ebx
call fcn.140007870
mov rcx, rdi
call fcn.1400022a0
mov rsi, qword [rsp + 0xe0]
mov rax, rsi
add rsp, 0xe8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
lea rcx, [0x140050580]
call fcn.1400138fc
cmp dword [0x140050580], 0xffffffff
jne 0x14000d359
lea rcx, [0x140050560]
lea rdx, str.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
call fcn.140007530
lea rcx, [0x14000dbc0]
call fcn.1400139e0
lea rcx, [0x140050580]
call fcn.140013974
jmp 0x14000d359
lea rcx, [0x14005190c]
call fcn.1400138fc
cmp dword [0x14005190c], 0xffffffff
jne 0x14000d37e
lea rcx, [rsp + 0x80]
call fcn.14000dc40
mov edx, dword [rsp + 0x80]
mov dword [0x140051908], 0xffffffff
mov dword [0x140050588], edx
mov eax, 3
lea rcx, [0x140050584]
mov r8d, edx
shr r8d, 0x1e
xor r8d, edx
imul edx, r8d, 0x6c078965
add rdx, rax
add rdx, 0xfffffffffffffffe
mov dword [rcx + rax*4 - 4], edx
cmp rax, 0x271
je 0x14000dba2
mov r8d, edx
shr r8d, 0x1e
xor r8d, edx
imul edx, r8d, 0x6c078965
add edx, eax
dec edx
mov dword [rcx + rax*4], edx
add rax, 2
jmp 0x14000db28
lea rcx, [0x140051914]
call fcn.1400138fc
cmp dword [0x140051914], 0xffffffff
jne 0x14000d3a3
mov eax, dword [0x140050570]
dec eax
mov dword [0x140051910], eax
lea rcx, [0x140051914]
call fcn.140013974
jmp 0x14000d3a3
mov dword [0x140050584], 0x270
lea rcx, [0x14005190c]
call fcn.140013974
jmp 0x14000d37e