Function at 0x4043f5
Capabilities:
Identify system language via api

Disassembly:
push 0x150
mov eax, 0x43a3e1
call fcn.004224e0
mov edi, ecx
push 0x43df4c
lea ecx, [ebp - 0x20]
call fcn.0040194d
xor ebx, ebx
lea ecx, [ebp - 0x14]
push 0x43e790
mov dword [ebp - 4], ebx
call fcn.0040194d
push 0x455998
lea eax, [ebp - 0x14]
mov byte [ebp - 4], 1
push eax
lea eax, [ebp - 0x20]
mov ecx, 0x4558c8
push eax
lea eax, [ebp - 0x10]
push eax
call fcn.00409ae5
lea esi, [edi + 4]
mov byte [ebp - 4], 2
push eax
mov ecx, esi
call main
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 0x455998
lea eax, [ebp - 0x14]
mov byte [ebp - 4], 3
push eax
lea eax, [ebp - 0x20]
mov ecx, 0x4558c8
push eax
lea eax, [ebp - 0x10]
push eax
call fcn.00409ae5
lea ecx, [edi + 8]
mov byte [ebp - 4], 4
push eax
call main
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 0x404514
push 0x43e7a8
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.00402736
add esp, 0x18
push eax
lea ecx, [edi + 8]
mov byte [ebp - 4], 6
call main
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 0x43e7ac
lea ecx, [ebp + 8]
call fcn.0040194d
push 0x455998
lea eax, [ebp + 8]
mov byte [ebp - 4], 7
push eax
lea eax, [ebp - 0x20]
mov ecx, 0x4558c8
push eax
lea eax, [ebp - 0x1c]
push eax
call fcn.00409ae5
mov ecx, dword [ebp + 8]
mov byte [ebp - 4], 9
lea ecx, [ecx - 0x10]
call fcn.00401856
lea ecx, [ebp - 0x1c]
call fcn.00405e82
mov ecx, eax
call fcn.00405e1e
push str.PATCH
lea ecx, [ebp - 0x14]
call fcn.0040194d
push 0x455998
lea eax, [ebp - 0x14]
mov byte [ebp - 4], 0xa
push eax
lea eax, [ebp - 0x20]
mov ecx, 0x4558c8
push eax
lea eax, [ebp - 0x24]
push eax
call fcn.00409ae5
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 0x40466e
lea ecx, [ebp - 0x38]
call fcn.00414477
lea eax, [ebp - 0x38]
mov byte [ebp - 4], 0xd
push eax
lea eax, [ebp - 0x24]
push eax
call fcn.00405bce
mov eax, dword [ebp - 0x30]
dec eax
pop ecx
pop ecx
js 0x404662
mov esi, ebx
push esi
lea ecx, [ebp - 0x38]
call main
mov eax, dword [eax]
sub eax, 0x10
push eax
call main
add eax, 0x10
pop ecx
mov dword [ebp + 8], eax
lea eax, [ebp + 8]
mov byte [ebp - 4], 0xe
push eax
mov ecx, 0x4558c8
call fcn.004092bc
test eax, eax
je 0x404624
lea ecx, [edi + 0x38]
mov eax, dword [ecx]
cmp dword [eax - 0xc], 0
je 0x404616
push 0x43e7cc
call main
lea ecx, [edi + 0x38]
mov eax, dword [ebp + 8]
push dword [eax - 0xc]
push eax
call main
jmp 0x404643
push dword [ebp + 8]
push 0x43e7d0
push 0x455994
call main
add esp, 0xc
mov ecx, 0x4558c8
call fcn.0040b2fe
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 0x4045cd
lea esi, [edi + 4]
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 0xc
call fcn.0041448e
mov eax, dword [esi]
cmp dword [eax - 0xc], 0
je 0x404aec
push esi
mov ecx, 0x4558c8
call fcn.004092bc
test eax, eax
je 0x404aec
mov ecx, edi
call fcn.00405959
mov esi, eax
mov dword [ebp - 0x18], esi
test esi, esi
je 0x404b2a
push 0x43e970
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.004057de
lea ecx, [edi + 0xc]
mov byte [ebp - 4], 0x10
push eax
call main
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.004057de
lea ecx, [edi + 0x14]
mov byte [ebp - 4], 0x12
push eax
call main
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.004057de
lea ecx, [edi + 0x18]
mov byte [ebp - 4], 0x14
push eax
call main
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.004057de
lea ecx, [edi + 0x1c]
mov byte [ebp - 4], 0x16
push eax
call main
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 0x43e9d0
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.004057de
lea ecx, [edi + 0x10]
mov byte [ebp - 4], 0x18
push eax
call main
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.004057de
lea esi, [edi + 0x20]
mov byte [ebp - 4], 0x1a
push eax
mov ecx, esi
call main
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.00405068
test eax, eax
je 0x404b2a
mov eax, dword [ebp - 0x1c]
cmp dword [eax - 0xc], 0
je 0x4048e5
mov eax, dword [esi]
cmp dword [eax - 0xc], 0
je 0x4048d6
lea ecx, [edi + 0x24]
push esi
push dword [ecx + 8]
call main
push 0x43e7cc
lea eax, [ebp + 8]
push esi
push eax
call fcn.00401a19
add esp, 0xc
push 0x43d650
push dword [eax]
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], 0x1b
call main
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 0x4048d4
push 0x43d650
push dword [esi]
lea ecx, [ebp - 0x1c]
call main
xor ebx, ebx
lea eax, [edi + 0x24]
push eax
lea eax, [ebp - 0x1c]
push eax
call fcn.00405bce
pop ecx
pop ecx
mov ecx, edi
call fcn.00405120
mov dword [edi + 0x3c], eax
test eax, eax
jne 0x404ae7
cmp dword [edi + 0x2c], eax
jle 0x404ae7
call fcn.0040c667
push eax
lea ecx, [ebp + 8]
call main
mov eax, dword [0x45599c]
mov byte [ebp - 4], 0x1c
cmp dword [eax - 0xc], 0
je 0x40493c
push str..mst
lea eax, [ebp - 0x18]
push 0x45599c
push eax
call fcn.00401a19
add esp, 0xc
mov byte [ebp - 4], 0x1d
jmp 0x404ab9
push esi
mov ecx, 0x45599c
call main
cmp dword [0x4559ac], 0
jne 0x404959
cmp dword [0x4559b0], 0
je 0x404966
cmp dword [0x4559f0], 0
je 0x404ad1
cmp dword [0x4559c8], 0
je 0x404a4f
call dword [sym.imp.kernel32.dll_GetUserDefaultLangID]
movzx eax, ax
mov edx, 0x401
mov ecx, eax
and ecx, 0x3ff
cmp dx, ax
je 0x40499a
push 0xd
pop eax
cmp cx, ax
je 0x40499a
mov eax, ebx
jmp 0x40499d
xor eax, eax
inc eax
push dword [0x4559f4]
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 main
lea ecx, [ebp - 0x15c]
call fcn.0040cf55
cmp eax, 1
jne 0x404a30
push dword [ebp - 0x50]
mov ecx, esi
call main
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 main
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 main
push eax
mov ecx, 0x45599c
call main
lea ecx, [ebp - 0x15c]
mov byte [ebp - 4], 0x1c
call fcn.0040347a
jmp 0x404ad1
lea ecx, [ebp - 0x15c]
mov byte [ebp - 4], 0x1c
call fcn.0040347a
mov ecx, dword [ebp + 8]
lea ecx, [ecx - 0x10]
call fcn.00401856
jmp 0x404b2a
mov eax, dword [edi + 0x20]
push ecx
sub eax, 0x10
mov esi, esp
push eax
call main
add eax, 0x10
pop ecx
mov dword [esi], eax
mov ecx, 0x4558c8
lea eax, [edi + 0x24]
push eax
lea eax, [ebp - 0x18]
push eax
call fcn.00409387
push eax
lea ecx, [ebp + 8]
mov byte [ebp - 4], 0x20
call main
mov ecx, dword [ebp - 0x18]
mov byte [ebp - 4], 0x1c
lea ecx, [ecx - 0x10]
call fcn.00401856
lea eax, [ebp + 8]
mov ecx, 0x45599c
push eax
call main
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 main
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.00403b6d
mov ecx, dword [ebp + 8]
lea ecx, [ecx - 0x10]
call fcn.00401856
xor ebx, ebx
inc ebx
jmp 0x404b2a
cmp dword [0x4559a4], 0
je 0x404b20
mov eax, dword [esi]
cmp dword [eax - 0xc], ebx
jne 0x404b0d
push str.Initialization:_Failed_to_initialize_Product___msi_key_not_specified._n
mov ecx, 0x455994
call main
jmp 0x404b20
push eax
push str.Initialization:_Failed_to_initialize_Product___Unable_to_locate___s__file._n
push 0x455994
call main
add esp, 0xc
mov ecx, 0x4558c8
call fcn.0040b2fe
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.004224ae
ret 4