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

Disassembly:
push ebp
sub esp, 0x80c
lea ebp, [esp - 4]
mov eax, dword [0x57b830]
xor eax, ebp
mov dword [ebp + 0x80c], eax
push 0x24
mov eax, 0x522c58
call fcn.005094de
mov eax, dword [ebp + 0x81c]
mov edi, dword [ebp + 0x818]
xor ebx, ebx
mov dword [ebp - 0x14], edi
mov dword [ebp - 0x1c], ebx
cmp eax, ebx
je 0x409a7d
lea edx, [ebp + 0x400]
sub edx, eax
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
cmp cl, bl
jne 0x409a71
jmp 0x409a90
push 0x200
lea eax, [ebp + 0x400]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp + 0x400]
push eax
call sub.VERSION.dll_GetFileVersionInfoSizeA
mov esi, eax
cmp esi, ebx
jne 0x409ab9
push 0x532ec8
mov ecx, edi
call fcn.004013e4
mov eax, edi
jmp 0x409c9f
mov eax, 0x4e20
cmp esi, eax
jbe 0x409ac4
mov esi, eax
push esi
call fcn.0040ab3b
push esi
mov edi, eax
push ebx
push edi
mov dword [ebp - 0x20], edi
call fcn.00509740
add esp, 0x10
push edi
push esi
push ebx
lea eax, [ebp + 0x400]
push eax
mov dword [ebp - 4], ebx
call sub.VERSION.dll_GetFileVersionInfoA
test eax, eax
jne 0x409b01
push edi
call fcn.0040ab30
pop ecx
push str._1._2
jmp 0x409c94
mov esi, 0x535aa4
lea edi, [ebp + 0x800]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov esi, 0x1ff
push esi
lea eax, [ebp + 1]
push ebx
push eax
mov byte [ebp], bl
call fcn.00509740
push esi
lea eax, [ebp + 0x201]
push ebx
push eax
mov byte [ebp + 0x200], bl
call fcn.00509740
push esi
lea eax, [ebp + 0x601]
push ebx
push eax
mov byte [ebp + 0x600], bl
call fcn.00509740
mov esi, dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
add esp, 0x24
lea eax, [ebp + 0x800]
push eax
push 0x4b0
call esi
movzx eax, ax
push eax
mov edi, str.StringFileInfo_04X_04X_s
lea eax, [ebp]
push edi
push eax
call fcn.0050b393
add esp, 0x14
lea eax, [ebp + 0x800]
push eax
push 0x4e4
call esi
movzx eax, ax
push eax
lea eax, [ebp + 0x200]
push edi
push eax
call fcn.0050b393
mov esi, dword [ebp - 0x20]
add esp, 0x14
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 0x28]
push eax
push str.VarFileInfoTranslation
push esi
mov dword [ebp - 0x28], ebx
call sub.VERSION.dll_VerQueryValueA
cmp eax, ebx
je 0x409bf9
cmp dword [ebp - 0x1c], 4
jne 0x409bf9
mov eax, dword [ebp - 0x28]
mov eax, dword [eax]
mov edx, eax
lea ecx, [ebp + 0x800]
push ecx
shr edx, 0x10
mov ecx, 0xff
and edx, ecx
push edx
mov edx, eax
shr edx, 0x18
push edx
movzx edx, al
shr eax, 8
push edx
and eax, ecx
push eax
lea eax, [ebp + 0x600]
push str.StringFileInfo_02X_02X_02X_02X_s
push eax
call fcn.0050b393
add esp, 0x1c
lea eax, [ebp - 0x24]
push eax
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp]
push eax
push esi
call sub.VERSION.dll_VerQueryValueA
cmp eax, ebx
jne 0x409c41
lea eax, [ebp - 0x24]
push eax
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp + 0x200]
push eax
push esi
call sub.VERSION.dll_VerQueryValueA
cmp eax, ebx
jne 0x409c41
lea eax, [ebp - 0x24]
push eax
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp + 0x600]
push eax
push esi
call sub.VERSION.dll_VerQueryValueA
cmp eax, ebx
je 0x409c81
cmp dword [ebp - 0x18], ebx
je 0x409c81
push dword [ebp - 0x18]
lea ecx, [ebp - 0x2c]
call fcn.004013e4
push esi
mov byte [ebp - 4], 1
call fcn.0040ab30
pop ecx
mov ecx, dword [ebp - 0x14]
lea eax, [ebp - 0x2c]
push eax
call fcn.0040700c
mov ecx, dword [ebp - 0x2c]
add ecx, 0xfffffff0
call fcn.004010ac
jmp 0x409c9c
or dword [ebp - 4], 0xffffffff
push dword [ebp - 0x20]
call fcn.0040ab30
mov dword [esp], 0x532ec8
mov ecx, dword [ebp - 0x14]
call fcn.004013e4
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x80c]
xor ecx, ebp
call fcn.0050949c
add ebp, 0x810
leave
ret