Function at 0x406b90
Capabilities:
Complete processing asynchronous io request

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x40edd0
push 0x40a812
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x54
push ebx
push esi
push edi
mov dword [ebp - 0x18], esp
mov edi, ecx
xor ebx, ebx
push ebx
push ebx
lea eax, [ebp - 0x30]
push eax
call dword [sym.imp.ntoskrnl.exe_KeInitializeEvent]
mov eax, dword [edi]
cmp eax, ebx
je 0x406bd4
push ebx
push eax
call dword [sym.imp.ntoskrnl.exe_ExFreePoolWithTag]
mov esi, dword [ebp + 0xc]
push esi
push ebx
call dword [sym.imp.ntoskrnl.exe_ExAllocatePool]
mov dword [edi], eax
push esi
mov ecx, dword [ebp + 8]
push ecx
push eax
call sub.ntoskrnl.exe_memcpy
add esp, 0xc
lea edx, [ebp - 0x20]
push edx
lea eax, [ebp - 0x30]
push eax
push 1
push ebx
push ebx
push ebx
push ebx
mov ecx, dword [edi + 0x18]
push ecx
push 3
call dword [sym.imp.ntoskrnl.exe_IoBuildDeviceIoControlRequest]
mov esi, eax
mov dword [edi + 0xc], esi
cmp esi, ebx
jne 0x406c2a
mov eax, 0xc000009a
mov ecx, dword [ebp - 0x10]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
push esi
push ebx
push ebx
mov edx, dword [ebp + 0xc]
push edx
mov eax, dword [edi]
push eax
call dword [sym.imp.ntoskrnl.exe_IoAllocateMdl]
mov dword [edi + 8], eax
cmp eax, ebx
je 0x406c12
mov dword [ebp - 4], ebx
push 2
push ebx
push eax
call dword [sym.imp.ntoskrnl.exe_MmProbeAndLockPages]
mov dword [ebp - 4], 0xffffffff
mov dword [ebp - 0x48], 1
mov ecx, 0xe
mov word [ebp - 0x44], cx
mov edx, 2
mov word [ebp - 0x42], dx
mov eax, dword [ebp + 0x14]
mov ecx, eax
sar ecx, 8
and ecx, 0xff
shl eax, 8
xor ecx, eax
mov word [ebp - 0x40], cx
mov edx, dword [ebp + 0x10]
mov dword [ebp - 0x3e], edx
mov dword [ebp - 0x60], ebx
mov dword [ebp - 0x5c], ebx
mov dword [ebp - 0x58], ebx
mov dword [ebp - 0x54], ebx
mov dword [ebp - 0x50], 0x16
lea eax, [ebp - 0x48]
mov dword [ebp - 0x4c], eax
mov eax, dword [esi + 0x60]
sub eax, 0x24
mov dword [eax + 0x1c], ebx
mov dword [eax + 0x20], ebx
mov byte [eax + 3], bl
mov eax, dword [esi + 0x60]
sub eax, 0x24
mov byte [eax], 0xf
mov byte [eax + 1], 9
mov ecx, dword [edi + 0x18]
mov dword [eax + 0x14], ecx
mov edx, dword [edi + 0x14]
mov dword [eax + 0x18], edx
mov ecx, dword [ebp + 0xc]
mov dword [eax + 4], ecx
lea edx, [ebp - 0x60]
mov dword [eax + 8], edx
mov eax, dword [edi + 8]
mov dword [esi + 4], eax
mov eax, dword [esi + 0x60]
sub eax, 0x24
mov dword [eax + 0x1c], 0x406800
lea ecx, [ebp - 0x30]
mov dword [eax + 0x20], ecx
mov byte [eax + 3], pe_nt_image_headers32
mov edx, esi
mov ecx, dword [edi + 0x18]
call dword [sym.imp.ntoskrnl.exe_IofCallDriver]
cmp eax, 0x103
jne 0x406d15
push ebx
push ebx
push ebx
push ebx
lea edx, [ebp - 0x30]
push edx
call dword [sym.imp.ntoskrnl.exe_KeWaitForSingleObject]
cmp eax, ebx
je 0x406d20
cmp eax, 0x103
jne 0x406d57
mov ecx, dword [edi + 0xc]
cmp ecx, ebx
je 0x406d32
xor dl, dl
call dword [sym.imp.ntoskrnl.exe_IofCompleteRequest]
mov dword [edi + 0xc], ebx
xor eax, eax
mov ecx, dword [ebp - 0x10]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov eax, 0xc0000001
mov ecx, dword [ebp - 0x10]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10