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

Disassembly:
sub esp, 0x2c
push ebx
mov ebx, dword [0x10196d70]
push ebp
mov ebp, dword [esp + 0x40]
add ebx, 0xfffffffa
push esi
push edi
test ebx, ebx
jle 0x100a9657
lea ecx, [ebx*4]
lea eax, [ecx - 4]
shr ecx, 2
lea edx, [ebx*4 - 4]
mov esi, edx
lea edi, [esp + 0x1c]
sub esi, eax
sub edx, eax
add esi, dword [esp + 0x40]
add edi, edx
mov edx, dword [0x10196d70]
xor eax, eax
rep movsd dword es:[edi], dword [esi]
xor edi, edi
xor esi, esi
nop word [eax + eax]
lea ecx, [edx + 1]
cmp edi, ecx
jge 0x100a9661
cmp esi, ebx
jge 0x100a963c
nop dword [eax + eax]
cmp eax, 4
jge 0x100a9636
mov ecx, dword [esp + esi*4 + 0x1c]
lea edx, [eax + edi*4]
inc esi
mov dword [ebp + edx*4], ecx
inc eax
cmp esi, ebx
jl 0x100a9620
mov edx, dword [0x10196d70]
cmp eax, 4
lea ecx, [edi + 1]
cmovne ecx, edi
mov edi, ecx
xor ecx, ecx
cmp eax, 4
cmovne ecx, eax
mov eax, ecx
cmp esi, ebx
jl 0x100a9610
jmp 0x100a9661
mov edx, dword [0x10196d70]
xor edi, edi
xor eax, eax
lea ecx, [edx + 1]
cmp edi, ecx
jge 0x100a97d6
lea esi, [esp + 0x1c]
mov dword [esp + 0x10], 0x10163ea8
sub esi, 4
mov dword [esp + 0x18], esi
mov dword [esp + 0x14], esi
nop dword [eax]
nop word [eax + eax]
movzx ecx, byte [esp + ebx*4 + 0x19]
mov dl, byte [esp + 0x1c]
xor dl, byte [ecx + str.cw]
mov byte [esp + 0x1c], dl
movzx ecx, byte [esp + ebx*4 + 0x1a]
movzx ecx, byte [ecx + str.cw]
xor byte [esp + 0x1d], cl
movzx ecx, byte [esp + ebx*4 + 0x1b]
movzx ecx, byte [ecx + str.cw]
xor byte [esp + 0x1e], cl
movzx ecx, byte [esp + ebx*4 + 0x18]
movzx ecx, byte [ecx + str.cw]
xor byte [esp + 0x1f], cl
mov ecx, dword [esp + 0x10]
add dword [esp + 0x10], 4
mov ecx, dword [ecx]
xor dl, cl
mov byte [esp + 0x1c], dl
mov edx, 1
cmp ebx, 8
je 0x100a9720
cmp ebx, edx
jle 0x100a9704
mov ecx, dword [esp + 0x14]
mov ecx, dword [ecx + edx*4]
xor dword [esp + edx*4 + 0x1c], ecx
inc edx
mov ecx, esi
cmp edx, ebx
jl 0x100a96f6
lea ecx, [esp + 0x1c]
xor esi, esi
sub ecx, 4
mov dword [esp + 0x14], ecx
test ebx, ebx
jle 0x100a97c3
jmp 0x100a9785
mov ecx, dword [esi + edx*4]
xor dword [esp + edx*4 + 0x1c], ecx
inc edx
mov dword [esp + 0x14], esi
cmp edx, 4
jl 0x100a9720
movzx ecx, byte [esp + 0x28]
mov edx, 5
movzx ecx, byte [ecx + str.cw]
xor byte [esp + 0x2c], cl
movzx ecx, byte [esp + 0x29]
movzx ecx, byte [ecx + str.cw]
xor byte [esp + 0x2d], cl
movzx ecx, byte [esp + 0x2a]
movzx ecx, byte [ecx + str.cw]
xor byte [esp + 0x2e], cl
movzx ecx, byte [esp + 0x2b]
movzx ecx, byte [ecx + str.cw]
xor byte [esp + 0x2f], cl
mov ecx, dword [esi + edx*4]
xor dword [esp + edx*4 + 0x1c], ecx
inc edx
cmp edx, 8
jl 0x100a9776
xor esi, esi
mov ecx, dword [0x10196d70]
inc ecx
cmp edi, ecx
jge 0x100a97c3
cmp esi, ebx
jge 0x100a97aa
cmp eax, 4
jge 0x100a97aa
mov ecx, dword [esp + esi*4 + 0x1c]
lea edx, [eax + edi*4]
inc esi
mov dword [ebp + edx*4], ecx
inc eax
cmp esi, ebx
jl 0x100a9794
cmp eax, 4
lea ecx, [edi + 1]
cmovne ecx, edi
mov edi, ecx
xor ecx, ecx
cmp eax, 4
cmovne ecx, eax
mov eax, ecx
cmp esi, ebx
jl 0x100a9785
mov ecx, dword [0x10196d70]
mov esi, dword [esp + 0x18]
inc ecx
cmp edi, ecx
jl 0x100a9690
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x2c
ret