Function at 0x437c40
Capabilities:
Encode data using xor

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff0
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
sub esp, 0x308
mov eax, dword [section..data]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, edx
mov dword [ebp - 0x2b0], ecx
push esi
push edi
mov edx, 0x4f
mov dword [ebp - 0x2a0], eax
mov ecx, eax
call fcn.004378e0
push 0x80
lea eax, [ebp - 0x218]
movsd qword [ebp - 0x2d0], xmm0
push 0
push eax
call fcn.00458760
mov ecx, dword [ebp - 0x2a0]
lea edi, [ebp - 0x218]
add esp, 0xc
mov esi, 0x4e
lea eax, [ecx + 4]
mov dword [ebp - 0x29c], eax
nop word [eax + eax]
push esi
mov edx, eax
call fcn.00437a40
addsd xmm0, qword [edi]
mov eax, dword [ebp - 0x29c]
dec esi
mov ecx, dword [ebp - 0x2a0]
add eax, 4
add esp, 4
mov dword [ebp - 0x29c], eax
movsd qword [edi], xmm0
add edi, 8
cmp esi, 0x3e
jg 0x437cc0
movsd xmm0, qword [ebp - 0x2d0]
lea esi, [ebp - 0x218]
mulsd xmm0, qword [0x92b590]
lea edi, [ebp - 0x298]
mov eax, dword [ebp - 0x2a0]
mov ecx, 0x20
rep movsd dword es:[edi], dword [esi]
mov esi, eax
mov dword [ebp - 0x2ac], 0
addsd xmm0, qword [0x92b3d0]
lea ecx, [eax + 0x138]
mov dword [ebp - 0x2a4], esi
mov edi, 0xfffffff0
mov dword [ebp - 0x2a8], ecx
xor edx, edx
mov dword [ebp - 0x29c], edi
movsd qword [ebp - 0x110], xmm0
movsd qword [ebp - 0x198], xmm0
movsd xmm0, qword [0x92b588]
movsd qword [ebp - 0x2c8], xmm0
nop dword [eax]
movss xmm6, dword [esi]
xor eax, eax
movss xmm7, dword [ecx]
cvtps2pd xmm4, xmm6
cvtps2pd xmm5, xmm7
cmp edi, 0xfffffff0
jle 0x437e14
add ecx, 4
add esi, 0xfffffffc
nop
movss xmm3, dword [esi]
movaps xmm0, xmm6
movsd xmm1, qword [ebp + eax*8 - 0x218]
sub esi, 4
movss xmm2, dword [ecx]
add ecx, 4
mulss xmm0, xmm3
cvtss2sd xmm0, xmm0
subsd xmm1, xmm0
movaps xmm0, xmm7
mulss xmm0, xmm2
cvtss2sd xmm0, xmm0
movsd qword [ebp + eax*8 - 0x218], xmm1
movsd xmm1, qword [ebp + eax*8 - 0x298]
subsd xmm1, xmm0
cvtps2pd xmm0, xmm3
movsd qword [ebp + eax*8 - 0x298], xmm1
movsd xmm1, qword [ebp + eax*8 - 0x88]
inc eax
mulsd xmm0, xmm1
addsd xmm4, xmm0
cvtps2pd xmm0, xmm2
mulsd xmm0, xmm1
addsd xmm5, xmm0
cmp eax, edx
jl 0x437d90
mov esi, dword [ebp - 0x2a4]
xor eax, eax
mov ecx, dword [ebp - 0x2a8]
jmp 0x437e20
xor eax, eax
cmp edi, 0xfffffff0
jl 0x437e6d
nop dword [eax + eax]
movss xmm1, dword [esi]
sub esi, 4
movsd xmm0, qword [ebp + eax*8 - 0x110]
cvtps2pd xmm1, xmm1
mulsd xmm1, xmm4
subsd xmm0, xmm1
movss xmm1, dword [ecx]
cvtps2pd xmm1, xmm1
add ecx, 4
movsd qword [ebp + eax*8 - 0x110], xmm0
movsd xmm0, qword [ebp + eax*8 - 0x198]
mulsd xmm1, xmm5
subsd xmm0, xmm1
movsd qword [ebp + eax*8 - 0x198], xmm0
inc eax
cmp eax, edx
jle 0x437e20
movsd xmm5, qword [ebp + edx*8 - 0x218]
xor ecx, ecx
movsd xmm6, qword [ebp + edx*8 - 0x298]
test edx, edx
jle 0x437fe0
cmp edx, 4
jb 0x437f74
mov eax, edx
and eax, 0x80000003
jns 0x437ea0
dec eax
or eax, 0xfffffffc
inc eax
mov esi, edx
xorps xmm7, xmm7
sub esi, eax
movaps xmmword [ebp - 0x2c0], xmm7
mov eax, edi
xorps xmm4, xmm4
xorps xmm3, xmm3
lea edi, [ebp - 0x88]
nop dword [eax]
movups xmm2, xmmword [edi + ecx*8]
movsd xmm1, qword [ebp + eax - 0x290]
movhpd xmm1, qword [ebp + eax - 0x298]
mulpd xmm1, xmm2
addpd xmm7, xmm1
movsd xmm1, qword [ebp + eax - 0x210]
movhpd xmm1, qword [ebp + eax - 0x218]
mulpd xmm1, xmm2
movups xmm2, xmmword [ebp + ecx*8 - 0x78]
add ecx, 4
addpd xmm1, xmmword [ebp - 0x2c0]
movaps xmmword [ebp - 0x2c0], xmm1
movsd xmm1, qword [ebp + eax - 0x2a0]
movhpd xmm1, qword [ebp + eax - 0x2a8]
mulpd xmm1, xmm2
addpd xmm4, xmm1
movsd xmm1, qword [ebp + eax - 0x220]
movhpd xmm1, qword [ebp + eax - 0x228]
sub eax, 0x20
mulpd xmm1, xmm2
addpd xmm3, xmm1
cmp ecx, esi
jl 0x437ec0
addpd xmm3, xmmword [ebp - 0x2c0]
addpd xmm4, xmm7
movaps xmm0, xmm3
unpckhpd xmm0, xmm3
addsd xmm3, xmm0
movaps xmm0, xmm4
unpckhpd xmm0, xmm4
addsd xmm4, xmm0
addsd xmm6, xmm3
addsd xmm5, xmm4
cmp ecx, edx
jge 0x437fe0
mov eax, edx
sub eax, ecx
lea eax, [eax*8 - 8]
movsd xmm1, qword [ebp + ecx*8 - 0x88]
inc ecx
movaps xmm0, xmm1
mulsd xmm1, qword [ebp + eax - 0x218]
mulsd xmm0, qword [ebp + eax - 0x298]
sub eax, 8
addsd xmm1, xmm6
addsd xmm5, xmm0
movaps xmm6, xmm1
cmp ecx, edx
jl 0x437f83
movsd qword [ebp + edx*8 - 0x108], xmm5
xor ecx, ecx
movsd xmm7, qword [ebp - 0x110]
movaps xmm5, xmm1
movsd qword [ebp + edx*8 - 0x190], xmm6
movaps xmm4, xmm7
movsd xmm3, qword [ebp - 0x198]
jmp 0x438012
movsd qword [ebp + edx*8 - 0x108], xmm5
xor ecx, ecx
movsd xmm7, qword [ebp - 0x110]
movaps xmm5, xmm6
movsd qword [ebp + edx*8 - 0x190], xmm6
movaps xmm4, xmm7
movsd xmm3, qword [ebp - 0x198]
test edx, edx
jle 0x4381b9
cmp edx, 4
jb 0x43816f
mov eax, edx
xor ecx, ecx
and eax, 0x80000003
jns 0x43802b
dec eax
or eax, 0xfffffffc
inc eax
mov esi, edx
xorps xmm0, xmm0
sub esi, eax
movaps xmmword [ebp - 0x2f0], xmm0
mov dword [ebp - 0x2b4], esi
lea eax, [ebp + edx*8 - 0x1a8]
xor esi, esi
movaps xmmword [ebp - 0x2e0], xmm0
movups xmmword [ebp - 0x300], xmm0
xor edi, edi
xorps xmm5, xmm5
xorps xmm3, xmm3
xorps xmm4, xmm4
movups xmm2, xmmword [ebp + esi - 0x88]
add esi, 0x20
movups xmm0, xmmword [ebp + edi - 0x190]
add edi, 0x20
movsd xmm1, qword [eax + 0x10]
mulpd xmm0, xmm2
movhpd xmm1, qword [eax + 8]
addpd xmm0, xmmword [ebp - 0x2f0]
mulpd xmm1, xmm2
movaps xmmword [ebp - 0x2f0], xmm0
movups xmm0, xmmword [ebp + ecx*8 - 0x108]
addpd xmm1, xmmword [ebp - 0x300]
mulpd xmm0, xmm2
movups xmm2, xmmword [ebp + ecx*8 - 0x78]
addpd xmm0, xmmword [ebp - 0x2e0]
movaps xmmword [ebp - 0x300], xmm1
movsd xmm1, qword [eax]
movhpd xmm1, qword [eax - 8]
sub eax, 0x20
movaps xmmword [ebp - 0x2e0], xmm0
movups xmm0, xmmword [ebp + ecx*8 - 0x180]
mulpd xmm1, xmm2
mulpd xmm0, xmm2
addpd xmm5, xmm1
addpd xmm3, xmm0
movups xmm0, xmmword [ebp + ecx*8 - 0xf8]
add ecx, 4
mulpd xmm0, xmm2
addpd xmm4, xmm0
cmp ecx, dword [ebp - 0x2b4]
jl 0x438061
addpd xmm4, xmmword [ebp - 0x2e0]
addpd xmm3, xmmword [ebp - 0x2f0]
movaps xmm0, xmm4
unpckhpd xmm0, xmm4
addsd xmm4, xmm0
movaps xmm0, xmm3
unpckhpd xmm0, xmm3
addsd xmm3, xmm0
addpd xmm5, xmmword [ebp - 0x300]
addsd xmm4, xmm7
movaps xmm0, xmm5
unpckhpd xmm0, xmm5
addsd xmm5, xmm0
addsd xmm3, qword [ebp - 0x198]
addsd xmm5, xmm6
movsd qword [ebp - 0x2b8], xmm5
movsd qword [ebp - 0x2b8], xmm3
movsd qword [ebp - 0x2b8], xmm4
cmp ecx, edx
jge 0x4381b9
mov eax, edx
sub eax, ecx
lea eax, [ebp + eax*8 - 0x198]
nop word [eax + eax]
movsd xmm1, qword [ebp + ecx*8 - 0x88]
movaps xmm0, xmm1
mulsd xmm0, qword [eax]
sub eax, 8
addsd xmm5, xmm0
movaps xmm0, xmm1
mulsd xmm0, qword [ebp + ecx*8 - 0x190]
mulsd xmm1, qword [ebp + ecx*8 - 0x108]
inc ecx
addsd xmm3, xmm0
addsd xmm4, xmm1
cmp ecx, edx
jl 0x438180
addsd xmm4, xmm3
movsd xmm6, qword [0x92b588]
movsd xmm3, qword [0x92b7a8]
movaps xmm1, xmm6
movsd xmm2, qword [0x92b4b0]
divsd xmm3, xmm4
mulsd xmm3, xmm5
movaps xmm0, xmm3
mulsd xmm0, xmm3
subsd xmm1, xmm0
movsd xmm0, qword [ebp - 0x2c8]
mulsd xmm1, xmm0
comisd xmm2, xmm1
jb 0x438239
movaps xmm1, xmm2
xorps xmm3, xmm3
divsd xmm1, xmm0
movaps xmm0, xmm6
subsd xmm0, xmm1
sqrtsd xmm3, xmm0
xorps xmm0, xmm0
comisd xmm5, xmm0
jbe 0x438222
xorps xmm3, xmmword [0x92bc60]
movaps xmm5, xmm2
mov dword [ebp - 0x2ac], 1
movsd qword [ebp - 0x2c8], xmm5
jmp 0x438244
movaps xmm5, xmm1
movsd qword [ebp - 0x2c8], xmm1
mov edi, dword [ebp - 0x29c]
lea esi, [edx + 1]
sar esi, 1
movaps xmm4, xmm3
xor eax, eax
unpcklpd xmm4, xmm4
test esi, esi
jle 0x4382a8
lea ecx, [ebp - 0x80]
add ecx, edi
nop dword [eax]
nop word [eax + eax]
movsd xmm1, qword [ecx]
movaps xmm0, xmm3
movsd xmm2, qword [ebp + eax*8 - 0x88]
mulsd xmm0, xmm1
addsd xmm0, xmm2
movsd qword [ebp + eax*8 - 0x88], xmm0
movaps xmm0, xmm3
mulsd xmm0, xmm2
inc eax
addsd xmm0, xmm1
movsd qword [ecx], xmm0
sub ecx, 8
cmp eax, esi
jl 0x438270
cmp dword [ebp - 0x2ac], 0
lea eax, [edx + 1]
movsd qword [ebp + edx*8 - 0x88], xmm3
jne 0x438502
lea eax, [edx + 1]
xor ecx, ecx
test eax, eax
js 0x43838d
lea eax, [edx + 2]
cmp eax, 2
jb 0x43833d
lea esi, [edx + 1]
and eax, 0x80000001
jns 0x4382e9
dec eax
or eax, 0xfffffffe
inc eax
sub esi, eax
lea eax, [ebp - 0x198]
lea eax, [eax + edx*8]
movsd xmm1, qword [eax + 8]
movaps xmm0, xmm4
movhpd xmm1, qword [eax]
movups xmm2, xmmword [ebp + ecx*8 - 0x110]
mulpd xmm0, xmm1
addpd xmm0, xmm2
movups xmmword [ebp + ecx*8 - 0x110], xmm0
add ecx, 2
movaps xmm0, xmm4
mulpd xmm0, xmm2
addpd xmm0, xmm1
movlpd qword [eax + 8], xmm0
movhpd qword [eax], xmm0
sub eax, 0x10
cmp ecx, esi
jle 0x4382f4
lea eax, [edx + 1]
cmp ecx, eax
jg 0x438385
mov eax, edx
lea esi, [ebp - 0x190]
sub eax, ecx
lea eax, [esi + eax*8]
lea esi, [edx + 1]
nop dword [eax]
movsd xmm0, qword [eax]
movsd xmm2, qword [ebp + ecx*8 - 0x110]
mulsd xmm0, xmm3
addsd xmm0, xmm2
movsd qword [ebp + ecx*8 - 0x110], xmm0
movaps xmm0, xmm3
mulsd xmm0, xmm2
inc ecx
addsd xmm0, qword [eax]
movsd qword [eax], xmm0
sub eax, 8
cmp ecx, esi
jle 0x438350
movsd xmm7, qword [ebp - 0x110]
mov esi, dword [ebp - 0x2a4]
add edi, 8
mov ecx, dword [ebp - 0x2a8]
add esi, 4
sub ecx, 4
mov dword [ebp - 0x2a4], esi
inc edx
mov dword [ebp - 0x2a8], ecx
mov dword [ebp - 0x29c], edi
cmp edi, 0x70
jl 0x437d70
mov ecx, dword [ebp - 0x2b0]
lea edx, [ebp - 0x90]
lea eax, [ecx + 0x3c]
cmp ecx, edx
ja 0x4383db
lea edx, [ebp - 0x108]
cmp eax, edx
jae 0x4383ec
lea edx, [ebp - 0x10]
cmp ecx, edx
ja 0x438438
lea edx, [ebp - 0x88]
cmp eax, edx
jb 0x438438
xor eax, eax
nop
movsd xmm1, qword [ebp + eax - 0x88]
movaps xmm0, xmm1
mulsd xmm0, qword [ebp + eax - 0x108]
add eax, 8
addsd xmm7, xmm0
movaps xmm0, xmm1
mulsd xmm0, xmm1
xorps xmm1, xmmword [0x92bc60]
addsd xmm6, xmm0
xorps xmm0, xmm0
cvtsd2ss xmm0, xmm1
movss dword [ecx], xmm0
add ecx, 4
cmp eax, 0x80
jl 0x4383f0
jmp 0x4384e5
movaps xmm6, xmmword [0x92bc60]
xorps xmm2, xmm2
xorps xmm4, xmm4
xorps xmm5, xmm5
xorps xmm3, xmm3
xor eax, eax
nop dword [eax]
movups xmm1, xmmword [ebp + eax - 0x88]
movups xmm0, xmmword [ebp + eax - 0x108]
mulpd xmm0, xmm1
addpd xmm3, xmm0
movaps xmm0, xmm1
mulpd xmm0, xmm1
xorps xmm1, xmm6
addpd xmm2, xmm0
cvtpd2ps xmm0, xmm1
movups xmm1, xmmword [ebp + eax - 0x78]
movsd qword [ecx], xmm0
movups xmm0, xmmword [ebp + eax - 0xf8]
add eax, 0x20
mulpd xmm0, xmm1
addpd xmm5, xmm0
movaps xmm0, xmm1
mulpd xmm0, xmm1
xorps xmm1, xmm6
addpd xmm4, xmm0
cvtpd2ps xmm0, xmm1
movsd qword [ecx + 8], xmm0
add ecx, 0x10
cmp eax, 0x80
jl 0x438450
movsd xmm6, qword [0x92b588]
addpd xmm3, xmm5
addpd xmm2, xmm4
movaps xmm0, xmm3
unpckhpd xmm0, xmm3
addsd xmm3, xmm0
movaps xmm0, xmm2
unpckhpd xmm0, xmm2
addsd xmm2, xmm0
addsd xmm7, xmm3
addsd xmm6, xmm2
movsd xmm0, qword [ebp - 0x2d0]
mulsd xmm0, qword [0x92b438]
mulsd xmm0, xmm6
subsd xmm7, xmm0
jmp 0x438683
cmp eax, 0x10
jge 0x438524
lea edx, [eax*8]
mov ecx, 0x80
sub ecx, edx
lea edi, [ebp - 0x88]
shr ecx, 2
xor eax, eax
add edi, edx
rep stosd dword es:[edi], eax
mov edx, dword [ebp - 0x2b0]
lea esi, [ebp - 0x10]
xor eax, eax
lea ecx, [edx + 0x3c]
cmp edx, esi
ja 0x4385e0
lea esi, [ebp - 0x88]
cmp ecx, esi
jb 0x4385e0
movsd xmm1, qword [0x92bc60]
lea ecx, [edx + 8]
nop dword [eax]
nop word [eax + eax]
movsd xmm0, qword [ebp + eax*8 - 0x88]
lea ecx, [ecx + 0x10]
xorps xmm0, xmm1
cvtsd2ss xmm0, xmm0
movss dword [ecx - 0x18], xmm0
movsd xmm0, qword [ebp + eax*8 - 0x80]
xorps xmm0, xmm1
cvtsd2ss xmm0, xmm0
movss dword [ecx - 0x14], xmm0
movsd xmm0, qword [ebp + eax*8 - 0x78]
xorps xmm0, xmm1
cvtsd2ss xmm0, xmm0
movss dword [ecx - 0x10], xmm0
movsd xmm0, qword [ebp + eax*8 - 0x70]
add eax, 4
xorps xmm0, xmm1
cvtsd2ss xmm0, xmm0
movss dword [ecx - 0xc], xmm0
cmp eax, 0xd
jl 0x438560
cmp eax, 0x10
jge 0x438660
nop
movsd xmm0, qword [ebp + eax*8 - 0x88]
xorps xmm0, xmm1
cvtsd2ss xmm0, xmm0
movss dword [edx + eax*4], xmm0
inc eax
cmp eax, 0x10
jl 0x4385c0
jmp 0x438660
movaps xmm1, xmmword [0x92bc60]
lea ecx, [ebp - 0x88]
add edx, 0x10
xor esi, esi
xor edi, edi
movups xmm0, xmmword [esi + ecx]
lea ecx, [ebp - 0x68]
lea edx, [edx + 0x20]
xorps xmm0, xmm1
lea esi, [esi + 0x40]
cvtpd2ps xmm0, xmm0
lea edi, [edi + 0x40]
movsd qword [edx - 0x30], xmm0
movups xmm0, xmmword [ebp + edi - 0xb8]
xorps xmm0, xmm1
cvtpd2ps xmm0, xmm0
movsd qword [edx - 0x28], xmm0
movups xmm0, xmmword [ecx + eax*8]
lea ecx, [ebp - 0x58]
xorps xmm0, xmm1
cvtpd2ps xmm0, xmm0
movsd qword [edx - 0x20], xmm0
movups xmm0, xmmword [ecx + eax*8]
add eax, 8
lea ecx, [ebp - 0x88]
xorps xmm0, xmm1
cvtpd2ps xmm0, xmm0
movsd qword [edx - 0x18], xmm0
cmp eax, 0x10
jl 0x4385f4
nop word [eax + eax]
mov ecx, dword [ebp - 0x2a0]
mov edx, 0x10
call fcn.004378e0
movsd xmm1, qword [ebp - 0x2d0]
movaps xmm7, xmm5
subsd xmm1, xmm0
mulsd xmm7, xmm1
xorps xmm1, xmm1
xorps xmm0, xmm0
cvtsd2ss xmm1, xmm7
comiss xmm0, xmm1
ja 0x438695
movaps xmm0, xmm1
mov ecx, dword [ebp - 4]
pop edi
xor ecx, ebp
pop esi
call fcn.004575d6
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret