Function at 0x652894f0
Capabilities:
Encode data using xor
Encrypt data using aes
Reference aes constants

Disassembly:
mov eax, dword [esp + 0xc]
sub esp, 0x20
cmp eax, 0x80
je 0x65289512
cmp eax, 0xc0
je 0x65289512
cmp eax, 0x100
je 0x65289512
xor eax, eax
add esp, 0x20
ret
cdq
and edx, 0x1f
add eax, edx
sar eax, 5
add eax, 6
push ebp
mov ebp, dword [esp + 0x28]
lea ecx, [eax - 6]
mov dword [ebp], eax
lea eax, [ecx - 1]
test eax, eax
push esi
push edi
jl 0x6528954e
mov edx, dword [esp + 0x34]
lea esi, [esp + 0xc]
sub edx, esi
lea esp, [esp]
lea esi, [edx + eax*4]
dec eax
mov esi, dword [esp + esi + 0xc]
mov dword [esp + eax*4 + 0x10], esi
jns 0x65289540
xor esi, esi
xor edx, edx
xor eax, eax
test ecx, ecx
push ebx
jle 0x65289592
lea esp, [esp]
mov edi, dword [ebp]
inc edi
cmp esi, edi
jge 0x65289592
cmp eax, ecx
jge 0x65289586
lea esp, [esp]
cmp edx, 4
jge 0x65289589
mov ebx, dword [esp + eax*4 + 0x10]
lea edi, [edx + esi*4]
inc eax
inc edx
cmp eax, ecx
mov dword [ebp + edi*4 + 4], ebx
jl 0x65289570
cmp edx, 4
jne 0x6528958e
inc esi
xor edx, edx
cmp eax, ecx
jl 0x65289560
mov eax, dword [ebp]
inc eax
cmp esi, eax
jge 0x652896fe
mov dword [esp + 0x3c], 0x652f10b0
jmp 0x652895b0
movzx edi, byte [esp + ecx*4 + 0xd]
mov bl, byte [edi + str.cw]
mov al, byte [esp + 0x10]
xor al, bl
mov byte [esp + 0x10], al
movzx edi, byte [esp + ecx*4 + 0xe]
mov bl, byte [edi + str.cw]
xor byte [esp + 0x11], bl
movzx edi, byte [esp + ecx*4 + 0xf]
mov bl, byte [edi + str.cw]
xor byte [esp + 0x12], bl
movzx edi, byte [esp + ecx*4 + 0xc]
mov bl, byte [edi + str.cw]
mov edi, dword [esp + 0x3c]
xor byte [esp + 0x13], bl
xor al, byte [edi]
inc edi
cmp ecx, 8
mov byte [esp + 0x10], al
mov dword [esp + 0x3c], edi
mov eax, 1
je 0x65289630
cmp ecx, eax
jle 0x652896b4
mov ebx, dword [esp + eax*4 + 0x10]
mov edi, dword [esp + eax*4 + 0xc]
xor ebx, edi
mov dword [esp + eax*4 + 0x10], ebx
inc eax
cmp eax, ecx
jl 0x65289613
jmp 0x652896b4
mov ebx, dword [esp + eax*4 + 0x10]
mov edi, dword [esp + eax*4 + 0xc]
xor ebx, edi
mov dword [esp + eax*4 + 0x10], ebx
inc eax
cmp eax, 4
jl 0x65289630
movzx eax, byte [esp + 0x1c]
mov al, byte [eax + str.cw]
mov bl, byte [esp + 0x20]
xor bl, al
movzx eax, byte [esp + 0x1d]
mov al, byte [eax + str.cw]
mov byte [esp + 0x20], bl
mov bl, byte [esp + 0x21]
xor bl, al
movzx eax, byte [esp + 0x1e]
mov al, byte [eax + str.cw]
mov byte [esp + 0x21], bl
mov bl, byte [esp + 0x22]
xor bl, al
movzx eax, byte [esp + 0x1f]
mov al, byte [eax + str.cw]
mov byte [esp + 0x22], bl
xor byte [esp + 0x23], al
mov eax, 5
jmp 0x652896a0
mov ebx, dword [esp + eax*4 + 0x10]
mov edi, dword [esp + eax*4 + 0xc]
xor ebx, edi
mov dword [esp + eax*4 + 0x10], ebx
inc eax
cmp eax, 8
jl 0x652896a0
xor eax, eax
test ecx, ecx
jle 0x652896f2
lea ebx, [ebx]
mov edi, dword [ebp]
inc edi
cmp esi, edi
jge 0x652896f2
cmp eax, ecx
jge 0x652896e6
lea esp, [esp]
cmp edx, 4
jge 0x652896e9
mov ebx, dword [esp + eax*4 + 0x10]
lea edi, [edx + esi*4]
inc eax
inc edx
cmp eax, ecx
mov dword [ebp + edi*4 + 4], ebx
jl 0x652896d0
cmp edx, 4
jne 0x652896ee
inc esi
xor edx, edx
cmp eax, ecx
jl 0x652896c0
mov eax, dword [ebp]
inc eax
cmp esi, eax
jl 0x652895b0
mov eax, dword [ebp]
lea esi, [ebp + 4]
lea edi, [ebp + 0xf4]
mov ecx, 0x3c
rep movsd dword es:[edi], dword [esi]
mov esi, 1
cmp eax, esi
pop ebx
jle 0x65289735
lea edi, [ebp + 0x104]
mov cl, 4
mov eax, edi
call fcn.652894a0
mov eax, dword [ebp]
inc esi
add edi, 0x10
cmp esi, eax
jl 0x65289721
pop edi
pop esi
mov eax, 1
pop ebp
add esp, 0x20
ret