Function at 0x403e66
Capabilities:
Check os version
Identify system language via api

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1bc
push ebx
push esi
mov esi, ecx
push edi
push dword [ebp + 8]
neg ecx
lea ebx, [esi + 8]
sbb ecx, ecx
and ecx, ebx
call fcn.00404449
mov ecx, dword [ebp + 8]
lea eax, [ebp - 0x20]
push eax
call fcn.004069bf
add eax, 0x10
xor edi, edi
mov eax, dword [eax]
cmp eax, edi
jne 0x403ea1
mov dword [ebp - 4], edi
jmp 0x403eab
push eax
call dword [sym.imp.OLEAUT32.dll_VariantInit]
mov dword [ebp - 4], eax
lea ecx, [ebp - 0x20]
call fcn.00401925
cmp dword [ebp - 4], 4
jne 0x404030
mov ecx, dword [ebp + 8]
push edi
push str.file:__
push 7
push edi
mov byte [esi + 0x45], 1
call fcn.00401fa3
test eax, eax
jne 0x403fd6
push 5
push edi
mov ecx, ebx
call fcn.00404ed2
push 1
push 0x41e1d4
lea ecx, [ebp - 0x20]
call fcn.00401bc1
lea eax, [ebp - 0x20]
mov ecx, ebx
push eax
call fcn.00404e60
lea ecx, [ebp - 0x20]
call fcn.00401925
push 1
push 0x41e1d0
lea ecx, [ebp - 0x20]
call fcn.00401bc1
lea eax, [ebp - 0x20]
mov ecx, ebx
push eax
call fcn.00404e60
lea ecx, [ebp - 0x20]
call fcn.00401925
mov eax, dword [esi + 0x18]
cmp word [eax + 2], 0x7c
jne 0x403f38
mov word [eax + 2], 0x3a
mov eax, dword [esi + 0x18]
cmp word [eax + 2], 0x3a
je 0x403f64
push ebx
lea eax, [ebp - 0x20]
push 0x41e1c8
push eax
call fcn.00406e7c
add esp, 0xc
mov ecx, ebx
push eax
call fcn.00405900
lea ecx, [ebp - 0x20]
call fcn.00401925
mov edi, 0x41e1c0
cmp word [0x41e1c0], 0
mov eax, 0x41e1c2
je 0x403f82
mov cx, word [eax]
inc eax
inc eax
test cx, cx
jne 0x403f78
sub eax, edi
push 0
sar eax, 1
dec eax
mov ecx, ebx
push eax
push edi
call fcn.00401c7f
cmp dword [0x41b46c], eax
je 0x403fab
push 0x41e1bc
push 3
push eax
mov ecx, ebx
call fcn.00404f8e
jmp 0x403f69
xor edi, edi
mov eax, dword [esi + 0x18]
test eax, eax
je 0x403fd4
push eax
call dword [sym.imp.OLEAUT32.dll_VariantInit]
cmp edi, eax
jae 0x403fd4
mov eax, dword [esi + 0x18]
cmp word [eax + edi*2], 0x2f
lea eax, [eax + edi*2]
jne 0x403fd1
mov word [eax], 0x5c
inc edi
jmp 0x403fad
xor edi, edi
lea ecx, [ebp - 0x1bc]
mov byte [esi + 0xc0], 1
call fcn.0040429e
push edi
sub esp, 0x1c
mov ecx, esp
push 1
push ebx
call fcn.00406822
lea ecx, [ebp - 0x1bc]
call fcn.004042f3
test al, al
je 0x40401b
lea ecx, [ebp - 0x1bc]
call fcn.004043df
cmp eax, 0xffffffff
mov dword [esi + 0xc4], eax
jne 0x404020
mov edi, 0x8004d554
lea ecx, [ebp - 0x1bc]
call fcn.00404415
jmp 0x4040b0
push 0x2e8
call fcn.00411cd0
cmp eax, edi
pop ecx
je 0x404048
mov ecx, eax
call fcn.00404218
jmp 0x40404a
xor eax, eax
push edi
push str.data1.hdr
lea ecx, [ebp - 0x20]
mov dword [esi + 0x48], eax
mov dword [ebp - 0x14], 0x41b414
mov dword [ebp - 0xc], 0x41b40c
call fcn.00401833
lea eax, [ebp - 0x20]
mov dword [ebp - 0x20], 0x41b408
push eax
lea eax, [ebp - 0x48]
push ebx
push eax
call fcn.00406d72
mov ecx, dword [esi + 0x48]
add esp, 0xc
push eax
call fcn.0040bdeb
lea ecx, [ebp - 0x48]
mov edi, eax
call fcn.00401925
lea ecx, [ebp - 0x20]
call fcn.00401925
xor ebx, ebx
cmp edi, ebx
je 0x4040b7
jle 0x4040b0
and edi, 0xffff
or edi, 0x80070000
mov eax, edi
jmp 0x404211
push 0x10
pop edi
push edi
call fcn.00411cd0
cmp eax, ebx
pop ecx
je 0x4040ce
mov ecx, eax
call fcn.00411ce6
jmp 0x4040d0
xor eax, eax
push edi
mov dword [esi + 0x4c], eax
call fcn.00411cd0
cmp eax, ebx
pop ecx
je 0x4040e7
mov ecx, eax
call fcn.00411ce6
jmp 0x4040e9
xor eax, eax
mov dword [esi + 0x50], eax
lea eax, [ebp - 0xdc]
push eax
mov dword [ebp - 0xdc], 0x94
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
cmp dword [ebp - 0xcc], 1
jne 0x40413c
cmp dword [ebp - 0xd4], ebx
je 0x404136
cmp dword [ebp - 0xd4], 0xa
je 0x40412d
cmp dword [ebp - 0xd4], 0x5a
mov dword [esi + 0x78], 0x80
jmp 0x404161
mov dword [esi + 0x78], 0x40
jmp 0x404161
mov dword [esi + 0x78], edi
mov dword [esi + 0x7c], ebx
cmp dword [ebp - 0xcc], 2
jne 0x404164
mov eax, dword [ebp - 0xd8]
sub eax, 4
je 0x40415a
dec eax
mov dword [esi + 0x78], 0x100000
jmp 0x404161
mov dword [esi + 0x78], 0x10000
mov dword [esi + 0x7c], ebx
lea edi, [esi + 0x54]
mov ecx, edi
call fcn.004024bf
push dword [edi + 4]
call fcn.00415c30
pop ecx
mov edi, eax
mov ecx, dword [esi + 0x48]
push edi
call fcn.0040ca84
test al, al
jne 0x4041e3
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
mov ecx, dword [esi + 0x48]
movzx edi, ax
push edi
call fcn.0040ca84
test al, al
jne 0x4041e3
mov ecx, dword [esi + 0x48]
mov ebx, 0x3ff
and edi, ebx
or edi, 0x400
push edi
call fcn.0040ca84
test al, al
jne 0x4041e3
mov ecx, dword [esi + 0x48]
and edi, ebx
push edi
call fcn.0040ca84
test al, al
jne 0x4041e3
mov ecx, dword [esi + 0x48]
push 9
pop edi
push edi
call fcn.0040ca84
test al, al
jne 0x4041e3
mov eax, dword [esi + 0x48]
mov eax, dword [eax + 0x1f0]
mov eax, dword [eax + 0x32]
mov edi, dword [eax]
push edi
lea eax, [ebp - 0x2c]
push str._04x
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
lea eax, [ebp - 0x2c]
lea ecx, [esi + 0x54]
push eax
call fcn.0040542d
mov ecx, esi
call fcn.00404537
call dword [sym.imp.ole32.dll_CoFreeUnusedLibraries]
xor eax, eax
pop edi
pop esi
pop ebx
leave
ret 4