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

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffec
lea ecx, [ebp - 0x14]
push ebx
push esi
push edi
mov esi, dword [ebp + 0x10]
mov edx, dword [ebp + 8]
mov eax, dword [ebp + 0xc]
mov ebx, dword [esi + 0x1c]
shl ebx, 4
mov ebx, dword [esi + ebx + 0x20]
xor ebx, dword [edx]
mov dword [ecx], ebx
mov ebx, dword [esi + 0x1c]
shl ebx, 4
mov ebx, dword [esi + ebx + 0x24]
xor ebx, dword [edx + 4]
mov dword [ecx + 4], ebx
mov ebx, dword [esi + 0x1c]
shl ebx, 4
mov ebx, dword [esi + ebx + 0x28]
xor ebx, dword [edx + 8]
mov dword [ecx + 8], ebx
mov ebx, dword [esi + 0x1c]
shl ebx, 4
mov ebx, dword [esi + ebx + 0x2c]
xor ebx, dword [edx + 0xc]
xor edx, edx
mov dword [ecx + 0xc], ebx
xor ebx, ebx
mov dl, byte [ecx]
mov bl, byte [ecx + 0xd]
mov edx, dword [edx*4 + 0x480210]
xor edx, dword [ebx*4 + 0x480610]
xor ebx, ebx
mov bl, byte [ecx + 0xa]
xor edx, dword [ebx*4 + 0x480a10]
xor ebx, ebx
mov bl, byte [ecx + 7]
xor edx, dword [ebx*4 + 0x480e10]
xor ebx, ebx
mov dword [eax], edx
xor edx, edx
mov dl, byte [ecx + 4]
mov bl, byte [ecx + 1]
mov edx, dword [edx*4 + 0x480210]
xor edx, dword [ebx*4 + 0x480610]
xor ebx, ebx
mov bl, byte [ecx + 0xe]
xor edx, dword [ebx*4 + 0x480a10]
xor ebx, ebx
mov bl, byte [ecx + 0xb]
xor edx, dword [ebx*4 + 0x480e10]
xor ebx, ebx
mov dword [eax + 4], edx
xor edx, edx
mov dl, byte [ecx + 8]
mov bl, byte [ecx + 5]
mov edx, dword [edx*4 + 0x480210]
xor edx, dword [ebx*4 + 0x480610]
xor ebx, ebx
mov bl, byte [ecx + 2]
xor edx, dword [ebx*4 + 0x480a10]
xor ebx, ebx
mov bl, byte [ecx + 0xf]
xor edx, dword [ebx*4 + 0x480e10]
xor ebx, ebx
mov dword [eax + 8], edx
xor edx, edx
mov dl, byte [ecx + 0xc]
mov bl, byte [ecx + 9]
mov edx, dword [edx*4 + 0x480210]
xor edx, dword [ebx*4 + 0x480610]
xor ebx, ebx
mov bl, byte [ecx + 6]
xor edx, dword [ebx*4 + 0x480a10]
xor ebx, ebx
mov bl, byte [ecx + 3]
xor edx, dword [ebx*4 + 0x480e10]
mov dword [eax + 0xc], edx
mov edx, dword [esi + 0x1c]
dec edx
mov dword [ebp - 4], edx
mov edx, dword [ebp - 4]
add edx, edx
cmp dword [ebp - 4], 1
lea edx, [esi + edx*8 + 0x20]
jle 0x47063b
mov ebx, dword [eax]
xor ebx, dword [edx]
mov dword [ecx], ebx
mov ebx, dword [eax + 4]
xor ebx, dword [edx + 4]
mov dword [ecx + 4], ebx
mov ebx, dword [eax + 8]
xor ebx, dword [edx + 8]
mov dword [ecx + 8], ebx
mov ebx, dword [eax + 0xc]
xor ebx, dword [edx + 0xc]
add edx, 0xfffffff0
mov dword [ecx + 0xc], ebx
xor ebx, ebx
movzx edi, byte [ecx + 0xd]
mov bl, byte [ecx]
mov ebx, dword [ebx*4 + 0x480210]
xor ebx, dword [edi*4 + 0x480610]
movzx edi, byte [ecx + 0xa]
xor ebx, dword [edi*4 + 0x480a10]
movzx edi, byte [ecx + 7]
xor ebx, dword [edi*4 + 0x480e10]
mov dword [eax], ebx
xor ebx, ebx
movzx edi, byte [ecx + 1]
mov bl, byte [ecx + 4]
mov ebx, dword [ebx*4 + 0x480210]
xor ebx, dword [edi*4 + 0x480610]
movzx edi, byte [ecx + 0xe]
xor ebx, dword [edi*4 + 0x480a10]
movzx edi, byte [ecx + 0xb]
xor ebx, dword [edi*4 + 0x480e10]
mov dword [eax + 4], ebx
xor ebx, ebx
movzx edi, byte [ecx + 5]
mov bl, byte [ecx + 8]
mov ebx, dword [ebx*4 + 0x480210]
xor ebx, dword [edi*4 + 0x480610]
movzx edi, byte [ecx + 2]
xor ebx, dword [edi*4 + 0x480a10]
movzx edi, byte [ecx + 0xf]
xor ebx, dword [edi*4 + 0x480e10]
mov dword [eax + 8], ebx
xor ebx, ebx
movzx edi, byte [ecx + 9]
mov bl, byte [ecx + 0xc]
mov ebx, dword [ebx*4 + 0x480210]
xor ebx, dword [edi*4 + 0x480610]
movzx edi, byte [ecx + 6]
xor ebx, dword [edi*4 + 0x480a10]
movzx edi, byte [ecx + 3]
xor ebx, dword [edi*4 + 0x480e10]
mov dword [eax + 0xc], ebx
dec dword [ebp - 4]
cmp dword [ebp - 4], 1
jg 0x47054c
mov edx, dword [esi + 0x30]
xor edx, dword [eax]
mov dword [ecx], edx
mov edx, dword [esi + 0x34]
xor edx, dword [eax + 4]
mov dword [ecx + 4], edx
mov edx, dword [esi + 0x38]
xor edx, dword [eax + 8]
mov dword [ecx + 8], edx
mov edx, dword [esi + 0x3c]
xor edx, dword [eax + 0xc]
mov dword [ecx + 0xc], edx
xor edx, edx
mov dl, byte [ecx]
mov dl, byte [edx + 0x481210]
mov byte [eax], dl
xor edx, edx
mov dl, byte [ecx + 0xd]
mov dl, byte [edx + 0x481210]
mov byte [eax + 1], dl
xor edx, edx
mov dl, byte [ecx + 0xa]
mov dl, byte [edx + 0x481210]
mov byte [eax + 2], dl
xor edx, edx
mov dl, byte [ecx + 7]
mov dl, byte [edx + 0x481210]
mov byte [eax + 3], dl
xor edx, edx
mov dl, byte [ecx + 4]
mov dl, byte [edx + 0x481210]
mov byte [eax + 4], dl
xor edx, edx
mov dl, byte [ecx + 1]
mov dl, byte [edx + 0x481210]
mov byte [eax + 5], dl
xor edx, edx
mov dl, byte [ecx + 0xe]
mov dl, byte [edx + 0x481210]
mov byte [eax + 6], dl
xor edx, edx
mov dl, byte [ecx + 0xb]
mov dl, byte [edx + 0x481210]
mov byte [eax + 7], dl
xor edx, edx
mov dl, byte [ecx + 8]
mov dl, byte [edx + 0x481210]
mov byte [eax + 8], dl
xor edx, edx
mov dl, byte [ecx + 5]
mov dl, byte [edx + 0x481210]
mov byte [eax + 9], dl
xor edx, edx
mov dl, byte [ecx + 2]
mov dl, byte [edx + 0x481210]
mov byte [eax + 0xa], dl
xor edx, edx
mov dl, byte [ecx + 0xf]
mov dl, byte [edx + 0x481210]
mov byte [eax + 0xb], dl
xor edx, edx
mov dl, byte [ecx + 0xc]
mov dl, byte [edx + 0x481210]
mov byte [eax + 0xc], dl
xor edx, edx
mov dl, byte [ecx + 9]
mov dl, byte [edx + 0x481210]
mov byte [eax + 0xd], dl
xor edx, edx
mov dl, byte [ecx + 6]
mov dl, byte [edx + 0x481210]
mov byte [eax + 0xe], dl
movzx ecx, byte [ecx + 3]
mov dl, byte [ecx + 0x481210]
mov byte [eax + 0xf], dl
mov ecx, dword [esi + 0x20]
xor dword [eax], ecx
mov edx, dword [esi + 0x24]
xor dword [eax + 4], edx
mov ecx, dword [esi + 0x28]
xor dword [eax + 8], ecx
mov edx, dword [esi + 0x2c]
xor dword [eax + 0xc], edx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret