Function at 0x40bb90
Capabilities:
Encode data using xor

Disassembly:
mov eax, dword [esp + 4]
push ebx
push ebp
push esi
mov ecx, dword [eax]
push edi
mov dword [0x412d1c], ecx
mov eax, dword [eax + 4]
mov edx, eax
mov esi, ecx
shr edx, 4
and edx, 0xf0f0f0f
and esi, 0xf0f0f0f
xor edx, esi
mov edi, dword [esp + 0x1c]
xor ecx, edx
mov dword [0x412d10], edi
shl edx, 4
xor eax, edx
mov edx, ecx
mov esi, eax
shr edx, 0x10
and esi, 0xffff
xor edx, esi
xor eax, edx
shl edx, 0x10
xor ecx, edx
mov edx, eax
shr edx, 2
mov esi, ecx
and edx, 0x33333333
and esi, 0x33333333
xor edx, esi
xor ecx, edx
shl edx, 2
xor eax, edx
mov edx, ecx
shr edx, 8
mov esi, eax
and edx, 0xff00ff
and esi, 0xff00ff
xor edx, esi
xor eax, edx
shl edx, 8
xor ecx, edx
mov edx, eax
shr edx, 1
mov esi, ecx
and edx, 0x55555555
and esi, 0x55555555
xor edx, esi
xor ecx, edx
add edx, edx
xor eax, edx
mov esi, eax
add eax, eax
shr esi, 0x1f
or esi, eax
mov eax, ecx
shr eax, 0x1f
add ecx, ecx
mov dword [0x412c88], esi
or eax, ecx
mov ecx, dword [esp + 0x20]
test ecx, ecx
mov dword [0x412c84], eax
mov dword [0x412d1c], esi
je 0x40bdc1
xor ecx, ecx
mov dword [0x412c80], ecx
mov edx, dword [edi + ecx*4]
xor edx, eax
mov dword [0x412d2c], edx
mov ebx, dword [edi + ecx*4 + 4]
xor ebx, eax
mov ebp, edx
mov ecx, ebx
shl ecx, 0x1c
shr ebx, 4
add ecx, ebx
mov ebx, edx
shr ebx, 0x18
and ebx, 0x3f
mov dword [0x412c88], ecx
shr ebp, 0x10
mov ebx, dword [ebx*4 + 0x411c88]
and ebp, 0x3f
or ebx, dword [ebp*4 + 0x411a88]
mov ebp, edx
shr ebp, 8
and ebp, 0x3f
and edx, 0x3f
or ebx, dword [ebp*4 + 0x411888]
mov ebp, ecx
shr ebp, 0x18
and ebp, 0x3f
or ebx, dword [ebp*4 + 0x411d88]
mov ebp, ecx
shr ebp, 0x10
and ebp, 0x3f
or ebx, dword [ebp*4 + 0x411b88]
mov ebp, ecx
shr ebp, 8
and ebp, 0x3f
and ecx, 0x3f
or ebx, dword [ebp*4 + 0x411988]
mov ebp, dword [edx*4 + 0x411688]
mov edx, dword [ecx*4 + 0x411788]
mov ecx, dword [0x412c80]
or ebx, ebp
or ebx, edx
xor esi, ebx
mov dword [0x412d1c], esi
mov edx, dword [edi + ecx*4 + 8]
xor edx, esi
mov dword [0x412d2c], edx
mov ebx, dword [edi + ecx*4 + 0xc]
xor ebx, esi
mov ebp, edx
mov ecx, ebx
shl ecx, 0x1c
shr ebx, 4
add ecx, ebx
mov ebx, edx
shr ebx, 0x18
and ebx, 0x3f
mov dword [0x412c88], ecx
shr ebp, 0x10
mov ebx, dword [ebx*4 + 0x411c88]
and ebp, 0x3f
or ebx, dword [ebp*4 + 0x411a88]
mov ebp, edx
shr ebp, 8
and ebp, 0x3f
and edx, 0x3f
or ebx, dword [ebp*4 + 0x411888]
mov ebp, ecx
shr ebp, 0x18
and ebp, 0x3f
or ebx, dword [ebp*4 + 0x411d88]
mov ebp, ecx
shr ebp, 0x10
and ebp, 0x3f
or ebx, dword [ebp*4 + 0x411b88]
mov ebp, ecx
shr ebp, 8
and ebp, 0x3f
or ebx, dword [ebp*4 + 0x411988]
mov ebp, dword [edx*4 + 0x411688]
or ebx, ebp
and ecx, 0x3f
mov edx, dword [ecx*4 + 0x411788]
mov ecx, dword [0x412c80]
or ebx, edx
add ecx, 4
xor eax, ebx
cmp ecx, 0x20
mov dword [0x412c84], eax
mov dword [0x412c80], ecx
jl 0x40bc68
jmp 0x40bf21
mov ecx, 0x1e
mov dword [0x412c80], ecx
mov ebx, dword [edi + ecx*4]
mov edx, eax
xor edx, ebx
mov dword [0x412d2c], edx
mov ebx, dword [edi + ecx*4 + 4]
xor ebx, eax
mov ebp, edx
mov ecx, ebx
shl ecx, 0x1c
shr ebx, 4
add ecx, ebx
mov ebx, edx
shr ebx, 0x18
and ebx, 0x3f
mov dword [0x412c88], ecx
shr ebp, 0x10
mov ebx, dword [ebx*4 + 0x411c88]
and ebp, 0x3f
or ebx, dword [ebp*4 + 0x411a88]
mov ebp, edx
shr ebp, 8
and ebp, 0x3f
and edx, 0x3f
or ebx, dword [ebp*4 + 0x411888]
mov ebp, ecx
shr ebp, 0x18
and ebp, 0x3f
or ebx, dword [ebp*4 + 0x411d88]
mov ebp, ecx
shr ebp, 0x10
and ebp, 0x3f
or ebx, dword [ebp*4 + 0x411b88]
mov ebp, ecx
shr ebp, 8
and ebp, 0x3f
and ecx, 0x3f
or ebx, dword [ebp*4 + 0x411988]
mov ebp, dword [edx*4 + 0x411688]
mov edx, dword [ecx*4 + 0x411788]
mov ecx, dword [0x412c80]
or ebx, ebp
or ebx, edx
xor esi, ebx
mov dword [0x412d1c], esi
mov edx, dword [edi + ecx*4 - 8]
xor edx, esi
mov dword [0x412d2c], edx
mov ebx, dword [edi + ecx*4 - 4]
xor ebx, esi
mov ebp, edx
mov ecx, ebx
shl ecx, 0x1c
shr ebx, 4
add ecx, ebx
mov ebx, edx
shr ebx, 0x18
and ebx, 0x3f
mov dword [0x412c88], ecx
shr ebp, 0x10
mov ebx, dword [ebx*4 + 0x411c88]
and ebp, 0x3f
or ebx, dword [ebp*4 + 0x411a88]
mov ebp, edx
shr ebp, 8
and ebp, 0x3f
and edx, 0x3f
or ebx, dword [ebp*4 + 0x411888]
mov ebp, ecx
shr ebp, 0x18
and ebp, 0x3f
or ebx, dword [ebp*4 + 0x411d88]
mov ebp, ecx
shr ebp, 0x10
and ebp, 0x3f
or ebx, dword [ebp*4 + 0x411b88]
mov ebp, ecx
shr ebp, 8
and ebp, 0x3f
or ebx, dword [ebp*4 + 0x411988]
mov ebp, dword [edx*4 + 0x411688]
or ebx, ebp
and ecx, 0x3f
mov edx, dword [ecx*4 + 0x411788]
mov ecx, dword [0x412c80]
or ebx, edx
sub ecx, 4
xor eax, ebx
mov dword [0x412c80], ecx
test ecx, ecx
mov dword [0x412c84], eax
jg 0x40bdcc
mov edx, eax
mov ecx, esi
shl edx, 0x1f
shr eax, 1
shl ecx, 0x1f
shr esi, 1
or edx, eax
or ecx, esi
mov eax, edx
mov esi, ecx
shr eax, 1
and eax, 0x55555555
and esi, 0x55555555
xor eax, esi
pop edi
xor ecx, eax
add eax, eax
xor edx, eax
mov eax, ecx
shr eax, 8
mov esi, edx
and eax, 0xff00ff
and esi, 0xff00ff
xor eax, esi
xor edx, eax
shl eax, 8
xor ecx, eax
mov eax, edx
shr eax, 2
mov esi, ecx
and eax, 0x33333333
and esi, 0x33333333
xor eax, esi
xor ecx, eax
shl eax, 2
xor edx, eax
mov eax, ecx
mov esi, edx
shr eax, 0x10
and esi, 0xffff
xor eax, esi
xor edx, eax
shl eax, 0x10
xor ecx, eax
mov eax, edx
shr eax, 4
mov esi, ecx
and eax, 0xf0f0f0f
and esi, 0xf0f0f0f
xor eax, esi
pop esi
mov dword [0x412c88], eax
xor ecx, eax
shl eax, 4
xor edx, eax
mov eax, dword [esp + 0x10]
mov dword [0x412d1c], ecx
mov dword [0x412c84], edx
mov dword [eax], ecx
mov ecx, dword [0x412c84]
mov dword [eax + 4], ecx
pop ebp
xor eax, eax
pop ebx
ret