Function at 0x40f3ea
Capabilities:
Get common file path

Disassembly:
mov edi, edi
push ebp
sub esp, 0x54
mov eax, 0x420b56
call fcn.00412d4c
sub esp, 0x9a8
push ebx
xor ebx, ebx
push edi
mov dword [ebp - 4], ebx
mov dword [ebp + 0x34], ebx
mov edi, dword [ebp + 0x60]
mov dword [edi + 0x14], 0xf
mov dword [edi + 0x10], ebx
mov byte [edi], bl
mov dword [ebp - 4], ebx
push dword [ebp + 0x64]
mov dword [ebp + 0x34], 1
call fcn.004124c0
pop ecx
add eax, eax
push eax
mov ecx, edi
call fcn.0040cc43
mov ecx, dword [ebp + 0x64]
cmp byte [ecx], bl
je 0x40f845
push esi
mov al, byte [ecx]
inc ecx
mov byte [ebp + 0x38], al
mov dword [ebp + 0x64], ecx
cmp al, 0x25
je 0x40f460
push dword [ebp + 0x38]
mov ecx, edi
push 1
call fcn.00405183
jmp 0x40f82a
mov dword [ebp + 0x50], ebx
mov dword [ebp + 0x54], ebx
mov dword [ebp + 0x54], 0xf
mov dword [ebp + 0x50], ebx
mov byte [ebp + 0x40], bl
mov dword [ebp - 4], 1
mov ecx, dword [ebp + 0x64]
mov bl, byte [ecx]
movsx eax, bl
inc ecx
mov byte [ebp + 0x3c], bl
mov dword [ebp + 0x64], ecx
cmp eax, 0x25
je 0x40f811
cmp eax, 0x7b
je 0x40f4a7
push dword [ebp + 0x3c]
lea ecx, [ebp + 0x40]
push 1
call fcn.00405183
mov ecx, dword [ebp + 0x64]
mov al, byte [ecx]
cmp bl, 0x7b
jne 0x40f768
mov bh, 1
xor bl, bl
jmp 0x40f512
cmp al, 0x7d
je 0x40f516
call fcn.004113ad
cmp eax, 3
jae 0x40f4db
lea eax, [ebp - 0x5a0]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
mov ecx, dword [ebp + 0x64]
test bl, bl
jne 0x40f4fc
mov al, byte [ecx]
cmp al, 0x3a
jne 0x40f4e9
inc bl
jmp 0x40f4fc
movsx eax, al
push eax
call fcn.0041585c
neg eax
sbb al, al
pop ecx
mov ecx, dword [ebp + 0x64]
and bh, al
mov al, byte [ecx]
inc ecx
mov dword [ebp + 0x64], ecx
lea ecx, [ebp + 0x40]
push eax
push 1
call fcn.00405183
mov ecx, dword [ebp + 0x64]
mov al, byte [ecx]
test al, al
jne 0x40f4b8
mov al, byte [ecx]
inc ecx
mov dword [ebp + 0x64], ecx
test al, al
je 0x40f838
lea eax, [ebp + 0x40]
test bh, bh
je 0x40f61d
cmp dword [ebp + 0x54], 0x10
push 0x3a
cmovae eax, dword [ebp + 0x40]
push eax
call fcn.004158c0
mov ebx, eax
pop ecx
xor esi, esi
pop ecx
test ebx, ebx
je 0x40f55f
mov byte [ebx], 0
inc ebx
push 0x4245d0
push ebx
call fcn.00414eae
pop ecx
pop ecx
test eax, eax
jne 0x40f5bb
inc esi
push 2
pop ebx
cmp dword [ebp + 0x54], 0x10
lea eax, [ebp + 0x40]
cmovae eax, dword [ebp + 0x40]
push 0x42d1b8
push eax
call fcn.004159eb
pop ecx
mov ecx, dword [ebp + 0x68]
push eax
lea eax, [ebp + 0x18]
push eax
call fcn.004101fe
mov byte [ebp - 4], bl
dec esi
je 0x40f5d2
dec esi
jne 0x40f601
cmp dword [ebp + 0x2c], 0x10
lea eax, [ebp + 0x18]
cmovae eax, dword [ebp + 0x18]
push eax
lea eax, [ebp - 0x6c]
push eax
call fcn.00410554
pop ecx
pop ecx
mov byte [ebp - 4], 4
push eax
lea ecx, [ebp + 0x18]
call fcn.00409784
mov byte [ebp - 4], bl
lea ecx, [ebp - 0x6c]
jmp 0x40f5fc
push str.file
push ebx
call fcn.00414eae
pop ecx
pop ecx
push 2
test eax, eax
pop ebx
cmove esi, ebx
jmp 0x40f562
cmp dword [ebp + 0x2c], 0x10
lea eax, [ebp + 0x18]
cmovae eax, dword [ebp + 0x18]
push eax
lea eax, [ebp]
push eax
call fcn.004107b3
pop ecx
pop ecx
mov byte [ebp - 4], 3
push eax
lea ecx, [ebp + 0x18]
call fcn.00409784
mov byte [ebp - 4], bl
lea ecx, [ebp]
call fcn.004015cc
push 0xffffffffffffffff
xor ebx, ebx
push ebx
lea eax, [ebp + 0x18]
push eax
mov ecx, edi
call fcn.004050e1
mov byte [ebp - 4], 1
lea ecx, [ebp + 0x18]
jmp 0x40f746
cmp dword [ebp + 0x54], 0x10
push str.unique
cmovae eax, dword [ebp + 0x40]
push eax
call fcn.00414eae
pop ecx
pop ecx
test eax, eax
je 0x40f702
cmp dword [ebp + 0x54], 0x10
push 7
lea eax, [ebp + 0x40]
cmovae eax, dword [ebp + 0x40]
push str.unique:
push eax
call fcn.00414f88
add esp, 0xc
test eax, eax
je 0x40f702
cmp dword [ebp + 0x54], 0x10
lea eax, [ebp + 0x40]
cmovae eax, dword [ebp + 0x40]
push str.guid
push eax
call fcn.00414eae
pop ecx
pop ecx
test eax, eax
je 0x40f6c7
cmp dword [ebp + 0x54], 0x10
push 5
lea eax, [ebp + 0x40]
cmovae eax, dword [ebp + 0x40]
push str.guid:
push eax
call fcn.00414f88
add esp, 0xc
test eax, eax
je 0x40f6c7
mov ecx, dword [ebp + 0x68]
push 0x42d1b8
lea eax, [ebp + 0x40]
push eax
lea eax, [ebp - 0x54]
push eax
call fcn.00410157
mov byte [ebp - 4], 7
push 0xffffffffffffffff
xor ebx, ebx
push ebx
push eax
mov ecx, edi
call fcn.004050e1
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x54]
jmp 0x40f746
cmp dword [ebp + 0x54], 0x10
push dword [ebp + 0x68]
lea eax, [ebp + 0x40]
cmovae eax, dword [ebp + 0x40]
push eax
lea eax, [ebp - 0x84]
push eax
call fcn.0040ee15
add esp, 0xc
mov byte [ebp - 4], 6
push 0xffffffffffffffff
xor ebx, ebx
push ebx
push eax
mov ecx, edi
call fcn.004050e1
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x84]
jmp 0x40f746
cmp dword [ebp + 0x54], 0x10
lea eax, [ebp + 0x40]
cmovae eax, dword [ebp + 0x40]
cmp dword [edi + 0x14], 0x10
jb 0x40f717
mov ecx, dword [edi]
jmp 0x40f719
mov ecx, edi
push dword [ebp + 0x68]
push eax
lea eax, [ebp + 0x64]
push eax
push ecx
lea eax, [ebp - 0x24]
push eax
call fcn.0040f858
add esp, 0x14
mov byte [ebp - 4], 5
push 0xffffffffffffffff
xor ebx, ebx
push ebx
push eax
mov ecx, edi
call fcn.004050e1
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x24]
call fcn.004015cc
jmp 0x40f81f
cmp al, 0x25
je 0x40f76c
inc ecx
push eax
mov dword [ebp + 0x64], ecx
push 1
lea ecx, [ebp + 0x40]
call fcn.00405183
mov ecx, dword [ebp + 0x64]
mov al, byte [ecx]
test al, al
jne 0x40f750
mov al, byte [ecx]
inc ecx
mov dword [ebp + 0x64], ecx
test al, al
je 0x40f838
mov ecx, dword [0x42e660]
cmp dword [ebp + 0x54], 0x10
lea eax, [ecx + 0x98]
push eax
lea esi, [ebp + 0x40]
cmovae esi, dword [ebp + 0x40]
push 1
call fcn.0040d9d1
push 0x104
lea ecx, [ebp - 0x18c]
push ecx
push esi
call dword [eax]
test eax, eax
je 0x40f7da
lea eax, [ebp - 0x18c]
push eax
lea ecx, [ebp - 0x3c]
call fcn.00401391
mov byte [ebp - 4], 8
push 0xffffffffffffffff
xor ebx, ebx
push ebx
push eax
mov ecx, edi
call fcn.004050e1
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x3c]
call fcn.004015cc
jmp 0x40f7dc
xor ebx, ebx
call fcn.004113ad
cmp eax, 3
jae 0x40f7f3
lea eax, [ebp + 0x30]
push eax
mov dword [ebp + 0x30], ebx
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
call fcn.004113ad
cmp eax, 3
jae 0x40f81f
lea eax, [ebp - 0x9b4]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
jmp 0x40f81f
push dword [ebp + 0x3c]
mov ecx, edi
push 1
call fcn.00405183
xor ebx, ebx
mov byte [ebp - 4], bl
lea ecx, [ebp + 0x40]
call fcn.004015cc
mov ecx, dword [ebp + 0x64]
cmp byte [ecx], 0
jne 0x40f442
jmp 0x40f844
mov byte [ebp - 4], 0
lea ecx, [ebp + 0x40]
call fcn.004015cc
pop esi
mov ecx, dword [ebp - 0xc]
mov eax, edi
pop edi
pop ebx
mov dword fs:[0], ecx
add ebp, 0x58
leave
ret