Function at 0x10041220
Capabilities:
Authenticate hmac
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x100b3b53
mov eax, dword fs:[0]
push eax
sub esp, 0x12c
mov eax, dword [0x100d8054]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
cmp byte [0x101dfe51], 0
jne 0x10041276
cmp byte [0x101dbe27], 0
jne 0x10041276
cmp byte [0x101dfe53], 0
jne 0x10041276
cmp byte [0x101dfe50], 0
je 0x10041c35
cmp byte [0x100d8afd], 0
je 0x10041c35
cmp dword [0xb6fc58], 1
jne 0x10041c35
mov esi, dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
mov cl, 0x1d
mov byte [ebp - 0x1c], 0x71
mov al, 0x12
xor al, byte [ebp - 0x1c]
mov ah, 0x1f
mov byte [ebp - 0x95], cl
mov dl, 0x18
mov byte [ebp - 0x96], cl
mov ch, 5
xor cl, byte [ebp - 0x1c]
mov dh, 0x5f
mov byte [ebp - 0x1b], al
mov bl, 0x14
mov al, byte [ebp - 0x95]
mov bh, 0x15
mov byte [ebp - 0x1a], cl
mov cl, byte [ebp - 0x1c]
xor al, cl
mov byte [ebp - 0x11], 0
mov byte [ebp - 0x13], al
xor ah, cl
mov al, byte [ebp - 0x96]
xor dl, cl
xor al, cl
mov byte [ebp - 0x17], ah
mov byte [ebp - 0x12], al
xor bl, cl
lea eax, [ebp - 0x1b]
mov byte [ebp - 0x19], dl
xor ch, cl
mov byte [ebp - 0x18], bl
xor dh, cl
mov byte [ebp - 0x16], ch
xor bh, cl
mov byte [ebp - 0x15], dh
push eax
mov byte [ebp - 0x14], bh
mov byte [ebp - 0x11], 0
call esi
test eax, eax
je 0x10041c35
xor edi, edi
mov dword [ebp - 0xa8], edi
nop word [eax + eax]
mov cl, 0x30
mov byte [ebp - 0x28], 0x5c
mov byte [ebp - 0x96], cl
mov al, 0x3f
xor al, byte [ebp - 0x28]
mov ah, 0x32
mov byte [ebp - 0x95], cl
mov dl, 0x35
xor cl, byte [ebp - 0x28]
mov ch, 0x28
mov byte [ebp - 0x27], al
mov dh, 0x72
mov al, byte [ebp - 0x96]
mov bl, 0x39
mov byte [ebp - 0x26], cl
mov bh, 0x38
mov cl, byte [ebp - 0x28]
xor al, cl
mov byte [ebp - 0x1d], 0
mov byte [ebp - 0x1f], al
xor ah, cl
mov al, byte [ebp - 0x95]
xor dl, cl
xor al, cl
mov byte [ebp - 0x23], ah
mov byte [ebp - 0x1e], al
xor bl, cl
lea eax, [ebp - 0x27]
mov byte [ebp - 0x25], dl
xor ch, cl
mov byte [ebp - 0x24], bl
xor dh, cl
mov byte [ebp - 0x22], ch
xor bh, cl
mov byte [ebp - 0x21], dh
push eax
mov byte [ebp - 0x20], bh
mov byte [ebp - 0x1d], 0
call esi
test eax, eax
je 0x10041c1a
mov ebx, 0xb6fc58
cmp dword [ebx], 1
jne 0x10041c1a
call fcn.1003bc90
mov esi, eax
mov eax, 0x54ff90
push edi
call eax
mov edi, eax
add esp, 4
test edi, edi
je 0x10041c14
mov ecx, edi
mov eax, 0x5e0170
call eax
test al, al
je 0x10041c14
mov ecx, edi
mov eax, 0x5e4220
call eax
test al, al
je 0x10041c14
cmp dword [ebx], 1
jne 0x10041c14
lea edx, [ebp - 0xec]
mov ecx, esi
call fcn.1003bdf0
mov eax, dword [edi + 0x14]
lea ebx, [edi + 4]
test eax, eax
lea ecx, [eax + 0x30]
mov eax, 0x411b50
cmove ecx, ebx
push ecx
lea ecx, [ebp - 0xe0]
call eax
movss xmm0, dword [ebp - 0xe0]
sub esp, 0xc
mov eax, esp
sub esp, 0xc
movss dword [eax], xmm0
movss xmm0, dword [ebp - 0xdc]
movss dword [eax + 4], xmm0
movss xmm0, dword [ebp - 0xd8]
movss dword [eax + 8], xmm0
mov eax, esp
movss xmm0, dword [ebp - 0xec]
movss dword [eax], xmm0
movss xmm0, dword [ebp - 0xe8]
movss dword [eax + 4], xmm0
movss xmm0, dword [ebp - 0xe4]
movss dword [eax + 8], xmm0
call fcn.1003bf10
movss xmm1, dword [0x100d05f0]
add esp, 0x18
comiss xmm1, xmm0
jb 0x10041c14
mov ecx, edi
mov eax, 0x5e0170
call eax
test al, al
je 0x10041c14
mov ecx, edi
mov eax, 0x5e4220
call eax
test al, al
je 0x10041c14
mov eax, 0xb6fc58
cmp dword [eax], 1
jne 0x10041c14
mov eax, dword [edi + 0x14]
test eax, eax
lea ecx, [eax + 0x30]
cmove ecx, ebx
mov ebx, 0x411b50
push ecx
lea ecx, [ebp - 0xb4]
call ebx
movss xmm0, dword [ebp - 0xac]
lea eax, [ebp - 0xb4]
cvtps2pd xmm0, xmm0
push eax
lea ecx, [ebp - 0xc0]
subsd xmm0, qword [0x100d0548]
cvtpd2ps xmm0, xmm0
movss dword [ebp - 0xac], xmm0
call ebx
movss xmm0, dword [ebp - 0xb8]
lea edx, [ebp - 0x104]
cvtps2pd xmm0, xmm0
lea ecx, [ebp - 0xb4]
addsd xmm0, qword [0x100d0560]
cvtpd2ps xmm0, xmm0
movss dword [ebp - 0xb8], xmm0
call fcn.1003bfd0
lea edx, [ebp - 0x110]
lea ecx, [ebp - 0xc0]
call fcn.1003bfd0
lea edx, [ebp - 0xf8]
mov ecx, esi
call fcn.1003bdf0
lea edx, [ebp - 0x128]
lea ecx, [ebp - 0xf8]
call fcn.1003bfd0
lea edx, [ebp - 0x134]
lea ecx, [ebp - 0xb4]
call fcn.1003bfd0
movss xmm0, dword [ebp - 0xfc]
xorps xmm1, xmm1
comiss xmm0, xmm1
jbe 0x10041c14
movss xmm0, dword [ebp - 0x108]
comiss xmm0, xmm1
jbe 0x10041c14
mov dword [ebp - 0x64], 0
mov dword [ebp - 0x54], 0
mov dword [ebp - 0x50], 0xf
mov byte [ebp - 0x64], 0
mov dword [ebp - 4], 0
cmp byte [0x101dbe27], 0
je 0x100417e9
cmp byte [0x101dbe23], 0
je 0x10041615
mov al, 0x5d
mov byte [ebp - 0x1c], 0x54
mov cl, al
mov byte [ebp - 0x13], 0
xor al, byte [ebp - 0x1c]
lea esi, [ebp - 0x1b]
mov byte [ebp - 0x1b], al
mov dl, 2
mov al, byte [ebp - 0x1c]
mov bl, 0x3d
mov ah, 0x30
mov byte [ebp - 0x13], 0
mov ch, 0x35
mov dh, 0x6e
mov bh, 0x74
xor cl, al
xor dl, al
mov byte [ebp - 0x1a], cl
xor bl, al
mov byte [ebp - 0x19], dl
xor ah, al
mov byte [ebp - 0x18], bl
xor ch, al
mov byte [ebp - 0x17], ah
xor dh, al
mov byte [ebp - 0x16], ch
xor bh, al
mov byte [ebp - 0x15], dh
mov byte [ebp - 0x14], bh
jmp 0x10041685
mov al, 0x11
mov byte [ebp - 0x34], 0x18
mov cl, al
mov byte [ebp - 0x96], 0x22
xor al, byte [ebp - 0x34]
lea esi, [ebp - 0x33]
xor cl, byte [ebp - 0x34]
mov dl, 0x50
mov byte [ebp - 0x33], al
mov bl, 0x7d
mov al, byte [ebp - 0x96]
mov ah, 0x79
mov byte [ebp - 0x32], cl
mov ch, 0x74
mov cl, byte [ebp - 0x34]
mov dh, 0x6c
xor al, cl
mov byte [ebp - 0x95], 0x38
mov byte [ebp - 0x2b], al
mov bh, 0x70
mov al, byte [ebp - 0x95]
xor dl, cl
xor bl, cl
mov byte [ebp - 0x29], 0
xor ah, cl
mov byte [ebp - 0x31], dl
xor ch, cl
mov byte [ebp - 0x30], bl
xor dh, cl
mov byte [ebp - 0x2f], ah
xor bh, cl
mov byte [ebp - 0x2e], ch
xor al, cl
mov byte [ebp - 0x2d], dh
mov byte [ebp - 0x2c], bh
mov byte [ebp - 0x2a], al
mov byte [ebp - 0x29], 0
movss xmm0, dword [edi + 0x540]
movss dword [ebp - 0x9c], xmm0
fld dword [ebp - 0x9c]
push ecx
fstp dword [esp]
call fcn.100b1980
fstp dword [ebp - 0x9c]
cvttss2si edx, dword [ebp - 0x9c]
add esp, 4
lea ecx, [ebp - 0x94]
call fcn.100016f0
push eax
mov edx, esi
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x7c]
call fcn.10045ea0
add esp, 4
mov byte [ebp - 4], 2
mov ecx, eax
cmp dword [eax + 0x14], 0x10
jb 0x100416e0
mov ecx, dword [eax]
mov ebx, dword [eax + 0x10]
mov esi, dword [ebp - 0x50]
mov eax, esi
mov edx, dword [ebp - 0x54]
sub eax, edx
push ebx
push ecx
cmp ebx, eax
ja 0x10041715
lea eax, [edx + ebx]
cmp esi, 0x10
mov dword [ebp - 0x54], eax
lea eax, [ebp - 0x64]
cmovae eax, dword [ebp - 0x64]
lea esi, [eax + edx]
push esi
call fcn.10089890
add esp, 0xc
mov byte [ebx + esi], 0
jmp 0x1004172b
mov byte [ebp - 0xc4], 0
lea ecx, [ebp - 0x64]
push dword [ebp - 0xc4]
push ebx
call fcn.10005af0
mov byte [ebp - 4], 1
mov edx, dword [ebp - 0x68]
cmp edx, 0x10
jb 0x10041763
mov ecx, dword [ebp - 0x7c]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x10041759
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10041c82
push edx
push ecx
call fcn.10046e16
add esp, 8
mov byte [ebp - 4], 0
mov edx, dword [ebp - 0x80]
mov dword [ebp - 0x6c], 0
mov dword [ebp - 0x68], 0xf
mov byte [ebp - 0x7c], 0
cmp edx, 0x10
jb 0x100417b0
mov ecx, dword [ebp - 0x94]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x100417a6
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10041c82
push edx
push ecx
call fcn.10046e16
add esp, 8
mov dl, 0x10
mov byte [ebp - 0x9d], 0
mov al, 0x35
mov byte [ebp - 0xa0], dl
xor al, dl
mov byte [ebp - 0x9d], 0
mov cl, 0x1a
mov byte [ebp - 0x9f], al
xor cl, dl
lea eax, [ebp - 0x9f]
mov byte [ebp - 0x9e], cl
lea ecx, [ebp - 0x64]
push eax
call fcn.10004b20
cmp byte [0x101dfe53], 0
je 0x10041a45
cmp byte [0x101dbe23], 0
je 0x10041871
mov al, 0x10
mov byte [ebp - 0x40], 0x19
mov cl, al
mov byte [ebp - 0x96], 0x23
xor al, byte [ebp - 0x40]
lea esi, [ebp - 0x3f]
xor cl, byte [ebp - 0x40]
mov ch, 0x7c
mov byte [ebp - 0x3f], al
mov bh, ch
mov al, byte [ebp - 0x96]
mov dl, 0x5a
mov byte [ebp - 0x3e], cl
mov bl, 0x76
mov cl, byte [ebp - 0x40]
mov ah, 0x75
xor al, cl
mov byte [ebp - 0x95], 0x39
mov byte [ebp - 0x37], al
mov dh, 0x6d
mov al, byte [ebp - 0x95]
xor dl, cl
xor bl, cl
mov byte [ebp - 0x35], 0
xor ah, cl
mov byte [ebp - 0x3d], dl
xor ch, cl
mov byte [ebp - 0x3c], bl
xor dh, cl
mov byte [ebp - 0x3b], ah
xor bh, cl
mov byte [ebp - 0x3a], ch
xor al, cl
mov byte [ebp - 0x39], dh
mov byte [ebp - 0x38], bh
mov byte [ebp - 0x36], al
mov byte [ebp - 0x35], 0
jmp 0x100418e1
mov al, 0x6f
mov byte [ebp - 0x4c], 0x66
mov cl, al
mov byte [ebp - 0x96], 0x5c
xor al, byte [ebp - 0x4c]
lea esi, [ebp - 0x4b]
xor cl, byte [ebp - 0x4c]
mov bl, 0x14
mov byte [ebp - 0x4b], al
mov bh, bl
mov al, byte [ebp - 0x96]
mov dl, 0x27
mov byte [ebp - 0x4a], cl
mov ah, 0xb
mov cl, byte [ebp - 0x4c]
mov ch, 9
xor al, cl
mov byte [ebp - 0x95], 0x46
mov byte [ebp - 0x43], al
mov dh, 0x13
mov al, byte [ebp - 0x95]
xor dl, cl
xor bl, cl
mov byte [ebp - 0x41], 0
xor ah, cl
mov byte [ebp - 0x49], dl
xor ch, cl
mov byte [ebp - 0x48], bl
xor dh, cl
mov byte [ebp - 0x47], ah
xor bh, cl
mov byte [ebp - 0x46], ch
xor al, cl
mov byte [ebp - 0x45], dh
mov byte [ebp - 0x44], bh
mov byte [ebp - 0x42], al
mov byte [ebp - 0x41], 0
movss xmm0, dword [edi + 0x548]
movss dword [ebp - 0x9c], xmm0
fld dword [ebp - 0x9c]
push ecx
fstp dword [esp]
call fcn.100b1980
fstp dword [ebp - 0x9c]
cvttss2si edx, dword [ebp - 0x9c]
add esp, 4
lea ecx, [ebp - 0x94]
call fcn.100016f0
push eax
mov edx, esi
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x7c]
call fcn.10045ea0
add esp, 4
mov byte [ebp - 4], 4
mov ecx, eax
cmp dword [eax + 0x14], 0x10
jb 0x1004193c
mov ecx, dword [eax]
mov ebx, dword [eax + 0x10]
mov esi, dword [ebp - 0x50]
mov eax, esi
mov edx, dword [ebp - 0x54]
sub eax, edx
push ebx
push ecx
cmp ebx, eax
ja 0x10041971
lea eax, [edx + ebx]
cmp esi, 0x10
mov dword [ebp - 0x54], eax
lea eax, [ebp - 0x64]
cmovae eax, dword [ebp - 0x64]
lea esi, [eax + edx]
push esi
call fcn.10089890
add esp, 0xc
mov byte [ebx + esi], 0
jmp 0x10041987
mov byte [ebp - 0xc8], 0
lea ecx, [ebp - 0x64]
push dword [ebp - 0xc8]
push ebx
call fcn.10005af0
mov byte [ebp - 4], 3
mov edx, dword [ebp - 0x68]
cmp edx, 0x10
jb 0x100419bf
mov ecx, dword [ebp - 0x7c]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x100419b5
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10041c82
push edx
push ecx
call fcn.10046e16
add esp, 8
mov byte [ebp - 4], 0
mov edx, dword [ebp - 0x80]
mov dword [ebp - 0x6c], 0
mov dword [ebp - 0x68], 0xf
mov byte [ebp - 0x7c], 0
cmp edx, 0x10
jb 0x10041a0c
mov ecx, dword [ebp - 0x94]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x10041a02
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10041c82
push edx
push ecx
call fcn.10046e16
add esp, 8
mov dl, 0x13
mov byte [ebp - 0xa1], 0
mov al, 0x36
mov byte [ebp - 0xa4], dl
xor al, dl
mov byte [ebp - 0xa1], 0
mov cl, 0x19
mov byte [ebp - 0xa3], al
xor cl, dl
lea eax, [ebp - 0xa3]
mov byte [ebp - 0xa2], cl
lea ecx, [ebp - 0x64]
push eax
call fcn.10004b20
mov ecx, edi
mov esi, 0x5e0170
call esi
test al, al
je 0x10041bc7
mov ecx, edi
mov eax, 0x5e4220
call eax
test al, al
je 0x10041bc7
mov ebx, 0xb6fc58
cmp dword [ebx], 1
jne 0x10041bc7
mov eax, dword [edi + 0x14]
test eax, eax
lea ecx, [eax + 0x30]
lea eax, [edi + 4]
cmove ecx, eax
mov eax, 0x411b50
push ecx
lea ecx, [ebp - 0x11c]
call eax
lea edx, [ebp - 0xd4]
lea ecx, [ebp - 0x11c]
call fcn.1003bfd0
movss xmm0, dword [ebp - 0xcc]
xorps xmm1, xmm1
comiss xmm0, xmm1
jbe 0x10041bc7
mov ecx, edi
call esi
test al, al
je 0x10041bc7
push edi
mov eax, 0x5e8a30
call eax
add esp, 4
test al, al
je 0x10041bc7
cmp dword [ebx], 1
jne 0x10041bc7
cmp byte [0x101dfe51], 0
movss xmm0, dword [ebp - 0xd0]
subss xmm0, dword [0x100d05bc]
movss dword [ebp - 0xd0], xmm0
je 0x10041b1b
movss xmm2, dword [0x100d049c]
mov edx, 0x10156ae4
mov ecx, edi
call fcn.1003cac0
movss xmm0, dword [ebp - 0xd0]
cmp byte [0x101dfe53], 0
jne 0x10041b2d
cmp byte [0x101dbe27], 0
je 0x10041b51
cmp dword [ebp - 0x50], 0x10
lea eax, [ebp - 0x64]
cvttss2si edx, dword [ebp - 0xd4]
cmovae eax, dword [ebp - 0x64]
push eax
push ecx
mov ecx, edi
cvttss2si eax, xmm0
push eax
call fcn.10040dc0
add esp, 0xc
cmp byte [0x101dfe50], 0
je 0x10041bc7
movss xmm0, dword [ebp - 0xc0]
sub esp, 0x10
mov eax, esp
mov edx, 0x10156ae4
mov ecx, edi
mov dword [esp + 0xc], 0x3f000000
sub esp, 0xc
movss dword [eax], xmm0
movss xmm0, dword [ebp - 0xbc]
movss dword [eax + 4], xmm0
movss xmm0, dword [ebp - 0xb8]
movss dword [eax + 8], xmm0
mov eax, esp
movss xmm0, dword [ebp - 0xb4]
movss dword [eax], xmm0
movss xmm0, dword [ebp - 0xb0]
movss dword [eax + 4], xmm0
movss xmm0, dword [ebp - 0xac]
movss dword [eax + 8], xmm0
call fcn.1003f710
add esp, 0x1c
mov dword [ebp - 4], 0xffffffff
mov edx, dword [ebp - 0x50]
cmp edx, 0x10
jb 0x10041c02
mov ecx, dword [ebp - 0x64]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x10041bf8
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10041c82
push edx
push ecx
call fcn.10046e16
add esp, 8
mov dword [ebp - 0x54], 0
mov dword [ebp - 0x50], 0xf
mov byte [ebp - 0x64], 0
mov esi, dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
mov eax, dword [ebp - 0xa8]
inc eax
mov dword [ebp - 0xa8], eax
cmp eax, 0x1000
jg 0x10041c35
mov edi, eax
jmp 0x10041320
cmp byte [0x101dbe24], 0
je 0x10041c66
push 0x2e
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
bt ax, 0xf
jae 0x10041c66
push 0xbe
call dword [sym.imp.KERNEL32.dll_Sleep]
cmp byte [0x100d8afd], 0
sete byte [0x100d8afd]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.10046dd3
mov esp, ebp
pop ebp
ret
call fcn.1008c84f
int3