Function at 0x456a10
Capabilities:
Encode data using xor
Encrypt data using aes
Encrypt data using rc4 ksa
Reference aes constants

Disassembly:
push 0xffffffffffffffff
push 0x4972df
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xa4
mov eax, dword [0x4c4108]
push ebp
push esi
mov ebp, ecx
mov ecx, dword [esp + 0xbc]
xor esi, esi
cmp ecx, esi
mov dword [esp + 0xa8], eax
push edi
jne 0x456a9d
mov edx, dword [str.Encrypt_ERROR:_No_Key_DataSpecified_]
mov eax, edx
mov dword [esp + 0x38], 0xf
mov dword [esp + 0x34], esi
mov byte [esp + 0x24], 0
lea edi, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x456a65
sub eax, edi
push eax
push edx
lea ecx, [esp + 0x28]
call fcn.00402400
lea eax, [esp + 0x20]
push eax
lea ecx, [esp + 0x40]
mov dword [esp + 0xbc], esi
call fcn.0044ffba
push 0x4bce60
lea ecx, [esp + 0x40]
push ecx
call fcn.0043c41d
mov eax, dword [esp + 0xc4]
mov edi, 1
cmp eax, edi
jge 0x456b08
mov edx, dword [str.Encrypt_ERROR:_Key_Data_Length_should_be___0_]
mov eax, edx
mov dword [esp + 0x34], esi
mov dword [esp + 0x38], 0xf
mov byte [esp + 0x24], 0
lea esi, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x456ad0
sub eax, esi
push eax
push edx
lea ecx, [esp + 0x28]
call fcn.00402400
lea edx, [esp + 0x20]
push edx
lea ecx, [esp + 0x40]
mov dword [esp + 0xbc], edi
call fcn.0044ffba
push 0x4bce60
lea eax, [esp + 0x40]
push eax
call fcn.0043c41d
push ebx
mov ebx, dword [esp + 0xd0]
cmp ebx, 0x10
je 0x456b51
cmp ebx, 0x18
je 0x456b51
cmp ebx, 0x20
je 0x456b51
push str.Illegal_Key_Length_
lea ecx, [esp + 0x28]
call fcn.00402190
push eax
lea ecx, [esp + 0x44]
mov dword [esp + 0xc0], 2
call fcn.0044ffba
push 0x4bce60
lea ecx, [esp + 0x44]
push ecx
call fcn.0043c41d
mov edi, dword [esp + 0xd4]
cmp edi, 0x10
je 0x456b9b
cmp edi, 0x18
je 0x456b9b
cmp edi, 0x20
je 0x456b9b
mov edx, dword [str.Illegal_Block_Size_]
push edx
lea ecx, [esp + 0x28]
call fcn.00402190
push eax
lea ecx, [esp + 0x44]
mov dword [esp + 0xc0], 3
call fcn.0044ffba
push 0x4bce60
lea eax, [esp + 0x44]
push eax
call fcn.0043c41d
mov edx, dword [esp + 0xd8]
cmp edx, esi
jl 0x45702e
cmp edx, 2
jg 0x45702e
mov eax, dword [esp + 0xdc]
cmp eax, esi
jl 0x456ff5
cmp eax, 2
jg 0x456ff5
mov dword [ebp + 0x10], edx
xor edx, edx
cmp ebx, esi
mov dword [ebp + 0x14], eax
jle 0x456bf7
jmp 0x456be0
mov al, byte [edx + ecx]
mov byte [esp + esi + 0x68], al
lea eax, [edx + 1]
cdq
idiv dword [esp + 0xc8]
inc esi
cmp esi, ebx
jl 0x456be0
mov esi, dword [esp + 0xcc]
mov ecx, edi
mov edx, ecx
shr ecx, 2
mov dword [ebp + 8], edi
lea eax, [ebp + 0x3dc]
mov edi, eax
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebp + 8]
mov esi, eax
mov eax, ecx
shr ecx, 2
lea edi, [ebp + 0x3fc]
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, ebx
mov edx, ecx
shr ecx, 2
mov dword [ebp + 0xc], ebx
lea esi, [esp + 0x68]
lea edi, [ebp + 0x18]
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [ebp + 0xc]
cmp eax, 0x10
je 0x456c76
cmp eax, 0x18
je 0x456c65
mov dword [ebp + 0x3d8], 0xe
jmp 0x456c99
mov ecx, dword [ebp + 8]
xor eax, eax
cmp ecx, 0x20
sete al
lea eax, [eax + eax + 0xc]
jmp 0x456c93
mov eax, dword [ebp + 8]
cmp eax, 0x10
jne 0x456c85
mov eax, 0xa
jmp 0x456c93
xor ecx, ecx
cmp eax, 0x18
setne cl
lea ecx, [ecx + ecx + 0xc]
mov eax, ecx
mov dword [ebp + 0x3d8], eax
mov eax, dword [ebp + 8]
cdq
and edx, 3
add eax, edx
mov ebx, eax
mov eax, dword [ebp + 0x3d8]
sar ebx, 2
xor edx, edx
test eax, eax
mov dword [esp + 0x1c], ebx
jl 0x456cda
lea esi, [ebp + 0x38]
lea ebx, [ebx]
test ebx, ebx
jle 0x456ccc
mov ecx, ebx
xor eax, eax
mov edi, esi
rep stosd dword es:[edi], eax
mov eax, dword [ebp + 0x3d8]
inc edx
add esi, 0x20
cmp edx, eax
jle 0x456cc0
mov eax, dword [ebp + 0x3d8]
xor edx, edx
test eax, eax
jl 0x456d0a
lea esi, [ebp + 0x1f8]
lea esp, [esp]
test ebx, ebx
jle 0x456cfc
mov ecx, ebx
xor eax, eax
mov edi, esi
rep stosd dword es:[edi], eax
mov eax, dword [ebp + 0x3d8]
inc edx
add esi, 0x20
cmp edx, eax
jle 0x456cf0
mov eax, dword [ebp + 0x3d8]
inc eax
imul eax, ebx
mov dword [esp + 0x18], eax
mov eax, dword [ebp + 0xc]
cdq
and edx, 3
add eax, edx
mov esi, eax
sar esi, 2
test esi, esi
lea ecx, [ebp + 0x41c]
lea eax, [esp + 0x68]
jle 0x456d60
mov edi, esi
movzx edx, byte [eax]
shl edx, 0x18
mov dword [ecx], edx
movzx edx, byte [eax + 1]
inc eax
shl edx, 0x10
or dword [ecx], edx
xor edx, edx
mov dh, byte [eax + 1]
inc eax
add ecx, 4
or dword [ecx - 4], edx
movzx edx, byte [eax + 1]
or dword [ecx - 4], edx
inc eax
inc eax
dec edi
jne 0x456d36
xor edi, edi
test esi, esi
mov dword [esp + 0x20], edi
jle 0x456db4
lea ecx, [ebp + 0x41c]
mov dword [esp + 0x14], ecx
cmp edi, dword [esp + 0x18]
jge 0x456db0
mov eax, edi
cdq
idiv ebx
mov ecx, dword [ecx]
lea ebx, [edx + eax*8]
mov dword [ebp + ebx*4 + 0x38], ecx
mov ecx, dword [ebp + 0x3d8]
mov ebx, dword [esp + 0x1c]
sub ecx, eax
lea edx, [edx + ecx*8]
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx]
inc edi
add ecx, 4
cmp edi, esi
mov dword [ebp + edx*4 + 0x1f8], eax
mov dword [esp + 0x14], ecx
jl 0x456d74
mov dword [esp + 0x20], edi
cmp edi, dword [esp + 0x18]
jge 0x456f43
mov dword [esp + 0x14], 0x4b1490
jmp 0x456dd0
mov eax, dword [ebp + esi*4 + 0x418]
mov ecx, eax
shr ecx, 0x10
movzx ecx, cl
movsx edx, byte [ecx + str.cw]
mov ecx, dword [esp + 0x14]
movsx ecx, byte [ecx]
xor edx, ecx
movzx ecx, ah
movzx ecx, byte [ecx + str.cw]
mov dword [esp + 0x10], eax
shl edx, 8
xor edx, ecx
mov ecx, dword [esp + 0x10]
and eax, 0xff
movzx eax, byte [eax + str.cw]
shl edx, 8
xor edx, eax
shr ecx, 0x18
movzx eax, byte [ecx + str.cw]
mov ecx, dword [esp + 0x14]
shl edx, 8
xor edx, eax
mov eax, dword [ebp + 0x41c]
xor eax, edx
inc ecx
cmp esi, 8
mov dword [ebp + 0x41c], eax
mov dword [esp + 0x14], ecx
je 0x456e64
cmp esi, 1
jle 0x456ee1
lea eax, [ebp + 0x420]
lea ecx, [esi - 1]
mov edx, dword [eax - 4]
xor dword [eax], edx
add eax, 4
dec ecx
jne 0x456e54
jmp 0x456ee1
lea eax, [ebp + 0x420]
mov ecx, 3
nop
mov edx, dword [eax - 4]
xor dword [eax], edx
add eax, 4
dec ecx
jne 0x456e70
mov eax, dword [ebp + 0x428]
mov ecx, eax
shr ecx, 0x18
movsx edx, byte [ecx + str.cw]
mov ecx, eax
shr ecx, 0x10
movzx ecx, cl
movzx ecx, byte [ecx + str.cw]
shl edx, 8
xor edx, ecx
movzx ecx, ah
movzx ecx, byte [ecx + str.cw]
mov dword [esp + 0x10], eax
shl edx, 8
and eax, 0xff
movzx eax, byte [eax + str.cw]
xor edx, ecx
shl edx, 8
xor edx, eax
xor dword [ebp + 0x42c], edx
lea eax, [ebp + 0x430]
mov ecx, 3
mov edx, dword [eax - 4]
xor dword [eax], edx
add eax, 4
dec ecx
jne 0x456ed6
test esi, esi
mov dword [esp + 0x10], 0
jle 0x456f39
lea ecx, [ebp + 0x41c]
cmp edi, dword [esp + 0x18]
jge 0x456f43
mov eax, edi
cdq
idiv ebx
mov ebx, dword [ecx]
add ecx, 4
lea edi, [edx + eax*8]
mov dword [ebp + edi*4 + 0x38], ebx
mov edi, dword [ebp + 0x3d8]
mov ebx, dword [esp + 0x1c]
sub edi, eax
lea eax, [edx + edi*8]
mov edx, dword [ecx - 4]
mov edi, dword [esp + 0x20]
mov dword [ebp + eax*4 + 0x1f8], edx
mov eax, dword [esp + 0x10]
inc eax
inc edi
cmp eax, esi
mov dword [esp + 0x10], eax
mov dword [esp + 0x20], edi
jl 0x456ef3
cmp edi, dword [esp + 0x18]
jl 0x456dd0
mov ecx, dword [ebp + 0x3d8]
mov eax, 1
cmp ecx, eax
mov dword [esp + 0x14], eax
jle 0x456fca
lea ecx, [ebp + 0x218]
mov dword [esp + 0x18], ecx
test ebx, ebx
jle 0x456fac
mov edx, ebx
jmp 0x456f70
mov eax, dword [ecx]
mov dword [esp + 0x10], eax
movzx edi, byte [esp + 0x12]
mov esi, eax
shr esi, 0x18
mov esi, dword [esi*4 + 0x4b0490]
xor esi, dword [edi*4 + 0x4b0890]
movzx edi, ah
xor esi, dword [edi*4 + 0x4b0c90]
and eax, 0xff
xor esi, dword [eax*4 + 0x4b1090]
mov dword [ecx], esi
add ecx, 4
dec edx
jne 0x456f70
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov edx, dword [ebp + 0x3d8]
inc eax
add ecx, 0x20
cmp eax, edx
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], ecx
jl 0x456f60
mov ecx, dword [esp + 0xb4]
pop ebx
pop edi
mov byte [ebp + 4], 1
pop esi
mov dword fs:[0], ecx
mov ecx, dword [esp + 0xa4]
pop ebp
call fcn.0043ee9b
add esp, 0xb0
ret 0x1c
mov eax, dword [str.Encrypt_ERROR:_Illegal_Padding_Mode_]
push eax
lea ecx, [esp + 0x6c]
call fcn.00402190
push eax
lea ecx, [esp + 0x8c]
mov dword [esp + 0xc0], 5
call fcn.0044ffba
push 0x4bce60
lea ecx, [esp + 0x8c]
push ecx
call fcn.0043c41d
mov edx, dword [str.Encrypt_ERROR:_Illegal_Operation_Mode_]
push edx
lea ecx, [esp + 0x28]
call fcn.00402190
push eax
lea ecx, [esp + 0x44]
mov dword [esp + 0xc0], 4
call fcn.0044ffba
push 0x4bce60
lea eax, [esp + 0x44]
push eax
call fcn.0043c41d
int3