Function at 0x412a90
Capabilities:
Contain obfuscated stackstrings
Parse pe header

Disassembly:
push 0xffffffffffffffff
push 0x443230
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x48
push ebx
push esi
push str.CMSIPlugInApp::InitializeStringMap__
mov esi, ecx
push 2
push 0x45a150
mov dword [esp + 0x1c], esi
call fcn.004018d0
mov eax, dword [esi + 0x2c4]
xor ebx, ebx
add esp, 0xc
cmp eax, ebx
jbe 0x412afa
push str.CMSIPlugInApp::InitializeStringMap__
push 4
push 0x45a150
call fcn.004018d0
add esp, 0xc
mov eax, 1
pop esi
pop ebx
mov ecx, dword [esp + 0x48]
mov dword fs:[0], ecx
add esp, 0x54
ret
mov al, byte [esp + 0xa]
push ebp
push edi
push ebx
lea ecx, [esp + 0x28]
mov byte [esp + 0x28], al
call fcn.00403f10
or ebp, 0xffffffff
mov edi, str.Advertise
mov ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.Advertise
lea ecx, [esp + 0x2c]
call fcn.00403ab0
lea ecx, [esp + 0x14]
lea edx, [esp + 0x24]
push ecx
push edx
lea ecx, [esp + 0x4c]
mov dword [esp + 0x68], ebx
mov dword [esp + 0x1c], ebx
call fcn.00416f20
push eax
add esi, 0x2b8
lea eax, [esp + 0x20]
mov ecx, esi
push eax
mov byte [esp + 0x68], 1
call fcn.00416c70
mov edi, dword [eax]
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x64], bl
call fcn.00403f10
push 1
lea ecx, [esp + 0x28]
mov dword [edi + 0x1c], 1
mov dword [esp + 0x64], ebp
call fcn.00403f10
mov cl, byte [esp + 0x12]
push ebx
mov byte [esp + 0x28], cl
lea ecx, [esp + 0x28]
call fcn.00403f10
mov edi, str.AllocateRegistrySpace
mov ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.AllocateRegistrySpace
lea ecx, [esp + 0x2c]
call fcn.00403ab0
lea edx, [esp + 0x14]
lea eax, [esp + 0x24]
push edx
push eax
lea ecx, [esp + 0x4c]
mov dword [esp + 0x68], 2
mov dword [esp + 0x1c], ebx
call fcn.00416f20
lea ecx, [esp + 0x1c]
push eax
push ecx
mov ecx, esi
mov byte [esp + 0x68], 3
call fcn.00416c70
mov edi, dword [eax]
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x64], 2
call fcn.00403f10
push 1
lea ecx, [esp + 0x28]
mov dword [edi + 0x1c], 0x23
mov dword [esp + 0x64], ebp
call fcn.00403f10
mov dl, byte [esp + 0x12]
push ebx
lea ecx, [esp + 0x28]
mov byte [esp + 0x28], dl
call fcn.00403f10
mov edi, str.AppSearch
mov ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.AppSearch
lea ecx, [esp + 0x2c]
call fcn.00403ab0
lea eax, [esp + 0x14]
lea ecx, [esp + 0x24]
push eax
push ecx
lea ecx, [esp + 0x4c]
mov dword [esp + 0x68], 4
mov dword [esp + 0x1c], ebx
call fcn.00416f20
lea edx, [esp + 0x1c]
push eax
push edx
mov ecx, esi
mov byte [esp + 0x68], 5
call fcn.00416c70
mov edi, dword [eax]
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x64], 4
call fcn.00403f10
push 1
lea ecx, [esp + 0x28]
mov dword [edi + 0x1c], 0x39
mov dword [esp + 0x64], ebp
call fcn.00403f10
mov al, byte [esp + 0x12]
push ebx
lea ecx, [esp + 0x28]
mov byte [esp + 0x28], al
call fcn.00403f10
mov edi, str.BindImage
mov ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.BindImage
lea ecx, [esp + 0x2c]
call fcn.00403ab0
lea ecx, [esp + 0x14]
lea edx, [esp + 0x24]
push ecx
push edx
lea ecx, [esp + 0x4c]
mov dword [esp + 0x68], 6
mov dword [esp + 0x1c], ebx
call fcn.00416f20
push eax
lea eax, [esp + 0x20]
push eax
mov ecx, esi
mov byte [esp + 0x68], 7
call fcn.00416c70
mov edi, dword [eax]
mov byte [esp + 0x60], 6
push 1
lea ecx, [esp + 0x48]
call fcn.00403f10
push 1
lea ecx, [esp + 0x28]
mov dword [edi + 0x1c], 0x4f
mov dword [esp + 0x64], ebp
call fcn.00403f10
mov cl, byte [esp + 0x12]
push ebx
mov byte [esp + 0x28], cl
lea ecx, [esp + 0x28]
call fcn.00403f10
mov edi, str.CCPSearch
mov ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.CCPSearch
lea ecx, [esp + 0x2c]
call fcn.00403ab0
lea edx, [esp + 0x14]
lea eax, [esp + 0x24]
push edx
push eax
lea ecx, [esp + 0x4c]
mov dword [esp + 0x68], 8
mov dword [esp + 0x1c], ebx
call fcn.00416f20
lea ecx, [esp + 0x1c]
push eax
push ecx
mov ecx, esi
mov byte [esp + 0x68], 9
call fcn.00416c70
mov edi, dword [eax]
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x64], 8
call fcn.00403f10
push 1
lea ecx, [esp + 0x28]
mov dword [edi + 0x1c], 0x65
mov dword [esp + 0x64], ebp
call fcn.00403f10
mov dl, byte [esp + 0x12]
push ebx
lea ecx, [esp + 0x28]
mov byte [esp + 0x28], dl
call fcn.00403f10
mov edi, str.CostFinalize
mov ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.CostFinalize
lea ecx, [esp + 0x2c]
call fcn.00403ab0
lea eax, [esp + 0x14]
lea ecx, [esp + 0x24]
push eax
push ecx
lea ecx, [esp + 0x4c]
mov dword [esp + 0x68], 0xa
mov dword [esp + 0x1c], ebx
call fcn.00416f20
lea edx, [esp + 0x1c]
push eax
push edx
mov ecx, esi
mov byte [esp + 0x68], 0xb
call fcn.00416c70
mov edi, dword [eax]
mov byte [esp + 0x60], 0xa
push 1
lea ecx, [esp + 0x48]
call fcn.00403f10
push 1
lea ecx, [esp + 0x28]
mov dword [edi + 0x1c], 0x70
mov dword [esp + 0x64], ebp
call fcn.00403f10
mov al, byte [esp + 0x12]
push ebx
lea ecx, [esp + 0x28]
mov byte [esp + 0x28], al
call fcn.00403f10
mov edi, str.CostInitialize
mov ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.CostInitialize
lea ecx, [esp + 0x2c]
call fcn.00403ab0
lea ecx, [esp + 0x14]
lea edx, [esp + 0x24]
push ecx
push edx
lea ecx, [esp + 0x4c]
mov dword [esp + 0x68], 0xc
mov dword [esp + 0x1c], ebx
call fcn.00416f20
push eax
lea eax, [esp + 0x20]
push eax
mov ecx, esi
mov byte [esp + 0x68], 0xd
call fcn.00416c70
mov edi, dword [eax]
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x64], 0xc
call fcn.00403f10
push 1
lea ecx, [esp + 0x28]
mov dword [edi + 0x1c], 2
mov dword [esp + 0x64], ebp
call fcn.00403f10
mov cl, byte [esp + 0x12]
push ebx
mov byte [esp + 0x28], cl
lea ecx, [esp + 0x28]
call fcn.00403f10
mov edi, str.CreateFolders
mov ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.CreateFolders
lea ecx, [esp + 0x2c]
call fcn.00403ab0
lea edx, [esp + 0x14]
lea eax, [esp + 0x24]
push edx
push eax
lea ecx, [esp + 0x4c]
mov dword [esp + 0x68], 0xe
mov dword [esp + 0x1c], ebx
call fcn.00416f20
lea ecx, [esp + 0x1c]
push eax
push ecx
mov ecx, esi
mov byte [esp + 0x68], 0xf
call fcn.00416c70
mov edi, dword [eax]
mov byte [esp + 0x60], 0xe
push 1
lea ecx, [esp + 0x48]
call fcn.00403f10
push 1
lea ecx, [esp + 0x28]
mov dword [edi + 0x1c], 0xd
mov dword [esp + 0x64], ebp
call fcn.00403f10
mov dl, byte [esp + 0x12]
push ebx
lea ecx, [esp + 0x28]
mov byte [esp + 0x28], dl
call fcn.00403f10
mov edi, str.CreateShortcuts
mov ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.CreateShortcuts
lea ecx, [esp + 0x2c]
call fcn.00403ab0
lea eax, [esp + 0x14]
lea ecx, [esp + 0x24]
push eax
push ecx
lea ecx, [esp + 0x4c]
mov dword [esp + 0x68], 0x10
mov dword [esp + 0x1c], ebx
call fcn.00416f20
lea edx, [esp + 0x1c]
push eax
push edx
mov ecx, esi
mov byte [esp + 0x68], 0x11
call fcn.00416c70
mov edi, dword [eax]
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x64], 0x10
call fcn.00403f10
push 1
lea ecx, [esp + 0x28]
mov dword [edi + 0x1c], 0x1c
mov dword [esp + 0x64], ebp
call fcn.00403f10
mov al, byte [esp + 0x12]
push ebx
lea ecx, [esp + 0x28]
mov byte [esp + 0x28], al
call fcn.00403f10
mov edi, str.DeleteServices
mov ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.DeleteServices
lea ecx, [esp + 0x2c]
call fcn.00403ab0
lea ecx, [esp + 0x14]
lea edx, [esp + 0x24]
push ecx
push edx
lea ecx, [esp + 0x4c]
mov dword [esp + 0x68], 0x12
mov dword [esp + 0x1c], ebx
call fcn.00416f20
push eax
lea eax, [esp + 0x20]
push eax
mov ecx, esi
mov byte [esp + 0x68], 0x13
call fcn.00416c70
mov edi, dword [eax]
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x64], 0x12
call fcn.00403f10
push 1
lea ecx, [esp + 0x28]
mov dword [edi + 0x1c], 0x1e
mov dword [esp + 0x64], ebp
call fcn.00403f10
mov cl, byte [esp + 0x12]
push ebx
mov byte [esp + 0x28], cl
lea ecx, [esp + 0x28]
call fcn.00403f10
mov edi, str.DuplicateFiles
mov ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.DuplicateFiles
lea ecx, [esp + 0x2c]
call fcn.00403ab0
lea edx, [esp + 0x14]
lea eax, [esp + 0x24]
push edx
push eax
lea ecx, [esp + 0x4c]
mov dword [esp + 0x68], 0x14
mov dword [esp + 0x1c], ebx
call fcn.00416f20
lea ecx, [esp + 0x1c]
push eax
push ecx
mov ecx, esi
mov byte [esp + 0x68], 0x15
call fcn.00416c70
mov edi, dword [eax]
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x64], 0x14
call fcn.00403f10
push 1
lea ecx, [esp + 0x28]
mov dword [edi + 0x1c], 0x20
mov dword [esp + 0x64], ebp
call fcn.00403f10
mov dl, byte [esp + 0x12]
push ebx
lea ecx, [esp + 0x28]
mov byte [esp + 0x28], dl
call fcn.00403f10
mov edi, str.FileCost
mov ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.FileCost
lea ecx, [esp + 0x2c]
call fcn.00403ab0
lea eax, [esp + 0x14]
lea ecx, [esp + 0x24]
push eax
push ecx
lea ecx, [esp + 0x4c]
mov dword [esp + 0x68], 0x16
mov dword [esp + 0x1c], ebx
call fcn.00416f20
lea edx, [esp + 0x1c]
push eax
push edx
mov ecx, esi
mov byte [esp + 0x68], 0x17
call fcn.00416c70
mov edi, dword [eax]
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x64], 0x16
call fcn.00403f10
push 1
lea ecx, [esp + 0x28]
mov dword [edi + 0x1c], 0x22
mov dword [esp + 0x64], ebp
call fcn.00403f10
mov al, byte [esp + 0x12]
push ebx
lea ecx, [esp + 0x28]
mov byte [esp + 0x28], al
call fcn.00403f10
mov edi, str.FindRelatedProducts
mov ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.FindRelatedProducts
lea ecx, [esp + 0x2c]
call fcn.00403ab0
lea ecx, [esp + 0x14]
lea edx, [esp + 0x24]
push ecx
push edx
lea ecx, [esp + 0x4c]
mov dword [esp + 0x68], 0x18
mov dword [esp + 0x1c], ebx
call fcn.00416f20
push eax
lea eax, [esp + 0x20]
push eax
mov ecx, esi
mov byte [esp + 0x68], 0x19
call fcn.00416c70
mov edi, dword [eax]
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x64], 0x18
call fcn.00403f10
push 1
lea ecx, [esp + 0x28]
mov dword [edi + 0x1c], 0x13
mov dword [esp + 0x64], ebp
call fcn.00403f10
mov cl, byte [esp + 0x12]
push ebx
mov byte [esp + 0x28], cl
lea ecx, [esp + 0x28]
call fcn.00403f10
mov edi, str.GenerateScript
mov ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.GenerateScript
lea ecx, [esp + 0x2c]
call fcn.00403ab0
lea edx, [esp + 0x14]
lea eax, [esp + 0x24]
push edx
push eax
lea ecx, [esp + 0x4c]
mov dword [esp + 0x68], 0x1a
mov dword [esp + 0x1c], ebx
call fcn.00416f20
lea ecx, [esp + 0x1c]
push eax
push ecx
mov byte [esp + 0x68], 0x1b
mov ecx, esi
call fcn.00416c70
mov edi, dword [eax]
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x64], 0x1a
call fcn.00403f10
push 1
lea ecx, [esp + 0x28]
mov dword [edi + 0x1c], 0x24
mov dword [esp + 0x64], ebp
call fcn.00403f10
mov dl, byte [esp + 0x12]
push ebx
lea ecx, [esp + 0x28]
mov byte [esp + 0x28], dl
call fcn.00403f10
mov edi, str.InstallAdminPackage
mov ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.InstallAdminPackage
lea ecx, [esp + 0x2c]
call fcn.00403ab0
lea eax, [esp + 0x14]
lea ecx, [esp + 0x24]
push eax
push ecx
lea ecx, [esp + 0x4c]
mov dword [esp + 0x68], 0x1c
mov dword [esp + 0x1c], ebx
call fcn.00416f20
lea edx, [esp + 0x1c]
push eax
push edx
mov ecx, esi
mov byte [esp + 0x68], 0x1d
call fcn.00416c70
mov edi, dword [eax]
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x64], 0x1c
call fcn.00403f10
push 1
lea ecx, [esp + 0x28]
mov dword [edi + 0x1c], 0x26
mov dword [esp + 0x64], ebp
call fcn.00403f10
mov al, byte [esp + 0x12]
push ebx
lea ecx, [esp + 0x28]
mov byte [esp + 0x28], al
call fcn.00403f10
mov edi, str.InstallFiles
mov ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.InstallFiles
lea ecx, [esp + 0x2c]
call fcn.00403ab0
lea ecx, [esp + 0x14]
lea edx, [esp + 0x24]
push ecx
push edx
lea ecx, [esp + 0x4c]
mov dword [esp + 0x68], 0x1e
mov dword [esp + 0x1c], ebx
call fcn.00416f20
push eax
lea eax, [esp + 0x20]
mov byte [esp + 0x64], 0x1f
push eax
mov ecx, esi
call fcn.00416c70
mov edi, dword [eax]
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x64], 0x1e
call fcn.00403f10
push 1
lea ecx, [esp + 0x28]
mov dword [edi + 0x1c], 0x28
mov dword [esp + 0x64], ebp
call fcn.00403f10
mov cl, byte [esp + 0x12]
push ebx
mov byte [esp + 0x28], cl
lea ecx, [esp + 0x28]
call fcn.00403f10
mov edi, str.InstallODBC
mov ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.InstallODBC
lea ecx, [esp + 0x2c]
call fcn.00403ab0
lea edx, [esp + 0x14]
lea eax, [esp + 0x24]
push edx
push eax
lea ecx, [esp + 0x4c]
mov dword [esp + 0x68], 0x20
mov dword [esp + 0x1c], ebx
call fcn.00416f20
lea ecx, [esp + 0x1c]
push eax
push ecx
mov ecx, esi
mov byte [esp + 0x68], 0x21
call fcn.00416c70
mov edi, dword [eax]
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x64], 0x20
call fcn.00403f10
push 1
lea ecx, [esp + 0x28]
mov dword [edi + 0x1c], 0x2a
mov dword [esp + 0x64], ebp
call fcn.00403f10
mov dl, byte [esp + 0x12]
push ebx
lea ecx, [esp + 0x28]
mov byte [esp + 0x28], dl
call fcn.00403f10
mov edi, str.InstallServices
mov ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.InstallServices
lea ecx, [esp + 0x2c]
call fcn.00403ab0
lea eax, [esp + 0x14]
lea ecx, [esp + 0x24]
push eax
push ecx
lea ecx, [esp + 0x4c]
mov dword [esp + 0x68], 0x22
mov dword [esp + 0x1c], ebx
call fcn.00416f20
mov byte [esp + 0x60], 0x23
push eax
lea edx, [esp + 0x20]
push edx
mov ecx, esi
call fcn.00416c70
mov edi, dword [eax]
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x64], 0x22
call fcn.00403f10
push 1
lea ecx, [esp + 0x28]
mov dword [edi + 0x1c], 0x2b
mov dword [esp + 0x64], ebp
call fcn.00403f10
mov al, byte [esp + 0x12]
push ebx
lea ecx, [esp + 0x28]
mov byte [esp + 0x28], al
call fcn.00403f10
mov edi, str.InstallSFPCatalogFile
mov ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.InstallSFPCatalogFile
lea ecx, [esp + 0x2c]
call fcn.00403ab0
lea ecx, [esp + 0x14]
lea edx, [esp + 0x24]
push ecx
push edx
lea ecx, [esp + 0x4c]
mov dword [esp + 0x68], 0x24
mov dword [esp + 0x1c], ebx
call fcn.00416f20
push eax
lea eax, [esp + 0x20]
push eax
mov ecx, esi
mov byte [esp + 0x68], 0x25
call fcn.00416c70
mov edi, dword [eax]
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x64], 0x24
call fcn.00403f10
push 1
lea ecx, [esp + 0x28]
mov dword [edi + 0x1c], 0x1a
mov dword [esp + 0x64], ebp
call fcn.00403f10
mov cl, byte [esp + 0x12]
push ebx
mov byte [esp + 0x28], cl
lea ecx, [esp + 0x28]
call fcn.00403f10
mov edi, str.InstallValidate
mov ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.InstallValidate
lea ecx, [esp + 0x2c]
call fcn.00403ab0
lea edx, [esp + 0x14]
lea eax, [esp + 0x24]
push edx
push eax
lea ecx, [esp + 0x4c]
mov dword [esp + 0x68], 0x26
mov dword [esp + 0x1c], ebx
call fcn.00416f20
mov byte [esp + 0x60], 0x27
push eax
lea ecx, [esp + 0x20]
push ecx
mov ecx, esi
call fcn.00416c70
mov edi, dword [eax]
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x64], 0x26
call fcn.00403f10
push 1
lea ecx, [esp + 0x28]
mov dword [edi + 0x1c], 0x2d
mov dword [esp + 0x64], ebp
call fcn.00403f10
mov dl, byte [esp + 0x12]
push ebx
lea ecx, [esp + 0x28]
mov byte [esp + 0x28], dl
call fcn.00403f10
mov edi, str.LaunchConditions
mov ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.LaunchConditions
lea ecx, [esp + 0x2c]
call fcn.00403ab0
lea eax, [esp + 0x14]
lea ecx, [esp + 0x24]
push eax
push ecx
lea ecx, [esp + 0x4c]
mov dword [esp + 0x68], 0x28
mov dword [esp + 0x1c], ebx
call fcn.00416f20
lea edx, [esp + 0x1c]
push eax
push edx
mov ecx, esi
mov byte [esp + 0x68], 0x29
call fcn.00416c70
mov edi, dword [eax]
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x64], 0x28
call fcn.00403f10
push 1
lea ecx, [esp + 0x28]
mov dword [edi + 0x1c], 0x2f
mov dword [esp + 0x64], ebp
call fcn.00403f10
mov al, byte [esp + 0x12]
push ebx
lea ecx, [esp + 0x28]
mov byte [esp + 0x28], al
call fcn.00403f10
mov edi, str.MigrateFeatureStates
mov ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.MigrateFeatureStates
lea ecx, [esp + 0x2c]
call fcn.00403ab0
lea ecx, [esp + 0x14]
lea edx, [esp + 0x24]
push ecx
push edx
lea ecx, [esp + 0x4c]
mov dword [esp + 0x68], 0x2a
mov dword [esp + 0x1c], ebx
call fcn.00416f20
mov byte [esp + 0x60], 0x2b
push eax
lea eax, [esp + 0x20]
push eax
mov ecx, esi
call fcn.00416c70
mov edi, dword [eax]
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x64], 0x2a
call fcn.00403f10
push 1
lea ecx, [esp + 0x28]
mov dword [edi + 0x1c], 0x15
mov dword [esp + 0x64], ebp
call fcn.00403f10
mov cl, byte [esp + 0x12]
push ebx
mov byte [esp + 0x28], cl
lea ecx, [esp + 0x28]
call fcn.00403f10
mov edi, str.MoveFiles
mov ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.MoveFiles
lea ecx, [esp + 0x2c]
call fcn.00403ab0
lea edx, [esp + 0x14]
lea eax, [esp + 0x24]
push edx
push eax
lea ecx, [esp + 0x4c]
mov dword [esp + 0x68], 0x2c
mov dword [esp + 0x1c], ebx
call fcn.00416f20
lea ecx, [esp + 0x1c]
push eax
push ecx
mov ecx, esi
mov byte [esp + 0x68], 0x2d
call fcn.00416c70
mov edi, dword [eax]
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x64], 0x2c
call fcn.00403f10
push 1
lea ecx, [esp + 0x28]
mov dword [edi + 0x1c], 0x30
mov dword [esp + 0x64], ebp
call fcn.00403f10
mov dl, byte [esp + 0x12]
push ebx
lea ecx, [esp + 0x28]
mov byte [esp + 0x28], dl
call fcn.00403f10
mov edi, str.PatchFiles
mov ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.PatchFiles
lea ecx, [esp + 0x2c]
call fcn.00403ab0
lea eax, [esp + 0x14]
lea ecx, [esp + 0x24]
push eax
push ecx
lea ecx, [esp + 0x4c]
mov dword [esp + 0x68], 0x2e
mov dword [esp + 0x1c], ebx
call fcn.00416f20
lea edx, [esp + 0x1c]
push eax
push edx
mov ecx, esi
mov byte [esp + 0x68], 0x2f
call fcn.00416c70
mov edi, dword [eax]
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x64], 0x2e
call fcn.00403f10
push 1
lea ecx, [esp + 0x28]
mov dword [edi + 0x1c], 0x32
mov dword [esp + 0x64], ebp
call fcn.00403f10
mov al, byte [esp + 0x12]
push ebx
lea ecx, [esp + 0x28]
mov byte [esp + 0x28], al
call fcn.00403f10
mov edi, str.ProcessComponents
mov ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.ProcessComponents
lea ecx, [esp + 0x2c]
call fcn.00403ab0
lea ecx, [esp + 0x14]
lea edx, [esp + 0x24]
push ecx
push edx
lea ecx, [esp + 0x4c]
mov dword [esp + 0x68], 0x30
mov dword [esp + 0x1c], ebx
call fcn.00416f20
push eax
lea eax, [esp + 0x20]
push eax
mov ecx, esi
mov byte [esp + 0x68], 0x31
call fcn.00416c70
mov edi, dword [eax]
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x64], 0x30
call fcn.00403f10
push 1
lea ecx, [esp + 0x28]
mov dword [edi + 0x1c], 0x34
mov dword [esp + 0x64], ebp
call fcn.00403f10
mov cl, byte [esp + 0x12]
push ebx
mov byte [esp + 0x28], cl
lea ecx, [esp + 0x28]
call fcn.00403f10
mov edi, str.PublishComponents
mov ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.PublishComponents
lea ecx, [esp + 0x2c]
call fcn.00403ab0
lea edx, [esp + 0x14]
lea eax, [esp + 0x24]
push edx
push eax
lea ecx, [esp + 0x4c]
mov dword [esp + 0x68], 0x32
mov dword [esp + 0x1c], ebx
call fcn.00416f20
lea ecx, [esp + 0x1c]
push eax
push ecx
mov ecx, esi
mov byte [esp + 0x68], 0x33
call fcn.00416c70
mov edi, dword [eax]
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x64], 0x32
call fcn.00403f10
push 1
lea ecx, [esp + 0x28]
mov dword [edi + 0x1c], 0x35
mov dword [esp + 0x64], ebp
call fcn.00403f10
mov dl, byte [esp + 0x12]
push ebx
lea ecx, [esp + 0x28]
mov byte [esp + 0x28], dl
call fcn.00403f10
mov edi, str.PublishFeatures
mov ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.PublishFeatures
lea ecx, [esp + 0x2c]
call fcn.00403ab0
lea eax, [esp + 0x14]
lea ecx, [esp + 0x24]
push eax
push ecx
lea ecx, [esp + 0x4c]
mov dword [esp + 0x68], 0x34
mov dword [esp + 0x1c], ebx
call fcn.00416f20
lea edx, [esp + 0x1c]
push eax
push edx
mov ecx, esi
mov byte [esp + 0x68], 0x35
call fcn.00416c70
mov edi, dword [eax]
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x64], 0x34
call fcn.00403f10
push 1
lea ecx, [esp + 0x28]
mov dword [edi + 0x1c], 0x37
mov dword [esp + 0x64], ebp
call fcn.00403f10
mov al, byte [esp + 0x12]
push ebx
lea ecx, [esp + 0x28]
mov byte [esp + 0x28], al
call fcn.00403f10
mov edi, str.PublishProduct
mov ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.PublishProduct
lea ecx, [esp + 0x2c]
call fcn.00403ab0
lea ecx, [esp + 0x14]
lea edx, [esp + 0x24]
push ecx
mov dword [esp + 0x64], 0x36
mov dword [esp + 0x18], ebx
push edx
lea ecx, [esp + 0x4c]
call fcn.00416f20
push eax
lea eax, [esp + 0x20]
push eax
mov ecx, esi
mov byte [esp + 0x68], 0x37
call fcn.00416c70
mov edi, dword [eax]
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x64], 0x36
call fcn.00403f10
push 1
lea ecx, [esp + 0x28]
mov dword [edi + 0x1c], 0x3a
mov dword [esp + 0x64], ebp
call fcn.00403f10
mov cl, byte [esp + 0x12]
push ebx
mov byte [esp + 0x28], cl
lea ecx, [esp + 0x28]
call fcn.00403f10
mov edi, str.RegisterClassInfo
mov ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.RegisterClassInfo
lea ecx, [esp + 0x2c]
call fcn.00403ab0
lea edx, [esp + 0x14]
lea eax, [esp + 0x24]
push edx
push eax
lea ecx, [esp + 0x4c]
mov dword [esp + 0x68], 0x38
mov dword [esp + 0x1c], ebx
call fcn.00416f20
lea ecx, [esp + 0x1c]
push eax
push ecx
mov ecx, esi
mov byte [esp + 0x68], 0x39
call fcn.00416c70
mov edi, dword [eax]
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x64], 0x38
call fcn.00403f10
push 1
lea ecx, [esp + 0x28]
mov dword [edi + 0x1c], 0x3b
mov dword [esp + 0x64], ebp
call fcn.00403f10
mov dl, byte [esp + 0x12]
push ebx
lea ecx, [esp + 0x28]
mov byte [esp + 0x28], dl
call fcn.00403f10
mov edi, str.RegisterComPlus
mov ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.RegisterComPlus
lea ecx, [esp + 0x2c]
call fcn.00403ab0
lea eax, [esp + 0x14]
lea ecx, [esp + 0x24]
push eax
mov dword [esp + 0x64], 0x3a
mov dword [esp + 0x18], ebx
push ecx
lea ecx, [esp + 0x4c]
call fcn.00416f20
lea edx, [esp + 0x1c]
push eax
push edx
mov ecx, esi
mov byte [esp + 0x68], 0x3b
call fcn.00416c70
mov edi, dword [eax]
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x64], 0x3a
call fcn.00403f10
push 1
lea ecx, [esp + 0x28]
mov dword [edi + 0x1c], 0xf
mov dword [esp + 0x64], ebp
call fcn.00403f10
mov al, byte [esp + 0x12]
push ebx
lea ecx, [esp + 0x28]
mov byte [esp + 0x28], al
call fcn.00403f10
mov edi, str.RegisterExtensionInfo
mov ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.RegisterExtensionInfo
lea ecx, [esp + 0x2c]
call fcn.00403ab0
lea ecx, [esp + 0x14]
lea edx, [esp + 0x24]
push ecx
push edx
lea ecx, [esp + 0x4c]
mov dword [esp + 0x68], 0x3c
mov dword [esp + 0x1c], ebx
call fcn.00416f20
push eax
lea eax, [esp + 0x20]
push eax
mov ecx, esi
mov byte [esp + 0x68], 0x3d
call fcn.00416c70
mov edi, dword [eax]
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x64], 0x3c
call fcn.00403f10
push 1
lea ecx, [esp + 0x28]
mov dword [edi + 0x1c], 0x3d
mov dword [esp + 0x64], ebp
call fcn.00403f10
mov cl, byte [esp + 0x12]
push ebx
mov byte [esp + 0x28], cl
lea ecx, [esp + 0x28]
call fcn.00403f10
mov edi, str.RegisterFonts
mov ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.RegisterFonts
lea ecx, [esp + 0x2c]
call fcn.00403ab0
lea edx, [esp + 0x14]
mov dword [esp + 0x60], 0x3e
mov dword [esp + 0x14], ebx
push edx
lea eax, [esp + 0x28]
push eax
lea ecx, [esp + 0x4c]
call fcn.00416f20
lea ecx, [esp + 0x1c]
push eax
push ecx
mov ecx, esi
mov byte [esp + 0x68], 0x3f
call fcn.00416c70
mov edi, dword [eax]
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x64], 0x3e
call fcn.00403f10
push 1
lea ecx, [esp + 0x28]
mov dword [edi + 0x1c], 0x3f
mov dword [esp + 0x64], ebp
call fcn.00403f10
mov dl, byte [esp + 0x12]
push ebx
lea ecx, [esp + 0x28]
mov byte [esp + 0x28], dl
call fcn.00403f10
mov edi, str.RegisterMIMEInfo
mov ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.RegisterMIMEInfo
lea ecx, [esp + 0x2c]
call fcn.00403ab0
lea eax, [esp + 0x14]
lea ecx, [esp + 0x24]
push eax
push ecx
lea ecx, [esp + 0x4c]
mov dword [esp + 0x68], 0x40
mov dword [esp + 0x1c], ebx
call fcn.00416f20
lea edx, [esp + 0x1c]
push eax
push edx
mov ecx, esi
mov byte [esp + 0x68], 0x41
call fcn.00416c70
mov edi, dword [eax]
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x64], 0x40
call fcn.00403f10
push 1
lea ecx, [esp + 0x28]
mov dword [edi + 0x1c], 0x41
mov dword [esp + 0x64], ebp
call fcn.00403f10
mov al, byte [esp + 0x12]
push ebx
lea ecx, [esp + 0x28]
mov byte [esp + 0x28], al
call fcn.00403f10
mov edi, str.RegisterProduct
mov ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.RegisterProduct
lea ecx, [esp + 0x2c]
call fcn.00403ab0
lea ecx, [esp + 0x14]
mov dword [esp + 0x60], 0x42
mov dword [esp + 0x14], ebx
push ecx
lea edx, [esp + 0x28]
lea ecx, [esp + 0x48]
push edx
call fcn.00416f20
push eax
lea eax, [esp + 0x20]
push eax
mov ecx, esi
mov byte [esp + 0x68], 0x43
call fcn.00416c70
mov edi, dword [eax]
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x64], 0x42
call fcn.00403f10
push 1
lea ecx, [esp + 0x28]
mov dword [edi + 0x1c], 0x43
mov dword [esp + 0x64], ebp
call fcn.00403f10
mov cl, byte [esp + 0x12]
push ebx
mov byte [esp + 0x28], cl
lea ecx, [esp + 0x28]
call fcn.00403f10
mov edi, str.RegisterProgIdInfo
mov ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.RegisterProgIdInfo
lea ecx, [esp + 0x2c]
call fcn.00403ab0
lea edx, [esp + 0x14]
lea eax, [esp + 0x24]
push edx
push eax
lea ecx, [esp + 0x4c]
mov dword [esp + 0x68], 0x44
mov dword [esp + 0x1c], ebx
call fcn.00416f20
lea ecx, [esp + 0x1c]
push eax
push ecx
mov ecx, esi
mov byte [esp + 0x68], 0x45
call fcn.00416c70
mov edi, dword [eax]
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x64], 0x44
call fcn.00403f10
push 1
lea ecx, [esp + 0x28]
mov dword [edi + 0x1c], 0x46
mov dword [esp + 0x64], ebp
call fcn.00403f10
mov dl, byte [esp + 0x12]
push ebx
lea ecx, [esp + 0x28]
mov byte [esp + 0x28], dl
call fcn.00403f10
mov edi, str.RegisterTypeLibraries
mov ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.RegisterTypeLibraries
lea ecx, [esp + 0x2c]
call fcn.00403ab0
mov dword [esp + 0x60], 0x46
mov dword [esp + 0x14], ebx
lea eax, [esp + 0x14]
lea ecx, [esp + 0x24]
push eax
push ecx
lea ecx, [esp + 0x4c]
call fcn.00416f20
lea edx, [esp + 0x1c]
push eax
push edx
mov ecx, esi
mov byte [esp + 0x68], 0x47
call fcn.00416c70
mov edi, dword [eax]
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x64], 0x46
call fcn.00403f10
push 1
lea ecx, [esp + 0x28]
mov dword [edi + 0x1c], 0x48
mov dword [esp + 0x64], ebp
call fcn.00403f10
mov al, byte [esp + 0x12]
push ebx
lea ecx, [esp + 0x28]
mov byte [esp + 0x28], al
call fcn.00403f10
mov edi, str.RegisterUser
mov ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.RegisterUser
lea ecx, [esp + 0x2c]
call fcn.00403ab0
lea ecx, [esp + 0x14]
lea edx, [esp + 0x24]
push ecx
push edx
lea ecx, [esp + 0x4c]
mov dword [esp + 0x68], 0x48
mov dword [esp + 0x1c], ebx
call fcn.00416f20
push eax
lea eax, [esp + 0x20]
push eax
mov ecx, esi
mov byte [esp + 0x68], 0x49
call fcn.00416c70
mov edi, dword [eax]
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x64], 0x48
call fcn.00403f10
push 1
lea ecx, [esp + 0x28]
mov dword [edi + 0x1c], 0x4a
mov dword [esp + 0x64], ebp
call fcn.00403f10
mov cl, byte [esp + 0x12]
push ebx
mov byte [esp + 0x28], cl
lea ecx, [esp + 0x28]
call fcn.00403f10
mov edi, str.RemoveDuplicateFiles
mov ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.RemoveDuplicateFiles
lea ecx, [esp + 0x2c]
call fcn.00403ab0
mov dword [esp + 0x60], 0x4a
mov dword [esp + 0x14], ebx
lea edx, [esp + 0x14]
lea eax, [esp + 0x24]
push edx
push eax
lea ecx, [esp + 0x4c]
call fcn.00416f20
lea ecx, [esp + 0x1c]
push eax
push ecx
mov ecx, esi
mov byte [esp + 0x68], 0x4b
call fcn.00416c70
mov edi, dword [eax]
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x64], 0x4a
call fcn.00403f10
push 1
lea ecx, [esp + 0x28]
mov dword [edi + 0x1c], 0x4c
mov dword [esp + 0x64], ebp
call fcn.00403f10
mov dl, byte [esp + 0x12]
push ebx
lea ecx, [esp + 0x28]
mov byte [esp + 0x28], dl
call fcn.00403f10
mov edi, str.RemoveEnvironmentStrings
mov ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.RemoveEnvironmentStrings
lea ecx, [esp + 0x2c]
call fcn.00403ab0
lea eax, [esp + 0x14]
lea ecx, [esp + 0x24]
push eax
push ecx
lea ecx, [esp + 0x4c]
mov dword [esp + 0x68], 0x4c
mov dword [esp + 0x1c], ebx
call fcn.00416f20
lea edx, [esp + 0x1c]
push eax
push edx
mov ecx, esi
mov byte [esp + 0x68], 0x4d
call fcn.00416c70
mov edi, dword [eax]
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x64], 0x4c
call fcn.00403f10
push 1
lea ecx, [esp + 0x28]
mov dword [edi + 0x1c], 0x4e
mov dword [esp + 0x64], ebp
call fcn.00403f10
mov al, byte [esp + 0x12]
push ebx
lea ecx, [esp + 0x28]
mov byte [esp + 0x28], al
call fcn.00403f10
mov edi, str.RemoveExistingProducts
mov ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.RemoveExistingProducts
lea ecx, [esp + 0x2c]
call fcn.00403ab0
mov dword [esp + 0x60], 0x4e
lea ecx, [esp + 0x14]
lea edx, [esp + 0x24]
push ecx
push edx
lea ecx, [esp + 0x4c]
mov dword [esp + 0x1c], ebx
call fcn.00416f20
push eax
lea eax, [esp + 0x20]
push eax
mov ecx, esi
mov byte [esp + 0x68], 0x4f
call fcn.00416c70
mov edi, dword [eax]
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x64], 0x4e
call fcn.00403f10
push 1
lea ecx, [esp + 0x28]
mov dword [edi + 0x1c], 0x17
mov dword [esp + 0x64], ebp
call fcn.00403f10
mov cl, byte [esp + 0x12]
push ebx
mov byte [esp + 0x28], cl
lea ecx, [esp + 0x28]
call fcn.00403f10
mov edi, str.RemoveFiles
mov ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.RemoveFiles
lea ecx, [esp + 0x2c]
call fcn.00403ab0
lea edx, [esp + 0x14]
lea eax, [esp + 0x24]
push edx
push eax
lea ecx, [esp + 0x4c]
mov dword [esp + 0x68], 0x50
mov dword [esp + 0x1c], ebx
call fcn.00416f20
lea ecx, [esp + 0x1c]
push eax
push ecx
mov ecx, esi
mov byte [esp + 0x68], 0x51
call fcn.00416c70
mov edi, dword [eax]
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x64], 0x50
call fcn.00403f10
push 1
lea ecx, [esp + 0x28]
mov dword [edi + 0x1c], 0x51
mov dword [esp + 0x64], ebp
call fcn.00403f10
mov dl, byte [esp + 0x12]
push ebx
lea ecx, [esp + 0x28]
mov byte [esp + 0x28], dl
call fcn.00403f10
mov edi, str.RemoveFolders
mov ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.RemoveFolders
lea ecx, [esp + 0x2c]
call fcn.00403ab0
lea eax, [esp + 0x14]
lea ecx, [esp + 0x24]
push eax
push ecx
lea ecx, [esp + 0x4c]
mov dword [esp + 0x68], 0x52
mov dword [esp + 0x1c], ebx
call fcn.00416f20
lea edx, [esp + 0x1c]
push eax
push edx
mov ecx, esi
mov byte [esp + 0x68], 0x53
call fcn.00416c70
mov edi, dword [eax]
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x64], 0x52
call fcn.00403f10
push 1
lea ecx, [esp + 0x28]
mov dword [edi + 0x1c], 0x53
mov dword [esp + 0x64], ebp
call fcn.00403f10
mov al, byte [esp + 0x12]
push ebx
lea ecx, [esp + 0x28]
mov byte [esp + 0x28], al
call fcn.00403f10
mov edi, str.RemoveIniValues
mov ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.RemoveIniValues
lea ecx, [esp + 0x2c]
call fcn.00403ab0
lea ecx, [esp + 0x14]
lea edx, [esp + 0x24]
push ecx
push edx
lea ecx, [esp + 0x4c]
mov dword [esp + 0x68], 0x54
mov dword [esp + 0x1c], ebx
call fcn.00416f20
push eax
lea eax, [esp + 0x20]
push eax
mov ecx, esi
mov byte [esp + 0x68], 0x55
call fcn.00416c70
mov edi, dword [eax]
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x64], 0x54
call fcn.00403f10
push 1
lea ecx, [esp + 0x28]
mov dword [edi + 0x1c], 0x55
mov dword [esp + 0x64], ebp
call fcn.00403f10
mov cl, byte [esp + 0x12]
push ebx
mov byte [esp + 0x28], cl
lea ecx, [esp + 0x28]
call fcn.00403f10
mov edi, str.RemoveODBC
mov ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.RemoveODBC
lea ecx, [esp + 0x2c]
call fcn.00403ab0
lea edx, [esp + 0x14]
lea eax, [esp + 0x24]
push edx
push eax
lea ecx, [esp + 0x4c]
mov dword [esp + 0x68], 0x56
mov dword [esp + 0x1c], ebx
call fcn.00416f20
lea ecx, [esp + 0x1c]
push eax
push ecx
mov ecx, esi
mov byte [esp + 0x68], 0x57
call fcn.00416c70
mov edi, dword [eax]
push 1
lea ecx, [esp + 0x48]
mov byte [esp + 0x64], 0x56
call fcn.00403f10
push 1
lea ecx, [esp + 0x28]
mov dword [edi + 0x1c], 0x57
mov dword [esp + 0x64], ebp
call fcn.00403f10
mov dl, byte [esp + 0x12]
push ebx
lea ecx, [esp + 0x28]
mov byte [esp + 0x28], dl
call fcn.00403f10
mov edi, str.RemoveRegistryValues
mov ecx, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.RemoveRegistryValues
lea ecx, [esp + 0x2c]
call fcn.00403ab0
lea eax, [esp + 0x24]
mov ecx, esi
push eax
mov dword [esp + 0x64], 0x58
call fcn.004163f0
push 1
lea ecx, [esp + 0x28]
mov dword [eax], 0x58
mov dword [esp + 0x64], ebp
call fcn.00403f10
lea ecx, [esp + 0x12]
push ecx
push str.RemoveShortcuts
lea ecx, [esp + 0x2c]
call fcn.00416280
lea edx, [esp + 0x24]
mov ecx, esi
push edx
mov dword [esp + 0x64], 0x59
call fcn.004163f0
push 1
lea ecx, [esp + 0x28]
mov dword [eax], 0x5b
mov dword [esp + 0x64], ebp
call fcn.00403f10
lea eax, [esp + 0x12]
lea ecx, [esp + 0x24]
push eax
push str.RMCCPSearch
call fcn.00416280
lea ecx, [esp + 0x24]
mov dword [esp + 0x60], 0x5a
push ecx
mov ecx, esi
call fcn.004163f0
mov dword [eax], 0x5d
mov dword [esp + 0x60], ebp
push 1
lea ecx, [esp + 0x28]
call fcn.00403f10
lea edx, [esp + 0x12]
lea ecx, [esp + 0x24]
push edx
push str.Rollback
call fcn.00416280
lea eax, [esp + 0x24]
mov ecx, esi
push eax
mov dword [esp + 0x64], 0x5b
call fcn.004163f0
push 1
lea ecx, [esp + 0x28]
mov dword [eax], 0x5e
mov dword [esp + 0x64], ebp
call fcn.00403f10
lea ecx, [esp + 0x12]
push ecx
push str.RollbackCleanup
lea ecx, [esp + 0x2c]
call fcn.00416280
lea edx, [esp + 0x24]
mov ecx, esi
push edx
mov dword [esp + 0x64], 0x5c
call fcn.004163f0
push 1
lea ecx, [esp + 0x28]
mov dword [eax], 0x60
mov dword [esp + 0x64], ebp
call fcn.00403f10
lea eax, [esp + 0x12]
lea ecx, [esp + 0x24]
push eax
push str.SelfRegModules
call fcn.00416280
lea ecx, [esp + 0x24]
mov dword [esp + 0x60], 0x5d
push ecx
mov ecx, esi
call fcn.004163f0
push 1
lea ecx, [esp + 0x28]
mov dword [eax], 0x62
mov dword [esp + 0x64], ebp
call fcn.00403f10
lea edx, [esp + 0x12]
lea ecx, [esp + 0x24]
push edx
push str.SelfUnregModules
call fcn.00416280
lea eax, [esp + 0x24]
mov ecx, esi
push eax
mov dword [esp + 0x64], 0x5e
call fcn.004163f0
push 1
lea ecx, [esp + 0x28]
mov dword [eax], 0x64
mov dword [esp + 0x64], ebp
call fcn.00403f10
lea ecx, [esp + 0x12]
push ecx
push str.SetODBCFolders
lea ecx, [esp + 0x2c]
call fcn.00416280
lea edx, [esp + 0x24]
mov ecx, esi
push edx
mov dword [esp + 0x64], 0x5f
call fcn.004163f0
mov dword [eax], 0x67
mov dword [esp + 0x60], ebp
push 1
lea ecx, [esp + 0x28]
call fcn.00403f10
lea eax, [esp + 0x12]
lea ecx, [esp + 0x24]
push eax
push str.StartServices
call fcn.00416280
lea ecx, [esp + 0x24]
mov dword [esp + 0x60], 0x60
push ecx
mov ecx, esi
call fcn.004163f0
push 1
lea ecx, [esp + 0x28]
mov dword [eax], 0x68
mov dword [esp + 0x64], ebp
call fcn.00403f10
lea edx, [esp + 0x12]
lea ecx, [esp + 0x24]
push edx
push str.StopServices
call fcn.00416280
lea eax, [esp + 0x24]
mov ecx, esi
push eax
mov dword [esp + 0x64], 0x61
call fcn.004163f0
push 1
lea ecx, [esp + 0x28]
mov dword [eax], 0x6a
mov dword [esp + 0x64], ebp
call fcn.00403f10
lea ecx, [esp + 0x12]
push ecx
push str.UnmoveFiles
lea ecx, [esp + 0x2c]
call fcn.00416280
lea edx, [esp + 0x24]
mov ecx, esi
push edx
mov dword [esp + 0x64], 0x62
call fcn.004163f0
push 1
lea ecx, [esp + 0x28]
mov dword [eax], 0x6c
mov dword [esp + 0x64], ebp
call fcn.00403f10
lea eax, [esp + 0x12]
lea ecx, [esp + 0x24]
push eax
push str.UnpublishComponents
call fcn.00416280
lea ecx, [esp + 0x24]
mov dword [esp + 0x60], 0x63
push ecx
mov ecx, esi
call fcn.004163f0
push 1
lea ecx, [esp + 0x28]
mov dword [eax], 0x6e
mov dword [esp + 0x64], ebp
call fcn.00403f10
lea edx, [esp + 0x12]
lea ecx, [esp + 0x24]
push edx
push str.UnpublishFeatures
call fcn.00416280
lea eax, [esp + 0x24]
mov ecx, esi
push eax
mov dword [esp + 0x64], 0x64
call fcn.004163f0
mov dword [eax], 0x71
mov dword [esp + 0x60], ebp
push 1
lea ecx, [esp + 0x28]
call fcn.00403f10
lea ecx, [esp + 0x12]
push ecx
push str.UnpublishProduct
lea ecx, [esp + 0x2c]
call fcn.00416280
lea edx, [esp + 0x24]
mov ecx, esi
push edx
mov dword [esp + 0x64], 0x65
call fcn.004163f0
push 1
lea ecx, [esp + 0x28]
mov dword [eax], 0x73
mov dword [esp + 0x64], ebp
call fcn.00403f10
lea eax, [esp + 0x12]
lea ecx, [esp + 0x24]
push eax
push str.UnregisterClassInfo
call fcn.00416280
lea ecx, [esp + 0x24]
mov dword [esp + 0x60], 0x66
push ecx
mov ecx, esi
call fcn.004163f0
push 1
lea ecx, [esp + 0x28]
mov dword [eax], 0x74
mov dword [esp + 0x64], ebp
call fcn.00403f10
lea edx, [esp + 0x12]
lea ecx, [esp + 0x24]
push edx
push str.UnregisterComPlus
call fcn.00416280
lea eax, [esp + 0x24]
mov ecx, esi
push eax
mov dword [esp + 0x64], 0x67
call fcn.004163f0
push 1
lea ecx, [esp + 0x28]
mov dword [eax], 0x11
mov dword [esp + 0x64], ebp
call fcn.00403f10
lea ecx, [esp + 0x12]
push ecx
push str.UnregisterExtensionInfo
lea ecx, [esp + 0x2c]
call fcn.00416280
lea edx, [esp + 0x24]
mov ecx, esi
push edx
mov dword [esp + 0x64], 0x68
call fcn.004163f0
push 1
lea ecx, [esp + 0x28]
mov dword [eax], 0x76
mov dword [esp + 0x64], ebp
call fcn.00403f10
lea eax, [esp + 0x12]
lea ecx, [esp + 0x24]
push eax
push str.UnregisterFonts
call fcn.00416280
lea ecx, [esp + 0x24]
mov dword [esp + 0x60], 0x69
push ecx
mov ecx, esi
call fcn.004163f0
push 1
lea ecx, [esp + 0x28]
mov dword [eax], 0x78
mov dword [esp + 0x64], ebp
call fcn.00403f10
lea edx, [esp + 0x12]
lea ecx, [esp + 0x24]
push edx
push str.UnregisterMIMEInfo
call fcn.00416280
lea eax, [esp + 0x24]
mov ecx, esi
push eax
mov dword [esp + 0x64], 0x6a
call fcn.004163f0
push 1
lea ecx, [esp + 0x28]
mov dword [eax], 0x7a
mov dword [esp + 0x64], ebp
call fcn.00403f10
lea ecx, [esp + 0x12]
push ecx
push str.UnregisterProgIdInfo
lea ecx, [esp + 0x2c]
call fcn.00416280
lea edx, [esp + 0x24]
mov ecx, esi
push edx
mov dword [esp + 0x64], 0x6b
call fcn.004163f0
push 1
lea ecx, [esp + 0x28]
mov dword [eax], 4
mov dword [esp + 0x64], ebp
call fcn.00403f10
lea eax, [esp + 0x12]
lea ecx, [esp + 0x24]
push eax
push str.UnregisterTypeLibraries
call fcn.00416280
lea ecx, [esp + 0x24]
mov dword [esp + 0x60], 0x6c
push ecx
mov ecx, esi
call fcn.004163f0
push 1
lea ecx, [esp + 0x28]
mov dword [eax], 6
mov dword [esp + 0x64], ebp
call fcn.00403f10
lea edx, [esp + 0x12]
lea ecx, [esp + 0x24]
push edx
push str.WriteEnvironmentStrings
call fcn.00416280
lea eax, [esp + 0x24]
mov ecx, esi
push eax
mov dword [esp + 0x64], 0x6d
call fcn.004163f0
push 1
lea ecx, [esp + 0x28]
mov dword [eax], 8
mov dword [esp + 0x64], ebp
call fcn.00403f10
lea ecx, [esp + 0x12]
push ecx
push str.WriteIniValues
lea ecx, [esp + 0x2c]
call fcn.00416280
lea edx, [esp + 0x24]
mov ecx, esi
push edx
mov dword [esp + 0x64], 0x6e
call fcn.004163f0
push 1
lea ecx, [esp + 0x28]
mov dword [eax], 0xa
mov dword [esp + 0x64], ebp
call fcn.00403f10
lea eax, [esp + 0x13]
push eax
push str.WriteRegistryValues
lea ecx, [esp + 0x3c]
call fcn.00416280
lea ecx, [esp + 0x34]
mov dword [esp + 0x60], 0x6f
push ecx
mov ecx, esi
call fcn.004163f0
push 1
lea ecx, [esp + 0x38]
mov dword [eax], 0xc
mov dword [esp + 0x64], ebp
call fcn.00403f10
mov ecx, dword [esp + 0x18]
call fcn.00414860
push str.CMSIPlugInApp::InitializeStringMap__
push 4
push 0x45a150
call fcn.004018d0
mov ecx, dword [esp + 0x64]
add esp, 0xc
mov eax, 1
mov dword fs:[0], ecx
pop edi
pop ebp
pop esi
pop ebx
add esp, 0x54
ret