Function at 0x100486e0
Capabilities:
Check for time delay via gettickcount
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x84
mov eax, dword [0x10187080]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [0x1018b220]
push ebx
push esi
push edi
cmp eax, 3
je 0x10048d0e
cmp eax, 2
je 0x10048d0e
cmp eax, 4
je 0x10048d0e
cmp eax, 5
je 0x10048d0e
lea ecx, [ebp - 0x7c]
mov dword [ebp - 0x78], 0
mov dword [ebp - 0x7c], 0
call fcn.1002b1c0
push dword [ebp - 0x7c]
xor cl, cl
call fcn.1002b110
add esp, 4
call fcn.10027530
xor dl, dl
mov ecx, eax
call fcn.10027700
mov esi, 0x10188ef8
mov eax, dword [0x101899b4]
cmp eax, dword [esi]
jne 0x100487cb
mov eax, dword [esi + 0xc]
test eax, eax
je 0x100487cb
cmp dword [0x1018b228], eax
jne 0x100487cb
push dword [esi - 4]
lea eax, [ebp - 0x68]
push str.Found_hotkey___s_._What_do
push 0x5a
push eax
call fcn.100012c0
push str.Delete
push str.Change
mov edx, str.you_want_to_do_
lea ecx, [ebp - 0x68]
call fcn.10032f80
mov dword [esi], 0
add esp, 0x18
mov dword [esi + 4], 0
mov dword [esi + 8], 0
mov dword [esi + 0x10], 0
mov dword [esi + 0x14], str.Invalid
mov dword [esi + 0xc], 0
test al, al
je 0x100489b6
add esi, 0x20
cmp esi, 0x101894f8
jl 0x10048755
xor al, al
mov byte [ebp - 0x69], al
mov ebx, dword [sym.imp.USER32.dll_GetKeyState]
push 0x1b
call ebx
test ax, ax
mov al, byte [0x1018ae9e]
jns 0x100487fb
test al, al
je 0x10048cd9
cmp al, 1
jne 0x10048811
push 0x1b
call ebx
test ax, ax
js 0x10048811
mov word [0x1018ae9e], 0x100
mov al, byte [0x1018b226]
test al, al
je 0x10048824
mov bl, byte [0x1018b217]
test bl, bl
je 0x1004886e
mov dl, byte [0x1018b194]
mov cl, byte [0x1018b190]
movss xmm3, dword [0x1017e328]
movss xmm2, dword [0x1017e324]
movss xmm1, dword [0x1017e3a0]
movss xmm0, dword [0x1017e3bc]
push 0xff
push dword [0x1018b198]
call fcn.10034cc0
mov al, byte [0x1018b226]
add esp, 8
mov bl, byte [0x1018b217]
test al, al
je 0x10048876
test bl, bl
je 0x100488b4
movss xmm3, dword [0x1017e318]
xor dl, dl
movss xmm2, dword [0x1017e31c]
xor cl, cl
movss xmm1, dword [0x1017e39c]
movss xmm0, dword [0x1017e3bc]
push 0xff
push 0
call fcn.10034cc0
mov al, byte [0x1018b226]
add esp, 8
mov bl, byte [0x1018b217]
mov ecx, dword [0x1018b1d0]
mov esi, dword [0x1018b1d8]
mov edi, dword [0x1018b1dc]
mov dword [ebp - 0x80], ecx
mov ecx, dword [0x1018b1d4]
mov dword [ebp - 0x74], ecx
test al, al
je 0x100488da
test bl, bl
je 0x10048945
xor ecx, ecx
call fcn.10034980
sub esp, 0xc
call fcn.10034800
call fcn.100348c0
mov dl, byte [ebp - 0x74]
add esp, 0xc
mov cl, byte [ebp - 0x80]
push edi
push esi
call fcn.10034730
movss xmm1, dword [0x1017e438]
add esp, 8
movss xmm0, dword [0x1017e394]
call fcn.100345f0
xor cl, cl
call fcn.10034690
mov cl, 1
call fcn.10034a20
movss xmm1, dword [0x1017e36c]
mov edx, str.Set_hotkey
movss xmm0, dword [0x1017e388]
call fcn.10034540
xor cl, cl
call fcn.10034a20
xor eax, eax
mov dword [ebp - 0x70], eax
nop word [eax + eax]
mov edi, eax
shl edi, 5
mov ebx, dword [edi + 0x10188ef0]
push ebx
lea esi, [ebx + ebx]
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jns 0x10048973
cmp byte [esi + 0x1018ae68], 0
je 0x100489f2
cmp byte [esi + 0x1018ae68], 1
jne 0x10048991
push ebx
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
js 0x10048991
mov word [esi + 0x1018ae68], 0x100
mov cl, byte [ebp - 0x69]
mov ebx, dword [ebp - 0x78]
test cl, cl
jne 0x10048a9c
mov eax, dword [ebp - 0x70]
inc eax
mov dword [ebp - 0x78], ebx
mov dword [ebp - 0x70], eax
mov byte [ebp - 0x69], cl
cmp eax, 0x30
jl 0x10048950
jmp 0x10048cc0
push ecx
push 0x1b58
mov edx, str.Hotkey_deleted
call fcn.1002b660
push dword [ebp - 0x7c]
mov cl, 1
call fcn.1002b110
add esp, 0xc
call fcn.10027530
mov dl, 1
mov ecx, eax
call fcn.10027700
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1004ecf8
mov esp, ebp
pop ebp
ret
mov ecx, dword [0x1018b178]
mov word [esi + 0x1018ae68], 1
call fcn.1002ba70
cmp dword [edi + 0x10188ef8], 0
je 0x10048a47
push dword [edi + 0x10188ef4]
lea eax, [ebp - 0x68]
push str.Hotkey___s__is_already_in_use.
push 0x5a
push eax
call fcn.100012c0
push 0x1007d0e4
push 0x1007d0e8
mov edx, str.Overwrite_this_hotkey_
lea ecx, [ebp - 0x68]
call fcn.10032f80
add esp, 0x18
test al, al
je 0x10048ce2
mov eax, dword [0x101899b4]
mov dword [edi + 0x10188ef8], eax
mov eax, dword [0x101899b0]
mov dword [edi + 0x10188efc], eax
mov eax, dword [0x101899c0]
mov dword [edi + 0x10188f00], eax
mov eax, dword [0x1018b228]
mov dword [edi + 0x10188f04], eax
mov eax, dword [0x1018b238]
mov dword [edi + 0x10188f08], eax
mov eax, dword [0x1018b218]
mov dword [edi + 0x10188f0c], eax
mov byte [ebp - 0x69], 1
call dword [sym.imp.KERNEL32.dll_GetTickCount]
lea ebx, [eax + 0xbb8]
mov dword [ebp - 0x78], ebx
call dword [sym.imp.KERNEL32.dll_GetTickCount]
cmp eax, ebx
ja 0x10048cc0
mov esi, dword [ebp - 0x70]
shl esi, 5
mov bl, byte [0x1018b226]
test bl, bl
je 0x10048ac3
mov al, byte [0x1018b217]
test al, al
je 0x10048b0d
mov dl, byte [0x1018b194]
mov cl, byte [0x1018b190]
movss xmm3, dword [0x1017e328]
movss xmm2, dword [0x1017e324]
movss xmm1, dword [0x1017e3a0]
movss xmm0, dword [0x1017e3bc]
push 0xff
push dword [0x1018b198]
call fcn.10034cc0
mov bl, byte [0x1018b226]
add esp, 8
mov al, byte [0x1018b217]
test bl, bl
je 0x10048b15
test al, al
je 0x10048b53
movss xmm3, dword [0x1017e318]
xor dl, dl
movss xmm2, dword [0x1017e31c]
xor cl, cl
movss xmm1, dword [0x1017e39c]
movss xmm0, dword [0x1017e3bc]
push 0xff
push 0
call fcn.10034cc0
mov bl, byte [0x1018b226]
add esp, 8
mov al, byte [0x1018b217]
mov ecx, dword [0x1018b1d0]
mov dword [ebp - 0x74], ecx
mov ecx, dword [0x1018b1d4]
mov dword [ebp - 0x80], ecx
mov ecx, dword [0x1018b1d8]
mov dword [ebp - 0x84], ecx
mov ecx, dword [0x1018b1dc]
mov dword [ebp - 0x70], ecx
test bl, bl
je 0x10048b86
test al, al
je 0x10048c26
xor ecx, ecx
call fcn.10034980
sub esp, 0xc
call fcn.10034800
call fcn.100348c0
mov dl, byte [ebp - 0x80]
add esp, 0xc
mov cl, byte [ebp - 0x74]
push dword [ebp - 0x70]
push dword [ebp - 0x84]
call fcn.10034730
movss xmm1, dword [0x1017e438]
add esp, 8
movss xmm0, dword [0x1017e394]
call fcn.100345f0
xor cl, cl
call fcn.10034690
mov cl, 1
call fcn.10034a20
movss xmm1, dword [0x1017e36c]
mov edx, str.Hotkey_set
movss xmm0, dword [0x1017e388]
call fcn.10034540
xor cl, cl
call fcn.10034a20
mov eax, dword [0x1018b1dc]
mov bl, byte [0x1018b226]
mov dword [ebp - 0x70], eax
mov eax, dword [0x1018b1d8]
mov dword [ebp - 0x84], eax
mov eax, dword [0x1018b1d4]
mov dword [ebp - 0x80], eax
mov eax, dword [0x1018b1d0]
mov dword [ebp - 0x74], eax
mov al, byte [0x1018b217]
mov edi, dword [esi + 0x10188ef4]
test bl, bl
je 0x10048c34
test al, al
je 0x10048ca3
xor ecx, ecx
call fcn.10034980
sub esp, 0xc
call fcn.10034800
call fcn.100348c0
mov dl, byte [ebp - 0x80]
add esp, 0xc
mov cl, byte [ebp - 0x74]
push dword [ebp - 0x70]
push dword [ebp - 0x84]
call fcn.10034730
movss xmm1, dword [0x1017e438]
add esp, 8
movss xmm0, dword [0x1017e394]
call fcn.100345f0
xor cl, cl
call fcn.10034690
mov cl, 1
call fcn.10034a20
movss xmm1, dword [0x1017e3a4]
mov edx, edi
movss xmm0, dword [0x1017e3b0]
call fcn.10034540
xor cl, cl
call fcn.10034a20
mov ecx, dword [0x1018b210]
push 0
call dword [sym.imp.ScriptHook.dll_protected:_void___thiscall_ScriptThread::Wait_unsigned_int_]
call dword [sym.imp.KERNEL32.dll_GetTickCount]
cmp eax, dword [ebp - 0x78]
jbe 0x10048ab0
mov ecx, dword [0x1018b210]
push 0
call dword [sym.imp.ScriptHook.dll_protected:_void___thiscall_ScriptThread::Wait_unsigned_int_]
cmp byte [ebp - 0x69], 0
jne 0x10048ce2
jmp 0x100487df
mov word [0x1018ae9e], 1
push dword [ebp - 0x7c]
mov cl, 1
call fcn.1002b110
add esp, 4
call fcn.10027530
mov dl, 1
mov ecx, eax
call fcn.10027700
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1004ecf8
mov esp, ebp
pop ebp
ret
push ecx
push 0x1b58
mov edx, str.Cant_set_a_hotkey_for_this_option_type
call fcn.1002b660
mov ecx, dword [ebp - 4]
add esp, 8
xor ecx, ebp
pop edi
pop esi
pop ebx
call fcn.1004ecf8
mov esp, ebp
pop ebp
ret