Function at 0x180016de0
Capabilities:
Get common file path

Disassembly:
mov qword [rsp + 0x18], rbx
mov dword [rsp + 0x10], edx
mov qword [rsp + 8], rcx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0xe0]
sub rsp, 0x1e0
mov r13, qword [rsp + 0x40]
lea esi, [rdx + 0x10]
mov r10d, dword [rbp + 0x128]
lea rcx, [0x180000000]
mov r8d, dword [rbp + 0x128]
mov r14, r9
mov r12d, dword [rbp + 0x128]
xor r9d, r9d
mov dword [rsp + 0x40], r10d
mov r15d, edx
mov dword [rsp + 0x38], r8d
mov edi, edx
cmp edx, esi
jae 0x180017016
movzx eax, byte [rbp + 0x128]
lea ebx, [rdx - 0x92]
mov r15, qword [rsp + 0x40]
mov byte [rsp + 0x30], al
nop
cmp ebx, 0x36
ja case.default.0x180016e82
movzx eax, byte [rcx + rbx + 0x174ac]
mov ecx, dword [rcx + rax*4 + 0x17468]
lea rax, [0x180000000]
add rcx, rax
jmp rcx
mov r8d, 2
lea rdx, [0x180042e12]
lea rcx, [rsp + 0x48]
call fcn.180029a60
mov r10d, dword [rsp + 0x40]
xor r9d, r9d
mov byte [rsp + 0x4a], 0
jmp case.0x180016e82.16
mov byte [rsp + 0x4c], 0
jmp case.0x180016e82.16
lea rax, [rbp - 0x30]
mov r9d, r12d
mov r8, r13
mov qword [rsp + 0x20], rax
mov edx, r10d
mov rcx, r15
call qword [sym.imp.SHELL32.dll_SHGetFolderPathA]
mov r10d, dword [rsp + 0x40]
lea rcx, [0x180000000]
mov r8d, eax
mov dword [rsp + 0x38], eax
xor r9d, r9d
jmp 0x180016ffc
mov byte [rsp + 0x55], 0x57
jmp case.0x180016e82.16
mov byte [rsp + 0x54], 0x74
jmp case.0x180016e82.16
cmp qword [r14], 0
je case.0x180016e82.16
mov rcx, qword [r14]
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov r10d, dword [rsp + 0x40]
xor r9d, r9d
mov qword [r14], r9
jmp case.0x180016e82.16
mov byte [rsp + 0x4b], 0x63
jmp case.0x180016e82.16
mov r8d, 3
lea rdx, [0x180042e33]
lea rcx, [rsp + 0x48]
call fcn.1800298b0
mov eax, dword [0x180042e47]
xor r9d, r9d
mov r10d, dword [rsp + 0x40]
mov dword [rsp + 0x4f], eax
movzx eax, byte [0x180042e4b]
mov byte [rsp + 0x53], al
jmp case.0x180016e82.16
mov r8d, dword [rsp + 0x38]
lea rcx, [0x180000000]
mov dl, 1
mov r15, r9
mov byte [rsp + 0x30], dl
jmp 0x180017001
mov rcx, r14
call qword [0x180059e88]
mov r10d, dword [rsp + 0x40]
xor r9d, r9d
mov byte [0x180059eb9], al
jmp case.0x180016e82.16
mov rcx, qword [r14 + 0x10]
call fcn.180025274
mov r10d, dword [rsp + 0x40]
xor r9d, r9d
jmp case.0x180016e82.16
cmp byte [0x180059eb8], 0
mov r10d, 0x36
mov dword [rsp + 0x40], r10d
jne case.0x180016e82.16
xor al, al
jmp 0x18001744a
mov rcx, qword [r14 + 0x20]
test rcx, rcx
je case.0x180016e82.16
call qword [sym.imp.KERNEL32.dll_FreeLibrary]
mov r10d, dword [rsp + 0x40]
xor r9d, r9d
jmp case.0x180016e82.16
mov r12d, r9d
jmp case.0x180016e82.16
mov r13, r9
jmp case.0x180016e82.16
mov byte [rsp + 0x4a], 0x6f
lea rcx, [0x180000000]
mov r8d, dword [rsp + 0x38]
movzx edx, byte [rsp + 0x30]
inc edi
inc ebx
cmp edi, esi
jb 0x180016e60
mov r15d, dword [rbp + 0x128]
jmp 0x180017021
movzx edx, byte [rbp + 0x128]
mov byte [rsp + 0x30], dl
movzx ebx, byte [rbp + 0x128]
lea esi, [r15 + 0x12]
mov r11d, 0x64
cmp r15d, esi
jae 0x1800171eb
lea edi, [r15 - 0xa4]
mov r11d, 0x65
lea r9d, [r11 + 9]
cmp edi, 0x20
ja case.0x180017066.3
mov ecx, dword [rcx + rdi*4 + 0x174e4]
lea rax, [0x180000000]
add rcx, rax
jmp rcx
mov word [rsp + 0x65], 0x74
jmp case.0x180017066.3
mov byte [rsp + 0x65], 0
jmp case.0x180017066.3
mov dword [rsp + 0x7c], 0x6c006c
jmp case.0x180017066.3
mov r11d, 0x64
mov dword [rsp + 0x76], 0x2e0032
mov word [rsp + 0x7a], r11w
jmp 0x1800171c9
mov word [rsp + 0x66], 0x57
jmp case.0x180017066.3
mov byte [rsp + 0x56], 0
jmp case.0x180017066.3
mov word [rsp + 0x6e], r9w
jmp case.0x180017066.3
mov eax, dword [0x180042e50]
mov dword [rbp - 0x58], eax
movzx eax, word [0x180042e54]
mov word [rbp - 0x54], ax
jmp case.0x180017066.3
xor eax, eax
mov ecx, eax
test r8d, r8d
movzx eax, dl
cmove ecx, eax
mov byte [rsp + 0x30], cl
movzx edx, cl
test cl, cl
je case.0x180017066.3
lea r9, [rbp - 0x30]
mov r8d, r12d
mov rdx, r13
mov ecx, r10d
call qword [sym.imp.SHELL32.dll_SHSetFolderPathA]
movzx edx, byte [rsp + 0x30]
jmp case.0x180017066.3
mov dword [rsp + 0x72], 0x33006c
jmp case.0x180017066.3
mov r8d, 2
mov byte [rsp + 0x58], 0
lea rdx, str.PreBaseComponent
lea rcx, [rsp + 0x58]
call fcn.1800298b0
movzx edx, byte [rsp + 0x30]
jmp case.0x180017066.3
xor eax, eax
mov word [rbp - 0x80], ax
jmp case.0x180017066.3
mov r8d, 5
lea rdx, [0x180042eb2]
lea rcx, [rsp + 0x58]
call fcn.1800298b0
movzx edx, byte [rsp + 0x30]
jmp case.0x180017066.3
mov word [rsp + 0x70], r11w
jmp case.0x180017066.3
mov r8d, 1
lea rdx, [0x180042ee4]
lea rcx, [rsp + 0x58]
call fcn.1800298b0
mov eax, dword [0x180042f06]
movzx edx, byte [rsp + 0x30]
mov dword [rsp + 0x60], eax
movzx eax, byte [0x180042f0a]
mov byte [rsp + 0x64], al
jmp case.0x180017066.3
mov eax, 0x72
mov dword [rsp + 0x68], 0x65006b
mov word [rsp + 0x6c], ax
jmp case.0x180017066.3
movzx ebx, byte [0x180059eb9]
mov r11d, 0x64
inc edi
lea eax, [rdi + 0xa4]
cmp eax, esi
jae 0x1800171eb
mov r10d, dword [rsp + 0x40]
lea rcx, [0x180000000]
mov r8d, dword [rsp + 0x38]
jmp 0x180017042
lea r13d, [r15 - 0x10]
cmp r15d, r13d
jbe case.0x18001723a.0
mov r12, qword [rsp + 0x40]
lea esi, [r15 - 0xa7]
mov rdi, qword [rbp + 0x120]
movabs r9, 0x65006e0072
movabs r8, 0x2e00320033006c
nop
cmp esi, 0xf
ja case.default.0x18001723a
lea rdx, [0x180000000]
mov ecx, dword [rdx + rsi*4 + 0x17568]
add rcx, rdx
jmp rcx
mov bl, 1
jmp case.default.0x18001723a
mov r8d, 4
lea rdx, str.32.d
lea rcx, [rbp - 0x58]
call fcn.18002965c
movabs r8, 0x2e00320033006c
movabs r9, 0x65006e0072
jmp case.default.0x18001723a
mov qword [rbp - 0x54], r9
lea rdx, [0x18004182c]
mov r8d, 1
jmp 0x180017250
lea r8, [rsp + 0x48]
mov edx, 0x5b
lea rcx, [rsp + 0x68]
call fcn.180005a90
mov qword [rsp + 0x40], rax
jmp 0x180017259
cmp byte [r14 + 0x284], 0
je 0x180017304
mov edi, 0xb2
nop
cmp edi, 0xb2
je 0x1800172d8
cmp edi, 0x1f4a
jne 0x1800172e0
mov rcx, qword [r14 + 0x260]
lea rdx, [r14 + 0x28]
call r12
test eax, eax
je 0x180016fc1
jmp 0x1800172e0
mov byte [r14 + 0x284], 0
add edi, 0x1e98
cmp edi, 0x3d30
jbe 0x1800172b0
mov rcx, qword [rbp + 0x120]
lea rax, [r14 + 0x54]
mov rdi, rcx
mov qword [rcx], rax
jmp 0x180017259
mov rcx, qword [r14 + 0x260]
lea rdx, [r14 + 0x28]
call qword [rsp + 0x40]
test eax, eax
je 0x180016fc1
mov rcx, qword [rbp + 0x120]
lea rax, [r14 + 0x54]
mov qword [rcx], rax
mov rdi, qword [rbp + 0x120]
jmp 0x180017259
lea r8, [rsp + 0x58]
mov edx, 0x5b
lea rcx, [rbp - 0x58]
call fcn.180005a90
lea r8, str.CreateToolhelp32Snapshot
mov edx, 0x5b
lea rcx, [rbp - 0x78]
mov r12, rax
call fcn.180005a90
mov qword [rsp + 0x38], rax
jmp 0x180017259
mov qword [rbp - 0x6e], r8
jmp case.default.0x18001723a
mov word [rbp - 0x66], r11w
jmp case.default.0x18001723a
mov rcx, qword [rbp + 0x120]
xor r9d, r9d
xor r8d, r8d
mov edx, reloc.SHELL32.dll_ILFree
call fcn.18000a2c0
cmp qword [r14 + 0x260], 0xffffffffffffffff
jne 0x180017329
xor edx, edx
lea ecx, [rdx + 2]
call qword [rsp + 0x38]
mov qword [r14 + 0x260], rax
cmp rax, 0xffffffffffffffff
je 0x180016fc1
mov rdi, qword [rbp + 0x120]
jmp 0x180017259
mov eax, dword [0x1800418d4]
mov dword [rbp - 0x44], eax
movzx eax, word [0x1800418d8]
mov word [rbp - 0x40], ax
jmp case.default.0x18001723a
movzx eax, word [0x180042f58]
movsd xmm0, qword [0x180042f50]
mov word [rbp - 0x70], ax
xor eax, eax
mov word [rbp - 0x6e], ax
movsd qword [rbp - 0x78], xmm0
jmp case.default.0x18001723a
xor eax, eax
mov word [rbp - 0x64], ax
jmp case.default.0x18001723a
mov rcx, qword [rbp + 0x120]
mov eax, dword [r14 + 0x48]
mov rdi, rcx
mov dword [rcx + 0x1c], eax
mov eax, dword [r14 + 0x44]
mov dword [rcx + 0x20], eax
jmp case.default.0x18001723a
mov eax, dword [r14 + 0x30]
mov dword [rdi + 0x18], eax
jmp case.default.0x18001723a
xor eax, eax
mov dword [rbp - 0x64], 0x6c006c
mov word [rbp - 0x60], ax
dec r15d
dec esi
cmp r15d, r13d
jbe case.0x18001723a.0
mov r11d, 0x64
jmp 0x180017220
movzx eax, bl
mov rbx, qword [rsp + 0x230]
add rsp, 0x1e0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret