Function at 0x403e60
Capabilities:
Check os version
Get common file path

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x98
push ebx
push esi
lea eax, [ebp - 0x98]
push edi
push eax
mov dword [ebp - 0x98], 0x94
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
xor ebx, ebx
xor eax, eax
cmp dword [ebp - 0x88], ebx
push 0x19a28
push 0x40
sete al
mov dword [0x4063d8], eax
mov eax, dword [ebp + 8]
mov dword [0x4063e8], eax
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
cmp eax, ebx
mov dword [0x4063e4], eax
jne 0x403ece
push 0x2010
push str.LZH_SFX_V2.60.w32.0023
push str.Not_enough_memory
push ebx
call dword [sym.imp.USER32.dll_MessageBoxA]
jmp 0x404067
mov dword [eax + 0x2c], ebx
mov eax, dword [0x4063e4]
mov dword [eax + 0x28], ebx
mov eax, dword [0x4063e4]
mov byte [eax + 0x34a5], bl
mov eax, dword [0x4063e4]
mov byte [eax + 0x19988], bl
mov eax, dword [0x4063e4]
mov byte [eax + 0x19938], bl
mov eax, dword [0x4063e4]
mov byte [eax + 0x19440], bl
mov eax, dword [0x4063e4]
mov byte [eax + 0x18238], bl
mov eax, dword [0x4063e4]
mov byte [eax + 0x17e38], bl
lea eax, [ebp - 4]
push eax
push dword [ebp + 0x10]
call fcn.00404153
mov dword [ebp + 0x10], eax
mov dword [0x4063ec], 1
mov dword [0x4063e0], ebx
mov dword [0x406400], ebx
mov dword [0x4063fc], ebx
mov dword [0x4063d4], ebx
xor edi, edi
cmp edi, dword [ebp + 0x10]
jge 0x403fb6
mov eax, dword [ebp - 4]
mov esi, dword [eax + edi*4]
inc edi
cmp byte [esi], 0x2d
jne 0x403f98
movzx eax, byte [esi + 1]
push eax
call dword [sym.imp.USER32.dll_CharLowerA]
cmp al, 0x6e
jne 0x403f81
xor eax, eax
cmp byte [esi + 2], 0x2d
sete al
add eax, 0xb
mov dword [0x4063d4], eax
jmp 0x403f4e
cmp al, 0x63
jne 0x403f4e
xor eax, eax
cmp byte [esi + 2], 0x2d
setne al
add eax, 0xa
mov dword [0x4063ec], eax
jmp 0x403f4e
push 1
pop eax
cmp edi, eax
jle 0x403f4e
mov dword [0x4063fc], eax
mov eax, dword [0x4063e4]
add eax, 0x17e38
push esi
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push dword [ebp + 0x10]
push dword [ebp - 4]
call fcn.00404203
mov eax, dword [0x4063e4]
push 0x104
add eax, 0x13a30
push eax
push dword [ebp + 8]
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
call fcn.004040c6
mov eax, dword [0x4063e4]
mov dword [0x4063dc], ebx
mov dword [0x4063d0], ebx
push 1
test byte [eax + 0x36a8], 2
pop edx
je 0x404002
mov dword [0x4063d0], edx
mov ecx, dword [0x4063d4]
cmp ecx, ebx
jne 0x40401d
test byte [eax + 0x36a8], 1
je 0x40401d
mov ecx, edx
mov dword [0x4063d4], ecx
cmp ecx, 0xb
jne 0x40402a
mov dword [0x4063d4], edx
jmp 0x404035
cmp ecx, 0xc
jne 0x404035
mov dword [0x4063d4], ebx
cmp dword [0x4063ec], 0xb
je 0x404047
test byte [eax + 0x36a8], 8
je 0x40404d
mov dword [0x4063ec], ebx
cmp dword [0x4063ec], 0xa
jne 0x40405c
mov dword [0x4063ec], edx
push edx
push ebx
call fcn.004015a5
test eax, eax
jne 0x40406b
xor eax, eax
jmp 0x4040bf
mov eax, dword [0x4063e4]
push 0x4063cc
add eax, 0x34a5
push eax
call fcn.00401fb9
mov eax, dword [0x4063e4]
add eax, 0x34a5
cmp byte [eax], bl
jne 0x40409a
push eax
push 0x100
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
push ebx
push 0x401133
push ebx
push str.SfxDialog
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_DialogBoxParamA]
push dword [0x4063e4]
mov esi, eax
call dword [sym.imp.KERNEL32.dll_LocalFree]
mov eax, esi
pop edi
pop esi
pop ebx
leave
ret 0x10