Function at 0x28c00
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 0x28efe
cmp al, 2
je 0x28efe
cmp al, 0xe
jne 0x28f01
mov eax, dword [rdx + 0x18]
cmp eax, 0x9c4060d4
ja 0x28d93
je 0x28d44
cmp eax, 0x9c40208c
ja 0x28d24
je 0x28d05
cmp eax, 0x9c402000
je 0x28cee
cmp eax, 0x9c402004
je 0x28cd1
cmp eax, 0x9c402084
je 0x28cb2
cmp eax, 0x9c402088
jne 0x28f01
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 0x28f01
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.00028f30
mov edi, eax
jmp 0x28f01
mov rax, qword [0x0002f2f0]
mov rdx, qword [rsi + 0x18]
mov ecx, dword [rax + 4]
mov dword [rdx], ecx
mov qword [rbp], 4
jmp 0x28efe
mov rax, qword [rsi + 0x18]
mov dword [rax], 0x1020005
mov qword [rbp], 4
jmp 0x28efe
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 0x28f01
cmp eax, 0x9c402090
je 0x28d73
cmp eax, 0x9c4060c4
je 0x28d44
cmp eax, 0x9c4060cc
je 0x28d44
cmp eax, 0x9c4060d0
jne 0x28f01
mov rcx, qword [rsi + 0x18]
mov r8d, dword [rdx + 0x10]
mov edx, dword [rcx]
cmp eax, 0x9c4060cc
je 0x28d87
cmp eax, 0x9c4060d0
je 0x28d79
cmp eax, 0x9c4060d4
jne 0x28ee6
in eax, dx
mov dword [rcx], eax
mov dword [rbp], r8d
jmp 0x28efe
hlt
in ax, dx
mov word [rcx], ax
mov dword [rbp], r8d
jmp 0x28efe
in al, dx
mov byte [rcx], al
mov dword [rbp], r8d
jmp 0x28efe
cmp eax, 0x9c40a0dc
ja 0x28e2e
je 0x28dc0
cmp eax, 0x9c406104
je 0x28e0f
cmp eax, 0x9c406144
je 0x28df0
cmp eax, 0x9c40a0c8
je 0x28dc0
cmp eax, 0x9c40a0d8
jne 0x28f01
mov rcx, qword [rsi + 0x18]
mov edx, dword [rcx]
cmp eax, 0x9c40a0d8
je 0x28ef9
cmp eax, 0x9c40a0dc
je 0x28ef1
cmp eax, 0x9c40a0e0
jne 0x28eea
mov eax, dword [rcx + 4]
out dx, eax
jmp 0x28efe
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 0x28f01
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.00029080
mov edi, eax
jmp 0x28f01
cmp eax, 0x9c40a0e0
je 0x28dc0
cmp eax, 0x9c40a108
je 0x28ee6
cmp eax, 0x9c40a148
je 0x28e89
cmp eax, 0x9c40a14c
jne 0x28f01
mov eax, dword [rdx + 8]
mov rcx, qword [rsi + 0x18]
mov dword [rbp], r12d
cmp eax, 0x262
jae 0x28e6e
mov edi, 0xc000000e
jmp 0x28f01
lea rdx, [0x0002eec0]
mov r8d, 0x262
call fcn.0002b3f0
mov dword [rbp], 0x262
jmp 0x28efe
mov ebx, dword [rdx + 0x10]
cmp ebx, 8
jb 0x28eea
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 0x28f01
mov dword [rbp], r12d
mov edi, 0xc000000d
jmp 0x28f01
movzx eax, word [rcx + 4]
out dx, ax
jmp 0x28efe
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