Function at 0x403056
Capabilities:
Identify system language via api

Disassembly:
push 0x108
mov eax, 0x42bf02
call fcn.004163ec
mov esi, ecx
push str.Product
lea ecx, [ebp - 0x1c]
call fcn.00401a21
and dword [ebp - 4], 0
push 0x42f594
lea ecx, [ebp - 0x10]
call fcn.00401a21
mov ebx, 0x43c360
push ebx
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 0x18]
mov edi, 0x43c2b8
push eax
mov ecx, edi
mov byte [ebp - 4], 1
call fcn.00404137
lea ecx, [esi + 4]
push eax
mov byte [ebp - 4], 2
call fcn.00401415
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
call fcn.00401038
mov ecx, dword [ebp - 0x10]
add ecx, 0xfffffff0
mov byte [ebp - 4], 0
call fcn.00401038
mov eax, dword [ebp + 8]
mov ecx, dword [eax]
cmp dword [ecx - 0xc], 0
jne 0x403127
push str.CmdLine
lea ecx, [ebp + 8]
call fcn.00401a21
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.00404137
lea ecx, [esi + 8]
push eax
mov byte [ebp - 4], 4
call fcn.00401415
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
call fcn.00401038
mov ecx, dword [ebp + 8]
add ecx, 0xfffffff0
mov byte [ebp - 4], 0
call fcn.00401038
jmp 0x403130
lea ecx, [esi + 8]
push eax
call fcn.00401415
push str.Languages
lea ecx, [ebp + 8]
call fcn.00401a21
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.00404137
mov ecx, dword [ebp + 8]
add ecx, 0xfffffff0
mov byte [ebp - 4], 7
call fcn.00401038
lea ecx, [ebp - 0x14]
call fcn.00402a77
mov ecx, eax
call fcn.00402872
push 0x42f564
lea ecx, [ebp - 0x18]
call fcn.00401a21
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.00404137
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
mov byte [ebp - 4], 0xa
call fcn.00401038
mov eax, dword [ebp - 0x20]
mov eax, dword [eax - 0xc]
test eax, eax
je 0x403270
lea ecx, [ebp - 0x34]
call fcn.0040d226
lea eax, [ebp - 0x34]
push eax
lea eax, [ebp - 0x20]
push eax
mov byte [ebp - 4], 0xb
call fcn.00402ba0
mov eax, dword [ebp - 0x2c]
and dword [ebp - 0x10], 0
dec eax
pop ecx
pop ecx
js 0x403264
push dword [ebp - 0x10]
lea ecx, [ebp - 0x34]
call fcn.00401e86
push eax
lea ecx, [ebp + 8]
call fcn.00401778
lea eax, [ebp + 8]
push eax
mov ecx, edi
mov byte [ebp - 4], 0xc
call fcn.0040437c
test eax, eax
je 0x403229
lea ebx, [esi + 0x34]
mov eax, dword [ebx]
cmp dword [eax - 0xc], 0
je 0x40321c
push 0x42f560
mov ecx, ebx
call fcn.00402b7b
lea eax, [ebp + 8]
push eax
mov ecx, ebx
call fcn.00402c1b
jmp 0x403245
push dword [ebp + 8]
push str.Initialization:__s_file_not_found___PATCH_will_be_ignored._n
push 0x43c35c
call fcn.00401462
add esp, 0xc
mov ecx, edi
call fcn.004044df
mov ecx, dword [ebp + 8]
add ecx, 0xfffffff0
mov byte [ebp - 4], 0xb
call fcn.00401038
inc dword [ebp - 0x10]
mov eax, dword [ebp - 0x2c]
dec eax
cmp dword [ebp - 0x10], eax
jle 0x4031de
lea ecx, [ebp - 0x34]
mov byte [ebp - 4], 0xa
call fcn.0040d46b
lea ebx, [esi + 4]
mov eax, dword [ebx]
cmp dword [eax - 0xc], 0
je 0x403624
push ebx
mov ecx, edi
call fcn.0040437c
test eax, eax
je 0x403624
mov ecx, esi
call fcn.00402d55
mov edi, eax
test edi, edi
je 0x403660
push str.ProductName
lea ecx, [ebp + 8]
call fcn.00401a21
lea eax, [ebp + 8]
push eax
push edi
lea eax, [ebp - 0x10]
push eax
mov ecx, esi
mov byte [ebp - 4], 0xd
call fcn.00402e4a
lea ecx, [esi + 0xc]
push eax
mov byte [ebp - 4], 0xe
call fcn.00401415
mov ecx, dword [ebp - 0x10]
add ecx, 0xfffffff0
call fcn.00401038
mov ecx, dword [ebp + 8]
add ecx, 0xfffffff0
mov byte [ebp - 4], 0xa
call fcn.00401038
push str.ProductCode
lea ecx, [ebp + 8]
call fcn.00401a21
lea eax, [ebp + 8]
push eax
push edi
lea eax, [ebp - 0x10]
push eax
mov ecx, esi
mov byte [ebp - 4], 0xf
call fcn.00402e4a
lea ecx, [esi + 0x14]
push eax
mov byte [ebp - 4], 0x10
call fcn.00401415
mov ecx, dword [ebp - 0x10]
add ecx, 0xfffffff0
call fcn.00401038
mov ecx, dword [ebp + 8]
add ecx, 0xfffffff0
mov byte [ebp - 4], 0xa
call fcn.00401038
push str.UpgradeCode
lea ecx, [ebp + 8]
call fcn.00401a21
lea eax, [ebp + 8]
push eax
push edi
lea eax, [ebp - 0x10]
push eax
mov ecx, esi
mov byte [ebp - 4], 0x11
call fcn.00402e4a
lea ecx, [esi + 0x18]
push eax
mov byte [ebp - 4], 0x12
call fcn.00401415
mov ecx, dword [ebp - 0x10]
add ecx, 0xfffffff0
call fcn.00401038
mov ecx, dword [ebp + 8]
add ecx, 0xfffffff0
mov byte [ebp - 4], 0xa
call fcn.00401038
push str.ProductVersion
lea ecx, [ebp + 8]
call fcn.00401a21
lea eax, [ebp + 8]
push eax
mov byte [ebp - 4], 0x13
push edi
lea eax, [ebp - 0x10]
push eax
mov ecx, esi
call fcn.00402e4a
lea ecx, [esi + 0x10]
push eax
mov byte [ebp - 4], 0x14
call fcn.00401415
mov ecx, dword [ebp - 0x10]
add ecx, 0xfffffff0
call fcn.00401038
mov ecx, dword [ebp + 8]
add ecx, 0xfffffff0
mov byte [ebp - 4], 0xa
call fcn.00401038
push str.ProductLanguage
lea ecx, [ebp + 8]
call fcn.00401a21
lea eax, [ebp + 8]
push eax
push edi
lea eax, [ebp - 0x10]
push eax
mov ecx, esi
mov byte [ebp - 4], 0x15
call fcn.00402e4a
lea ebx, [esi + 0x1c]
push eax
mov ecx, ebx
mov byte [ebp - 4], 0x16
call fcn.00401415
mov ecx, dword [ebp - 0x10]
add ecx, 0xfffffff0
call fcn.00401038
mov ecx, dword [ebp + 8]
add ecx, 0xfffffff0
mov byte [ebp - 4], 0xa
call fcn.00401038
push edi
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
mov ecx, esi
call fcn.00402c33
test eax, eax
je 0x403660
mov eax, dword [ebp - 0x14]
xor edi, edi
cmp dword [eax - 0xc], edi
je 0x40349d
mov eax, dword [ebx]
cmp dword [eax - 0xc], edi
je 0x40348e
lea ecx, [esi + 0x20]
mov eax, dword [ecx + 8]
push ebx
push eax
call fcn.0040d5e4
push 0x42f560
lea eax, [ebp + 8]
push ebx
push eax
call fcn.004019bd
add esp, 0xc
mov eax, dword [eax]
mov edi, 0x42e7c0
push edi
push eax
lea ecx, [ebp - 0x14]
mov byte [ebp - 4], 0x17
call fcn.004026f7
mov ecx, dword [ebp + 8]
mov ebx, eax
neg ebx
sbb bl, bl
add ecx, 0xfffffff0
inc bl
mov byte [ebp - 4], 0xa
call fcn.00401038
test bl, bl
je 0x40348c
mov eax, dword [esi + 0x1c]
push edi
push eax
lea ecx, [ebp - 0x14]
call fcn.004026f7
xor edi, edi
lea eax, [esi + 0x20]
push eax
lea eax, [ebp - 0x14]
push eax
call fcn.00402ba0
pop ecx
pop ecx
mov ecx, esi
call fcn.004025bd
cmp eax, edi
mov dword [esi + 0x38], eax
jne 0x403514
cmp dword [esi + 0x28], edi
jle 0x403514
call fcn.00405f3b
push eax
lea ecx, [ebp + 8]
call fcn.004011f9
mov eax, dword [0x43c364]
cmp dword [eax - 0xc], edi
mov byte [ebp - 4], 0x18
je 0x40353d
push str..mst
lea eax, [ebp - 0x18]
push 0x43c364
push eax
call fcn.004019bd
add esp, 0xc
push eax
lea ecx, [ebp + 8]
mov byte [ebp - 4], 0x19
call fcn.00401415
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
mov byte [ebp - 4], 0x18
call fcn.00401038
lea eax, [ebp + 8]
push eax
mov ecx, esi
call fcn.004029f1
mov ecx, dword [ebp + 8]
add ecx, 0xfffffff0
call fcn.00401038
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
call fcn.00401038
mov ecx, dword [ebp - 0x14]
add ecx, 0xfffffff0
call fcn.00401038
mov ecx, dword [ebp - 0x1c]
add ecx, 0xfffffff0
call fcn.00401038
xor eax, eax
inc eax
jmp 0x403683
lea eax, [esi + 0x1c]
mov ebx, 0x43c364
push eax
mov ecx, ebx
call fcn.00401415
cmp dword [0x43c370], edi
jne 0x4034fe
cmp dword [0x43c374], edi
jne 0x4034fe
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
and ax, 0x3ff
movzx eax, ax
cmp ax, 1
je 0x40357a
cmp ax, 0xd
je 0x40357a
xor eax, eax
jmp 0x40357d
xor eax, eax
inc eax
push edi
push eax
lea ecx, [ebp - 0x114]
call fcn.00401eec
lea edi, [esi + 0x20]
push edi
lea ecx, [ebp - 0x48]
mov byte [ebp - 4], 0x1a
call fcn.0040d5a5
lea ecx, [ebp - 0x114]
call fcn.00406c80
cmp eax, 1
jne 0x403608
push dword [ebp - 0x4c]
mov ecx, edi
call fcn.00401e86
push str..mst
push eax
lea eax, [ebp - 0x18]
push eax
call fcn.004019bd
add esp, 0xc
push eax
lea ecx, [ebp + 8]
mov byte [ebp - 4], 0x1b
call fcn.00401415
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
mov byte [ebp - 4], 0x1a
call fcn.00401038
push dword [ebp - 0x4c]
mov ecx, edi
call fcn.00401e86
push eax
mov ecx, ebx
call fcn.00401415
lea ecx, [ebp - 0x114]
mov byte [ebp - 4], 0x18
call fcn.00401e40
jmp 0x4034fe
lea ecx, [ebp - 0x114]
mov byte [ebp - 4], 0x18
call fcn.00401e40
mov ecx, dword [ebp + 8]
add ecx, 0xfffffff0
call fcn.00401038
jmp 0x403660
cmp dword [0x43c368], 0
je 0x403659
mov eax, dword [ebx]
cmp dword [eax - 0xc], 0
jne 0x403646
push str.Initialization:_Failed_to_initialize_Product___msi_key_not_specified._n
mov ecx, 0x43c35c
call fcn.00401998
jmp 0x403659
push eax
push str.Initialization:_Failed_to_initialize_Product___Unable_to_locate___s__file._n
push 0x43c35c
call fcn.00401462
add esp, 0xc
mov ecx, edi
call fcn.004044df
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
call fcn.00401038
mov ecx, dword [ebp - 0x14]
add ecx, 0xfffffff0
call fcn.00401038
mov ecx, dword [ebp - 0x1c]
add ecx, 0xfffffff0
call fcn.00401038
xor eax, eax
call fcn.0041648b
ret 4