Function at 0x100c66c0
Capabilities:
Link many functions at runtime

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x58
mov edi, dword [0x102260b8]
test edi, edi
jne 0x100c6795
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 0x100c6735
mov ecx, 0x1f
nop dword [eax + eax]
cmp ecx, 0x20
ja 0x100c6a2b
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 0x100c6700
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 0x100c6a0f
mov ecx, eax
xor eax, eax
lock cmpxchg dword [0x102260b8], ecx
mov edx, ecx
je 0x100c6793
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 [0x102260e0]
test eax, eax
jne 0x100c67bf
push str.dbghelp.dll
call sub.kernel32.dll_LoadLibraryA
test eax, eax
mov dword [0x102260e0], eax
je 0x100c6a16
cmp byte [0x102260bc], 0
je 0x100c67cf
xor eax, eax
jmp 0x100c6a21
mov ecx, dword [0x102260e4]
mov dword [ebp - 0x1c], edi
test ecx, ecx
jne 0x100c67f6
push str.SymGetOptions
push eax
call sub.kernel32.dll_GetProcAddress
test eax, eax
je 0x100c6a58
mov ecx, eax
mov dword [0x102260e4], eax
call ecx
mov ecx, eax
mov eax, dword [0x102260e8]
test eax, eax
jne 0x100c6824
mov esi, ecx
push str.SymSetOptions
push dword [0x102260e0]
call sub.kernel32.dll_GetProcAddress
test eax, eax
je 0x100c6a5f
mov ecx, esi
mov dword [0x102260e8], eax
or ecx, 4
push ecx
call eax
mov edi, dword [0x102260ec]
test edi, edi
jne 0x100c6853
push str.SymInitializeW
push dword [0x102260e0]
call sub.kernel32.dll_GetProcAddress
test eax, eax
je 0x100c6a66
mov edi, eax
mov dword [0x102260ec], 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 dbg.do_reserve_and_handle<u16, alloc::alloc::Global>
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 [0x102260f0]
mov dword [ebp - 0x10], esi
test edi, edi
jne 0x100c68db
push str.SymGetSearchPathW
push dword [0x102260e0]
call sub.kernel32.dll_GetProcAddress
test eax, eax
je 0x100c6a72
mov edi, eax
mov dword [0x102260f0], eax
call sub.kernel32.dll_GetCurrentProcess
push esi
push ebx
push eax
call edi
cmp eax, 1
jne 0x100c68fe
push ebx
call sub.kernel32.dll_lstrlenW
test eax, eax
js 0x100c6a3f
cmp esi, eax
jae 0x100c6944
jmp 0x100c6947
mov dword [ebp - 0x10], 0
xor eax, eax
mov edx, dword [ebp - 0x18]
test edx, edx
jne 0x100c6921
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 0x100c693d
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 [0x102260f8]
mov eax, dword [ebp - 0x10]
movsd xmm0, qword [ebp - 0x18]
test edi, edi
mov dword [ebp - 0x5c], eax
movsd qword [ebp - 0x64], xmm0
jne 0x100c6980
push str.EnumerateLoadedModulesW64
push dword [0x102260e0]
call sub.kernel32.dll_GetProcAddress
test eax, eax
je 0x100c6a7e
mov edi, eax
mov dword [0x102260f8], 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 0x100c69b6
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 [0x102260f4]
test edi, edi
jne 0x100c69e8
push str.SymSetSearchPathW
push dword [0x102260e0]
call sub.kernel32.dll_GetProcAddress
test eax, eax
je 0x100c6a8a
mov edi, eax
mov dword [0x102260f4], eax
call sub.kernel32.dll_GetCurrentProcess
push ebx
push eax
call edi
test esi, esi
mov byte [0x102260bc], 1
je 0x100c6a08
mov ecx, ebx
mov edx, 2
call sym.___rust_dealloc
mov edi, dword [ebp - 0x1c]
xor eax, eax
jmp 0x100c6a21
mov eax, 1
jmp 0x100c6a21
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 0x101be86c
call dbg.panic_bounds_check
mov edx, 0x1a
mov ecx, str.assertion_failed:_len___0
push 0x101be818
call dbg.panic
add esp, 4
jmp 0x100c6a94
mov ecx, 0x101be7bc
jmp 0x100c6a6b
mov ecx, 0x101be7cc
jmp 0x100c6a6b
mov ecx, 0x101be7dc
call dbg.unwrap_failed
jmp 0x100c6a94
mov ecx, 0x101be7ec
call dbg.unwrap_failed
jmp 0x100c6a94
mov ecx, 0x101be828
call dbg.unwrap_failed
jmp 0x100c6a94
mov ecx, 0x101be838
call dbg.unwrap_failed
ud2