Function at 0x406e10
Capabilities:
Log keystrokes via application hook

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x36cc
call fcn.004444f0
mov ecx, dword [0x45d800]
push ebx
push esi
xor esi, esi
xor al, al
cmp ecx, esi
push edi
mov byte [esp + 0xf], al
je 0x406e3b
mov al, 1
mov byte [esp + 0xf], al
cmp dword [0x45d804], esi
je 0x406e49
or al, 2
mov byte [esp + 0xf], al
mov byte [esp + 0xd], al
mov al, byte [ebp + 0x10]
test al, al
jne 0x406e5f
mov al, byte [ebp + 0x14]
test al, al
je 0x4075df
mov edx, dword [0x45f150]
cmp edx, esi
jne 0x407016
push 0x15c00
call fcn.004444d3
add esp, 4
cmp eax, esi
mov dword [0x45f150], eax
je 0x406fbe
push 0x2b800
call fcn.004444d3
mov ebx, eax
add esp, 4
cmp ebx, esi
mov dword [0x45f154], ebx
je 0x406ece
push 0x20000
call fcn.004444d3
add esp, 4
cmp eax, esi
mov dword [0x45f158], eax
je 0x406ec8
push 0x40000
call fcn.004444d3
add esp, 4
mov dword [0x45f15c], eax
mov ebx, dword [0x45f154]
mov edx, dword [0x45f150]
cmp edx, esi
je 0x406fc4
cmp ebx, esi
je 0x406fb5
cmp dword [0x45f158], esi
je 0x406fb5
cmp dword [0x45f15c], esi
je 0x406fb5
xor eax, eax
mov ecx, 0x5700
mov edi, edx
rep stosd dword es:[edi], eax
mov ecx, 0xae00
mov edi, ebx
rep stosd dword es:[edi], eax
mov byte [edx + 0x186c], 3
mov byte [edx + 0xdd88], 1
mov byte [edx + 0xdee4], 2
mov byte [edx + 0x19c8], 0xc
mov byte [edx + 0xe040], 4
mov byte [edx + 0xe19c], 8
mov byte [edx + 0x1710], 0x30
mov byte [edx + 0xdad0], 0x10
mov byte [edx + 0xdc2c], 0x20
mov cl, 0x40
mov byte [edx + 0x7d04], cl
mov al, 0x80
mov byte [edx + 0x7e60], al
mov byte [ebx + 0x28bc], 1
mov byte [ebx + 0x184bc], 2
mov byte [ebx + 0x4d70], 4
mov byte [ebx + 0x1a970], 8
mov byte [ebx + 0x3a68], 0x10
mov byte [ebx + 0x1a6b8], 0x20
mov byte [ebx + 0x1d904], cl
mov byte [ebx + 0x1da60], al
mov dword [edx + 0xc668], 0x45b0e8
mov dword [edx + 0x1c7c], 0x45b0e4
mov dword [edx + 0xc50c], 0x45b0e0
jmp 0x40701c
push edx
call fcn.004441cd
add esp, 4
mov ebx, dword [0x45f154]
cmp ebx, esi
je 0x406fd1
push ebx
call fcn.004441cd
add esp, 4
mov eax, dword [0x45f158]
cmp eax, esi
je 0x406fe3
push eax
call fcn.004441cd
add esp, 4
mov eax, dword [0x45f15c]
cmp eax, esi
je 0x406ff5
push eax
call fcn.004441cd
add esp, 4
mov dword [0x45f154], esi
mov dword [0x45f150], esi
mov dword [0x45f15c], esi
mov dword [0x45f158], esi
xor al, al
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ebx, dword [0x45f154]
lea eax, [edx + 0x149]
mov ecx, 0x100
jmp 0x407030
mov byte [eax - 1], 0
mov byte [eax], 0
mov byte [eax + 8], 0
mov byte [eax + 9], 0
mov byte [eax + 0xa], 0
mov byte [eax + 0x10], 0
add eax, 0x15c
dec ecx
jne 0x407030
lea eax, [ebx + 0x149]
mov ecx, 0x200
lea ebx, [ebx]
mov byte [eax - 1], 0
mov byte [eax], 0
mov byte [eax + 8], 0
mov byte [eax + 9], 0
mov byte [eax + 0xa], 0
mov byte [eax + 0x10], 0
add eax, 0x15c
dec ecx
jne 0x407060
mov eax, dword [0x45c59c]
xor ecx, ecx
cmp eax, esi
jle 0x4070ba
lea ebx, [ebx]
mov eax, dword [ecx*8 + 0x45c534]
cmp eax, esi
jbe 0x4070b0
cmp eax, 0x1ff
ja 0x4070b0
imul eax, eax, 0x15c
mov byte [eax + ebx + 0x159], 1
mov eax, dword [0x45c59c]
inc ecx
cmp ecx, eax
jl 0x407090
mov edi, dword [0x45f158]
mov eax, 0x3fff3fff
mov ecx, 0x8000
rep stosd dword es:[edi], eax
mov edi, dword [0x45f15c]
mov ecx, 0x10000
rep stosd dword es:[edi], eax
xor eax, eax
mov ecx, 0xdac
lea edi, [esp + 0x28]
rep stosd dword es:[edi], eax
cmp dword [ebp + 0xc], esi
mov dword [esp + 0x20], esi
mov dword [esp + 0x1c], esi
mov dword [esp + 0x18], esi
jle 0x407573
mov ebx, dword [ebp + 8]
lea eax, [esp + 0x2c]
mov dword [esp + 0x10], eax
mov ecx, dword [ebx + esi*4]
mov eax, dword [ecx + 0x20]
cmp eax, 2
je 0x40711f
cmp eax, 3
je 0x40711f
cmp eax, 4
jne 0x407567
mov al, byte [ecx + 0x25]
test al, al
je 0x407567
mov al, byte [0x45d818]
test al, al
je 0x40718c
mov ecx, dword [ecx + 0x28]
test ecx, ecx
je 0x407567
mov eax, dword [ecx + 4]
cmp byte [eax], 0xae
jne 0x407567
mov cl, byte [eax + 0x1c]
test cl, cl
je 0x40718c
cmp cl, 1
jb 0x40716a
mov ecx, dword [eax + 0x20]
cmp byte [ecx], 0
jne 0x40716a
mov ecx, dword [ecx + 8]
test ecx, ecx
je 0x40716a
cmp dword [ecx], 0
jne 0x40718c
mov ecx, dword [eax + 0x20]
mov edx, dword [ecx + 4]
push 0x450740
push edx
call fcn.0044e5aa
mov edx, dword [0x45f150]
add esp, 8
test eax, eax
je 0x407567
mov edi, dword [ebx + esi*4]
mov cl, byte [edi + 8]
test cl, cl
jne 0x4071a1
mov eax, dword [edi + 0xc]
test eax, eax
je 0x407567
cmp cl, 0xff
ja 0x407567
mov eax, dword [edi + 0xc]
cmp eax, 0x1ff
ja 0x407567
mov edi, dword [edi + 0x20]
cmp edi, 2
jne 0x4071c6
inc dword [esp + 0x1c]
jmp 0x4071d3
cmp edi, 3
je 0x4071cf
inc dword [esp + 0x1c]
inc dword [esp + 0x18]
test cl, cl
jne 0x4072bf
mov ecx, dword [0x45f154]
imul eax, eax, 0x15c
add eax, ecx
mov edi, eax
mov byte [edi + 0x159], 1
mov eax, dword [0x45f154]
mov byte [edi + 0x152], 1
mov ecx, dword [ebx + esi*4]
mov cx, word [ecx]
mov word [esp + 0x14], cx
mov ecx, dword [ebx + esi*4]
test byte [ecx + 0x16], 1
je 0x40721a
or dword [esp + 0x14], 0x8000
mov cl, byte [edi + 0x150]
test cl, cl
je 0x40725f
mov ecx, dword [ebx + esi*4]
cmp dword [ecx + 0x10], 0
jne 0x40725f
cmp byte [ecx + 0x14], 0
jne 0x40725f
cmp byte [ecx + 0x17], 0
jne 0x40725f
cmp dword [ecx + 0x18], 0
jne 0x40725f
mov eax, ecx
mov edx, dword [eax + 0xc]
movzx eax, byte [eax + 8]
push 0
push edx
push eax
call fcn.00404eb0
mov edx, dword [0x45f150]
mov eax, dword [0x45f154]
add esp, 0xc
mov ecx, dword [ebx + esi*4]
mov cl, byte [ecx + 0x17]
test cl, cl
mov byte [esp + 0xe], cl
je 0x407449
movzx ecx, cl
imul ecx, ecx, 0x15c
cmp byte [ecx + edx + 0x150], 0
je 0x4073c3
movzx ecx, byte [esp + 0xe]
mov dword [esp + 0x24], ecx
sub ecx, 0x10
je 0x40739e
dec ecx
je 0x407379
dec ecx
je 0x407351
mov eax, dword [esp + 0x24]
imul eax, eax, 0x15c
mov byte [eax + edx + 0x151], 1
jmp 0x407400
mov eax, dword [ebx + esi*4]
movzx eax, byte [eax + 8]
mov edi, eax
imul edi, edi, 0x15c
add edi, edx
sub eax, 0x10
je 0x40732b
dec eax
je 0x407305
dec eax
jne 0x4071f2
mov eax, dword [0x45f154]
mov byte [eax + 0x1a972], 1
mov byte [eax + 0x4d72], 1
mov byte [edx + 0xe19e], 1
mov byte [edx + 0xe042], 1
jmp 0x4071f7
mov eax, dword [0x45f154]
mov byte [eax + 0x184be], 1
mov byte [eax + 0x28be], 1
mov byte [edx + 0xdee6], 1
mov byte [edx + 0xdd8a], 1
jmp 0x4071f7
mov eax, dword [0x45f154]
mov byte [eax + 0x1a6ba], 1
mov byte [eax + 0x3a6a], 1
mov byte [edx + 0xdc2e], 1
mov byte [edx + 0xdad2], 1
jmp 0x4071f7
mov byte [eax + 0x1a971], 1
mov byte [eax + 0x4d71], 1
mov byte [edx + 0xe19d], 1
mov byte [edx + 0xe041], 1
mov byte [edx + 0x19c9], 1
jmp 0x407400
mov byte [eax + 0x184bd], 1
mov byte [eax + 0x28bd], 1
mov byte [edx + 0xdee5], 1
mov byte [edx + 0xdd89], 1
mov byte [edx + 0x186d], 1
jmp 0x407400
mov byte [eax + 0x1a6b9], 1
mov byte [eax + 0x3a69], 1
mov byte [edx + 0xdc2d], 1
mov byte [edx + 0xdad1], 1
mov byte [edx + 0x1711], 1
jmp 0x407400
mov eax, dword [ebx + esi*4]
movzx ecx, byte [eax + 0x17]
imul ecx, ecx, 0x15c
mov byte [ecx + edx + 0x151], 1
mov eax, dword [ebx + esi*4]
test byte [eax + 0x16], 2
je 0x407400
mov ecx, eax
movzx eax, byte [ecx + 0x17]
imul eax, eax, 0x15c
mov cl, byte [eax + edx + 0x153]
lea eax, [eax + edx + 0x153]
or cl, 2
mov byte [eax], cl
mov al, byte [edi + 0x148]
cmp al, 0x32
jae 0x407511
mov ecx, dword [ebx + esi*4]
mov cl, byte [ecx + 0x17]
movzx eax, al
mov byte [edi + eax*4], cl
mov eax, dword [ebx + esi*4]
cmp word [eax + 0x26], 0
movzx eax, byte [edi + 0x148]
je 0x407434
mov ecx, dword [ebx + esi*4]
mov cx, word [ecx + 0x26]
jmp 0x407439
mov cx, word [esp + 0x14]
mov word [edi + eax*4 + 2], cx
inc byte [edi + 0x148]
jmp 0x407567
mov ecx, dword [ebx + esi*4]
mov ecx, dword [ecx + 0x18]
test ecx, ecx
mov dword [esp + 0x24], ecx
je 0x407511
imul ecx, ecx, 0x15c
cmp byte [ecx + edx + 0x150], 0
je 0x40747f
mov ecx, dword [esp + 0x24]
imul ecx, ecx, 0x15c
mov byte [ecx + eax + 0x151], 1
jmp 0x4074c8
mov ecx, dword [ebx + esi*4]
mov ecx, dword [ecx + 0x18]
imul ecx, ecx, 0x15c
mov byte [ecx + eax + 0x151], 1
mov ecx, dword [ebx + esi*4]
test byte [ecx + 0x16], 2
je 0x4074b4
mov ecx, dword [ecx + 0x18]
imul ecx, ecx, 0x15c
or byte [ecx + eax + 0x153], 2
lea ecx, [ecx + eax + 0x153]
mov ecx, dword [ebx + esi*4]
mov ecx, dword [ecx + 0x18]
imul ecx, ecx, 0x15c
mov byte [ecx + eax + 0x159], 1
mov al, byte [edi + 0x149]
cmp al, 0x10
jae 0x407511
mov ecx, dword [ebx + esi*4]
mov ecx, dword [ecx + 0x18]
movzx eax, al
mov dword [edi + eax*8 + 0xc8], ecx
mov eax, dword [ebx + esi*4]
cmp word [eax + 0x26], 0
movzx eax, byte [edi + 0x149]
je 0x4074fc
mov ecx, dword [ebx + esi*4]
mov cx, word [ecx + 0x26]
jmp 0x407501
mov cx, word [esp + 0x14]
mov word [edi + eax*8 + 0xcc], cx
inc byte [edi + 0x149]
jmp 0x407567
mov eax, dword [ebx + esi*4]
movzx eax, word [eax + 0x26]
test ax, ax
jne 0x407521
mov eax, dword [esp + 0x14]
mov edi, dword [esp + 0x10]
movzx ecx, ax
mov eax, dword [esp + 0x10]
mov dword [eax - 4], ecx
mov eax, dword [ebx + esi*4]
mov cl, byte [eax + 8]
mov byte [edi], cl
mov edi, dword [eax + 0xc]
mov ecx, dword [esp + 0x10]
mov dword [ecx + 4], edi
mov edi, dword [eax + 0x10]
mov dword [ecx + 8], edi
mov cl, byte [eax + 0x14]
mov edi, dword [esp + 0x10]
mov byte [edi + 0xc], cl
mov ecx, dword [esp + 0x20]
mov al, byte [eax + 0x15]
inc ecx
mov byte [edi + 0xd], al
add edi, 0x14
mov dword [esp + 0x20], ecx
mov dword [esp + 0x10], edi
mov eax, dword [ebp + 0xc]
inc esi
cmp esi, eax
jl 0x407106
mov ecx, dword [str._a_a_a_v]
mov eax, 7
cmp ecx, eax
jne 0x407597
cmp dword [0x45b0e4], eax
jne 0x407597
cmp dword [0x45b0e8], eax
mov byte [esp + 0xe], 0
je 0x40759c
mov byte [esp + 0xe], 1
mov eax, dword [esp + 0x1c]
test eax, eax
mov ecx, dword [0x45fc9c]
mov edi, dword [0x45fc98]
jne 0x4075eb
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x4075eb
mov al, byte [esp + 0xe]
test al, al
jne 0x4075eb
mov al, byte [ebp + 0x14]
test al, al
jne 0x4075eb
xor eax, eax
test ecx, ecx
jbe 0x4075df
lea ecx, [ecx]
mov edx, dword [edi + eax*4]
mov bl, byte [edx + 0xd]
test bl, bl
je 0x4075eb
inc eax
cmp eax, ecx
jb 0x4075d0
call fcn.00406d70
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov esi, dword [esp + 0x20]
test esi, esi
je 0x40784f
push 0x404df0
push 0x14
lea eax, [esp + 0x30]
push esi
push eax
call fcn.00444250
add esp, 0x10
test esi, esi
jle 0x407843
xor ebx, ebx
mov dword [esp + 0x20], esi
lea ebx, [ebx]
mov ecx, dword [esp + ebx + 0x34]
xor eax, eax
mov al, byte [esp + ebx + 0x38]
test al, al
mov dword [esp + 0x14], ecx
je 0x407645
push eax
call fcn.0040a490
mov ecx, dword [esp + 0x18]
add esp, 4
or ecx, eax
mov dword [esp + 0x14], ecx
xor edi, edi
mov dword [esp + 0x10], edi
xor esi, esi
lea ecx, [ecx]
mov edx, dword [esp + 0x10]
push edx
call fcn.0040a490
mov cl, byte [esp + ebx + 0x3d]
add esp, 4
test cl, cl
je 0x40766d
mov ecx, dword [esp + 0x14]
and eax, ecx
jmp 0x407671
mov ecx, dword [esp + 0x14]
cmp ecx, eax
jne case.0x4076e4.19
mov al, byte [esp + ebx + 0x38]
test al, al
je 0x407694
mov edx, dword [esp + 0x10]
movzx eax, al
mov ecx, eax
and ecx, edx
cmp eax, ecx
jne case.0x4076e4.19
mov al, byte [esp + ebx + 0x2c]
test al, al
jne 0x4076b6
mov edx, dword [esp + ebx + 0x30]
mov ax, word [esp + ebx + 0x28]
mov ecx, dword [0x45f15c]
add edx, edi
mov word [ecx + edx*2], ax
jmp case.0x4076e4.19
mov cx, word [esp + ebx + 0x28]
movzx edx, al
mov eax, dword [0x45f158]
add edx, edi
mov word [eax + edx*2], cx
movzx ecx, byte [esp + ebx + 0x2c]
add ecx, 0xfffffff0
cmp ecx, 0x95
ja case.0x4076e4.19
movzx edx, byte [ecx + 0x407a8c]
jmp dword [edx*4 + 0x407a64]
mov cx, word [esp + ebx + 0x28]
mov edx, dword [0x45f15c]
mov word [esi + edx + 0x270], cx
mov word [esi + edx + 0x70], cx
mov word [esi + eax + 0x14a], cx
mov word [esi + eax + 0x148], cx
jmp case.0x4076e4.19
mov cx, word [esp + ebx + 0x28]
mov edx, dword [0x45f15c]
mov word [esi + edx + 0x70], cx
mov word [esi + eax + 0x148], cx
jmp case.0x4076e4.19
mov cx, word [esp + ebx + 0x28]
mov edx, dword [0x45f15c]
mov word [esi + edx + 0x270], cx
mov word [esi + eax + 0x14a], cx
jmp case.0x4076e4.19
mov cx, word [esp + ebx + 0x28]
mov edx, dword [0x45f15c]
mov word [esi + edx + 0x26c], cx
mov word [esi + edx + 0x54], cx
mov word [esi + eax + 0x142], cx
mov word [esi + eax + 0x140], cx
jmp case.0x4076e4.19
mov cx, word [esp + ebx + 0x28]
mov edx, dword [0x45f15c]
mov word [esi + edx + 0x54], cx
mov word [esi + eax + 0x140], cx
jmp case.0x4076e4.19
mov cx, word [esp + ebx + 0x28]
mov edx, dword [0x45f15c]
mov word [esi + edx + 0x26c], cx
mov word [esi + eax + 0x142], cx
jmp case.0x4076e4.19
mov cx, word [esp + ebx + 0x28]
mov edx, dword [0x45f15c]
mov word [esi + edx + 0x23a], cx
mov word [esi + edx + 0x3a], cx
mov word [esi + eax + 0x144], cx
jmp 0x407808
mov cx, word [esp + ebx + 0x28]
mov edx, dword [0x45f15c]
mov word [esi + edx + 0x3a], cx
mov word [esi + eax + 0x144], cx
jmp case.0x4076e4.19
mov cx, word [esp + ebx + 0x28]
mov edx, dword [0x45f15c]
mov word [esi + edx + 0x23a], cx
mov word [esi + eax + 0x146], cx
mov eax, dword [esp + 0x10]
inc eax
add edi, 0x100
add esi, 0x200
cmp edi, 0xff00
mov dword [esp + 0x10], eax
jle 0x407650
mov eax, dword [esp + 0x20]
add ebx, 0x14
dec eax
mov dword [esp + 0x20], eax
jne 0x407620
mov ecx, dword [0x45fc9c]
mov edi, dword [0x45fc98]
mov edx, dword [0x45d800]
test edx, edx
mov bl, byte [ebp + 0x14]
jne 0x407914
test bl, 1
jne 0x4078a3
test byte [ebp + 0x10], 1
je 0x407976
mov eax, dword [esp + 0x1c]
test eax, eax
jne 0x4078a3
mov al, byte [esp + 0xe]
test al, al
jne 0x4078a3
xor eax, eax
test ecx, ecx
jbe 0x407976
lea esp, [esp]
mov edx, dword [edi + eax*4]
cmp byte [edx + 0xd], 0
je 0x4078a3
inc eax
cmp eax, ecx
jb 0x407890
jmp 0x407976
mov eax, dword [0x45d6e0]
push 0
push eax
push 0x405760
push 0xd
call dword [sym.imp.USER32.dll_SetWindowsHookExA]
test eax, eax
mov dword [0x45d800], eax
je 0x4078de
mov al, byte [esp + 0xf]
push 1
or al, 1
push 1
push 0
mov byte [esp + 0x19], al
call fcn.00405000
add esp, 0xc
jmp 0x407976
mov al, byte [0x45f111]
test al, al
jne 0x407a08
fld qword [0x44f650]
sub esp, 8
fstp qword [esp]
push 0
push 0x10000
push str.Warning:_The_keyboard_hook_could_not_be_activated__some_parts_of_the_script_will_not_function.
call fcn.00440460
add esp, 0x14
or al, 0xff
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
test bl, 1
jne 0x407976
test byte [ebp + 0x10], 1
je 0x407943
mov eax, dword [esp + 0x1c]
test eax, eax
jne 0x407976
mov al, byte [esp + 0xe]
test al, al
jne 0x407976
xor eax, eax
test ecx, ecx
jbe 0x407943
mov esi, dword [edi + eax*4]
cmp byte [esi + 0xd], 0
je 0x407976
inc eax
cmp eax, ecx
jb 0x407935
push edx
call dword [sym.imp.USER32.dll_UnhookWindowsHookEx]
test eax, eax
je 0x407958
mov dword [0x45d800], 0
mov ecx, dword [0x45d800]
xor al, al
test ecx, ecx
je 0x407966
mov al, 1
mov ecx, dword [0x45d804]
test ecx, ecx
je 0x407972
or al, 2
mov byte [esp + 0xd], al
mov eax, dword [0x45d804]
test eax, eax
jne 0x407a11
test bl, 2
jne 0x40799e
test byte [ebp + 0x10], 2
je 0x407a57
mov eax, dword [esp + 0x18]
test eax, eax
je 0x407a57
mov ecx, dword [0x45d6e0]
push 0
push ecx
push 0x402d50
push 0xe
call dword [sym.imp.USER32.dll_SetWindowsHookExA]
test eax, eax
mov dword [0x45d804], eax
je 0x4079df
mov bl, byte [esp + 0xd]
push 1
push 2
or bl, 2
push 0
mov byte [esp + 0x19], bl
call fcn.00405000
add esp, 0xc
mov al, bl
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov al, byte [0x45f111]
test al, al
jne 0x407a08
fld qword [0x44f650]
sub esp, 8
fstp qword [esp]
push 0
push 0x10000
push str.Warning:_The_mouse_hook_could_not_be_activated__some_parts_of_the_script_will_not_function.
call fcn.00440460
add esp, 0x14
or al, 0xff
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
test bl, 2
jne 0x407a57
test byte [ebp + 0x10], 2
je 0x407a24
mov ecx, dword [esp + 0x18]
test ecx, ecx
jne 0x407a57
push eax
call dword [sym.imp.USER32.dll_UnhookWindowsHookEx]
test eax, eax
je 0x407a39
mov dword [0x45d804], 0
mov ecx, dword [0x45d800]
xor al, al
test ecx, ecx
je 0x407a47
mov al, 1
mov ecx, dword [0x45d804]
test ecx, ecx
je 0x407a53
or al, 2
mov byte [esp + 0xd], al
mov al, byte [esp + 0xd]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret