Function at 0x10107a30
Capabilities:
Encode data using xor

Disassembly:
mov ecx, dword [esp + 4]
mov edx, dword [ecx + 4]
push ebx
push ebp
push esi
mov esi, eax
mov eax, dword [ecx]
mov ecx, edx
shr ecx, 4
xor ecx, eax
and ecx, 0xf0f0f0f
xor eax, ecx
shl ecx, 4
xor edx, ecx
mov ecx, eax
shr ecx, 0x10
xor ecx, edx
and ecx, 0xffff
xor edx, ecx
shl ecx, 0x10
xor eax, ecx
mov ecx, edx
shr ecx, 2
xor ecx, eax
and ecx, 0x33333333
xor eax, ecx
add ecx, ecx
add ecx, ecx
xor edx, ecx
mov ecx, eax
shr ecx, 8
xor ecx, edx
and ecx, 0xff00ff
xor edx, ecx
shl ecx, 8
xor eax, ecx
mov ecx, edx
shr ecx, 1
xor ecx, eax
and ecx, 0x55555555
xor eax, ecx
add ecx, ecx
xor edx, ecx
mov ecx, eax
shr ecx, 0x1d
lea ecx, [ecx + eax*8]
mov eax, edx
shr eax, 0x1d
cmp dword [esp + 0x14], 0
push edi
lea eax, [eax + edx*8]
je 0x10107cea
add esi, 8
mov dword [esp + 0x18], 4
mov ebx, dword [esi - 4]
xor ebx, ecx
mov edx, ebx
shr ebx, 4
mov edi, dword [esi - 8]
shl edx, 0x1c
add edx, ebx
mov ebx, edx
shr ebx, 0x12
and ebx, 0x3f
mov ebx, dword [ebx*4 + 0x10195da0]
mov ebp, edx
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x10195ba0]
mov ebp, edx
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x101959a0]
xor edi, ecx
mov ebp, edi
shr ebp, 0x12
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x10195ca0]
mov ebp, edi
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x10195aa0]
mov ebp, edi
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x101958a0]
shr edx, 0x1a
xor ebx, dword [edx*4 + 0x10195fa0]
shr edi, 0x1a
xor ebx, dword [edi*4 + 0x10195ea0]
mov edi, dword [esi]
xor eax, ebx
mov ebx, dword [esi + 4]
xor ebx, eax
mov edx, ebx
shr ebx, 4
shl edx, 0x1c
add edx, ebx
mov ebx, edx
shr ebx, 0x12
and ebx, 0x3f
mov ebx, dword [ebx*4 + 0x10195da0]
mov ebp, edx
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x10195ba0]
mov ebp, edx
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x101959a0]
xor edi, eax
mov ebp, edi
shr ebp, 0x12
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x10195ca0]
mov ebp, edi
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x10195aa0]
mov ebp, edi
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x101958a0]
shr edx, 0x1a
xor ebx, dword [edx*4 + 0x10195fa0]
shr edi, 0x1a
xor ebx, dword [edi*4 + 0x10195ea0]
mov edi, dword [esi + 8]
xor ecx, ebx
mov ebx, dword [esi + 0xc]
xor ebx, ecx
mov edx, ebx
xor edi, ecx
shl edx, 0x1c
shr ebx, 4
add edx, ebx
mov ebx, edx
shr ebx, 0x12
and ebx, 0x3f
mov ebx, dword [ebx*4 + 0x10195da0]
mov ebp, edx
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x10195ba0]
mov ebp, edx
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x101959a0]
mov ebp, edi
shr ebp, 0x12
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x10195ca0]
mov ebp, edi
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x10195aa0]
mov ebp, edi
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x101958a0]
shr edx, 0x1a
xor ebx, dword [edx*4 + 0x10195fa0]
shr edi, 0x1a
xor ebx, dword [edi*4 + 0x10195ea0]
mov edi, dword [esi + 0x10]
xor eax, ebx
mov ebx, dword [esi + 0x14]
xor ebx, eax
mov edx, ebx
shr ebx, 4
shl edx, 0x1c
add edx, ebx
mov ebx, edx
shr ebx, 0x12
and ebx, 0x3f
mov ebx, dword [ebx*4 + 0x10195da0]
mov ebp, edx
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x10195ba0]
mov ebp, edx
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x101959a0]
xor edi, eax
mov ebp, edi
shr ebp, 0x12
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x10195ca0]
mov ebp, edi
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x10195aa0]
mov ebp, edi
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x101958a0]
shr edx, 0x1a
xor ebx, dword [edx*4 + 0x10195fa0]
shr edi, 0x1a
xor ebx, dword [edi*4 + 0x10195ea0]
add esi, 0x20
xor ecx, ebx
sub dword [esp + 0x18], 1
jne 0x10107ac8
jmp 0x10107f12
add esi, 0x70
mov dword [esp + 0x18], 4
mov ebx, dword [esi + 0xc]
xor ebx, ecx
mov edx, ebx
shr ebx, 4
mov edi, dword [esi + 8]
shl edx, 0x1c
add edx, ebx
mov ebx, edx
shr ebx, 0x12
and ebx, 0x3f
mov ebx, dword [ebx*4 + 0x10195da0]
mov ebp, edx
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x10195ba0]
mov ebp, edx
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x101959a0]
xor edi, ecx
mov ebp, edi
shr ebp, 0x12
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x10195ca0]
mov ebp, edi
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x10195aa0]
mov ebp, edi
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x101958a0]
shr edx, 0x1a
xor ebx, dword [edx*4 + 0x10195fa0]
shr edi, 0x1a
xor ebx, dword [edi*4 + 0x10195ea0]
mov edi, dword [esi]
xor eax, ebx
mov ebx, dword [esi + 4]
xor ebx, eax
mov edx, ebx
shr ebx, 4
shl edx, 0x1c
add edx, ebx
mov ebx, edx
shr ebx, 0x12
and ebx, 0x3f
mov ebx, dword [ebx*4 + 0x10195da0]
mov ebp, edx
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x10195ba0]
mov ebp, edx
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x101959a0]
xor edi, eax
mov ebp, edi
shr ebp, 0x12
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x10195ca0]
mov ebp, edi
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x10195aa0]
mov ebp, edi
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x101958a0]
shr edx, 0x1a
xor ebx, dword [edx*4 + 0x10195fa0]
shr edi, 0x1a
xor ebx, dword [edi*4 + 0x10195ea0]
mov edi, dword [esi - 8]
xor ecx, ebx
mov ebx, dword [esi - 4]
xor ebx, ecx
mov edx, ebx
xor edi, ecx
shl edx, 0x1c
shr ebx, 4
add edx, ebx
mov ebx, edx
shr ebx, 0x12
and ebx, 0x3f
mov ebx, dword [ebx*4 + 0x10195da0]
mov ebp, edx
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x10195ba0]
mov ebp, edx
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x101959a0]
mov ebp, edi
shr ebp, 0x12
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x10195ca0]
mov ebp, edi
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x10195aa0]
mov ebp, edi
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x101958a0]
shr edx, 0x1a
xor ebx, dword [edx*4 + 0x10195fa0]
shr edi, 0x1a
xor ebx, dword [edi*4 + 0x10195ea0]
mov edi, dword [esi - 0x10]
xor eax, ebx
mov ebx, dword [esi - 0xc]
xor ebx, eax
mov edx, ebx
shr ebx, 4
shl edx, 0x1c
add edx, ebx
mov ebx, edx
shr ebx, 0x12
and ebx, 0x3f
mov ebx, dword [ebx*4 + 0x10195da0]
mov ebp, edx
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x10195ba0]
mov ebp, edx
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x101959a0]
xor edi, eax
mov ebp, edi
shr ebp, 0x12
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x10195ca0]
mov ebp, edi
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x10195aa0]
mov ebp, edi
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x101958a0]
shr edx, 0x1a
xor ebx, dword [edx*4 + 0x10195fa0]
shr edi, 0x1a
xor ebx, dword [edi*4 + 0x10195ea0]
sub esi, 0x20
xor ecx, ebx
sub dword [esp + 0x18], 1
jne 0x10107cf5
mov edx, eax
shr eax, 3
shl edx, 0x1d
add edx, eax
mov eax, ecx
shr ecx, 3
shl eax, 0x1d
add eax, ecx
mov ecx, eax
shr ecx, 1
xor ecx, edx
and ecx, 0x55555555
xor edx, ecx
add ecx, ecx
xor eax, ecx
mov ecx, edx
shr ecx, 8
xor ecx, eax
and ecx, 0xff00ff
xor eax, ecx
shl ecx, 8
xor edx, ecx
mov ecx, eax
shr ecx, 2
xor ecx, edx
and ecx, 0x33333333
xor edx, ecx
add ecx, ecx
add ecx, ecx
xor eax, ecx
mov ecx, edx
shr ecx, 0x10
xor ecx, eax
and ecx, 0xffff
xor eax, ecx
shl ecx, 0x10
xor edx, ecx
mov ecx, eax
shr ecx, 4
xor ecx, edx
and ecx, 0xf0f0f0f
mov esi, ecx
xor esi, edx
mov edx, dword [esp + 0x14]
pop edi
mov dword [edx], esi
pop esi
shl ecx, 4
xor ecx, eax
pop ebp
mov dword [edx + 4], ecx
pop ebx
ret