Function at 0x401000
Capabilities:
Allocate thread local storage
Log keystrokes via polling

Disassembly:
push 0xfc
push 0
push 0x412858
call sub.MSVCRT.dll_memset
add esp, 0xc
push 0
call sub.KERNEL32.dll_GetModuleHandleA
mov dword [0x41285c], eax
push 0
push 0x1000
push 0
call sub.KERNEL32.dll_HeapCreate
mov dword [0x412858], eax
mov eax, 0x4117fc
mov dword [0x412868], eax
call fcn.00408fa0
call fcn.00408d0a
call fcn.00408183
call fcn.00407c9f
call fcn.004079e2
call fcn.0040746b
call fcn.004060d3
call fcn.004048ff
call fcn.00404699
call fcn.004041fd
call fcn.00403eb8
call fcn.00403af9
push 7
push 0x41294c
push 0x4117f4
mov edx, dword [0x41294c]
call fcn.00403000
mov eax, 0x101
push 8
call fcn.00403040
mov dword [0x41286c], 0x3f800000
mov byte [0x412918], 8
mov dword [0x412870], 0
mov dword [0x412874], 0
mov dword [0x41286c], 0x40cccccd
mov dword [0x412870], 0x42d80000
mov dword [0x412874], 0xc1b00000
push 0xc80001
push str.Elite_Navigator
push 0x240
push 0x300
push 0
push 0
push 0
call fcn.00406420
and eax, eax
je 0x401af9
push 0
call fcn.00406443
push eax
push 0
call fcn.004039aa
push 0x64
call fcn.00403cab
push 0x25d
call fcn.00403cab
push 0x3f
call fcn.00403cab
lea eax, [0x402d25]
push eax
push 0xa
push 1
push 0
call fcn.00406443
push eax
call sub.USER32.dll_SetTimer
push 0x180
push 0x300
push 0xffffffff
call fcn.00407d96
mov dword [0x412878], eax
push 0x200
push dword [0x412878]
call fcn.00407c83
push eax
push 0x180
push 0x300
push 0
push 0
push 0xffffffff
call fcn.00404d65
mov dword [0x41287c], eax
push 0x81
push 0x101
push 0xffffffff
call fcn.00407d96
mov dword [0x412880], eax
mov dword [0x412884], 0x1fc
mov dword [0x412888], 0x184
push 0x200
push dword [0x412880]
call fcn.00407c83
push eax
push pe_nt_image_headers32
push 0x100
push dword [0x412888]
push dword [0x412884]
push 0xffffffff
call fcn.00404d65
mov dword [0x41288c], eax
mov edx, 0x411034
lea ecx, [0x412890]
call fcn.00403098
lea ebp, [0x41291c]
mov dword [ebp], 0x30
mov dword [ebp + 4], 0x10
mov dword [ebp + 8], 0x4000
mov eax, dword [0x412890]
push eax
pop dword [ebp + 0x24]
push 0
call fcn.00406443
push eax
push 0
call fcn.00404744
mov dword [0x412894], eax
cmp dword [0x412894], 0
je 0x4012e1
push str._____Exit
push 1
call fcn.00404862
push str._____Reset_to_default
push 2
call fcn.00404862
push 0x41100d
push 3
call fcn.00404862
push 0x41291c
push 1
push 2
push dword [0x412894]
call sub.USER32.dll_SetMenuItemInfoA
push 1
push 0
call fcn.00404874
push 0
push 0
call fcn.00404874
push 0x100
push 0xc
push str.Arial
push 1
call fcn.0040747f
push 1
call fcn.00407577
push eax
push 0xffffffff
call fcn.00404e5f
mov eax, 0x4117fc
mov dword [0x412868], eax
mov byte [0x412919], 0
mov eax, 5
cmp al, byte [0x412919]
jb 0x4013b8
mov eax, dword [0x412868]
movzx eax, byte [eax]
mov dword [0x412898], eax
inc dword [0x412868]
push 2
push 0xff
push 0
push 0x18
push 0x36
call fcn.004048a5
mov ebx, eax
mov eax, ebx
mov ecx, 2
cdq
idiv ecx
mov ebx, eax
add ebx, 0x180
push ebx
movzx ebx, byte [0x412919]
imul ebx, ebx, 0x3c
add ebx, 8
push ebx
movzx ebx, byte [0x412919]
add ebx, 0xa
push ebx
call fcn.00405235
push dword [0x412898]
movzx ebx, byte [0x412919]
add ebx, 0xa
push ebx
call fcn.00405404
add byte [0x412919], 1
jae 0x401320
push 0xa
push str.Arial
push 2
call fcn.00407561
mov byte [0x412919], 0
mov eax, 7
cmp al, byte [0x412919]
jb 0x401499
mov eax, dword [0x412d6c]
push eax
push eax
mov edx, 0x4116a6
call fcn.00408ff0
mov eax, dword [0x412d6c]
push eax
push eax
movzx eax, byte [0x412919]
cdq
push edx
push eax
add dword [esp], 1
adc dword [esp + 4], 0
pop eax
pop edx
push edx
push eax
call fcn.004032a0
pop eax
inc dword [0x412d6c]
push 0x10
push 0x32
call fcn.004048a5
mov ebx, eax
mov eax, ebx
mov ecx, 2
cdq
idiv ecx
mov ebx, eax
add ebx, 0x1a0
push ebx
movzx ebx, byte [0x412919]
shl ebx, 6
add ebx, 8
push ebx
movzx ebx, byte [0x412919]
add ebx, 0x1e
push ebx
mov edx, dword [0x411804]
add dword [esp + 0x14], edx
call fcn.004054d6
pop dword [0x412d6c]
push 2
call fcn.00407577
push eax
movzx ebx, byte [0x412919]
add ebx, 0x1e
push ebx
call fcn.00404e5f
add byte [0x412919], 1
jae 0x4013d3
push 1
push 0x1e
call fcn.00405404
push 0x20001
push 0x41100d
push 0x18
push 0x74
call fcn.004048a5
mov ebx, eax
mov eax, ebx
mov ecx, 2
cdq
idiv ecx
mov ebx, eax
add ebx, 0x180
push ebx
push 0x180
push 0xffffffff
call fcn.00405617
mov dword [0x41289c], eax
push 0xff
push 0xff
mov eax, 0xff
call fcn.00404630
push eax
push 1
push dword [0x41289c]
call fcn.00405705
push 0
push 0
mov eax, 0
call fcn.00404630
push eax
push 2
push dword [0x41289c]
call fcn.00405705
push 0x100
push 0x10
push str.Courier
push 3
call fcn.0040747f
push 3
call fcn.00407577
push eax
push dword [0x41289c]
call fcn.00404e5f
mov edx, 0x411029
lea ecx, [0x4128a0]
call fcn.00403098
push str.Reset
push 0x14
push 0x48
call fcn.004048a5
mov ebx, eax
mov eax, ebx
mov ecx, 2
cdq
idiv ecx
mov ebx, eax
add ebx, 0x1e0
push ebx
push 0x1a8
push 0xffffffff
call fcn.00405830
mov dword [0x4128a4], eax
push dword [0x4128a0]
push 0x18
push 0x78
call fcn.004048a5
mov ebx, eax
mov eax, ebx
mov ecx, 2
cdq
idiv ecx
mov ebx, eax
add ebx, 0x1e0
push ebx
push 8
push 0xffffffff
call fcn.00405a26
mov dword [0x4128a8], eax
push 0x411022
push 0x18
push 0x78
call fcn.004048a5
mov ebx, eax
mov eax, ebx
mov ecx, 2
cdq
idiv ecx
mov ebx, eax
add ebx, 0x1e0
push ebx
push pe_nt_image_headers32
push 0xffffffff
call fcn.00405830
mov dword [0x4128ac], eax
mov dword [0x4128b0], 1
call fcn.00402a4b
mov dword [0x4128b4], 0
push 0x412860
call sub.USER32.dll_GetCursorPos
lea ebp, [0x412860]
mov ebx, dword [ebp]
push 0
call fcn.0040645f
sub ebx, eax
sub ebx, dword [0x412884]
add ebx, 0xfffffffd
mov dword [0x4128b8], ebx
mov ebx, dword [ebp + 4]
push 0
call fcn.004064a4
sub ebx, eax
sub ebx, dword [0x412888]
call fcn.004048a5
sub ebx, eax
add ebx, 0xffffffea
mov dword [0x4128bc], ebx
call fcn.00401afe
call fcn.00406646
mov dword [0x4128c0], eax
push dword [0x4128c0]
mov ebx, 0x332c
cmp ebx, dword [esp]
jne 0x4017ee
call fcn.0040664e
mov dword [0x4128c4], eax
mov ebx, dword [0x4128c4]
cmp ebx, dword [0x4128ac]
jne 0x40173a
mov eax, dword [0x412d6c]
push eax
push eax
push dword [0x4128a8]
call fcn.00405a46
push 0x4128a0
call fcn.00409050
mov eax, dword [0x412d6c]
push eax
push eax
mov eax, dword [0x412d6c]
push eax
push eax
push 8
push dword [0x4128a0]
call fcn.00403330
mov edx, dword [0x411804]
add dword [esp], edx
call fcn.004033a0
push 0x4128a0
call fcn.00409050
push dword [0x4128a0]
push dword [0x4128a8]
call fcn.00405aac
call fcn.00402a4b
mov ebx, dword [0x4128c4]
cmp ebx, dword [0x41288c]
jne 0x40177f
fild dword [0x4128b8]
fchs
fadd dword [0x411770]
fstp dword [0x412870]
fild dword [0x4128bc]
fchs
fadd dword [0x411774]
fstp dword [0x412874]
call fcn.00401bf2
mov dword [0x4128b0], 1
mov ebx, dword [0x4128c4]
cmp ebx, 9
jle 0x40179c
mov ebx, dword [0x4128c4]
cmp ebx, 0x10
jge 0x40179c
mov eax, 1
jmp 0x40179e
xor eax, eax
and eax, eax
jne 0x4017c7
mov ebx, dword [0x4128c4]
cmp ebx, 0x1d
jle 0x4017bf
mov ebx, dword [0x4128c4]
cmp ebx, 0x26
jge 0x4017bf
mov eax, 1
jmp 0x4017c1
xor eax, eax
and eax, eax
jne 0x4017c7
jmp 0x4017ce
mov eax, 1
jmp 0x4017d0
xor eax, eax
and eax, eax
je 0x4017d9
call fcn.00402a4b
mov ebx, dword [0x4128c4]
cmp ebx, dword [0x4128a4]
jne 0x4017ec
call fcn.004029ce
jmp 0x40184b
mov ebx, 0x10
cmp ebx, dword [esp]
jne 0x401804
mov dword [0x4128b4], 1
jmp 0x40184b
mov ebx, 0x332d
cmp ebx, dword [esp]
jne 0x40184b
call fcn.0040665d
push eax
mov ebx, 1
cmp ebx, dword [esp]
jne 0x40182a
mov dword [0x4128b4], 1
jmp 0x40184a
mov ebx, 2
cmp ebx, dword [esp]
jne 0x40183b
call fcn.004029ce
jmp 0x40184a
mov ebx, 3
cmp ebx, dword [esp]
jne 0x40184a
call fcn.00402b45
pop eax
pop eax
push 0x70
call sub.USER32.dll_GetKeyState
mov ebx, eax
and ebx, 0x80
and ebx, ebx
je 0x401867
call fcn.00402b45
push 0x6b
call sub.USER32.dll_GetKeyState
mov ebx, eax
and ebx, 0x80
and ebx, ebx
je 0x4018d9
fld dword [0x41286c]
fld dword [0x41286c]
fdiv dword [0x411778]
faddp st(1)
fadd dword [0x41177c]
fstp dword [0x41286c]
fld dword [0x41286c]
movzx eax, byte [0x412918]
mov dword [esp - 4], eax
fild dword [esp - 4]
fcompp
fnstsw ax
test ah, 1
je 0x4018cf
movzx eax, byte [0x412918]
push eax
fild dword [esp]
fstp dword [esp]
pop dword [0x41286c]
mov dword [0x4128b0], 1
push 0x6d
call sub.USER32.dll_GetKeyState
mov ebx, eax
and ebx, 0x80
and ebx, ebx
je 0x40193b
fld dword [0x41286c]
fld dword [0x41286c]
fdiv dword [0x411778]
fsubp st(1)
fadd dword [0x41177c]
fstp dword [0x41286c]
fld dword [0x41286c]
fcomp dword [0x411780]
fnstsw ax
test ah, 1
je 0x40192c
mov dword [0x41286c], 0x3f800000
call fcn.00401bf2
mov dword [0x4128b0], 1
push 0x25
call sub.USER32.dll_GetKeyState
mov ebx, eax
and ebx, 0x80
and ebx, ebx
je 0x401981
fld dword [0x412870]
fchs
fld dword [0x41286c]
fdivr dword [0x411770]
fsubp st(1)
fadd dword [0x411770]
fcomp dword [0x41177c]
fnstsw ax
test ah, 0x41
jne 0x401981
mov eax, 1
jmp 0x401983
xor eax, eax
and eax, eax
je 0x4019a3
fld dword [0x412870]
fadd dword [0x411780]
fstp dword [0x412870]
mov dword [0x4128b0], 1
push 0x27
call sub.USER32.dll_GetKeyState
mov ebx, eax
and ebx, 0x80
and ebx, ebx
je 0x4019e9
fld dword [0x412870]
fchs
fld dword [0x41286c]
fdivr dword [0x411770]
faddp st(1)
fadd dword [0x411770]
fcomp dword [0x411784]
fnstsw ax
test ah, 1
je 0x4019e9
mov eax, 1
jmp 0x4019eb
xor eax, eax
and eax, eax
je 0x401a0b
fld dword [0x412870]
fadd dword [0x411788]
fstp dword [0x412870]
mov dword [0x4128b0], 1
push 0x26
call sub.USER32.dll_GetKeyState
mov ebx, eax
and ebx, 0x80
and ebx, ebx
je 0x401a51
fld dword [0x412874]
fchs
fld dword [0x41286c]
fdivr dword [0x411774]
fsubp st(1)
fadd dword [0x411774]
fcomp dword [0x41177c]
fnstsw ax
test ah, 0x41
jne 0x401a51
mov eax, 1
jmp 0x401a53
xor eax, eax
and eax, eax
je 0x401a73
fld dword [0x412874]
fadd dword [0x41178c]
fstp dword [0x412874]
mov dword [0x4128b0], 1
push 0x28
call sub.USER32.dll_GetKeyState
mov ebx, eax
and ebx, 0x80
and ebx, ebx
je 0x401ab9
fld dword [0x412874]
fchs
fld dword [0x41286c]
fdivr dword [0x411774]
faddp st(1)
fadd dword [0x411774]
fcomp dword [0x411770]
fnstsw ax
test ah, 1
je 0x401ab9
mov eax, 1
jmp 0x401abb
xor eax, eax
and eax, eax
je 0x401adb
fld dword [0x412874]
fadd dword [0x411790]
fstp dword [0x412874]
mov dword [0x4128b0], 1
call fcn.00401dcf
push 1
call sub.KERNEL32.dll_Sleep
mov ebx, dword [0x4128b4]
cmp ebx, 1
jne 0x401644
jmp 0x402c75
push 0
call 0x402c8f
push dword [0x412858]
call sub.KERNEL32.dll_HeapDestroy
call sub.KERNEL32.dll_ExitProcess
call fcn.00404218
call fcn.0040496f
call fcn.00406033
call fcn.0040743d
call fcn.00407c55
call fcn.00408211
ret