Function at 0x42c330
Capabilities:
Resolve function by parsing pe exports

Disassembly:
mov eax, dword [0x4d4214]
sub esp, 0x5c
test eax, eax
push ebx
push ebp
push esi
push edi
jne 0x42c34d
pop edi
pop esi
pop ebp
mov eax, 0x17
pop ebx
add esp, 0x5c
ret
mov eax, dword [0x4d4218]
push 0x2710
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
test eax, eax
je 0x42c36f
pop edi
pop esi
pop ebp
mov eax, 0x15
pop ebx
add esp, 0x5c
ret
mov al, byte [0x4d3d40]
xor ebp, ebp
test al, al
je 0x42c3c1
mov edx, dword [esp + 0x70]
mov esi, 0x4d3d40
mov edi, esi
mov eax, edx
mov bl, byte [eax]
mov cl, bl
cmp bl, byte [esi]
jne 0x42c3ab
test cl, cl
je 0x42c3a7
mov bl, byte [eax + 1]
mov cl, bl
cmp bl, byte [esi + 1]
jne 0x42c3ab
add eax, 2
add esi, 2
test cl, cl
jne 0x42c387
xor eax, eax
jmp 0x42c3b0
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x42c3c1
mov al, byte [edi + 0x24]
add edi, 0x24
inc ebp
mov esi, edi
test al, al
jne 0x42c385
lea ebx, [ebp + ebp*8]
shl ebx, 2
mov al, byte [ebx + 0x4d3d40]
lea edi, [ebx + 0x4d3d40]
test al, al
jne 0x42c3f2
mov ecx, dword [0x4d4218]
push ecx
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
pop edi
pop esi
pop ebp
mov eax, 0x18
pop ebx
add esp, 0x5c
ret
mov edx, dword [0x4d4214]
lea eax, [edx - 1]
cmp eax, 0xa
ja case.0x42c40c.6
xor ecx, ecx
mov cl, byte [eax + 0x42c704]
jmp dword [ecx*4 + 0x42c6ec]
mov eax, dword [ebx + 0x4d3d5c]
test eax, eax
jne 0x42c427
mov esi, 0x15
jmp 0x42c6d3
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ebp, dword [esp + 0x74]
lea eax, [esp + 0x1c]
cmp ebp, 1
push 0
push eax
push 0
sete dl
push 0
lea ecx, [esp + 0x23]
mov byte [esp + 0x23], dl
mov edx, dword [ebx + 0x4d3d60]
push 1
push ecx
push 0x2d0944
push edx
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
mov cl, byte [0x4a0400]
mov ebp, eax
mov eax, dword [str.._]
mov byte [esp + 0x2c], cl
mov dword [esp + 0x28], eax
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x28]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea eax, [esp + 0x28]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
xor esi, esi
push esi
push esi
push 3
push esi
push 3
push 0xc0000000
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
cmp eax, 0xffffffff
mov dword [ebx + 0x4d3d5c], eax
jne 0x42c4d2
mov dword [ebx + 0x4d3d5c], esi
mov esi, 0x15
jmp 0x42c6d3
cmp ebp, esi
jne 0x42c6d3
mov esi, 0x15
jmp 0x42c6d3
xor esi, esi
jmp 0x42c6d3
mov cl, byte [ebx + 0x4d3d48]
mov dl, byte [ebx + 0x4d3d4c]
mov byte [esp + 0x14], cl
xor ecx, ecx
mov dword [esp + 0x30], ecx
mov al, byte [ebx + 0x4d3d50]
mov dword [esp + 0x34], ecx
mov byte [esp + 0x15], dl
mov dword [esp + 0x38], ecx
mov byte [esp + 0x16], al
mov dword [esp + 0x3c], ecx
push ecx
push ecx
push 1
push ecx
mov dword [esp + 0x50], ecx
call dword [sym.imp.KERNEL32.dll_CreateEventA]
lea edx, [esp + 0x30]
mov dword [esp + 0x40], eax
push edx
mov edx, dword [esp + 0x78]
dec edx
lea eax, [esp + 0x1c]
neg edx
push eax
push 0
sbb edx, edx
push 0
lea ecx, [esp + 0x24]
and edx, 4
push 3
push ecx
add edx, 0x22200c
jmp 0x42c679
mov al, byte [ebx + 0x4d3d48]
mov cl, byte [ebx + 0x4d3d4c]
mov byte [esp + 0x47], al
xor eax, eax
mov dword [esp + 0x30], eax
mov dl, byte [ebx + 0x4d3d50]
mov dword [esp + 0x34], eax
mov byte [esp + 0x48], cl
mov dword [esp + 0x38], eax
mov byte [esp + 0x49], dl
mov dword [esp + 0x3c], eax
push eax
push eax
push 1
push eax
mov dword [esp + 0x50], eax
call dword [sym.imp.KERNEL32.dll_CreateEventA]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x74]
cmp eax, 1
mov eax, dword [0x4d420c]
je 0x42c5b0
mov eax, dword [0x4d4204]
lea ecx, [esp + 0x30]
lea edx, [esp + 0x18]
push ecx
push edx
mov edx, dword [0x4d3d28]
push 0
push 0
lea ecx, [esp + 0x54]
push 0x28
push ecx
push eax
push edx
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
jne 0x42c610
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x3e5
jne 0x42c5fb
mov eax, dword [esp + 0x40]
push 0x7d0
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
cmp eax, 0x102
je 0x42c610
mov ecx, dword [esp + 0x40]
mov esi, 0x15
push ecx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x42c6d3
mov ecx, dword [esp + 0x40]
xor esi, esi
push ecx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x42c6d3
mov dl, byte [ebx + 0x4d3d48]
mov al, byte [ebx + 0x4d3d4c]
mov cl, byte [ebx + 0x4d3d50]
push 0
push 0
push 1
push 0
mov byte [esp + 0x30], dl
mov byte [esp + 0x31], al
mov byte [esp + 0x32], cl
call dword [sym.imp.KERNEL32.dll_CreateEventA]
mov ebx, dword [esp + 0x74]
lea edx, [esp + 0x30]
mov dword [esp + 0x40], eax
push edx
lea eax, [esp + 0x1c]
xor edx, edx
push eax
cmp ebx, 1
push 0
push 0
lea ecx, [esp + 0x30]
push 5
setne dl
push ecx
add edx, 0x803
mov eax, dword [0x4d3d28]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
jne 0x42c6c0
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x3e5
jne 0x42c6ae
mov ecx, dword [esp + 0x40]
push 0x7d0
push ecx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
cmp eax, 0x102
je 0x42c6c0
mov edx, dword [esp + 0x40]
mov esi, 0x15
push edx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x42c6d3
mov edx, dword [esp + 0x40]
xor esi, esi
push edx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x42c6d3
mov esi, dword [esp + 0x74]
mov eax, dword [0x4d4218]
push eax
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov eax, esi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x5c
ret