Function at 0x402f90
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 [0x471c1c]
test eax, eax
jne 0x403b08
movq xmm0, qword [0x4575f0]
pxor xmm0, xmmword [0x453900]
movq xmm1, qword [0x4575f8]
movdqa xmm2, xmm1
paddd xmm2, xmm1
pand xmm2, xmmword [0x453910]
psubd xmm1, xmm2
paddd xmm1, xmmword [0x453920]
punpcklqdq xmm0, xmm1
movdqa xmmword [0x4579f0], xmm0
movaps xmm0, xmmword [0x457600]
xorps xmm0, xmmword [0x453930]
movaps xmmword [0x457a00], xmm0
mov eax, dword [0x457610]
mov esi, eax
not esi
or esi, 0xab4070e
or eax, 0xf54bf8f1
and eax, esi
mov dword [0x457a10], eax
mov eax, 0xe92dcb6f
xor eax, dword [0x457614]
mov dword [0x457a14], eax
mov eax, dword [0x457618]
lea esi, [eax + eax]
and esi, 0x3133d010
neg esi
add eax, esi
add eax, 0x9899e808
mov dword [0x457a18], eax
movups xmm0, xmmword [0x45761c]
xorps xmm0, xmmword [0x453940]
movups xmmword [0x457a1c], xmm0
mov eax, dword [0x45762c]
lea esi, [eax + eax]
and esi, 0x4f0f2cb6
neg esi
add eax, esi
add eax, 0xa787965b
mov dword [0x457a2c], eax
movsd xmm0, qword [0x457630]
xorps xmm0, xmmword [0x453950]
movlps qword [0x457a30], xmm0
mov eax, 0xe67f6186
xor eax, dword [0x457638]
mov dword [0x457a38], eax
mov eax, dword [0x45763c]
lea esi, [eax + eax]
and esi, 0xe63c91c8
neg esi
add eax, esi
add eax, 0xf31e48e4
mov dword [0x457a3c], eax
movsd xmm0, qword [0x457640]
xorps xmm0, xmmword [0x453960]
movlps qword [0x457a40], xmm0
mov eax, dword [0x457648]
mov esi, eax
not esi
or eax, 0x759f7b96
or esi, 0x8a608469
and esi, eax
not esi
mov dword [0x457a48], esi
mov eax, 0xe845eddc
xor eax, dword [0x45764c]
mov dword [0x457a4c], eax
mov eax, dword [0x457650]
mov esi, eax
not esi
or esi, 0x1a4dec91
or eax, 0xe5b2136e
and eax, esi
mov dword [0x457a50], eax
movups xmm0, xmmword [0x457654]
xorps xmm0, xmmword [0x453970]
movups xmmword [0x457a54], xmm0
movsd xmm0, qword [0x457664]
xorps xmm0, xmmword [0x453980]
movlps qword [0x457a64], xmm0
mov eax, dword [0x45766c]
lea esi, [eax + eax]
and esi, 0xdf195be6
neg esi
add eax, esi
add eax, 0xef8cadf3
mov esi, 0x16614e29
xor esi, dword [0x457670]
mov dword [0x457a6c], eax
mov dword [0x457a70], esi
mov eax, dword [0x457674]
lea esi, [eax + eax]
and esi, 0xbf95990a
neg esi
add eax, esi
add eax, 0x5fcacc85
mov dword [0x457a74], eax
movups xmm0, xmmword [0x457678]
xorps xmm0, xmmword [0x453990]
movups xmmword [0x457a78], xmm0
mov eax, dword [0x457688]
mov esi, eax
not esi
or esi, 0xdf5b0c5e
or eax, 0x20a4f3a1
and eax, esi
mov dword [0x457a88], eax
mov eax, dword [0x45768c]
lea esi, [eax + eax]
and esi, 0xb6eb394
neg esi
add eax, esi
add eax, 0x85b759ca
mov dword [0x457a8c], eax
movaps xmm0, xmmword [0x457690]
xorps xmm0, xmmword [0x4539a0]
movaps xmmword [0x457a90], xmm0
movaps xmm0, xmmword [0x4576a0]
xorps xmm0, xmmword [0x4539b0]
movaps xmmword [0x457aa0], xmm0
movaps xmm0, xmmword [0x4576b0]
xorps xmm0, xmmword [0x4539c0]
movaps xmmword [0x457ab0], xmm0
mov eax, 0x76479fe
xor eax, dword [0x4576c0]
mov dword [0x457ac0], eax
mov eax, dword [0x4576c4]
lea esi, [eax + eax]
and esi, 0xe28837f2
neg esi
add eax, esi
add eax, 0x71441bf9
mov dword [0x457ac4], eax
movups xmm0, xmmword [0x4576c8]
xorps xmm0, xmmword [0x4539d0]
movups xmmword [0x457ac8], xmm0
movups xmm0, xmmword [str.h__v]
xorps xmm0, xmmword [0x4539e0]
movups xmmword [0x457ad8], xmm0
movups xmm0, xmmword [0x4576e8]
xorps xmm0, xmmword [0x4539f0]
movups xmmword [0x457ae8], xmm0
mov eax, 0x3b719577
xor eax, dword [0x4576f8]
mov dword [0x457af8], eax
mov eax, dword [0x4576fc]
mov esi, eax
not esi
or eax, 0xf1c6c6cd
or esi, 0xe393932
and esi, eax
not esi
mov dword [0x457afc], esi
movaps xmm0, xmmword [0x457700]
xorps xmm0, xmmword [str._1m._5Hg]
movaps xmmword [0x457b00], xmm0
movaps xmm0, xmmword [0x457710]
xorps xmm0, xmmword [0x453a10]
movaps xmmword [0x457b10], xmm0
movaps xmm0, xmmword [0x457720]
xorps xmm0, xmmword [str.P7jO]
movaps xmmword [0x457b20], xmm0
movsd xmm0, qword [0x457730]
xorps xmm0, xmmword [0x453a30]
movlps qword [0x457b30], xmm0
mov eax, dword [0x457738]
lea esi, [eax + eax]
and esi, 0xbcf740c4
neg esi
add eax, esi
add eax, 0x5e7ba062
mov dword [0x457b38], eax
movsd xmm0, qword [0x45773c]
xorps xmm0, xmmword [0x453a40]
movlps qword [0x457b3c], xmm0
mov eax, 0x39f9614f
xor eax, dword [0x457744]
mov dword [0x457b44], eax
mov eax, dword [0x457748]
lea esi, [eax + eax]
and esi, 0x2d514f12
neg esi
add eax, esi
add eax, 0x96a8a789
mov dword [0x457b48], eax
movups xmm0, xmmword [0x45774c]
xorps xmm0, xmmword [0x453a50]
movups xmmword [0x457b4c], xmm0
movups xmm0, xmmword [0x45775c]
xorps xmm0, xmmword [0x453a60]
movups xmmword [0x457b5c], xmm0
movups xmm0, xmmword [0x45776c]
xorps xmm0, xmmword [0x453a70]
movups xmmword [0x457b6c], xmm0
mov eax, dword [0x45777c]
lea esi, [eax + eax]
and esi, 0xdf13bbaa
neg esi
add eax, esi
add eax, 0xef89ddd5
mov dword [0x457b7c], eax
movsd xmm0, qword [0x457780]
xorps xmm0, xmmword [0x453a80]
mov eax, 0x7efec251
xor eax, dword [0x457788]
movq xmm1, qword [0x45778c]
movdqa xmm2, xmm1
paddd xmm2, xmm1
pand xmm2, xmmword [0x453a90]
movlps qword [0x457b80], xmm0
psubd xmm1, xmm2
paddd xmm1, xmmword [0x453aa0]
mov dword [0x457b88], eax
movq qword [0x457b8c], xmm1
mov eax, dword [0x457794]
mov esi, eax
not esi
or eax, 0xeca8525d
or esi, 0x1357ada2
and esi, eax
not esi
mov eax, 0x6b770634
xor eax, dword [0x457798]
mov dword [0x457b94], esi
mov dword [0x457b98], eax
mov eax, dword [0x45779c]
mov esi, eax
not esi
or eax, 0x36011355
or esi, 0xc9feecaa
and esi, eax
not esi
mov eax, 0xf9724612
xor eax, dword [0x4577a0]
mov dword [str._rr_v_r], esi
mov dword [0x457ba0], eax
mov eax, dword [0x4577a4]
lea esi, [eax + eax]
and esi, 0x4a26b524
neg esi
add eax, esi
add eax, 0xa5135a92
mov dword [0x457ba4], eax
movsd xmm0, qword [0x4577a8]
xorps xmm0, xmmword [0x453ab0]
movlps qword [0x457ba8], xmm0
mov eax, 0x56eda87
xor eax, dword [0x4577b0]
mov dword [0x457bb0], eax
mov eax, dword [0x4577b4]
lea esi, [eax + eax]
and esi, 0xf21f8704
neg esi
add eax, esi
add eax, 0xf90fc382
movsd xmm0, qword [0x4577b8]
xorps xmm0, xmmword [str.4___]
mov dword [0x457bb4], eax
mov eax, 0x3453f811
xor eax, dword [0x4577c0]
movlps qword [0x457bb8], xmm0
mov dword [0x457bc0], eax
mov eax, dword [0x4577c4]
lea esi, [eax + eax]
and esi, 0xdda782e8
neg esi
add eax, esi
add eax, 0x6ed3c174
mov dword [0x457bc4], eax
movups xmm0, xmmword [0x4577c8]
xorps xmm0, xmmword [0x453ad0]
movups xmmword [0x457bc8], xmm0
movups xmm0, xmmword [0x4577d8]
xorps xmm0, xmmword [0x453ae0]
movups xmmword [0x457bd8], xmm0
mov eax, dword [0x4577e8]
lea esi, [eax + eax]
and esi, 0xc9cf7374
neg esi
add eax, esi
add eax, 0xe4e7b9ba
movsd xmm0, qword [0x4577ec]
xorps xmm0, xmmword [0x453af0]
mov dword [0x457be8], eax
movlps qword [0x457bec], xmm0
mov eax, dword [0x4577f4]
mov esi, eax
not esi
or eax, 0xcf6f2468
or esi, 0x3090db97
and esi, eax
not esi
movups xmm0, xmmword [0x4577f8]
xorps xmm0, xmmword [0x453b00]
mov dword [0x457bf4], esi
mov eax, 0xc2d6c1ec
xor eax, dword [0x457808]
movups xmmword [0x457bf8], xmm0
mov dword [0x457c08], eax
mov eax, dword [0x45780c]
lea esi, [eax + eax]
and esi, 0x1cc45428
neg esi
add eax, esi
add eax, 0xe622a14
mov dword [0x457c0c], eax
movsd xmm0, qword [0x457810]
xorps xmm0, xmmword [0x453b10]
movq xmm1, qword [0x457818]
movdqa xmm2, xmm1
paddd xmm2, xmm1
pand xmm2, xmmword [0x453b20]
movlps qword [0x457c10], xmm0
psubd xmm1, xmm2
paddd xmm1, xmmword [0x453b30]
movq qword [0x457c18], xmm1
mov eax, 0x96f6e87d
xor eax, dword [0x457820]
mov dword [0x457c20], eax
mov eax, dword [0x457824]
lea esi, [eax + eax]
and esi, 0x97b92c34
neg esi
add eax, esi
add eax, 0x4bdc961a
mov dword [0x457c24], eax
movups xmm0, xmmword [0x457828]
xorps xmm0, xmmword [0x453b40]
movups xmmword [0x457c28], xmm0
mov eax, dword [0x457838]
lea esi, [eax + eax]
and esi, 0x981cf0d0
neg esi
add eax, esi
add eax, 0x4c0e7868
mov dword [0x457c38], eax
mov eax, 0xd99c27d5
xor eax, dword [0x45783c]
mov dword [0x457c3c], eax
mov eax, dword [0x457840]
mov esi, eax
not esi
or eax, 0x14b85ec4
or esi, 0xeb47a13b
and esi, eax
not esi
mov dword [0x457c40], esi
movups xmm0, xmmword [0x457844]
xorps xmm0, xmmword [0x453b50]
movups xmmword [0x457c44], xmm0
movups xmm0, xmmword [0x457854]
xorps xmm0, xmmword [0x453b60]
movups xmmword [0x457c54], xmm0
movsd xmm0, qword [0x457864]
xorps xmm0, xmmword [0x453b70]
mov eax, 0xcd5f263b
xor eax, dword [0x45786c]
movq xmm1, qword [0x457870]
movdqa xmm2, xmm1
paddd xmm2, xmm1
pand xmm2, xmmword [0x453b80]
movlps qword [0x457c64], xmm0
psubd xmm1, xmm2
paddd xmm1, xmmword [0x453b90]
mov dword [0x457c6c], eax
movups xmm0, xmmword [0x457878]
xorps xmm0, xmmword [0x453ba0]
movq qword [0x457c70], xmm1
movups xmm1, xmmword [0x457888]
xorps xmm1, xmmword [0x453bb0]
movups xmmword [0x457c78], xmm0
mov eax, 0x125b681
xor eax, dword [0x457898]
movups xmmword [0x457c88], xmm1
mov dword [0x457c98], eax
movdqu xmm0, xmmword [0x45789c]
movdqa xmm1, xmm0
paddd xmm1, xmm0
pand xmm1, xmmword [0x453bc0]
psubd xmm0, xmm1
paddd xmm0, xmmword [0x453bd0]
movdqu xmmword [0x457c9c], xmm0
movups xmm0, xmmword [0x4578ac]
xorps xmm0, xmmword [0x453be0]
movups xmmword [0x457cac], xmm0
mov eax, 0x549c732f
xor eax, dword [0x4578bc]
mov dword [0x457cbc], eax
mov eax, dword [0x4578c0]
mov esi, eax
not esi
or eax, 0x412f5a5b
or esi, 0xbed0a5a4
and esi, eax
not esi
mov dword [0x457cc0], esi
movsd xmm0, qword [0x4578c4]
xorps xmm0, xmmword [0x453bf0]
movlps qword [0x457cc4], xmm0
mov eax, dword [0x4578cc]
lea esi, [eax + eax]
and esi, 0xb7fb6b9e
neg esi
add eax, esi
add eax, 0xdbfdb5cf
mov dword [0x457ccc], eax
movsd xmm0, qword [0x4578d0]
xorps xmm0, xmmword [0x453c00]
movlps qword [0x457cd0], xmm0
mov eax, dword [0x4578d8]
lea esi, [eax + eax]
and esi, 0xe341005c
neg esi
add eax, esi
add eax, 0x71a0802e
mov dword [0x457cd8], eax
movups xmm0, xmmword [0x4578dc]
xorps xmm0, xmmword [0x453c10]
movups xmmword [0x457cdc], xmm0
movsd xmm0, qword [0x4578ec]
xorps xmm0, xmmword [0x453c20]
movlps qword [0x457cec], xmm0
mov eax, 0x14b8372c
xor eax, dword [0x4578f4]
mov dword [0x457cf4], eax
mov eax, dword [0x4578f8]
mov esi, eax
not esi
or esi, 0xb559fc12
or eax, 0x4aa603ed
and eax, esi
mov esi, 0x9f74d131
xor esi, dword [0x4578fc]
mov dword [0x457cf8], eax
mov dword [0x457cfc], esi
mov eax, dword [0x457900]
mov esi, eax
not esi
or eax, 0xa955cf6f
or esi, 0x56aa3090
and esi, eax
not esi
mov dword [0x457d00], esi
mov eax, dword [0x457904]
lea esi, [eax + eax]
and esi, 0xe141cd36
neg esi
add eax, esi
add eax, 0x70a0e69b
mov dword [0x457d04], eax
movups xmm0, xmmword [0x457908]
xorps xmm0, xmmword [0x453c30]
movups xmmword [0x457d08], xmm0
mov eax, dword [0x457918]
lea esi, [eax + eax]
and esi, 0xb51c0bb6
neg esi
add eax, esi
add eax, 0x5a8e05db
mov esi, 0xd527b077
xor esi, dword [0x45791c]
mov dword [0x457d18], eax
mov dword [0x457d1c], esi
mov eax, dword [str.KxIgx]
lea esi, [eax + eax]
and esi, 0x9337eda0
neg esi
add eax, esi
add eax, 0x499bf6d0
mov dword [0x457d20], eax
movups xmm0, xmmword [0x457924]
xorps xmm0, xmmword [0x453c40]
movups xmmword [0x457d24], xmm0
mov eax, dword [0x457934]
mov esi, eax
not esi
or eax, 0x8e889648
or esi, 0x717769b7
and esi, eax
not esi
mov dword [0x457d34], esi
mov eax, dword [0x457938]
lea esi, [eax + eax]
and esi, 0xee1648ba
neg esi
add eax, esi
add eax, 0xf70b245d
movups xmm0, xmmword [0x45793c]
xorps xmm0, xmmword [0x453c50]
mov dword [0x457d38], eax
movups xmmword [0x457d3c], xmm0
movq xmm0, qword [0x45794c]
movdqa xmm1, xmm0
paddd xmm1, xmm0
pand xmm1, xmmword [0x453c60]
psubd xmm0, xmm1
paddd xmm0, xmmword [0x453c70]
movq qword [0x457d4c], xmm0
movsd xmm0, qword [0x457954]
xorps xmm0, xmmword [0x453c80]
movlps qword [0x457d54], xmm0
mov eax, 0xd1084495
xor eax, dword [0x45795c]
mov dword [0x457d5c], eax
mov eax, dword [str._NO_]
lea esi, [eax + eax]
and esi, 0x8394af82
neg esi
add eax, esi
add eax, 0xc1ca57c1
mov dword [0x457d60], eax
movups xmm0, xmmword [0x457964]
xorps xmm0, xmmword [0x453c90]
movups xmmword [0x457d64], xmm0
movups xmm0, xmmword [0x457974]
xorps xmm0, xmmword [0x453ca0]
movups xmmword [str.OfO], xmm0
mov eax, 0x1b81104f
xor eax, dword [0x457984]
mov dword [0x457d84], eax
mov eax, dword [0x457988]
lea esi, [eax + eax]
and esi, 0xdea9d0f0
neg esi
add eax, esi
add eax, 0x6f54e878
mov dword [0x457d88], eax
movups xmm0, xmmword [0x45798c]
xorps xmm0, xmmword [0x453cb0]
movups xmmword [0x457d8c], xmm0
mov eax, dword [0x45799c]
lea esi, [eax + eax]
and esi, 0x5f3b287e
neg esi
add eax, esi
add eax, 0x2f9d943f
mov dword [0x457d9c], eax
movaps xmm0, xmmword [0x4579a0]
xorps xmm0, xmmword [0x453cc0]
movaps xmmword [0x457da0], xmm0
movaps xmm0, xmmword [0x4579b0]
xorps xmm0, xmmword [0x453cd0]
movaps xmmword [0x457db0], xmm0
movaps xmm0, xmmword [0x4579c0]
xorps xmm0, xmmword [0x453ce0]
movaps xmmword [0x457dc0], xmm0
mov eax, dword [0x4579d0]
mov esi, eax
not esi
or esi, 0xa5d551c0
or eax, 0x5a2aae3f
and eax, esi
mov dword [0x457dd0], eax
movups xmm0, xmmword [0x4579d4]
xorps xmm0, xmmword [0x453cf0]
movups xmmword [0x457dd4], xmm0
movsd xmm0, qword [0x4579e4]
xorps xmm0, xmmword [0x453d00]
movlps qword [0x457de4], xmm0
mov eax, 0x3ccf709d
xor eax, dword [0x4579ec]
mov dword [0x457dec], eax
mov esi, dword [esp + 0x14]
mov dword [0x471c1c], 1
not edx
cmp ecx, 4
jb 0x403b8f
nop dword [eax]
mov eax, edx
xor dl, byte [esi]
shr eax, 8
movzx edx, dl
xor eax, dword [edx*4 + 0x4579f0]
movzx edx, byte [esi + 1]
mov edi, eax
and edi, edx
add edx, eax
add edi, edi
sub edx, edi
shr eax, 8
movzx edx, dl
mov edx, dword [edx*4 + 0x4579f0]
mov edi, edx
and edi, eax
add edi, edi
sub edx, edi
add edx, eax
mov eax, edx
shr eax, 8
xor dl, byte [esi + 2]
movzx edx, dl
xor eax, dword [edx*4 + 0x4579f0]
mov edx, eax
shr edx, 8
xor al, byte [esi + 3]
movzx eax, al
mov eax, dword [eax*4 + 0x4579f0]
mov edi, edx
and edi, eax
add edx, eax
add edi, edi
sub edx, edi
add esi, 4
add ecx, 0xfffffffc
cmp ecx, 3
ja 0x403b20
test ecx, ecx
je 0x403ba4
test cl, 1
jne 0x403bab
mov edi, ecx
cmp ecx, 1
jne 0x403bd5
jmp 0x403c27
mov eax, edx
jmp 0x403c27
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 + 0x4579f0]
inc esi
lea edi, [ecx - 1]
mov edx, eax
cmp ecx, 1
je 0x403c27
xor ecx, ecx
mov eax, edx
nop dword [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 + 0x4579f0]
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 + 0x4579f0]
add ecx, 2
cmp edi, ecx
jne 0x403be0
not eax
pop esi
pop edi
pop ebx
ret