Function at 0x40439d
Capabilities:
Identify system language via api

Disassembly:
push 0x150
mov eax, 0x439704
call fcn.00421920
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.00408ff6
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.00408ff6
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 0x4044bc
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.00402739
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.00408ff6
mov ecx, dword [ebp + 8]
mov byte [ebp - 4], 9
lea ecx, [ecx - 0x10]
call fcn.00401856
lea ecx, [ebp - 0x1c]
call fcn.004056f2
mov ecx, eax
call fcn.0040568e
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.00408ff6
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 0x404616
lea ecx, [ebp - 0x38]
call fcn.004138d8
lea eax, [ebp - 0x38]
mov byte [ebp - 4], 0xd
push eax
lea eax, [ebp - 0x24]
push eax
call fcn.0040543e
mov eax, dword [ebp - 0x30]
dec eax
pop ecx
pop ecx
js 0x40460a
mov esi, ebx
push esi
lea ecx, [ebp - 0x38]
call fcn.0040353b
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.004087cd
test eax, eax
je 0x4045cc
lea ecx, [edi + 0x38]
mov eax, dword [ecx]
cmp dword [eax - 0xc], 0
je 0x4045be
push 0x43d7cc
call fcn.00403dfd
lea ecx, [edi + 0x38]
mov eax, dword [ebp + 8]
push dword [eax - 0xc]
push eax
call fcn.00403e26
jmp 0x4045eb
push dword [ebp + 8]
push 0x43d7d0
push 0x453994
call fcn.004014f0
add esp, 0xc
mov ecx, 0x4538c8
call fcn.0040a75f
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 0x404575
lea esi, [edi + 4]
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 0xc
call fcn.004138ef
mov eax, dword [esi]
cmp dword [eax - 0xc], 0
je 0x404a94
push esi
mov ecx, 0x4538c8
call fcn.004087cd
test eax, eax
je 0x404a94
mov ecx, edi
call fcn.0040533b
mov esi, eax
mov dword [ebp - 0x18], esi
test esi, esi
je 0x404ad2
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.004051c0
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.004051c0
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.004051c0
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.004051c0
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.004051c0
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.004051c0
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.00405010
test eax, eax
je 0x404ad2
mov eax, dword [ebp - 0x1c]
cmp dword [eax - 0xc], 0
je 0x40488d
mov eax, dword [esi]
cmp dword [eax - 0xc], 0
je 0x40487e
lea ecx, [edi + 0x24]
push esi
push dword [ecx + 8]
call fcn.00413b15
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.004054ba
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 0x40487c
push 0x43c650
push dword [esi]
lea ecx, [ebp - 0x1c]
call fcn.004054ba
xor ebx, ebx
lea eax, [edi + 0x24]
push eax
lea eax, [ebp - 0x1c]
push eax
call fcn.0040543e
pop ecx
pop ecx
mov ecx, edi
call fcn.004050c8
mov dword [edi + 0x3c], eax
test eax, eax
jne 0x404a8f
cmp dword [edi + 0x2c], eax
jle 0x404a8f
call fcn.0040bac9
push eax
lea ecx, [ebp + 8]
call fcn.004012cf
mov eax, dword [0x45399c]
mov byte [ebp - 4], 0x1c
cmp dword [eax - 0xc], 0
je 0x4048e4
push str..mst
lea eax, [ebp - 0x18]
push 0x45399c
push eax
call fcn.00401a19
add esp, 0xc
mov byte [ebp - 4], 0x1d
jmp 0x404a61
push esi
mov ecx, 0x45399c
call fcn.0040132a
cmp dword [0x4539ac], 0
jne 0x404901
cmp dword [0x4539b0], 0
je 0x40490e
cmp dword [0x4539ec], 0
je 0x404a79
cmp dword [0x4539c8], 0
je 0x4049f7
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
movzx eax, ax
mov edx, 0x401
mov ecx, eax
and ecx, 0x3ff
cmp dx, ax
je 0x404942
push 0xd
pop eax
cmp cx, ax
je 0x404942
mov eax, ebx
jmp 0x404945
xor eax, eax
inc eax
push dword [0x4539f0]
lea ecx, [ebp - 0x15c]
push eax
call fcn.0040341e
lea esi, [edi + 0x24]
mov byte [ebp - 4], 0x1e
push esi
lea ecx, [ebp - 0x4c]
call fcn.004139ec
lea ecx, [ebp - 0x15c]
call fcn.0040c3b7
cmp eax, 1
jne 0x4049d8
push dword [ebp - 0x50]
mov ecx, esi
call fcn.0040353b
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.0040353b
push eax
mov ecx, 0x45399c
call fcn.0040132a
lea ecx, [ebp - 0x15c]
mov byte [ebp - 4], 0x1c
call fcn.00403482
jmp 0x404a79
lea ecx, [ebp - 0x15c]
mov byte [ebp - 4], 0x1c
call fcn.00403482
mov ecx, dword [ebp + 8]
lea ecx, [ecx - 0x10]
call fcn.00401856
jmp 0x404ad2
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.00408898
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.00403b94
mov ecx, dword [ebp + 8]
lea ecx, [ecx - 0x10]
call fcn.00401856
xor ebx, ebx
inc ebx
jmp 0x404ad2
cmp dword [0x4539a4], 0
je 0x404ac8
mov eax, dword [esi]
cmp dword [eax - 0xc], ebx
jne 0x404ab5
push str.Initialization:_Failed_to_initialize_Product___msi_key_not_specified._n
mov ecx, 0x453994
call fcn.00401ecb
jmp 0x404ac8
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.0040a75f
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.004218ee
ret 4