Function at 0x41c873
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x30
push ebx
push esi
mov esi, dword [ebp + 8]
mov eax, dword [esi]
xor ebx, ebx
push edi
mov dword [ebp - 0xc], ebx
cmp eax, 0x17
ja case.default.0x41c88f
jmp dword [eax*4 + 0x41d843]
mov edx, dword [esi + 4]
imul edx, dword [0x43cb2c]
push ebx
xor ecx, ecx
call fcn.0041b4ab
mov eax, dword [esi + 4]
imul eax, dword [0x43cb2c]
mov dword [ebp - 0xc], eax
jmp 0x41d792
mov edx, dword [esi + 4]
push ebx
xor ecx, ecx
call fcn.0041b4ab
jmp 0x41d83b
mov edi, dword [esi + 4]
imul edi, dword [0x43cb3c]
mov eax, dword [0x436038]
add edi, dword [eax]
test byte [0x43b8ac], 1
mov ecx, dword [eax + 4]
mov dword [ebp - 8], edi
mov dword [ebp - 4], ecx
je 0x41c935
push 0x13
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
jmp 0x41c928
mov ecx, dword [ebp - 4]
mov eax, dword [0x436038]
add ecx, 0x3e8
cmp ecx, dword [eax + 0x1c]
jl 0x41c935
push 0x3e8
push 1
call fcn.004123ad
push 0x13
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, 0x8001
test cx, ax
jne 0x41c930
cmp dword [0x43ca44], ebx
jne 0x41c8f7
mov eax, dword [0x436038]
mov ecx, dword [0x43b560]
sub ecx, dword [0x43b23c]
cmp ecx, edi
jg 0x41c94a
mov edi, ecx
mov dword [ebp - 8], ecx
mov ecx, dword [0x43b214]
cmp ecx, edi
jle 0x41c959
mov edi, ecx
mov dword [ebp - 8], edi
mov ecx, dword [0x43cb34]
sub ecx, dword [0x43b21c]
cmp ecx, dword [ebp - 4]
jg 0x41c96d
mov dword [ebp - 4], ecx
mov ecx, dword [0x43cb44]
cmp ecx, dword [ebp - 4]
jle 0x41c97b
mov dword [ebp - 4], ecx
cmp edi, dword [eax]
jne 0x41c98b
mov ecx, dword [ebp - 4]
cmp ecx, dword [eax + 4]
je case.0x41c88f.4
mov ecx, dword [0x43b8ac]
mov esi, 0x43cb50
lea edi, [ebp - 0x20]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
cmp ecx, 8
je 0x41cbf8
cmp dword [0x43cab4], ebx
je 0x41c9bb
cmp dword [0x43cab8], 1
ja 0x41cbf8
test cl, 0x14
mov ecx, dword [0x4368a0]
je 0x41ca6b
sub ecx, ebx
je 0x41cbe2
dec ecx
je 0x41ca35
dec ecx
jne 0x41cc1a
push dword [0x43b52c]
call dword [sym.imp.USER32.dll_GetDC]
mov esi, dword [ebp - 4]
mov edi, eax
lea eax, [ebp - 0x30]
push eax
push ebx
mov ebx, dword [ebp - 8]
lea eax, [ebp - 0x20]
push eax
push eax
mov eax, dword [0x436038]
mov ecx, dword [eax + 4]
mov eax, dword [eax]
sub ecx, esi
push ecx
sub eax, ebx
push eax
push edi
call dword [sym.imp.USER32.dll_ScrollDC]
push edi
push dword [0x43b52c]
call dword [sym.imp.USER32.dll_ReleaseDC]
mov eax, dword [0x436038]
mov dword [eax], ebx
mov eax, dword [0x436038]
mov dword [eax + 4], esi
lea eax, [ebp - 0x30]
jmp 0x41cc0b
mov esi, dword [ebp - 4]
mov edi, dword [ebp - 8]
lea ecx, [ebp - 0x20]
push ecx
mov ecx, dword [eax + 4]
mov eax, dword [eax]
push ebx
sub ecx, esi
push ecx
sub eax, edi
push eax
push dword [0x43b52c]
call dword [sym.imp.USER32.dll_ScrollWindow]
mov eax, dword [0x436038]
mov dword [eax], edi
mov eax, dword [0x436038]
mov dword [eax + 4], esi
jmp 0x41cc1a
sub ecx, ebx
je 0x41cbdf
dec ecx
je 0x41cb3f
dec ecx
jne 0x41cc1a
cmp dword [0x436088], ebx
je 0x41ca95
push dword [0x43b52c]
call dword [sym.imp.USER32.dll_HideCaret]
push dword [0x43b52c]
call dword [sym.imp.USER32.dll_GetDC]
mov esi, dword [ebp - 4]
mov edi, dword [ebp - 8]
mov dword [ebp - 0x10], eax
lea eax, [ebp - 0x30]
push eax
push ebx
lea eax, [ebp - 0x20]
push eax
push eax
mov eax, dword [0x436038]
mov ecx, dword [eax + 4]
mov eax, dword [eax]
sub ecx, esi
imul ecx, dword [0x436024]
sub eax, edi
imul eax, dword [0x43601c]
push ecx
push eax
push dword [ebp - 0x10]
call dword [sym.imp.USER32.dll_ScrollDC]
push dword [ebp - 0x10]
push dword [0x43b52c]
call dword [sym.imp.USER32.dll_ReleaseDC]
mov eax, dword [0x436038]
mov dword [eax], edi
mov eax, dword [0x436038]
mov dword [eax + 4], esi
mov esi, dword [sym.imp.USER32.dll_InvalidateRect]
push 1
lea eax, [ebp - 0x30]
push eax
push dword [0x43b52c]
call esi
push dword [0x43b52c]
mov edi, dword [sym.imp.USER32.dll_UpdateWindow]
call edi
mov eax, dword [ebp - 0x1c]
dec eax
mov dword [ebp - 0x14], eax
push ebx
lea eax, [ebp - 0x20]
push eax
push dword [0x43b52c]
mov dword [ebp - 0x1c], ebx
call esi
push dword [0x43b52c]
call edi
jmp 0x41cbc9
cmp dword [0x436088], ebx
je 0x41cb58
push dword [0x43b52c]
call dword [sym.imp.USER32.dll_HideCaret]
mov eax, dword [0x436038]
mov esi, dword [ebp - 4]
mov edi, dword [ebp - 8]
lea ecx, [ebp - 0x20]
push ecx
mov ecx, dword [eax + 4]
mov eax, dword [eax]
sub ecx, esi
imul ecx, dword [0x436024]
sub eax, edi
imul eax, dword [0x43601c]
push ebx
push ecx
push eax
push dword [0x43b52c]
call dword [sym.imp.USER32.dll_ScrollWindow]
mov eax, dword [0x436038]
mov dword [eax], edi
mov eax, dword [0x436038]
mov dword [eax + 4], esi
push dword [0x43b52c]
mov esi, dword [sym.imp.USER32.dll_UpdateWindow]
call esi
mov eax, dword [ebp - 0x1c]
dec eax
mov dword [ebp - 0x14], eax
push 1
lea eax, [ebp - 0x20]
push eax
push dword [0x43b52c]
mov dword [ebp - 0x1c], ebx
call dword [sym.imp.USER32.dll_InvalidateRect]
push dword [0x43b52c]
call esi
cmp dword [0x436088], ebx
je 0x41cc1a
push dword [0x43b52c]
call dword [sym.imp.USER32.dll_ShowCaret]
jmp 0x41cc1a
mov dword [ebp - 0x1c], ebx
mov ecx, dword [ebp - 8]
mov dword [eax], ecx
mov eax, dword [0x436038]
mov ecx, dword [ebp - 4]
mov dword [eax + 4], ecx
push ebx
lea eax, [ebp - 0x20]
jmp 0x41cc0d
mov ecx, dword [ebp - 8]
mov dword [eax], ecx
mov eax, dword [0x436038]
mov ecx, dword [ebp - 4]
mov dword [eax + 4], ecx
lea eax, [ebp - 0x20]
push 1
push eax
push dword [0x43b52c]
call dword [sym.imp.USER32.dll_InvalidateRect]
call fcn.0041864a
mov esi, dword [ebp + 8]
mov ebx, dword [esi + 4]
imul ebx, dword [0x43cb3c]
jmp 0x41d792
mov eax, dword [0x436038]
mov esi, dword [esi + 4]
add esi, dword [eax]
test byte [0x43b8ac], 1
mov ecx, dword [eax + 4]
mov dword [ebp - 8], esi
mov dword [ebp + 8], ecx
je 0x41cc93
mov edi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
push 0x13
call edi
jmp 0x41cc86
mov ecx, dword [ebp + 8]
mov eax, dword [0x436038]
add ecx, 0x3e8
cmp ecx, dword [eax + 0x1c]
jl 0x41cc93
push 0x3e8
push 1
call fcn.004123ad
push 0x13
call edi
mov ecx, 0x8001
test cx, ax
jne 0x41cc8e
cmp dword [0x43ca44], ebx
jne 0x41cc59
mov eax, dword [0x436038]
mov ecx, dword [0x43b560]
sub ecx, dword [0x43b23c]
cmp ecx, esi
jg 0x41cca8
mov esi, ecx
mov dword [ebp - 8], ecx
mov ecx, dword [0x43b214]
cmp ecx, esi
jle 0x41ccb7
mov esi, ecx
mov dword [ebp - 8], esi
mov ecx, dword [0x43cb34]
sub ecx, dword [0x43b21c]
cmp ecx, dword [ebp + 8]
jg 0x41cccb
mov dword [ebp + 8], ecx
mov ecx, dword [0x43cb44]
cmp ecx, dword [ebp + 8]
jle 0x41ccd9
mov dword [ebp + 8], ecx
cmp esi, dword [eax]
jne 0x41cce9
mov ecx, dword [ebp + 8]
cmp ecx, dword [eax + 4]
je 0x41d83b
mov ecx, dword [0x43b8ac]
lea edi, [ebp - 0x20]
mov esi, 0x43cb50
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
cmp ecx, 8
je 0x41cf4e
cmp dword [0x43cab4], ebx
je 0x41cd19
cmp dword [0x43cab8], 1
ja 0x41cf4e
test cl, 0x14
mov ecx, dword [0x4368a0]
je 0x41d413
sub ecx, ebx
je 0x41cf38
dec ecx
je 0x41cd93
dec ecx
jne 0x41cf70
push dword [0x43b52c]
call dword [sym.imp.USER32.dll_GetDC]
mov esi, dword [ebp + 8]
mov edi, eax
lea eax, [ebp - 0x30]
push eax
push ebx
mov ebx, dword [ebp - 8]
lea eax, [ebp - 0x20]
push eax
push eax
mov eax, dword [0x436038]
mov ecx, dword [eax + 4]
mov eax, dword [eax]
sub ecx, esi
push ecx
sub eax, ebx
push eax
push edi
call dword [sym.imp.USER32.dll_ScrollDC]
push edi
push dword [0x43b52c]
call dword [sym.imp.USER32.dll_ReleaseDC]
mov eax, dword [0x436038]
mov dword [eax], ebx
mov eax, dword [0x436038]
mov dword [eax + 4], esi
lea eax, [ebp - 0x30]
jmp 0x41cf61
mov esi, dword [ebp + 8]
mov edi, dword [ebp - 8]
lea ecx, [ebp - 0x20]
push ecx
mov ecx, dword [eax + 4]
mov eax, dword [eax]
push ebx
sub ecx, esi
push ecx
sub eax, edi
push eax
push dword [0x43b52c]
call dword [sym.imp.USER32.dll_ScrollWindow]
mov eax, dword [0x436038]
mov dword [eax], edi
mov eax, dword [0x436038]
mov dword [eax + 4], esi
jmp 0x41cf70
dec ecx
je 0x41ce95
dec ecx
jne 0x41cf70
cmp dword [0x436088], ebx
je 0x41cdeb
push dword [0x43b52c]
call dword [sym.imp.USER32.dll_HideCaret]
push dword [0x43b52c]
call dword [sym.imp.USER32.dll_GetDC]
mov esi, dword [ebp + 8]
mov edi, dword [ebp - 8]
mov dword [ebp - 0x10], eax
lea eax, [ebp - 0x30]
push eax
push ebx
lea eax, [ebp - 0x20]
push eax
push eax
mov eax, dword [0x436038]
mov ecx, dword [eax + 4]
mov eax, dword [eax]
sub ecx, esi
imul ecx, dword [0x436024]
sub eax, edi
imul eax, dword [0x43601c]
push ecx
push eax
push dword [ebp - 0x10]
call dword [sym.imp.USER32.dll_ScrollDC]
push dword [ebp - 0x10]
push dword [0x43b52c]
call dword [sym.imp.USER32.dll_ReleaseDC]
mov eax, dword [0x436038]
mov dword [eax], edi
mov eax, dword [0x436038]
mov dword [eax + 4], esi
mov esi, dword [sym.imp.USER32.dll_InvalidateRect]
push 1
lea eax, [ebp - 0x30]
push eax
push dword [0x43b52c]
call esi
push dword [0x43b52c]
mov edi, dword [sym.imp.USER32.dll_UpdateWindow]
call edi
mov eax, dword [ebp - 0x1c]
dec eax
mov dword [ebp - 0x14], eax
push ebx
lea eax, [ebp - 0x20]
push eax
push dword [0x43b52c]
mov dword [ebp - 0x1c], ebx
call esi
push dword [0x43b52c]
call edi
jmp 0x41cf1f
cmp dword [0x436088], ebx
je 0x41ceae
push dword [0x43b52c]
call dword [sym.imp.USER32.dll_HideCaret]
mov eax, dword [0x436038]
mov esi, dword [ebp + 8]
mov edi, dword [ebp - 8]
lea ecx, [ebp - 0x20]
push ecx
mov ecx, dword [eax + 4]
mov eax, dword [eax]
sub ecx, esi
imul ecx, dword [0x436024]
sub eax, edi
imul eax, dword [0x43601c]
push ebx
push ecx
push eax
push dword [0x43b52c]
call dword [sym.imp.USER32.dll_ScrollWindow]
mov eax, dword [0x436038]
mov dword [eax], edi
mov eax, dword [0x436038]
mov dword [eax + 4], esi
push dword [0x43b52c]
mov esi, dword [sym.imp.USER32.dll_UpdateWindow]
call esi
mov eax, dword [ebp - 0x1c]
dec eax
mov dword [ebp - 0x14], eax
push 1
lea eax, [ebp - 0x20]
push eax
push dword [0x43b52c]
mov dword [ebp - 0x1c], ebx
call dword [sym.imp.USER32.dll_InvalidateRect]
push dword [0x43b52c]
call esi
cmp dword [0x436088], ebx
je 0x41cf70
push dword [0x43b52c]
call dword [sym.imp.USER32.dll_ShowCaret]
jmp 0x41cf70
mov dword [ebp - 0x1c], ebx
mov ecx, dword [ebp - 8]
mov dword [eax], ecx
mov eax, dword [0x436038]
mov ecx, dword [ebp + 8]
mov dword [eax + 4], ecx
push ebx
lea eax, [ebp - 0x20]
jmp 0x41cf63
mov ecx, dword [ebp - 8]
mov dword [eax], ecx
mov eax, dword [0x436038]
mov ecx, dword [ebp + 8]
mov dword [eax + 4], ecx
lea eax, [ebp - 0x20]
push 1
push eax
push dword [0x43b52c]
call dword [sym.imp.USER32.dll_InvalidateRect]
call fcn.0041864a
jmp 0x41d83b
mov edx, dword [0x43b21c]
dec edx
imul edx, dword [esi + 4]
push ebx
xor ecx, ecx
call fcn.0041b4ab
mov eax, dword [0x43b21c]
dec eax
imul eax, dword [esi + 4]
jmp 0x41c8b2
mov edx, dword [0x43b21c]
dec edx
imul edx, dword [esi + 4]
jmp 0x41c8bd
mov eax, dword [0x43b21c]
dec eax
imul eax, dword [esi + 4]
push ebx
push 0xa
cdq
pop ecx
idiv ecx
xor ecx, ecx
mov edx, eax
call fcn.0041b4ab
mov eax, dword [0x43b21c]
dec eax
imul eax, dword [esi + 4]
push 0xa
cdq
pop ecx
idiv ecx
jmp 0x41c8b2
mov eax, dword [0x43b21c]
dec eax
imul eax, dword [esi + 4]
push ebx
push 0xa
cdq
pop ecx
idiv ecx
mov edx, eax
jmp 0x41c8be
mov edi, dword [0x43b23c]
mov eax, dword [0x436038]
mov ecx, dword [eax + 4]
dec edi
imul edi, dword [esi + 4]
add edi, dword [eax]
test byte [0x43b8ac], 1
mov dword [ebp - 8], edi
mov dword [ebp - 4], ecx
je 0x41d05f
push 0x13
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
jmp 0x41d052
mov ecx, dword [ebp - 4]
mov eax, dword [0x436038]
add ecx, 0x3e8
cmp ecx, dword [eax + 0x1c]
jl 0x41d05f
push 0x3e8
push 1
call fcn.004123ad
push 0x13
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, 0x8001
test cx, ax
jne 0x41d05a
cmp dword [0x43ca44], ebx
jne 0x41d021
mov eax, dword [0x436038]
mov ecx, dword [0x43b560]
sub ecx, dword [0x43b23c]
cmp ecx, edi
jg 0x41d074
mov edi, ecx
mov dword [ebp - 8], ecx
mov ecx, dword [0x43b214]
cmp ecx, edi
jle 0x41d083
mov edi, ecx
mov dword [ebp - 8], edi
mov ecx, dword [0x43cb34]
sub ecx, dword [0x43b21c]
cmp ecx, dword [ebp - 4]
jg 0x41d097
mov dword [ebp - 4], ecx
mov ecx, dword [0x43cb44]
cmp ecx, dword [ebp - 4]
jle 0x41d0a5
mov dword [ebp - 4], ecx
cmp edi, dword [eax]
jne 0x41d0b5
mov ecx, dword [ebp - 4]
cmp ecx, dword [eax + 4]
je case.0x41c88f.16
mov ecx, dword [0x43b8ac]
mov esi, 0x43cb50
lea edi, [ebp - 0x20]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
cmp ecx, 8
je 0x41d322
cmp dword [0x43cab4], ebx
je 0x41d0e5
cmp dword [0x43cab8], 1
ja 0x41d322
test cl, 0x14
mov ecx, dword [0x4368a0]
je 0x41d195
sub ecx, ebx
je 0x41d30c
dec ecx
je 0x41d15f
dec ecx
jne 0x41d344
push dword [0x43b52c]
call dword [sym.imp.USER32.dll_GetDC]
mov esi, dword [ebp - 4]
mov edi, eax
lea eax, [ebp - 0x30]
push eax
push ebx
mov ebx, dword [ebp - 8]
lea eax, [ebp - 0x20]
push eax
push eax
mov eax, dword [0x436038]
mov ecx, dword [eax + 4]
mov eax, dword [eax]
sub ecx, esi
push ecx
sub eax, ebx
push eax
push edi
call dword [sym.imp.USER32.dll_ScrollDC]
push edi
push dword [0x43b52c]
call dword [sym.imp.USER32.dll_ReleaseDC]
mov eax, dword [0x436038]
mov dword [eax], ebx
mov eax, dword [0x436038]
mov dword [eax + 4], esi
lea eax, [ebp - 0x30]
jmp 0x41d335
mov esi, dword [ebp - 4]
mov edi, dword [ebp - 8]
lea ecx, [ebp - 0x20]
push ecx
mov ecx, dword [eax + 4]
mov eax, dword [eax]
push ebx
sub ecx, esi
push ecx
sub eax, edi
push eax
push dword [0x43b52c]
call dword [sym.imp.USER32.dll_ScrollWindow]
mov eax, dword [0x436038]
mov dword [eax], edi
mov eax, dword [0x436038]
mov dword [eax + 4], esi
jmp 0x41d344
sub ecx, ebx
je 0x41d309
dec ecx
je 0x41d269
dec ecx
jne 0x41d344
cmp dword [0x436088], ebx
je 0x41d1bf
push dword [0x43b52c]
call dword [sym.imp.USER32.dll_HideCaret]
push dword [0x43b52c]
call dword [sym.imp.USER32.dll_GetDC]
mov esi, dword [ebp - 4]
mov edi, dword [ebp - 8]
mov dword [ebp - 0x10], eax
lea eax, [ebp - 0x30]
push eax
push ebx
lea eax, [ebp - 0x20]
push eax
push eax
mov eax, dword [0x436038]
mov ecx, dword [eax + 4]
mov eax, dword [eax]
sub ecx, esi
imul ecx, dword [0x436024]
sub eax, edi
imul eax, dword [0x43601c]
push ecx
push eax
push dword [ebp - 0x10]
call dword [sym.imp.USER32.dll_ScrollDC]
push dword [ebp - 0x10]
push dword [0x43b52c]
call dword [sym.imp.USER32.dll_ReleaseDC]
mov eax, dword [0x436038]
mov dword [eax], edi
mov eax, dword [0x436038]
mov dword [eax + 4], esi
mov esi, dword [sym.imp.USER32.dll_InvalidateRect]
push 1
lea eax, [ebp - 0x30]
push eax
push dword [0x43b52c]
call esi
push dword [0x43b52c]
mov edi, dword [sym.imp.USER32.dll_UpdateWindow]
call edi
mov eax, dword [ebp - 0x1c]
dec eax
mov dword [ebp - 0x14], eax
push ebx
lea eax, [ebp - 0x20]
push eax
push dword [0x43b52c]
mov dword [ebp - 0x1c], ebx
call esi
push dword [0x43b52c]
call edi
jmp 0x41d2f3
cmp dword [0x436088], ebx
je 0x41d282
push dword [0x43b52c]
call dword [sym.imp.USER32.dll_HideCaret]
mov eax, dword [0x436038]
mov esi, dword [ebp - 4]
mov edi, dword [ebp - 8]
lea ecx, [ebp - 0x20]
push ecx
mov ecx, dword [eax + 4]
mov eax, dword [eax]
sub ecx, esi
imul ecx, dword [0x436024]
sub eax, edi
imul eax, dword [0x43601c]
push ebx
push ecx
push eax
push dword [0x43b52c]
call dword [sym.imp.USER32.dll_ScrollWindow]
mov eax, dword [0x436038]
mov dword [eax], edi
mov eax, dword [0x436038]
mov dword [eax + 4], esi
push dword [0x43b52c]
mov esi, dword [sym.imp.USER32.dll_UpdateWindow]
call esi
mov eax, dword [ebp - 0x1c]
dec eax
mov dword [ebp - 0x14], eax
push 1
lea eax, [ebp - 0x20]
push eax
push dword [0x43b52c]
mov dword [ebp - 0x1c], ebx
call dword [sym.imp.USER32.dll_InvalidateRect]
push dword [0x43b52c]
call esi
cmp dword [0x436088], ebx
je 0x41d344
push dword [0x43b52c]
call dword [sym.imp.USER32.dll_ShowCaret]
jmp 0x41d344
mov dword [ebp - 0x1c], ebx
mov ecx, dword [ebp - 8]
mov dword [eax], ecx
mov eax, dword [0x436038]
mov ecx, dword [ebp - 4]
mov dword [eax + 4], ecx
push ebx
lea eax, [ebp - 0x20]
jmp 0x41d337
mov ecx, dword [ebp - 8]
mov dword [eax], ecx
mov eax, dword [0x436038]
mov ecx, dword [ebp - 4]
mov dword [eax + 4], ecx
lea eax, [ebp - 0x20]
push 1
push eax
push dword [0x43b52c]
call dword [sym.imp.USER32.dll_InvalidateRect]
call fcn.0041864a
mov esi, dword [ebp + 8]
mov ebx, dword [0x43b23c]
dec ebx
imul ebx, dword [esi + 4]
jmp 0x41d792
mov edi, dword [0x43b23c]
mov eax, dword [0x436038]
mov ecx, dword [eax + 4]
dec edi
imul edi, dword [esi + 4]
add edi, dword [eax]
test byte [0x43b8ac], 1
mov dword [ebp - 8], edi
mov dword [ebp + 8], ecx
je 0x41d3c6
mov esi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
push 0x13
call esi
jmp 0x41d3b9
mov ecx, dword [ebp + 8]
mov eax, dword [0x436038]
add ecx, 0x3e8
cmp ecx, dword [eax + 0x1c]
jl 0x41d3c6
push 0x3e8
push 1
call fcn.004123ad
push 0x13
call esi
mov ecx, 0x8001
test cx, ax
jne 0x41d3c1
cmp dword [0x43ca44], ebx
jne 0x41d38c
mov eax, dword [0x436038]
mov ecx, dword [0x43b560]
sub ecx, dword [0x43b23c]
cmp ecx, edi
jg 0x41d3db
mov edi, ecx
mov dword [ebp - 8], ecx
mov ecx, dword [0x43b214]
cmp ecx, edi
jle 0x41d3ea
mov edi, ecx
mov dword [ebp - 8], edi
mov ecx, dword [0x43cb34]
sub ecx, dword [0x43b21c]
cmp ecx, dword [ebp + 8]
jg 0x41d3fe
mov dword [ebp + 8], ecx
mov ecx, dword [0x43cb44]
cmp ecx, dword [ebp + 8]
jle 0x41d40c
mov dword [ebp + 8], ecx
cmp edi, dword [eax]
jmp 0x41ccdb
sub ecx, ebx
jne 0x41cdc9
jmp 0x41cf35
mov eax, dword [0x43b23c]
dec eax
imul eax, dword [esi + 4]
cdq
push 0xa
pop ecx
idiv ecx
mov edi, eax
mov eax, dword [0x436038]
add edi, dword [eax]
test byte [0x43b8ac], 1
mov ecx, dword [eax + 4]
mov dword [ebp - 8], edi
mov dword [ebp - 4], ecx
je 0x41d493
push 0x13
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
jmp 0x41d486
mov ecx, dword [ebp - 4]
mov eax, dword [0x436038]
add ecx, 0x3e8
cmp ecx, dword [eax + 0x1c]
jl 0x41d493
push 0x3e8
push 1
call fcn.004123ad
push 0x13
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, 0x8001
test cx, ax
jne 0x41d48e
cmp dword [0x43ca44], ebx
jne 0x41d455
mov eax, dword [0x436038]
mov ecx, dword [0x43b560]
sub ecx, dword [0x43b23c]
cmp ecx, edi
jg 0x41d4a8
mov edi, ecx
mov dword [ebp - 8], ecx
mov ecx, dword [0x43b214]
cmp ecx, edi
jle 0x41d4b7
mov edi, ecx
mov dword [ebp - 8], edi
mov ecx, dword [0x43cb34]
sub ecx, dword [0x43b21c]
cmp ecx, dword [ebp - 4]
jg 0x41d4cb
mov dword [ebp - 4], ecx
mov ecx, dword [0x43cb44]
cmp ecx, dword [ebp - 4]
jle 0x41d4d9
mov dword [ebp - 4], ecx
cmp edi, dword [eax]
jne 0x41d4e9
mov ecx, dword [ebp - 4]
cmp ecx, dword [eax + 4]
je case.0x41c88f.20
mov ecx, dword [0x43b8ac]
mov esi, 0x43cb50
lea edi, [ebp - 0x20]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
cmp ecx, 8
je 0x41d756
cmp dword [0x43cab4], ebx
je 0x41d519
cmp dword [0x43cab8], 1
ja 0x41d756
test cl, 0x14
mov ecx, dword [0x4368a0]
je 0x41d5c9
sub ecx, ebx
je 0x41d740
dec ecx
je 0x41d593
dec ecx
jne 0x41d778
push dword [0x43b52c]
call dword [sym.imp.USER32.dll_GetDC]
mov esi, dword [ebp - 4]
mov edi, eax
lea eax, [ebp - 0x30]
push eax
push ebx
mov ebx, dword [ebp - 8]
lea eax, [ebp - 0x20]
push eax
push eax
mov eax, dword [0x436038]
mov ecx, dword [eax + 4]
mov eax, dword [eax]
sub ecx, esi
push ecx
sub eax, ebx
push eax
push edi
call dword [sym.imp.USER32.dll_ScrollDC]
push edi
push dword [0x43b52c]
call dword [sym.imp.USER32.dll_ReleaseDC]
mov eax, dword [0x436038]
mov dword [eax], ebx
mov eax, dword [0x436038]
mov dword [eax + 4], esi
lea eax, [ebp - 0x30]
jmp 0x41d769
mov esi, dword [ebp - 4]
mov edi, dword [ebp - 8]
lea ecx, [ebp - 0x20]
push ecx
mov ecx, dword [eax + 4]
mov eax, dword [eax]
push ebx
sub ecx, esi
push ecx
sub eax, edi
push eax
push dword [0x43b52c]
call dword [sym.imp.USER32.dll_ScrollWindow]
mov eax, dword [0x436038]
mov dword [eax], edi
mov eax, dword [0x436038]
mov dword [eax + 4], esi
jmp 0x41d778
sub ecx, ebx
je 0x41d73d
dec ecx
je 0x41d69d
dec ecx
jne 0x41d778
cmp dword [0x436088], ebx
je 0x41d5f3
push dword [0x43b52c]
call dword [sym.imp.USER32.dll_HideCaret]
push dword [0x43b52c]
call dword [sym.imp.USER32.dll_GetDC]
mov esi, dword [ebp - 4]
mov edi, dword [ebp - 8]
mov dword [ebp - 0x10], eax
lea eax, [ebp - 0x30]
push eax
push ebx
lea eax, [ebp - 0x20]
push eax
push eax
mov eax, dword [0x436038]
mov ecx, dword [eax + 4]
mov eax, dword [eax]
sub ecx, esi
imul ecx, dword [0x436024]
sub eax, edi
imul eax, dword [0x43601c]
push ecx
push eax
push dword [ebp - 0x10]
call dword [sym.imp.USER32.dll_ScrollDC]
push dword [ebp - 0x10]
push dword [0x43b52c]
call dword [sym.imp.USER32.dll_ReleaseDC]
mov eax, dword [0x436038]
mov dword [eax], edi
mov eax, dword [0x436038]
mov dword [eax + 4], esi
mov esi, dword [sym.imp.USER32.dll_InvalidateRect]
push 1
lea eax, [ebp - 0x30]
push eax
push dword [0x43b52c]
call esi
push dword [0x43b52c]
mov edi, dword [sym.imp.USER32.dll_UpdateWindow]
call edi
mov eax, dword [ebp - 0x1c]
dec eax
mov dword [ebp - 0x14], eax
push ebx
lea eax, [ebp - 0x20]
push eax
push dword [0x43b52c]
mov dword [ebp - 0x1c], ebx
call esi
push dword [0x43b52c]
call edi
jmp 0x41d727
cmp dword [0x436088], ebx
je 0x41d6b6
push dword [0x43b52c]
call dword [sym.imp.USER32.dll_HideCaret]
mov eax, dword [0x436038]
mov esi, dword [ebp - 4]
mov edi, dword [ebp - 8]
lea ecx, [ebp - 0x20]
push ecx
mov ecx, dword [eax + 4]
mov eax, dword [eax]
sub ecx, esi
imul ecx, dword [0x436024]
sub eax, edi
imul eax, dword [0x43601c]
push ebx
push ecx
push eax
push dword [0x43b52c]
call dword [sym.imp.USER32.dll_ScrollWindow]
mov eax, dword [0x436038]
mov dword [eax], edi
mov eax, dword [0x436038]
mov dword [eax + 4], esi
push dword [0x43b52c]
mov esi, dword [sym.imp.USER32.dll_UpdateWindow]
call esi
mov eax, dword [ebp - 0x1c]
dec eax
mov dword [ebp - 0x14], eax
push 1
lea eax, [ebp - 0x20]
push eax
push dword [0x43b52c]
mov dword [ebp - 0x1c], ebx
call dword [sym.imp.USER32.dll_InvalidateRect]
push dword [0x43b52c]
call esi
cmp dword [0x436088], ebx
je 0x41d778
push dword [0x43b52c]
call dword [sym.imp.USER32.dll_ShowCaret]
jmp 0x41d778
mov dword [ebp - 0x1c], ebx
mov ecx, dword [ebp - 8]
mov dword [eax], ecx
mov eax, dword [0x436038]
mov ecx, dword [ebp - 4]
mov dword [eax + 4], ecx
push ebx
lea eax, [ebp - 0x20]
jmp 0x41d76b
mov ecx, dword [ebp - 8]
mov dword [eax], ecx
mov eax, dword [0x436038]
mov ecx, dword [ebp - 4]
mov dword [eax + 4], ecx
lea eax, [ebp - 0x20]
push 1
push eax
push dword [0x43b52c]
call dword [sym.imp.USER32.dll_InvalidateRect]
call fcn.0041864a
mov esi, dword [ebp + 8]
mov eax, dword [0x43b23c]
dec eax
imul eax, dword [esi + 4]
push 0xa
cdq
pop ecx
idiv ecx
mov ebx, eax
push dword [esi + 8]
push dword [ebp - 0xc]
push ebx
call fcn.004018b1
jmp 0x41d83b
mov eax, dword [0x43b23c]
dec eax
imul eax, dword [esi + 4]
cdq
push 0xa
pop ecx
idiv ecx
mov esi, eax
mov eax, dword [0x436038]
add esi, dword [eax]
test byte [0x43b8ac], 1
mov ecx, dword [eax + 4]
mov dword [ebp - 8], esi
mov dword [ebp + 8], ecx
je 0x41cc93
mov edi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
push 0x13
call edi
jmp 0x41d813
mov ecx, dword [ebp + 8]
mov eax, dword [0x436038]
add ecx, 0x3e8
cmp ecx, dword [eax + 0x1c]
jl 0x41cc93
push 0x3e8
push 1
call fcn.004123ad
push 0x13
call edi
mov ecx, 0x8001
test cx, ax
jne 0x41cc8e
cmp dword [0x43ca44], ebx
jne 0x41d7de
jmp 0x41cc8e
push str.cursor_param_error
push 1
push 0x42d6fc
push dword [0x43b52c]
call dword [sym.imp.PPLIB32W.DLL_XMessage]
add esp, 0x10
pop edi
pop esi
pop ebx
leave
ret 4