Function at 0x58450
Capabilities:
Print debug messages

Disassembly:
mov qword [rsp + 0x20], r9
mov qword [rsp + 0x18], r8
mov dword [rsp + 0x10], edx
mov qword [rsp + 8], rcx
push rsi
push rdi
sub rsp, 0x198
mov rax, qword [0x00078100]
xor rax, rsp
mov qword [rsp + 0x188], rax
mov dword [rsp + 0x110], 0
mov qword [rsp + 0x88], 0
mov qword [rsp + 0x80], 0
mov qword [rsp + 0x168], 0
xor eax, eax
mov word [rsp + 0x158], ax
lea rdi, [rsp + 0x15a]
xor eax, eax
mov ecx, 0xe
rep stosb byte [rdi], al
mov dword [rsp + 0xe0], 0
lea rdi, [rsp + 0xe8]
xor eax, eax
mov ecx, 0x28
rep stosb byte [rdi], al
mov qword [rsp + 0xd8], 0
mov qword [rsp + 0x150], 0
mov qword [rsp + 0x78], 0
mov qword [rsp + 0x90], 0
mov qword [rsp + 0xb8], 0
mov qword [rsp + 0x140], 0
mov qword [rsp + 0xa0], 0
lea rdi, [rsp + 0xa8]
xor eax, eax
mov ecx, 0x10
rep stosb byte [rdi], al
mov qword [rsp + 0x70], 0
lea rdi, [rsp + 0x120]
lea rsi, str.DosDevices:_
mov ecx, 0x20
rep movsb byte [rdi], byte [rsi]
mov dword [rsp + 0x98], 0
mov dword [rsp + 0x148], 0
mov rax, qword [rsp + 0x1c0]
movzx eax, word [rax]
cmp eax, 6
jge 0x5859b
mov dword [rsp + 0x110], 0xc000000d
jmp 0x590aa
mov eax, dword [rsp + 0x1f0]
and eax, 8
test eax, eax
jne 0x585b9
mov dword [rsp + 0x110], 0xc00000bb
jmp 0x590aa
mov eax, dword [rsp + 0x1f0]
and eax, 0x30
test eax, eax
jne 0x585d7
mov dword [rsp + 0x110], 0xc00000bb
jmp 0x590aa
mov edx, 0x20000
xor ecx, ecx
call qword [sym.imp.ntoskrnl.exe_ExAllocatePool]
mov qword [rsp + 0x140], rax
cmp qword [rsp + 0x140], 0
jne 0x58607
mov dword [rsp + 0x110], 0xc000009a
jmp 0x590aa
mov rdi, qword [rsp + 0x140]
xor eax, eax
mov ecx, 0x20000
rep stosb byte [rdi], al
mov edx, 0xa0000
xor ecx, ecx
call qword [sym.imp.ntoskrnl.exe_ExAllocatePool]
mov qword [rsp + 0xb8], rax
cmp qword [rsp + 0xb8], 0
jne 0x58648
mov dword [rsp + 0x110], 0xc000009a
jmp 0x590aa
mov rdi, qword [rsp + 0xb8]
xor eax, eax
mov ecx, 0xa0000
rep stosb byte [rdi], al
call qword [sym.imp.ntoskrnl.exe_IoGetFileObjectGenericMapping]
mov r9, rax
mov r8d, dword [rsp + 0x1b8]
mov rdx, qword [rsp + 0x140]
mov rcx, qword [rsp + 0xb8]
call sub.ntoskrnl.exe_SeCreateAccessState
mov dword [rsp + 0x110], eax
cmp dword [rsp + 0x110], 0
jge 0x586a8
mov edx, dword [rsp + 0x110]
lea rcx, str.IrpCreateFile:_SeCreateAccessState_0x_X_n
call sub.ntoskrnl.exe_DbgPrint
jmp 0x590aa
lea rdi, [rsp + 0xa0]
xor eax, eax
mov ecx, 0x18
rep stosb byte [rdi], al
mov qword [rsp + 0xa0], 0
mov rax, qword [rsp + 0xb8]
mov qword [rsp + 0xa8], rax
mov eax, dword [rsp + 0x1b8]
mov dword [rsp + 0xb0], eax
mov dword [rsp + 0xb4], 0
lea rdi, [rsp + 0xe0]
xor eax, eax
mov ecx, 8
rep stosb byte [rdi], al
mov rax, qword [rsp + 0x1c0]
mov rax, qword [rax + 8]
movzx eax, word [rax + 8]
mov word [rsp + 0x138], ax
lea rdx, [rsp + 0x120]
lea rcx, [rsp + 0x158]
call qword [sym.imp.ntoskrnl.exe_RtlInitUnicodeString]
mov dword [rsp + 0xe0], 0x30
mov qword [rsp + 0xe8], 0
mov dword [rsp + 0xf8], 0x240
lea rax, [rsp + 0x158]
mov qword [rsp + 0xf0], rax
mov qword [rsp + 0x100], 0
mov qword [rsp + 0x108], 0
mov dword [rsp + 0x68], 0x100
mov qword [rsp + 0x60], 0
mov dword [rsp + 0x58], 0
mov dword [rsp + 0x50], 0
mov qword [rsp + 0x48], 0
mov dword [rsp + 0x40], 0x20
mov dword [rsp + 0x38], 1
mov dword [rsp + 0x30], 3
mov dword [rsp + 0x28], 0x80
mov qword [rsp + 0x20], 0
mov r9, qword [rsp + 0x1c8]
lea r8, [rsp + 0xe0]
mov edx, 0x80100000
lea rcx, [rsp + 0x88]
call qword [sym.imp.ntoskrnl.exe_IoCreateFile]
mov dword [rsp + 0x110], eax
cmp dword [rsp + 0x110], 0
je 0x5887b
mov dword [rsp + 0x68], 0x100
mov qword [rsp + 0x60], 0
mov dword [rsp + 0x58], 0
mov dword [rsp + 0x50], 0
mov qword [rsp + 0x48], 0
mov dword [rsp + 0x40], 0x20
mov dword [rsp + 0x38], 1
mov dword [rsp + 0x30], 3
mov dword [rsp + 0x28], 0x80
mov qword [rsp + 0x20], 0
mov r9, qword [rsp + 0x1c8]
lea r8, [rsp + 0xe0]
mov edx, 0x80100000
lea rcx, [rsp + 0x88]
call qword [sym.imp.ntoskrnl.exe_IoCreateFile]
mov dword [rsp + 0x110], eax
cmp dword [rsp + 0x110], 0
jge 0x5889d
mov edx, dword [rsp + 0x110]
lea rcx, str.IrpCreateFile:_IoCreateFile_0x_X_n
call sub.ntoskrnl.exe_DbgPrint
jmp 0x590aa
mov qword [rsp + 0x28], 0
lea rax, [rsp + 0x80]
mov qword [rsp + 0x20], rax
xor r9d, r9d
mov r8, qword [sym.imp.ntoskrnl.exe_IoFileObjectType]
mov r8, qword [r8]
mov edx, 1
mov rcx, qword [rsp + 0x88]
call qword [sym.imp.ntoskrnl.exe_ObReferenceObjectByHandle]
mov dword [rsp + 0x110], eax
cmp dword [rsp + 0x110], 0
jge 0x588fc
mov edx, dword [rsp + 0x110]
lea rcx, str.IrpCreateFile:_ObReferenceObjectByHandle_0x_X_n
call sub.ntoskrnl.exe_DbgPrint
jmp 0x590aa
mov rax, qword [rsp + 0x80]
cmp qword [rax + 0x10], 0
je 0x5891e
mov rax, qword [rsp + 0x80]
mov rax, qword [rax + 0x10]
cmp qword [rax + 8], 0
jne 0x5892e
mov dword [rsp + 0x110], 0xc00000bb
jmp 0x590aa
mov rax, qword [rsp + 0x80]
mov rax, qword [rax + 0x10]
mov rax, qword [rax + 8]
mov qword [rsp + 0xd8], rax
mov rax, qword [rsp + 0x80]
mov rax, qword [rax + 0x10]
mov rax, qword [rax + 0x10]
mov qword [rsp + 0x150], rax
lea rdi, [rsp + 0xe0]
xor eax, eax
mov ecx, 8
rep stosb byte [rdi], al
mov dword [rsp + 0xe0], 0x30
mov qword [rsp + 0xe8], 0
mov dword [rsp + 0xf8], 0x240
mov qword [rsp + 0xf0], 0
mov qword [rsp + 0x100], 0
mov qword [rsp + 0x108], 0
lea rax, [rsp + 0x168]
mov qword [rsp + 0x40], rax
mov dword [rsp + 0x38], 0
mov dword [rsp + 0x30], 0
mov dword [rsp + 0x28], 0xd8
mov qword [rsp + 0x20], 0
xor r9d, r9d
lea r8, [rsp + 0xe0]
mov rdx, qword [sym.imp.ntoskrnl.exe_IoFileObjectType]
mov rdx, qword [rdx]
xor ecx, ecx
call sub.ntoskrnl.exe_ObCreateObject
mov dword [rsp + 0x110], eax
cmp dword [rsp + 0x110], 0
jge 0x58a28
mov edx, dword [rsp + 0x110]
lea rcx, str.IrpCreateFile:_ObCreateObject_0x_X_n
call sub.ntoskrnl.exe_DbgPrint
jmp 0x590aa
mov rdi, qword [rsp + 0x168]
xor eax, eax
mov ecx, 0xd8
rep stosb byte [rdi], al
mov edx, 0xd8
mov rax, qword [rsp + 0x168]
mov word [rax + 2], dx
mov ecx, 5
mov rax, qword [rsp + 0x168]
mov word [rax], cx
mov rcx, qword [rsp + 0x168]
mov rax, qword [rsp + 0x150]
mov qword [rcx + 8], rax
mov eax, dword [rsp + 0x1f0]
and eax, 0x30
test eax, eax
je 0x58abc
mov rax, qword [rsp + 0x168]
mov ecx, dword [rax + 0x50]
or ecx, 2
mov rax, qword [rsp + 0x168]
mov dword [rax + 0x50], ecx
mov eax, dword [rsp + 0x1f0]
and eax, 0x10
test eax, eax
je 0x58abc
mov rax, qword [rsp + 0x168]
mov ecx, dword [rax + 0x50]
or ecx, 4
mov rax, qword [rsp + 0x168]
mov dword [rax + 0x50], ecx
mov eax, dword [rsp + 0x1f0]
and eax, 8
test eax, eax
je 0x58ae3
mov rax, qword [rsp + 0x168]
mov ecx, dword [rax + 0x50]
or ecx, 8
mov rax, qword [rsp + 0x168]
mov dword [rax + 0x50], ecx
mov eax, dword [rsp + 0x1f0]
and eax, 2
test eax, eax
je 0x58b0a
mov rax, qword [rsp + 0x168]
mov ecx, dword [rax + 0x50]
or ecx, 0x10
mov rax, qword [rsp + 0x168]
mov dword [rax + 0x50], ecx
mov eax, dword [rsp + 0x1f0]
and eax, 4
test eax, eax
je 0x58b31
mov rax, qword [rsp + 0x168]
mov ecx, dword [rax + 0x50]
or ecx, 0x20
mov rax, qword [rsp + 0x168]
mov dword [rax + 0x50], ecx
mov eax, dword [rsp + 0x1f0]
and eax, 0x800
test eax, eax
je 0x58b5d
mov rax, qword [rsp + 0x168]
mov ecx, dword [rax + 0x50]
or ecx, 0x100000
mov rax, qword [rsp + 0x168]
mov dword [rax + 0x50], ecx
mov eax, dword [rsp + 0xf8]
and eax, 0x40
test eax, eax
jne 0x58b87
mov rax, qword [rsp + 0x168]
mov ecx, dword [rax + 0x50]
or ecx, 0x20000
mov rax, qword [rsp + 0x168]
mov dword [rax + 0x50], ecx
mov rax, qword [rsp + 0x1c0]
movzx eax, word [rax]
cmp eax, 0x38
jge 0x58ba4
mov dword [rsp + 0x178], 0x38
jmp 0x58c0e
mov rax, qword [rsp + 0x1c0]
movzx eax, word [rax]
cmp eax, 0x78
jge 0x58bc1
mov dword [rsp + 0x17c], 0x78
jmp 0x58c00
mov rax, qword [rsp + 0x1c0]
movzx eax, word [rax]
cmp eax, 0xf8
jge 0x58be0
mov dword [rsp + 0x180], 0xf8
jmp 0x58bf2
mov rax, qword [rsp + 0x1c0]
movzx eax, word [rax]
mov dword [rsp + 0x180], eax
mov eax, dword [rsp + 0x180]
mov dword [rsp + 0x17c], eax
mov eax, dword [rsp + 0x17c]
mov dword [rsp + 0x178], eax
mov eax, dword [rsp + 0x178]
mov dword [rsp + 0x98], eax
mov edx, dword [rsp + 0x98]
xor ecx, ecx
call qword [sym.imp.ntoskrnl.exe_ExAllocatePool]
mov qword [rsp + 0x70], rax
cmp qword [rsp + 0x70], 0
jne 0x58c48
mov dword [rsp + 0x110], 0xc000009a
jmp 0x590aa
mov ecx, dword [rsp + 0x98]
mov rdi, qword [rsp + 0x70]
xor eax, eax
rep stosb byte [rdi], al
mov rax, qword [rsp + 0x1c0]
movzx ecx, word [rax]
sub rcx, 0xc
mov rsi, qword [rsp + 0x1c0]
mov rsi, qword [rsi + 8]
add rsi, 0xc
mov rdi, qword [rsp + 0x70]
rep movsb byte [rdi], byte [rsi]
mov rdx, qword [rsp + 0x168]
mov rax, qword [rsp + 0x70]
mov qword [rdx + 0x60], rax
mov rax, qword [rsp + 0x1c0]
movzx ecx, word [rax]
sub rcx, 0xc
mov rax, qword [rsp + 0x168]
mov word [rax + 0x58], cx
mov rcx, qword [rsp + 0x168]
movzx eax, word [rsp + 0x98]
mov word [rcx + 0x5a], ax
lea r8, [rsp + 0x148]
xor edx, edx
xor ecx, ecx
call fcn.0004e340
cmp dword [rsp + 0x148], 0x1770
jb 0x58d19
mov rax, qword [rsp + 0x168]
add rax, 0xc0
mov qword [rsp + 0x170], rax
mov rcx, qword [rsp + 0x170]
mov rax, qword [rsp + 0x170]
mov qword [rcx + 8], rax
mov rcx, qword [rsp + 0x170]
mov rax, qword [rsp + 0x170]
mov qword [rcx], rax
mov rcx, qword [rsp + 0x168]
add rcx, 0x80
xor r8d, r8d
mov edx, 1
call qword [sym.imp.ntoskrnl.exe_KeInitializeEvent]
mov rcx, qword [rsp + 0x168]
add rcx, 0x98
xor r8d, r8d
xor edx, edx
call qword [sym.imp.ntoskrnl.exe_KeInitializeEvent]
xor edx, edx
mov rax, qword [rsp + 0xd8]
movzx ecx, byte [rax + 0x4c]
call qword [sym.imp.ntoskrnl.exe_IoAllocateIrp]
mov qword [rsp + 0x78], rax
cmp qword [rsp + 0x78], 0
jne 0x58df0
mov dword [rsp + 0x110], 0xc000009a
mov edx, dword [rsp + 0x110]
lea rcx, str.IrpCreateFile:_IoAllocateIrp_0x_X_n
call sub.ntoskrnl.exe_DbgPrint
xor edx, edx
mov rcx, qword [rsp + 0x70]
call qword [sym.imp.ntoskrnl.exe_ExFreePoolWithTag]
mov qword [rsp + 0x70], 0
mov rax, qword [rsp + 0x168]
mov qword [rax + 0x60], 0
xor ecx, ecx
mov rax, qword [rsp + 0x168]
mov word [rax + 0x5a], cx
xor ecx, ecx
mov rax, qword [rsp + 0x168]
mov word [rax + 0x58], cx
mov rcx, qword [rsp + 0x168]
call qword [sym.imp.ntoskrnl.exe_ObfDereferenceObject]
mov qword [rsp + 0x168], 0
jmp 0x590aa
xor r8d, r8d
mov edx, 1
lea rcx, [rsp + 0xc0]
call qword [sym.imp.ntoskrnl.exe_KeInitializeEvent]
mov rdx, qword [rsp + 0x78]
mov qword [rdx + 8], 0
mov rax, qword [rsp + 0x78]
mov qword [rax + 0x18], 0
mov rax, qword [rsp + 0x78]
mov dword [rax + 0x10], 0x84
mov rax, qword [rsp + 0x78]
mov byte [rax + 0x40], 0
mov rcx, qword [rsp + 0x78]
mov rax, qword [rsp + 0x1c8]
mov qword [rcx + 0x48], rax
mov rcx, qword [rsp + 0x78]
lea rax, [rsp + 0xc0]
mov qword [rcx + 0x50], rax
mov rax, qword [rsp + 0x78]
mov byte [rax + 0x41], 0
mov rax, qword [rsp + 0x78]
mov byte [rax + 0x44], 0
mov rax, qword [rsp + 0x78]
mov qword [rax + 0x68], 0
call fcn.0004c4d0
mov rdx, rax
mov rax, qword [rsp + 0x78]
mov qword [rax + 0x98], rdx
mov rax, qword [rsp + 0x78]
mov qword [rax + 0xa0], 0
mov rcx, qword [rsp + 0x78]
mov rax, qword [rsp + 0x168]
mov qword [rcx + 0xc0], rax
mov rcx, qword [rsp + 0x78]
call fcn.00057c20
mov qword [rsp + 0x90], rax
mov rax, qword [rsp + 0x90]
mov byte [rax], 0
mov rcx, qword [rsp + 0x90]
mov rax, qword [rsp + 0xd8]
mov qword [rcx + 0x28], rax
mov rcx, qword [rsp + 0x90]
mov rax, qword [rsp + 0x168]
mov qword [rcx + 0x30], rax
mov rcx, qword [rsp + 0x90]
lea rax, [rsp + 0xa0]
mov qword [rcx + 8], rax
mov ecx, dword [rsp + 0x1e8]
shl ecx, 0x18
or ecx, dword [rsp + 0x1f0]
mov rax, qword [rsp + 0x90]
mov dword [rax + 0x10], ecx
mov rcx, qword [rsp + 0x90]
movzx eax, word [rsp + 0x1d8]
mov word [rcx + 0x18], ax
mov rcx, qword [rsp + 0x90]
movzx eax, word [rsp + 0x1e0]
mov word [rcx + 0x1a], ax
mov rax, qword [rsp + 0x90]
mov dword [rax + 0x20], 0
mov byte [rsp + 0x28], 1
mov byte [rsp + 0x20], 1
mov r9b, 1
xor r8d, r8d
lea rdx, [0x00057db0]
mov rcx, qword [rsp + 0x78]
call fcn.00057c80
mov rdx, qword [rsp + 0x78]
mov rcx, qword [rsp + 0xd8]
call fcn.00057e30
mov dword [rsp + 0x110], eax
cmp dword [rsp + 0x110], 0x103
jne 0x58fc0
mov qword [rsp + 0x20], 0
mov r9b, 1
xor r8d, r8d
xor edx, edx
lea rcx, [rsp + 0xc0]
call qword [sym.imp.ntoskrnl.exe_KeWaitForSingleObject]
mov rax, qword [rsp + 0x1c8]
mov eax, dword [rax]
mov dword [rsp + 0x110], eax
cmp dword [rsp + 0x110], 0
jge 0x59060
mov edx, dword [rsp + 0x110]
lea rcx, str.IrpCreateFile:_IoCallDriver_0x_X_n
call sub.ntoskrnl.exe_DbgPrint
xor edx, edx
mov rcx, qword [rsp + 0x70]
call qword [sym.imp.ntoskrnl.exe_ExFreePoolWithTag]
mov qword [rsp + 0x70], 0
mov rax, qword [rsp + 0x168]
mov qword [rax + 0x60], 0
xor ecx, ecx
mov rax, qword [rsp + 0x168]
mov word [rax + 0x5a], cx
xor ecx, ecx
mov rax, qword [rsp + 0x168]
mov word [rax + 0x58], cx
mov rax, qword [rsp + 0x168]
mov qword [rax + 8], 0
mov rcx, qword [rsp + 0x168]
call qword [sym.imp.ntoskrnl.exe_ObfDereferenceObject]
mov qword [rsp + 0x168], 0
jmp 0x590aa
mov rax, qword [rsp + 0x168]
mov rax, qword [rax + 8]
add rax, 4
lock add dword [rax], 1
mov rax, qword [rsp + 0x168]
cmp qword [rax + 0x10], 0
je 0x59097
mov rax, qword [rsp + 0x168]
mov rax, qword [rax + 0x10]
add rax, 0x1c
lock add dword [rax], 1
mov rcx, qword [rsp + 0x1b0]
mov rax, qword [rsp + 0x168]
mov qword [rcx], rax
cmp qword [rsp + 0x80], 0
je 0x590cf
mov rcx, qword [rsp + 0x80]
call qword [sym.imp.ntoskrnl.exe_ObfDereferenceObject]
mov qword [rsp + 0x80], 0
cmp qword [rsp + 0x88], 0
je 0x590f4
mov rcx, qword [rsp + 0x88]
call qword [sym.imp.ntoskrnl.exe_ZwClose]
mov qword [rsp + 0x88], 0
cmp qword [rsp + 0xb8], 0
je 0x5911b
xor edx, edx
mov rcx, qword [rsp + 0xb8]
call qword [sym.imp.ntoskrnl.exe_ExFreePoolWithTag]
mov qword [rsp + 0xb8], 0
cmp qword [rsp + 0x140], 0
je 0x59142
xor edx, edx
mov rcx, qword [rsp + 0x140]
call qword [sym.imp.ntoskrnl.exe_ExFreePoolWithTag]
mov qword [rsp + 0x140], 0
mov eax, dword [rsp + 0x110]
mov rcx, qword [rsp + 0x188]
xor rcx, rsp
call fcn.0005cf80
add rsp, 0x198
pop rdi
pop rsi
ret