Function at 0x404376
Capabilities:
Identify system language via api

Disassembly:
push 0x150
mov eax, 0x439548
call fcn.00421730
mov edi, ecx
push 0x43cf4c
lea ecx, [ebp - 0x20]
call fcn.00401945
xor ebx, ebx
lea ecx, [ebp - 0x14]
push 0x43d790
mov dword [ebp - 4], ebx
call fcn.00401945
push 0x453998
lea eax, [ebp - 0x14]
mov byte [ebp - 4], 1
push eax
lea eax, [ebp - 0x20]
mov ecx, 0x4538c8
push eax
lea eax, [ebp - 0x10]
push eax
call fcn.00408f9a
lea esi, [edi + 4]
mov byte [ebp - 4], 2
push eax
mov ecx, esi
call fcn.0040132a
mov ecx, dword [ebp - 0x10]
lea ecx, [ecx - 0x10]
call fcn.0040184e
mov ecx, dword [ebp - 0x14]
mov byte [ebp - 4], bl
lea ecx, [ecx - 0x10]
call fcn.0040184e
push str.CmdLine
lea ecx, [ebp - 0x14]
call fcn.00401945
push 0x453998
lea eax, [ebp - 0x14]
mov byte [ebp - 4], 3
push eax
lea eax, [ebp - 0x20]
mov ecx, 0x4538c8
push eax
lea eax, [ebp - 0x10]
push eax
call fcn.00408f9a
lea ecx, [edi + 8]
mov byte [ebp - 4], 4
push eax
call fcn.0040132a
mov ecx, dword [ebp - 0x10]
lea ecx, [ecx - 0x10]
call fcn.0040184e
mov ecx, dword [ebp - 0x14]
mov byte [ebp - 4], bl
lea ecx, [ecx - 0x10]
call fcn.0040184e
mov eax, dword [ebp + 8]
mov eax, dword [eax]
cmp dword [eax - 0xc], ebx
je 0x404495
push 0x43d7a8
lea eax, [edi + 8]
push eax
lea eax, [ebp - 0x14]
push eax
call fcn.00401a11
push dword [ebp + 8]
mov byte [ebp - 4], 5
push eax
lea eax, [ebp - 0x10]
push eax
call fcn.00402736
add esp, 0x18
push eax
lea ecx, [edi + 8]
mov byte [ebp - 4], 6
call fcn.0040132a
mov ecx, dword [ebp - 0x10]
lea ecx, [ecx - 0x10]
call fcn.0040184e
mov ecx, dword [ebp - 0x14]
mov byte [ebp - 4], bl
lea ecx, [ecx - 0x10]
call fcn.0040184e
push 0x43d7ac
lea ecx, [ebp + 8]
call fcn.00401945
push 0x453998
lea eax, [ebp + 8]
mov byte [ebp - 4], 7
push eax
lea eax, [ebp - 0x20]
mov ecx, 0x4538c8
push eax
lea eax, [ebp - 0x1c]
push eax
call fcn.00408f9a
mov ecx, dword [ebp + 8]
mov byte [ebp - 4], 9
lea ecx, [ecx - 0x10]
call fcn.0040184e
lea ecx, [ebp - 0x1c]
call fcn.004056cb
mov ecx, eax
call fcn.00405667
push str.PATCH
lea ecx, [ebp - 0x14]
call fcn.00401945
push 0x453998
lea eax, [ebp - 0x14]
mov byte [ebp - 4], 0xa
push eax
lea eax, [ebp - 0x20]
mov ecx, 0x4538c8
push eax
lea eax, [ebp - 0x24]
push eax
call fcn.00408f9a
mov ecx, dword [ebp - 0x14]
mov byte [ebp - 4], 0xc
lea ecx, [ecx - 0x10]
call fcn.0040184e
mov eax, dword [ebp - 0x24]
cmp dword [eax - 0xc], 0
je 0x4045ef
lea ecx, [ebp - 0x38]
call fcn.004136b4
lea eax, [ebp - 0x38]
mov byte [ebp - 4], 0xd
push eax
lea eax, [ebp - 0x24]
push eax
call fcn.00405417
mov eax, dword [ebp - 0x30]
dec eax
pop ecx
pop ecx
js 0x4045e3
mov esi, ebx
push esi
lea ecx, [ebp - 0x38]
call fcn.0041b9e1
mov eax, dword [eax]
sub eax, 0x10
push eax
call fcn.004013b4
add eax, 0x10
pop ecx
mov dword [ebp + 8], eax
lea eax, [ebp + 8]
mov byte [ebp - 4], 0xe
push eax
mov ecx, 0x4538c8
call fcn.00408771
test eax, eax
je 0x4045a5
lea ecx, [edi + 0x38]
mov eax, dword [ecx]
cmp dword [eax - 0xc], 0
je 0x404597
push 0x43d7cc
call fcn.00403dd6
lea ecx, [edi + 0x38]
mov eax, dword [ebp + 8]
push dword [eax - 0xc]
push eax
call fcn.00403dff
jmp 0x4045c4
push dword [ebp + 8]
push 0x43d7d0
push 0x453994
call fcn.004014f0
add esp, 0xc
mov ecx, 0x4538c8
call fcn.0040a5c4
mov ecx, dword [ebp + 8]
mov byte [ebp - 4], 0xd
lea ecx, [ecx - 0x10]
call fcn.0040184e
mov eax, dword [ebp - 0x30]
inc esi
dec eax
cmp esi, eax
jle 0x40454e
lea esi, [edi + 4]
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 0xc
call fcn.004136cb
mov eax, dword [esi]
cmp dword [eax - 0xc], 0
je 0x404a6d
push esi
mov ecx, 0x4538c8
call fcn.00408771
test eax, eax
je 0x404a6d
mov ecx, edi
call fcn.00405314
mov esi, eax
mov dword [ebp - 0x18], esi
test esi, esi
je 0x404aab
push 0x43d970
lea ecx, [ebp + 8]
call fcn.00401945
lea eax, [ebp + 8]
mov byte [ebp - 4], 0xf
push eax
push esi
lea eax, [ebp - 0x10]
mov ecx, edi
push eax
call fcn.00405199
lea ecx, [edi + 0xc]
mov byte [ebp - 4], 0x10
push eax
call fcn.0040132a
mov ecx, dword [ebp - 0x10]
lea ecx, [ecx - 0x10]
call fcn.0040184e
mov ecx, dword [ebp + 8]
mov byte [ebp - 4], 0xc
lea ecx, [ecx - 0x10]
call fcn.0040184e
push str.ProductCode
lea ecx, [ebp + 8]
call fcn.00401945
lea eax, [ebp + 8]
mov byte [ebp - 4], 0x11
push eax
push esi
lea eax, [ebp - 0x10]
mov ecx, edi
push eax
call fcn.00405199
lea ecx, [edi + 0x14]
mov byte [ebp - 4], 0x12
push eax
call fcn.0040132a
mov ecx, dword [ebp - 0x10]
lea ecx, [ecx - 0x10]
call fcn.0040184e
mov ecx, dword [ebp + 8]
mov byte [ebp - 4], 0xc
lea ecx, [ecx - 0x10]
call fcn.0040184e
push str.PackageCode
lea ecx, [ebp + 8]
call fcn.00401945
lea eax, [ebp + 8]
mov byte [ebp - 4], 0x13
push eax
push esi
lea eax, [ebp - 0x10]
mov ecx, edi
push eax
call fcn.00405199
lea ecx, [edi + 0x18]
mov byte [ebp - 4], 0x14
push eax
call fcn.0040132a
mov ecx, dword [ebp - 0x10]
lea ecx, [ecx - 0x10]
call fcn.0040184e
mov ecx, dword [ebp + 8]
mov byte [ebp - 4], 0xc
lea ecx, [ecx - 0x10]
call fcn.0040184e
push str.UpgradeCode
lea ecx, [ebp + 8]
call fcn.00401945
lea eax, [ebp + 8]
mov byte [ebp - 4], 0x15
push eax
push esi
lea eax, [ebp - 0x10]
push eax
mov ecx, edi
call fcn.00405199
lea ecx, [edi + 0x1c]
mov byte [ebp - 4], 0x16
push eax
call fcn.0040132a
mov ecx, dword [ebp - 0x10]
lea ecx, [ecx - 0x10]
call fcn.0040184e
mov ecx, dword [ebp + 8]
mov byte [ebp - 4], 0xc
lea ecx, [ecx - 0x10]
call fcn.0040184e
push 0x43d9d0
lea ecx, [ebp + 8]
call fcn.00401945
lea eax, [ebp + 8]
mov byte [ebp - 4], 0x17
push eax
push esi
lea eax, [ebp - 0x10]
mov ecx, edi
push eax
call fcn.00405199
lea ecx, [edi + 0x10]
mov byte [ebp - 4], 0x18
push eax
call fcn.0040132a
mov ecx, dword [ebp - 0x10]
lea ecx, [ecx - 0x10]
call fcn.0040184e
mov ecx, dword [ebp + 8]
mov byte [ebp - 4], 0xc
lea ecx, [ecx - 0x10]
call fcn.0040184e
push str.ProductLanguage
lea ecx, [ebp + 8]
call fcn.00401945
lea eax, [ebp + 8]
mov byte [ebp - 4], 0x19
push eax
push esi
lea eax, [ebp - 0x10]
mov ecx, edi
push eax
call fcn.00405199
lea esi, [edi + 0x20]
mov byte [ebp - 4], 0x1a
push eax
mov ecx, esi
call fcn.0040132a
mov ecx, dword [ebp - 0x10]
lea ecx, [ecx - 0x10]
call fcn.0040184e
mov ecx, dword [ebp + 8]
mov byte [ebp - 4], 0xc
lea ecx, [ecx - 0x10]
call fcn.0040184e
push dword [ebp - 0x18]
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
mov ecx, edi
call fcn.00404fe9
test eax, eax
je 0x404aab
mov eax, dword [ebp - 0x1c]
cmp dword [eax - 0xc], 0
je 0x404866
mov eax, dword [esi]
cmp dword [eax - 0xc], 0
je 0x404857
lea ecx, [edi + 0x24]
push esi
push dword [ecx + 8]
call fcn.004138f1
push 0x43d7cc
lea eax, [ebp + 8]
push esi
push eax
call fcn.00401a11
add esp, 0xc
push 0x43c650
push dword [eax]
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], 0x1b
call fcn.00405493
mov ecx, dword [ebp + 8]
mov ebx, eax
neg ebx
mov byte [ebp - 4], 0xc
sbb bl, bl
add ecx, 0xfffffff0
call fcn.0040184e
inc bl
je 0x404855
push 0x43c650
push dword [esi]
lea ecx, [ebp - 0x1c]
call fcn.00405493
xor ebx, ebx
lea eax, [edi + 0x24]
push eax
lea eax, [ebp - 0x1c]
push eax
call fcn.00405417
pop ecx
pop ecx
mov ecx, edi
call fcn.004050a1
mov dword [edi + 0x3c], eax
test eax, eax
jne 0x404a68
cmp dword [edi + 0x2c], eax
jle 0x404a68
call fcn.0040b8b7
push eax
lea ecx, [ebp + 8]
call fcn.004012cf
mov eax, dword [0x45399c]
mov byte [ebp - 4], 0x1c
cmp dword [eax - 0xc], 0
je 0x4048bd
push str..mst
lea eax, [ebp - 0x18]
push 0x45399c
push eax
call fcn.00401a11
add esp, 0xc
mov byte [ebp - 4], 0x1d
jmp 0x404a3a
push esi
mov ecx, 0x45399c
call fcn.0040132a
cmp dword [0x4539ac], 0
jne 0x4048da
cmp dword [0x4539b0], 0
je 0x4048e7
cmp dword [0x4539e4], 0
je 0x404a52
cmp dword [0x4539c8], 0
je 0x4049d0
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
movzx eax, ax
mov edx, 0x401
mov ecx, eax
and ecx, 0x3ff
cmp dx, ax
je 0x40491b
push 0xd
pop eax
cmp cx, ax
je 0x40491b
mov eax, ebx
jmp 0x40491e
xor eax, eax
inc eax
push dword [0x4539e8]
lea ecx, [ebp - 0x15c]
push eax
call fcn.00403416
lea esi, [edi + 0x24]
mov byte [ebp - 4], 0x1e
push esi
lea ecx, [ebp - 0x4c]
call fcn.004137c8
lea ecx, [ebp - 0x15c]
call fcn.0040c1a5
cmp eax, 1
jne 0x4049b1
push dword [ebp - 0x50]
mov ecx, esi
call fcn.0041b9e1
push str..mst
push eax
lea eax, [ebp - 0x18]
push eax
call fcn.00401a11
add esp, 0xc
push eax
lea ecx, [ebp + 8]
mov byte [ebp - 4], 0x1f
call fcn.0040132a
mov ecx, dword [ebp - 0x18]
mov byte [ebp - 4], 0x1e
lea ecx, [ecx - 0x10]
call fcn.0040184e
push dword [ebp - 0x50]
mov ecx, esi
call fcn.0041b9e1
push eax
mov ecx, 0x45399c
call fcn.0040132a
lea ecx, [ebp - 0x15c]
mov byte [ebp - 4], 0x1c
call fcn.0040347a
jmp 0x404a52
lea ecx, [ebp - 0x15c]
mov byte [ebp - 4], 0x1c
call fcn.0040347a
mov ecx, dword [ebp + 8]
lea ecx, [ecx - 0x10]
call fcn.0040184e
jmp 0x404aab
mov eax, dword [edi + 0x20]
push ecx
sub eax, 0x10
mov esi, esp
push eax
call fcn.004013b4
add eax, 0x10
pop ecx
mov dword [esi], eax
mov ecx, 0x4538c8
lea eax, [edi + 0x24]
push eax
lea eax, [ebp - 0x18]
push eax
call fcn.0040883c
push eax
lea ecx, [ebp + 8]
mov byte [ebp - 4], 0x20
call fcn.0040132a
mov ecx, dword [ebp - 0x18]
mov byte [ebp - 4], 0x1c
lea ecx, [ecx - 0x10]
call fcn.0040184e
lea eax, [ebp + 8]
mov ecx, 0x45399c
push eax
call fcn.0040132a
push str..mst
lea eax, [ebp + 8]
push eax
lea eax, [ebp - 0x18]
push eax
call fcn.00401a11
add esp, 0xc
mov byte [ebp - 4], 0x21
push eax
lea ecx, [ebp + 8]
call fcn.0040132a
mov ecx, dword [ebp - 0x18]
mov byte [ebp - 4], 0x1c
lea ecx, [ecx - 0x10]
call fcn.0040184e
lea eax, [ebp + 8]
mov ecx, edi
push eax
call fcn.00403b6d
mov ecx, dword [ebp + 8]
lea ecx, [ecx - 0x10]
call fcn.0040184e
xor ebx, ebx
inc ebx
jmp 0x404aab
cmp dword [0x4539a4], 0
je 0x404aa1
mov eax, dword [esi]
cmp dword [eax - 0xc], ebx
jne 0x404a8e
push str.Initialization:_Failed_to_initialize_Product___msi_key_not_specified._n
mov ecx, 0x453994
call fcn.00401ec3
jmp 0x404aa1
push eax
push str.Initialization:_Failed_to_initialize_Product___Unable_to_locate___s__file._n
push 0x453994
call fcn.004014f0
add esp, 0xc
mov ecx, 0x4538c8
call fcn.0040a5c4
mov ecx, dword [ebp - 0x24]
lea ecx, [ecx - 0x10]
call fcn.0040184e
mov ecx, dword [ebp - 0x1c]
add ecx, 0xfffffff0
call fcn.0040184e
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
call fcn.0040184e
mov eax, ebx
call fcn.004216fe
ret 4