Function at 0x10026f70
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x14
push ebx
mov ebx, dword [ebp + 8]
push esi
push edi
mov edi, dword [ebp + 0xc]
mov eax, edi
sub eax, ebx
and eax, 0xfffffff8
cmp eax, 0x100
jle 0x1002716c
mov ecx, dword [ebp + 0x14]
mov eax, edi
sub eax, ebx
cmp dword [ebp + 0x10], 0
jle 0x100271cc
sar eax, 4
push ecx
lea esi, [ebx + eax*8]
lea eax, [edi - 8]
push eax
push esi
push ebx
call fcn.10024470
add esp, 0x10
lea edi, [esi + 8]
cmp ebx, esi
jae 0x10026fe4
movsd xmm0, qword [esi]
movsd xmm1, qword [esi - 8]
comisd xmm1, xmm0
ja 0x10026fe4
movsd xmm0, qword [esi]
comisd xmm0, xmm1
ja 0x10026fe4
add esi, 0xfffffff8
movaps xmm0, xmm1
cmp ebx, esi
jb 0x10026fc5
mov eax, dword [ebp + 0xc]
cmp edi, eax
jae 0x10027007
movsd xmm1, qword [esi]
nop
movsd xmm0, qword [edi]
comisd xmm0, xmm1
ja 0x10027007
comisd xmm1, xmm0
ja 0x10027007
add edi, 8
cmp edi, eax
jb 0x10026ff0
mov edx, dword [ebp + 0xc]
mov eax, edi
mov ecx, esi
nop
cmp eax, edx
jae 0x10027045
movsd xmm0, qword [esi]
movsd xmm1, qword [eax]
comisd xmm0, xmm1
ja 0x1002703e
comisd xmm1, xmm0
ja 0x10027045
mov edx, dword [ebp + 0xc]
cmp edi, eax
je 0x1002703b
movsd xmm0, qword [edi]
movsd qword [edi], xmm1
movsd qword [eax], xmm0
add edi, 8
add eax, 8
cmp eax, edx
jb 0x10027014
cmp ecx, ebx
jbe 0x10027086
lea edx, [ecx - 8]
nop dword [eax]
movsd xmm1, qword [edx]
movsd xmm0, qword [esi]
comisd xmm1, xmm0
ja 0x10027077
comisd xmm0, xmm1
ja 0x10027081
sub esi, 8
cmp esi, edx
je 0x10027077
movsd xmm0, qword [esi]
movsd qword [esi], xmm1
movsd qword [edx], xmm0
sub ecx, 8
sub edx, 8
cmp ebx, ecx
jb 0x10027050
mov edx, dword [ebp + 0xc]
cmp ecx, ebx
jne 0x100270c2
cmp eax, edx
je 0x10027111
cmp edi, eax
je 0x100270a4
movsd xmm0, qword [edi]
movsd xmm1, qword [esi]
movsd qword [esi], xmm0
movsd qword [edi], xmm1
movsd xmm0, qword [eax]
add edi, 8
movsd xmm1, qword [esi]
movsd qword [esi], xmm0
add esi, 8
movsd qword [eax], xmm1
add eax, 8
jmp 0x10027010
add ecx, 0xfffffff8
cmp eax, edx
jne 0x100270f9
sub esi, 8
cmp ecx, esi
je 0x100270e0
movsd xmm0, qword [esi]
movsd xmm1, qword [ecx]
movsd qword [ecx], xmm0
movsd qword [esi], xmm1
movsd xmm0, qword [edi - 8]
sub edi, 8
movsd xmm1, qword [esi]
movsd qword [esi], xmm0
movsd qword [edi], xmm1
jmp 0x10027010
movsd xmm1, qword [eax]
movsd xmm0, qword [ecx]
movsd qword [eax], xmm0
add eax, 8
movsd qword [ecx], xmm1
jmp 0x10027010
mov edx, dword [ebp + 0x10]
mov eax, edx
mov ecx, dword [ebp + 0xc]
sar eax, 2
sub ecx, edi
sar edx, 1
and ecx, 0xfffffff8
add edx, eax
mov eax, esi
sub eax, ebx
mov dword [ebp + 0x10], edx
and eax, 0xfffffff8
cmp eax, ecx
mov eax, dword [ebp + 0x14]
push eax
push edx
jge 0x10027146
push esi
push ebx
call fcn.10026f70
mov ebx, edi
mov edi, dword [ebp + 0xc]
jmp 0x10027154
push dword [ebp + 0xc]
push edi
call fcn.10026f70
mov edi, esi
mov dword [ebp + 0xc], edi
mov ecx, dword [ebp + 0x14]
mov eax, edi
sub eax, ebx
add esp, 0x10
and eax, 0xfffffff8
cmp eax, 0x100
jg 0x10026f97
cmp ebx, edi
je 0x1002730a
lea esi, [ebx + 8]
cmp esi, edi
je 0x1002730a
mov eax, 8
sub eax, ebx
mov dword [esp + 0x18], eax
nop word [eax + eax]
movsd xmm1, qword [esi]
mov ecx, esi
comisd xmm1, xmmword [ebx]
movsd qword [esp + 0x10], xmm1
jbe 0x100272d5
lea ecx, [eax - 8]
mov eax, esi
add ecx, esi
push ecx
sub eax, ecx
add eax, 8
push ebx
push eax
call fcn.1006e070
movsd xmm0, qword [esp + 0x1c]
add esp, 0xc
movsd qword [ebx], xmm0
jmp 0x100272fb
sar eax, 3
mov esi, eax
mov dword [esp + 0xc], eax
sar esi, 1
test esi, esi
jle 0x10027280
lea ecx, [eax - 1]
mov dword [esp + 0x18], ecx
sar ecx, 1
mov dword [esp + 0x10], ecx
mov edi, ecx
nop
movsd xmm1, qword [ebx + esi*8 - 8]
dec esi
mov edx, esi
mov ecx, esi
cmp esi, edi
jge 0x1002722d
nop
add ecx, ecx
xor eax, eax
movsd xmm0, qword [ebx + ecx*8 + 0x10]
comisd xmm0, xmmword [ebx + ecx*8 + 8]
seta al
inc ecx
xor eax, 1
add ecx, eax
movsd xmm0, qword [ebx + ecx*8]
movsd qword [ebx + edx*8], xmm0
mov edx, ecx
cmp ecx, edi
jl 0x10027200
mov eax, dword [esp + 0xc]
cmp edx, edi
jne 0x10027244
test al, 1
jne 0x10027244
movsd xmm0, qword [ebx + eax*8 - 8]
movsd qword [ebx + edx*8], xmm0
mov edx, dword [esp + 0x18]
lea eax, [edx - 1]
sar eax, 1
cmp esi, edx
jge 0x10027269
nop dword [eax]
movsd xmm0, qword [ebx + eax*8]
comisd xmm0, xmm1
jbe 0x10027269
movsd qword [ebx + edx*8], xmm0
mov edx, eax
dec eax
sar eax, 1
cmp esi, edx
jl 0x10027250
mov eax, dword [esp + 0xc]
movsd qword [ebx + edx*8], xmm1
test esi, esi
jg 0x100271f0
mov edi, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x14]
mov eax, edi
sub eax, ebx
and eax, 0xfffffff8
cmp eax, 0x10
jl 0x1002730a
sub edi, ebx
nop
movsd xmm0, qword [ebx + edi - 8]
lea eax, [esp + 0x18]
push ecx
push eax
lea eax, [edi - 8]
movsd qword [esp + 0x20], xmm0
movsd xmm0, qword [ebx]
sar eax, 3
push eax
push 0
push ebx
movsd qword [ebx + edi - 8], xmm0
call fcn.10025480
mov ecx, dword [ebp + 0x14]
add edi, 0xfffffff8
mov eax, edi
add esp, 0x14
and eax, 0xfffffff8
cmp eax, 0x10
jge 0x10027290
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
movsd xmm0, qword [esi - 8]
lea eax, [esi - 8]
comisd xmm1, xmm0
jbe 0x100272f7
movsd qword [ecx], xmm0
mov ecx, eax
movsd xmm0, qword [eax - 8]
sub eax, 8
comisd xmm1, xmm0
ja 0x100272e3
movsd qword [ecx], xmm1
mov eax, dword [esp + 0x18]
add esi, 8
cmp esi, edi
jne 0x10027190
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret