Function at 0x1001518e
Capabilities:
Encode data using xor
Encrypt data using aes

Disassembly:
push 4
pop eax
call fcn.1005ead0
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0x18]
test edi, edi
je 0x100156ec
mov esi, dword [esp + 0x20]
test esi, esi
je 0x100156ec
mov eax, dword [esp + 0x1c]
mov ecx, 0x80
cmp eax, ecx
mov edx, 0xc0
je 0x100151db
cmp eax, edx
je 0x100151d7
cmp eax, 0x100
je 0x100151d7
push 0xfffffffffffffffe
pop eax
jmp 0x100156ef
cmp eax, ecx
jne 0x100151e7
mov dword [esi + 0xf0], 0xa
jmp 0x100151f8
xor ecx, ecx
cmp eax, edx
setne cl
lea ecx, [ecx + ecx + 0xc]
mov dword [esi + 0xf0], ecx
push 8
push dword [edi]
call sub.MSVCR70.dll__lrotr
mov ebp, 0xff00ff00
push 8
push dword [edi]
and eax, ebp
mov dword [esp + 0x28], eax
call sub.MSVCR70.dll__lrotl
mov ecx, dword [esp + 0x28]
mov ebx, 0xff00ff
and eax, ebx
or ecx, eax
mov dword [esi], ecx
push 8
push dword [edi + 4]
lea eax, [esi + 4]
mov dword [esp + 0x28], eax
call sub.MSVCR70.dll__lrotr
push 8
push dword [edi + 4]
and eax, ebp
mov dword [esp + 0x38], eax
call sub.MSVCR70.dll__lrotl
mov ecx, dword [esp + 0x38]
and eax, ebx
or ecx, eax
mov eax, dword [esp + 0x30]
mov dword [eax], ecx
push 8
push dword [edi + 8]
call sub.MSVCR70.dll__lrotr
push 8
push dword [edi + 8]
mov ebp, eax
and ebp, 0xff00ff00
call sub.MSVCR70.dll__lrotl
and eax, ebx
or ebp, eax
mov dword [esi + 8], ebp
push 8
push dword [edi + 0xc]
call sub.MSVCR70.dll__lrotr
push 8
push dword [edi + 0xc]
mov ebp, eax
and ebp, 0xff00ff00
call sub.MSVCR70.dll__lrotl
and eax, ebx
or ebp, eax
add esp, 0x40
cmp dword [esp + 0x1c], 0x80
mov dword [esi + 0xc], ebp
jne 0x100153b0
mov ebx, ebp
mov dword [esp + 0x18], ebx
movzx eax, byte [esp + 0x1a]
mov eax, dword [eax*4 + 0x10073960]
movzx ecx, bh
mov ecx, dword [ecx*4 + 0x10073d60]
xor eax, 0x1000000
mov edx, 0xff000000
and eax, edx
mov ebp, 0xff0000
and ecx, ebp
xor eax, ecx
mov ecx, ebx
shr ecx, 0x18
mov edi, dword [ecx*4 + 0x10073560]
mov ecx, 0xff
and ebx, ecx
mov ebx, dword [ebx*4 + 0x10073160]
and edi, ecx
xor eax, edi
mov edi, 0xff00
and ebx, edi
xor eax, ebx
xor eax, dword [esi]
mov ebx, dword [esp + 0x10]
mov ebx, dword [ebx]
xor ebx, eax
mov dword [esi + 0x10], eax
mov eax, dword [esi + 8]
xor eax, ebx
mov dword [esi + 0x18], eax
xor eax, dword [esi + 0xc]
mov dword [esi + 0x14], ebx
mov dword [esi + 0x1c], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x10], 0x10075264
mov ebx, dword [eax + 0x18]
mov dword [esp + 0x18], ebx
movzx esi, bh
mov esi, dword [esi*4 + 0x10073d60]
movzx ebx, byte [esp + 0x1a]
mov ebx, dword [ebx*4 + 0x10073960]
add eax, 0x10
and ebx, edx
and esi, ebp
xor esi, ebx
mov ebx, dword [esp + 0x18]
shr ebx, 0x18
mov ebx, dword [ebx*4 + 0x10073560]
and ebx, ecx
xor esi, ebx
mov ebx, dword [esp + 0x18]
and ebx, ecx
mov dword [esp + 0x18], ebx
mov ebx, dword [ebx*4 + 0x10073160]
and ebx, edi
xor esi, ebx
xor esi, dword [eax - 4]
mov ebx, dword [esp + 0x10]
xor esi, dword [ebx]
add dword [esp + 0x10], 4
mov dword [eax + 0xc], esi
mov ebx, dword [eax]
xor ebx, esi
mov dword [eax + 0x10], ebx
mov esi, dword [eax + 4]
xor esi, ebx
mov dword [eax + 0x14], esi
mov ebx, dword [eax + 8]
xor ebx, esi
cmp dword [esp + 0x10], 0x10075288
mov dword [eax + 0x18], ebx
jne 0x1001532c
jmp 0x100156e8
push 8
push dword [edi + 0x10]
call sub.MSVCR70.dll__lrotr
push 8
push dword [edi + 0x10]
mov ebp, eax
and ebp, 0xff00ff00
call sub.MSVCR70.dll__lrotl
and eax, ebx
or ebp, eax
mov dword [esi + 0x10], ebp
push 8
push dword [edi + 0x14]
call sub.MSVCR70.dll__lrotr
push 8
push dword [edi + 0x14]
mov ebp, eax
and ebp, 0xff00ff00
call sub.MSVCR70.dll__lrotl
and eax, ebx
or ebp, eax
add esp, 0x20
cmp dword [esp + 0x1c], 0xc0
mov dword [esi + 0x14], ebp
jne 0x10015523
mov ebx, ebp
mov dword [esp + 0x18], ebx
movzx eax, byte [esp + 0x1a]
mov eax, dword [eax*4 + 0x10073960]
movzx ecx, bh
mov ecx, dword [ecx*4 + 0x10073d60]
xor eax, 0x1000000
mov edx, 0xff000000
and eax, edx
mov ebp, 0xff0000
and ecx, ebp
xor eax, ecx
mov ecx, ebx
shr ecx, 0x18
mov edi, dword [ecx*4 + 0x10073560]
mov ecx, 0xff
and ebx, ecx
mov ebx, dword [ebx*4 + 0x10073160]
and edi, ecx
xor eax, edi
mov edi, 0xff00
and ebx, edi
xor eax, ebx
xor eax, dword [esi]
mov ebx, dword [esp + 0x10]
mov ebx, dword [ebx]
xor ebx, eax
mov dword [esi + 0x18], eax
mov eax, dword [esi + 8]
xor eax, ebx
mov dword [esi + 0x1c], ebx
mov ebx, dword [esi + 0xc]
xor ebx, eax
mov dword [esi + 0x20], eax
mov dword [esi + 0x24], ebx
lea eax, [esi + 0x28]
mov dword [esp + 0x10], 0x10075264
mov esi, dword [eax - 0x18]
xor esi, dword [eax - 4]
mov ebx, dword [eax - 0x14]
xor ebx, esi
mov dword [eax + 4], ebx
mov dword [eax], esi
mov ebx, dword [eax + 4]
mov dword [esp + 0x18], ebx
movzx esi, bh
mov esi, dword [esi*4 + 0x10073d60]
movzx ebx, byte [esp + 0x1a]
mov ebx, dword [ebx*4 + 0x10073960]
add eax, 0x18
and ebx, edx
and esi, ebp
xor esi, ebx
mov ebx, dword [esp + 0x18]
shr ebx, 0x18
mov ebx, dword [ebx*4 + 0x10073560]
and ebx, ecx
xor esi, ebx
mov ebx, dword [esp + 0x18]
and ebx, ecx
mov dword [esp + 0x18], ebx
mov ebx, dword [ebx*4 + 0x10073160]
and ebx, edi
xor esi, ebx
xor esi, dword [eax - 0x28]
mov ebx, dword [esp + 0x10]
xor esi, dword [ebx]
add dword [esp + 0x10], 4
mov dword [eax - 0x10], esi
mov ebx, dword [eax - 0x24]
xor ebx, esi
mov dword [eax - 0xc], ebx
mov esi, dword [eax - 0x20]
xor esi, ebx
mov dword [eax - 8], esi
mov ebx, dword [eax - 0x1c]
xor ebx, esi
cmp dword [esp + 0x10], 0x10075280
mov dword [eax - 4], ebx
jne 0x1001548a
jmp 0x100156e8
push 8
push dword [edi + 0x18]
call sub.MSVCR70.dll__lrotr
push 8
push dword [edi + 0x18]
mov ebp, eax
and ebp, 0xff00ff00
call sub.MSVCR70.dll__lrotl
and eax, ebx
or ebp, eax
mov dword [esi + 0x18], ebp
push 8
push dword [edi + 0x1c]
call sub.MSVCR70.dll__lrotr
push 8
push dword [edi + 0x1c]
mov ebp, eax
and ebp, 0xff00ff00
call sub.MSVCR70.dll__lrotl
and eax, ebx
or ebp, eax
add esp, 0x20
cmp dword [esp + 0x1c], 0x100
mov dword [esi + 0x1c], ebp
jne 0x100156e8
mov ebx, ebp
mov dword [esp + 0x18], ebx
movzx eax, byte [esp + 0x1a]
mov eax, dword [eax*4 + 0x10073960]
movzx ecx, bh
mov ecx, dword [ecx*4 + 0x10073d60]
xor eax, 0x1000000
mov edx, 0xff000000
and eax, edx
mov ebp, 0xff0000
and ecx, ebp
xor eax, ecx
mov ecx, ebx
shr ecx, 0x18
mov edi, dword [ecx*4 + 0x10073560]
mov ecx, 0xff
and ebx, ecx
mov ebx, dword [ebx*4 + 0x10073160]
and edi, ecx
xor eax, edi
mov edi, 0xff00
and ebx, edi
xor eax, ebx
xor eax, dword [esi]
mov ebx, dword [esp + 0x10]
mov ebx, dword [ebx]
xor ebx, eax
mov dword [esi + 0x20], eax
mov eax, dword [esi + 8]
xor eax, ebx
mov dword [esi + 0x24], ebx
mov ebx, dword [esi + 0xc]
xor ebx, eax
mov dword [esi + 0x28], eax
mov dword [esi + 0x2c], ebx
lea eax, [esi + 0x30]
mov dword [esp + 0x10], 0x10075264
mov ebx, dword [eax - 4]
mov dword [esp + 0x18], ebx
movzx esi, byte [esp + 0x1a]
mov esi, dword [esi*4 + 0x10073d60]
movzx ebx, bh
mov ebx, dword [ebx*4 + 0x10073160]
and ebx, edi
and esi, ebp
xor esi, ebx
mov ebx, dword [esp + 0x18]
shr ebx, 0x18
mov ebx, dword [ebx*4 + 0x10073960]
and ebx, edx
xor esi, ebx
mov ebx, dword [esp + 0x18]
and ebx, ecx
mov dword [esp + 0x18], ebx
mov ebx, dword [ebx*4 + 0x10073560]
and ebx, ecx
xor esi, ebx
xor esi, dword [eax - 0x20]
mov ebx, dword [eax - 0x1c]
xor ebx, esi
mov dword [eax + 4], ebx
mov dword [eax], esi
mov esi, dword [eax - 0x18]
xor esi, ebx
mov ebx, dword [eax - 0x14]
xor ebx, esi
mov dword [eax + 0xc], ebx
mov dword [eax + 8], esi
mov ebx, dword [eax + 0xc]
mov dword [esp + 0x18], ebx
movzx esi, bh
mov esi, dword [esi*4 + 0x10073d60]
movzx ebx, byte [esp + 0x1a]
mov ebx, dword [ebx*4 + 0x10073960]
add eax, 0x20
and ebx, edx
and esi, ebp
xor esi, ebx
mov ebx, dword [esp + 0x18]
shr ebx, 0x18
mov ebx, dword [ebx*4 + 0x10073560]
and ebx, ecx
xor esi, ebx
mov ebx, dword [esp + 0x18]
and ebx, ecx
mov dword [esp + 0x18], ebx
mov ebx, dword [ebx*4 + 0x10073160]
and ebx, edi
xor esi, ebx
xor esi, dword [eax - 0x30]
mov ebx, dword [esp + 0x10]
xor esi, dword [ebx]
add dword [esp + 0x10], 4
mov dword [eax - 0x10], esi
mov ebx, dword [eax - 0x2c]
xor ebx, esi
mov dword [eax - 0xc], ebx
mov esi, dword [eax - 0x28]
xor esi, ebx
mov dword [eax - 8], esi
mov ebx, dword [eax - 0x24]
xor ebx, esi
cmp dword [esp + 0x10], 0x1007527c
mov dword [eax - 4], ebx
jne 0x100155fd
xor eax, eax
jmp 0x100156ef
or eax, 0xffffffff
pop edi
pop esi
pop ebp
pop ebx
pop ecx
ret