Function at 0x22d8c
Capabilities:
Complete processing asynchronous io request

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rdx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x30
mov eax, dword [r8 + 0x10]
mov r14d, dword [r8 + 8]
xor ebx, ebx
and qword [rdx + 0x38], rbx
xor r15d, r15d
xor r12d, r12d
cmp eax, 0x10
mov r13, rdx
mov dword [rsp + 0x80], r14d
jae 0x22dd3
mov edi, 0xc0000004
jmp 0x230b1
cmp r14d, 0x14
jae 0x22de3
mov edi, 0xc0000023
jmp 0x230b1
test rcx, rcx
je 0x230ac
call fcn.00020f48
test rax, rax
je 0x230ac
mov rdi, qword [rax + 0x240]
test rdi, rdi
je 0x230ac
mov rbp, qword [r13 + 0x18]
cmp dword [rbp], 0x48696541
je 0x22e21
mov edi, 0xc00000ef
jmp 0x230b1
mov eax, dword [rbp + 4]
mov ecx, dword [rbp + 8]
and eax, 3
cmp al, 3
je 0x2304b
mov esi, dword [rbp + 4]
and esi, 1
mov eax, esi
or eax, 6
je 0x2304b
test byte [rbp + 4], 4
je 0x22e51
test ecx, ecx
je 0x2304b
test ecx, ecx
mov r8d, 0x52706341
je 0x22e9d
mov r14, rcx
mov rdx, rcx
xor ecx, ecx
call qword [sym.imp.ntoskrnl.exe_ExAllocatePoolWithTag]
test rax, rax
mov r12, rax
jne 0x22e7b
mov edi, 0xc000009a
jmp 0x23050
lea rdx, [rbp + 0xc]
mov r8, r14
mov rcx, rax
call fcn.0003aae0
mov rcx, r12
call qword [sym.imp.ntoskrnl.exe__strupr]
mov r14d, dword [rsp + 0x80]
jmp 0x22eba
mov edx, 2
xor ecx, ecx
call qword [sym.imp.ntoskrnl.exe_ExAllocatePoolWithTag]
test rax, rax
mov r12, rax
je 0x22e71
mov byte [rax], bl
mov r15d, 2
mov edx, 0x28
xor ecx, ecx
mov r8d, 0x52706341
call qword [sym.imp.ntoskrnl.exe_ExAllocatePoolWithTag]
test rax, rax
mov rbx, rax
je 0x22e71
xor edx, edx
mov rcx, rax
lea r8d, [rdx + 0x28]
call fcn.0003cb30
mov edx, 0x28
xor ecx, ecx
mov r8d, 0x52706341
call qword [sym.imp.ntoskrnl.exe_ExAllocatePoolWithTag]
test rax, rax
mov qword [rbx + 8], rax
je 0x22e71
xor edx, edx
mov rcx, rax
lea r8d, [rdx + 0x28]
call fcn.0003cb30
test esi, esi
je 0x22f19
or r15d, 1
test byte [rdi + 0x38], 4
je 0x22f26
mov edi, 0xc000000e
jmp 0x22f73
mov ax, 0x80
jmp 0x22f30
mov rdi, qword [rdi + 0x48]
cmp word [rdi + 0x3a], ax
je 0x22f2c
mov rax, qword [rbx + 8]
and dword [rbx + 0x18], 0
and qword [rbx + 0x10], 0
mov word [rbx + 2], 2
and dword [rax + 0x18], 0
mov rax, qword [rbx + 8]
mov word [rax + 2], 2
mov rax, qword [rbx + 8]
mov r9d, r15d
and qword [rax + 0x10], 0
mov r8, rbx
mov rdx, rdi
mov rcx, r12
call fcn.0002e9e4
mov edi, eax
test edi, edi
js 0x23050
mov eax, 0xffffffff
cmp qword [rbx + 0x10], rax
ja 0x2304b
mov ecx, dword [rbx + 0x10]
mov eax, dword [rbx + 0x18]
mov r8d, r14d
lea edi, [rax + rcx*8 + 8]
xor edx, edx
mov rcx, rbp
mov dword [rsp + 0x88], edi
call fcn.0003cb30
cmp r14d, edi
mov dword [rbp], 0x47696541
mov dword [rbp + 4], edi
jae 0x22fc9
mov edi, 0x80000005
mov qword [r13 + 0x38], 0x14
jmp 0x23050
mov eax, dword [rbx + 0x10]
lea rsi, [rbp + 8]
mov dword [rbp + 4], eax
mov rax, qword [rbx + 8]
mov ebp, dword [rsp + 0x80]
add ebp, 0xfffffff8
mov r14, qword [rbx + 0x20]
mov rcx, qword [rax + 0x20]
je 0x2303c
mov r13, rcx
or rcx, 0xffffffffffffffff
xor eax, eax
mov rdi, r14
repne scasb al, byte [rdi]
mov rdx, r14
not rcx
mov edi, ecx
mov r15d, ecx
lea rcx, [rsi + 8]
mov r8, rdi
call fcn.0003aae0
mov dword [rsi + 4], edi
cmp byte [r13], 0x31
jne 0x23020
mov dword [rsi], 1
mov eax, 0xfffffff8
add r14, r15
add r13, 1
sub eax, edi
lea rsi, [rsi + rdi + 8]
add ebp, eax
jne 0x22fee
mov r13, qword [rsp + 0x78]
mov eax, dword [rsp + 0x88]
xor edi, edi
mov qword [r13 + 0x38], rax
jmp 0x23050
mov edi, 0xc014000f
test r12, r12
je 0x23063
mov edx, 0x52706341
mov rcx, r12
call qword [sym.imp.ntoskrnl.exe_ExFreePoolWithTag]
test rbx, rbx
je 0x230b1
mov rcx, qword [rbx + 8]
test rcx, rcx
je 0x2308f
mov edx, 1
call fcn.0002da10
mov rcx, qword [rbx + 8]
mov edx, 0x52706341
call qword [sym.imp.ntoskrnl.exe_ExFreePoolWithTag]
and qword [rbx + 8], 0
mov edx, 1
mov rcx, rbx
call fcn.0002da10
mov edx, 0x52706341
mov rcx, rbx
call qword [sym.imp.ntoskrnl.exe_ExFreePoolWithTag]
jmp 0x230b1
mov edi, 0xc000000e
xor edx, edx
mov rcx, r13
mov dword [r13 + 0x30], edi
call qword [sym.imp.ntoskrnl.exe_IofCompleteRequest]
mov rbx, qword [rsp + 0x70]
mov eax, edi
add rsp, 0x30
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret