Function at 0x1023c550
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ecx
push ebx
mov ebx, dword [ebp + 0x18]
push esi
mov esi, dword [ebp + 8]
push edi
mov edi, dword [ebp + 0x1c]
mov ecx, dword [esi + 8]
cmp edi, ebx
jne 0x1023c62c
test ecx, ecx
jne 0x1023c5b6
push ebx
push dword [esi + 4]
push dword [esi]
call sub.MSVCR110.dll_memcpy
push dword [esi]
push dword [ebp + 0xc]
call dword [ebp + 0x10]
mov edi, dword [esi]
mov eax, dword [ebp + 0x14]
add esp, 0x14
test ebx, ebx
jle 0x1023c5a2
mov ecx, eax
sub edi, eax
mov edx, ebx
mov al, byte [edi + ecx]
xor byte [ecx], al
lea ecx, [ecx + 1]
dec edx
jne 0x1023c594
mov eax, dword [ebp + 0x14]
push ebx
push eax
push dword [esi + 4]
call sub.MSVCR110.dll_memcpy
add esp, 0xc
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov edx, dword [esi]
mov eax, ebx
sub eax, ecx
add edx, ecx
mov dword [ebp + 0x18], eax
test eax, eax
jle 0x1023c5db
mov ecx, dword [ebp + 0x14]
sub edx, ecx
mov edi, eax
lea esp, [esp]
mov al, byte [edx + ecx]
xor byte [ecx], al
lea ecx, [ecx + 1]
dec edi
jne 0x1023c5d0
push ebx
push dword [esi + 4]
push dword [esi]
call sub.MSVCR110.dll_memcpy
push dword [esi]
push dword [ebp + 0xc]
call dword [ebp + 0x10]
mov edx, dword [esi + 8]
mov ebx, dword [ebp + 0x18]
mov eax, dword [ebp + 0x14]
mov edi, dword [esi]
add esp, 0x14
lea ecx, [ebx + eax]
test edx, edx
jle 0x1023c613
sub edi, ecx
mov al, byte [edi + ecx]
xor byte [ecx], al
lea ecx, [ecx + 1]
dec edx
jne 0x1023c605
mov eax, dword [ebp + 0x14]
push dword [esi + 8]
push eax
mov eax, dword [esi + 4]
add eax, ebx
push eax
call sub.MSVCR110.dll_memcpy
add esp, 0xc
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
test ecx, ecx
jne 0x1023c67a
push ebx
push dword [esi + 4]
push dword [esi]
call sub.MSVCR110.dll_memcpy
push dword [esi]
push dword [ebp + 0xc]
call dword [ebp + 0x10]
mov ebx, dword [esi]
mov eax, dword [ebp + 0x14]
add esp, 0x14
test edi, edi
jle 0x1023c663
mov ecx, eax
sub ebx, eax
mov edx, edi
mov al, byte [ebx + ecx]
xor byte [ecx], al
lea ecx, [ecx + 1]
dec edx
jne 0x1023c655
mov eax, dword [ebp + 0x14]
push edi
push eax
push dword [esi + 4]
call sub.MSVCR110.dll_memcpy
add esp, 0xc
mov dword [esi + 8], edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, ebx
sub eax, ecx
cmp eax, edi
mov edx, edi
cmovl edx, eax
mov eax, dword [esi]
add eax, ecx
mov dword [ebp + 0x1c], edx
test edx, edx
jle 0x1023c6a8
mov ecx, dword [ebp + 0x14]
mov ebx, eax
sub ebx, ecx
mov al, byte [ebx + ecx]
xor byte [ecx], al
lea ecx, [ecx + 1]
dec edx
jne 0x1023c697
mov ebx, dword [ebp + 0x18]
mov edx, dword [ebp + 0x1c]
mov eax, dword [esi + 8]
add eax, dword [esi + 4]
push edx
push dword [ebp + 0x14]
push eax
call sub.MSVCR110.dll_memcpy
mov eax, dword [ebp + 0x1c]
add dword [esi + 8], eax
add esp, 0xc
cmp eax, edi
jge 0x1023c70d
push ebx
push dword [esi + 4]
push dword [esi]
call sub.MSVCR110.dll_memcpy
push dword [esi]
push dword [ebp + 0xc]
call dword [ebp + 0x10]
mov ecx, dword [ebp + 0x14]
sub edi, dword [ebp + 0x1c]
add ecx, dword [ebp + 0x1c]
mov ebx, dword [esi + 4]
add esp, 0x14
test edi, edi
jle 0x1023c6fb
sub ebx, ecx
mov edx, edi
nop
mov al, byte [ebx + ecx]
xor byte [ecx], al
lea ecx, [ecx + 1]
dec edx
jne 0x1023c6f0
push edi
push dword [ebp + 0x14]
mov dword [esi + 8], edi
push dword [esi + 4]
call sub.MSVCR110.dll_memcpy
add esp, 0xc
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret