Function at 0x111a8
Capabilities:
Complete processing asynchronous io request

Disassembly:
push ebp
mov ebp, esp
push ecx
push ebx
mov ebx, dword [ebp + 0x14]
push esi
push edi
push ebx
call fcn.00010400
mov edx, dword [ebp + 0x10]
movzx eax, byte [edx + 1]
push 4
pop ecx
cmp eax, ecx
jg 0x1132e
je 0x11300
xor esi, esi
sub eax, esi
je 0x112d1
dec eax
je 0x112c3
dec eax
je 0x11201
dec eax
jne 0x114eb
cmp dword [ebx + 8], ecx
jne 0x111f6
mov eax, dword [ebx + 0xc]
mov dword [ebx + 8], eax
mov eax, dword [ebp + 0xc]
mov dword [eax + 0x18], esi
jmp 0x114eb
cmp dword [ebx + 8], 5
je 0x1120d
push ebx
call fcn.00010e90
mov eax, dword [ebx + 8]
push ebx
mov dword [ebx + 0xc], eax
mov dword [ebx + 8], 6
call fcn.00010422
push ebx
call fcn.00010422
push esi
push esi
push esi
push esi
lea eax, [ebx + 0x54]
push eax
call dword [sym.imp.ntoskrnl.exe_KeWaitForSingleObject]
lea ecx, [ebx + 0x30]
call dword [sym.imp.HAL.dll_ExAcquireFastMutex]
lea edi, [ebx + 0x24]
mov eax, dword [edi]
cmp eax, edi
mov ecx, dword [eax]
mov dword [ebp + 0x14], ecx
je 0x11289
lea ecx, [eax - 0x28]
lea eax, [ecx + 0x28]
mov edx, dword [eax]
mov esi, dword [eax + 4]
mov dword [esi], edx
mov dword [edx + 4], esi
cmp dword [ecx + 8], 5
jne 0x11270
mov dword [eax + 4], eax
mov dword [eax], eax
and dword [ecx + 0x1c], 0
mov byte [ecx + 0x31], 1
jmp 0x1127b
dec dword [ebx + 0x2c]
push ecx
push dword [ecx]
call fcn.00010ebc
mov eax, dword [ebp + 0x14]
cmp eax, edi
mov ecx, dword [eax]
mov dword [ebp + 0x14], ecx
jne 0x1124b
xor esi, esi
lea ecx, [ebx + 0x30]
call dword [sym.imp.HAL.dll_ExReleaseFastMutex]
mov edx, dword [ebp + 0xc]
inc byte [edx + 0x23]
add dword [edx + 0x60], 0x24
mov dword [edx + 0x18], esi
mov ecx, dword [ebx + 0x20]
call dword [sym.imp.ntoskrnl.exe_IofCallDriver]
push dword [ebx + 0x20]
mov esi, eax
call dword [sym.imp.ntoskrnl.exe_IoDetachDevice]
push dword [ebp + 8]
call dword [sym.imp.ntoskrnl.exe_IoDeleteDevice]
mov eax, esi
jmp 0x11508
mov eax, dword [ebx + 8]
mov dword [ebx + 0xc], eax
mov dword [ebx + 8], ecx
jmp 0x111f6
push dword [ebp + 0xc]
push dword [ebx + 0x20]
call fcn.0001113a
mov edi, eax
cmp edi, esi
jl 0x112ed
push dword [ebp + 0xc]
push ebx
call fcn.00010e6a
mov edi, eax
mov ecx, dword [ebp + 0xc]
xor dl, dl
mov dword [ecx + 0x18], edi
call dword [sym.imp.ntoskrnl.exe_IofCompleteRequest]
jmp 0x11500
push ebx
call fcn.00010422
xor esi, esi
push esi
push esi
push esi
push esi
lea eax, [ebx + 0x64]
push eax
call dword [sym.imp.ntoskrnl.exe_KeWaitForSingleObject]
push ebx
call fcn.00010400
mov eax, dword [ebx + 8]
mov dword [ebx + 0xc], eax
mov dword [ebx + 8], 3
jmp 0x111f6
push 5
pop ecx
sub eax, ecx
je 0x114d7
dec eax
je 0x114c9
dec eax
je 0x1139f
sub eax, 0x10
jne 0x114eb
mov eax, dword [ebx + 8]
push ebx
mov dword [ebx + 0xc], eax
mov dword [ebx + 8], ecx
call fcn.00010e90
lea ecx, [ebx + 0x30]
call dword [sym.imp.HAL.dll_ExAcquireFastMutex]
lea eax, [ebx + 0x24]
mov ecx, dword [eax]
mov edx, dword [ecx]
jmp 0x1138d
mov eax, ecx
mov esi, dword [eax]
mov edi, dword [eax + 4]
mov dword [edi], esi
mov dword [esi + 4], edi
mov dword [eax + 4], eax
mov dword [eax], eax
and dword [ecx - 0xc], 0
mov byte [ecx + 9], 1
mov ecx, edx
mov edx, dword [edx]
lea eax, [ebx + 0x24]
cmp ecx, eax
jne 0x1136d
lea ecx, [ebx + 0x30]
call dword [sym.imp.HAL.dll_ExReleaseFastMutex]
jmp 0x114e4
xor edi, edi
cmp dword [edx + 4], edi
jne 0x114eb
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0x28]
add eax, 0x7c
cmp dword [eax], edi
jle 0x113c4
or edx, 0xffffffff
lock xadd dword [eax], edx
push ecx
call fcn.00015e80
lea esi, [ebx + 0x30]
mov ecx, esi
call dword [sym.imp.HAL.dll_ExAcquireFastMutex]
mov eax, dword [ebp + 0xc]
mov eax, dword [eax + 0x1c]
cmp eax, edi
mov dword [ebp + 0x14], eax
je 0x113f4
cmp dword [ebx + 0x2c], 0
mov edi, dword [eax]
mov dword [ebp + 8], edi
jne 0x113f7
mov ecx, esi
call dword [sym.imp.HAL.dll_ExReleaseFastMutex]
jmp 0x114eb
mov dword [ebp + 8], edi
lea ecx, [ebx + 0x24]
mov eax, dword [ecx]
xor esi, esi
jmp 0x11409
cmp byte [eax + 8], 0
je 0x11407
inc esi
mov eax, dword [eax]
cmp eax, ecx
jne 0x11400
add esi, edi
push 0x62735556
lea eax, [esi*4 + 7]
push eax
push 1
mov dword [ebp - 4], esi
call dword [sym.imp.ntoskrnl.exe_ExAllocatePoolWithTag]
test eax, eax
mov dword [ebp + 0x10], eax
jne 0x11451
lea ecx, [ebx + 0x30]
call dword [sym.imp.HAL.dll_ExReleaseFastMutex]
mov ecx, dword [ebp + 0xc]
mov esi, 0xc000009a
xor dl, dl
mov dword [ecx + 0x18], esi
call dword [sym.imp.ntoskrnl.exe_IofCompleteRequest]
mov edi, esi
jmp 0x11500
test edi, edi
je 0x11468
mov esi, dword [ebp + 0x14]
mov ecx, edi
add esi, 4
lea edi, [eax + 4]
rep movsd dword es:[edi], dword [esi]
mov esi, dword [ebp - 4]
mov edi, dword [ebp + 8]
lea ecx, [ebx + 0x24]
mov dword [eax], esi
mov esi, dword [ecx]
cmp esi, ecx
je 0x114a0
lea edi, [eax + edi*4 + 4]
cmp byte [esi + 8], 0
je 0x11493
mov eax, dword [esi - 0x28]
mov dword [edi], eax
mov ecx, dword [esi - 0x28]
call dword [sym.imp.ntoskrnl.exe_ObfReferenceObject]
mov eax, dword [ebp + 0x10]
add edi, 4
jmp 0x11497
mov byte [esi + 9], 1
mov esi, dword [esi]
lea ecx, [ebx + 0x24]
cmp esi, ecx
jne 0x11477
cmp dword [ebp + 0x14], 0
je 0x114b4
push 0
push dword [ebp + 0x14]
call dword [sym.imp.ntoskrnl.exe_ExFreePoolWithTag]
mov eax, dword [ebp + 0x10]
mov esi, dword [ebp + 0xc]
lea ecx, [ebx + 0x30]
mov dword [esi + 0x1c], eax
call dword [sym.imp.HAL.dll_ExReleaseFastMutex]
and dword [esi + 0x18], 0
jmp 0x114eb
cmp dword [ebx + 8], 2
jne 0x114e4
mov eax, dword [ebx + 0xc]
mov dword [ebx + 8], eax
jmp 0x114e4
mov eax, dword [ebx + 8]
mov dword [ebx + 0xc], eax
mov dword [ebx + 8], 2
mov eax, dword [ebp + 0xc]
and dword [eax + 0x18], 0
mov edx, dword [ebp + 0xc]
inc byte [edx + 0x23]
add dword [edx + 0x60], 0x24
mov ecx, dword [ebx + 0x20]
call dword [sym.imp.ntoskrnl.exe_IofCallDriver]
mov edi, eax
push ebx
call fcn.00010422
mov eax, edi
pop edi
pop esi
pop ebx
leave
ret 0x10