Function at 0x10024b50
Capabilities:
Encode data using xor
Log keystrokes via polling

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff0
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x100f4ce1
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x1a8
mov eax, dword [0x1011e00c]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
cmp byte [0x101208b8], 0
mov eax, dword [ebx + 8]
mov dword [ebp - 0xa4], eax
je case.0x10025771.4
push dword [0x101208bc]
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je case.0x10025771.4
mov ecx, dword [0x101202f8]
mov eax, dword [ecx]
mov eax, dword [eax + 0x68]
call eax
test al, al
je case.0x10025771.4
mov ecx, dword [0x101202f8]
mov eax, dword [ecx]
mov eax, dword [eax + 0x6c]
call eax
test al, al
je case.0x10025771.4
mov edi, dword [0x10120420]
test edi, edi
je case.0x10025771.4
mov eax, edi
mov dword [ebp - 0x8c], eax
test eax, eax
je case.0x10025771.4
mov eax, dword [0x10120334]
test eax, eax
jne 0x10024c44
call fcn.100034c0
mov edx, 0xe80c2f78
mov ecx, 0x10110195
call fcn.100018f0
mov edx, 0xc10bf213
mov ecx, 0x101100ad
mov esi, eax
call fcn.100018f0
push esi
push eax
call fcn.1008e510
mov edi, dword [0x10120420]
mov dword [0x10120334], eax
mov ecx, dword [ebp - 0x8c]
cmp dword [ecx + eax], 0
jle case.0x10025771.4
mov eax, dword [0x101202d0]
test eax, eax
jne 0x10024c8e
call fcn.100034c0
mov edx, 0xe80c2f78
mov ecx, 0x10110171
call fcn.100018f0
mov edx, 0xc10bf213
mov ecx, 0x101100ad
mov esi, eax
call fcn.100018f0
push esi
push eax
call fcn.1008e510
mov dword [0x101202d0], eax
cmp byte [edi + eax], 0
jne case.0x10025771.4
call fcn.10003440
cmp byte [eax], 0
jne case.0x10025771.4
movups xmm0, xmmword [0x1011e288]
mov edi, dword [0x10120420]
movups xmmword [ebp - 0x30], xmm0
movq xmm0, qword [0x1011e298]
movq qword [ebp - 0xf0], xmm0
movups xmm0, xmmword [0x1011e258]
movups xmmword [ebp - 0x160], xmm0
movq xmm0, qword [0x1011e268]
movq qword [ebp - 0xa0], xmm0
movups xmm0, xmmword [0x1011e2a0]
movups xmmword [ebp - 0x170], xmm0
movq xmm0, qword [0x1011e2b0]
movq qword [ebp - 0xd0], xmm0
movups xmm0, xmmword [0x1011e270]
movups xmmword [ebp - 0x180], xmm0
movq xmm0, qword [0x1011e280]
movq qword [ebp - 0xd8], xmm0
movups xmm0, xmmword [0x1011e2b8]
movups xmmword [ebp - 0x190], xmm0
movq xmm0, qword [0x1011e2c8]
movq qword [ebp - 0xc8], xmm0
movups xmm0, xmmword [0x1011e2e8]
movups xmmword [ebp - 0x1a0], xmm0
movq xmm0, qword [0x1011e2f8]
movq qword [ebp - 0x90], xmm0
movups xmm0, xmmword [0x1011e2d0]
movups xmmword [ebp - 0xb8], xmm0
movq xmm0, qword [0x1011e2e0]
movq qword [ebp - 0xe0], xmm0
call fcn.100034c0
mov edx, 0xe80c2f78
mov ecx, 0x101101bd
call fcn.100018f0
mov edx, 0xc10bf213
mov ecx, 0x101100ad
mov esi, eax
call fcn.100018f0
push esi
push eax
call fcn.1008e510
mov ecx, dword [0x10120320]
mov edx, dword [eax + edi]
mov eax, dword [ecx]
and edx, 0xfff
push edx
mov eax, dword [eax + 0xc]
call eax
test eax, eax
je 0x10024ede
mov ecx, eax
call fcn.10001910
test eax, eax
je 0x10024ede
cmp eax, 3
sete cl
cmp eax, 6
sete dl
cmp eax, 5
sete ch
cmp eax, 7
sete dh
cmp eax, 9
sete byte [ebp - 0x91]
cmp eax, 2
jne 0x10024e1f
movups xmm0, xmmword [ebp - 0x160]
movd eax, xmm0
test al, al
je 0x10024e1f
movups xmmword [ebp - 0xc0], xmm0
movq xmm0, qword [ebp - 0xa0]
jmp 0x10024ef1
test cl, cl
je 0x10024e46
movups xmm0, xmmword [ebp - 0x170]
movd eax, xmm0
test al, al
je 0x10024e46
movups xmmword [ebp - 0xc0], xmm0
movq xmm0, qword [ebp - 0xd0]
jmp 0x10024ef1
test dl, dl
je 0x10024e6d
movups xmm0, xmmword [ebp - 0x180]
movd eax, xmm0
test al, al
je 0x10024e6d
movups xmmword [ebp - 0xc0], xmm0
movq xmm0, qword [ebp - 0xd8]
jmp 0x10024ef1
test ch, ch
je 0x10024e91
movups xmm0, xmmword [ebp - 0x190]
movd eax, xmm0
test al, al
je 0x10024e91
movups xmmword [ebp - 0xc0], xmm0
movq xmm0, qword [ebp - 0xc8]
jmp 0x10024ef1
test dh, dh
je 0x10024eb5
movups xmm0, xmmword [ebp - 0x1a0]
movd eax, xmm0
test al, al
je 0x10024eb5
movups xmmword [ebp - 0xc0], xmm0
movq xmm0, qword [ebp - 0x90]
jmp 0x10024ef1
cmp byte [ebp - 0x91], 0
je 0x10024ede
movups xmm0, xmmword [ebp - 0xb8]
movd eax, xmm0
test al, al
je 0x10024ede
movups xmmword [ebp - 0xc0], xmm0
movq xmm0, qword [ebp - 0xe0]
jmp 0x10024ef1
movups xmm0, xmmword [ebp - 0x30]
movups xmmword [ebp - 0xc0], xmm0
movq xmm0, qword [ebp - 0xf0]
mov ecx, dword [0x1012031c]
xor edx, edx
movq qword [ebp - 0xb0], xmm0
movaps xmm0, xmmword [0x10117810]
movups xmmword [ebp - 0x30], xmm0
mov eax, dword [ecx]
mov dword [ebp - 0x20], 0x31383537
mov byte [ebp - 0x1c], 0
mov esi, dword [eax + 0x44]
nop dword [eax]
mov al, byte [ebp - 0x30]
xor byte [ebp + edx - 0x2f], al
inc edx
cmp edx, 0x13
jb 0x10024f20
lea eax, [ebp - 0x2f]
mov byte [ebp - 0x1c], 0
push eax
call esi
mov ecx, eax
mov edx, dword [eax]
mov eax, dword [edx + 0x30]
call eax
mov edi, dword [0x10120420]
fstp dword [ebp - 0xc4]
call fcn.100034c0
mov edx, 0xe80c2f78
mov ecx, 0x101101bd
call fcn.100018f0
mov edx, 0xc10bf213
mov ecx, 0x101100ad
mov esi, eax
call fcn.100018f0
push esi
push eax
call fcn.1008e510
mov ecx, dword [0x10120320]
mov edx, dword [eax + edi]
mov eax, dword [ecx]
and edx, 0xfff
push edx
mov eax, dword [eax + 0xc]
call eax
mov edi, eax
test edi, edi
je case.0x10025771.4
mov ecx, dword [edi]
mov edx, dword [ecx + 0x734]
mov ecx, edi
call edx
mov eax, dword [eax + 0xc8]
cmp eax, 0x1f
ja case.0x10024fb7.1
movzx eax, byte [eax + 0x100257d0]
jmp dword [eax*4 + 0x100257c8]
mov eax, dword [0x10120328]
test eax, eax
jne 0x10024ff8
call fcn.100034c0
mov edx, 0xe80c2f78
mov ecx, 0x10110151
call fcn.100018f0
mov edx, 0xc10bf213
mov ecx, 0x1011010d
mov esi, eax
call fcn.100018f0
push esi
push eax
call fcn.1008e510
mov dword [0x10120328], eax
cmp dword [eax + edi], 0
je case.0x10025771.4
mov eax, dword [edi]
mov ecx, edi
mov eax, dword [eax + 0x734]
call eax
test eax, eax
je case.0x10025771.4
mov eax, dword [0x10120308]
mov ecx, dword [0x10120420]
mov dword [ebp - 0x80], 0x7f800000
mov dword [ebp - 0x84], 0x7f800000
mov dword [ebp - 0x88], 0x7f800000
mov dword [ebp - 0x74], 0x7f800000
mov dword [ebp - 0x78], 0x7f800000
mov dword [ebp - 0x7c], 0x7f800000
mov dword [ebp - 0x68], 0x7f800000
mov dword [ebp - 0x6c], 0x7f800000
mov dword [ebp - 0x70], 0x7f800000
mov dword [ebp - 0xf8], vtable.CTraceFilter.0
mov dword [ebp - 0x8c], ecx
test eax, eax
jne 0x100250b1
call fcn.100034c0
mov edx, 0xe80c2f78
mov ecx, 0x101101a1
call fcn.100018f0
mov edx, 0xc10bf213
mov ecx, 0x101100c5
mov esi, eax
call fcn.100018f0
push esi
push eax
call fcn.1008e510
mov ecx, dword [ebp - 0x8c]
mov dword [0x10120308], eax
movss xmm0, dword [ebp - 0xc4]
movaps xmm1, xmm0
mulss xmm0, dword [ecx + eax + 4]
mulss xmm1, dword [ecx + eax]
mov eax, dword [ebp - 0xa4]
addss xmm0, dword [eax + 0x10]
addss xmm1, dword [eax + 0xc]
mulss xmm0, dword [0x10116f00]
movss dword [ebp - 0x8c], xmm1
movss dword [ebp - 0xc4], xmm0
call fcn.1000feb0
movss dword [ebp - 0xcc], xmm0
movss xmm0, dword [ebp - 0xc4]
call fcn.1000fe90
movss dword [ebp - 0xd4], xmm0
movss xmm0, dword [ebp - 0x8c]
mulss xmm0, dword [0x10116f00]
movss dword [ebp - 0x8c], xmm0
call fcn.1000feb0
movss dword [ebp - 0x9c], xmm0
movss xmm0, dword [ebp - 0x8c]
call fcn.1000fe90
mov eax, dword [edi]
mov ecx, edi
movss dword [ebp - 0xc4], xmm0
mov eax, dword [eax + 0x734]
call eax
mov ecx, dword [0x10120420]
movss xmm1, dword [eax + 0x10c]
lea eax, [ebp - 0xf0]
push eax
movss dword [ebp - 0x8c], xmm1
mov dword [ebp - 0xf4], ecx
call fcn.10001ad0
movss xmm3, dword [ebp - 0xc4]
movss xmm0, dword [ebp - 0x8c]
movaps xmm1, xmm3
mulss xmm1, dword [ebp - 0xd4]
mulss xmm3, dword [ebp - 0xcc]
movss xmm4, dword [eax]
movss xmm5, dword [eax + 4]
movss xmm6, dword [eax + 8]
movss xmm2, dword [ebp - 0x9c]
mulss xmm1, xmm0
mov byte [ebp - 0x10b], 1
mulss xmm3, xmm0
addss xmm1, xmm4
mulss xmm2, xmm0
addss xmm3, xmm5
movaps xmm0, xmm6
subss xmm0, xmm2
subss xmm1, xmm4
subss xmm3, xmm5
subss xmm0, xmm6
movss dword [ebp - 0x140], xmm1
mulss xmm1, xmm1
movss dword [ebp - 0x13c], xmm3
mulss xmm3, xmm3
movss dword [ebp - 0x138], xmm0
mulss xmm0, xmm0
addss xmm1, xmm3
addss xmm1, xmm0
xorps xmm0, xmm0
ucomiss xmm1, xmm0
lahf
test ah, 0x44
jp 0x10025225
mov byte [ebp - 0x10b], 0
mov ecx, dword [0x10120324]
lea edx, [ebp - 0x88]
push edx
lea edx, [ebp - 0xf8]
mov dword [ebp - 0x120], 0
push edx
mov dword [ebp - 0x11c], 0
lea edx, [ebp - 0x150]
mov dword [ebp - 0x118], 0
mov dword [ebp - 0x110], 0
mov byte [ebp - 0x10c], 1
mov dword [ebp - 0x130], 0
mov dword [ebp - 0x12c], 0
mov dword [ebp - 0x128], 0
movss dword [ebp - 0x150], xmm4
movss dword [ebp - 0x14c], xmm5
movss dword [ebp - 0x148], xmm6
mov eax, dword [ecx]
push 0x46004003
push edx
call dword [eax + 0x14]
mov esi, dword [ebp - 0x3c]
mov dword [ebp - 0x8c], esi
test esi, esi
je case.0x10025771.4
mov eax, dword [0x10120334]
test eax, eax
jne 0x10025300
call fcn.100034c0
mov edx, 0xe80c2f78
mov ecx, 0x10110195
call fcn.100018f0
mov edx, 0xc10bf213
mov ecx, 0x101100ad
mov esi, eax
call fcn.100018f0
push esi
push eax
call fcn.1008e510
mov esi, dword [ebp - 0x8c]
mov dword [0x10120334], eax
cmp dword [eax + esi], 0
jle case.0x10025771.4
mov eax, dword [esi]
mov ecx, esi
mov eax, dword [eax + 0x278]
call eax
test al, al
je case.0x10025771.4
cmp esi, dword [0x10120420]
je case.0x10025771.4
mov eax, dword [0x101202e4]
test eax, eax
jne 0x1002536a
call fcn.100034c0
mov edx, 0xe80c2f78
mov ecx, 0x1011015d
call fcn.100018f0
mov edx, 0xc10bf213
mov ecx, 0x101100ad
mov esi, eax
call fcn.100018f0
push esi
push eax
call fcn.1008e510
mov esi, dword [ebp - 0x8c]
mov dword [0x101202e4], eax
cmp byte [eax + esi], 0
jne case.0x10025771.4
mov eax, dword [esi + 8]
lea ecx, [esi + 8]
mov eax, dword [eax + 0x24]
call eax
test al, al
jne case.0x10025771.4
mov ecx, dword [0x101202f4]
test ecx, ecx
jne 0x100253cb
call fcn.100034c0
mov edx, 0xe80c2f78
mov ecx, 0x101100e9
call fcn.100018f0
mov edx, 0xc10bf213
mov ecx, 0x101100ad
mov esi, eax
call fcn.100018f0
push esi
push eax
call fcn.1008e510
mov esi, dword [ebp - 0x8c]
mov ecx, eax
mov dword [0x101202f4], ecx
mov edx, dword [0x10120420]
lea eax, [ecx + esi]
mov dword [ebp - 0x9c], eax
mov dword [ebp - 0xcc], edx
test ecx, ecx
jne 0x10025424
call fcn.100034c0
mov edx, 0xe80c2f78
mov ecx, 0x101100e9
call fcn.100018f0
mov edx, 0xc10bf213
mov ecx, 0x101100ad
mov esi, eax
call fcn.100018f0
push esi
push eax
call fcn.1008e510
mov edx, dword [ebp - 0xcc]
mov ecx, eax
mov eax, dword [ebp - 0x9c]
mov dword [0x101202f4], ecx
mov eax, dword [eax]
cmp eax, dword [ecx + edx]
jne 0x10025438
cmp byte [ebp - 0xbf], 0
je case.0x10025771.4
mov eax, dword [0x101202e0]
test eax, eax
jne 0x10025472
call fcn.100034c0
mov edx, 0xe80c2f78
mov ecx, 0x101100a1
call fcn.100018f0
mov edx, 0xc10bf213
mov ecx, 0x101100ad
mov esi, eax
call fcn.100018f0
push esi
push eax
call fcn.1008e510
mov dword [0x101202e0], eax
mov ecx, dword [ebp - 0x8c]
test byte [eax + ecx], 1
jne 0x1002548b
cmp byte [ebp - 0xbb], 0
jne case.0x10025771.4
mov ecx, dword [0x10120420]
mov dword [ebp - 0x9c], ecx
test eax, eax
jne 0x100254d2
call fcn.100034c0
mov edx, 0xe80c2f78
mov ecx, 0x101100a1
call fcn.100018f0
mov edx, 0xc10bf213
mov ecx, 0x101100ad
mov esi, eax
call fcn.100018f0
push esi
push eax
call fcn.1008e510
mov ecx, dword [ebp - 0x9c]
mov dword [0x101202e0], eax
test byte [eax + ecx], 1
jne 0x100254e5
cmp byte [ebp - 0xbc], 0
jne case.0x10025771.4
movq xmm0, qword [ebp - 0x7c]
lea eax, [ebp - 0x1ac]
mov ecx, dword [0x10120420]
mov esi, dword [ebp - 0x74]
push eax
movq qword [ebp - 0xf0], xmm0
call fcn.10001ad0
mov ecx, dword [0x101202c4]
movq xmm0, qword [eax]
mov eax, dword [eax + 8]
mov dword [ebp - 0x9c], eax
mov eax, dword fs:[0x2c]
movq qword [ebp - 0xe0], xmm0
mov ecx, dword [eax + ecx*4]
mov eax, dword [0x10120a10]
cmp eax, dword [ecx + 4]
jle 0x1002557d
push 0x10120a10
call fcn.100f24cd
add esp, 4
cmp dword [0x10120a10], 0xffffffff
jne 0x1002557d
mov edx, str.55_8B_EC_83_EC_08_8B_15_________0F_57_C0
mov dword [ebp - 4], 0
mov ecx, 0x10110094
call fcn.1006a820
push 0x10120a10
mov dword [0x10120a14], eax
mov dword [ebp - 4], 0xffffffff
call fcn.100f2483
add esp, 4
movq xmm0, qword [ebp - 0xf0]
sub esp, 0xc
mov ecx, dword [ebp - 0x9c]
mov eax, esp
sub esp, 0xc
movq qword [eax], xmm0
movq xmm0, qword [ebp - 0xe0]
mov dword [eax + 8], esi
mov eax, esp
movq qword [eax], xmm0
mov dword [eax + 8], ecx
call dword [0x10120a14]
add esp, 0x18
test al, al
je 0x100255c5
cmp byte [ebp - 0xbd], 0
jne case.0x10025771.4
mov eax, dword [0x10120420]
mov dword [ebp - 0x9c], eax
mov eax, dword [0x1012032c]
test eax, eax
jne 0x1002560a
call fcn.100034c0
mov edx, 0xe80c2f78
mov ecx, 0x10110181
call fcn.100018f0
mov edx, 0xc10bf213
mov ecx, 0x101100ad
mov esi, eax
call fcn.100018f0
push esi
push eax
call fcn.1008e510
mov dword [0x1012032c], eax
mov ecx, dword [ebp - 0x9c]
movss xmm0, dword [eax + ecx]
comiss xmm0, dword [0x10116f8c]
jbe 0x1002562b
cmp byte [ebp - 0xbe], 0
jne case.0x10025771.4
cmp byte [ebp - 0xab], 0
je 0x10025762
mov eax, dword [edi]
mov ecx, edi
mov eax, dword [eax + 0x734]
call eax
cmp dword [eax + 0xc8], 1
jne 0x10025762
mov eax, dword [0x10120420]
mov dword [ebp - 0x9c], eax
mov eax, dword [0x10120338]
test eax, eax
jne 0x10025696
call fcn.100034c0
mov edx, 0xe80c2f78
mov ecx, 0x101101b1
call fcn.100018f0
mov edx, 0xc10bf213
mov ecx, 0x101100ad
mov esi, eax
call fcn.100018f0
push esi
push eax
call fcn.1008e510
mov dword [0x10120338], eax
mov ecx, dword [ebp - 0x9c]
movd xmm0, dword [eax + ecx]
mov eax, dword [0x101202ec]
cvtdq2ps xmm0, xmm0
mulss xmm0, dword [eax + 0x20]
mov eax, dword [0x10120310]
movss dword [ebp - 0x9c], xmm0
test eax, eax
jne 0x100256f0
call fcn.100034c0
mov edx, 0xe80c2f78
mov ecx, 0x10110139
call fcn.100018f0
mov edx, 0xc10bf213
mov ecx, 0x1011010d
mov esi, eax
call fcn.100018f0
push esi
push eax
call fcn.1008e510
mov dword [0x10120310], eax
movss xmm0, dword [eax + edi]
xorps xmm1, xmm1
subss xmm0, dword [ebp - 0x9c]
comiss xmm0, xmm1
jbe 0x10025762
mov eax, dword [0x101202d4]
test eax, eax
jne 0x1002573f
call fcn.100034c0
mov edx, 0xe80c2f78
mov ecx, 0x10110121
call fcn.100018f0
mov edx, 0xc10bf213
mov ecx, 0x101100f5
mov esi, eax
call fcn.100018f0
push esi
push eax
call fcn.1008e510
mov dword [0x101202d4], eax
cmp word [eax + edi], 0x40
mov edx, dword [ebp - 0xa4]
mov ecx, dword [edx + 0x30]
jne 0x1002575a
and ecx, 0xfffff7ff
mov dword [edx + 0x30], ecx
jmp 0x10025768
and ecx, 0xfffffffe
mov dword [edx + 0x30], ecx
jmp 0x10025768
mov edx, dword [ebp - 0xa4]
mov eax, dword [ebp - 0x44]
dec eax
cmp eax, 7
ja case.0x10025771.4
jmp dword [eax*4 + 0x100257f0]
mov al, byte [ebp - 0xb0]
jmp 0x1002579e
mov al, byte [ebp - 0xaf]
jmp 0x1002579e
mov al, byte [ebp - 0xae]
jmp 0x1002579e
mov al, byte [ebp - 0xad]
jmp 0x1002579e
mov al, byte [ebp - 0xac]
test al, al
je case.0x10025771.4
or dword [edx + 0x30], 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.100f238c
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 4