Function at 0x419954
Capabilities:
Check for time delay via gettickcount
Check mutex on windows
Create process on windows

Disassembly:
push ebp
lea ebp, [esp - 0x6c]
sub esp, 0x2bc
mov eax, dword [ebp + 0x78]
push ebx
xor ebx, ebx
cmp eax, ebx
push esi
push edi
mov dword [ebp + 0x48], ebx
je 0x419995
mov dx, word [eax]
cmp dx, bx
je 0x419995
cmp word [eax + 2], 0x3a
jne 0x419995
mov cx, word [eax + 4]
cmp cx, bx
je 0x419992
cmp cx, 0x5c
jne 0x419995
cmp word [eax + 6], bx
jne 0x419995
mov dword [ebp + 0x48], edx
push dword [ebp + 0x7c]
mov word [ebp + 0x60], 0xff
mov word [ebp + 0x62], 0x3a
mov word [ebp + 0x64], bx
call dword [sym.imp.KERNEL32.DLL_lstrlenW]
lea eax, [eax + eax + 0x22]
add eax, 0x28
push eax
lea ecx, [ebp + 0x50]
call fcn.00435c56
mov eax, dword [ebp + 0x50]
push 0x10
pop ecx
mov dword [ebp + 0x68], eax
xor eax, eax
mov dword [ebp - 0x48], 0x44
lea edi, [ebp - 0x44]
rep stosd dword es:[edi], eax
or dword [ebp - 0x1c], 1
mov esi, str..D:
lea edi, [ebp + 4]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
push str.ImDiskFormat
movsd dword es:[edi], dword [esi]
push ebx
push ebx
mov word [ebp - 0x18], bx
mov dword [ebp + 0x58], 8
movsd dword es:[edi], dword [esi]
call dword [sym.imp.KERNEL32.DLL_CreateMutexW]
mov esi, dword [ebp + 0x48]
cmp si, bx
mov dword [ebp + 0x4c], eax
je 0x419a0e
mov word [ebp + 0x60], si
jmp 0x419a3a
push dword [ebp + 0x78]
call fcn.0040f7d0
cmp eax, ebx
pop ecx
mov dword [ebp + 0x74], eax
jge 0x419a30
lea ecx, [ebp + 0x50]
call fcn.0043092f
mov eax, dword [ebp + 0x74]
neg eax
jmp 0x419d60
call dword [0x4acec4]
mov word [ebp + 0x60], ax
push dword [ebp + 0x74]
lea eax, [ebp - 0x250]
push str.DeviceImDisk_u
push 0x103
push eax
call fcn.00480628
add esp, 0x10
cmp word [ebp + 0x60], bx
je 0x419a7c
cmp si, bx
jne 0x419a88
push ebx
push 1
push ebx
lea eax, [ebp + 0x60]
push eax
lea eax, [ebp - 0x250]
push eax
call fcn.0043a153
add esp, 0x14
test eax, eax
jne 0x419a88
mov dword [ebp + 0x58], 8
jmp 0x419d3c
push str.format.com
push dword [ebp + 0x68]
call dword [sym.imp.KERNEL32.DLL_lstrcpyW]
mov esi, dword [sym.imp.KERNEL32.DLL_lstrcatW]
lea eax, [ebp + 0x60]
push eax
push dword [ebp + 0x68]
call esi
push 0x4951ec
push dword [ebp + 0x68]
call esi
mov edi, dword [ebp + 0x7c]
cmp word [edi], 0x22
jne 0x419ad2
inc edi
inc edi
push edi
call dword [sym.imp.KERNEL32.DLL_lstrlenW]
cmp eax, ebx
jle 0x419ad2
lea eax, [edi + eax*2 - 2]
cmp word [eax], 0x22
jne 0x419ad2
mov word [eax], bx
push edi
push dword [ebp + 0x68]
call esi
push 0x497b04
push edi
call dword [sym.imp.SHLWAPI.dll_StrStrIW]
test eax, eax
jne 0x419af2
push str.__Y
push dword [ebp + 0x68]
call esi
push 0x497b04
push edi
call dword [sym.imp.SHLWAPI.dll_StrStrIW]
test eax, eax
jne 0x419b0c
push str.__X
push dword [ebp + 0x68]
call esi
mov ax, word [ebp + 0x60]
mov edi, dword [sym.imp.KERNEL32.DLL_GetTickCount]
mov word [ebp + 0xc], ax
mov dword [ebp + 0x5c], 0x12b
push ebx
push ebx
push 3
push ebx
push ebx
push 0x80000000
lea eax, [ebp + 4]
push eax
call dword [sym.imp.KERNEL32.DLL_CreateFileW]
cmp eax, 0xffffffff
jne 0x419be7
mov dword [ebp + 0x78], ebx
call edi
mov esi, eax
add esi, 0x64
call edi
mov ecx, esi
sub ecx, eax
cmp ecx, ebx
jle 0x419bdc
cmp byte [0x4ab290], bl
jle 0x419bdc
cmp ecx, ebx
jbe 0x419bcc
cmp ecx, 0x7d0
jbe 0x419b72
mov ecx, 0x3e8
jmp 0x419b7a
cmp ecx, 0x64
jbe 0x419b7a
push 0x64
pop ecx
push 0x4bf
push ecx
push ebx
lea eax, [ebp + 0x40]
push eax
push ebx
call dword [sym.imp.USER32.dll_MsgWaitForMultipleObjects]
jmp 0x419bcc
cmp dword [ebp + 0x78], ebx
jg 0x419b9d
call edi
mov ecx, esi
sub ecx, eax
test ecx, ecx
jle 0x419bd4
push 3
push ebx
push ebx
push ebx
lea eax, [ebp + 0x14]
push eax
call dword [sym.imp.USER32.dll_PeekMessageW]
test eax, eax
je 0x419bd4
lea eax, [ebp + 0x14]
push eax
call dword [sym.imp.USER32.dll_TranslateMessage]
lea eax, [ebp + 0x14]
push eax
call dword [sym.imp.USER32.dll_DispatchMessageW]
cmp dword [ebp + 0x78], ebx
jle 0x419bcc
dec dword [ebp + 0x78]
cmp byte [0x4ab290], bl
jg 0x419b8e
mov dword [ebp + 0x78], ebx
jmp 0x419b49
dec dword [ebp + 0x5c]
jns 0x419b21
jmp 0x419bee
push eax
call dword [sym.imp.KERNEL32.DLL_CloseHandle]
mov dword [ebp + 0x44], 2
mov dword [ebp + 0x5c], 0x1d
lea eax, [ebp + 0x30]
push eax
lea eax, [ebp - 0x48]
push eax
push ebx
push ebx
push ebx
push 1
push ebx
push ebx
push dword [ebp + 0x68]
push ebx
call dword [sym.imp.KERNEL32.DLL_CreateProcessW]
test eax, eax
jne 0x419c31
push str.Cannot_format_drive:
call fcn.0040f6e9
dec dword [ebp + 0x44]
pop ecx
jns 0x419c6b
push 8
pop esi
jmp 0x419d56
push dword [ebp + 0x34]
mov esi, dword [sym.imp.KERNEL32.DLL_CloseHandle]
mov dword [ebp + 0x54], ebx
call esi
push 0xffffffffffffffff
push dword [ebp + 0x30]
call dword [sym.imp.KERNEL32.DLL_WaitForSingleObject]
lea eax, [ebp + 0x54]
push eax
push dword [ebp + 0x30]
call dword [sym.imp.KERNEL32.DLL_GetExitCodeProcess]
mov eax, dword [ebp + 0x54]
push dword [ebp + 0x30]
mov dword [ebp + 0x58], eax
call esi
cmp dword [ebp + 0x54], ebx
je 0x419d11
mov dword [ebp + 0x78], ebx
call edi
mov esi, eax
add esi, 0x64
call edi
mov ecx, esi
sub ecx, eax
cmp ecx, ebx
jle 0x419d08
cmp byte [0x4ab290], bl
jle 0x419d08
cmp ecx, ebx
jbe 0x419cf8
cmp ecx, 0x7d0
jbe 0x419c9e
mov ecx, 0x3e8
jmp 0x419ca6
cmp ecx, 0x64
jbe 0x419ca6
push 0x64
pop ecx
push 0x4bf
push ecx
push ebx
lea eax, [ebp - 4]
push eax
push ebx
call dword [sym.imp.USER32.dll_MsgWaitForMultipleObjects]
jmp 0x419cf8
cmp dword [ebp + 0x78], ebx
jg 0x419cc9
call edi
mov ecx, esi
sub ecx, eax
test ecx, ecx
jle 0x419d00
push 3
push ebx
push ebx
push ebx
lea eax, [ebp + 0x14]
push eax
call dword [sym.imp.USER32.dll_PeekMessageW]
test eax, eax
je 0x419d00
lea eax, [ebp + 0x14]
push eax
call dword [sym.imp.USER32.dll_TranslateMessage]
lea eax, [ebp + 0x14]
push eax
call dword [sym.imp.USER32.dll_DispatchMessageW]
cmp dword [ebp + 0x78], ebx
jle 0x419cf8
dec dword [ebp + 0x78]
cmp byte [0x4ab290], bl
jg 0x419cba
mov dword [ebp + 0x78], ebx
jmp 0x419c75
dec dword [ebp + 0x5c]
jns 0x419bfc
cmp word [ebp + 0x48], bx
jne 0x419d2a
lea eax, [ebp - 0x250]
push eax
lea eax, [ebp + 0x60]
push eax
push 7
call dword [sym.imp.KERNEL32.DLL_DefineDosDeviceW]
push ebx
push 0x10000
push ebx
push dword [ebp + 0x74]
call fcn.0040fd93
add esp, 0x10
cmp dword [ebp + 0x4c], ebx
je 0x419d53
push dword [ebp + 0x4c]
call dword [sym.imp.KERNEL32.DLL_ReleaseMutex]
push dword [ebp + 0x4c]
call dword [sym.imp.KERNEL32.DLL_CloseHandle]
mov esi, dword [ebp + 0x58]
lea ecx, [ebp + 0x50]
call fcn.0043092f
mov eax, esi
pop edi
pop esi
pop ebx
add ebp, 0x6c
leave
ret