Function at 0x140003980
Capabilities:
Get common file path

Disassembly:
mov qword [rsp + 0x20], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x350]
sub rsp, 0x450
xor ebx, ebx
lea rax, str.CI.dll
cmp ecx, 0x23f0
mov qword [rbp + 0x3a0], rbx
mov r13d, ecx
mov qword [rsp + 0x28], rbx
lea r14, str.ntoskrnl.exe
mov dword [rsp + 0x20], ebx
cmovae r14, rax
lea rcx, [rsp + 0x30]
mov rdx, r14
mov edi, ebx
mov r15d, ebx
mov r12d, ebx
call qword [sym.imp.ntdll.dll_RtlInitUnicodeString]
mov r8b, 1
lea rdx, [rsp + 0x30]
lea rcx, [rsp + 0x20]
call qword [sym.imp.ntdll.dll_RtlUnicodeStringToAnsiString]
test eax, eax
js 0x140003c8b
call fcn.1400018d0
mov r8, rax
test rax, rax
je 0x140003ac8
mov r9d, ebx
cmp dword [rax], ebx
jbe 0x140003aa8
lea rsi, [rax + 0x2e]
movzx r10d, word [rsi]
mov r11, qword [rsp + 0x28]
add r10, 0x30
mov eax, r9d
imul rdi, rax, 0x128
add r10, rdi
add r10, r8
cmp r10, r11
je 0x140003be6
test r10, r10
je 0x140003a92
test r11, r11
je 0x140003a92
sub r10, r11
movzx edx, byte [r10 + r11]
lea ecx, [rdx - 0x41]
cmp cl, 0x19
lea eax, [rdx + 0x20]
movzx r12d, al
cmova r12d, edx
movzx edx, byte [r11]
lea ecx, [rdx - 0x41]
cmp cl, 0x19
lea eax, [rdx + 0x20]
cmova eax, edx
inc r11
test r12b, r12b
je 0x140003a83
cmp r12b, al
je 0x140003a50
movsx eax, al
movsx ecx, r12b
sub ecx, eax
je 0x140003be6
inc r9d
add rsi, 0x128
cmp r9d, dword [r8]
jb 0x140003a1d
mov r12d, ebx
mov rax, qword gs:[0x30]
xor edx, edx
mov rcx, qword [rax + 0x60]
mov rcx, qword [rcx + 0x30]
call qword [sym.imp.ntdll.dll_RtlFreeHeap]
mov rdi, qword [rbp + 0x3a0]
lea rcx, [rsp + 0x20]
call qword [sym.imp.ntdll.dll_RtlFreeAnsiString]
test r15, r15
je 0x140003c8b
mov edx, 0x104
mov word [rsp + 0x40], bx
lea rcx, [rsp + 0x40]
call qword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
test eax, eax
je 0x140003c9f
lea rax, [rsp + 0x40]
cmp word [rsp + 0x40], bx
je 0x140003b0e
add rax, 2
cmp word [rax], bx
jne 0x140003b05
lea rdx, [0x140030bbc]
mov ecx, 0x5c
sub rdx, rax
mov word [rax], cx
lea rax, [rax + 2]
movzx ecx, word [rdx + rax]
test cx, cx
jne 0x140003b1d
mov word [rax], bx
lea rax, [rsp + 0x40]
cmp word [rsp + 0x40], bx
je 0x140003b45
add rax, 2
cmp word [rax], bx
jne 0x140003b3c
movzx ecx, word [r14]
test cx, cx
je 0x140003b64
mov rdx, r14
sub rdx, rax
mov word [rax], cx
add rax, 2
movzx ecx, word [rdx + rax]
test cx, cx
jne 0x140003b54
xor edx, edx
mov word [rax], bx
lea rcx, [rsp + 0x40]
lea r8d, [rdx + 1]
call qword [sym.imp.KERNEL32.dll_LoadLibraryExW]
mov rsi, rax
test rax, rax
je 0x140003c69
mov rdx, r14
lea rcx, str.___Module___ws__loaded_for_pattern_search_r_n
call fcn.140002248
mov rcx, rsi
cmp r13d, 0x23f0
jae 0x140003c08
lea rdx, [rbp + 0x398]
mov qword [rbp + 0x398], rbx
call qword [sym.imp.ntdll.dll_LdrFindEntryForAddress]
test eax, eax
js 0x140003c50
mov rax, qword [rbp + 0x398]
mov rdx, rbx
mov ecx, dword [rax + 0x40]
mov eax, 0xc0000001
add rcx, 0xfffffffffffffffc
je 0x140003c21
cmp dword [rdx + rsi], 0x1d8806eb
je 0x140003bf5
inc rdx
cmp rdx, rcx
jb 0x140003bd3
jmp 0x140003c21
mov r15, qword [rdi + r8 + 0x18]
mov r12d, dword [rdi + r8 + 0x20]
jmp 0x140003aa8
movsxd rdi, dword [rdx + rsi + 4]
mov eax, ebx
add rdi, 8
add rdi, rdx
add rdi, r15
jmp 0x140003c21
mov r9d, r13d
lea r8, [rbp + 0x3a0]
mov rdx, r15
call fcn.140003504
mov rdi, qword [rbp + 0x3a0]
test eax, eax
js 0x140003c50
cmp rdi, r15
jb 0x140003c3a
mov eax, r12d
add rax, r15
cmp rdi, rax
ja 0x140003c3a
mov rbx, rdi
jmp 0x140003c5e
mov r8, rdi
lea rdx, str.____Resolved_address_0x_llX_does_not_belong_required_module._r_n
mov ecx, 1
call fcn.14000ed5c
jmp 0x140003c5e
mov edx, eax
lea rcx, str.____Failed_to_locate_kernel_variable_address
call fcn.14000fbe0
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_FreeLibrary]
jmp 0x140003c86
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r8, r14
lea rdx, str.____Could_not_load___ws___GetLastError__lu_r_n
mov r9d, eax
mov ecx, 1
call fcn.14000ed5c
mov rax, rbx
jmp 0x140003ca1
mov r8, r14
lea rdx, str.____Abort__could_not_query___ws__image_base_r_n
mov ecx, 1
call fcn.14000ed5c
xor eax, eax
mov rbx, qword [rsp + 0x4a8]
add rsp, 0x450
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret