Function at 0x40ea60
Capabilities:
Get common file path

Disassembly:
sub esp, 0x14
mov ecx, dword [0x42ba98]
mov edx, dword [0x42b5f0]
push ebx
xor ebx, ebx
push esi
push edi
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], ebx
mov al, byte [ecx]
inc ecx
mov byte [edx], al
inc edx
test al, al
jne 0x40ea80
mov edi, dword [esp + 0x24]
mov eax, dword [edi + 0x1a]
test ah, 1
je 0x40eaeb
mov ecx, dword [0x42bab4]
mov edx, dword [0x42b5f0]
mov al, byte [ecx]
inc ecx
mov byte [edx], al
inc edx
test al, al
jne 0x40eaa2
mov eax, dword [0x42b5f0]
push 0x5c
push eax
call fcn.0041a730
mov esi, eax
add esp, 8
test esi, esi
je 0x40eac5
inc esi
jmp 0x40eacb
mov esi, dword [0x42b5f0]
push 0
push edi
call fcn.00404020
add esp, 8
mov edx, esi
mov cl, byte [eax]
inc eax
mov byte [edx], cl
inc edx
test cl, cl
jne 0x40ead8
pop edi
mov eax, ebx
pop esi
pop ebx
add esp, 0x14
ret
push ebp
mov ebx, 1
push 0
push edi
mov dword [esp + 0x18], ebx
call fcn.00404020
mov esi, eax
push 0x5c
push esi
call fcn.0041a730
mov ebp, eax
add esp, 0x10
test ebp, ebp
je 0x40eb13
inc ebp
jmp 0x40eb15
mov ebp, esi
mov eax, dword [edi + 0x22]
cmp eax, 0xa
ja case.0x40eb21.4
jmp dword [eax*4 + 0x40ed28]
mov ecx, dword [0x42b5f0]
push 0x104
push ecx
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
jmp case.0x40eb21.4
mov edx, dword [0x42b5f0]
push edx
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
jmp case.0x40eb21.4
push 9
push edi
call fcn.00404020
mov edx, dword [0x42b5f0]
add esp, 8
mov cl, byte [eax]
inc eax
mov byte [edx], cl
inc edx
test cl, cl
jne 0x40eb67
mov eax, dword [0x42b5f0]
push 0x104
push eax
push eax
call fcn.0040d270
add esp, 0xc
jmp case.0x40eb21.4
mov eax, dword [0x42b5f0]
push 0x14
push eax
call fcn.00401030
add esp, 8
mov dword [esp + 0x14], ebx
jmp case.0x40eb21.4
mov ecx, dword [0x42b5f0]
push 0x10
push ecx
call fcn.00401030
add esp, 8
jmp case.0x40eb21.4
mov edx, dword [0x42b5f0]
push 0x19
push edx
call fcn.00401030
add esp, 8
jmp case.0x40eb21.4
mov eax, dword [0x42b5f0]
push 5
push eax
jmp 0x40ebe2
mov ecx, dword [0x42b5f0]
push 0x1a
push ecx
call fcn.00401030
add esp, 8
mov dword [esp + 0x10], 0
jmp case.0x40eb21.4
push ebx
push 0x30c
call fcn.0041a932
mov esi, eax
add esp, 8
test esi, esi
lea ebx, [esi + 0x208]
jne 0x40ec28
mov edx, dword [0x42b5f0]
push 0x104
push edx
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
jmp 0x40ecab
mov eax, dword [0x42b5f0]
push eax
call fcn.004020f0
add esp, 4
mov edi, 0x104
push edi
push ebx
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
lea ecx, [esp + 0x1c]
lea edx, [esp + 0x20]
push ecx
mov ecx, dword [0x42b5f0]
push esi
lea eax, [esi + 0x104]
push edx
push eax
push ecx
push ebx
push ebp
push 1
mov dword [esp + 0x3c], edi
mov dword [esp + 0x40], edi
call sub.VERSION.dll_VerFindFileA
shr eax, 1
and eax, 1
mov dword [esp + 0x18], eax
jne 0x40ec80
mov dword [esp + 0x14], 1
mov al, byte [esi]
mov edx, dword [0x42b5f0]
test al, al
je 0x40ec9a
mov ecx, esi
mov al, byte [ecx]
inc ecx
mov byte [edx], al
inc edx
test al, al
jne 0x40ec8e
jmp 0x40eca2
push edi
push edx
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
push esi
call fcn.0041a9e3
add esp, 4
mov edi, dword [esp + 0x28]
mov eax, dword [0x42b5f0]
push eax
call fcn.004020b0
mov eax, dword [esp + 0x14]
add esp, 4
test eax, eax
je 0x40ecc9
mov edi, ebp
jmp 0x40ecd6
push 0
push edi
call fcn.00404020
add esp, 8
mov edi, eax
xor eax, eax
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
pop ebp
mov esi, edi
mov edi, dword [0x42b5f0]
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov eax, dword [esp + 0x10]
mov ecx, edx
and ecx, 3
test eax, eax
rep movsb byte es:[edi], byte [esi]
je 0x40ed1d
mov eax, dword [0x42b5f0]
push eax
call fcn.00401370
add esp, 4
pop edi
pop esi
pop ebx
add esp, 0x14
ret
mov eax, dword [esp + 0x14]
pop edi
pop esi
pop ebx
add esp, 0x14
ret