Function at 0x416c51
Capabilities:
Get geographical location

Disassembly:
mov eax, 0x4304e7
call fcn.004083b8
mov eax, 0x2e8c
call fcn.00408ea0
push ebx
xor ebx, ebx
cmp dword [ebp + 8], ebx
push esi
mov esi, ecx
jne 0x416c77
xor eax, eax
jmp 0x417fa7
push edi
mov ecx, esi
push dword [ebp + 0xc]
call fcn.0041622d
push 0x2710
lea eax, [ebp - 0x2e98]
push ebx
push eax
call fcn.00408630
add esp, 0xc
mov dword [esi + 0x54], 1
mov al, byte [0x4541f8]
lea edi, [ebp - 0x137]
push 0x40
mov byte [ebp - 0x138], al
pop ecx
xor eax, eax
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov al, byte [ebp + 0xb]
push ebx
lea ecx, [ebp - 0x34]
mov byte [ebp - 0x34], al
call fcn.00403360
mov al, byte [0x4541f8]
push 0x40
mov byte [ebp - 0x548], al
pop ecx
xor eax, eax
lea edi, [ebp - 0x547]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov dword [ebp - 4], ebx
mov dword [ebp + 0xc], ebx
stosb byte es:[edi], al
mov eax, dword [ebp + 0xc]
sub eax, ebx
je 0x416d15
dec eax
je 0x416d0b
dec eax
jne 0x416d1b
mov ax, word [esi + 0x40]
push eax
lea eax, [ebp - 0x548]
push eax
call fcn.0041de6d
pop ecx
pop ecx
jmp 0x416d1b
mov ax, word [esi + 0x40]
and ax, 0x3ff
jmp 0x416cfa
mov byte [ebp - 0x548], bl
mov edi, str.Strings
push edi
call fcn.00409f30
pop ecx
push eax
push edi
lea ecx, [ebp - 0x34]
call fcn.00403650
lea eax, [ebp - 0x548]
push eax
call fcn.00409f30
pop ecx
push eax
lea eax, [ebp - 0x548]
push eax
lea ecx, [ebp - 0x34]
call fcn.00402da0
mov eax, dword [ebp - 0x30]
cmp eax, ebx
jne 0x416d5a
mov eax, 0x43257c
lea ecx, [ebp - 0x2e98]
push 0x2710
push ecx
push ebx
push ebx
push eax
push dword [ebp + 8]
call fcn.0041d89c
add esp, 0x18
test eax, eax
je 0x416e30
cmp byte [ebp - 0x2e98], bl
lea edi, [ebp - 0x2e98]
je 0x416e30
mov eax, dword [ebp - 0x30]
mov byte [ebp - 0x138], bl
cmp eax, ebx
jne 0x416da0
mov eax, 0x43257c
lea ecx, [ebp - 0x138]
push 0x104
push ecx
push edi
push ebx
push eax
push dword [ebp + 8]
call fcn.0041d89c
add esp, 0x18
test eax, eax
je 0x416e1b
mov al, byte [ebp + 0xb]
push ebx
lea ecx, [ebp - 0x1c]
mov byte [ebp - 0x1c], al
call fcn.00403360
push edi
call fcn.00409f30
pop ecx
push eax
push edi
lea ecx, [ebp - 0x1c]
call fcn.00403650
lea eax, [ebp - 0x1c]
lea ecx, [esi + 0x44]
push eax
mov byte [ebp - 4], 1
call fcn.0041812c
mov dword [ebp - 0x24], eax
lea eax, [ebp - 0x138]
push eax
call fcn.00409f30
pop ecx
mov ecx, dword [ebp - 0x24]
push eax
lea eax, [ebp - 0x138]
push eax
call fcn.00403650
push 1
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], bl
call fcn.00403360
push edi
call fcn.00409f30
cmp byte [edi + eax + 1], bl
lea edi, [edi + eax + 1]
pop ecx
jne 0x416d8e
inc dword [ebp + 0xc]
cmp dword [ebp + 0xc], 3
jl 0x416ce9
mov al, byte [0x4541f8]
push 0x40
mov byte [ebp - 0x64c], al
pop ecx
xor eax, eax
lea edi, [ebp - 0x64b]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov edi, 0x104
lea eax, [ebp - 0x64c]
push edi
push eax
push 0x5a
push 0x400
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoA]
test eax, eax
je 0x416edd
mov al, byte [ebp + 0xb]
push ebx
lea ecx, [ebp - 0x1c]
mov byte [ebp - 0x1c], al
call fcn.00403360
push str._country_
call fcn.00409f30
pop ecx
push eax
push str._country_
lea ecx, [ebp - 0x1c]
call fcn.00403650
lea eax, [ebp - 0x1c]
lea ecx, [esi + 0x44]
push eax
mov byte [ebp - 4], 2
call fcn.0041812c
mov dword [ebp + 0xc], eax
lea eax, [ebp - 0x64c]
push eax
call fcn.00409f30
pop ecx
mov ecx, dword [ebp + 0xc]
push eax
lea eax, [ebp - 0x64c]
push eax
call fcn.00403650
push 1
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], bl
call fcn.00403360
jmp 0x416ef1
push str.Could_not_get_country_code
push 8
push 0x444698
call fcn.00413026
add esp, 0xc
cmp dword [ebp + 0x18], ebx
mov byte [ebp - 0x138], bl
je 0x416f54
mov al, byte [ebp + 0xb]
push ebx
lea ecx, [ebp - 0x1c]
mov byte [ebp - 0x1c], al
call fcn.00403360
mov edi, str._INSTALLDIR_
push edi
call fcn.00409f30
pop ecx
push eax
push edi
lea ecx, [ebp - 0x1c]
call fcn.00403650
lea eax, [ebp - 0x1c]
lea ecx, [esi + 0x44]
push eax
mov byte [ebp - 4], 3
call fcn.0041812c
push dword [ebp + 0x18]
mov edi, eax
call fcn.00409f30
pop ecx
push eax
mov ecx, edi
push dword [ebp + 0x18]
call fcn.00403650
mov byte [ebp - 4], bl
push 1
lea ecx, [ebp - 0x1c]
jmp 0x4170e1
mov ax, word [esi + 0x40]
push eax
lea eax, [ebp - 0x138]
push edi
push eax
push str.INSTALLDIR
push 0x43d2a8
push dword [ebp + 8]
call fcn.0041dce8
add esp, 0x18
test eax, eax
je 0x416fda
mov al, byte [ebp + 0xb]
push ebx
lea ecx, [ebp - 0x1c]
mov byte [ebp - 0x1c], al
call fcn.00403360
mov edi, str._INSTALLDIR_
push edi
call fcn.00409f30
pop ecx
push eax
push edi
lea ecx, [ebp - 0x1c]
call fcn.00403650
lea eax, [ebp - 0x1c]
lea ecx, [esi + 0x44]
push eax
mov byte [ebp - 4], 4
call fcn.0041812c
mov edi, eax
lea eax, [ebp - 0x138]
push eax
call fcn.00409f30
pop ecx
push eax
lea eax, [ebp - 0x138]
push eax
mov ecx, edi
call fcn.00403650
mov byte [ebp - 4], bl
push 1
lea ecx, [ebp - 0x1c]
jmp 0x4170e1
mov ax, word [esi + 0x40]
push eax
lea eax, [ebp - 0x138]
push edi
push eax
push str.INSTALLDIR
push str.Version
push dword [ebp + 8]
call fcn.0041dce8
add esp, 0x18
test eax, eax
je 0x417060
mov al, byte [ebp + 0xb]
push ebx
lea ecx, [ebp - 0x1c]
mov byte [ebp - 0x1c], al
call fcn.00403360
mov edi, str._INSTALLDIR_
push edi
call fcn.00409f30
pop ecx
push eax
push edi
lea ecx, [ebp - 0x1c]
call fcn.00403650
lea eax, [ebp - 0x1c]
lea ecx, [esi + 0x44]
push eax
mov byte [ebp - 4], 5
call fcn.0041812c
mov edi, eax
lea eax, [ebp - 0x138]
push eax
call fcn.00409f30
pop ecx
push eax
lea eax, [ebp - 0x138]
push eax
mov ecx, edi
call fcn.00403650
mov byte [ebp - 4], bl
push 1
lea ecx, [ebp - 0x1c]
jmp 0x4170e1
mov ax, word [esi + 0x40]
push eax
lea eax, [ebp - 0x138]
push edi
push eax
push str.Pre_Install
push str.Version
push dword [ebp + 8]
call fcn.0041dce8
add esp, 0x18
test eax, eax
je 0x4170e6
mov al, byte [ebp + 0xb]
push ebx
lea ecx, [ebp - 0x1c]
mov byte [ebp - 0x1c], al
call fcn.00403360
mov edi, str._INSTALLDIR_
push edi
call fcn.00409f30
pop ecx
push eax
push edi
lea ecx, [ebp - 0x1c]
call fcn.00403650
lea eax, [ebp - 0x1c]
lea ecx, [esi + 0x44]
push eax
mov byte [ebp - 4], 6
call fcn.0041812c
mov edi, eax
lea eax, [ebp - 0x138]
push eax
call fcn.00409f30
pop ecx
push eax
lea eax, [ebp - 0x138]
push eax
mov ecx, edi
call fcn.00403650
mov byte [ebp - 4], bl
push 1
lea ecx, [ebp - 0x1c]
call fcn.00403360
lea eax, [ebp - 0x138]
mov byte [ebp - 0x138], bl
push eax
call fcn.0041a6f6
mov al, byte [ebp + 0xb]
pop ecx
push ebx
lea ecx, [ebp - 0x1c]
mov byte [ebp - 0x1c], al
call fcn.00403360
mov edi, str._MyPath_
push edi
call fcn.00409f30
pop ecx
push eax
push edi
lea ecx, [ebp - 0x1c]
call fcn.00403650
lea eax, [ebp - 0x1c]
lea ecx, [esi + 0x44]
push eax
mov byte [ebp - 4], 7
call fcn.0041812c
mov edi, eax
lea eax, [ebp - 0x138]
push eax
call fcn.00409f30
pop ecx
push eax
lea eax, [ebp - 0x138]
push eax
mov ecx, edi
call fcn.00403650
push 1
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], bl
call fcn.00403360
push dword [ebp + 0x14]
lea eax, [ebp - 0x138]
push eax
call fcn.0040d8a0
lea eax, [ebp - 0x138]
push eax
call fcn.0041ac1c
mov al, byte [ebp + 0xb]
add esp, 0xc
lea ecx, [ebp - 0x1c]
mov byte [ebp - 0x1c], al
push ebx
call fcn.00403360
mov edi, str._CDRoot_
push edi
call fcn.00409f30
pop ecx
push eax
push edi
lea ecx, [ebp - 0x1c]
call fcn.00403650
lea eax, [ebp - 0x1c]
lea ecx, [esi + 0x44]
push eax
mov byte [ebp - 4], 8
call fcn.0041812c
mov edi, eax
lea eax, [ebp - 0x138]
push eax
call fcn.00409f30
pop ecx
push eax
lea eax, [ebp - 0x138]
push eax
mov ecx, edi
call fcn.00403650
push 1
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], bl
call fcn.00403360
push dword [ebp + 0x10]
mov byte [ebp - 0x138], bl
push dword [ebp + 8]
lea ecx, [ebp - 0x788]
call sym.HPZwis01.exe_public:_void___thiscall_CFactory::constructor_char_const___unsigned_long_int_
mov al, byte [ebp + 0xb]
push ebx
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], 9
mov byte [ebp - 0x1c], al
call fcn.00403360
mov edi, str._LANG_
push edi
call fcn.00409f30
pop ecx
push eax
push edi
lea ecx, [ebp - 0x1c]
call fcn.00403650
mov ax, word [esi + 0x40]
lea ecx, [ebp - 0x788]
push eax
mov byte [ebp - 4], 0xa
call sym.HPZwis01.exe_public:_char_const__const___thiscall_CFactory::Get3LetterLanguage_unsigned_short_int_const
mov dword [ebp + 0x18], eax
lea eax, [ebp - 0x1c]
push eax
lea ecx, [esi + 0x44]
call fcn.0041812c
push dword [ebp + 0x18]
mov dword [ebp + 0xc], eax
call fcn.00409f30
pop ecx
mov ecx, dword [ebp + 0xc]
push eax
push dword [ebp + 0x18]
call fcn.00403650
push 1
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], 9
call fcn.00403360
mov al, byte [ebp + 0xb]
push ebx
lea ecx, [ebp - 0x1c]
mov byte [ebp - 0x1c], al
call fcn.00403360
push edi
call fcn.00409f30
pop ecx
push eax
push edi
lea ecx, [ebp - 0x1c]
call fcn.00403650
lea eax, [ebp - 0x1c]
lea ecx, [esi + 0x44]
push eax
mov byte [ebp - 4], 0xb
call fcn.0041812c
mov eax, dword [eax + 4]
cmp eax, ebx
jne 0x41729c
mov eax, 0x43257c
push eax
lea ecx, [ebp - 0x788]
call sym.HPZwis01.exe_public:_unsigned_short_int___thiscall_CFactory::GetLanguageId_char_const__const
movzx eax, ax
push eax
lea eax, [ebp - 0x138]
push 0x43d430
push eax
call fcn.00407725
add esp, 0xc
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], 9
push 1
call fcn.00403360
mov al, byte [ebp + 0xb]
push ebx
lea ecx, [ebp - 0x1c]
mov byte [ebp - 0x1c], al
call fcn.00403360
mov edi, str._LANGID_
push edi
call fcn.00409f30
pop ecx
push eax
push edi
lea ecx, [ebp - 0x1c]
call fcn.00403650
lea eax, [ebp - 0x1c]
lea ecx, [esi + 0x44]
push eax
mov byte [ebp - 4], 0xc
call fcn.0041812c
mov edi, eax
lea eax, [ebp - 0x138]
push eax
call fcn.00409f30
pop ecx
push eax
lea eax, [ebp - 0x138]
push eax
mov ecx, edi
call fcn.00403650
push 1
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], 9
call fcn.00403360
push 0x800
lea eax, [ebp - 0x138]
push 0x104
push eax
push str.LanguagesInthisCD
push str.Version
push dword [ebp + 8]
mov ecx, esi
call fcn.00418072
mov al, byte [ebp + 0xb]
push ebx
lea ecx, [ebp - 0x1c]
mov byte [ebp - 0x1c], al
call fcn.00403360
mov edi, str._LanguagesInthisCD_
push edi
call fcn.00409f30
pop ecx
push eax
push edi
lea ecx, [ebp - 0x1c]
call fcn.00403650
lea eax, [ebp - 0x1c]
lea ecx, [esi + 0x44]
push eax
mov byte [ebp - 4], 0xd
call fcn.0041812c
mov edi, eax
lea eax, [ebp - 0x138]
push eax
call fcn.00409f30
pop ecx
push eax
lea eax, [ebp - 0x138]
mov ecx, edi
push eax
call fcn.00403650
push 1
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], 9
call fcn.00403360
mov ax, word [esi + 0x40]
mov byte [ebp - 0x138], bl
push eax
lea eax, [ebp - 0x138]
push eax
call fcn.0041de6d
lea eax, [ebp - 0x138]
push eax
call fcn.00409f30
add esp, 0xc
test eax, eax
lea eax, [ebp - 0x138]
jbe 0x4173ec
push eax
call fcn.0040770e
pop ecx
mov dword [ebp + 0x18], eax
mov al, byte [ebp + 0xb]
push ebx
lea ecx, [ebp - 0x1c]
mov byte [ebp - 0x1c], al
call fcn.00403360
mov edi, str._LangQualifier_
push edi
call fcn.00409f30
pop ecx
push eax
push edi
lea ecx, [ebp - 0x1c]
call fcn.00403650
lea eax, [ebp - 0x1c]
lea ecx, [esi + 0x44]
push eax
mov byte [ebp - 4], 0xe
call fcn.0041812c
push dword [ebp + 0x18]
mov edi, eax
call fcn.00409f30
pop ecx
push eax
mov ecx, edi
push dword [ebp + 0x18]
call fcn.00403650
push 1
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], 9
call fcn.00403360
mov ax, word [esi + 0x40]
mov byte [ebp - 0x138], bl
and ax, 0x3ff
push eax
lea eax, [ebp - 0x138]
push eax
call fcn.0041de6d
lea eax, [ebp - 0x138]
push eax
call fcn.00409f30
add esp, 0xc
test eax, eax
lea eax, [ebp - 0x138]
jbe 0x417483
push eax
call fcn.0040770e
pop ecx
mov dword [ebp + 0x18], eax
mov al, byte [ebp + 0xb]
push ebx
lea ecx, [ebp - 0x1c]
mov byte [ebp - 0x1c], al
call fcn.00403360
mov edi, str._PrimaryLangQualifier_
push edi
call fcn.00409f30
pop ecx
push eax
push edi
lea ecx, [ebp - 0x1c]
call fcn.00403650
lea eax, [ebp - 0x1c]
lea ecx, [esi + 0x44]
push eax
mov byte [ebp - 4], 0xf
call fcn.0041812c
push dword [ebp + 0x18]
mov edi, eax
call fcn.00409f30
pop ecx
push eax
mov ecx, edi
push dword [ebp + 0x18]
call fcn.00403650
push 1
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], 9
call fcn.00403360
lea ecx, [ebp - 0x788]
mov byte [ebp - 4], bl
call sym.HPZwis01.exe_public_virtual:_void___thiscall_CFactory::destructor_void_
mov dl, byte [0x4541f8]
push 0x40
pop ecx
xor eax, eax
lea edi, [ebp - 0x443]
mov byte [ebp - 0x444], dl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
push 0x40
xor eax, eax
pop ecx
lea edi, [ebp - 0x23b]
mov byte [ebp - 0x23c], dl
push 0x40
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
pop ecx
xor eax, eax
lea edi, [ebp - 0x33f]
mov byte [ebp - 0x340], dl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [ebp - 0x444]
mov byte [ebp - 0x138], bl
push eax
call fcn.0041dda1
lea eax, [ebp - 0x23c]
push eax
call fcn.0041de21
lea eax, [ebp - 0x444]
push eax
lea eax, [ebp - 0x340]
push eax
call fcn.0040d890
lea eax, [ebp - 0x23c]
push eax
call fcn.00409f30
add esp, 0x14
test eax, eax
je 0x41758e
lea eax, [ebp - 0x23c]
push eax
lea eax, [ebp - 0x340]
push eax
call fcn.0040d8a0
pop ecx
pop ecx
lea eax, [ebp - 0x444]
push eax
call fcn.00409f30
test eax, eax
pop ecx
je 0x417638
lea eax, [ebp - 0x444]
push eax
call fcn.0040770e
pop ecx
mov edi, 0x444698
push eax
push str.OS_MACRO_will_expand_to__s
push 0x80
push edi
call fcn.00413026
mov al, byte [ebp + 0xb]
add esp, 0x10
lea ecx, [ebp - 0x1c]
mov byte [ebp - 0x1c], al
push ebx
call fcn.00403360
push str._OS_
call fcn.00409f30
pop ecx
push eax
push str._OS_
lea ecx, [ebp - 0x1c]
call fcn.00403650
lea eax, [ebp - 0x444]
mov byte [ebp - 4], 0x10
push eax
call fcn.0040770e
mov dword [ebp + 0x18], eax
pop ecx
lea eax, [ebp - 0x1c]
lea ecx, [esi + 0x44]
push eax
call fcn.0041812c
push dword [ebp + 0x18]
mov dword [ebp + 0xc], eax
call fcn.00409f30
pop ecx
mov ecx, dword [ebp + 0xc]
push eax
push dword [ebp + 0x18]
call fcn.00403650
push 1
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], bl
call fcn.00403360
jmp 0x4176ac
push str.OS_MACRO_is_empty___Cant_expand_OS
push 8
push 0x444698
call fcn.00413026
mov al, byte [ebp + 0xb]
add esp, 0xc
lea ecx, [ebp - 0x1c]
mov byte [ebp - 0x1c], al
push ebx
call fcn.00403360
mov edi, str._OS_
push edi
call fcn.00409f30
pop ecx
push eax
push edi
lea ecx, [ebp - 0x1c]
call fcn.00403650
lea eax, [ebp - 0x1c]
lea ecx, [esi + 0x44]
push eax
mov byte [ebp - 4], 0x11
call fcn.0041812c
mov edi, 0x4541f8
mov dword [ebp + 0x18], eax
push edi
call fcn.00409f30
pop ecx
mov ecx, dword [ebp + 0x18]
push eax
push edi
call fcn.00403650
push 1
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], bl
call fcn.00403360
mov edi, 0x444698
lea eax, [ebp - 0x23c]
push eax
call fcn.00409f30
test eax, eax
pop ecx
je 0x41774c
lea eax, [ebp - 0x23c]
push eax
call fcn.0040770e
pop ecx
push eax
push str.SP_MACRO_will_expand_to__s
push 0x80
push edi
call fcn.00413026
mov al, byte [ebp + 0xb]
add esp, 0x10
lea ecx, [ebp - 0x1c]
mov byte [ebp - 0x1c], al
push ebx
call fcn.00403360
push str._SP_
call fcn.00409f30
pop ecx
push eax
push str._SP_
lea ecx, [ebp - 0x1c]
call fcn.00403650
lea eax, [ebp - 0x23c]
mov byte [ebp - 4], 0x12
push eax
call fcn.0040770e
mov dword [ebp + 0x18], eax
pop ecx
lea eax, [ebp - 0x1c]
lea ecx, [esi + 0x44]
push eax
call fcn.0041812c
push dword [ebp + 0x18]
mov dword [ebp + 0xc], eax
call fcn.00409f30
pop ecx
mov ecx, dword [ebp + 0xc]
push eax
push dword [ebp + 0x18]
call fcn.00403650
mov byte [ebp - 4], bl
push 1
lea ecx, [ebp - 0x1c]
jmp 0x4177bb
push str.SP_MACRO_will_expand_to___
push 0x80
push edi
call fcn.00413026
mov al, byte [ebp + 0xb]
add esp, 0xc
lea ecx, [ebp - 0x1c]
mov byte [ebp - 0x1c], al
push ebx
call fcn.00403360
push str._SP_
call fcn.00409f30
pop ecx
push eax
push str._SP_
lea ecx, [ebp - 0x1c]
call fcn.00403650
lea eax, [ebp - 0x1c]
lea ecx, [esi + 0x44]
push eax
mov byte [ebp - 4], 0x13
call fcn.0041812c
push 0x4541f8
mov dword [ebp + 0x18], eax
call fcn.00409f30
pop ecx
mov ecx, dword [ebp + 0x18]
push eax
push 0x4541f8
call fcn.00403650
mov byte [ebp - 4], bl
push 1
lea ecx, [ebp - 0x1c]
call fcn.00403360
lea eax, [ebp - 0x340]
push eax
call fcn.00409f30
test eax, eax
pop ecx
je 0x417858
lea eax, [ebp - 0x340]
push eax
call fcn.0040770e
pop ecx
push eax
push str.OSSP_MACRO_will_expand_to__s
push 0x80
push edi
call fcn.00413026
mov al, byte [ebp + 0xb]
add esp, 0x10
lea ecx, [ebp - 0x1c]
mov byte [ebp - 0x1c], al
push ebx
call fcn.00403360
mov edi, str._OSSP_
push edi
call fcn.00409f30
pop ecx
push eax
push edi
lea ecx, [ebp - 0x1c]
call fcn.00403650
lea eax, [ebp - 0x340]
mov byte [ebp - 4], 0x14
push eax
call fcn.0040770e
mov edi, eax
pop ecx
lea eax, [ebp - 0x1c]
lea ecx, [esi + 0x44]
push eax
call fcn.0041812c
push edi
mov dword [ebp + 0x18], eax
call fcn.00409f30
pop ecx
mov ecx, dword [ebp + 0x18]
push eax
push edi
call fcn.00403650
mov byte [ebp - 4], bl
push 1
lea ecx, [ebp - 0x1c]
jmp 0x4178be
push str.OSSP_MACRO_is_empty___Cant_expand_OSSP
push 8
push edi
call fcn.00413026
mov al, byte [ebp + 0xb]
add esp, 0xc
lea ecx, [ebp - 0x1c]
mov byte [ebp - 0x1c], al
push ebx
call fcn.00403360
mov edi, str._OSSP_
push edi
call fcn.00409f30
pop ecx
push eax
push edi
lea ecx, [ebp - 0x1c]
call fcn.00403650
lea eax, [ebp - 0x1c]
lea ecx, [esi + 0x44]
push eax
mov byte [ebp - 4], 0x15
call fcn.0041812c
mov edi, 0x4541f8
mov dword [ebp + 0x18], eax
push edi
call fcn.00409f30
pop ecx
mov ecx, dword [ebp + 0x18]
push eax
push edi
call fcn.00403650
mov byte [ebp - 4], bl
push 1
lea ecx, [ebp - 0x1c]
call fcn.00403360
mov ax, word [esi + 0x40]
mov edi, 0x104
push eax
lea eax, [ebp - 0x138]
push edi
push eax
push str.CDGuid
push str.Version
push dword [ebp + 8]
mov byte [ebp - 0x138], bl
call fcn.0041dce8
add esp, 0x18
test eax, eax
je 0x417959
mov al, byte [ebp + 0xb]
push ebx
lea ecx, [ebp - 0x1c]
mov byte [ebp - 0x1c], al
call fcn.00403360
push str._CDGuid_
call fcn.00409f30
pop ecx
push eax
push str._CDGuid_
lea ecx, [ebp - 0x1c]
call fcn.00403650
lea eax, [ebp - 0x1c]
lea ecx, [esi + 0x44]
push eax
mov byte [ebp - 4], 0x16
call fcn.0041812c
mov dword [ebp + 0x18], eax
lea eax, [ebp - 0x138]
push eax
call fcn.00409f30
pop ecx
mov ecx, dword [ebp + 0x18]
push eax
lea eax, [ebp - 0x138]
push eax
call fcn.00403650
push 1
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], bl
call fcn.00403360
mov ax, word [esi + 0x40]
mov byte [ebp - 0x138], bl
push eax
lea eax, [ebp - 0x138]
push edi
push eax
push str.DIVISION
push str.Version
push dword [ebp + 8]
call fcn.0041dce8
add esp, 0x18
test eax, eax
je 0x4179ea
mov al, byte [ebp + 0xb]
push ebx
lea ecx, [ebp - 0x1c]
mov byte [ebp - 0x1c], al
call fcn.00403360
push str._DIVISION_
call fcn.00409f30
pop ecx
push eax
push str._DIVISION_
lea ecx, [ebp - 0x1c]
call fcn.00403650
lea eax, [ebp - 0x1c]
lea ecx, [esi + 0x44]
push eax
mov byte [ebp - 4], 0x17
call fcn.0041812c
mov dword [ebp + 0x18], eax
lea eax, [ebp - 0x138]
push eax
call fcn.00409f30
pop ecx
mov ecx, dword [ebp + 0x18]
push eax
lea eax, [ebp - 0x138]
push eax
call fcn.00403650
push 1
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], bl
call fcn.00403360
mov ax, word [esi + 0x40]
mov byte [ebp - 0x138], bl
push eax
lea eax, [ebp - 0x138]
push edi
push eax
push str.Manufacturer
push str.Version
push dword [ebp + 8]
call fcn.0041dce8
add esp, 0x18
test eax, eax
je 0x417a7b
mov al, byte [ebp + 0xb]
push ebx
lea ecx, [ebp - 0x1c]
mov byte [ebp - 0x1c], al
call fcn.00403360
push str._Manufacturer_
call fcn.00409f30
pop ecx
push eax
push str._Manufacturer_
lea ecx, [ebp - 0x1c]
call fcn.00403650
lea eax, [ebp - 0x1c]
lea ecx, [esi + 0x44]
push eax
mov byte [ebp - 4], 0x18
call fcn.0041812c
mov dword [ebp + 0x18], eax
lea eax, [ebp - 0x138]
push eax
call fcn.00409f30
pop ecx
mov ecx, dword [ebp + 0x18]
push eax
lea eax, [ebp - 0x138]
push eax
call fcn.00403650
push 1
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], bl
call fcn.00403360
mov ax, word [esi + 0x40]
mov byte [ebp - 0x138], bl
push eax
lea eax, [ebp - 0x138]
push edi
push eax
push str.RegistryManufacturer
push str.Version
push dword [ebp + 8]
call fcn.0041dce8
add esp, 0x18
test eax, eax
je 0x417b0c
mov al, byte [ebp + 0xb]
push ebx
lea ecx, [ebp - 0x1c]
mov byte [ebp - 0x1c], al
call fcn.00403360
push str._RegistryManufacturer_
call fcn.00409f30
pop ecx
push eax
push str._RegistryManufacturer_
lea ecx, [ebp - 0x1c]
call fcn.00403650
lea eax, [ebp - 0x1c]
lea ecx, [esi + 0x44]
push eax
mov byte [ebp - 4], 0x19
call fcn.0041812c
mov dword [ebp + 0x18], eax
lea eax, [ebp - 0x138]
push eax
call fcn.00409f30
pop ecx
mov ecx, dword [ebp + 0x18]
push eax
lea eax, [ebp - 0x138]
push eax
call fcn.00403650
push 1
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], bl
call fcn.00403360
mov ax, word [esi + 0x40]
mov byte [ebp - 0x138], bl
push eax
lea eax, [ebp - 0x138]
push edi
push eax
push str.ProductSeries
push str.Version
push dword [ebp + 8]
call fcn.0041dce8
add esp, 0x18
test eax, eax
je 0x417b9d
mov al, byte [ebp + 0xb]
push ebx
lea ecx, [ebp - 0x1c]
mov byte [ebp - 0x1c], al
call fcn.00403360
push str._ProductSeries_
call fcn.00409f30
pop ecx
push eax
push str._ProductSeries_
lea ecx, [ebp - 0x1c]
call fcn.00403650
lea eax, [ebp - 0x1c]
lea ecx, [esi + 0x44]
push eax
mov byte [ebp - 4], 0x1a
call fcn.0041812c
mov dword [ebp + 0x18], eax
lea eax, [ebp - 0x138]
push eax
call fcn.00409f30
pop ecx
mov ecx, dword [ebp + 0x18]
push eax
lea eax, [ebp - 0x138]
push eax
call fcn.00403650
push 1
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], bl
call fcn.00403360
mov ax, word [esi + 0x40]
mov byte [ebp - 0x138], bl
push eax
lea eax, [ebp - 0x138]
push edi
push eax
push str.SoftwareGuid
push str.Version
push dword [ebp + 8]
call fcn.0041dce8
add esp, 0x18
test eax, eax
je 0x417c2e
mov al, byte [ebp + 0xb]
push ebx
lea ecx, [ebp - 0x1c]
mov byte [ebp - 0x1c], al
call fcn.00403360
push str._SoftwareGuid_
call fcn.00409f30
pop ecx
push eax
push str._SoftwareGuid_
lea ecx, [ebp - 0x1c]
call fcn.00403650
lea eax, [ebp - 0x1c]
lea ecx, [esi + 0x44]
push eax
mov byte [ebp - 4], 0x1b
call fcn.0041812c
mov dword [ebp + 0x18], eax
lea eax, [ebp - 0x138]
push eax
call fcn.00409f30
pop ecx
mov ecx, dword [ebp + 0x18]
push eax
lea eax, [ebp - 0x138]
push eax
call fcn.00403650
push 1
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], bl
call fcn.00403360
mov ax, word [esi + 0x40]
mov byte [ebp - 0x138], bl
push eax
lea eax, [ebp - 0x138]
push edi
push eax
push str.AutorunLocation
push str.Version
push dword [ebp + 8]
call fcn.0041dce8
add esp, 0x18
test eax, eax
je 0x417cbf
mov al, byte [ebp + 0xb]
push ebx
lea ecx, [ebp - 0x1c]
mov byte [ebp - 0x1c], al
call fcn.00403360
push str._AutorunLocation_
call fcn.00409f30
pop ecx
push eax
push str._AutorunLocation_
lea ecx, [ebp - 0x1c]
call fcn.00403650
lea eax, [ebp - 0x1c]
lea ecx, [esi + 0x44]
push eax
mov byte [ebp - 4], 0x1c
call fcn.0041812c
mov dword [ebp + 0x18], eax
lea eax, [ebp - 0x138]
push eax
call fcn.00409f30
pop ecx
mov ecx, dword [ebp + 0x18]
push eax
lea eax, [ebp - 0x138]
push eax
call fcn.00403650
push 1
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], bl
call fcn.00403360
lea eax, [ebp - 0x138]
push edi
push eax
push str.UpdateFolder
push 0x441f10
mov byte [ebp - 0x138], bl
push dword [ebp + 8]
call fcn.0041de9a
add esp, 0x14
test eax, eax
jne 0x417d3e
lea eax, [ebp - 0x138]
push str._programfiles_
push eax
call fcn.0040d890
lea eax, [ebp - 0x138]
push str._Manufacturer_
push eax
call fcn.0040d8a0
lea eax, [ebp - 0x138]
push 0x43d2b8
push eax
call fcn.0040d8a0
lea eax, [ebp - 0x138]
push str._CDGuid_
push eax
call fcn.0040d8a0
lea eax, [ebp - 0x138]
push str.wup_
push eax
call fcn.0040d8a0
add esp, 0x28
mov al, byte [ebp + 0xb]
push ebx
lea ecx, [ebp - 0x1c]
mov byte [ebp - 0x1c], al
call fcn.00403360
mov edi, str._UpdateFolder_
push edi
call fcn.00409f30
pop ecx
push eax
push edi
lea ecx, [ebp - 0x1c]
call fcn.00403650
lea eax, [ebp - 0x1c]
lea ecx, [esi + 0x44]
push eax
mov byte [ebp - 4], 0x1d
call fcn.0041812c
mov edi, eax
lea eax, [ebp - 0x138]
push eax
call fcn.00409f30
pop ecx
push eax
lea eax, [ebp - 0x138]
push eax
mov ecx, edi
call fcn.00403650
push 1
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], bl
call fcn.00403360
mov al, byte [ebp + 0xb]
push ebx
lea ecx, [ebp - 0x1c]
mov byte [ebp - 0x1c], al
call fcn.00403360
mov edi, str._Preload_
push edi
call fcn.00409f30
pop ecx
push eax
push edi
lea ecx, [ebp - 0x1c]
call fcn.00403650
mov eax, dword [esi + 0x48]
lea ecx, [esi + 0x44]
mov dword [ebp + 0x18], eax
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp + 0xc]
push eax
mov byte [ebp - 4], 0x1e
call fcn.004181d4
mov eax, dword [ebp + 0x18]
push 1
cmp dword [ebp + 0xc], eax
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], bl
sete byte [ebp + 0x1b]
call fcn.00403360
cmp byte [ebp + 0x1b], bl
je 0x417e4f
mov al, byte [ebp + 0xb]
push ebx
lea ecx, [ebp - 0x1c]
mov byte [ebp - 0x1c], al
call fcn.00403360
push edi
call fcn.00409f30
pop ecx
push eax
push edi
lea ecx, [ebp - 0x1c]
call fcn.00403650
lea eax, [ebp - 0x1c]
lea ecx, [esi + 0x44]
push eax
mov byte [ebp - 4], 0x1f
call fcn.0041812c
mov edi, str._InstallDir__CDGuid__
mov dword [ebp + 0x18], eax
push edi
call fcn.00409f30
pop ecx
mov ecx, dword [ebp + 0x18]
push eax
push edi
call fcn.00403650
push 1
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], bl
call fcn.00403360
mov al, byte [ebp + 0xb]
push ebx
lea ecx, [ebp - 0x1c]
mov byte [ebp - 0x1c], al
call fcn.00403360
mov edi, str._SourcePath_
push edi
call fcn.00409f30
pop ecx
push eax
push edi
lea ecx, [ebp - 0x1c]
call fcn.00403650
mov eax, dword [esi + 0x48]
lea ecx, [esi + 0x44]
mov dword [ebp + 0x18], eax
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp + 0xc]
push eax
mov byte [ebp - 4], 0x20
call fcn.004181d4
mov eax, dword [ebp + 0x18]
push 1
cmp dword [ebp + 0xc], eax
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], bl
sete byte [ebp + 0x1b]
call fcn.00403360
cmp byte [ebp + 0x1b], bl
je 0x417f00
mov al, byte [ebp + 0xb]
push ebx
lea ecx, [ebp - 0x1c]
mov byte [ebp - 0x1c], al
call fcn.00403360
push edi
call fcn.00409f30
pop ecx
push eax
push edi
lea ecx, [ebp - 0x1c]
call fcn.00403650
lea eax, [ebp - 0x1c]
lea ecx, [esi + 0x44]
push eax
mov byte [ebp - 4], 0x21
call fcn.0041812c
mov edi, str._CDRoot_
mov dword [ebp + 0x18], eax
push edi
call fcn.00409f30
pop ecx
mov ecx, dword [ebp + 0x18]
push eax
push edi
call fcn.00403650
push 1
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], bl
call fcn.00403360
mov al, byte [ebp + 0xb]
push ebx
lea ecx, [ebp - 0x1c]
mov byte [ebp - 0x1c], al
call fcn.00403360
mov edi, str._datfile_
push edi
call fcn.00409f30
pop ecx
push eax
push edi
lea ecx, [ebp - 0x1c]
call fcn.00403650
lea eax, [ebp - 0x1c]
lea ecx, [esi + 0x44]
push eax
mov byte [ebp - 4], 0x22
call fcn.0041812c
push dword [ebp + 8]
mov edi, eax
call fcn.00409f30
pop ecx
push eax
mov ecx, edi
push dword [ebp + 8]
call fcn.00403650
push 1
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], bl
call fcn.00403360
mov eax, dword [esi + 0x48]
mov ecx, dword [eax]
mov dword [ebp - 0x20], ecx
cmp ecx, eax
je 0x417f95
mov edi, 0x800
add ecx, 0x1c
push edi
push ebx
push ecx
mov ecx, esi
call fcn.00417fb7
cmp eax, ebx
je 0x417f85
mov eax, dword [ebp - 0x20]
push edi
add eax, 0x1c
push ebx
push eax
jmp 0x417f6f
lea ecx, [ebp - 0x20]
call fcn.004183b5
mov eax, dword [esi + 0x48]
mov ecx, dword [ebp - 0x20]
jmp 0x417f60
or dword [ebp - 4], 0xffffffff
push 1
lea ecx, [ebp - 0x34]
call fcn.00403360
push 1
pop eax
pop edi
mov ecx, dword [ebp - 0xc]
pop esi
pop ebx
mov dword fs:[0], ecx
leave
ret 0x14