Function at 0x42eb80
Capabilities:
Check os version
Log keystrokes via polling

Disassembly:
sub esp, 0x530
mov eax, dword [esp + 0x548]
push ebx
push ebp
push esi
mov esi, dword [esp + 0x540]
push edi
push 1
push esi
mov dword [0x467f10], eax
mov dword [esp + 0x1c], 0
call fcn.0042e920
push esi
call fcn.00423b60
push esi
call fcn.0042e520
push 0x64
push 0x64
call fcn.00401220
mov esi, dword [sym.imp.user32.dll_GetSystemMetrics]
add esp, 0x18
push 0
call esi
push 1
mov edi, eax
call esi
push 0
push 0
push 0
push 0x4609f8
mov ebx, eax
call dword [sym.imp.gdi32.dll_CreateICA]
mov ebp, dword [sym.imp.gdi32.dll_GetDeviceCaps]
mov esi, eax
push 0xc
push esi
call ebp
push esi
mov dword [esp + 0x14], eax
call dword [sym.imp.gdi32.dll_DeleteDC]
mov edx, dword [esp + 0x548]
cmp edi, edx
jne 0x42ec25
cmp ebx, dword [esp + 0x54c]
jne 0x42ec25
mov ecx, dword [esp + 0x10]
cmp ecx, dword [esp + 0x550]
je 0x42f015
xor eax, eax
mov ecx, 0x25
lea edi, [esp + 0x18]
rep stosd dword es:[edi], eax
mov eax, dword [esp + 0x550]
mov dword [esp + 0x80], eax
mov eax, dword [0x467f18]
xor esi, esi
cmp eax, 1
mov dword [esp + 0x84], edx
mov edx, dword [esp + 0x54c]
mov word [esp + 0x3c], 0x94
mov word [esp + 0x3e], si
mov dword [esp + 0x88], edx
mov dword [esp + 0x40], 0x1c0000
jne 0x42ee3f
call dword [sym.imp.kernel32.dll_GetVersion]
test eax, 0x80000000
jne 0x42ee3f
mov edi, dword [sym.imp.user32.dll_EnumDisplaySettingsA]
lea ecx, [esp + 0xac]
push ecx
push esi
push esi
mov dword [0x508720], esi
call edi
test eax, eax
je 0x42ed0d
mov edx, dword [esp + 0x548]
cmp dword [esp + 0x118], edx
jne 0x42ecfb
mov eax, dword [esp + 0x54c]
cmp dword [esp + 0x11c], eax
jne 0x42ecfb
mov ecx, dword [esp + 0x550]
cmp dword [esp + 0x114], ecx
jne 0x42ecfb
mov ecx, dword [esp + 0x124]
cmp ecx, 1
jbe 0x42ecfb
mov eax, dword [0x508720]
mov dword [eax*4 + 0x508320], ecx
inc eax
cmp eax, 0x100
mov dword [0x508720], eax
jg 0x42ed12
lea edx, [esp + 0xac]
push edx
inc esi
push esi
push 0
call edi
test eax, eax
jne 0x42eca6
mov eax, dword [0x508720]
test eax, eax
jle 0x42ee11
mov ebx, dword [esp + 0x55c]
cmp ebx, 0xffffffff
je 0x42ed56
mov ecx, dword [0x467078]
mov esi, dword [ecx + ebx*4]
test esi, esi
jle 0x42ed56
xor ecx, ecx
test eax, eax
jle 0x42ed56
mov edx, 0x508320
cmp dword [edx], esi
je 0x42ed4c
inc ecx
add edx, 4
cmp ecx, eax
jl 0x42ed3e
jmp 0x42ed56
add esi, 0x3e8
test esi, esi
jne 0x42edc5
push 1
call fcn.0042dc60
mov edx, dword [0x468628]
mov eax, dword [0x493e10]
add esp, 4
push 0
push 0x40a570
push edx
push 0x9a
push eax
call dword [sym.imp.user32.dll_DialogBoxParamA]
mov esi, eax
call fcn.0042dca0
mov ecx, dword [0x460854]
mov edi, dword [sym.imp.user32.dll_GetAsyncKeyState]
push ecx
call edi
test ax, ax
je 0x42eda8
mov edx, dword [0x460854]
push edx
call edi
test ax, ax
jne 0x42ed9a
mov dword [0x4670c4], 0
call fcn.00420b70
push 0xd
call fcn.0042dc60
add esp, 4
test esi, esi
je 0x42ee11
cmp esi, 0xffffffff
je 0x42ee11
cmp esi, 2
je 0x42f1e2
cmp esi, 0x3e8
jle 0x42ee3f
mov ecx, dword [esp + 0x40]
lea eax, [esi - 0x3e8]
mov dword [esp + 0x90], eax
mov eax, dword [0x508314]
or ecx, 0x400000
cmp eax, 1
mov dword [esp + 0x40], ecx
jne 0x42ee3f
mov ecx, dword [0x467078]
add esi, 0xfffffc18
mov dword [ecx + ebx*4], esi
jmp 0x42ee3f
lea edx, [esp + 0x140]
push 0x4609b8
push edx
call dword [sym.imp.user32.dll_wsprintfA]
lea eax, [esp + 0x148]
push 1
push eax
call fcn.00411150
add esp, 0x10
cmp eax, 2
je 0x42f1e2
mov eax, dword [0x467f1c]
test eax, eax
mov ebx, dword [sym.imp.user32.dll_ChangeDisplaySettingsA]
je 0x42ee5f
push 0
push 6
push 0
lea ecx, [esp + 0x24]
push ecx
push 0
call eax
jmp 0x42ee68
push 6
lea edx, [esp + 0x1c]
push edx
call ebx
mov edi, eax
mov eax, dword [0x467f0c]
test eax, eax
jne 0x42eee9
push 0
call dword [sym.imp.user32.dll_GetDC]
mov esi, eax
push 8
push esi
mov word [0x49afa4], 0x94
mov word [0x49afa6], 0
call ebp
push 0xa
push esi
mov dword [0x49afec], eax
call ebp
push 0xc
push esi
mov dword [0x49aff0], eax
call ebp
mov dword [0x49afe8], eax
mov dword [0x49afa8], 0x1c0000
call dword [sym.imp.kernel32.dll_GetVersion]
test eax, 0x80000000
jne 0x42eee0
mov edx, dword [0x49afa8]
push 0x74
or edx, 0x400000
push esi
mov dword [0x49afa8], edx
call ebp
mov dword [0x49aff8], eax
push esi
push 0
call dword [sym.imp.user32.dll_ReleaseDC]
test edi, edi
jne 0x42ef3b
mov eax, dword [0x467f1c]
test eax, eax
je 0x42ef1a
push edi
push 4
push edi
lea ecx, [esp + 0x24]
push ecx
push edi
call eax
test eax, eax
je 0x42f015
pop edi
pop esi
pop ebp
mov eax, 3
pop ebx
add esp, 0x530
ret
push 4
lea edx, [esp + 0x1c]
push edx
call ebx
test eax, eax
je 0x42f015
pop edi
pop esi
pop ebp
mov eax, 3
pop ebx
add esp, 0x530
ret
cmp edi, 1
jne 0x42f1a4
mov eax, dword [esp + 0x554]
cmp eax, edi
jne 0x42ef70
mov eax, dword [esp + 0x544]
push 0x34
push 0x468520
push 0x460990
push eax
call dword [sym.imp.user32.dll_MessageBoxA]
cmp eax, 6
je 0x42efc8
jmp 0x42ef74
test eax, eax
jne 0x42efc3
mov eax, dword [0x467f1c]
test eax, eax
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x80], ecx
je 0x42efab
push 0
push 4
push 0
lea edx, [esp + 0x24]
push edx
push 0
call eax
test eax, eax
je 0x42efbc
pop edi
pop esi
pop ebp
mov eax, 3
pop ebx
add esp, 0x530
ret
push 4
lea eax, [esp + 0x1c]
push eax
call ebx
test eax, eax
jne 0x42f1e2
mov ebx, 1
jmp 0x42f019
cmp eax, 2
jne 0x42f015
mov eax, dword [0x467f1c]
test eax, eax
je 0x42eff4
push 0
push 1
push 0
lea ecx, [esp + 0x24]
push ecx
push 0
call eax
test eax, eax
je 0x42f005
pop edi
pop esi
pop ebp
mov eax, 3
pop ebx
add esp, 0x530
ret
push 1
lea edx, [esp + 0x1c]
push edx
call ebx
test eax, eax
jne 0x42f1e2
pop edi
pop esi
pop ebp
mov eax, 2
pop ebx
add esp, 0x530
ret
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0x548]
mov ecx, 0x2c
mov esi, 0x4866a0
mov edi, 0x493d60
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [esp + 0x54c]
push 0x4866a0
mov dword [0x4866a8], eax
mov dword [0x4866ac], ecx
call fcn.0044d2f0
mov edi, eax
push 0x4866a0
neg edi
call fcn.0044d280
mov esi, eax
mov eax, dword [0x48673c]
add esp, 8
neg esi
test eax, 0x80000
je 0x42f07d
mov eax, dword [0x467f10]
test eax, eax
jne 0x42f07d
add esi, dword [0x467f44]
mov ecx, dword [0x45f030]
imul ecx, dword [0x4866a8]
mov eax, 0x51eb851f
imul ecx
mov ecx, dword [0x45f034]
imul ecx, dword [0x4866ac]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
mov dword [0x4866c8], edx
mov eax, 0x51eb851f
imul ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
push 0x4866a0
mov dword [0x4866cc], edx
call fcn.0044d2f0
push 0x4866a0
mov ebp, eax
call fcn.0044d2f0
mov edx, dword [0x4866a8]
add edx, ebp
add eax, edx
push 0x4866a0
mov dword [0x4866a0], eax
call fcn.0044d340
push 0x4866a0
mov ebp, eax
call fcn.0044d280
mov ecx, dword [0x4866ac]
mov edx, ecx
add edx, ebp
mov ebp, dword [0x4866a8]
add eax, edx
mov edx, dword [0x4866a0]
mov dword [0x4866a4], eax
sub eax, ecx
add eax, dword [0x4866cc]
mov ecx, dword [0x493d68]
mov dword [0x4866c4], eax
mov eax, dword [0x493d6c]
push eax
push ecx
sub edx, ebp
mov ebp, dword [0x4866c8]
push esi
add edx, ebp
push edi
mov dword [0x4866c0], edx
mov edx, dword [esp + 0x564]
push 0xffffffffffffffff
push edx
call fcn.0042e850
add esp, 0x28
test eax, eax
jne 0x42f16d
pop edi
pop esi
pop ebp
or eax, 0xffffffff
pop ebx
add esp, 0x530
ret
mov esi, 1
push esi
push 0x46cca0
push 0x4784c0
mov dword [0x467f0c], esi
call fcn.00426290
add esp, 0xc
pop edi
mov dword [0x466e34], esi
mov dword [0x460878], esi
pop esi
pop ebp
mov eax, ebx
pop ebx
add esp, 0x530
ret
mov eax, dword [esp + 0x550]
mov ecx, dword [esp + 0x54c]
mov edx, dword [esp + 0x548]
push edi
push eax
push ecx
push edx
lea eax, [esp + 0x150]
push 0x460904
push eax
call dword [sym.imp.user32.dll_wsprintfA]
lea ecx, [esp + 0x158]
push 0
push ecx
call fcn.00411150
add esp, 0x20
pop edi
pop esi
pop ebp
mov eax, 3
pop ebx
add esp, 0x530
ret