Function at 0x41db9d
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ecx
push ecx
mov ecx, dword [ebp + 8]
push ebx
push esi
push edi
mov edx, dword [ecx + 4]
mov eax, dword [ecx]
mov ecx, edx
mov esi, 0xf0f0f0f
shr ecx, 4
mov edi, eax
and ecx, esi
and edi, esi
push 0x3f
xor ecx, 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
mov esi, 0x33333333
xor edx, ecx
shl ecx, 0x10
xor eax, ecx
mov ecx, edx
shr ecx, 2
mov edi, eax
and ecx, esi
and edi, esi
mov esi, 0xff00ff
xor ecx, edi
xor eax, ecx
shl ecx, 2
xor edx, ecx
mov ecx, eax
shr ecx, 8
mov edi, edx
and ecx, esi
and edi, esi
mov esi, 0x55555555
xor ecx, edi
xor edx, ecx
shl ecx, 8
xor eax, ecx
mov ecx, edx
shr ecx, 1
mov edi, eax
and ecx, esi
and edi, esi
xor ecx, edi
xor eax, ecx
add ecx, ecx
xor edx, ecx
mov ecx, edx
add edx, edx
shr ecx, 0x1f
or ecx, edx
mov edx, eax
shr edx, 0x1f
add eax, eax
or edx, eax
cmp dword [ebp + 0x10], 0
mov eax, dword [ebp + 0xc]
je 0x41dd73
lea edi, [eax + 8]
mov dword [ebp - 4], 8
mov dword [ebp + 0x10], edi
pop eax
mov esi, dword [edi - 8]
mov edi, dword [edi - 4]
xor edi, edx
xor esi, edx
mov ebx, edi
shl ebx, 0x1c
shr edi, 4
add ebx, edi
mov edi, ebx
mov dword [ebp + 0xc], ebx
shr edi, 0x18
shr ebx, 0x10
and edi, eax
and ebx, eax
mov edi, dword [edi*4 + 0x4658b0]
or edi, dword [ebx*4 + 0x4656b0]
mov ebx, dword [ebp + 0xc]
shr ebx, 8
and ebx, eax
or edi, dword [ebx*4 + 0x4654b0]
mov ebx, esi
shr ebx, 0x18
and ebx, eax
or edi, dword [ebx*4 + 0x4657b0]
mov ebx, esi
shr ebx, 0x10
and ebx, eax
or edi, dword [ebx*4 + 0x4655b0]
mov ebx, esi
shr ebx, 8
and ebx, eax
and esi, eax
or edi, dword [ebx*4 + 0x4653b0]
mov ebx, edi
mov edi, dword [ebp + 0xc]
and edi, eax
or ebx, dword [edi*4 + 0x4652b0]
mov edi, dword [ebp + 0x10]
or ebx, dword [esi*4 + 0x4651b0]
mov esi, dword [edi]
mov edi, dword [edi + 4]
xor ecx, ebx
xor edi, ecx
xor esi, ecx
mov ebx, edi
shl ebx, 0x1c
shr edi, 4
add ebx, edi
mov edi, ebx
mov dword [ebp + 0xc], ebx
shr edi, 0x18
and edi, eax
shr ebx, 0x10
mov edi, dword [edi*4 + 0x4658b0]
and ebx, eax
or edi, dword [ebx*4 + 0x4656b0]
mov ebx, dword [ebp + 0xc]
shr ebx, 8
and ebx, eax
or edi, dword [ebx*4 + 0x4654b0]
mov ebx, esi
shr ebx, 0x18
and ebx, eax
or edi, dword [ebx*4 + 0x4657b0]
mov ebx, esi
shr ebx, 0x10
and ebx, eax
or edi, dword [ebx*4 + 0x4655b0]
mov ebx, esi
shr ebx, 8
and ebx, eax
and esi, eax
or edi, dword [ebx*4 + 0x4653b0]
mov ebx, edi
mov edi, dword [ebp + 0xc]
and edi, eax
or ebx, dword [edi*4 + 0x4652b0]
or ebx, dword [esi*4 + 0x4651b0]
xor edx, ebx
mov edi, dword [ebp + 0x10]
add edi, 0x10
dec dword [ebp - 4]
mov dword [ebp + 0x10], edi
jne 0x41dc54
jmp 0x41de9b
lea edi, [eax + 0x70]
mov dword [ebp - 4], 8
mov dword [ebp + 0x10], edi
pop eax
mov esi, dword [edi + 8]
mov edi, dword [edi + 0xc]
xor edi, edx
xor esi, edx
mov ebx, edi
shl ebx, 0x1c
shr edi, 4
add ebx, edi
mov edi, ebx
mov dword [ebp + 0xc], ebx
shr edi, 0x18
shr ebx, 0x10
and edi, eax
and ebx, eax
mov edi, dword [edi*4 + 0x4658b0]
or edi, dword [ebx*4 + 0x4656b0]
mov ebx, dword [ebp + 0xc]
shr ebx, 8
and ebx, eax
or edi, dword [ebx*4 + 0x4654b0]
mov ebx, esi
shr ebx, 0x18
and ebx, eax
or edi, dword [ebx*4 + 0x4657b0]
mov ebx, esi
shr ebx, 0x10
and ebx, eax
or edi, dword [ebx*4 + 0x4655b0]
mov ebx, esi
shr ebx, 8
and ebx, eax
and esi, eax
or edi, dword [ebx*4 + 0x4653b0]
mov ebx, edi
mov edi, dword [ebp + 0xc]
and edi, eax
or ebx, dword [edi*4 + 0x4652b0]
mov edi, dword [ebp + 0x10]
or ebx, dword [esi*4 + 0x4651b0]
mov esi, dword [edi]
mov edi, dword [edi + 4]
xor ecx, ebx
xor edi, ecx
xor esi, ecx
mov ebx, edi
shl ebx, 0x1c
shr edi, 4
add ebx, edi
mov edi, ebx
mov dword [ebp + 0xc], ebx
shr edi, 0x18
and edi, eax
shr ebx, 0x10
mov edi, dword [edi*4 + 0x4658b0]
and ebx, eax
or edi, dword [ebx*4 + 0x4656b0]
mov ebx, dword [ebp + 0xc]
shr ebx, 8
and ebx, eax
or edi, dword [ebx*4 + 0x4654b0]
mov ebx, esi
shr ebx, 0x18
and ebx, eax
or edi, dword [ebx*4 + 0x4657b0]
mov ebx, esi
shr ebx, 0x10
and ebx, eax
or edi, dword [ebx*4 + 0x4655b0]
mov ebx, esi
shr ebx, 8
and ebx, eax
and esi, eax
or edi, dword [ebx*4 + 0x4653b0]
mov ebx, edi
mov edi, dword [ebp + 0xc]
and edi, eax
or ebx, dword [edi*4 + 0x4652b0]
or ebx, dword [esi*4 + 0x4651b0]
xor edx, ebx
mov edi, dword [ebp + 0x10]
sub edi, 0x10
dec dword [ebp - 4]
mov dword [ebp + 0x10], edi
jne 0x41dd81
mov esi, ecx
shl esi, 0x1f
shr ecx, 1
or esi, ecx
mov ecx, edx
shl ecx, 0x1f
shr edx, 1
or ecx, edx
mov edx, 0x55555555
mov eax, ecx
mov edi, esi
shr eax, 1
and eax, edx
and edi, edx
xor eax, edi
mov edx, 0xff00ff
xor esi, eax
add eax, eax
xor ecx, eax
mov eax, esi
shr eax, 8
mov edi, ecx
and eax, edx
and edi, edx
mov edx, 0x33333333
xor eax, edi
xor ecx, eax
shl eax, 8
xor esi, eax
mov eax, ecx
shr eax, 2
mov edi, esi
and eax, edx
and edi, edx
xor eax, edi
xor esi, eax
shl eax, 2
xor ecx, eax
mov eax, esi
mov edx, ecx
shr eax, 0x10
and edx, 0xffff
xor eax, edx
mov edx, 0xf0f0f0f
xor ecx, eax
shl eax, 0x10
xor esi, eax
mov eax, ecx
shr eax, 4
mov edi, esi
and eax, edx
and edi, edx
mov edx, dword [ebp + 8]
xor eax, edi
mov edi, eax
xor edi, esi
shl eax, 4
mov dword [edx], edi
xor eax, ecx
pop edi
pop esi
mov dword [edx + 4], eax
pop ebx
leave
ret