Function at 0x40439a
Capabilities:
Identify system language via api

Disassembly:
push 0x150
mov eax, 0x439521
call fcn.00421760
mov edi, ecx
push 0x43cf4c
lea ecx, [ebp - 0x20]
call fcn.0040194d
xor ebx, ebx
lea ecx, [ebp - 0x14]
push 0x43d790
mov dword [ebp - 4], ebx
call fcn.0040194d
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.00408fe7
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.00401856
mov ecx, dword [ebp - 0x14]
mov byte [ebp - 4], bl
lea ecx, [ecx - 0x10]
call fcn.00401856
push str.CmdLine
lea ecx, [ebp - 0x14]
call fcn.0040194d
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.00408fe7
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.00401856
mov ecx, dword [ebp - 0x14]
mov byte [ebp - 4], bl
lea ecx, [ecx - 0x10]
call fcn.00401856
mov eax, dword [ebp + 8]
mov eax, dword [eax]
cmp dword [eax - 0xc], ebx
je 0x4044b9
push 0x43d7a8
lea eax, [edi + 8]
push eax
lea eax, [ebp - 0x14]
push eax
call fcn.00401a19
push dword [ebp + 8]
mov byte [ebp - 4], 5
push eax
lea eax, [ebp - 0x10]
push eax
call fcn.0040273b
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.00401856
mov ecx, dword [ebp - 0x14]
mov byte [ebp - 4], bl
lea ecx, [ecx - 0x10]
call fcn.00401856
push 0x43d7ac
lea ecx, [ebp + 8]
call fcn.0040194d
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.00408fe7
mov ecx, dword [ebp + 8]
mov byte [ebp - 4], 9
lea ecx, [ecx - 0x10]
call fcn.00401856
lea ecx, [ebp - 0x1c]
call fcn.004056ef
mov ecx, eax
call fcn.0040568b
push str.PATCH
lea ecx, [ebp - 0x14]
call fcn.0040194d
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.00408fe7
mov ecx, dword [ebp - 0x14]
mov byte [ebp - 4], 0xc
lea ecx, [ecx - 0x10]
call fcn.00401856
mov eax, dword [ebp - 0x24]
cmp dword [eax - 0xc], 0
je 0x404613
lea ecx, [ebp - 0x38]
call fcn.004136d0
lea eax, [ebp - 0x38]
mov byte [ebp - 4], 0xd
push eax
lea eax, [ebp - 0x24]
push eax
call fcn.0040543b
mov eax, dword [ebp - 0x30]
dec eax
pop ecx
pop ecx
js 0x404607
mov esi, ebx
push esi
lea ecx, [ebp - 0x38]
call fcn.00403538
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.004087be
test eax, eax
je 0x4045c9
lea ecx, [edi + 0x38]
mov eax, dword [ecx]
cmp dword [eax - 0xc], 0
je 0x4045bb
push 0x43d7cc
call fcn.00403dfa
lea ecx, [edi + 0x38]
mov eax, dword [ebp + 8]
push dword [eax - 0xc]
push eax
call fcn.00403e23
jmp 0x4045e8
push dword [ebp + 8]
push 0x43d7d0
push 0x453994
call fcn.004014f0
add esp, 0xc
mov ecx, 0x4538c8
call fcn.0040a616
mov ecx, dword [ebp + 8]
mov byte [ebp - 4], 0xd
lea ecx, [ecx - 0x10]
call fcn.00401856
mov eax, dword [ebp - 0x30]
inc esi
dec eax
cmp esi, eax
jle 0x404572
lea esi, [edi + 4]
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 0xc
call fcn.004136e7
mov eax, dword [esi]
cmp dword [eax - 0xc], 0
je 0x404a91
push esi
mov ecx, 0x4538c8
call fcn.004087be
test eax, eax
je 0x404a91
mov ecx, edi
call fcn.00405338
mov esi, eax
mov dword [ebp - 0x18], esi
test esi, esi
je 0x404acf
push 0x43d970
lea ecx, [ebp + 8]
call fcn.0040194d
lea eax, [ebp + 8]
mov byte [ebp - 4], 0xf
push eax
push esi
lea eax, [ebp - 0x10]
mov ecx, edi
push eax
call fcn.004051bd
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.00401856
mov ecx, dword [ebp + 8]
mov byte [ebp - 4], 0xc
lea ecx, [ecx - 0x10]
call fcn.00401856
push str.ProductCode
lea ecx, [ebp + 8]
call fcn.0040194d
lea eax, [ebp + 8]
mov byte [ebp - 4], 0x11
push eax
push esi
lea eax, [ebp - 0x10]
mov ecx, edi
push eax
call fcn.004051bd
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.00401856
mov ecx, dword [ebp + 8]
mov byte [ebp - 4], 0xc
lea ecx, [ecx - 0x10]
call fcn.00401856
push str.PackageCode
lea ecx, [ebp + 8]
call fcn.0040194d
lea eax, [ebp + 8]
mov byte [ebp - 4], 0x13
push eax
push esi
lea eax, [ebp - 0x10]
mov ecx, edi
push eax
call fcn.004051bd
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.00401856
mov ecx, dword [ebp + 8]
mov byte [ebp - 4], 0xc
lea ecx, [ecx - 0x10]
call fcn.00401856
push str.UpgradeCode
lea ecx, [ebp + 8]
call fcn.0040194d
lea eax, [ebp + 8]
mov byte [ebp - 4], 0x15
push eax
push esi
lea eax, [ebp - 0x10]
push eax
mov ecx, edi
call fcn.004051bd
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.00401856
mov ecx, dword [ebp + 8]
mov byte [ebp - 4], 0xc
lea ecx, [ecx - 0x10]
call fcn.00401856
push 0x43d9d0
lea ecx, [ebp + 8]
call fcn.0040194d
lea eax, [ebp + 8]
mov byte [ebp - 4], 0x17
push eax
push esi
lea eax, [ebp - 0x10]
mov ecx, edi
push eax
call fcn.004051bd
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.00401856
mov ecx, dword [ebp + 8]
mov byte [ebp - 4], 0xc
lea ecx, [ecx - 0x10]
call fcn.00401856
push str.ProductLanguage
lea ecx, [ebp + 8]
call fcn.0040194d
lea eax, [ebp + 8]
mov byte [ebp - 4], 0x19
push eax
push esi
lea eax, [ebp - 0x10]
mov ecx, edi
push eax
call fcn.004051bd
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.00401856
mov ecx, dword [ebp + 8]
mov byte [ebp - 4], 0xc
lea ecx, [ecx - 0x10]
call fcn.00401856
push dword [ebp - 0x18]
call sub.msi.dll_MsiConfigureFeatureFromDescriptorA
mov ecx, edi
call fcn.0040500d
test eax, eax
je 0x404acf
mov eax, dword [ebp - 0x1c]
cmp dword [eax - 0xc], 0
je 0x40488a
mov eax, dword [esi]
cmp dword [eax - 0xc], 0
je 0x40487b
lea ecx, [edi + 0x24]
push esi
push dword [ecx + 8]
call fcn.0041390d
push 0x43d7cc
lea eax, [ebp + 8]
push esi
push eax
call fcn.00401a19
add esp, 0xc
push 0x43c650
push dword [eax]
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], 0x1b
call fcn.004054b7
mov ecx, dword [ebp + 8]
mov ebx, eax
neg ebx
mov byte [ebp - 4], 0xc
sbb bl, bl
add ecx, 0xfffffff0
call fcn.00401856
inc bl
je 0x404879
push 0x43c650
push dword [esi]
lea ecx, [ebp - 0x1c]
call fcn.004054b7
xor ebx, ebx
lea eax, [edi + 0x24]
push eax
lea eax, [ebp - 0x1c]
push eax
call fcn.0040543b
pop ecx
pop ecx
mov ecx, edi
call fcn.004050c5
mov dword [edi + 0x3c], eax
test eax, eax
jne 0x404a8c
cmp dword [edi + 0x2c], eax
jle 0x404a8c
call fcn.0040b92a
push eax
lea ecx, [ebp + 8]
call fcn.004012cf
mov eax, dword [0x45399c]
mov byte [ebp - 4], 0x1c
cmp dword [eax - 0xc], 0
je 0x4048e1
push str..mst
lea eax, [ebp - 0x18]
push 0x45399c
push eax
call fcn.00401a19
add esp, 0xc
mov byte [ebp - 4], 0x1d
jmp 0x404a5e
push esi
mov ecx, 0x45399c
call fcn.0040132a
cmp dword [0x4539ac], 0
jne 0x4048fe
cmp dword [0x4539b0], 0
je 0x40490b
cmp dword [0x4539e4], 0
je 0x404a76
cmp dword [0x4539c8], 0
je 0x4049f4
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
movzx eax, ax
mov edx, 0x401
mov ecx, eax
and ecx, 0x3ff
cmp dx, ax
je 0x40493f
push 0xd
pop eax
cmp cx, ax
je 0x40493f
mov eax, ebx
jmp 0x404942
xor eax, eax
inc eax
push dword [0x4539e8]
lea ecx, [ebp - 0x15c]
push eax
call fcn.0040341b
lea esi, [edi + 0x24]
mov byte [ebp - 4], 0x1e
push esi
lea ecx, [ebp - 0x4c]
call fcn.004137e4
lea ecx, [ebp - 0x15c]
call fcn.0040c218
cmp eax, 1
jne 0x4049d5
push dword [ebp - 0x50]
mov ecx, esi
call fcn.00403538
push str..mst
push eax
lea eax, [ebp - 0x18]
push eax
call fcn.00401a19
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.00401856
push dword [ebp - 0x50]
mov ecx, esi
call fcn.00403538
push eax
mov ecx, 0x45399c
call fcn.0040132a
lea ecx, [ebp - 0x15c]
mov byte [ebp - 4], 0x1c
call fcn.0040347f
jmp 0x404a76
lea ecx, [ebp - 0x15c]
mov byte [ebp - 4], 0x1c
call fcn.0040347f
mov ecx, dword [ebp + 8]
lea ecx, [ecx - 0x10]
call fcn.00401856
jmp 0x404acf
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.00408889
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.00401856
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.00401a19
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.00401856
lea eax, [ebp + 8]
mov ecx, edi
push eax
call fcn.00403b91
mov ecx, dword [ebp + 8]
lea ecx, [ecx - 0x10]
call fcn.00401856
xor ebx, ebx
inc ebx
jmp 0x404acf
cmp dword [0x4539a4], 0
je 0x404ac5
mov eax, dword [esi]
cmp dword [eax - 0xc], ebx
jne 0x404ab2
push str.Initialization:_Failed_to_initialize_Product___msi_key_not_specified._n
mov ecx, 0x453994
call fcn.00401ec8
jmp 0x404ac5
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.0040a616
mov ecx, dword [ebp - 0x24]
lea ecx, [ecx - 0x10]
call fcn.00401856
mov ecx, dword [ebp - 0x1c]
add ecx, 0xfffffff0
call fcn.00401856
mov ecx, dword [ebp - 0x20]
add ecx, 0xfffffff0
call fcn.00401856
mov eax, ebx
call fcn.0042172e
ret 4