Function at 0x100017d0
Capabilities:
Link many functions at runtime

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x54
mov esi, dword [0x10198dc0]
test esi, esi
je 0x10001826
push 0
push 0xffffffffffffffff
push esi
call dword [sym.imp.kernel32.dll_WaitForSingleObjectEx]
mov eax, dword [0x10198dc8]
test eax, eax
jne 0x1000180d
push str.dbghelp.dll
call dword [sym.imp.kernel32.dll_LoadLibraryA]
test eax, eax
mov dword [0x10198dc8], eax
je 0x100018fd
cmp byte [0x10198dc4], 0
je 0x1000190e
xor eax, eax
mov edx, esi
add esp, 0x54
pop esi
pop edi
pop ebx
pop ebp
ret
lea eax, [esp + 0xc]
push 0x21
push str.LocalRustBacktraceMutex00000000
push eax
call fcn.10100490
add esp, 0xc
call dword [sym.imp.kernel32.dll_GetCurrentProcessId]
test eax, eax
je 0x10001885
mov ecx, 0x1f
nop dword [eax]
cmp ecx, 0x20
ja 0x10001b65
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 + 0xc], bl
dec ecx
cmp eax, 0x10
mov eax, esi
jae 0x10001850
movsd xmm1, qword [esp + 0x1c]
movzx eax, byte [esp + 0x2c]
movsd xmm0, qword [esp + 0x24]
movsd xmm2, qword [esp + 0xc]
movsd qword [esp + 0x40], xmm1
movsd xmm1, qword [esp + 0x14]
mov byte [esp + 0x50], al
lea eax, [esp + 0x30]
movsd qword [esp + 0x48], xmm0
movsd qword [esp + 0x30], xmm2
movsd qword [esp + 0x38], xmm1
push eax
push 0
push 0
call dword [sym.imp.kernel32.dll_CreateMutexA]
test eax, eax
je 0x100018f3
mov esi, eax
xor eax, eax
lock cmpxchg dword [0x10198dc0], esi
je 0x100017e1
mov edi, eax
push esi
call dword [sym.imp.kernel32.dll_CloseHandle]
mov esi, edi
jmp 0x100017e1
mov eax, 1
jmp 0x1000181c
push esi
call dword [sym.imp.kernel32.dll_ReleaseMutex]
mov eax, 1
jmp 0x1000181c
mov ecx, dword [0x10198dcc]
test ecx, ecx
jne 0x10001933
push str.SymGetOptions
push eax
call dword [sym.imp.kernel32.dll_GetProcAddress]
test eax, eax
je 0x10001b79
mov ecx, eax
mov dword [0x10198dcc], eax
call ecx
mov edi, eax
mov eax, dword [0x10198dd0]
test eax, eax
jne 0x1000195e
push str.SymSetOptions
push dword [0x10198dc8]
call dword [sym.imp.kernel32.dll_GetProcAddress]
test eax, eax
je 0x10001b83
mov dword [0x10198dd0], eax
or edi, 4
push edi
call eax
mov edi, dword [0x10198dd4]
test edi, edi
jne 0x1000198e
push str.SymInitializeW
push dword [0x10198dc8]
call dword [sym.imp.kernel32.dll_GetProcAddress]
test eax, eax
je 0x10001b8d
mov edi, eax
mov dword [0x10198dd4], eax
call dword [sym.imp.kernel32.dll_GetCurrentProcess]
push 1
push 0
push eax
call edi
mov dword [esp], 0
mov dword [esp + 4], 2
mov dword [esp + 8], 0
mov ecx, esp
xor edx, edx
push 0x400
call fcn.1010ceb0
add esp, 4
mov ebx, dword [esp + 4]
mov ebp, dword [esp + 8]
lea eax, [ebx + ebp*2]
push 0x7fe
push 0
push eax
call fcn.10100a10
add esp, 0xc
mov word [ebx + ebp*2 + 0x7fe], 0
add ebp, 0x400
mov edi, dword [0x10198dd8]
mov dword [esp + 8], ebp
test edi, edi
jne 0x10001a1c
push str.SymGetSearchPathW
push dword [0x10198dc8]
call dword [sym.imp.kernel32.dll_GetProcAddress]
test eax, eax
je 0x10001bab
mov edi, eax
mov dword [0x10198dd8], eax
call dword [sym.imp.kernel32.dll_GetCurrentProcess]
push ebp
push ebx
push eax
call edi
cmp eax, 1
jne 0x10001a41
push ebx
call dword [sym.imp.kernel32.dll_lstrlenW]
test eax, eax
js 0x10001b97
cmp ebp, eax
jae 0x10001a86
jmp 0x10001a8a
mov dword [esp + 8], 0
mov eax, dword [esp]
test eax, eax
jne 0x10001a5e
mov ecx, esp
call fcn.10001bd0
mov eax, dword [esp]
mov ebx, dword [esp + 4]
cmp eax, 1
mov word [ebx], 0x2e
mov dword [esp + 8], 1
jne 0x10001a7b
mov ecx, esp
call fcn.10001bd0
mov ebx, dword [esp + 4]
mov eax, 2
mov word [ebx + 2], 0x3b
mov dword [esp + 8], eax
mov edi, dword [0x10198de0]
mov eax, dword [esp + 8]
movsd xmm0, qword [esp]
test edi, edi
mov dword [esp + 0x38], eax
movsd qword [esp + 0x30], xmm0
jne 0x10001ac7
push str.EnumerateLoadedModulesW64
push dword [0x10198dc8]
call dword [sym.imp.kernel32.dll_GetProcAddress]
test eax, eax
je 0x10001bb5
mov edi, eax
mov dword [0x10198de0], eax
call dword [sym.imp.kernel32.dll_GetCurrentProcess]
lea ecx, [esp + 0x30]
push ecx
push 0x10001c60
push eax
call edi
movsd xmm0, qword [esp + 0x30]
mov edi, dword [esp + 0x38]
movsd qword [esp + 0xc], xmm0
mov dword [esp + 0x14], edi
mov ebx, dword [esp + 0xc]
cmp edi, ebx
jne 0x10001b03
lea ecx, [esp + 0xc]
call fcn.10001bd0
mov ebx, dword [esp + 0xc]
mov ebp, dword [esp + 0x10]
mov word [ebp + edi*2], 0
mov edi, dword [0x10198ddc]
test edi, edi
jne 0x10001b38
push str.SymSetSearchPathW
push dword [0x10198dc8]
call dword [sym.imp.kernel32.dll_GetProcAddress]
test eax, eax
je 0x10001bbf
mov edi, eax
mov dword [0x10198ddc], eax
call dword [sym.imp.kernel32.dll_GetCurrentProcess]
push ebp
push eax
call edi
test ebx, ebx
mov byte [0x10198dc4], 1
je 0x1000181a
push ebp
push 0
push dword [0x101990e0]
call dword [sym.imp.kernel32.dll_HeapFree]
jmp 0x1000181a
mov ecx, 0xffffffff
mov edx, 0x21
push 0x10119d0c
call fcn.1010cfe0
mov ecx, 0x10119c9c
call fcn.1010d3b0
mov ecx, 0x10119cac
call fcn.1010d3b0
mov ecx, 0x10119cbc
call fcn.1010d3b0
mov ecx, str.assertion_failed:_len___0
mov edx, 0x1a
push 0x10119cdc
call fcn.1010d0a0
mov ecx, 0x10119ccc
call fcn.1010d3b0
mov ecx, 0x10119cec
call fcn.1010d3b0
mov ecx, 0x10119cfc
call fcn.1010d3b0
int3