Function at 0x40c020
Capabilities:
Get common file path

Disassembly:
mov rax, rsp
sub rsp, 0x1e8
mov qword [rsp + 0x78], 0xfffffffffffffffe
mov qword [rax + 0x20], rbx
mov qword [rax - 8], rbp
mov qword [rax - 0x10], rsi
mov qword [rax - 0x18], rdi
mov qword [rax - 0x20], r12
mov qword [rax - 0x28], r13
mov qword [rax - 0x30], r14
mov qword [rax - 0x38], r15
mov rax, qword [0x0045c120]
xor rax, rsp
mov qword [rsp + 0x1a0], rax
mov r14d, r8d
mov rbx, rdx
mov r15, rcx
call fcn.00418ad4
mov rcx, rax
xor eax, eax
test rcx, rcx
setne al
test eax, eax
jne 0x40c08d
mov ecx, 0x80004005
call fcn.00401000
int3
mov rax, qword [rcx]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x28], rax
call fcn.00418ad4
mov rdx, rax
xor ecx, ecx
test rax, rax
setne cl
test ecx, ecx
jne 0x40c0bb
mov ecx, 0x80004005
call fcn.00401000
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x30], rax
call fcn.00418ad4
mov rdx, rax
xor ecx, ecx
test rax, rax
setne cl
test ecx, ecx
jne 0x40c0ec
mov ecx, 0x80004005
call fcn.00401000
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x20], rax
lea rdx, [0x004404b5]
mov rsi, 0xffffffffffffffff
test rdx, 0xffffffffffff0000
jne 0x40c136
movzx edi, dx
mov ecx, edi
call fcn.00418ac0
test rax, rax
je 0x40c152
mov r8d, edi
mov rdx, rax
lea rcx, [rsp + 0x20]
call fcn.00402bb0
jmp 0x40c152
xor eax, eax
mov rcx, rsi
mov rdi, rdx
repne scasb al, byte [rdi]
not rcx
lea r8d, [rcx - 1]
lea rcx, [rsp + 0x20]
call fcn.00402d50
nop
mov edx, 0x104
lea rcx, [rsp + 0x90]
call qword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
test eax, eax
jne 0x40c1e0
lea rcx, str.Error_:_Get_windows_path_error_n
call fcn.00405500
nop
mov rdx, qword [rsp + 0x20]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x40c197
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x30]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x40c1b8
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x28]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], esi
add esi, 0xffffffff
test esi, esi
jg 0x40c1d6
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov eax, 0x4e25
jmp 0x40c782
lea r8, [rsp + 0x90]
lea rdx, [0x00440928]
lea rcx, [rsp + 0x30]
call fcn.00403da0
mov rdx, qword [rsp + 0x30]
lea rcx, str.templog_DevSetupSub.cpp_DecompreKBFiles___szWindowDir:_s_n
call fcn.00405500
xor r12d, r12d
test r14d, r14d
je 0x40c713
lea rax, [rsp + 0x38]
mov qword [rsp + 0x88], rax
lea r13, [rbx + 0x1c0]
lea rbp, str.extractHotfix.bat
mov r8, r15
lea rdx, [0x00440928]
lea rcx, [rsp + 0x28]
call fcn.00403da0
mov rbx, qword [rsp + 0x28]
mov rdx, rbx
lea rcx, str.templog_DevSetupSub.cpp_DecompreKBFiles____strSrcFileName:_s
call fcn.00405500
mov dword [r13], 6
xor eax, eax
mov rcx, rsi
lea rdi, [0x004404b5]
repne scasb al, byte [rdi]
not rcx
lea r8d, [rcx - 1]
lea rdx, [0x004404b5]
lea rcx, [rsp + 0x30]
call fcn.00402d50
mov r8, r15
lea rdx, [0x00440928]
lea rcx, [rsp + 0x30]
call fcn.00403da0
call fcn.00418ad4
xor ecx, ecx
test rax, rax
setne cl
test ecx, ecx
je 0x40c708
mov rdx, qword [rax]
mov rcx, rax
call qword [rdx + 0x18]
add rax, 0x18
mov qword [rsp + 0x38], rax
test rbp, 0xffffffffffff0000
jne 0x40c2ec
movzx edi, bp
mov ecx, edi
call fcn.00418ac0
test rax, rax
je 0x40c30b
mov r8d, edi
mov rdx, rax
lea rcx, [rsp + 0x38]
call fcn.00402bb0
jmp 0x40c30b
xor eax, eax
mov rcx, rsi
mov rdi, rbp
repne scasb al, byte [rdi]
not rcx
lea r8d, [rcx - 1]
mov rdx, rbp
lea rcx, [rsp + 0x38]
call fcn.00402d50
nop
mov rdi, qword [rsp + 0x30]
mov rcx, qword [rdi - 0x18]
mov rax, qword [rcx]
call qword [rax + 0x20]
mov rcx, rax
cmp dword [rdi - 8], 0
jl 0x40c339
cmp rax, qword [rdi - 0x18]
jne 0x40c339
lea rbp, [rdi - 0x18]
lock add dword [rdi - 8], 1
mov rbx, qword [rsp + 0x28]
jmp 0x40c371
mov rax, qword [rax]
mov r8d, 1
mov edx, dword [rdi - 0x10]
call qword [rax]
mov rbp, rax
test rax, rax
je 0x40c702
mov ecx, dword [rdi - 0x10]
mov dword [rax + 8], ecx
mov ecx, dword [rdi - 0x10]
add ecx, 1
movsxd rdx, ecx
mov r8, rdi
lea rcx, [rax + 0x18]
mov r9, rdx
call fcn.00425d30
lea rax, [rbp + 0x18]
mov qword [rsp + 0x70], rax
lea r8, [rsp + 0x20]
lea rdx, [rsp + 0x38]
lea rcx, [rsp + 0x70]
call fcn.00404510
lea r8, [rsp + 0x28]
lea rdx, [0x00441638]
lea rcx, [rsp + 0x48]
call fcn.00403390
nop
lea r8, [0x00441638]
mov rdx, rax
lea rcx, [rsp + 0x58]
call fcn.00403200
nop
mov rdx, qword [rax]
lea rdi, [rdx - 0x18]
add rbx, 0xffffffffffffffe8
cmp rdi, rbx
je 0x40c46b
cmp dword [rbx + 0x10], 0
jl 0x40c45c
mov rcx, qword [rdi]
cmp rcx, qword [rbx]
jne 0x40c45c
mov rax, qword [rcx]
call qword [rax + 0x20]
mov rcx, rax
cmp dword [rdi + 0x10], 0
jl 0x40c3fe
cmp rax, qword [rdi]
jne 0x40c3fe
mov rbp, rdi
lock add dword [rdi + 0x10], 1
jmp 0x40c437
mov rax, qword [rax]
mov r8d, 1
mov edx, dword [rdi + 8]
call qword [rax]
mov rbp, rax
test rax, rax
je 0x40c6ea
mov ecx, dword [rdi + 8]
mov dword [rax + 8], ecx
mov ecx, dword [rdi + 8]
add ecx, 1
movsxd rdx, ecx
lea r8, [rdi + 0x18]
lea rcx, [rax + 0x18]
mov r9, rdx
call fcn.00425d30
mov eax, esi
lock xadd dword [rbx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x40c451
mov rcx, qword [rbx]
mov rax, qword [rcx]
mov rdx, rbx
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rax, [rbp + 0x18]
mov qword [rsp + 0x28], rax
jmp 0x40c46b
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0x28]
call fcn.00402d50
nop
mov rdx, qword [rsp + 0x58]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x40c48c
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x48]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x40c4ac
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea r8, [rsp + 0x20]
lea rdx, [0x00441638]
lea rcx, [rsp + 0x60]
call fcn.00403390
nop
lea r8, [0x00441638]
mov rdx, rax
lea rcx, [rsp + 0x68]
call fcn.00403200
nop
mov rdx, qword [rax]
lea rdi, [rdx - 0x18]
mov rbx, qword [rsp + 0x20]
add rbx, 0xffffffffffffffe8
cmp rdi, rbx
je 0x40c58e
cmp dword [rbx + 0x10], 0
jl 0x40c57f
mov rcx, qword [rdi]
cmp rcx, qword [rbx]
jne 0x40c57f
mov rax, qword [rcx]
call qword [rax + 0x20]
mov rcx, rax
cmp dword [rdi + 0x10], 0
jl 0x40c521
cmp rax, qword [rdi]
jne 0x40c521
mov rbp, rdi
lock add dword [rdi + 0x10], 1
jmp 0x40c55a
mov rax, qword [rax]
mov r8d, 1
mov edx, dword [rdi + 8]
call qword [rax]
mov rbp, rax
test rax, rax
je 0x40c6f0
mov ecx, dword [rdi + 8]
mov dword [rax + 8], ecx
mov ecx, dword [rdi + 8]
add ecx, 1
movsxd rdx, ecx
lea r8, [rdi + 0x18]
lea rcx, [rax + 0x18]
mov r9, rdx
call fcn.00425d30
mov eax, esi
lock xadd dword [rbx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x40c574
mov rcx, qword [rbx]
mov rax, qword [rcx]
mov rdx, rbx
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rax, [rbp + 0x18]
mov qword [rsp + 0x20], rax
jmp 0x40c58e
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0x20]
call fcn.00402d50
nop
mov rdx, qword [rsp + 0x68]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x40c5af
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x60]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x40c5cf
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rax, [rsp + 0x40]
mov qword [rsp + 0x80], rax
mov rdi, qword [rsp + 0x28]
mov rcx, qword [rdi - 0x18]
mov rax, qword [rcx]
call qword [rax + 0x20]
mov rcx, rax
cmp dword [rdi - 8], 0
jl 0x40c605
cmp rax, qword [rdi - 0x18]
jne 0x40c605
lea rbx, [rdi - 0x18]
lock add dword [rdi - 8], 1
jmp 0x40c63d
mov rax, qword [rax]
mov r8d, 1
mov edx, dword [rdi - 0x10]
call qword [rax]
mov rbx, rax
test rax, rax
je 0x40c6fc
mov ecx, dword [rdi - 0x10]
mov dword [rax + 8], ecx
mov ecx, dword [rdi - 0x10]
add ecx, 1
movsxd rdx, ecx
mov r8, rdi
lea rcx, [rax + 0x18]
mov r9, rdx
call fcn.00425d30
lea rax, [rbx + 0x18]
mov qword [rsp + 0x40], rax
mov rdi, qword [rsp + 0x20]
mov rcx, qword [rdi - 0x18]
mov rax, qword [rcx]
call qword [rax + 0x20]
mov rcx, rax
cmp dword [rdi - 8], 0
jl 0x40c66f
cmp rax, qword [rdi - 0x18]
jne 0x40c66f
lea rbx, [rdi - 0x18]
lock add dword [rdi - 8], 1
jmp 0x40c6a3
mov rax, qword [rax]
mov r8d, 1
mov edx, dword [rdi - 0x10]
call qword [rax]
mov rbx, rax
test rax, rax
je 0x40c6f6
mov ecx, dword [rdi - 0x10]
mov dword [rax + 8], ecx
mov ecx, dword [rdi - 0x10]
add ecx, 1
movsxd rdx, ecx
mov r8, rdi
lea rcx, [rax + 0x18]
mov r9, rdx
call fcn.00425d30
lea rax, [rbx + 0x18]
mov qword [rsp + 0x50], rax
xor r9d, r9d
lea r8d, [r9 + 1]
lea rdx, [rsp + 0x40]
lea rcx, [rsp + 0x50]
call fcn.004065e0
lea rcx, str.tempLog_DevSetupSub.cpp_decompression___exit_n
call fcn.00405500
add r12d, 1
add r13, 0x1cc
cmp r12d, r14d
jae 0x40c713
lea rbp, str.extractHotfix.bat
jmp 0x40c231
call fcn.00401bd0
nop
call fcn.00401bd0
nop
call fcn.00401bd0
nop
call fcn.00401bd0
nop
call fcn.00401bd0
nop
mov ecx, 0x80004005
call fcn.00401000
int3
lea rcx, str.Info__:_decompression_file_exit._n
call fcn.00405500
nop
mov rdx, qword [rsp + 0x20]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x40c741
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x30]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x40c762
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x28]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], esi
add esi, 0xffffffff
test esi, esi
jg 0x40c780
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
mov rcx, qword [rsp + 0x1a0]
xor rcx, rsp
call fcn.004252f0
mov rbx, qword [rsp + 0x208]
mov rbp, qword [rsp + 0x1e0]
mov rsi, qword [rsp + 0x1d8]
mov rdi, qword [rsp + 0x1d0]
mov r12, qword [rsp + 0x1c8]
mov r13, qword [rsp + 0x1c0]
mov r14, qword [rsp + 0x1b8]
mov r15, qword [rsp + 0x1b0]
add rsp, 0x1e8
ret