Function at 0x10156a30
Capabilities:
Encode data using xor

Disassembly:
mov ecx, dword [esp + 4]
push ebx
push ebp
push esi
mov edx, dword [ecx + 4]
mov eax, dword [ecx]
mov ecx, edx
mov esi, eax
shr ecx, 4
and ecx, 0xf0f0f0f
and esi, 0xf0f0f0f
xor ecx, esi
push edi
xor eax, ecx
shl ecx, 4
xor edx, ecx
mov ecx, eax
mov esi, edx
shr ecx, 0x10
and esi, 0xffff
xor ecx, esi
xor edx, ecx
shl ecx, 0x10
xor eax, ecx
mov ecx, edx
shr ecx, 2
mov esi, eax
and ecx, 0x33333333
and esi, 0x33333333
xor ecx, esi
xor eax, ecx
shl ecx, 2
xor edx, ecx
mov ecx, eax
shr ecx, 8
mov esi, edx
and ecx, 0xff00ff
and esi, 0xff00ff
xor ecx, esi
xor edx, ecx
shl ecx, 8
xor eax, ecx
mov esi, edx
shr esi, 1
mov ecx, eax
and esi, 0x55555555
and ecx, 0x55555555
xor esi, ecx
mov ecx, esi
xor ecx, eax
lea eax, [esi + esi]
xor eax, edx
mov edx, dword [esp + 0x1c]
ror ecx, 0x1d
ror eax, 0x1d
test edx, edx
mov edx, dword [esp + 0x18]
je 0x10156d01
lea esi, [edx + 8]
mov dword [esp + 0x18], 4
mov edx, dword [esi - 4]
mov edi, dword [esi - 8]
xor edx, ecx
xor edi, ecx
ror edx, 4
mov ebx, edx
mov ebp, edx
shr ebx, 0x12
shr ebp, 0xa
and ebx, 0x3f
and ebp, 0x3f
mov ebx, dword [ebx*4 + 0x1020ae04]
xor ebx, dword [ebp*4 + 0x1020ac04]
mov ebp, edx
shr ebp, 2
and ebp, 0x3f
shr edx, 0x1a
xor ebx, dword [ebp*4 + 0x1020aa04]
mov ebp, edi
shr ebp, 0x12
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x1020ad04]
mov ebp, edi
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x1020ab04]
mov ebp, edi
shr ebp, 2
and ebp, 0x3f
shr edi, 0x1a
xor ebx, dword [ebp*4 + 0x1020a904]
mov ebp, dword [edx*4 + 0x1020b004]
mov edx, dword [esi]
xor ebx, ebp
mov ebp, dword [edi*4 + 0x1020af04]
xor ebx, ebp
xor eax, ebx
mov edi, eax
xor edi, edx
mov edx, dword [esi + 4]
xor edx, eax
ror edx, 4
mov ebx, edx
mov ebp, edx
shr ebx, 0x12
and ebx, 0x3f
shr ebp, 0xa
mov ebx, dword [ebx*4 + 0x1020ae04]
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x1020ac04]
mov ebp, edx
shr ebp, 2
and ebp, 0x3f
shr edx, 0x1a
xor ebx, dword [ebp*4 + 0x1020aa04]
mov ebp, edi
shr ebp, 0x12
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x1020ad04]
mov ebp, edi
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x1020ab04]
mov ebp, edi
shr ebp, 2
and ebp, 0x3f
shr edi, 0x1a
xor ebx, dword [ebp*4 + 0x1020a904]
mov ebp, dword [edx*4 + 0x1020b004]
mov edx, dword [esi + 0xc]
xor ebx, ebp
mov ebp, dword [edi*4 + 0x1020af04]
mov edi, dword [esi + 8]
xor ebx, ebp
xor ecx, ebx
xor edx, ecx
xor edi, ecx
ror edx, 4
mov ebx, edx
shr ebx, 0x12
and ebx, 0x3f
mov ebx, dword [ebx*4 + 0x1020ae04]
mov ebp, edx
shr ebp, 0xa
and ebp, 0x3f
add esi, 0x20
xor ebx, dword [ebp*4 + 0x1020ac04]
mov ebp, edx
shr ebp, 2
and ebp, 0x3f
shr edx, 0x1a
xor ebx, dword [ebp*4 + 0x1020aa04]
mov ebp, edi
shr ebp, 0x12
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x1020ad04]
mov ebp, edi
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x1020ab04]
mov ebp, edi
shr ebp, 2
and ebp, 0x3f
shr edi, 0x1a
xor ebx, dword [ebp*4 + 0x1020a904]
mov ebp, dword [edx*4 + 0x1020b004]
mov edx, dword [esi - 0xc]
xor ebx, ebp
mov ebp, dword [edi*4 + 0x1020af04]
mov edi, dword [esi - 0x10]
xor ebx, ebp
xor eax, ebx
xor edx, eax
xor edi, eax
ror edx, 4
mov ebx, edx
mov ebp, edx
shr ebx, 0x12
and ebx, 0x3f
shr ebp, 0xa
mov ebx, dword [ebx*4 + 0x1020ae04]
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x1020ac04]
mov ebp, edx
shr ebp, 2
and ebp, 0x3f
shr edx, 0x1a
xor ebx, dword [ebp*4 + 0x1020aa04]
mov ebp, edi
shr ebp, 0x12
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x1020ad04]
mov ebp, edi
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x1020ab04]
mov ebp, edi
shr ebp, 2
and ebp, 0x3f
shr edi, 0x1a
xor ebx, dword [ebp*4 + 0x1020a904]
mov ebp, dword [edx*4 + 0x1020b004]
mov edx, dword [edi*4 + 0x1020af04]
xor ebx, ebp
xor ebx, edx
mov edx, dword [esp + 0x18]
xor ecx, ebx
dec edx
mov dword [esp + 0x18], edx
jne 0x10156ae5
jmp 0x10156f21
lea esi, [edx + 0x70]
mov dword [esp + 0x18], 4
mov edx, dword [esi + 0xc]
mov edi, dword [esi + 8]
xor edx, ecx
xor edi, ecx
ror edx, 4
mov ebx, edx
mov ebp, edx
shr ebx, 0x12
shr ebp, 0xa
and ebx, 0x3f
and ebp, 0x3f
mov ebx, dword [ebx*4 + 0x1020ae04]
xor ebx, dword [ebp*4 + 0x1020ac04]
mov ebp, edx
shr ebp, 2
and ebp, 0x3f
shr edx, 0x1a
xor ebx, dword [ebp*4 + 0x1020aa04]
mov ebp, edi
shr ebp, 0x12
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x1020ad04]
mov ebp, edi
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x1020ab04]
mov ebp, edi
shr ebp, 2
and ebp, 0x3f
shr edi, 0x1a
xor ebx, dword [ebp*4 + 0x1020a904]
mov ebp, dword [edx*4 + 0x1020b004]
mov edx, dword [esi + 4]
xor ebx, ebp
mov ebp, dword [edi*4 + 0x1020af04]
mov edi, dword [esi]
xor ebx, ebp
xor eax, ebx
xor edx, eax
xor edi, eax
ror edx, 4
mov ebx, edx
mov ebp, edx
shr ebx, 0x12
and ebx, 0x3f
shr ebp, 0xa
mov ebx, dword [ebx*4 + 0x1020ae04]
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x1020ac04]
mov ebp, edx
shr ebp, 2
and ebp, 0x3f
shr edx, 0x1a
xor ebx, dword [ebp*4 + 0x1020aa04]
mov ebp, edi
shr ebp, 0x12
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x1020ad04]
mov ebp, edi
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x1020ab04]
mov ebp, edi
shr ebp, 2
and ebp, 0x3f
shr edi, 0x1a
xor ebx, dword [ebp*4 + 0x1020a904]
mov ebp, dword [edx*4 + 0x1020b004]
mov edx, dword [esi - 4]
xor ebx, ebp
mov ebp, dword [edi*4 + 0x1020af04]
mov edi, dword [esi - 8]
xor ebx, ebp
xor ecx, ebx
xor edx, ecx
xor edi, ecx
ror edx, 4
mov ebx, edx
mov ebp, edx
shr ebx, 0x12
and ebx, 0x3f
mov ebx, dword [ebx*4 + 0x1020ae04]
sub esi, 0x20
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x1020ac04]
mov ebp, edx
shr ebp, 2
and ebp, 0x3f
shr edx, 0x1a
xor ebx, dword [ebp*4 + 0x1020aa04]
mov ebp, edi
shr ebp, 0x12
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x1020ad04]
mov ebp, edi
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x1020ab04]
mov ebp, edi
shr ebp, 2
and ebp, 0x3f
shr edi, 0x1a
xor ebx, dword [ebp*4 + 0x1020a904]
mov ebp, dword [edx*4 + 0x1020b004]
mov edx, dword [esi + 0x14]
xor ebx, ebp
mov ebp, dword [edi*4 + 0x1020af04]
mov edi, dword [esi + 0x10]
xor ebx, ebp
xor eax, ebx
xor edx, eax
xor edi, eax
ror edx, 4
mov ebx, edx
mov ebp, edx
shr ebx, 0x12
and ebx, 0x3f
shr ebp, 0xa
mov ebx, dword [ebx*4 + 0x1020ae04]
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x1020ac04]
mov ebp, edx
shr ebp, 2
and ebp, 0x3f
shr edx, 0x1a
xor ebx, dword [ebp*4 + 0x1020aa04]
mov ebp, edi
shr ebp, 0x12
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x1020ad04]
mov ebp, edi
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x1020ab04]
mov ebp, edi
shr ebp, 2
and ebp, 0x3f
shr edi, 0x1a
xor ebx, dword [ebp*4 + 0x1020a904]
mov ebp, dword [edx*4 + 0x1020b004]
mov edx, dword [edi*4 + 0x1020af04]
xor ebx, ebp
xor ebx, edx
mov edx, dword [esp + 0x18]
xor ecx, ebx
dec edx
mov dword [esp + 0x18], edx
jne 0x10156d0c
ror eax, 3
ror ecx, 3
mov edx, ecx
mov esi, eax
shr edx, 1
and edx, 0x55555555
and esi, 0x55555555
xor edx, esi
pop edi
xor eax, edx
add edx, edx
xor ecx, edx
mov edx, eax
shr edx, 8
mov esi, ecx
and edx, 0xff00ff
and esi, 0xff00ff
xor edx, esi
xor ecx, edx
shl edx, 8
xor eax, edx
mov edx, ecx
shr edx, 2
mov esi, eax
and edx, 0x33333333
and esi, 0x33333333
xor edx, esi
xor eax, edx
shl edx, 2
xor ecx, edx
mov edx, eax
mov esi, ecx
shr edx, 0x10
and esi, 0xffff
xor edx, esi
xor ecx, edx
shl edx, 0x10
xor eax, edx
mov edx, ecx
shr edx, 4
mov esi, eax
and edx, 0xf0f0f0f
and esi, 0xf0f0f0f
xor edx, esi
mov esi, edx
xor esi, eax
mov eax, dword [esp + 0x10]
shl edx, 4
mov dword [eax], esi
xor edx, ecx
pop esi
pop ebp
mov dword [eax + 4], edx
pop ebx
ret