Function at 0x528f20
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x28
call fcn.005dfa60
push ebx
mov ebx, ecx
mov dword [ebp - 0x18], edx
push esi
push edi
mov edi, dword [ebp + 0xc]
xor ecx, ecx
mov eax, dword [ebx + 0x174]
mov esi, edx
mov dword [ebp - 0x24], eax
mov eax, dword [ebx + 0x164]
mov dword [ebp - 0x1c], eax
mov eax, edi
add eax, dword [ebx + 0x38]
mov dword [ebp - 0x28], ebx
adc ecx, dword [ebx + 0x3c]
cmp ecx, 0xf
ja 0x529213
jb 0x528f6d
cmp eax, 0xffffffe0
ja 0x529213
cmp dword [ebx + 0x16c], 0
mov edx, dword [ebx + 0x168]
mov dword [ebx + 0x3c], ecx
lea ecx, [ebx + 0x40]
mov dword [ebx + 0x38], eax
mov dword [ebp - 0xc], edx
mov dword [ebp - 0x10], ecx
je 0x5290a1
test edi, edi
jne 0x528fb2
lea eax, [ebx + 0x60]
push eax
mov eax, dword [ebx + 0x160]
push ecx
call eax
add esp, 8
mov dword [ebx + 0x16c], edi
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
movups xmm0, xmmword [ecx]
lea eax, [ebx + 0x178]
mov dword [ebp - 8], 0
mov dword [ebp - 0x20], eax
mov edx, 0x10
movups xmmword [eax], xmm0
mov dword [ecx], 0
lea eax, [ebx + 0xc]
mov dword [ecx + 4], 0
mov dword [ebx + 0x48], 0
mov dword [ebx + 0x4c], 0
mov ecx, dword [eax]
bswap ecx
mov dword [ebp - 0xc], edx
mov dword [ebx + 0x16c], 0
mov dword [ebp - 0x14], eax
mov dword [ebp - 4], ecx
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 0x10]
mov dword [ebp + 0xc], eax
cmp edi, 0x10
jb 0x52902a
test edx, edx
je 0x52902a
push edx
push dword [ebp - 0x20]
lea eax, [ebx + 0x60]
push eax
push ecx
call dword [ebp - 0x1c]
add esp, 0x10
mov dword [ebp - 0xc], 0
cmp edi, 0xc00
jb 0x529149
mov eax, 0xaaaaaaab
mul edi
mov eax, dword [ebp + 0xc]
shr edx, 0xb
mov dword [ebp - 0x20], edx
push ebx
push dword [ebp - 0x24]
push 0xc0
push eax
push esi
call dword [ebp + 0x10]
mov eax, dword [ebp - 4]
mov ecx, dword [ebp - 0x14]
add eax, 0xc0
mov dword [ebp - 4], eax
bswap eax
push 0xc00
mov dword [ecx], eax
mov eax, dword [ebp + 0xc]
push eax
lea eax, [ebx + 0x60]
push eax
push dword [ebp - 0x10]
call dword [ebp - 0x1c]
mov eax, dword [ebp + 0xc]
add esp, 0x24
add eax, 0xc00
add esi, 0xc00
sub edi, 0xc00
mov dword [ebp + 0xc], eax
sub dword [ebp - 0x20], 1
jne 0x529046
mov dword [ebp - 0x18], esi
jmp 0x52914c
lea eax, [ebx + 0x178]
mov dword [ebp - 0x10], ecx
mov ecx, dword [ebx + 0xc]
mov dword [ebp - 0x20], eax
lea eax, [ebx + 0xc]
mov dword [ebp - 0x14], eax
mov eax, edx
bswap ecx
and eax, 0xf
mov dword [ebp - 4], ecx
mov dword [ebp - 8], eax
je 0x529002
lea ecx, [ebx + 0x178]
add ecx, edx
mov dword [ebp - 0x18], ecx
mov ecx, dword [ebp + 8]
test edi, edi
je 0x529204
mov al, byte [eax + ebx + 0x10]
inc edx
xor al, byte [esi]
dec edi
mov ebx, dword [ebp - 0x18]
inc esi
inc dword [ebp - 0x18]
mov byte [ecx], al
inc ecx
mov dword [ebp + 0xc], ecx
mov byte [ebx], al
mov eax, dword [ebp - 8]
mov ebx, dword [ebp - 0x28]
inc eax
and eax, 0xf
mov dword [ebp - 8], eax
jne 0x5290d7
push edx
lea eax, [ebx + 0x178]
push eax
lea eax, [ebx + 0x60]
lea ecx, [ebx + 0x40]
push eax
push ecx
call dword [ebp - 0x1c]
mov eax, dword [ebp - 8]
add esp, 0x10
mov ecx, dword [ebp - 0x10]
xor edx, edx
mov dword [ebp - 8], eax
lea eax, [ebx + 0x178]
mov dword [ebp - 0x20], eax
lea eax, [ebx + 0xc]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 4]
mov dword [ebp - 0xc], edx
mov dword [ebp - 0x18], esi
mov dword [ebp - 0x10], ecx
mov dword [ebp - 4], eax
jmp 0x52900b
mov eax, dword [ebp + 0xc]
mov ecx, edi
and ecx, 0xfffffff0
mov dword [ebp - 0x20], ecx
je 0x529198
push ebx
push dword [ebp - 0x24]
mov esi, ecx
shr esi, 4
push esi
push eax
push dword [ebp - 0x18]
call dword [ebp + 0x10]
mov eax, dword [ebp - 4]
mov ecx, dword [ebp - 0x14]
add eax, esi
mov esi, dword [ebp - 0x18]
mov dword [ebp - 4], eax
bswap eax
mov dword [ecx], eax
mov eax, dword [ebp - 0x20]
add esi, eax
push eax
sub edi, eax
mov eax, dword [ebp + 0xc]
push eax
lea eax, [ebx + 0x60]
push eax
push dword [ebp - 0x10]
call dword [ebp - 0x1c]
mov eax, dword [ebp - 0x20]
add esp, 0x24
add dword [ebp + 0xc], eax
test edi, edi
je 0x529201
push dword [ebp - 0x24]
lea eax, [ebx + 0x10]
push eax
mov eax, dword [ebx + 0x170]
push ebx
call eax
mov eax, dword [ebp - 4]
add esp, 0xc
mov ecx, dword [ebp - 0x14]
inc eax
mov edx, dword [ebp - 0xc]
add edx, 0x178
add edx, ebx
bswap eax
mov dword [ecx], eax
mov eax, dword [ebp + 0xc]
sub esi, eax
mov ecx, dword [ebp - 8]
mov dword [ebp + 0xc], edx
add ecx, eax
mov edx, dword [ebp - 8]
add edx, 0x10
add edx, ebx
add dword [ebp - 0xc], edi
mov dword [ebp - 0x24], edx
mov edx, dword [ebp + 0xc]
mov ebx, dword [ebp - 0x24]
mov al, byte [esi + ecx]
lea edx, [edx + 1]
xor al, byte [ebx]
lea ebx, [ebx + 1]
mov byte [ecx], al
lea ecx, [ecx + 1]
mov byte [edx - 1], al
sub edi, 1
jne 0x5291e6
mov ebx, dword [ebp - 0x28]
mov edx, dword [ebp - 0xc]
mov dword [ebx + 0x168], edx
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
pop edi
pop esi
or eax, 0xffffffff
pop ebx
mov esp, ebp
pop ebp
ret