Function at 0x1c610
Capabilities:
Complete processing asynchronous io request

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
push esi
push edi
mov dword [ebp - 4], 0
jmp 0x1c62a
mov eax, dword [ebp - 4]
add eax, 1
mov dword [ebp - 4], eax
mov ecx, dword [ebp - 4]
cmp ecx, dword [0x2728c]
jge 0x1ca08
mov edx, dword [ebp + 8]
push edx
mov eax, dword [ebp - 4]
imul eax, eax, 0x28
mov ecx, dword [0x27294]
mov edx, dword [ecx + eax + 4]
push edx
call fcn.0001b7a0
movzx eax, al
test eax, eax
je 0x1ca03
cmp dword [ebp + 0x10], 0
je 0x1c66a
mov ecx, dword [ebp + 0x10]
mov byte [ecx], 1
movzx edx, byte [ebp + 0xc]
test edx, edx
je 0x1c69a
mov ecx, 5
mov edi, dword [ebp + 8]
add edi, 0x18
mov eax, dword [ebp - 4]
imul eax, eax, 0x28
mov edx, dword [0x27294]
mov esi, dword [edx + eax + 4]
add esi, 0x18
xor eax, eax
repe cmpsd dword [esi], dword es:[edi]
jne 0x1ca03
mov byte [ebp - 5], 0
mov ecx, dword [ebp - 4]
imul ecx, ecx, 0x28
mov edx, dword [0x27294]
cmp dword [edx + ecx + 0xc], 0
je 0x1c71e
mov eax, dword [ebp - 4]
imul eax, eax, 0x28
mov ecx, dword [0x27294]
mov edx, dword [ecx + eax + 0xc]
mov dword [edx + 0x1c], 0
mov eax, dword [ebp - 4]
imul eax, eax, 0x28
mov ecx, dword [0x27294]
mov edx, dword [ecx + eax + 0xc]
mov dword [edx + 0x18], 0xc0000001
xor eax, eax
mov ecx, dword [ebp - 4]
imul ecx, ecx, 0x28
mov edx, dword [0x27294]
mov ecx, dword [edx + ecx + 0xc]
add ecx, 0x38
xchg dword [ecx], eax
neg eax
sbb eax, eax
inc eax
mov byte [ebp - 5], al
movzx edx, byte [ebp - 5]
test edx, edx
jne 0x1c71e
mov eax, dword [ebp - 4]
imul eax, eax, 0x28
xor dl, dl
mov ecx, dword [0x27294]
mov ecx, dword [ecx + eax + 0xc]
call dword [sym.imp.ntoskrnl.exe_IofCompleteRequest]
movzx edx, byte [ebp - 5]
test edx, edx
jne 0x1c7af
mov eax, dword [ebp - 4]
imul eax, eax, 0x28
mov ecx, dword [0x27294]
cmp dword [ecx + eax + 0x14], 0
je 0x1c76a
mov edx, dword [ebp - 4]
imul edx, edx, 0x28
mov eax, dword [0x27294]
mov ecx, dword [eax + edx + 0x14]
mov byte [ecx + 0x14], 0
push 0
push 0
mov edx, dword [ebp - 4]
imul edx, edx, 0x28
mov eax, dword [0x27294]
mov ecx, dword [eax + edx + 0x14]
push ecx
call dword [sym.imp.ntoskrnl.exe_KeSetEvent]
mov edx, dword [ebp - 4]
imul edx, edx, 0x28
mov eax, dword [0x27294]
cmp dword [eax + edx + 0x10], 0
je 0x1c7af
mov ecx, dword [ebp - 4]
imul ecx, ecx, 0x28
mov edx, dword [0x27294]
mov eax, dword [edx + ecx + 0x10]
add eax, 0x10
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
jne 0x1c7af
mov edx, dword [ebp - 4]
imul edx, edx, 0x28
mov eax, dword [0x27294]
mov ecx, dword [eax + edx + 0x10]
push ecx
call dword [sym.imp.ntoskrnl.exe_ExFreePool]
mov edx, dword [ebp - 4]
imul edx, edx, 0x28
mov eax, dword [0x27294]
cmp dword [eax + edx + 0x19], 0
je 0x1c7d8
mov ecx, dword [ebp - 4]
imul ecx, ecx, 0x28
mov edx, dword [0x27294]
mov eax, dword [edx + ecx + 0x19]
push eax
call dword [sym.imp.ntoskrnl.exe_ExFreePool]
mov ecx, dword [ebp - 4]
imul ecx, ecx, 0x28
mov edx, dword [0x27294]
mov eax, dword [edx + ecx + 4]
mov ecx, dword [eax + 0x38]
push ecx
call dword [sym.imp.ntoskrnl.exe_ZwClose]
mov edx, dword [ebp - 4]
imul edx, edx, 0x28
mov eax, dword [0x27294]
mov ecx, dword [eax + edx + 4]
cmp dword [ecx + 0x3c], 0
je 0x1c820
mov edx, dword [ebp - 4]
imul edx, edx, 0x28
mov eax, dword [0x27294]
mov ecx, dword [eax + edx + 4]
mov edx, dword [ecx + 0x3c]
push edx
call dword [sym.imp.ntoskrnl.exe_ExFreePool]
mov eax, dword [ebp - 4]
imul eax, eax, 0x28
mov ecx, dword [0x27294]
mov edx, dword [ecx + eax + 4]
cmp dword [edx + 0x40], 0
je 0x1c850
mov eax, dword [ebp - 4]
imul eax, eax, 0x28
mov ecx, dword [0x27294]
mov edx, dword [ecx + eax + 4]
mov eax, dword [edx + 0x40]
push eax
call dword [sym.imp.ntoskrnl.exe_ExFreePool]
mov ecx, dword [ebp - 4]
imul ecx, ecx, 0x28
mov edx, dword [0x27294]
mov eax, dword [edx + ecx + 4]
cmp dword [eax + 0x4c], 0
je 0x1c880
mov ecx, dword [ebp - 4]
imul ecx, ecx, 0x28
mov edx, dword [0x27294]
mov eax, dword [edx + ecx + 4]
mov ecx, dword [eax + 0x4c]
push ecx
call dword [sym.imp.ntoskrnl.exe_ExFreePool]
mov edx, dword [ebp - 4]
imul edx, edx, 0x28
mov eax, dword [0x27294]
mov ecx, dword [eax + edx + 4]
cmp dword [ecx + 0x50], 0
je 0x1c8ae
mov edx, dword [ebp - 4]
imul edx, edx, 0x28
mov eax, dword [0x27294]
mov ecx, dword [eax + edx + 4]
mov edx, dword [ecx + 0x50]
push edx
call dword [sym.imp.ntoskrnl.exe_ExFreePool]
mov eax, dword [ebp - 4]
imul eax, eax, 0x28
mov ecx, dword [0x27294]
mov edx, dword [ecx + eax + 4]
cmp dword [edx + 0x44], 0
je 0x1c8de
mov eax, dword [ebp - 4]
imul eax, eax, 0x28
mov ecx, dword [0x27294]
mov edx, dword [ecx + eax + 4]
mov eax, dword [edx + 0x44]
push eax
call dword [sym.imp.ntoskrnl.exe_ExFreePool]
mov ecx, dword [ebp - 4]
imul ecx, ecx, 0x28
mov edx, dword [0x27294]
mov eax, dword [edx + ecx + 4]
cmp dword [eax + 0x48], 0
je 0x1c90e
mov ecx, dword [ebp - 4]
imul ecx, ecx, 0x28
mov edx, dword [0x27294]
mov eax, dword [edx + ecx + 4]
mov ecx, dword [eax + 0x48]
push ecx
call dword [sym.imp.ntoskrnl.exe_ExFreePool]
mov edx, dword [ebp - 4]
imul edx, edx, 0x28
mov eax, dword [0x27294]
mov ecx, dword [eax + edx + 4]
cmp dword [ecx + 0x54], 0
je 0x1c93c
mov edx, dword [ebp - 4]
imul edx, edx, 0x28
mov eax, dword [0x27294]
mov ecx, dword [eax + edx + 4]
mov edx, dword [ecx + 0x54]
push edx
call dword [sym.imp.ntoskrnl.exe_ExFreePool]
mov eax, dword [ebp - 4]
imul eax, eax, 0x28
mov ecx, dword [0x27294]
mov edx, dword [ecx + eax + 4]
cmp dword [edx + 0x58], 0
je 0x1c96c
mov eax, dword [ebp - 4]
imul eax, eax, 0x28
mov ecx, dword [0x27294]
mov edx, dword [ecx + eax + 4]
mov eax, dword [edx + 0x58]
push eax
call dword [sym.imp.ntoskrnl.exe_ExFreePool]
mov ecx, dword [ebp - 4]
imul ecx, ecx, 0x28
mov edx, dword [0x27294]
mov eax, dword [edx + ecx + 4]
push eax
call dword [sym.imp.ntoskrnl.exe_ExFreePool]
mov ecx, dword [0x2728c]
sub ecx, 1
mov dword [0x2728c], ecx
mov edx, dword [ebp - 4]
mov dword [ebp - 0xc], edx
jmp 0x1c9a3
mov eax, dword [ebp - 0xc]
add eax, 1
mov dword [ebp - 0xc], eax
mov ecx, dword [ebp - 0xc]
cmp ecx, dword [0x2728c]
jge 0x1c9d2
mov esi, dword [ebp - 0xc]
add esi, 1
imul esi, esi, 0x28
add esi, dword [0x27294]
mov edi, dword [ebp - 0xc]
imul edi, edi, 0x28
add edi, dword [0x27294]
mov ecx, 0xa
rep movsd dword es:[edi], dword [esi]
jmp 0x1c99a
xor edx, edx
mov eax, dword [0x2728c]
imul eax, eax, 0x28
add eax, dword [0x27294]
mov dword [eax], edx
mov dword [eax + 4], edx
mov dword [eax + 8], edx
mov dword [eax + 0xc], edx
mov dword [eax + 0x10], edx
mov dword [eax + 0x14], edx
mov dword [eax + 0x18], edx
mov dword [eax + 0x1c], edx
mov dword [eax + 0x20], edx
mov dword [eax + 0x24], edx
mov al, 1
jmp 0x1ca0a
jmp 0x1c621
xor al, al
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0xc