Function at 0x65fd60
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2c
mov eax, dword [0x71a00c]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
xor edi, edi
mov esi, ecx
push 0x38
mov ebx, edx
mov dword [ebp - 0x20], esi
push edi
push esi
mov dword [ebp - 0x14], ebx
mov dword [ebp - 0x18], edi
call fcn.0066eb00
mov ecx, dword [ebx + 4]
add esp, 0xc
xor edx, edx
mov dword [ebp - 0xc], ecx
test ecx, ecx
jle 0x65fe76
cmp ecx, 8
jb 0x65fe4f
mov edi, dword [ebx + 8]
mov eax, ecx
and eax, 0x80000007
jns 0x65fdb8
dec eax
or eax, 0xfffffff8
inc eax
movaps xmm6, xmmword [0x6dbbb0]
xorps xmm5, xmm5
movups xmm7, xmmword [0x6dbee0]
mov dword [ebp - 8], ecx
sub dword [ebp - 8], eax
movaps xmm4, xmm5
mov eax, dword [ebp - 8]
movaps xmm3, xmm4
nop dword [eax + eax]
movups xmm2, xmmword [edi + edx*4]
movaps xmm0, xmm6
pcmpgtd xmm2, xmm5
paddd xmm0, xmm4
pandn xmm2, xmm7
movaps xmm1, xmm2
pand xmm4, xmm2
movups xmm2, xmmword [edi + edx*4 + 0x10]
add edx, 8
pandn xmm1, xmm0
movaps xmm0, xmm6
pcmpgtd xmm2, xmm5
por xmm4, xmm1
pandn xmm2, xmm7
paddd xmm0, xmm3
movaps xmm1, xmm2
pand xmm3, xmm2
pandn xmm1, xmm0
por xmm3, xmm1
cmp edx, eax
jl 0x65fde0
paddd xmm3, xmm4
movaps xmm0, xmm3
psrldq xmm0, 8
paddd xmm3, xmm0
movaps xmm0, xmm3
psrldq xmm0, 4
paddd xmm3, xmm0
movd edi, xmm3
mov dword [ebp - 0x18], edi
cmp edx, ecx
jge 0x65fe76
mov esi, dword [ebx + 8]
mov ebx, ecx
mov eax, dword [esi + edx*4]
lea ecx, [edi + 1]
inc edx
test eax, eax
cmovle ecx, edi
mov edi, ecx
cmp edx, ebx
jl 0x65fe58
mov esi, dword [ebp - 0x20]
mov ebx, dword [ebp - 0x14]
mov ecx, dword [ebp - 0xc]
mov dword [ebp - 0x18], edi
mov dword [esi + 4], ecx
mov dword [esi + 8], edi
mov eax, dword [ebx]
mov dword [esi], eax
test edi, edi
jle 0x6603d7
mov edx, dword [ebx + 4]
mov ecx, dword [ebx + 8]
push edi
call fcn.0065f7e0
add esp, 4
mov dword [ebp - 8], eax
lea eax, [edi*4]
call fcn.006842b0
mov eax, dword [ebp - 8]
mov ecx, esp
mov dword [ebp - 0x10], ecx
test eax, eax
jne 0x65ff26
mov eax, dword [esi + 0x10]
test eax, eax
je 0x65fec2
push eax
call fcn.00676479
add esp, 4
mov eax, dword [esi + 0x14]
test eax, eax
je 0x65fed2
push eax
call fcn.00676479
add esp, 4
mov eax, dword [esi + 0x18]
test eax, eax
je 0x65fee2
push eax
call fcn.00676479
add esp, 4
mov eax, dword [esi + 0x1c]
test eax, eax
je 0x65fef2
push eax
call fcn.00676479
add esp, 4
mov eax, dword [esi + 0x20]
test eax, eax
je 0x65ff02
push eax
call fcn.00676479
add esp, 4
push 0x38
push 0
push esi
call fcn.0066eb00
add esp, 0xc
or eax, 0xffffffff
lea esp, [ebp - 0x38]
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0066bc45
mov esp, ebp
pop ebp
ret
test edi, edi
jle 0x65ffbd
sub ecx, eax
mov dword [ebp - 0xc], edi
mov ebx, eax
mov dword [ebp - 0x1c], ecx
mov esi, ecx
nop word [eax + eax]
mov ecx, dword [ebx]
rol ecx, 0x10
mov edx, ecx
mov eax, ecx
shr edx, 8
shl eax, 8
xor edx, eax
shl ecx, 8
and edx, 0xff00ff
xor edx, ecx
mov ecx, edx
mov eax, edx
shr ecx, 4
shl eax, 4
xor ecx, eax
shl edx, 4
and ecx, 0xf0f0f0f
xor ecx, edx
mov edx, ecx
shr edx, 2
lea eax, [ecx*4]
xor edx, eax
lea eax, [ecx*4]
and edx, 0x33333333
xor edx, eax
mov ecx, edx
shr ecx, 1
lea eax, [edx + edx]
xor ecx, eax
lea eax, [edx + edx]
and ecx, 0x55555555
xor ecx, eax
mov dword [ebx], ecx
mov dword [esi + ebx], ebx
add ebx, 4
sub edi, 1
jne 0x65ff40
mov esi, dword [ebp - 0x20]
mov edi, dword [ebp - 0x18]
mov ebx, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x10]
push 0x65fd40
push 4
push edi
push ecx
call fcn.00677330
add esp, 0x10
lea eax, [edi*4]
call fcn.006842b0
lea eax, [edi*4]
mov dword [ebp - 0xc], esp
push eax
call fcn.0067647e
mov edx, dword [ebp - 0xc]
add esp, 4
xor ecx, ecx
mov dword [esi + 0x14], eax
test edi, edi
jle 0x660042
mov ebx, dword [ebp - 0x10]
nop dword [eax]
mov eax, dword [ebx + ecx*4]
sub eax, dword [ebp - 8]
sar eax, 2
mov dword [edx + eax*4], ecx
inc ecx
cmp ecx, edi
jl 0x660000
mov ebx, dword [ebp - 0x14]
test edi, edi
jle 0x660042
mov eax, dword [ebp - 8]
mov ebx, edx
sub eax, edx
mov dword [ebp - 0x1c], edi
mov dword [ebp - 0x10], eax
mov edx, dword [ebx]
lea ebx, [ebx + 4]
mov ecx, dword [esi + 0x14]
mov eax, dword [eax + ebx - 4]
mov dword [ecx + edx*4], eax
mov eax, dword [ebp - 0x10]
sub edi, 1
jne 0x660025
mov edi, dword [ebp - 0x18]
mov ebx, dword [ebp - 0x14]
push dword [ebp - 8]
call fcn.00676479
add esp, 4
mov edx, edi
mov ecx, ebx
push dword [ebp - 0xc]
call fcn.0065fa50
add esp, 4
mov dword [esi + 0x10], eax
lea eax, [edi*4]
push eax
call fcn.0067647e
xor edx, edx
mov dword [esi + 0x18], eax
add esp, 4
xor edi, edi
cmp dword [ebx + 4], edx
jle 0x66009c
nop dword [eax + eax]
mov eax, dword [ebx + 8]
cmp dword [eax + edx*4], 0
jle 0x660096
mov eax, dword [ebp - 0xc]
mov ecx, dword [eax + edi*4]
inc edi
mov eax, dword [esi + 0x18]
mov dword [eax + ecx*4], edx
inc edx
cmp edx, dword [ebx + 4]
jl 0x660080
push edi
call fcn.0067647e
xor ecx, ecx
mov dword [esi + 0x1c], eax
xor edi, edi
mov dword [ebp - 0x10], ecx
add esp, 4
mov dword [ebp - 0x18], edi
cmp dword [ebx + 4], ecx
jle 0x6600f0
nop word [eax + eax]
mov eax, dword [ebx + 8]
cmp dword [eax + ecx*4], 0
lea eax, [eax + ecx*4]
mov dword [ebp - 0x1c], eax
jle 0x6600e4
mov eax, dword [ebp - 0xc]
mov ecx, dword [esi + 0x1c]
mov edx, dword [eax + edi*4]
inc edi
mov eax, dword [ebp - 0x1c]
mov al, byte [eax]
mov byte [edx + ecx], al
mov ecx, dword [ebp - 0x10]
inc ecx
mov dword [ebp - 0x10], ecx
cmp ecx, dword [ebx + 4]
jl 0x6600c0
mov dword [ebp - 0x18], edi
mov eax, dword [esi + 8]
xor ecx, ecx
test eax, eax
je 0x660105
nop dword [eax]
inc ecx
shr eax, 1
jne 0x660100
lea eax, [ecx - 4]
mov ecx, 5
cmp eax, ecx
cmovl eax, ecx
mov dword [esi + 0x24], eax
cmp eax, 8
jle 0x660121
mov dword [esi + 0x24], 8
mov ecx, dword [esi + 0x24]
mov eax, 1
shl eax, cl
push 4
push eax
mov dword [ebp - 0x1c], eax
call fcn.00676fbc
add esp, 8
mov dword [esi + 0x20], eax
xor ebx, ebx
mov dword [esi + 0x28], 0
test edi, edi
jle 0x66022e
nop dword [eax]
mov ecx, dword [esi + 0x1c]
movsx eax, byte [ecx + ebx]
cmp dword [esi + 0x28], eax
jge 0x66015f
mov dword [esi + 0x28], eax
movsx ecx, byte [ecx + ebx]
mov dword [ebp - 8], ecx
cmp ecx, dword [esi + 0x24]
jg 0x660225
mov eax, dword [esi + 0x14]
mov ecx, dword [eax + ebx*4]
rol ecx, 0x10
mov edx, ecx
mov eax, ecx
shr edx, 8
shl eax, 8
xor edx, eax
shl ecx, 8
and edx, 0xff00ff
xor edx, ecx
mov ecx, edx
mov eax, edx
shr ecx, 4
shl eax, 4
xor ecx, eax
shl edx, 4
and ecx, 0xf0f0f0f
xor ecx, edx
mov edx, ecx
shr edx, 2
lea eax, [ecx*4]
xor edx, eax
lea eax, [ecx*4]
and edx, 0x33333333
xor edx, eax
mov ecx, edx
shr ecx, 1
lea eax, [edx + edx]
xor ecx, eax
lea eax, [edx + edx]
and ecx, 0x55555555
xor edx, edx
xor ecx, eax
mov dword [ebp - 0x10], edx
mov dword [ebp - 0x14], ecx
mov eax, 1
mov ecx, dword [esi + 0x24]
sub ecx, dword [ebp - 8]
shl eax, cl
test eax, eax
jle 0x660225
mov eax, dword [esi + 0x1c]
lea edi, [ebx + 1]
mov cl, byte [ebx + eax]
mov eax, dword [esi + 0x20]
shl edx, cl
or edx, dword [ebp - 0x14]
mov dword [eax + edx*4], edi
mov eax, dword [esi + 0x1c]
mov ecx, dword [esi + 0x24]
mov edx, dword [ebp - 0x10]
inc edx
movsx eax, byte [eax + ebx]
sub ecx, eax
mov dword [ebp - 0x10], edx
mov eax, 1
shl eax, cl
cmp edx, eax
jl 0x6601f0
mov edi, dword [ebp - 0x18]
inc ebx
cmp ebx, edi
jl 0x660150
mov ecx, 0x1f
mov dword [ebp - 8], 0
sub ecx, dword [esi + 0x24]
mov eax, 0xfffffffe
shl eax, cl
xor ebx, ebx
mov dword [ebp - 0x24], eax
xor eax, eax
mov dword [ebp - 0x14], ebx
mov dword [ebp - 0xc], eax
cmp dword [ebp - 0x1c], eax
jle 0x6603d7
nop word [eax + eax]
mov ecx, 0x20
sub ecx, dword [esi + 0x24]
shl eax, cl
mov ecx, eax
mov dword [ebp - 0x10], eax
rol ecx, 0x10
mov edx, ecx
mov dword [ebp - 0x28], ecx
mov eax, ecx
shr edx, 8
shl eax, 8
xor edx, eax
mov eax, ecx
shl eax, 8
and edx, 0xff00ff
xor edx, eax
mov ecx, edx
mov eax, edx
shr ecx, 4
shl eax, 4
xor ecx, eax
shl edx, 4
and ecx, 0xf0f0f0f
xor ecx, edx
mov edx, ecx
shr edx, 2
lea eax, [ecx*4]
xor edx, eax
lea eax, [ecx*4]
and edx, 0x33333333
xor edx, eax
mov ecx, edx
shr ecx, 1
lea eax, [edx + edx]
xor ecx, eax
lea eax, [edx + edx]
and ecx, 0x55555555
xor ecx, eax
mov eax, dword [esi + 0x20]
cmp dword [eax + ecx*4], 0
jne 0x6603c7
mov edx, dword [ebp - 8]
lea ecx, [edx + 1]
cmp ecx, edi
jge 0x660313
mov eax, dword [esi + 0x14]
mov ebx, dword [ebp - 0x10]
lea eax, [eax + edx*4]
add eax, 4
nop dword [eax]
cmp dword [eax], ebx
ja 0x66030d
inc ecx
inc edx
add eax, 4
cmp ecx, edi
jl 0x660300
mov ebx, dword [ebp - 0x14]
mov dword [ebp - 8], edx
cmp ebx, edi
jge 0x660337
mov eax, dword [esi + 0x14]
mov edx, dword [ebp - 0x24]
lea ecx, [eax + ebx*4]
mov eax, edx
and eax, dword [ecx]
cmp dword [ebp - 0x10], eax
jb 0x660331
inc ebx
add ecx, 4
cmp ebx, edi
jl 0x660320
mov edx, dword [ebp - 8]
mov dword [ebp - 0x14], ebx
mov ecx, dword [ebp - 0x28]
sub edi, ebx
cmp edx, 0x7fff
mov ebx, edx
mov edx, ecx
mov eax, 0x7fff
cmova ebx, eax
cmp edi, eax
cmova edi, eax
mov eax, ecx
shr edx, 8
or ebx, 0xffff0000
shl eax, 8
xor edx, eax
shl ecx, 8
and edx, 0xff00ff
shl ebx, 0xf
xor edx, ecx
or ebx, edi
mov ecx, edx
mov edi, dword [ebp - 0x18]
mov eax, edx
shr ecx, 4
shl eax, 4
xor ecx, eax
shl edx, 4
and ecx, 0xf0f0f0f
xor ecx, edx
mov edx, ecx
shr edx, 2
lea eax, [ecx*4]
xor edx, eax
lea eax, [ecx*4]
and edx, 0x33333333
xor edx, eax
mov ecx, edx
shr ecx, 1
lea eax, [edx + edx]
xor ecx, eax
lea eax, [edx + edx]
and ecx, 0x55555555
xor ecx, eax
mov eax, dword [esi + 0x20]
mov dword [eax + ecx*4], ebx
mov ebx, dword [ebp - 0x14]
mov eax, dword [ebp - 0xc]
inc eax
mov dword [ebp - 0xc], eax
cmp eax, dword [ebp - 0x1c]
jl 0x660260
xor eax, eax
lea esp, [ebp - 0x38]
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0066bc45
mov esp, ebp
pop ebp
ret