Function at 0x5ca424
Capabilities:
Check for unmoving mouse cursor
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffff68
push ebx
push esi
push edi
mov dword [ebp - 8], eax
mov eax, dword [ebp - 8]
mov dword [eax + 0x5c], edx
mov eax, dword [ebp - 8]
mov dword [eax + 0x60], ecx
mov eax, dword [ebp - 8]
mov byte [eax + 0x58], 1
mov eax, dword [ebp - 8]
cmp dword [eax + 0x60], 0
je 0x5ca486
lea eax, [ebp - 0x31]
push eax
call sub.USER32.DLL_GetCursorPos
lea eax, [ebp - 0x31]
push eax
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x60]
call fcn.005d1acc
call fcn.00476d64
push eax
call sub.USER32.DLL_ScreenToClient
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x60]
add eax, 0x1c
mov edx, dword [eax]
sub dword [ebp - 0x31], edx
mov eax, dword [eax + 4]
sub dword [ebp - 0x2d], eax
xor eax, eax
mov dword [ebp - 0x3c], eax
xor eax, eax
mov dword [ebp - 4], eax
mov byte [ebp - 9], 0
mov byte [ebp - 0xa], 0
mov byte [ebp - 0xc], 0
mov byte [ebp - 0x19], 0
mov byte [ebp - 0x1a], 0
mov byte [ebp - 0x1b], 0
push 0x11
call sub.USER32.DLL_GetAsyncKeyState
test ax, ax
setl bl
mov byte [ebp - 0x1c], 0
mov byte [ebp - 0xb], 0
mov eax, dword [0x73e8cc]
mov eax, dword [eax]
mov ax, word [eax + 0x44]
mov word [ebp - 0xe], ax
mov eax, dword [ebp - 8]
call fcn.005cb1a4
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x14]
push eax
call sub.USER32.DLL_SetCapture
xor ecx, ecx
push ebp
push 0x5caf90
push dword fs:[ecx]
mov dword fs:[ecx], esp
jmp 0x5caa2a
push 0
push 0
push 0
lea eax, [ebp - 0x78]
push eax
call sub.USER32.DLL_GetMessageA
sub eax, 0xffffffff
je 0x5caa38
dec eax
je 0x5ca510
jmp 0x5ca51e
mov eax, dword [ebp - 0x70]
push eax
call sub.USER32.DLL_PostQuitMessage
jmp 0x5caa38
mov esi, dword [ebp - 0x74]
cmp esi, 0x100
je 0x5ca531
cmp esi, 0x101
jne 0x5ca556
cmp dword [ebp - 0x70], 0x11
jne 0x5ca556
cmp esi, 0x100
sete al
cmp bl, al
setne byte [ebp - 0x1c]
cmp esi, 0x100
sete bl
mov dword [ebp - 0x74], 0x200
mov eax, dword [ebp - 0x74]
add eax, 0xffffff00
sub eax, 2
jb 0x5ca578
sub eax, 0xfe
je 0x5ca587
sub eax, 2
je 0x5caa12
jmp 0x5caa18
cmp dword [ebp - 0x70], 0x1b
je 0x5caa38
jmp 0x5caa2a
mov byte [ebp - 0x19], 1
lea eax, [ebp - 0x29]
push eax
call sub.USER32.DLL_GetCursorPos
xor eax, eax
mov dword [ebp - 0x3c], eax
lea eax, [ebp - 0x29]
call fcn.005bdfec
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x18]
call fcn.0046d270
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x38]
mov edx, dword [0x5b9950]
call fcn.00403b34
test al, al
je 0x5ca5d8
mov eax, dword [ebp - 0x38]
call fcn.005d7474
cmp eax, dword [ebp - 8]
je 0x5ca5d8
xor eax, eax
mov dword [ebp - 0x18], eax
xor eax, eax
mov dword [ebp - 0x38], eax
call fcn.005afb8c
test eax, eax
je 0x5ca6c8
mov eax, dword [ebp - 8]
cmp dword [eax + 0x60], 0
jne 0x5ca6c8
mov eax, dword [ebp - 8]
cmp byte [eax + 0x4d], 0
je 0x5ca6c8
call fcn.005afb8c
mov eax, dword [eax + 0x334]
mov dword [ebp - 0x50], eax
call fcn.005afb8c
mov eax, dword [eax + 0x334]
cmp eax, dword [ebp - 0x38]
jne 0x5ca6b0
lea eax, [ebp - 0x29]
push eax
mov eax, dword [ebp - 0x50]
call fcn.00476d64
push eax
call sub.USER32.DLL_ScreenToClient
mov cl, 1
lea edx, [ebp - 0x29]
mov eax, dword [ebp - 0x50]
call fcn.00468e08
mov dword [ebp - 0x40], eax
cmp dword [ebp - 0x40], 0
jl 0x5ca677
mov eax, dword [ebp - 0x50]
mov eax, dword [eax + 0x218]
mov edx, dword [eax]
call dword [edx + 0x14]
dec eax
cmp eax, dword [ebp - 0x40]
jl 0x5ca677
mov edx, dword [ebp - 0x40]
mov eax, dword [ebp - 0x50]
mov ecx, dword [eax]
call dword [ecx + 0xd0]
mov word [ebp - 0x42], 0x411
mov byte [ebp - 0x1b], 1
jmp 0x5ca695
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x5c]
mov edx, dword [eax + 0x40]
mov eax, dword [ebp - 0x50]
mov ecx, dword [eax]
call dword [ecx + 0xd0]
mov word [ebp - 0x42], 0x413
mov byte [ebp - 0x1b], 0
movsx edx, word [ebp - 0x42]
mov eax, dword [0x73e8cc]
mov eax, dword [eax]
call fcn.0048e74c
push eax
call sub.USER32.DLL_SetCursor
jmp 0x5caa2a
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x5c]
mov edx, dword [eax + 0x40]
mov eax, dword [ebp - 0x50]
mov ecx, dword [eax]
call dword [ecx + 0xd0]
mov byte [ebp - 0x1b], 0
call fcn.005ad39c
test eax, eax
je 0x5ca6f8
call fcn.005ad39c
call fcn.00476d64
cmp eax, dword [ebp - 0x18]
jne 0x5ca6f8
push 0
call fcn.005ad39c
xor ecx, ecx
mov edx, 0xb000
call fcn.004715e4
jmp 0x5ca7c2
mov eax, dword [ebp - 0x38]
mov edx, dword [0x5b9950]
call fcn.00403b34
test al, al
je 0x5ca715
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0x3c], eax
jmp 0x5ca7c2
call fcn.005afb8c
test eax, eax
je 0x5ca735
lea eax, [ebp - 0x88]
push eax
call fcn.005afb8c
call fcn.00476d64
push eax
call sub.USER32.DLL_GetWindowRect
call fcn.005afb8c
test eax, eax
je 0x5ca754
push dword [ebp - 0x25]
push dword [ebp - 0x29]
lea eax, [ebp - 0x88]
push eax
call sub.USER32.DLL_PtInRect
test eax, eax
jne 0x5ca7c2
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x3c]
call fcn.00420cac
dec eax
test eax, eax
jl 0x5ca7c2
inc eax
mov dword [ebp - 0x54], eax
mov dword [ebp - 0x40], 0
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x3c]
mov edx, dword [ebp - 0x40]
call fcn.005d0ddc
call fcn.005cf5b0
test eax, eax
je 0x5ca7ba
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x3c]
mov edx, dword [ebp - 0x40]
call fcn.005d0ddc
call fcn.005cf5b0
call fcn.005d9850
test al, al
je 0x5ca7ba
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x3c]
mov edx, dword [ebp - 0x40]
call fcn.005d0ddc
call fcn.005cf5b0
mov dword [ebp - 0x3c], eax
jmp 0x5ca7c2
inc dword [ebp - 0x40]
dec dword [ebp - 0x54]
jne 0x5ca76f
cmp dword [ebp - 0x3c], 0
je 0x5ca7dc
mov eax, dword [ebp - 0x3c]
mov edx, dword [eax]
call dword [edx + 0xe0]
test al, al
jne 0x5ca7dc
xor eax, eax
mov dword [ebp - 0x3c], eax
cmp dword [ebp - 0x3c], 0
je 0x5ca812
lea eax, [ebp - 0x29]
push eax
mov eax, dword [ebp - 0x3c]
call fcn.00476d64
push eax
call sub.USER32.DLL_ScreenToClient
lea eax, [ebp - 0x1d]
push eax
lea eax, [ebp - 0x1f]
push eax
lea ecx, [ebp - 0x1e]
lea edx, [ebp - 0x29]
mov eax, dword [ebp - 0x3c]
mov esi, dword [eax]
call dword [esi + 0x124]
mov dword [ebp - 0x48], eax
jmp 0x5ca817
xor eax, eax
mov dword [ebp - 0x48], eax
cmp dword [ebp - 0x3c], 0
je 0x5ca835
cmp dword [ebp - 0x48], 0
jne 0x5ca83d
mov eax, dword [ebp - 0x3c]
mov eax, dword [eax + 0x238]
call fcn.005d2b2c
test eax, eax
je 0x5ca83d
mov word [ebp - 0x42], 0x413
jmp 0x5ca860
push 0x11
call sub.USER32.DLL_GetAsyncKeyState
test ax, ax
jl 0x5ca852
mov eax, dword [ebp - 8]
cmp dword [eax + 0x60], 0
jne 0x5ca85a
mov word [ebp - 0x42], 0x412
jmp 0x5ca860
mov word [ebp - 0x42], 0x411
movsx edx, word [ebp - 0x42]
mov eax, dword [0x73e8cc]
mov eax, dword [eax]
call fcn.0048e74c
push eax
call sub.USER32.DLL_SetCursor
cmp dword [ebp - 0x3c], 0
jne 0x5ca893
cmp byte [ebp - 0xb], 0
je 0x5ca889
push ebp
call fcn.005ca3c8
pop ecx
xor eax, eax
mov dword [ebp - 4], eax
jmp 0x5caa2a
mov eax, dword [ebp - 0x3c]
mov edx, dword [0x5b9f28]
call fcn.00403b34
test al, al
je 0x5ca8b5
mov eax, dword [ebp - 0x3c]
cmp dword [eax + 0x2b8], 0
jne 0x5ca9bd
mov eax, dword [ebp - 0x48]
cmp eax, dword [ebp - 4]
jne 0x5ca8df
mov al, byte [ebp - 0x1e]
cmp al, byte [ebp - 9]
jne 0x5ca8df
mov al, byte [ebp - 0x1d]
cmp al, byte [ebp - 0xa]
jne 0x5ca8df
mov al, byte [ebp - 0x1f]
cmp al, byte [ebp - 0xc]
jne 0x5ca8df
cmp byte [ebp - 0x1c], 0
je 0x5ca9bd
cmp byte [ebp - 0x1c], 0
jne 0x5ca8f0
push ebp
call fcn.005ca29c
pop ecx
test al, al
jne 0x5ca914
cmp byte [ebp - 0x1c], 0
je 0x5ca91b
test bl, bl
je 0x5ca900
cmp byte [ebp - 0xb], 0
je 0x5ca914
mov eax, ebx
xor al, 1
and al, byte [ebp - 0xb]
je 0x5ca91b
push ebp
call fcn.005ca29c
pop ecx
test al, al
jne 0x5ca91b
push ebp
call fcn.005ca3c8
pop ecx
mov eax, dword [ebp - 0x48]
cmp eax, dword [ebp - 4]
je 0x5ca989
cmp dword [ebp - 0x48], 0
je 0x5ca983
mov eax, dword [ebp - 0x48]
mov edx, dword [0x5bc550]
call fcn.00403b34
test al, al
jne 0x5ca956
mov eax, dword [ebp - 0x48]
mov eax, dword [eax + 0x20]
mov eax, dword [eax + 0x25c]
mov edx, dword [0x5bc550]
call fcn.00403b34
test al, al
je 0x5ca969
mov eax, dword [ebp - 0x48]
mov eax, dword [eax + 0x20]
mov edx, dword [ebp - 0x48]
mov ecx, dword [eax]
call dword [ecx + 0x150]
jmp 0x5ca983
mov edx, dword [ebp - 0x48]
mov eax, dword [ebp - 8]
call fcn.005c6c6c
mov eax, dword [ebp - 0x48]
mov eax, dword [eax + 0x20]
mov edx, dword [ebp - 0x48]
mov dword [eax + 0x25c], edx
mov eax, dword [ebp - 0x48]
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 0
je 0x5ca9b9
cmp byte [ebp - 0x1c], 0
jne 0x5ca9b9
mov al, byte [ebp - 0x1e]
mov byte [ebp - 9], al
mov al, byte [ebp - 0x1d]
mov byte [ebp - 0xa], al
mov al, byte [ebp - 0x1f]
mov byte [ebp - 0xc], al
push ebp
call fcn.005ca29c
pop ecx
test al, al
je 0x5ca9b9
push ebp
call fcn.005ca3c8
pop ecx
mov byte [ebp - 0x1c], 0
mov eax, dword [ebp - 0x3c]
mov edx, dword [0x5b9f28]
call fcn.00403b34
test al, al
je 0x5caa2a
mov dx, word [ebp - 0x25]
mov ax, word [ebp - 0x29]
call fcn.004082b8
push eax
push 0
push 0x200
mov eax, dword [ebp - 0x3c]
call fcn.00476d64
push eax
call sub.USER32.DLL_SendMessageA
mov eax, dword [ebp - 0x3c]
cmp dword [eax + 0x2b8], 0
jbe 0x5caa2a
cmp byte [ebp - 0xb], 0
je 0x5caa0b
push ebp
call fcn.005ca3c8
pop ecx
xor eax, eax
mov dword [ebp - 4], eax
jmp 0x5caa2a
mov byte [ebp - 0x1a], 1
jmp 0x5caa38
lea eax, [ebp - 0x78]
push eax
call sub.USER32.DLL_TranslateMessage
lea eax, [ebp - 0x78]
push eax
call sub.USER32.DLL_DispatchMessageA
call sub.USER32.DLL_GetCapture
cmp eax, dword [ebp - 0x14]
je 0x5ca4f3
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x5caf9a
cmp byte [ebp - 0xb], 0
je 0x5caa6c
mov eax, dword [ebp - 8]
cmp dword [eax + 0x11c], 0
je 0x5caa6c
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x11c]
cmp eax, dword [ebp - 4]
jne 0x5caa6c
push ebp
call fcn.005ca3c8
pop ecx
call sub.USER32.DLL_GetCapture
cmp eax, dword [ebp - 0x14]
jne 0x5caa7b
call sub.USER32.DLL_ReleaseCapture
movsx edx, word [ebp - 0xe]
mov eax, dword [0x73e8cc]
mov eax, dword [eax]
call fcn.0048e74c
push eax
call sub.USER32.DLL_SetCursor
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x64]
test eax, eax
je 0x5caaa9
push eax
call sub.USER32.DLL_DestroyWindow
mov eax, dword [ebp - 8]
xor edx, edx
mov dword [eax + 0x64], edx
mov eax, dword [ebp - 8]
mov byte [eax + 0x58], 0
mov al, byte [ebp - 0x1a]
and al, byte [ebp - 0x19]
je 0x5caf5a
cmp byte [ebp - 0x1b], 0
je 0x5cab8e
call fcn.005afb8c
test eax, eax
je 0x5caf5a
call fcn.005afb8c
mov eax, dword [eax + 0x334]
mov edx, dword [eax]
call dword [edx + 0xcc]
mov edx, dword [ebp - 8]
mov edx, dword [edx + 0x5c]
cmp eax, dword [edx + 0x40]
je 0x5caf5a
call fcn.005afb8c
mov esi, eax
mov dl, 1
mov eax, dword [0x41c778]
call fcn.0040396c
mov ebx, eax
mov eax, dword [esi + 0x334]
mov edx, dword [eax]
call dword [edx + 0xcc]
mov edx, eax
mov ecx, ebx
mov eax, dword [ebp - 8]
call fcn.005cbe60
mov edi, dword [ebx + 8]
test edi, edi
jle 0x5cab67
mov edx, edi
dec edx
mov eax, ebx
call fcn.0041f5d0
call fcn.005e389c
inc eax
mov dword [ebp - 0x40], eax
mov eax, dword [ebp - 8]
call fcn.005c61f0
dec eax
cmp eax, dword [ebp - 0x40]
jge 0x5cab4f
dec dword [ebp - 0x40]
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x5c]
call fcn.005e389c
mov edx, eax
mov ecx, dword [ebp - 0x40]
mov eax, dword [ebp - 8]
call fcn.005cbfc0
mov eax, ebx
call fcn.0040399c
mov eax, dword [esi + 0x334]
mov edx, dword [eax]
call dword [edx + 0xcc]
mov edx, eax
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x5c]
call fcn.005e3ab8
jmp 0x5caf5a
cmp dword [ebp - 0x3c], 0
jne 0x5cabf6
mov eax, dword [ebp - 8]
cmp dword [eax + 0x60], 0
je 0x5cabc4
push 0x11
call sub.USER32.DLL_GetAsyncKeyState
test ax, ax
jl 0x5cabc4
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x60]
call fcn.0040399c
mov eax, dword [ebp - 8]
xor edx, edx
mov dword [eax + 0x60], edx
mov eax, dword [ebp - 8]
call fcn.005ca044
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x11c]
test eax, eax
je 0x5caf5a
mov eax, dword [eax + 0x20]
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 8]
xor edx, edx
mov dword [eax + 0x11c], edx
mov eax, dword [ebp - 0x3c]
mov edx, dword [eax]
call dword [edx + 0x17c]
jmp 0x5caf5a
cmp dword [ebp - 0x3c], 0
je 0x5caf5a
cmp dword [ebp - 4], 0
je 0x5cad41
mov eax, dword [ebp - 8]
cmp dword [eax + 0x60], 0
je 0x5cad41
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x18]
mov edx, dword [ebp - 8]
cmp eax, dword [edx + 0x60]
je 0x5cac34
push ebp
call fcn.005ca29c
pop ecx
test al, al
jne 0x5cad41
push 0x11
call sub.USER32.DLL_GetAsyncKeyState
test ax, ax
jl 0x5cad41
mov al, byte [ebp - 9]
and al, byte [ebp - 0xa]
jne 0x5cad41
lea eax, [ebp - 0x29]
push eax
call sub.USER32.DLL_GetCursorPos
lea eax, [ebp - 0x29]
push eax
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x60]
call fcn.005d1acc
call fcn.00476d64
push eax
call sub.USER32.DLL_ScreenToClient
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x60]
add eax, 0x1c
mov dword [ebp - 0x58], eax
mov eax, dword [ebp - 0x58]
mov eax, dword [eax]
sub dword [ebp - 0x29], eax
mov eax, dword [ebp - 0x58]
mov eax, dword [eax + 4]
sub dword [ebp - 0x25], eax
mov eax, dword [ebp - 0x3c]
mov edx, dword [0x5b9f28]
call fcn.00403b34
test al, al
jne 0x5cacae
mov eax, dword [ebp - 0x3c]
call fcn.005be4d0
test al, al
je 0x5cacb9
mov eax, dword [ebp - 0x25]
sub eax, dword [ebp - 0x2d]
mov dword [ebp - 0x40], eax
jmp 0x5cacc2
mov eax, dword [ebp - 0x29]
sub eax, dword [ebp - 0x31]
mov dword [ebp - 0x40], eax
mov eax, dword [ebp - 0x40]
cdq
xor eax, edx
sub eax, edx
cmp eax, 4
jl 0x5caf5a
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x60]
mov dword [ebp - 0x5c], eax
mov eax, dword [ebp - 0x5c]
call fcn.005d1b50
cmp dword [ebp - 0x40], 0
setg dl
cmp al, dl
je 0x5cad26
mov eax, dword [ebp - 0x5c]
call fcn.005d1acc
mov edx, dword [ebp - 0x5c]
mov edx, dword [edx + 0x10]
mov dword [eax + 0x25c], edx
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0x10]
mov edx, dword [ebp - 8]
mov dword [edx + 0x11c], eax
cmp dword [ebp - 0x40], 0
setg dl
mov eax, dword [ebp - 0x5c]
call fcn.005d1c90
jmp 0x5caf5a
mov eax, dword [ebp - 0x5c]
call fcn.005d1acc
mov edx, dword [ebp - 0x5c]
mov edx, dword [edx + 0x10]
mov ecx, dword [eax]
call dword [ecx + 0x144]
jmp 0x5caf5a
cmp dword [ebp - 4], 0
jne 0x5cad85
push dword [ebp - 0x25]
push dword [ebp - 0x29]
lea edx, [ebp - 0x98]
mov eax, dword [ebp - 0x3c]
mov ecx, dword [eax]
call dword [ecx + 0x44]
lea eax, [ebp - 0x98]
push eax
call sub.USER32.DLL_PtInRect
test eax, eax
je 0x5caf44
mov eax, dword [ebp - 0x3c]
mov eax, dword [eax + 0x238]
call fcn.005d2b2c
test eax, eax
jne 0x5caf44
mov eax, dword [ebp - 0x3c]
mov eax, dword [eax + 0x238]
call fcn.005d33ac
mov ebx, eax
mov dl, 1
mov eax, ebx
call fcn.005d20f4
mov eax, dword [ebp - 0x3c]
mov eax, dword [eax + 0x238]
mov dword [ebp - 0x4c], eax
mov eax, dword [ebp - 8]
mov edx, dword [eax + 0x5c]
mov eax, ebx
call fcn.005d1cb0
mov eax, dword [ebp - 8]
cmp dword [eax + 0x60], 0
je 0x5cadd1
mov eax, dword [ebp - 8]
mov edx, dword [eax + 0x60]
mov eax, ebx
mov ecx, dword [eax]
call dword [ecx + 8]
mov byte [ebx + 0xc], 0
cmp dword [ebp - 4], 0
je 0x5cae6c
cmp byte [ebp - 9], 0
je 0x5cade7
cmp byte [ebp - 0xa], 0
je 0x5cae04
mov al, byte [ebp - 9]
xor al, 1
and al, byte [ebp - 0xa]
je 0x5cae00
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x18]
call fcn.005d1b50
test al, al
jne 0x5cae04
xor eax, eax
jmp 0x5cae06
mov al, 1
mov byte [ebp - 0x20], al
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x18]
call fcn.0042094c
mov edx, eax
cmp byte [ebp - 9], 0
jne 0x5cae22
cmp byte [ebp - 0xa], 0
je 0x5cae26
xor eax, eax
jmp 0x5cae28
mov al, 1
and eax, 0xff
add edx, eax
mov eax, ebx
mov ecx, dword [eax]
call dword [ecx + 0x14]
cmp byte [ebp - 0x20], 0
je 0x5cae6c
mov dl, 1
mov eax, ebx
call fcn.005d1c90
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x20]
mov byte [eax + 0x220], 1
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x18]
xor edx, edx
call fcn.005d1c90
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x20]
mov byte [eax + 0x220], 0
mov eax, ebx
call fcn.005d2714
mov eax, dword [ebx + 0x10]
mov edx, dword [ebp - 8]
mov dword [edx + 0x11c], eax
mov eax, dword [ebx + 0x10]
mov edx, dword [ebp - 0x3c]
mov dword [edx + 0x25c], eax
mov eax, dword [ebp - 8]
cmp dword [eax + 0x60], 0
je 0x5caec7
push 0x11
call sub.USER32.DLL_GetAsyncKeyState
test ax, ax
jl 0x5caec7
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x60]
call fcn.005d1bfc
cmp eax, dword [ebp - 0x4c]
setne byte [ebp - 0x21]
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x60]
call fcn.0040399c
mov eax, dword [ebp - 8]
xor edx, edx
mov dword [eax + 0x60], edx
jmp 0x5caecb
mov byte [ebp - 0x21], 1
cmp byte [ebp - 0x21], 0
je 0x5caee8
mov eax, dword [ebp - 0x4c]
cmp dword [eax + 0x28], 0
je 0x5caee8
mov eax, dword [ebp - 0x4c]
mov eax, dword [eax + 0x28]
mov edx, dword [eax]
call dword [edx + 0x17c]
mov eax, dword [ebp - 8]
call fcn.005ca044
call fcn.005bde28
test eax, eax
je 0x5caf5a
mov eax, dword [ebp - 0x4c]
mov eax, dword [eax + 0x28]
mov edx, dword [0x5b9c80]
call fcn.00403b34
test al, al
je 0x5caf5a
call fcn.005bde28
mov edx, dword [ebp - 0x4c]
cmp eax, dword [edx + 0x28]
je 0x5caf5a
call fcn.005bde28
mov edx, dword [eax]
call dword [edx + 0x178]
mov eax, dword [ebp - 0x4c]
cmp dword [eax + 0x28], 0
je 0x5caf5a
mov edx, dword [ebx + 0x10]
mov eax, dword [ebp - 0x4c]
mov eax, dword [eax + 0x28]
mov ecx, dword [eax]
call dword [ecx + 0x190]
jmp 0x5caf5a
mov eax, dword [ebp - 8]
cmp dword [eax + 0x11c], 0
je 0x5caf5a
xor edx, edx
mov eax, dword [ebp - 8]
call fcn.005c6c6c
mov eax, dword [ebp - 8]
xor edx, edx
mov dword [eax + 0x5c], edx
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x60]
test eax, eax
je 0x5caf8f
mov edx, dword [eax + 0x10]
test edx, edx
je 0x5caf87
mov eax, edx
mov edx, dword [ebp - 8]
xor ecx, ecx
mov dword [edx + 0x60], ecx
mov edx, dword [eax]
call dword [edx + 0xb8]
jmp 0x5caf8f
mov eax, dword [ebp - 8]
xor edx, edx
mov dword [eax + 0x60], edx
ret