Function at 0x180023aa0
Capabilities:
Get common file path

Disassembly:
mov qword [rsp + 0x18], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0xd0]
sub rsp, 0x1d0
movaps xmmword [rsp + 0x1c0], xmm6
mov rax, qword [0x180357660]
xor rax, rsp
mov qword [rbp + 0xb0], rax
mov r10, qword [rbp - 0x80]
xor ebx, ebx
mov rdi, qword [rbp - 0x80]
mov r13, rdx
imul eax, r8d, 0x21c
mov r12, rcx
mov qword [rbp - 0x70], r9
mov esi, r8d
mov dword [rsp + 0x50], r8d
mov qword [rbp - 0x68], rdx
mov qword [rbp - 0x78], rcx
mov dword [rsp + 0x40], eax
mov qword [rsp + 0x48], r10
cmp r8d, eax
ja 0x180023f13
mov rax, qword [rbp - 0x80]
movss xmm6, dword [0x18034d2d4]
mov r15, qword [rbp - 0x68]
movzx r14d, byte [rsp + 0x70]
mov r12d, dword [rsp + 0x40]
mov qword [rsp + 0x60], rax
mov eax, dword [rsp + 0x40]
mov dword [rsp + 0x68], eax
nop dword [rax]
cmp esi, 0x3eab
ja 0x180023d23
je 0x180023d02
cmp esi, 0x1876
ja 0x180023c37
je 0x180023be7
mov eax, esi
sub eax, 0x3e
je 0x180023eb5
sub eax, 0x8c
je 0x180023bb8
sub eax, 0x21
je 0x180023ba6
cmp eax, 0x1c
jne 0x180023e94
mov rdx, r13
mov ecx, 0xc3
mov r14b, 1
call fcn.180020a10
test al, al
je 0x180023f0a
mov qword [rsp + 0x58], rbx
jmp 0x180023e8f
mov rax, qword [rbp - 0x78]
mov qword [rsp + 0x60], rbx
mov rdi, qword [rax + 0x20]
jmp 0x180023e94
xor r9d, r9d
mov qword [rbp - 0x80], 0xc0
lea rax, [rbp - 0x80]
xor r8d, r8d
xor ecx, ecx
mov qword [rsp + 0x20], rax
lea edx, [r9 + 0x4c]
call fcn.18003ad60
mov r10, rax
mov qword [rsp + 0x48], rax
jmp 0x180023e94
mov r9d, 0x111
mov r8, r13
mov rdx, r10
xor ecx, ecx
call fcn.180060680
mov r10, qword [rsp + 0x48]
movss xmm0, dword [r10]
movss xmm1, dword [r10 + 4]
mulss xmm0, xmm6
mov dword [r10 + 0x6c], ebx
mulss xmm1, xmm6
movss dword [r10 + 0xc], xmm0
movss xmm0, dword [r10 + 8]
mulss xmm0, xmm6
movss dword [r10 + 0x10], xmm1
movss dword [r10 + 0x14], xmm0
jmp 0x180023e94
cmp esi, 0x1c75
je 0x180023ca6
cmp esi, 0x1fd9
je 0x180023c71
cmp esi, 0x3022
je 0x180023c68
cmp esi, 0x37ff
jne 0x180023e94
mov rax, qword [rbp - 0x78]
mov qword [r13 + 8], rax
jmp 0x180023e94
mov dword [r10 + 0x70], ebx
jmp 0x180023e94
mov r9, qword [r13 + 0x28]
xor edx, edx
mov rcx, qword [r13 + 0x20]
mov r8d, 0xce
call fcn.1800b3920
mov qword [0x180357758], rax
mov dword [rsp + 0x6c], 0x36
test rax, rax
je 0x180023f0a
mov r15, rbx
jmp 0x180023e8f
test rdi, rdi
je 0x180023efd
mov eax, dword [rdi + 0x1668]
xorps xmm0, xmm0
movups xmmword [r13], xmm0
mov edx, 0xd0
mov ecx, 1
movups xmmword [r13 + 0x10], xmm0
mov dword [rsp + 0x68], eax
movups xmmword [r13 + 0x20], xmm0
movups xmmword [r13 + 0x30], xmm0
movups xmmword [r13 + 0x40], xmm0
movups xmmword [r13 + 0x50], xmm0
movups xmmword [r13 + 0x60], xmm0
movups xmmword [r13 + 0x70], xmm0
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_calloc]
mov qword [rsp + 0x60], rax
mov qword [r13 + 0x78], rax
jmp 0x180023e8f
mov r9, qword [r13 + 0x30]
xor edx, edx
mov rcx, qword [r13 + 0x20]
mov r8d, 0xce
call fcn.1800b3920
mov qword [0x180357760], rax
jmp 0x180023e8f
cmp esi, 0x7726
ja 0x180023e10
je 0x180023e07
cmp esi, 0x47ce
je 0x180023dfe
cmp esi, 0x5389
je 0x180023d97
cmp esi, 0x5d7d
je 0x180023d66
cmp esi, 0x5f7a
jne 0x180023e94
mov dword [r10 + 0x78], ebx
jmp 0x180023e94
cmp qword [0x180357760], rbx
mov r12d, ebx
je 0x180023f0a
mov r9, qword [r13 + 0x38]
xor edx, edx
mov rcx, qword [r13 + 0x20]
mov r8d, 0xce
call fcn.1800b3920
mov qword [0x180357768], rax
jmp 0x180023e8f
mov eax, dword [rdi + 8]
xor r9d, r9d
mov dword [rsp + 0x78], eax
xor r8d, r8d
mov qword [rsp + 0x30], rbx
lea rax, [rsp + 0x78]
mov qword [rsp + 0x28], rbx
xor ecx, ecx
lea edx, [r9 + 0x76]
mov qword [rsp + 0x20], rax
call fcn.180050130
mov rcx, qword [rsp + 0x60]
mov edx, 8
mov dword [rcx + 0x50], eax
lea ecx, [rdx - 7]
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_calloc]
mov rcx, qword [rsp + 0x60]
mov edx, 8
mov qword [rcx + 0x10], rax
lea ecx, [rdx - 7]
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_calloc]
mov rcx, qword [rsp + 0x60]
mov qword [rcx + 0x18], rax
jmp 0x180023e8f
mov dword [r10 + 0x74], ebx
jmp 0x180023e94
mov dword [r10 + 0x7c], ebx
jmp 0x180023e94
cmp esi, 0x7c4f
je 0x180023e5a
cmp esi, 0x8ed2
je 0x180023e51
cmp esi, 0x9b21
jne 0x180023e94
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [0x180357770], rax
test r14b, r14b
je 0x180023e94
mov ecx, dword [rsp + 0x6c]
lea r9, [rbp - 0x60]
mov r8d, r12d
mov rdx, r15
call qword [sym.imp.SHELL32.dll_SHSetFolderPathA]
jmp 0x180023e8f
mov dword [r10 + 0x80], ebx
jmp 0x180023e94
mov edx, dword [rsp + 0x6c]
lea rax, [rbp - 0x60]
mov rcx, qword [rsp + 0x58]
mov r9d, r12d
mov r8, r15
mov qword [rsp + 0x20], rax
call qword [sym.imp.SHELL32.dll_SHGetFolderPathA]
cmp qword [0x180357768], rbx
je 0x180023f0a
test eax, eax
movzx r14d, r14b
cmovne r14d, ebx
mov r10, qword [rsp + 0x48]
imul eax, dword [rsp + 0x50], 0x1e
add esi, eax
cmp esi, dword [rsp + 0x40]
jbe 0x180023b40
mov r15, qword [rsp + 0x60]
mov r12, qword [rbp - 0x78]
mov r14d, dword [rsp + 0x68]
jmp 0x180023f26
mov rax, qword [rbp - 0x70]
mov rcx, qword [rbp - 0x78]
mov edx, dword [r13 + 8]
mov r8, qword [r13 + 0x10]
mov eax, dword [rax]
imul eax, edx
add eax, dword [rcx]
cdqe
imul rcx, rax, 0x1c
test byte [rcx + r8 + 0xc], 4
jne 0x180023ee2
mov rax, rbx
jmp 0x1800245e5
mov eax, dword [rcx + r8 + 0x14]
imul eax, edx
add eax, dword [rcx + r8 + 0x10]
cdqe
imul rax, rax, 0x1c
add rax, r8
jmp 0x1800245e5
mov dword [rsp + 0x58], 1
jmp case.0x180023f71.211
mov byte [rsp + 0x58], bl
jmp case.0x180023f71.211
mov r15, qword [rbp - 0x80]
mov r14d, dword [rsp + 0x40]
mov qword [rsp + 0x60], r15
mov dword [rsp + 0x68], r14d
mov esi, dword [rsp + 0x50]
lea eax, [rsi - 0x11]
mov dword [rsp + 0x6c], eax
cmp esi, eax
jbe case.0x180023f71.211
movss xmm6, dword [0x18034d28c]
lea rdx, [0x180000000]
nop dword [rax + rax]
lea eax, [rsi - 0xc4]
cmp eax, 0x43
ja case.0x180023f71.213
movzx eax, byte [rdx + rax + 0x24660]
mov ecx, dword [rdx + rax*4 + 0x24618]
add rcx, rdx
jmp rcx
mov eax, dword [rdi + 4]
mov dword [r13 + 0x20], eax
movsxd rcx, dword [r12 + 4]
shl rcx, 3
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
mov qword [r13 + 0x10], rax
movsxd rcx, dword [r12 + 4]
shl rcx, 3
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
mov qword [r13 + 0x18], rax
mov r14d, ebx
cmp dword [r12 + 4], 0
jle 0x180023fda
mov rsi, rbx
nop
movsxd rcx, dword [r13 + 0x20]
mov edx, 4
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_calloc]
mov rcx, qword [r13 + 0x10]
lea rsi, [rsi + 8]
inc r14d
mov qword [rsi + rcx - 8], rax
cmp r14d, dword [r12 + 4]
jl 0x180023fb0
mov esi, dword [rsp + 0x50]
mov dword [r13 + 0x34], ebx
jmp 0x18002447f
mov edx, 0x20
lea ecx, [rdx - 0x1f]
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_calloc]
mov rcx, qword [r15 + 0x10]
mov edx, 0x20
mov qword [rcx], rax
lea ecx, [rdx - 0x1f]
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_calloc]
mov rcx, qword [r15 + 0x18]
lea r9, [rsp + 0x40]
mov qword [rsp + 0x30], rbx
xor r8d, r8d
mov dword [rsp + 0x28], reloc.SHELL32.dll_PathYetAnotherMakeUniqueName
mov qword [rsp + 0x20], rbx
mov qword [rcx], rax
mov ecx, r14d
mov eax, dword [rdi]
mov rdx, qword [r15 + 0x10]
sar eax, cl
xor ecx, ecx
mov dword [rsp + 0x40], eax
mov rdx, qword [rdx]
call fcn.180022280
mov eax, dword [rdi + 4]
lea r9, [rsp + 0x40]
mov rdx, qword [r15 + 0x18]
mov ecx, r14d
sar eax, cl
xor r8d, r8d
mov dword [rsp + 0x40], eax
xor ecx, ecx
mov qword [rsp + 0x30], rbx
mov rdx, qword [rdx]
mov dword [rsp + 0x28], reloc.SHELL32.dll_PathYetAnotherMakeUniqueName
mov qword [rsp + 0x20], rbx
call fcn.180022280
jmp 0x18002447f
movss xmm0, dword [r10 + 4]
mulss xmm0, dword [0x18034d2b4]
movss dword [r10 + 0x94], xmm0
jmp case.0x180023f71.213
mov eax, dword [rdi]
xor r9d, r9d
mov dword [rsp + 0x40], eax
xor r8d, r8d
mov qword [rsp + 0x30], rbx
lea rax, [rsp + 0x40]
mov qword [rsp + 0x28], rbx
xor ecx, ecx
lea edx, [r9 + 0x76]
mov qword [rsp + 0x20], rax
call fcn.180050130
sub eax, 6
mov qword [rsp + 0x30], rbx
mov dword [r15 + 8], eax
xor r9d, r9d
mov eax, dword [rdi + 4]
xor r8d, r8d
mov dword [rsp + 0x40], eax
xor ecx, ecx
lea rax, [rsp + 0x40]
mov qword [rsp + 0x28], rbx
lea edx, [r9 + 0x76]
mov qword [rsp + 0x20], rax
call fcn.180050130
sub eax, 6
mov dword [r15 + 0xc], eax
mov rax, qword [rbp - 0x70]
cmp dword [rax], 0
je 0x180024294
mov r12d, 0x118
nop dword [rax]
mov eax, r12d
sub eax, 0x117
je 0x180024175
cmp eax, 1
jne 0x18002427b
mov eax, dword [rdi]
lea rcx, [r15 + 0x20]
mov dword [rsp + 0x28], 0x36
lea r9, [rsp + 0x40]
xor r8d, r8d
mov dword [rsp + 0x40], eax
xor edx, edx
mov qword [rsp + 0x20], rbx
call fcn.18000ca20
mov eax, dword [rdi + 4]
lea rcx, [r15 + 0x38]
lea r9, [rsp + 0x40]
mov dword [rsp + 0x28], 0x36
xor r8d, r8d
mov dword [rsp + 0x40], eax
xor edx, edx
mov qword [rsp + 0x20], rbx
call fcn.18000ca20
jmp 0x18002427b
cmp qword [rdi + 0x1320], 0
jne 0x1800241d9
movsxd rcx, dword [rdi + 0x18]
mov edx, 0x58
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_calloc]
cmp dword [rdi + 0x18], 0
mov esi, ebx
mov qword [rdi + 0x1320], rax
jle 0x1800241d9
lea r14, [rdi + 0xb20]
nop dword [rax]
nop dword [rax + rax]
mov rcx, qword [r14]
mov r9d, 0xd4
mov eax, esi
xor r8d, r8d
imul rdx, rax, 0x58
add rdx, qword [rdi + 0x1320]
call fcn.180064360
inc esi
lea r14, [r14 + 8]
cmp esi, dword [rdi + 0x18]
jl 0x1800241b0
movsxd rcx, dword [rdi + 0x1c]
mov edx, 0x50
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_calloc]
mov qword [r15 + 0x68], rax
mov esi, ebx
cmp dword [rdi + 0x1c], 0
jle 0x180024273
mov rbx, qword [rsp + 0x60]
lea r14, [rdi + 0x1328]
mov r13, qword [rbp - 0x78]
nop dword [rax]
nop dword [rax + rax]
mov r8, qword [r14]
lea r9, [rdi + 0x1348]
mov eax, dword [r13 + 8]
mov dword [rsp + 0x40], eax
movsxd rax, dword [r8]
mov eax, dword [rdi + rax*4]
cdq
sub eax, edx
lea rdx, [rsp + 0x40]
sar eax, 1
mov dword [rsp + 0x78], eax
mov eax, esi
lea rcx, [rax + rax*4]
shl rcx, 4
add rcx, qword [rbx + 0x68]
mov qword [rsp + 0x28], rcx
mov ecx, 0x127
mov qword [rsp + 0x20], r8
lea r8, [rsp + 0x78]
call fcn.180026390
inc esi
lea r14, [r14 + 8]
cmp esi, dword [rdi + 0x1c]
jl 0x180024210
mov r13, qword [rbp - 0x68]
xor ebx, ebx
mov r15, qword [rsp + 0x60]
mov dword [r13], 1
dec r12d
cmp r12d, 0x116
ja 0x180024110
mov esi, dword [rsp + 0x50]
jmp 0x18002447f
cmp qword [rdi + 0x1320], 0
jne 0x18002447f
movsxd rcx, dword [rdi + 0x18]
mov edx, 0x58
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_calloc]
cmp dword [rdi + 0x18], 0
mov r14d, ebx
mov qword [rdi + 0x1320], rax
jle 0x18002447f
lea rsi, [rdi + 0xb20]
nop dword [rax]
mov rdx, qword [rsi]
test rdx, rdx
je 0x18002431f
mov eax, r14d
mov r8d, 0x123
imul rcx, rax, 0x58
add rcx, qword [rdi + 0x1320]
call fcn.18006d090
test eax, eax
jne 0x18002431f
mov rdx, qword [rsi]
lea ecx, [rax + 0x2d]
xor r9d, r9d
xor r8d, r8d
call fcn.1800345c0
mov qword [rsi], rbx
inc r14d
add rsi, 8
cmp r14d, dword [rdi + 0x18]
jl 0x1800242d0
mov esi, dword [rsp + 0x50]
jmp 0x18002447f
mov dword [rsp + 0x50], SHSetFolderPathW
mov esi, dword [rsp + 0x50]
jmp 0x18002447f
movss xmm0, dword [r10 + 4]
mulss xmm0, xmm6
movss dword [r10 + 0xac], xmm0
jmp case.0x180023f71.213
movss xmm0, dword [r10 + 4]
movss xmm1, dword [r10]
mulss xmm0, dword [0x18034d290]
mov dword [r10 + 0x84], ebx
mulss xmm1, dword [0x18034d2b4]
mov dword [r10 + 0x8c], ebx
movss dword [r10 + 0x88], xmm0
movss dword [r10 + 0x90], xmm1
jmp case.0x180023f71.213
movss xmm0, dword [r10]
mulss xmm0, xmm6
movss dword [r10 + 0xa8], xmm0
jmp case.0x180023f71.213
movss xmm0, dword [r10]
mov eax, dword [r10 + 8]
mulss xmm0, xmm6
mov dword [r10 + 0xb0], eax
movss dword [r10 + 0xb4], xmm0
jmp case.0x180023f71.213
mov byte [rsp + 0x58], 1
jmp case.0x180023f71.213
mov dword [r13 + 0x38], ebx
jmp case.0x180023f71.213
cmp dword [rdi + 0x18], 0
mov r14d, ebx
jle 0x18002440f
lea rsi, [rdi + 0xb20]
mov rdx, qword [rsi]
test rdx, rdx
je 0x1800243fe
xor r9d, r9d
xor r8d, r8d
lea ecx, [r9 + 0x2d]
call fcn.1800345c0
mov qword [rsi], rbx
inc r14d
add rsi, 8
cmp r14d, dword [rdi + 0x18]
jl 0x1800243e4
mov esi, dword [rsp + 0x50]
mov rdx, r13
mov ecx, 0x1a
call fcn.1800b73a0
jmp 0x18002447f
movss xmm0, dword [r10 + 8]
mulss xmm0, dword [0x18034d2b4]
mov qword [r10 + 0x9c], 0x3f800000
mov dword [r10 + 0xa4], ebx
movss dword [r10 + 0x98], xmm0
jmp case.0x180023f71.213
mov eax, dword [rdi + 4]
cdq
sub eax, edx
mov edx, 8
sar eax, 1
mov dword [r13 + 0x40], eax
mov dword [r13 + 0x24], eax
movsxd rcx, dword [rdi + 0x10]
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_calloc]
mov qword [r15 + 0x58], rax
mov edx, 8
movsxd rcx, dword [rdi + 0x14]
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_calloc]
mov qword [r15 + 0x60], rax
mov r10, qword [rsp + 0x48]
lea rdx, [0x180000000]
dec esi
mov dword [rsp + 0x50], esi
cmp esi, dword [rsp + 0x6c]
jbe case.0x180023f71.211
mov r12, qword [rbp - 0x78]
mov r14d, dword [rsp + 0x68]
jmp 0x180023f50
mov dword [rsp + 0x58], 0xffffffff
jmp case.0x180023f71.211
movss xmm2, dword [0x18034d230]
mov edx, reloc.SHELL32.dll_ILAppendID
mov rax, qword [rsp + 0x58]
nop dword [rax + rax]
mov ecx, edx
sub ecx, 0x98
je 0x1800245e5
sub ecx, 1
je 0x180024518
cmp ecx, 1
jne 0x18002451b
movss xmm0, dword [r10 + 4]
movss xmm1, dword [r10 + 8]
mulss xmm0, xmm6
mulss xmm1, xmm2
movss dword [r10 + 0xb8], xmm0
movss dword [r10 + 0xbc], xmm1
mov dword [r12], ILClone
jmp 0x18002451b
mov rax, r10
dec edx
cmp edx, 0x97
ja 0x1800244d0
jmp 0x1800245e5
cmp dword [rdi + 0x10], 0
mov r14d, ebx
mov r12, qword [rsp + 0x60]
jle 0x180024585
mov rsi, rbx
lea r15, [rdi + 0x520]
movsxd rax, dword [r15]
mov rcx, r13
mov r8, qword [rdx + rax*8 + 0xc2978]
mov rdx, qword [rsi + rdi + 0x620]
call qword [r8 + ILClone]
mov rcx, qword [r12 + 0x58]
lea r15, [r15 + 4]
inc r14d
lea rsi, [rsi + 8]
lea rdx, [0x180000000]
mov qword [rsi + rcx - 8], rax
cmp r14d, dword [rdi + 0x10]
jl 0x180024542
lea rdx, [0x180000000]
cmp dword [rdi + 0x14], 0
mov r14d, ebx
jle 0x1800245dc
mov rsi, rbx
lea r15, [rdi + 0x820]
nop dword [rax + rax]
movsxd rax, dword [r15]
mov rcx, r13
mov r8, qword [rdx + rax*8 + 0xc2988]
mov rdx, qword [rdi + rsi + 0x920]
call qword [r8 + ILClone]
mov rcx, qword [r12 + 0x60]
lea r15, [r15 + 4]
inc r14d
lea rsi, [rsi + 8]
lea rdx, [0x180000000]
mov qword [rsi + rcx - 8], rax
cmp r14d, dword [rdi + 0x14]
jl 0x1800245a0
mov dword [rsp + 0x58], ebx
mov rax, qword [rsp + 0x58]
mov rcx, qword [rbp + 0xb0]
xor rcx, rsp
call fcn.1800bfa40
mov rbx, qword [rsp + 0x220]
movaps xmm6, xmmword [rsp + 0x1c0]
add rsp, 0x1d0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret