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

Disassembly:
push ebx
push esi
push edi
add esp, 0xffffffc8
mov ebx, ecx
mov esi, edx
mov dword [esp], eax
shr ebx, 3
lea eax, [esp + 0x18]
xor ecx, ecx
mov edx, 0x20
call fcn.00407ee4
lea edx, [esp + 0x18]
mov eax, esi
mov ecx, ebx
call fcn.0040714c
cmp ebx, 0x10
ja 0x4d80ed
mov ecx, 4
mov dword [esp + 4], 0xa
jmp 0x4d810e
cmp ebx, 0x18
ja 0x4d8101
mov ecx, 6
mov dword [esp + 4], 0xc
jmp 0x4d810e
mov ecx, 8
mov dword [esp + 4], 0xe
mov eax, dword [esp]
mov edx, dword [esp + 4]
mov dword [eax + 0x28], edx
xor esi, esi
xor edx, edx
xor eax, eax
jmp 0x4d8149
mov ebx, esi
add ebx, ebx
add ebx, ebx
mov edi, dword [esp]
lea ebx, [edi + ebx*8]
mov edi, dword [esp + eax*4 + 0x18]
mov dword [ebx + edx*4 + 0x2c], edi
inc eax
inc edx
cmp ecx, eax
jbe 0x4d8141
cmp edx, 4
jb 0x4d8122
cmp edx, 4
jne 0x4d8149
xor edx, edx
inc esi
cmp ecx, eax
jbe 0x4d8156
mov ebx, dword [esp + 4]
inc ebx
cmp esi, ebx
jb 0x4d8138
xor eax, eax
mov dword [esp + 8], eax
jmp 0x4d82d8
movzx eax, byte [esp + ecx*4 + 0x15]
movzx eax, byte [eax + str.cw]
xor byte [esp + 0x18], al
movzx eax, byte [esp + ecx*4 + 0x16]
movzx eax, byte [eax + str.cw]
xor byte [esp + 0x19], al
movzx eax, byte [esp + ecx*4 + 0x17]
movzx eax, byte [eax + str.cw]
xor byte [esp + 0x1a], al
movzx eax, byte [esp + ecx*4 + 0x14]
movzx eax, byte [eax + str.cw]
xor byte [esp + 0x1b], al
mov eax, dword [esp + 8]
movzx eax, byte [eax*4 + 0x4f8b6c]
xor byte [esp + 0x18], al
inc dword [esp + 8]
cmp ecx, 8
je 0x4d81e0
mov eax, ecx
dec eax
test eax, eax
jbe 0x4d829e
mov dword [esp + 0xc], eax
lea edi, [esp + 0x18]
mov eax, dword [edi]
xor dword [edi + 4], eax
add edi, 4
dec dword [esp + 0xc]
jne 0x4d81cd
jmp 0x4d829e
mov eax, ecx
shr eax, 1
dec eax
test eax, eax
jbe 0x4d820d
mov dword [esp + 0xc], eax
lea eax, [esp + 0x18]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
mov eax, dword [eax]
mov ebx, dword [esp + 0x10]
xor dword [ebx + 4], eax
add dword [esp + 0x10], 4
dec dword [esp + 0xc]
jne 0x4d81f5
mov eax, ecx
shr eax, 1
movzx eax, byte [esp + eax*4 + 0x14]
movzx eax, byte [eax + str.cw]
mov ebx, ecx
shr ebx, 1
xor byte [esp + ebx*4 + 0x18], al
mov eax, ecx
shr eax, 1
movzx eax, byte [esp + eax*4 + 0x15]
movzx eax, byte [eax + str.cw]
mov ebx, ecx
shr ebx, 1
xor byte [esp + ebx*4 + 0x19], al
mov eax, ecx
shr eax, 1
movzx eax, byte [esp + eax*4 + 0x16]
movzx eax, byte [eax + str.cw]
mov ebx, ecx
shr ebx, 1
xor byte [esp + ebx*4 + 0x1a], al
mov eax, ecx
shr eax, 1
movzx eax, byte [esp + eax*4 + 0x17]
movzx eax, byte [eax + str.cw]
mov ebx, ecx
shr ebx, 1
xor byte [esp + ebx*4 + 0x1b], al
mov eax, ecx
shr eax, 1
inc eax
mov ebx, ecx
dec ebx
sub ebx, eax
jb 0x4d829e
inc ebx
mov dword [esp + 0xc], ebx
lea eax, [esp + eax*4 + 0x14]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
mov eax, dword [eax]
mov ebx, dword [esp + 0x14]
xor dword [ebx + 4], eax
add dword [esp + 0x14], 4
dec dword [esp + 0xc]
jne 0x4d8286
xor eax, eax
jmp 0x4d82cb
mov ebx, esi
add ebx, ebx
add ebx, ebx
mov edi, dword [esp]
lea ebx, [edi + ebx*8]
mov edi, dword [esp + eax*4 + 0x18]
mov dword [ebx + edx*4 + 0x2c], edi
inc eax
inc edx
cmp ecx, eax
jbe 0x4d82c3
cmp edx, 4
jb 0x4d82a4
cmp edx, 4
jne 0x4d82cb
inc esi
xor edx, edx
cmp ecx, eax
jbe 0x4d82d8
mov ebx, dword [esp + 4]
inc ebx
cmp esi, ebx
jb 0x4d82ba
mov eax, dword [esp + 4]
inc eax
cmp esi, eax
jb 0x4d8161
mov eax, dword [esp]
lea edx, [eax + 0x20c]
mov eax, dword [esp]
add eax, 0x2c
mov ecx, 0x1e0
call fcn.0040714c
mov eax, dword [esp]
mov eax, dword [eax + 0x28]
dec eax
test eax, eax
jbe 0x4d8333
mov dword [esp + 0xc], eax
mov esi, 1
mov eax, esi
add eax, eax
add eax, eax
mov edx, dword [esp]
lea edx, [edx + eax*8 + 0x20c]
mov cl, 4
mov eax, dword [esp]
call fcn.004d805c
inc esi
dec dword [esp + 0xc]
jne 0x4d8312
add esp, 0x38
pop edi
pop esi
pop ebx
ret