Function at 0x401000
Capabilities:
Check for time delay via gettickcount
Check mutex on windows
Check os version

Disassembly:
sub esp, 0x108
push ebx
push esi
push edi
push ebp
push 0
call dword [sym.imp.KERNEL32.dll_SetLastError]
cmp dword [section..data], 0
jne 0x401066
mov esi, 1
push 0
push 0
mov edi, dword [sym.imp.KERNEL32.dll_CreateMutexA]
push 0x4150d8
mov dword [0x4150e0], esi
mov dword [0x4150d8], 0xc
mov dword [0x4150dc], 0
call edi
push 0
mov dword [0x4150f0], eax
push 0
push 0x4150d8
call edi
mov dword [0x4150e4], eax
mov dword [section..data], esi
push 0xffffffffffffffff
mov eax, dword [0x4150f0]
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov esi, dword [esp + 0x11c]
mov eax, dword [esp + 0x120]
and esi, 0xffff
and eax, 0xffff
mov ecx, dword [esp + 0x124]
mov edx, dword [esp + 0x128]
and ecx, 0xffff
and edx, 0xffff
mov dword [0x4150c8], esi
mov dword [0x4150cc], eax
mov dword [0x4150d0], ecx
mov dword [0x4150d4], edx
call dword [sym.imp.KERNEL32.dll_GetVersion]
cmp dword [0x414004], 0xffffffff
je 0x401180
cmp si, 0xffff
jne 0x4010f3
mov eax, dword [0x414004]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [0x414004], 0xffffffff
jmp 0x401460
mov ecx, dword [0x4150e8]
push 0
shl ecx, 0x10
lea eax, [esp + 0x14]
mov cl, 0x10
push eax
push 8
mov edx, dword [0x414004]
push 0x4150c0
push 0x10
push 0x4150c8
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x401159
cmp dword [0x4150c0], 0xffa00000
je 0x401159
mov eax, dword [0x4150c4]
push eax
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov eax, dword [0x4150f0]
push eax
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov eax, dword [0x4150c0]
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x108
ret
mov eax, dword [0x4150c4]
push eax
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov eax, dword [0x414004]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [0x414004], 0xffffffff
jmp 0x401460
cmp dword [0x41400c], 0
je 0x4011cb
cmp si, 0xffff
jne 0x40119f
mov dword [0x41400c], 0
jmp 0x401460
mov eax, dword [0x4150f0]
push eax
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov esi, eax
call dword [sym.imp.KERNEL32.dll_GetTickCount]
not esi
imul esi, eax
mov eax, esi
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x108
ret
mov ebp, 1
cmp esi, 0xffffffff
mov dword [0x414008], 0
mov dword [0x4150ec], ebp
je 0x401460
mov ecx, eax
not ecx
test ecx, 0x80000000
je 0x401304
cmp ebp, 1
jne 0x401226
lea eax, [esp + 0x14]
push str..KeyDongle_0
push 0x414040
mov ebx, 0xffffffff
push eax
call fcn.00403516
mov dword [0x4150e8], 0x22
add esp, 0xc
jmp 0x401249
lea eax, [esp + 0x14]
push str..PARCLASS0
push 0x414040
xor ebx, ebx
push eax
call fcn.00403516
mov dword [0x4150e8], 0x16
add esp, 0xc
lea edi, [esp + 0x14]
mov ecx, 0xffffffff
sub eax, eax
repne scasb al, byte es:[edi]
not ecx
mov edi, 1
lea esi, [esp + ecx + 0x12]
lea eax, [edi + ebx]
push 0x80
add al, 0x30
push 0x4150c0
lea ecx, [esp + 0x1c]
push 0x4150c8
push ecx
mov byte [esi], al
call fcn.004014b0
add esp, 0x10
test eax, eax
jne 0x4012d2
cmp dword [0x4150c4], 5
jne 0x4012a5
mov dword [0x4150ec], 0
mov dword [0x414008], 1
cmp dword [0x4150c4], 2
je 0x4012b4
inc edi
cmp edi, 3
jle 0x401261
inc ebp
cmp ebp, 2
jle 0x4011f9
cmp dword [0x4150ec], 0
je 0x401448
push 2
jmp 0x40145a
mov dword [0x4150ec], 0
mov eax, dword [0x4150c4]
push eax
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov eax, dword [0x4150f0]
push eax
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov eax, dword [0x4150c0]
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x108
ret
cmp al, 4
jb 0x40140a
mov ebx, 1
mov esi, 0x22
mov edi, 0x16
cmp ebx, 1
jne 0x40133c
push 0x4000000
mov dword [0x4150e8], esi
push 0x4150c0
push 0x4150c8
push str..KeyDongle_0
jmp 0x401356
push 0x4000000
mov dword [0x4150e8], edi
push 0x4150c0
push 0x4150c8
push str..PARCLASS.VXD
call fcn.004014b0
add esp, 0x10
test eax, eax
jne 0x4013d8
inc ebx
cmp ebx, 2
jle 0x40131b
cmp dword [0x4150c4], 5
jne 0x401385
mov dword [0x4150ec], 0
mov dword [0x414008], 1
cmp dword [0x4150c4], 2
jne 0x4012be
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov esi, eax
call dword [sym.imp.KERNEL32.dll_GetTickCount]
not esi
imul esi, eax
test esi, esi
je 0x4012be
push 0
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov dword [0x41400c], 1
mov eax, dword [0x4150f0]
push eax
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov eax, esi
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x108
ret
mov dword [0x4150ec], 0
mov eax, dword [0x4150c4]
push eax
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov eax, dword [0x4150f0]
push eax
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov eax, dword [0x4150c0]
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x108
ret
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov esi, eax
call dword [sym.imp.KERNEL32.dll_GetTickCount]
not esi
imul esi, eax
test esi, esi
je 0x4012be
mov dword [0x41400c], 1
mov eax, dword [0x4150f0]
push eax
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov eax, esi
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x108
ret
cmp dword [0x414008], 1
sbb eax, eax
and eax, 0x1ffffffc
add eax, 5
push eax
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov eax, dword [0x4150f0]
push eax
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov ebp, dword [sym.imp.KERNEL32.dll_GetLastError]
call ebp
cmp eax, 0x120
jne 0x401483
push 0
call dword [sym.imp.KERNEL32.dll_SetLastError]
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov esi, eax
call dword [sym.imp.KERNEL32.dll_GetTickCount]
not esi
imul esi, eax
mov eax, esi
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x108
ret