Function at 0x409ed0
Capabilities:
Log keystrokes via polling

Disassembly:
push ecx
mov eax, dword [0x41cfc8]
push ebx
push ebp
push esi
mov esi, dword [esp + 0x18]
xor ebp, ebp
cmp eax, 1
push edi
jne 0x40a091
add dword [0x41d000], esi
mov dword [0x41d004], ebp
mov eax, dword [0x41c0c8]
cmp eax, dword [0x41c0c4]
jge 0x409f09
add eax, esi
mov dword [0x41c0c8], eax
mov ecx, dword [0x41c570]
cmp ecx, dword [0x41c56c]
jge 0x409f20
mov eax, ecx
add eax, esi
mov dword [0x41c570], eax
cmp dword [0x41c0d0], ebp
jle 0x409f65
mov eax, dword [0x41d0d4]
add eax, esi
cmp eax, 0x32
mov dword [0x41d0d4], eax
jbe 0x409f65
mov edx, dword [0x419db0]
push edx
call fcn.004030a0
add esp, 4
test eax, eax
jge 0x409f5f
push 0x10
push str.Aero_Wars
push 0x417510
push ebp
call dword [sym.imp.USER32.dll_MessageBoxA]
mov dword [0x41d0d4], ebp
test esi, esi
mov dword [esp + 0x10], esi
fild dword [esp + 0x10]
jge 0x409f77
fadd dword [0x41750c]
fmul dword [0x417508]
fmul dword [0x417504]
fadd dword [0x4190b4]
fst dword [0x4190b4]
fcomp dword [0x417500]
fnstsw ax
test ah, 0x41
jne 0x409fa6
mov dword [0x4190b4], 0
mov eax, dword [0x41cff0]
mov edx, dword [0x41cff4]
add eax, esi
inc edx
cmp eax, 0x3e8
mov dword [0x41cff0], eax
mov dword [0x41cff4], edx
jle 0x409fdd
mov eax, edx
push eax
call fcn.004024b0
add esp, 4
mov dword [0x41cff4], ebp
mov dword [0x41cff0], ebp
cmp dword [0x419a80], 1
mov edi, dword [esp + 0x18]
jne 0x40a144
mov eax, dword [0x419a8c]
cmp eax, 2
jle 0x40a04e
mov ecx, dword [0x419a88]
mov edx, dword [0x419a84]
add ecx, esi
cmp ecx, edx
mov dword [0x419a88], ecx
jle 0x40a04e
cmp eax, 4
mov dword [0x419a80], ebp
mov dword [0x419a88], ebp
jne 0x40a155
mov ecx, dword [0x41cf04]
push 3
push 0x419a80
push ecx
call fcn.00409c50
mov eax, dword [0x419a80]
add esp, 0xc
cmp eax, 1
jne 0x40a144
mov eax, dword [0x419a8c]
cmp eax, 7
jne 0x40a220
push 0xd
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x40a076
cmp dword [0x419a88], 0x7d0
jle 0x40a076
mov dword [0x419a80], ebp
mov esi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ebx, 0x41
push ebx
call esi
test ax, ax
jne 0x40a0ec
inc ebx
cmp ebx, 0x5b
jl 0x40a081
jmp 0x40a0fe
cmp eax, 2
mov dword [0x41d000], ebp
jne 0x409eef
cmp dword [0x41cfc0], ebp
jne 0x40a0c6
cmp dword [0x41cfc4], ebp
jne 0x40a0c6
cmp dword [0x41a2f0], ebp
jne 0x40a0c6
cmp dword [0x41a328], ebp
jne 0x40a0c6
mov dword [0x41cfc8], ebp
mov eax, dword [0x41d004]
mov esi, dword [esp + 0x1c]
add eax, esi
cmp eax, 0x4e20
mov dword [0x41d004], eax
jbe 0x409ef5
mov dword [0x41cfc8], ebp
jmp 0x409ef5
mov edx, dword [0x41cfe8]
mov byte [edx + 0x4190a4], bl
mov dword [0x41d0d0], edi
push 0x20
call esi
test ax, ax
je 0x40a11b
mov eax, dword [0x41cfe8]
mov byte [eax + 0x4190a4], 0x2e
mov dword [0x41d0d0], edi
jmp 0x40a144
mov eax, dword [0x41d0d0]
cmp edi, eax
je 0x40a144
cmp eax, ebp
je 0x40a144
mov eax, dword [0x41cfe8]
inc eax
cmp eax, 2
mov dword [0x41cfe8], eax
jle 0x40a13e
mov dword [0x41cfe8], ebp
mov dword [0x41d0d0], ebp
cmp dword [0x419a80], ebp
jne 0x40a220
mov eax, dword [0x419a8c]
cmp eax, 5
jne 0x40a1a1
mov eax, dword [0x4190b8]
cmp eax, 1
jl 0x40a179
cmp eax, 5
jg 0x40a179
mov ecx, dword [0x41cf04]
push 7
push 0x419a80
push ecx
jmp 0x40a187
mov edx, dword [0x41cf04]
push 6
push 0x419a80
push edx
call fcn.00409c50
mov eax, dword [0x419a80]
add esp, 0xc
cmp eax, ebp
jne 0x40a220
mov eax, dword [0x419a8c]
cmp eax, 7
jne 0x40a206
mov ecx, dword [0x4190b8]
xor eax, eax
imul ecx, ecx, 0x64
lea ecx, [ecx + 0x41bda8]
jmp 0x40a1c0
mov dl, byte [eax + 0x4190a4]
mov byte [ecx + eax], dl
mov byte [eax + 0x4190a4], 0x41
inc eax
cmp eax, 3
jl 0x40a1c0
push 1
call fcn.00407600
push ebp
call fcn.00407600
mov eax, dword [0x41cf04]
push 6
push 0x419a80
push eax
call fcn.00409c50
mov eax, dword [0x419a80]
add esp, 0x14
cmp eax, ebp
jne 0x40a220
mov eax, dword [0x419a8c]
cmp eax, 6
jne 0x40a220
mov ecx, dword [0x41cf04]
push ebp
push 0x419a80
push ecx
call fcn.00409c50
add esp, 0xc
mov esi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
push 0x74
call esi
test ax, ax
je 0x40a24d
cmp dword [0x41cfc8], ebp
jne 0x40a24d
mov edx, dword [0x41cf04]
push 2
push 0x419a80
push edx
call fcn.00409c50
add esp, 0xc
push 0x78
call esi
test ax, ax
je 0x40a273
cmp dword [0x41cfc8], ebp
jne 0x40a273
mov eax, dword [0x41cf04]
push 6
push 0x419a80
push eax
call fcn.00409c50
add esp, 0xc
push 0x76
call esi
test ax, ax
mov ebx, 1
je 0x40a296
cmp dword [0x41cfc8], ebx
jne 0x40a296
push 0x11
call esi
test ax, ax
je 0x40a296
push 0x10
call esi
push 0x77
call esi
test ax, ax
je 0x40a2b4
cmp dword [0x41cfc8], ebx
jne 0x40a2b4
push 0x11
call esi
test ax, ax
je 0x40a2b4
push 0x10
call esi
push 0x77
call esi
test ax, ax
mov ecx, dword [0x41cfc8]
je 0x40a311
cmp ecx, ebp
je 0x40a311
cmp byte [0x41908c], 6
jae 0x40a311
mov dword [0x41d0d0], edi
cmp ecx, 2
jne 0x40a3a4
mov edx, dword [0x4190a0]
xor eax, eax
cmp edx, ebp
jle 0x40a300
mov ecx, 0x41a7e8
cmp dword [ecx], ebx
je 0x40a3aa
inc eax
add ecx, 0x38
cmp eax, edx
jl 0x40a2f0
mov dword [0x41cfc8], ebx
mov dword [0x41d000], ebp
jmp 0x40a3aa
mov eax, dword [0x41d0d0]
cmp edi, eax
je 0x40a2d6
cmp eax, ebp
je 0x40a2d6
mov al, byte [0x41908c]
mov dl, byte [0x41908d]
inc al
inc dl
push 0x41c668
mov byte [0x41908c], al
mov byte [0x41908d], dl
mov dword [0x41cfd4], ebp
call fcn.00402de0
mov ecx, dword [0x41c670]
push 0x41a208
mov dword [0x41c090], ecx
call fcn.00402de0
mov edx, dword [0x41a210]
push 0x41a270
mov dword [0x41c094], edx
call fcn.00402de0
mov eax, dword [0x41cf04]
push 3
push 0x419a80
push eax
mov dword [0x41d0d0], ebp
call fcn.00409c50
add esp, 0x18
mov dword [0x41d000], ebp
mov dword [0x41cfc8], 2
jmp 0x40a2df
mov edx, dword [0x4190a0]
cmp dword [0x41cfd4], 1
mov ebx, 0x14
jne 0x40a44d
xor edi, edi
cmp edx, ebp
jle 0x40a44d
mov esi, 0x41a7e8
jmp 0x40a3d0
cmp dword [esi + 0xc], ebx
jl 0x40a43f
cmp dword [esi], ebp
jne 0x40a43f
cmp dword [0x41cfc0], ebp
jg 0x40a3f9
cmp dword [0x41cfc4], ebp
jg 0x40a3f9
cmp dword [0x41a2f0], ebp
jne 0x40a3f9
cmp dword [0x41a328], ebp
je 0x40a43f
mov ecx, dword [0x41cf04]
push 4
push 0x419a80
push ecx
call fcn.00409c50
mov cl, byte [0x41908c]
mov al, byte [0x41908d]
mov edx, dword [0x4190a0]
add esp, 0xc
inc cl
inc al
mov byte [0x41908c], cl
mov byte [0x41908d], al
mov dword [0x41cfc8], 2
mov dword [0x41cfd4], ebp
inc edi
add esi, 0x38
cmp edi, edx
jl 0x40a3d0
mov esi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
push 0x71
call esi
test ax, ax
mov edi, 1
je 0x40a4b6
cmp dword [0x41cfc8], edi
jne 0x40a4b6
cmp dword [0x41cfd0], edi
jne 0x40a4b6
cmp dword [0x41cfc0], ebp
jne 0x40a4b6
cmp dword [0x41cfc4], ebp
jle 0x40a4b6
cmp dword [0x41c5d8], ebp
jne 0x40a4b6
cmp dword [0x41a2f0], ebp
jne 0x40a4b6
mov edx, dword [0x41907c]
mov ecx, dword [0x41cfc4]
mov eax, dword [0x419080]
inc edx
dec ecx
dec eax
mov dword [0x41cfc0], edi
mov dword [0x41907c], edx
mov dword [0x41cfc4], ecx
mov dword [0x419080], eax
push 0x72
call esi
test ax, ax
je 0x40a51a
cmp dword [0x41cfc8], edi
jne 0x40a51a
cmp dword [0x41cfd0], edi
jne 0x40a51a
cmp dword [0x41cfc4], ebp
jne 0x40a51a
cmp dword [0x41cfc0], ebp
jle 0x40a51a
cmp dword [0x41c5dc], ebp
jne 0x40a51a
cmp dword [0x41a328], ebp
jne 0x40a51a
mov edx, dword [0x419080]
mov ecx, dword [0x41cfc0]
mov eax, dword [0x41907c]
inc edx
dec ecx
dec eax
mov dword [0x41cfc4], edi
mov dword [0x419080], edx
mov dword [0x41cfc0], ecx
mov dword [0x41907c], eax
push 0x71
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
mov esi, 8
mov ebp, 0x7530
mov edi, 0x2710
mov ebx, 3
je 0x40a625
mov eax, dword [0x41cfc8]
test eax, eax
jne 0x40a625
mov eax, 2
mov dword [0x41cfd8], eax
mov dword [0x419074], eax
mov eax, 1
push 0x41c668
mov dword [0x41cfc0], 5
mov dword [0x41cfb8], ebx
mov dword [0x41907c], esi
mov byte [0x41cfcc], 1
mov dword [0x41a30c], eax
mov dword [0x41cfe0], ebx
mov dword [0x419090], eax
mov dword [0x419098], 4
call fcn.00402de0
push 0x41a208
call fcn.00402de0
push 0x41a270
call fcn.00402de0
mov edx, dword [0x41c670]
mov eax, dword [0x41a210]
mov dword [0x41c090], edx
mov dword [0x41c094], eax
mov dword [0x41c60c], ebp
mov dword [0x41c610], edi
mov dword [0x41cfd4], 0
mov byte [0x41908c], 1
call fcn.0040e24f
cdq
mov ecx, ebx
idiv ecx
push ebx
xor eax, eax
push 0x419a80
mov dword [0x41cfd0], eax
mov dword [0x41d000], eax
mov dword [0x41cfc8], 2
inc dl
mov byte [0x41908d], dl
mov edx, dword [0x41cf04]
push edx
call fcn.00409c50
add esp, 0x18
push 0x72
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x40a71c
mov eax, dword [0x41cfc8]
test eax, eax
jne 0x40a71c
mov eax, 2
push 0x41c668
mov dword [0x41cfc4], 5
mov dword [0x41cfbc], ebx
mov dword [0x41cfdc], eax
mov dword [0x419078], eax
mov dword [0x419080], esi
mov byte [0x41cfcc], 1
mov dword [0x41a344], eax
mov dword [0x41cfe4], ebx
mov dword [0x419094], 1
mov dword [0x41909c], 4
call fcn.00402de0
push 0x41a208
call fcn.00402de0
push 0x41a270
call fcn.00402de0
mov eax, dword [0x41c670]
mov ecx, dword [0x41a210]
mov dword [0x41c090], eax
mov dword [0x41c094], ecx
mov dword [0x41c60c], ebp
mov dword [0x41c610], edi
mov dword [0x41cfd4], 0
mov byte [0x41908c], 1
call fcn.0040e24f
cdq
mov ecx, ebx
idiv ecx
push ebx
xor eax, eax
push 0x419a80
mov dword [0x41cfd0], eax
mov dword [0x41d000], eax
mov dword [0x41cfc8], 2
inc dl
mov byte [0x41908d], dl
mov edx, dword [0x41cf04]
push edx
call fcn.00409c50
add esp, 0x18
push 0x73
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
mov eax, dword [0x41cfc8]
je 0x40a84f
test eax, eax
jne 0x40a84f
mov ecx, 5
mov eax, 2
mov dword [0x41cfc0], ecx
mov dword [0x41cfc4], ecx
mov ecx, 1
mov edx, 4
push 0x41c668
mov dword [0x41cfb8], ebx
mov dword [0x41cfd8], eax
mov dword [0x419074], eax
mov dword [0x41907c], esi
mov dword [0x41cfbc], ebx
mov dword [0x41cfdc], eax
mov dword [0x419078], eax
mov dword [0x419080], esi
mov byte [0x41cfcc], 1
mov dword [0x41a30c], ecx
mov dword [0x41cfe0], ebx
mov dword [0x419090], ecx
mov dword [0x419098], edx
mov dword [0x41a344], eax
mov dword [0x41cfe4], ebx
mov dword [0x419094], ecx
mov dword [0x41909c], edx
call fcn.00402de0
mov eax, dword [0x41c670]
push 0x41a208
mov dword [0x41c090], eax
call fcn.00402de0
mov ecx, dword [0x41a210]
push 0x41a270
mov dword [0x41c094], ecx
call fcn.00402de0
xor eax, eax
mov dword [0x41c60c], ebp
mov dword [0x41c610], edi
mov dword [0x41cfd4], eax
mov dword [0x41d000], eax
mov byte [0x41908c], 1
call fcn.0040e24f
cdq
mov ecx, ebx
idiv ecx
push ebx
push 0x419a80
mov dword [0x41cfd0], 1
mov dword [0x41cfc8], 2
inc dl
mov byte [0x41908d], dl
mov edx, dword [0x41cf04]
push edx
call fcn.00409c50
mov eax, dword [0x41cfc8]
add esp, 0x18
mov ecx, dword [0x41a2f0]
cmp ecx, 2
jne 0x40a879
mov esi, dword [0x41be00]
mov edx, dword [esp + 0x1c]
sub esi, edx
mov dword [0x41be00], esi
jns 0x40a879
mov ecx, 1
mov dword [0x41a2f0], ecx
mov edx, dword [0x41a328]
cmp edx, 2
jne 0x40a8a3
mov edi, dword [0x41be04]
mov esi, dword [esp + 0x1c]
sub edi, esi
mov dword [0x41be04], edi
jns 0x40a8a3
mov edx, 1
mov dword [0x41a328], edx
mov esi, dword [0x41cfc0]
xor ebp, ebp
cmp esi, ebp
mov ebx, 0xbb8
jne 0x40aa99
cmp dword [0x41cfc4], ebp
jne 0x40aa99
cmp ecx, ebp
jne 0x40aa99
cmp dword [0x41c5d8], ebp
jne 0x40aaf2
cmp edx, ebp
jne 0x40aaa1
cmp dword [0x41c5dc], ebp
jne 0x40aaa1
cmp eax, 1
jne 0x40ab49
mov edx, dword [0x41c670]
xor eax, eax
mov ecx, 0x41be10
cmp edx, dword [ecx]
jae 0x40a917
add ecx, 0x64
inc eax
cmp ecx, 0x41c004
jl 0x40a902
jmp 0x40a9b0
mov ecx, dword [0x41c6c4]
mov dword [0x41bfa0], edx
mov edx, eax
imul edx, edx, 0x64
cmp eax, 4
mov dword [0x41bff4], ecx
mov byte [0x41bf9c], 0x50
mov byte [0x41bf9d], 0x5f
mov byte [0x41bf9e], 0x31
mov ecx, dword [edx + 0x41be08]
lea edx, [edx + 0x41be08]
mov dword [0x41bf98], ecx
mov cl, byte [0x41cfcc]
mov byte [0x41bff8], cl
mov cl, byte [0x41908c]
mov byte [0x41bff9], cl
mov ecx, 0x14
mov esi, 0x41c674
mov edi, 0x41bfa4
mov dword [0x41c670], ebp
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
jge 0x40a9a0
mov eax, edx
lea ecx, [ecx]
lea edx, [ecx + 2]
mov dword [eax], edx
add eax, 0x64
inc ecx
cmp eax, 0x41bf98
jl 0x40a990
push 1
call fcn.00407600
push ebp
call fcn.00407600
add esp, 8
mov edx, dword [0x41a210]
xor eax, eax
mov ecx, 0x41be10
lea ecx, [ecx]
cmp edx, dword [ecx]
jae 0x40a9d5
add ecx, 0x64
inc eax
cmp ecx, 0x41c004
jl 0x40a9c0
jmp 0x40aa71
mov ecx, dword [0x41a264]
mov dword [0x41bfa0], edx
mov edx, eax
imul edx, edx, 0x64
cmp eax, 4
mov dword [0x41bff4], ecx
mov byte [0x41bf9c], 0x50
mov byte [0x41bf9d], 0x5f
mov byte [0x41bf9e], 0x32
mov ecx, dword [edx + 0x41be08]
lea edx, [edx + 0x41be08]
mov dword [0x41bf98], ecx
mov cl, byte [0x41cfcc]
mov byte [0x41bff8], cl
mov cl, byte [0x41908c]
mov byte [0x41bff9], cl
mov ecx, 0x14
mov esi, 0x41a214
mov edi, 0x41bfa4
mov dword [0x41a210], ebp
rep movsd dword es:[edi], dword [esi]
jge 0x40aa61
mov ecx, edx
lea esp, [esp]
lea edx, [eax + 2]
mov dword [ecx], edx
add ecx, 0x64
inc eax
cmp ecx, 0x41bf98
jl 0x40aa50
push 1
call fcn.00407600
push ebp
call fcn.00407600
add esp, 8
mov eax, dword [0x41cf04]
push 5
push 0x419a80
push eax
call fcn.00409c50
mov edx, dword [0x41a328]
mov ecx, dword [0x41a2f0]
add esp, 0xc
xor eax, eax
mov dword [0x41cfc8], eax
cmp dword [0x41c5d8], ebp
jne 0x40aaf2
cmp eax, 1
jne 0x40aaf2
mov esi, dword [0x41cfc0]
cmp esi, ebp
jle 0x40aaf2
cmp ecx, ebp
jne 0x40aaf2
mov ecx, dword [0x419074]
dec esi
inc ecx
mov dword [0x41a2f0], 2
mov dword [0x41a2d8], 0x43820000
mov dword [0x41a2dc], 0x43dc0000
mov dword [0x41cfc0], esi
mov dword [0x419074], ecx
mov dword [0x41c650], ebp
mov dword [0x41be00], ebx
cmp dword [0x41c5dc], ebp
jne 0x40ab49
cmp eax, 1
jne 0x40ab49
mov eax, dword [0x41cfc4]
cmp eax, ebp
jle 0x40ab49
cmp edx, ebp
jne 0x40ab49
mov ecx, dword [0x419078]
inc ecx
dec eax
mov dword [0x41a328], 2
mov dword [0x41a310], 0x43be0000
mov dword [0x41a314], 0x43dc0000
mov dword [0x419078], ecx
mov dword [0x41cfc4], eax
mov dword [0x41c654], ebp
mov dword [0x41be04], ebx
pop edi
pop esi
pop ebp
pop ebx
pop ecx
ret