Function at 0x5487e0
Capabilities:
Set console window title

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x9c
movzx eax, byte [0x5da16c]
mov eax, dword [0x5da100]
call 0x5487fd
pop esi
test eax, eax
jne 0x548814
call sub.kernel32.dll_GetProcessHeap
test eax, eax
je 0x549a58
mov dword [0x5da100], eax
push 7
push 0
push eax
call sub.kernel32.dll_HeapAlloc
test eax, eax
je 0x549a58
mov dword [eax + 3], 0x68746170
mov dword [ebp - 0x54], eax
mov dword [eax], 0x70206f4e
movzx eax, byte [0x5da16c]
mov eax, dword [0x5da100]
test eax, eax
jne 0x548858
call sub.kernel32.dll_GetProcessHeap
test eax, eax
je 0x549a69
mov dword [0x5da100], eax
push 9
push 0
push eax
call sub.kernel32.dll_HeapAlloc
test eax, eax
je 0x549a69
mov edi, eax
mov byte [eax + 8], 0x72
mov dword [eax + 4], 0x65646c6f
mov dword [eax], 0x66206f4e
lea ecx, [ebp - 0x70]
call dbg.current_exe
cmp byte [ebp - 0x64], 2
mov dword [ebp - 0x94], esi
jne 0x5488f0
cmp byte [ebp - 0x70], 3
jne 0x5489dc
mov eax, dword [ebp - 0x6c]
mov ebx, edi
mov esi, dword [eax]
mov edi, dword [eax + 4]
mov dword [ebp - 0x14], eax
push esi
call dword [edi]
add esp, 4
cmp dword [edi + 4], 0
mov dword [ebp - 0x1c], 9
mov dword [ebp - 0x20], 7
je 0x548a54
cmp dword [edi + 8], 9
jb 0x5488cf
mov esi, dword [esi - 4]
mov edi, ebx
push esi
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
mov esi, 9
mov dword [ebp - 0x24], 0
jmp 0x548a62
mov eax, dword [ebp - 0x6c]
mov ebx, dword [ebp - 0x70]
mov esi, dword [ebp - 0x68]
mov dword [ebp - 0x18], eax
mov ecx, ebx
mov edx, esi
call dbg.parent
test eax, eax
mov dword [ebp - 0x1c], 9
mov dword [ebp - 0x20], 7
je 0x5489c0
mov dword [ebp - 0x28], esi
mov ecx, eax
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x2c], edx
call dbg.file_name
test eax, eax
je 0x5489c0
test edx, edx
mov dword [ebp - 0x4c], edi
mov dword [ebp - 0x14], ebx
je 0x548a32
mov edi, eax
mov esi, eax
mov ebx, eax
add edi, edx
jmp 0x54896a
add ebx, 2
cmp ecx, edi
cmovne ecx, ebx
nop word cs:[eax + eax]
nop dword [eax]
cmp ecx, edi
mov ebx, ecx
je 0x548a0f
movzx eax, byte [ebx]
lea ecx, [ebx + 1]
test al, al
jns 0x548960
cmp al, 0xe0
jb 0x54894b
cmp al, 0xed
jne 0x5489a0
cmp ecx, edi
je 0x548a0f
lea eax, [ebx + 2]
cmp eax, edi
je 0x548a0f
cmp byte [ebx + 1], 0x9f
ja 0x548c30
add ebx, 3
mov ecx, ebx
jmp 0x548960
add ebx, 2
cmp ecx, edi
cmove ebx, ecx
xor ecx, ecx
cmp ebx, edi
setne cl
add ecx, ebx
cmp al, 0xf0
jb 0x548960
xor eax, eax
cmp ecx, edi
setne al
add ecx, eax
jmp 0x548960
mov dword [ebp - 0x24], 0
mov esi, 9
mov eax, dword [ebp - 0x18]
test eax, eax
jne 0x548b9d
jmp 0x548c4d
mov dword [ebp - 0x1c], 9
mov dword [ebp - 0x20], 7
mov dword [ebp - 0x24], 0
mov esi, 9
movzx eax, byte [0x5da16c]
mov eax, dword [0x5da100]
test eax, eax
jne 0x548c80
jmp 0x548c6e
mov edi, dword [ebp - 0x4c]
mov ebx, dword [ebp - 0x14]
cmp edx, 9
jne 0x548a32
push 9
push 0x5bf0e4
push esi
call sub.msvcrt.dll_memcmp
add esp, 0xc
test eax, eax
je 0x548c07
lea ecx, [ebp - 0x48]
mov edx, ebx
push dword [ebp - 0x28]
call dbg.to_string_lossy
add esp, 4
mov eax, dword [ebp - 0x48]
test eax, eax
je 0x548a6a
mov ecx, dword [ebp - 0x44]
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x20], ecx
jmp 0x548ace
mov dword [ebp - 0x24], 0
mov esi, 9
mov edi, ebx
mov ebx, dword [ebp - 0x14]
jmp 0x548b9d
mov eax, dword [ebp - 0x40]
mov esi, dword [ebp - 0x44]
test eax, eax
mov dword [ebp - 0x20], eax
je 0x548ab9
js 0x549c37
movzx eax, byte [0x5da16c]
mov eax, dword [0x5da100]
test eax, eax
jne 0x548a9b
call sub.kernel32.dll_GetProcessHeap
test eax, eax
je 0x548aaa
mov dword [0x5da100], eax
push dword [ebp - 0x20]
push 0
push eax
call sub.kernel32.dll_HeapAlloc
test eax, eax
jne 0x548abe
mov edx, dword [ebp - 0x20]
mov ecx, 1
call dbg.handle_alloc_error
ud2
mov eax, 1
push dword [ebp - 0x20]
push esi
mov dword [ebp - 0x28], eax
push eax
call sym._memcpy
add esp, 0xc
mov eax, dword [ebp - 0x54]
push eax
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
mov edx, dword [ebp - 0x10]
lea ecx, [ebp - 0x48]
push dword [ebp - 0x2c]
call dbg.to_string_lossy
add esp, 4
mov esi, dword [ebp - 0x48]
test esi, esi
je 0x548b09
mov eax, dword [ebp - 0x44]
mov ebx, dword [ebp - 0x40]
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x1c], eax
jmp 0x548b77
mov eax, dword [ebp - 0x40]
mov edi, dword [ebp - 0x44]
test eax, eax
mov dword [ebp - 0x1c], eax
je 0x548b5a
js 0x549c3e
movzx eax, byte [0x5da16c]
mov eax, dword [0x5da100]
test eax, eax
jne 0x548b3a
call sub.kernel32.dll_GetProcessHeap
test eax, eax
je 0x548b4b
mov dword [0x5da100], eax
push dword [ebp - 0x1c]
push 0
push eax
call sub.kernel32.dll_HeapAlloc
mov esi, eax
test eax, eax
jne 0x548b5f
mov edx, dword [ebp - 0x1c]
mov ecx, 1
call dbg.handle_alloc_error
ud2
mov esi, 1
mov ebx, dword [ebp - 0x1c]
push ebx
push edi
push esi
call sym._memcpy
add esp, 0xc
mov edi, dword [ebp - 0x4c]
mov dword [ebp - 0x24], 0
push edi
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
mov eax, dword [ebp - 0x28]
mov edi, esi
mov esi, ebx
mov dword [ebp - 0x54], eax
mov ebx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x18]
test eax, eax
je 0x548c4d
push ebx
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
test esi, esi
sete al
jne 0x548c58
mov dword [ebp - 0x90], eax
push esi
push edi
push 1
call sym._memcpy
add esp, 0xc
push esi
push edi
push 1
call sym._memcpy
add esp, 0xc
push esi
push edi
push 1
call sym._memcpy
add esp, 0xc
mov dword [ebp - 0x88], 1
mov dword [ebp - 0x78], 1
mov dword [ebp - 0x8c], 1
mov dword [ebp - 0x7c], 1
jmp 0x548d67
lea ecx, [ebp - 0x48]
mov edx, ebx
push dword [ebp - 0x28]
call dbg.to_string_lossy
add esp, 4
mov eax, dword [ebp - 0x48]
test eax, eax
je 0x54987f
mov ecx, dword [ebp - 0x44]
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x20], ecx
jmp 0x5498e3
mov edi, dword [ebp - 0x4c]
mov dword [ebp - 0x24], 0
mov esi, 9
mov ebx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x18]
test eax, eax
jne 0x548b9d
test esi, esi
sete al
je 0x548bb6
js 0x549bfd
movzx eax, byte [0x5da16c]
mov eax, dword [0x5da100]
test eax, eax
jne 0x548c80
call sub.kernel32.dll_GetProcessHeap
test eax, eax
je 0x549b53
mov dword [0x5da100], eax
push esi
push 0
push eax
call sub.kernel32.dll_HeapAlloc
test eax, eax
je 0x549b53
push esi
push edi
mov dword [ebp - 0x78], eax
push eax
call sym._memcpy
add esp, 0xc
movzx eax, byte [0x5da16c]
mov eax, dword [0x5da100]
test eax, eax
jne 0x548cc1
call sub.kernel32.dll_GetProcessHeap
test eax, eax
je 0x549b61
mov dword [0x5da100], eax
push esi
push 0
push eax
call sub.kernel32.dll_HeapAlloc
test eax, eax
je 0x549b61
push esi
push edi
mov dword [ebp - 0x8c], eax
push eax
call sym._memcpy
add esp, 0xc
movzx eax, byte [0x5da16c]
mov eax, dword [0x5da100]
test eax, eax
jne 0x548d05
call sub.kernel32.dll_GetProcessHeap
test eax, eax
je 0x549b6f
mov dword [0x5da100], eax
push esi
push 0
push eax
call sub.kernel32.dll_HeapAlloc
test eax, eax
je 0x549b6f
push esi
push edi
mov dword [ebp - 0x88], eax
push eax
call sym._memcpy
add esp, 0xc
movzx eax, byte [0x5da16c]
mov eax, dword [0x5da100]
test eax, eax
jne 0x548d49
call sub.kernel32.dll_GetProcessHeap
test eax, eax
je 0x549b7d
mov dword [0x5da100], eax
push esi
push 0
push eax
call sub.kernel32.dll_HeapAlloc
test eax, eax
mov dword [ebp - 0x7c], eax
je 0x549b7d
mov dword [ebp - 0x90], 0
push esi
push edi
push dword [ebp - 0x7c]
call sym._memcpy
add esp, 0xc
mov byte [ebp - 0x58], 0
mov dword [ebp - 0x70], 0
lea ecx, [ebp - 0x9c]
lea edx, [ebp - 0x70]
call sym.console::term::Term::with_inner::hca91631cdbf473a3
mov eax, dword [ebp - 0x9c]
lock inc dword [eax]
jle 0x549316
movzx edx, byte [ebp - 0x97]
movzx ecx, byte [ebp - 0x98]
mov dword [ebp - 0x14], esi
mov dword [ebp - 0x28], eax
test dl, dl
mov byte [ebp - 0x4e], cl
mov byte [ebp - 0x4d], dl
je 0x549100
lea eax, [ebp - 0xa8]
lea ebx, [ebp - 0x84]
mov dword [ebp - 0xa8], str.Windows_Information_System___Next_disk_n
mov dword [ebp - 0x70], 0x5bf394
mov dword [ebp - 0x6c], 1
mov dword [ebp - 0x60], 0
mov dword [ebp - 0xa4], 0x1a
mov dword [ebp - 0x84], eax
mov dword [ebp - 0x68], ebx
mov dword [ebp - 0x80], sym.__LT__RF_T_u20_as_u20_core..fmt..Display_GT_::fmt::h03504413dc392ca9
mov dword [ebp - 0x64], 1
lea ecx, [ebp - 0x48]
lea edx, [ebp - 0x70]
call dbg.format_inner
mov eax, dword [ebp - 0x40]
mov esi, dword [ebp - 0x48]
mov dword [ebp - 0x4c], edi
lea ecx, [esi + eax]
test eax, eax
mov dword [ebp - 0x2c], ecx
je 0x548e37
movzx eax, byte [esi]
test al, al
js 0x548e55
inc esi
mov edi, eax
mov dword [ebp - 0x10], esi
jmp 0x548eb1
xor edi, edi
xor eax, eax
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x10], 0
mov dword [ebp - 0x18], 0
jmp 0x548ed6
movzx edx, byte [esi + 1]
mov edi, eax
and edi, 0x1f
and edx, 0x3f
cmp al, 0xdf
jbe 0x548ea3
movzx ecx, byte [esi + 2]
shl edx, 6
and ecx, 0x3f
or ecx, edx
cmp al, 0xf0
jb 0x549841
movzx eax, byte [esi + 3]
and edi, 7
shl ecx, 6
add esi, 4
shl edi, 0x12
mov dword [ebp - 0x10], esi
and eax, 0x3f
or eax, ecx
or edi, eax
mov ecx, dword [ebp - 0x2c]
cmp edi, 0xffff
jbe 0x548eb1
jmp 0x54985b
mov ecx, dword [ebp - 0x2c]
shl edi, 6
add esi, 2
mov dword [ebp - 0x10], esi
or edi, edx
mov dword [ebp - 0x30], edi
xor edx, edx
sub ecx, dword [ebp - 0x10]
mov eax, 0xffffffff
mov dword [ebp - 0x18], edx
mov di, 1
add ecx, 3
cmovae eax, ecx
shr eax, 2
cmp dx, 1
sbb eax, 0xffffffff
inc eax
inc eax
mov ecx, 0xffffffff
mov ebx, 4
cmovne ecx, eax
cmp ecx, 5
cmovae ebx, ecx
cmp ebx, 0x3fffffff
ja 0x549bb1
mov esi, ebx
add esi, ebx
js 0x549bb8
movzx eax, byte [0x5da16c]
mov eax, dword [0x5da100]
test eax, eax
jne 0x548f22
call sub.kernel32.dll_GetProcessHeap
test eax, eax
je 0x549b8b
mov dword [0x5da100], eax
push esi
push 0
push eax
call sub.kernel32.dll_HeapAlloc
test eax, eax
je 0x549b8b
mov ecx, dword [ebp - 0x30]
mov esi, 1
mov edx, edi
mov word [eax], cx
mov dword [ebp - 0x70], eax
mov dword [ebp - 0x6c], ebx
mov ecx, dword [ebp - 0x10]
mov ebx, dword [ebp - 0x18]
jmp 0x548f62
mov edi, ebx
xor ebx, ebx
cmp esi, dword [ebp - 0x6c]
je 0x54906e
mov word [eax + esi*2], di
inc esi
test ecx, ecx
mov dword [ebp - 0x68], esi
je 0x548f90
test bx, bx
jne 0x548f50
cmp ecx, dword [ebp - 0x2c]
je 0x548f90
mov dword [ebp - 0x18], edx
movzx edx, byte [ecx]
test dl, dl
js 0x548fb2
inc ecx
mov edi, edx
xor ebx, ebx
mov edx, dword [ebp - 0x18]
cmp esi, dword [ebp - 0x6c]
jne 0x548f5d
jmp 0x54906e
test edx, 0xfffd
je 0x5490c9
xor edi, edi
cmp esi, dword [ebp - 0x6c]
mov ecx, 0
mov edx, 0
jne 0x548f5d
jmp 0x549072
movzx ebx, byte [ecx + 1]
mov edi, edx
and edi, 0x1f
and ebx, 0x3f
cmp dl, 0xdf
jbe 0x549030
mov dword [ebp - 0x30], eax
movzx eax, byte [ecx + 2]
shl ebx, 6
and eax, 0x3f
or eax, ebx
cmp dl, 0xf0
mov dword [ebp - 0x10], eax
jb 0x549048
movzx ebx, byte [ecx + 3]
mov eax, dword [ebp - 0x10]
and edi, 7
add ecx, 4
shl edi, 0x12
mov edx, ecx
shl eax, 6
and ebx, 0x3f
or ebx, eax
or edi, ebx
mov eax, dword [ebp - 0x30]
cmp edi, 0xffff
jbe 0x54905e
lea ecx, [edi + 0xff0000]
and edi, 0x3ff
shr ecx, 0xa
or edi, 0xdc00
or ecx, 0xd800
mov ebx, edi
mov edi, ecx
mov ecx, edx
mov edx, dword [ebp - 0x18]
cmp esi, dword [ebp - 0x6c]
jne 0x548f5d
jmp 0x54906e
shl edi, 6
add ecx, 2
or edi, ebx
xor ebx, ebx
mov edx, dword [ebp - 0x18]
cmp esi, dword [ebp - 0x6c]
jne 0x548f5d
jmp 0x54906e
shl edi, 0xc
add ecx, 3
add edi, dword [ebp - 0x10]
mov edx, ecx
mov eax, dword [ebp - 0x30]
cmp edi, 0xffff
ja 0x549001
mov ecx, edx
xor ebx, ebx
mov edx, dword [ebp - 0x18]
cmp esi, dword [ebp - 0x6c]
jne 0x548f5d
test ecx, ecx
jne 0x54907d
mov dword [ebp - 0x10], ecx
mov dword [ebp - 0x18], edx
movzx eax, dx
jmp 0x5490a4
mov eax, ecx
mov ecx, dword [ebp - 0x2c]
mov dword [ebp - 0x18], edx
mov dword [ebp - 0x10], eax
sub ecx, eax
mov eax, 0xffffffff
add ecx, 3
cmovb ecx, eax
movzx eax, dx
shr ecx, 2
cmp bx, 1
sbb ecx, 0xffffffff
add eax, ecx
inc eax
mov ecx, 0xffffffff
cmove eax, ecx
lea ecx, [ebp - 0x70]
mov edx, esi
push eax
call sym.alloc::raw_vec::RawVec_LT_T_C_A_GT_::reserve::do_reserve_and_handle::h00d8c60031551947
add esp, 4
mov eax, dword [ebp - 0x70]
mov ecx, dword [ebp - 0x10]
mov edx, dword [ebp - 0x18]
jmp 0x548f5d
mov esi, dword [ebp - 0x70]
mov edi, dword [ebp - 0x6c]
cmp dword [ebp - 0x44], 0
je 0x5490e5
push dword [ebp - 0x48]
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
push esi
call sub.kernel32.dll_SetConsoleTitleW
test edi, edi
je 0x5490fd
push esi
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
mov edi, dword [ebp - 0x4c]
call sub.kernel32.dll_GetConsoleWindow
mov dword [ebp - 0x2c], eax
push 0x70
push 2
push 1
push 0
call sub.user32.dll_RegisterHotKey
push 0x75
push 2
push 2
push 0
call sub.user32.dll_RegisterHotKey
push 0x79
push 2
push 3
push 0
call sub.user32.dll_RegisterHotKey
push 0x7b
push 2
push 4
push 0
call sub.user32.dll_RegisterHotKey
call dbg.min_stack
mov ebx, eax
xor ecx, ecx
call sym.std::thread::Thread::new::h7bff6366d6269064
mov dword [ebp - 0x74], eax
lock inc dword [eax]
jle 0x549316
movzx eax, byte [0x5da16c]
mov eax, dword [0x5da100]
test eax, eax
jne 0x549178
call sub.kernel32.dll_GetProcessHeap
test eax, eax
je 0x549a7a
mov dword [0x5da100], eax
push 0x18
push 0
push eax
call sub.kernel32.dll_HeapAlloc
test eax, eax
je 0x549a7a
mov dword [eax], 1
mov dword [eax + 4], 1
mov dword [eax + 8], 0
mov dword [eax + 0xc], 0
lock inc dword [eax]
jle 0x549316
movzx ecx, byte [0x5da088]
mov dword [ebp - 0x10], eax
test cl, cl
je 0x549209
mov byte [0x5da088], 1
call sym.std::io::stdio::OUTPUT_CAPTURE::__getit::h24c13ae958baaed5
test eax, eax
je 0x549bbf
mov esi, dword [eax]
mov dword [eax], 0
mov eax, dword [ebp - 0x10]
test esi, esi
je 0x549209
lock inc dword [esi]
jle 0x549316
mov byte [0x5da088], 1
call sym.std::io::stdio::OUTPUT_CAPTURE::__getit::h24c13ae958baaed5
test eax, eax
je 0x549c04
mov ecx, dword [eax]
mov dword [eax], esi
mov eax, dword [ebp - 0x10]
test ecx, ecx
jne 0x54923d
jmp 0x54924a
movzx ecx, byte [0x5da088]
test cl, cl
je 0x54968b
mov byte [0x5da088], 1
call sym.std::io::stdio::OUTPUT_CAPTURE::__getit::h24c13ae958baaed5
test eax, eax
je 0x549c12
mov ecx, dword [eax]
xor esi, esi
mov dword [eax], 0
mov eax, dword [ebp - 0x10]
test ecx, ecx
je 0x54924a
lock dec dword [ecx]
jne 0x54924a
call sym.alloc::sync::Arc_LT_T_GT_::drop_slow::h5dae33a82a76dccc
mov eax, dword [ebp - 0x10]
mov ecx, dword [eax + 8]
test ecx, ecx
je 0x54925b
lock inc dword [ecx + 0xc]
jle 0x549bc1
movzx eax, byte [0x5da16c]
mov eax, dword [0x5da100]
test eax, eax
jne 0x54927d
call sub.kernel32.dll_GetProcessHeap
test eax, eax
je 0x549a8b
mov dword [0x5da100], eax
push 0x1c
push 0
push eax
call sub.kernel32.dll_HeapAlloc
test eax, eax
je 0x549a8b
mov ecx, dword [ebp - 0x74]
mov dword [eax], ecx
mov ecx, dword [ebp - 0x10]
mov dword [eax + 4], ecx
mov ecx, dword [ebp - 0x1c]
mov dword [eax + 8], esi
mov dword [eax + 0xc], edi
mov dword [eax + 0x10], ecx
mov ecx, dword [ebp - 0x14]
mov dword [eax + 0x14], ecx
mov ecx, dword [ebp - 0x24]
mov byte [eax + 0x18], cl
movzx ecx, word [ebp - 0x48]
mov word [eax + 0x19], cx
movzx ecx, byte [ebp - 0x46]
mov byte [eax + 0x1b], cl
lea esi, [ebp - 0x70]
mov edx, ebx
mov ecx, esi
push 0x5bf434
push eax
call sym.std::sys::windows::thread::Thread::new::hcbb13acf88dc458b
add esp, 8
movzx edi, byte [ebp - 0x70]
cmp edi, 4
jne 0x549add
mov eax, dword [ebp - 0x6c]
mov ebx, dword [ebp - 0x28]
xorps xmm0, xmm0
mov dword [ebp - 0x5c], 0
mov dword [ebp - 0x60], 0
mov dword [ebp - 0x58], 0
movups xmmword [ebp - 0x70], xmm0
mov dword [ebp - 0xa0], eax
lock inc dword [ebx]
mov edi, dword [ebp - 0x94]
jg 0x549335
ud2
lock inc dword [ebx]
jle 0x549316
push 0
push 0
push 0
push esi
call sub.user32.dll_GetMessageW
test eax, eax
jle 0x5496c8
cmp dword [ebp - 0x6c], 0x312
jne 0x5493e0
mov eax, dword [ebp - 0x68]
dec eax
cmp eax, 3
ja 0x5493e0
mov eax, dword [eax*4 + 0x549c7c]
add eax, edi
jmp eax
push esi
call sub.user32.dll_TranslateMessage
push esi
call sub.user32.dll_DispatchMessageW
lock dec dword [ebx]
jne 0x549330
mov ecx, ebx
call sym.alloc::sync::Arc_LT_T_GT_::drop_slow::h76496af6855f452e
jmp 0x549330
xor esi, esi
mov ecx, dword [eax + 8]
test ecx, ecx
jne 0x549251
jmp 0x54925b
lock dec dword [ebx]
jne 0x5496d4
mov ecx, ebx
call sym.alloc::sync::Arc_LT_T_GT_::drop_slow::h76496af6855f452e
mov ecx, dword [ebp - 0xa0]
call dbg.join
mov edx, dword [ebp - 0x10]
mov ecx, 0xffffffff
mov eax, 1
lock cmpxchg dword [edx + 4], ecx
jne 0x549a34
mov eax, dword [edx]
mov dword [edx + 4], 1
cmp eax, 1
jne 0x549a34
mov esi, dword [edx + 0x10]
mov edi, dword [edx + 0x14]
cmp dword [edx + 0xc], 0
mov dword [edx + 0xc], 0
je 0x549b3a
mov ecx, dword [ebp - 0x74]
lock dec dword [ecx]
jne 0x54979e
call sym.alloc::sync::Arc_LT_T_GT_::drop_slow::h11981ade3ce8ba02
mov edx, dword [ebp - 0x10]
lock dec dword [edx]
je 0x5497a3
test esi, esi
jne 0x5497ae
push 1
push 0
call sub.user32.dll_UnregisterHotKey
push 2
push 0
call sub.user32.dll_UnregisterHotKey
push 3
push 0
call sub.user32.dll_UnregisterHotKey
push 4
push 0
call sub.user32.dll_UnregisterHotKey
lock dec dword [ebx]
jne 0x5497cd
mov ecx, ebx
call sym.alloc::sync::Arc_LT_T_GT_::drop_slow::h76496af6855f452e
mov eax, dword [ebp - 0x9c]
lock dec dword [eax]
je 0x5497d8
cmp byte [ebp - 0x90], 0
je 0x5497ec
cmp dword [ebp - 0x20], 0
je 0x549793
push dword [ebp - 0x54]
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
add esp, 0x9c
pop esi
pop edi
pop ebx
pop ebp
ret
lock dec dword [edx]
jne 0x549735
mov ecx, edx
call sym.alloc::sync::Arc_LT_T_GT_::drop_slow::h04d38b091065dc59
test esi, esi
je 0x549739
mov dword [ebp - 0x48], esi
mov dword [ebp - 0x44], edi
mov ecx, str.called__Result::unwrap____on_an__Err__value
mov edx, 0x2b
push 0x5bf604
push 0x5bf5b8
jmp 0x549a2c
mov eax, dword [ebp - 0x9c]
lock dec dword [eax]
jne 0x549774
mov ecx, dword [ebp - 0x9c]
call sym.alloc::sync::Arc_LT_T_GT_::drop_slow::h76496af6855f452e
cmp byte [ebp - 0x90], 0
jne 0x54977d
push dword [ebp - 0x7c]
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
push dword [ebp - 0x88]
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
push dword [ebp - 0x8c]
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
push dword [ebp - 0x78]
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
cmp dword [ebp - 0x20], 0
jne 0x549783
jmp 0x549793
shl edi, 0xc
add esi, 3
mov dword [ebp - 0x10], esi
or edi, ecx
mov ecx, dword [ebp - 0x2c]
cmp edi, 0xffff
jbe 0x548eb1
lea eax, [edi + 0xff0000]
and edi, 0x3ff
or edi, 0xdc00
shr eax, 0xa
mov edx, edi
or eax, 0xd800
mov dword [ebp - 0x30], eax
jmp 0x548eb6
mov eax, dword [ebp - 0x40]
mov esi, dword [ebp - 0x44]
test eax, eax
mov dword [ebp - 0x20], eax
je 0x5498ce
js 0x549c45
movzx eax, byte [0x5da16c]
mov eax, dword [0x5da100]
test eax, eax
jne 0x5498b0
call sub.kernel32.dll_GetProcessHeap
test eax, eax
je 0x5498bf
mov dword [0x5da100], eax
push dword [ebp - 0x20]
push 0
push eax
call sub.kernel32.dll_HeapAlloc
test eax, eax
jne 0x5498d3
mov edx, dword [ebp - 0x20]
mov ecx, 1
call dbg.handle_alloc_error
ud2
mov eax, 1
push dword [ebp - 0x20]
push esi
mov dword [ebp - 0x28], eax
push eax
call sym._memcpy
add esp, 0xc
mov eax, dword [ebp - 0x54]
push eax
push 0
push dword [0x5da100]
call sub.kernel32.dll_HeapFree
mov edx, dword [ebp - 0x10]
lea ecx, [ebp - 0x48]
push dword [ebp - 0x2c]
call dbg.to_string_lossy
add esp, 4
mov esi, dword [ebp - 0x48]
test esi, esi
je 0x54991f
mov eax, dword [ebp - 0x44]
mov ebx, dword [ebp - 0x40]
mov dword [ebp - 0x1c], eax
mov al, 1
mov dword [ebp - 0x24], eax
jmp 0x548b77
mov eax, dword [ebp - 0x40]
mov edi, dword [ebp - 0x44]
test eax, eax
mov dword [ebp - 0x1c], eax
je 0x549970
js 0x549c4c
movzx eax, byte [0x5da16c]
mov eax, dword [0x5da100]
test eax, eax
jne 0x549950
call sub.kernel32.dll_GetProcessHeap
test eax, eax
je 0x549961
mov dword [0x5da100], eax
push dword [ebp - 0x1c]
push 0
push eax
call sub.kernel32.dll_HeapAlloc
mov esi, eax
test eax, eax
jne 0x549975
mov edx, dword [ebp - 0x1c]
mov ecx, 1
call dbg.handle_alloc_error
ud2
mov esi, 1
mov ebx, dword [ebp - 0x1c]
push ebx
push edi
push esi
call sym._memcpy
add esp, 0xc
mov edi, dword [ebp - 0x4c]
mov al, 1
mov dword [ebp - 0x24], eax
jmp 0x548b77
lea eax, [ebp - 0x48]
jmp 0x549c2c
mov ecx, str.called__Option::unwrap____on_a__None__valueC:UsersTEST.cargo_registry_srcindex.crates.io_6f17d22bba15001fwinapi_util_0.1.5_srcwin.rs
mov edx, 0x2b
push 0x5bf3fc
jmp 0x549b49
mov ecx, 1
mov edx, 7
call dbg.handle_alloc_error
ud2
mov ecx, 1
mov edx, 9
call dbg.handle_alloc_error
ud2
mov ecx, 4
mov edx, 0x18
call dbg.handle_alloc_error
ud2
mov ecx, 4
mov edx, 0x1c
call dbg.handle_alloc_error
ud2
mov eax, dword [ebp - 0x6c]
movzx esi, byte [ebp - 0x6d]
mov ecx, dword [ebp - 0x10]
movzx ebx, word [ebp - 0x6f]
mov dword [ebp - 0x14], eax
shl esi, 0x10
lock dec dword [ecx]
jne 0x549afe
mov ecx, dword [ebp - 0x10]
call sym.alloc::sync::Arc_LT_T_GT_::drop_slow::h04d38b091065dc59
mov eax, dword [ebp - 0x74]
or ebx, esi
lock dec dword [eax]
jne 0x549b10
mov ecx, dword [ebp - 0x74]
call sym.alloc::sync::Arc_LT_T_GT_::drop_slow::h11981ade3ce8ba02
mov eax, dword [ebp - 0x14]
shl ebx, 8
or ebx, edi
mov dword [ebp - 0x70], ebx
mov dword [ebp - 0x6c], eax
mov ecx, str.failed_to_spawn_thread
mov edx, 0x16
push 0x5bf424
push 0x5bf474
lea eax, [ebp - 0x70]
jmp 0x549c2c
mov ecx, str.called__Option::unwrap____on_a__None__valueC:UsersTEST.cargo_registry_srcindex.crates.io_6f17d22bba15001fwinapi_util_0.1.5_srcwin.rs
mov edx, 0x2b
push 0x5bf3ec
call dbg.panic
add esp, 4
ud2
mov ecx, 1
mov edx, esi
call dbg.handle_alloc_error
ud2
mov ecx, 1
mov edx, esi
call dbg.handle_alloc_error
ud2
mov ecx, 1
mov edx, esi
call dbg.handle_alloc_error
ud2
mov ecx, 1
mov edx, esi
call dbg.handle_alloc_error
ud2
xor ecx, ecx
cmp ebx, 0x40000000
setb cl
add ecx, ecx
mov edx, esi
call dbg.handle_alloc_error
ud2
call sym.alloc::raw_vec::capacity_overflow::h894971bc65aab54c
ud2
call sym.alloc::raw_vec::capacity_overflow::h894971bc65aab54c
ud2
jmp 0x549c12
add ecx, 8
xor edx, edx
call dbg.decrement_num_running_threads
mov dword [ebp - 0x70], 0x5ba65c
mov dword [ebp - 0x6c], 1
mov dword [ebp - 0x60], 0
mov dword [ebp - 0x68], str.Lazy_instance_has_previously_been_poisoned
mov dword [ebp - 0x64], 0
lea ecx, [ebp - 0x70]
mov edx, 0x5ba684
call dbg.panic_fmt
ud2
call sym.alloc::raw_vec::capacity_overflow::h894971bc65aab54c
ud2
lock dec dword [esi]
jne 0x549c10
mov ecx, esi
call dbg.drop_slow<std::sync::mutex::Mutex<alloc::vec::Vec<u8, alloc::alloc::Global>>>
jmp 0x549c12
lea eax, [ebp - 0x84]
mov ecx, 0x5bfdd0
mov edx, 0x46
push 0x5bace4
push 0x5b9e20
push eax
call dbg.unwrap_failed
add esp, 0xc
ud2
call sym.alloc::raw_vec::capacity_overflow::h894971bc65aab54c
ud2
call sym.alloc::raw_vec::capacity_overflow::h894971bc65aab54c
ud2
call sym.alloc::raw_vec::capacity_overflow::h894971bc65aab54c
ud2
call sym.alloc::raw_vec::capacity_overflow::h894971bc65aab54c
ud2