Function at 0x10040e60
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x14
mov edx, dword [esp + 0x18]
push ebx
mov ebx, dword [esp + 0x20]
push ebp
lea eax, [edx + 0x20]
mov dword [esp + 0x14], 0
mov dword [esp + 8], eax
mov eax, dword [ebx]
lea ecx, [ebx + 0x20]
mov dword [edx], eax
mov eax, dword [ebx + 4]
mov dword [edx + 4], eax
mov eax, dword [ebx]
mov dword [esp + 0xc], ecx
push esi
push edi
dec eax
je 0x10040ffa
jmp 0x10040ea0
mov dword [esp + 0x18], 2
jmp 0x10040eb0
mov edx, dword [ecx]
mov ebx, edx
and ebx, 0x80808080
mov ebp, dword [ecx + 4]
mov eax, ebx
shr eax, 7
sub ebx, eax
lea eax, [edx + edx]
and eax, 0xfefefefe
and ebx, 0x1b1b1b1b
xor ebx, eax
mov edi, ebx
and edi, 0x80808080
mov eax, edi
shr eax, 7
sub edi, eax
lea eax, [ebx + ebx]
and eax, 0xfefefefe
and edi, 0x1b1b1b1b
xor edi, eax
mov esi, edi
and esi, 0x80808080
mov eax, esi
shr eax, 7
sub esi, eax
lea eax, [edi + edi]
and eax, 0xfefefefe
and esi, 0x1b1b1b1b
xor esi, eax
mov ecx, esi
xor ecx, edx
mov edx, ecx
mov eax, ecx
xor eax, ebx
rol ecx, 8
rol eax, 0x18
xor edx, edi
rol edx, 0x10
xor edx, eax
mov eax, dword [esp + 0x10]
xor edx, ecx
xor edx, esi
xor edx, edi
xor edx, ebx
mov ebx, ebp
mov dword [eax], edx
and ebx, 0x80808080
mov eax, ebx
shr eax, 7
sub ebx, eax
lea eax, [ebp*2]
and eax, 0xfefefefe
and ebx, 0x1b1b1b1b
xor ebx, eax
mov edi, ebx
and edi, 0x80808080
mov eax, edi
shr eax, 7
sub edi, eax
lea eax, [ebx + ebx]
and eax, 0xfefefefe
and edi, 0x1b1b1b1b
xor edi, eax
mov esi, edi
and esi, 0x80808080
mov eax, esi
shr eax, 7
sub esi, eax
lea eax, [edi + edi]
and eax, 0xfefefefe
and esi, 0x1b1b1b1b
xor esi, eax
mov ecx, esi
xor ecx, ebp
mov edx, ecx
mov eax, ecx
xor edx, edi
xor eax, ebx
rol edx, 0x10
rol eax, 0x18
xor edx, eax
rol ecx, 8
xor edx, ecx
mov ecx, dword [esp + 0x14]
xor edx, esi
add ecx, 8
mov esi, dword [esp + 0x10]
xor edx, edi
xor edx, ebx
mov dword [esp + 0x14], ecx
mov dword [esi + 4], edx
add esi, 8
dec dword [esp + 0x18]
mov dword [esp + 0x10], esi
jne 0x10040eb0
mov ebx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x1c]
inc ecx
mov dword [esp + 0x1c], ecx
mov eax, dword [ebx]
dec eax
cmp ecx, eax
mov ecx, dword [esp + 0x14]
jb 0x10040ea0
mov edx, dword [esp + 0x28]
mov esi, dword [ebx]
lea edi, [edx + 0x10]
mov ebp, dword [edx]
lea eax, [ebx + 0x10]
inc ebp
mov dword [esp + 0x20], edi
shl ebp, 4
lea ecx, [esi + 1]
add ebp, edx
shl ecx, 4
add ecx, ebx
shr esi, 1
mov dword [esp + 0x10], ecx
mov dword [esp + 0x1c], esi
je 0x100410a0
sub edx, ebx
lea esi, [ebx + 0x10]
mov dword [esp + 0x28], edx
mov edx, edi
sub edx, esi
mov dword [esp + 0x18], edx
mov edx, dword [eax]
lea eax, [eax + 0x10]
mov ecx, dword [ecx]
lea ebp, [ebp - 0x10]
mov esi, dword [eax - 0xc]
mov edi, dword [eax - 8]
mov ebx, dword [eax - 4]
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x18]
mov dword [edx + eax - 0x10], ecx
mov ecx, dword [esp + 0x10]
mov ecx, dword [ecx + 4]
mov dword [edx + eax - 0xc], ecx
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x28]
mov ecx, dword [ecx + 8]
mov dword [edx + eax - 8], ecx
mov ecx, dword [esp + 0x10]
mov ecx, dword [ecx + 0xc]
mov dword [edx + eax - 4], ecx
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
sub ecx, 0x10
dec dword [esp + 0x1c]
mov dword [ebp + 0x10], edx
mov dword [ebp + 0x14], esi
mov dword [ebp + 0x18], edi
mov dword [ebp + 0x1c], ebx
mov dword [esp + 0x10], ecx
jne 0x10041033
mov ebx, dword [esp + 0x2c]
mov edi, dword [esp + 0x20]
mov eax, dword [ebx]
cmp eax, 0xe
je 0x100410d6
add eax, eax
lea ecx, [eax*8 + 0x10]
mov eax, dword [ecx + ebx]
add ecx, ebx
mov dword [edi + 0xe0], eax
mov eax, dword [ecx + 4]
mov dword [edi + 0xe4], eax
mov eax, dword [ecx + 8]
mov dword [edi + 0xe8], eax
mov eax, dword [ecx + 0xc]
mov dword [edi + 0xec], eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x14
ret