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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x18
push ebx
push esi
mov eax, edx
mov ebx, 4
push edi
mov edi, ecx
mov dword [ebp - 0x14], eax
mov esi, eax
mov dword [ebp - 0x18], edi
sub esi, edi
nop dword [eax]
mov edx, 4
mov al, byte [esi + ecx]
xor byte [ecx], al
inc ecx
sub edx, 1
jne 0x402005
sub ebx, 1
jne 0x402000
mov esi, dword [ebp - 0x14]
add esi, 0x10
mov dword [ebp - 0x10], 9
mov dword [ebp - 0xc], esi
mov ebx, edi
mov dword [ebp - 8], 4
nop
mov ecx, ebx
mov edx, 4
nop word [eax + eax]
movzx eax, byte [ecx]
lea ecx, [ecx + 4]
mov al, byte [eax + 0x50d880]
mov byte [ecx - 4], al
sub edx, 1
jne 0x402040
inc ebx
sub dword [ebp - 8], 1
jne 0x402030
movzx eax, byte [edi + 5]
lea esi, [edx + 4]
mov cl, byte [edi + 1]
mov byte [edi + 1], al
movzx eax, byte [edi + 9]
mov byte [edi + 5], al
movzx eax, byte [edi + 0xd]
mov byte [edi + 9], al
movzx eax, byte [edi + 0xa]
mov byte [edi + 0xd], cl
mov cl, byte [edi + 2]
mov byte [edi + 2], al
movzx eax, byte [edi + 0xe]
mov byte [edi + 0xa], cl
mov cl, byte [edi + 6]
mov byte [edi + 6], al
movzx eax, byte [edi + 0xf]
mov byte [edi + 0xe], cl
mov cl, byte [edi + 3]
mov byte [edi + 3], al
movzx eax, byte [edi + 0xb]
mov byte [edi + 0xf], al
movzx eax, byte [edi + 7]
mov byte [edi + 0xb], al
mov byte [edi + 7], cl
add edi, 2
mov bh, byte [edi + 1]
lea edi, [edi + 4]
mov al, byte [edi - 6]
mov bl, bh
mov ch, byte [edi - 4]
mov cl, al
mov dl, byte [edi - 5]
xor bl, ch
mov byte [ebp - 1], al
xor cl, dl
mov dh, bl
xor dh, al
mov al, cl
shr al, 7
add cl, cl
movzx eax, al
xor dh, dl
imul eax, eax, 0x1b
xor al, cl
mov cl, dl
xor al, byte [ebp - 1]
xor cl, ch
xor al, dh
mov byte [edi - 6], al
mov al, cl
shr al, 7
add cl, cl
movzx eax, al
imul eax, eax, 0x1b
xor al, cl
mov cl, byte [ebp - 1]
xor al, dl
xor cl, bh
xor al, dh
mov byte [edi - 5], al
mov al, bl
shr al, 7
add bl, bl
movzx eax, al
imul eax, eax, 0x1b
xor al, bl
xor al, ch
xor al, dh
mov byte [edi - 4], al
mov al, cl
shr al, 7
add cl, cl
movzx eax, al
imul eax, eax, 0x1b
xor al, cl
xor al, bh
xor al, dh
mov byte [edi - 3], al
sub esi, 1
jne 0x4020b1
mov edi, dword [ebp - 0x18]
mov ebx, 4
mov esi, dword [ebp - 0xc]
mov eax, edi
nop dword [eax]
mov edx, 4
mov cl, byte [esi]
inc esi
xor byte [eax], cl
inc eax
sub edx, 1
jne 0x402155
mov dword [ebp - 0xc], esi
sub ebx, 1
jne 0x402150
sub dword [ebp - 0x10], 1
jne 0x402025
mov esi, edi
lea ebx, [edx + 4]
nop word [eax + eax]
mov ecx, esi
mov edx, 4
nop word [eax + eax]
movzx eax, byte [ecx]
lea ecx, [ecx + 4]
mov al, byte [eax + 0x50d880]
mov byte [ecx - 4], al
sub edx, 1
jne 0x402190
inc esi
sub ebx, 1
jne 0x402180
mov cl, byte [edi + 1]
lea esi, [edx + 4]
movzx eax, byte [edi + 5]
mov byte [edi + 1], al
movzx eax, byte [edi + 9]
mov byte [edi + 5], al
movzx eax, byte [edi + 0xd]
mov byte [edi + 9], al
movzx eax, byte [edi + 0xa]
mov byte [edi + 0xd], cl
mov cl, byte [edi + 2]
mov byte [edi + 2], al
movzx eax, byte [edi + 0xe]
mov byte [edi + 0xa], cl
mov cl, byte [edi + 6]
mov byte [edi + 6], al
movzx eax, byte [edi + 0xf]
mov byte [edi + 0xe], cl
mov cl, byte [edi + 3]
mov byte [edi + 3], al
movzx eax, byte [edi + 0xb]
mov byte [edi + 0xf], al
movzx eax, byte [edi + 7]
mov byte [edi + 7], cl
mov ecx, dword [ebp - 0x14]
mov byte [edi + 0xb], al
add ecx, 0xa0
mov edx, 4
nop dword [eax + eax]
mov al, byte [ecx]
inc ecx
xor byte [edi], al
inc edi
sub edx, 1
jne 0x402210
sub esi, 1
jne 0x402206
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret