Function at 0x4016d0
Capabilities:
Get file version info

Disassembly:
sub esp, 0xab8
push ebx
mov ebx, ecx
push ebp
push esi
mov eax, dword [ebx + 4]
xor esi, esi
cmp eax, esi
push edi
mov dword [esp + 0x14], ebx
je 0x4016f2
push eax
call fcn.004039d0
add esp, 4
mov ebp, dword [esp + 0xad0]
mov eax, dword [esp + 0xacc]
push ebp
push eax
mov dword [ebx + 4], esi
call fcn.00403120
add esp, 8
cmp eax, esi
mov dword [ebx + 4], eax
je 0x401b5b
cmp dword [eax + 0xc], 0x10006
jne 0x401b5b
lea ecx, [esp + 0x84]
push 0x104
push ecx
push esi
mov dword [esp + 0x2c], 1
mov dword [esp + 0x24], esi
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea edx, [esp + 0x84]
push 0x5c
push edx
call dword [sym.imp.MSVCRT.dll_strrchr]
mov edx, eax
add esp, 8
inc edx
je 0x401781
mov edi, str.ResVirtuoZoNT.dll
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
xor esi, esi
mov ecx, 0x200
xor eax, eax
lea edi, [esp + 0x2c8]
lea edx, [esp + 0x84]
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x2c8]
push ecx
push 0x800
push esi
push edx
call sub.VERSION.dll_GetFileVersionInfoA
test eax, eax
je 0x401882
mov edi, str.StringFileInfo040904B0ProductName
or ecx, 0xffffffff
xor eax, eax
mov dword [esp + 0x1c], esi
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov dword [esp + 0x10], esi
lea edx, [esp + 0x84]
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
lea edx, [esp + 0x30]
and ecx, 3
lea eax, [esp + 0x2c8]
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x10]
push ecx
push edx
push str.VarFileInfoTranslation
push eax
call sub.VERSION.dll_VerQueryValueA
mov eax, dword [esp + 0x10]
test eax, eax
je 0x401830
mov eax, dword [esp + 0x30]
xor ecx, ecx
xor edx, edx
mov cx, word [eax + 2]
mov dx, word [eax]
push ecx
push edx
lea eax, [esp + 0x8c]
push str.StringFileInfo_04x_04xProductName
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
lea ecx, [esp + 0x10]
lea edx, [esp + 0x1c]
push ecx
lea eax, [esp + 0x88]
push edx
lea ecx, [esp + 0x2d0]
push eax
push ecx
mov dword [esp + 0x20], 0
call sub.VERSION.dll_VerQueryValueA
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x401882
mov ecx, dword [esp + 0x10]
test ecx, ecx
jbe 0x401882
push 0x46e8e8
push eax
call dword [sym.imp.MSVCRT.dll_strstr]
add esp, 8
test eax, eax
je 0x401882
mov dword [esp + 0x20], 0
mov edi, ebp
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x84]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x84]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, str..rmd
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebp, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebp
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebp
lea eax, [esp + 0x188]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x88]
push ecx
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
cmp eax, 0xffffffff
je 0x401903
push eax
mov dword [esp + 0x1c], 1
call dword [sym.imp.KERNEL32.dll_FindClose]
mov edx, dword [ebx + 4]
or ecx, 0xffffffff
xor eax, eax
lea ebx, [esp + 0x64]
mov edi, dword [edx + 0x28]
push 0x2d
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, ebx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [sym.imp.MSVCRT.dll_strchr]
lea ecx, [esp + 0x68]
push ecx
call esi
mov edi, eax
push 0x2d
mov byte [edi], 0
inc edi
push edi
call esi
mov ebp, eax
add esp, 0x10
mov dword [esp + 0x10], 1
mov byte [ebp], 0
mov edx, dword [0x46e8dc]
mov eax, dword [0x46e8d8]
mov ecx, dword [0x46e8d4]
mov dword [esp + 0x34], edx
mov edx, dword [0x46e8d0]
mov dword [esp + 0x38], eax
mov eax, dword [0x46e8cc]
mov dword [esp + 0x3c], ecx
mov ecx, dword [0x46e8c8]
mov dword [esp + 0x40], edx
mov edx, dword [0x46e8c4]
mov dword [esp + 0x44], eax
mov eax, dword [0x46e8c0]
mov dword [esp + 0x48], ecx
mov ecx, dword [0x46e8bc]
mov dword [esp + 0x4c], edx
mov edx, dword [0x46e8b8]
mov dword [esp + 0x50], eax
mov eax, dword [0x46e8b4]
mov dword [esp + 0x54], ecx
mov ecx, dword [0x46e8b0]
mov dword [esp + 0x58], edx
inc ebp
mov dword [esp + 0x5c], eax
mov dword [esp + 0x60], ecx
lea edx, [esp + 0x34]
mov esi, edi
mov eax, edx
mov bl, byte [eax]
mov cl, bl
cmp bl, byte [esi]
jne 0x4019f6
test cl, cl
je 0x4019f2
mov bl, byte [eax + 1]
mov cl, bl
cmp bl, byte [esi + 1]
jne 0x4019f6
add eax, 2
add esi, 2
test cl, cl
jne 0x4019d2
xor eax, eax
jmp 0x4019fb
sbb eax, eax
sbb eax, 0xffffffff
mov esi, dword [esp + 0x10]
test eax, eax
je 0x401a10
inc esi
add edx, 4
cmp esi, 0xd
mov dword [esp + 0x10], esi
jl 0x4019ce
lea edx, [esp + 0x28]
push edx
call sub.MFC42.DLL_CTime::GetTickCount
cmp esi, 0xc
mov edi, 1
jg 0x401a26
mov edi, esi
mov esi, dword [sym.imp.MSVCRT.dll_atoi]
push 0xffffffffffffffff
push 0
push 0
lea eax, [esp + 0x70]
push 0
push eax
call esi
add esp, 4
push eax
push edi
push ebp
call esi
add esp, 4
lea ecx, [esp + 0x3c]
push eax
call sub.MFC42.DLL_CTime::CTime
push ecx
mov ecx, dword [esp + 0x28]
mov eax, esp
lea edx, [esp + 0x30]
push edx
mov dword [eax], ecx
lea ecx, [esp + 0x30]
call fcn.00402ab0
mov ecx, dword [esp + 0x2c]
mov eax, 0x91a2b3c5
imul ecx
add edx, ecx
sar edx, 0xb
mov eax, edx
shr eax, 0x1f
add edx, eax
mov esi, edx
cmp esi, 0x2238
jg 0x401a94
mov eax, dword [esp + 0x18]
test eax, eax
je 0x401b47
mov eax, dword [esp + 0x20]
test eax, eax
je 0x401b33
push str.Supresoft_Remind
push 0
call dword [sym.imp.USER32.dll_FindWindowA]
mov edi, dword [esp + 0x14]
push eax
mov dword [edi + 8], eax
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x401adb
mov ecx, dword [edi + 8]
push 5
push ecx
call dword [sym.imp.USER32.dll_ShowWindow]
mov eax, dword [edi + 4]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xab8
ret 8
mov eax, dword [esp + 0x18]
test eax, eax
je 0x401b04
mov edx, 0xf
push edx
call fcn.00401b70
mov dword [edi + 8], eax
mov eax, dword [edi + 4]
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xab8
ret 8
mov eax, 0xef66a241
imul esi
add edx, esi
sar edx, 0xd
mov eax, edx
shr eax, 0x1f
add edx, eax
push edx
call fcn.00401b70
mov dword [edi + 8], eax
mov eax, dword [edi + 4]
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xab8
ret 8
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + 4]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xab8
ret 8
mov edx, dword [esp + 0x14]
mov eax, dword [edx + 4]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xab8
ret 8
mov eax, dword [ebx + 4]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xab8
ret 8