Function at 0x40e770
Capabilities:
Check for time delay via gettickcount
Check os version
Create thread
Extract resource via kernel32 functions

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1e4
push edi
mov eax, dword [ebp + 0x14]
push eax
mov ecx, dword [ebp + 0x10]
push ecx
mov edx, dword [ebp + 0xc]
push edx
mov eax, dword [ebp + 0xc]
push eax
call fcn.0040b060
add esp, 4
push eax
push str._ScreenSaverProc__Got_message___s___0x_x__params___d____d_
call fcn.0040afc0
add esp, 0x14
mov ecx, dword [ebp + 0xc]
mov dword [ebp - 0x1c8], ecx
cmp dword [ebp - 0x1c8], 0x10
ja 0x40e7e8
cmp dword [ebp - 0x1c8], 0x10
je 0x40f398
mov edx, dword [ebp - 0x1c8]
sub edx, 1
mov dword [ebp - 0x1c8], edx
cmp dword [ebp - 0x1c8], 7
ja case.0x40e884.3
mov eax, dword [ebp - 0x1c8]
jmp dword [eax*4 + 0x40f970]
cmp dword [ebp - 0x1c8], 0x107
ja 0x40e838
cmp dword [ebp - 0x1c8], 0x107
je case.0x40e831.2
mov ecx, dword [ebp - 0x1c8]
sub ecx, 0x1c
mov dword [ebp - 0x1c8], ecx
cmp dword [ebp - 0x1c8], 0xe9
ja case.0x40e884.3
mov eax, dword [ebp - 0x1c8]
xor edx, edx
mov dl, byte [eax + 0x40f9a0]
jmp dword [edx*4 + 0x40f990]
cmp dword [ebp - 0x1c8], 0x218
ja 0x40e88b
cmp dword [ebp - 0x1c8], 0x218
je 0x40f664
mov ecx, dword [ebp - 0x1c8]
sub ecx, 0x112
mov dword [ebp - 0x1c8], ecx
cmp dword [ebp - 0x1c8], 0xf7
ja case.0x40e884.3
mov eax, dword [ebp - 0x1c8]
xor edx, edx
mov dl, byte [eax + 0x40fa9a]
jmp dword [edx*4 + 0x40fa8a]
cmp dword [ebp - 0x1c8], 0x312
je case.0x40e831.2
cmp dword [ebp - 0x1c8], 0x8000
je 0x40f3b9
jmp case.0x40e884.3
mov byte [0x42730b], 1
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x42730c], eax
mov ecx, dword [0x42730c]
push ecx
call fcn.00411004
add esp, 4
mov edx, dword [ebp + 8]
mov dword [0x427304], edx
mov eax, dword [ebp + 8]
push eax
call dword [sym.imp.USER32.dll_GetParent]
mov dword [ebp - 0x20], eax
cmp dword [ebp - 0x20], 0
jne 0x40e904
push 1
mov ecx, 0x427270
call fcn.0040ba50
push eax
call fcn.0040ae70
add esp, 8
jmp 0x40e919
push 0
mov ecx, 0x427270
call fcn.0040ba50
push eax
call fcn.0040ae70
add esp, 8
push str.21:57:15
push str.Apr__5_2002
push 0x32
push 1
push str._ScreenSaverProc__INFO:__WM_CREATE__Starting_Matrix_Code_Emulator_v_d._d___s__s_
call fcn.0040afc0
add esp, 0x14
mov ecx, 0x25
xor eax, eax
lea edi, [ebp - 0xbc]
rep stosd dword es:[edi], eax
mov dword [ebp - 0xbc], 0x94
lea ecx, [ebp - 0xbc]
push ecx
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
xor edx, edx
cmp dword [ebp - 0xac], 1
sete dl
mov byte [0x427309], dl
xor eax, eax
mov al, byte [0x427309]
test eax, eax
je 0x40e983
mov dword [ebp - 0x1cc], str.true
jmp 0x40e98d
mov dword [ebp - 0x1cc], str.false
mov ecx, dword [ebp - 0x1cc]
push ecx
mov edx, dword [ebp - 0xac]
push edx
mov eax, dword [ebp - 0xb0]
push eax
mov ecx, dword [ebp - 0xb4]
push ecx
mov edx, dword [ebp - 0xb8]
push edx
push str._EnumScreens__INFO:_OS_version__d._d._d__platform__d__9x__s_
call fcn.0040afc0
add esp, 0x18
call fcn.00409760
mov dword [ebp - 0x1c], eax
cmp dword [ebp - 0x1c], 0
jne 0x40e9d8
call fcn.0040af80
or eax, 0xffffffff
jmp 0x40f969
mov ecx, 0x427270
call fcn.0040bd90
mov ecx, 0x427270
call fcn.0040d210
cmp dword [0x42727c], 0
jne 0x40e9fa
call fcn.0040af80
push str._ScreenSaverProc__GOSSIP:__WM_CREATE__All_screens_and_modes_enumerated
call fcn.0040afc0
add esp, 4
push str.DATAFILE
push 0x6f
push 0
call dword [sym.imp.KERNEL32.dll_FindResourceA]
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0xc]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_LoadResource]
mov dword [ebp - 0x14], eax
mov ecx, dword [ebp - 0x14]
push ecx
call dword [sym.imp.KERNEL32.dll_LockResource]
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x10], 0
jne 0x40ea55
push str._ScreenSaverProc__ERROR:__WM_CREATE__Unable_to_load_glyph_data_from_resource
call fcn.0040afc0
add esp, 4
call fcn.0040fdb0
or eax, 0xffffffff
jmp 0x40f969
push str.DATAFILE
push 0x72
push 0
call dword [sym.imp.KERNEL32.dll_FindResourceA]
mov dword [ebp - 0x28], eax
mov edx, dword [ebp - 0x28]
push edx
push 0
call dword [sym.imp.KERNEL32.dll_LoadResource]
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x24]
push eax
call dword [sym.imp.KERNEL32.dll_LockResource]
mov dword [ebp - 0x18], eax
cmp dword [ebp - 0x18], 0
jne 0x40eaa3
push str._ScreenSaverProc__ERROR:__WM_CREATE__Unable_to_load_char_data_from_resource
call fcn.0040afc0
add esp, 4
call fcn.0040fdb0
or eax, 0xffffffff
jmp 0x40f969
mov dword [ebp - 8], 0
cmp dword [ebp - 0x20], 0
jne 0x40ebfd
cmp dword [0x42729c], 1
jne 0x40eb1c
push str.DATAFILE
push 0x73
push 0
call dword [sym.imp.KERNEL32.dll_FindResourceA]
mov dword [ebp - 0xc0], eax
mov ecx, dword [ebp - 0xc0]
push ecx
push 0
call dword [sym.imp.KERNEL32.dll_LoadResource]
mov dword [ebp - 0xc4], eax
mov edx, dword [ebp - 0xc4]
push edx
call dword [sym.imp.KERNEL32.dll_LockResource]
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
jne 0x40eb17
push str._ScreenSaverProc__ERROR:__WM_CREATE__Unable_to_load_message_data_from_resource
call fcn.0040afc0
add esp, 4
call fcn.0040fdb0
or eax, 0xffffffff
jmp 0x40f969
jmp 0x40ebfd
cmp dword [0x42729c], 2
jne 0x40ebfd
cmp dword [0x4272a4], 0
jne 0x40eb3e
mov dword [ebp - 0x1d0], 0x41b22c
jmp 0x40eb49
mov eax, dword [0x4272a4]
mov dword [ebp - 0x1d0], eax
push 0x4205b8
mov ecx, dword [ebp - 0x1d0]
push ecx
call fcn.004114b4
add esp, 8
mov dword [ebp - 0xc8], eax
cmp dword [ebp - 0xc8], 0
je 0x40ebfd
push 2
push 0
mov edx, dword [ebp - 0xc8]
push edx
call fcn.00411b9a
add esp, 0xc
mov eax, dword [ebp - 0xc8]
push eax
call fcn.00411a17
add esp, 4
mov dword [ebp - 0xcc], eax
push 0
push 0
mov ecx, dword [ebp - 0xc8]
push ecx
call fcn.00411b9a
add esp, 0xc
cmp dword [ebp - 0xcc], 0
jle 0x40ebee
mov edx, dword [ebp - 0xcc]
push edx
call fcn.00410ff6
add esp, 4
mov dword [ebp - 0x108], eax
mov eax, dword [ebp - 0x108]
mov dword [ebp - 8], eax
mov ecx, dword [ebp - 0xc8]
push ecx
mov edx, dword [ebp - 0xcc]
push edx
push 1
mov eax, dword [ebp - 8]
push eax
call fcn.00411900
add esp, 0x10
mov ecx, dword [ebp - 0xc8]
push ecx
call fcn.004114c7
add esp, 4
cmp dword [ebp - 0x20], 0
jne 0x40ed0a
push str._ScreenSaverProc__GOSSIP:__WM_CREATE__Fullscreen_mode
call fcn.0040afc0
add esp, 4
mov byte [0x427308], 1
mov ecx, 0x427268
call fcn.0040ada0
mov edx, dword [ebp - 0x1c]
mov eax, dword [edx + 4]
mov dword [ebp - 0xd0], eax
jmp 0x40ec42
mov ecx, dword [ebp - 0xd0]
add ecx, 4
mov dword [ebp - 0xd0], ecx
mov edx, dword [ebp - 0x1c]
mov eax, dword [edx + 8]
mov dword [ebp - 0x128], eax
mov ecx, dword [ebp - 0xd0]
cmp ecx, dword [ebp - 0x128]
je 0x40ec89
push 0
push 1
mov edx, dword [ebp + 8]
push edx
mov eax, dword [ebp - 0xd0]
mov ecx, dword [eax]
call fcn.004013e0
and eax, 0xff
test eax, eax
jne 0x40ec87
call fcn.0040fdb0
or eax, 0xffffffff
jmp 0x40f969
jmp 0x40ec33
mov ecx, dword [ebp - 0x1c]
mov edx, dword [ecx + 4]
mov dword [ebp - 0xd0], edx
jmp 0x40eca6
mov eax, dword [ebp - 0xd0]
add eax, 4
mov dword [ebp - 0xd0], eax
mov ecx, dword [ebp - 0x1c]
mov edx, dword [ecx + 8]
mov dword [ebp - 0x12c], edx
mov eax, dword [ebp - 0xd0]
cmp eax, dword [ebp - 0x12c]
je 0x40ecf1
mov ecx, dword [ebp - 8]
push ecx
mov edx, dword [ebp - 0x18]
push edx
mov eax, dword [ebp - 0x10]
push eax
mov ecx, dword [ebp - 0xd0]
mov ecx, dword [ecx]
call fcn.00402280
and eax, 0xff
test eax, eax
jne 0x40ecef
call fcn.0040fdb0
or eax, 0xffffffff
jmp 0x40f969
jmp 0x40ec97
mov byte [0x427311], 1
push str._ScreenSaverProc__INFO:__WM_CREATE__DirectDraw_initalized_on_all_screens__starting_threads
call fcn.0040afc0
add esp, 4
jmp 0x40f158
mov byte [0x41fe6c], 0
mov byte [0x427308], 0
lea edx, [ebp - 0xe0]
push edx
mov eax, dword [ebp + 8]
push eax
call dword [sym.imp.USER32.dll_GetWindowRect]
mov ecx, dword [ebp - 0xd4]
sub ecx, dword [ebp - 0xdc]
push ecx
mov edx, dword [ebp - 0xd8]
sub edx, dword [ebp - 0xe0]
push edx
push str._ScreenSaverProc__GOSSIP:__WM_CREATE__Windowed_mode__dimensions___dx_d_
call fcn.0040afc0
add esp, 0xc
mov eax, dword [ebp - 0x1c]
cmp dword [eax + 4], 0
jne 0x40ed65
mov dword [ebp - 0x1d4], 0
jmp 0x40ed7a
mov ecx, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x1c]
mov eax, dword [ecx + 8]
sub eax, dword [edx + 4]
sar eax, 2
mov dword [ebp - 0x1d4], eax
cmp dword [ebp - 0x1d4], 1
jbe 0x40ef61
push str._ScreenSaverProc__GOSSIP:__WM_CREATE__Found_non_primary_screen__deleting
call fcn.0040afc0
add esp, 4
mov ecx, dword [ebp - 0x1c]
mov edx, dword [ecx + 4]
mov dword [ebp - 0xe8], edx
mov eax, dword [ebp - 0xe8]
add eax, 4
mov dword [ebp - 0xe8], eax
jmp 0x40edc0
mov ecx, dword [ebp - 0xe8]
add ecx, 4
mov dword [ebp - 0xe8], ecx
mov edx, dword [ebp - 0x1c]
mov eax, dword [edx + 8]
mov dword [ebp - 0x130], eax
mov ecx, dword [ebp - 0xe8]
cmp ecx, dword [ebp - 0x130]
je 0x40ee78
mov edx, dword [ebp - 0xe8]
cmp dword [edx], 0
je 0x40ee73
mov eax, dword [ebp - 0xe8]
mov ecx, dword [eax]
add ecx, 0x10
push ecx
push str._ScreenSaverProc__GOSSIP:__WM_CREATE__Deleting_screen__s
call fcn.0040afc0
add esp, 8
mov edx, dword [ebp - 0xe8]
mov eax, dword [edx]
mov dword [ebp - 0x110], eax
mov ecx, dword [ebp - 0x110]
mov dword [ebp - 0x10c], ecx
cmp dword [ebp - 0x10c], 0
je 0x40ee5d
mov ecx, dword [ebp - 0x10c]
call fcn.00401240
mov edx, 1
and edx, 1
test edx, edx
je 0x40ee4f
mov eax, dword [ebp - 0x10c]
push eax
call fcn.004109e9
add esp, 4
mov ecx, dword [ebp - 0x10c]
mov dword [ebp - 0x1d8], ecx
jmp 0x40ee67
mov dword [ebp - 0x1d8], 0
mov edx, dword [ebp - 0xe8]
mov dword [edx], 0
jmp 0x40edb1
push str._ScreenSaverProc__GOSSIP:__WM_CREATE__Clearing_vector
call fcn.0040afc0
add esp, 4
mov eax, dword [ebp - 0x1c]
mov ecx, dword [eax + 4]
mov dword [ebp - 0xe8], ecx
mov edx, dword [ebp - 0xe8]
add edx, 4
mov dword [ebp - 0xe8], edx
mov eax, dword [ebp - 0x1c]
mov ecx, dword [eax + 8]
mov dword [ebp - 0x134], ecx
mov edx, dword [ebp - 0x1c]
mov eax, dword [edx + 8]
mov dword [ebp - 0x13c], eax
mov ecx, dword [ebp - 0xe8]
mov dword [ebp - 0x144], ecx
mov edx, dword [ebp - 0x134]
mov dword [ebp - 0x140], edx
jmp 0x40eef0
mov eax, dword [ebp - 0x144]
add eax, 4
mov dword [ebp - 0x144], eax
mov ecx, dword [ebp - 0x140]
add ecx, 4
mov dword [ebp - 0x140], ecx
mov edx, dword [ebp - 0x140]
cmp edx, dword [ebp - 0x13c]
je 0x40ef10
mov eax, dword [ebp - 0x144]
mov ecx, dword [ebp - 0x140]
mov edx, dword [ecx]
mov dword [eax], edx
jmp 0x40eed2
mov eax, dword [ebp - 0x144]
mov dword [ebp - 0x138], eax
mov ecx, dword [ebp - 0x1c]
mov edx, dword [ecx + 8]
mov dword [ebp - 0x148], edx
mov eax, dword [ebp - 0x138]
mov dword [ebp - 0x14c], eax
jmp 0x40ef45
mov ecx, dword [ebp - 0x14c]
add ecx, 4
mov dword [ebp - 0x14c], ecx
mov edx, dword [ebp - 0x14c]
cmp edx, dword [ebp - 0x148]
je 0x40ef55
jmp 0x40ef36
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x138]
mov dword [eax + 8], ecx
push str._ScreenSaverProc__GOSSIP:__WM_CREATE__Overriding_size
call fcn.0040afc0
add esp, 4
mov edx, dword [ebp - 0x1c]
mov eax, dword [edx + 4]
mov dword [ebp - 0x150], eax
mov ecx, dword [ebp - 0x150]
mov edx, dword [ecx]
mov dword [ebp - 0xe4], edx
mov eax, dword [ebp - 0xe4]
mov ecx, dword [eax + 0x104]
mov dword [ebp - 0x154], ecx
cmp dword [ebp - 0x154], 0
jne 0x40f09b
mov edx, dword [ebp - 0xe4]
mov eax, dword [edx + 0x100]
mov dword [ebp - 0xec], eax
cmp dword [ebp - 0xec], 0
jne 0x40efdc
push str._ScreenSaverProc__ERROR:__WM_CREATE__No_modes_found
call fcn.0040afc0
add esp, 4
call fcn.0040fdb0
or eax, 0xffffffff
jmp 0x40f969
mov ecx, dword [ebp - 0xec]
mov edx, dword [ecx + 4]
mov dword [ebp - 0x158], edx
mov eax, dword [ebp - 0x158]
cmp dword [eax], 0
jne 0x40f010
push str._ScreenSaverProc__ERROR:__WM_CREATE__Empty_mode_vector
call fcn.0040afc0
add esp, 4
call fcn.0040fdb0
or eax, 0xffffffff
jmp 0x40f969
mov ecx, dword [ebp - 0xec]
mov edx, dword [ecx + 4]
mov dword [ebp - 0x15c], edx
mov eax, dword [ebp - 0xec]
mov ecx, dword [eax + 4]
mov dword [ebp - 0x160], ecx
mov edx, dword [ebp - 0xec]
mov eax, dword [edx + 4]
mov dword [ebp - 0x164], eax
mov ecx, dword [ebp - 0x15c]
mov edx, dword [ecx]
mov eax, dword [edx + 8]
push eax
mov ecx, dword [ebp - 0x160]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push eax
mov ecx, dword [ebp - 0x164]
mov edx, dword [ecx]
mov eax, dword [edx]
push eax
mov ecx, dword [ebp - 0xe4]
call fcn.004096b0
and eax, 0xff
test eax, eax
jne 0x40f08e
push str._ScreenSaverProc__ERROR:__WM_CREATE__Unable_to_set_default_mode
call fcn.0040afc0
add esp, 4
call fcn.0040fdb0
or eax, 0xffffffff
jmp 0x40f969
push str._ScreenSaverProc__INFO:__WM_CREATE__Default_mode_set
call fcn.0040afc0
add esp, 4
mov ecx, dword [ebp - 0xe4]
mov edx, dword [ecx + 0x104]
mov dword [ebp - 0x168], edx
mov eax, dword [ebp - 0xd8]
sub eax, dword [ebp - 0xe0]
mov ecx, dword [ebp - 0x168]
mov dword [ecx], eax
mov edx, dword [ebp - 0xe4]
mov eax, dword [edx + 0x104]
mov dword [ebp - 0x16c], eax
mov ecx, dword [ebp - 0xd4]
sub ecx, dword [ebp - 0xdc]
mov edx, dword [ebp - 0x16c]
mov dword [edx + 4], ecx
push str._ScreenSaverProc__GOSSIP:__WM_CREATE__Open_and_load_screen
call fcn.0040afc0
add esp, 4
push 0
push 0
mov eax, dword [ebp + 8]
push eax
mov ecx, dword [ebp - 0xe4]
call fcn.004013e0
and eax, 0xff
test eax, eax
jne 0x40f11e
call fcn.0040fdb0
or eax, 0xffffffff
jmp 0x40f969
mov ecx, dword [ebp - 8]
push ecx
mov edx, dword [ebp - 0x18]
push edx
mov eax, dword [ebp - 0x10]
push eax
mov ecx, dword [ebp - 0xe4]
call fcn.00402280
and eax, 0xff
test eax, eax
jne 0x40f14b
call fcn.0040fdb0
or eax, 0xffffffff
jmp 0x40f969
push str._ScreenSaverProc__INFO:__WM_CREATE__DirectDraw_initalized_in_preview_window__starting_thread
call fcn.0040afc0
add esp, 4
mov ecx, dword [ebp - 0x1c]
push ecx
push 0
push 0x40a3b0
call fcn.004117b7
add esp, 0xc
push str._ScreenSaverProc__INFO:__WM_CREATE__Thread_started
call fcn.0040afc0
add esp, 4
cmp dword [0x42729c], 2
jne 0x40f19f
cmp dword [ebp - 8], 0
je 0x40f19f
mov edx, dword [ebp - 8]
mov dword [ebp - 0x114], edx
mov eax, dword [ebp - 0x114]
push eax
call fcn.004109e9
add esp, 4
xor ecx, ecx
mov cl, byte [0x427311]
test ecx, ecx
je 0x40f1c8
mov dword [ebp - 0xf0], 1
push 0
lea edx, [ebp - 0xf0]
push edx
push 1
push 0x61
call dword [sym.imp.USER32.dll_SystemParametersInfoA]
push 0xfffffffffffffff1
call dword [sym.imp.KERNEL32.dll_GetCurrentThread]
push eax
call dword [sym.imp.KERNEL32.dll_SetThreadPriority]
mov byte [0x42730b], 0
xor eax, eax
jmp 0x40f969
mov eax, dword [ebp + 0x10]
and eax, 0xffff
test eax, eax
jne 0x40f28e
xor ecx, ecx
mov cl, byte [0x427310]
test ecx, ecx
jne 0x40f24a
xor edx, edx
mov dl, byte [0x42730a]
test edx, edx
jne 0x40f24a
xor eax, eax
mov al, byte [0x42730b]
test eax, eax
jne 0x40f24a
push str._ScreenSaverProc__INFO:_Deactivated__terminate
call fcn.0040afc0
add esp, 4
mov byte [0x41fe6c], 0
mov ecx, dword [ebp + 8]
push ecx
call fcn.0040fbc0
add esp, 4
push 0
push 0
push 0x10
mov edx, dword [ebp + 8]
push edx
call dword [sym.imp.USER32.dll_SendMessageA]
jmp 0x40f28c
xor eax, eax
mov al, byte [0x427310]
test eax, eax
je 0x40f264
push str._ScreenSaverProc__INFO:_Deactivated_in_password_check
call fcn.0040afc0
add esp, 4
jmp 0x40f28c
xor ecx, ecx
mov cl, byte [0x42730b]
test ecx, ecx
je 0x40f27f
push str._ScreenSaverProc__INFO:_Deactivated_in_init_loop
call fcn.0040afc0
add esp, 4
jmp 0x40f28c
push str._ScreenSaverProc__INFO:_Deactivated__in_terminate_loop
call fcn.0040afc0
add esp, 4
jmp 0x40f2cf
push str._ScreenSaverProc__INFO:_Activated
call fcn.0040afc0
add esp, 4
xor edx, edx
mov dl, byte [0x427310]
test edx, edx
je 0x40f2c8
push str._ScreenSaverProc__INFO:_in_passwd_check__unsuspend_drawing
call fcn.0040afc0
add esp, 4
mov ecx, 0x427268
call fcn.0040ada0
mov ecx, 0x4272d8
call fcn.0040ade0
mov byte [0x427310], 0
xor eax, eax
jmp 0x40f969
xor eax, eax
jmp 0x40f969
xor eax, eax
jmp 0x40f969
xor eax, eax
jmp 0x40f969
movsx eax, word [ebp + 0x14]
mov dword [ebp - 0xf4], eax
mov ecx, dword [ebp + 0x14]
shr ecx, 0x10
and ecx, 0xffff
movsx edx, cx
mov dword [ebp - 0xf8], edx
cmp dword [0x4272bc], 0
je 0x40f31a
xor eax, eax
jmp 0x40f969
xor eax, eax
mov al, byte [0x427310]
test eax, eax
je 0x40f32c
xor eax, eax
jmp 0x40f969
mov ecx, dword [ebp - 0xf4]
cmp ecx, dword [0x41fe74]
jne 0x40f348
mov edx, dword [ebp - 0xf8]
cmp edx, dword [0x41fe78]
je 0x40f37c
mov eax, dword [ebp - 0xf4]
mov dword [0x41fe74], eax
mov ecx, dword [ebp - 0xf8]
mov dword [0x41fe78], ecx
mov edx, dword [0x427314]
add edx, 1
mov dword [0x427314], edx
cmp dword [0x427314], 5
jle 0x40f37c
jmp case.0x40e884.3
xor eax, eax
jmp 0x40f969
cmp dword [0x4272bc], 0
je 0x40f393
xor eax, eax
jmp 0x40f969
jmp case.0x40e884.3
mov eax, dword [ebp + 8]
push eax
call fcn.0040fbc0
add esp, 4
and eax, 0xff
test eax, eax
je 0x40f3b2
jmp case.0x40e884.3
xor eax, eax
jmp 0x40f969
push str._ScreenSaverProc__GOSSIP:__SCRM_VERIFYPW__Detected
call fcn.0040afc0
add esp, 4
mov byte [0x427310], 1
jmp case.0x40e884.3
mov ecx, dword [ebp + 0x10]
and ecx, 0xfff0
mov dword [ebp - 0x1dc], ecx
cmp dword [ebp - 0x1dc], 0xf060
ja 0x40f416
cmp dword [ebp - 0x1dc], 0xf060
je 0x40f433
cmp dword [ebp - 0x1dc], 0xf040
je 0x40f433
cmp dword [ebp - 0x1dc], 0xf050
je 0x40f433
jmp 0x40f65f
cmp dword [ebp - 0x1dc], 0xf140
je 0x40f433
cmp dword [ebp - 0x1dc], 0xf170
je 0x40f44b
jmp 0x40f65f
xor edx, edx
mov dl, byte [0x427308]
test edx, edx
je 0x40f446
xor eax, eax
jmp 0x40f969
jmp 0x40f65f
push str._ScreenSaverProc__INFO:_WM_SYSCOMMAND___SC_MONITORPOWER:_Monitor_shutdown_detected__suspending_threads
call fcn.0040afc0
add esp, 4
mov ecx, 0x4272d8
call fcn.0040ada0
mov ecx, 0x427268
call fcn.0040ade0
mov ecx, 0x427250
call fcn.0040ae20
and eax, 0xff
test eax, eax
jne 0x40f48b
push 1
push 0xa
call dword [sym.imp.KERNEL32.dll_SleepEx]
jmp 0x40f46c
mov eax, dword [0x425e18]
mov ecx, dword [eax + 4]
mov dword [ebp - 0xfc], ecx
jmp 0x40f4aa
mov edx, dword [ebp - 0xfc]
add edx, 4
mov dword [ebp - 0xfc], edx
mov eax, dword [0x425e18]
mov ecx, dword [eax + 8]
mov dword [ebp - 0x170], ecx
mov edx, dword [ebp - 0xfc]
cmp edx, dword [ebp - 0x170]
je 0x40f56b
mov eax, dword [ebp - 0xfc]
mov ecx, dword [eax]
mov dword [ebp - 0x174], ecx
mov edx, dword [ebp - 0x174]
cmp dword [edx + 0x110], 0
je 0x40f505
mov eax, dword [ebp - 0x174]
mov ecx, dword [eax + 0x110]
mov edx, dword [ebp - 0x174]
mov eax, dword [edx + 0x110]
mov edx, dword [eax]
push ecx
call dword [edx + 0x28]
mov eax, dword [ebp - 0xfc]
mov ecx, dword [eax]
mov dword [ebp - 0x11c], ecx
mov edx, dword [ebp - 0x11c]
mov dword [ebp - 0x118], edx
cmp dword [ebp - 0x118], 0
je 0x40f55c
mov ecx, dword [ebp - 0x118]
call fcn.00401240
mov eax, 1
and eax, 1
test eax, eax
je 0x40f54e
mov ecx, dword [ebp - 0x118]
push ecx
call fcn.004109e9
add esp, 4
mov edx, dword [ebp - 0x118]
mov dword [ebp - 0x1e0], edx
jmp 0x40f566
mov dword [ebp - 0x1e0], 0
jmp 0x40f49b
mov eax, dword [0x425e18]
mov dword [ebp - 0x198], eax
mov ecx, dword [ebp - 0x198]
mov edx, dword [ecx + 8]
mov dword [ebp - 0x178], edx
mov eax, dword [ebp - 0x198]
mov ecx, dword [eax + 4]
mov dword [ebp - 0x17c], ecx
mov edx, dword [ebp - 0x198]
mov eax, dword [edx + 8]
mov dword [ebp - 0x184], eax
mov ecx, dword [ebp - 0x17c]
mov dword [ebp - 0x18c], ecx
mov edx, dword [ebp - 0x178]
mov dword [ebp - 0x188], edx
jmp 0x40f5db
mov eax, dword [ebp - 0x18c]
add eax, 4
mov dword [ebp - 0x18c], eax
mov ecx, dword [ebp - 0x188]
add ecx, 4
mov dword [ebp - 0x188], ecx
mov edx, dword [ebp - 0x188]
cmp edx, dword [ebp - 0x184]
je 0x40f5fb
mov eax, dword [ebp - 0x18c]
mov ecx, dword [ebp - 0x188]
mov edx, dword [ecx]
mov dword [eax], edx
jmp 0x40f5bd
mov eax, dword [ebp - 0x18c]
mov dword [ebp - 0x180], eax
mov ecx, dword [ebp - 0x198]
mov edx, dword [ecx + 8]
mov dword [ebp - 0x190], edx
mov eax, dword [ebp - 0x180]
mov dword [ebp - 0x194], eax
jmp 0x40f633
mov ecx, dword [ebp - 0x194]
add ecx, 4
mov dword [ebp - 0x194], ecx
mov edx, dword [ebp - 0x194]
cmp edx, dword [ebp - 0x190]
je 0x40f643
jmp 0x40f624
mov eax, dword [ebp - 0x198]
mov ecx, dword [ebp - 0x180]
mov dword [eax + 8], ecx
push str._ScreenSaverProc__INFO:_WM_SYSCOMMAND___SC_MONITORPOWER:_All_screens_suspended
call fcn.0040afc0
add esp, 4
jmp case.0x40e884.3
cmp dword [ebp + 0x10], 4
jne 0x40f887
push str._ScreenSaverProc__INFO:_WM_POWERBROADCAST:_Suspending_thread
call fcn.0040afc0
add esp, 4
mov ecx, 0x4272d8
call fcn.0040ada0
mov ecx, 0x427268
call fcn.0040ade0
mov ecx, 0x427250
call fcn.0040ae20
and eax, 0xff
test eax, eax
jne 0x40f6ae
push 1
push 0xa
call dword [sym.imp.KERNEL32.dll_SleepEx]
jmp 0x40f68f
mov edx, dword [0x425e18]
mov eax, dword [edx + 4]
mov dword [ebp - 0x100], eax
jmp 0x40f6ce
mov ecx, dword [ebp - 0x100]
add ecx, 4
mov dword [ebp - 0x100], ecx
mov edx, dword [0x425e18]
mov eax, dword [edx + 8]
mov dword [ebp - 0x19c], eax
mov ecx, dword [ebp - 0x100]
cmp ecx, dword [ebp - 0x19c]
je 0x40f790
mov edx, dword [ebp - 0x100]
mov eax, dword [edx]
mov dword [ebp - 0x1a0], eax
mov ecx, dword [ebp - 0x1a0]
cmp dword [ecx + 0x110], 0
je 0x40f72a
mov edx, dword [ebp - 0x1a0]
mov eax, dword [edx + 0x110]
mov ecx, dword [ebp - 0x1a0]
mov edx, dword [ecx + 0x110]
mov ecx, dword [edx]
push eax
call dword [ecx + 0x28]
mov edx, dword [ebp - 0x100]
mov eax, dword [edx]
mov dword [ebp - 0x124], eax
mov ecx, dword [ebp - 0x124]
mov dword [ebp - 0x120], ecx
cmp dword [ebp - 0x120], 0
je 0x40f781
mov ecx, dword [ebp - 0x120]
call fcn.00401240
mov edx, 1
and edx, 1
test edx, edx
je 0x40f773
mov eax, dword [ebp - 0x120]
push eax
call fcn.004109e9
add esp, 4
mov ecx, dword [ebp - 0x120]
mov dword [ebp - 0x1e4], ecx
jmp 0x40f78b
mov dword [ebp - 0x1e4], 0
jmp 0x40f6bf
mov edx, dword [0x425e18]
mov dword [ebp - 0x1c4], edx
mov eax, dword [ebp - 0x1c4]
mov ecx, dword [eax + 8]
mov dword [ebp - 0x1a4], ecx
mov edx, dword [ebp - 0x1c4]
mov eax, dword [edx + 4]
mov dword [ebp - 0x1a8], eax
mov ecx, dword [ebp - 0x1c4]
mov edx, dword [ecx + 8]
mov dword [ebp - 0x1b0], edx
mov eax, dword [ebp - 0x1a8]
mov dword [ebp - 0x1b8], eax
mov ecx, dword [ebp - 0x1a4]
mov dword [ebp - 0x1b4], ecx
jmp 0x40f801
mov edx, dword [ebp - 0x1b8]
add edx, 4
mov dword [ebp - 0x1b8], edx
mov eax, dword [ebp - 0x1b4]
add eax, 4
mov dword [ebp - 0x1b4], eax
mov ecx, dword [ebp - 0x1b4]
cmp ecx, dword [ebp - 0x1b0]
je 0x40f821
mov edx, dword [ebp - 0x1b8]
mov eax, dword [ebp - 0x1b4]
mov ecx, dword [eax]
mov dword [edx], ecx
jmp 0x40f7e3
mov edx, dword [ebp - 0x1b8]
mov dword [ebp - 0x1ac], edx
mov eax, dword [ebp - 0x1c4]
mov ecx, dword [eax + 8]
mov dword [ebp - 0x1bc], ecx
mov edx, dword [ebp - 0x1ac]
mov dword [ebp - 0x1c0], edx
jmp 0x40f859
mov eax, dword [ebp - 0x1c0]
add eax, 4
mov dword [ebp - 0x1c0], eax
mov ecx, dword [ebp - 0x1c0]
cmp ecx, dword [ebp - 0x1bc]
je 0x40f869
jmp 0x40f84a
mov edx, dword [ebp - 0x1c4]
mov eax, dword [ebp - 0x1ac]
mov dword [edx + 8], eax
push str._ScreenSaverProc__INFO:_WM_POWERBROADCAST:_All_screens_suspended
call fcn.0040afc0
add esp, 4
jmp case.0x40e884.3
jmp case.0x40e884.3
push str._ScreenSaverProc__INFO:__WM_DESTROY__Detected
call fcn.0040afc0
add esp, 4
mov byte [0x42730a], 1
call fcn.0040fdb0
push str._ScreenSaverProc__INFO:_Restoring_mouse_pointer
call fcn.0040afc0
add esp, 4
push 1
call dword [sym.imp.USER32.dll_ShowCursor]
test eax, eax
jge 0x40f8bd
jmp 0x40f8af
mov dword [ebp - 0x104], 1
push 0
lea ecx, [ebp - 0x104]
push ecx
push 0
push 0x61
call dword [sym.imp.USER32.dll_SystemParametersInfoA]
push 0
call dword [sym.imp.USER32.dll_PostQuitMessage]
push str._ScreenSaverProc__PostQuitMessage
call fcn.0040afc0
add esp, 4
xor eax, eax
jmp 0x40f969
mov edx, dword [ebp + 0x14]
push edx
mov eax, dword [ebp + 0x10]
push eax
mov ecx, dword [ebp + 0xc]
push ecx
mov edx, dword [ebp + 8]
push edx
call fcn.0041019b
mov dword [ebp - 4], eax
cmp dword [ebp + 0xc], 0x8000
jne 0x40f966
cmp dword [ebp - 4], 0
je 0x40f93c
push str._ScreenSaverProc__successful_password_validation__terminate
call fcn.0040afc0
add esp, 4
mov byte [0x42730a], 1
mov eax, dword [ebp + 8]
push eax
call fcn.0040fbc0
add esp, 4
jmp 0x40f966
push str._ScreenSaverProc__unsuccessful_password_validation
call fcn.0040afc0
add esp, 4
push 0
call dword [sym.imp.USER32.dll_ShowCursor]
mov ecx, 0x427268
call fcn.0040ada0
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x42730c], eax
mov eax, dword [ebp - 4]
pop edi
mov esp, ebp
pop ebp
ret 0x10