Function at 0x55606f
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
mov eax, dword [ebx + 0x1c]
mov dword [ebp - 0x28], edx
mov dword [ebp - 0xc], ecx
push esi
push edi
mov edi, ecx
test eax, eax
je 0x5562de
mov ecx, dword [ebx + 8]
mov edx, dword [ebx + 0x10]
dec eax
xor esi, esi
cmp byte [0x7a41d1], 0
mov dword [ebx + 0x1c], eax
je 0x5561b3
mov eax, dword [ebx + 0x18]
lea edi, [eax - 0x20]
test edi, edi
mov edi, dword [ebp - 0xc]
js 0x556156
lea esi, [ecx + 0x10]
mov dword [ebp - 0x20], edx
mov dword [ebp - 0x1c], esi
mov esi, edi
sub esi, ecx
sub edi, edx
mov dword [ebp - 0x10], esi
mov esi, edx
sub esi, ecx
mov dword [ebp - 0x18], edi
mov edi, dword [ebp - 0x10]
mov edx, dword [ebp - 0x18]
mov dword [ebp - 8], esi
mov esi, eax
mov ecx, dword [ebp - 8]
mov eax, dword [ebp - 0x1c]
shr esi, 5
mov dword [ebp - 0x14], esi
shl esi, 5
mov dword [ebp - 0x24], esi
mov esi, dword [ebp - 0x20]
sub dword [ebp - 0x14], 1
movups xmm2, xmmword [eax - 0x10]
movups xmm0, xmmword [eax]
movups xmm4, xmmword [edx + esi]
movups xmm5, xmmword [edi + eax]
movaps xmm3, xmm2
movaps xmm1, xmm0
pcmpgtb xmm3, xmm4
pcmpgtb xmm1, xmm5
psubsb xmm4, xmm2
psubsb xmm5, xmm0
pxor xmm4, xmm3
pxor xmm5, xmm1
psubsb xmm4, xmm3
psubsb xmm5, xmm1
movups xmmword [esi], xmm4
lea esi, [esi + 0x20]
movups xmmword [ecx + eax], xmm5
lea eax, [eax + 0x20]
jne 0x5560ff
mov esi, dword [ebp - 0x24]
mov edi, dword [ebp - 0xc]
mov ecx, dword [ebx + 8]
mov edx, dword [ebx + 0x10]
mov eax, dword [ebx + 0x18]
add eax, 0xfffffff8
cmp esi, eax
jg 0x5561b3
sub edi, ecx
lea edx, [esi + ecx]
mov dword [ebp - 0x20], edi
sub eax, esi
mov edi, dword [ebx + 0x10]
sub edi, ecx
shr eax, 3
mov ecx, dword [ebp - 0x20]
inc eax
mov dword [ebp - 0x1c], edi
mov edi, edx
mov dword [ebp - 0x24], edx
mov edx, dword [ebp - 0x1c]
lea esi, [esi + eax*8]
movq xmm0, qword [edi]
movq xmm2, qword [edi + ecx]
movaps xmm1, xmm0
pcmpgtb xmm1, xmm2
psubsb xmm2, xmm0
pxor xmm2, xmm1
psubsb xmm2, xmm1
movq qword [edi + edx], xmm2
lea edi, [edi + 8]
sub eax, 1
jne 0x556181
mov edi, dword [ebp - 0xc]
mov ecx, dword [ebx + 8]
mov edx, dword [ebx + 0x10]
mov eax, dword [ebx + 0x18]
add eax, 0xfffffffc
cmp esi, eax
jg 0x55627c
lea eax, [edx + 1]
mov dword [ebp - 0x14], edx
sub dword [ebp - 0x14], edi
add eax, esi
mov dword [ebp - 0x10], eax
lea eax, [esi + edi]
mov dword [ebp - 8], eax
mov eax, ecx
sub eax, edi
sub ecx, edx
mov dword [ebp - 0x24], ecx
mov ecx, dword [ebp - 8]
mov dword [ebp - 0x20], eax
movzx eax, byte [eax + ecx]
push eax
movzx eax, byte [ecx]
push eax
call fcn.0054db22
mov ecx, dword [ebp - 0x10]
mov byte [ebp - 1], al
mov eax, dword [ebp - 0x24]
movzx ecx, byte [eax + ecx]
mov eax, dword [ebp - 8]
push ecx
movzx ecx, byte [eax + 1]
push ecx
call fcn.0054db22
mov edx, dword [ebp - 0x14]
mov edi, dword [ebp - 8]
mov cl, byte [ebp - 1]
mov byte [edx + edi], cl
mov ecx, dword [ebp - 0x10]
mov edi, dword [ebx + 8]
mov byte [ecx], al
movzx eax, byte [edi + esi + 2]
push eax
mov eax, dword [ebp - 8]
movzx eax, byte [eax + 2]
push eax
call fcn.0054db22
movzx ecx, byte [edi + esi + 3]
mov byte [ebp - 1], al
mov eax, dword [ebp - 8]
push ecx
movzx ecx, byte [eax + 3]
push ecx
call fcn.0054db22
mov edx, dword [ebp - 0x10]
add esi, 4
mov cl, byte [ebp - 1]
mov byte [edx + 2], al
mov eax, dword [ebx + 0x18]
mov byte [edx + 1], cl
add eax, 0xfffffffc
mov ecx, dword [ebp - 8]
add edx, 4
add ecx, 4
mov dword [ebp - 0x10], edx
cmp esi, eax
mov dword [ebp - 8], ecx
mov eax, dword [ebp - 0x20]
jle 0x5561e4
mov edi, dword [ebp - 0xc]
cmp esi, dword [ebx + 0x18]
jge 0x5562bb
mov ecx, dword [ebx + 0x10]
lea eax, [esi + edi]
mov dword [ebp - 0x24], eax
mov eax, dword [ebx + 8]
sub eax, edi
sub ecx, edi
mov edi, dword [ebp - 0x24]
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x20], ecx
movzx eax, byte [eax + edi]
push eax
movzx eax, byte [edi]
push eax
call fcn.0054db22
mov ecx, dword [ebp - 0x20]
inc esi
mov byte [ecx + edi], al
inc edi
mov eax, dword [ebp - 0x1c]
cmp esi, dword [ebx + 0x18]
jl 0x55629a
mov edi, dword [ebp - 0xc]
mov ecx, dword [ebx + 8]
mov edx, dword [ebx + 0x10]
add edi, dword [ebp - 0x28]
add ecx, dword [ebx + 0xc]
add edx, dword [ebx + 0x14]
mov eax, dword [ebx + 0x1c]
mov dword [ebp - 0xc], edi
mov dword [ebx + 8], ecx
mov dword [ebx + 0x10], edx
test eax, eax
jne 0x5560a2
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret