Function at 0x5d77c0
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0x20
push ebx
mov ebx, dword [esp + 0x28]
push ebp
xor ebp, ebp
push esi
cmp ebx, 0x1b
push edi
mov esi, ecx
jne 0x5d780c
cmp dword [esi + 0x2a8], ebp
jl 0x5d77ec
or ecx, 0xffffffff
or eax, 0xffffffff
push ebp
push ecx
push eax
mov ecx, esi
call fcn.005d2d50
cmp dword [esi + 0x2cc], ebp
je 0x5d780c
mov eax, dword [esi]
push 0xffffffffffffffff
mov ecx, esi
call dword [eax + 0x124]
mov dword [esi + 0x2cc], ebp
call dword [sym.imp.USER32.dll_ReleaseCapture]
cmp dword [esi + 0x2a8], ebp
jge case.0x5d7845.25
cmp dword [esi + 0x2cc], ebp
jne case.0x5d7845.25
cmp dword [esi + 0x2e0], ebp
jne 0x5d782c
cmp dword [esi + 0x434], ebp
je case.0x5d7845.25
mov ecx, esi
call fcn.005d50d0
mov edi, eax
lea eax, [ebx - 0xd]
cmp eax, 0x66
ja case.0x5d7845.25
xor ecx, ecx
mov cl, byte [eax + 0x5d8304]
jmp dword [ecx*4 + 0x5d82d0]
cmp edi, ebp
je case.0x5d7845.25
cmp dword [edi + 0x3c], ebp
je case.0x5d7845.25
mov edx, dword [esi]
push ebp
push edi
mov ecx, esi
call dword [edx + 0x14c]
mov ecx, esi
call fcn.0082df42
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret 0xc
cmp edi, ebp
je case.0x5d7845.25
cmp dword [edi + 0x3c], ebp
je case.0x5d7845.25
mov eax, dword [esi]
push ebp
push edi
mov ecx, esi
call dword [eax + 0x14c]
test eax, eax
je case.0x5d7845.25
push edi
mov ecx, esi
call fcn.005d5110
cmp eax, ebp
je case.0x5d7845.13
test byte [eax + 0x9c], 3
jmp 0x5d7dc1
push 0x11
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ah, 0x80
jne case.0x5d7845.13
mov eax, dword [esi + 0x434]
mov ebp, dword [esi + 0x318]
mov edi, dword [esi + 0x31c]
or ebx, 0xffffffff
test eax, eax
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], ebx
je 0x5d78f9
mov eax, dword [esi + 0x310]
mov edi, dword [esi + 0x314]
push eax
mov ecx, esi
call fcn.005d9ed0
mov ebp, eax
test ebp, ebp
je 0x5d7a40
push edi
mov ecx, ebp
call fcn.005cd820
mov edi, eax
test edi, edi
je 0x5d7a40
mov eax, dword [esi + 0x434]
test eax, eax
je 0x5d792c
mov eax, dword [edi + 0x18]
test eax, eax
je 0x5d7917
mov ebx, dword [eax + 0x48]
jmp 0x5d791a
or ebx, 0xffffffff
mov edi, dword [edi + 0xa0]
test edi, edi
jle 0x5d7927
dec edi
jmp 0x5d7976
or edi, 0xffffffff
jmp 0x5d7976
lea ecx, [esp + 0x20]
push ecx
mov ecx, edi
call fcn.005c62a0
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x2c]
dec ecx
mov dword [esp + 0x34], ebx
lea eax, [edx - 2]
lea edx, [esp + 0x10]
push edx
lea edx, [esp + 0x38]
push edx
push ecx
mov ecx, dword [edi + 0x18]
push eax
mov dword [esp + 0x20], 0
call fcn.005cdb00
test eax, eax
je 0x5d7a40
mov eax, dword [edi + 0x18]
mov edi, dword [esp + 0x34]
mov ebx, dword [eax + 0x48]
test ebx, ebx
jge 0x5d7982
test edi, edi
jl 0x5d7a40
test ebp, ebp
je 0x5d7a40
test ebx, ebx
jl 0x5d79a1
cmp edi, 0xffffffff
jne 0x5d79a1
mov eax, dword [esi + 0x298]
test eax, eax
jg 0x5d7a40
lea ecx, [esi + 0x320]
push 1
push edi
push ebx
mov edx, dword [ecx]
mov dword [esi + 0x334], 1
mov dword [esp + 0x1c], edx
mov eax, dword [ecx + 4]
mov dword [esp + 0x20], eax
mov edx, dword [ecx + 8]
mov dword [esp + 0x24], edx
mov eax, dword [ecx + 0xc]
mov ecx, esi
mov dword [esp + 0x28], eax
call fcn.005d9570
mov eax, dword [esi + 0x36c]
test eax, eax
jne 0x5d7d61
test ebx, ebx
jl 0x5d79ee
cmp edi, 0xffffffff
je 0x5d7a11
mov dword [esi + 0x380], edi
mov dword [esi + 0x384], ebx
mov dword [esi + 0x388], edi
mov dword [esi + 0x38c], ebx
push 1
lea ecx, [esp + 0x14]
jmp 0x5d7d56
mov ecx, esi
call fcn.005d9340
dec eax
mov dword [esi + 0x380], 0
mov dword [esi + 0x384], ebx
mov dword [esi + 0x388], eax
mov dword [esi + 0x38c], ebx
push 1
lea ecx, [esp + 0x14]
jmp 0x5d7d56
push 0
push 0
push 6
mov ecx, esi
call fcn.005d71e0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret 0xc
cmp edi, ebp
jne 0x5d7a68
xor eax, eax
xor ecx, ecx
push 1
push ecx
push eax
jmp 0x5d8145
mov edx, dword [esi + 0x434]
mov ecx, dword [esi + 0x310]
mov ebp, dword [esi + 0x314]
mov eax, dword [esi + 0x318]
test edx, edx
je 0x5d7a8c
push ecx
mov ecx, esi
call fcn.005d9ed0
test eax, eax
je case.0x5d7845.13
add eax, 0x24
push 1
mov edx, eax
mov dword [esp + 0x38], 0
mov eax, dword [edx]
mov dword [esp + 0x24], eax
mov eax, dword [edx + 4]
add eax, 0xfffffffe
mov ecx, dword [edx + 8]
dec ecx
mov edx, dword [edx + 0xc]
mov dword [esp + 0x30], edx
or edx, 0xffffffff
mov dword [esp + 0x14], edx
mov dword [esp + 0x18], edx
lea edx, [esp + 0x38]
push edx
lea edx, [esp + 0x18]
push edx
push eax
push ecx
mov ecx, esi
call fcn.005d4f10
mov ebx, eax
test ebx, ebx
je 0x5d7b9f
mov edi, dword [ebx + 0x48]
test edi, edi
jge 0x5d7af1
test ebp, ebp
jl case.0x5d7845.13
push 1
push ebp
push edi
mov ecx, esi
mov dword [esi + 0x334], 1
call fcn.005d9570
mov eax, dword [esi + 0x36c]
test eax, eax
jne 0x5d7b83
lea eax, [esi + 0x320]
test edi, edi
mov ecx, dword [eax]
mov dword [esp + 0x10], ecx
mov edx, dword [eax + 4]
mov dword [esp + 0x14], edx
mov ecx, dword [eax + 8]
mov dword [esp + 0x18], ecx
mov edx, dword [eax + 0xc]
mov dword [esp + 0x1c], edx
jl 0x5d7b3a
cmp ebp, 0xffffffff
je 0x5d7b4e
mov dword [esi + 0x380], ebp
mov dword [esi + 0x384], edi
mov dword [esi + 0x388], ebp
jmp 0x5d7b6c
mov ecx, esi
call fcn.005d9340
dec eax
mov dword [esi + 0x380], 0
mov dword [esi + 0x384], edi
mov dword [esi + 0x388], eax
mov dword [esi + 0x38c], edi
mov ecx, dword [esi + 0x1c]
lea eax, [esp + 0x10]
push 1
push eax
push ecx
call dword [sym.imp.USER32.dll_InvalidateRect]
push ebx
mov ecx, esi
mov dword [esi + 0x334], 0
call fcn.005d8370
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret 0xc
push 0
push 0
push 6
mov ecx, esi
call fcn.005d6fa0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret 0xc
push 0x11
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ah, 0x80
jne case.0x5d7845.13
mov eax, dword [esi + 0x434]
mov ebp, dword [esi + 0x318]
mov edi, dword [esi + 0x31c]
or ebx, 0xffffffff
test eax, eax
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], ebx
je 0x5d7c10
mov eax, dword [esi + 0x310]
mov edi, dword [esi + 0x314]
push eax
mov ecx, esi
call fcn.005d9ed0
mov ebp, eax
test ebp, ebp
je 0x5d7d7d
push edi
mov ecx, ebp
call fcn.005cd820
mov edi, eax
test edi, edi
je 0x5d7ca1
mov eax, dword [esi + 0x434]
test eax, eax
je 0x5d7c55
mov eax, dword [edi + 0x18]
test eax, eax
je 0x5d7c2e
mov ebx, dword [eax + 0x48]
jmp 0x5d7c31
or ebx, 0xffffffff
mov edi, dword [edi + 0xa0]
test edi, edi
jl 0x5d7c50
push 1
lea ecx, [esi + 0x25c]
call fcn.005cf530
dec eax
cmp edi, eax
jge 0x5d7c50
inc edi
jmp 0x5d7cae
or edi, 0xffffffff
jmp 0x5d7cae
lea edx, [esp + 0x20]
mov ecx, edi
push edx
call fcn.005c62a0
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x2c]
lea edx, [esp + 0x10]
add eax, 2
push edx
lea edx, [esp + 0x38]
dec ecx
push edx
push ecx
mov ecx, dword [edi + 0x18]
push eax
mov dword [esp + 0x44], ebx
mov dword [esp + 0x20], 0
call fcn.005cdb00
test eax, eax
je 0x5d7d7d
mov eax, dword [edi + 0x18]
mov edi, dword [esp + 0x34]
mov ebx, dword [eax + 0x48]
jmp 0x5d7cae
test ebp, ebp
je 0x5d7d7d
mov ebx, dword [ebp + 0x48]
xor edi, edi
test ebx, ebx
jge 0x5d7cba
test edi, edi
jl 0x5d7d7d
test ebp, ebp
je 0x5d7d7d
test ebx, ebx
jl 0x5d7ccf
cmp edi, 0xffffffff
je 0x5d7d7d
lea ecx, [esi + 0x320]
push 1
push edi
push ebx
mov edx, dword [ecx]
mov dword [esi + 0x334], 1
mov dword [esp + 0x1c], edx
mov eax, dword [ecx + 4]
mov dword [esp + 0x20], eax
mov edx, dword [ecx + 8]
mov dword [esp + 0x24], edx
mov eax, dword [ecx + 0xc]
mov ecx, esi
mov dword [esp + 0x28], eax
call fcn.005d9570
mov eax, dword [esi + 0x36c]
test eax, eax
jne 0x5d7d61
test ebx, ebx
jl 0x5d7d18
cmp edi, 0xffffffff
je 0x5d7d2c
mov dword [esi + 0x380], edi
mov dword [esi + 0x384], ebx
mov dword [esi + 0x388], edi
jmp 0x5d7d4a
mov ecx, esi
call fcn.005d9340
dec eax
mov dword [esi + 0x380], 0
mov dword [esi + 0x384], ebx
mov dword [esi + 0x388], eax
mov dword [esi + 0x38c], ebx
push 1
lea ecx, [esp + 0x14]
mov edx, dword [esi + 0x1c]
push ecx
push edx
call dword [sym.imp.USER32.dll_InvalidateRect]
push ebp
mov ecx, esi
mov dword [esi + 0x334], 0
call fcn.005d8370
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret 0xc
push 0
push 0
push 7
mov ecx, esi
call fcn.005d71e0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret 0xc
cmp edi, ebp
jne 0x5d7da5
xor eax, eax
xor ecx, ecx
push 1
push ecx
push eax
jmp 0x5d8145
push 0x12
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ah, 0x80
je 0x5d7de0
cmp ebx, 0x28
jne 0x5d7de0
push edi
mov ecx, esi
call fcn.005d5110
cmp eax, ebp
je case.0x5d7845.13
mov esi, dword [eax]
or edx, 0xffffffff
or ecx, 0xffffffff
push edx
push ecx
mov ecx, eax
call dword [esi + 0x44]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret 0xc
mov edx, dword [esi + 0x434]
mov ecx, dword [esi + 0x310]
mov ebp, dword [esi + 0x314]
mov eax, dword [esi + 0x318]
test edx, edx
je 0x5d7e04
push ecx
mov ecx, esi
call fcn.005d9ed0
test eax, eax
je case.0x5d7845.13
add eax, 0x24
push 1
mov ecx, eax
mov dword [esp + 0x38], 0
mov edx, dword [ecx]
mov dword [esp + 0x24], edx
or edx, 0xffffffff
mov eax, dword [ecx + 4]
mov dword [esp + 0x14], edx
mov dword [esp + 0x28], eax
mov dword [esp + 0x18], edx
mov eax, dword [ecx + 8]
lea edx, [esp + 0x38]
push edx
lea edx, [esp + 0x18]
mov ecx, dword [ecx + 0xc]
dec eax
add ecx, 2
push edx
push ecx
push eax
mov ecx, esi
call fcn.005d4f10
mov ebx, eax
test ebx, ebx
je case.0x5d7845.13
mov edi, dword [ebx + 0x48]
test edi, edi
jge 0x5d7e69
test ebp, ebp
jl case.0x5d7845.13
push 1
push ebp
push edi
mov ecx, esi
mov dword [esi + 0x334], 1
call fcn.005d9570
mov eax, dword [esi + 0x36c]
test eax, eax
jne 0x5d7efb
lea eax, [esi + 0x320]
test edi, edi
mov ecx, dword [eax]
mov dword [esp + 0x10], ecx
mov edx, dword [eax + 4]
mov dword [esp + 0x14], edx
mov ecx, dword [eax + 8]
mov dword [esp + 0x18], ecx
mov edx, dword [eax + 0xc]
mov dword [esp + 0x1c], edx
jl 0x5d7eb2
cmp ebp, 0xffffffff
je 0x5d7ec6
mov dword [esi + 0x380], ebp
mov dword [esi + 0x384], edi
mov dword [esi + 0x388], ebp
jmp 0x5d7ee4
mov ecx, esi
call fcn.005d9340
dec eax
mov dword [esi + 0x380], 0
mov dword [esi + 0x384], edi
mov dword [esi + 0x388], eax
mov dword [esi + 0x38c], edi
mov ecx, dword [esi + 0x1c]
lea eax, [esp + 0x10]
push 1
push eax
push ecx
call dword [sym.imp.USER32.dll_InvalidateRect]
push ebx
mov ecx, esi
mov dword [esi + 0x334], 0
call fcn.005d8370
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret 0xc
cmp edi, ebp
jne 0x5d7f28
xor eax, eax
xor ecx, ecx
push 1
push ecx
push eax
jmp 0x5d8145
cmp dword [esi + 0x294], ebp
je case.0x5d7845.13
mov edx, dword [esi + 0x434]
mov ecx, dword [esi + 0x310]
mov ebx, dword [esi + 0x314]
mov eax, dword [esi + 0x318]
cmp edx, ebp
je 0x5d7f58
push ecx
mov ecx, esi
call fcn.005d9ed0
cmp eax, ebp
je case.0x5d7845.13
add eax, 0x24
mov edi, dword [esi + 0x248]
mov edx, eax
push ebp
mov dword [esp + 0x38], ebp
mov eax, dword [edx]
mov dword [esp + 0x24], eax
mov ecx, dword [edx + 4]
mov eax, dword [edx + 8]
mov edx, dword [edx + 0xc]
mov dword [esp + 0x30], edx
lea edx, [eax - 1]
mov eax, dword [esi + 0x294]
sub eax, edi
add eax, ecx
or ecx, 0xffffffff
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], ecx
lea ecx, [esp + 0x38]
push ecx
lea ecx, [esp + 0x18]
push ecx
push eax
push edx
mov ecx, esi
call fcn.005d4f10
mov edi, eax
cmp edi, ebp
je 0x5d7fb9
mov eax, dword [edi + 0x48]
jmp 0x5d7fc1
mov ecx, esi
call fcn.005d6f80
dec eax
cmp eax, ebp
mov ecx, ebx
jge 0x5d7fcf
cmp ebx, ebp
jl case.0x5d7845.13
push 1
push ecx
push eax
mov ecx, esi
call fcn.005d9570
cmp edi, ebp
je 0x5d803d
push edi
mov ecx, esi
call fcn.005d8370
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret 0xc
mov ecx, esi
call fcn.005d6f80
mov ecx, dword [esi + 0x310]
dec eax
cmp ecx, ebp
jge 0x5d800a
cmp dword [esi + 0x314], ebp
jl 0x5d8030
mov ecx, dword [esi + 0x314]
push 1
push ecx
push eax
mov ecx, esi
call fcn.005d9570
push ebp
push ebp
push 7
mov ecx, esi
call fcn.005d6fa0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret 0xc
xor ecx, ecx
push 1
push ecx
push eax
mov ecx, esi
call fcn.005d9570
push ebp
push ebp
push 7
mov ecx, esi
call fcn.005d6fa0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret 0xc
cmp edi, ebp
jne 0x5d8063
xor eax, eax
xor ecx, ecx
push 1
push ecx
push eax
jmp 0x5d8145
cmp dword [esi + 0x294], ebp
je case.0x5d7845.13
mov edx, dword [esi + 0x434]
mov ecx, dword [esi + 0x310]
mov ebx, dword [esi + 0x314]
mov eax, dword [esi + 0x318]
cmp edx, ebp
je 0x5d8093
push ecx
mov ecx, esi
call fcn.005d9ed0
cmp eax, ebp
je case.0x5d7845.13
add eax, 0x24
mov edi, dword [esi + 0x294]
mov edx, eax
push ebp
mov dword [esp + 0x38], ebp
mov eax, dword [edx]
mov dword [esp + 0x24], eax
mov ecx, dword [edx + 4]
mov dword [esp + 0x28], ecx
mov eax, dword [edx + 8]
mov ecx, dword [edx + 0xc]
lea edx, [eax - 1]
mov eax, dword [esi + 0x248]
sub eax, edi
add eax, ecx
or ecx, 0xffffffff
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], ecx
lea ecx, [esp + 0x38]
push ecx
lea ecx, [esp + 0x18]
push ecx
push eax
push edx
mov ecx, esi
call fcn.005d4f10
mov edi, eax
cmp edi, ebp
je 0x5d80f4
mov eax, dword [edi + 0x48]
jmp 0x5d80f6
xor eax, eax
cmp eax, ebp
jge 0x5d8102
cmp ebx, ebp
jl case.0x5d7845.13
push 1
push ebx
push eax
mov ecx, esi
call fcn.005d9570
cmp edi, ebp
je 0x5d814c
push edi
mov ecx, esi
call fcn.005d8370
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret 0xc
mov eax, dword [esi + 0x310]
xor ecx, ecx
cmp eax, ebp
jge 0x5d8137
cmp dword [esi + 0x314], ebp
jl 0x5d813f
mov eax, dword [esi + 0x314]
jmp 0x5d8141
xor eax, eax
push 1
push eax
push ecx
mov ecx, esi
call fcn.005d9570
push ebp
push ebp
push 6
mov ecx, esi
call fcn.005d6fa0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret 0xc
cmp dword [esi + 0x348], ebp
jne case.0x5d7845.13
cmp dword [esi + 0x36c], ebp
je 0x5d81e9
push ebp
mov ecx, esi
call fcn.005d5110
mov edi, eax
cmp edi, ebp
je case.0x5d7845.13
mov eax, dword [edi + 0x18]
cmp dword [eax + 0x40], ebp
je case.0x5d7845.13
cmp dword [eax + 0x3c], ebp
je case.0x5d7845.13
cmp dword [edi + 0x98], ebp
je case.0x5d7845.13
cmp dword [edi + 0x94], ebp
je case.0x5d7845.13
cmp dword [edi + 0x50], ebp
jne case.0x5d7845.13
push 1
mov ecx, edi
call fcn.005c6800
mov eax, dword [edi + 0xa0]
mov ecx, dword [edi + 0x18]
mov edx, dword [esi]
push eax
mov eax, dword [ecx + 0x48]
mov ecx, esi
push eax
push edi
call dword [edx + 0x160]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret 0xc
mov ecx, dword [esi + 0x380]
cmp ecx, ebp
jl case.0x5d7845.13
mov eax, dword [esi + 0x384]
cmp eax, ebp
jl case.0x5d7845.13
cmp dword [esi + 0x388], ecx
jl case.0x5d7845.13
mov ecx, dword [esi + 0x38c]
cmp ecx, eax
jl case.0x5d7845.13
cmp eax, ecx
mov dword [esp + 0x34], eax
jg case.0x5d7845.13
mov edi, eax
push edi
mov ecx, esi
call fcn.005d4e30
mov ebp, eax
test ebp, ebp
je 0x5d82b3
mov eax, dword [ebp + 0x40]
test eax, eax
je 0x5d82b3
mov eax, dword [ebp + 0x3c]
test eax, eax
je 0x5d82b3
mov eax, dword [ebp + 0x34]
test eax, eax
jne 0x5d82b3
mov ebx, dword [esi + 0x380]
mov eax, dword [esi + 0x388]
cmp ebx, eax
jg 0x5d82b3
push ebx
mov ecx, ebp
call fcn.005cd820
mov edi, eax
test edi, edi
je 0x5d82a4
mov eax, dword [edi + 0x98]
test eax, eax
je 0x5d82a4
mov eax, dword [edi + 0x94]
test eax, eax
je 0x5d82a4
push 1
mov ecx, edi
call fcn.005c6800
mov eax, dword [edi + 0xa0]
mov ecx, dword [edi + 0x18]
mov edx, dword [esi]
push eax
mov eax, dword [ecx + 0x48]
mov ecx, esi
push eax
push edi
call dword [edx + 0x160]
mov eax, dword [esi + 0x388]
inc ebx
cmp ebx, eax
jle 0x5d8260
mov edi, dword [esp + 0x34]
mov eax, dword [esi + 0x38c]
inc edi
cmp edi, eax
mov dword [esp + 0x34], edi
jle 0x5d822d
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret 0xc