Function at 0x10545
Capabilities:
Complete processing asynchronous io request

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x24
test byte [ebp + 0xc], 0x10
jne 0x10785
push ebx
push esi
lea eax, [ebp - 0x18]
push edi
lea edx, [ebp - 0x24]
mov ecx, 0x127d8
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x18], eax
call dword [sym.imp.HAL.dll_KeAcquireInStackQueuedSpinLock]
mov esi, dword [0x127e0]
cmp esi, 0x127e0
jne 0x1059d
lea ecx, [ebp - 0x24]
call dword [sym.imp.HAL.dll_KeReleaseInStackQueuedSpinLock]
mov ecx, dword [ebp - 0x18]
lea eax, [ebp - 0x18]
cmp ecx, eax
jne 0x1066c
pop edi
pop esi
pop ebx
leave
ret 0xc
mov edx, dword [esi + 0xc]
mov eax, dword [edx + 0xc]
xor ecx, ecx
cmp dword [esi + 8], ecx
mov dword [ebp - 4], ecx
mov dword [ebp - 0xc], edx
mov dword [ebp - 0x10], eax
lea edi, [esi + 0x5c]
mov dword [ebp - 8], ecx
jbe 0x10617
lea ebx, [eax + 0x14]
jmp 0x105c5
test cl, 0x20
jne 0x105e3
jmp 0x10603
mov ecx, dword [ebp + 8]
cmp ecx, dword [edi]
jne 0x10603
cmp word [ecx], 0x1afd
je 0x1097d
cmp ecx, dword [edi]
jne 0x10603
mov ecx, dword [ebp + 0xc]
test dword [edi + 0xc], ecx
je 0x105be
inc dword [eax + 8]
mov ecx, dword [edi + 8]
mov dword [ebx - 4], ecx
mov ecx, dword [edi + 0xc]
or ecx, 0x20
and ecx, dword [ebp + 0xc]
inc dword [ebp - 4]
mov dword [ebx], ecx
mov ecx, dword [ebp + 0x10]
mov dword [ebx + 4], ecx
add ebx, 0xc
add edi, 0x10
inc dword [ebp - 8]
mov ecx, dword [ebp - 8]
cmp ecx, dword [esi + 8]
jb 0x105c5
cmp dword [ebp - 4], 0
jne 0x1061e
mov esi, dword [esi]
jmp 0x10577
mov eax, dword [esi]
mov ecx, dword [esi + 4]
mov dword [ecx], eax
mov dword [eax + 4], ecx
mov eax, dword [ebp - 4]
and dword [edx + 0x18], 0
lea eax, [eax + eax*2]
lea eax, [eax*4 + 0x10]
mov dword [edx + 0x1c], eax
cmp byte [esi + 0x59], 0
je 0x1078e
lea eax, [esi + 0x30]
push eax
call dword [sym.imp.ntoskrnl.exe_KeCancelTimer]
mov edx, dword [ebp - 0xc]
test al, al
je 0x10617
mov eax, dword [ebp - 0x14]
add edx, 0x58
lea ecx, [ebp - 0x18]
mov dword [edx], ecx
mov dword [edx + 4], eax
mov dword [eax], edx
mov dword [ebp - 0x14], edx
jmp 0x10617
mov eax, dword [ecx]
mov dword [ebp - 0x18], eax
lea edx, [ebp - 0x18]
mov dword [eax + 4], edx
lea esi, [ecx - 0x58]
mov eax, dword [esi + 0x60]
mov edi, dword [eax + 0x10]
xor eax, eax
lea ecx, [esi + 0x38]
xchg dword [ecx], eax
test eax, eax
je 0x109ac
cmp byte [edi + 0x5a], 0
jne 0x109c4
push edi
call fcn.0001b840
mov dl, byte [0x12011]
mov ecx, esi
call dword [sym.imp.ntoskrnl.exe_IofCompleteRequest]
jmp 0x10588
or dword [ebp + 0xc], 4
jmp 0x10557
mov al, 1
jmp 0x10653
test byte [edi + 0xf], 0x80
jne 0x105d7
cmp dword [ecx + 0x34], 0
je 0x105d7
push dword [edi + 0xc]
push ecx
call fcn.0002bb57
or byte [edi + 0xf], 0x80
mov edx, dword [ebp - 0xc]
mov ecx, dword [ebp + 8]
mov eax, dword [ebp - 0x10]
jmp 0x105d7
lea eax, [ebp + 0xc]
push eax
call dword [sym.imp.ntoskrnl.exe_IoAcquireCancelSpinLock]
push dword [ebp + 0xc]
call dword [sym.imp.ntoskrnl.exe_IoReleaseCancelSpinLock]
jmp 0x1068f
call dword [sym.imp.ntoskrnl.exe_PsGetCurrentThread]
cmp dword [esi + 0x50], eax
jne 0x109dd
call dword [sym.imp.HAL.dll_KeGetCurrentIrql]
cmp al, 1
jbe 0x10699
movsx eax, byte [esi + 0x26]
push 0
push 0
push 0xffffffffffffffff
push 0x18b19
push 0x18ae9
push eax
push dword [esi + 0x50]
lea ebx, [edi + 0x10]
push ebx
call dword [sym.imp.ntoskrnl.exe_KeInitializeApc]
movsx eax, byte [0x12011]
push eax
push esi
push edi
push ebx
call dword [sym.imp.ntoskrnl.exe_KeInsertQueueApc]
test al, al
jne 0x10588
mov byte [edi + 0x5a], al
jmp 0x10699