Function at 0x404786
Capabilities:
Identify system language via api

Disassembly:
push 0x108
mov eax, 0x42fc33
call fcn.004199aa
mov esi, ecx
push str.Product
lea ecx, [ebp - 0x1c]
call fcn.00401ab9
and dword [ebp - 4], 0
push 0x433cac
lea ecx, [ebp - 0x10]
call fcn.00401ab9
mov ebx, 0x442400
push ebx
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 0x18]
mov edi, 0x442358
push eax
mov ecx, edi
mov byte [ebp - 4], 1
call fcn.00405d05
lea ecx, [esi + 4]
push eax
mov byte [ebp - 4], 2
call fcn.00401499
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
call fcn.0040103e
mov ecx, dword [ebp - 0x10]
add ecx, 0xfffffff0
mov byte [ebp - 4], 0
call fcn.0040103e
mov eax, dword [ebp + 8]
mov ecx, dword [eax]
cmp dword [ecx - 0xc], 0
jne 0x404857
push str.CmdLine
lea ecx, [ebp + 8]
call fcn.00401ab9
push ebx
lea eax, [ebp + 8]
push eax
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 0x18]
push eax
mov ecx, edi
mov byte [ebp - 4], 3
call fcn.00405d05
push eax
lea ecx, [esi + 8]
mov byte [ebp - 4], 4
call fcn.00401499
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
call fcn.0040103e
mov ecx, dword [ebp + 8]
add ecx, 0xfffffff0
mov byte [ebp - 4], 0
call fcn.0040103e
jmp 0x404860
push eax
lea ecx, [esi + 8]
call fcn.00401499
push str.Languages
lea ecx, [ebp + 8]
call fcn.00401ab9
push ebx
lea eax, [ebp + 8]
push eax
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 0x14]
push eax
mov ecx, edi
mov byte [ebp - 4], 5
call fcn.00405d05
mov ecx, dword [ebp + 8]
add ecx, 0xfffffff0
mov byte [ebp - 4], 7
call fcn.0040103e
lea ecx, [ebp - 0x14]
call fcn.00403e15
mov ecx, eax
call fcn.00403a72
push 0x433c7c
lea ecx, [ebp - 0x18]
call fcn.00401ab9
push ebx
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 0x20]
push eax
mov ecx, edi
mov byte [ebp - 4], 8
call fcn.00405d05
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
mov byte [ebp - 4], 0xa
call fcn.0040103e
mov eax, dword [ebp - 0x20]
mov eax, dword [eax - 0xc]
test eax, eax
je 0x4049a3
lea ecx, [ebp - 0x34]
call fcn.004104fa
lea eax, [ebp - 0x34]
push eax
lea eax, [ebp - 0x20]
push eax
mov byte [ebp - 4], 0xb
call fcn.00403ee7
mov eax, dword [ebp - 0x2c]
and dword [ebp - 0x10], 0
dec eax
pop ecx
pop ecx
js 0x404997
push dword [ebp - 0x10]
lea ecx, [ebp - 0x34]
call fcn.00403053
push eax
lea ecx, [ebp + 8]
call fcn.004017c5
lea eax, [ebp + 8]
push eax
mov ecx, edi
mov byte [ebp - 4], 0xc
call fcn.00405f4d
test eax, eax
je 0x40495c
lea ebx, [esi + 0x38]
mov eax, dword [ebx]
cmp dword [eax - 0xc], 0
je 0x40494c
push 0x433c78
mov ecx, ebx
call fcn.00403eb3
mov eax, dword [ebp + 8]
push dword [eax - 0xc]
mov ecx, ebx
push eax
call fcn.00403b28
jmp 0x404978
push dword [ebp + 8]
push str.Initialization:__s_file_not_found___PATCH_will_be_ignored._n
push 0x4423fc
call fcn.00401485
add esp, 0xc
mov ecx, edi
call fcn.00406721
mov ecx, dword [ebp + 8]
add ecx, 0xfffffff0
mov byte [ebp - 4], 0xb
call fcn.0040103e
inc dword [ebp - 0x10]
mov eax, dword [ebp - 0x2c]
dec eax
cmp dword [ebp - 0x10], eax
jle 0x40490e
lea ecx, [ebp - 0x34]
mov byte [ebp - 4], 0xa
call fcn.0041074c
lea ebx, [esi + 4]
mov eax, dword [ebx]
cmp dword [eax - 0xc], 0
je 0x404da6
push ebx
mov ecx, edi
call fcn.00405f4d
test eax, eax
je 0x404da6
mov ecx, esi
call fcn.0040424f
mov edi, eax
test edi, edi
je 0x404de2
push str.ProductName
lea ecx, [ebp + 8]
call fcn.00401ab9
lea eax, [ebp + 8]
push eax
push edi
lea eax, [ebp - 0x10]
push eax
mov ecx, esi
mov byte [ebp - 4], 0xd
call fcn.00404344
push eax
lea ecx, [esi + 0xc]
mov byte [ebp - 4], 0xe
call fcn.00401499
mov ecx, dword [ebp - 0x10]
add ecx, 0xfffffff0
call fcn.0040103e
mov ecx, dword [ebp + 8]
add ecx, 0xfffffff0
mov byte [ebp - 4], 0xa
call fcn.0040103e
push str.ProductCode
lea ecx, [ebp + 8]
call fcn.00401ab9
lea eax, [ebp + 8]
push eax
push edi
lea eax, [ebp - 0x10]
push eax
mov ecx, esi
mov byte [ebp - 4], 0xf
call fcn.00404344
push eax
lea ecx, [esi + 0x14]
mov byte [ebp - 4], 0x10
call fcn.00401499
mov ecx, dword [ebp - 0x10]
add ecx, 0xfffffff0
call fcn.0040103e
mov ecx, dword [ebp + 8]
add ecx, 0xfffffff0
mov byte [ebp - 4], 0xa
call fcn.0040103e
push str.PackageCode
lea ecx, [ebp + 8]
call fcn.00401ab9
lea eax, [ebp + 8]
push eax
push edi
lea eax, [ebp - 0x10]
push eax
mov ecx, esi
mov byte [ebp - 4], 0x11
call fcn.00404344
push eax
lea ecx, [esi + 0x18]
mov byte [ebp - 4], 0x12
call fcn.00401499
mov ecx, dword [ebp - 0x10]
add ecx, 0xfffffff0
call fcn.0040103e
mov ecx, dword [ebp + 8]
add ecx, 0xfffffff0
mov byte [ebp - 4], 0xa
call fcn.0040103e
push str.UpgradeCode
lea ecx, [ebp + 8]
call fcn.00401ab9
lea eax, [ebp + 8]
push eax
mov byte [ebp - 4], 0x13
push edi
lea eax, [ebp - 0x10]
push eax
mov ecx, esi
call fcn.00404344
push eax
lea ecx, [esi + 0x1c]
mov byte [ebp - 4], 0x14
call fcn.00401499
mov ecx, dword [ebp - 0x10]
add ecx, 0xfffffff0
call fcn.0040103e
mov ecx, dword [ebp + 8]
add ecx, 0xfffffff0
mov byte [ebp - 4], 0xa
call fcn.0040103e
push str.ProductVersion
lea ecx, [ebp + 8]
call fcn.00401ab9
lea eax, [ebp + 8]
push eax
push edi
lea eax, [ebp - 0x10]
push eax
mov ecx, esi
mov byte [ebp - 4], 0x15
call fcn.00404344
push eax
lea ecx, [esi + 0x10]
mov byte [ebp - 4], 0x16
call fcn.00401499
mov ecx, dword [ebp - 0x10]
add ecx, 0xfffffff0
call fcn.0040103e
mov ecx, dword [ebp + 8]
add ecx, 0xfffffff0
mov byte [ebp - 4], 0xa
call fcn.0040103e
push str.ProductLanguage
lea ecx, [ebp + 8]
call fcn.00401ab9
lea eax, [ebp + 8]
push eax
push edi
lea eax, [ebp - 0x10]
push eax
mov ecx, esi
mov byte [ebp - 4], 0x17
call fcn.00404344
lea ebx, [esi + 0x20]
push eax
mov ecx, ebx
mov byte [ebp - 4], 0x18
call fcn.00401499
mov ecx, dword [ebp - 0x10]
add ecx, 0xfffffff0
call fcn.0040103e
mov ecx, dword [ebp + 8]
add ecx, 0xfffffff0
mov byte [ebp - 4], 0xa
call fcn.0040103e
push edi
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
mov ecx, esi
call fcn.00403f8c
test eax, eax
je 0x404de2
mov eax, dword [ebp - 0x14]
xor edi, edi
cmp dword [eax - 0xc], edi
je 0x404c16
mov eax, dword [ebx]
cmp dword [eax - 0xc], edi
je 0x404c05
push ebx
lea ecx, [esi + 0x24]
call fcn.0040359e
push 0x433c78
lea eax, [ebp - 0x10]
push ebx
push eax
call fcn.00401a3a
add esp, 0xc
mov eax, dword [eax]
mov edi, 0x4327f8
push edi
push eax
lea ecx, [ebp - 0x14]
mov byte [ebp - 4], 0x19
call fcn.004038f6
mov ecx, dword [ebp - 0x10]
neg eax
sbb al, al
inc al
add ecx, 0xfffffff0
mov byte [ebp + 0xb], al
mov byte [ebp - 4], 0xa
call fcn.0040103e
cmp byte [ebp + 0xb], 0
je 0x404c05
mov eax, dword [ebx]
push edi
push eax
lea ecx, [ebp - 0x14]
call fcn.004038f6
lea eax, [esi + 0x24]
push eax
lea eax, [ebp - 0x14]
push eax
call fcn.00403ee7
pop ecx
pop ecx
xor edi, edi
mov ecx, esi
call fcn.004037bc
mov dword [esi + 0x3c], eax
cmp eax, edi
jne 0x404c8d
cmp dword [esi + 0x2c], edi
jle 0x404c8d
call fcn.004089b3
push eax
lea ecx, [ebp + 8]
call fcn.00401217
mov eax, dword [0x442404]
mov byte [ebp - 4], 0x1a
cmp dword [eax - 0xc], edi
je 0x404cb6
push str..mst
lea eax, [ebp - 0x18]
push 0x442404
push eax
call fcn.00401a3a
add esp, 0xc
push eax
lea ecx, [ebp + 8]
mov byte [ebp - 4], 0x1b
call fcn.00401435
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
mov byte [ebp - 4], 0x1a
call fcn.0040103e
lea eax, [ebp + 8]
push eax
mov ecx, esi
call fcn.00403ba8
mov ecx, dword [ebp + 8]
add ecx, 0xfffffff0
call fcn.0040103e
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
call fcn.0040103e
mov ecx, dword [ebp - 0x14]
add ecx, 0xfffffff0
call fcn.0040103e
mov ecx, dword [ebp - 0x1c]
add ecx, 0xfffffff0
call fcn.0040103e
xor eax, eax
inc eax
jmp 0x404e05
push ebx
mov ebx, 0x442404
mov ecx, ebx
call fcn.00401435
cmp dword [0x442414], edi
jne 0x404c77
cmp dword [0x442418], edi
jne 0x404c77
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
movzx ecx, ax
mov eax, ecx
mov edx, 0x401
and eax, 0x3ff
cmp dx, cx
je 0x404cf7
cmp ax, 0xd
je 0x404cf7
xor eax, eax
jmp 0x404cfa
xor eax, eax
inc eax
push dword [0x44243c]
lea ecx, [ebp - 0x114]
push eax
call fcn.004030c5
lea edi, [esi + 0x24]
push edi
lea ecx, [ebp - 0x48]
mov byte [ebp - 4], 0x1c
call fcn.0041086a
lea ecx, [ebp - 0x114]
call fcn.00409809
cmp eax, 1
jne 0x404d8a
push dword [ebp - 0x4c]
mov ecx, edi
call fcn.00403053
push str..mst
push eax
lea eax, [ebp - 0x18]
push eax
call fcn.00401a3a
add esp, 0xc
push eax
lea ecx, [ebp + 8]
mov byte [ebp - 4], 0x1d
call fcn.00401435
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
mov byte [ebp - 4], 0x1c
call fcn.0040103e
push dword [ebp - 0x4c]
mov ecx, edi
call fcn.00403053
push eax
mov ecx, ebx
call fcn.00401435
lea ecx, [ebp - 0x114]
mov byte [ebp - 4], 0x1a
call fcn.0040300d
jmp 0x404c77
lea ecx, [ebp - 0x114]
mov byte [ebp - 4], 0x1a
call fcn.0040300d
mov ecx, dword [ebp + 8]
add ecx, 0xfffffff0
call fcn.0040103e
jmp 0x404de2
cmp dword [0x44240c], 0
je 0x404ddb
mov eax, dword [ebx]
cmp dword [eax - 0xc], 0
jne 0x404dc8
push str.Initialization:_Failed_to_initialize_Product___msi_key_not_specified._n
mov ecx, 0x4423fc
call fcn.00401a1b
jmp 0x404ddb
push eax
push str.Initialization:_Failed_to_initialize_Product___Unable_to_locate___s__file._n
push 0x4423fc
call fcn.00401485
add esp, 0xc
mov ecx, edi
call fcn.00406721
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
call fcn.0040103e
mov ecx, dword [ebp - 0x14]
add ecx, 0xfffffff0
call fcn.0040103e
mov ecx, dword [ebp - 0x1c]
add ecx, 0xfffffff0
call fcn.0040103e
xor eax, eax
call fcn.00419a82
ret 4