Function at 0x1005ba90
Capabilities:
Encode data using xor

Disassembly:
mov edx, dword [esp + 8]
cmp edx, 0
jne 0x1005baa1
ret
push ebp
push ebx
push esi
xor eax, eax
push edi
xor ebx, ebx
mov ebp, dword [esp + 0x14]
mov esi, dword [esp + 0x1c]
mov al, byte [ebp]
mov bl, byte [ebp + 4]
mov edi, dword [esp + 0x20]
inc al
sub esp, 0xc
add ebp, 8
cmp dword [ebp + 0x100], 0xffffffff
je 0x1005bdc0
lea edx, [esi + edx - 8]
mov dword [esp + 8], edx
mov ecx, dword [ebp + eax*4]
cmp edx, esi
jb 0x1005bc3b
add esi, 8
add bl, cl
mov edx, dword [ebp + ebx*4]
mov dword [ebp + eax*4], edx
add edx, ecx
mov dword [ebp + ebx*4], ecx
and edx, 0xff
inc al
mov ecx, dword [ebp + eax*4]
mov edx, dword [ebp + edx*4]
mov byte [esp], dl
add bl, cl
mov edx, dword [ebp + ebx*4]
mov dword [ebp + eax*4], edx
add edx, ecx
mov dword [ebp + ebx*4], ecx
and edx, 0xff
inc al
mov ecx, dword [ebp + eax*4]
mov edx, dword [ebp + edx*4]
mov byte [esp + 1], dl
add bl, cl
mov edx, dword [ebp + ebx*4]
mov dword [ebp + eax*4], edx
add edx, ecx
mov dword [ebp + ebx*4], ecx
and edx, 0xff
inc al
mov ecx, dword [ebp + eax*4]
mov edx, dword [ebp + edx*4]
mov byte [esp + 2], dl
add bl, cl
mov edx, dword [ebp + ebx*4]
mov dword [ebp + eax*4], edx
add edx, ecx
mov dword [ebp + ebx*4], ecx
and edx, 0xff
inc al
mov ecx, dword [ebp + eax*4]
mov edx, dword [ebp + edx*4]
mov byte [esp + 3], dl
add bl, cl
mov edx, dword [ebp + ebx*4]
mov dword [ebp + eax*4], edx
add edx, ecx
mov dword [ebp + ebx*4], ecx
and edx, 0xff
inc al
mov ecx, dword [ebp + eax*4]
mov edx, dword [ebp + edx*4]
mov byte [esp + 4], dl
add bl, cl
mov edx, dword [ebp + ebx*4]
mov dword [ebp + eax*4], edx
add edx, ecx
mov dword [ebp + ebx*4], ecx
and edx, 0xff
inc al
mov ecx, dword [ebp + eax*4]
mov edx, dword [ebp + edx*4]
mov byte [esp + 5], dl
add bl, cl
mov edx, dword [ebp + ebx*4]
mov dword [ebp + eax*4], edx
add edx, ecx
mov dword [ebp + ebx*4], ecx
and edx, 0xff
inc al
mov ecx, dword [ebp + eax*4]
mov edx, dword [ebp + edx*4]
mov byte [esp + 6], dl
add bl, cl
mov edx, dword [ebp + ebx*4]
mov dword [ebp + eax*4], edx
add edx, ecx
mov dword [ebp + ebx*4], ecx
and edx, 0xff
inc al
mov edx, dword [ebp + edx*4]
add edi, 8
mov byte [esp + 7], dl
mov ecx, dword [esp]
mov edx, dword [esi - 8]
xor ecx, edx
mov edx, dword [esi - 4]
mov dword [edi - 8], ecx
mov ecx, dword [esp + 4]
xor ecx, edx
mov edx, dword [esp + 8]
mov dword [edi - 4], ecx
mov ecx, dword [ebp + eax*4]
cmp esi, edx
jbe 0x1005baed
add edx, 8
inc esi
cmp edx, esi
jb 0x1005bdf7
mov dword [esp + 8], edx
add bl, cl
mov edx, dword [ebp + ebx*4]
mov dword [ebp + eax*4], edx
add edx, ecx
mov dword [ebp + ebx*4], ecx
and edx, 0xff
inc al
mov ecx, dword [ebp + eax*4]
mov edx, dword [ebp + edx*4]
mov dh, byte [esi - 1]
xor dl, dh
mov byte [edi], dl
mov edx, dword [esp + 8]
cmp edx, esi
jbe 0x1005bdf7
inc esi
add bl, cl
mov edx, dword [ebp + ebx*4]
mov dword [ebp + eax*4], edx
add edx, ecx
mov dword [ebp + ebx*4], ecx
and edx, 0xff
inc al
mov ecx, dword [ebp + eax*4]
mov edx, dword [ebp + edx*4]
mov dh, byte [esi - 1]
xor dl, dh
mov byte [edi + 1], dl
mov edx, dword [esp + 8]
cmp edx, esi
jbe 0x1005bdf7
inc esi
add bl, cl
mov edx, dword [ebp + ebx*4]
mov dword [ebp + eax*4], edx
add edx, ecx
mov dword [ebp + ebx*4], ecx
and edx, 0xff
inc al
mov ecx, dword [ebp + eax*4]
mov edx, dword [ebp + edx*4]
mov dh, byte [esi - 1]
xor dl, dh
mov byte [edi + 2], dl
mov edx, dword [esp + 8]
cmp edx, esi
jbe 0x1005bdf7
inc esi
add bl, cl
mov edx, dword [ebp + ebx*4]
mov dword [ebp + eax*4], edx
add edx, ecx
mov dword [ebp + ebx*4], ecx
and edx, 0xff
inc al
mov ecx, dword [ebp + eax*4]
mov edx, dword [ebp + edx*4]
mov dh, byte [esi - 1]
xor dl, dh
mov byte [edi + 3], dl
mov edx, dword [esp + 8]
cmp edx, esi
jbe 0x1005bdf7
inc esi
add bl, cl
mov edx, dword [ebp + ebx*4]
mov dword [ebp + eax*4], edx
add edx, ecx
mov dword [ebp + ebx*4], ecx
and edx, 0xff
inc al
mov ecx, dword [ebp + eax*4]
mov edx, dword [ebp + edx*4]
mov dh, byte [esi - 1]
xor dl, dh
mov byte [edi + 4], dl
mov edx, dword [esp + 8]
cmp edx, esi
jbe 0x1005bdf7
inc esi
add bl, cl
mov edx, dword [ebp + ebx*4]
mov dword [ebp + eax*4], edx
add edx, ecx
mov dword [ebp + ebx*4], ecx
and edx, 0xff
inc al
mov ecx, dword [ebp + eax*4]
mov edx, dword [ebp + edx*4]
mov dh, byte [esi - 1]
xor dl, dh
mov byte [edi + 5], dl
mov edx, dword [esp + 8]
cmp edx, esi
jbe 0x1005bdf7
inc esi
add bl, cl
mov edx, dword [ebp + ebx*4]
mov dword [ebp + eax*4], edx
add edx, ecx
mov dword [ebp + ebx*4], ecx
and edx, 0xff
inc al
mov edx, dword [ebp + edx*4]
mov dh, byte [esi - 1]
xor dl, dh
mov byte [edi + 6], dl
jmp 0x1005bdf7
lea edx, [edx + esi]
mov dword [esp + 8], edx
movzx ecx, byte [eax + ebp]
add bl, cl
movzx edx, byte [ebx + ebp]
mov byte [ebx + ebp], cl
mov byte [eax + ebp], dl
add dl, cl
movzx edx, byte [edx + ebp]
add al, 1
xor dl, byte [esi]
lea esi, [esi + 1]
movzx ecx, byte [eax + ebp]
cmp esi, dword [esp + 8]
mov byte [edi], dl
lea edi, [edi + 1]
jb 0x1005bdcb
dec eax
add esp, 0xc
mov byte [ebp - 4], bl
mov byte [ebp - 8], al
pop edi
pop esi
pop ebx
pop ebp
ret