Function at 0x5192e0
Capabilities:
Check mutex on windows
Get common file path
Link many functions at runtime
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x5c0
mov eax, dword [ebp + 8]
mov ebx, 0x200
xor edi, edi
mov dword [esp + 0x50], 2
mov dword [esp + 0x54], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0xc], 2
mov dword [esp + 0x14], 0
movzx eax, byte [eax]
mov byte [esp + 0x1c], al
mov byte [esp], al
cmp ebx, 0x201
jae 0x519370
jmp 0x519352
mov edi, dword [esp + 4]
jbe 0x519404
cmp ebx, 0x201
jae 0x519370
mov dword [esp + 4], edi
mov dword [esp + 0x10], 0x200
lea esi, [esp + 0x1b0]
mov edi, ebx
jmp 0x5193ab
mov eax, dword [esp + 0x14]
sub ebx, edi
sub eax, edi
cmp eax, ebx
jae 0x519397
mov edx, edi
lea ecx, [esp + 0x50]
push ebx
call dbg.do_reserve_and_handle<u16, alloc::alloc::Global>
add esp, 4
mov eax, dword [esp + 0x50]
mov edi, dword [esp + 0x54]
mov dword [esp + 0xc], eax
mov esi, dword [esp + 0xc]
mov dword [esp + 0x58], edi
mov dword [esp + 0x14], edi
mov dword [esp + 0x10], edi
mov dword [esp + 4], edi
push 0
call sub.KERNEL32.dll_SetLastError
push esi
push edi
call sub.KERNEL32.dll_GetCurrentDirectoryW
mov ebx, eax
test eax, eax
jne 0x5193cc
call sub.KERNEL32.dll_GetLastError
test eax, eax
jne 0x51969f
cmp ebx, edi
jne 0x519340
call sub.KERNEL32.dll_GetLastError
cmp eax, 0x7a
jne 0x519d1f
lea ebx, [edi + edi]
test edi, edi
mov edi, dword [esp + 4]
mov eax, 0xffffffff
cmovs ebx, eax
cmp ebx, 0x201
jb 0x519352
jmp 0x519370
mov edx, dword [esp + 0x10]
cmp ebx, edx
ja 0x519d38
mov edx, esi
lea ecx, [esp + 0xa0]
push ebx
call dbg.from_wide
add esp, 4
movsd xmm0, qword [esp + 0xa0]
movsd xmm1, qword [esp + 0xa8]
movsd qword [esp + 0x30], xmm1
movsd qword [esp + 0x28], xmm0
test edi, edi
je 0x519455
push dword [esp + 0xc]
push 0
push dword [0x5c6108]
call sub.KERNEL32.dll_HeapFree
movzx ebx, byte [esp + 0x34]
cmp bl, 2
jne 0x51946e
lea ecx, [esp + 0x28]
call dbg.drop_in_place<core::result::Result<std::path::PathBuf, std::io::error::Error>>
movzx eax, byte [esp]
jmp 0x5194a0
mov eax, dword [esp + 0x30]
movsd xmm0, qword [esp + 0x28]
mov dword [esp + 0x90], eax
movzx eax, word [esp + 0x35]
movsd qword [esp + 0x88], xmm0
mov word [esp + 0x18], ax
movzx eax, byte [esp + 0x37]
mov byte [esp + 0x1a], al
movzx eax, byte [esp + 0x1c]
mov byte [esp + 0x80], al
mov eax, dword [esp + 0x90]
movsd xmm0, qword [esp + 0x88]
mov dword [esp + str.stack_backtrace:_n], 0x5a0fc4
mov dword [esp + 0x1b4], 1
mov dword [esp + 0x1c0], 0
mov dword [esp + 0x1b8], str.called__Option::unwrap____on_a__None__value_rustc_82e1608dfa6e0b5569232559e3d385fea5a93112library_std_src_threadmod.rs
mov dword [esp + 0x1bc], 0
mov dword [esp + 0x78], eax
movzx eax, word [esp + 0x18]
movsd qword [esp + 0x70], xmm0
mov byte [esp + 0x7c], bl
mov word [esp + 0x7d], ax
movzx eax, byte [esp + 0x1a]
mov byte [esp + 0x7f], al
mov eax, dword [ebp + 0xc]
mov edx, dword [eax + 0x18]
mov ecx, dword [eax + 0x14]
lea eax, [esp + 0x1b0]
push eax
call sym.core::fmt::write::hf6f17c7122404135
add esp, 4
test al, al
jne 0x519a4d
movzx eax, byte [esp]
mov ecx, dword [ebp + 0xc]
lea edx, [esp + 0x70]
mov byte [esp + 1], 0
mov dword [esp + 0x84], 0
mov byte [esp + 0xb], 1
test al, al
mov dword [esp + 0x50], ecx
mov dword [esp + 0x5c], 0
mov byte [esp + 0x60], al
mov dword [esp + 0x54], edx
mov dword [esp + 0x58], 0x5a0fcc
setne byte [esp + 3]
call sub.KERNEL32.dll_GetCurrentProcess
mov dword [esp + 0x14], eax
call sub.KERNEL32.dll_GetCurrentThread
mov dword [esp + 0x10], eax
push 0x2d0
push 0
lea esi, [esp + 0x1b8]
push esi
call sub.msvcrt.dll_memset
add esp, 0xc
push esi
call sub.ntdll.dll_RtlCaptureContext
mov edi, dword [0x5c60f8]
test edi, edi
je 0x5196c3
push 0
push 0xffffffffffffffff
push edi
call sub.KERNEL32.dll_WaitForSingleObjectEx
mov eax, dword [0x5c6148]
test eax, eax
jne 0x5195da
push str.dbghelp.dll
call sub.KERNEL32.dll_LoadLibraryA
test eax, eax
mov dword [0x5c6148], eax
je 0x519afa
cmp byte [0x5c60fc], 0
mov dword [esp + 0x1c], edi
jne 0x51967b
mov ecx, dword [0x5c614c]
test ecx, ecx
jne 0x51960f
push str.SymGetOptions
push eax
call sub.KERNEL32.dll_GetProcAddress
test eax, eax
je 0x519d62
mov ecx, eax
mov dword [0x5c614c], eax
call ecx
mov esi, eax
mov eax, dword [0x5c6150]
test eax, eax
jne 0x519639
push str.SymSetOptions
push dword [0x5c6148]
call sub.KERNEL32.dll_GetProcAddress
test eax, eax
je 0x519d69
mov dword [0x5c6150], eax
or esi, 4
push esi
call eax
mov esi, dword [0x5c6154]
test esi, esi
jne 0x519668
push str.SymInitializeW
push dword [0x5c6148]
call sub.KERNEL32.dll_GetProcAddress
test eax, eax
je 0x519d70
mov esi, eax
mov dword [0x5c6154], eax
call sub.KERNEL32.dll_GetCurrentProcess
push 1
push 0
push eax
call esi
mov byte [0x5c60fc], 1
mov eax, dword [0x5c615c]
test eax, eax
mov dword [esp + 4], eax
je 0x5197a7
mov edi, dword [0x5c6160]
test edi, edi
jne 0x5197f5
jmp 0x5197d6
call sub.KERNEL32.dll_GetLastError
mov edi, dword [esp + 4]
mov byte [esp + 0x28], 0
mov dword [esp + 0x2c], eax
mov byte [esp + 0x34], 2
test edi, edi
jne 0x519444
jmp 0x519455
push 0x21
push str.LocalRustBacktraceMutex00000000
lea eax, [esp + 0xa8]
push eax
call sym._memcpy
add esp, 0xc
call sub.KERNEL32.dll_GetCurrentProcessId
test eax, eax
je 0x519728
mov ecx, 0x1f
nop dword [eax + eax]
cmp ecx, 0x20
ja 0x519d06
mov edx, eax
mov esi, eax
and dl, 0xf
mov dh, dl
mov ebx, edx
add bl, 0x37
or dh, 0x30
cmp dl, 0xa
movzx edx, dh
movzx ebx, bl
cmovb ebx, edx
shr esi, 4
mov byte [esp + ecx + 0xa0], bl
dec ecx
cmp eax, 0x10
mov eax, esi
jae 0x5196f0
movsd xmm1, qword [esp + 0xb0]
movzx eax, byte [esp + 0xc0]
movsd xmm0, qword [esp + 0xb8]
movsd xmm2, qword [esp + 0xa0]
movsd qword [esp + 0x38], xmm1
movsd xmm1, qword [esp + 0xa8]
mov byte [esp + 0x48], al
movsd qword [esp + 0x40], xmm0
movsd qword [esp + 0x28], xmm2
movsd qword [esp + 0x30], xmm1
lea eax, [esp + 0x28]
push eax
push 0
push 0
call sub.KERNEL32.dll_CreateMutexA
test eax, eax
je 0x519a46
mov edi, eax
xor eax, eax
lock cmpxchg dword [0x5c60f8], edi
je 0x5195b0
mov esi, eax
push edi
call sub.KERNEL32.dll_CloseHandle
mov edi, esi
jmp 0x5195b0
push str.SymFunctionTableAccess64
push dword [0x5c6148]
call sub.KERNEL32.dll_GetProcAddress
test eax, eax
mov dword [esp + 4], eax
je 0x519d49
mov eax, dword [esp + 4]
mov dword [0x5c615c], eax
mov edi, dword [0x5c6160]
test edi, edi
jne 0x5197f5
push str.SymGetModuleBase64
push dword [0x5c6148]
call sub.KERNEL32.dll_GetProcAddress
test eax, eax
je 0x519d49
mov edi, eax
mov dword [0x5c6160], eax
call sub.KERNEL32.dll_GetCurrentProcess
mov ebx, dword [0x5c6164]
mov dword [esp + 0xc], eax
test ebx, ebx
jne 0x519827
push str.StackWalkEx
push dword [0x5c6148]
call sub.KERNEL32.dll_GetProcAddress
test eax, eax
je 0x519b00
mov ebx, eax
mov dword [0x5c6164], eax
lea eax, [esp + 0xa8]
push 0x108
push 0
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
mov eax, dword [esp + 0x264]
mov ecx, dword [esp + 0x268]
mov edx, dword [esp + 0x274]
mov dword [esp + 0x1a8], 0x110
mov dword [esp + 0xa4], 0
mov dword [esp + 0xa0], ecx
mov dword [esp + 0xac], 3
mov dword [esp + 0xd0], edx
mov dword [esp + 0xd4], 0
mov dword [esp + 0xdc], 3
mov dword [esp + 0xc0], eax
mov dword [esp + 0xc4], 0
mov dword [esp + 0xcc], 3
push 0
push 0
push edi
push dword [esp + 0x10]
push 0
lea eax, [esp + 0x1c4]
push eax
lea eax, [esp + 0xb8]
push eax
push dword [esp + 0x2c]
push dword [esp + 0x34]
push 0x14c
call ebx
cmp eax, 1
jne 0x519a3d
xor esi, esi
nop word [eax + eax]
push dword [esp + 0xa4]
push dword [esp + 0xa4]
push dword [esp + 0x14]
call edi
cmp byte [esp], 0
mov ecx, dword [esp + 0xa0]
mov edx, dword [esp + 0xd0]
mov dword [esp + 0x64], eax
mov dword [esp + 0x68], ecx
mov dword [esp + 0x6c], edx
jne 0x51992d
cmp esi, 0x64
ja 0x519a3d
lea eax, [esp + 2]
lea ecx, [esp + 1]
mov byte [esp + 2], 0
mov dword [esp + 0x28], eax
mov eax, esp
mov dword [esp + 0x2c], eax
lea eax, [esp + 3]
mov dword [esp + 0x30], eax
lea eax, [esp + 0x84]
mov dword [esp + 0x34], eax
lea eax, [esp + 0xb]
mov dword [esp + 0x38], eax
lea eax, [esp + 0x50]
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], ecx
lea ecx, [esp + 0x64]
mov dword [esp + 0x44], ecx
lea edx, [esp + 0x28]
call dbg.resolve
cmp byte [esp + 2], 0
jne 0x519a00
cmp byte [esp + 3], 0
je 0x519a00
mov edx, dword [esp + 0x68]
lea eax, [esp + 0x50]
mov dword [esp + 0x28], 3
mov dword [esp + 0x94], 2
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], 0
sub esp, 0x18
lea eax, [esp + 0xac]
lea ecx, [esp + 0x38]
mov dword [esp + 0x10], 0
mov dword [esp + 8], 0
mov dword [esp + 4], eax
lea eax, [esp + 0x40]
mov dword [esp], eax
call dbg.print_raw_with_column
add esp, 0x18
mov ecx, dword [esp + 0x20]
mov byte [esp + 1], al
inc dword [ecx + 0xc]
test al, al
je 0x519a09
jmp 0x519a3d
movzx eax, byte [esp + 1]
test al, al
jne 0x519a3d
inc esi
push 0
push 0
push edi
push dword [esp + 0x10]
push 0
lea eax, [esp + 0x1c4]
push eax
lea eax, [esp + 0xb8]
push eax
push dword [esp + 0x2c]
push dword [esp + 0x34]
push 0x14c
call ebx
cmp eax, 1
je 0x5198f0
push dword [esp + 0x1c]
call sub.KERNEL32.dll_ReleaseMutex
cmp byte [esp + 1], 0
je 0x519a76
cmp byte [esp + 0x7c], 2
je 0x519a6c
cmp dword [esp + 0x74], 0
je 0x519a6c
push dword [esp + 0x70]
push 0
push dword [0x5c6108]
call sub.KERNEL32.dll_HeapFree
mov al, 1
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
cmp byte [esp], 0
jne 0x519ad4
mov eax, dword [ebp + 0xc]
mov dword [esp + str.note:_Some_details_are_omitted__run_with__RUST_BACKTRACEfull__for_a_verbose_backtrace._n], 0x5a1038
mov dword [esp + 0x1b4], 1
mov dword [esp + 0x1c0], 0
mov dword [esp + 0x1b8], str.called__Option::unwrap____on_a__None__value_rustc_82e1608dfa6e0b5569232559e3d385fea5a93112library_std_src_threadmod.rs
mov dword [esp + 0x1bc], 0
mov edx, dword [eax + 0x18]
mov ecx, dword [eax + 0x14]
lea eax, [esp + 0x1b0]
push eax
call sym.core::fmt::write::hf6f17c7122404135
add esp, 4
test al, al
jne 0x519a4d
cmp byte [esp + 0x7c], 2
je 0x519af3
cmp dword [esp + 0x74], 0
je 0x519af3
push dword [esp + 0x70]
push 0
push dword [0x5c6108]
call sub.KERNEL32.dll_HeapFree
xor eax, eax
jmp 0x519a6e
push edi
jmp 0x519a41
lea eax, [esp + 0xa8]
push 0x100
push 0
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
mov ecx, dword [esp + 0x268]
mov eax, dword [esp + 0x264]
mov edx, dword [esp + 0x274]
xor esi, esi
lea ebx, [esp + 0x64]
mov dword [esp + 0xa4], 0
mov dword [esp + 0xa0], ecx
mov dword [esp + 0xac], 3
mov dword [esp + 0xd0], edx
mov dword [esp + 0xd4], 0
mov dword [esp + 0xdc], 3
mov dword [esp + 0xc0], eax
mov dword [esp + 0xc4], 0
mov dword [esp + 0xcc], 3
jmp 0x519b9e
movzx eax, byte [esp + 1]
inc esi
test al, al
jne 0x519a3d
mov eax, dword [0x5c6158]
test eax, eax
jne 0x519bc4
push str.StackWalk64
push dword [0x5c6148]
call sub.KERNEL32.dll_GetProcAddress
test eax, eax
je 0x519d49
mov dword [0x5c6158], eax
push 0
push edi
push dword [esp + 0xc]
push 0
lea ecx, [esp + 0x1c0]
push ecx
lea ecx, [esp + 0xb4]
push ecx
push dword [esp + 0x28]
push dword [esp + 0x30]
push 0x14c
call eax
cmp eax, 1
jne 0x519a3d
push dword [esp + 0xa4]
push dword [esp + 0xa4]
push dword [esp + 0x14]
call edi
cmp byte [esp], 0
mov ecx, dword [esp + 0xa0]
mov edx, dword [esp + 0xd0]
mov dword [esp + 0x64], eax
mov dword [esp + 0x68], ecx
mov dword [esp + 0x6c], edx
jne 0x519c32
cmp esi, 0x64
ja 0x519a3d
lea eax, [esp + 2]
mov byte [esp + 2], 0
mov dword [esp + 0x28], eax
mov eax, esp
mov dword [esp + 0x2c], eax
lea eax, [esp + 3]
mov dword [esp + 0x30], eax
lea eax, [esp + 0x84]
mov dword [esp + 0x34], eax
lea eax, [esp + 0xb]
mov dword [esp + 0x38], eax
lea eax, [esp + 0x50]
mov dword [esp + 0x3c], eax
lea eax, [esp + 1]
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], ebx
mov ecx, ebx
lea edx, [esp + 0x28]
call dbg.resolve
cmp byte [esp + 2], 0
jne 0x519b90
cmp byte [esp + 3], 0
je 0x519b90
mov edx, dword [esp + 0x68]
lea eax, [esp + 0x50]
mov dword [esp + 0x28], 3
mov dword [esp + 0x94], 2
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], 0
sub esp, 0x18
lea eax, [esp + 0xac]
lea ecx, [esp + 0x38]
mov dword [esp + 0x10], 0
mov dword [esp + 8], 0
mov dword [esp + 4], eax
lea eax, [esp + 0x40]
mov dword [esp], eax
call dbg.print_raw_with_column
add esp, 0x18
mov ecx, dword [esp + 0x20]
mov byte [esp + 1], al
inc dword [ecx + 0xc]
inc esi
test al, al
je 0x519b9e
jmp 0x519a3d
mov edx, 0x21
mov ecx, 0xffffffff
push 0x5a16a4
call dbg.panic_bounds_check
add esp, 4
jmp 0x519d88
mov edx, 0x28
mov ecx, str.internal_error:_entered_unreachable_code_home_user_.cargo_registry_src_index.crates.io_6f17d22bba15001f_tokio_1.15.0_src_runtime_blocking_schedule.rs
push 0x5a2124
call dbg.panic
add esp, 4
jmp 0x519d88
mov ecx, ebx
push 0x5a2114
call dbg.slice_end_index_len_fail
add esp, 4
jmp 0x519d88
mov edx, 0x2b
mov ecx, str.called__Option::unwrap____on_a__None__value_rustc_82e1608dfa6e0b5569232559e3d385fea5a93112library_std_src_threadmod.rs
push 0x5a2614
call dbg.panic
add esp, 4
jmp 0x519d88
mov eax, 0x5a1650
jmp 0x519d75
mov eax, 0x5a1660
jmp 0x519d75
mov eax, 0x5a1670
mov edx, 0x2b
mov ecx, str.called__Option::unwrap____on_a__None__value_rustc_82e1608dfa6e0b5569232559e3d385fea5a93112library_std_src_threadmod.rs
push eax
call dbg.panic
add esp, 4
ud2