Function at 0x4bf720
Capabilities:
Encode data using xor

Disassembly:
push ebx
mov ebx, dword [esp + 8]
push ebp
mov ebp, dword [esp + 0x10]
mov eax, ebp
sub eax, ebx
and eax, 0xfffffffc
push esi
push edi
cmp eax, 0x80
jle 0x4bfac0
nop
mov eax, ebp
sub eax, ebx
cmp dword [esp + 0x1c], 0
jle 0x4bfb26
movss xmm2, dword [ebx]
sar eax, 3
cvtps2pd xmm0, xmm2
lea esi, [ebx + eax*4]
lea eax, [ebp - 4]
sub eax, ebx
sar eax, 2
cmp eax, 0x28
jle 0x4bf8cd
inc eax
sar eax, 3
lea ecx, [eax*8]
shl eax, 2
mov dword [esp + 0x14], ecx
movss xmm3, dword [eax + ebx]
cvtps2pd xmm1, xmm3
comisd xmm1, xmm0
jbe 0x4bf796
movss dword [eax + ebx], xmm2
movss dword [ebx], xmm3
movss xmm1, dword [ecx + ebx]
movss xmm2, dword [eax + ebx]
cvtps2pd xmm3, xmm1
cvtps2pd xmm0, xmm2
comisd xmm3, xmm0
jbe 0x4bf7cc
movss dword [ecx + ebx], xmm2
movss dword [eax + ebx], xmm1
movss xmm2, dword [ebx]
cvtps2pd xmm0, xmm2
comisd xmm3, xmm0
jbe 0x4bf7cc
movss dword [eax + ebx], xmm2
movss dword [ebx], xmm1
movss xmm3, dword [esi]
mov ecx, esi
sub ecx, eax
cvtps2pd xmm1, xmm3
movss xmm2, dword [ecx]
cvtps2pd xmm0, xmm2
comisd xmm1, xmm0
jbe 0x4bf7ec
movss dword [esi], xmm2
movss dword [ecx], xmm3
movss xmm1, dword [eax + esi]
movss xmm2, dword [esi]
cvtps2pd xmm3, xmm1
cvtps2pd xmm0, xmm2
comisd xmm3, xmm0
jbe 0x4bf81f
movss dword [eax + esi], xmm2
movss dword [esi], xmm1
movss xmm2, dword [ecx]
cvtps2pd xmm0, xmm2
comisd xmm3, xmm0
jbe 0x4bf81f
movss dword [esi], xmm2
movss dword [ecx], xmm1
lea ecx, [ebp - 4]
lea edi, [ebp - 4]
sub ecx, eax
sub edi, dword [esp + 0x14]
movss xmm3, dword [ecx]
movss xmm2, dword [edi]
cvtps2pd xmm1, xmm3
cvtps2pd xmm0, xmm2
comisd xmm1, xmm0
jbe 0x4bf847
movss dword [ecx], xmm2
movss dword [edi], xmm3
movss xmm1, dword [ebp - 4]
movss xmm2, dword [ecx]
cvtps2pd xmm3, xmm1
cvtps2pd xmm0, xmm2
comisd xmm3, xmm0
jbe 0x4bf87a
movss dword [ebp - 4], xmm2
movss dword [ecx], xmm1
movss xmm2, dword [edi]
cvtps2pd xmm0, xmm2
comisd xmm3, xmm0
jbe 0x4bf87a
movss dword [ecx], xmm2
movss dword [edi], xmm1
movss xmm3, dword [esi]
movss xmm2, dword [eax + ebx]
cvtps2pd xmm1, xmm3
cvtps2pd xmm0, xmm2
comisd xmm1, xmm0
jbe 0x4bf898
movss dword [esi], xmm2
movss dword [eax + ebx], xmm3
movss xmm1, dword [ecx]
movss xmm2, dword [esi]
cvtps2pd xmm3, xmm1
cvtps2pd xmm0, xmm2
comisd xmm3, xmm0
jbe 0x4bf915
movss dword [ecx], xmm2
movss dword [esi], xmm1
movss xmm2, dword [eax + ebx]
cvtps2pd xmm0, xmm2
comisd xmm3, xmm0
jbe 0x4bf915
movss dword [esi], xmm2
movss dword [eax + ebx], xmm1
jmp 0x4bf915
movss xmm3, dword [esi]
cvtps2pd xmm1, xmm3
comisd xmm1, xmm0
jbe 0x4bf8e2
movss dword [esi], xmm2
movss dword [ebx], xmm3
movss xmm1, dword [ebp - 4]
movss xmm2, dword [esi]
cvtps2pd xmm3, xmm1
cvtps2pd xmm0, xmm2
comisd xmm3, xmm0
jbe 0x4bf915
movss dword [ebp - 4], xmm2
movss dword [esi], xmm1
movss xmm2, dword [ebx]
cvtps2pd xmm0, xmm2
comisd xmm3, xmm0
jbe 0x4bf915
movss dword [esi], xmm2
movss dword [ebx], xmm1
lea edi, [esi + 4]
cmp ebx, esi
jae 0x4bf941
movss xmm1, dword [esi]
movss xmm2, dword [esi - 4]
cvtps2pd xmm0, xmm2
cvtps2pd xmm1, xmm1
comisd xmm0, xmm1
ja 0x4bf941
comisd xmm1, xmm0
ja 0x4bf941
add esi, 0xfffffffc
movaps xmm1, xmm2
cmp ebx, esi
jb 0x4bf920
cmp edi, ebp
jae 0x4bf971
movss xmm2, dword [esi]
nop dword [eax]
movss xmm0, dword [edi]
xorps xmm1, xmm1
cvtps2pd xmm0, xmm0
cvtss2sd xmm1, xmm2
comisd xmm0, xmm1
ja 0x4bf971
comisd xmm1, xmm0
ja 0x4bf971
add edi, 4
cmp edi, ebp
jb 0x4bf950
mov ecx, edi
mov edx, esi
cmp ecx, ebp
jae 0x4bf9b4
nop dword [eax]
movss xmm0, dword [esi]
movss xmm2, dword [ecx]
cvtps2pd xmm0, xmm0
cvtps2pd xmm1, xmm2
comisd xmm0, xmm1
ja 0x4bf9ad
comisd xmm1, xmm0
ja 0x4bf9b4
cmp edi, ecx
je 0x4bf9aa
movss xmm0, dword [edi]
movss dword [edi], xmm2
movss dword [ecx], xmm0
add edi, 4
add ecx, 4
cmp ecx, ebp
jb 0x4bf980
cmp edx, ebx
jbe 0x4bf9f9
lea eax, [edx - 4]
nop dword [eax + eax]
movss xmm2, dword [eax]
movss xmm1, dword [esi]
cvtps2pd xmm0, xmm2
cvtps2pd xmm1, xmm1
comisd xmm0, xmm1
ja 0x4bf9ed
comisd xmm1, xmm0
ja 0x4bf9f7
sub esi, 4
cmp esi, eax
je 0x4bf9ed
movss xmm0, dword [esi]
movss dword [esi], xmm2
movss dword [eax], xmm0
sub edx, 4
sub eax, 4
cmp ebx, edx
jb 0x4bf9c0
cmp edx, ebx
jne 0x4bfa29
cmp ecx, ebp
je 0x4bfa6b
cmp edi, ecx
je 0x4bfa0f
movss xmm0, dword [esi]
mov eax, dword [edi]
mov dword [esi], eax
movss dword [edi], xmm0
movss xmm0, dword [esi]
add edi, 4
mov eax, dword [ecx]
mov dword [esi], eax
add esi, 4
movss dword [ecx], xmm0
add ecx, 4
jmp 0x4bf975
add edx, 0xfffffffc
cmp ecx, ebp
jne 0x4bfa57
sub esi, 4
cmp edx, esi
je 0x4bfa43
movss xmm0, dword [edx]
mov eax, dword [esi]
mov dword [edx], eax
movss dword [esi], xmm0
movss xmm0, dword [esi]
sub edi, 4
mov eax, dword [edi]
mov dword [esi], eax
movss dword [edi], xmm0
jmp 0x4bf975
movss xmm0, dword [ecx]
mov eax, dword [edx]
mov dword [ecx], eax
add ecx, 4
movss dword [edx], xmm0
jmp 0x4bf975
mov edx, dword [esp + 0x1c]
mov ecx, ebp
push dword [esp + 0x20]
mov eax, edx
sub ecx, edi
sar eax, 2
and ecx, 0xfffffffc
sar edx, 1
add edx, eax
mov eax, esi
sub eax, ebx
mov dword [esp + 0x20], edx
and eax, 0xfffffffc
push edx
cmp eax, ecx
jge 0x4bfa9e
push esi
push ebx
call fcn.004bf720
mov ebx, edi
jmp 0x4bfaab
push ebp
push edi
call fcn.004bf720
mov ebp, esi
mov dword [esp + 0x28], ebp
mov eax, ebp
add esp, 0x10
sub eax, ebx
and eax, 0xfffffffc
cmp eax, 0x80
jg 0x4bf740
cmp ebx, ebp
je 0x4bfc6d
lea esi, [ebx + 4]
cmp esi, ebp
je 0x4bfc6d
mov edi, 4
sub edi, ebx
nop word [eax + eax]
movss xmm3, dword [esi]
mov ecx, esi
movss xmm0, dword [ebx]
cvtps2pd xmm1, xmm3
cvtps2pd xmm0, xmm0
movss dword [esp + 0x18], xmm3
comisd xmm1, xmm0
jbe 0x4bfc2f
lea ecx, [esi - 4]
mov eax, esi
add ecx, edi
push ecx
sub eax, ecx
add eax, 4
push ebx
push eax
call fcn.006d8770
movss xmm0, dword [esp + 0x24]
add esp, 0xc
movss dword [ebx], xmm0
jmp 0x4bfc62
sar eax, 2
mov esi, eax
mov dword [esp + 0x14], eax
sar esi, 1
test esi, esi
jle 0x4bfbd8
lea edi, [eax - 1]
sar edi, 1
lea ebp, [eax - 1]
movss xmm3, dword [ebx + esi*4 - 4]
dec esi
mov edx, esi
mov ecx, esi
cmp esi, edi
jge 0x4bfb83
add ecx, ecx
xor eax, eax
movss xmm1, dword [ebx + ecx*4 + 8]
movss xmm0, dword [ebx + ecx*4 + 4]
cvtps2pd xmm1, xmm1
cvtps2pd xmm0, xmm0
comisd xmm1, xmm0
seta al
xor eax, 1
inc eax
add ecx, eax
mov eax, dword [ebx + ecx*4]
mov dword [ebx + edx*4], eax
mov edx, ecx
cmp ecx, edi
jl 0x4bfb50
mov eax, dword [esp + 0x14]
cmp edx, edi
jne 0x4bfb94
test al, 1
jne 0x4bfb94
mov eax, dword [ebx + eax*4 - 4]
mov dword [ebx + edx*4], eax
mov edx, ebp
lea eax, [edx - 1]
sar eax, 1
cmp esi, edx
jge 0x4bfbc3
nop dword [eax]
movss xmm2, dword [ebx + eax*4]
xorps xmm0, xmm0
cvtps2pd xmm1, xmm2
cvtss2sd xmm0, xmm3
comisd xmm1, xmm0
jbe 0x4bfbc3
movss dword [ebx + edx*4], xmm2
mov edx, eax
dec eax
sar eax, 1
cmp esi, edx
jl 0x4bfba0
mov eax, dword [esp + 0x14]
movss dword [ebx + edx*4], xmm3
test esi, esi
jg 0x4bfb41
mov ebp, dword [esp + 0x18]
mov eax, ebp
sub eax, ebx
and eax, 0xfffffffc
cmp eax, 8
jl 0x4bfc6d
sub ebp, ebx
nop word [eax + eax]
movss xmm0, dword [ebx + ebp - 4]
mov eax, dword [ebx]
push dword [esp + 0x20]
mov dword [ebx + ebp - 4], eax
lea eax, [esp + 0x1c]
push eax
lea eax, [ebp - 4]
movss dword [esp + 0x20], xmm0
sar eax, 2
push eax
push 0
push ebx
call fcn.004be0e0
add ebp, 0xfffffffc
add esp, 0x14
mov eax, ebp
and eax, 0xfffffffc
cmp eax, 8
jge 0x4bfbf0
pop edi
pop esi
pop ebp
pop ebx
ret
movss xmm2, dword [esi - 4]
lea eax, [esi - 4]
cvtps2pd xmm0, xmm2
comisd xmm1, xmm0
jbe 0x4bfc5e
movss dword [ecx], xmm2
xorps xmm1, xmm1
movss xmm2, dword [eax - 4]
mov ecx, eax
sub eax, 4
cvtps2pd xmm0, xmm2
cvtss2sd xmm1, xmm3
comisd xmm1, xmm0
ja 0x4bfc40
movss dword [ecx], xmm3
add esi, 4
cmp esi, ebp
jne 0x4bfae0
pop edi
pop esi
pop ebp
pop ebx
ret