Function at 0x4137d0
Capabilities:
Check for time delay via gettickcount

Disassembly:
sub esp, 0x130
push ebp
mov ebp, ecx
push 0x4313
push 0x5354
mov dword [ebp + 0x190], 2
mov byte [ebp + 0x17], 1
mov eax, dword [ebp + 0xbc]
push eax
call fcn.00413000
cmp eax, 0xffffffff
mov dword [ebp + 0x10], eax
jne 0x4138cc
mov al, byte [ebp + 0x20]
test al, al
jne 0x413818
push 0x10
call dword [sym.imp.USER32.dll_MessageBeep]
mov eax, dword [ebp + 0xb4]
test eax, eax
mov eax, 0x4932d0
jne 0x41382c
mov eax, str.Open_port_failed___r_n
push eax
push ebp
call fcn.00406ea0
mov eax, dword [ebp + 0xb4]
add esp, 8
test eax, eax
je 0x413896
call sub.MFC42.DLL_AfxGetThread
test eax, eax
je 0x413872
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0x7c]
push 0x30
push 0x4932b0
push 0x493280
mov ecx, eax
call sub.MFC42.DLL_CWnd::MessageBoxA
mov byte [ebp + 0x17], 0
or eax, 0xffffffff
pop ebp
add esp, 0x130
ret
xor eax, eax
push 0x30
push 0x4932b0
push 0x493280
mov ecx, eax
call sub.MFC42.DLL_CWnd::MessageBoxA
mov byte [ebp + 0x17], 0
or eax, 0xffffffff
pop ebp
add esp, 0x130
ret
call sub.MFC42.DLL_AfxGetThread
test eax, eax
je 0x4138a8
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0x7c]
jmp 0x4138aa
xor eax, eax
push 0x30
push str.ERROR
push str.Device_open_fail___r_nPlease_check_the_device_.
mov ecx, eax
call sub.MFC42.DLL_CWnd::MessageBoxA
mov byte [ebp + 0x17], 0
or eax, 0xffffffff
pop ebp
add esp, 0x130
ret
push 0
push ebp
call fcn.00406ea0
mov eax, dword [ebp + 0xb4]
add esp, 8
test eax, eax
mov eax, 0x490830
jne 0x4138eb
mov eax, str.Checking_target_MCU_...__r_n
push ebx
push esi
push edi
push eax
push ebp
call fcn.00406ea0
add esp, 8
lea ebx, [ebp + 0x644]
mov ecx, ebp
push ebx
push 1
mov byte [ebx], 0
call fcn.004132d0
lea edi, [ebp + 0x244]
mov ecx, ebp
push edi
call fcn.004131f0
test eax, eax
je 0x414161
mov al, byte [ebx]
mov cl, byte [edi]
and al, 0xf
cmp cl, al
jne 0x414161
mov ecx, ebp
call fcn.004080e0
mov esi, eax
test esi, esi
jne 0x414166
mov cl, byte [ebp + 0x25e]
mov al, byte [ebp + 0x26e]
mov byte [esp + 0x16], cl
mov cl, byte [ebp + 0x26f]
mov byte [esp + 0x19], al
mov al, byte [ebp + 0x270]
mov dl, byte [ebp + 0x25d]
mov byte [esp + 0x1a], cl
mov cl, byte [ebp + 0x271]
mov byte [esp + 0x22], al
mov al, byte [ebp + 0x272]
mov byte [esp + 0x18], cl
mov cl, byte [ebp + 0x273]
mov byte [esp + 0x1b], al
mov al, byte [ebp + 0x274]
mov byte [esp + 0x17], cl
mov cl, byte [ebp + 0x275]
mov byte [esp + 0x23], al
mov eax, dword [ebp + 0xd4]
mov byte [esp + 0x21], cl
mov dword [ebp + 0xf4], eax
mov ecx, dword [ebp + 0xd4]
lea eax, [ecx - 0x3d0900]
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fabs
fmul qword [0x475180]
fcomp qword [0x475068]
fnstsw ax
test ah, 1
je 0x4139f5
mov cl, byte [esp + 0x16]
mov byte [ebp + 0x242], cl
mov byte [ebp + 0x243], 0x18
mov dword [ebp + 0xf4], 0x3d0900
jmp 0x414013
lea eax, [ecx - 0x4c4b40]
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fabs
fmul qword [0x475178]
fcomp qword [0x475068]
fnstsw ax
test ah, 1
je 0x413a38
mov cl, byte [esp + 0x18]
mov byte [ebp + 0x242], cl
mov byte [ebp + 0x243], 0x9c
mov dword [ebp + 0xf4], 0x4c4b40
jmp 0x414013
lea eax, [ecx - 0x546000]
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fabs
fmul qword [0x475170]
fcomp qword [0x475068]
fnstsw ax
test ah, 1
je 0x413a77
mov byte [ebp + 0x242], dl
mov byte [ebp + 0x243], 0x10
mov dword [ebp + 0xf4], 0x546000
jmp 0x414013
lea eax, [ecx - 0x5b8d80]
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fabs
fmul qword [0x475168]
fcomp qword [0x475068]
fnstsw ax
test ah, 1
je 0x413aba
mov cl, byte [esp + 0x16]
mov byte [ebp + 0x242], cl
mov byte [ebp + 0x243], 0x10
mov dword [ebp + 0xf4], 0x5b8d80
jmp 0x414013
lea eax, [ecx - 0x6acfc0]
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fabs
fmul qword [0x475160]
fcomp qword [0x475068]
fnstsw ax
test ah, 1
je 0x413afd
mov cl, byte [esp + 0x18]
mov byte [ebp + 0x242], cl
mov byte [ebp + 0x243], 0x94
mov dword [ebp + 0xf4], 0x6acfc0
jmp 0x414013
lea eax, [ecx - 0x7a1200]
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fabs
fmul qword [0x475158]
fcomp qword [0x475068]
fnstsw ax
test ah, 1
je 0x413b40
mov cl, byte [esp + 0x17]
mov byte [ebp + 0x242], cl
mov byte [ebp + 0x243], 0x94
mov dword [ebp + 0xf4], 0x7a1200
jmp 0x414013
lea eax, [ecx - 0x895440]
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fabs
fmul qword [0x475150]
fcomp qword [0x475068]
fnstsw ax
test ah, 1
je 0x413b83
mov cl, byte [esp + 0x19]
mov byte [ebp + 0x242], cl
mov byte [ebp + 0x243], 0xc
mov dword [ebp + 0xf4], 0x895440
jmp 0x414013
lea eax, [ecx - 0x989680]
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fabs
fmul qword [0x475148]
fcomp qword [0x475068]
fnstsw ax
test ah, 1
je 0x413bc6
mov cl, byte [esp + 0x17]
mov byte [ebp + 0x242], cl
mov byte [ebp + 0x243], 0x90
mov dword [ebp + 0xf4], 0x989680
jmp 0x414013
lea eax, [ecx - 0xa8c000]
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fabs
fmul qword [0x475140]
fcomp qword [0x475068]
fnstsw ax
test ah, 1
je 0x413c05
mov byte [ebp + 0x242], dl
mov byte [ebp + 0x243], 8
mov dword [ebp + 0xf4], 0xa8c000
jmp 0x414013
lea eax, [ecx - 0xb71b00]
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fabs
fmul qword [0x475138]
fcomp qword [0x475068]
fnstsw ax
test ah, 1
je 0x413c48
mov cl, byte [esp + 0x16]
mov byte [ebp + 0x242], cl
mov byte [ebp + 0x243], 8
mov dword [ebp + 0xf4], 0xb71b00
jmp 0x414013
lea eax, [ecx - 0xe4e1c0]
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fabs
fmul qword [0x475130]
fcomp qword [0x475068]
fnstsw ax
test ah, 1
je 0x413c8b
mov cl, byte [esp + 0x1a]
mov byte [ebp + 0x242], cl
mov byte [ebp + 0x243], 0x88
mov dword [ebp + 0xf4], 0xe4e1c0
jmp 0x414013
lea eax, [ecx - 0x1194000]
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fabs
fmul qword [0x475128]
fcomp qword [0x475068]
fnstsw ax
test ah, 1
je 0x413cce
mov cl, byte [esp + 0x1b]
mov byte [ebp + 0x242], cl
mov byte [ebp + 0x243], 0x88
mov dword [ebp + 0xf4], 0x1194000
jmp 0x414013
lea eax, [ecx - 0x1312d00]
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fabs
fmul qword [0x475120]
fcomp qword [0x475068]
fnstsw ax
test ah, 1
je 0x413d11
mov cl, byte [esp + 0x17]
mov byte [ebp + 0x242], cl
mov byte [ebp + 0x243], 0x88
mov dword [ebp + 0xf4], 0x1312d00
jmp 0x414013
lea eax, [ecx - 0x1518000]
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fabs
fmul qword [0x475118]
fcomp qword [0x475068]
fnstsw ax
test ah, 1
je 0x413d50
mov byte [ebp + 0x242], dl
mov byte [ebp + 0x243], 4
mov dword [ebp + 0xf4], 0x1518000
jmp 0x414013
lea edx, [ecx - 0x16e3600]
mov dword [esp + 0x10], edx
fild dword [esp + 0x10]
fabs
fmul qword [0x475110]
fcomp qword [0x475068]
fnstsw ax
test ah, 1
je 0x413d93
mov al, byte [esp + 0x16]
mov byte [ebp + 0x242], al
mov byte [ebp + 0x243], 4
mov dword [ebp + 0xf4], 0x16e3600
jmp 0x414013
lea edx, [ecx - 0x19bfcc0]
mov dword [esp + 0x10], edx
fild dword [esp + 0x10]
fabs
fmul qword [0x475108]
fcomp qword [0x475068]
fnstsw ax
test ah, 1
je 0x413dd6
mov al, byte [esp + 0x19]
mov byte [ebp + 0x242], al
mov byte [ebp + 0x243], 4
mov dword [ebp + 0xf4], 0x19bfcc0
jmp 0x414013
lea edx, [ecx - 0x1c9c380]
mov dword [esp + 0x10], edx
fild dword [esp + 0x10]
fabs
fmul qword [0x475100]
fcomp qword [0x475068]
fnstsw ax
test ah, 1
je 0x413e19
mov al, byte [esp + 0x1a]
mov byte [ebp + 0x242], al
mov byte [ebp + 0x243], 0x84
mov dword [ebp + 0xf4], 0x1c9c380
jmp 0x414013
lea edx, [ecx - 0x1fa4000]
mov dword [esp + 0x10], edx
fild dword [esp + 0x10]
fabs
fmul qword [0x4750f8]
fcomp qword [0x475068]
fnstsw ax
test ah, 1
je 0x413e5c
mov al, byte [esp + 0x22]
mov byte [ebp + 0x242], al
mov byte [ebp + 0x243], 0x84
mov dword [ebp + 0xf4], 0x1fa4000
jmp 0x414013
lea edx, [ecx - 0x2160ec0]
mov dword [esp + 0x10], edx
fild dword [esp + 0x10]
fabs
fmul qword [0x4750f0]
fcomp qword [0x475068]
fnstsw ax
test ah, 1
je 0x413e9f
mov al, byte [esp + 0x18]
mov byte [ebp + 0x242], al
mov byte [ebp + 0x243], 0x84
mov dword [ebp + 0xf4], 0x2160ec0
jmp 0x414013
lea edx, [ecx - 0x2328000]
mov dword [esp + 0x10], edx
fild dword [esp + 0x10]
fabs
fmul qword [0x4750e8]
fcomp qword [0x475068]
fnstsw ax
test ah, 1
je 0x413ee2
mov al, byte [esp + 0x1b]
mov byte [ebp + 0x242], al
mov byte [ebp + 0x243], 0x84
mov dword [ebp + 0xf4], 0x2328000
jmp 0x414013
lea edx, [ecx - 0x2625a00]
mov dword [esp + 0x10], edx
fild dword [esp + 0x10]
fabs
fmul qword [0x4750e0]
fcomp qword [0x475068]
fnstsw ax
test ah, 1
je 0x413f25
mov al, byte [esp + 0x17]
mov byte [ebp + 0x242], al
mov byte [ebp + 0x243], 0x84
mov dword [ebp + 0xf4], 0x2625a00
jmp 0x414013
lea edx, [ecx - 0x2a30000]
mov dword [esp + 0x10], edx
fild dword [esp + 0x10]
fabs
fmul qword [0x4750d8]
fcomp qword [0x475068]
fnstsw ax
test ah, 1
je 0x413f68
mov al, byte [esp + 0x23]
mov byte [ebp + 0x242], al
mov byte [ebp + 0x243], 0x84
mov dword [ebp + 0xf4], 0x2a30000
jmp 0x414013
add ecx, 0xfd239400
mov dword [esp + 0x10], ecx
fild dword [esp + 0x10]
fabs
fmul qword [0x475060]
fcomp qword [0x475068]
fnstsw ax
test ah, 1
je 0x413fc9
mov al, byte [esp + 0x21]
cmp al, 0xff
je 0x413fac
mov byte [ebp + 0x242], al
mov byte [ebp + 0x243], 0x84
mov dword [ebp + 0xf4], 0x2dc6c00
jmp 0x414013
mov cl, byte [esp + 0x16]
mov byte [ebp + 0x242], cl
mov byte [ebp + 0x243], 0x50
mov dword [ebp + 0xf4], 0x2dc6c00
jmp 0x414013
mov dl, byte [ebp + 0x249]
mov byte [ebp + 0x242], dl
mov al, byte [ebp + 0x24b]
mov cl, byte [ebp + 0x24a]
xor edx, edx
shl al, 2
add al, cl
xor ecx, ecx
mov byte [ebp + 0x243], al
mov ch, byte [ebp + 0x245]
mov cl, byte [ebp + 0x246]
mov dh, byte [ebp + 0x247]
mov dl, byte [ebp + 0x248]
shl ecx, 0x10
or ecx, edx
mov dword [ebp + 0xf4], ecx
mov esi, dword [sym.imp.KERNEL32.dll_Sleep]
push 0xa
call esi
push ebx
push 8
mov ecx, ebp
mov byte [ebx], 1
mov byte [ebp + 0x645], 0
mov byte [ebp + 0x646], 0
mov byte [ebp + 0x647], 0
mov byte [ebp + 0x648], 0
mov byte [ebp + 0x649], 0
mov byte [ebp + 0x64a], 0
mov byte [ebp + 0x64b], 0x80
call fcn.004132d0
push edi
mov ecx, ebp
call fcn.004131f0
cmp eax, 1
jne 0x414161
mov al, byte [ebx]
mov cl, byte [edi]
and al, 0xf
cmp cl, al
jne 0x414161
push 0xa
call esi
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [esp + 0x10], eax
mov eax, dword [ebp + 0xb4]
test eax, eax
mov eax, 0x490c54
jne 0x41409c
mov eax, str.Erasing_MCU_flash_...
push eax
push ebp
call fcn.00406ea0
mov ecx, dword [ebp + 0xa98]
add esp, 8
test ecx, ecx
mov byte [ebx], 5
mov byte [ebp + 0x645], 0
mov byte [ebp + 0x646], 0
mov byte [ebp + 0x647], 0x5a
mov byte [ebp + 0x648], 0xa5
je 0x4140e9
mov edx, ecx
lea esi, [ebp + 0xaa0]
lea edi, [ebp + 0x649]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [ebp + 0xa98]
push ebx
add eax, 5
mov ecx, ebp
push eax
call fcn.004132d0
lea esi, [ebp + 0x244]
mov ecx, ebp
push esi
call fcn.004131f0
cmp eax, 2
jne 0x41420f
mov al, byte [esi]
cmp al, 0xe
jne 0x4141e4
mov eax, dword [ebp + 0xb4]
test eax, eax
mov eax, 0x490c28
jne 0x414130
mov eax, str._r_nUser_password_error___r_n
push eax
push ebp
call fcn.00406ea0
mov eax, dword [ebp + 0xb4]
add esp, 8
test eax, eax
mov eax, 0x49321c
jne 0x41414e
mov eax, str.Try__d_times___r_n
xor ecx, ecx
mov cl, byte [ebp + 0x245]
push ecx
push eax
push ebp
call fcn.00406ea0
add esp, 0xc
mov esi, 1
push ebx
push 1
mov ecx, ebp
mov byte [ebx], 0xff
call fcn.004132d0
push 0x32
call dword [sym.imp.KERNEL32.dll_Sleep]
cmp esi, 3
ja case.default.0x414184
jmp dword [esi*4 + 0x41498c]
mov al, byte [ebp + 0x20]
test al, al
jne 0x41419a
push 0x40
call dword [sym.imp.USER32.dll_MessageBeep]
mov eax, dword [ebp + 0xb4]
mov edi, 0x4931f4
test eax, eax
jne 0x4141ae
mov edi, str.__Complete____s__r_n
lea ecx, [esp + 0x10]
push str._Y__m__d__H:_M:_S
lea edx, [esp + 0x38]
push ecx
push edx
call sub.MFC42.DLL_CTime::GetTickCount
mov ecx, eax
call sub.MFC42.DLL_CTime::Format
mov eax, dword [eax]
push eax
push edi
push ebp
call fcn.00406ea0
add esp, 0xc
lea ecx, [esp + 0x10]
call sub.MFC42.DLL_CString::CString
jmp 0x414965
cmp al, 0xf
jne 0x414161
mov eax, dword [ebp + 0xb4]
test eax, eax
mov eax, 0x490be0
jne 0x414200
mov eax, str._r_nMCU_is_locked___r_n
push eax
push ebp
call fcn.00406ea0
add esp, 8
jmp 0x414161
cmp eax, 1
jne 0x414161
mov dl, byte [ebx]
mov al, byte [esi]
and dl, 0xf
cmp al, dl
jne 0x414161
push 0xa
call dword [sym.imp.KERNEL32.dll_Sleep]
push 1
push 0
mov ecx, ebp
mov byte [ebx], 3
mov byte [ebp + 0x645], 0
mov byte [ebp + 0x646], 0
mov byte [ebp + 0x647], 0x5a
mov byte [ebp + 0x648], 0xa5
call fcn.00411f30
mov ecx, dword [ebp + 0xf8]
shl ecx, 5
mov ecx, dword [ecx + 0x46cc94]
cmp eax, ecx
jle 0x41427c
sub eax, ecx
add eax, 0x1ff
shr eax, 9
mov byte [ebp + 0x645], al
push ebx
push 5
mov ecx, ebp
call fcn.004132d0
mov edx, dword [ebp + 0xf8]
xor ecx, ecx
mov cl, byte [ebx]
push 0
shl edx, 5
push 0
mov eax, dword [edx + 0x46cc94]
add eax, 0x1ff
shr eax, 9
add eax, ecx
mov ecx, ebp
lea esi, [eax + eax*4]
shl esi, 1
call fcn.00406f60
xor edi, edi
test esi, esi
jle 0x4142dc
push 0x64
call dword [sym.imp.KERNEL32.dll_Sleep]
push esi
push edi
mov ecx, ebp
call fcn.00406f60
mov al, byte [ebp + 0x17]
test al, al
je 0x4147e4
add edi, 0x64
cmp edi, esi
jl 0x4142b9
lea esi, [ebp + 0x244]
mov ecx, ebp
push esi
call fcn.004131f0
cmp eax, 8
jne 0x414161
mov dl, byte [ebx]
mov al, byte [esi]
and dl, 0xf
cmp al, dl
jne 0x414161
lea eax, [ebp + 0x245]
lea ecx, [ebp + 0xa44]
mov edi, 0x490bb8
mov edx, dword [eax]
mov dword [ecx], edx
mov dx, word [eax + 4]
mov word [ecx + 4], dx
mov al, byte [eax + 6]
mov byte [ecx + 6], al
mov eax, dword [ebp + 0xb4]
test eax, eax
jne 0x414334
mov edi, str.OK___t_t__.3f___r_n
mov esi, dword [sym.imp.KERNEL32.dll_GetTickCount]
call esi
mov edx, dword [esp + 0x10]
mov dword [esp + 0x28], 0
sub eax, edx
sub esp, 8
mov dword [esp + 0x2c], eax
fild qword [esp + 0x2c]
fmul dword [0x47505c]
fstp qword [esp]
push edi
push ebp
call fcn.00406ea0
mov al, byte [ebp + 0x1f]
add esp, 0x10
test al, al
je 0x414426
push 0xa
call dword [sym.imp.KERNEL32.dll_Sleep]
xor eax, eax
mov byte [ebx], 0x26
mov dword [esp + 0x1c], eax
jmp 0x41438a
mov eax, dword [esp + 0x1c]
mov esi, dword [ebp + 0x214]
mov ecx, 0x10
add esi, eax
lea edi, [ebp + 0x649]
mov byte [ebp + 0x645], 0
mov byte [ebp + 0x646], al
mov byte [ebp + 0x647], 0x5a
mov byte [ebp + 0x648], 0xa5
rep movsd dword es:[edi], dword [esi]
push ebx
push 0x45
mov ecx, ebp
call fcn.004132d0
push 0x32
call dword [sym.imp.KERNEL32.dll_Sleep]
lea eax, [ebp + 0x244]
mov ecx, ebp
push eax
call fcn.004131f0
cmp eax, 2
jne 0x414161
mov al, byte [ebx]
mov dl, byte [ebp + 0x244]
mov cl, al
and cl, 0xf
cmp dl, cl
jne 0x414161
cmp byte [ebp + 0x245], 0x54
jne 0x414161
mov ecx, dword [esp + 0x1c]
and al, 0xdf
add ecx, 0x40
mov byte [ebx], al
cmp ecx, 0x100
mov dword [esp + 0x1c], ecx
jl 0x414386
mov esi, dword [sym.imp.KERNEL32.dll_GetTickCount]
push 0
push 1
mov ecx, ebp
call fcn.00411f30
push 0xa
call dword [sym.imp.KERNEL32.dll_Sleep]
call esi
mov dword [esp + 0x10], eax
mov eax, dword [ebp + 0xb4]
test eax, eax
mov eax, 0x490cd0
jne 0x414453
mov eax, str.Programming_user_code_...
push eax
push ebp
call fcn.00406ea0
add esp, 8
mov ecx, ebp
push 0
push 0
call fcn.00406f60
mov al, byte [ebp + 0x19]
xor edx, edx
neg al
sbb al, al
mov dword [esp + 0x1c], edx
and al, 0x80
add al, 0x22
mov byte [ebx], al
mov eax, dword [ebp + 0xdc]
test eax, eax
jle 0x41455c
jmp 0x41448f
mov edx, dword [esp + 0x1c]
mov edi, dword [ebp + 0x204]
xor ecx, ecx
mov cl, dh
mov esi, edx
mov byte [ebp + 0x645], cl
add esi, edi
mov ecx, 0x20
lea edi, [ebp + 0x649]
mov byte [ebp + 0x646], dl
mov byte [ebp + 0x647], 0x5a
mov byte [ebp + 0x648], 0xa5
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebp + 0xdc]
sub eax, edx
cmp eax, 0x80
jle 0x4144d8
mov eax, 0x80
add eax, 5
push ebx
push eax
mov ecx, ebp
call fcn.004132d0
lea esi, [ebp + 0x244]
mov ecx, ebp
push esi
call fcn.004131f0
cmp eax, 2
jne 0x414161
mov dl, byte [ebx]
mov al, byte [esi]
and dl, 0xf
cmp al, dl
jne 0x414161
cmp byte [ebp + 0x245], 0x54
jne 0x414161
mov eax, dword [ebp + 0xdc]
mov ecx, dword [esp + 0x1c]
push eax
push ecx
mov ecx, ebp
call fcn.00406f60
mov cl, byte [ebx]
mov edx, dword [esp + 0x1c]
and cl, 0xdf
add edx, 0x80
mov byte [ebx], cl
mov al, byte [ebp + 0x17]
test al, al
mov dword [esp + 0x1c], edx
je 0x4147e4
cmp edx, dword [ebp + 0xdc]
jl 0x41448b
mov esi, dword [sym.imp.KERNEL32.dll_GetTickCount]
push 0
push 0
mov ecx, ebp
call fcn.00406f60
mov eax, dword [ebp + 0xb4]
mov edi, 0x490bb8
test eax, eax
jne 0x41457b
mov edi, str.OK___t_t__.3f___r_n
call esi
mov edx, dword [esp + 0x10]
mov dword [esp + 0x28], 0
sub eax, edx
sub esp, 8
mov dword [esp + 0x2c], eax
fild qword [esp + 0x2c]
fmul dword [0x47505c]
fstp qword [esp]
push edi
push ebp
call fcn.00406ea0
add esp, 0x10
push 0xa
call dword [sym.imp.KERNEL32.dll_Sleep]
call esi
mov dword [esp + 0x10], eax
mov eax, dword [ebp + 0xb4]
test eax, eax
mov eax, 0x490d04
jne 0x4145cb
mov eax, str.Programming_OPTIONS_...
push eax
push ebp
call fcn.00406ea0
add esp, 8
lea eax, [ebp + 0x649]
mov ecx, ebp
mov byte [ebx], 4
push eax
mov byte [ebp + 0x645], 0
mov byte [ebp + 0x646], 0
mov byte [ebp + 0x647], 0x5a
mov byte [ebp + 0x648], 0xa5
call fcn.00412b50
add eax, 5
push ebx
push eax
mov ecx, ebp
call fcn.004132d0
lea esi, [ebp + 0x244]
mov ecx, ebp
push esi
call fcn.004131f0
cmp eax, 2
jne 0x414161
mov al, byte [ebx]
mov cl, byte [esi]
and al, 0xf
cmp cl, al
jne 0x414161
cmp byte [ebp + 0x245], 0x54
jne 0x414161
mov eax, dword [ebp + 0xa9c]
test eax, eax
je 0x4146de
push 0xa
call dword [sym.imp.KERNEL32.dll_Sleep]
mov ecx, dword [ebp + 0xa9c]
lea esi, [ebp + 0xba0]
mov edx, ecx
lea edi, [ebp + 0x649]
shr ecx, 2
mov byte [ebx], 7
mov byte [ebp + 0x645], 0
mov byte [ebp + 0x646], 0
mov byte [ebp + 0x647], 0x5a
mov byte [ebp + 0x648], 0xa5
push ebx
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [ebp + 0xa9c]
mov ecx, ebp
add eax, 5
push eax
call fcn.004132d0
lea eax, [ebp + 0x244]
mov ecx, ebp
push eax
call fcn.004131f0
cmp eax, 2
jne 0x414161
mov cl, byte [ebx]
mov al, byte [ebp + 0x244]
and cl, 0xf
cmp al, cl
jne 0x414161
cmp byte [ebp + 0x245], 0x54
jne 0x414161
mov eax, dword [ebp + 0xb4]
mov esi, 0x490bb8
test eax, eax
jne 0x4146f2
mov esi, str.OK___t_t__.3f___r_n
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x28], 0
sub eax, ecx
sub esp, 8
mov dword [esp + 0x2c], eax
fild qword [esp + 0x2c]
fmul dword [0x47505c]
fstp qword [esp]
push esi
push ebp
call fcn.00406ea0
mov eax, dword [ebp + 0xb4]
add esp, 0x10
test eax, eax
mov eax, 0x4931b4
jne 0x414738
mov eax, str._r_nH_W_Option_upgrade_to:_r_n
push eax
push ebp
call fcn.00406ea0
mov ecx, 0x10
or eax, 0xffffffff
lea edi, [ebp + 0x244]
add esp, 8
rep stosd dword es:[edi], eax
mov edx, dword [ebp + 0xf4]
xor eax, eax
shr edx, 0x10
mov al, dh
xor edx, edx
mov dl, byte [ebp + 0xf5]
mov byte [ebp + 0x245], al
mov ecx, dword [ebp + 0xf4]
mov al, byte [ebp + 0xf4]
shr ecx, 0x10
mov byte [ebp + 0x246], cl
mov cl, byte [ebp + 0x669]
mov byte [ebp + 0x247], dl
mov dl, byte [ebp + 0x66c]
mov byte [ebp + 0x248], al
mov al, byte [ebp + 0x66d]
mov byte [ebp + 0x24d], cl
mov cl, byte [ebp + 0x66e]
mov byte [ebp + 0x250], dl
mov dl, byte [ebp + 0x66f]
mov byte [ebp + 0x251], al
mov al, byte [ebp + 0x670]
mov byte [ebp + 0x252], cl
mov ecx, ebp
mov byte [ebp + 0x253], dl
mov byte [ebp + 0x254], al
call fcn.0040cea0
xor esi, esi
jmp 0x414166
mov esi, 3
jmp 0x414166
mov al, byte [ebp + 0x20]
test al, al
jne 0x414807
mov edi, dword [sym.imp.USER32.dll_MessageBeep]
push 0x10
call edi
push 0x10
call edi
push 0x10
call edi
call sub.MFC42.DLL_AfxGetThread
test eax, eax
je 0x414819
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0x7c]
jmp 0x41481b
xor eax, eax
lea ecx, [esp + 0x40]
push 0xff
push ecx
mov ecx, eax
call sub.MFC42.DLL_CWnd::GetWindowTextA
push 0xa
lea edx, [esp + 0x44]
push str.STC_ISP__V
push edx
call dword [sym.imp.MSVCRT.dll_strncmp]
add esp, 0xc
test eax, eax
jne 0x4148b9
mov edi, dword [sym.imp.MSVCRT.dll_strchr]
lea eax, [esp + 0x40]
push 0x29
push eax
call edi
add esp, 8
test eax, eax
je 0x4148b9
lea ecx, [esp + 0x40]
push 0x29
push ecx
call edi
mov byte [eax], 0
mov eax, dword [ebp + 0xb4]
add esp, 8
mov edi, 0x493174
test eax, eax
jne 0x41487e
mov edi, str._r_nDownload_failed_____s___s_
lea edx, [esp + 0x1c]
push str._Y__m__d__H:_M:_S
lea eax, [esp + 0x3c]
push edx
push eax
call sub.MFC42.DLL_CTime::GetTickCount
mov ecx, eax
call sub.MFC42.DLL_CTime::Format
mov ecx, dword [eax]
lea edx, [esp + 0x4a]
push ecx
push edx
push edi
push ebp
call fcn.00406ea0
add esp, 0x10
lea ecx, [esp + 0x1c]
call sub.MFC42.DLL_CString::CString
jmp 0x414965
mov eax, dword [ebp + 0xb4]
mov edi, 0x493140
test eax, eax
jne 0x4148cd
mov edi, str._r_nDownload_failed____s_
lea eax, [esp + 0x2c]
push str._Y__m__d__H:_M:_S
lea ecx, [esp + 0x40]
push eax
push ecx
call sub.MFC42.DLL_CTime::GetTickCount
mov ecx, eax
call sub.MFC42.DLL_CTime::Format
mov edx, dword [eax]
push edx
push edi
push ebp
call fcn.00406ea0
add esp, 0xc
lea ecx, [esp + 0x2c]
call sub.MFC42.DLL_CString::CString
jmp 0x414965
mov al, byte [ebp + 0x20]
test al, al
jne 0x41490f
push 0
call dword [sym.imp.USER32.dll_MessageBeep]
mov eax, dword [ebp + 0xb4]
mov edi, 0x493114
test eax, eax
jne 0x414923
mov edi, str._r_nTerminated____s_
lea eax, [esp + 0x30]
push str._Y__m__d__H:_M:_S
lea ecx, [esp + 0x28]
push eax
push ecx
call sub.MFC42.DLL_CTime::GetTickCount
mov ecx, eax
call sub.MFC42.DLL_CTime::Format
mov edx, dword [eax]
push edx
push edi
push ebp
call fcn.00406ea0
add esp, 0xc
lea ecx, [esp + 0x30]
call sub.MFC42.DLL_CString::CString
jmp 0x414965
mov al, byte [ebp + 0x20]
test al, al
jne 0x414965
push 0x40
call dword [sym.imp.USER32.dll_MessageBeep]
mov eax, dword [ebp + 0x10]
cmp eax, 0xffffffff
je 0x41497b
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [ebp + 0x10], 0xffffffff
mov eax, esi
pop edi
pop esi
mov byte [ebp + 0x17], 0
pop ebx
pop ebp
add esp, 0x130
ret