Function at 0x140016954
Capabilities:
Get common file path

Disassembly:
mov qword [rsp + 0x18], rbx
mov qword [rsp + 0x20], rbp
push rsi
push rdi
push r12
push r13
push r15
sub rsp, 0x440
mov rdi, rcx
mov rcx, qword [rcx + 0x6e0]
xor r9d, r9d
xor r8d, r8d
xor edx, edx
xor ebp, ebp
call fcn.14000416c
mov rcx, qword [rdi + 0x1488]
or esi, 0xffffffff
lea rdx, str._SaveProfile
mov r8d, esi
call fcn.140007dc8
mov rcx, qword [rdi + 0x1488]
lea rdx, str._LoadProfile
mov r8d, esi
mov ebx, eax
call fcn.140007dc8
test ebx, ebx
mov r13d, 0x104
mov r12d, eax
lea r15d, [rbp + 1]
js 0x140016a97
mov rcx, qword [rdi + 0x1488]
lea edx, [rbx + 1]
call fcn.140007d9c
and word [rsp + 0x20], bp
lea rcx, [rsp + 0x22]
xor edx, edx
mov r8d, 0x208
mov rsi, rax
call sub.msvcrt.dll_memset
mov dx, 0x5c
mov rcx, rsi
call sub.msvcrt.dll_wcschr
test rax, rax
jne 0x140016a74
and word [rsp + 0x230], bp
lea rcx, [rsp + 0x232]
xor edx, edx
mov r8d, 0x208
call sub.msvcrt.dll_memset
lea rdx, [rsp + 0x230]
mov ecx, r13d
call qword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
mov rcx, rsi
call sub.msvcrt.dll_wcslen
lea rcx, [rsp + 0x230]
mov rbx, rax
call sub.msvcrt.dll_wcslen
lea rcx, [rbx + rax + 1]
cmp rcx, r13
jae 0x140016a6d
lea r8, [rsp + 0x20]
lea rcx, [rsp + 0x230]
mov rdx, rsi
call fcn.140006cac
jmp 0x140016a84
and word [rsp + 0x20], bp
jmp 0x140016a84
lea rcx, [rsp + 0x20]
mov r8d, r13d
mov rdx, rsi
call fcn.140006a28
lea rdx, [rsp + 0x20]
xor r8d, r8d
mov rcx, rdi
call fcn.14000e294
mov ebp, r15d
test r12d, r12d
js 0x140016b6c
mov rcx, qword [rdi + 0x1488]
lea edx, [r12 + 1]
call fcn.140007d9c
and word [rsp + 0x20], 0
lea rcx, [rsp + 0x22]
xor edx, edx
mov r8d, 0x208
mov rsi, rax
call sub.msvcrt.dll_memset
mov dx, 0x5c
mov rcx, rsi
call sub.msvcrt.dll_wcschr
test rax, rax
jne 0x140016b4c
and word [rsp + 0x230], ax
lea rcx, [rsp + 0x232]
xor edx, edx
mov r8d, 0x208
call sub.msvcrt.dll_memset
lea rdx, [rsp + 0x230]
mov ecx, r13d
call qword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
mov rcx, rsi
call sub.msvcrt.dll_wcslen
lea rcx, [rsp + 0x230]
mov rbx, rax
call sub.msvcrt.dll_wcslen
lea rcx, [rbx + rax + 1]
cmp rcx, r13
jae 0x140016b44
lea r8, [rsp + 0x20]
lea rcx, [rsp + 0x230]
mov rdx, rsi
call fcn.140006cac
jmp 0x140016b5c
and word [rsp + 0x20], 0
jmp 0x140016b5c
lea rcx, [rsp + 0x20]
mov r8d, r13d
mov rdx, rsi
call fcn.140006a28
lea rdx, [rsp + 0x20]
mov rcx, rdi
call fcn.14000e6dc
mov ebp, r15d
mov rcx, qword [rdi + 0x1488]
lea rdx, str._WaitForItem
or r8d, 0xffffffff
call fcn.140007dc8
lea rcx, [rsp + 0x478]
mov ebx, eax
call qword [sym.imp.KERNEL32.dll_GetSystemTimeAsFileTime]
test ebx, ebx
js 0x140016c47
mov rcx, qword [rdi + 0x1488]
lea edx, [rbx + 1]
call fcn.140007d9c
mov rcx, rax
call sub.msvcrt.dll__wtoi
mov ebx, eax
mov rcx, rdi
call fcn.140014b44
test eax, eax
je 0x140016bd0
mov rcx, qword [rdi + 0x6e0]
cmp dword [rcx + 0x530], 0
jg 0x140016c42
mov ecx, 0x1f4
call qword [sym.imp.KERNEL32.dll_Sleep]
lea rcx, [rsp + 0x470]
call qword [sym.imp.KERNEL32.dll_GetSystemTimeAsFileTime]
test ebx, ebx
je 0x140016bb4
mov eax, dword [rsp + 0x470]
mov r8d, dword [rsp + 0x474]
mov ecx, dword [rsp + 0x47c]
shl r8, 0x20
shl rcx, 0x20
or r8, rax
mov eax, dword [rsp + 0x478]
or rcx, rax
movabs rax, 0xd6bf94d5e57a42bd
sub r8, rcx
imul r8
add rdx, r8
sar rdx, 0x17
mov rax, rdx
shr rax, 0x3f
add rdx, rax
cmp rdx, rbx
jle 0x140016bb4
mov ebp, r15d
jmp 0x140016c55
mov rcx, rdi
call fcn.140014b44
test eax, eax
cmovne ebp, r15d
mov rax, qword [rdi + 0x1488]
and qword [rdi + 0x210], 0
xor ebx, ebx
xor r13d, r13d
xor r12d, r12d
cmp dword [rax + 0x48], r15d
js 0x140016dab
mov rcx, qword [rdi + 0x1488]
mov edx, r12d
call fcn.140007d9c
lea rcx, str._stext
mov rdx, rax
mov rsi, rax
call sub.msvcrt.dll__wcsicmp
test eax, eax
jne 0x140016ca3
mov ebx, r15d
jmp 0x140016d4c
lea rcx, str._shtml
mov rdx, rsi
call sub.msvcrt.dll__wcsicmp
test eax, eax
jne 0x140016cbe
lea ebx, [rax + 5]
jmp 0x140016d4c
lea rcx, str._sverhtml
mov rdx, rsi
call sub.msvcrt.dll__wcsicmp
test eax, eax
jne 0x140016cd6
lea ebx, [rax + 6]
jmp 0x140016d4c
lea rcx, str._sxml
mov rdx, rsi
call sub.msvcrt.dll__wcsicmp
test eax, eax
jne 0x140016cee
lea ebx, [rax + 7]
jmp 0x140016d4c
lea rcx, str._stab
mov rdx, rsi
call sub.msvcrt.dll__wcsicmp
test eax, eax
jne 0x140016d06
lea ebx, [rax + 2]
jmp 0x140016d4c
lea rcx, str._stabular
mov rdx, rsi
call sub.msvcrt.dll__wcsicmp
test eax, eax
jne 0x140016d1e
lea ebx, [rax + 3]
jmp 0x140016d4c
lea rcx, str._scomma
mov rdx, rsi
call sub.msvcrt.dll__wcsicmp
test eax, eax
jne 0x140016d36
lea ebx, [rax + 4]
jmp 0x140016d4c
lea rcx, str._sjson
mov rdx, rsi
call sub.msvcrt.dll__wcsicmp
test eax, eax
jne 0x140016d51
lea ebx, [rax + 8]
lea r13d, [r12 + 1]
mov rax, qword [rdi + 0x1488]
add r12d, r15d
mov ecx, dword [rax + 0x48]
sub ecx, r15d
cmp r12d, ecx
jle 0x140016c76
test ebx, ebx
je 0x140016dab
xor edx, edx
mov rcx, rdi
call fcn.140011a64
mov rcx, rdi
call fcn.140011a28
mov rcx, rdi
call fcn.14000eca8
mov rcx, qword [rdi + 0x1488]
mov edx, r13d
call fcn.140007d9c
xor r9d, r9d
mov r8d, ebx
mov rdx, rax
mov rcx, rdi
call fcn.1400116d0
mov ebp, r15d
test ebp, ebp
je 0x140016db7
mov rcx, rdi
call fcn.1400129ec
lea r11, [rsp + 0x440]
mov eax, ebp
mov rbx, qword [r11 + 0x40]
mov rbp, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r13
pop r12
pop rdi
pop rsi
ret