Function at 0x550240
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5621a0
mov eax, dword fs:[0]
push eax
sub esp, 0x68
push esi
push edi
mov eax, dword [0x58829c]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, dword [ebp + 0xc]
mov ecx, dword [ebp + 8]
mov eax, dword [edi]
mov dword [edi + 4], eax
mov eax, dword [ecx + 4]
sub eax, dword [ecx]
sar eax, 2
cmp eax, 3
jb 0x5507a8
lea ecx, [eax - 1]
mov esi, eax
mov dword [ebp - 0x18], ecx
lea ecx, [ebp - 0x48]
push esi
call fcn.0054fcc0
push esi
lea ecx, [ebp - 0x3c]
mov dword [ebp - 4], 0
call fcn.0054fcc0
push esi
lea ecx, [ebp - 0x54]
mov byte [ebp - 4], 1
call fcn.0054fcc0
push esi
lea ecx, [ebp - 0x30]
mov byte [ebp - 4], 2
call fcn.0054fcc0
mov eax, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x48]
mov edx, dword [ebp + 8]
add ecx, 4
mov esi, dword [ebp - 0x18]
mov dword [eax + 4], 0x3e800000
movss xmm7, dword [0x5776d0]
mov dword [ecx], 0x3e800000
movaps xmm4, xmm7
mov eax, dword [edx]
movss xmm6, dword [0x577570]
mov byte [ebp - 4], 3
movaps xmm3, xmm6
mov dword [ebp - 0x14], ecx
movss xmm0, dword [eax + 4]
subss xmm0, dword [eax + esi*4]
mov eax, dword [ebp - 0x54]
mulss xmm0, dword [0x577534]
movss dword [eax], xmm0
mov eax, dword [edx]
movss xmm2, dword [eax]
subss xmm2, dword [eax + esi*4 - 4]
mulss xmm2, dword [0x5776c0]
cmp esi, 1
jle 0x5503f3
mov edx, dword [ebp - 0x54]
mov eax, 4
mov edi, dword [ebp - 0x3c]
sub eax, edx
sub edi, dword [ebp - 0x48]
movss xmm5, dword [0x577ec0]
mov dword [ebp - 0x20], eax
lea eax, [esi - 1]
mov dword [ebp - 0x10], edx
mov dword [ebp - 0x24], edi
mov dword [ebp - 0x1c], eax
jmp 0x550360
movaps xmm0, xmm7
mov eax, dword [ebp + 8]
subss xmm0, dword [edi + ecx]
movaps xmm1, xmm6
lea edx, [ecx + 4]
divss xmm1, xmm0
movss dword [edi + edx], xmm1
movss xmm0, dword [ecx]
mov edi, dword [ebp - 0x10]
mulss xmm0, xmm1
mov ecx, dword [ebp - 0x10]
add ecx, 4
mov dword [ebp - 0x10], ecx
xorps xmm0, xmm5
movss dword [edx], xmm0
mov eax, dword [eax]
add eax, dword [ebp - 0x20]
dec dword [ebp - 0x1c]
movss xmm0, dword [eax + edi + 4]
subss xmm0, dword [eax + edi - 4]
mov eax, edi
mulss xmm0, dword [0x5776c0]
subss xmm0, dword [eax]
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x14], edx
mulss xmm0, xmm1
movss dword [ecx], xmm0
mov ecx, edx
movss xmm0, dword [eax]
mulss xmm0, xmm3
subss xmm4, xmm0
movss xmm0, dword [edi]
mov edi, dword [ebp - 0x24]
mulss xmm0, xmm3
mulss xmm3, dword [edi + eax]
subss xmm2, xmm0
xorps xmm3, xmm5
jne 0x550360
mov edi, dword [ebp + 0xc]
mov ecx, dword [ebp - 0x3c]
addss xmm3, xmm6
mov eax, dword [ebp - 0x48]
mov edx, dword [ebp - 0x54]
movss xmm0, dword [ecx + esi*4]
addss xmm0, dword [eax + esi*4]
mov eax, dword [ebp - 0x30]
mulss xmm0, xmm3
mulss xmm3, dword [edx + esi*4 - 4]
subss xmm4, xmm0
subss xmm2, xmm3
movss dword [edx + esi*4], xmm2
divss xmm2, xmm4
movss dword [eax + esi*4], xmm2
movss xmm1, dword [ecx + esi*4]
mov ecx, dword [ebp - 0x48]
movss xmm0, dword [edx + esi*4 - 4]
lea edx, [esi - 2]
addss xmm1, dword [ecx + esi*4]
mulss xmm1, xmm2
subss xmm0, xmm1
movss dword [eax + esi*4 - 4], xmm0
test edx, edx
js 0x5504bc
mov edi, dword [ebp - 0x30]
lea ecx, [eax + edx*4]
sub edi, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0x24], edi
mov edi, dword [ebp - 0x48]
sub edi, dword [ebp - 0x3c]
mov dword [ebp - 0x1c], edi
lea eax, [eax + edx*4]
mov edi, dword [ebp - 0x54]
add eax, 4
sub edi, dword [ebp - 0x30]
mov dword [ebp - 0x20], edi
lea esp, [esp]
mov edi, dword [ebp - 0x24]
movss xmm0, dword [edi + eax]
mov edi, dword [ebp - 0x20]
mulss xmm0, dword [eax]
movss xmm1, dword [edi + ecx]
mov edi, dword [ebp - 0x1c]
subss xmm1, xmm0
movss xmm0, dword [edi + eax]
sub eax, 4
mov edi, dword [ebp - 0x30]
mulss xmm0, dword [edi + esi*4]
mov edi, dword [ebp + 0xc]
subss xmm1, xmm0
movss dword [ecx], xmm1
sub ecx, 4
dec edx
jns 0x550480
mov edx, dword [ebp - 0x18]
xor ecx, ecx
movss xmm6, dword [0x577620]
mov esi, 0xfffffff
mov dword [ebp + 0xc], ecx
test edx, edx
jle 0x55064d
lea esp, [esp]
mov eax, dword [ebp + 8]
mov edx, dword [ebp - 0x30]
mov eax, dword [eax]
movss xmm4, dword [edx + ecx*4]
movaps xmm0, xmm4
movss dword [ebp - 0x60], xmm4
mulss xmm0, xmm6
movss xmm5, dword [eax + ecx*4]
movss xmm1, dword [eax + ecx*4 + 4]
subss xmm1, xmm5
movss dword [ebp - 0x64], xmm5
subss xmm5, dword [eax + ecx*4 + 4]
lea eax, [ebp - 0x64]
mulss xmm1, dword [0x5776c0]
mulss xmm5, xmm6
subss xmm1, xmm0
addss xmm5, xmm4
subss xmm1, dword [edx + ecx*4 + 4]
addss xmm5, dword [edx + ecx*4 + 4]
mov ecx, dword [edi + 4]
movss dword [ebp - 0x5c], xmm1
movss dword [ebp - 0x58], xmm5
cmp eax, ecx
jae 0x5505d0
mov eax, dword [edi]
lea edx, [ebp - 0x64]
cmp eax, edx
ja 0x5505d0
mov esi, edx
mov edx, dword [edi + 8]
sub esi, eax
cmp ecx, edx
jne 0x5505b5
mov eax, edx
sub eax, ecx
sar eax, 4
cmp eax, 1
jae 0x5505b5
sub ecx, dword [edi]
mov eax, 0xfffffff
sar ecx, 4
sub eax, ecx
cmp eax, 1
jb 0x5506db
sub edx, dword [edi]
inc ecx
sar edx, 4
mov eax, 0xfffffff
mov dword [ebp - 0x24], ecx
mov ecx, edx
shr ecx, 1
sub eax, ecx
cmp eax, edx
jae 0x55059c
xor edx, edx
jmp 0x55059e
add edx, ecx
cmp edx, dword [ebp - 0x24]
mov ecx, edi
cmovb edx, dword [ebp - 0x24]
push edx
call fcn.00551210
movss xmm6, dword [0x577620]
mov eax, dword [edi + 4]
and esi, 0xfffffff0
add esi, dword [edi]
test eax, eax
je 0x5505c9
movdqu xmm0, xmmword [esi]
movdqu xmmword [eax], xmm0
mov esi, 0xfffffff
jmp 0x550637
mov edx, dword [edi + 8]
cmp ecx, edx
jne 0x550627
mov eax, edx
sub eax, ecx
sar eax, 4
cmp eax, 1
jae 0x550627
sub ecx, dword [edi]
mov eax, esi
sar ecx, 4
sub eax, ecx
cmp eax, 1
jb 0x5506db
sub edx, dword [edi]
inc ecx
sar edx, 4
mov eax, esi
mov dword [ebp - 0x24], ecx
mov ecx, edx
shr ecx, 1
sub eax, ecx
cmp eax, edx
jae 0x55060e
xor edx, edx
jmp 0x550610
add edx, ecx
cmp edx, dword [ebp - 0x24]
mov ecx, edi
cmovb edx, dword [ebp - 0x24]
push edx
call fcn.00551210
movss xmm6, dword [0x577620]
mov eax, dword [edi + 4]
test eax, eax
je 0x550637
movdqu xmm0, xmmword [ebp - 0x64]
movdqu xmmword [eax], xmm0
mov ecx, dword [ebp + 0xc]
add dword [edi + 4], 0x10
inc ecx
mov edx, dword [ebp - 0x18]
mov dword [ebp + 0xc], ecx
cmp ecx, edx
jl 0x5504e0
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 0x30]
mov eax, dword [eax]
movss xmm4, dword [ecx + edx*4]
movaps xmm0, xmm4
movss dword [ebp - 0x70], xmm4
mulss xmm0, xmm6
movss xmm5, dword [eax + edx*4]
movss xmm1, dword [eax]
subss xmm1, xmm5
movss dword [ebp - 0x74], xmm5
subss xmm5, dword [eax]
lea eax, [ebp - 0x74]
mulss xmm1, dword [0x5776c0]
mulss xmm5, xmm6
subss xmm1, xmm0
addss xmm5, xmm4
subss xmm1, dword [ecx]
addss xmm5, dword [ecx]
mov ecx, dword [edi + 4]
movss dword [ebp - 0x6c], xmm1
movss dword [ebp - 0x68], xmm5
cmp eax, ecx
jae 0x550722
mov edx, dword [edi]
cmp edx, eax
ja 0x550722
sub eax, edx
mov edx, dword [edi + 8]
sar eax, 4
mov dword [ebp + 8], eax
cmp ecx, edx
jne 0x55070c
mov eax, edx
sub eax, ecx
sar eax, 4
cmp eax, 1
jae 0x550709
sub ecx, dword [edi]
mov eax, esi
sar ecx, 4
sub eax, ecx
cmp eax, 1
jae 0x5506e6
push 0x566380
call dword [sym.imp.msvcp120.dll_void___cdecl_std::_Xlength_error_char_const__]
sub edx, dword [edi]
inc ecx
sar edx, 4
mov eax, edx
shr eax, 1
sub esi, eax
cmp esi, edx
jae 0x5506fa
xor edx, edx
jmp 0x5506fc
add edx, eax
cmp edx, ecx
cmovb edx, ecx
mov ecx, edi
push edx
call fcn.00551210
mov eax, dword [ebp + 8]
mov ecx, dword [edi + 4]
shl eax, 4
add eax, dword [edi]
test ecx, ecx
je 0x550781
movdqu xmm0, xmmword [eax]
movdqu xmmword [ecx], xmm0
jmp 0x550781
mov edx, dword [edi + 8]
cmp ecx, edx
jne 0x550771
mov eax, edx
sub eax, ecx
sar eax, 4
cmp eax, 1
jae 0x550771
sub ecx, dword [edi]
mov eax, esi
sar ecx, 4
sub eax, ecx
cmp eax, 1
jae 0x55074e
push 0x566380
call dword [sym.imp.msvcp120.dll_void___cdecl_std::_Xlength_error_char_const__]
sub edx, dword [edi]
inc ecx
sar edx, 4
mov eax, edx
shr eax, 1
sub esi, eax
cmp esi, edx
jae 0x550762
xor edx, edx
jmp 0x550764
add edx, eax
cmp edx, ecx
cmovb edx, ecx
mov ecx, edi
push edx
call fcn.00551210
mov eax, dword [edi + 4]
test eax, eax
je 0x550781
movdqu xmm0, xmmword [ebp - 0x74]
movdqu xmmword [eax], xmm0
push dword [ebp - 0x30]
add dword [edi + 4], 0x10
call sub.msvcr120.dll_void___cdecl_operator_delete_void__
push dword [ebp - 0x54]
call sub.msvcr120.dll_void___cdecl_operator_delete_void__
push dword [ebp - 0x3c]
call sub.msvcr120.dll_void___cdecl_operator_delete_void__
push dword [ebp - 0x48]
call sub.msvcr120.dll_void___cdecl_operator_delete_void__
add esp, 0x10
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 8