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

Disassembly:
mov byte [rsp + 0x20], r9b
push rbp
push rsi
push rdi
push r12
sub rsp, 0x78
movzx esi, r9b
mov r12d, r8d
mov rbp, rdx
mov rdi, rcx
cmp r8d, 3
jge 0x1400a4fee
mov rax, rdx
add rsp, 0x78
pop r12
pop rdi
pop rsi
pop rbp
ret
mov qword [rsp + 0xa0], rbx
or ecx, 0xffffffff
mov qword [rsp + 0x70], r13
movzx eax, sil
mov qword [rsp + 0x68], r14
mov qword [rsp + 0x60], r15
sub ecx, eax
add r12d, ecx
cmp byte [0x1401711d4], 0
je 0x1400a5170
xor r15b, r15b
mov byte [rsp + 0xb0], r15b
mov edx, dword [rdi + 8]
mov r9d, edx
lea r8, str._03u:
mov rcx, rbp
mov edx, r12d
call fcn.1400e6100
dec dword [0x140169a24]
movsxd rcx, eax
lea r13, [rbp + rcx*2]
jne 0x1400a5056
call fcn.14001ab20
mov rax, qword [0x14016e6d8]
movzx r14d, byte [rsp + 0xc8]
mov ecx, dword [rax]
add rax, 4
mov qword [0x14016e6d8], rax
mov eax, ecx
shr eax, 0xb
xor ecx, eax
mov eax, ecx
and eax, 0xff3a58ad
shl eax, 7
xor ecx, eax
mov eax, ecx
and eax, 0xffffdf8c
shl eax, 0xf
xor ecx, eax
mov edx, ecx
mov eax, ecx
movzx ecx, word [rdi]
shr rdx, 0x12
xor rax, rdx
cqo
idiv rcx
mov rax, rdx
inc ax
mov qword [rsp + 0x40], rax
test r14b, r14b
je 0x1400a5118
mov eax, dword [rsp + 0xc0]
pxor xmm0, xmm0
movaps xmmword [rsp + 0x50], xmm6
lea rcx, [0x14014f440]
cvtsi2ss xmm0, rax
unpcklps xmm0, xmm0
cvtps2pd xmm6, xmm0
divsd xmm6, qword [0x140153230]
call fcn.1400dd2e0
movapd xmm3, xmm6
mov r8, rax
mov edx, r12d
mov rax, r13
sub rax, rbp
mov rcx, r13
movq r9, xmm3
sar rax, 1
sub edx, eax
call fcn.1400e6100
movsxd rcx, eax
mov rax, qword [rsp + 0x40]
movaps xmm6, xmmword [rsp + 0x50]
lea r13, [r13 + rcx*2]
movzx edx, word [rdi]
cmp dx, 0xf
je 0x1400a5439
cmp dx, 0x10
je 0x1400a5439
cmp dx, 7
ja 0x1400a513b
cmp dx, 1
jae 0x1400a5159
cmp dx, 9
jb 0x1400a5227
cmp dx, 0x20
ja 0x1400a5227
cmp dx, 0x18
jae 0x1400a5227
cmp byte [rdi + 2], 1
lea rsi, [0x1401295d4]
jbe 0x1400a51a3
mov rax, qword [rdi + 0x10]
mov r15, qword [rax + 0x28]
jmp 0x1400a51a6
movzx ecx, word [rdi + 4]
call fcn.140099640
movzx r15d, al
mov byte [rsp + 0xb0], al
test al, al
je 0x1400a5029
call fcn.14001ac10
mov ecx, dword [rdi + 8]
mov eax, eax
cqo
idiv rcx
add edx, 0xa
jmp 0x1400a502c
mov r15, rsi
cmp byte [rsp + 0xb0], 0
je 0x1400a51b8
mov r14, rsi
mov rbx, rsi
jmp 0x1400a51e0
movzx eax, dx
lea r14, [0x14016a030]
imul rax, rax, 0x19
mov r14, qword [rax + r14]
mov rax, qword [rdi + 0x10]
mov rbx, qword [rax + 8]
cmp word [rbx], 0
jne 0x1400a51e0
mov rax, qword [rax + 0x10]
mov rbx, qword [rax + 0x28]
cmp dx, 9
jb 0x1400a51f3
cmp dx, 0x20
ja 0x1400a51f3
lea rsi, [0x14014f4b8]
lea rcx, [0x14014f4c0]
call fcn.1400dd2e0
mov qword [rsp + 0x30], r15
mov edx, r12d
mov r8, rax
mov rax, r13
mov qword [rsp + 0x28], r14
sub rax, rbp
mov qword [rsp + 0x20], rbx
mov r9, rsi
sar rax, 1
sub edx, eax
jmp 0x1400a54ba
cmp dx, 0x6a
jne 0x1400a52a0
mov rbx, qword [rdi + 0x10]
mov rsi, qword [rbx + 0x28]
cmp word [rsi], 0
jne 0x1400a5248
mov rax, qword [rbx + 0x30]
test rax, rax
je 0x1400a5248
mov rsi, qword [rax + 0x28]
mov rdi, qword [rbx + 8]
cmp word [rdi], 0
jne 0x1400a525a
mov rax, qword [rbx + 0x10]
mov rdi, qword [rax + 0x28]
lea rcx, [0x14014f4e8]
call fcn.1400dd2e0
mov edx, r12d
mov r9, rdi
mov r8, rax
mov rax, r13
mov rcx, r13
sub rax, rbp
sar rax, 1
sub edx, eax
mov rax, qword [rbx + 0x48]
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rsi
call fcn.1400e6100
movsxd rcx, eax
lea rbx, [r13 + rcx*2]
xor r13d, r13d
jmp 0x1400a54d6
cmp dx, 0x73
je 0x1400a52b0
cmp dx, 0x74
jne 0x1400a5347
cmp qword [rdi + 0x18], 0
je 0x1400a5314
mov rcx, qword [rdi + 0x10]
cmp dx, 0x74
movzx r9d, dx
lea rax, [0x14012fb88]
mov edx, r12d
lea rsi, [0x1401295d4]
cmove rsi, rax
mov rax, r13
lea r14, [0x14016a030]
sub rax, rbp
lea r8, str._s__s_s
mov qword [rsp + 0x28], rsi
imul r9, r9, 0x19
mov r9, qword [r9 + r14]
sar rax, 1
sub edx, eax
mov rax, qword [rcx + 8]
mov rcx, r13
mov qword [rsp + 0x20], rax
call fcn.1400e6100
jmp 0x1400a54c2
cmp dx, 0x74
jne 0x1400a5347
mov edx, r12d
mov rax, r13
lea r8, str.Default:
sub rax, rbp
mov rcx, r13
sar rax, 1
sub edx, eax
call fcn.1400e6100
movsxd rcx, eax
lea rbx, [r13 + rcx*2]
xor r13d, r13d
jmp 0x1400a54de
test r15b, r15b
lea r14, [0x14016a030]
lea r8, [0x14014f53c]
cmovne dx, ax
mov rax, r13
mov rcx, r13
movzx r9d, dx
sub rax, rbp
mov edx, r12d
sar rax, 1
sub edx, eax
imul r9, r9, 0x19
mov r9, qword [r9 + r14]
call fcn.1400e6100
movsxd rcx, eax
lea rbx, [r13 + rcx*2]
xor r13d, r13d
mov esi, r13d
cmp byte [rdi + 2], sil
jbe 0x1400a54cd
mov r13, qword [rsp + 0x40]
nop dword [rax + rax]
test r15b, r15b
je 0x1400a53d6
movzx r9d, sil
movzx eax, r13w
mov edx, r12d
xor r9d, eax
mov rax, rbx
lea r8, [0x14014f548]
sub rax, rbp
xor r9d, 0xf0
mov rcx, rbx
sar rax, 1
sub edx, eax
call fcn.1400e6100
jmp 0x1400a541f
mov rdx, qword [rdi + 0x10]
movsxd rcx, esi
shl rcx, 5
cmp byte [rcx + rdx], 0
je 0x1400a53fd
mov rax, qword [rcx + rdx + 8]
cmp word [rax], 0
jne 0x1400a53fd
mov rax, qword [rcx + rdx + 0x10]
mov r9, qword [rax + 0x28]
jmp 0x1400a5402
mov r9, qword [rcx + rdx + 8]
mov edx, r12d
mov rax, rbx
lea r8, [0x14014f550]
sub rax, rbp
mov rcx, rbx
sar rax, 1
sub edx, eax
call fcn.1400e6100
movsxd rcx, eax
movzx eax, byte [rdi + 2]
inc esi
lea rbx, [rbx + rcx*2]
cmp esi, eax
jl 0x1400a53a0
jmp 0x1400a54ca
movzx ecx, byte [rdi + 2]
lea rsi, [0x1401295d4]
cmp cl, 2
jbe 0x1400a5453
mov rax, qword [rdi + 0x10]
mov r15, qword [rax + 0x48]
jmp 0x1400a5456
mov r15, rsi
cmp cl, 1
jbe 0x1400a5463
mov rax, qword [rdi + 0x10]
mov rsi, qword [rax + 0x28]
mov rax, qword [rdi + 0x10]
mov rdi, qword [rax + 8]
cmp word [rdi], 0
jne 0x1400a5479
mov rax, qword [rax + 0x10]
mov rdi, qword [rax + 0x28]
movzx ebx, dx
lea rcx, [0x14014f480]
lea r14, [0x14016a030]
imul rbx, rbx, 0x19
call fcn.1400dd2e0
mov qword [rsp + 0x30], r15
mov r8, rax
mov rax, r13
mov edx, r12d
sub rax, rbp
mov qword [rsp + 0x28], rsi
mov r9, rdi
sar rax, 1
sub edx, eax
mov rax, qword [rbx + r14]
mov qword [rsp + 0x20], rax
mov rcx, r13
call fcn.1400e6100
movsxd rcx, eax
lea rbx, [r13 + rcx*2]
xor r13d, r13d
movzx r14d, byte [rsp + 0xc8]
movzx esi, byte [rsp + 0xb8]
mov eax, dword [rsp + 0xc0]
mov r15, qword [rsp + 0x60]
test eax, eax
je 0x1400a5534
test r14b, r14b
jne 0x1400a5534
pxor xmm0, xmm0
lea r8, str.___0.2f_
mov rcx, rbx
cvtsi2ss xmm0, rax
mov rax, rbx
sub rax, rbp
sar rax, 1
sub r12d, eax
mov edx, r12d
unpcklps xmm0, xmm0
cvtps2pd xmm3, xmm0
divsd xmm3, qword [0x140153230]
movq r9, xmm3
call fcn.1400e6100
movsxd rcx, eax
lea rbx, [rbx + rcx*2]
mov r14, qword [rsp + 0x68]
test sil, sil
je 0x1400a554b
mov eax, SafeArrayGetElemsize
add rbx, 2
mov word [rbx - 2], ax
cmp byte [rsp + 0xb0], 0
mov dword [rbx], 0xa
je 0x1400a5565
mov word [rbp], r13w
mov rax, rbp
jmp 0x1400a5569
lea rax, [rbx + 2]
mov rbx, qword [rsp + 0xa0]
mov r13, qword [rsp + 0x70]
add rsp, 0x78
pop r12
pop rdi
pop rsi
pop rbp
ret