Function at 0x10147740
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 0x10147890
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 + 0x103c1260]
mov word [esp + ecx*2 + 0x3c], ax
inc ecx
cmp ecx, 3
jl 0x101477b0
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 0x101477a4
mov ecx, dword [esp + 0x24]
add edi, 4
sub ecx, 1
mov dword [esp + 0x24], ecx
jne 0x10147790
mov ecx, dword [ebx + 0x58]
xor edx, edx
xor eax, eax
mov dword [esp + 0x30], edx
cmp ax, word [ecx + 0x1c]
jae 0x10147c08
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 0x10147bf0
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 0x10147920
movss xmm1, dword [esp + 0x68]
movss xmm0, dword [esp + 0x80]
maxss xmm1, dword [esp + 0x6c]
maxss xmm0, dword [esp + 0x84]
comiss xmm0, xmm1
ja 0x10147a6b
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 0x10147aa0
cmp edx, ebx
cmovg ebx, edx
jmp 0x10147aa7
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 0x10147b92
cmp dword [esp + esi + 0x88], ebx
jg 0x10147b92
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 0x10147b8e
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 0x10147b86
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 0x10147b86
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 0x10147b30
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 0x10147ae0
mov ecx, dword [esp + 0x14]
add eax, 4
inc ecx
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], ecx
cmp ecx, 2
jl 0x10147ac0
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 0x10147910
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 0x101478c0
mov eax, dword [ebx + 0x58]
xor ecx, ecx
xor edx, edx
mov dword [esp + 0x28], ecx
cmp dx, word [eax + 0x1c]
jae 0x10147ebf
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 0x10147eab
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 0x10147c60
mov ax, word [esp + 0x18]
cmp al, ah
je 0x10147ca9
cmp ah, al
setg cl
lea ecx, [ecx*2 + 3]
jmp 0x10147e78
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 0x10147c52
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 0x10147c21
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x98
ret