Function at 0x458050
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x513308
mov eax, dword fs:[0]
push eax
sub esp, 0x48
push ebx
push esi
push edi
mov eax, dword [0x54a050]
xor eax, esp
push eax
lea eax, [esp + 0x58]
mov dword fs:[0], eax
mov ebx, dword [ebp + 8]
mov ecx, dword [ebx + 0x1b8]
mov eax, dword [ebp + 0x10]
mov edx, dword [ebp + 0xc]
push ecx
lea esi, [ebx + 0x1e0]
push esi
push eax
push edx
mov dword [esp + 0x34], esi
mov dword [esi + 0x1f59c], 0
call fcn.00403d10
mov eax, dword [esi + 0x1f59c]
push 0x403c40
push 0x1c
push eax
lea ecx, [esi + 0x1beec]
push ecx
call fcn.004d3b00
add esp, 0x10
push 0
lea ecx, [ebx + 0xe4]
push 0x52ea50
mov dword [esp + 0x20], ecx
call fcn.00401970
mov eax, dword [0xa7ecc0]
cmp eax, 7
je 0x45890b
cmp eax, 0x11
je 0x45890b
mov edi, dword [ebx + 0x1f77c]
xor eax, eax
test edi, edi
mov dword [esp + 0x10], eax
jle 0x458118
mov edx, dword [ebx + 0x1c0d0]
lea eax, [ebx + 0x1c0cc]
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], edx
mov eax, edx
xor ecx, ecx
cmp eax, dword [0x792eac]
sete cl
cmp edi, 1
jg 0x458136
jne 0x4588e7
test ecx, ecx
jne 0x4588e7
cmp dword [0xa7ecc0], 0xf
jne 0x4581c5
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx + 8]
push edx
push eax
mov eax, esi
call fcn.00406990
test eax, eax
jl 0x4581a1
jne 0x45818b
mov ecx, dword [esp + 0x18]
push 0x6f6090
call fcn.004018f0
mov ecx, dword [ebp + 0x10]
mov edx, dword [ebp + 0xc]
push ecx
push edx
mov esi, ebx
call fcn.004589c0
mov ecx, dword [esp + 0x58]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
add eax, 0xffffffff
push eax
mov eax, dword [esp + 0x1c]
push str.TEXTEX_d.BMP
push eax
call fcn.004018d0
add esp, 0xc
mov ecx, dword [ebp + 0x10]
mov edx, dword [ebp + 0xc]
push ecx
push edx
mov esi, ebx
call fcn.004589c0
mov ecx, dword [esp + 0x58]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
mov ecx, dword [0x9d81b0]
cmp dword [ecx + 0xa0], 0xc
jne 0x45824b
xor ebx, ebx
test edi, edi
jle 0x458226
mov esi, dword [ebp + 8]
add esi, 0x1c0cc
mov edx, dword [esi + 4]
cmp edx, dword [0x792e8c]
jne 0x45820d
mov eax, esi
call fcn.00457ff0
lea ecx, [eax + eax*8]
mov edx, dword [ecx*8 + 0x744354]
mov ecx, dword [0x9d81b0]
cmp edx, dword [ecx + 0xac]
je 0x458219
add ebx, 1
add esi, 0x1c
cmp ebx, edi
jl 0x4581e3
jmp 0x458226
mov esi, dword [0x9d81b0]
mov ecx, eax
call fcn.0041cbf0
cmp ebx, edi
jne 0x45890b
push 0xffffffffffffffff
call dword [sym.imp.USER32.dll_MessageBeep]
mov ecx, dword [esp + 0x58]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
mov edx, dword [0x9d81a8]
cmp dword [edx + 0xa0], 0xa
jne 0x4582bf
xor ecx, ecx
test edi, edi
jle 0x458289
mov esi, dword [0x792eac]
lea eax, [ebx + 0x1c0cc]
lea esp, [esp]
mov edx, dword [eax + 4]
cmp edx, esi
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], edx
jne 0x458289
add ecx, 1
add eax, 0x1c
cmp ecx, edi
jl 0x458270
mov eax, dword [esp + 0x10]
cmp eax, dword [0x792e8c]
jne 0x45822e
mov eax, dword [esp + 0x14]
call fcn.00457ff0
mov edx, eax
mov eax, dword [0x9d81a8]
call fcn.0040ce80
mov ecx, dword [esp + 0x58]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
mov ecx, dword [0x9d81b4]
cmp dword [ecx + 0xa8], 0xd
jne 0x458333
xor ecx, ecx
test edi, edi
jle 0x4582fd
mov esi, dword [0x792eac]
lea eax, [ebx + 0x1c0cc]
mov edx, dword [eax + 4]
cmp edx, esi
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], edx
jne 0x4582f9
add ecx, 1
add eax, 0x1c
cmp ecx, edi
jl 0x4582e0
mov eax, dword [esp + 0x10]
cmp eax, dword [0x792e8c]
jne 0x45822e
mov eax, dword [esp + 0x14]
call fcn.00457ff0
mov ecx, eax
mov eax, dword [0x9d81b4]
call fcn.0042bb80
mov ecx, dword [esp + 0x58]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
xor ecx, ecx
test edi, edi
jle 0x458365
lea eax, [ebx + 0x1c0cc]
nop
mov edx, dword [eax + 4]
mov dword [esp + 0x10], edx
mov edx, dword [0x792eac]
cmp dword [esp + 0x10], edx
mov dword [esp + 0x14], eax
jne 0x458361
add ecx, 1
add eax, 0x1c
cmp ecx, edi
jl 0x458340
mov eax, dword [esp + 0x10]
cmp eax, dword [0x792e8c]
mov eax, dword [esp + 0x14]
jne 0x458422
call fcn.00457ff0
mov edi, eax
mov eax, dword [0x9d81bc]
cmp dword [eax + 0x8c], 0
je 0x4583c2
mov esi, dword [eax + 0x90]
test esi, esi
jl 0x4583c2
call fcn.00413b00
cmp esi, eax
jne 0x4583c2
mov eax, dword [ebp + 0x10]
imul esi, esi, 0x174
mov ecx, dword [ebp + 0xc]
push eax
mov eax, dword [esi + 0x6fbf44]
push ecx
call fcn.00458920
mov ecx, ebx
call fcn.004aa211
jmp 0x4588e7
test edi, edi
jl 0x458416
mov esi, dword [0x9d81a4]
mov dword [0x9d81d0], 1
mov dword [0xa7ecb8], edi
cmp dword [esi + 0x94], 0
jne 0x4583f7
mov ecx, dword [0x9d81c4]
push esi
call fcn.004b4b75
mov esi, dword [0x9d81a4]
push edi
call fcn.00415fa0
push 0x9d8278
call fcn.0045eff0
mov edx, dword [ebp + 0x10]
mov eax, dword [ebp + 0xc]
push edx
push eax
mov eax, edi
call fcn.00458920
mov ecx, ebx
call fcn.004aa211
jmp 0x4588e7
mov ecx, dword [eax + 8]
mov edx, dword [esp + 0x10]
mov ebx, dword [eax + 0xc]
push ecx
push edx
mov edi, esi
call fcn.00406940
mov edi, eax
cmp edi, 0x897
ja 0x4587d0
mov eax, dword [0x9d81bc]
cmp dword [eax + 0x8c], 0
je 0x458482
mov ebx, dword [eax + 0x90]
test ebx, ebx
jl 0x458482
call fcn.00413b40
cmp ebx, eax
jne 0x458482
mov eax, dword [ebp + 0x10]
imul ebx, ebx, 0x174
mov ecx, dword [ebp + 0xc]
push eax
mov eax, dword [ebx + 0x6fbf44]
push ecx
call fcn.00458920
jmp 0x45888f
mov ebx, edi
imul ebx, ebx, 0x34
mov eax, dword [ebx + 0x70e1ec]
cmp eax, 1
mov dword [esp + 0x28], ebx
je 0x45849f
cmp eax, 2
jne 0x4586d4
push 0x12
call dword [sym.imp.USER32.dll_GetKeyState]
test al, al
mov ecx, dword [0x9d81a8]
jns 0x45865a
mov eax, dword [ecx + 0x6c4]
test eax, eax
jl 0x45865a
mov esi, dword [ecx + eax*4 + 0x724]
lea ecx, [esp + 0x1c]
mov dword [esp + 0x20], esi
call fcn.00401b80
mov ecx, 0x54ef98
mov ebx, esi
mov dword [esp + 0x60], 0
call fcn.0043c6d0
mov ebx, eax
cmp ebx, 0xffffffff
jne 0x458579
cmp dword [0x6ea634], 0x3a98
jle 0x458525
call fcn.0043cfa0
lea ecx, [esp + 0x1c]
call fcn.00401af0
mov ecx, dword [esp + 0x58]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
push esi
push edi
mov esi, 0x54ef98
call fcn.0043c530
mov ebx, dword [0x6ea634]
mov edx, dword [esp + 0x28]
mov dword [ebx*8 + 0x6cd170], edx
mov dword [ebx*8 + 0x6cd16c], edi
add dword [0x6ea634], 1
mov ecx, dword [ebx*8 + 0x6cd16c]
xor edx, edx
add esp, 8
cmp ecx, dword [ebx*8 + 0x6cd170]
setg dl
mov ecx, edx
cmp ecx, eax
je 0x458575
mov eax, esi
mov ecx, ebx
call fcn.0043c710
mov esi, dword [esp + 0x20]
push esi
push edi
mov esi, 0x54ef98
call fcn.0043c530
mov ecx, dword [ebx*8 + 0x6cd16c]
add esp, 8
neg eax
sbb eax, eax
xor edx, edx
add eax, 1
cmp ecx, dword [ebx*8 + 0x6cd170]
mov dword [esp + 0x20], eax
setg dl
mov ecx, edx
cmp ecx, eax
je 0x4585b5
mov eax, esi
mov ecx, ebx
call fcn.0043c710
mov esi, 0x54ef98
mov eax, ebx
call fcn.0043c730
mov dword [0x940618], 0
call fcn.00430a20
cmp dword [esp + 0x20], 0
mov dword [0x9d81d4], 1
mov ecx, 0x54ef94
je 0x4585ed
push 0xf02c
jmp 0x4585f2
push 0xf02d
call fcn.004063d0
mov ebx, dword [0x9d81a8]
mov esi, dword [0x54ef94]
push edi
call fcn.0042bca0
push eax
mov eax, dword [0x9d81a8]
mov ecx, dword [eax + 0x6c4]
push ecx
lea edx, [esp + 0x24]
push esi
push edx
call fcn.004018d0
add esp, 0x10
push ecx
lea eax, [esp + 0x20]
mov ecx, esp
mov dword [esp + 0x24], esp
push eax
call fcn.00401a60
mov esi, 0x9d813c
call fcn.004534d0
lea ecx, [esp + 0x1c]
mov dword [esp + 0x60], 0xffffffff
call fcn.00401af0
mov esi, dword [esp + 0x24]
mov ebx, dword [esp + 0x28]
jmp 0x4586d4
cmp dword [ecx + 0x8c], 0
jne 0x458685
mov dword [ecx + 0x6c4], 0xffffffff
mov ecx, dword [0x9d81a8]
push ecx
mov ecx, dword [0x9d81c4]
call fcn.004b4b75
mov ecx, dword [0x9d81a8]
mov eax, edi
call fcn.0040d020
mov ecx, dword [ebp + 8]
call fcn.004aa211
mov edx, dword [esp + 0x14]
mov eax, dword [edx + 8]
mov ecx, dword [esp + 0x10]
push eax
push ecx
mov eax, esi
call fcn.00406990
test eax, eax
jl 0x4586d4
jne 0x4586be
mov ecx, dword [esp + 0x18]
push 0x6f6090
call fcn.004018f0
jmp 0x4586d4
mov edx, dword [esp + 0x18]
add eax, 0xffffffff
push eax
push str.TEXTEX_d.BMP
push edx
call fcn.004018d0
add esp, 0xc
mov eax, dword [ebx + 0x70e1ec]
cmp eax, 3
je 0x4586e3
test eax, eax
jne 0x458721
mov eax, dword [0x9d81b4]
cmp dword [eax + 0x8c], 0
jne 0x45870c
mov dword [eax + 0xa4], 0xffffffff
mov eax, dword [0x9d81b4]
mov ecx, dword [0x9d81c4]
push eax
call fcn.004b4b75
mov ecx, dword [0x9d81b4]
mov eax, edi
call fcn.0042bd00
mov ecx, dword [ebp + 8]
call fcn.004aa211
cmp dword [ebx + 0x70e1ec], 6
jne 0x45888f
mov ecx, dword [0x9d81ac]
cmp dword [ecx + 0x7d8c], 0
jne 0x45875f
mov dword [ecx + 0x7df0], 0xffffffff
mov ecx, dword [0x9d81ac]
push ecx
mov ecx, dword [0x9d81c4]
call fcn.004b4b75
mov ecx, dword [0x9d81ac]
mov eax, edi
call fcn.00427a50
mov ecx, dword [ebp + 8]
call fcn.004aa211
mov edx, dword [ebp + 0x10]
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebx + 0x70e1f0]
push edx
push eax
mov eax, dword [ecx + 0xc]
call fcn.00458920
mov edx, dword [esp + 0x14]
mov eax, dword [edx + 8]
mov ecx, dword [esp + 0x10]
push eax
push ecx
mov eax, esi
call fcn.00406990
test eax, eax
jl 0x45888f
jne 0x4587b5
mov ecx, dword [esp + 0x18]
push 0x6f6090
call fcn.004018f0
jmp 0x45888f
mov edx, dword [esp + 0x18]
add eax, 0xffffffff
push eax
push str.TEXTEX_d.BMP
push edx
call fcn.004018d0
add esp, 0xc
jmp 0x45888f
xor esi, esi
mov edi, 0x54f07c
cmp dword [edi - 0x18], 0
je 0x45887a
mov eax, dword [esp + 0x10]
cmp dword [edi], eax
je 0x4587f7
cmp dword [edi - 4], eax
je 0x4587f7
cmp dword [edi + 4], eax
jne 0x45887a
mov eax, dword [0x9d81bc]
cmp dword [eax + 0x8c], 0
je 0x45882c
mov ebx, dword [eax + 0x90]
test ebx, ebx
jl 0x45882c
mov ecx, esi
call fcn.00413aa0
cmp ebx, eax
jne 0x45882c
mov eax, dword [ebp + 0x10]
imul ebx, ebx, 0x174
push eax
mov eax, dword [ebx + 0x6fbf44]
jmp 0x458871
mov ebx, dword [0x9d81b8]
cmp dword [ebx + 0x90], 0
jne 0x45885d
mov dword [ebx + 0x94], 0xffffffff
mov edx, dword [0x9d81b8]
mov ecx, dword [0x9d81c4]
push edx
call fcn.004b4b75
mov ebx, dword [0x9d81b8]
call fcn.00424d40
mov ecx, dword [ebp + 8]
call fcn.004aa211
mov eax, dword [ebp + 0x10]
push eax
mov eax, dword [edi - 0x20]
mov ecx, dword [ebp + 0xc]
push ecx
call fcn.00458920
add edi, 0xe8
add esi, 1
cmp edi, 0x54f41c
jl 0x4587d7
or esi, 0xffffffff
push 0x9d8278
mov dword [0xa7ecb8], esi
call fcn.0045eff0
mov eax, dword [0x9d81a4]
mov ecx, eax
mov ecx, dword [ecx + 0x114]
add eax, 0xf0
mov dword [eax], esi
mov eax, dword [eax]
lea edx, [esp + 0x2c]
push edx
push eax
mov dword [esp + 0x44], esi
push 0x102b
xor esi, esi
push ecx
mov dword [esp + 0x48], esi
call dword [sym.imp.USER32.dll_SendMessageA]
mov edi, 0x9d8278
call fcn.0045f060
mov ebx, dword [ebp + 8]
mov dword [0x9d81d0], esi
mov eax, dword [0xa7ecc0]
cmp eax, 0xe
je 0x458904
cmp eax, 0xf
je 0x458904
mov edx, dword [ebp + 0x10]
mov eax, dword [ebp + 0xc]
push edx
push eax
push ebx
call fcn.00458a80
mov ecx, ebx
call fcn.00454960
mov ecx, dword [esp + 0x58]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc