Function at 0x4a12d0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x98
push esi
push edi
mov ecx, 0x12
lea edi, [esp + 0x50]
mov esi, 0x614c20
rep movsd dword es:[edi], dword [esi]
xor ecx, ecx
mov dword [esp + 0xc], ecx
movsw word es:[edi], word [esi]
lea eax, [ecx + 0x1f]
movsb byte es:[edi], byte [esi]
mov edi, dword [0x621bb4]
lea esi, [ecx + 5]
cmp edi, 2
jl 0x4a1450
movaps xmm0, xmmword [str.5555555555555555]
movaps xmm4, xmmword [0x615210]
movaps xmm3, xmmword [0x615310]
movaps xmm6, xmmword [0x615240]
movaps xmmword [esp + 0x40], xmm0
mov edx, dword [esp + 0x40]
movd xmm5, esi
movd xmm7, eax
nop dword [eax]
movd xmm0, ecx
lea eax, [ecx + 4]
pshufd xmm2, xmm0, 0
paddd xmm2, xmm4
movaps xmm1, xmm2
movaps xmm0, xmm2
punpckhdq xmm0, xmm2
punpckldq xmm1, xmm2
pmuldq xmm0, xmm3
pmuldq xmm1, xmm3
shufps xmm1, xmm0, 0xdd
paddd xmm1, xmm2
psrad xmm1, xmm5
movaps xmm0, xmm1
psrld xmm0, xmm7
paddd xmm0, xmm1
pmulld xmm0, xmm6
psubd xmm2, xmm0
pshuflw xmm0, xmm2, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
pand xmm1, xmmword [0x615250]
packuswb xmm1, xmm1
movd xmm0, edx
paddb xmm1, xmm0
movd xmm0, dword [esp + ecx + 0x50]
pxor xmm1, xmm0
movd xmm0, eax
pshufd xmm2, xmm0, 0
movd dword [esp + ecx + 0x50], xmm1
paddd xmm2, xmm4
movaps xmm1, xmm2
movaps xmm0, xmm2
punpckldq xmm1, xmm2
punpckhdq xmm0, xmm2
pmuldq xmm0, xmm3
pmuldq xmm1, xmm3
shufps xmm1, xmm0, 0xdd
paddd xmm1, xmm2
psrad xmm1, xmm5
movaps xmm0, xmm1
psrld xmm0, xmm7
paddd xmm0, xmm1
pmulld xmm0, xmm6
psubd xmm2, xmm0
pshuflw xmm0, xmm2, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
pand xmm1, xmmword [0x615250]
packuswb xmm1, xmm1
movd xmm0, edx
paddb xmm1, xmm0
movd xmm0, dword [esp + ecx + 0x54]
pxor xmm1, xmm0
movd dword [esp + ecx + 0x54], xmm1
add ecx, 8
cmp ecx, 0x48
jl 0x4a1340
mov dword [esp + 0xc], ecx
cmp ecx, 0x4b
jge 0x4a1487
nop dword [eax + eax]
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov cl, al
shl cl, 3
sub cl, al
mov al, byte [esp + 0xc]
shl cl, 3
sub al, cl
mov ecx, dword [esp + 0xc]
add al, 0x35
xor byte [esp + ecx + 0x50], al
inc ecx
mov dword [esp + 0xc], ecx
cmp ecx, 0x4b
jl 0x4a1450
push 0
xor edx, edx
lea ecx, [esp + 0x54]
call fcn.00455de0
mov ecx, dword [0x625898]
add esp, 4
cmp byte [0x61ef5c], 1
jne 0x4a14dc
mov eax, dword [ecx + 0x199c]
and dword [eax + 0xac], 0xfffffff1
mov dword [eax + 0x8c], 0
mov dword [eax + 0x1c], 0x442f0000
mov dword [eax + 0x20], 0x43c80000
mov dword [eax + 0x90], 0
mov byte [0x61ef5c], 0
movaps xmm0, xmmword [0x615290]
movups xmmword [ecx + 0x1708], xmm0
mov eax, dword [ecx + 0x199c]
mov dword [esp + 0x3c], 0
movss xmm0, dword [eax + 0x14]
mulss xmm0, dword [0x615060]
mov eax, dword [0x614fa4]
mov dword [esp + 0x20], eax
mov ax, word [0x614fa8]
mov word [esp + 0x24], ax
subss xmm0, dword [0x61513c]
movss dword [esp + 0x38], xmm0
movups xmm0, xmmword [0x614f94]
movups xmmword [esp + 0x10], xmm0
test ah, ah
je 0x4a16c7
xor ecx, ecx
mov dword [esp + 0xc], ecx
cmp edi, 2
jl 0x4a1690
movaps xmm0, xmmword [str.5555555555555555]
mov eax, 0x1f
movaps xmm4, xmmword [0x615210]
movaps xmm3, xmmword [0x615310]
movaps xmm6, xmmword [0x615240]
movaps xmmword [esp + 0x40], xmm0
mov edx, dword [esp + 0x40]
movd xmm5, esi
movd xmm7, eax
nop dword [eax]
movd xmm0, ecx
lea eax, [ecx + 4]
pshufd xmm2, xmm0, 0
paddd xmm2, xmm4
movaps xmm1, xmm2
movaps xmm0, xmm2
punpckhdq xmm0, xmm2
punpckldq xmm1, xmm2
pmuldq xmm0, xmm3
pmuldq xmm1, xmm3
shufps xmm1, xmm0, 0xdd
paddd xmm1, xmm2
psrad xmm1, xmm5
movaps xmm0, xmm1
psrld xmm0, xmm7
paddd xmm0, xmm1
pmulld xmm0, xmm6
psubd xmm2, xmm0
pshuflw xmm0, xmm2, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
pand xmm1, xmmword [0x615250]
packuswb xmm1, xmm1
movd xmm0, edx
paddb xmm1, xmm0
movd xmm0, dword [esp + ecx + 0x10]
pxor xmm1, xmm0
movd xmm0, eax
pshufd xmm2, xmm0, 0
movd dword [esp + ecx + 0x10], xmm1
paddd xmm2, xmm4
movaps xmm1, xmm2
movaps xmm0, xmm2
punpckldq xmm1, xmm2
punpckhdq xmm0, xmm2
pmuldq xmm0, xmm3
pmuldq xmm1, xmm3
shufps xmm1, xmm0, 0xdd
paddd xmm1, xmm2
psrad xmm1, xmm5
movaps xmm0, xmm1
psrld xmm0, xmm7
paddd xmm0, xmm1
pmulld xmm0, xmm6
psubd xmm2, xmm0
pshuflw xmm0, xmm2, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
pand xmm1, xmmword [0x615250]
packuswb xmm1, xmm1
movd xmm0, edx
paddb xmm1, xmm0
movd xmm0, dword [esp + ecx + 0x14]
pxor xmm1, xmm0
movd dword [esp + ecx + 0x14], xmm1
add ecx, 8
cmp ecx, 0x10
jl 0x4a1580
mov dword [esp + 0xc], ecx
cmp ecx, 0x16
jge 0x4a16c7
nop dword [eax + eax]
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov cl, al
shl cl, 3
sub cl, al
mov al, byte [esp + 0xc]
shl cl, 3
sub al, cl
mov ecx, dword [esp + 0xc]
add al, 0x35
xor byte [esp + ecx + 0x10], al
inc ecx
mov dword [esp + 0xc], ecx
cmp ecx, 0x16
jl 0x4a1690
push ecx
lea edx, [esp + 0x3c]
lea ecx, [esp + 0x14]
call fcn.0046fa70
mov esi, dword [0x625898]
xor edx, edx
mov ecx, dword [0x625a94]
add esp, 4
movaps xmm0, xmmword [0x615290]
test al, al
mov eax, dword [esi + 0x199c]
cmovne ecx, edx
movups xmmword [esi + 0x1708], xmm0
mov dword [0x625a94], ecx
mov byte [eax + 0x78], 1
mov edx, dword [esi + 0x199c]
cmp byte [edx + 0x7b], 0
jne 0x4a1761
movss xmm1, dword [esi + 0x155c]
addss xmm1, dword [edx + 0xcc]
movss xmm0, dword [edx + 0xd0]
movss dword [edx + 0xc4], xmm1
movss dword [edx + 0xc8], xmm0
mov eax, dword [edx + 0xf0]
mov ecx, dword [edx + 0xf4]
mov dword [edx + 0xe4], eax
mov eax, dword [edx + 0xf8]
mov dword [edx + 0xe8], ecx
mov dword [edx + 0xec], eax
mov eax, dword [esi + 0x199c]
xor ecx, ecx
movaps xmm0, xmmword [0x615290]
mov dword [esp + 0x3c], 0
mov dword [esp + 0xc], ecx
movups xmmword [esi + 0x1708], xmm0
movss xmm0, dword [eax + 0x14]
mulss xmm0, dword [0x615060]
mov al, byte [0x614ff4]
mov byte [esp + 0x28], al
subss xmm0, dword [0x61513c]
movss dword [esp + 0x38], xmm0
movups xmm0, xmmword [0x614fdc]
movups xmmword [esp + 0x10], xmm0
movq xmm0, qword [0x614fec]
movq qword [esp + 0x20], xmm0
cmp edi, 2
jl 0x4a1910
movaps xmm0, xmmword [str.5555555555555555]
mov eax, 5
movaps xmm4, xmmword [0x615210]
movaps xmm3, xmmword [0x615310]
movaps xmm6, xmmword [0x615240]
movd xmm5, eax
mov eax, 0x1f
movaps xmmword [esp + 0x40], xmm0
mov edx, dword [esp + 0x40]
movd xmm7, eax
movd xmm0, ecx
lea eax, [ecx + 4]
pshufd xmm2, xmm0, 0
paddd xmm2, xmm4
movaps xmm1, xmm2
movaps xmm0, xmm2
punpckhdq xmm0, xmm2
punpckldq xmm1, xmm2
pmuldq xmm0, xmm3
pmuldq xmm1, xmm3
shufps xmm1, xmm0, 0xdd
paddd xmm1, xmm2
psrad xmm1, xmm5
movaps xmm0, xmm1
psrld xmm0, xmm7
paddd xmm0, xmm1
pmulld xmm0, xmm6
psubd xmm2, xmm0
pshuflw xmm0, xmm2, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
pand xmm1, xmmword [0x615250]
packuswb xmm1, xmm1
movd xmm0, edx
paddb xmm1, xmm0
movd xmm0, dword [esp + ecx + 0x10]
pxor xmm1, xmm0
movd xmm0, eax
pshufd xmm2, xmm0, 0
movd dword [esp + ecx + 0x10], xmm1
paddd xmm2, xmm4
movaps xmm1, xmm2
movaps xmm0, xmm2
punpckldq xmm1, xmm2
punpckhdq xmm0, xmm2
pmuldq xmm0, xmm3
pmuldq xmm1, xmm3
shufps xmm1, xmm0, 0xdd
paddd xmm1, xmm2
psrad xmm1, xmm5
movaps xmm0, xmm1
psrld xmm0, xmm7
paddd xmm0, xmm1
pmulld xmm0, xmm6
psubd xmm2, xmm0
pshuflw xmm0, xmm2, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
pand xmm1, xmmword [0x615250]
packuswb xmm1, xmm1
movd xmm0, edx
paddb xmm1, xmm0
movd xmm0, dword [esp + ecx + 0x14]
pxor xmm1, xmm0
movd dword [esp + ecx + 0x14], xmm1
add ecx, 8
cmp ecx, 0x18
jl 0x4a1801
mov dword [esp + 0xc], ecx
cmp ecx, 0x19
jge 0x4a1947
nop dword [eax]
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov cl, al
shl cl, 3
sub cl, al
mov al, byte [esp + 0xc]
shl cl, 3
sub al, cl
mov ecx, dword [esp + 0xc]
add al, 0x35
xor byte [esp + ecx + 0x10], al
inc ecx
mov dword [esp + 0xc], ecx
cmp ecx, 0x19
jl 0x4a1910
push ecx
lea edx, [esp + 0x3c]
lea ecx, [esp + 0x14]
call fcn.0046fa70
mov esi, dword [0x625898]
add esp, 4
mov ecx, dword [0x625a94]
test al, al
movaps xmm0, xmmword [0x615290]
mov edx, 1
cmovne ecx, edx
mov eax, dword [esi + 0x199c]
movups xmmword [esi + 0x1708], xmm0
mov dword [0x625a94], ecx
mov byte [eax + 0x78], dl
mov edx, dword [esi + 0x199c]
cmp byte [edx + 0x7b], 0
jne 0x4a19e3
movss xmm1, dword [esi + 0x155c]
addss xmm1, dword [edx + 0xcc]
movss xmm0, dword [edx + 0xd0]
movss dword [edx + 0xc4], xmm1
movss dword [edx + 0xc8], xmm0
mov eax, dword [edx + 0xf0]
mov ecx, dword [edx + 0xf4]
mov dword [edx + 0xe4], eax
mov eax, dword [edx + 0xf8]
mov dword [edx + 0xe8], ecx
mov dword [edx + 0xec], eax
mov eax, dword [esi + 0x199c]
xor ecx, ecx
movaps xmm0, xmmword [0x615290]
mov dword [esp + 0x3c], 0
mov dword [esp + 0xc], ecx
movups xmmword [esi + 0x1708], xmm0
movss xmm0, dword [eax + 0x14]
mulss xmm0, dword [0x615060]
mov al, byte [0x614d04]
mov byte [esp + 0x28], al
subss xmm0, dword [0x61513c]
movss dword [esp + 0x38], xmm0
movups xmm0, xmmword [0x614cec]
movups xmmword [esp + 0x10], xmm0
movq xmm0, qword [0x614cfc]
movq qword [esp + 0x20], xmm0
cmp edi, 2
jl 0x4a1b90
movaps xmm0, xmmword [str.5555555555555555]
mov eax, 5
movaps xmm4, xmmword [0x615210]
movaps xmm3, xmmword [0x615310]
movaps xmm6, xmmword [0x615240]
movd xmm5, eax
mov eax, 0x1f
movaps xmmword [esp + 0x40], xmm0
mov edx, dword [esp + 0x40]
movd xmm7, eax
movd xmm0, ecx
lea eax, [ecx + 4]
pshufd xmm2, xmm0, 0
paddd xmm2, xmm4
movaps xmm1, xmm2
movaps xmm0, xmm2
punpckhdq xmm0, xmm2
punpckldq xmm1, xmm2
pmuldq xmm0, xmm3
pmuldq xmm1, xmm3
shufps xmm1, xmm0, 0xdd
paddd xmm1, xmm2
psrad xmm1, xmm5
movaps xmm0, xmm1
psrld xmm0, xmm7
paddd xmm0, xmm1
pmulld xmm0, xmm6
psubd xmm2, xmm0
pshuflw xmm0, xmm2, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
pand xmm1, xmmword [0x615250]
packuswb xmm1, xmm1
movd xmm0, edx
paddb xmm1, xmm0
movd xmm0, dword [esp + ecx + 0x10]
pxor xmm1, xmm0
movd xmm0, eax
pshufd xmm2, xmm0, 0
movd dword [esp + ecx + 0x10], xmm1
paddd xmm2, xmm4
movaps xmm1, xmm2
movaps xmm0, xmm2
punpckldq xmm1, xmm2
punpckhdq xmm0, xmm2
pmuldq xmm0, xmm3
pmuldq xmm1, xmm3
shufps xmm1, xmm0, 0xdd
paddd xmm1, xmm2
psrad xmm1, xmm5
movaps xmm0, xmm1
psrld xmm0, xmm7
paddd xmm0, xmm1
pmulld xmm0, xmm6
psubd xmm2, xmm0
pshuflw xmm0, xmm2, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
pand xmm1, xmmword [0x615250]
packuswb xmm1, xmm1
movd xmm0, edx
paddb xmm1, xmm0
movd xmm0, dword [esp + ecx + 0x14]
pxor xmm1, xmm0
movd dword [esp + ecx + 0x14], xmm1
add ecx, 8
cmp ecx, 0x18
jl 0x4a1a83
mov dword [esp + 0xc], ecx
cmp ecx, 0x19
jge 0x4a1bc7
nop dword [eax + eax]
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov cl, al
shl cl, 3
sub cl, al
mov al, byte [esp + 0xc]
shl cl, 3
sub al, cl
mov ecx, dword [esp + 0xc]
add al, 0x35
xor byte [esp + ecx + 0x10], al
inc ecx
mov dword [esp + 0xc], ecx
cmp ecx, 0x19
jl 0x4a1b90
push ecx
lea edx, [esp + 0x3c]
lea ecx, [esp + 0x14]
call fcn.0046fa70
mov esi, dword [0x625898]
add esp, 4
mov ecx, dword [0x625a94]
test al, al
movaps xmm0, xmmword [0x615290]
mov edx, 2
cmovne ecx, edx
mov eax, dword [esi + 0x199c]
movups xmmword [esi + 0x1708], xmm0
mov dword [0x625a94], ecx
mov byte [eax + 0x78], 1
mov edx, dword [esi + 0x199c]
cmp byte [edx + 0x7b], 0
jne 0x4a1c64
movss xmm1, dword [esi + 0x155c]
addss xmm1, dword [edx + 0xcc]
movss xmm0, dword [edx + 0xd0]
movss dword [edx + 0xc4], xmm1
movss dword [edx + 0xc8], xmm0
mov eax, dword [edx + 0xf0]
mov ecx, dword [edx + 0xf4]
mov dword [edx + 0xe4], eax
mov eax, dword [edx + 0xf8]
mov dword [edx + 0xe8], ecx
mov dword [edx + 0xec], eax
mov eax, dword [esi + 0x199c]
movaps xmm0, xmmword [0x615290]
movups xmmword [esi + 0x1708], xmm0
mov dword [esp + 0x3c], 0
movss xmm0, dword [eax + 0x14]
mulss xmm0, dword [0x615060]
mov eax, dword [0x614e24]
mov dword [esp + 0x20], eax
mov ax, word [0x614e28]
mov word [esp + 0x24], ax
subss xmm0, dword [0x61513c]
movss dword [esp + 0x38], xmm0
movups xmm0, xmmword [0x614e14]
movups xmmword [esp + 0x10], xmm0
test ah, ah
je 0x4a1e57
xor ecx, ecx
mov dword [esp + 0xc], ecx
cmp edi, 2
jl 0x4a1e20
movaps xmm0, xmmword [str.5555555555555555]
mov eax, 5
movaps xmm4, xmmword [0x615210]
movaps xmm3, xmmword [0x615310]
movaps xmm6, xmmword [0x615240]
movd xmm5, eax
mov eax, 0x1f
movaps xmmword [esp + 0x40], xmm0
mov edx, dword [esp + 0x40]
movd xmm7, eax
nop dword [eax]
movd xmm0, ecx
lea eax, [ecx + 4]
pshufd xmm2, xmm0, 0
paddd xmm2, xmm4
movaps xmm1, xmm2
movaps xmm0, xmm2
punpckhdq xmm0, xmm2
punpckldq xmm1, xmm2
pmuldq xmm0, xmm3
pmuldq xmm1, xmm3
shufps xmm1, xmm0, 0xdd
paddd xmm1, xmm2
psrad xmm1, xmm5
movaps xmm0, xmm1
psrld xmm0, xmm7
paddd xmm0, xmm1
pmulld xmm0, xmm6
psubd xmm2, xmm0
pshuflw xmm0, xmm2, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
pand xmm1, xmmword [0x615250]
packuswb xmm1, xmm1
movd xmm0, edx
paddb xmm1, xmm0
movd xmm0, dword [esp + ecx + 0x10]
pxor xmm1, xmm0
movd xmm0, eax
pshufd xmm2, xmm0, 0
movd dword [esp + ecx + 0x10], xmm1
paddd xmm2, xmm4
movaps xmm1, xmm2
movaps xmm0, xmm2
punpckldq xmm1, xmm2
punpckhdq xmm0, xmm2
pmuldq xmm0, xmm3
pmuldq xmm1, xmm3
shufps xmm1, xmm0, 0xdd
paddd xmm1, xmm2
psrad xmm1, xmm5
movaps xmm0, xmm1
psrld xmm0, xmm7
paddd xmm0, xmm1
pmulld xmm0, xmm6
psubd xmm2, xmm0
pshuflw xmm0, xmm2, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
pand xmm1, xmmword [0x615250]
packuswb xmm1, xmm1
movd xmm0, edx
paddb xmm1, xmm0
movd xmm0, dword [esp + ecx + 0x14]
pxor xmm1, xmm0
movd dword [esp + ecx + 0x14], xmm1
add ecx, 8
cmp ecx, 0x10
jl 0x4a1d10
mov dword [esp + 0xc], ecx
cmp ecx, 0x16
jge 0x4a1e57
nop dword [eax + eax]
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov cl, al
shl cl, 3
sub cl, al
mov al, byte [esp + 0xc]
shl cl, 3
sub al, cl
mov ecx, dword [esp + 0xc]
add al, 0x35
xor byte [esp + ecx + 0x10], al
inc ecx
mov dword [esp + 0xc], ecx
cmp ecx, 0x16
jl 0x4a1e20
push ecx
lea edx, [esp + 0x3c]
lea ecx, [esp + 0x14]
call fcn.0046fa70
mov ecx, dword [0x625a94]
add esp, 4
movaps xmm0, xmmword [0x615290]
test al, al
mov eax, dword [0x625898]
mov edx, 3
cmovne ecx, edx
mov dword [0x625a94], ecx
movups xmmword [eax + 0x1708], xmm0
call fcn.00470fa0
mov eax, dword [0x625a94]
cmp eax, 3
ja case.default.0x4a1ea0
jmp dword [eax*4 + 0x4a1ee8]
call fcn.0049cdf0
call fcn.00459bf0
pop edi
pop esi
mov esp, ebp
pop ebp
ret
call fcn.0049ecd0
call fcn.00459bf0
pop edi
pop esi
mov esp, ebp
pop ebp
ret
call fcn.004a0610
call fcn.00459bf0
pop edi
pop esi
mov esp, ebp
pop ebp
ret
call fcn.0049da60
call fcn.00459bf0
pop edi
pop esi
mov esp, ebp
pop ebp
ret