Function at 0x100c7bd0
Capabilities:
Link many functions at runtime

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x58
mov edi, dword [0x102370bc]
test edi, edi
jne 0x100c7ca5
lea eax, [ebp - 0x40]
push 0x21
push str.LocalRustBacktraceMutex00000000
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
call sub.kernel32.dll_GetCurrentProcessId
test eax, eax
je 0x100c7c45
mov ecx, 0x1f
nop dword [eax + eax]
cmp ecx, 0x20
ja 0x100c7f3b
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 [ebp + ecx - 0x40], bl
dec ecx
cmp eax, 0x10
mov eax, esi
jae 0x100c7c10
movsd xmm1, qword [ebp - 0x30]
movzx eax, byte [ebp - 0x20]
movsd xmm0, qword [ebp - 0x28]
movsd xmm2, qword [ebp - 0x40]
movsd qword [ebp - 0x54], xmm1
movsd xmm1, qword [ebp - 0x38]
mov byte [ebp - 0x44], al
movsd qword [ebp - 0x4c], xmm0
movsd qword [ebp - 0x64], xmm2
movsd qword [ebp - 0x5c], xmm1
lea eax, [ebp - 0x64]
push eax
push 0
push 0
call sub.kernel32.dll_CreateMutexA
test eax, eax
je 0x100c7f1f
mov ecx, eax
xor eax, eax
lock cmpxchg dword [0x102370bc], ecx
mov edx, ecx
je 0x100c7ca3
mov edi, eax
push edx
call sub.kernel32.dll_CloseHandle
mov edx, edi
mov edi, edx
push 0
push 0xffffffffffffffff
push edi
call sub.kernel32.dll_WaitForSingleObjectEx
mov eax, dword [0x102370f0]
test eax, eax
jne 0x100c7ccf
push str.dbghelp.dll
call sub.kernel32.dll_LoadLibraryA
test eax, eax
mov dword [0x102370f0], eax
je 0x100c7f26
cmp byte [0x102370c0], 0
je 0x100c7cdf
xor eax, eax
jmp 0x100c7f31
mov ecx, dword [0x102370f4]
mov dword [ebp - 0x1c], edi
test ecx, ecx
jne 0x100c7d06
push str.SymGetOptions
push eax
call sub.kernel32.dll_GetProcAddress
test eax, eax
je 0x100c7f68
mov ecx, eax
mov dword [0x102370f4], eax
call ecx
mov ecx, eax
mov eax, dword [0x102370f8]
test eax, eax
jne 0x100c7d34
mov esi, ecx
push str.SymSetOptions
push dword [0x102370f0]
call sub.kernel32.dll_GetProcAddress
test eax, eax
je 0x100c7f6f
mov ecx, esi
mov dword [0x102370f8], eax
or ecx, 4
push ecx
call eax
mov edi, dword [0x102370fc]
test edi, edi
jne 0x100c7d63
push str.SymInitializeW
push dword [0x102370f0]
call sub.kernel32.dll_GetProcAddress
test eax, eax
je 0x100c7f76
mov edi, eax
mov dword [0x102370fc], eax
call sub.kernel32.dll_GetCurrentProcess
push 1
push 0
push eax
call edi
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 2
mov dword [ebp - 0x10], 0
xor edx, edx
lea ecx, [ebp - 0x18]
push 0x400
call sym.alloc::raw_vec::RawVec_LT_T_C_A_GT_::reserve::do_reserve_and_handle::h761d50fc4b4e3c20
add esp, 4
mov ebx, dword [ebp - 0x14]
mov esi, dword [ebp - 0x10]
lea eax, [ebx + esi*2]
push 0x7fe
push 0
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
mov word [ebx + esi*2 + 0x7fe], 0
add esi, 0x400
mov edi, dword [0x10237100]
mov dword [ebp - 0x10], esi
test edi, edi
jne 0x100c7deb
push str.SymGetSearchPathW
push dword [0x102370f0]
call sub.kernel32.dll_GetProcAddress
test eax, eax
je 0x100c7f82
mov edi, eax
mov dword [0x10237100], eax
call sub.kernel32.dll_GetCurrentProcess
push esi
push ebx
push eax
call edi
cmp eax, 1
jne 0x100c7e0e
push ebx
call sub.kernel32.dll_lstrlenW
test eax, eax
js 0x100c7f4f
cmp esi, eax
jae 0x100c7e54
jmp 0x100c7e57
mov dword [ebp - 0x10], 0
xor eax, eax
mov edx, dword [ebp - 0x18]
test edx, edx
jne 0x100c7e31
lea ecx, [ebp - 0x18]
xor edx, edx
call dbg.reserve_for_push<u16, alloc::alloc::Global>
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0x18]
mov ebx, dword [ebp - 0x14]
mov word [ebx + eax*2], 0x2e
inc eax
cmp eax, edx
mov dword [ebp - 0x10], eax
jne 0x100c7e4d
lea ecx, [ebp - 0x18]
call dbg.reserve_for_push<u16, alloc::alloc::Global>
mov ebx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x10]
mov word [ebx + eax*2], 0x3b
inc eax
mov dword [ebp - 0x10], eax
mov edi, dword [0x10237108]
mov eax, dword [ebp - 0x10]
movsd xmm0, qword [ebp - 0x18]
test edi, edi
mov dword [ebp - 0x5c], eax
movsd qword [ebp - 0x64], xmm0
jne 0x100c7e90
push str.EnumerateLoadedModulesW64
push dword [0x102370f0]
call sub.kernel32.dll_GetProcAddress
test eax, eax
je 0x100c7f8e
mov edi, eax
mov dword [0x10237108], eax
call sub.kernel32.dll_GetCurrentProcess
lea ecx, [ebp - 0x64]
push ecx
push dbg.enum_loaded_modules_callback
push eax
call edi
movsd xmm0, qword [ebp - 0x64]
mov edx, dword [ebp - 0x5c]
movsd qword [ebp - 0x40], xmm0
mov dword [ebp - 0x38], edx
mov esi, dword [ebp - 0x40]
cmp edx, esi
jne 0x100c7ec6
lea ecx, [ebp - 0x40]
call dbg.reserve_for_push<u16, alloc::alloc::Global>
mov esi, dword [ebp - 0x40]
mov edx, dword [ebp - 0x38]
mov ebx, dword [ebp - 0x3c]
mov word [ebx + edx*2], 0
mov edi, dword [0x10237104]
test edi, edi
jne 0x100c7ef8
push str.SymSetSearchPathW
push dword [0x102370f0]
call sub.kernel32.dll_GetProcAddress
test eax, eax
je 0x100c7f9a
mov edi, eax
mov dword [0x10237104], eax
call sub.kernel32.dll_GetCurrentProcess
push ebx
push eax
call edi
test esi, esi
mov byte [0x102370c0], 1
je 0x100c7f18
mov ecx, ebx
mov edx, 2
call sym.___rust_dealloc
mov edi, dword [ebp - 0x1c]
xor eax, eax
jmp 0x100c7f31
mov eax, 1
jmp 0x100c7f31
push edi
call sub.kernel32.dll_ReleaseMutex
mov eax, 1
mov edx, edi
add esp, 0x58
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, 0xffffffff
mov edx, 0x21
push 0x101cddf0
call dbg.panic_bounds_check
mov edx, 0x1a
mov ecx, str.assertion_failed:_len___0
push 0x101cdd9c
call dbg.panic
add esp, 4
jmp 0x100c7fa4
mov ecx, 0x101cdd40
jmp 0x100c7f7b
mov ecx, 0x101cdd50
jmp 0x100c7f7b
mov ecx, 0x101cdd60
call dbg.unwrap_failed
jmp 0x100c7fa4
mov ecx, 0x101cdd70
call dbg.unwrap_failed
jmp 0x100c7fa4
mov ecx, 0x101cddac
call dbg.unwrap_failed
jmp 0x100c7fa4
mov ecx, 0x101cddbc
call dbg.unwrap_failed
ud2