Function at 0x406758
Capabilities:
Complete processing asynchronous io request

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x60
mov eax, dword [section..data]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov ebx, dword [ebp + 8]
push esi
mov esi, dword [ebp + 0xc]
push edi
mov edi, dword [ebp + 0x10]
mov dword [ebp - 0x60], esi
mov dword [ebp - 0x58], edi
mov byte [ebp - 0x52], 1
call fcn.00401baa
test al, al
jne 0x40678e
mov ecx, edi
jmp 0x406a37
lea eax, [esi + 4]
push 0x4b
pop edx
test eax, eax
je 0x4067ab
mov eax, dword [eax + 4]
test eax, eax
je 0x4067ab
mov eax, dword [eax + 0x14]
test eax, eax
je 0x4067ab
lea edi, [eax + 4]
jmp 0x4067cb
push edx
lea eax, [ebp - 0x50]
push 0
push eax
call sub.ntoskrnl.exe_memset
add esp, 0xc
lea edi, [ebp - 0x50]
push 0xe
pop eax
push 2
mov word [ebp - 0x50], ax
pop eax
mov word [ebp - 0x4e], ax
mov ecx, 0x40e338
call dword [sym.imp.HAL.dll_KfAcquireSpinLock]
mov byte [ebp - 0x51], al
mov eax, dword [esi + 0x18]
cdq
push edx
push eax
push dword [0x40e344]
call fcn.00405666
test eax, eax
je 0x406a26
lea esi, [eax - 8]
movzx eax, word [edi]
push 0x4b
pop ecx
add edi, 2
mov dword [ebp - 0x5c], esi
lea edx, [esi + 0x8b]
cmp ax, cx
jbe 0x406821
mov esi, edi
mov byte [ebp - 0x52], 0
push 0x12
pop ecx
mov edi, edx
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
mov esi, dword [ebp - 0x5c]
jmp 0x40682f
add eax, 2
push eax
push edi
push edx
call sub.ntoskrnl.exe_memcpy
add esp, 0xc
push 2
pop eax
push esi
mov byte [esi + 0xd6], al
mov byte [esi + 0xd7], 1
call fcn.00405de8
mov dword [esi + 0x38], eax
call fcn.00401baa
test al, al
je 0x406a26
mov edx, dword [esi + 0x38]
test dl, 1
je 0x406875
mov dl, byte [ebp - 0x51]
mov ecx, 0x40e338
call dword [sym.imp.HAL.dll_KfReleaseSpinLock]
mov esi, 0xc00000bc
mov dword [ebx + 0x18], esi
jmp 0x4068af
mov eax, edx
and eax, 0xa
cmp al, 0xa
jne 0x4068c4
push esi
lea eax, [ebp - 0x48]
push eax
call fcn.004080d6
push 0x43
lea eax, [ebp - 0x48]
push eax
push dword [esi + 0x2c]
push dword [esi + 0x28]
push 0
call fcn.00403980
mov dl, byte [ebp - 0x51]
mov ecx, 0x40e338
call dword [sym.imp.HAL.dll_KfReleaseSpinLock]
and dword [ebx + 0x18], 0
xor esi, esi
and dword [ebx + 0x1c], 0
xor dl, dl
mov ecx, ebx
call dword [sym.imp.ntoskrnl.exe_IofCompleteRequest]
mov eax, esi
jmp 0x406a46
cmp byte [ebp - 0x52], 0
je 0x4069c2
test dl, 0x10
je 0x4069c2
test dl, 0x20
jne 0x4068ec
push dword [esi + 0x3c]
call fcn.00407f4e
test al, al
jne 0x4069c2
mov eax, dword [ebx + 0x60]
or byte [eax + 3], 1
lea eax, [esi + 0x140]
mov ecx, eax
call dword [sym.imp.HAL.dll_KfAcquireSpinLock]
lea ecx, [esi + 0x120]
mov edx, dword [ecx + 4]
lea edi, [ebx + 0x58]
cmp dword [edx], ecx
jne 0x406a21
mov dword [edi], ecx
mov dword [edi + 4], edx
mov dword [edx], edi
mov dl, al
mov dword [ecx + 4], edi
lea ecx, [esi + 0x140]
call dword [sym.imp.HAL.dll_KfReleaseSpinLock]
lea ecx, [ebx + 0x38]
mov eax, 0x407bb0
xchg dword [ecx], eax
mov dword [ebp - 0x5c], eax
lea eax, [ebp - 0x48]
push esi
push eax
mov dword [ebx + 0x18], 0x103
call fcn.004080d6
push 0x43
lea eax, [ebp - 0x48]
push eax
push dword [esi + 0x2c]
push dword [esi + 0x28]
push 0x13
call fcn.00403980
test eax, eax
js 0x40697a
mov dl, byte [ebp - 0x51]
mov ecx, 0x40e338
call dword [sym.imp.HAL.dll_KfReleaseSpinLock]
mov eax, 0x103
jmp 0x406a46
lea eax, [esi + 0x140]
mov ecx, eax
call dword [sym.imp.HAL.dll_KfAcquireSpinLock]
mov edx, dword [edi]
cmp dword [edx + 4], edi
jne 0x406a21
mov ecx, dword [edi + 4]
cmp dword [ecx], edi
jne 0x406a21
mov dword [ecx], edx
mov dword [edx + 4], ecx
mov dl, al
lea ecx, [esi + 0x140]
mov dword [edi + 4], edi
mov dword [edi], edi
call dword [sym.imp.HAL.dll_KfReleaseSpinLock]
mov eax, dword [ebp - 0x5c]
lea ecx, [ebx + 0x38]
xchg dword [ecx], eax
and dword [ebx + 0x18], 0
mov dl, byte [ebp - 0x51]
mov ecx, 0x40e338
call dword [sym.imp.HAL.dll_KfReleaseSpinLock]
push 0x32544c46
push 0x14
push 0
call dword [sym.imp.ntoskrnl.exe_ExAllocatePoolWithTag]
mov edx, eax
test edx, edx
je 0x406a34
mov ecx, dword [ebp - 0x60]
mov eax, dword [ecx + 0x1c]
mov dword [edx], eax
mov dword [edx + 8], esi
mov eax, dword [ecx + 0x20]
mov dword [edx + 4], eax
mov eax, dword [ecx + 0x18]
mov dword [edx + 0xc], eax
mov al, byte [ecx + 3]
mov byte [edx + 0x10], al
mov ecx, dword [ebx + 0x60]
inc byte [ebx + 0x23]
lea eax, [ecx + 0x24]
mov dword [ebx + 0x60], eax
mov dword [ecx + 0x1c], 0x406a60
mov dword [ecx + 0x20], edx
mov byte [ecx + 3], pe_nt_image_headers32
mov ecx, dword [ebp - 0x58]
jmp 0x406a3e
push 3
pop ecx
int 0x29
mov dl, byte [ebp - 0x51]
mov ecx, 0x40e338
call dword [sym.imp.HAL.dll_KfReleaseSpinLock]
mov ecx, dword [ebp - 0x58]
inc byte [ebx + 0x23]
add dword [ebx + 0x60], 0x24
mov edx, ebx
call dword [sym.imp.ntoskrnl.exe_IofCallDriver]
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0040aeb4
leave
ret 0xc