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

Disassembly:
sub esp, 0x10
push ebx
push ebp
push esi
mov esi, dword [esp + 0x28]
push edi
push 8
push dword [esi]
call fcn.009a0cb5
push 8
push dword [esi]
mov edi, eax
mov ebx, 0xff00ff00
and edi, ebx
call fcn.009a0ca3
mov ebp, eax
and ebp, 0xff00ff
or ebp, edi
mov edi, dword [esp + 0x34]
xor ebp, dword [edi]
push 8
push dword [esi + 4]
mov dword [esp + 0x28], ebp
call fcn.009a0cb5
push 8
push dword [esi + 4]
mov dword [esp + 0x4c], eax
and dword [esp + 0x4c], ebx
call fcn.009a0ca3
mov ebx, eax
and ebx, 0xff00ff
or ebx, dword [esp + 0x4c]
push 8
xor ebx, dword [edi + 4]
push dword [esi + 8]
mov dword [esp + 0x54], ebx
call fcn.009a0cb5
push 8
push dword [esi + 8]
mov dword [esp + 0x54], eax
and dword [esp + 0x54], 0xff00ff00
call fcn.009a0ca3
and eax, 0xff00ff
or eax, dword [esp + 0x54]
push 8
xor eax, dword [edi + 8]
push dword [esi + 0xc]
mov dword [esp + 0x4c], eax
call fcn.009a0cb5
push 8
push dword [esi + 0xc]
mov dword [esp + 0x64], eax
and dword [esp + 0x64], 0xff00ff00
call fcn.009a0ca3
mov edx, dword [esp + 0x54]
and eax, 0xff00ff
or eax, dword [esp + 0x64]
mov esi, 0xff
xor eax, dword [edi + 0xc]
shr edx, 8
mov ecx, eax
shr ecx, 0x10
and ecx, esi
mov ecx, dword [ecx*4 + 0x994368]
and edx, esi
xor ecx, dword [edx*4 + 0x994768]
mov edx, ebp
shr edx, 0x18
xor ecx, dword [edx*4 + 0x993f68]
and ebx, esi
xor ecx, dword [ebx*4 + 0x994b68]
mov edx, eax
xor ecx, dword [edi + 0x10]
shr edx, 8
mov ebx, ebp
shr ebx, 0x10
add esp, 0x40
and edx, esi
and ebx, esi
mov dword [esp + 0x1c], eax
mov dword [esp + 0x18], ecx
mov dword [esp + 0x24], ebx
mov ebx, dword [edx*4 + 0x994768]
mov edx, dword [esp + 0x24]
xor ebx, dword [edx*4 + 0x994368]
mov edx, dword [esp + 0x2c]
shr edx, 0x18
xor ebx, dword [edx*4 + 0x993f68]
mov edx, dword [esp + 0x14]
and edx, esi
xor ebx, dword [edx*4 + 0x994b68]
mov edx, dword [esp + 0x2c]
shr edx, 0x10
and edx, esi
shr ebp, 8
and ebp, esi
mov dword [esp + 0x24], ebp
mov ebp, dword [edx*4 + 0x994368]
mov edx, dword [esp + 0x24]
xor ebp, dword [edx*4 + 0x994768]
mov edx, dword [esp + 0x14]
shr edx, 0x18
xor ebp, dword [edx*4 + 0x993f68]
mov edx, dword [esp + 0x2c]
xor ebx, dword [edi + 0x14]
and eax, esi
xor ebp, dword [eax*4 + 0x994b68]
mov eax, dword [esp + 0x14]
xor ebp, dword [edi + 0x18]
shr eax, 0x10
shr edx, 8
and eax, esi
mov eax, dword [eax*4 + 0x994368]
and edx, esi
xor eax, dword [edx*4 + 0x994768]
mov edx, dword [esp + 0x1c]
shr edx, 0x18
xor eax, dword [edx*4 + 0x993f68]
mov edx, dword [esp + 0x10]
and edx, esi
xor eax, dword [edx*4 + 0x994b68]
mov edx, dword [esp + 0x28]
xor eax, dword [edi + 0x1c]
sar edx, 1
add edi, 0x20
dec edx
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], edx
je 0x99c3bf
shr eax, 0x10
and eax, esi
mov eax, dword [eax*4 + 0x994368]
mov edx, ebp
shr edx, 8
and edx, esi
xor eax, dword [edx*4 + 0x994768]
mov edx, ecx
shr edx, 0x18
xor eax, dword [edx*4 + 0x993f68]
mov edx, ebx
and edx, esi
xor eax, dword [edx*4 + 0x994b68]
mov edx, ecx
xor eax, dword [edi]
shr edx, 0x10
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x24]
shr eax, 8
and edx, esi
and eax, esi
mov eax, dword [eax*4 + 0x994768]
xor eax, dword [edx*4 + 0x994368]
mov edx, ebx
shr edx, 0x18
xor eax, dword [edx*4 + 0x993f68]
mov edx, ebp
and edx, esi
xor eax, dword [edx*4 + 0x994b68]
mov edx, ecx
xor eax, dword [edi + 4]
shr edx, 8
mov dword [esp + 0x2c], eax
mov eax, ebx
shr eax, 0x10
and edx, esi
and eax, esi
mov eax, dword [eax*4 + 0x994368]
xor eax, dword [edx*4 + 0x994768]
mov edx, ebp
shr edx, 0x18
xor eax, dword [edx*4 + 0x993f68]
mov edx, dword [esp + 0x24]
shr ebx, 8
and ebx, esi
shr ebp, 0x10
and ebp, esi
and edx, esi
xor eax, dword [edx*4 + 0x994b68]
mov edx, dword [ebp*4 + 0x994368]
xor edx, dword [ebx*4 + 0x994768]
mov ebx, dword [esp + 0x24]
xor eax, dword [edi + 8]
shr ebx, 0x18
xor edx, dword [ebx*4 + 0x993f68]
and ecx, esi
xor edx, dword [ecx*4 + 0x994b68]
mov ebx, eax
xor edx, dword [edi + 0xc]
shr ebx, 8
and ebx, esi
mov ecx, edx
shr ecx, 0x10
and ecx, esi
mov ebp, dword [ecx*4 + 0x994368]
xor ebp, dword [ebx*4 + 0x994768]
mov ecx, dword [esp + 0x10]
mov ebx, ecx
shr ebx, 0x18
xor ebp, dword [ebx*4 + 0x993f68]
mov ebx, dword [esp + 0x2c]
and ebx, esi
xor ebp, dword [ebx*4 + 0x994b68]
mov ebx, edx
xor ebp, dword [edi + 0x10]
shr ebx, 8
mov dword [esp + 0x18], ebp
mov ebp, ecx
shr ebp, 0x10
and ebx, esi
and ebp, esi
mov ebx, dword [ebx*4 + 0x994768]
xor ebx, dword [ebp*4 + 0x994368]
mov ebp, dword [esp + 0x2c]
shr ebp, 0x18
xor ebx, dword [ebp*4 + 0x993f68]
mov ebp, eax
and ebp, esi
xor ebx, dword [ebp*4 + 0x994b68]
mov ebp, dword [esp + 0x2c]
shr ecx, 8
and ecx, esi
shr ebp, 0x10
and ebp, esi
mov ebp, dword [ebp*4 + 0x994368]
xor ebp, dword [ecx*4 + 0x994768]
mov ecx, eax
shr ecx, 0x18
xor ebp, dword [ecx*4 + 0x993f68]
xor ebx, dword [edi + 0x14]
shr eax, 0x10
mov ecx, edx
and ecx, esi
xor ebp, dword [ecx*4 + 0x994b68]
mov ecx, dword [esp + 0x2c]
xor ebp, dword [edi + 0x18]
and eax, esi
mov eax, dword [eax*4 + 0x994368]
shr ecx, 8
and ecx, esi
xor eax, dword [ecx*4 + 0x994768]
shr edx, 0x18
xor eax, dword [edx*4 + 0x993f68]
add edi, 0x20
mov ecx, eax
mov eax, dword [esp + 0x10]
and eax, esi
xor ecx, dword [eax*4 + 0x994b68]
xor ecx, dword [edi - 4]
dec dword [esp + 0x28]
mov dword [esp + 0x24], ecx
mov eax, ecx
mov ecx, dword [esp + 0x18]
jne 0x99c1e5
shr eax, 0x10
and eax, esi
mov eax, dword [eax*4 + 0x994f68]
mov edx, ebp
shr edx, 8
shr ecx, 0x18
mov ecx, dword [ecx*4 + 0x994f68]
and edx, esi
mov edx, dword [edx*4 + 0x994f68]
and eax, 0xff0000
and ecx, 0xff000000
and edx, 0xff00
xor eax, edx
xor eax, ecx
mov ecx, ebx
and ecx, esi
movzx ecx, byte [ecx*4 + 0x994f68]
xor eax, ecx
xor eax, dword [edi]
push 8
push eax
mov dword [esp + 0x18], eax
call fcn.009a0cb5
push 8
push dword [esp + 0x1c]
mov dword [esp + 0x3c], eax
and dword [esp + 0x3c], 0xff00ff00
call fcn.009a0ca3
mov ecx, dword [esp + 0x40]
and eax, 0xff00ff
or eax, dword [esp + 0x3c]
push 8
mov dword [ecx], eax
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x38]
shr ecx, 8
shr eax, 0x10
and ecx, esi
mov ecx, dword [ecx*4 + 0x994f68]
and eax, esi
mov eax, dword [eax*4 + 0x994f68]
and ecx, 0xff00
and eax, 0xff0000
xor eax, ecx
mov ecx, ebx
shr ecx, 0x18
mov ecx, dword [ecx*4 + 0x994f68]
and ecx, 0xff000000
xor eax, ecx
mov ecx, ebp
and ecx, esi
movzx ecx, byte [ecx*4 + 0x994f68]
xor eax, ecx
xor eax, dword [edi + 4]
push eax
mov dword [esp + 0x44], eax
call fcn.009a0cb5
push 8
push dword [esp + 0x48]
mov dword [esp + 0x48], eax
and dword [esp + 0x48], 0xff00ff00
call fcn.009a0ca3
mov ecx, dword [esp + 0x50]
and eax, 0xff00ff
or eax, dword [esp + 0x48]
mov dword [ecx + 4], eax
mov ecx, dword [esp + 0x38]
shr ecx, 8
and ecx, esi
mov ecx, dword [ecx*4 + 0x994f68]
mov eax, ebx
shr eax, 0x10
and eax, esi
mov eax, dword [eax*4 + 0x994f68]
and ecx, 0xff00
and eax, 0xff0000
xor eax, ecx
mov ecx, ebp
shr ecx, 0x18
mov ecx, dword [ecx*4 + 0x994f68]
and ecx, 0xff000000
xor eax, ecx
mov ecx, dword [esp + 0x44]
and ecx, esi
movzx ecx, byte [ecx*4 + 0x994f68]
xor eax, ecx
xor eax, dword [edi + 8]
push 8
push eax
mov dword [esp + 0x3c], eax
call fcn.009a0cb5
push 8
push dword [esp + 0x40]
mov dword [esp + 0x5c], eax
and dword [esp + 0x5c], 0xff00ff00
call fcn.009a0ca3
mov ecx, dword [esp + 0x60]
and eax, 0xff00ff
or eax, dword [esp + 0x5c]
shr ebp, 0x10
mov dword [ecx + 8], eax
and ebp, esi
mov ebp, dword [ebp*4 + 0x994f68]
shr ebx, 8
and ebx, esi
mov eax, dword [ebx*4 + 0x994f68]
and eax, 0xff00
and ebp, 0xff0000
xor ebp, eax
mov eax, dword [esp + 0x54]
shr eax, 0x18
mov eax, dword [eax*4 + 0x994f68]
and eax, 0xff000000
xor ebp, eax
mov eax, dword [esp + 0x48]
and eax, esi
movzx eax, byte [eax*4 + 0x994f68]
xor ebp, eax
xor ebp, dword [edi + 0xc]
push 8
push ebp
call fcn.009a0cb5
mov esi, eax
push 8
push ebp
and esi, 0xff00ff00
call fcn.009a0ca3
mov ecx, dword [esp + 0x70]
add esp, 0x40
pop edi
and eax, 0xff00ff
or eax, esi
pop esi
pop ebp
mov dword [ecx + 0xc], eax
pop ebx
add esp, 0x10
ret