Function at 0x528840
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x2c
call fcn.005dfa60
push ebx
push esi
mov esi, ecx
mov ecx, dword [ebp + 0xc]
push edi
mov edi, edx
mov dword [ebp - 0x2c], esi
xor edx, edx
mov eax, dword [esi + 0x170]
mov dword [ebp - 0x24], eax
mov eax, dword [esi + 0x174]
mov dword [ebp - 0x20], eax
mov eax, dword [esi + 0x164]
mov dword [ebp - 0x18], eax
mov eax, ecx
add eax, dword [esi + 0x38]
adc edx, dword [esi + 0x3c]
cmp edx, 0xf
ja 0x528b95
jb 0x528893
cmp eax, 0xffffffe0
ja 0x528b95
cmp dword [esi + 0x16c], 0
lea ebx, [esi + 0x40]
mov dword [esi + 0x3c], edx
mov edx, dword [esi + 0x168]
mov dword [esi + 0x38], eax
mov dword [ebp - 0xc], edx
mov dword [ebp - 0x10], ebx
je 0x528add
test ecx, ecx
jne 0x5288dc
lea eax, [esi + 0x60]
push eax
mov eax, dword [esi + 0x160]
push ebx
call eax
add esp, 8
mov dword [esi + 0x16c], 0
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
movups xmm0, xmmword [ebx]
lea eax, [esi + 0x178]
mov dword [ebp - 8], 0
mov dword [ebp - 0x1c], eax
mov edx, 0x10
movups xmmword [eax], xmm0
mov dword [ebx], 0
lea eax, [esi + 0xc]
mov dword [ebx + 4], 0
mov dword [esi + 0x48], 0
mov dword [esi + 0x4c], 0
mov dword [ebp - 0x14], eax
mov eax, dword [eax]
bswap eax
mov dword [ebp - 0xc], edx
mov dword [esi + 0x16c], 0
mov dword [ebp - 4], eax
mov ebx, dword [ebp + 8]
lea eax, [esi + 0x60]
cmp ecx, 0x10
jb 0x528953
test edx, edx
je 0x528953
push edx
push dword [ebp - 0x1c]
push eax
push dword [ebp - 0x10]
call dword [ebp - 0x18]
mov ecx, dword [ebp + 0xc]
add esp, 0x10
mov dword [ebp - 0xc], 0
cmp ecx, 0xc00
jb 0x5289ec
mov eax, 0xaaaaaaab
mul ecx
shr edx, 0xb
mov dword [ebp - 0x28], edx
nop dword [eax]
mov dword [ebp - 0x1c], 0xc0
push dword [ebp - 0x20]
lea eax, [esi + 0x10]
push eax
push esi
call dword [ebp - 0x24]
mov eax, dword [ebp - 4]
add esp, 0xc
mov ecx, dword [ebp - 0x14]
inc eax
mov dword [ebp - 4], eax
bswap eax
mov dword [ecx], eax
mov eax, dword [edi]
xor eax, dword [esi + 0x10]
mov dword [ebx], eax
mov eax, dword [edi + 4]
xor eax, dword [esi + 0x14]
mov dword [ebx + 4], eax
mov eax, dword [edi + 8]
xor eax, dword [esi + 0x18]
mov dword [ebx + 8], eax
mov eax, dword [edi + 0xc]
add edi, 0x10
xor eax, dword [esi + 0x1c]
mov dword [ebx + 0xc], eax
add ebx, 0x10
sub dword [ebp - 0x1c], 1
jne 0x528977
push 0xc00
lea eax, [ebx - 0xc00]
push eax
lea eax, [esi + 0x60]
push eax
push dword [ebp - 0x10]
call dword [ebp - 0x18]
mov ecx, dword [ebp + 0xc]
add esp, 0x10
sub ecx, 0xc00
sub dword [ebp - 0x28], 1
mov dword [ebp + 0xc], ecx
jne 0x528970
mov edx, ecx
and edx, 0xfffffff0
mov dword [ebp - 0x1c], edx
je 0x528a6b
cmp ecx, 0x10
jb 0x528a55
shr ecx, 4
lea eax, [esi + 0x10]
mov dword [ebp - 0x28], ecx
push dword [ebp - 0x20]
push eax
push esi
call dword [ebp - 0x24]
mov eax, dword [ebp - 4]
add esp, 0xc
mov ecx, dword [ebp - 0x14]
inc eax
mov dword [ebp - 4], eax
bswap eax
sub dword [ebp + 0xc], 0x10
mov dword [ecx], eax
mov eax, dword [edi]
xor eax, dword [esi + 0x10]
mov dword [ebx], eax
mov eax, dword [edi + 4]
xor eax, dword [esi + 0x14]
mov dword [ebx + 4], eax
mov eax, dword [edi + 8]
xor eax, dword [esi + 0x18]
mov dword [ebx + 8], eax
mov eax, dword [edi + 0xc]
add edi, 0x10
xor eax, dword [esi + 0x1c]
mov dword [ebx + 0xc], eax
add ebx, 0x10
sub dword [ebp - 0x28], 1
lea eax, [esi + 0x10]
jne 0x528a04
mov edx, dword [ebp - 0x1c]
push edx
mov eax, ebx
sub eax, edx
push eax
lea eax, [esi + 0x60]
push eax
push dword [ebp - 0x10]
call dword [ebp - 0x18]
mov ecx, dword [ebp + 0xc]
add esp, 0x10
test ecx, ecx
je 0x528acb
push dword [ebp - 0x20]
lea eax, [esi + 0x10]
push eax
push esi
call dword [ebp - 0x24]
mov eax, dword [ebp - 4]
sub edi, ebx
mov ecx, dword [ebp - 0x14]
inc eax
bswap eax
add esp, 0xc
mov dword [ecx], eax
mov eax, dword [ebp - 0xc]
mov ecx, dword [ebp - 8]
add eax, 0x178
add eax, esi
mov dword [ebp - 0x28], eax
lea eax, [ecx + 0x10]
add eax, esi
lea edx, [ecx + ebx]
mov ecx, dword [ebp + 0xc]
mov esi, eax
add dword [ebp - 0xc], ecx
mov ebx, dword [ebp - 0x28]
mov dword [ebp - 0x24], eax
mov al, byte [edi + edx]
lea ebx, [ebx + 1]
xor al, byte [esi]
lea esi, [esi + 1]
mov byte [edx], al
lea edx, [edx + 1]
mov byte [ebx - 1], al
sub ecx, 1
jne 0x528ab0
mov esi, dword [ebp - 0x2c]
mov eax, dword [ebp - 0xc]
mov dword [esi + 0x168], eax
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
lea eax, [esi + 0x178]
mov dword [ebp - 0x10], ebx
mov dword [ebp - 0x1c], eax
lea eax, [esi + 0xc]
mov dword [ebp - 0x14], eax
mov eax, dword [eax]
bswap eax
mov dword [ebp - 4], eax
mov eax, edx
and eax, 0xf
mov dword [ebp - 8], eax
je 0x52892c
mov ebx, dword [ebp + 8]
lea eax, [esi + 0x178]
add eax, edx
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 8]
test ecx, ecx
je 0x528b86
mov al, byte [eax + esi + 0x10]
dec ecx
xor al, byte [edi]
inc edx
mov esi, dword [ebp - 0x14]
inc edi
inc dword [ebp - 0x14]
mov byte [ebx], al
inc ebx
mov dword [ebp + 0xc], ecx
mov byte [esi], al
mov eax, dword [ebp - 8]
mov esi, dword [ebp - 0x2c]
inc eax
and eax, 0xf
mov dword [ebp - 8], eax
jne 0x528b15
push edx
lea eax, [esi + 0x178]
push eax
lea eax, [esi + 0x60]
lea ecx, [esi + 0x40]
push eax
push ecx
call dword [ebp - 0x18]
mov eax, dword [ebp - 8]
add esp, 0x10
mov ecx, dword [ebp + 0xc]
xor edx, edx
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x10], eax
lea eax, [esi + 0x178]
mov dword [ebp - 0x1c], eax
lea eax, [esi + 0xc]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 4]
mov dword [ebp - 0xc], edx
mov dword [ebp + 0xc], ecx
mov dword [ebp - 4], eax
jmp 0x52892f
mov dword [esi + 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