Function at 0x40b360
Capabilities:
Check if file exists
Get file attributes
Set registry value

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x410d10
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x650
push ebx
push ebp
push esi
push edi
mov edi, ecx
mov dword [esp + 0x1c], edi
call sub.MFC42.DLL_AfxGetModuleState
mov esi, dword [eax + 4]
xor ebx, ebx
push str.TRUE
mov dword [esp + 0x24], esi
mov eax, dword [esi + 0x44d8]
xor ebp, ebp
push eax
mov dword [esp + 0x38], ebx
call dword [sym.imp.MSVCRT.dll__mbscmp]
add esp, 8
test eax, eax
jne 0x40b3c1
mov ebx, 1
mov dword [esp + 0x30], ebx
lea eax, [esi + 0x25c4]
lea ecx, [esp + 0x34]
push eax
call sub.MFC42.DLL_CString::CString_1
lea ecx, [esi + 0x26c4]
mov dword [esp + 0x668], ebp
push ecx
lea ecx, [esp + 0x30]
call sub.MFC42.DLL_CString::CString_1
lea edx, [esp + 0x34]
push 0x4163d8
lea eax, [esp + 0x14]
push edx
push eax
mov byte [esp + 0x674], 1
call sub.MFC42.DLL_operator
mov eax, dword [eax]
lea ecx, [edi + 0x128]
push eax
mov byte [esp + 0x66c], 2
call sub.MFC42.DLL_CWnd::SetWindowTextA
lea ecx, [esp + 0x10]
mov byte [esp + 0x668], 1
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x50]
call sub.MFC42.DLL_CString::CString_2
cmp ebx, ebp
mov byte [esp + 0x668], 3
mov dword [esp + 0x10], ebp
mov dword [esp + 0x28], ebp
lea ecx, [edi + 0x1a8]
je 0x40b455
push 0x4165bc
jmp 0x40b45a
push str.Geting_files_information...
call sub.MFC42.DLL_CWnd::SetWindowTextA
mov eax, dword [esi + 0x3ccc]
cmp eax, ebp
jle 0x40b4aa
lea ebx, [esi + 0x3cc8]
push ebp
mov ecx, ebx
call fcn.0040c010
mov esi, dword [ebx + 0x10]
mov edx, dword [esp + 0x10]
mov ecx, 0xb8
lea edi, [esp + 0x380]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [esp + 0x510]
add edx, ecx
inc ebp
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0x20]
cmp ebp, dword [edx + 0x3ccc]
jl 0x40b46f
xor ebp, ebp
mov esi, edx
fild dword [esp + 0x10]
lea ecx, [esp + 0x18]
mov dword [esp + 0x3c], 0
mov dword [esp + 0x40], 0
fmul qword [0x413448]
fstp qword [esp + 0x64]
call sub.MFC42.DLL_CString::CString_2
lea ecx, [esp + 0x44]
mov byte [esp + 0x668], 4
call sub.MFC42.DLL_CString::CString_2
push 0x1f4
mov byte [esp + 0x66c], 5
call dword [sym.imp.KERNEL32.dll_Sleep]
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [esp + 0x48], eax
mov eax, dword [esi + 0x3ccc]
cmp eax, ebp
mov dword [esp + 0x14], eax
jle 0x40b823
add esi, 0x3cc8
mov dword [esp + 0x4c], esi
mov eax, dword [esp + 0x34]
mov ebx, dword [esp + 0x1c]
mov ecx, 0x2e
mov eax, dword [eax - 8]
sub ecx, eax
push ecx
push ecx
mov edx, esp
mov dword [esp + 0x40], esp
push ebp
push edx
mov ecx, ebx
call fcn.0040a540
lea eax, [esp + 0x2c]
push eax
call fcn.0040a180
mov ecx, dword [eax]
mov edx, dword [esp + 0x40]
push ecx
push edx
lea eax, [esp + 0x2c]
push str._s__s
push eax
mov byte [esp + 0x684], 6
call sub.MFC42.DLL_CString::Format
add esp, 0x1c
lea ecx, [esp + 0x24]
mov byte [esp + 0x668], 5
call sub.MFC42.DLL_CString::CString
mov ecx, dword [esp + 0x18]
push ecx
lea ecx, [ebx + 0x1a8]
call sub.MFC42.DLL_CWnd::SetWindowTextA
push ebp
mov ecx, ebx
call fcn.0040aa20
mov esi, dword [esp + 0x4c]
push ebp
mov ecx, esi
call fcn.0040c010
mov esi, dword [esi + 0x10]
mov ecx, 0xb8
lea edi, [esp + 0x380]
rep movsd dword es:[edi], dword [esi]
mov esi, dword [esp + 0x28]
mov edx, dword [esp + 0x510]
add esi, edx
mov dword [esp + 0x28], esi
fild dword [esp + 0x28]
fstp qword [esp + 0x5c]
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x58], 0
sub eax, ecx
mov dword [esp + 0x54], eax
fild qword [esp + 0x54]
fdivr qword [esp + 0x5c]
fld qword [esp + 0x3c]
fcomp qword [0x413440]
fnstsw ax
test ah, 0x41
je 0x40b5fe
fst qword [esp + 0x3c]
fld st(0)
fdiv qword [esp + 0x3c]
fcom qword [0x413438]
fnstsw ax
test ah, 0x41
je 0x40b624
fcomp qword [0x413430]
fnstsw ax
test ah, 1
je 0x40b62c
fstp qword [esp + 0x3c]
jmp 0x40b62e
fstp st(0)
fstp qword [esp + 0x3c]
jmp 0x40b62e
fstp st(0)
fld qword [esp + 0x3c]
fcomp qword [0x413440]
fnstsw ax
test ah, 0x41
jne 0x40b7f4
mov edx, dword [esp + 0x10]
sub edx, esi
mov dword [esp + 0x38], edx
fild dword [esp + 0x38]
fdiv qword [esp + 0x3c]
call sub.MSVCRT.dll__ftol
mov ecx, eax
mov eax, 0x10624dd3
imul ecx
mov ecx, edx
sar ecx, 6
mov eax, ecx
shr eax, 0x1f
add ecx, eax
mov eax, dword [esp + 0x30]
test eax, eax
je 0x40b726
cmp ecx, 0x3c
jge 0x40b69d
push ecx
mov ecx, dword [esp + 0x30]
push ecx
push str._s__d
lea edx, [esp + 0x24]
push edx
call sub.MFC42.DLL_CString::Format
add esp, 0x10
jmp 0x40b7bf
mov eax, ecx
cmp ecx, 0xe10
cdq
mov esi, 0x3c
jge 0x40b6e0
idiv esi
mov eax, 0x88888889
push edx
imul ecx
add edx, ecx
mov ecx, dword [esp + 0x30]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
push edx
push ecx
push 0x416584
lea edx, [esp + 0x28]
push edx
call sub.MFC42.DLL_CString::Format
add esp, 0x14
jmp 0x40b7bf
idiv esi
mov eax, ecx
mov esi, 0xe10
push edx
cdq
idiv esi
mov eax, 0x88888889
mov esi, edx
imul esi
add edx, esi
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, 0x91a2b3c5
push edx
imul ecx
add edx, ecx
sar edx, 0xb
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
push edx
mov edx, dword [esp + 0x38]
push edx
push str._s__d_d
jmp 0x40b7b2
cmp ecx, 0x3c
jge 0x40b73b
push ecx
mov ecx, dword [esp + 0x30]
push ecx
push str._s__ds
jmp 0x40b68b
mov eax, ecx
cmp ecx, 0xe10
cdq
mov esi, 0x3c
jge 0x40b771
idiv esi
mov eax, 0x88888889
push edx
imul ecx
add edx, ecx
mov ecx, dword [esp + 0x30]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
push edx
push ecx
push str._s__dm__ds
jmp 0x40b6ce
idiv esi
mov eax, ecx
mov esi, 0xe10
push edx
cdq
idiv esi
mov eax, 0x88888889
mov esi, edx
imul esi
add edx, esi
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, 0x91a2b3c5
push edx
imul ecx
add edx, ecx
sar edx, 0xb
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
push edx
mov edx, dword [esp + 0x38]
push edx
push str._s__dh__dm__ds
lea eax, [esp + 0x2c]
push eax
call sub.MFC42.DLL_CString::Format
add esp, 0x18
lea ecx, [esp + 0x44]
lea esi, [ebx + 0x128]
push ecx
mov ecx, esi
call sub.MFC42.DLL_CWnd::GetWindowTextA
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x44]
push edx
push eax
call dword [sym.imp.MSVCRT.dll__mbscmp]
add esp, 8
test eax, eax
je 0x40b7f4
mov ecx, dword [esp + 0x18]
push ecx
mov ecx, esi
call sub.MFC42.DLL_CWnd::SetWindowTextA
fld qword [esp + 0x5c]
fdiv qword [esp + 0x64]
push 0
call sub.MSVCRT.dll__ftol
mov edx, dword [ebx + 0x188]
push eax
push 0x402
push edx
call dword [sym.imp.USER32.dll_SendMessageA]
mov eax, dword [esp + 0x14]
inc ebp
cmp ebp, eax
jl 0x40b51b
mov esi, dword [esp + 0x1c]
mov ecx, esi
call fcn.0040b280
mov edi, dword [esp + 0x20]
mov eax, dword [edi + 0x4490]
test eax, eax
jne 0x40b872
mov ecx, esi
call fcn.0040ad90
test eax, eax
jne 0x40b872
mov eax, dword [esp + 0x30]
push 0x10
test eax, eax
je 0x40b85f
add edi, 0x3ce0
push edi
push 0x416534
jmp 0x40b86b
add edi, 0x3ce0
push edi
push str.Create_file_unwise.exe_failure_
mov ecx, esi
call sub.MFC42.DLL_CWnd::MessageBoxA
mov eax, dword [esp + 0x20]
mov ecx, 0x42
lea edi, [esp + 0x170]
lea esi, [eax + 0x3ff0]
rep movsd dword es:[edi], dword [esi]
lea esi, [eax + 0x40f8]
mov ecx, 0x42
lea edi, [esp + 0x278]
lea eax, [esp + 0x170]
rep movsd dword es:[edi], dword [esi]
mov esi, 0x4166a8
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x40b8d2
test cl, cl
je 0x40b8ce
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x40b8d2
add eax, 2
add esi, 2
test cl, cl
jne 0x40b8aa
xor eax, eax
jmp 0x40b8d7
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x40b918
mov esi, 0x4166a8
lea eax, [esp + 0x278]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x40b90f
test cl, cl
je 0x40b90b
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x40b90f
add eax, 2
add esi, 2
test cl, cl
jne 0x40b8e7
xor eax, eax
jmp 0x40b914
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x40b948
mov eax, dword [esp + 0x30]
test eax, eax
je 0x40b927
push 0x4164fc
jmp 0x40b92c
push str.Creating_file_type...
mov ebx, dword [esp + 0x20]
lea ecx, [ebx + 0x1a8]
call sub.MFC42.DLL_CWnd::SetWindowTextA
push 0x1f4
call dword [sym.imp.KERNEL32.dll_Sleep]
jmp 0x40b94c
mov ebx, dword [esp + 0x1c]
mov esi, 0x4166a8
lea eax, [esp + 0x170]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x40b97c
test cl, cl
je 0x40b978
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x40b97c
add eax, 2
add esi, 2
test cl, cl
jne 0x40b958
xor eax, eax
jmp 0x40b981
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x40b9de
mov eax, dword [esp + 0x274]
lea edx, [esp + 0x174]
push eax
push ecx
mov ecx, esp
mov dword [esp + 0x1c], esp
push edx
call sub.MFC42.DLL_CString::CString_1
lea eax, [esp + 0x1c]
mov ecx, ebx
push eax
call fcn.0040a3c0
mov ecx, eax
mov byte [esp + 0x66c], 7
call fcn.0040c100
lea ecx, [esp + 0x174]
push eax
push ecx
call fcn.00401d60
add esp, 0xc
lea ecx, [esp + 0x14]
mov byte [esp + 0x668], 5
call sub.MFC42.DLL_CString::CString
mov esi, 0x4166a8
lea eax, [esp + 0x278]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x40ba0e
test cl, cl
je 0x40ba0a
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x40ba0e
add eax, 2
add esi, 2
test cl, cl
jne 0x40b9ea
xor eax, eax
jmp 0x40ba13
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x40ba70
mov eax, dword [esp + 0x37c]
lea edx, [esp + 0x27c]
push eax
push ecx
mov ecx, esp
mov dword [esp + 0x1c], esp
push edx
call sub.MFC42.DLL_CString::CString_1
lea eax, [esp + 0x1c]
mov ecx, ebx
push eax
call fcn.0040a3c0
mov ecx, eax
mov byte [esp + 0x66c], 8
call fcn.0040c100
lea ecx, [esp + 0x27c]
push eax
push ecx
call fcn.00401d60
add esp, 0xc
lea ecx, [esp + 0x14]
mov byte [esp + 0x668], 5
call sub.MFC42.DLL_CString::CString
mov edx, dword [esp + 0x20]
mov esi, 0x4166a8
mov eax, dword [edx + 0x421c]
lea edi, [edx + 0x421c]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x40baa9
test cl, cl
je 0x40baa5
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x40baa9
add eax, 2
add esi, 2
test cl, cl
jne 0x40ba85
xor eax, eax
jmp 0x40baae
sbb eax, eax
sbb eax, 0xffffffff
mov ebp, dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
test eax, eax
je 0x40bb4d
mov eax, dword [esp + 0x20]
push ecx
add eax, 0x4220
mov ecx, esp
mov dword [esp + 0x18], esp
push eax
call fcn.0040f000
lea ecx, [esp + 0x14]
push ecx
mov ecx, dword [esp + 0x24]
call fcn.0040a3c0
mov edx, dword [esp + 0x10]
mov bl, 9
push edx
mov byte [esp + 0x66c], bl
call ebp
cmp eax, 0xffffffff
je 0x40bb2c
push ecx
mov ecx, esp
mov dword [esp + 0x18], esp
push edi
call fcn.0040f000
push ecx
lea eax, [esp + 0x18]
mov ecx, esp
mov dword [esp + 0x40], esp
push eax
mov byte [esp + 0x674], 0xa
call fcn.0040f000
mov byte [esp + 0x670], bl
call fcn.004029c0
add esp, 8
jmp 0x40bb38
push 0x4166a8
mov ecx, edi
call sub.MFC42.DLL_CString::operator
lea ecx, [esp + 0x10]
mov byte [esp + 0x668], 5
call sub.MFC42.DLL_CString::CString
mov ebx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
mov esi, 0x4166a8
mov eax, dword [ecx + 0x4224]
lea edi, [ecx + 0x4224]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x40bb86
test cl, cl
je 0x40bb82
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x40bb86
add eax, 2
add esi, 2
test cl, cl
jne 0x40bb62
xor eax, eax
jmp 0x40bb8b
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x40bc24
mov eax, dword [esp + 0x20]
push ecx
add eax, 0x4228
mov ecx, esp
mov dword [esp + 0x18], esp
push eax
call fcn.0040f000
lea ecx, [esp + 0x14]
push ecx
mov ecx, dword [esp + 0x24]
call fcn.0040a3c0
mov edx, dword [esp + 0x10]
mov bl, 0xb
push edx
mov byte [esp + 0x66c], bl
call ebp
cmp eax, 0xffffffff
je 0x40bc03
push ecx
mov ecx, esp
mov dword [esp + 0x18], esp
push edi
call fcn.0040f000
push ecx
lea eax, [esp + 0x18]
mov ecx, esp
mov dword [esp + 0x40], esp
push eax
mov byte [esp + 0x674], 0xc
call fcn.0040f000
mov byte [esp + 0x670], bl
call fcn.00402b30
add esp, 8
jmp 0x40bc0f
push 0x4166a8
mov ecx, edi
call sub.MFC42.DLL_CString::operator
lea ecx, [esp + 0x10]
mov byte [esp + 0x668], 5
call sub.MFC42.DLL_CString::CString
mov ebx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x20]
push 0x4166a8
mov eax, dword [ebp + 0x4200]
lea esi, [ebp + 0x4200]
push eax
call dword [sym.imp.MSVCRT.dll__mbscmp]
add esp, 8
test eax, eax
je 0x40bec2
push str.Software_
lea ecx, [esp + 0x14]
call sub.MFC42.DLL_CString::CString_1
push esi
lea ecx, [esp + 0x14]
mov byte [esp + 0x66c], 0xd
call fcn.0040f0cc
mov edx, dword [esp + 0x10]
mov esi, dword [sym.imp.ADVAPI32.dll_RegOpenKeyA]
lea ecx, [esp + 0x24]
push ecx
push edx
push 0x80000001
call esi
test eax, eax
je 0x40bcb2
mov edx, dword [esp + 0x10]
lea eax, [esp + 0x14]
lea ecx, [esp + 0x24]
push eax
push ecx
push 0
push 0xf003f
push 0
push 0x4166a8
push 0
push edx
push 0x80000001
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
jmp 0x40bcbd
mov eax, dword [esp + 0x24]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov edx, dword [esp + 0x10]
lea ecx, [esp + 0x24]
push ecx
push edx
push 0x80000001
call esi
test eax, eax
jne 0x40bead
mov edx, dword [ebp + 0x4204]
or ecx, 0xffffffff
mov edi, edx
lea ebx, [esp + 0x70]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, ebx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
lea eax, [esp + 0x70]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, 0x4166a8
mov bl, byte [eax]
mov cl, bl
cmp bl, byte [esi]
jne 0x40bd2a
test cl, cl
je 0x40bd26
mov bl, byte [eax + 1]
mov cl, bl
cmp bl, byte [esi + 1]
jne 0x40bd2a
add eax, 2
add esi, 2
test cl, cl
jne 0x40bd06
xor eax, eax
jmp 0x40bd2f
sbb eax, eax
sbb eax, 0xffffffff
mov ebp, dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
test eax, eax
je 0x40bd52
mov eax, dword [edx - 8]
mov edx, dword [esp + 0x24]
lea ecx, [esp + 0x70]
push eax
push ecx
push 1
push 0
push str.RecentDate
push edx
call ebp
mov ebx, dword [esp + 0x1c]
or ecx, 0xffffffff
xor eax, eax
lea esi, [esp + 0x70]
mov edx, dword [ebx + 0xd8]
mov dword [esp + 0x14], esi
mov edi, edx
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, dword [esp + 0x14]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edx, dword [edx - 8]
lea ecx, [esp + 0x70]
push edx
mov edx, dword [esp + 0x28]
push ecx
push 1
push 0
push str.InstallPath
push edx
call ebp
mov eax, dword [esp + 0x20]
or ecx, 0xffffffff
lea edx, [esp + 0x70]
mov edi, dword [eax + 0x4208]
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x70]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebx + 0xd8]
mov eax, dword [ecx - 8]
push eax
mov eax, dword [esp + 0x28]
push edx
push 1
push 0
push str.Version
push eax
call ebp
lea ecx, [esp + 0x70]
push 0xff
push ecx
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea edx, [esp + 0x70]
lea ecx, [esp + 0x28]
push edx
call sub.MFC42.DLL_CString::CString_1
mov bl, 0xe
push 0x5c
lea ecx, [esp + 0x2c]
mov byte [esp + 0x66c], bl
call sub.MFC42.DLL_CString::ReverseFind
push eax
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x30]
call sub.MFC42.DLL_CString::Left
push eax
lea ecx, [esp + 0x2c]
mov byte [esp + 0x66c], 0xf
call sub.MFC42.DLL_CString::operator_1
mov byte [esp + 0x668], bl
lea ecx, [esp + 0x14]
call sub.MFC42.DLL_CString::CString
mov edx, dword [esp + 0x28]
or ecx, 0xffffffff
mov edi, edx
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea ebx, [esp + 0x70]
mov eax, ecx
mov esi, edi
mov edi, ebx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edx, dword [edx - 8]
lea ecx, [esp + 0x70]
push edx
mov edx, dword [esp + 0x28]
push ecx
push 1
push 0
push str.SourcePath
push edx
call ebp
mov eax, dword [esp + 0x24]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea ecx, [esp + 0x28]
mov byte [esp + 0x668], 0xd
call sub.MFC42.DLL_CString::CString
mov ebx, dword [esp + 0x1c]
lea ecx, [esp + 0x10]
mov byte [esp + 0x668], 5
call sub.MFC42.DLL_CString::CString
mov ebp, dword [esp + 0x20]
mov eax, dword [esp + 0x30]
test eax, eax
je 0x40bee1
push 0x4164c0
lea ecx, [ebx + 0x1a8]
call sub.MFC42.DLL_CWnd::SetWindowTextA
push 0x4164ac
jmp 0x40bef6
push str.Install_complete
lea ecx, [ebx + 0x1a8]
call sub.MFC42.DLL_CWnd::SetWindowTextA
push str.0_seconds_have_been_left.
lea ecx, [ebx + 0x128]
call sub.MFC42.DLL_CWnd::SetWindowTextA
mov ecx, dword [ebx + 0x188]
mov esi, dword [sym.imp.USER32.dll_SendMessageA]
push 0
push 0x3e8
push 0x402
push ecx
call esi
mov edx, dword [ebx + 0x208]
push 0x3e803e8
push 0
push 0x465
push edx
call esi
mov eax, dword [ebx + 0x20]
push eax
call dword [sym.imp.USER32.dll_GetParent]
push eax
call sub.MFC42.DLL_CWnd::FromHandle
push 0x1f4
mov edi, eax
call dword [sym.imp.KERNEL32.dll_Sleep]
mov esi, str.TRUE
lea eax, [ebp + 0x1fc4]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x40bf81
test cl, cl
je 0x40bf7d
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x40bf81
add eax, 2
add esi, 2
test cl, cl
jne 0x40bf59
xor eax, eax
jmp 0x40bf86
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x40bf8e
push 4
jmp 0x40bf90
push 3
mov ecx, edi
call sub.MFC42.DLL_CPropertySheet::SetActivePage
lea ecx, [esp + 0x44]
mov byte [esp + 0x668], 4
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x18]
mov byte [esp + 0x668], 3
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x50]
mov byte [esp + 0x668], 1
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x2c]
mov byte [esp + 0x668], 0
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x34]
mov dword [esp + 0x668], 0xffffffff
call sub.MFC42.DLL_CString::CString
mov ecx, dword [esp + 0x660]
pop edi
mov dword fs:[0], ecx
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret