Function at 0x28c30
Capabilities:
Complete processing asynchronous io request

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
mov qword [rsp + 0x20], rdi
push r12
sub rsp, 0x30
lea rbp, [rdx + 0x38]
xor r12d, r12d
mov rsi, rdx
mov rdx, qword [rdx + 0xb8]
mov qword [rbp], r12
mov edi, 0xc0000002
mov al, byte [rdx]
test al, al
je 0x28f2e
cmp al, 2
je 0x28f2e
cmp al, 0xe
jne 0x28f31
mov eax, dword [rdx + 0x18]
cmp eax, 0x9c4060d4
ja 0x28dc3
je 0x28d74
cmp eax, 0x9c40208c
ja 0x28d54
je 0x28d35
cmp eax, 0x9c402000
je 0x28d1e
cmp eax, 0x9c402004
je 0x28d01
cmp eax, 0x9c402084
je 0x28ce2
cmp eax, 0x9c402088
jne 0x28f31
mov rcx, qword [rsi + 0x18]
mov r9d, dword [rdx + 8]
mov edx, dword [rdx + 0x10]
mov r8, rcx
mov qword [rsp + 0x20], rbp
call fcn.00028f90
mov edi, eax
jmp 0x28f31
mov rcx, qword [rsi + 0x18]
mov r9d, dword [rdx + 8]
mov edx, dword [rdx + 0x10]
mov r8, rcx
mov qword [rsp + 0x20], rbp
call fcn.00028f60
mov edi, eax
jmp 0x28f31
mov rax, qword [0x0002f2f0]
mov rdx, qword [rsi + 0x18]
mov ecx, dword [rax + 4]
mov dword [rdx], ecx
mov qword [rbp], 4
jmp 0x28f2e
mov rax, qword [rsi + 0x18]
mov dword [rax], 0x1020005
mov qword [rbp], 4
jmp 0x28f2e
mov rcx, qword [rsi + 0x18]
mov r9d, dword [rdx + 8]
mov edx, dword [rdx + 0x10]
mov r8, rcx
mov qword [rsp + 0x20], rbp
call fcn.00028fc0
mov edi, eax
jmp 0x28f31
cmp eax, 0x9c402090
je 0x28da3
cmp eax, 0x9c4060c4
je 0x28d74
cmp eax, 0x9c4060cc
je 0x28d74
cmp eax, 0x9c4060d0
jne 0x28f31
mov rcx, qword [rsi + 0x18]
mov r8d, dword [rdx + 0x10]
mov edx, dword [rcx]
cmp eax, 0x9c4060cc
je 0x28db7
cmp eax, 0x9c4060d0
je 0x28da9
cmp eax, 0x9c4060d4
jne 0x28f16
in eax, dx
mov dword [rcx], eax
mov dword [rbp], r8d
jmp 0x28f2e
hlt
in ax, dx
mov word [rcx], ax
mov dword [rbp], r8d
jmp 0x28f2e
in al, dx
mov byte [rcx], al
mov dword [rbp], r8d
jmp 0x28f2e
cmp eax, 0x9c40a0dc
ja 0x28e5e
je 0x28df0
cmp eax, 0x9c406104
je 0x28e3f
cmp eax, 0x9c406144
je 0x28e20
cmp eax, 0x9c40a0c8
je 0x28df0
cmp eax, 0x9c40a0d8
jne 0x28f31
mov rcx, qword [rsi + 0x18]
mov edx, dword [rcx]
cmp eax, 0x9c40a0d8
je 0x28f29
cmp eax, 0x9c40a0dc
je 0x28f21
cmp eax, 0x9c40a0e0
jne 0x28f1a
mov eax, dword [rcx + 4]
out dx, eax
jmp 0x28f2e
mov rcx, qword [rsi + 0x18]
mov r9d, dword [rdx + 8]
mov edx, dword [rdx + 0x10]
mov r8, rcx
mov qword [rsp + 0x20], rbp
call fcn.00028ff0
mov edi, eax
jmp 0x28f31
mov rcx, qword [rsi + 0x18]
mov r9d, dword [rdx + 8]
mov edx, dword [rdx + 0x10]
mov r8, rcx
mov qword [rsp + 0x20], rbp
call fcn.000290b0
mov edi, eax
jmp 0x28f31
cmp eax, 0x9c40a0e0
je 0x28df0
cmp eax, 0x9c40a108
je 0x28f16
cmp eax, 0x9c40a148
je 0x28eb9
cmp eax, 0x9c40a14c
jne 0x28f31
mov eax, dword [rdx + 8]
mov rcx, qword [rsi + 0x18]
mov dword [rbp], r12d
cmp eax, 0x262
jae 0x28e9e
mov edi, 0xc000000e
jmp 0x28f31
lea rdx, [0x0002eec0]
mov r8d, 0x262
call fcn.0002b420
mov dword [rbp], 0x262
jmp 0x28f2e
mov ebx, dword [rdx + 0x10]
cmp ebx, 8
jb 0x28f1a
mov r9, qword [rsi + 0x18]
mov dword [rbp], r12d
add ebx, 0xfffffff8
mov ecx, dword [r9]
mov r10d, dword [r9 + 4]
add r9, 8
mov r8d, ecx
mov eax, ecx
shr ecx, 8
shr r8d, 3
and eax, 7
movzx edx, cl
and r8d, 0x1f
shl eax, 5
mov ecx, 4
or r8d, eax
mov dword [rsp + 0x28], ebx
mov dword [rsp + 0x20], r10d
call qword [sym.imp.HAL.dll_HalSetBusDataByOffset]
mov edi, r12d
mov ecx, 0xe0000003
cmp eax, ebx
cmovne edi, ecx
jmp 0x28f31
mov dword [rbp], r12d
mov edi, 0xc000000d
jmp 0x28f31
movzx eax, word [rcx + 4]
out dx, ax
jmp 0x28f2e
movzx eax, byte [rcx + 4]
out dx, al
mov edi, r12d
xor edx, edx
mov rcx, rsi
mov dword [rsi + 0x30], edi
call qword [sym.imp.ntoskrnl.exe_IofCompleteRequest]
mov rbx, qword [rsp + 0x40]
mov rbp, qword [rsp + 0x48]
mov rsi, qword [rsp + 0x50]
mov eax, edi
mov rdi, qword [rsp + 0x58]
add rsp, 0x30
pop r12
ret