Function at 0x180053810
Capabilities:
Get common file path

Disassembly:
mov qword [rsp + 0x10], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x1b0
mov rax, qword [0x18009da48]
xor rax, rsp
mov qword [rsp + 0x1a0], rax
mov rsi, qword [rsp + 0x210]
lea eax, [rdx - 0xf]
mov qword [rsp + 0x70], r8
mov rbp, r9
mov rdi, qword [rsp + 0x70]
mov r14, rcx
mov qword [rsp + 0x48], rsi
mov dword [rsp + 0x30], eax
cmp edx, eax
jbe case.0x1800538a1.9
mov r15d, dword [rsp + 0x3c]
add edx, 0xffffff7c
mov r12d, dword [rsp + 0x3c]
xor ebx, ebx
mov dword [rsp + 0x38], edx
mov ecx, eax
lea r9, [0x180000000]
cmp edx, 0x3f
ja case.default.0x1800538a1
movzx eax, byte [r9 + rdx + 0x53d74]
mov ecx, dword [r9 + rax*4 + 0x53d34]
add rcx, r9
jmp rcx
test r14, r14
jne case.0x1800538a1.15
mov rax, rbx
jmp 0x180053d07
mov rdi, qword [rsp + 0x80]
jmp case.0x1800538a1.15
cmp dword [rsp + 0x40], 1
jne 0x1800538da
mov rdx, r14
mov ecx, 0x113
call fcn.18001e9d0
jmp 0x180053ce2
cmp dword [rsp + 0x40], 2
jne case.0x1800538a1.15
mov r9, r14
mov qword [rsp + 0x20], rbx
xor r8d, r8d
xor edx, edx
mov ecx, reloc.SHELL32.dll_SHTestTokenMembership
call fcn.180028630
jmp 0x180053ce2
mov byte [rsp + 0x34], 1
mov qword [rsp + 0x88], rbx
mov dword [rsp + 0x44], 0x36
jmp case.0x1800538a1.15
cmp dword [rsp + 0x3c], ebx
mov ecx, ebx
movzx eax, byte [rsp + 0x34]
cmove ecx, eax
mov byte [rsp + 0x34], cl
cmp cl, 0
je 0x18005394e
mov r8d, dword [rsp + 0x68]
lea r9, [rsp + 0x90]
mov rdx, qword [rsp + 0x78]
mov ecx, dword [rsp + 0x44]
call qword [sym.imp.SHELL32.dll_SHSetFolderPathA]
mov rcx, qword [r14 + 0x10]
call fcn.180083768
jmp 0x180053ce2
xor r8d, r8d
mov dword [rsp + 0x60], 0xfa
lea rax, [rsp + 0x40]
mov rdx, r14
lea r9, [rsp + 0x60]
mov qword [rsp + 0x20], rax
lea ecx, [r8 + 0x1a]
call fcn.180072a60
jmp 0x180053ce2
mov rax, qword [r8]
mov qword [rsp + 0x50], rax
add rax, rax
mov qword [rsp + 0x80], rax
mov qword [rsp + 0x58], rax
jmp case.0x1800538a1.15
mov qword [rsp + 0x78], rbx
jmp case.0x1800538a1.15
mov eax, dword [r14 + 8]
cmp dword [r14], eax
jle case.0x1800538a1.15
mov esi, 0xff
mov eax, esi
sub eax, 0x33
je 0x180053a21
sub eax, 0x4f
je 0x180053a5a
sub eax, 0x43
je 0x180053a09
sub eax, 0x3a
je 0x1800539f9
cmp eax, 0x80
jne 0x180053a3e
lea r8, [r14 + 0x20]
mov qword [rsp + 0x20], rbx
xor r9d, r9d
lea ecx, [rax - 0x19]
xor edx, edx
call fcn.180013b20
jmp 0x180053a3e
mov ecx, dword [r14]
mov eax, dword [r14 + 8]
mov dword [r14], eax
mov dword [r14 + 8], ecx
jmp 0x180053a3e
xor edx, edx
mov qword [rsp + 0x20], rbx
xor r9d, r9d
lea r8, [r14 + 8]
lea ecx, [rdx + 0x67]
call fcn.180013b20
jmp 0x180053a3e
mov rax, qword [0x18009db20]
xor r8d, r8d
mov r9, r14
mov qword [rsp + 0x20], rax
xor ecx, ecx
lea edx, [r8 + 0x78]
call fcn.1800589d0
add esi, 0xba
cmp esi, 0x4a1
jb 0x1800539c0
mov rsi, qword [rsp + 0x48]
jmp 0x180053ce2
mov ecx, 0x6c
nop
mov eax, ecx
sub eax, 0x6c
je 0x180053a75
sub eax, 1
je 0x180053a7c
cmp eax, 2
jne 0x180053a75
and byte [r14], 0xfd
inc ecx
cmp ecx, 0x6f
jb 0x180053a60
mov edx, reloc.SHELL32.dll_ILClone
lea r9, [0x180000000]
cmp edx, 0x12
ja case.0x180053a9a.1
mov eax, edx
mov ecx, dword [r9 + rax*4 + 0x53db4]
add rcx, r9
jmp rcx
mov eax, 0xbf
cmp eax, 9
je case.0x180053a9a.1
cmp eax, 0xbf
je 0x180053abb
add eax, 0x8350
cmp eax, 0x106a0
jbe 0x180053aa1
jmp case.0x180053a9a.1
mov ecx, 0x6c
mov eax, ecx
sub eax, 0x6c
je 0x180053ad5
sub eax, 1
je case.0x180053a9a.1
cmp eax, 2
jne 0x180053ad5
and byte [r14], 0xfd
inc ecx
cmp ecx, 0x6f
jb 0x180053ac0
dec edx
lea eax, [rdx + 0x11f]
cmp eax, 0x12b
ja 0x180053a88
mov rsi, qword [rsp + 0x48]
jmp 0x180053ce2
mov qword [rsp + 0x28], rbx
xor r9d, r9d
mov r8, r14
mov qword [rsp + 0x20], rbx
xor edx, edx
mov ecx, 0x114
call fcn.180064610
mov ecx, 0x6c
mov eax, ecx
sub eax, 0x6c
je 0x180053b2b
sub eax, 1
je case.0x180053a9a.0
cmp eax, 2
jne 0x180053b2b
and byte [r14], 0xfd
inc ecx
cmp ecx, 0x6f
jb 0x180053b16
mov rsi, qword [rsp + 0x48]
jmp 0x180053ce2
mov r8, qword [rsp + 0x78]
lea rax, [rsp + 0x90]
mov edx, dword [rsp + 0x44]
xor r9d, r9d
mov rcx, qword [rsp + 0x88]
mov qword [rsp + 0x20], rax
mov dword [rsp + 0x68], ebx
call qword [sym.imp.SHELL32.dll_SHGetFolderPathA]
mov dword [rsp + 0x3c], eax
jmp 0x180053ce2
mov dword [r14 + 4], ebx
jmp case.0x1800538a1.15
test rsi, rsi
jne case.0x1800538a1.15
mov rax, qword [r8]
add rax, rax
jmp 0x180053d07
test byte [r8], 1
mov r11, qword [rsp + 0x58]
mov r10, qword [rsp + 0x50]
je 0x180053c29
lea rdx, [r11 - 2]
mov r9d, PathMakeUniqueName
add rdx, rsi
lea r8, [r10 - 1]
add r8, r14
mov eax, r9d
sub eax, 0x2d
je 0x180053bcc
cmp eax, 1
jne 0x180053c12
sub r11, 2
sub rdx, 2
jmp 0x180053c12
mov ecx, 0x4f
cmp ecx, 0x4f
je 0x180053bed
cmp ecx, 0x3b4
jne 0x180053bfe
mov eax, r15d
and eax, 0xf
movzx eax, byte [rax + rbp]
mov byte [rdx + 1], al
jmp 0x180053bfe
movzx r15d, byte [r8]
mov eax, r15d
shr rax, 4
movzx eax, byte [rax + rbp]
mov byte [rdx], al
add ecx, 0x365
cmp ecx, 0x6ca
jbe 0x180053bd1
dec r10
dec r8
inc r9d
cmp r9d, 0x2f
jb 0x180053bb5
mov edx, dword [rsp + 0x38]
mov qword [rsp + 0x58], r11
mov qword [rsp + 0x50], r10
test r10, r10
je case.0x1800538a1.15
lea r9, [r10 - 1]
shr r9, 1
lea rdx, [r11 - 1]
inc r9
lea r8, [r14 - 2]
imul rax, r9, 0xfffffffffffffffe
add r8, r10
add rdx, rsi
add r10, rax
imul rax, r9, 0xfffffffffffffffc
mov qword [rsp + 0x50], r10
add r11, rax
mov qword [rsp + 0x58], r11
movzx ecx, byte [r8 + 1]
mov eax, ecx
shr rax, 4
and ecx, 0xf
movzx eax, byte [rax + rbp]
mov byte [rdx - 1], al
movzx eax, byte [rcx + rbp]
mov ecx, 0xd2
mov byte [rdx], al
mov eax, ecx
sub eax, 0xd2
je 0x180053c9f
cmp eax, 1
jne 0x180053cb1
mov eax, r12d
and eax, 0xf
movzx eax, byte [rax + rbp]
mov byte [rdx - 2], al
jmp 0x180053cb1
movzx r12d, byte [r8]
mov eax, r12d
shr rax, 4
movzx eax, byte [rax + rbp]
mov byte [rdx - 3], al
inc ecx
cmp ecx, 0xd4
jb 0x180053c82
sub r8, 2
sub rdx, 4
sub r9, 1
jne 0x180053c62
jmp 0x180053ce2
xor r9d, r9d
mov dword [rsp + 0x20], 0x82
mov r8, r14
xor edx, edx
xor ecx, ecx
call fcn.180053210
mov edx, dword [rsp + 0x38]
mov ecx, dword [rsp + 0x30]
dec edx
mov dword [rsp + 0x38], edx
lea eax, [rdx + 0x84]
cmp eax, ecx
jbe case.0x1800538a1.9
mov r8, qword [rsp + 0x70]
jmp 0x18005387d
mov rax, rdi
mov rcx, qword [rsp + 0x1a0]
xor rcx, rsp
call fcn.180083f10
mov rbx, qword [rsp + 0x1f8]
add rsp, 0x1b0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret