Function at 0x1004a3cc
Capabilities:
Encode data using xor
Hash data using fnv
Log keystrokes

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x10151380
mov eax, dword fs:[0]
push eax
sub esp, 0x124
mov eax, dword [0x1020d838]
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
mov edi, ecx
xor eax, eax
mov dword [ebp - 0x18], eax
mov word [ebp - 0x14], ax
cmp byte [edi + 0x3c], al
je 0x1004a34f
push str.SET__
lea eax, [ebp - 0x18]
push 6
push eax
call fcn.1000ee90
xor esi, esi
add esp, 0xc
mov dword [ebp - 0x7c], esi
xor ebx, ebx
nop dword [eax + eax]
push esi
push 0x101660a8
push 0x10166094
call fcn.1011f540
cmp eax, 0x101660a8
jne 0x1004a341
mov eax, dword [ebp + 8]
cmp dword [eax + ebx*8 + 4], 1
jne 0x1004a341
mov eax, dword [edi + 0x44]
lea ecx, [edi + 0x40]
cmp eax, dword [edi + 0x48]
je 0x1004a334
mov dword [eax], esi
add dword [edi + 0x44], 4
jmp 0x1004a341
lea edx, [ebp - 0x7c]
push edx
push eax
call fcn.10048130
mov esi, dword [ebp - 0x7c]
inc esi
mov ebx, esi
mov dword [ebp - 0x7c], esi
cmp ebx, 0x100
jb 0x1004a300
call fcn.10076b40
fadd dword [0x101661a4]
push ecx
fstp dword [esp]
call fcn.10075f80
add esp, 4
lea ecx, [ebp - 0x130]
push 1
call fcn.100484c0
mov eax, dword [edi + 0x44]
lea ebx, [edi + 0x40]
mov esi, dword [ebx]
mov dword [ebp - 4], 0
mov dword [ebp - 0x7c], eax
cmp esi, eax
je 0x1004a4f7
nop dword [eax]
mov ecx, dword [esi]
lea eax, [ecx - 0x10]
cmp eax, 0xab
ja case.0x1004a3a7.18
movzx eax, byte [eax + 0x1004aa20]
jmp dword [eax*4 + 0x1004a9b0]
mov eax, str.Shift
jmp 0x1004a4b1
mov eax, str.Ctrl
jmp 0x1004a4b1
mov eax, str.Page_Up
jmp 0x1004a4b1
mov eax, str.Page_Down
jmp 0x1004a4b1
mov eax, 0x10166018
jmp 0x1004a4b1
mov eax, str.Home
jmp 0x1004a4b1
mov eax, str.Insert
jmp 0x1004a4b1
mov eax, str.Delete
jmp 0x1004a4b1
mov eax, 0x1016602c
jmp 0x1004a4b1
mov eax, 0x10166030
jmp 0x1004a4b1
mov eax, 0x10166034
jmp 0x1004a4b1
mov eax, 0x10166038
jmp 0x1004a4b1
mov eax, 0x1016603c
jmp 0x1004a4b1
mov eax, 0x10166040
jmp 0x1004a4b1
mov eax, 0x10166044
jmp 0x1004a4b1
mov eax, 0x10166048
jmp 0x1004a4b1
mov eax, 0x1016604c
jmp 0x1004a4b1
mov eax, 0x10166050
jmp 0x1004a4b1
mov eax, 0x10166054
jmp 0x1004a4b1
mov eax, 0x10166058
jmp 0x1004a4b1
mov eax, 0x1016605c
jmp 0x1004a4b1
mov eax, str.LShift
jmp 0x1004a4b1
mov eax, str.RShift
jmp 0x1004a4b1
mov eax, str.LCtrl
jmp 0x1004a4b1
mov eax, str.RCtrl
jmp 0x1004a4b1
mov eax, str.LAlt
jmp 0x1004a4b1
mov eax, str.RAlt
jmp 0x1004a4b1
push 2
push ecx
call dword [sym.imp.USER32.dll_MapVirtualKeyA]
mov cl, al
test cl, cl
jne 0x1004a4a8
mov eax, 0x10166090
jmp 0x1004a4b1
lea eax, [edi + 0x3d]
mov byte [edi + 0x3e], 0
mov byte [eax], cl
push eax
lea eax, [ebp - 0x130]
push eax
call fcn.1003efd0
mov ecx, dword [ebx + 4]
add esp, 8
mov eax, ecx
sub eax, dword [ebx]
sar eax, 2
cmp eax, 1
jbe 0x1004a4eb
mov eax, dword [esi]
cmp eax, dword [ecx - 4]
je 0x1004a4eb
lea eax, [ebp - 0x130]
push 0x101660c0
push eax
call fcn.1003efd0
add esp, 8
add esi, 4
cmp esi, dword [ebp - 0x7c]
jne 0x1004a390
cmp dword [edi + 0x20], 0x10
lea esi, [edi + 0xc]
jb 0x1004a502
mov esi, dword [esi]
lea eax, [ebp - 0x30]
push eax
lea ecx, [ebp - 0x12c]
call fcn.1004b0a0
cmp dword [ebp - 0x1c], 0x10
lea eax, [ebp - 0x30]
push esi
cmovae eax, dword [ebp - 0x30]
push eax
lea eax, [ebp - 0x18]
mov byte [ebp - 4], 1
push eax
push str._s__s____s
call fcn.100bc710
mov ecx, dword [ebp - 0x1c]
add esp, 0x10
mov byte [ebp - 4], 0
cmp ecx, 0x10
jb 0x1004a56b
mov edx, dword [ebp - 0x30]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x1004a561
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x1004a9a4
push ecx
push edx
call fcn.1011fcc5
add esp, 8
lea eax, [ebp - 0x8c]
push eax
call fcn.10075260
mov dword [esp], 0xbf800000
push ecx
movss xmm0, dword [eax]
subss xmm0, dword [0x101661a0]
movss dword [esp], xmm0
call fcn.100762a0
add esp, 8
cmp byte [edi + 0x3c], 0
je 0x1004a67d
call fcn.10079880
fstp qword [ebp - 0x84]
movsd xmm0, qword [ebp - 0x84]
call fcn.10126af0
xorps xmm1, xmm1
lea eax, [ebp - 0x80]
cvtsd2ss xmm1, xmm0
push eax
lea eax, [ebp - 0x90]
push eax
lea eax, [ebp - 0x7c]
push eax
mulss xmm1, dword [0x101574d8]
sub esp, 0xc
addss xmm1, dword [0x101574d8]
mov dword [esp + 8], 0x3f800000
mov dword [esp + 4], 0x3f400000
movss dword [esp], xmm1
call fcn.1007a4c0
movss xmm0, dword [ebp - 0x7c]
lea eax, [ebp - 0x28]
movss dword [ebp - 0x28], xmm0
movss xmm0, dword [ebp - 0x90]
movss dword [ebp - 0x24], xmm0
movss xmm0, dword [ebp - 0x80]
push eax
movss dword [ebp - 0x20], xmm0
mov dword [ebp - 0x1c], 0x3f800000
call fcn.1007a290
mov esi, eax
lea eax, [ebp - 0x8c]
push eax
call fcn.10079620
lea eax, [ebp - 0x98]
push eax
call fcn.10079660
movss xmm0, dword [ebp - 0x94]
movss dword [ebp - 0x88], xmm0
call fcn.100749d0
add esp, 0x20
lea ecx, [ebp - 0x98]
mov dword [esp], 0x40000000
push esi
push ecx
lea ecx, [ebp - 0x8c]
push ecx
mov ecx, eax
call fcn.100a1670
call fcn.10075fe0
mov eax, dword [0x102158b8]
test al, 1
jne 0x1004a6a7
or eax, 1
mov dword [0x102158b8], eax
mov dword [0x102158b0], 0x42200000
mov dword [0x102158b4], 0x41700000
lea eax, [edi + 0x24]
push eax
lea eax, [ebp - 0x60]
push 0x101660d0
push eax
call fcn.10047f00
add esp, 0xc
cmp dword [ebp - 0x4c], 0x10
lea esi, [ebp - 0x60]
mov byte [ebp - 4], 2
mov edx, 0x811c9dc5
cmovae esi, dword [ebp - 0x60]
xor ecx, ecx
cmp dword [ebp - 0x50], ecx
jbe 0x1004a6e9
movzx eax, byte [ecx + esi]
inc ecx
xor eax, edx
imul edx, eax, 0x1000193
cmp ecx, dword [ebp - 0x50]
jb 0x1004a6d7
push edx
call fcn.10077150
push 0x102158b0
push 0x101660d8
call fcn.100bcf90
add esp, 0xc
test al, al
je 0x1004a713
mov byte [edi + 0x3c], 1
mov eax, dword [ebx]
cmp eax, dword [ebx + 4]
je 0x1004a713
mov dword [ebx + 4], eax
lea eax, [ebp - 0x8c]
push eax
call fcn.10075260
mov dword [esp], 0xbf800000
push ecx
movss xmm0, dword [eax]
subss xmm0, dword [0x1016619c]
movss dword [esp], xmm0
call fcn.100762a0
call fcn.100771e0
lea eax, [edi + 0x24]
push eax
lea eax, [ebp - 0x48]
push 0x101660dc
push eax
call fcn.10047f00
add esp, 0x14
cmp dword [ebp - 0x34], 0x10
lea esi, [ebp - 0x48]
mov byte [ebp - 4], 3
mov edx, 0x811c9dc5
cmovae esi, dword [ebp - 0x48]
xor ecx, ecx
cmp dword [ebp - 0x38], ecx
jbe 0x1004a784
movzx eax, byte [ecx + esi]
inc ecx
xor eax, edx
imul edx, eax, 0x1000193
cmp ecx, dword [ebp - 0x38]
jb 0x1004a772
push edx
call fcn.10077150
push 0x102158b0
push str.save
call fcn.100bcf90
add esp, 0xc
test al, al
je 0x1004a7a4
mov byte [edi + 0x3c], 0
lea eax, [ebp - 0x8c]
push eax
call fcn.10075260
mov dword [esp], 0xbf800000
push ecx
movss xmm0, dword [eax]
subss xmm0, dword [0x10166198]
movss dword [esp], xmm0
call fcn.100762a0
call fcn.100771e0
lea eax, [edi + 0x24]
push eax
lea eax, [ebp - 0x78]
push str.clear1
push eax
call fcn.10047f00
add esp, 0x14
cmp dword [ebp - 0x64], 0x10
lea eax, [ebp - 0x78]
mov esi, dword [ebp - 0x78]
mov edx, 0x811c9dc5
cmovae eax, esi
mov byte [ebp - 4], 4
xor ecx, ecx
cmp dword [ebp - 0x68], ecx
jbe 0x1004a81c
mov ebx, eax
movzx eax, byte [ecx + ebx]
inc ecx
xor eax, edx
imul edx, eax, 0x1000193
cmp ecx, dword [ebp - 0x68]
jb 0x1004a807
lea ebx, [edi + 0x40]
push edx
call fcn.10077150
push 0x102158b0
push str.clear
call fcn.100bcf90
add esp, 0xc
test al, al
je 0x1004a85d
mov eax, dword [ebx]
cmp eax, dword [ebx + 4]
je 0x1004a842
mov dword [ebx + 4], eax
mov byte [edi + 0x3c], 0
cmp ebx, edi
je 0x1004a85d
mov edx, dword [edi]
mov ecx, ebx
mov eax, dword [edi + 4]
sub eax, edx
sar eax, 2
push eax
push edx
call fcn.10047fd0
call fcn.100771e0
mov eax, dword [ebp - 0x64]
mov byte [ebp - 4], 3
cmp eax, 0x10
jb 0x1004a899
lea ecx, [eax + 1]
mov eax, esi
cmp ecx, 0x1000
jb 0x1004a88f
mov esi, dword [eax - 4]
add ecx, 0x23
sub eax, esi
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x1004a9a9
push ecx
push esi
call fcn.1011fcc5
add esp, 8
mov eax, dword [ebp - 0x34]
mov byte [ebp - 4], 2
cmp eax, 0x10
jb 0x1004a8d3
mov edx, dword [ebp - 0x48]
lea ecx, [eax + 1]
mov eax, edx
cmp ecx, 0x1000
jb 0x1004a8c9
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x1004a9a9
push ecx
push edx
call fcn.1011fcc5
add esp, 8
mov eax, dword [ebp - 0x4c]
mov byte [ebp - 4], 0
cmp eax, 0x10
jb 0x1004a90d
mov edx, dword [ebp - 0x60]
lea ecx, [eax + 1]
mov eax, edx
cmp ecx, 0x1000
jb 0x1004a903
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x1004a9a9
push ecx
push edx
call fcn.1011fcc5
add esp, 8
mov eax, dword [ebp - 0x130]
mov eax, dword [eax + 4]
mov dword [ebp + eax - method.std::basic_ostringstream_char__struct_std::char_traits_char___class_std::allocator_char__.virtual_0], vtable.std::basic_ostringstream_char__struct_std::char_traits_char___class_std::allocator_char__.0
mov eax, dword [ebp - 0x130]
mov ecx, dword [eax + 4]
lea eax, [ecx - 0x50]
mov dword [ebp + ecx - 0x134], eax
lea ecx, [ebp - 0x12c]
call fcn.10040150
mov eax, dword [ebp - 0x130]
mov eax, dword [eax + 4]
mov dword [ebp + eax - method.std::basic_ostream_char__struct_std::char_traits_char__.virtual_0], vtable.std::basic_ostream_char__struct_std::char_traits_char__.0
mov eax, dword [ebp - 0x130]
mov ecx, dword [eax + 4]
lea eax, [ecx - 8]
mov dword [ebp + ecx - 0x134], eax
lea eax, [ebp - 0xe0]
mov dword [ebp - 4], 5
push eax
mov dword [ebp - 0xe0], vtable.std::ios_base.0
call fcn.1011f36e
add esp, 4
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.1011fcd3
mov esp, ebp
pop ebp
ret 4
call fcn.1012687f
call fcn.1012687f
nop
scasb al, byte es:[edi]
mov dword [-1548218364], eax
add al, 0x10
ret 0x4a3