Function at 0x402240
Capabilities:
Check os version
Create thread
Delete file
Link many functions at runtime
Move file
Set file attributes
Terminate thread

Disassembly:
push ebp
lea ebp, [esp - 0x14ac]
mov eax, 0x14ac
call fcn.00408bc0
push 0xffffffffffffffff
push 0x40ded8
mov eax, dword fs:[0]
push eax
sub esp, 0x10
mov eax, dword [0x412064]
xor eax, ebp
mov dword [ebp + 0x14a8], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov ebx, dword [ebp + 0x14bc]
push 0x104
xor esi, esi
lea eax, [ebp + 0x13a1]
push esi
push eax
mov byte [ebp + 0x13a0], 0
call fcn.00405cb0
push 0x103
lea ecx, [ebp + 0x1095]
push esi
push ecx
mov byte [ebp + 0x1094], 0
call fcn.00405cb0
push 0xffc
lea edx, [ebp + 4]
push esi
push edx
mov dword [ebp], esi
call fcn.00405cb0
add esp, 0x24
push 1
call fcn.004013a0
push 0x103
lea eax, [ebp + 0x129d]
push esi
push eax
xor edi, edi
mov byte [ebp + 0x129c], 0
call fcn.00405cb0
push 0x90
lea ecx, [ebp + 0x1004]
push esi
push ecx
call fcn.00405cb0
push 0x104
lea edx, [ebp + 0x129c]
push ebx
push edx
mov dword [ebp + 0x1000], 0x94
call fcn.004036d3
lea eax, [ebp + 0x129c]
push 0x40ff7c
push eax
call fcn.00403a15
add esp, 0x2c
test eax, eax
je 0x40235a
mov dword [0x5c51c8], 8
call fcn.004010a0
push str.SREngLdrDebug_Begin..._r_n
push 0x5c461c
call fcn.00401110
add esp, 8
jmp 0x402360
mov dword [0x5c51c8], esi
push 0x103
lea ecx, [ebp + 0x1199]
push esi
push ecx
mov byte [ebp + 0x1198], 0
call fcn.00405cb0
add esp, 0xc
push 0x104
lea edx, [ebp + 0x1198]
push edx
push esi
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
test eax, eax
je 0x402734
lea eax, [ebp]
push eax
lea ecx, [ebp + 0x1198]
push ecx
call fcn.00401500
add esp, 8
cmp eax, esi
je 0x40247d
push str.user32.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov edi, eax
cmp edi, esi
jne 0x4023e1
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.LoadLibrary_user32.dll_failed._LastError___d_r_n
push 0x5c461c
call fcn.00401110
add esp, 0xc
jmp 0x402734
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.MessageBoxA
push edi
call esi
push str.LoadStringA
push edi
mov dword [0x5c51b0], eax
call esi
cmp dword [0x5c51b0], 0
mov dword [0x5c51b4], eax
je 0x402466
test eax, eax
je 0x402466
push 0x104
lea edx, [ebp + 0x1094]
push edx
push 0x81
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call dword [0x5c51b4]
test eax, eax
push 0x10
push str.System_Repair_Engineer
je 0x402442
lea eax, [ebp + 0x1094]
push eax
jmp 0x402447
push str.Self_check_failed._This_file_may_be_modified_by_computer_virus._r_n_r_nPlease_download_a_new_file_from_http:__www.KZTechs.com.
push 0
call dword [0x5c51b0]
push str.Self_check_r_n
push 0x5c461c
call fcn.00401110
add esp, 8
jmp 0x402734
push str.MessageBoxA__NULL__LoadStringA__NULL_r_n
push 0x5c461c
call fcn.00401110
add esp, 8
jmp 0x402734
lea ecx, [ebp + 0x13a0]
push ecx
push str.Begin_LoadResource_from__s..._r_n
push 0x5c461c
call fcn.00401110
add esp, 0xc
lea ecx, [ebp + 0x13a0]
call fcn.00401d00
cmp eax, esi
jne 0x4024c3
lea edx, [ebp + 0x13a0]
push edx
push str.LoadResource_from__s_failed_r_n
push 0x5c461c
call fcn.00401110
add esp, 0xc
jmp 0x402734
push str.8809FEA6_9ED6_4eef_91ED_412A700B7722
push esi
push 1
push esi
mov dword [ebp - 4], esi
call dword [sym.imp.KERNEL32.dll_CreateEventA]
push str.user32.dll
mov dword [ebp - 0x1c], eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov edi, eax
cmp edi, esi
mov dword [ebp - 0x18], edi
je 0x4023c3
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.CreateDesktopA
push edi
call esi
push str.SwitchDesktop
push edi
mov dword [0x5c51a4], eax
call esi
push str.GetThreadDesktop
push edi
mov dword [0x5c51a8], eax
call esi
push str.CloseDesktop
push edi
mov dword [0x5c51ac], eax
call esi
mov dword [0x5c51b8], eax
lea eax, [ebp + 0x1000]
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
cmp dword [ebp + 0x1004], 4
ja 0x402565
push str.MessageBoxA
push edi
call esi
test eax, eax
je 0x402734
push 0x10
push str.System_Repair_Engineer
push str.System_Repair_Engineer_requires_Microsoft_Windows_2000_or_higher_version.
push 0
call eax
jmp 0x402734
test ebx, ebx
je 0x40261c
mov edx, dword [0x5c46ac]
mov eax, dword [edx + 0xc]
mov ecx, 0x5c46ac
call eax
add eax, 0x10
mov dword [ebp - 0x14], eax
lea edx, [ebp + 0x129c]
lea ebx, [ebp - 0x14]
mov byte [ebp - 4], 1
call fcn.00402840
lea ecx, [ebp + 0x129c]
push str.safedesktop
push ecx
call fcn.00403a15
add esp, 8
test eax, eax
je 0x4025f9
cmp dword [ebp + 0x1004], 5
jb 0x4025e1
push 0
push 0xf01f7
push 0
push 0
push 0
push str.08BB0577_43FA_4feb_8133_BC3D64AB6B8B
call dword [0x5c51a4]
test eax, eax
mov dword [0x5c51c0], eax
je 0x4025e1
mov dword [0x5c51c4], 1
mov edx, dword [ebp - 0x14]
push 0x104
push edx
lea eax, [ebp + 0x129c]
push eax
call fcn.004036d3
add esp, 0xc
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40261c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea edx, [ebp + 0x129c]
lea ecx, [ebp + 0x13a0]
call fcn.00401e70
mov ebx, eax
cmp ebx, 0xffffffff
je 0x402734
cmp dword [ebp + 0x1004], 5
jb 0x40267b
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
push eax
call dword [0x5c51ac]
cmp dword [0x5c51c0], 0
mov dword [0x5c51bc], eax
je 0x40267b
push str.call_SREngSwitchDesktop._Switch_to_new_desktop..._r_n
push 0x5c461c
call fcn.00401110
mov ecx, dword [0x5c51c0]
add esp, 8
push ecx
call dword [0x5c51a8]
lea edx, [ebp - 0x14]
push edx
push 0
push 0
push 0x402110
push 0
push 0
mov dword [ebp - 0x14], 0
call dword [sym.imp.KERNEL32.dll_CreateThread]
push str.Wait_SREng_Core_Process_Exit..._r_n
push 0x5c461c
mov esi, eax
call fcn.00401110
add esp, 8
push 0xffffffffffffffff
push ebx
mov ebx, dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
call ebx
push str.SREng_Core_Process_Exited_r_n
push 0x5c461c
call fcn.00401110
add esp, 8
push 0
push esi
call dword [sym.imp.KERNEL32.dll_TerminateThread]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [ebp + 0x1004], 5
jb 0x402721
cmp dword [0x5c51c0], 0
je 0x402721
push str.call_SREngSwitchDesktop._Switch_to_old_desktop..._r_n
push 0x5c461c
call fcn.00401110
mov eax, dword [0x5c51bc]
add esp, 8
push eax
call dword [0x5c51a8]
mov ecx, dword [0x5c51c0]
push ecx
call dword [0x5c51b8]
mov dword [0x5c51c0], 0
mov edx, dword [ebp - 0x1c]
push 0
push edx
call ebx
jmp 0x402734
push 0
call fcn.004013a0
push 0x80
lea eax, [ebp + 0x13a0]
push eax
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
test edi, edi
je 0x402758
push edi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
xor esi, esi
cmp byte [ebp + 0x13a0], 0
je 0x4027d7
mov ebx, dword [sym.imp.KERNEL32.dll_DeleteFileA]
mov edi, dword [sym.imp.KERNEL32.dll_Sleep]
nop
cmp esi, 0xa
jge 0x4027ad
lea ecx, [ebp + 0x13a0]
push ecx
push str.Delete_SREng_Core_Process_File__s_r_n
push 0x5c461c
call fcn.00401110
add esp, 0xc
lea edx, [ebp + 0x13a0]
push edx
call ebx
test eax, eax
jne 0x4027d7
push 0x64
call edi
add esi, 1
cmp byte [ebp + 0x13a0], 0
jne 0x402770
jmp 0x4027d7
lea eax, [ebp + 0x13a0]
push eax
push str.MoveFileEx_SREng_Core_Process_File__s_r_n
push 0x5c461c
call fcn.00401110
add esp, 0xc
push 4
push 0
lea ecx, [ebp + 0x13a0]
push ecx
call dword [sym.imp.KERNEL32.dll_MoveFileExA]
push str.SREngLdrDebug_End..._r_n_r_n
push 0x5c461c
call fcn.00401110
add esp, 8
mov eax, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x14a8]
xor ecx, ebp
call fcn.004030d8
add ebp, 0x14ac
mov esp, ebp
pop ebp
ret 0x10