Function at 0x402fa0
Capabilities:
Encode data using xor

Disassembly:
push ebx
push edi
push esi
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x10]
mov eax, dword [0x47f658]
test eax, eax
jne 0x403ae6
movsd xmm0, qword [0x45f5f0]
xorps xmm0, xmmword [0x45b910]
movlps qword [0x45f9f0], xmm0
mov eax, dword [0x45f5f8]
lea esi, [eax + eax]
and esi, 0xc31050f6
neg esi
add eax, esi
add eax, 0x6188287b
mov dword [0x45f9f8], eax
mov eax, 0xdf10787e
xor eax, dword [0x45f5fc]
mov dword [0x45f9fc], eax
movq xmm0, qword [0x45f600]
movdqa xmm1, xmm0
paddd xmm1, xmm0
pand xmm1, xmmword [0x45b920]
psubd xmm0, xmm1
paddd xmm0, xmmword [0x45b930]
movq xmm1, qword [0x45f608]
pxor xmm1, xmmword [0x45b940]
punpcklqdq xmm0, xmm1
movdqa xmmword [0x45fa00], xmm0
mov eax, 0x971dd6f8
xor eax, dword [0x45f610]
movq xmm0, qword [0x45f614]
movdqa xmm1, xmm0
paddd xmm1, xmm0
pand xmm1, xmmword [0x45b950]
mov dword [0x45fa10], eax
psubd xmm0, xmm1
paddd xmm0, xmmword [0x45b960]
movq xmm1, qword [0x45f61c]
pxor xmm1, xmmword [0x45b970]
punpcklqdq xmm0, xmm1
movdqu xmmword [0x45fa14], xmm0
mov eax, 0x15eda5d1
xor eax, dword [0x45f624]
mov dword [0x45fa24], eax
mov eax, dword [0x45f628]
lea esi, [eax + eax]
and esi, 0x75973946
neg esi
add eax, esi
add eax, 0x3acb9ca3
mov dword [0x45fa28], eax
movsd xmm0, qword [0x45f62c]
xorps xmm0, xmmword [0x45b980]
movlps qword [0x45fa2c], xmm0
mov eax, dword [0x45f634]
lea esi, [eax + eax]
and esi, 0x7c7e2822
neg esi
add eax, esi
add eax, 0x3e3f1411
mov dword [0x45fa34], eax
movups xmm0, xmmword [0x45f638]
xorps xmm0, xmmword [0x45b990]
movups xmmword [0x45fa38], xmm0
mov eax, 0xcb44bfa4
xor eax, dword [0x45f648]
mov dword [0x45fa48], eax
mov eax, dword [0x45f64c]
lea esi, [eax + eax]
and esi, 0x19f6d1ea
neg esi
add eax, esi
add eax, 0x8cfb68f5
mov dword [0x45fa4c], eax
mov eax, 0x1e8d6439
xor eax, dword [0x45f650]
mov dword [0x45fa50], eax
mov eax, dword [0x45f654]
lea esi, [eax + eax]
and esi, 0x46ee5d0
neg esi
add eax, esi
add eax, 0x23772e8
mov dword [0x45fa54], eax
movsd xmm0, qword [0x45f658]
xorps xmm0, xmmword [0x45b9a0]
movlps qword [0x45fa58], xmm0
mov eax, dword [0x45f660]
lea esi, [eax + eax]
and esi, 0xd2128406
neg esi
add eax, esi
add eax, 0xe9094203
mov dword [0x45fa60], eax
movsd xmm0, qword [str.8__s:]
xorps xmm0, xmmword [0x45b9b0]
movlps qword [0x45fa64], xmm0
mov eax, 0x16ed1a94
xor eax, dword [0x45f66c]
mov dword [0x45fa6c], eax
mov eax, dword [0x45f670]
lea esi, [eax + eax]
and esi, 0x77e19ea
neg esi
add eax, esi
add eax, 0x3bf0cf5
mov dword [0x45fa70], eax
movups xmm0, xmmword [0x45f674]
xorps xmm0, xmmword [0x45b9c0]
movups xmmword [0x45fa74], xmm0
mov eax, dword [0x45f684]
lea esi, [eax + eax]
and esi, 0xc4240118
neg esi
add eax, esi
add eax, 0xe212008c
mov dword [0x45fa84], eax
movups xmm0, xmmword [str.5L.e]
xorps xmm0, xmmword [0x45b9d0]
movups xmmword [0x45fa88], xmm0
movups xmm0, xmmword [0x45f698]
xorps xmm0, xmmword [0x45b9e0]
movups xmmword [0x45fa98], xmm0
movsd xmm0, qword [0x45f6a8]
xorps xmm0, xmmword [0x45b9f0]
movlps qword [0x45faa8], xmm0
mov eax, dword [0x45f6b0]
lea esi, [eax + eax]
and esi, 0x48c4b7b4
neg esi
add eax, esi
add eax, 0xa4625bda
movq xmm0, qword [0x45f6b4]
pxor xmm0, xmmword [0x45ba00]
movq xmm1, qword [0x45f6bc]
movdqa xmm2, xmm1
paddd xmm2, xmm1
pand xmm2, xmmword [0x45ba10]
mov dword [0x45fab0], eax
psubd xmm1, xmm2
paddd xmm1, xmmword [0x45ba20]
punpcklqdq xmm0, xmm1
mov eax, 0x9dd9fb62
xor eax, dword [0x45f6c4]
movdqu xmmword [0x45fab4], xmm0
mov dword [0x45fac4], eax
mov eax, dword [0x45f6c8]
lea esi, [eax + eax]
and esi, 0x38778f30
neg esi
add eax, esi
add eax, 0x1c3bc798
mov dword [0x45fac8], eax
movsd xmm0, qword [0x45f6cc]
xorps xmm0, xmmword [0x45ba30]
movlps qword [0x45facc], xmm0
mov eax, dword [0x45f6d4]
lea esi, [eax + eax]
and esi, 0x92e71742
neg esi
add eax, esi
add eax, 0x49738ba1
movups xmm0, xmmword [0x45f6d8]
xorps xmm0, xmmword [0x45ba40]
mov dword [0x45fad4], eax
movups xmmword [0x45fad8], xmm0
mov eax, dword [0x45f6e8]
lea esi, [eax + eax]
and esi, 0xa2269a3e
neg esi
add eax, esi
add eax, 0x51134d1f
mov dword [0x45fae8], eax
mov eax, dword [0x45f6ec]
mov esi, eax
not esi
or esi, 0x416b1909
or eax, 0xbe94e6f6
and eax, esi
mov dword [0x45faec], eax
mov eax, 0xbbb46f00
xor eax, dword [0x45f6f0]
mov dword [0x45faf0], eax
mov eax, dword [0x45f6f4]
lea esi, [eax + eax]
and esi, 0xe43b431e
neg esi
add eax, esi
add eax, 0x721da18f
mov dword [0x45faf4], eax
movups xmm0, xmmword [0x45f6f8]
xorps xmm0, xmmword [0x45ba50]
movups xmmword [0x45faf8], xmm0
movups xmm0, xmmword [0x45f708]
xorps xmm0, xmmword [0x45ba60]
movups xmmword [0x45fb08], xmm0
mov eax, dword [0x45f718]
lea esi, [eax + eax]
and esi, 0x4c4a3200
neg esi
add eax, esi
add eax, 0xa6251900
mov dword [0x45fb18], eax
movups xmm0, xmmword [0x45f71c]
xorps xmm0, xmmword [0x45ba70]
movups xmmword [0x45fb1c], xmm0
mov eax, dword [0x45f72c]
lea esi, [eax + eax]
and esi, 0x65d1d094
neg esi
add eax, esi
add eax, 0x32e8e84a
movsd xmm0, qword [0x45f730]
xorps xmm0, xmmword [0x45ba80]
movq xmm1, qword [0x45f738]
movdqa xmm2, xmm1
paddd xmm2, xmm1
pand xmm2, xmmword [0x45ba90]
mov dword [0x45fb2c], eax
psubd xmm1, xmm2
paddd xmm1, xmmword [0x45baa0]
movlps qword [0x45fb30], xmm0
movaps xmm0, xmmword [0x45f740]
xorps xmm0, xmmword [0x45bab0]
movq qword [0x45fb38], xmm1
movaps xmm1, xmmword [0x45f750]
xorps xmm1, xmmword [0x45bac0]
movaps xmmword [0x45fb40], xmm0
movaps xmm0, xmmword [0x45f760]
xorps xmm0, xmmword [0x45bad0]
movaps xmmword [str._g], xmm1
movaps xmm1, xmmword [0x45f770]
xorps xmm1, xmmword [0x45bae0]
movaps xmmword [0x45fb60], xmm0
movaps xmm0, xmmword [0x45f780]
xorps xmm0, xmmword [0x45baf0]
movaps xmmword [0x45fb70], xmm1
mov eax, 0x87a2387b
xor eax, dword [0x45f790]
movaps xmmword [0x45fb80], xmm0
mov dword [0x45fb90], eax
mov eax, dword [0x45f794]
mov esi, eax
not esi
or eax, 0x5f44d636
or esi, 0xa0bb29c9
and esi, eax
not esi
movups xmm0, xmmword [0x45f798]
xorps xmm0, xmmword [0x45bb00]
mov dword [0x45fb94], esi
movsd xmm1, qword [0x45f7a8]
xorps xmm1, xmmword [0x45bb10]
movups xmmword [0x45fb98], xmm0
mov eax, 0xb9ff3ca7
xor eax, dword [0x45f7b0]
movlps qword [0x45fba8], xmm1
mov dword [0x45fbb0], eax
mov eax, dword [0x45f7b4]
lea esi, [eax + eax]
and esi, 0x1ffb6ff8
neg esi
add eax, esi
add eax, 0xffdb7fc
mov dword [0x45fbb4], eax
movups xmm0, xmmword [0x45f7b8]
xorps xmm0, xmmword [0x45bb20]
movups xmmword [0x45fbb8], xmm0
movups xmm0, xmmword [0x45f7c8]
xorps xmm0, xmmword [0x45bb30]
movups xmmword [0x45fbc8], xmm0
movups xmm0, xmmword [0x45f7d8]
xorps xmm0, xmmword [0x45bb40]
movups xmmword [0x45fbd8], xmm0
movups xmm0, xmmword [0x45f7e8]
xorps xmm0, xmmword [0x45bb50]
movups xmmword [0x45fbe8], xmm0
movsd xmm0, qword [0x45f7f8]
xorps xmm0, xmmword [0x45bb60]
movlps qword [0x45fbf8], xmm0
mov eax, dword [0x45f800]
lea esi, [eax + eax]
and esi, 0x32e62e12
neg esi
add eax, esi
add eax, 0x19731709
movups xmm0, xmmword [0x45f804]
xorps xmm0, xmmword [0x45bb70]
mov dword [0x45fc00], eax
movups xmmword [0x45fc04], xmm0
mov eax, dword [0x45f814]
lea esi, [eax + eax]
and esi, 0x4cd01d34
neg esi
add eax, esi
add eax, 0x26680e9a
mov dword [0x45fc14], eax
movups xmm0, xmmword [0x45f818]
xorps xmm0, xmmword [0x45bb80]
movups xmmword [0x45fc18], xmm0
mov eax, dword [0x45f828]
mov esi, eax
not esi
or esi, 0x62bdf8b3
or eax, 0x9d42074c
and eax, esi
mov dword [0x45fc28], eax
movups xmm0, xmmword [0x45f82c]
xorps xmm0, xmmword [0x45bb90]
movups xmmword [0x45fc2c], xmm0
mov eax, dword [0x45f83c]
lea esi, [eax + eax]
and esi, 0x68c2868
neg esi
add eax, esi
add eax, 0x83461434
mov dword [0x45fc3c], eax
movaps xmm0, xmmword [0x45f840]
xorps xmm0, xmmword [0x45bba0]
movaps xmmword [0x45fc40], xmm0
mov eax, dword [0x45f850]
lea esi, [eax + eax]
and esi, 0x1c1510a0
neg esi
add eax, esi
add eax, 0xe0a8850
mov dword [0x45fc50], eax
movups xmm0, xmmword [0x45f854]
xorps xmm0, xmmword [0x45bbb0]
movups xmmword [0x45fc54], xmm0
movsd xmm0, qword [0x45f864]
xorps xmm0, xmmword [0x45bbc0]
movlps qword [str.IeM], xmm0
mov eax, 0x3d3fa42e
xor eax, dword [0x45f86c]
mov dword [0x45fc6c], eax
mov eax, dword [0x45f870]
lea esi, [eax + eax]
and esi, 0x35497188
neg esi
add eax, esi
add eax, 0x9aa4b8c4
mov dword [0x45fc70], eax
movups xmm0, xmmword [0x45f874]
xorps xmm0, xmmword [0x45bbd0]
movups xmmword [0x45fc74], xmm0
movups xmm0, xmmword [0x45f884]
xorps xmm0, xmmword [0x45bbe0]
movups xmmword [0x45fc84], xmm0
mov eax, dword [0x45f894]
lea esi, [eax + eax]
and esi, 0x81a36962
neg esi
add eax, esi
add eax, 0x40d1b4b1
mov dword [0x45fc94], eax
movups xmm0, xmmword [0x45f898]
xorps xmm0, xmmword [0x45bbf0]
movups xmmword [0x45fc98], xmm0
movsd xmm0, qword [0x45f8a8]
xorps xmm0, xmmword [0x45bc00]
movlps qword [0x45fca8], xmm0
mov eax, 0xccd598c4
xor eax, dword [0x45f8b0]
mov dword [0x45fcb0], eax
mov eax, dword [0x45f8b4]
lea esi, [eax + eax]
and esi, 0xe3521d4
neg esi
add eax, esi
add eax, 0x71a90ea
mov dword [0x45fcb4], eax
movups xmm0, xmmword [str._n_nE4v]
xorps xmm0, xmmword [0x45bc10]
mov eax, 0xa0d03d9f
xor eax, dword [0x45f8c8]
movq xmm1, qword [0x45f8cc]
movdqa xmm2, xmm1
paddd xmm2, xmm1
pand xmm2, xmmword [0x45bc20]
movups xmmword [0x45fcb8], xmm0
psubd xmm1, xmm2
paddd xmm1, xmmword [0x45bc30]
mov dword [0x45fcc8], eax
movups xmm0, xmmword [0x45f8d4]
xorps xmm0, xmmword [0x45bc40]
movq qword [0x45fccc], xmm1
movsd xmm1, qword [0x45f8e4]
xorps xmm1, xmmword [0x45bc50]
movups xmmword [0x45fcd4], xmm0
movlps qword [0x45fce4], xmm1
mov eax, dword [0x45f8ec]
lea esi, [eax + eax]
and esi, 0x598fa144
neg esi
add eax, esi
add eax, 0x2cc7d0a2
mov dword [0x45fcec], eax
movsd xmm0, qword [0x45f8f0]
xorps xmm0, xmmword [0x45bc60]
movq xmm1, qword [0x45f8f8]
movdqa xmm2, xmm1
paddd xmm2, xmm1
pand xmm2, xmmword [0x45bc70]
movlps qword [0x45fcf0], xmm0
psubd xmm1, xmm2
paddd xmm1, xmmword [0x45bc80]
movq qword [0x45fcf8], xmm1
movaps xmm0, xmmword [0x45f900]
xorps xmm0, xmmword [0x45bc90]
movaps xmmword [0x45fd00], xmm0
mov eax, 0x46fcedae
xor eax, dword [0x45f910]
mov dword [0x45fd10], eax
mov eax, dword [0x45f914]
lea esi, [eax + eax]
and esi, 0xfd85f814
neg esi
add eax, esi
add eax, 0x7ec2fc0a
mov dword [0x45fd14], eax
movsd xmm0, qword [0x45f918]
xorps xmm0, xmmword [0x45bca0]
movlps qword [0x45fd18], xmm0
mov eax, 0x6f58a300
xor eax, dword [0x45f920]
mov dword [0x45fd20], eax
mov eax, dword [0x45f924]
lea esi, [eax + eax]
and esi, 0xf07a05d6
neg esi
add eax, esi
add eax, 0x783d02eb
mov dword [0x45fd24], eax
mov eax, 0xc4bd90e3
xor eax, dword [0x45f928]
mov dword [0x45fd28], eax
mov eax, dword [0x45f92c]
lea esi, [eax + eax]
and esi, 0x4884fbd6
neg esi
add eax, esi
add eax, 0xa4427deb
mov dword [0x45fd2c], eax
movaps xmm0, xmmword [0x45f930]
xorps xmm0, xmmword [0x45bcb0]
movaps xmmword [0x45fd30], xmm0
movsd xmm0, qword [0x45f940]
xorps xmm0, xmmword [0x45bcc0]
movlps qword [0x45fd40], xmm0
mov eax, dword [0x45f948]
lea esi, [eax + eax]
and esi, 0x8a4bdbdc
neg esi
add eax, esi
add eax, 0x4525edee
mov dword [0x45fd48], eax
movups xmm0, xmmword [0x45f94c]
xorps xmm0, xmmword [0x45bcd0]
movups xmmword [0x45fd4c], xmm0
mov eax, dword [0x45f95c]
lea esi, [eax + eax]
and esi, 0x4e754ee4
neg esi
add eax, esi
add eax, 0x273aa772
mov dword [0x45fd5c], eax
movaps xmm0, xmmword [0x45f960]
xorps xmm0, xmmword [0x45bce0]
movaps xmmword [0x45fd60], xmm0
mov eax, dword [0x45f970]
lea esi, [eax + eax]
and esi, 0x3b6379f6
neg esi
add eax, esi
add eax, 0x1db1bcfb
mov dword [str.C__S], eax
movsd xmm0, qword [0x45f974]
xorps xmm0, xmmword [str.8h.r]
movlps qword [0x45fd74], xmm0
mov eax, 0xd6427292
xor eax, dword [0x45f97c]
mov dword [0x45fd7c], eax
mov eax, dword [0x45f980]
lea esi, [eax + eax]
and esi, 0xeb7a7e2
neg esi
add eax, esi
add eax, 0x75bd3f1
mov dword [0x45fd80], eax
mov eax, 0xc9ef8e7c
xor eax, dword [0x45f984]
mov dword [0x45fd84], eax
mov eax, dword [0x45f988]
lea esi, [eax + eax]
and esi, 0x28083728
neg esi
add eax, esi
add eax, 0x14041b94
mov dword [0x45fd88], eax
movups xmm0, xmmword [0x45f98c]
xorps xmm0, xmmword [0x45bd00]
movups xmmword [0x45fd8c], xmm0
mov eax, dword [0x45f99c]
lea esi, [eax + eax]
and esi, 0x2680ef9e
neg esi
add eax, esi
add eax, 0x934077cf
mov dword [0x45fd9c], eax
movaps xmm0, xmmword [0x45f9a0]
xorps xmm0, xmmword [0x45bd10]
movaps xmmword [0x45fda0], xmm0
movq xmm0, qword [0x45f9b0]
movdqa xmm1, xmm0
paddd xmm1, xmm0
pand xmm1, xmmword [0x45bd20]
psubd xmm0, xmm1
paddd xmm0, xmmword [0x45bd30]
movq qword [0x45fdb0], xmm0
movups xmm0, xmmword [0x45f9b8]
xorps xmm0, xmmword [0x45bd40]
movups xmmword [0x45fdb8], xmm0
movups xmm0, xmmword [0x45f9c8]
xorps xmm0, xmmword [0x45bd50]
movups xmmword [0x45fdc8], xmm0
movsd xmm0, qword [0x45f9d8]
xorps xmm0, xmmword [0x45bd60]
movlps qword [0x45fdd8], xmm0
mov eax, 0x2567aded
xor eax, dword [0x45f9e0]
mov dword [0x45fde0], eax
mov eax, dword [0x45f9e4]
mov esi, eax
not esi
or eax, 0xb5fb11f
or esi, 0xf4a04ee0
and esi, eax
not esi
mov dword [0x45fde4], esi
movsd xmm0, qword [0x45f9e8]
xorps xmm0, xmmword [0x45bd70]
movlps qword [0x45fde8], xmm0
mov esi, dword [esp + 0x14]
mov dword [0x47f658], 1
not edx
cmp ecx, 4
jb 0x403b53
nop dword [eax + eax]
movzx eax, byte [esi]
xor al, dl
movzx eax, al
shr edx, 8
xor edx, dword [eax*4 + 0x45f9f0]
mov eax, edx
xor dl, byte [esi + 1]
shr eax, 8
movzx edx, dl
xor eax, dword [edx*4 + 0x45f9f0]
mov ebx, eax
xor al, byte [esi + 2]
shr ebx, 8
movzx eax, al
xor ebx, dword [eax*4 + 0x45f9f0]
mov edx, ebx
xor bl, byte [esi + 3]
shr edx, 8
movzx eax, bl
xor edx, dword [eax*4 + 0x45f9f0]
add esi, 4
add ecx, 0xfffffffc
cmp ecx, 3
ja 0x403b00
test ecx, ecx
je 0x403b68
test cl, 1
jne 0x403b6c
mov edi, ecx
cmp ecx, 1
jne 0x403b96
jmp 0x403be7
mov eax, edx
jmp 0x403be7
mov eax, edx
shr eax, 8
movzx edi, byte [esi]
xor edi, edx
xor edi, 0x3fffff00
or edx, 0xff
and edx, edi
xor eax, dword [edx*4 + 0x45f9f0]
inc esi
lea edi, [ecx - 1]
mov edx, eax
cmp ecx, 1
je 0x403be7
xor ecx, ecx
mov eax, edx
nop word [eax + eax]
mov edx, eax
shr edx, 8
movzx ebx, byte [esi + ecx]
xor ebx, eax
xor ebx, 0x3fffff00
or eax, 0xff
and eax, ebx
xor edx, dword [eax*4 + 0x45f9f0]
mov eax, edx
shr eax, 8
movzx ebx, byte [esi + ecx + 1]
xor ebx, edx
xor ebx, 0x3fffff00
or edx, 0xff
and edx, ebx
xor eax, dword [edx*4 + 0x45f9f0]
add ecx, 2
cmp edi, ecx
jne 0x403ba0
not eax
pop esi
pop edi
pop ebx
ret