Function at 0x57ef88
Capabilities:
Log keystrokes via input method manager

Disassembly:
jmp 0x592680
sub esp, 0x414
mov eax, dword [0x8ed904]
push ebx
push ebp
add eax, 0xffffffff
cmp eax, 3
push esi
push edi
mov byte [esp + 0x10], 0
mov byte [esp + 0x11], 0
mov byte [esp + 0x12], 0
mov ebp, 0x400
ja case.default.0x5926af
jmp dword [eax*4 + 0x592ec0]
mov ebx, dword [0x8f2694]
test ebx, ebx
je 0x592711
push ebx
call fcn.0057e3b7
mov esi, eax
test esi, esi
je 0x592711
mov dword [esp + 0x14], ebp
cld
mov al, 0
mov ecx, dword [esp + 0x14]
mov edi, 0x8ed0e8
rep stosb byte es:[edi], al
mov dword [esp + 0x14], ebp
cld
mov al, 0
mov ecx, dword [esp + 0x14]
mov edi, 0x8ed4e9
rep stosb byte es:[edi], al
push ebp
push 0x8ed4e9
push 8
push esi
call fcn.0057dedf
push 0
push 4
push 0x15
push esi
call fcn.0057bc25
push esi
push ebx
call fcn.0057fca3
add dword [0x8ed904], 1
mov esi, dword [0x8f2694]
push esi
call fcn.0057e3b7
mov edi, eax
push 0
push edi
call fcn.0057c4ae
push edi
push esi
call fcn.0057fca3
add dword [0x8ed904], 1
mov esi, dword [0x8f2694]
push esi
call fcn.0057e3b7
mov edi, eax
push 1
push edi
call fcn.0057c4ae
push edi
push esi
call fcn.0057fca3
add dword [0x8ed904], 1
mov edi, dword [0x8f2694]
test edi, edi
je 0x5927a2
push edi
call fcn.0057e3b7
mov esi, eax
test esi, esi
je 0x5927a2
push 1
push esi
call fcn.0057c4ae
push 0
push 0
push 0x8ed4e9
call dword [sym.imp.KERNEL32.dll_lstrlenA]
push eax
push 0x8ed4e9
push 9
push esi
call fcn.0057d43a
push esi
push edi
call fcn.0057fca3
mov dword [0x8ed904], 0
mov ecx, dword [0x8ee964]
cmp ecx, 0xffffffff
je 0x592ea2
test ecx, ecx
js 0x592eaf
mov eax, ecx
and eax, 0x78000000
cmp eax, 0x38000000
jne 0x592eaf
mov eax, ecx
and eax, 0xffff
cmp eax, 0x100
jge 0x592eaf
lea esi, [eax*8]
sub esi, eax
cmp dword [esi*8 + 0x8ee96c], 0
lea esi, [esi*8 + 0x8ee96c]
je 0x592eaf
mov edx, dword [esi + 4]
shl edx, 0x10
and ecx, 0x7ff0000
cmp edx, ecx
jne 0x592eaf
cmp dword [esi + 8], 0
jne 0x592ea2
push 0x8ed0e8
xor bl, bl
call dword [sym.imp.KERNEL32.dll_lstrlenA]
cmp dword [0x8ed8fc], 0
mov ebp, 0x10000
mov dword [esp + 0x14], ebp
je 0x592859
mov edx, dword [esi + 0x10]
mov ecx, dword [esi + 0x14]
lea edi, [edx + eax]
cmp edi, ecx
jle 0x592859
sub ecx, edx
mov ebp, ecx
mov bl, 1
mov dword [esp + 0x14], ebp
mov ecx, dword [0x8ed900]
test ecx, ecx
je 0x592873
cmp eax, ecx
jle 0x592873
cmp ebp, ecx
jle 0x59287b
mov ebp, ecx
mov dword [esp + 0x14], ebp
jmp 0x59287b
test bl, bl
je 0x59296d
mov eax, dword [0x8f2694]
push eax
call fcn.0057e3b7
mov ebx, eax
test ebx, ebx
mov dword [esp + 0x1c], ebx
je 0x59296d
lea ecx, [esp + 0x24]
mov dword [esp + 0x20], ecx
mov dword [esp + 0x18], 0x400
cld
mov al, 0
mov ecx, dword [esp + 0x18]
mov edi, dword [esp + 0x20]
rep stosb byte es:[edi], al
push 0x400
lea edx, [esp + 0x28]
push edx
push 8
push ebx
call fcn.0057dedf
lea eax, [esp + 0x24]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
cmp eax, ebp
mov dword [esp + 0x18], eax
jle 0x592960
xor edi, edi
test eax, eax
jle 0x59292e
lea ebp, [edi + 1]
lea ebx, [edi + 2]
jmp 0x5928f0
mov ecx, dword [0x8fe334]
push ecx
lea edx, [esp + edi + 0x28]
push edx
call fcn.0057d00c
add esp, 8
test eax, eax
je 0x592919
cmp ebx, dword [esp + 0x14]
jg 0x59292e
add edi, 2
add ebx, 2
add ebp, 2
jmp 0x592928
cmp ebp, dword [esp + 0x14]
jg 0x59292e
add edi, 1
add ebx, 1
add ebp, 1
cmp edi, dword [esp + 0x18]
jl 0x5928f0
mov ebx, dword [esp + 0x1c]
push 0
push 4
push 0x15
push ebx
mov byte [esp + edi + 0x34], 0
call fcn.0057bc25
push 0
push 0
lea eax, [esp + 0x2c]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
push eax
lea ecx, [esp + 0x30]
push ecx
push 9
push ebx
call fcn.0057d43a
mov edx, dword [0x8f2694]
push ebx
push edx
call fcn.0057fca3
cmp dword [esi + 8], 0
jne 0x592ea2
mov ebp, dword [esp + 0x1c]
jmp 0x592980
lea eax, [esp + 0x10]
push 1
push eax
call fcn.0057a3a2
mov ebx, eax
add esp, 8
test ebx, ebx
je 0x592ea2
call fcn.0058c7c0
movsx eax, byte [esp + 0x10]
add eax, 0xfffffffd
cmp eax, 0x1c
ja case.0x5929b6.4
movzx ecx, byte [eax + 0x592f04]
jmp dword [ecx*4 + 0x592ed0]
push 0x2a
call fcn.0057b9c8
add esp, 4
test eax, eax
jne 0x5929ee
push 0x36
call fcn.0057b9c8
add esp, 4
test eax, eax
jne 0x5929ee
or eax, 0xffffffff
mov dword [esi + 0x18], eax
mov dword [esi + 0x1c], eax
mov dword [esi + 0x24], 0
jmp case.0x5929b6.9
cmp dword [esi + 0x18], 0xffffffff
mov dword [esi + 0x1c], 0
jne 0x592a01
mov edx, dword [esi + 0x24]
mov dword [esi + 0x18], edx
mov dword [esi + 0x24], 0
jmp case.0x5929b6.9
push 0x2a
call fcn.0057b9c8
add esp, 4
test eax, eax
jne 0x592a3d
push 0x36
call fcn.0057b9c8
add esp, 4
test eax, eax
jne 0x592a3d
or eax, 0xffffffff
mov dword [esi + 0x18], eax
mov dword [esi + 0x1c], eax
mov eax, dword [esi + 0x10]
mov dword [esi + 0x24], eax
jmp case.0x5929b6.9
cmp dword [esi + 0x18], 0xffffffff
jne 0x592a59
mov eax, dword [esi + 0x24]
mov ecx, dword [esi + 0x10]
mov dword [esi + 0x18], eax
mov eax, ecx
mov dword [esi + 0x1c], ecx
mov dword [esi + 0x24], eax
jmp case.0x5929b6.9
mov edx, dword [esi + 0x10]
mov eax, edx
mov dword [esi + 0x1c], edx
mov dword [esi + 0x24], eax
jmp case.0x5929b6.9
mov eax, dword [esi + 0x18]
cmp eax, 0xffffffff
je case.0x5929b6.9
mov ecx, dword [esi + 0x1c]
cmp eax, ecx
jle 0x592a82
mov dword [esp + 0x14], ecx
jmp 0x592a88
mov dword [esp + 0x14], eax
mov eax, ecx
sub eax, dword [esp + 0x14]
push 0x4191
mov ebx, eax
lea ecx, [ebx + 1]
push str...DxLibDxWin.cpp
push ecx
call fcn.0057e8b2
mov edi, eax
add esp, 0xc
test edi, edi
je case.0x5929b6.9
mov edx, dword [esi + 0x28]
add edx, dword [esp + 0x14]
push ebx
push edx
push edi
call fcn.0057bde2
push edi
mov byte [edi + ebx], 0
call fcn.0057a91a
push edi
call fcn.0057cf76
add esp, 0x14
jmp case.0x5929b6.9
push 0
call fcn.0057e1b9
add esp, 4
cmp eax, 0xffffffff
je case.0x5929b6.9
push 0
call fcn.0057e1b9
push 0x41a4
push str...DxLibDxWin.cpp
push eax
call fcn.0057e8b2
mov ebx, eax
add esp, 0x10
test ebx, ebx
je case.0x5929b6.9
push ebx
call fcn.0057e1b9
movzx eax, byte [ebx]
add esp, 4
test al, al
mov edi, ebx
je 0x592b33
mov edi, edi
push eax
call fcn.0057e060
mov al, byte [edi + 1]
add edi, 1
add esp, 4
test al, al
jne 0x592b20
push ebx
call fcn.0057cf76
add esp, 4
jmp case.0x5929b6.9
mov dword [esi + 8], 1
jmp case.0x5929b6.9
cmp dword [esi + 0x2c], 0
je case.0x5929b6.9
mov eax, 1
mov dword [esi + 0xc], eax
mov dword [esi + 8], eax
jmp case.0x5929b6.9
cmp dword [esi + 0x18], 0xffffffff
jne 0x592bba
mov eax, dword [esi + 0x24]
cmp eax, dword [esi + 0x10]
je case.0x5929b6.9
mov ecx, dword [0x8fe334]
mov edx, dword [esi + 0x28]
push ecx
add edx, eax
push edx
call fcn.0057d00c
mov ecx, dword [esi + 0x28]
mov edx, dword [esi + 0x10]
mov edi, eax
mov eax, dword [esi + 0x24]
sub edi, 1
neg edi
sbb edi, edi
add ecx, eax
sub edx, eax
add edi, 2
push edx
lea eax, [ecx + edi]
push eax
push ecx
call fcn.0057de6c
add esp, 0x14
sub dword [esi + 0x10], edi
jmp case.0x5929b6.9
push 0x2a
call fcn.0057b9c8
add esp, 4
test eax, eax
jne case.0x5929b6.24
push 0x36
call fcn.0057b9c8
add esp, 4
test eax, eax
jne case.0x5929b6.24
mov eax, esi
call fcn.0058b960
jmp case.0x5929b6.9
mov eax, dword [esi + 0x18]
cmp eax, 0xffffffff
je case.0x5929b6.9
mov ecx, dword [esi + 0x1c]
cmp eax, ecx
jle 0x592bfb
mov dword [esp + 0x14], ecx
jmp 0x592c01
mov dword [esp + 0x14], eax
mov eax, ecx
sub eax, dword [esp + 0x14]
push 0x4173
mov ebx, eax
lea ecx, [ebx + 1]
push str...DxLibDxWin.cpp
push ecx
call fcn.0057e8b2
mov edi, eax
add esp, 0xc
test edi, edi
je 0x592c45
mov edx, dword [esi + 0x28]
add edx, dword [esp + 0x14]
push ebx
push edx
push edi
call fcn.0057bde2
push edi
mov byte [edi + ebx], 0
call fcn.0057a91a
push edi
call fcn.0057cf76
add esp, 0x14
mov eax, esi
call fcn.0058b960
jmp case.0x5929b6.9
cmp dword [esi + 0x18], 0xffffffff
jne 0x592c45
cmp dword [esi + 0x24], 0
jle case.0x5929b6.9
mov eax, dword [esi + 0x24]
mov edi, 1
cmp eax, edi
jle 0x592c90
mov ecx, dword [0x8fe334]
mov edx, dword [esi + 0x28]
push ecx
add eax, 0xffffffff
push eax
push edx
call fcn.0057e902
mov edi, eax
sub edi, 2
add esp, 0xc
neg edi
sbb edi, edi
add edi, 2
sub dword [esi + 0x24], edi
mov eax, dword [esi + 0x24]
mov ecx, dword [esi + 0x28]
mov edx, dword [esi + 0x10]
add ecx, eax
sub edx, eax
push edx
lea eax, [ecx + edi]
push eax
push ecx
call fcn.0057de6c
add esp, 0xc
sub dword [esi + 0x10], edi
jmp case.0x5929b6.9
mov eax, dword [esi + 0x24]
test eax, eax
jle case.0x5929b6.9
mov edi, 1
cmp eax, edi
jle 0x592ce8
mov ecx, dword [0x8fe334]
mov edx, dword [esi + 0x28]
push ecx
add eax, 0xffffffff
push eax
push edx
call fcn.0057e902
add esp, 0xc
cmp eax, 2
jne 0x592ce8
mov edi, eax
push 0x2a
call fcn.0057b9c8
add esp, 4
test eax, eax
jne 0x592d15
push 0x36
call fcn.0057b9c8
add esp, 4
test eax, eax
jne 0x592d15
or eax, 0xffffffff
sub dword [esi + 0x24], edi
mov dword [esi + 0x18], eax
mov dword [esi + 0x1c], eax
jmp case.0x5929b6.9
cmp dword [esi + 0x18], 0xffffffff
mov eax, dword [esi + 0x24]
jne 0x592d21
mov dword [esi + 0x18], eax
sub eax, edi
sub dword [esi + 0x24], edi
mov dword [esi + 0x1c], eax
jmp case.0x5929b6.9
mov eax, dword [esi + 0x24]
cmp eax, dword [esi + 0x10]
jge case.0x5929b6.9
mov ecx, dword [0x8fe334]
mov edx, dword [esi + 0x28]
push ecx
add edx, eax
push edx
mov edi, 1
call fcn.0057d00c
add esp, 8
cmp eax, edi
jne 0x592d5d
mov edi, 2
push 0x2a
call fcn.0057b9c8
add esp, 4
test eax, eax
jne 0x592d8a
push 0x36
call fcn.0057b9c8
add esp, 4
test eax, eax
jne 0x592d8a
or eax, 0xffffffff
add dword [esi + 0x24], edi
mov dword [esi + 0x18], eax
mov dword [esi + 0x1c], eax
jmp case.0x5929b6.9
cmp dword [esi + 0x18], 0xffffffff
mov eax, dword [esi + 0x24]
jne 0x592d96
mov dword [esi + 0x18], eax
add eax, edi
add dword [esi + 0x24], edi
mov dword [esi + 0x1c], eax
jmp case.0x5929b6.9
mov eax, esi
call fcn.0058b960
cmp dword [esi + 0x34], 0
je 0x592df4
mov al, byte [esp + 0x10]
cmp al, 0x30
jl 0x592dbc
cmp al, 0x39
jle 0x592df4
cmp al, 0x2d
jne 0x592dcb
cmp dword [esi + 0x24], 0
je 0x592df4
jmp case.0x5929b6.9
cmp al, 0x2e
jne case.0x5929b6.9
mov ecx, dword [esi + 0x28]
push 0x2e
push ecx
call fcn.0057b081
add esp, 8
test eax, eax
jne case.0x5929b6.9
cmp byte [esp + 0x10], 0x2e
jne case.0x5929b6.9
cmp dword [esi + 0x30], 0
je 0x592e03
cmp ebx, 1
jne case.0x5929b6.9
mov edx, dword [esi + 0x10]
add edx, ebx
cmp edx, dword [esi + 0x14]
jle 0x592e62
lea ecx, [ecx]
xor edi, edi
cmp dword [esi + 0x10], edi
jle 0x592e3e
mov eax, dword [0x8fe334]
mov ecx, dword [esi + 0x28]
push eax
add ecx, edi
push ecx
call fcn.0057d00c
mov ebp, eax
sub ebp, 1
add esp, 8
neg ebp
sbb ebp, ebp
add ebp, 2
add edi, ebp
cmp edi, dword [esi + 0x10]
jl 0x592e17
mov eax, dword [esi + 0x28]
mov edx, edi
sub edx, ebp
mov byte [edx + eax], 0
mov eax, dword [esi + 0x24]
sub dword [esi + 0x10], ebp
cmp eax, edi
jne 0x592e58
sub eax, ebp
mov dword [esi + 0x24], eax
mov ecx, dword [esi + 0x10]
add ecx, ebx
cmp ecx, dword [esi + 0x14]
jg 0x592e10
mov eax, dword [esi + 0x24]
mov edx, dword [esi + 0x28]
lea ecx, [eax + edx]
mov edx, dword [esi + 0x10]
sub edx, eax
add edx, 1
push edx
push ecx
add ecx, ebx
push ecx
call fcn.0057de6c
mov ecx, dword [esi + 0x24]
add ecx, dword [esi + 0x28]
push ebx
lea eax, [esp + 0x20]
push eax
push ecx
call fcn.0057de6c
add dword [esi + 0x24], ebx
add esp, 0x18
add dword [esi + 0x10], ebx
cmp dword [esi + 8], 0
je 0x592980
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x414
ret
pop edi
pop esi
pop ebp
or eax, 0xffffffff
pop ebx
add esp, 0x414
ret