Function at 0x140015dc0
Capabilities:
Generate random numbers via rtlgenrandom
Generate random numbers via winapi
Get thread local storage value
Set thread local storage value

Disassembly:
push rsi
push rdi
push rbx
sub rsp, 0xd0
mov esi, dword [0x140069018]
test esi, esi
je 0x14001602d
dec esi
mov ecx, esi
call sub.kernel32.dll_TlsGetValue
cmp rax, 1
ja 0x140016022
je 0x140015e86
xorps xmm0, xmm0
movaps xmmword [rsp + 0x30], xmm0
movaps xmmword [rsp + 0x20], xmm0
lea rdx, [rsp + 0x20]
xor ecx, ecx
mov r8d, 0x20
mov r9d, 2
call sub.bcrypt.dll_BCryptGenRandom
cmp eax, 0xc0000000
jb 0x140015e39
mov edi, eax
lea rbx, [rsp + 0x20]
mov rcx, rbx
mov edx, 0x20
call sub.ADVAPI32.dll_SystemFunction036
test al, al
je 0x14001607b
movaps xmm0, xmmword [rsp + 0x20]
movaps xmm1, xmmword [rsp + 0x30]
movaps xmmword [rsp + 0x90], xmm1
movaps xmmword [rsp + 0x80], xmm0
mov rax, qword [0x1400810f8]
test rax, rax
je 0x14001604e
and eax, 0x4000
xor ecx, ecx
lea rdi, [rsp + 0x50]
or rax, rcx
je 0x140015e8d
lea rdx, [rsp + 0x80]
mov rcx, rdi
call fcn.140018430
jmp 0x140015eaf
xor eax, eax
jmp 0x140016022
movaps xmm0, xmmword [rsp + 0x80]
movaps xmm1, xmmword [rsp + 0x90]
movaps xmmword [rsp + 0x50], xmm0
movaps xmmword [rsp + 0x60], xmm1
xorps xmm0, xmm0
movaps xmmword [rsp + 0x70], xmm0
movaps xmm0, xmmword [rdi]
movaps xmm1, xmmword [rdi + 0x10]
movaps xmm2, xmmword [rdi + 0x20]
movups xmmword [rsp + 0x48], xmm0
movups xmmword [rsp + 0x58], xmm1
movups xmmword [rsp + 0x68], xmm2
movzx eax, byte [0x140081100]
mov edx, 0x170
xor ecx, ecx
call fcn.140057e30
test rax, rax
je 0x140016058
mov rdi, rax
mov qword [rax], 1
mov qword [rax + 8], 1
xorps xmm0, xmm0
movaps xmmword [rax + 0x10], xmm0
movaps xmmword [rax + 0x20], xmm0
movaps xmmword [rax + 0x30], xmm0
movaps xmmword [rax + 0x40], xmm0
movaps xmmword [rax + 0x50], xmm0
movaps xmmword [rax + 0x60], xmm0
movaps xmmword [rax + 0x70], xmm0
movaps xmmword [rax + 0x80], xmm0
movaps xmmword [rax + 0x90], xmm0
movaps xmmword [rax + 0xa0], xmm0
movaps xmmword [rax + 0xb0], xmm0
movaps xmmword [rax + 0xc0], xmm0
movaps xmmword [rax + 0xd0], xmm0
movaps xmmword [rax + 0xe0], xmm0
movaps xmmword [rax + 0xf0], xmm0
movaps xmmword [rax + 0x100], xmm0
mov qword [rax + 0x110], 0x40
movups xmm0, xmmword [rsp + 0x40]
movups xmm1, xmmword [rsp + 0x50]
movups xmm2, xmmword [rsp + 0x60]
movups xmmword [rax + 0x118], xmm0
movups xmmword [rax + 0x128], xmm1
movups xmmword [rax + 0x138], xmm2
mov rax, qword [rsp + 0x70]
mov qword [rdi + 0x148], rax
mov qword [rdi + 0x150], 0x10000
mov qword [rdi + 0x158], 0x10000
mov qword [rdi + 0x160], 0
movzx eax, byte [0x140081100]
mov edx, 0x10
xor ecx, ecx
call fcn.140057e30
test rax, rax
je 0x140016067
mov qword [rax], rdi
mov dword [rax + 8], esi
mov ecx, esi
mov rbx, rax
call sub.kernel32.dll_TlsGetValue
mov rdi, rax
mov ecx, esi
mov rsi, rbx
mov rdx, rbx
call sub.kernel32.dll_TlsSetValue
test rdi, rdi
je 0x14001601f
mov r8, qword [rdi]
dec qword [r8]
jne 0x14001600e
dec qword [r8 + 8]
jne 0x14001600e
mov rcx, qword [0x1400810e8]
xor edx, edx
call fcn.1400615a4
mov rcx, qword [0x1400810e8]
xor edx, edx
mov r8, rdi
call fcn.1400615a4
mov rax, rsi
add rsp, 0xd0
pop rbx
pop rdi
pop rsi
ret
lea rcx, section..data
call fcn.140025150
mov esi, eax
mov ecx, esi
call sub.kernel32.dll_TlsGetValue
cmp rax, 1
jbe 0x140015deb
jmp 0x140016022
call fcn.14005b4c0
jmp 0x140015e63
mov ecx, 0x10
mov edx, 0x170
call fcn.14000e310
mov ecx, 8
mov edx, 0x10
call fcn.14000e310
jmp 0x140016117
movzx eax, byte [0x140081100]
mov edx, 4
xor ecx, ecx
call fcn.140057e30
test rax, rax
jne 0x1400160a2
mov ecx, 4
mov edx, 4
call fcn.14000e310
and edi, 0x7fffffff
mov dword [rax], edi
mov qword [rsp + 0x20], rax
lea rax, [0x1400720b0]
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x80], rbx
lea rax, [0x1400184d0]
mov qword [rsp + 0x88], rax
lea rax, [0x140071ee0]
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x48], 1
mov qword [rsp + 0x60], 0
lea rax, [rsp + 0x80]
mov qword [rsp + 0x50], rax
mov qword [rsp + 0x58], 1
lea rdx, str._home_ghost_.cargo_registry_src_index.crates.io_6f17d22bba15001f_rand_0.8.5_src_rngs_thread.rs
lea rcx, [rsp + 0x40]
call fcn.14000eca0
ud2