Function at 0x53e040
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x54
push esi
mov esi, dword [ebp + 8]
mov edx, 2
mov dword [ebp - 0x40], edx
mov word [esi], 0
add esi, 2
mov eax, dword [ecx + 0xc]
sub eax, 2
mov dword [ebp - 0x54], eax
cmp eax, edx
jle 0x53e23f
push ebx
push edi
nop dword [eax]
mov edi, dword [ebp + 0xc]
mov eax, dword [edi - 4]
add eax, edx
mov ebx, dword [edi - 8]
mov ecx, dword [edi + 4]
add ebx, edx
add ecx, edx
mov dword [ebp - 8], eax
mov eax, dword [edi]
mov edi, dword [edi + 8]
add eax, edx
add edi, edx
mov dword [ebp - 0xc], ecx
movzx edx, byte [ebx]
mov dword [ebp - 0x10], edx
movzx ecx, byte [edi]
mov dword [ebp - 0x14], ecx
movzx ecx, byte [eax + 1]
mov dword [ebp - 0x30], ecx
movzx ecx, byte [eax + 2]
mov dword [ebp - 4], ecx
movzx ecx, byte [eax - 1]
mov dword [ebp - 0x2c], ecx
movzx ecx, byte [eax - 2]
movzx eax, byte [eax]
shl eax, 4
mov dword [ebp - 0x44], ecx
movzx ecx, byte [ebx - 2]
mov dword [ebp - 0x18], eax
movzx eax, byte [ebx + 2]
mov dword [ebp - 0x28], ecx
movzx ecx, byte [edi - 2]
mov dword [ebp - 0x20], eax
movzx eax, byte [edi + 2]
mov dword [ebp - 0x24], ecx
mov ecx, dword [ebp - 8]
mov dword [ebp - 0x1c], eax
movzx eax, byte [ecx]
mov dword [ebp - 0x48], eax
mov eax, dword [ebp - 0xc]
movzx edx, byte [eax]
mov dword [ebp - 0x4c], edx
movzx edx, byte [ecx + 1]
movzx ecx, byte [ecx - 1]
mov dword [ebp - 0x38], edx
movzx edx, byte [eax - 1]
movzx eax, byte [eax + 1]
mov dword [ebp - 0x50], edx
mov dword [ebp - 0x3c], eax
movzx eax, byte [ebx - 1]
mov dword [ebp - 0x34], ecx
mov ecx, dword [ebp - 0x10]
add ecx, dword [ebp - 0x14]
lea edx, [eax + ecx*2]
movzx eax, byte [ebx + 1]
mov ebx, dword [ebp - 4]
add edx, eax
movzx eax, byte [edi - 1]
mov ecx, dword [ebp - 0x2c]
add edx, eax
movzx eax, byte [edi + 1]
mov edi, dword [ebp - 0x44]
add edx, eax
shl edx, 2
lea eax, [ebx + ebx]
sub edx, eax
shl ecx, 3
lea eax, [edi + edi]
sub edx, eax
sub edx, ecx
mov ecx, dword [ebp - 0x30]
shl ecx, 3
sub edx, ecx
sub edx, dword [ebp - 0x18]
add edx, dword [ebp - 0x1c]
add edx, dword [ebp - 0x20]
add edx, dword [ebp - 0x24]
add edx, dword [ebp - 0x28]
mov eax, edx
cdq
xor eax, edx
sub eax, edx
lea esi, [esi + 1]
mov dword [ebp - 4], eax
lea edx, [ebx + edi]
mov edi, dword [ebp - 8]
mov ebx, dword [ebp - 0x4c]
movzx ecx, byte [edi - 2]
lea edx, [ecx + edx*2]
movzx ecx, byte [edi + 2]
mov edi, dword [ebp - 0xc]
add edx, ecx
movzx ecx, byte [edi - 2]
movzx eax, byte [edi + 2]
add edx, ecx
add edx, eax
mov edi, dword [ebp - 0x48]
mov eax, dword [ebp - 0x10]
add eax, eax
shl edx, 2
sub edx, eax
lea eax, [edi*8]
sub edx, eax
mov eax, dword [ebp - 0x14]
lea ecx, [eax + eax]
sub edx, ecx
lea ecx, [ebx*8]
sub edx, ecx
mov ecx, dword [ebp - 4]
sub edx, dword [ebp - 0x18]
add edx, dword [ebp - 0x1c]
add edx, dword [ebp - 0x20]
add edx, dword [ebp - 0x24]
add edx, dword [ebp - 0x28]
mov eax, edx
cdq
xor eax, edx
sub eax, edx
add ecx, eax
lea eax, [ebx + ebx]
sar ecx, 4
mov dword [ebp - 4], ecx
lea ecx, [edi + edi]
sub eax, ecx
sub eax, dword [ebp - 0x38]
sub eax, dword [ebp - 0x34]
add eax, dword [ebp - 0x50]
add eax, dword [ebp - 0x3c]
cdq
mov edi, eax
mov eax, dword [ebp - 0x2c]
xor edi, edx
sub edi, edx
lea ecx, [eax + eax]
mov eax, dword [ebp - 0x30]
add eax, eax
sub eax, ecx
mov ecx, dword [ebp - 4]
sub eax, dword [ebp - 0x50]
sub eax, dword [ebp - 0x34]
add eax, dword [ebp - 0x38]
add eax, dword [ebp - 0x3c]
cdq
xor eax, edx
sub eax, edx
mov edx, dword [ebp - 0x40]
add edi, eax
sar edi, 1
add ecx, edi
cmp ecx, 0xff
movzx eax, cl
mov ecx, 0xff
cmovg eax, ecx
inc edx
mov byte [esi - 1], al
mov dword [ebp - 0x40], edx
cmp edx, dword [ebp - 0x54]
jl 0x53e070
pop edi
pop ebx
mov word [esi], 0
pop esi
mov esp, ebp
pop ebp
ret 8