Function at 0x40d850
Capabilities:
Encode data using xor

Disassembly:
mov edx, dword [esp + 8]
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 4]
push ebx
push esi
mov esi, dword [eax + 4]
push edi
mov edi, dword [edx + 4]
xor esi, edi
dec ecx
mov ebx, dword [esp + 0x1c]
shr ecx, 0x1f
dec ecx
and esi, ecx
xor edi, esi
mov dword [edx + 4], edi
xor dword [eax + 4], esi
mov edi, dword [edx + 0xc]
mov esi, dword [eax + 0xc]
xor esi, edi
and esi, ecx
xor edi, esi
mov dword [edx + 0xc], edi
xor dword [eax + 0xc], esi
mov edi, dword [edx + 0x10]
mov esi, dword [eax + 0x10]
xor esi, edi
and esi, ecx
and esi, 4
xor edi, esi
mov dword [edx + 0x10], edi
xor dword [eax + 0x10], esi
lea esi, [ebx - 1]
cmp esi, 9
ja case.default.0x40d8a9
jmp dword [esi*4 + 0x40d9d8]
mov edi, 0xa
cmp ebx, edi
jle case.0x40d8a9.10
push ebp
lea ebx, [ebx]
mov esi, dword [edx]
mov ebx, dword [esi + edi*4]
lea ebp, [esi + edi*4]
mov esi, dword [eax]
mov esi, dword [esi + edi*4]
xor esi, ebx
and esi, ecx
xor ebx, esi
mov dword [ebp], ebx
mov ebx, dword [eax]
xor dword [ebx + edi*4], esi
lea ebx, [ebx + edi*4]
inc edi
cmp edi, dword [esp + 0x20]
jl 0x40d8c0
pop ebp
mov ebx, dword [edx]
mov esi, dword [eax]
mov edi, dword [ebx + 0x24]
mov esi, dword [esi + 0x24]
xor esi, edi
and esi, ecx
xor edi, esi
mov dword [ebx + 0x24], edi
mov edi, dword [eax]
xor dword [edi + 0x24], esi
mov ebx, dword [edx]
mov esi, dword [eax]
mov edi, dword [ebx + 0x20]
mov esi, dword [esi + 0x20]
xor esi, edi
and esi, ecx
xor edi, esi
mov dword [ebx + 0x20], edi
mov edi, dword [eax]
xor dword [edi + 0x20], esi
mov ebx, dword [edx]
mov esi, dword [eax]
mov edi, dword [ebx + 0x1c]
mov esi, dword [esi + 0x1c]
xor esi, edi
and esi, ecx
xor edi, esi
mov dword [ebx + 0x1c], edi
mov edi, dword [eax]
xor dword [edi + 0x1c], esi
mov ebx, dword [edx]
mov esi, dword [eax]
mov edi, dword [ebx + 0x18]
mov esi, dword [esi + 0x18]
xor esi, edi
and esi, ecx
xor edi, esi
mov dword [ebx + 0x18], edi
mov edi, dword [eax]
xor dword [edi + 0x18], esi
mov ebx, dword [edx]
mov esi, dword [eax]
mov edi, dword [ebx + 0x14]
mov esi, dword [esi + 0x14]
xor esi, edi
and esi, ecx
xor edi, esi
mov dword [ebx + 0x14], edi
mov edi, dword [eax]
xor dword [edi + 0x14], esi
mov ebx, dword [edx]
mov esi, dword [eax]
mov edi, dword [ebx + 0x10]
mov esi, dword [esi + 0x10]
xor esi, edi
and esi, ecx
xor edi, esi
mov dword [ebx + 0x10], edi
mov edi, dword [eax]
xor dword [edi + 0x10], esi
mov ebx, dword [edx]
mov esi, dword [eax]
mov edi, dword [ebx + 0xc]
mov esi, dword [esi + 0xc]
xor esi, edi
and esi, ecx
xor edi, esi
mov dword [ebx + 0xc], edi
mov edi, dword [eax]
xor dword [edi + 0xc], esi
mov ebx, dword [edx]
mov esi, dword [eax]
mov edi, dword [ebx + 8]
mov esi, dword [esi + 8]
xor esi, edi
and esi, ecx
xor edi, esi
mov dword [ebx + 8], edi
mov edi, dword [eax]
xor dword [edi + 8], esi
mov ebx, dword [edx]
mov esi, dword [eax]
mov edi, dword [ebx + 4]
mov esi, dword [esi + 4]
xor esi, edi
and esi, ecx
xor edi, esi
mov dword [ebx + 4], edi
mov edi, dword [eax]
xor dword [edi + 4], esi
mov esi, dword [eax]
mov edx, dword [edx]
mov esi, dword [esi]
mov edi, dword [edx]
xor esi, edi
and esi, ecx
xor edi, esi
mov dword [edx], edi
mov eax, dword [eax]
xor dword [eax], esi
pop edi
pop esi
pop ebx
ret