Function at 0x100667b0
Capabilities:
Create pipe
Generate random numbers via winapi

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x118
movaps xmmword [rsp + 0x100], xmm6
mov qword [rsp + 0xb8], rcx
mov byte [rsp + 0x47], dl
movzx eax, dl
mov ecx, 0x40080002
sub ecx, eax
mov dword [rsp + 0xc0], ecx
xor eax, eax
mov qword [rsp + 0xf0], rax
mov ebx, 8
mov dil, 1
xorps xmm6, xmm6
nop dword [rax]
call fcn.100d8cec
mov dword [rsp + 0xcc], eax
jmp 0x1006681f
mov rax, qword [rsp + 0x80]
xchg qword [0x105a7188], rax
mov rax, qword [0x105a7188]
test rax, rax
jne 0x10066860
movaps xmmword [rsp + 0x80], xmm6
xor ecx, ecx
lea rdx, [rsp + 0x80]
mov r8d, 0x10
mov r9d, 2
call sub.bcrypt.dll_BCryptGenRandom
test eax, eax
jns 0x10066810
call dbg.fallback_rng
jmp 0x10066818
mov eax, 1
lock xadd qword [0x105a7188], rax
mov qword [rsp + 0xf8], rax
lea rax, [rsp + 0xcc]
mov qword [rsp + 0xd0], rax
lea rax, [sym.core::fmt::num::imp::__impl_core::fmt::Display_for_u32_::fmt::h1c1d4c228b34282f]
mov qword [rsp + 0xd8], rax
lea rax, [rsp + 0xf8]
mov qword [rsp + 0xe0], rax
lea rax, [sym.core::fmt::num::imp::__impl_core::fmt::Display_for_u64_::fmt::hf56286d368b69b7b]
mov qword [rsp + 0xe8], rax
mov qword [rsp + 0x80], 0
lea rax, str..pipe__rust_anonymous_pipe1__.
mov qword [rsp + 0x90], rax
mov qword [rsp + 0x98], 2
lea rax, [rsp + 0xd0]
mov qword [rsp + 0xa0], rax
mov qword [rsp + 0xa8], 2
lea rcx, [rsp + 0x48]
lea rdx, [rsp + 0x80]
call dbg.format_inner
movups xmm0, xmmword [rsp + 0x48]
movaps xmmword [rsp + 0x80], xmm0
mov rax, qword [rsp + 0x58]
mov qword [rsp + 0x90], rax
test dil, 1
jne 0x10066943
mov rdx, qword [rsp + 0x60]
test rdx, rdx
je 0x10066943
mov rcx, qword [rsp + 0x68]
mov r8d, 1
call sym.__rust_dealloc
mov rax, qword [rsp + 0x90]
mov qword [rsp + 0x70], rax
movaps xmm0, xmmword [rsp + 0x80]
movaps xmmword [rsp + 0x60], xmm0
mov rsi, qword [rsp + 0x68]
lea r12, [rsi + rax]
test rax, rax
mov dword [rsp + 0xc8], ebx
je 0x10066980
movzx eax, byte [rsi]
test al, al
js 0x100669a0
inc rsi
mov edi, eax
jmp 0x100669f2
xor r13d, r13d
xor edi, edi
xor r15d, r15d
xor esi, esi
xor r14d, r14d
jmp 0x10066a1f
mov edi, eax
and edi, 0x1f
movzx edx, byte [rsi + 1]
and edx, 0x3f
cmp al, 0xdf
jbe 0x100669e9
movzx ecx, byte [rsi + 2]
shl edx, 6
and ecx, 0x3f
or ecx, edx
cmp al, 0xf0
jb 0x10066d51
movzx eax, byte [rsi + 3]
add rsi, 4
and edi, 7
shl edi, 0x12
shl ecx, 6
and eax, 0x3f
or eax, ecx
or edi, eax
cmp edi, 0xffff
jbe 0x100669f2
jmp 0x10066d66
add rsi, 2
shl edi, 6
or edi, edx
xor r13d, r13d
mov r14, r12
sub r14, rsi
add r14, 3
mov rax, 0xffffffffffffffff
cmovb r14, rax
shr r14, 2
cmp r13w, 1
sbb r14, 0xffffffffffffffff
inc r14
mov r15w, 1
cmp r14, 4
mov eax, 3
cmovb r14, rax
movabs rax, 0x3ffffffffffffffe
cmp r14, rax
ja 0x10066f2c
inc r14
lea rbx, [r14 + r14]
mov edx, 2
mov rcx, rbx
call sym.__rust_alloc
test rax, rax
je 0x10066f33
mov rcx, qword [rsp + 0xf0]
inc ecx
mov dword [rsp + 0xc4], ecx
mov word [rax], di
mov qword [rsp + 0x48], r14
mov qword [rsp + 0x50], rax
mov qword [rsp + 0x58], 1
mov ebx, 1
jmp 0x10066a9a
mov r13d, ecx
mov word [rax + rbx*2], di
inc rbx
test rsi, rsi
je 0x10066b00
test r13w, r13w
je 0x10066ae0
xor ecx, ecx
mov edi, r13d
cmp rbx, r14
jne 0x10066a90
mov rdx, r12
sub rdx, rsi
add rdx, 3
mov rax, 0xffffffffffffffff
cmovb rdx, rax
shr rdx, 2
cmp cx, 1
sbb rdx, 0xffffffffffffffff
cmp r15w, 1
sbb rdx, 0xffffffffffffffff
mov r13d, ecx
jmp 0x10066b2b
cmp rsi, r12
je 0x10066b00
movzx edx, byte [rsi]
test dl, dl
js 0x10066c01
inc rsi
mov edi, edx
xor ecx, ecx
jmp 0x10066aaa
mov r14, qword [rsp + 0x48]
cmp r15w, 1
jne 0x10066ca0
xor edi, edi
mov r15d, 0
mov esi, 0
mov edx, 0
cmp rbx, r14
jne 0x10066a93
inc rdx
add rdx, rbx
jb 0x10066f11
mov rbp, qword [rsp + 0x48]
mov rax, rbp
add rax, rbp
mov r14, rax
cmp rax, rdx
ja 0x10066b4d
mov r14, rdx
cmp r14, 5
jae 0x10066b59
mov r14d, 4
movabs rcx, 0x3ffffffffffffffe
inc rcx
xor r8d, r8d
cmp r14, rcx
setbe r8b
lea rdx, [r14 + r14]
add r8, r8
test rbp, rbp
je 0x10066b98
mov rcx, qword [rsp + 0x50]
mov qword [rsp + 0x80], rcx
mov qword [rsp + 0x88], rax
mov eax, 2
jmp 0x10066b9a
xor eax, eax
mov qword [rsp + 0x90], rax
lea rcx, [rsp + 0xd0]
lea r9, [rsp + 0x80]
call sym.alloc::raw_vec::finish_grow::hbbe29b1c30fde643
cmp qword [rsp + 0xd0], 0
mov rax, qword [rsp + 0xd8]
je 0x10066bf2
mov rdx, qword [rsp + 0xe0]
movabs rcx, 0x8000000000000001
cmp rdx, rcx
jne 0x10066f0c
mov rax, qword [rsp + 0x50]
mov r14, rbp
jmp 0x10066a93
mov qword [rsp + 0x50], rax
mov qword [rsp + 0x48], r14
jmp 0x10066a93
mov edi, edx
and edi, 0x1f
movzx ebp, byte [rsi + 1]
and ebp, 0x3f
cmp dl, 0xdf
jbe 0x10066c6b
movzx ecx, byte [rsi + 2]
shl ebp, 6
and ecx, 0x3f
or ecx, ebp
cmp dl, 0xf0
jb 0x10066c7b
movzx edx, byte [rsi + 3]
add rsi, 4
and edi, 7
shl edi, 0x12
shl ecx, 6
and edx, 0x3f
or edx, ecx
or edx, edi
mov edi, edx
cmp edi, 0xffff
jbe 0x10066c8e
add edi, 0xffff0000
mov edx, edi
shr edx, 0xa
or edx, 0xd800
and edi, 0x3ff
or edi, 0xdc00
mov ecx, edi
mov edi, edx
jmp 0x10066aaa
add rsi, 2
shl edi, 6
or edi, ebp
xor ecx, ecx
jmp 0x10066aaa
add rsi, 3
shl edi, 0xc
or ecx, edi
mov edi, ecx
cmp edi, 0xffff
ja 0x10066c45
xor ecx, ecx
jmp 0x10066aaa
mov r15, qword [rsp + 0x50]
mov qword [rsp + 0x38], 0
mov dword [rsp + 0x30], 0
mov dword [rsp + 0x28], 0x10000
mov dword [rsp + 0x20], 0x10000
mov rcx, r15
mov edx, dword [rsp + 0xc0]
mov ebx, dword [rsp + 0xc8]
mov r8d, ebx
mov r9d, 1
call sub.KERNEL32.dll_CreateNamedPipeW
mov rdi, rax
cmp rax, 0xffffffffffffffff
jne 0x10066e04
call fcn.100d8c94
mov ecx, dword [rsp + 0xc4]
cmp ecx, 0xa
jge 0x10066d8c
cmp eax, 5
jne 0x10066d20
mov eax, ecx
mov qword [rsp + 0xf0], rax
jmp 0x10066d2b
test ebx, ebx
je 0x10066d8c
xor ebx, ebx
cmp eax, 0x57
jne 0x10066d8c
xor edi, edi
test r14, r14
je 0x10066800
add r14, r14
mov r8d, 2
mov rcx, r15
mov rdx, r14
call sym.__rust_dealloc
xor edi, edi
jmp 0x10066800
add rsi, 3
shl edi, 0xc
or edi, ecx
cmp edi, 0xffff
jbe 0x100669f2
add edi, 0xffff0000
mov eax, edi
shr eax, 0xa
or eax, 0xd800
and edi, 0x3ff
or edi, 0xdc00
mov r13d, edi
mov edi, eax
jmp 0x100669f5
shl rax, 0x20
or rax, 2
mov rcx, qword [rsp + 0xb8]
mov qword [rcx + 8], rax
mov qword [rcx], 1
test r14, r14
je 0x10066dc0
add r14, r14
mov r8d, 2
mov rcx, r15
mov rdx, r14
call sym.__rust_dealloc
mov rdx, qword [rsp + 0x60]
test rdx, rdx
je 0x10066dda
mov rcx, qword [rsp + 0x68]
mov r8d, 1
call sym.__rust_dealloc
cmp rdi, 0xffffffffffffffff
je 0x10066de8
mov rcx, rdi
call fcn.100d8de4
movaps xmm6, xmmword [rsp + 0x100]
add rsp, 0x118
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
test r14, r14
je 0x10066e1d
add r14, r14
mov r8d, 2
mov rcx, r15
mov rdx, r14
call sym.__rust_dealloc
mov dword [rsp + 0x88], 0
mov dword [rsp + 0xa0], 0
mov word [rsp + 0xa4], 0
movzx eax, byte [rsp + 0x47]
mov byte [rsp + 0xa1], al
xor al, 1
mov byte [rsp + 0xa0], al
xorps xmm0, xmm0
movups xmmword [rsp + 0x90], xmm0
mov dword [rsp + 0xd0], 0x18
mov qword [rsp + 0xd8], 0
mov dword [rsp + 0xe0], 1
lea rax, [rsp + 0xd0]
mov qword [rsp + 0x80], rax
mov rsi, qword [rsp + 0x68]
mov rdx, qword [rsp + 0x70]
lea r8, [rsp + 0x80]
mov rcx, rsi
call dbg.open
test rax, rax
je 0x10066ed4
mov rax, qword [rsp + 0xb8]
mov qword [rax + 8], rdx
mov qword [rax], 1
mov rdx, qword [rsp + 0x60]
test rdx, rdx
jne 0x10066dca
jmp 0x10066dda
mov rax, qword [rsp + 0xb8]
mov qword [rax + 8], rdi
mov qword [rax + 0x10], rdx
mov qword [rax], 0
mov rdx, qword [rsp + 0x60]
test rdx, rdx
je 0x10066de8
mov r8d, 1
mov rcx, rsi
call sym.__rust_dealloc
jmp 0x10066de8
test rdx, rdx
jne 0x10066f1d
mov qword [rsp + 0x58], rbx
call dbg.capacity_overflow
jmp 0x10066f40
mov qword [rsp + 0x58], rbx
mov rcx, rax
call dbg.handle_alloc_error
jmp 0x10066f40
call dbg.capacity_overflow
jmp 0x10066f40
mov edx, 2
mov rcx, rbx
call dbg.handle_alloc_error
ud2