Function at 0x163f8
Capabilities:
Resolve function by parsing pe exports

Disassembly:
mov qword [rsp + 8], rcx
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0xe8
mov r12, rcx
xor ecx, ecx
mov dword [rsp + 0x148], ecx
cmp dword [r12 + 0xc], ecx
jne 0x16e10
mov eax, dword [r12 + 8]
xor r15d, r15d
xor edx, edx
xor edi, edi
xor r14d, r14d
xor ebx, ebx
sub eax, 1
mov qword [rsp + 0x78], r15
mov qword [rsp + 0x68], rdx
movsxd r13, eax
mov qword [rsp + 0x80], rdi
mov dword [rsp + 0x140], r14d
mov qword [rsp + 0x60], r13
mov qword [rsp + 0x70], rbx
js 0x16e10
lea r11, [r13 + r13*2]
lea r10, [0x00010000]
mov ebp, dword [r12 + r11*4 + 0x1c]
mov esi, dword [r12 + r11*4 + 0x20]
mov qword [rsp + 0x58], r11
and ebp, 0xfffffff
and esi, 0xfffffff
add rbp, r10
mov qword [rsp + 0x50], rsi
mov qword [rsp + 0x88], rbp
cmp rbp, r15
jb 0x164b5
lea rcx, [rdx + r15]
lea rax, [rsi + rbp]
cmp rax, rcx
jbe 0x165cc
test r14d, r14d
je 0x164cb
mov rcx, rdi
call qword [sym.imp.ntoskrnl.exe_MmUnlockPages]
and dword [rsp + 0x140], 0
test rdi, rdi
je 0x164d9
mov rcx, rdi
call qword [sym.imp.ntoskrnl.exe_IoFreeMdl]
and qword [rsp + 0x20], 0
mov ecx, ebp
mov eax, esi
and eax, 0xfff
and ecx, 0xfff
mov r15, rbp
lea edx, [rcx + rax + 0xfff]
mov rax, rsi
mov r14, 0xfffffffffffff000
shr rax, 0xc
shr edx, 0xc
and r15, r14
add eax, edx
xor r9d, r9d
xor r8d, r8d
shl eax, 0xc
mov rcx, r15
mov qword [rsp + 0x78], r15
mov edx, eax
mov qword [rsp + 0x68], rax
mov qword [rsp + 0xb8], rax
call qword [sym.imp.ntoskrnl.exe_IoAllocateMdl]
mov rdi, rax
mov qword [rsp + 0x80], rax
test rax, rax
je 0x16ddd
xor edx, edx
mov rcx, rax
lea r8d, [rdx + 2]
call fcn.0001176c
test eax, eax
je 0x16dd2
test byte [rdi + 0xa], 5
mov dword [rsp + 0x140], 1
je 0x16575
mov rbx, qword [rdi + 0x18]
jmp 0x16597
xor r9d, r9d
xor edx, edx
mov rcx, rdi
lea r8d, [r9 + 1]
mov dword [rsp + 0x28], 0x20
and dword [rsp + 0x20], 0
call qword [sym.imp.ntoskrnl.exe_MmMapLockedPagesSpecifyCache]
mov rbx, rax
test rbx, rbx
je 0x16dc1
mov edx, 4
mov rcx, rdi
call qword [sym.imp.ntoskrnl.exe_MmProtectMdlSystemAddress]
test eax, eax
js 0x16dc1
mov r11, qword [rsp + 0x58]
sub rbx, r15
lea r10, [0x00010000]
mov qword [rsp + 0x70], rbx
jmp 0x165d3
mov r14, 0xfffffffffffff000
lea r8, [rbx + rbp]
mov qword [rsp + 0x48], r8
test r8, r8
je 0x16ddd
bt dword [r12 + r11*4 + 0x20], 0x1d
jae 0x16d8d
xor cl, cl
test rsi, rsi
je 0x16c6b
mov r9d, dword [r12 + 0x14]
mov ebx, dword [r12 + 0x10]
and qword [rsp + 0x38], 0
mov eax, 0xfffffff
mov rdx, r10
and rbx, rax
and r9, rax
mov rax, qword [0x000192b8]
add rbx, r10
sub rdx, rax
mov qword [rsp + 0x40], rdx
jne 0x166ae
xor r11d, r11d
test r9, r9
je 0x169da
mov edx, dword [rsp + 0x3c]
mov r10d, dword [rsp + 0x38]
movzx eax, byte [r11 + rbx]
inc r11
add eax, 0x7f8187f4
add r10d, eax
add eax, edx
imul eax, eax, 0x7f8187f4
ror eax, 0x1e
imul rax, rax, 0x7f8187f4
mov qword [rsp + 0x138], rax
shr rax, 0x20
mov edx, dword [rsp + 0x138]
lea r8d, [rdx + rax*2 - 0x7fffffff]
sar edx, 0x1f
btr edx, 0x1f
sub r8d, edx
mov edx, r8d
sar edx, 0x1f
btr edx, 0x1f
add edx, r8d
add r10d, edx
cmp r11, r9
jb 0x16644
mov dword [rsp + 0x3c], edx
mov dword [rsp + 0x38], r10d
jmp 0x169d5
movsxd r8, dword [0x0001003c]
lea rax, [rbx + r9]
mov qword [rsp + 0xa0], rax
lea rax, [0x000100b0]
add r8, rax
mov eax, ebx
mov r15d, dword [r8 + 4]
sub eax, r10d
lea r12, [rax + r9]
mov r9d, dword [r8]
mov r10d, eax
mov esi, eax
mov rbp, r12
and r10, r14
and rbp, r14
lea rax, [0x00010000]
sub rsi, r10
sub r12, rbp
add r9, rax
mov qword [rsp + 0xa8], rbp
mov qword [rsp + 0x98], r12
add r15, r9
jmp 0x1671d
mov eax, dword [r9]
cmp rax, r10
jae 0x16722
mov eax, dword [r9 + 4]
add r9, rax
cmp r9, r15
jne 0x1670e
xor r11d, r11d
cmp r9, r15
je 0x1675d
mov eax, dword [r9]
cmp rax, r10
jne 0x1675d
mov edx, dword [r9 + 4]
sub rdx, 8
shr rdx, 1
je 0x1675d
lea r8, [r9 + 8]
movzx eax, word [r8]
and eax, 0xfff
cmp rax, rsi
jae 0x1675d
inc r11
add r8, 2
cmp r11, rdx
jne 0x16743
mov r13d, dword [rsp + 0x3c]
mov r14d, dword [rsp + 0x38]
mov rdi, qword [rsp + 0x40]
lea rcx, [0x00010000]
cmp r9, r15
je 0x1694c
mov eax, dword [r9]
cmp rax, rbp
ja 0x1694c
mov edx, dword [r9 + 4]
lea rax, [rdx - 8]
shr rax, 1
cmp r11, rax
jne 0x167b5
add r9, rdx
cmp r9, r15
je 0x1694c
mov eax, dword [r9]
cmp rax, rbp
ja 0x1694c
xor r11d, r11d
jmp 0x16788
mov eax, dword [r9]
cmp rax, rbp
jne 0x167d1
movzx eax, word [r9 + r11*2 + 8]
and eax, 0xfff
cmp rax, r12
jae 0x1694c
mov rax, r11
mov edx, 0xf000
inc r11
test word [r9 + rax*2 + 8], dx
je 0x16773
movzx r10d, word [r9 + rax*2 + 8]
xor r12d, r12d
mov ebp, r10d
and ebp, 0xfff
add ebp, dword [r9]
add rbp, rcx
mov rsi, rbp
sub rsi, rbx
je 0x16867
movzx eax, byte [r12 + rbx]
inc r12
add eax, 0x7f8187f4
add r14d, eax
add eax, r13d
imul eax, eax, 0x7f8187f4
ror eax, 0x1e
imul rax, rax, 0x7f8187f4
mov qword [rsp + 0x40], rax
mov edx, dword [rsp + 0x40]
shr rax, 0x20
lea r8d, [rdx + rax*2 - 0x7fffffff]
sar edx, 0x1f
btr edx, 0x1f
sub r8d, edx
mov r13d, r8d
sar r13d, 0x1f
btr r13d, 0x1f
add r13d, r8d
add r14d, r13d
cmp r12, rsi
jb 0x16804
mov dword [rsp + 0x3c], r13d
mov dword [rsp + 0x38], r14d
mov rax, qword [rbp]
shr r10d, 0xc
mov qword [rsp + 0x40], rax
cmp r10d, 3
je 0x1688a
sub r10d, 0xa
neg r10d
sbb r8d, r8d
add r8d, 3
jmp 0x16890
mov r8d, 2
mov r10, rdi
neg r10
sub r8d, 2
je 0x168b8
cmp r8d, 1
je 0x168a8
or r10, 0xffffffffffffffff
jmp 0x168c3
add rax, r10
mov r10d, 8
mov qword [rsp + 0x40], rax
jmp 0x168c3
add dword [rsp + 0x40], r10d
mov r10d, 4
xor ebx, ebx
test r10, r10
je 0x16933
movzx eax, byte [rsp + rbx + 0x40]
inc rbx
add eax, 0x7f8187f4
add r14d, eax
add eax, r13d
imul eax, eax, 0x7f8187f4
ror eax, 0x1e
imul rax, rax, 0x7f8187f4
mov qword [rsp + 0x90], rax
shr rax, 0x20
mov edx, dword [rsp + 0x90]
lea r8d, [rdx + rax*2 - 0x7fffffff]
sar edx, 0x1f
btr edx, 0x1f
sub r8d, edx
mov r13d, r8d
sar r13d, 0x1f
btr r13d, 0x1f
add r13d, r8d
add r14d, r13d
cmp rbx, r10
jb 0x168ca
mov dword [rsp + 0x3c], r13d
mov dword [rsp + 0x38], r14d
mov r12, qword [rsp + 0x98]
lea rbx, [r10 + rbp]
mov rbp, qword [rsp + 0xa8]
jmp 0x16773
mov r12, qword [rsp + 0xa0]
mov rdi, qword [rsp + 0x80]
xor r9d, r9d
sub r12, rbx
mov cl, r9b
je 0x169d0
movzx eax, byte [rbx + r9]
inc r9
add eax, 0x7f8187f4
add r14d, eax
add eax, r13d
imul eax, eax, 0x7f8187f4
ror eax, 0x1e
imul rax, rax, 0x7f8187f4
mov qword [rsp + 0x138], rax
shr rax, 0x20
mov edx, dword [rsp + 0x138]
lea r8d, [rdx + rax*2 - 0x7fffffff]
sar edx, 0x1f
btr edx, 0x1f
sub r8d, edx
mov r13d, r8d
sar r13d, 0x1f
btr r13d, 0x1f
add r13d, r8d
add r14d, r13d
cmp r9, r12
jb 0x16967
mov dword [rsp + 0x3c], r13d
mov dword [rsp + 0x38], r14d
mov rsi, qword [rsp + 0x50]
mov r8, qword [rsp + 0x48]
xor edx, edx
mov rax, rdx
inc rdx
and eax, 7
mov al, byte [rsp + rax + 0x38]
mov byte [rsp + rdx + 0x2f], al
cmp rdx, 6
jb 0x169dc
mov bl, byte [rsp + 0x30]
mov r12b, byte [rsp + 0x32]
mov r15b, byte [rsp + 0x34]
mov r14b, byte [rsp + 0x35]
mov r13b, byte [rsp + 0x31]
or bl, 1
or r12b, 1
or r15b, 1
or r14b, 1
lea rbp, [rsi - 1]
mov byte [rsp + 0x30], bl
mov byte [rsp + 0x32], r12b
mov byte [rsp + 0x34], r15b
mov byte [rsp + 0x35], r14b
test rbp, rbp
je 0x16bb1
mov rdx, qword [rsp + 0x88]
mov rax, r8
sub rax, rdx
lea rsi, [rdx + rbp]
mov qword [rsp + 0x138], rax
mov r10b, byte [rsi]
movzx edx, r10b
test bpl, 1
je 0x16ae8
xor r10b, byte [rsp + 0x33]
movzx r9d, byte [rsp + 0x33]
and r10b, 1
je 0x16a92
movzx r8d, r12b
mov eax, r9d
shr eax, 1
shr r8d, 1
xor r8d, eax
mov eax, edx
btc eax, 8
sar eax, 1
xor r8d, eax
jmp 0x16a9b
mov r8d, r9d
xor r8d, edx
shr r8d, 1
movzx r11d, byte [rsi - 1]
mov eax, r11d
xor eax, r8d
test al, 1
je 0x16ad6
test r10b, r10b
je 0x16ac7
btc edx, 8
shr r9d, 1
movzx r8d, r12b
shr r8d, 1
sar edx, 1
xor r8d, r9d
xor r8d, edx
jmp 0x16ad0
mov r8d, r9d
xor r8d, edx
shr r8d, 1
movzx eax, r14b
jmp 0x16b53
test r10b, r10b
je 0x16b81
movzx r8d, r12b
jmp 0x16b6d
xor r10b, r13b
movzx r9d, r13b
and r10b, 1
je 0x16b11
movzx r8d, bl
mov eax, r9d
shr eax, 1
shr r8d, 1
xor r8d, eax
mov eax, edx
btc eax, 8
sar eax, 1
xor r8d, eax
jmp 0x16b1a
mov r8d, r9d
xor r8d, edx
shr r8d, 1
movzx r11d, byte [rsi - 1]
mov eax, r11d
xor eax, r8d
test al, 1
je 0x16b64
test r10b, r10b
je 0x16b46
btc edx, 8
shr r9d, 1
movzx r8d, bl
shr r8d, 1
sar edx, 1
xor r8d, r9d
xor r8d, edx
jmp 0x16b4f
mov r8d, r9d
xor r8d, edx
shr r8d, 1
movzx eax, r15b
shr eax, 1
xor r11d, r8d
btc eax, 7
sar r11d, 1
xor eax, r11d
jmp 0x16b92
test r10b, r10b
je 0x16b81
movzx r8d, bl
btc edx, 8
shr r8d, 1
shr r9d, 1
sar edx, 1
xor r8d, r9d
xor r8d, edx
jmp 0x16b8a
mov r8d, r9d
xor r8d, edx
shr r8d, 1
mov eax, r11d
xor eax, r8d
sar eax, 1
mov rdx, qword [rsp + 0x138]
xor cl, al
mov byte [rdx + rsi], al
dec rsi
sub rbp, 1
jne 0x16a54
mov rsi, qword [rsp + 0x50]
mov rbp, qword [rsp + 0x88]
movzx r9d, r13b
mov r10b, byte [rbp]
movzx edx, byte [rbp]
xor r10b, r13b
and r10b, 1
je 0x16bea
movzx r8d, bl
mov eax, r9d
shr eax, 1
shr r8d, 1
xor r8d, eax
mov eax, edx
btc eax, 8
sar eax, 1
xor r8d, eax
jmp 0x16bf3
mov r8d, r9d
xor r8d, edx
shr r8d, 1
test r8b, 1
je 0x16c2c
test r10b, r10b
je 0x16c16
btc edx, 8
shr r9d, 1
movzx r8d, bl
shr r8d, 1
sar edx, 1
xor r8d, r9d
xor r8d, edx
jmp 0x16c1f
mov r8d, r9d
xor r8d, edx
shr r8d, 1
movzx eax, r15b
xor eax, r8d
btc eax, 8
jmp 0x16c4d
test r10b, r10b
je 0x16c46
btc edx, 8
shr r9d, 1
movzx eax, bl
shr eax, 1
sar edx, 1
xor eax, r9d
xor eax, edx
jmp 0x16c4d
mov eax, r9d
xor eax, edx
shr eax, 1
mov r8, qword [rsp + 0x48]
mov r12, qword [rsp + 0x130]
mov r11, qword [rsp + 0x58]
mov r13, qword [rsp + 0x60]
sar eax, 1
mov byte [r8], al
xor cl, al
btr dword [r12 + r11*4 + 0x20], 0x1d
lea rax, [r13 + r13*2 + 6]
mov dl, byte [r12 + rax*4]
xor dl, cl
jne 0x16db4
bt dword [r12 + r11*4 + 0x20], 0x1c
jb 0x16d8d
mov rax, qword [0x000192b8]
lea r14, [0x00010000]
mov rbx, r14
sub rbx, rax
je 0x16d86
mov rcx, qword [0x000192b0]
sub r8, rbp
sub ebp, r14d
lea r9d, [rcx - 1]
mov qword [rsp + 0x48], r8
add esi, ebp
xor r8d, r8d
lea r15, [0x000192b0]
test r9d, r9d
js 0x16cff
lea eax, [r9 + r8]
cdq
sub eax, edx
sar eax, 1
movsxd rdx, eax
mov r10d, dword [r15 + rdx*4 + 4]
and r10d, 0xfffffff
cmp ebp, r10d
jae 0x16cf4
lea r9d, [rdx - 1]
jmp 0x16cfa
jbe 0x16d68
lea r8d, [rdx + 1]
cmp r9d, r8d
jge 0x16cd1
movsxd r10, r8d
mov eax, ecx
cmp r10, rax
jae 0x16d86
mov rbp, qword [rsp + 0x48]
mov edx, dword [r15 + r10*4 + 4]
mov eax, edx
and eax, 0xfffffff
cmp eax, esi
jae 0x16d81
mov r8, rdx
mov r9d, edx
shl edx, 2
and r8d, 0xfffffff
sar edx, 0x1e
sar r9d, 0x1e
add r8, rbp
and edx, 3
and r9d, 3
add r8, r14
xor r11d, r11d
sub edx, 1
je 0x16d54
sub edx, 1
je 0x16d57
cmp edx, 1
jne 0x16d57
mov r11, rbx
sub r9d, 2
je 0x16d6d
cmp r9d, 1
jne 0x16d77
add qword [r8], r11
jmp 0x16d70
mov r10, rdx
jmp 0x16d02
add dword [r8], r11d
mov rcx, qword [0x000192b0]
inc r10
mov eax, ecx
cmp r10, rax
jb 0x16d0e
mov r11, qword [rsp + 0x58]
bts dword [r12 + r11*4 + 0x20], 0x1c
sub r13, 1
mov qword [rsp + 0x60], r13
js 0x16de8
mov rbx, qword [rsp + 0x70]
mov r14d, dword [rsp + 0x140]
mov r15, qword [rsp + 0x78]
mov rdx, qword [rsp + 0x68]
jmp 0x16468
mov dword [rsp + 0x148], 0x80004005
jmp 0x16de8
mov rcx, rdi
call qword [sym.imp.ntoskrnl.exe_MmUnlockPages]
and dword [rsp + 0x140], 0
mov rcx, rdi
call qword [sym.imp.ntoskrnl.exe_IoFreeMdl]
xor edi, edi
mov dword [rsp + 0x148], 0x8007000e
cmp dword [rsp + 0x140], 0
je 0x16dfb
mov rcx, rdi
call qword [sym.imp.ntoskrnl.exe_MmUnlockPages]
test rdi, rdi
je 0x16e09
mov rcx, rdi
call qword [sym.imp.ntoskrnl.exe_IoFreeMdl]
mov ecx, dword [rsp + 0x148]
inc dword [r12 + 0xc]
mov eax, ecx
add rsp, 0xe8
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret