Function at 0x403010
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
mov esi, dword [esp + 0x1c]
mov eax, dword [esp + 0x14]
mov ecx, dword [0x477ebc]
test ecx, ecx
jne 0x403c71
movaps xmm0, xmmword [0x45c5f0]
xorps xmm0, xmmword [0x458910]
movaps xmmword [0x45c9f0], xmm0
movsd xmm0, qword [str.XWp]
xorps xmm0, xmmword [0x458920]
movlps qword [0x45ca00], xmm0
mov ecx, 0x55a86de5
xor ecx, dword [0x45c608]
mov dword [0x45ca08], ecx
mov ecx, dword [0x45c60c]
lea edx, [ecx + ecx]
and edx, 0x2aaaf1d8
neg edx
add ecx, edx
add ecx, 0x155578ec
mov dword [str.i__fG__], ecx
movsd xmm0, qword [0x45c610]
xorps xmm0, xmmword [0x458930]
movlps qword [0x45ca10], xmm0
mov ecx, dword [0x45c618]
lea edx, [ecx + ecx]
and edx, 0x4816f6f2
neg edx
add ecx, edx
add ecx, 0x240b7b79
mov dword [0x45ca18], ecx
movups xmm0, xmmword [0x45c61c]
xorps xmm0, xmmword [0x458940]
movups xmmword [str.76__], xmm0
mov ecx, dword [0x45c62c]
lea edx, [ecx + ecx]
and edx, 0x5fcab686
neg edx
add ecx, edx
add ecx, 0xafe55b43
mov dword [0x45ca2c], ecx
movaps xmm0, xmmword [0x45c630]
xorps xmm0, xmmword [0x458950]
movaps xmmword [0x45ca30], xmm0
movsd xmm0, qword [0x45c640]
xorps xmm0, xmmword [0x458960]
movlps qword [0x45ca40], xmm0
mov ecx, dword [0x45c648]
lea edx, [ecx + ecx]
and edx, 0x6a5454f2
neg edx
add ecx, edx
add ecx, 0xb52a2a79
mov dword [0x45ca48], ecx
movups xmm0, xmmword [0x45c64c]
xorps xmm0, xmmword [0x458970]
movups xmmword [0x45ca4c], xmm0
mov ecx, dword [0x45c65c]
lea edx, [ecx + ecx]
and edx, 0xae4d94b0
neg edx
add ecx, edx
add ecx, 0x5726ca58
mov dword [0x45ca5c], ecx
mov ecx, 0x16d8089b
xor ecx, dword [0x45c660]
mov dword [0x45ca60], ecx
mov ecx, dword [0x45c664]
mov edx, ecx
not edx
or edx, 0xb2999984
or ecx, 0x4d66667b
and ecx, edx
mov edx, 0xa003f998
xor edx, dword [0x45c668]
mov dword [0x45ca64], ecx
mov dword [0x45ca68], edx
mov ecx, dword [0x45c66c]
mov edx, ecx
not edx
or edx, 0xd6da6bb0
or ecx, 0x2925944f
and ecx, edx
mov dword [0x45ca6c], ecx
movsd xmm0, qword [0x45c670]
xorps xmm0, xmmword [0x458980]
movlps qword [0x45ca70], xmm0
mov ecx, dword [0x45c678]
lea edx, [ecx + ecx]
and edx, 0xe1dd9bde
neg edx
add ecx, edx
add ecx, 0x70eecdef
mov dword [0x45ca78], ecx
movsd xmm0, qword [0x45c67c]
xorps xmm0, xmmword [str.ek__v]
movlps qword [0x45ca7c], xmm0
mov ecx, 0xb4945e23
xor ecx, dword [0x45c684]
mov dword [0x45ca84], ecx
mov ecx, dword [0x45c688]
lea edx, [ecx + ecx]
and edx, 0x685d54e6
neg edx
add ecx, edx
add ecx, 0x342eaa73
mov dword [0x45ca88], ecx
movups xmm0, xmmword [0x45c68c]
xorps xmm0, xmmword [0x4589a0]
movups xmmword [0x45ca8c], xmm0
mov ecx, dword [0x45c69c]
lea edx, [ecx + ecx]
and edx, 0xed01735a
neg edx
add ecx, edx
add ecx, 0x7680b9ad
mov dword [0x45ca9c], ecx
mov ecx, 0xeda8a7fe
xor ecx, dword [0x45c6a0]
mov dword [0x45caa0], ecx
mov ecx, dword [0x45c6a4]
lea edx, [ecx + ecx]
and edx, 0x13340864
neg edx
add ecx, edx
add ecx, 0x99a0432
mov dword [0x45caa4], ecx
movups xmm0, xmmword [0x45c6a8]
xorps xmm0, xmmword [0x4589b0]
movups xmmword [0x45caa8], xmm0
movups xmm0, xmmword [0x45c6b8]
xorps xmm0, xmmword [str.z_DF]
movups xmmword [0x45cab8], xmm0
movsd xmm0, qword [0x45c6c8]
xorps xmm0, xmmword [0x4589d0]
movlps qword [0x45cac8], xmm0
mov ecx, 0x6ce6c25c
xor ecx, dword [0x45c6d0]
mov dword [0x45cad0], ecx
mov ecx, dword [0x45c6d4]
mov edx, ecx
not edx
or edx, 0x7bbf6a18
or ecx, 0x844095e7
and ecx, edx
mov dword [0x45cad4], ecx
mov ecx, 0xa4071917
xor ecx, dword [0x45c6d8]
mov dword [0x45cad8], ecx
mov ecx, dword [0x45c6dc]
lea edx, [ecx + ecx]
and edx, 0x70eaff44
neg edx
add ecx, edx
add ecx, 0x38757fa2
mov edx, 0xc715ce30
xor edx, dword [0x45c6e0]
mov dword [0x45cadc], ecx
mov dword [0x45cae0], edx
mov ecx, dword [0x45c6e4]
lea edx, [ecx + ecx]
and edx, 0x6db6741a
neg edx
add ecx, edx
add ecx, 0xb6db3a0d
mov dword [0x45cae4], ecx
movups xmm0, xmmword [0x45c6e8]
xorps xmm0, xmmword [0x4589e0]
movups xmmword [0x45cae8], xmm0
movups xmm0, xmmword [0x45c6f8]
xorps xmm0, xmmword [0x4589f0]
movups xmmword [0x45caf8], xmm0
mov ecx, dword [0x45c708]
lea edx, [ecx + ecx]
and edx, 0x9663eb04
neg edx
add ecx, edx
add ecx, 0xcb31f582
movups xmm0, xmmword [0x45c70c]
xorps xmm0, xmmword [0x458a00]
mov dword [0x45cb08], ecx
movups xmm1, xmmword [0x45c71c]
xorps xmm1, xmmword [0x458a10]
movups xmmword [0x45cb0c], xmm0
movups xmm0, xmmword [0x45c72c]
xorps xmm0, xmmword [0x458a20]
movups xmmword [0x45cb1c], xmm1
movsd xmm1, qword [0x45c73c]
xorps xmm1, xmmword [0x458a30]
movups xmmword [0x45cb2c], xmm0
movlps qword [0x45cb3c], xmm1
mov ecx, dword [0x45c744]
lea edx, [ecx + ecx]
and edx, 0x7a99bca0
neg edx
add ecx, edx
add ecx, 0xbd4cde50
mov dword [0x45cb44], ecx
movups xmm0, xmmword [0x45c748]
xorps xmm0, xmmword [0x458a40]
movups xmmword [0x45cb48], xmm0
mov ecx, 0xe16ad9e5
xor ecx, dword [0x45c758]
mov dword [0x45cb58], ecx
mov ecx, dword [0x45c75c]
mov edx, ecx
not edx
or edx, 0xe0a98cb8
or ecx, 0x1f567347
and ecx, edx
mov dword [0x45cb5c], ecx
movsd xmm0, qword [0x45c760]
xorps xmm0, xmmword [0x458a50]
movlps qword [0x45cb60], xmm0
mov ecx, 0x6e8e71e
xor ecx, dword [0x45c768]
mov dword [0x45cb68], ecx
movq xmm0, qword [0x45c76c]
movdqa xmm1, xmm0
paddd xmm1, xmm0
pand xmm1, xmmword [0x458a60]
psubd xmm0, xmm1
paddd xmm0, xmmword [0x458a70]
movq qword [0x45cb6c], xmm0
movups xmm0, xmmword [0x45c774]
xorps xmm0, xmmword [0x458a80]
movups xmmword [0x45cb74], xmm0
movsd xmm0, qword [0x45c784]
xorps xmm0, xmmword [0x458a90]
movq xmm1, qword [0x45c78c]
movdqa xmm2, xmm1
paddd xmm2, xmm1
pand xmm2, xmmword [0x458aa0]
movlps qword [0x45cb84], xmm0
psubd xmm1, xmm2
paddd xmm1, xmmword [0x458ab0]
movq qword [0x45cb8c], xmm1
movsd xmm0, qword [0x45c794]
xorps xmm0, xmmword [0x458ac0]
movlps qword [0x45cb94], xmm0
mov ecx, dword [0x45c79c]
lea edx, [ecx + ecx]
and edx, 0x61b31362
neg edx
add ecx, edx
add ecx, 0x30d989b1
mov dword [0x45cb9c], ecx
movaps xmm0, xmmword [0x45c7a0]
xorps xmm0, xmmword [str.NQ6__Q2]
movaps xmmword [0x45cba0], xmm0
mov ecx, dword [0x45c7b0]
mov edx, ecx
not edx
or edx, 0x602974a8
or ecx, 0x9fd68b57
and ecx, edx
mov dword [0x45cbb0], ecx
mov ecx, dword [0x45c7b4]
lea edx, [ecx + ecx]
and edx, 0x7e612fac
neg edx
add ecx, edx
add ecx, 0x3f3097d6
mov dword [0x45cbb4], ecx
mov ecx, 0x41e7e36b
xor ecx, dword [0x45c7b8]
mov dword [0x45cbb8], ecx
mov ecx, dword [0x45c7bc]
lea edx, [ecx + ecx]
and edx, 0xa4d18a38
neg edx
add ecx, edx
add ecx, 0xd268c51c
movsd xmm0, qword [0x45c7c0]
xorps xmm0, xmmword [str.3r.oe]
mov dword [0x45cbbc], ecx
mov ecx, 0x307e2f01
xor ecx, dword [0x45c7c8]
movlps qword [0x45cbc0], xmm0
mov dword [0x45cbc8], ecx
movq xmm0, qword [0x45c7cc]
movdqa xmm1, xmm0
paddd xmm1, xmm0
pand xmm1, xmmword [0x458af0]
psubd xmm0, xmm1
paddd xmm0, xmmword [0x458b00]
movq qword [0x45cbcc], xmm0
movups xmm0, xmmword [0x45c7d4]
xorps xmm0, xmmword [0x458b10]
movups xmmword [0x45cbd4], xmm0
movups xmm0, xmmword [0x45c7e4]
xorps xmm0, xmmword [0x458b20]
movups xmmword [0x45cbe4], xmm0
movsd xmm0, qword [0x45c7f4]
xorps xmm0, xmmword [0x458b30]
movlps qword [0x45cbf4], xmm0
movq xmm0, qword [0x45c7fc]
movdqa xmm1, xmm0
paddd xmm1, xmm0
pand xmm1, xmmword [0x458b40]
psubd xmm0, xmm1
paddd xmm0, xmmword [0x458b50]
movq qword [0x45cbfc], xmm0
movdqu xmm0, xmmword [0x45c804]
pxor xmm0, xmmword [0x458b60]
movdqu xmmword [0x45cc04], xmm0
mov ecx, 0xb8ff159b
xor ecx, dword [0x45c814]
mov dword [0x45cc14], ecx
movq xmm1, qword [0x45c818]
pcmpeqd xmm0, xmm0
movdqa xmm2, xmm1
pxor xmm2, xmm0
por xmm1, xmmword [0x458b70]
por xmm2, xmmword [0x458b80]
pand xmm2, xmm1
pxor xmm2, xmm0
movq qword [0x45cc18], xmm2
mov ecx, 0x21fcae11
xor ecx, dword [0x45c820]
mov dword [0x45cc20], ecx
movq xmm1, qword [0x45c824]
movdqa xmm2, xmm1
paddd xmm2, xmm1
pand xmm2, xmmword [0x458b90]
psubd xmm1, xmm2
paddd xmm1, xmmword [0x458ba0]
movq qword [0x45cc24], xmm1
movsd xmm1, qword [0x45c82c]
xorps xmm1, xmmword [0x458bb0]
movlps qword [0x45cc2c], xmm1
mov ecx, 0x43799cc2
xor ecx, dword [0x45c834]
movq xmm1, qword [0x45c838]
movdqa xmm2, xmm1
paddd xmm2, xmm1
pand xmm2, xmmword [0x458bc0]
mov dword [0x45cc34], ecx
psubd xmm1, xmm2
paddd xmm1, xmmword [0x458bd0]
movq qword [0x45cc38], xmm1
movsd xmm1, qword [0x45c840]
xorps xmm1, xmmword [0x458be0]
movlps qword [0x45cc40], xmm1
mov ecx, dword [0x45c848]
lea edx, [ecx + ecx]
and edx, 0xb7a4a1da
neg edx
add ecx, edx
add ecx, 0xdbd250ed
mov dword [0x45cc48], ecx
movups xmm1, xmmword [0x45c84c]
xorps xmm1, xmmword [0x458bf0]
movups xmmword [0x45cc4c], xmm1
movups xmm1, xmmword [0x45c85c]
xorps xmm1, xmmword [0x458c00]
movups xmmword [0x45cc5c], xmm1
movups xmm1, xmmword [0x45c86c]
xorps xmm1, xmmword [0x458c10]
movups xmmword [0x45cc6c], xmm1
mov ecx, 0x3995be41
xor ecx, dword [0x45c87c]
mov dword [0x45cc7c], ecx
mov ecx, dword [0x45c880]
lea edx, [ecx + ecx]
and edx, 0x7527569a
neg edx
add ecx, edx
add ecx, 0xba93ab4d
mov dword [0x45cc80], ecx
movups xmm1, xmmword [0x45c884]
xorps xmm1, xmmword [0x458c20]
movups xmmword [0x45cc84], xmm1
movups xmm1, xmmword [0x45c894]
xorps xmm1, xmmword [0x458c30]
movups xmmword [0x45cc94], xmm1
movups xmm1, xmmword [0x45c8a4]
xorps xmm1, xmmword [0x458c40]
movups xmmword [0x45cca4], xmm1
movsd xmm1, qword [0x45c8b4]
xorps xmm1, xmmword [0x458c50]
movlps qword [0x45ccb4], xmm1
mov ecx, dword [0x45c8bc]
lea edx, [ecx + ecx]
and edx, 0xf41eeaca
neg edx
add ecx, edx
add ecx, 0x7a0f7565
mov dword [0x45ccbc], ecx
movaps xmm1, xmmword [0x45c8c0]
xorps xmm1, xmmword [0x458c60]
movaps xmmword [0x45ccc0], xmm1
mov ecx, 0xe8c214b6
xor ecx, dword [0x45c8d0]
mov dword [0x45ccd0], ecx
mov ecx, dword [0x45c8d4]
lea edx, [ecx + ecx]
and edx, 0xeef20a96
neg edx
add ecx, edx
add ecx, 0xf779054b
mov edx, 0xf02c950a
xor edx, dword [0x45c8d8]
movq xmm1, qword [0x45c8dc]
movdqa xmm2, xmm1
paddd xmm2, xmm1
pand xmm2, xmmword [0x458c70]
mov dword [0x45ccd4], ecx
psubd xmm1, xmm2
paddd xmm1, xmmword [0x458c80]
mov dword [0x45ccd8], edx
movsd xmm2, qword [0x45c8e4]
xorps xmm2, xmmword [0x458c90]
movq qword [0x45ccdc], xmm1
mov ecx, 0x5dc0703e
xor ecx, dword [0x45c8ec]
movlps qword [0x45cce4], xmm2
mov dword [0x45ccec], ecx
mov ecx, dword [0x45c8f0]
lea edx, [ecx + ecx]
and edx, 0x19ffdc46
neg edx
add ecx, edx
add ecx, 0x8cffee23
mov dword [0x45ccf0], ecx
movups xmm1, xmmword [0x45c8f4]
xorps xmm1, xmmword [0x458ca0]
movups xmmword [0x45ccf4], xmm1
movsd xmm1, qword [0x45c904]
xorps xmm1, xmmword [0x458cb0]
movlps qword [0x45cd04], xmm1
mov ecx, dword [0x45c90c]
lea edx, [ecx + ecx]
and edx, 0xa79e8eaa
neg edx
add ecx, edx
add ecx, 0xd3cf4755
movaps xmm1, xmmword [0x45c910]
xorps xmm1, xmmword [0x458cc0]
mov dword [0x45cd0c], ecx
movaps xmm2, xmmword [0x45c920]
xorps xmm2, xmmword [0x458cd0]
movaps xmmword [0x45cd10], xmm1
movsd xmm1, qword [0x45c930]
xorps xmm1, xmmword [0x458ce0]
movaps xmmword [0x45cd20], xmm2
movlps qword [0x45cd30], xmm1
mov ecx, dword [0x45c938]
lea edx, [ecx + ecx]
and edx, 0x5f11b380
neg edx
add ecx, edx
add ecx, 0x2f88d9c0
mov dword [0x45cd38], ecx
mov ecx, 0xe55db0cf
xor ecx, dword [0x45c93c]
mov dword [0x45cd3c], ecx
mov ecx, dword [0x45c940]
mov edx, ecx
not edx
or ecx, 0xa5a59444
or edx, 0x5a5a6bbb
and edx, ecx
not edx
mov dword [0x45cd40], edx
mov ecx, 0xf251d1eb
xor ecx, dword [0x45c944]
mov dword [0x45cd44], ecx
mov ecx, dword [0x45c948]
lea edx, [ecx + ecx]
and edx, 0x8a87d13e
neg edx
add ecx, edx
add ecx, 0xc543e89f
movups xmm1, xmmword [0x45c94c]
xorps xmm1, xmmword [0x458cf0]
mov dword [0x45cd48], ecx
movsd xmm2, qword [0x45c95c]
xorps xmm2, xmmword [0x458d00]
movups xmmword [0x45cd4c], xmm1
mov ecx, 0x93016cf6
xor ecx, dword [0x45c964]
movlps qword [0x45cd5c], xmm2
mov dword [0x45cd64], ecx
mov ecx, dword [0x45c968]
lea edx, [ecx + ecx]
and edx, 0x4c1eee9c
neg edx
add ecx, edx
add ecx, 0x260f774e
mov dword [0x45cd68], ecx
movups xmm1, xmmword [0x45c96c]
xorps xmm1, xmmword [0x458d10]
movups xmmword [0x45cd6c], xmm1
movups xmm1, xmmword [0x45c97c]
xorps xmm1, xmmword [0x458d20]
movups xmmword [0x45cd7c], xmm1
mov ecx, 0xb957ba99
xor ecx, dword [0x45c98c]
mov dword [0x45cd8c], ecx
mov ecx, dword [0x45c990]
lea edx, [ecx + ecx]
and edx, 0x8b7e147c
neg edx
add ecx, edx
add ecx, 0xc5bf0a3e
movsd xmm1, qword [0x45c994]
xorps xmm1, xmmword [0x458d30]
mov dword [0x45cd90], ecx
movlps qword [0x45cd94], xmm1
mov ecx, dword [0x45c99c]
lea edx, [ecx + ecx]
and edx, 0x9030bc4
neg edx
add ecx, edx
add ecx, 0x48185e2
mov dword [0x45cd9c], ecx
mov ecx, dword [0x45c9a0]
mov edx, ecx
not edx
or edx, 0x9166c8f4
or ecx, 0x6e99370b
and ecx, edx
mov dword [0x45cda0], ecx
mov ecx, 0x9d26b391
xor ecx, dword [0x45c9a4]
mov dword [0x45cda4], ecx
mov ecx, dword [0x45c9a8]
lea edx, [ecx + ecx]
and edx, 0x957b74a8
neg edx
add ecx, edx
add ecx, 0x4abdba54
mov dword [0x45cda8], ecx
movq xmm1, qword [0x45c9b4]
movdqa xmm2, xmm1
paddd xmm2, xmm1
pand xmm2, xmmword [0x458d50]
psubd xmm1, xmm2
movsd xmm2, qword [0x45c9ac]
xorps xmm2, xmmword [0x458d40]
paddd xmm1, xmmword [0x458d60]
movlps qword [0x45cdac], xmm2
movups xmm2, xmmword [0x45c9bc]
xorps xmm2, xmmword [0x458d70]
movq qword [0x45cdb4], xmm1
movups xmm1, xmmword [0x45c9cc]
xorps xmm1, xmmword [0x458d80]
movups xmmword [0x45cdbc], xmm2
movsd xmm2, qword [0x45c9dc]
xorps xmm2, xmmword [0x458d90]
movups xmmword [0x45cdcc], xmm1
movlps qword [0x45cddc], xmm2
movq xmm1, qword [0x45c9e4]
pxor xmm0, xmm1
por xmm0, xmmword [0x458da0]
por xmm1, xmmword [0x458db0]
pand xmm1, xmm0
movq qword [0x45cde4], xmm1
mov ecx, dword [0x45c9ec]
lea edx, [ecx + ecx]
and edx, 0x985a5192
neg edx
add ecx, edx
add ecx, 0xcc2d28c9
mov dword [0x45cdec], ecx
mov edx, dword [esp + 0x18]
mov dword [0x477ebc], 1
lea ebx, [eax + eax]
not ebx
add ebx, eax
cmp esi, 4
mov ecx, esi
jb 0x403d08
nop dword [eax]
mov ebp, ecx
mov ecx, ebx
shr ecx, 8
movzx eax, byte [edx]
xor eax, ebx
xor eax, 0x3fffff00
or ebx, 0xff
and ebx, eax
xor ecx, dword [ebx*4 + 0x45c9f0]
mov eax, ecx
shr eax, 8
xor cl, byte [edx + 1]
movzx ecx, cl
xor eax, dword [ecx*4 + 0x45c9f0]
mov ecx, eax
shr ecx, 8
movzx esi, byte [edx + 2]
mov edi, eax
and edi, esi
add eax, esi
add edi, edi
sub eax, edi
movzx eax, al
xor ecx, dword [eax*4 + 0x45c9f0]
mov ebx, ecx
shr ebx, 8
xor cl, byte [edx + 3]
movzx eax, cl
mov eax, dword [eax*4 + 0x45c9f0]
mov ecx, eax
and ecx, ebx
add ebx, eax
add ecx, ecx
sub ebx, ecx
mov ecx, ebp
add edx, 4
add ecx, 0xfffffffc
cmp ecx, 3
ja 0x403c90
test ecx, ecx
je 0x403d1a
test cl, 1
jne 0x403d1e
mov esi, ecx
cmp ecx, 1
jne 0x403d3c
jmp 0x403d6c
mov eax, ebx
jmp 0x403d6c
mov eax, ebx
xor bl, byte [edx]
shr eax, 8
mov esi, ecx
movzx ecx, bl
xor eax, dword [ecx*4 + 0x45c9f0]
mov ecx, esi
inc edx
dec esi
mov ebx, eax
cmp ecx, 1
je 0x403d6c
xor ecx, ecx
mov eax, ebx
mov ebx, eax
shr ebx, 8
xor al, byte [edx + ecx]
movzx eax, al
xor ebx, dword [eax*4 + 0x45c9f0]
mov eax, ebx
shr eax, 8
xor bl, byte [edx + ecx + 1]
movzx edi, bl
xor eax, dword [edi*4 + 0x45c9f0]
add ecx, 2
cmp esi, ecx
jne 0x403d40
not eax
pop esi
pop edi
pop ebx
pop ebp
ret