Function at 0x18009bed0
Capabilities:
Get common file path
Get program files directory

Disassembly:
push rbp
push rsi
lea rbp, [rsp - 0xf8]
sub rsp, 0x1f8
mov rax, qword [0x18012a010]
xor rax, rsp
mov qword [rbp + 0xd0], rax
xor r9d, r9d
mov qword [rsp + 0x50], rcx
lea rax, [rbp - 0x40]
xor r8d, r8d
xor ecx, ecx
mov qword [rsp + 0x20], rax
lea edx, [r9 + 0x26]
call qword [sym.imp.SHELL32.dll_SHGetFolderPathA]
xor esi, esi
mov qword [rsp + 0x48], 0xf
mov qword [rsp + 0x40], rsi
lea rax, [rbp - 0x40]
mov byte [rsp + 0x30], sil
mov r8, 0xffffffffffffffff
inc r8
cmp byte [rax + r8], sil
jne 0x18009bf33
lea rdx, [rbp - 0x40]
lea rcx, [rsp + 0x30]
call fcn.1800c2b50
mov r8d, 0x14
lea rdx, str.Mozilla_Thunderbird
lea rcx, [rsp + 0x30]
call fcn.1800c22c0
movups xmm0, xmmword [rax]
movups xmm1, xmmword [rax + 0x10]
mov qword [rax + 0x10], rsi
mov qword [rax + 0x18], 0xf
mov byte [rax], sil
mov rdx, qword [rsp + 0x48]
movups xmmword [rbp - 0x60], xmm0
movups xmmword [rbp - 0x50], xmm1
cmp rdx, 0x10
jb 0x18009bfbc
mov rcx, qword [rsp + 0x30]
inc rdx
mov rax, rcx
cmp rdx, 0x1000
jb 0x18009bfb7
mov rcx, qword [rcx - 8]
add rdx, 0x27
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18009c590
call fcn.1800cf9b0
cmp qword [rbp - 0x48], 0x10
movabs rax, 0x7fffffffffffffff
mov qword [rsp + 0x218], rbx
lea rbx, [rbp - 0x60]
mov qword [rsp + 0x220], rdi
mov rdi, qword [rbp - 0x50]
mov qword [rsp + 0x1f0], r13
mov r13, qword [rbp - 0x60]
cmovae rbx, r13
mov qword [rsp + 0x1e8], r14
cmp rdi, 0x10
jae 0x18009c01f
movups xmm0, xmmword [rbx]
mov qword [rsp + 0x48], 0xf
mov r14d, 0xf
movups xmmword [rsp + 0x30], xmm0
mov rsi, qword [rsp + 0x30]
jmp 0x18009c08c
mov r14, rdi
or r14, 0xf
cmp r14, rax
cmova r14, rax
lea rcx, [r14 + 1]
cmp rcx, 0x1000
jb 0x18009c066
lea rax, [rcx + 0x27]
cmp rax, rcx
jbe 0x18009c596
mov rcx, rax
call fcn.1800cf9b8
test rax, rax
je 0x18009c59c
lea rsi, [rax + 0x27]
and rsi, 0xffffffffffffffe0
mov qword [rsi - 8], rax
jmp 0x18009c073
test rcx, rcx
je 0x18009c073
call fcn.1800cf9b8
mov rsi, rax
lea r8, [rdi + 1]
mov qword [rsp + 0x30], rsi
mov rdx, rbx
mov rcx, rsi
call fcn.1800d3040
mov qword [rsp + 0x48], r14
mov qword [rsp + 0x228], r12
lea rax, [rsp + 0x30]
mov qword [rsp + 0x1e0], r15
cmp r14, 0x10
lea r15, [rsp + 0x30]
mov qword [rsp + 0x40], rdi
cmovae r15, rsi
mov rcx, rdi
jb 0x18009c0bb
mov rax, rsi
lea rbx, [rsp + 0x30]
cmovae rbx, rsi
lea r12, [rcx + rax]
cmp rbx, r12
je 0x18009c0e4
sub r15, rbx
movzx ecx, byte [rbx]
call fcn.1800dbd50
mov byte [rbx + r15], al
inc rbx
cmp rbx, r12
jne 0x18009c0d0
movups xmm0, xmmword [rsp + 0x30]
lea rdx, [0x18012d878]
movups xmm1, xmmword [rsp + 0x40]
lea rcx, [rbp - 0x80]
movups xmmword [rsp + 0x60], xmm0
movups xmmword [rsp + 0x70], xmm1
call fcn.1800c2490
mov rdx, rax
lea rcx, [rsp + 0x60]
call fcn.18008cd30
test eax, eax
jg 0x18009c4ac
mov r14, qword [rbp - 0x48]
lea rsi, [rbp - 0x60]
cmp r14, 0x10
movabs r15, 0x7fffffffffffffff
cmovae rsi, r13
cmp rdi, 0x10
jae 0x18009c150
movups xmm0, xmmword [rsi]
mov qword [rsp + 0x48], 0xf
movups xmmword [rsp + 0x30], xmm0
jmp 0x18009c1c1
mov rbx, rdi
or rbx, 0xf
cmp rbx, r15
cmova rbx, r15
lea rcx, [rbx + 1]
cmp rcx, 0x1000
jb 0x18009c19a
lea rax, [rcx + 0x27]
cmp rax, rcx
jbe 0x18009c5a2
mov rcx, rax
call fcn.1800cf9b8
mov rcx, rax
test rax, rax
je 0x18009c5a8
add rax, 0x27
and rax, 0xffffffffffffffe0
mov qword [rax - 8], rcx
jmp 0x18009c1a8
test rcx, rcx
je 0x18009c1a6
call fcn.1800cf9b8
jmp 0x18009c1a8
xor eax, eax
lea r8, [rdi + 1]
mov qword [rsp + 0x30], rax
mov rdx, rsi
mov rcx, rax
call fcn.1800d3040
mov qword [rsp + 0x48], rbx
mov r12, qword [rsp + 0x50]
lea rcx, [rbp - 0x80]
mov rdx, r12
mov qword [rsp + 0x40], rdi
call fcn.1800c2490
mov r8, rax
lea rdx, [rsp + 0x30]
lea rcx, [rsp + 0x60]
call fcn.180099a10
cmp qword [0x18012d4f0], 0x10
lea r8, [0x18012d4d8]
mov r9, qword [0x18012d4e8]
mov rcx, rax
cmovae r8, qword [0x18012d4d8]
call fcn.1800c7240
movups xmm0, xmmword [rax]
movups xmm1, xmmword [rax + 0x10]
mov qword [rax + 0x10], 0
mov qword [rax + 0x18], 0xf
mov byte [rax], 0
mov rdx, qword [0x18012d4f0]
movups xmmword [rsp + 0x50], xmm0
movups xmmword [rsp + 0x30], xmm1
cmp rdx, 0x10
jb 0x18009c27e
mov rcx, qword [0x18012d4d8]
inc rdx
cmp rdx, 0x1000
jb 0x18009c26f
mov r8, qword [rcx - 8]
add rdx, 0x27
sub rcx, r8
lea rax, [rcx - 8]
cmp rax, 0x1f
ja 0x18009c5a8
mov rcx, r8
call fcn.1800cf9b0
movups xmm0, xmmword [rsp + 0x50]
movups xmm1, xmmword [rsp + 0x30]
mov rdx, qword [rsp + 0x78]
movups xmmword [0x18012d4d8], xmm0
movups xmmword [0x18012d4e8], xmm1
cmp rdx, 0x10
jb 0x18009c2c9
mov rcx, qword [rsp + 0x60]
inc rdx
mov rax, rcx
cmp rdx, 0x1000
jb 0x18009c2c4
mov rcx, qword [rcx - 8]
add rdx, 0x27
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18009c5a8
call fcn.1800cf9b0
cmp r14, 0x10
lea rbx, [rbp - 0x60]
cmovae rbx, r13
cmp rdi, 0x10
jae 0x18009c2f9
movups xmm0, xmmword [rbx]
mov qword [rsp + 0x48], 0xf
mov r14d, 0xf
movups xmmword [rsp + 0x30], xmm0
mov rsi, qword [rsp + 0x30]
jmp 0x18009c36a
mov r14, rdi
or r14, 0xf
cmp r14, r15
cmova r14, r15
lea rcx, [r14 + 1]
cmp rcx, 0x1000
jb 0x18009c340
lea rax, [rcx + 0x27]
cmp rax, rcx
jbe 0x18009c5ae
mov rcx, rax
call fcn.1800cf9b8
test rax, rax
je 0x18009c584
lea rsi, [rax + 0x27]
and rsi, 0xffffffffffffffe0
mov qword [rsi - 8], rax
jmp 0x18009c351
test rcx, rcx
je 0x18009c34f
call fcn.1800cf9b8
mov rsi, rax
jmp 0x18009c351
xor esi, esi
lea r8, [rdi + 1]
mov qword [rsp + 0x30], rsi
mov rdx, rbx
mov rcx, rsi
call fcn.1800d3040
mov qword [rsp + 0x48], r14
cmp r14, 0x10
mov qword [rsp + 0x40], rdi
lea r15, [rsp + 0x30]
cmovae r15, rsi
lea rax, [rsp + 0x30]
jb 0x18009c386
mov rax, rsi
add rdi, rax
lea rbx, [rsp + 0x30]
cmp r14, 0x10
cmovae rbx, rsi
cmp rbx, rdi
je 0x18009c3b4
sub r15, rbx
nop
movzx ecx, byte [rbx]
call fcn.1800dbd50
mov byte [rbx + r15], al
inc rbx
cmp rbx, rdi
jne 0x18009c3a0
movups xmm0, xmmword [rsp + 0x30]
cmp qword [0x18012d890], 0x10
lea r8, [0x18012d878]
movups xmm1, xmmword [rsp + 0x40]
cmovae r8, qword [0x18012d878]
lea rcx, [rsp + 0x60]
mov r9, qword [0x18012d888]
movups xmmword [rsp + 0x60], xmm0
movups xmmword [rsp + 0x70], xmm1
call fcn.1800c7240
movups xmm0, xmmword [rax]
movups xmm1, xmmword [rax + 0x10]
mov qword [rax + 0x10], 0
mov qword [rax + 0x18], 0xf
mov byte [rax], 0
mov rdx, qword [0x18012d890]
movups xmmword [rsp + 0x30], xmm0
movups xmmword [rsp + 0x50], xmm1
cmp rdx, 0x10
jb 0x18009c45f
mov rcx, qword [0x18012d878]
inc rdx
cmp rdx, 0x1000
jb 0x18009c450
mov r8, qword [rcx - 8]
add rdx, 0x27
sub rcx, r8
lea rax, [rcx - 8]
cmp rax, 0x1f
ja 0x18009c584
mov rcx, r8
call fcn.1800cf9b0
movups xmm0, xmmword [rsp + 0x30]
movups xmm1, xmmword [rsp + 0x50]
mov rdx, qword [rsp + 0x78]
movups xmmword [0x18012d878], xmm0
movups xmmword [0x18012d888], xmm1
cmp rdx, 0x10
jb 0x18009c4b1
mov rcx, qword [rsp + 0x60]
inc rdx
mov rax, rcx
cmp rdx, 0x1000
jb 0x18009c4a5
mov rcx, qword [rcx - 8]
add rdx, 0x27
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18009c584
call fcn.1800cf9b0
jmp 0x18009c4b1
mov r12, qword [rsp + 0x50]
mov rax, qword [rbp - 0x48]
cmp rax, 0x10
jb 0x18009c4ec
lea rdx, [rax + 1]
mov rax, r13
cmp rdx, 0x1000
jb 0x18009c4e4
mov r13, qword [r13 - 8]
add rdx, 0x27
sub rax, r13
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18009c58a
mov rcx, r13
call fcn.1800cf9b0
mov rdx, qword [r12 + 0x18]
cmp rdx, 0x10
jb 0x18009c524
mov rcx, qword [r12]
inc rdx
cmp rdx, 0x1000
jb 0x18009c51f
mov r8, qword [rcx - 8]
add rdx, 0x27
sub rcx, r8
lea rax, [rcx - 8]
cmp rax, 0x1f
ja 0x18009c58a
mov rcx, r8
call fcn.1800cf9b0
mov r15, qword [rsp + 0x1e0]
mov r13, qword [rsp + 0x1f0]
mov rdi, qword [rsp + 0x220]
mov rbx, qword [rsp + 0x218]
mov r14, qword [rsp + 0x1e8]
mov qword [r12 + 0x10], 0
mov qword [r12 + 0x18], 0xf
mov byte [r12], 0
mov r12, qword [rsp + 0x228]
mov rcx, qword [rbp + 0xd0]
xor rcx, rsp
call fcn.1800cf6f0
add rsp, 0x1f8
pop rsi
pop rbp
ret
call fcn.1800dec10
int3
call fcn.1800dec10
int3
call fcn.1800dec10
int3
call fcn.1800892e0
int3
call fcn.1800dec10
int3
call fcn.1800892e0
int3
call fcn.1800dec10
int3
call fcn.1800892e0
int3