Function at 0x402abc
Capabilities:
Get file version info
Identify system language via api

Disassembly:
mov eax, 0x42e09c
call fcn.004279d0
sub esp, 0x20
push ebx
push esi
push edi
mov edi, ecx
mov dword [ebp - 0x10], esp
mov eax, dword [edi]
call dword [eax + 4]
lea eax, [ebp - 0x20]
push eax
push dword [ebp + 8]
call sub.VERSION.dll_GetFileVersionInfoSizeA
mov esi, eax
test esi, esi
je 0x40302e
push esi
call sub.MFC42.DLL_operatornew
mov ebx, eax
pop ecx
test ebx, ebx
mov dword [ebp - 0x2c], ebx
je 0x40302e
and dword [ebp - 4], 0
push ebx
push esi
push dword [ebp - 0x20]
push dword [ebp + 8]
call sub.VERSION.dll_GetFileVersionInfoA
test eax, eax
jne 0x402b26
and dword [ebp - 0x24], eax
lea eax, [ebp - 0x24]
push 0x438018
push eax
call sub.MSVCRT.dll__CxxThrowException
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp + 8]
push eax
push 0x43e078
push ebx
call sub.VERSION.dll_VerQueryValueA
test eax, eax
je 0x402b54
cmp dword [ebp - 0x14], 0x34
jne 0x402b54
push 0x34
lea eax, [edi + 4]
push dword [ebp + 8]
push eax
call sub.MSVCRT.dll_memcpy
add esp, 0xc
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp + 8]
push eax
push str.VarFileInfoTranslation
push ebx
call sub.VERSION.dll_VerQueryValueA
mov esi, dword [sym.imp.KERNEL32.DLL_GetUserDefaultLangID]
and dword [ebp - 0x1c], 0
lea eax, [ebp - 0x1c]
push 0
push eax
call esi
push eax
mov ecx, edi
push dword [ebp - 0x14]
push dword [ebp + 8]
call fcn.00402a08
test eax, eax
jne 0x402bdf
lea eax, [ebp - 0x1c]
push 1
push eax
call esi
push eax
mov ecx, edi
push dword [ebp - 0x14]
push dword [ebp + 8]
call fcn.00402a08
test eax, eax
jne 0x402bdf
lea eax, [ebp - 0x1c]
push 1
push eax
push 0
push dword [ebp - 0x14]
mov ecx, edi
push dword [ebp + 8]
call fcn.00402a08
test eax, eax
jne 0x402bdf
lea eax, [ebp - 0x1c]
push 1
push eax
push 9
push dword [ebp - 0x14]
mov ecx, edi
push dword [ebp + 8]
call fcn.00402a08
test eax, eax
jne 0x402bdf
mov eax, dword [ebp + 8]
mov eax, dword [eax]
mov dword [ebp - 0x1c], eax
lea ecx, [ebp - 0x18]
call sub.MFC42.DLL_CString::CString_2
mov eax, dword [ebp - 0x1c]
mov byte [ebp - 4], 1
mov ecx, eax
and eax, 0xffff
shr ecx, 0x10
push ecx
push eax
lea eax, [ebp - 0x18]
push str.StringFileInfo_04X_04X_
push eax
call sub.MFC42.DLL_CString::Format
add esp, 0x10
lea eax, [ebp - 0x18]
push str.CompanyName
push eax
lea eax, [ebp - 0x28]
push eax
call sub.MFC42.DLL_operator_1
mov eax, dword [eax]
lea ecx, [ebp - 0x14]
push ecx
lea ecx, [ebp + 8]
push ecx
push eax
push ebx
call sub.VERSION.dll_VerQueryValueA
lea ecx, [ebp - 0x28]
mov esi, eax
call sub.MFC42.DLL_CString::CString
test esi, esi
je 0x402c60
push dword [ebp + 8]
lea ecx, [ebp - 0x28]
call sub.MFC42.DLL_CString::CString_1
push eax
lea ecx, [edi + 0x38]
mov byte [ebp - 4], 2
call sub.MFC42.DLL_CString::operator_1
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 1
call sub.MFC42.DLL_CString::CString
lea eax, [ebp - 0x18]
push 0x43e1dc
push eax
lea eax, [ebp - 0x28]
push eax
call sub.MFC42.DLL_operator_1
mov eax, dword [eax]
lea ecx, [ebp - 0x14]
push ecx
lea ecx, [ebp + 8]
push ecx
push eax
push ebx
call sub.VERSION.dll_VerQueryValueA
lea ecx, [ebp - 0x28]
mov esi, eax
call sub.MFC42.DLL_CString::CString
test esi, esi
je 0x402cb5
push dword [ebp + 8]
lea ecx, [ebp - 0x28]
call sub.MFC42.DLL_CString::CString_1
push eax
lea ecx, [edi + 0x3c]
mov byte [ebp - 4], 3
call sub.MFC42.DLL_CString::operator_1
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 1
call sub.MFC42.DLL_CString::CString
lea eax, [ebp - 0x18]
push 0x43e1d0
push eax
lea eax, [ebp - 0x28]
push eax
call sub.MFC42.DLL_operator_1
mov eax, dword [eax]
lea ecx, [ebp - 0x14]
push ecx
lea ecx, [ebp + 8]
push ecx
push eax
push ebx
call sub.VERSION.dll_VerQueryValueA
lea ecx, [ebp - 0x28]
mov esi, eax
call sub.MFC42.DLL_CString::CString
test esi, esi
je 0x402d0a
push dword [ebp + 8]
lea ecx, [ebp - 0x28]
call sub.MFC42.DLL_CString::CString_1
push eax
lea ecx, [edi + 0x40]
mov byte [ebp - 4], 4
call sub.MFC42.DLL_CString::operator_1
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 1
call sub.MFC42.DLL_CString::CString
lea eax, [ebp - 0x18]
push 0x43e1c0
push eax
lea eax, [ebp - 0x28]
push eax
call sub.MFC42.DLL_operator_1
mov eax, dword [eax]
lea ecx, [ebp - 0x14]
push ecx
lea ecx, [ebp + 8]
push ecx
push eax
push ebx
call sub.VERSION.dll_VerQueryValueA
lea ecx, [ebp - 0x28]
mov esi, eax
call sub.MFC42.DLL_CString::CString
test esi, esi
je 0x402d5f
push dword [ebp + 8]
lea ecx, [ebp - 0x28]
call sub.MFC42.DLL_CString::CString_1
push eax
lea ecx, [edi + 0x44]
mov byte [ebp - 4], 5
call sub.MFC42.DLL_CString::operator_1
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 1
call sub.MFC42.DLL_CString::CString
lea eax, [ebp - 0x18]
push 0x43e1b0
push eax
lea eax, [ebp - 0x28]
push eax
call sub.MFC42.DLL_operator_1
mov eax, dword [eax]
lea ecx, [ebp - 0x14]
push ecx
lea ecx, [ebp + 8]
push ecx
push eax
push ebx
call sub.VERSION.dll_VerQueryValueA
lea ecx, [ebp - 0x28]
mov esi, eax
call sub.MFC42.DLL_CString::CString
test esi, esi
je 0x402db4
push dword [ebp + 8]
lea ecx, [ebp - 0x28]
call sub.MFC42.DLL_CString::CString_1
push eax
lea ecx, [edi + 0x48]
mov byte [ebp - 4], 6
call sub.MFC42.DLL_CString::operator_1
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 1
call sub.MFC42.DLL_CString::CString
lea eax, [ebp - 0x18]
push str.OriginalFileName
push eax
lea eax, [ebp - 0x28]
push eax
call sub.MFC42.DLL_operator_1
mov eax, dword [eax]
lea ecx, [ebp - 0x14]
push ecx
lea ecx, [ebp + 8]
push ecx
push eax
push ebx
call sub.VERSION.dll_VerQueryValueA
lea ecx, [ebp - 0x28]
mov esi, eax
call sub.MFC42.DLL_CString::CString
test esi, esi
je 0x402e09
push dword [ebp + 8]
lea ecx, [ebp - 0x28]
call sub.MFC42.DLL_CString::CString_1
push eax
lea ecx, [edi + 0x4c]
mov byte [ebp - 4], 7
call sub.MFC42.DLL_CString::operator_1
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 1
call sub.MFC42.DLL_CString::CString
lea eax, [ebp - 0x18]
push 0x43e190
push eax
lea eax, [ebp - 0x28]
push eax
call sub.MFC42.DLL_operator_1
mov eax, dword [eax]
lea ecx, [ebp - 0x14]
push ecx
lea ecx, [ebp + 8]
push ecx
push eax
push ebx
call sub.VERSION.dll_VerQueryValueA
lea ecx, [ebp - 0x28]
mov esi, eax
call sub.MFC42.DLL_CString::CString
test esi, esi
je 0x402e5e
push dword [ebp + 8]
lea ecx, [ebp - 0x28]
call sub.MFC42.DLL_CString::CString_1
push eax
lea ecx, [edi + 0x50]
mov byte [ebp - 4], 8
call sub.MFC42.DLL_CString::operator_1
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 1
call sub.MFC42.DLL_CString::CString
lea eax, [ebp - 0x18]
push 0x43e180
push eax
lea eax, [ebp - 0x28]
push eax
call sub.MFC42.DLL_operator_1
mov eax, dword [eax]
lea ecx, [ebp - 0x14]
push ecx
lea ecx, [ebp + 8]
push ecx
push eax
push ebx
call sub.VERSION.dll_VerQueryValueA
lea ecx, [ebp - 0x28]
mov esi, eax
call sub.MFC42.DLL_CString::CString
test esi, esi
je 0x402eb3
push dword [ebp + 8]
lea ecx, [ebp - 0x28]
call sub.MFC42.DLL_CString::CString_1
push eax
lea ecx, [edi + 0x54]
mov byte [ebp - 4], 9
call sub.MFC42.DLL_CString::operator_1
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 1
call sub.MFC42.DLL_CString::CString
lea eax, [ebp - 0x18]
push 0x43e174
push eax
lea eax, [ebp - 0x28]
push eax
call sub.MFC42.DLL_operator_1
mov eax, dword [eax]
lea ecx, [ebp - 0x14]
push ecx
lea ecx, [ebp + 8]
push ecx
push eax
push ebx
call sub.VERSION.dll_VerQueryValueA
lea ecx, [ebp - 0x28]
mov esi, eax
call sub.MFC42.DLL_CString::CString
test esi, esi
je 0x402f08
push dword [ebp + 8]
lea ecx, [ebp - 0x28]
call sub.MFC42.DLL_CString::CString_1
push eax
lea ecx, [edi + 0x58]
mov byte [ebp - 4], 0xa
call sub.MFC42.DLL_CString::operator_1
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 1
call sub.MFC42.DLL_CString::CString
lea eax, [ebp - 0x18]
push str.LegalTrademarks
push eax
lea eax, [ebp - 0x28]
push eax
call sub.MFC42.DLL_operator_1
mov eax, dword [eax]
lea ecx, [ebp - 0x14]
push ecx
lea ecx, [ebp + 8]
push ecx
push eax
push ebx
call sub.VERSION.dll_VerQueryValueA
lea ecx, [ebp - 0x28]
mov esi, eax
call sub.MFC42.DLL_CString::CString
test esi, esi
je 0x402f5d
push dword [ebp + 8]
lea ecx, [ebp - 0x28]
call sub.MFC42.DLL_CString::CString_1
push eax
lea ecx, [edi + 0x5c]
mov byte [ebp - 4], 0xb
call sub.MFC42.DLL_CString::operator_1
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 1
call sub.MFC42.DLL_CString::CString
lea eax, [ebp - 0x18]
push str.PrivateBuild
push eax
lea eax, [ebp - 0x28]
push eax
call sub.MFC42.DLL_operator_1
mov eax, dword [eax]
lea ecx, [ebp - 0x14]
push ecx
lea ecx, [ebp + 8]
push ecx
push eax
push ebx
call sub.VERSION.dll_VerQueryValueA
lea ecx, [ebp - 0x28]
mov esi, eax
call sub.MFC42.DLL_CString::CString
test esi, esi
je 0x402fb2
push dword [ebp + 8]
lea ecx, [ebp - 0x28]
call sub.MFC42.DLL_CString::CString_1
push eax
lea ecx, [edi + 0x60]
mov byte [ebp - 4], 0xc
call sub.MFC42.DLL_CString::operator_1
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 1
call sub.MFC42.DLL_CString::CString
lea eax, [ebp - 0x18]
push str.SpecialBuild
push eax
lea eax, [ebp - 0x28]
push eax
call sub.MFC42.DLL_operator_1
mov eax, dword [eax]
lea ecx, [ebp - 0x14]
push ecx
lea ecx, [ebp + 8]
push ecx
push eax
push ebx
call sub.VERSION.dll_VerQueryValueA
lea ecx, [ebp - 0x28]
mov esi, eax
call sub.MFC42.DLL_CString::CString
test esi, esi
je 0x403007
push dword [ebp + 8]
lea ecx, [ebp - 0x28]
call sub.MFC42.DLL_CString::CString_1
push eax
lea ecx, [edi + 0x64]
mov byte [ebp - 4], 0xd
call sub.MFC42.DLL_CString::operator_1
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 1
call sub.MFC42.DLL_CString::CString
push ebx
call sub.MFC42.DLL_operatordelete
and byte [ebp - 4], 0
pop ecx
lea ecx, [ebp - 0x18]
call sub.MFC42.DLL_CString::CString
push 1
pop eax
jmp 0x403030
xor eax, eax
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
leave
ret 4