Function at 0x10141ef0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x98
push ebx
mov ebx, ecx
mov dword [esp + 0x4c], 0xffffffff
push ebp
push esi
push edi
mov ecx, dword [ebx + 4]
mov eax, ecx
neg eax
mov dword [esp + 0x50], ecx
mov dword [esp + 0x4c], eax
mov dword [esp + 0x60], eax
mov eax, dword [ebx]
mov dword [esp + 0x64], ecx
imul eax, ecx
lea ecx, [ebx + 0x10]
mov dword [esp + 0x48], ecx
mov edi, ecx
mov ecx, 2
mov dword [esp + 0x38], ebx
mov dword [esp + 0x5c], 1
mov dword [esp + 0x24], ecx
nop
mov dword [esp + 0x14], 0
test eax, eax
jle 0x10142040
xor esi, esi
xor ebp, ebp
mov edx, dword [edi - 8]
xor ecx, ecx
add edx, ebp
nop dword [eax + eax]
movzx eax, word [edx]
lea edx, [edx + 2]
cvttss2si eax, dword [eax*4 + 0x10401228]
mov word [esp + ecx*2 + 0x3c], ax
inc ecx
cmp ecx, 3
jl 0x10141f60
movzx eax, word [esp + 0x3c]
add ebp, 6
movss xmm0, dword [ebx + 0x38]
movd xmm4, eax
movzx eax, word [esp + 0x3e]
cvtdq2ps xmm4, xmm4
movd xmm2, eax
movzx eax, word [esp + 0x40]
movaps xmm1, xmm4
mulss xmm1, dword [ebx + 0x34]
cvtdq2ps xmm2, xmm2
movd xmm3, eax
mov eax, dword [edi]
mulss xmm0, xmm2
cvtdq2ps xmm3, xmm3
addss xmm1, xmm0
movss xmm0, dword [ebx + 0x3c]
mulss xmm0, xmm3
addss xmm1, xmm0
cvttss2si ecx, xmm1
mov dword [esi + eax], ecx
movss xmm1, dword [ebx + 0x44]
movss xmm0, dword [ebx + 0x40]
mov eax, dword [edi]
mulss xmm1, xmm2
mulss xmm0, xmm4
addss xmm1, xmm0
movss xmm0, dword [ebx + 0x48]
mulss xmm0, xmm3
addss xmm1, xmm0
cvttss2si ecx, xmm1
mov dword [esi + eax + 4], ecx
movss xmm1, dword [ebx + 0x50]
movss xmm0, dword [ebx + 0x4c]
mulss xmm3, dword [ebx + 0x54]
mov eax, dword [edi]
mulss xmm1, xmm2
mulss xmm0, xmm4
addss xmm1, xmm0
addss xmm1, xmm3
cvttss2si ecx, xmm1
mov dword [esi + eax + 8], ecx
add esi, 0xc
mov eax, dword [ebx]
imul eax, dword [ebx + 4]
mov ecx, dword [esp + 0x14]
inc ecx
mov dword [esp + 0x14], ecx
cmp ecx, eax
jl 0x10141f54
mov ecx, dword [esp + 0x24]
add edi, 4
sub ecx, 1
mov dword [esp + 0x24], ecx
jne 0x10141f40
mov ecx, dword [ebx + 0x58]
xor edx, edx
xor eax, eax
mov dword [esp + 0x30], edx
cmp ax, word [ecx + 0x1c]
jae 0x101423b8
nop word [eax + eax]
add edx, 4
mov dword [esp + 0x2c], 0
imul edx, dword [ebx + 4]
xor eax, eax
add edx, 4
mov dword [esp + 0x18], edx
cmp ax, word [ecx + 0x1e]
jae 0x101423a0
mov eax, dword [esp + 0x4c]
lea ecx, [edx + edx*2]
lea eax, [eax + eax*2]
shl eax, 2
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x50]
lea eax, [eax + eax*2]
shl eax, 2
mov dword [esp + 0x44], eax
lea eax, [ebx + 0x1c]
shl ecx, 2
mov dword [esp + 0x54], eax
mov dword [esp + 0x20], ecx
nop
mov eax, dword [esp + 0x48]
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], 0
mov edi, dword [eax]
add edi, ecx
mov esi, dword [edi]
mov edx, esi
sub edx, dword [edi - 0xc]
mov ebp, dword [edi + 8]
mov ecx, edx
mov ebx, dword [edi + 4]
sar ecx, 0x1f
mov eax, ecx
xor eax, edx
mov edx, dword [esp + 0x10]
sub eax, ecx
mov ecx, ebp
sub ecx, dword [edi - 4]
imul ecx, ecx
movd xmm0, eax
mov eax, ebx
sub eax, dword [edi - 8]
imul eax, eax
cvtdq2ps xmm0, xmm0
add eax, ecx
mov dword [esp + edx + 0x88], eax
movss dword [esp + edx + 0x68], xmm0
mov edx, esi
sub edx, dword [edi + 0xc]
mov ecx, edx
sar ecx, 0x1f
mov eax, ecx
xor eax, edx
mov edx, dword [esp + 0x10]
sub eax, ecx
mov ecx, ebp
sub ecx, dword [edi + 0x14]
imul ecx, ecx
movd xmm0, eax
mov eax, ebx
sub eax, dword [edi + 0x10]
imul eax, eax
cvtdq2ps xmm0, xmm0
add eax, ecx
mov dword [esp + edx + 0x8c], eax
mov eax, dword [esp + 0x34]
movss dword [esp + edx + 0x6c], xmm0
mov edx, esi
sub edx, dword [eax + edi]
mov ecx, edx
sar ecx, 0x1f
mov eax, ecx
xor eax, edx
mov edx, dword [esp + 0x10]
sub eax, ecx
mov ecx, ebp
movd xmm0, eax
mov eax, dword [esp + 0x34]
cvtdq2ps xmm0, xmm0
sub ecx, dword [eax + edi + 8]
mov eax, ebx
imul ecx, ecx
movss dword [esp + edx + 0x70], xmm0
mov edx, dword [esp + 0x34]
sub eax, dword [edx + edi + 4]
mov edx, dword [esp + 0x10]
imul eax, eax
add eax, ecx
mov dword [esp + edx + 0x90], eax
mov eax, dword [esp + 0x44]
sub esi, dword [eax + edi]
mov ecx, esi
sar ecx, 0x1f
mov eax, ecx
xor eax, esi
sub eax, ecx
movd xmm0, eax
mov eax, dword [esp + 0x44]
cvtdq2ps xmm0, xmm0
sub ebp, dword [eax + edi + 8]
sub ebx, dword [eax + edi + 4]
imul ebp, ebp
movss dword [esp + edx + 0x74], xmm0
imul ebx, ebx
mov eax, dword [esp + 0x14]
add ebp, ebx
mov ecx, dword [esp + 0x20]
add eax, 4
mov dword [esp + edx + 0x94], ebp
add edx, 0x10
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], edx
cmp edx, 0x20
jl 0x101420d0
movss xmm1, dword [esp + 0x68]
movss xmm0, dword [esp + 0x80]
maxss xmm1, dword [esp + 0x6c]
maxss xmm0, dword [esp + 0x84]
comiss xmm0, xmm1
ja 0x1014221b
movaps xmm1, xmm0
mov ebx, dword [esp + 0x8c]
mov ecx, ebx
mov edx, dword [esp + 0x88]
cmp edx, ebx
mov esi, dword [esp + 0xa4]
mov eax, esi
mov edi, dword [esp + 0xa0]
cmovg ecx, edx
cmp edi, esi
cmovg eax, edi
cmp ecx, eax
jge 0x10142250
cmp edx, ebx
cmovg ebx, edx
jmp 0x10142257
cmp edi, esi
mov ebx, esi
cmovg ebx, edi
mov eax, dword [esp + 0x54]
xor ecx, ecx
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], eax
nop dword [eax]
mov edi, dword [eax - 0xc]
xor ebp, ebp
add edi, dword [esp + 0x20]
mov esi, ecx
shl esi, 4
mov dword [esp + 0x24], ebp
mov dword [esp + 0x28], esi
nop word [eax + eax]
comiss xmm1, dword [esp + esi + 0x68]
mov edx, dword [esp + 0x18]
jb 0x10142342
cmp dword [esp + esi + 0x88], ebx
jg 0x10142342
mov eax, dword [eax]
mov ecx, dword [esp + ebp*4 + 0x58]
add eax, ecx
inc byte [eax + edx]
mov eax, ebp
shr eax, 1
cmp eax, dword [esp + 0x14]
jne 0x1014233e
lea eax, [ecx + ecx*2]
mov ebx, 2
shl eax, 2
lea ebp, [ecx + ecx]
mov dword [esp + 0x3c], eax
lea eax, [ecx + ecx*2]
lea esi, [edi + eax*8]
nop dword [eax]
mov edx, dword [edi]
sub edx, dword [esi]
mov ecx, edx
sar ecx, 0x1f
mov eax, ecx
xor eax, edx
mov edx, dword [esp + 0x18]
sub eax, ecx
movd xmm0, eax
cvtdq2ps xmm0, xmm0
comiss xmm1, xmm0
jbe 0x10142336
mov ecx, dword [edi + 8]
sub ecx, dword [esi + 8]
mov eax, dword [edi + 4]
sub eax, dword [esi + 4]
imul ecx, ecx
imul eax, eax
add ecx, eax
cmp ecx, dword [esp + 0x1c]
jge 0x10142336
mov eax, dword [esp + 0x10]
inc ebx
add esi, dword [esp + 0x3c]
mov eax, dword [eax]
add eax, ebp
inc byte [eax + edx]
mov eax, dword [esp + 0x24]
add ebp, dword [esp + eax*4 + 0x58]
cmp ebx, 4
jl 0x101422e0
mov ebp, dword [esp + 0x24]
mov esi, dword [esp + 0x28]
mov eax, dword [esp + 0x10]
mov ebx, dword [esp + 0x1c]
inc ebp
add esi, 4
mov dword [esp + 0x24], ebp
mov dword [esp + 0x28], esi
cmp ebp, 4
jl 0x10142290
mov ecx, dword [esp + 0x14]
add eax, 4
inc ecx
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], ecx
cmp ecx, 2
jl 0x10142270
mov ebx, dword [esp + 0x38]
inc edx
mov ebp, dword [esp + 0x2c]
mov ecx, dword [esp + 0x20]
inc ebp
add ecx, 0xc
mov dword [esp + 0x2c], ebp
mov eax, dword [ebx + 0x58]
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ecx
movzx eax, word [eax + 0x1e]
cmp ebp, eax
jl 0x101420c0
mov ecx, dword [ebx + 0x58]
mov edx, dword [esp + 0x30]
inc edx
mov dword [esp + 0x30], edx
movzx eax, word [ecx + 0x1c]
cmp edx, eax
jl 0x10142070
mov eax, dword [ebx + 0x58]
xor ecx, ecx
xor edx, edx
mov dword [esp + 0x28], ecx
cmp dx, word [eax + 0x1c]
jae 0x1014266f
movzx edx, word [eax + 0x1e]
lea ebp, [ecx + 4]
mov dword [esp + 0x2c], 0
imul ebp, dword [ebx + 4]
add ebp, 4
mov dword [esp + 0x20], ebp
test edx, edx
je 0x1014265b
lea eax, [ebp*2]
add eax, ebp
lea ecx, [ebx + 0x1c]
shl eax, 2
mov dword [esp + 0x1c], eax
mov edi, dword [ebx + 4]
xor edx, edx
mov esi, edi
mov ebx, ecx
not esi
nop dword [eax]
mov ecx, dword [ebx]
lea ebx, [ebx + 4]
add ecx, ebp
mov al, byte [edi + ecx - 1]
add al, byte [edi + ecx + 1]
add al, byte [esi + ecx + 2]
add al, byte [esi + ecx + 1]
add al, byte [ecx - 1]
add al, byte [ecx + 1]
add al, byte [edi + ecx]
add al, byte [ecx]
add al, byte [esi + ecx]
mov byte [esp + edx + 0x18], al
inc edx
cmp edx, 2
jl 0x10142410
mov ax, word [esp + 0x18]
cmp al, ah
je 0x10142459
cmp ah, al
setg cl
lea ecx, [ecx*2 + 3]
jmp 0x10142628
mov ebx, dword [esp + 0x38]
mov edx, dword [esp + 0x1c]
mov ebp, dword [ebx + 0x14]
mov ebx, dword [ebx + 4]
add edx, ebp
mov ecx, edx
mov dword [esp + 0x30], ebp
mov ebp, dword [edx]
lea edi, [ebx + ebx*2]
mov esi, dword [edx + 8]
add ebp, ebp
mov eax, dword [edx + 4]
add esi, esi
shl edi, 2
add eax, eax
sub ecx, edi
mov dword [esp + 0x14], edi
sub eax, dword [edi + edx + 4]
sub esi, dword [edi + edx + 8]
sub ebp, dword [edi + edx]
sub eax, dword [ecx + 4]
mov edx, ebp
sub edx, dword [ecx]
sub esi, dword [ecx + 8]
imul eax, eax
mov ecx, dword [esp + 0x14]
imul edx, edx
imul esi, esi
mov dword [esp + 0x10], ebp
mov ebp, dword [esp + 0x14]
add edx, eax
mov eax, dword [esp + 0x20]
sub eax, ebx
add edx, esi
mov dword [esp + 0x10], edx
lea eax, [eax + eax*2]
lea eax, [eax*4]
add eax, dword [esp + 0x30]
mov esi, eax
sub esi, edi
mov edi, dword [eax + 8]
mov edx, dword [eax + 4]
add edi, edi
sub edi, dword [ecx + eax + 8]
add edx, edx
sub edx, dword [ecx + eax + 4]
mov ecx, dword [eax]
sub edi, dword [esi + 8]
add ecx, ecx
sub ecx, dword [eax + ebp]
sub ecx, dword [esi]
sub edx, dword [esi + 4]
imul edi, edi
imul ecx, ecx
imul edx, edx
lea eax, [ecx + edi]
add eax, edx
cdq
sub eax, edx
sar eax, 1
add dword [esp + 0x10], eax
mov eax, dword [esp + 0x20]
add eax, ebx
mov ebx, ebp
lea eax, [eax + eax*2]
lea edx, [eax*4]
add edx, dword [esp + 0x30]
mov esi, edx
sub esi, ebx
mov edi, dword [edx + 8]
mov ecx, dword [edx + 4]
add edi, edi
mov eax, dword [edx]
add ecx, ecx
sub edi, dword [ebx + edx + 8]
add eax, eax
sub ecx, dword [ebx + edx + 4]
sub eax, dword [ebx + edx]
sub edi, dword [esi + 8]
sub ecx, dword [esi + 4]
sub eax, dword [esi]
mov ebp, dword [esp + 0x1c]
imul eax, eax
mov ebx, dword [esp + 0x10]
imul ecx, ecx
imul edi, edi
add eax, ecx
add eax, edi
cdq
sub eax, edx
sar eax, 1
add ebx, eax
mov eax, dword [esp + 0x48]
mov esi, dword [eax]
mov ecx, dword [esi + ebp + 8]
mov edi, dword [esi + ebp + 4]
add ecx, ecx
sub ecx, dword [esi + ebp + 0x14]
add edi, edi
sub ecx, dword [esi + ebp - 4]
sub edi, dword [esi + ebp + 0x10]
sub edi, dword [esi + ebp - 8]
mov eax, dword [esi + ebp]
add eax, eax
mov edx, dword [esi + ebp - 4]
sub eax, dword [esi + ebp - 0xc]
add edx, edx
sub eax, dword [esi + ebp + 0xc]
sub edx, dword [esi + ebp + 8]
sub edx, dword [esi + ebp - 0x10]
imul eax, eax
imul ecx, ecx
imul edi, edi
imul edx, edx
add edi, ecx
mov ecx, dword [esi + ebp - 8]
add edi, eax
add ecx, ecx
sub ecx, dword [esi + ebp + 4]
sub ecx, dword [esi + ebp - 0x14]
mov eax, dword [esi + ebp - 0xc]
add eax, eax
imul ecx, ecx
sub eax, dword [esi + ebp - 0x18]
sub eax, dword [esi + ebp]
imul eax, eax
add eax, ecx
mov ecx, dword [esi + ebp + 0x10]
add eax, edx
add ecx, ecx
sub ecx, dword [esi + ebp + 0x1c]
sub ecx, dword [esi + ebp + 4]
cdq
sub eax, edx
imul ecx, ecx
mov edx, dword [esi + ebp + 0x14]
sar eax, 1
add edx, edx
sub edx, dword [esi + ebp + 0x20]
add edi, eax
mov eax, dword [esi + ebp + 0xc]
sub edx, dword [esi + ebp + 8]
add eax, eax
sub eax, dword [esi + ebp]
sub eax, dword [esi + ebp + 0x18]
imul eax, eax
mov ebp, dword [esp + 0x20]
imul edx, edx
add eax, ecx
add eax, edx
cdq
sub eax, edx
sar eax, 1
add eax, edi
cmp ebx, eax
setle al
lea ecx, [eax*2 + 2]
mov ebx, dword [esp + 0x38]
add dword [esp + 0x1c], 0xc
mov eax, dword [ebx + 0x18]
or byte [eax + ebp], cl
inc ebp
mov eax, dword [ebx + 0x58]
mov ecx, dword [esp + 0x2c]
inc ecx
mov dword [esp + 0x20], ebp
mov dword [esp + 0x2c], ecx
movzx edx, word [eax + 0x1e]
cmp ecx, edx
lea ecx, [ebx + 0x1c]
jl 0x10142402
mov ecx, dword [esp + 0x28]
mov eax, dword [ebx + 0x58]
inc ecx
mov dword [esp + 0x28], ecx
movzx eax, word [eax + 0x1c]
cmp ecx, eax
jl 0x101423d1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x98
ret