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

Disassembly:
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
mov esi, ecx
mov eax, edi
mov dword [ebp - 4], esi
push edi
shr eax, 2
push edx
add eax, 6
mov dword [esi + 0xf4], edi
push esi
mov dword [esi + 0xf0], eax
call fcn.10033360
push edi
mov edx, esi
mov ecx, esi
call fcn.1002381b
add esp, 0x10
cmp edi, 0x10
je 0x100240df
cmp edi, 0x18
je 0x10023fd4
cmp edi, 0x20
je 0x10023e71
mov eax, 0xffffff53
jmp 0x100243c8
mov ecx, dword [esi + 0x1c]
lea edi, [esi + 0x30]
mov eax, ecx
mov ebx, 0xff000000
shr eax, 0x10
movzx eax, al
push 4
mov edx, dword [eax*4 + 0x10064160]
mov eax, ecx
shr eax, 8
xor edx, 0x1000000
movzx eax, al
and edx, ebx
mov eax, dword [eax*4 + 0x10064560]
and eax, 0xff0000
xor edx, eax
mov eax, ecx
shr eax, 0x18
movzx eax, byte [eax*4 + 0x10063d60]
xor edx, eax
movzx eax, cl
mov ecx, dword [esi + 8]
mov eax, dword [eax*4 + 0x10063960]
and eax, 0xff00
xor edx, eax
mov eax, dword [esi + 4]
xor edx, dword [esi]
xor eax, edx
mov dword [esi + 0x20], edx
mov dword [esi + 0x24], eax
xor ecx, eax
mov eax, dword [esi + 0xc]
xor eax, ecx
mov dword [esi + 0x28], ecx
mov dword [esi + 0x2c], eax
pop esi
mov ecx, dword [edi - 4]
mov eax, ecx
shr eax, 0x10
movzx eax, al
mov edx, dword [eax*4 + 0x10064560]
mov eax, ecx
shr eax, 8
and edx, 0xff0000
movzx eax, al
mov eax, dword [eax*4 + 0x10063960]
and eax, 0xff00
xor edx, eax
mov eax, ecx
shr eax, 0x18
mov eax, dword [eax*4 + 0x10064160]
and eax, ebx
xor edx, eax
movzx eax, cl
mov ecx, dword [edi - 0x18]
movzx eax, byte [eax*4 + 0x10063d60]
xor edx, eax
mov eax, dword [edi - 0x1c]
xor edx, dword [edi - 0x20]
xor eax, edx
mov dword [edi], edx
mov dword [edi + 4], eax
lea edi, [edi + 0x20]
xor ecx, eax
mov eax, dword [edi - 0x34]
xor eax, ecx
mov dword [edi - 0x18], ecx
mov dword [edi - 0x14], eax
mov ecx, dword [edi - 0x14]
mov eax, ecx
shr eax, 8
movzx eax, al
mov edx, dword [eax*4 + 0x10064560]
mov eax, ecx
shr eax, 0x10
and edx, 0xff0000
movzx eax, al
mov eax, dword [eax*4 + 0x10064160]
and eax, ebx
xor edx, eax
mov eax, ecx
shr eax, 0x18
movzx eax, byte [eax*4 + 0x10063d60]
xor edx, eax
movzx eax, cl
mov eax, dword [eax*4 + 0x10063960]
and eax, 0xff00
xor edx, eax
xor edx, dword [esi + 0x10062938]
add esi, 4
xor edx, dword [edi - 0x30]
mov dword [edi - 0x10], edx
mov eax, dword [edi - 0x2c]
xor eax, edx
mov dword [edi - 0xc], eax
mov ecx, dword [edi - 0x28]
xor ecx, eax
mov dword [edi - 8], ecx
mov eax, dword [edi - 0x24]
xor eax, ecx
mov dword [edi - 4], eax
cmp esi, 0x1c
jne 0x10023ee9
jmp 0x100241cc
mov ecx, dword [esi + 0x14]
lea edi, [esi + 0x28]
mov eax, ecx
mov ebx, 0xff000000
shr eax, 0x10
movzx eax, al
push 4
mov edx, dword [eax*4 + 0x10064160]
mov eax, ecx
shr eax, 8
xor edx, 0x1000000
movzx eax, al
and edx, ebx
mov eax, dword [eax*4 + 0x10064560]
and eax, 0xff0000
xor edx, eax
mov eax, ecx
shr eax, 0x18
movzx eax, byte [eax*4 + 0x10063d60]
xor edx, eax
movzx eax, cl
mov ecx, dword [esi + 8]
mov eax, dword [eax*4 + 0x10063960]
and eax, 0xff00
xor edx, eax
mov eax, dword [esi + 4]
xor edx, dword [esi]
xor eax, edx
mov dword [esi + 0x18], edx
mov dword [esi + 0x1c], eax
xor ecx, eax
mov eax, dword [esi + 0xc]
xor eax, ecx
mov dword [esi + 0x20], ecx
mov dword [esi + 0x24], eax
pop esi
mov ecx, dword [edi - 0x18]
xor ecx, dword [edi - 4]
mov eax, dword [edi - 0x14]
xor eax, ecx
mov dword [edi], ecx
mov dword [edi + 4], eax
lea edi, [edi + 0x18]
mov ecx, dword [edi - 0x14]
mov eax, ecx
shr eax, 8
movzx eax, al
mov edx, dword [eax*4 + 0x10064560]
mov eax, ecx
shr eax, 0x10
and edx, 0xff0000
movzx eax, al
mov eax, dword [eax*4 + 0x10064160]
and eax, ebx
xor edx, eax
mov eax, ecx
shr eax, 0x18
movzx eax, byte [eax*4 + 0x10063d60]
xor edx, eax
movzx eax, cl
mov eax, dword [eax*4 + 0x10063960]
and eax, 0xff00
xor edx, eax
xor edx, dword [esi + 0x10062938]
add esi, 4
xor edx, dword [edi - 0x28]
mov dword [edi - 0x10], edx
mov eax, dword [edi - 0x24]
xor eax, edx
mov dword [edi - 0xc], eax
mov ecx, dword [edi - 0x20]
xor ecx, eax
mov dword [edi - 8], ecx
mov eax, dword [edi - 0x1c]
xor eax, ecx
mov dword [edi - 4], eax
cmp esi, 0x20
jne 0x1002404c
jmp 0x100241cc
mov edx, dword [esi + 0xc]
lea edi, [esi + 4]
mov eax, edx
mov ebx, 0xff000000
shr eax, 0x10
movzx eax, al
push 4
mov ecx, dword [eax*4 + 0x10064160]
mov eax, edx
shr eax, 8
xor ecx, 0x1000000
movzx eax, al
and ecx, ebx
mov eax, dword [eax*4 + 0x10064560]
and eax, 0xff0000
xor ecx, eax
mov eax, edx
shr eax, 0x18
movzx eax, byte [eax*4 + 0x10063d60]
xor ecx, eax
movzx eax, dl
mov eax, dword [eax*4 + 0x10063960]
and eax, 0xff00
xor ecx, eax
mov eax, dword [edi]
xor ecx, dword [esi]
mov dword [esi + 0x10], ecx
xor eax, ecx
mov ecx, dword [esi + 8]
xor ecx, eax
mov dword [esi + 0x14], eax
mov dword [esi + 0x18], ecx
xor ecx, edx
mov dword [esi + 0x1c], ecx
pop esi
lea edi, [edi + 0x10]
mov ecx, dword [edi + 8]
mov eax, ecx
shr eax, 8
movzx eax, al
mov edx, dword [eax*4 + 0x10064560]
mov eax, ecx
shr eax, 0x10
and edx, 0xff0000
movzx eax, al
mov eax, dword [eax*4 + 0x10064160]
and eax, ebx
xor edx, eax
mov eax, ecx
shr eax, 0x18
movzx eax, byte [eax*4 + 0x10063d60]
xor edx, eax
movzx eax, cl
mov eax, dword [eax*4 + 0x10063960]
and eax, 0xff00
xor edx, eax
xor edx, dword [esi + 0x10062938]
add esi, 4
xor edx, dword [edi - 4]
mov dword [edi + 0xc], edx
mov eax, dword [edi]
xor eax, edx
mov dword [edi + 0x10], eax
mov ecx, dword [edi + 4]
xor ecx, eax
mov dword [edi + 0x14], ecx
mov eax, dword [edi + 8]
xor eax, ecx
mov dword [edi + 0x18], eax
cmp esi, 0x28
jne 0x10024153
mov esi, dword [ebp - 4]
xor edi, edi
inc edi
cmp dword [ebp + 0x10], edi
jne 0x100243be
mov ecx, dword [esi + 0xf0]
mov eax, ecx
shl eax, 2
mov dword [ebp + 8], eax
test eax, eax
je 0x10024242
lea edx, [eax + 2]
xor ebx, ebx
lea edx, [esi + edx*4]
lea edi, [esi + 8]
mov esi, eax
mov ecx, dword [edi - 8]
add ebx, 4
mov eax, dword [edx - 8]
sub esi, 4
mov dword [edi - 8], eax
mov eax, dword [edx - 4]
mov dword [edx - 8], ecx
mov ecx, dword [edi - 4]
mov dword [edi - 4], eax
mov eax, dword [edx]
mov dword [edx - 4], ecx
mov ecx, dword [edi]
mov dword [edi], eax
lea edi, [edi + 0x10]
mov eax, dword [edx + 4]
mov dword [edx], ecx
lea edx, [edx - 0x10]
mov ecx, dword [edi - 0xc]
mov dword [edi - 0xc], eax
mov dword [edx + 0x14], ecx
cmp ebx, esi
jb 0x100241fa
mov esi, dword [ebp - 4]
xor edi, edi
inc edi
mov ecx, dword [esi + 0xf0]
lea ebx, [esi + 8]
cmp ecx, edi
jbe 0x100243be
lea ebx, [ebx + 0x10]
mov edx, dword [ebx - 8]
mov eax, edx
shr eax, 0x10
movzx eax, al
movzx ecx, byte [eax*4 + 0x10063d60]
mov eax, edx
shr eax, 8
movzx eax, al
shr edx, 0x18
mov ecx, dword [ecx*4 + 0x10062d60]
movzx eax, byte [eax*4 + 0x10063d60]
xor ecx, dword [eax*4 + 0x10063160]
movzx eax, byte [edx*4 + 0x10063d60]
mov edx, dword [ebx - 4]
xor ecx, dword [eax*4 + 0x10062960]
movzx eax, byte [ebx - 8]
movzx eax, byte [eax*4 + 0x10063d60]
xor ecx, dword [eax*4 + 0x10063560]
mov eax, edx
shr eax, 0x10
movzx eax, al
mov dword [ebx - 8], ecx
movzx ecx, byte [eax*4 + 0x10063d60]
mov eax, edx
shr eax, 8
movzx eax, al
shr edx, 0x18
mov ecx, dword [ecx*4 + 0x10062d60]
movzx eax, byte [eax*4 + 0x10063d60]
xor ecx, dword [eax*4 + 0x10063160]
movzx eax, byte [edx*4 + 0x10063d60]
mov edx, dword [ebx]
xor ecx, dword [eax*4 + 0x10062960]
movzx eax, byte [ebx - 4]
movzx eax, byte [eax*4 + 0x10063d60]
xor ecx, dword [eax*4 + 0x10063560]
mov eax, edx
shr eax, 0x10
movzx eax, al
mov dword [ebx - 4], ecx
movzx ecx, byte [eax*4 + 0x10063d60]
mov eax, edx
shr eax, 8
movzx eax, al
shr edx, 0x18
mov ecx, dword [ecx*4 + 0x10062d60]
movzx eax, byte [eax*4 + 0x10063d60]
xor ecx, dword [eax*4 + 0x10063160]
movzx eax, byte [edx*4 + 0x10063d60]
mov edx, dword [ebx + 4]
xor ecx, dword [eax*4 + 0x10062960]
movzx eax, byte [ebx]
movzx eax, byte [eax*4 + 0x10063d60]
xor ecx, dword [eax*4 + 0x10063560]
mov eax, edx
shr eax, 0x10
movzx eax, al
mov dword [ebx], ecx
movzx ecx, byte [eax*4 + 0x10063d60]
mov eax, edx
shr eax, 8
movzx eax, al
shr edx, 0x18
mov ecx, dword [ecx*4 + 0x10062d60]
movzx eax, byte [eax*4 + 0x10063d60]
xor ecx, dword [eax*4 + 0x10063160]
movzx eax, byte [edx*4 + 0x10063d60]
xor ecx, dword [eax*4 + 0x10062960]
movzx eax, byte [ebx + 4]
movzx eax, byte [eax*4 + 0x10063d60]
xor ecx, dword [eax*4 + 0x10063560]
inc edi
mov dword [ebx + 4], ecx
cmp edi, dword [esi + 0xf0]
jb 0x1002424d
mov edx, dword [ebp + 0xc]
mov ecx, esi
call fcn.10024419
pop edi
pop esi
pop ebx
leave
ret