Function at 0x528de0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push esi
mov esi, dword [ebp + 8]
push edi
mov edi, dword [ebp + 0x10]
mov eax, edi
dec eax
je 0x528ef7
dec eax
je 0x528eb9
dec eax
je 0x528e86
dec eax
je 0x528e69
dec eax
je 0x528e10
dec eax
jne 0x528f4a
xor edx, edx
cmp dword [ebp + 0x28], edx
lea eax, [esi - 0xc00]
jne 0x528e23
mov eax, dword [ecx + 0x34f4]
cmp dword [ebp + 0x2c], edx
mov dword [ebp + 0x10], eax
je 0x528e3a
mov ebx, dword [ecx + 0x35f8]
shl ebx, 2
mov eax, esi
sub eax, ebx
jmp 0x528e40
mov eax, dword [ecx + 0x34f4]
cmp dword [ebp + 0x30], edx
mov dword [ebp + 8], eax
je 0x528e5e
mov eax, dword [ecx + 0x35f8]
lea ecx, [eax*4 + 0xc00]
mov eax, esi
sub eax, ecx
jmp 0x528f4d
mov eax, dword [ecx + 0x34f4]
jmp 0x528f4d
lea eax, [esi - 0x200]
mov dword [ebp + 0x10], eax
lea eax, [esi - 0x400]
mov dword [ebp + 8], eax
lea eax, [esi - 0x600]
jmp 0x528f4d
cmp dword [ebp + 0x28], 0
lea eax, [esi - 0xa00]
jne 0x528e98
mov eax, dword [ecx + 0x34f0]
cmp dword [ebp + 0x28], 0
mov dword [ebp + 0x10], eax
lea eax, [esi - 0x400]
mov dword [ebp + 8], eax
je 0x528f42
lea eax, [esi - 0xe00]
jmp 0x528f4d
cmp dword [ebp + 0x2c], 0
lea eax, [esi - 0x200]
mov dword [ebp + 0x10], eax
je 0x528ed8
mov eax, 0x100
sub eax, dword [ecx + 0x35f8]
lea eax, [esi + eax*4]
jmp 0x528ede
mov eax, dword [ecx + 0x34f0]
cmp dword [ebp + 0x2c], 0
mov dword [ebp + 8], eax
je 0x528f42
mov eax, 0x80
sub eax, dword [ecx + 0x35f8]
lea eax, [esi + eax*4]
jmp 0x528f4d
xor eax, eax
cmp dword [ebp + 0x28], eax
lea edx, [esi - 0xa00]
jne 0x528f0a
mov edx, dword [ecx + 0x34f0]
cmp dword [ebp + 0x2c], eax
mov dword [ebp + 0x10], edx
je 0x528f22
mov edx, 0x100
sub edx, dword [ecx + 0x35f8]
lea edx, [esi + edx*4]
jmp 0x528f28
mov edx, dword [ecx + 0x34f0]
cmp dword [ebp + 0x30], eax
mov dword [ebp + 8], edx
je 0x528f42
mov eax, dword [ecx + 0x35f8]
lea ecx, [eax*4 + 0x600]
jmp 0x528e55
mov eax, dword [ecx + 0x34f0]
jmp 0x528f4d
mov eax, dword [ebp + 0x28]
mov ecx, dword [eax]
mov edx, dword [ebp + 0x10]
mov ebx, dword [ebp + 8]
mov eax, ecx
sub eax, dword [edx]
cdq
xor eax, edx
sub eax, edx
mov dword [ebp + 0x28], eax
mov eax, ecx
sub eax, dword [ebx]
mov ecx, dword [ebp + 0x28]
cdq
xor eax, edx
sub eax, edx
cmp eax, ecx
mov eax, dword [ebp + 0x14]
jg 0x529022
and dword [eax + edi*4 + 0x1c], 0
mov eax, dword [esi]
mov ecx, dword [ebp + 0x10]
sub eax, dword [ecx]
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp + 0x10]
mov dword [ecx], eax
mov eax, dword [ebp + 0x20]
mov ebx, edi
shl ebx, 2
lea edi, [ebx + eax]
mov eax, dword [ebp + 0x24]
and dword [edi], 0
add ebx, eax
and dword [ebx], 0
sub edx, esi
mov dword [ebp + 0x28], 1
lea ecx, [esi + 0x20]
mov dword [ebp + 0x30], edx
jmp 0x528fb6
mov edx, dword [ebp + 0x30]
mov eax, dword [ecx]
sub eax, dword [edx + ecx]
mov edx, dword [ebp + 0xc]
mov esi, dword [ebp + 0x28]
lea esi, [edx + esi*4]
mov dword [esi], eax
push 0
pop eax
setne al
push 4
add dword [edi], eax
mov eax, dword [esi]
cdq
xor eax, edx
sub eax, edx
mov dword [ebp + 0x2c], eax
mov eax, dword [ebp + 0x28]
cdq
pop esi
idiv esi
mov edx, dword [ebp + 0x2c]
sar edx, 1
mov esi, eax
mov eax, dword [ebp + 0x1c]
imul edx, esi
add edx, dword [ebp + 0x2c]
add dword [eax], edx
xor eax, eax
cmp dword [ecx], eax
setne al
add dword [ebx], eax
mov eax, dword [ecx]
cdq
xor eax, edx
sub eax, edx
mov edx, eax
sar edx, 1
imul edx, esi
add edx, eax
mov eax, dword [ebp + 0x18]
add dword [eax], edx
inc dword [ebp + 0x28]
add ecx, 0x20
cmp dword [ebp + 0x28], 8
jl 0x528fb3
jmp 0x5290c2
xor ecx, ecx
inc ecx
mov dword [eax + edi*4 + 0x1c], ecx
mov edx, dword [esi]
sub edx, dword [ebx]
mov eax, dword [ebp + 0xc]
mov dword [eax], edx
mov edx, dword [ebp + 0x20]
mov ebx, edi
shl ebx, 2
lea edi, [ebx + edx]
mov edx, dword [ebp + 0x24]
and dword [edi], 0
add ebx, edx
mov edx, dword [ebp + 8]
and dword [ebx], 0
sub edx, eax
mov dword [ebp + 0x2c], eax
sub dword [ebp + 0x2c], esi
mov dword [ebp + 0x28], ecx
lea ecx, [esi + 4]
mov dword [ebp + 0xc], edx
mov edx, dword [ecx]
mov eax, dword [ebp + 0x2c]
mov esi, dword [ebp + 0xc]
add eax, ecx
sub edx, dword [eax + esi]
push 0
mov dword [eax], edx
pop edx
setne dl
push 4
pop esi
add dword [edi], edx
mov eax, dword [eax]
cdq
xor eax, edx
sub eax, edx
mov dword [ebp + 0x30], eax
mov eax, dword [ebp + 0x28]
cdq
idiv esi
mov edx, dword [ebp + 0x30]
sar edx, 1
mov esi, eax
mov eax, dword [ebp + 0x1c]
imul edx, esi
add edx, dword [ebp + 0x30]
add dword [eax], edx
xor eax, eax
cmp dword [ecx], eax
setne al
add dword [ebx], eax
mov eax, dword [ecx]
cdq
xor eax, edx
sub eax, edx
mov edx, eax
sar edx, 1
imul edx, esi
add edx, eax
mov eax, dword [ebp + 0x18]
add dword [eax], edx
inc dword [ebp + 0x28]
add ecx, 4
cmp dword [ebp + 0x28], 8
jl 0x52905c
pop edi
pop esi
pop ebx
pop ebp
ret 0x2c