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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x7c
mov eax, dword [0x1017f064]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [0x10182dac]
cmp eax, 3
je 0x1004441b
cmp eax, 2
je 0x1004441b
cmp eax, 4
je 0x1004441b
cmp eax, 5
je 0x1004441b
push esi
lea ecx, [ebp - 0x6c]
mov dword [ebp - 0x70], 0
mov dword [ebp - 0x6c], 0
call fcn.10029060
push dword [ebp - 0x6c]
xor cl, cl
call fcn.10028fb0
add esp, 4
call fcn.10025be0
xor dl, dl
mov ecx, eax
call fcn.10025db0
mov esi, 0x10180ac0
mov eax, dword [0x101815a8]
cmp eax, dword [esi]
jne 0x10043f36
mov eax, dword [esi + 0xc]
test eax, eax
je 0x10043f36
cmp dword [0x10182db4], eax
jne 0x10043f36
push dword [esi - 4]
lea eax, [ebp - 0x60]
push str.Found_hotkey___s_._What_do
push 0x5a
push eax
call fcn.10001270
push str.Delete
push str.Change
mov edx, str.you_want_to_do_
lea ecx, [ebp - 0x60]
call fcn.1002f550
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 0x100440f8
add esi, 0x20
cmp esi, 0x101810c0
jl 0x10043ec0
push ebx
xor al, al
mov byte [ebp - 0x61], al
push edi
mov ebx, dword [sym.imp.USER32.dll_GetKeyState]
push 0x1b
call ebx
test ax, ax
mov al, byte [0x10182a26]
jns 0x10043f68
test al, al
je 0x100443e6
cmp al, 1
jne 0x10043f7e
push 0x1b
call ebx
test ax, ax
js 0x10043f7e
mov word [0x10182a26], 0x100
mov al, byte [0x10182db1]
test al, al
jne 0x1004400d
movzx eax, byte [0x10182d0c]
mov dl, byte [0x10182d08]
mov cl, byte [0x10182d04]
movss xmm3, dword [0x10176e0c]
movss xmm2, dword [0x10176e08]
movss xmm1, dword [0x10176e84]
movss xmm0, dword [0x10176ea0]
push 0xff
push eax
call fcn.10030f60
mov al, byte [0x10182db1]
add esp, 8
test al, al
jne 0x1004400d
movss xmm3, dword [0x10176dfc]
xor dl, dl
movss xmm2, dword [0x10176e00]
xor cl, cl
movss xmm1, dword [0x10176e80]
movss xmm0, dword [0x10176ea0]
push 0xff
push 0
call fcn.10030f60
mov al, byte [0x10182db1]
add esp, 8
mov ecx, dword [0x10182d4c]
mov ebx, dword [0x10182d48]
mov esi, dword [0x10182d50]
mov edi, dword [0x10182d54]
mov dword [ebp - 0x68], ecx
test al, al
jne 0x10044093
xor ecx, ecx
call fcn.10030e20
sub esp, 0xc
call fcn.10030ca0
call fcn.10030d60
mov dl, byte [ebp - 0x68]
mov cl, bl
push edi
push esi
call fcn.10030bd0
movss xmm1, dword [0x10176f20]
add esp, 0x14
movss xmm0, dword [0x10176e78]
call fcn.10030a90
xor cl, cl
call fcn.10030b30
mov cl, 1
call fcn.10030ec0
movss xmm1, dword [0x10176e50]
mov edx, str.Set_hotkey
movss xmm0, dword [0x10176e6c]
call fcn.100309e0
xor cl, cl
call fcn.10030ec0
xor edi, edi
mov eax, edi
shl eax, 5
mov dword [ebp - 0x68], eax
mov ebx, dword [eax + 0x10180ab8]
push ebx
lea esi, [ebx + ebx]
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jns 0x100440bb
cmp byte [esi + 0x101829f0], 0
je 0x10044132
cmp byte [esi + 0x101829f0], 1
jne 0x100440d9
push ebx
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
js 0x100440d9
mov word [esi + 0x101829f0], 0x100
mov al, byte [ebp - 0x61]
mov ebx, dword [ebp - 0x70]
test al, al
jne 0x100441e1
inc edi
mov dword [ebp - 0x70], ebx
mov byte [ebp - 0x61], al
cmp edi, 0x30
jl 0x10044095
jmp 0x100443cd
push ecx
push 0x1b58
mov edx, str.Hotkey_deleted
call fcn.10029500
push dword [ebp - 0x6c]
mov cl, 1
call fcn.10028fb0
add esp, 0xc
call fcn.10025be0
mov dl, 1
mov ecx, eax
call fcn.10025db0
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1004955b
mov esp, ebp
pop ebp
ret
mov ecx, dword [0x10182cf0]
mov word [esi + 0x101829f0], 1
call fcn.10029790
mov esi, dword [ebp - 0x68]
cmp dword [esi + 0x10180ac0], 0
je 0x1004418a
push dword [esi + 0x10180abc]
lea eax, [ebp - 0x60]
push str.Hotkey___s__is_already_in_use.
push 0x5a
push eax
call fcn.10001270
push 0x10077054
push 0x10077058
mov edx, str.Overwrite_this_hotkey_
lea ecx, [ebp - 0x60]
call fcn.1002f550
add esp, 0x18
test al, al
je 0x100443ef
mov eax, dword [0x101815a8]
mov dword [esi + 0x10180ac0], eax
mov eax, dword [0x101815a4]
mov dword [esi + 0x10180ac4], eax
mov eax, dword [0x101815b4]
mov dword [esi + 0x10180ac8], eax
mov eax, dword [0x10182db4]
mov dword [esi + 0x10180acc], eax
mov eax, dword [0x10182dc0]
mov dword [esi + 0x10180ad0], eax
mov eax, dword [0x10182da4]
mov dword [esi + 0x10180ad4], eax
mov byte [ebp - 0x61], 1
call dword [sym.imp.KERNEL32.dll_GetTickCount]
lea ebx, [eax + 0xbb8]
mov dword [ebp - 0x70], ebx
jmp 0x100441e4
mov esi, dword [ebp - 0x68]
call dword [sym.imp.KERNEL32.dll_GetTickCount]
cmp eax, ebx
ja 0x100443cd
mov al, byte [0x10182db1]
test al, al
jne 0x10044281
movzx eax, byte [0x10182d0c]
mov dl, byte [0x10182d08]
mov cl, byte [0x10182d04]
movss xmm3, dword [0x10176e0c]
movss xmm2, dword [0x10176e08]
movss xmm1, dword [0x10176e84]
movss xmm0, dword [0x10176ea0]
push 0xff
push eax
call fcn.10030f60
mov al, byte [0x10182db1]
add esp, 8
test al, al
jne 0x10044281
movss xmm3, dword [0x10176dfc]
xor dl, dl
movss xmm2, dword [0x10176e00]
xor cl, cl
movss xmm1, dword [0x10176e80]
movss xmm0, dword [0x10176ea0]
push 0xff
push 0
call fcn.10030f60
mov al, byte [0x10182db1]
add esp, 8
mov ecx, dword [0x10182d48]
mov dword [ebp - 0x68], ecx
mov ecx, dword [0x10182d4c]
mov dword [ebp - 0x7c], ecx
mov ecx, dword [0x10182d50]
mov dword [ebp - 0x78], ecx
mov ecx, dword [0x10182d54]
mov dword [ebp - 0x74], ecx
test al, al
jne 0x1004433e
xor ecx, ecx
call fcn.10030e20
sub esp, 0xc
call fcn.10030ca0
call fcn.10030d60
push dword [ebp - 0x74]
mov dl, byte [ebp - 0x7c]
push dword [ebp - 0x78]
mov cl, byte [ebp - 0x68]
call fcn.10030bd0
movss xmm1, dword [0x10176f20]
add esp, 0x14
movss xmm0, dword [0x10176e78]
call fcn.10030a90
xor cl, cl
call fcn.10030b30
mov cl, 1
call fcn.10030ec0
movss xmm1, dword [0x10176e50]
mov edx, str.Hotkey_set
movss xmm0, dword [0x10176e6c]
call fcn.100309e0
xor cl, cl
call fcn.10030ec0
mov eax, dword [0x10182d54]
mov dword [ebp - 0x74], eax
mov eax, dword [0x10182d50]
mov dword [ebp - 0x78], eax
mov eax, dword [0x10182d4c]
mov dword [ebp - 0x7c], eax
mov eax, dword [0x10182d48]
mov dword [ebp - 0x68], eax
mov al, byte [0x10182db1]
mov edi, dword [esi + 0x10180abc]
test al, al
jne 0x100443b1
xor ecx, ecx
call fcn.10030e20
sub esp, 0xc
call fcn.10030ca0
call fcn.10030d60
push dword [ebp - 0x74]
mov dl, byte [ebp - 0x7c]
push dword [ebp - 0x78]
mov cl, byte [ebp - 0x68]
call fcn.10030bd0
movss xmm1, dword [0x10176f20]
add esp, 0x14
movss xmm0, dword [0x10176e78]
call fcn.10030a90
xor cl, cl
call fcn.10030b30
mov cl, 1
call fcn.10030ec0
movss xmm1, dword [0x10176e88]
mov edx, edi
movss xmm0, dword [0x10176e94]
call fcn.100309e0
xor cl, cl
call fcn.10030ec0
mov ecx, dword [0x10182d98]
push 0
call dword [sym.imp.ScriptHook.dll_protected:_void___thiscall_ScriptThread::Wait_unsigned_int_]
call dword [sym.imp.KERNEL32.dll_GetTickCount]
cmp eax, ebx
jbe 0x100441f2
mov ecx, dword [0x10182d98]
push 0
call dword [sym.imp.ScriptHook.dll_protected:_void___thiscall_ScriptThread::Wait_unsigned_int_]
cmp byte [ebp - 0x61], 0
jne 0x100443ef
jmp 0x10043f4c
mov word [0x10182a26], 1
push dword [ebp - 0x6c]
mov cl, 1
call fcn.10028fb0
add esp, 4
call fcn.10025be0
mov dl, 1
mov ecx, eax
call fcn.10025db0
pop edi
pop ebx
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1004955b
mov esp, ebp
pop ebp
ret
push ecx
push 0x1b58
mov edx, str.Cant_set_a_hotkey_for_this_option_type
call fcn.10029500
mov ecx, dword [ebp - 4]
add esp, 8
xor ecx, ebp
call fcn.1004955b
mov esp, ebp
pop ebp
ret