Function at 0x40c8f0
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xc28
mov edi, dword [ebp + 0x10]
mov ebx, dword [ebp + 0xc]
mov edx, dword [ebp + 8]
mov eax, dword [0x429004]
xor eax, ebp
mov dword [esp + 0xc20], eax
mov word [edx], 0
lea esi, [esp + 0x420]
add ebx, 2
xor eax, eax
jmp 0x40c93f
mov word [esp + 0x420], 0
add ebx, 2
mov eax, esi
movzx ecx, word [ebx - 2]
cmp cx, 0x7b
je 0x40c930
test cx, cx
je 0x40ce53
cmp cx, 0x7d
je 0x40c970
test eax, eax
je 0x40cb10
mov word [eax], cx
add eax, 2
add ebx, 2
jmp 0x40c93f
mov dword [esp + 4], edx
mov word [eax], 0
push str.TEMP
push esi
call fcn.004132a6
add esp, 8
test eax, eax
je 0x40cb2c
push str.PROGRAM
push esi
call fcn.004132a6
add esp, 8
test eax, eax
je 0x40cb48
push str.PROGRAM_BASE
push esi
call fcn.004132a6
add esp, 8
test eax, eax
je 0x40cc0a
push 0x425cce
push esi
call fcn.004132a6
add esp, 8
test eax, eax
je 0x40cc72
push str.HOME
push esi
call fcn.004132a6
add esp, 8
test eax, eax
je 0x40cd42
push str.CACHE_DIR
push esi
call fcn.004132a6
add esp, 8
test eax, eax
je 0x40cdbd
push str.TIME
push esi
call fcn.004132a6
add esp, 8
test eax, eax
jne 0x40ce72
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
lea eax, [esp + 0x10]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemTimeAsFileTime]
push dword [esp + 0x14]
push dword [esp + 0x14]
push str._lld
push 0x400
lea eax, [esp + 0x30]
push eax
call fcn.0040c870
add esp, 0x14
mov esi, dword [esp + 4]
cmp word [esi], 0
mov edx, edi
je 0x40ca6d
nop dword [eax]
add edx, 0xffffffff
cmp word [esi + 2], 0
lea esi, [esi + 2]
jne 0x40ca60
mov al, byte [esp + 0x20]
test al, al
je 0x40cba4
lea ecx, [esp + 0x20]
nop dword [eax]
mov dword [esp + 0xc], ecx
mov dword [esp + 8], edx
mov byte [esp + 0x1e], al
mov byte [esp + 0x1f], 0
push 2
lea eax, [esp + 0x22]
push eax
lea eax, [esp + 0x22]
push eax
call fcn.00413498
add esp, 0xc
cmp eax, 1
jne 0x40ce76
cmp word [esi], 0
mov ecx, dword [esp + 8]
mov eax, esi
je 0x40cacf
mov edx, esi
mov ecx, dword [esp + 8]
lea eax, [edx + 2]
add ecx, 0xffffffff
cmp word [edx + 2], 0
mov edx, eax
jne 0x40cac0
test ecx, ecx
je 0x40ce76
movzx ecx, word [esp + 0x1a]
mov word [eax], cx
mov word [eax + 2], 0
add esi, 2
mov edx, dword [esp + 8]
add edx, 0xffffffff
mov ecx, dword [esp + 0xc]
mov al, byte [ecx + 1]
add ecx, 1
test al, al
jne 0x40ca80
jmp 0x40cba4
test edi, edi
je 0x40ce72
mov word [edx], cx
mov word [edx + 2], 0
add edx, 2
add edi, 0xffffffff
jmp 0x40c922
push dword [esp + 4]
push edi
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
mov edx, dword [esp + 4]
mov al, 1
cmp word [edx], 0
jne 0x40cbb7
jmp 0x40cbcf
call fcn.0041034f
mov ecx, dword [esp + 4]
cmp word [ecx], 0
mov edx, edi
je 0x40cb6d
nop dword [eax]
add edx, 0xffffffff
cmp word [ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x40cb60
mov eax, dword [eax]
mov eax, dword [eax]
mov dword [esp + 8], eax
movzx esi, word [eax]
test si, si
je 0x40cb9f
xor eax, eax
nop
cmp edx, eax
je 0x40ce76
mov word [ecx], si
add ecx, 2
mov esi, dword [esp + 8]
movzx esi, word [esi + eax*2 + 2]
add eax, 1
test si, si
jne 0x40cb80
mov word [ecx], 0
xor eax, eax
lea esi, [esp + 0x420]
mov edx, dword [esp + 4]
cmp word [edx], 0
je 0x40cbcf
mov ecx, edx
nop dword [eax]
lea edx, [ecx + 2]
add edi, 0xffffffff
cmp word [ecx + 2], 0
mov ecx, edx
jne 0x40cbc0
test al, al
je 0x40c922
cmp word [edx - 2], 0x5c
jne 0x40c922
nop word cs:[eax + eax]
nop dword [eax]
mov eax, edx
mov word [edx - 2], 0
add edi, 1
cmp word [edx - 4], 0x5c
lea edx, [edx - 2]
je 0x40cbf0
jmp 0x40c922
push dword [esp + 4]
call fcn.00413b40
add esp, 4
mov ecx, edi
sub ecx, eax
push ecx
push 0x425c0e
push dword [esp + 0xc]
call fcn.0040c8f0
add esp, 0xc
test al, al
je 0x40ce72
push dword [esp + 4]
call fcn.00413b40
add esp, 4
cmp eax, 4
jb 0x40cc6b
mov ecx, eax
mov eax, dword [esp + 4]
mov dword [esp + 8], ecx
lea eax, [eax + ecx*2]
add eax, 0xfffffff8
push str..exe
push eax
call fcn.004132a6
add esp, 8
test eax, eax
je 0x40ce33
xor eax, eax
jmp 0x40cbad
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
push eax
push 0x425aaa
push 0x80
lea eax, [esp + 0x2c]
push eax
call fcn.0040c870
add esp, 0x10
mov esi, dword [esp + 4]
cmp word [esi], 0
mov edx, edi
je 0x40ccad
nop dword [eax]
add edx, 0xffffffff
cmp word [esi + 2], 0
lea esi, [esi + 2]
jne 0x40cca0
mov al, byte [esp + 0x20]
test al, al
je 0x40cba4
lea ecx, [esp + 0x20]
nop dword [eax]
mov dword [esp + 0xc], ecx
mov dword [esp + 8], edx
mov byte [esp + 0x1e], al
mov byte [esp + 0x1f], 0
push 2
lea eax, [esp + 0x22]
push eax
lea eax, [esp + 0x22]
push eax
call fcn.00413498
add esp, 0xc
cmp eax, 1
jne 0x40ce76
cmp word [esi], 0
mov ecx, dword [esp + 8]
mov eax, esi
je 0x40cd0f
mov edx, esi
mov ecx, dword [esp + 8]
lea eax, [edx + 2]
add ecx, 0xffffffff
cmp word [edx + 2], 0
mov edx, eax
jne 0x40cd00
test ecx, ecx
je 0x40ce76
movzx ecx, word [esp + 0x1a]
mov word [eax], cx
mov word [eax + 2], 0
add esi, 2
mov edx, dword [esp + 8]
add edx, 0xffffffff
mov ecx, dword [esp + 0xc]
mov al, byte [ecx + 1]
add ecx, 1
test al, al
jne 0x40ccc0
jmp 0x40cba4
sub esp, 0x14
lea eax, [esp + 0x34]
mov dword [esp + 0x10], eax
movaps xmm0, xmmword [0x4220c0]
movups xmmword [esp], xmm0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
test eax, eax
jne 0x40ce72
mov eax, dword [esp + 4]
cmp word [eax], 0
mov ecx, edi
je 0x40cd8d
nop word cs:[eax + eax]
nop dword [eax]
add ecx, 0xffffffff
cmp word [eax + 2], 0
lea eax, [eax + 2]
jne 0x40cd80
movzx edx, word [esp + 0x20]
test dx, dx
je 0x40ce27
xor esi, esi
nop dword [eax]
cmp ecx, esi
je 0x40ce76
mov word [eax], dx
add eax, 2
movzx edx, word [esp + esi*2 + 0x22]
add esi, 1
test dx, dx
jne 0x40cda0
jmp 0x40ce27
sub esp, 0x14
lea eax, [esp + 0x34]
mov dword [esp + 0x10], eax
movaps xmm0, xmmword [0x4220b0]
movups xmmword [esp], xmm0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
test eax, eax
jne 0x40ce72
mov eax, dword [esp + 4]
cmp word [eax], 0
mov ecx, edi
je 0x40cdfd
nop dword [eax]
add ecx, 0xffffffff
cmp word [eax + 2], 0
lea eax, [eax + 2]
jne 0x40cdf0
movzx edx, word [esp + 0x20]
test dx, dx
je 0x40ce27
xor esi, esi
nop dword [eax]
cmp ecx, esi
je 0x40ce76
mov word [eax], dx
add eax, 2
movzx edx, word [esp + esi*2 + 0x22]
add esi, 1
test dx, dx
jne 0x40ce10
mov word [eax], 0
mov al, 1
jmp 0x40cba6
mov edx, dword [esp + 4]
mov eax, dword [esp + 8]
mov word [edx + eax*2 - 8], 0
xor eax, eax
cmp word [edx], 0
jne 0x40cbb7
jmp 0x40cbcf
mov word [edx], 0
mov bl, 1
mov ecx, dword [esp + 0xc20]
xor ecx, ebp
call fcn.0040eab1
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
xor ebx, ebx
jmp 0x40ce5a
call fcn.00413423
int3