Function at 0x140026f60
Capabilities:
Get common file path

Disassembly:
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x540
mov qword [rsp + 0x70], 0xfffffffffffffffe
mov qword [rsp + 0x598], rbx
mov rax, qword [0x1401dd3a0]
xor rax, rsp
mov qword [rsp + 0x530], rax
mov rbx, r8
mov r14d, edx
mov r13, rcx
mov qword [rsp + 0x38], rcx
xor edi, edi
mov dword [rsp + 0x68], edi
bts edx, 0xf
lea rax, [rsp + 0x320]
mov qword [rsp + 0x20], rax
xor r9d, r9d
xor r8d, r8d
xor ecx, ecx
call qword [sym.imp.SHELL32.dll_SHGetFolderPathW]
test eax, eax
je 0x140027506
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r13d, eax
lea rcx, str.swifdiag.log
call fcn.140001910
mov rbx, rax
lea r12, str.SHGetFolderPathW_
lea r15, str._err:
lea rbp, str.getShFolderSubpath
lea rsi, str....._src_swic_srcSwiUpdateShadow.cpp
test rax, rax
je 0x140027280
mov rax, qword [rax]
mov qword [rsp + 0x20], rbp
mov r9, rsi
lea r8, str.default
lea edx, [rdi + 1]
mov rcx, rbx
call qword [rax + 8]
test al, al
je 0x140027280
mov byte [rbx + 0xf8], 0x65
mov eax, edi
mov dil, 0x2e
mov rcx, rsi
mov edx, 1
nop word [rax + rax]
cmp dil, 0x5c
cmove eax, edx
inc edx
inc rcx
movzx edi, byte [rcx]
test dil, dil
jne 0x140027050
add rax, rsi
mov qword [rbx + 0x100], rax
mov dword [rbx + 0x108], 0x3d
mov qword [rbx + 0x110], rbp
mov edx, r14d
lea rcx, [rsp + 0x40]
call fcn.140026e30
mov rbp, rax
mov rcx, rbx
call fcn.1400027f0
mov rbx, rax
xor eax, eax
mov rdi, rax
nop
inc rdi
cmp byte [rdi + r12], al
jne 0x1400270a0
mov ecx, dword [rbx + 0x430]
mov dword [rbx + 0x430], eax
cmp edi, ecx
jge 0x1400270e9
movzx eax, byte [rbx + 0x42c]
mov byte [rsp + 0x30], al
sub ecx, edi
mov esi, ecx
nop dword [rax + rax]
mov r8d, 1
lea rdx, [rsp + 0x30]
mov rcx, rbx
call fcn.14002f090
sub rsi, 1
jne 0x1400270d0
mov r8, rdi
mov rdx, r12
mov rcx, rbx
call fcn.14002f090
cmp qword [rbp + 0x20], 0x10
jb 0x140027104
mov rsi, qword [rbp + 8]
jmp 0x140027108
lea rsi, [rbp + 8]
xor ebp, ebp
mov rdi, rbp
cmp byte [rsi], dil
je 0x14002711b
inc rdi
cmp byte [rsi + rdi], bpl
jne 0x140027112
mov ecx, dword [rbx + 0x430]
mov dword [rbx + 0x430], ebp
cmp edi, ecx
jge 0x140027159
movzx eax, byte [rbx + 0x42c]
mov byte [rsp + 0x30], al
sub ecx, edi
mov ebp, ecx
nop word [rax + rax]
mov r8d, 1
lea rdx, [rsp + 0x30]
mov rcx, rbx
call fcn.14002f090
sub rbp, 1
jne 0x140027140
mov r8, rdi
mov rdx, rsi
mov rcx, rbx
call fcn.14002f090
mov rdi, rbp
lea rax, str.__failed:
inc rdi
cmp byte [rdi + rax], 0
jne 0x140027171
mov ecx, dword [rbx + 0x430]
mov dword [rbx + 0x430], ebp
cmp edi, ecx
jge 0x1400271c0
movzx eax, byte [rbx + 0x42c]
mov byte [rsp + 0x30], al
sub ecx, edi
mov esi, ecx
nop dword [rax]
mov r8d, 1
lea rdx, [rsp + 0x30]
mov rcx, rbx
call fcn.14002f090
sub rsi, 1
jne 0x1400271a0
lea rax, str.__failed:
mov r8, rdi
mov rdx, rax
mov rcx, rbx
call fcn.14002f090
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, eax
mov rcx, rbx
call fcn.140014390
mov rsi, rax
mov rdi, rbp
inc rdi
cmp byte [rdi + r15], 0
jne 0x1400271e4
mov ecx, dword [rax + 0x430]
mov dword [rax + 0x430], ebp
cmp edi, ecx
jge 0x140027229
movzx eax, byte [rax + 0x42c]
mov byte [rsp + 0x30], al
sub ecx, edi
mov ebx, ecx
nop dword [rax]
mov r8d, 1
lea rdx, [rsp + 0x30]
mov rcx, rsi
call fcn.14002f090
sub rbx, 1
jne 0x140027210
mov r8, rdi
mov rdx, r15
mov rcx, rsi
call fcn.14002f090
mov edx, r13d
mov rcx, rsi
call fcn.1400146a0
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + 8]
nop
cmp qword [rsp + 0x60], 0x10
jb 0x140027270
mov rcx, qword [rsp + 0x48]
call fcn.1400ddb14
lea rsi, str....._src_swic_srcSwiUpdateShadow.cpp
lea rbp, str.getShFolderSubpath
xor edi, edi
jmp 0x140027280
lea rsi, str....._src_swic_srcSwiUpdateShadow.cpp
lea rbp, str.getShFolderSubpath
xor edi, edi
lea rcx, [0x14019e670]
call fcn.140030de0
mov rbx, rax
test rax, rax
je 0x1400274e0
mov rax, qword [rax]
mov qword [rsp + 0x20], rbp
mov r9, rsi
lea r8, str.default
mov edx, 1
mov rcx, rbx
call qword [rax + 8]
test al, al
je 0x1400274e5
mov byte [rbx + 0xf8], 0x65
mov eax, edi
mov dil, 0x2e
mov rcx, rsi
mov edx, 1
cmp dil, 0x5c
cmove eax, edx
inc edx
inc rcx
movzx edi, byte [rcx]
test dil, dil
jne 0x1400272d1
add rax, rsi
mov qword [rbx + 0x100], rax
mov dword [rbx + 0x108], 0x3d
mov qword [rbx + 0x110], rbp
mov edx, r14d
lea rcx, [rsp + 0x40]
call fcn.140026e30
mov rbp, rax
mov rcx, rbx
call fcn.1400027f0
mov rdi, rax
xor r14d, r14d
mov rbx, r14
inc rbx
cmp byte [rbx + r12], r14b
jne 0x140027321
mov ecx, dword [rax + 0x430]
mov dword [rax + 0x430], r14d
cmp ebx, ecx
jge 0x140027369
movzx eax, byte [rax + 0x42c]
mov byte [rsp + 0x30], al
sub ecx, ebx
mov esi, ecx
nop word [rax + rax]
mov r8d, 1
lea rdx, [rsp + 0x30]
mov rcx, rdi
call fcn.14002f090
sub rsi, 1
jne 0x140027350
mov r8, rbx
mov rdx, r12
mov rcx, rdi
call fcn.14002f090
cmp qword [rbp + 0x20], 0x10
jb 0x140027384
mov rsi, qword [rbp + 8]
jmp 0x140027388
lea rsi, [rbp + 8]
mov rbx, r14
cmp byte [rsi], bl
je 0x140027399
nop
inc rbx
cmp byte [rsi + rbx], r14b
jne 0x140027390
mov ecx, dword [rdi + 0x430]
mov dword [rdi + 0x430], r14d
cmp ebx, ecx
jge 0x1400273d9
movzx eax, byte [rdi + 0x42c]
mov byte [rsp + 0x30], al
sub ecx, ebx
mov ebp, ecx
nop dword [rax]
mov r8d, 1
lea rdx, [rsp + 0x30]
mov rcx, rdi
call fcn.14002f090
sub rbp, 1
jne 0x1400273c0
mov r8, rbx
mov rdx, rsi
mov rcx, rdi
call fcn.14002f090
mov rbx, r14
lea rbp, str.__failed:
inc rbx
cmp byte [rbx + rbp], r14b
jne 0x1400273f1
mov ecx, dword [rdi + 0x430]
mov dword [rdi + 0x430], r14d
cmp ebx, ecx
jge 0x140027439
movzx eax, byte [rdi + 0x42c]
mov byte [rsp + 0x30], al
sub ecx, ebx
mov esi, ecx
nop word [rax + rax]
mov r8d, 1
lea rdx, [rsp + 0x30]
mov rcx, rdi
call fcn.14002f090
sub rsi, 1
jne 0x140027420
mov r8, rbx
mov rdx, rbp
mov rcx, rdi
call fcn.14002f090
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, eax
mov rcx, rdi
call fcn.140014390
mov rsi, rax
mov rdi, r14
nop dword [rax]
inc rdi
cmp byte [rdi + r15], r14b
jne 0x140027460
mov ecx, dword [rax + 0x430]
mov dword [rax + 0x430], r14d
cmp edi, ecx
jge 0x1400274a9
movzx eax, byte [rax + 0x42c]
mov byte [rsp + 0x30], al
sub ecx, edi
mov ebx, ecx
nop dword [rax]
mov r8d, 1
lea rdx, [rsp + 0x30]
mov rcx, rsi
call fcn.14002f090
sub rbx, 1
jne 0x140027490
mov r8, rdi
mov rdx, r15
mov rcx, rsi
call fcn.14002f090
mov edx, r13d
mov rcx, rsi
call fcn.1400146a0
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + 8]
nop
cmp qword [rsp + 0x60], 0x10
jb 0x1400274e8
mov rcx, qword [rsp + 0x48]
call fcn.1400ddb14
jmp 0x1400274e8
xor r14d, r14d
jmp 0x1400274e8
xor r14d, r14d
mov rdi, qword [rsp + 0x38]
mov qword [rdi + 0x20], 7
mov qword [rdi + 0x18], r14
mov word [rdi + 8], r14w
mov rax, rdi
jmp 0x1400284c9
mov qword [rsp + 0xc0], 7
mov qword [rsp + 0xb8], rdi
mov word [rsp + 0xa8], di
xor eax, eax
or rcx, 0xffffffffffffffff
lea rdi, [rsp + 0x320]
repne scasw ax, word [rdi]
not rcx
lea r8, [rcx - 1]
lea rdx, [rsp + 0x320]
lea rcx, [rsp + 0xa0]
call fcn.140001520
nop
cmp qword [rsp + 0xb8], 0
je 0x140027fab
lea rcx, [rsp + 0xa8]
cmp qword [rsp + 0xc0], 8
cmovae rcx, qword [rsp + 0xa8]
lea rdx, [rsp + 0xd0]
call qword [sym.imp.KERNEL32.dll_FindFirstFileW]
cmp rax, 0xffffffffffffffff
je 0x140027fab
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_FindClose]
test byte [rsp + 0xd0], 0x10
je 0x140027fab
mov qword [rsp + 0x98], 7
xor r14d, r14d
mov qword [rsp + 0x90], r14
mov word [rsp + 0x80], r14w
or r9, 0xffffffffffffffff
xor r8d, r8d
lea rdx, [rsp + 0xa0]
lea rcx, [rsp + 0x78]
call fcn.1400012a0
nop
lea r8d, [r14 + 1]
lea rdx, [0x1401a2d14]
lea rcx, [rsp + 0x78]
call fcn.140014210
or r9, 0xffffffffffffffff
xor r8d, r8d
mov rdx, rbx
lea rcx, [rsp + 0x78]
call fcn.1400013d0
cmp qword [rsp + 0x90], r14
je 0x14002765a
lea rcx, [rsp + 0x80]
cmp qword [rsp + 0x98], 8
cmovae rcx, qword [rsp + 0x80]
lea rdx, [rsp + 0xd0]
call qword [sym.imp.KERNEL32.dll_FindFirstFileW]
cmp rax, 0xffffffffffffffff
je 0x14002765a
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_FindClose]
test byte [rsp + 0xd0], 0x10
jne 0x140027bec
lea rcx, [rsp + 0x78]
call fcn.140036ef0
test eax, eax
jne 0x140027bec
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r12d, eax
lea rcx, str.swifdiag.log
call fcn.140001910
mov rbx, rax
lea r15, str._err:
lea rbp, str.getShFolderSubpath
lea rsi, str....._src_swic_srcSwiUpdateShadow.cpp
test rax, rax
je 0x14002790c
mov rax, qword [rax]
mov qword [rsp + 0x20], rbp
mov r9, rsi
lea r8, str.default
mov edx, 1
mov rcx, rbx
call qword [rax + 8]
test al, al
je 0x14002790c
mov byte [rbx + 0xf8], 0x65
mov eax, r14d
mov dil, 0x2e
mov rcx, rsi
mov edx, 1
nop dword [rax]
cmp dil, 0x5c
cmove eax, edx
inc edx
inc rcx
movzx edi, byte [rcx]
test dil, dil
jne 0x1400276e0
add rax, rsi
mov qword [rbx + 0x100], rax
mov dword [rbx + 0x108], 0x53
mov qword [rbx + 0x110], rbp
lea rdx, [rsp + 0x78]
lea rcx, [rsp + 0x40]
call fcn.140037790
mov rbp, rax
mov rcx, rbx
call fcn.1400027f0
mov rbx, rax
mov rdi, r14
lea rax, str.failed_to_create_shadow_installation_folder__
inc rdi
cmp byte [rdi + rax], 0
jne 0x140027736
mov ecx, dword [rbx + 0x430]
mov dword [rbx + 0x430], r14d
cmp edi, ecx
jge 0x140027780
movzx eax, byte [rbx + 0x42c]
mov byte [rsp + 0x30], al
sub ecx, edi
mov esi, ecx
nop
mov r8d, 1
lea rdx, [rsp + 0x30]
mov rcx, rbx
call fcn.14002f090
sub rsi, 1
jne 0x140027760
lea rax, str.failed_to_create_shadow_installation_folder__
mov r8, rdi
mov rdx, rax
mov rcx, rbx
call fcn.14002f090
cmp qword [rbp + 0x20], 0x10
jb 0x14002779b
mov rsi, qword [rbp + 8]
jmp 0x14002779f
lea rsi, [rbp + 8]
mov rdi, r14
cmp byte [rsi], dil
je 0x1400277b0
inc rdi
cmp byte [rsi + rdi], 0
jne 0x1400277a7
mov ecx, dword [rbx + 0x430]
mov dword [rbx + 0x430], r14d
cmp edi, ecx
jge 0x1400277e9
movzx eax, byte [rbx + 0x42c]
mov byte [rsp + 0x30], al
sub ecx, edi
mov ebp, ecx
mov r8d, 1
lea rdx, [rsp + 0x30]
mov rcx, rbx
call fcn.14002f090
sub rbp, 1
jne 0x1400277d0
mov r8, rdi
mov rdx, rsi
mov rcx, rbx
call fcn.14002f090
mov rdi, r14
lea rbp, [0x1401a3f74]
inc rdi
cmp byte [rdi + rbp], 0
jne 0x140027801
mov ecx, dword [rbx + 0x430]
mov dword [rbx + 0x430], r14d
cmp edi, ecx
jge 0x140027849
movzx eax, byte [rbx + 0x42c]
mov byte [rsp + 0x30], al
sub ecx, edi
mov esi, ecx
nop word [rax + rax]
mov r8d, 1
lea rdx, [rsp + 0x30]
mov rcx, rbx
call fcn.14002f090
sub rsi, 1
jne 0x140027830
mov r8, rdi
mov rdx, rbp
mov rcx, rbx
call fcn.14002f090
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, eax
mov rcx, rbx
call fcn.140014390
mov rsi, rax
mov rdi, r14
nop dword [rax]
inc rdi
cmp byte [rdi + r15], 0
jne 0x140027870
mov ecx, dword [rax + 0x430]
mov dword [rax + 0x430], r14d
cmp edi, ecx
jge 0x1400278b9
movzx eax, byte [rax + 0x42c]
mov byte [rsp + 0x30], al
sub ecx, edi
mov ebx, ecx
nop word [rax + rax]
mov r8d, 1
lea rdx, [rsp + 0x30]
mov rcx, rsi
call fcn.14002f090
sub rbx, 1
jne 0x1400278a0
mov r8, rdi
mov rdx, r15
mov rcx, rsi
call fcn.14002f090
mov edx, r12d
mov rcx, rsi
call fcn.1400146a0
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + 8]
nop
cmp qword [rsp + 0x60], 0x10
jb 0x1400278fe
mov rcx, qword [rsp + 0x48]
call fcn.1400ddb14
lea rsi, str....._src_swic_srcSwiUpdateShadow.cpp
lea rbp, str.getShFolderSubpath
jmp 0x14002790c
lea rsi, str....._src_swic_srcSwiUpdateShadow.cpp
lea rbp, str.getShFolderSubpath
lea rcx, [0x14019e670]
call fcn.140030de0
mov rbx, rax
test rax, rax
je 0x140027b6e
mov rax, qword [rax]
mov qword [rsp + 0x20], rbp
mov r9, rsi
lea r8, str.default
mov edx, 1
mov rcx, rbx
call qword [rax + 8]
test al, al
je 0x140027b6e
mov byte [rbx + 0xf8], 0x65
mov eax, r14d
mov dil, 0x2e
mov rcx, rsi
mov edx, 1
nop
cmp dil, 0x5c
cmove eax, edx
inc edx
inc rcx
movzx edi, byte [rcx]
test dil, dil
jne 0x140027960
add rax, rsi
mov qword [rbx + 0x100], rax
mov dword [rbx + 0x108], 0x53
mov qword [rbx + 0x110], rbp
lea rdx, [rsp + 0x78]
lea rcx, [rsp + 0x40]
call fcn.140037790
mov rbp, rax
mov rcx, rbx
call fcn.1400027f0
mov rdi, rax
mov rbx, r14
lea rax, str.failed_to_create_shadow_installation_folder__
inc rbx
cmp byte [rbx + rax], 0
jne 0x1400279b6
mov ecx, dword [rdi + 0x430]
mov dword [rdi + 0x430], r14d
cmp ebx, ecx
jge 0x140027a00
movzx eax, byte [rdi + 0x42c]
mov byte [rsp + 0x30], al
sub ecx, ebx
mov esi, ecx
nop
mov r8d, 1
lea rdx, [rsp + 0x30]
mov rcx, rdi
call fcn.14002f090
sub rsi, 1
jne 0x1400279e0
lea rax, str.failed_to_create_shadow_installation_folder__
mov r8, rbx
mov rdx, rax
mov rcx, rdi
call fcn.14002f090
cmp qword [rbp + 0x20], 0x10
jb 0x140027a1b
mov rsi, qword [rbp + 8]
jmp 0x140027a1f
lea rsi, [rbp + 8]
mov rbx, r14
cmp byte [rsi], bl
je 0x140027a2f
inc rbx
cmp byte [rsi + rbx], 0
jne 0x140027a26
mov ecx, dword [rdi + 0x430]
mov dword [rdi + 0x430], r14d
cmp ebx, ecx
jge 0x140027a69
movzx eax, byte [rdi + 0x42c]
mov byte [rsp + 0x30], al
sub ecx, ebx
mov ebp, ecx
nop
mov r8d, 1
lea rdx, [rsp + 0x30]
mov rcx, rdi
call fcn.14002f090
sub rbp, 1
jne 0x140027a50
mov r8, rbx
mov rdx, rsi
mov rcx, rdi
call fcn.14002f090
mov rbx, r14
lea rbp, [0x1401a3f74]
inc rbx
cmp byte [rbx + rbp], 0
jne 0x140027a81
mov ecx, dword [rdi + 0x430]
mov dword [rdi + 0x430], r14d
cmp ebx, ecx
jge 0x140027ac9
movzx eax, byte [rdi + 0x42c]
mov byte [rsp + 0x30], al
sub ecx, ebx
mov esi, ecx
nop word [rax + rax]
mov r8d, 1
lea rdx, [rsp + 0x30]
mov rcx, rdi
call fcn.14002f090
sub rsi, 1
jne 0x140027ab0
mov r8, rbx
mov rdx, rbp
mov rcx, rdi
call fcn.14002f090
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, eax
mov rcx, rdi
call fcn.140014390
mov rsi, rax
mov rdi, r14
nop dword [rax]
inc rdi
cmp byte [rdi + r15], 0
jne 0x140027af0
mov ecx, dword [rax + 0x430]
mov dword [rax + 0x430], r14d
cmp edi, ecx
jge 0x140027b39
movzx eax, byte [rax + 0x42c]
mov byte [rsp + 0x30], al
sub ecx, edi
mov ebx, ecx
nop word [rax + rax]
mov r8d, 1
lea rdx, [rsp + 0x30]
mov rcx, rsi
call fcn.14002f090
sub rbx, 1
jne 0x140027b20
mov r8, rdi
mov rdx, r15
mov rcx, rsi
call fcn.14002f090
mov edx, r12d
mov rcx, rsi
call fcn.1400146a0
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + 8]
nop
cmp qword [rsp + 0x60], 0x10
jb 0x140027b6e
mov rcx, qword [rsp + 0x48]
call fcn.1400ddb14
mov qword [r13 + 0x20], 7
mov qword [r13 + 0x18], r14
mov word [r13 + 8], r14w
or r9, 0xffffffffffffffff
xor r8d, r8d
lea rdx, [rsp + 0xa0]
mov rcx, r13
call fcn.1400012a0
nop
cmp qword [rsp + 0x98], 8
jb 0x140027baf
mov rcx, qword [rsp + 0x80]
call fcn.1400ddb14
mov qword [rsp + 0x98], 7
mov qword [rsp + 0x90], r14
mov word [rsp + 0x80], r14w
cmp qword [rsp + 0xc0], 8
jb 0x140027be4
mov rcx, qword [rsp + 0xa8]
call fcn.1400ddb14
mov rax, r13
jmp 0x1400284c9
lea rcx, [rsp + 0x80]
cmp qword [rsp + 0x98], 8
cmovae rcx, qword [rsp + 0x80]
call fcn.140036cb0
mov ebp, eax
test eax, eax
je 0x140027f30
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r12d, eax
lea rcx, str.swifdiag.log
call fcn.140001910
mov rbx, rax
lea r15, str._err:
lea r13, str.getShFolderSubpath
lea rsi, str....._src_swic_srcSwiUpdateShadow.cpp
test rax, rax
je 0x140027db2
mov rax, qword [rax]
mov qword [rsp + 0x20], r13
mov r9, rsi
lea r8, str.default
mov edx, 1
mov rcx, rbx
call qword [rax + 8]
test al, al
je 0x140027db2
mov byte [rbx + 0xf8], 0x65
mov eax, r14d
mov dil, 0x2e
mov rcx, rsi
mov edx, 1
nop word [rax + rax]
cmp dil, 0x5c
cmove eax, edx
inc edx
inc rcx
movzx edi, byte [rcx]
test dil, dil
jne 0x140027c90
add rax, rsi
mov qword [rbx + 0x100], rax
mov dword [rbx + 0x108], 0x5a
mov qword [rbx + 0x110], r13
mov rcx, rbx
call fcn.1400027f0
mov rsi, rax
mov rdi, r14
lea rax, str.Failed_to_set_ACL_for_SWI_shadow_folder:
inc rdi
cmp byte [rdi + rax], 0
jne 0x140027cd4
mov ecx, dword [rsi + 0x430]
mov dword [rsi + 0x430], r14d
cmp edi, ecx
jge 0x140027d20
movzx eax, byte [rsi + 0x42c]
mov byte [rsp + 0x30], al
sub ecx, edi
mov ebx, ecx
nop dword [rax]
mov r8d, 1
lea rdx, [rsp + 0x30]
mov rcx, rsi
call fcn.14002f090
sub rbx, 1
jne 0x140027d00
lea rax, str.Failed_to_set_ACL_for_SWI_shadow_folder:
mov r8, rdi
mov rdx, rax
mov rcx, rsi
call fcn.14002f090
mov edx, ebp
mov rcx, rsi
call fcn.140014390
mov rsi, rax
mov rdi, r14
nop
inc rdi
cmp byte [rdi + r15], 0
jne 0x140027d40
mov ecx, dword [rax + 0x430]
mov dword [rax + 0x430], r14d
cmp edi, ecx
jge 0x140027d89
movzx eax, byte [rax + 0x42c]
mov byte [rsp + 0x30], al
sub ecx, edi
mov ebx, ecx
nop word [rax + rax]
mov r8d, 1
lea rdx, [rsp + 0x30]
mov rcx, rsi
call fcn.14002f090
sub rbx, 1
jne 0x140027d70
mov r8, rdi
mov rdx, r15
mov rcx, rsi
call fcn.14002f090
mov edx, r12d
mov rcx, rsi
call fcn.1400146a0
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + 8]
lea rsi, str....._src_swic_srcSwiUpdateShadow.cpp
lea rcx, [0x14019e670]
call fcn.140030de0
mov rbx, rax
test rax, rax
je 0x140027f2b
mov rax, qword [rax]
mov qword [rsp + 0x20], r13
mov r9, rsi
lea r8, str.default
mov edx, 1
mov rcx, rbx
call qword [rax + 8]
test al, al
je 0x140027f2b
mov byte [rbx + 0xf8], 0x65
mov eax, r14d
mov dil, 0x2e
mov rcx, rsi
mov edx, 1
nop word [rax + rax]
cmp dil, 0x5c
cmove eax, edx
inc edx
inc rcx
movzx edi, byte [rcx]
test dil, dil
jne 0x140027e10
add rax, rsi
mov qword [rbx + 0x100], rax
mov dword [rbx + 0x108], 0x5a
mov qword [rbx + 0x110], r13
mov rcx, rbx
call fcn.1400027f0
mov rsi, rax
mov rdi, r14
lea r13, str.Failed_to_set_ACL_for_SWI_shadow_folder:
inc rdi
cmp byte [rdi + r13], 0
jne 0x140027e54
mov ecx, dword [rax + 0x430]
mov dword [rax + 0x430], r14d
cmp edi, ecx
jge 0x140027e99
movzx eax, byte [rax + 0x42c]
mov byte [rsp + 0x30], al
sub ecx, edi
mov ebx, ecx
nop
mov r8d, 1
lea rdx, [rsp + 0x30]
mov rcx, rsi
call fcn.14002f090
sub rbx, 1
jne 0x140027e80
mov r8, rdi
mov rdx, r13
mov rcx, rsi
call fcn.14002f090
mov edx, ebp
mov rcx, rsi
call fcn.140014390
mov rsi, rax
mov rdi, r14
nop word [rax + rax]
inc rdi
cmp byte [rdi + r15], 0
jne 0x140027ec0
mov ecx, dword [rax + 0x430]
mov dword [rax + 0x430], r14d
cmp edi, ecx
jge 0x140027f09
movzx eax, byte [rax + 0x42c]
mov byte [rsp + 0x30], al
sub ecx, edi
mov ebx, ecx
nop word [rax + rax]
mov r8d, 1
lea rdx, [rsp + 0x30]
mov rcx, rsi
call fcn.14002f090
sub rbx, 1
jne 0x140027ef0
mov r8, rdi
mov rdx, r15
mov rcx, rsi
call fcn.14002f090
mov edx, r12d
mov rcx, rsi
call fcn.1400146a0
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + 8]
mov r13, qword [rsp + 0x38]
mov qword [r13 + 0x20], 7
mov qword [r13 + 0x18], r14
mov word [r13 + 8], r14w
or r9, 0xffffffffffffffff
xor r8d, r8d
lea rdx, [rsp + 0x78]
mov rcx, r13
call fcn.1400012a0
nop
cmp qword [rsp + 0x98], 8
jb 0x140027f6e
mov rcx, qword [rsp + 0x80]
call fcn.1400ddb14
mov qword [rsp + 0x98], 7
mov qword [rsp + 0x90], r14
mov word [rsp + 0x80], r14w
cmp qword [rsp + 0xc0], 8
jb 0x140027fa3
mov rcx, qword [rsp + 0xa8]
call fcn.1400ddb14
mov rax, r13
jmp 0x1400284c9
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r13d, eax
lea rcx, str.swifdiag.log
call fcn.140001910
mov rbx, rax
lea r12, str.SHGetFolderPathW_
lea r15, str._err:
lea rbp, str.getShFolderSubpath
lea rsi, str....._src_swic_srcSwiUpdateShadow.cpp
test rax, rax
je 0x14002823c
mov rax, qword [rax]
mov qword [rsp + 0x20], rbp
mov r9, rsi
lea r8, str.default
mov edx, 1
mov rcx, rbx
call qword [rax + 8]
test al, al
je 0x14002823c
mov byte [rbx + 0xf8], 0x65
xor eax, eax
mov dil, 0x2e
mov rcx, rsi
mov edx, 1
cmp dil, 0x5c
cmove eax, edx
inc edx
inc rcx
movzx edi, byte [rcx]
test dil, dil
jne 0x140028021
add rax, rsi
mov qword [rbx + 0x100], rax
mov dword [rbx + 0x108], 0x45
mov qword [rbx + 0x110], rbp
mov edx, r14d
lea rcx, [rsp + 0x40]
call fcn.140026e30
mov rbp, rax
mov rcx, rbx
call fcn.1400027f0
mov rdi, rax
xor eax, eax
mov rbx, rax
inc rbx
cmp byte [rbx + r12], al
jne 0x140028070
mov ecx, dword [rdi + 0x430]
mov dword [rdi + 0x430], eax
cmp ebx, ecx
jge 0x1400280b9
movzx eax, byte [rdi + 0x42c]
mov byte [rsp + 0x30], al
sub ecx, ebx
mov esi, ecx
nop dword [rax + rax]
mov r8d, 1
lea rdx, [rsp + 0x30]
mov rcx, rdi
call fcn.14002f090
sub rsi, 1
jne 0x1400280a0
mov r8, rbx
mov rdx, r12
mov rcx, rdi
call fcn.14002f090
cmp qword [rbp + 0x20], 0x10
jb 0x1400280d4
mov rsi, qword [rbp + 8]
jmp 0x1400280d8
lea rsi, [rbp + 8]
xor ebp, ebp
mov rbx, rbp
cmp byte [rsi], bl
je 0x1400280ea
inc rbx
cmp byte [rsi + rbx], bpl
jne 0x1400280e1
mov ecx, dword [rdi + 0x430]
mov dword [rdi + 0x430], ebp
cmp ebx, ecx
jge 0x140028129
movzx eax, byte [rdi + 0x42c]
mov byte [rsp + 0x30], al
sub ecx, ebx
mov ebp, ecx
nop dword [rax]
mov r8d, 1
lea rdx, [rsp + 0x30]
mov rcx, rdi
call fcn.14002f090
sub rbp, 1
jne 0x140028110
mov r8, rbx
mov rdx, rsi
mov rcx, rdi
call fcn.14002f090
mov rbx, rbp
lea rax, str.__returned_a_non_existant_folder
inc rbx
cmp byte [rbx + rax], 0
jne 0x140028141
mov ecx, dword [rdi + 0x430]
mov dword [rdi + 0x430], ebp
cmp ebx, ecx
jge 0x140028190
movzx eax, byte [rdi + 0x42c]
mov byte [rsp + 0x30], al
sub ecx, ebx
mov esi, ecx
nop dword [rax]
mov r8d, 1
lea rdx, [rsp + 0x30]
mov rcx, rdi
call fcn.14002f090
sub rsi, 1
jne 0x140028170
lea rax, str.__returned_a_non_existant_folder
mov r8, rbx
mov rdx, rax
mov rcx, rdi
call fcn.14002f090
mov rbx, rbp
inc rbx
cmp byte [rbx + r15], 0
jne 0x1400281a1
mov ecx, dword [rdi + 0x430]
mov dword [rdi + 0x430], ebp
cmp ebx, ecx
jge 0x1400281e9
movzx eax, byte [rdi + 0x42c]
mov byte [rsp + 0x30], al
sub ecx, ebx
mov esi, ecx
nop word [rax + rax]
mov r8d, 1
lea rdx, [rsp + 0x30]
mov rcx, rdi
call fcn.14002f090
sub rsi, 1
jne 0x1400281d0
mov r8, rbx
mov rdx, r15
mov rcx, rdi
call fcn.14002f090
mov edx, r13d
mov rcx, rdi
call fcn.1400146a0
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + 8]
nop
cmp qword [rsp + 0x60], 0x10
jb 0x14002822e
mov rcx, qword [rsp + 0x48]
call fcn.1400ddb14
lea rsi, str....._src_swic_srcSwiUpdateShadow.cpp
lea rbp, str.getShFolderSubpath
jmp 0x14002823c
lea rsi, str....._src_swic_srcSwiUpdateShadow.cpp
lea rbp, str.getShFolderSubpath
lea rcx, [0x14019e670]
call fcn.140030de0
mov rbx, rax
test rax, rax
je 0x140028490
mov rax, qword [rax]
mov qword [rsp + 0x20], rbp
mov r9, rsi
lea r8, str.default
mov edx, 1
mov rcx, rbx
call qword [rax + 8]
test al, al
je 0x140028495
mov byte [rbx + 0xf8], 0x65
xor eax, eax
mov dil, 0x2e
mov rcx, rsi
mov edx, 1
nop dword [rax]
cmp dil, 0x5c
cmove eax, edx
inc edx
inc rcx
movzx edi, byte [rcx]
test dil, dil
jne 0x140028290
add rax, rsi
mov qword [rbx + 0x100], rax
mov dword [rbx + 0x108], 0x45
mov qword [rbx + 0x110], rbp
mov edx, r14d
lea rcx, [rsp + 0x40]
call fcn.140026e30
mov rbp, rax
mov rcx, rbx
call fcn.1400027f0
mov rdi, rax
xor r14d, r14d
mov rbx, r14
inc rbx
cmp byte [rbx + r12], r14b
jne 0x1400282e0
mov ecx, dword [rax + 0x430]
mov dword [rax + 0x430], r14d
cmp ebx, ecx
jge 0x140028329
movzx eax, byte [rax + 0x42c]
mov byte [rsp + 0x30], al
sub ecx, ebx
mov esi, ecx
nop dword [rax]
mov r8d, 1
lea rdx, [rsp + 0x30]
mov rcx, rdi
call fcn.14002f090
sub rsi, 1
jne 0x140028310
mov r8, rbx
mov rdx, r12
mov rcx, rdi
call fcn.14002f090
cmp qword [rbp + 0x20], 0x10
jb 0x140028344
mov rsi, qword [rbp + 8]
jmp 0x140028348
lea rsi, [rbp + 8]
mov rbx, r14
cmp byte [rsi], bl
je 0x140028359
nop
inc rbx
cmp byte [rsi + rbx], r14b
jne 0x140028350
mov ecx, dword [rdi + 0x430]
mov dword [rdi + 0x430], r14d
cmp ebx, ecx
jge 0x140028399
movzx eax, byte [rdi + 0x42c]
mov byte [rsp + 0x30], al
sub ecx, ebx
mov ebp, ecx
nop dword [rax]
mov r8d, 1
lea rdx, [rsp + 0x30]
mov rcx, rdi
call fcn.14002f090
sub rbp, 1
jne 0x140028380
mov r8, rbx
mov rdx, rsi
mov rcx, rdi
call fcn.14002f090
mov rbx, r14
lea rbp, str.__returned_a_non_existant_folder
inc rbx
cmp byte [rbx + rbp], r14b
jne 0x1400283b1
mov ecx, dword [rdi + 0x430]
mov dword [rdi + 0x430], r14d
cmp ebx, ecx
jge 0x1400283f9
movzx eax, byte [rdi + 0x42c]
mov byte [rsp + 0x30], al
sub ecx, ebx
mov esi, ecx
nop word [rax + rax]
mov r8d, 1
lea rdx, [rsp + 0x30]
mov rcx, rdi
call fcn.14002f090
sub rsi, 1
jne 0x1400283e0
mov r8, rbx
mov rdx, rbp
mov rcx, rdi
call fcn.14002f090
mov rbx, r14
nop word [rax + rax]
inc rbx
cmp byte [rbx + r15], r14b
jne 0x140028410
mov ecx, dword [rdi + 0x430]
mov dword [rdi + 0x430], r14d
cmp ebx, ecx
jge 0x140028459
movzx eax, byte [rdi + 0x42c]
mov byte [rsp + 0x30], al
sub ecx, ebx
mov esi, ecx
nop dword [rax]
mov r8d, 1
lea rdx, [rsp + 0x30]
mov rcx, rdi
call fcn.14002f090
sub rsi, 1
jne 0x140028440
mov r8, rbx
mov rdx, r15
mov rcx, rdi
call fcn.14002f090
mov edx, r13d
mov rcx, rdi
call fcn.1400146a0
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + 8]
nop
cmp qword [rsp + 0x60], 0x10
jb 0x140028498
mov rcx, qword [rsp + 0x48]
call fcn.1400ddb14
jmp 0x140028498
xor r14d, r14d
jmp 0x140028498
xor r14d, r14d
mov rdi, qword [rsp + 0x38]
mov qword [rdi + 0x20], 7
mov qword [rdi + 0x18], r14
mov word [rdi + 8], r14w
cmp qword [rsp + 0xc0], 8
jb 0x1400284c6
mov rcx, qword [rsp + 0xa8]
call fcn.1400ddb14
mov rax, rdi
mov rcx, qword [rsp + 0x530]
xor rcx, rsp
call fcn.1400dd780
mov rbx, qword [rsp + 0x598]
add rsp, 0x540
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret