Function at 0x40bcb0
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xc30
mov edi, dword [ebp + 0xc]
mov ecx, dword [ebp + 8]
mov eax, dword [section..data]
xor eax, ebp
mov dword [esp + 0xc28], eax
mov dword [esp + 4], ecx
mov word [ecx], 0
movzx eax, word [edi]
test ax, ax
je 0x40c399
mov ecx, dword [ebp + 0x10]
mov dword [esp + 0xc], ecx
lea edx, [esp + 0x428]
mov esi, dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
add edi, 2
xor ecx, ecx
jmp 0x40bd2b
mov word [esp + 0x428], 0
mov ecx, edx
movzx eax, word [edi]
add edi, 2
test ax, ax
je 0x40c399
cmp ax, 0x7b
je 0x40bd10
mov ebx, edx
movzx edx, ax
cmp edx, 0x7d
je 0x40bd50
test ecx, ecx
mov edx, ebx
je 0x40bf50
mov word [ecx], ax
add ecx, 2
jmp 0x40bd1c
mov word [ecx], 0
push str.TEMP
push ebx
call fcn.004120d1
add esp, 8
test eax, eax
je 0x40bf72
push str.PROGRAM
lea eax, [esp + 0x42c]
push eax
call fcn.004120d1
add esp, 8
test eax, eax
je 0x40bf8f
push str.PROGRAM_BASE
lea eax, [esp + 0x42c]
push eax
call fcn.004120d1
add esp, 8
test eax, eax
je 0x40bff5
push 0x424d1e
lea eax, [esp + 0x42c]
push eax
call fcn.004120d1
add esp, 8
test eax, eax
je 0x40c05d
push str.HOME
lea eax, [esp + 0x42c]
push eax
call fcn.004120d1
add esp, 8
test eax, eax
je 0x40c12d
push str.CACHE_DIR
lea eax, [esp + 0x42c]
push eax
call fcn.004120d1
add esp, 8
test eax, eax
je 0x40c19b
push str.COMPANY
lea eax, [esp + 0x42c]
push eax
call fcn.004120d1
add esp, 8
test eax, eax
je 0x40c299
push str.PRODUCT
lea eax, [esp + 0x42c]
push eax
call fcn.004120d1
add esp, 8
test eax, eax
mov esi, dword [esp + 0xc]
je 0x40c2b4
push str.VERSION
lea eax, [esp + 0x42c]
push eax
call fcn.004120d1
add esp, 8
test eax, eax
je 0x40c32d
push str.TIME
lea eax, [esp + 0x42c]
push eax
call fcn.004120d1
add esp, 8
test eax, eax
jne 0x40c3bc
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
lea eax, [esp + 0x18]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemTimeAsFileTime]
push dword [esp + 0x1c]
push dword [esp + 0x1c]
push str._lld
push 0x400
lea eax, [esp + 0x38]
push eax
call fcn.0040bc40
add esp, 0x14
mov ebx, dword [esp + 4]
cmp word [ebx], 0
mov edx, esi
je 0x40bec5
dec edx
cmp word [ebx + 2], 0
lea ebx, [ebx + 2]
jne 0x40beba
movzx ecx, byte [esp + 0x28]
test cl, cl
je 0x40bfee
lea eax, [esp + 0x28]
mov byte [esp + 0xb], cl
mov dword [esp + 0x14], eax
cmp word [ebx], 0
mov esi, ebx
mov eax, edx
je 0x40befd
mov eax, edx
mov ecx, ebx
nop dword [eax]
lea esi, [ecx + 2]
dec eax
cmp word [ecx + 2], 0
mov ecx, esi
jne 0x40bef0
mov dword [esp + 0x10], edx
test eax, eax
je 0x40c3c0
push esi
call fcn.00412970
add esp, 4
lea eax, [esi + eax*2]
movzx ecx, byte [esp + 0xb]
mov byte [esp + 0x26], cl
mov byte [esp + 0x27], 0
push 2
lea ecx, [esp + 0x2a]
push ecx
push eax
call fcn.004122c3
add esp, 0xc
add ebx, 2
mov edx, dword [esp + 0x10]
dec edx
mov eax, dword [esp + 0x14]
movzx ecx, byte [eax + 1]
inc eax
test cl, cl
jne 0x40bed6
jmp 0x40bfee
mov ebx, dword [esp + 0xc]
test ebx, ebx
je 0x40c3bc
mov ecx, dword [esp + 4]
mov word [ecx], ax
mov word [ecx + 2], 0
lea eax, [ecx + 2]
dec ebx
jmp 0x40c280
mov esi, dword [esp + 4]
push esi
push dword [esp + 0x10]
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
mov al, 1
lea edx, [esp + 0x428]
jmp 0x40c21b
call fcn.0040f1b8
mov ecx, dword [esp + 4]
cmp word [ecx], 0
mov edx, dword [esp + 0xc]
je 0x40bfbb
nop word cs:[eax + eax]
dec edx
cmp word [ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x40bfb0
mov eax, dword [eax]
mov eax, dword [eax]
movzx esi, word [eax]
test si, si
je 0x40bfe9
xor ebx, ebx
nop dword [eax]
cmp edx, ebx
je 0x40c3c0
mov word [ecx], si
add ecx, 2
movzx esi, word [eax + ebx*2 + 2]
inc ebx
test si, si
jne 0x40bfd0
mov word [ecx], 0
xor eax, eax
jmp 0x40c210
mov esi, dword [esp + 4]
push esi
call fcn.00412970
add esp, 4
mov ecx, dword [esp + 0xc]
sub ecx, eax
push ecx
push 0x424c2e
push esi
call fcn.0040bcb0
add esp, 0xc
test al, al
je 0x40c3bc
push esi
call fcn.00412970
add esp, 4
cmp eax, 4
jb 0x40c054
mov dword [esp + 0x10], eax
lea eax, [esi + eax*2]
add eax, 0xfffffff8
push str..exe
push eax
call fcn.004120d1
add esp, 8
test eax, eax
jne 0x40c054
mov eax, dword [esp + 0x10]
mov word [esi + eax*2 - 8], 0
xor eax, eax
mov edx, ebx
jmp 0x40c21b
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
push eax
push 0x424aca
push 0x80
lea eax, [esp + 0x34]
push eax
call fcn.0040bc40
add esp, 0x10
mov ebx, dword [esp + 4]
cmp word [ebx], 0
mov edx, dword [esp + 0xc]
je 0x40c09b
nop dword [eax]
dec edx
cmp word [ebx + 2], 0
lea ebx, [ebx + 2]
jne 0x40c090
movzx ecx, byte [esp + 0x28]
test cl, cl
je 0x40bfee
lea eax, [esp + 0x28]
nop dword [eax]
mov byte [esp + 0xb], cl
mov dword [esp + 0x14], eax
cmp word [ebx], 0
mov esi, ebx
mov eax, edx
je 0x40c0dd
mov eax, edx
mov ecx, ebx
nop word cs:[eax + eax]
lea esi, [ecx + 2]
dec eax
cmp word [ecx + 2], 0
mov ecx, esi
jne 0x40c0d0
mov dword [esp + 0x10], edx
test eax, eax
je 0x40c3c0
push esi
call fcn.00412970
add esp, 4
lea eax, [esi + eax*2]
movzx ecx, byte [esp + 0xb]
mov byte [esp + 0x18], cl
mov byte [esp + 0x19], 0
push 2
lea ecx, [esp + 0x1c]
push ecx
push eax
call fcn.004122c3
add esp, 0xc
add ebx, 2
mov edx, dword [esp + 0x10]
dec edx
mov eax, dword [esp + 0x14]
movzx ecx, byte [eax + 1]
inc eax
test cl, cl
jne 0x40c0b0
jmp 0x40bfee
sub esp, 0x14
lea eax, [esp + 0x3c]
mov dword [esp + 0x10], eax
movaps xmm0, xmmword [0x4210e0]
movups xmmword [esp], xmm0
call esi
test eax, eax
jne 0x40c3bc
mov eax, dword [esp + 4]
cmp word [eax], 0
mov ecx, dword [esp + 0xc]
je 0x40c16b
nop dword [eax + eax]
dec ecx
cmp word [eax + 2], 0
lea eax, [eax + 2]
jne 0x40c160
movzx edx, word [esp + 0x28]
test dx, dx
je 0x40c209
xor esi, esi
nop dword [eax + eax]
cmp ecx, esi
je 0x40c3c0
mov word [eax], dx
add eax, 2
movzx edx, word [esp + esi*2 + 0x2a]
inc esi
test dx, dx
jne 0x40c180
jmp 0x40c209
sub esp, 0x14
lea eax, [esp + 0x3c]
mov dword [esp + 0x10], eax
movaps xmm0, xmmword [0x4210d0]
movups xmmword [esp], xmm0
call esi
test eax, eax
jne 0x40c3bc
mov eax, dword [esp + 4]
cmp word [eax], 0
mov ecx, dword [esp + 0xc]
je 0x40c1db
nop dword [eax]
dec ecx
cmp word [eax + 2], 0
lea eax, [eax + 2]
jne 0x40c1d0
movzx edx, word [esp + 0x28]
test dx, dx
je 0x40c209
xor esi, esi
nop word [eax + eax]
cmp ecx, esi
je 0x40c3c0
mov word [eax], dx
add eax, 2
movzx edx, word [esp + esi*2 + 0x2a]
inc esi
test dx, dx
jne 0x40c1f0
mov word [eax], 0
mov al, 1
lea edx, [esp + 0x428]
mov esi, dword [esp + 4]
cmp word [esi], 0
je 0x40c265
mov ebx, dword [esp + 0xc]
nop word cs:[eax + eax]
lea ecx, [esi + 2]
dec ebx
cmp word [esi + 2], 0
mov esi, ecx
jne 0x40c230
test al, al
je 0x40c26f
cmp word [ecx - 2], 0x5c
mov esi, dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
jne 0x40c279
nop
lea eax, [ecx - 2]
mov word [ecx - 2], 0
inc ebx
cmp word [ecx - 4], 0x5c
mov ecx, eax
je 0x40c250
jmp 0x40c280
mov ecx, esi
mov ebx, dword [esp + 0xc]
test al, al
jne 0x40c241
mov eax, ecx
mov esi, dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
jmp 0x40c280
mov eax, ecx
nop dword [eax + eax]
mov dword [esp + 0xc], ebx
mov dword [esp + 4], eax
movzx eax, word [edi]
test ax, ax
jne 0x40bcfc
jmp 0x40c399
mov eax, dword [esp + 4]
cmp word [eax], 0
mov ecx, dword [esp + 0xc]
je 0x40c2cb
dec ecx
cmp word [eax + 2], 0
lea eax, [eax + 2]
jne 0x40c2a7
jmp 0x40c2cb
mov eax, dword [esp + 4]
cmp word [eax], 0
mov ecx, esi
je 0x40c2cb
dec ecx
cmp word [eax + 2], 0
lea eax, [eax + 2]
jne 0x40c2c0
test ecx, ecx
je 0x40c3c0
mov word [eax], 0x46
cmp ecx, 1
je 0x40c3c0
mov word [eax + 2], 0x65
cmp ecx, 2
je 0x40c3c0
mov word [eax + 4], 0x6e
cmp ecx, 3
je 0x40c3c0
mov word [eax + 6], 0x63
cmp ecx, 4
je 0x40c3c0
mov word [eax + 8], 0x49
cmp ecx, 5
je 0x40c3c0
mov edx, ebx
mov dword [eax + 0xa], 0x54
xor eax, eax
jmp 0x40c217
mov eax, dword [esp + 4]
cmp word [eax], 0
mov ecx, esi
je 0x40c344
dec ecx
cmp word [eax + 2], 0
lea eax, [eax + 2]
jne 0x40c339
test ecx, ecx
je 0x40c3c0
mov word [eax], 0x31
cmp ecx, 1
je 0x40c3c0
mov word [eax + 2], 0x2e
cmp ecx, 2
je 0x40c3c0
mov word [eax + 4], 0x30
cmp ecx, 3
je 0x40c3c0
mov word [eax + 6], 0x2e
cmp ecx, 4
je 0x40c3c0
mov word [eax + 8], 0x30
cmp ecx, 5
je 0x40c3c0
mov word [eax + 0xa], 0x2e
cmp ecx, 6
je 0x40c3c0
mov edx, ebx
mov dword [eax + 0xc], 0x30
xor eax, eax
jmp 0x40c217
mov eax, dword [esp + 4]
mov word [eax], 0
mov bl, 1
mov ecx, dword [esp + 0xc28]
xor ecx, ebp
call fcn.0040d9a4
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
xor ebx, ebx
jmp 0x40c3a4
call fcn.0041224e
int3