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

Disassembly:
push 0xffffffffffffffff
push 0x4480bb
mov eax, dword fs:[0]
push eax
sub esp, 0x188
mov eax, dword [0x4551a0]
xor eax, esp
mov dword [esp + 0x184], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x4551a0]
xor eax, esp
push eax
lea eax, [esp + 0x19c]
mov dword fs:[0], eax
mov esi, ecx
mov dword [esp + 0x20], esi
xor ebx, ebx
mov dword [esp + 0x1a4], ebx
call fcn.0040f6b0
lea eax, [esp + 0x1ac]
push eax
call fcn.00406ea0
add esp, 4
test al, al
jne 0x40ed74
cmp dword [esp + 0x1c4], 8
jb 0x40ed6d
mov ecx, dword [esp + 0x1b0]
push ecx
call fcn.0043004e
add esp, 4
xor eax, eax
jmp 0x40f648
mov eax, dword [esp + 0x1b0]
mov edi, 8
cmp dword [esp + 0x1c4], edi
mov dword [esp + 0x28], ebx
jae 0x40ed94
lea eax, [esp + 0x1b0]
lea edx, [esp + 0x28]
push edx
push eax
call sub.VERSION.dll_GetFileVersionInfoSizeW
mov esi, eax
cmp esi, ebx
jne 0x40edc5
cmp dword [esp + 0x1c4], edi
jb 0x40ed6d
mov eax, dword [esp + 0x1b0]
push eax
call fcn.0043004e
add esp, 4
xor eax, eax
jmp 0x40f648
push esi
call fcn.0042fd8e
mov ebp, eax
add esp, 4
cmp ebp, ebx
jne 0x40ede0
cmp dword [esp + 0x1c4], edi
jmp 0x40ed5b
cmp dword [esp + 0x1c4], edi
mov eax, dword [esp + 0x1b0]
jae 0x40edf7
lea eax, [esp + 0x1b0]
mov edx, dword [esp + 0x28]
push ebp
push esi
push edx
push eax
call sub.VERSION.dll_GetFileVersionInfoW
test eax, eax
jne 0x40ee35
push ebp
call fcn.00430975
add esp, 4
cmp dword [esp + 0x1c4], edi
jb 0x40ed6d
mov eax, dword [esp + 0x1b0]
push eax
call fcn.0043004e
add esp, 4
xor eax, eax
jmp 0x40f648
lea ecx, [esp + 0x1c]
push ecx
lea edx, [esp + 0x1c]
push edx
push 0x44bba4
push ebp
mov dword [esp + 0x28], ebx
mov dword [esp + 0x2c], ebx
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x40ee74
cmp dword [esp + 0x1c], 0x34
jne 0x40ee74
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x20]
push 0x34
push eax
add ecx, 4
push ecx
call fcn.00432450
add esp, 0xc
lea edx, [esp + 0x1c]
push edx
lea eax, [esp + 0x1c]
push eax
push 0x44bda8
push ebp
call sub.VERSION.dll_VerQueryValueW
mov esi, dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
mov dword [esp + 0x24], ebx
call esi
mov ecx, dword [esp + 0x1c]
movzx edx, ax
mov eax, dword [esp + 0x18]
add ecx, eax
cmp eax, ecx
jae 0x40eeb2
cmp word [eax], dx
je 0x40eefe
add eax, 4
cmp eax, ecx
jb 0x40eea6
push 1
call esi
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x1c]
lea edi, [esp + 0x28]
call fcn.0040ec90
test eax, eax
jne 0x40ef02
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
push 1
call fcn.0040ec90
test eax, eax
jne 0x40ef02
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
push 1
mov eax, 9
call fcn.0040ec90
test eax, eax
jne 0x40ef02
mov edx, dword [esp + 0x18]
mov eax, dword [edx]
jmp 0x40ef06
mov eax, dword [eax]
jmp 0x40ef06
mov eax, dword [esp + 0x24]
mov dword [esp + 0x44], 7
mov dword [esp + 0x40], ebx
mov word [esp + 0x30], bx
mov ecx, eax
shr ecx, 0x10
push ecx
movzx edx, ax
push edx
push str.StringFileInfo_04X_04X_
lea ecx, [esp + 0x38]
mov byte [esp + 0x1b0], 1
call fcn.00405590
add esp, 0xc
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0x180]
push ecx
mov edi, str.CompanyName
call fcn.00406740
add esp, 8
mov byte [esp + 0x1a4], 2
mov eax, dword [esp + 0x180]
mov esi, 8
cmp dword [esp + 0x194], esi
jae 0x40ef78
lea eax, [esp + 0x180]
lea edx, [esp + 0x1c]
push edx
lea ecx, [esp + 0x1c]
push ecx
push eax
push ebp
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x40efa2
mov esi, dword [esp + 0x20]
mov eax, dword [esp + 0x18]
add esi, 0x38
call fcn.00401625
mov esi, 8
lea edx, [esp + 0x2c]
push edx
lea eax, [esp + 0x148]
push eax
mov edi, str.FileDescription
call fcn.00406740
add esp, 8
mov byte [esp + 0x1a4], 3
cmp dword [esp + 0x15c], esi
mov eax, dword [esp + 0x148]
jae 0x40efdb
lea eax, [esp + 0x148]
lea ecx, [esp + 0x1c]
push ecx
lea edx, [esp + 0x1c]
push edx
push eax
push ebp
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x40f005
mov esi, dword [esp + 0x20]
mov eax, dword [esp + 0x18]
add esi, 0x54
call fcn.00401625
mov esi, 8
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0x110]
push ecx
mov edi, str.FileVersion
call fcn.00406740
add esp, 8
mov byte [esp + 0x1a4], 4
cmp dword [esp + 0x124], esi
mov eax, dword [esp + 0x110]
jae 0x40f03e
lea eax, [esp + 0x110]
lea edx, [esp + 0x1c]
push edx
lea ecx, [esp + 0x1c]
push ecx
push eax
push ebp
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x40f068
mov esi, dword [esp + 0x20]
mov eax, dword [esp + 0x18]
add esi, 0x70
call fcn.00401625
mov esi, 8
lea edx, [esp + 0x2c]
push edx
lea eax, [esp + 0xd8]
push eax
mov edi, str.InternalName
call fcn.00406740
add esp, 8
mov byte [esp + 0x1a4], 5
cmp dword [esp + 0xec], esi
mov eax, dword [esp + 0xd8]
jae 0x40f0a1
lea eax, [esp + 0xd8]
lea ecx, [esp + 0x1c]
push ecx
lea edx, [esp + 0x1c]
push edx
push eax
push ebp
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x40f0ce
mov esi, dword [esp + 0x20]
mov eax, dword [esp + 0x18]
add esi, 0x8c
call fcn.00401625
mov esi, 8
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0xa0]
push ecx
mov edi, str.LegalCopyright
call fcn.00406740
add esp, 8
mov byte [esp + 0x1a4], 6
cmp dword [esp + 0xb4], esi
mov eax, dword [esp + 0xa0]
jae 0x40f107
lea eax, [esp + 0xa0]
lea edx, [esp + 0x1c]
push edx
lea ecx, [esp + 0x1c]
push ecx
push eax
push ebp
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x40f134
mov esi, dword [esp + 0x20]
mov eax, dword [esp + 0x18]
add esi, 0xa8
call fcn.00401625
mov esi, 8
lea edx, [esp + 0x2c]
push edx
lea eax, [esp + 0x68]
push eax
mov edi, str.OriginalFileName
call fcn.00406740
add esp, 8
mov byte [esp + 0x1a4], 7
cmp dword [esp + 0x7c], esi
mov eax, dword [esp + 0x68]
jae 0x40f161
lea eax, [esp + 0x68]
lea ecx, [esp + 0x1c]
push ecx
lea edx, [esp + 0x1c]
push edx
push eax
push ebp
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x40f18e
mov esi, dword [esp + 0x20]
mov eax, dword [esp + 0x18]
add esi, 0xc4
call fcn.00401625
mov esi, 8
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0xf4]
push ecx
mov edi, str.ProductName
call fcn.00406740
add esp, 8
mov byte [esp + 0x1a4], 8
cmp dword [esp + 0x108], esi
mov eax, dword [esp + 0xf4]
jae 0x40f1c7
lea eax, [esp + 0xf4]
lea edx, [esp + 0x1c]
push edx
lea ecx, [esp + 0x1c]
push ecx
push eax
push ebp
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x40f1f4
mov esi, dword [esp + 0x20]
mov eax, dword [esp + 0x18]
add esi, 0xe0
call fcn.00401625
mov esi, 8
lea edx, [esp + 0x2c]
push edx
lea eax, [esp + 0x12c]
push eax
mov edi, str.ProductVersion
call fcn.00406740
add esp, 8
mov byte [esp + 0x1a4], 9
cmp dword [esp + 0x140], esi
mov eax, dword [esp + 0x12c]
jae 0x40f22d
lea eax, [esp + 0x12c]
lea ecx, [esp + 0x1c]
push ecx
lea edx, [esp + 0x1c]
push edx
push eax
push ebp
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x40f25a
mov esi, dword [esp + 0x20]
mov eax, dword [esp + 0x18]
add esi, 0xfc
call fcn.00401625
mov esi, 8
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0xbc]
push ecx
mov edi, str.Comments
call fcn.00406740
add esp, 8
mov byte [esp + 0x1a4], 0xa
cmp dword [esp + 0xd0], esi
mov eax, dword [esp + 0xbc]
jae 0x40f293
lea eax, [esp + 0xbc]
lea edx, [esp + 0x1c]
push edx
lea ecx, [esp + 0x1c]
push ecx
push eax
push ebp
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x40f2c0
mov esi, dword [esp + 0x20]
mov eax, dword [esp + 0x18]
add esi, 0x118
call fcn.00401625
mov esi, 8
lea edx, [esp + 0x2c]
push edx
lea eax, [esp + 0x4c]
push eax
mov edi, str.LegalTrademarks
call fcn.00406740
add esp, 8
mov byte [esp + 0x1a4], 0xb
cmp dword [esp + 0x60], esi
mov eax, dword [esp + 0x4c]
jae 0x40f2ed
lea eax, [esp + 0x4c]
lea ecx, [esp + 0x1c]
push ecx
lea edx, [esp + 0x1c]
push edx
push eax
push ebp
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x40f31a
mov esi, dword [esp + 0x20]
mov eax, dword [esp + 0x18]
add esi, 0x134
call fcn.00401625
mov esi, 8
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0x84]
push ecx
mov edi, str.PrivateBuild
call fcn.00406740
add esp, 8
mov byte [esp + 0x1a4], 0xc
cmp dword [esp + 0x98], esi
mov eax, dword [esp + 0x84]
jae 0x40f353
lea eax, [esp + 0x84]
lea edx, [esp + 0x1c]
push edx
lea ecx, [esp + 0x1c]
push ecx
push eax
push ebp
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x40f380
mov esi, dword [esp + 0x20]
mov eax, dword [esp + 0x18]
add esi, 0x150
call fcn.00401625
mov esi, 8
lea edx, [esp + 0x2c]
push edx
lea eax, [esp + 0x164]
push eax
mov edi, str.SpecialBuild
call fcn.00406740
add esp, 8
mov byte [esp + 0x1a4], 0xd
cmp dword [esp + 0x178], esi
mov eax, dword [esp + 0x164]
jae 0x40f3b9
lea eax, [esp + 0x164]
lea ecx, [esp + 0x1c]
push ecx
lea edx, [esp + 0x1c]
push edx
push eax
push ebp
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x40f3e6
mov esi, dword [esp + 0x20]
mov eax, dword [esp + 0x18]
add esi, 0x16c
call fcn.00401625
mov esi, 8
push ebp
call fcn.00430975
add esp, 4
cmp dword [esp + 0x178], esi
jb 0x40f408
mov eax, dword [esp + 0x164]
push eax
call fcn.0043004e
add esp, 4
cmp dword [esp + 0x98], esi
mov edi, 7
mov dword [esp + 0x178], edi
mov dword [esp + 0x174], ebx
mov word [esp + 0x164], bx
jb 0x40f43c
mov ecx, dword [esp + 0x84]
push ecx
call fcn.0043004e
add esp, 4
cmp dword [esp + 0x60], esi
mov dword [esp + 0x98], edi
mov dword [esp + 0x94], ebx
mov word [esp + 0x84], bx
jb 0x40f465
mov edx, dword [esp + 0x4c]
push edx
call fcn.0043004e
add esp, 4
cmp dword [esp + 0xd0], esi
mov dword [esp + 0x60], edi
mov dword [esp + 0x5c], ebx
mov word [esp + 0x4c], bx
jb 0x40f48b
mov eax, dword [esp + 0xbc]
push eax
call fcn.0043004e
add esp, 4
cmp dword [esp + 0x140], esi
mov dword [esp + 0xd0], edi
mov dword [esp + 0xcc], ebx
mov word [esp + 0xbc], bx
jb 0x40f4ba
mov ecx, dword [esp + 0x12c]
push ecx
call fcn.0043004e
add esp, 4
cmp dword [esp + 0x108], esi
mov dword [esp + 0x140], edi
mov dword [esp + 0x13c], ebx
mov word [esp + 0x12c], bx
jb 0x40f4e9
mov edx, dword [esp + 0xf4]
push edx
call fcn.0043004e
add esp, 4
cmp dword [esp + 0x7c], esi
mov dword [esp + 0x108], edi
mov dword [esp + 0x104], ebx
mov word [esp + 0xf4], bx
jb 0x40f512
mov eax, dword [esp + 0x68]
push eax
call fcn.0043004e
add esp, 4
cmp dword [esp + 0xb4], esi
mov dword [esp + 0x7c], edi
mov dword [esp + 0x78], ebx
mov word [esp + 0x68], bx
jb 0x40f538
mov ecx, dword [esp + 0xa0]
push ecx
call fcn.0043004e
add esp, 4
cmp dword [esp + 0xec], esi
mov dword [esp + 0xb4], edi
mov dword [esp + 0xb0], ebx
mov word [esp + 0xa0], bx
jb 0x40f567
mov edx, dword [esp + 0xd8]
push edx
call fcn.0043004e
add esp, 4
cmp dword [esp + 0x124], esi
mov dword [esp + 0xec], edi
mov dword [esp + 0xe8], ebx
mov word [esp + 0xd8], bx
jb 0x40f596
mov eax, dword [esp + 0x110]
push eax
call fcn.0043004e
add esp, 4
cmp dword [esp + 0x15c], esi
mov dword [esp + 0x124], edi
mov dword [esp + 0x120], ebx
mov word [esp + 0x110], bx
jb 0x40f5c5
mov ecx, dword [esp + 0x148]
push ecx
call fcn.0043004e
add esp, 4
cmp dword [esp + 0x194], esi
mov dword [esp + 0x15c], edi
mov dword [esp + 0x158], ebx
mov word [esp + 0x148], bx
jb 0x40f5f4
mov edx, dword [esp + 0x180]
push edx
call fcn.0043004e
add esp, 4
cmp dword [esp + 0x44], esi
mov dword [esp + 0x194], edi
mov dword [esp + 0x190], ebx
mov word [esp + 0x180], bx
jb 0x40f61d
mov eax, dword [esp + 0x30]
push eax
call fcn.0043004e
add esp, 4
cmp dword [esp + 0x1c4], esi
mov dword [esp + 0x44], edi
mov dword [esp + 0x40], ebx
mov word [esp + 0x30], bx
jb 0x40f643
mov ecx, dword [esp + 0x1b0]
push ecx
call fcn.0043004e
add esp, 4
mov eax, 1
mov ecx, dword [esp + 0x19c]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x184]
xor ecx, esp
call fcn.0042fe0e
add esp, 0x194
ret 0x1c