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

Disassembly:
mov rax, rsp
push rbp
push r15
sub rsp, 0xa8
mov qword [rax + 8], rbx
mov r10d, 0xa
mov qword [rax - 0x18], rsi
xor r15b, r15b
mov qword [rax - 0x20], rdi
xor sil, sil
mov qword [rax - 0x28], r12
mov rbx, r8
mov qword [rax - 0x30], r13
mov r12, rcx
xor ecx, ecx
mov qword [rax - 0x38], r14
mov rax, qword [0x140134738]
xor r13b, r13b
mov r14, rdx
mov qword [rsp + 0x48], rax
mov eax, 0xffffffff
mov qword [rsp + 0x38], rcx
lea ebp, [rcx + 1]
mov dword [rsp + 0x40], eax
movzx r9d, r10w
mov qword [0x140134738], rcx
mov word [rsp + 0x30], r10w
mov byte [0x1401344e7], cl
mov byte [0x1401344e6], cl
mov byte [0x1401344e3], cl
mov dword [0x140134734], ecx
mov byte [rsp + 0xd0], cl
mov byte [rsp + 0x34], sil
mov byte [rsp + 0x33], cl
mov byte [rsp + 0xd8], r13b
mov byte [rsp + 0x32], cl
cmp word [r8], cx
je 0x140053f20
lea rdi, sym.MZ_kiv9nMDWjqg_I7rrTcpI88_u4Z_bB_FPuaQ9q_
movzx ecx, word [rbx]
call fcn.1400d0cb8
movzx eax, ax
add eax, 0xffffffbd
cmp eax, 0x19
ja case.0x140053d3d.76
cdqe
movzx eax, byte [rdi + rax + 0x54720]
mov ecx, dword [rdi + rax*4 + 0x546f8]
add rcx, rdi
jmp rcx
movzx edi, word [rbx + 2]
lea rsi, [rbx + 2]
test edi, 0xffffff80
jne 0x140053d62
mov edx, 2
mov ecx, edi
call fcn.1400cb124
test eax, eax
je 0x140053d62
and edi, 0xffffffdf
movzx r9d, word [rsp + 0x30]
cmp di, 0x4c
lea rdi, sym.MZ_kiv9nMDWjqg_I7rrTcpI88_u4Z_bB_FPuaQ9q_
jne 0x140053d84
mov rbx, rsi
mov byte [0x1401344e7], 2
jmp 0x140053f09
mov byte [0x1401344e7], bpl
jmp 0x140053f09
cmp word [rbx + 2], 0
lea rax, [rbx + 2]
je case.0x140053d3d.76
mov rbx, rax
movzx eax, word [rax]
test ax, ax
je case.0x140053d3d.76
movzx r9d, ax
mov word [rsp + 0x30], ax
jmp 0x140053f09
movzx eax, word [rbx + 2]
add rbx, 2
cmp ax, 0x20
je case.0x140053d3d.69
cmp ax, 9
je case.0x140053d3d.69
mov rdi, rbx
movzx edx, ax
test ax, ax
je 0x140053e0f
nop dword [rax + rax]
lea rcx, [0x14010ca60]
mov eax, SafeArrayAllocDescriptor
nop dword [rax]
cmp dx, ax
je 0x140053e23
movzx eax, word [rcx + 2]
add rcx, 2
test ax, ax
jne 0x140053df0
movzx edx, word [rdi + 2]
add rdi, 2
test dx, dx
jne 0x140053de0
or rax, 0xffffffffffffffff
cmp word [rbx + rax*2 + 2], 0
lea rax, [rax + 1]
jne 0x140053e13
lea rdi, [rbx + rax*2]
mov r8, rdi
lea rcx, [0x1401395c0]
sub r8, rbx
xor r9d, r9d
sar r8, 1
mov rdx, rbx
call fcn.14002e970
mov qword [0x140134738], rax
mov rcx, rax
test rax, rax
je 0x14005467f
cmp byte [rax + 0x79], 0
jne 0x14005467f
mov eax, dword [rax + 0x20]
sub eax, 2
cmp eax, ebp
ja 0x14005467f
mov rax, qword [rcx + 0x18]
cmp word [rax + 8], 0
jne 0x14005467f
cmp word [rax + 0x20], 0
jne 0x14005467f
lea rbx, [rdi - 2]
lea rdi, sym.MZ_kiv9nMDWjqg_I7rrTcpI88_u4Z_bB_FPuaQ9q_
jmp case.0x140053d3d.76
mov byte [0x1401344e6], bpl
jmp case.0x140053d3d.76
lea rcx, [rbx + 2]
call fcn.1400cc148
cmp eax, ebp
cmovl eax, ebp
dec eax
mov dword [0x140134734], eax
jmp case.0x140053d3d.76
mov r8d, 6
lea rdx, str.Random
mov rcx, rbx
call fcn.1400cab68
movzx r9d, word [rsp + 0x30]
test eax, eax
jne 0x140053ee2
movzx r13d, bpl
mov byte [rsp + 0xd8], bpl
add rbx, 0xa
jmp 0x140053f09
mov byte [0x1401344e3], bpl
jmp 0x140053f09
xor esi, esi
mov byte [rsp + 0x32], bpl
mov dword [rsp + 0x40], esi
jmp case.0x140053d3d.76
movzx r15d, bpl
jmp case.0x140053d3d.76
mov byte [rsp + 0x33], bpl
movzx r9d, word [rsp + 0x30]
add rbx, 2
cmp word [rbx], 0
jne 0x140053d12
xor sil, sil
mov r10d, 0xa
movzx r8d, word [r14]
test r8w, r8w
je 0x14005467f
mov rbp, qword [0x1401386c0]
mov qword [rsp + 0x58], rbp
movzx eax, byte [rbp + 0x23]
test al, al
jne 0x140053f4a
mov rax, qword [rbp + 0x10]
movzx eax, byte [rax + 0x23]
cmp al, 2
ja 0x14005467a
mov ebx, 1
mov rdx, r14
nop word [rax + rax]
add rdx, 2
lea rax, [rbx + 1]
movzx ecx, r8w
cmp cx, r9w
movzx r8d, word [rdx]
cmovne rax, rbx
mov rbx, rax
test r8w, r8w
jne 0x140053f60
mov rdi, rdx
sub rdi, r14
sar rdi, 1
test r15b, r15b
jne 0x140053fa8
cmp rdx, r14
jbe 0x140053fa8
cmp word [rdx - 2], r9w
jne 0x140053fa8
mov byte [rsp + 0xd0], 1
dec rbx
jmp 0x140053fdb
cmp r9w, 0xa
jne 0x140053fdb
mov edx, r10d
mov rcx, r14
call fcn.1400c6908
test rax, rax
je 0x140053fdb
cmp rax, r14
jbe 0x140053fdb
cmp word [rax - 2], 0xd
jne 0x140053fdb
mov sil, 1
mov byte [rsp + 0x34], sil
mov byte [rsp + 0xd0], sil
cmp rbx, 1
jne 0x140053ffd
xor r9d, r9d
mov byte [rsp + 0x20], bl
mov r8, rdi
mov rdx, r14
mov rcx, rbp
call fcn.1400ab090
mov ebp, eax
jmp 0x14005467f
cmp qword [0x140134738], 0
jne 0x14005400c
test sil, sil
je 0x14005407c
lea rcx, [rdi*2 + 6]
call fcn.1400c86f8
mov qword [rsp + 0x38], rax
mov r15, rax
test rax, rax
jne 0x140054046
lea r9, [0x140117ad8]
xor r8d, r8d
lea rdx, str.Out_of_memory.
mov rcx, r12
call fcn.140040d50
mov ebp, eax
jmp 0x140054684
lea r8, [rdi*2 + 2]
mov rdx, r14
mov rcx, r15
call fcn.1400c64d0
mov r14, r15
test sil, sil
je 0x14005407c
mov eax, dword [0x140115c20]
mov dword [r15 + rdi*2], eax
movzx eax, word [0x140115c24]
mov word [r15 + rdi*2 + 4], ax
add rdi, 2
xor esi, esi
lea rcx, [rbx + 1]
test r13b, r13b
setne sil
inc rsi
shl rsi, 3
imul rcx, rsi
mov qword [rsp + 0x50], rsi
call fcn.1400c86f8
mov qword [rsp + 0x60], rax
mov r15, rax
test rax, rax
jne 0x1400540cb
lea r9, [0x140117ad8]
xor r8d, r8d
lea rdx, str.Out_of_memory.
mov rcx, r12
call fcn.140040d50
mov ebp, eax
jmp 0x14005467f
mov r8, qword [0x14013ae70]
xor ecx, ecx
movzx r12d, byte [rsp + 0xd8]
mov rbx, r15
mov qword [rax], r14
mov r13d, ecx
cmp word [r14], cx
je 0x14005417b
movzx eax, word [rsp + 0x30]
cmp word [r14], ax
jne 0x14005416c
inc r13
mov word [r14], cx
test r12b, r12b
je 0x14005415d
sub dword [0x140131494], 1
jne 0x14005411c
call fcn.14001f0d0
mov r8, qword [0x14013ae70]
mov edx, dword [r8]
mov eax, edx
shr eax, 0xb
add r8, 4
xor edx, eax
mov qword [0x14013ae70], r8
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 rcx, 0x12
mov eax, edx
xor rcx, rax
shr rcx, 1
mov qword [rbx + 8], rcx
xor ecx, ecx
lea rax, [r14 + 2]
add rbx, rsi
mov qword [rbx], rax
movzx eax, word [rsp + 0x30]
add r14, 2
cmp word [r14], 0
jne 0x1400540f5
cmp byte [rsp + 0xd0], 0
jne 0x1400541e1
inc r13
test r12b, r12b
je 0x1400541e1
sub dword [0x140131494], 1
jne 0x1400541a2
call fcn.14001f0d0
mov r8, qword [0x14013ae70]
mov edx, dword [r8]
mov eax, edx
shr eax, 0xb
add r8, 4
xor edx, eax
mov qword [0x14013ae70], r8
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 rcx, 0x12
mov eax, edx
xor rcx, rax
shr rcx, 1
mov qword [rbx + 8], rcx
cmp qword [0x140134738], 0
je 0x1400541f4
lea r9, [0x140053a20]
jmp 0x140054219
test r12b, r12b
je 0x140054202
lea r9, [0x140053a10]
jmp 0x140054219
cmp byte [rsp + 0x33], 0
lea r9, [0x1400537e0]
lea rax, [0x140053960]
cmovne r9, rax
mov r8, rsi
mov rdx, r13
mov rcx, r15
call fcn.1400cadf0
xor r9d, r9d
mov byte [rsp + 0x20], 1
mov r8, rdi
xor edx, edx
mov rcx, rbp
call fcn.1400ab090
cmp eax, 1
je 0x14005424a
xor eax, eax
mov ebp, eax
jmp 0x14005467f
xor eax, eax
lea rdi, [r13 - 1]
mov esi, eax
mov dword [rsp + 0xd8], eax
mov r14, r15
cmp byte [rbp + 0x23], al
jne 0x140054267
mov rbx, qword [rbp + 0x10]
jmp 0x14005426a
mov rbx, rbp
test byte [rbx + 0x21], 8
je 0x140054278
mov rcx, rbx
call fcn.140001420
movzx eax, byte [rbx + 0x23]
lea r15, [0x1400ee140]
lea r12, [0x140139518]
cmp al, 1
jne 0x1400542a2
test byte [rbx + 0x21], 4
je 0x14005429c
mov rdx, rbx
call fcn.140041b00
mov rbx, qword [rbx + 8]
jmp 0x1400542fa
cmp al, 2
jne 0x1400542f7
mov rbx, qword [0x14013a238]
test rbx, rbx
jne 0x1400542fa
lea ecx, [rbx + 0xd]
call qword [sym.imp.USER32.dll_IsClipboardFormatAvailable]
test eax, eax
jne 0x1400542d7
lea ecx, [rbx + 0xf]
call qword [sym.imp.USER32.dll_IsClipboardFormatAvailable]
test eax, eax
lea rbx, [0x140117ad8]
cmovne rbx, r15
jmp 0x1400542fa
xor edx, edx
call fcn.140004f70
mov ecx, 0xffffffff
lea rbx, [0x140117ad8]
cmp rax, rcx
cmovne rbx, qword [0x14013a230]
jmp 0x1400542fa
mov rbx, r12
xor r8d, r8d
mov r15d, r8d
test r13, r13
je 0x14005441d
movzx ebp, word [rsp + 0x30]
mov r12d, esi
movaps xmmword [rsp + 0x70], xmm6
nop word [rax + rax]
cmp byte [rsp + 0x32], 0
je 0x1400543b6
test rsi, rsi
je 0x1400543b6
cmp byte [0x1401344e6], 0
je 0x14005445b
cmp dword [0x140134734], 0
jne 0x14005445b
mov rdi, qword [r14]
mov rcx, rdi
call fcn.14000f010
mov rcx, rdi
test al, al
je 0x140054375
xor edx, edx
lea r8d, [rdx + 0x10]
call fcn.1400cc568
xorps xmm6, xmm6
cvtsi2sd xmm6, rax
jmp 0x14005437d
call fcn.1400d0710
movaps xmm6, xmm0
mov rcx, rsi
call fcn.14000f010
mov rcx, rsi
test al, al
je 0x1400543a1
xor edx, edx
lea r8d, [rdx + 0x10]
call fcn.1400cc568
xorps xmm0, xmm0
cvtsi2sd xmm0, rax
jmp 0x1400543a6
call fcn.1400d0710
ucomisd xmm6, xmm0
jp 0x1400543b2
je 0x1400544bb
lea rdi, [r13 - 1]
mov rax, qword [r14]
movzx ecx, word [rax]
test cx, cx
je 0x1400543d4
mov word [rbx], cx
lea rax, [rax + 2]
movzx ecx, word [rax]
add rbx, 2
test cx, cx
jne 0x1400543c1
cmp r15, rdi
jb 0x1400543e3
cmp byte [rsp + 0xd0], 0
je 0x1400543ea
mov word [rbx], bp
add rbx, 2
mov rsi, qword [r14]
add r14, qword [rsp + 0x50]
inc r15
mov r8d, 0
cmp r15, r13
jb 0x140054320
mov rbp, qword [rsp + 0x58]
movaps xmm6, xmmword [rsp + 0x70]
mov dword [rsp + 0xd8], r12d
lea r12, [0x140139518]
mov rcx, qword [rsp + 0x60]
call fcn.1400cc1a0
xor eax, eax
lea rdi, [0x14013aea8]
cmp byte [rsp + 0x34], al
je 0x140054545
cmp word [rbx - 4], 0xd
jne 0x14005450c
mov word [rbx - 4], ax
cmp byte [rbp + 0x23], al
jne 0x1400544e2
mov rbx, qword [rbp + 0x10]
jmp 0x1400544e5
cmp byte [0x1401344e7], 0
mov rdx, rsi
jne 0x140054471
mov rcx, qword [r14]
call fcn.1400c8580
jmp 0x1400544ac
cmp byte [0x1401344e7], 2
jne 0x140054485
mov rcx, qword [r14]
call qword [sym.imp.KERNEL32.dll_lstrcmpiW]
jmp 0x1400544ac
mov rax, qword [r14]
sub rdx, rax
nop dword [rax + rax]
movzx ecx, word [rax]
cmp cx, word [rax + rdx]
jne 0x1400544a7
add rax, 2
test cx, cx
jne 0x140054490
mov eax, r8d
jmp 0x1400544ac
sbb eax, eax
or eax, 1
test eax, eax
setne al
test al, al
jne 0x1400543b6
jmp 0x1400544bf
lea rdi, [r13 - 1]
inc r12d
cmp r15, rdi
jne 0x1400543ed
cmp byte [rsp + 0xd0], 0
jne 0x1400543ed
sub rbx, 2
jmp 0x1400543ed
mov rbx, rbp
cmp byte [rbx + 0x23], 1
jne 0x140054503
test byte [rbx + 0x21], 8
je 0x1400544f9
mov rcx, rbx
call fcn.140001420
add rbx, 0x10
add qword [rbx], 0xfffffffffffffffc
jmp 0x140054548
mov rbx, rdi
add qword [rbx], 0xfffffffffffffffc
jmp 0x140054548
mov word [rbx - 2], ax
cmp byte [rbp + 0x23], al
jne 0x14005451b
mov rbx, qword [rbp + 0x10]
jmp 0x14005451e
mov rbx, rbp
cmp byte [rbx + 0x23], 1
jne 0x14005453c
test byte [rbx + 0x21], 8
je 0x140054532
mov rcx, rbx
call fcn.140001420
add rbx, 0x10
add qword [rbx], 0xfffffffffffffffe
jmp 0x140054548
mov rbx, rdi
add qword [rbx], 0xfffffffffffffffe
jmp 0x140054548
mov word [rbx], ax
cmp byte [rsp + 0x32], 0
je 0x14005464c
mov esi, dword [rsp + 0xd8]
test esi, esi
je 0x14005464c
cmp byte [rbp + 0x23], 0
jne 0x14005456e
mov rbx, qword [rbp + 0x10]
jmp 0x140054571
mov rbx, rbp
test byte [rbx + 0x21], 8
je 0x14005457f
mov rcx, rbx
call fcn.140001420
movzx eax, byte [rbx + 0x23]
cmp al, 1
jne 0x14005459b
test byte [rbx + 0x21], 4
je 0x140054595
mov rdx, rbx
call fcn.140041b00
mov r12, qword [rbx + 8]
jmp 0x1400545f7
cmp al, 2
jne 0x1400545f7
mov r12, qword [0x14013a238]
test r12, r12
jne 0x1400545f7
lea ecx, [r12 + 0xd]
call qword [sym.imp.USER32.dll_IsClipboardFormatAvailable]
test eax, eax
jne 0x1400545d9
lea ecx, [rax + 0xf]
call qword [sym.imp.USER32.dll_IsClipboardFormatAvailable]
test eax, eax
lea r12, [0x140117ad8]
lea rax, [0x1400ee140]
cmovne r12, rax
jmp 0x1400545f7
xor edx, edx
call fcn.140004f70
mov ecx, 0xffffffff
lea r12, [0x140117ad8]
cmp rax, rcx
cmovne r12, qword [0x14013a230]
or rax, 0xffffffffffffffff
nop dword [rax + rax]
inc rax
cmp word [r12 + rax*2], 0
jne 0x140054600
cmp byte [rbp + 0x23], 0
mov qword [rsp + 0xd0], rax
jne 0x14005461f
mov rbx, qword [rbp + 0x10]
jmp 0x140054622
mov rbx, rbp
cmp byte [rbx + 0x23], 1
jne 0x140054642
test byte [rbx + 0x21], 8
je 0x14005463e
mov rcx, rbx
call fcn.140001420
mov rax, qword [rsp + 0xd0]
lea rdi, [rbx + 0x10]
add rax, rax
mov dword [rsp + 0x40], esi
mov qword [rdi], rax
cmp byte [rbp + 0x23], 0
jne 0x140054656
mov rbp, qword [rbp + 0x10]
cmp byte [rbp + 0x23], 2
jne 0x140054676
cmp qword [0x14013a238], 0
je 0x140054676
lea rcx, [0x14013a220]
call fcn.140005340
mov ebp, eax
jmp 0x14005467f
and byte [rbp + 0x21], 0x86
mov ebp, 1
mov r15, qword [rsp + 0x38]
mov eax, dword [rsp + 0x40]
mov ecx, 0xffffffff
mov r14, qword [rsp + 0x80]
mov r13, qword [rsp + 0x88]
mov r12, qword [rsp + 0x90]
mov rdi, qword [rsp + 0x98]
mov rsi, qword [rsp + 0xa0]
mov rbx, qword [rsp + 0xc0]
cmp eax, ecx
je 0x1400546d2
mov rcx, qword [0x140134400]
mov edx, eax
mov r8b, reloc.OLEAUT32.dll_SafeArrayGetElement
call fcn.140001380
test r15, r15
je 0x1400546df
mov rcx, r15
call fcn.1400cc1a0
mov rax, qword [rsp + 0x48]
mov qword [0x140134738], rax
mov eax, ebp
add rsp, 0xa8
pop r15
pop rbp
ret