Function at 0x557492
Capabilities:
Encode data using xor

Disassembly:
push ebx
mov ebx, esp
push ecx
push ecx
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
sub esp, 0x28
push esi
mov esi, dword [ebx + 0x1c]
mov dword [ebp - 0x28], edx
mov dword [ebp - 4], ecx
push edi
test esi, esi
je 0x557683
mov eax, dword [ebx + 0x18]
mov edi, dword [ebx + 8]
add eax, 0xfffffffc
mov dword [ebp - 0x10], eax
mov eax, dword [ebx + 0x10]
dec esi
xor edx, edx
cmp byte [0x7a41d1], dl
mov dword [ebx + 0x1c], esi
mov esi, dword [ebx + 0x18]
mov dword [ebp - 0x14], esi
je 0x5575ae
lea ecx, [esi - 0x20]
test ecx, ecx
mov ecx, dword [ebp - 4]
js 0x557560
lea edx, [edi + 0x10]
mov dword [ebp - 8], eax
mov dword [ebp - 0x18], edx
mov edx, ecx
sub edx, edi
sub ecx, eax
mov dword [ebp - 0xc], edx
mov edx, eax
sub edx, edi
mov dword [ebp - 0x20], ecx
mov ecx, dword [ebp - 0x18]
mov eax, esi
mov edi, dword [ebp - 0xc]
mov dword [ebp - 0x1c], edx
mov esi, edx
shr eax, 5
mov edx, eax
shl edx, 5
mov dword [ebp - 0x24], edx
mov edx, dword [ebp - 0x20]
movups xmm2, xmmword [edi + ecx]
mov edi, dword [ebp - 8]
movups xmm0, xmmword [ecx]
movups xmm1, xmmword [edx + edi]
pxor xmm2, xmm0
movups xmm0, xmmword [ecx - 0x10]
pxor xmm1, xmm0
movups xmmword [edi], xmm1
add edi, 0x20
mov dword [ebp - 8], edi
mov edi, dword [ebp - 0xc]
movups xmmword [esi + ecx], xmm2
lea ecx, [ecx + 0x20]
sub eax, 1
jne 0x557522
mov edx, dword [ebp - 0x24]
mov edi, dword [ebx + 8]
mov ecx, dword [ebp - 4]
mov esi, dword [ebp - 0x14]
lea eax, [esi - 8]
cmp edx, eax
jg 0x5575ae
mov edi, dword [ebx + 0x10]
lea esi, [edx + ecx]
mov dword [ebp - 0x24], esi
sub eax, edx
mov esi, dword [ebx + 8]
sub edi, ecx
sub esi, ecx
shr eax, 3
mov ecx, dword [ebp - 0x24]
inc eax
mov dword [ebp - 0x1c], esi
mov esi, edi
mov dword [ebp - 0x20], edi
mov edi, dword [ebp - 0x1c]
lea edx, [edx + eax*8]
movq xmm1, qword [edi + ecx]
movq xmm0, qword [ecx]
pxor xmm1, xmm0
movq qword [esi + ecx], xmm1
lea ecx, [ecx + 8]
sub eax, 1
jne 0x55758e
mov edi, dword [ebx + 8]
mov ecx, dword [ebp - 4]
mov esi, dword [ebx + 0x10]
cmp edx, dword [ebp - 0x10]
jg 0x55762e
lea eax, [edx + esi]
mov dword [ebp - 8], eax
lea eax, [edi + 1]
add eax, edx
mov dword [ebp - 0x24], eax
mov eax, ecx
sub eax, edi
mov dword [ebp - 0x20], eax
mov eax, esi
sub eax, edi
mov edi, dword [ebp - 0x24]
mov dword [ebp - 0x18], eax
mov eax, ecx
sub eax, esi
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 8]
mov esi, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x20]
mov al, byte [eax + esi]
xor al, byte [edi - 1]
mov cl, byte [edi + ecx]
xor cl, byte [edi]
mov esi, dword [ebp - 8]
mov byte [esi], al
mov eax, dword [ebp - 0x18]
mov esi, dword [ebp - 4]
mov byte [edi + eax], cl
lea edi, [edi + 4]
mov al, byte [esi + edx + 2]
mov cl, byte [esi + edx + 3]
add edx, 4
xor al, byte [edi - 3]
mov esi, dword [ebp - 8]
xor cl, byte [edi - 2]
mov byte [esi + 2], al
mov eax, esi
mov byte [eax + 3], cl
add eax, 4
mov dword [ebp - 8], eax
cmp edx, dword [ebp - 0x10]
jle 0x5575df
mov edi, dword [ebx + 8]
mov ecx, dword [ebp - 4]
mov esi, dword [ebp - 0x14]
cmp edx, esi
jge 0x557663
lea eax, [edx + edi]
mov dword [ebp - 0x24], ecx
mov dword [ebp - 0x20], eax
sub ecx, edi
mov eax, dword [ebx + 0x10]
sub eax, edi
sub esi, edx
mov edx, dword [ebp - 0x20]
mov edi, eax
mov dword [ebp - 0x24], eax
mov al, byte [ecx + edx]
xor al, byte [edx]
mov byte [edi + edx], al
inc edx
sub esi, 1
jne 0x55764f
mov edi, dword [ebx + 8]
mov ecx, dword [ebp - 4]
mov eax, dword [ebx + 0x10]
add ecx, dword [ebp - 0x28]
add edi, dword [ebx + 0xc]
add eax, dword [ebx + 0x14]
mov esi, dword [ebx + 0x1c]
mov dword [ebp - 4], ecx
mov dword [ebx + 8], edi
mov dword [ebx + 0x10], eax
test esi, esi
jne 0x5574cc
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret