Function at 0x40b6f0
Capabilities:
Get file version info
Identify system language via api
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x44312b
mov eax, dword fs:[0]
push eax
sub esp, 0x184
mov eax, dword [0x44f1a0]
xor eax, esp
mov dword [esp + 0x180], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x44f1a0]
xor eax, esp
push eax
lea eax, [esp + 0x198]
mov dword fs:[0], eax
mov eax, dword [esp + 0x1a8]
mov dword [esp + 0x1c], eax
xor ebx, ebx
mov dword [esp + 0x1a0], ebx
call fcn.0040c0d0
lea eax, [esp + 0x1ac]
push eax
call fcn.00405f3f
add esp, 4
test al, al
jne 0x40b779
cmp dword [esp + 0x1c4], 8
jb 0x40b772
mov ecx, dword [esp + 0x1b0]
push ecx
call fcn.0042bbfa
add esp, 4
xor eax, eax
jmp 0x40c072
mov eax, dword [esp + 0x1b0]
mov edi, 8
cmp dword [esp + 0x1c4], edi
mov dword [esp + 0x24], ebx
jae 0x40b799
lea eax, [esp + 0x1b0]
lea edx, [esp + 0x24]
push edx
push eax
call sub.VERSION.dll_GetFileVersionInfoSizeW
mov esi, eax
cmp esi, ebx
jne 0x40b7ca
cmp dword [esp + 0x1c4], edi
jb 0x40b772
mov eax, dword [esp + 0x1b0]
push eax
call fcn.0042bbfa
add esp, 4
xor eax, eax
jmp 0x40c072
push esi
call fcn.0042b93a
mov ebp, eax
add esp, 4
cmp ebp, ebx
jne 0x40b7e5
cmp dword [esp + 0x1c4], edi
jmp 0x40b760
cmp dword [esp + 0x1c4], edi
mov eax, dword [esp + 0x1b0]
jae 0x40b7fc
lea eax, [esp + 0x1b0]
mov edx, dword [esp + 0x24]
push ebp
push esi
push edx
push eax
call sub.VERSION.dll_GetFileVersionInfoW
test eax, eax
jne 0x40b83a
push ebp
call fcn.0042c466
add esp, 4
cmp dword [esp + 0x1c4], edi
jb 0x40b772
mov eax, dword [esp + 0x1b0]
push eax
call fcn.0042bbfa
add esp, 4
xor eax, eax
jmp 0x40c072
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x18]
push edx
push 0x446b6c
push ebp
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], ebx
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x40b879
cmp dword [esp + 0x18], 0x34
jne 0x40b879
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x1c]
push 0x34
push eax
add ecx, 4
push ecx
call fcn.0042cc10
add esp, 0xc
lea edx, [esp + 0x18]
push edx
lea eax, [esp + 0x18]
push eax
push 0x446d28
push ebp
call sub.VERSION.dll_VerQueryValueW
mov esi, dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
mov dword [esp + 0x20], ebx
call esi
mov ecx, dword [esp + 0x18]
movzx edx, ax
mov eax, dword [esp + 0x14]
add ecx, eax
cmp eax, ecx
jae 0x40b8bc
jmp 0x40b8b0
cmp word [eax], dx
je 0x40b908
add eax, 4
cmp eax, ecx
jb 0x40b8b0
push 1
call esi
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
lea edi, [esp + 0x24]
call fcn.0040b690
test eax, eax
jne 0x40b90c
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
push 1
call fcn.0040b690
test eax, eax
jne 0x40b90c
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
push 1
mov eax, 9
call fcn.0040b690
test eax, eax
jne 0x40b90c
mov edx, dword [esp + 0x14]
mov eax, dword [edx]
jmp 0x40b910
mov eax, dword [eax]
jmp 0x40b910
mov eax, dword [esp + 0x20]
mov edi, 7
mov dword [esp + 0x40], edi
mov dword [esp + 0x3c], ebx
mov word [esp + 0x2c], bx
mov ecx, eax
shr ecx, 0x10
push ecx
movzx edx, ax
push edx
push str.StringFileInfo_04X_04X_
lea ecx, [esp + 0x34]
mov byte [esp + 0x1ac], 1
call fcn.00404f8a
add esp, 0xc
push str.CompanyName
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0x180]
push ecx
call fcn.00405b53
add esp, 0xc
mov byte [esp + 0x1a0], 2
mov eax, dword [esp + 0x17c]
mov esi, 8
cmp dword [esp + 0x190], esi
jae 0x40b983
lea eax, [esp + 0x17c]
lea edx, [esp + 0x18]
push edx
lea ecx, [esp + 0x18]
push ecx
push eax
push ebp
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x40b9b0
mov esi, dword [esp + 0x1c]
mov eax, dword [esp + 0x14]
add esi, 0x38
call fcn.00401633
mov esi, 8
lea edi, [esi - 1]
push str.FileDescription
lea edx, [esp + 0x2c]
push edx
lea eax, [esp + 0x148]
push eax
call fcn.00405b53
add esp, 0xc
mov byte [esp + 0x1a0], 3
cmp dword [esp + 0x158], esi
mov eax, dword [esp + 0x144]
jae 0x40b9e9
lea eax, [esp + 0x144]
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x18]
push edx
push eax
push ebp
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x40ba16
mov esi, dword [esp + 0x1c]
mov eax, dword [esp + 0x14]
add esi, 0x54
call fcn.00401633
mov esi, 8
lea edi, [esi - 1]
push str.FileVersion
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0x110]
push ecx
call fcn.00405b53
add esp, 0xc
mov byte [esp + 0x1a0], 4
cmp dword [esp + 0x120], esi
mov eax, dword [esp + 0x10c]
jae 0x40ba4f
lea eax, [esp + 0x10c]
lea edx, [esp + 0x18]
push edx
lea ecx, [esp + 0x18]
push ecx
push eax
push ebp
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x40ba7c
mov esi, dword [esp + 0x1c]
mov eax, dword [esp + 0x14]
add esi, 0x70
call fcn.00401633
mov esi, 8
lea edi, [esi - 1]
push str.InternalName
lea edx, [esp + 0x2c]
push edx
lea eax, [esp + 0xd8]
push eax
call fcn.00405b53
add esp, 0xc
mov byte [esp + 0x1a0], 5
cmp dword [esp + 0xe8], esi
mov eax, dword [esp + 0xd4]
jae 0x40bab5
lea eax, [esp + 0xd4]
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x18]
push edx
push eax
push ebp
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x40bae5
mov esi, dword [esp + 0x1c]
mov eax, dword [esp + 0x14]
add esi, 0x8c
call fcn.00401633
mov esi, 8
lea edi, [esi - 1]
push str.LegalCopyright
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0xa0]
push ecx
call fcn.00405b53
add esp, 0xc
mov byte [esp + 0x1a0], 6
cmp dword [esp + 0xb0], esi
mov eax, dword [esp + 0x9c]
jae 0x40bb1e
lea eax, [esp + 0x9c]
lea edx, [esp + 0x18]
push edx
lea ecx, [esp + 0x18]
push ecx
push eax
push ebp
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x40bb4e
mov esi, dword [esp + 0x1c]
mov eax, dword [esp + 0x14]
add esi, 0xa8
call fcn.00401633
mov esi, 8
lea edi, [esi - 1]
push str.OriginalFileName
lea edx, [esp + 0x2c]
push edx
lea eax, [esp + 0x68]
push eax
call fcn.00405b53
add esp, 0xc
mov byte [esp + 0x1a0], 7
cmp dword [esp + 0x78], esi
mov eax, dword [esp + 0x64]
jae 0x40bb7b
lea eax, [esp + 0x64]
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x18]
push edx
push eax
push ebp
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x40bbab
mov esi, dword [esp + 0x1c]
mov eax, dword [esp + 0x14]
add esi, 0xc4
call fcn.00401633
mov esi, 8
lea edi, [esi - 1]
push str.ProductName
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0xf4]
push ecx
call fcn.00405b53
add esp, 0xc
mov byte [esp + 0x1a0], 8
cmp dword [esp + 0x104], esi
mov eax, dword [esp + 0xf0]
jae 0x40bbe4
lea eax, [esp + 0xf0]
lea edx, [esp + 0x18]
push edx
lea ecx, [esp + 0x18]
push ecx
push eax
push ebp
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x40bc14
mov esi, dword [esp + 0x1c]
mov eax, dword [esp + 0x14]
add esi, 0xe0
call fcn.00401633
mov esi, 8
lea edi, [esi - 1]
push str.ProductVersion
lea edx, [esp + 0x2c]
push edx
lea eax, [esp + 0x12c]
push eax
call fcn.00405b53
add esp, 0xc
mov byte [esp + 0x1a0], 9
cmp dword [esp + 0x13c], esi
mov eax, dword [esp + 0x128]
jae 0x40bc4d
lea eax, [esp + 0x128]
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x18]
push edx
push eax
push ebp
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x40bc7d
mov esi, dword [esp + 0x1c]
mov eax, dword [esp + 0x14]
add esi, 0xfc
call fcn.00401633
mov esi, 8
lea edi, [esi - 1]
push str.Comments
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0xbc]
push ecx
call fcn.00405b53
add esp, 0xc
mov byte [esp + 0x1a0], 0xa
cmp dword [esp + 0xcc], esi
mov eax, dword [esp + 0xb8]
jae 0x40bcb6
lea eax, [esp + 0xb8]
lea edx, [esp + 0x18]
push edx
lea ecx, [esp + 0x18]
push ecx
push eax
push ebp
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x40bce6
mov esi, dword [esp + 0x1c]
mov eax, dword [esp + 0x14]
add esi, 0x118
call fcn.00401633
mov esi, 8
lea edi, [esi - 1]
push str.LegalTrademarks
lea edx, [esp + 0x2c]
push edx
lea eax, [esp + 0x4c]
push eax
call fcn.00405b53
add esp, 0xc
mov byte [esp + 0x1a0], 0xb
cmp dword [esp + 0x5c], esi
mov eax, dword [esp + 0x48]
jae 0x40bd13
lea eax, [esp + 0x48]
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x18]
push edx
push eax
push ebp
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x40bd43
mov esi, dword [esp + 0x1c]
mov eax, dword [esp + 0x14]
add esi, 0x134
call fcn.00401633
mov esi, 8
lea edi, [esi - 1]
push str.PrivateBuild
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0x84]
push ecx
call fcn.00405b53
add esp, 0xc
mov byte [esp + 0x1a0], 0xc
cmp dword [esp + 0x94], esi
mov eax, dword [esp + 0x80]
jae 0x40bd7c
lea eax, [esp + 0x80]
lea edx, [esp + 0x18]
push edx
lea ecx, [esp + 0x18]
push ecx
push eax
push ebp
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x40bdac
mov esi, dword [esp + 0x1c]
mov eax, dword [esp + 0x14]
add esi, 0x150
call fcn.00401633
mov esi, 8
lea edi, [esi - 1]
push str.SpecialBuild
lea edx, [esp + 0x2c]
push edx
lea eax, [esp + 0x164]
push eax
call fcn.00405b53
add esp, 0xc
mov byte [esp + 0x1a0], 0xd
cmp dword [esp + 0x174], esi
mov eax, dword [esp + 0x160]
jae 0x40bde5
lea eax, [esp + 0x160]
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x18]
push edx
push eax
push ebp
call sub.VERSION.dll_VerQueryValueW
test eax, eax
je 0x40be15
mov esi, dword [esp + 0x1c]
mov eax, dword [esp + 0x14]
add esi, 0x16c
call fcn.00401633
mov esi, 8
lea edi, [esi - 1]
push ebp
call fcn.0042c466
add esp, 4
cmp dword [esp + 0x174], esi
jb 0x40be37
mov eax, dword [esp + 0x160]
push eax
call fcn.0042bbfa
add esp, 4
cmp dword [esp + 0x94], esi
mov dword [esp + 0x174], edi
mov dword [esp + 0x170], ebx
mov word [esp + 0x160], bx
jb 0x40be66
mov ecx, dword [esp + 0x80]
push ecx
call fcn.0042bbfa
add esp, 4
cmp dword [esp + 0x5c], esi
mov dword [esp + 0x94], edi
mov dword [esp + 0x90], ebx
mov word [esp + 0x80], bx
jb 0x40be8f
mov edx, dword [esp + 0x48]
push edx
call fcn.0042bbfa
add esp, 4
cmp dword [esp + 0xcc], esi
mov dword [esp + 0x5c], edi
mov dword [esp + 0x58], ebx
mov word [esp + 0x48], bx
jb 0x40beb5
mov eax, dword [esp + 0xb8]
push eax
call fcn.0042bbfa
add esp, 4
cmp dword [esp + 0x13c], esi
mov dword [esp + 0xcc], edi
mov dword [esp + 0xc8], ebx
mov word [esp + 0xb8], bx
jb 0x40bee4
mov ecx, dword [esp + 0x128]
push ecx
call fcn.0042bbfa
add esp, 4
cmp dword [esp + 0x104], esi
mov dword [esp + 0x13c], edi
mov dword [esp + 0x138], ebx
mov word [esp + 0x128], bx
jb 0x40bf13
mov edx, dword [esp + 0xf0]
push edx
call fcn.0042bbfa
add esp, 4
cmp dword [esp + 0x78], esi
mov dword [esp + 0x104], edi
mov dword [esp + 0x100], ebx
mov word [esp + 0xf0], bx
jb 0x40bf3c
mov eax, dword [esp + 0x64]
push eax
call fcn.0042bbfa
add esp, 4
cmp dword [esp + 0xb0], esi
mov dword [esp + 0x78], edi
mov dword [esp + 0x74], ebx
mov word [esp + 0x64], bx
jb 0x40bf62
mov ecx, dword [esp + 0x9c]
push ecx
call fcn.0042bbfa
add esp, 4
cmp dword [esp + 0xe8], esi
mov dword [esp + 0xb0], edi
mov dword [esp + 0xac], ebx
mov word [esp + 0x9c], bx
jb 0x40bf91
mov edx, dword [esp + 0xd4]
push edx
call fcn.0042bbfa
add esp, 4
cmp dword [esp + 0x120], esi
mov dword [esp + 0xe8], edi
mov dword [esp + 0xe4], ebx
mov word [esp + 0xd4], bx
jb 0x40bfc0
mov eax, dword [esp + 0x10c]
push eax
call fcn.0042bbfa
add esp, 4
cmp dword [esp + 0x158], esi
mov dword [esp + 0x120], edi
mov dword [esp + 0x11c], ebx
mov word [esp + 0x10c], bx
jb 0x40bfef
mov ecx, dword [esp + 0x144]
push ecx
call fcn.0042bbfa
add esp, 4
cmp dword [esp + 0x190], esi
mov dword [esp + 0x158], edi
mov dword [esp + 0x154], ebx
mov word [esp + 0x144], bx
jb 0x40c01e
mov edx, dword [esp + 0x17c]
push edx
call fcn.0042bbfa
add esp, 4
cmp dword [esp + 0x40], esi
mov dword [esp + 0x190], edi
mov dword [esp + 0x18c], ebx
mov word [esp + 0x17c], bx
jb 0x40c047
mov eax, dword [esp + 0x2c]
push eax
call fcn.0042bbfa
add esp, 4
cmp dword [esp + 0x1c4], esi
mov dword [esp + 0x40], edi
mov dword [esp + 0x3c], ebx
mov word [esp + 0x2c], bx
jb 0x40c06d
mov ecx, dword [esp + 0x1b0]
push ecx
call fcn.0042bbfa
add esp, 4
mov eax, 1
mov ecx, dword [esp + 0x198]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x180]
xor ecx, esp
call fcn.0042b9ba
add esp, 0x190
ret 0x20