Function at 0x40de57
Capabilities:
Encode data using xor
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1a0
mov dword [ebp - 0x68], ecx
mov eax, 0x4019b0
xor ecx, ecx
mov edx, ecx
inc edx
lea eax, [eax + 2]
cmp edx, 0x4a3
jg 0x40de7f
cmp word [eax], cx
jne 0x40de6c
jmp 0x40de8e
call fcn.0040cc68
and dword [0x44d454], 0x13e61d63
or dword [0x44d4e0], 0x355de5a2
push esi
push edi
call dword [sym.imp.USER32.dll_GetMessageExtraInfo]
mov ecx, dword [0x44d4e0]
mov dword [ebp - 0x24], 0x40
mov dword [ebp - 0x20], 0x57
mov dword [ebp - 0x1c], 0x53
mov dword [ebp - 0x18], 0xfffffff1
lea esi, [ecx - 0x1d050918]
movups xmm1, xmmword [ebp - 0x24]
mov dword [ebp - 0x5c], 0xe6147403
mov dword [ebp - 0x58], 0x611ba68f
movaps xmm0, xmm1
mov dword [ebp - 0x54], 0xbcaa4a1
psrldq xmm0, 8
paddd xmm1, xmm0
mov dword [ebp - 0x50], 0x517be547
movups xmm0, xmm1
mov dword [ebp - 0x4c], 0x5acfd1e8
psrldq xmm0, 4
paddd xmm1, xmm0
mov dword [ebp - 0x48], 0x6ad88470
movd eax, xmm1
mov dword [ebp - 0x44], 0x42579952
mov dword [ebp - 0x40], 0x1d8b5d65
add eax, 0x29
mov dword [ebp - 0x3c], 0xbc6ab5d9
mov dword [ebp - 0x64], eax
xor eax, eax
mov dword [ebp - 0x38], 0x8e12a586
mov dword [ebp - 0x34], 0x60276584
cmp byte [0x44d438], al
je 0x40df6d
inc eax
cmp eax, 0x2431
jg 0x40df5f
cmp byte [eax + 0x44d438], 0
jne 0x40df45
cmp eax, 0x122e
jle 0x40df6d
jmp 0x40df67
mov esi, ecx
or esi, 0x12da28ca
or esi, 0x2c297299
mov eax, dword [0x40164c]
or esi, 0xd6f43dcb
and dword [ebp - 8], 0
mov dword [ebp - 0x10], eax
mov ax, word [0x401650]
mov word [ebp - 0xc], ax
xor eax, eax
mov dword [ebp - 0x60], esi
mov byte [ebp + eax - 0x170], al
inc eax
cmp eax, 0x100
jb 0x40df8e
mov esi, dword [ebp - 8]
xor edi, edi
mov dword [ebp - 0x30], 5
xor edx, edx
mov cl, byte [ebp + edi - 0x170]
mov eax, edi
mov byte [ebp - 1], cl
div dword [ebp - 0x30]
movzx ecx, cl
movzx eax, byte [ebp + edx - 0x10]
add eax, esi
add ecx, eax
movzx esi, cl
mov al, byte [ebp + esi - 0x170]
mov byte [ebp + edi - 0x170], al
inc edi
mov al, byte [ebp - 1]
mov byte [ebp + esi - 0x170], al
cmp edi, 0x100
jb 0x40dfa9
and dword [ebp - 8], 0
xor edi, edi
mov eax, dword [ebp - 0x60]
and dword [ebp - 0x14], 0
add eax, 0xaecf89b2
mov esi, dword [ebp - 8]
mov dword [0x44d454], eax
lea eax, [esi + 1]
movzx esi, al
mov eax, dword [ebp - 0x14]
mov cl, byte [ebp + esi - 0x170]
movzx edx, cl
add eax, edx
movzx eax, al
mov dword [ebp - 0x14], eax
mov al, byte [ebp + eax - 0x170]
mov byte [ebp + esi - 0x170], al
mov eax, dword [ebp - 0x14]
mov byte [ebp + eax - 0x170], cl
movzx eax, byte [ebp + esi - 0x170]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x170]
xor al, byte [ebp + edi - 0x5c]
mov byte [ebp + edi - 0x1a0], al
inc edi
cmp edi, 0x2c
jb 0x40e004
mov esi, 0x401654
mov word [ebp - 0x10], 0xfa1b
lea edi, [ebp - 0x20]
mov byte [ebp - 0xe], 0xd4
push 0xa
pop eax
movsd dword es:[edi], dword [esi]
xor ecx, ecx
mov dword [ebp - 8], eax
mov byte [ebp - 0xd], al
mov eax, ecx
mov byte [ebp - 0x174], cl
movsd dword es:[edi], dword [esi]
mov word [ebp - 0xc], 0xffe2
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
mov edi, ecx
mov byte [ebp + eax - 0x170], al
inc eax
cmp eax, 0x100
jb 0x40e08e
mov esi, ecx
xor edx, edx
mov cl, byte [ebp + esi - 0x170]
mov eax, esi
mov byte [ebp - 1], cl
div dword [ebp - 8]
movzx ecx, cl
movzx eax, byte [ebp + edx - 0x20]
add eax, edi
add ecx, eax
movzx edi, cl
mov al, byte [ebp + edi - 0x170]
mov byte [ebp + esi - 0x170], al
inc esi
mov al, byte [ebp - 1]
mov byte [ebp + edi - 0x170], al
cmp esi, 0x100
jb 0x40e09f
and dword [ebp - 0x14], 0
xor eax, eax
xor edi, edi
inc eax
movzx eax, al
mov dword [ebp - 8], eax
mov esi, dword [ebp - 8]
mov cl, byte [ebp + eax - 0x170]
mov eax, dword [ebp - 0x14]
movzx edx, cl
add eax, edx
movzx eax, al
mov dword [ebp - 0x14], eax
mov al, byte [ebp + eax - 0x170]
mov byte [ebp + esi - 0x170], al
mov eax, dword [ebp - 0x14]
mov esi, dword [ebp - 0x60]
xor esi, 0x15f1e5b
mov dword [ebp - 0x60], esi
mov byte [ebp + eax - 0x170], cl
mov eax, dword [ebp - 8]
mov dword [0x44d4e0], esi
movzx eax, byte [ebp + eax - 0x170]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x170]
xor al, byte [ebp + edi - 0x10]
mov byte [ebp + edi - 0x70], al
inc edi
mov eax, dword [ebp - 8]
cmp edi, 6
jb 0x40e0e8
mov eax, dword [ebp - 0x64]
lea ecx, [ebp - 0x70]
add eax, eax
mov byte [ebp - 0x6a], 0
mov dword [ebp - 0x64], eax
lea eax, [ebp - 0x64]
push eax
push dword [ebp - 0x68]
call fcn.0041e657
mov edx, eax
lea ecx, [ebp - 0x1a0]
call fcn.0041e636
call eax
test eax, eax
jne 0x40e356
and dword [ebp - 8], 0
push 5
pop eax
mov byte [ebp - 0x2b], al
mov eax, dword [0x401660]
mov dword [ebp - 0x10], eax
mov ax, word [0x401664]
mov word [ebp - 0xc], ax
xor eax, eax
mov byte [ebp - 0x2c], 0x65
mov dword [ebp - 0x2a], 0xd672a60e
mov dword [ebp - 0x26], 0x5bbd36d6
mov dword [ebp - 0x22], 0x5a198e42
mov dword [ebp - 0x1e], 0x5628824a
mov dword [ebp - 0x1a], 0xbd431ed8
mov word [ebp - 0x16], 0xd5ee
mov byte [ebp + eax - 0x170], al
inc eax
cmp eax, 0x100
jb 0x40e1d6
mov esi, dword [0x44d4e0]
xor edi, edi
movzx eax, byte [0x44d438]
mov edx, 0x98c
mov ecx, 0x44d438
jmp 0x40e212
add edx, eax
inc ecx
cmp edx, 0x1f5c
ja 0x40e35a
movzx eax, byte [ecx]
test eax, eax
jne 0x40e200
or esi, 0x26e7b924
lea eax, [esi - 0x7f571a8b]
mov cl, byte [ebp + edi - 0x170]
mov dword [0x44d454], eax
xor edx, edx
mov eax, edi
mov byte [ebp - 1], cl
div dword [ebp - 0x30]
movzx ecx, cl
movzx eax, byte [ebp + edx - 0x10]
add eax, dword [ebp - 8]
add ecx, eax
movzx ecx, cl
mov dword [ebp - 8], ecx
mov al, byte [ebp + ecx - 0x170]
mov byte [ebp + edi - 0x170], al
inc edi
mov al, byte [ebp - 1]
mov byte [ebp + ecx - 0x170], al
cmp edi, 0x100
jb 0x40e1ed
and dword [ebp - 8], 0
mov dword [ebp - 0x30], esi
xor esi, esi
xor edi, edi
lea eax, [esi + 1]
movzx esi, al
mov eax, dword [ebp - 8]
mov cl, byte [ebp + esi - 0x170]
movzx edx, cl
add eax, edx
movzx eax, al
mov dword [ebp - 8], eax
mov al, byte [ebp + eax - 0x170]
mov byte [ebp + esi - 0x170], al
mov eax, dword [ebp - 8]
mov byte [ebp + eax - 0x170], cl
movzx eax, byte [ebp + esi - 0x170]
add eax, edx
movzx eax, al
mov al, byte [ebp + eax - 0x170]
xor al, byte [ebp + edi - 0x2c]
mov byte [ebp + edi - 0x4c], al
inc edi
cmp edi, 0x18
jb 0x40e277
mov eax, dword [ebp - 0x30]
lea ecx, [ebp - 0x4c]
mov dword [ebp - 0x24], 0x34
xorps xmm1, xmm1
mov dword [ebp - 0x20], 0x33
add eax, 0x4b0d9c60
mov dword [ebp - 0x1c], 4
mov dword [ebp - 0x18], 0xffffff95
movups xmm0, xmmword [ebp - 0x24]
mov byte [ebp - 0x34], 0
mov dword [0x44d4e0], eax
psubd xmm1, xmm0
movaps xmm0, xmm1
psrldq xmm0, 8
paddd xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 4
paddd xmm1, xmm0
movd edi, xmm1
call fcn.004361ab
mov esi, eax
mov ecx, esi
call fcn.004369fb
add eax, eax
push eax
push esi
push dword [ebp - 0x68]
call fcn.00436044
mov ecx, esi
call fcn.004369fb
push eax
push edi
push esi
call fcn.004360de
add esp, 0x18
mov ecx, esi
call fcn.0041e600
pop edi
pop esi
leave
ret
mov eax, dword [0x44d454]
add eax, 0x15e2bb11
mov dword [0x44d4e0], eax
call dword [sym.imp.USER32.dll_GetMessageTime]
mov esi, dword [0x44d454]
add esi, 0x88110ed3
jmp 0x40e21c