Function at 0x10040830
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
mov ebp, dword [esp + 0xc]
mov ebx, dword [esp + 0x10]
push esi
push edi
mov ecx, dword [ebp]
mov edx, dword [ebp + 4]
mov esi, dword [esp + 0x1c]
inc ecx
sub esp, 0xc
add ebp, 8
and ecx, 0xff
lea ebx, [ebx + esi - 8]
mov edi, dword [esp + 0x2c]
mov dword [esp + 8], ebx
mov eax, dword [ebp + ecx*4]
cmp ebx, esi
jl 0x10040a13
add esi, 8
add edx, eax
and edx, 0xff
inc ecx
mov ebx, dword [ebp + edx*4]
mov dword [ebp + ecx*4 - 4], ebx
add ebx, eax
and ecx, 0xff
and ebx, 0xff
mov dword [ebp + edx*4], eax
nop
mov ebx, dword [ebp + ebx*4]
mov eax, dword [ebp + ecx*4]
mov byte [esp], bl
add edx, eax
and edx, 0xff
inc ecx
mov ebx, dword [ebp + edx*4]
mov dword [ebp + ecx*4 - 4], ebx
add ebx, eax
and ecx, 0xff
and ebx, 0xff
mov dword [ebp + edx*4], eax
nop
mov ebx, dword [ebp + ebx*4]
mov eax, dword [ebp + ecx*4]
mov byte [esp + 1], bl
add edx, eax
and edx, 0xff
inc ecx
mov ebx, dword [ebp + edx*4]
mov dword [ebp + ecx*4 - 4], ebx
add ebx, eax
and ecx, 0xff
and ebx, 0xff
mov dword [ebp + edx*4], eax
nop
mov ebx, dword [ebp + ebx*4]
mov eax, dword [ebp + ecx*4]
mov byte [esp + 2], bl
add edx, eax
and edx, 0xff
inc ecx
mov ebx, dword [ebp + edx*4]
mov dword [ebp + ecx*4 - 4], ebx
add ebx, eax
and ecx, 0xff
and ebx, 0xff
mov dword [ebp + edx*4], eax
nop
mov ebx, dword [ebp + ebx*4]
mov eax, dword [ebp + ecx*4]
mov byte [esp + 3], bl
add edx, eax
and edx, 0xff
inc ecx
mov ebx, dword [ebp + edx*4]
mov dword [ebp + ecx*4 - 4], ebx
add ebx, eax
and ecx, 0xff
and ebx, 0xff
mov dword [ebp + edx*4], eax
nop
mov ebx, dword [ebp + ebx*4]
mov eax, dword [ebp + ecx*4]
mov byte [esp + 4], bl
add edx, eax
and edx, 0xff
inc ecx
mov ebx, dword [ebp + edx*4]
mov dword [ebp + ecx*4 - 4], ebx
add ebx, eax
and ecx, 0xff
and ebx, 0xff
mov dword [ebp + edx*4], eax
nop
mov ebx, dword [ebp + ebx*4]
mov eax, dword [ebp + ecx*4]
mov byte [esp + 5], bl
add edx, eax
and edx, 0xff
inc ecx
mov ebx, dword [ebp + edx*4]
mov dword [ebp + ecx*4 - 4], ebx
add ebx, eax
and ecx, 0xff
and ebx, 0xff
mov dword [ebp + edx*4], eax
nop
mov ebx, dword [ebp + ebx*4]
mov eax, dword [ebp + ecx*4]
mov byte [esp + 6], bl
add edx, eax
and edx, 0xff
inc ecx
mov ebx, dword [ebp + edx*4]
mov dword [ebp + ecx*4 - 4], ebx
add ebx, eax
and ecx, 0xff
and ebx, 0xff
mov dword [ebp + edx*4], eax
nop
mov ebx, dword [ebp + ebx*4]
add edi, 8
mov byte [esp + 7], bl
mov eax, dword [esp]
mov ebx, dword [esi - 8]
xor eax, ebx
mov ebx, dword [esi - 4]
mov dword [edi - 8], eax
mov eax, dword [esp + 4]
xor eax, ebx
mov ebx, dword [esp + 8]
mov dword [edi - 4], eax
mov eax, dword [ebp + ecx*4]
cmp esi, ebx
jle 0x1004086b
add ebx, 8
inc esi
cmp ebx, esi
jl 0x10040bd0
mov dword [esp + 8], ebx
add edx, eax
and edx, 0xff
inc ecx
mov ebx, dword [ebp + edx*4]
mov dword [ebp + ecx*4 - 4], ebx
add ebx, eax
and ecx, 0xff
and ebx, 0xff
mov dword [ebp + edx*4], eax
nop
mov ebx, dword [ebp + ebx*4]
mov eax, dword [ebp + ecx*4]
mov bh, byte [esi - 1]
xor bl, bh
mov byte [edi], bl
mov ebx, dword [esp + 8]
cmp ebx, esi
jle 0x10040bd0
inc esi
add edx, eax
and edx, 0xff
inc ecx
mov ebx, dword [ebp + edx*4]
mov dword [ebp + ecx*4 - 4], ebx
add ebx, eax
and ecx, 0xff
and ebx, 0xff
mov dword [ebp + edx*4], eax
nop
mov ebx, dword [ebp + ebx*4]
mov eax, dword [ebp + ecx*4]
mov bh, byte [esi - 1]
xor bl, bh
mov byte [edi + 1], bl
mov ebx, dword [esp + 8]
cmp ebx, esi
jle 0x10040bd0
inc esi
add edx, eax
and edx, 0xff
inc ecx
mov ebx, dword [ebp + edx*4]
mov dword [ebp + ecx*4 - 4], ebx
add ebx, eax
and ecx, 0xff
and ebx, 0xff
mov dword [ebp + edx*4], eax
nop
mov ebx, dword [ebp + ebx*4]
mov eax, dword [ebp + ecx*4]
mov bh, byte [esi - 1]
xor bl, bh
mov byte [edi + 2], bl
mov ebx, dword [esp + 8]
cmp ebx, esi
jle 0x10040bd0
inc esi
add edx, eax
and edx, 0xff
inc ecx
mov ebx, dword [ebp + edx*4]
mov dword [ebp + ecx*4 - 4], ebx
add ebx, eax
and ecx, 0xff
and ebx, 0xff
mov dword [ebp + edx*4], eax
nop
mov ebx, dword [ebp + ebx*4]
mov eax, dword [ebp + ecx*4]
mov bh, byte [esi - 1]
xor bl, bh
mov byte [edi + 3], bl
mov ebx, dword [esp + 8]
cmp ebx, esi
jle 0x10040bd0
inc esi
add edx, eax
and edx, 0xff
inc ecx
mov ebx, dword [ebp + edx*4]
mov dword [ebp + ecx*4 - 4], ebx
add ebx, eax
and ecx, 0xff
and ebx, 0xff
mov dword [ebp + edx*4], eax
nop
mov ebx, dword [ebp + ebx*4]
mov eax, dword [ebp + ecx*4]
mov bh, byte [esi - 1]
xor bl, bh
mov byte [edi + 4], bl
mov ebx, dword [esp + 8]
cmp ebx, esi
jle 0x10040bd0
inc esi
add edx, eax
and edx, 0xff
inc ecx
mov ebx, dword [ebp + edx*4]
mov dword [ebp + ecx*4 - 4], ebx
add ebx, eax
and ecx, 0xff
and ebx, 0xff
mov dword [ebp + edx*4], eax
nop
mov ebx, dword [ebp + ebx*4]
mov eax, dword [ebp + ecx*4]
mov bh, byte [esi - 1]
xor bl, bh
mov byte [edi + 5], bl
mov ebx, dword [esp + 8]
cmp ebx, esi
jle 0x10040bd0
inc esi
add edx, eax
and edx, 0xff
inc ecx
mov ebx, dword [ebp + edx*4]
mov dword [ebp + ecx*4 - 4], ebx
add ebx, eax
and ecx, 0xff
and ebx, 0xff
mov dword [ebp + edx*4], eax
nop
mov ebx, dword [ebp + ebx*4]
mov bh, byte [esi - 1]
xor bl, bh
mov byte [edi + 6], bl
dec ecx
add esp, 0xc
mov dword [ebp - 4], edx
mov byte [ebp - 8], cl
pop edi
pop esi
pop ebx
pop ebp
ret