Function at 0x402fd0
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 [0x1178f30]
test eax, eax
jne 0x403bac
mov eax, 0xdd45dd8d
xor eax, dword [0x115c5f0]
movq xmm0, qword [0x115c5f4]
movdqa xmm1, xmm0
paddd xmm1, xmm0
pand xmm1, xmmword [0x1158910]
mov dword [0x115c9f0], eax
psubd xmm0, xmm1
paddd xmm0, xmmword [0x1158920]
movups xmm1, xmmword [0x115c5fc]
xorps xmm1, xmmword [0x1158930]
movq xmm2, qword [0x115c60c]
movdqa xmm3, xmm2
paddd xmm3, xmm2
pand xmm3, xmmword [0x1158940]
movq qword [0x115c9f4], xmm0
psubd xmm2, xmm3
paddd xmm2, xmmword [0x1158950]
movups xmmword [0x115c9fc], xmm1
mov eax, 0xfa790674
xor eax, dword [0x115c614]
movq qword [0x115ca0c], xmm2
mov dword [0x115ca14], eax
mov eax, dword [0x115c618]
lea esi, [eax + eax]
and esi, 0xf0ff92fc
neg esi
add eax, esi
add eax, 0x787fc97e
mov dword [0x115ca18], eax
movsd xmm0, qword [0x115c61c]
xorps xmm0, xmmword [0x1158960]
movlps qword [0x115ca1c], xmm0
mov eax, 0x6af51166
xor eax, dword [0x115c624]
mov dword [0x115ca24], eax
mov eax, dword [0x115c628]
lea esi, [eax + eax]
and esi, 0xe1aed860
neg esi
add eax, esi
add eax, 0xf0d76c30
mov esi, 0xca6469a3
xor esi, dword [0x115c62c]
mov dword [0x115ca28], eax
mov dword [0x115ca2c], esi
mov eax, dword [0x115c630]
lea esi, [eax + eax]
and esi, 0xae0b301a
neg esi
add eax, esi
add eax, 0x5705980d
mov dword [0x115ca30], eax
movsd xmm0, qword [0x115c634]
xorps xmm0, xmmword [0x1158970]
movlps qword [0x115ca34], xmm0
mov eax, dword [0x115c63c]
mov esi, eax
not esi
or eax, 0x17b97dbb
or esi, 0xe8468244
and esi, eax
not esi
mov dword [0x115ca3c], esi
movsd xmm0, qword [0x115c640]
xorps xmm0, xmmword [0x1158980]
movlps qword [0x115ca40], xmm0
mov eax, 0xe3d1d9d5
xor eax, dword [0x115c648]
mov dword [0x115ca48], eax
mov eax, dword [0x115c64c]
lea esi, [eax + eax]
and esi, 0x43ddef90
neg esi
add eax, esi
add eax, 0xa1eef7c8
movsd xmm0, qword [0x115c650]
xorps xmm0, xmmword [0x1158990]
mov dword [0x115ca4c], eax
movlps qword [0x115ca50], xmm0
mov eax, dword [0x115c658]
mov esi, eax
not esi
or esi, 0xf73050bc
or eax, 0x8cfaf43
and eax, esi
mov dword [0x115ca58], eax
movsd xmm0, qword [0x115c65c]
xorps xmm0, xmmword [0x11589a0]
movlps qword [0x115ca5c], xmm0
mov eax, dword [0x115c664]
lea esi, [eax + eax]
and esi, 0xe681af2e
neg esi
add eax, esi
add eax, 0xf340d797
mov dword [0x115ca64], eax
movups xmm0, xmmword [0x115c668]
xorps xmm0, xmmword [0x11589b0]
movups xmmword [0x115ca68], xmm0
movups xmm0, xmmword [0x115c678]
xorps xmm0, xmmword [0x11589c0]
movups xmmword [0x115ca78], xmm0
mov eax, 0x4bec5a0
xor eax, dword [0x115c688]
mov dword [0x115ca88], eax
mov eax, dword [0x115c68c]
lea esi, [eax + eax]
and esi, 0x6fbc4c7a
neg esi
add eax, esi
add eax, 0xb7de263d
mov dword [0x115ca8c], eax
movaps xmm0, xmmword [0x115c690]
xorps xmm0, xmmword [0x11589d0]
movaps xmmword [0x115ca90], xmm0
movaps xmm0, xmmword [0x115c6a0]
xorps xmm0, xmmword [0x11589e0]
movaps xmmword [0x115caa0], xmm0
movaps xmm0, xmmword [0x115c6b0]
xorps xmm0, xmmword [0x11589f0]
movaps xmmword [0x115cab0], xmm0
movaps xmm0, xmmword [0x115c6c0]
xorps xmm0, xmmword [0x1158a00]
movaps xmmword [0x115cac0], xmm0
mov eax, 0xcb6f2d40
xor eax, dword [0x115c6d0]
mov dword [0x115cad0], eax
mov eax, dword [0x115c6d4]
lea esi, [eax + eax]
and esi, 0x22776dc8
neg esi
add eax, esi
add eax, 0x113bb6e4
mov dword [0x115cad4], eax
movsd xmm0, qword [0x115c6d8]
xorps xmm0, xmmword [0x1158a10]
movlps qword [0x115cad8], xmm0
mov eax, dword [0x115c6e0]
lea esi, [eax + eax]
and esi, 0x7d729618
neg esi
add eax, esi
add eax, 0xbeb94b0c
movsd xmm0, qword [0x115c6e4]
xorps xmm0, xmmword [0x1158a20]
movdqu xmm1, xmmword [0x115c6ec]
movdqa xmm2, xmm1
paddd xmm2, xmm1
pand xmm2, xmmword [0x1158a30]
mov dword [0x115cae0], eax
psubd xmm1, xmm2
paddd xmm1, xmmword [0x1158a40]
movlps qword [0x115cae4], xmm0
movups xmm0, xmmword [0x115c6fc]
xorps xmm0, xmmword [0x1158a50]
movdqu xmmword [0x115caec], xmm1
movups xmm1, xmmword [0x115c70c]
xorps xmm1, xmmword [0x1158a60]
movups xmmword [0x115cafc], xmm0
movups xmmword [0x115cb0c], xmm1
mov eax, dword [0x115c71c]
lea esi, [eax + eax]
and esi, 0xde25538c
neg esi
add eax, esi
add eax, 0x6f12a9c6
mov dword [0x115cb1c], eax
movaps xmm0, xmmword [0x115c720]
xorps xmm0, xmmword [0x1158a70]
movaps xmmword [0x115cb20], xmm0
movaps xmm0, xmmword [0x115c730]
xorps xmm0, xmmword [0x1158a80]
movaps xmmword [0x115cb30], xmm0
movsd xmm0, qword [0x115c740]
xorps xmm0, xmmword [0x1158a90]
movlps qword [0x115cb40], xmm0
mov eax, dword [0x115c748]
lea esi, [eax + eax]
and esi, 0x886c8c76
neg esi
add eax, esi
add eax, 0x4436463b
movsd xmm0, qword [0x115c74c]
xorps xmm0, xmmword [0x1158aa0]
mov dword [0x115cb48], eax
mov eax, 0x4e3437c
xor eax, dword [0x115c754]
movlps qword [0x115cb4c], xmm0
mov dword [0x115cb54], eax
mov eax, dword [0x115c758]
lea esi, [eax + eax]
and esi, 0x95324d5e
neg esi
add eax, esi
add eax, 0x4a9926af
mov dword [0x115cb58], eax
movsd xmm0, qword [0x115c75c]
xorps xmm0, xmmword [0x1158ab0]
movq xmm1, qword [0x115c764]
movdqa xmm2, xmm1
paddd xmm2, xmm1
pand xmm2, xmmword [0x1158ac0]
movlps qword [0x115cb5c], xmm0
psubd xmm1, xmm2
paddd xmm1, xmmword [0x1158ad0]
movq qword [0x115cb64], xmm1
mov eax, dword [0x115c76c]
lea esi, [eax + eax]
and esi, 0xbf0eb150
neg esi
add eax, esi
add eax, 0x5f8758a8
mov dword [0x115cb6c], eax
mov eax, 0x30b327db
xor eax, dword [0x115c770]
mov dword [0x115cb70], eax
mov eax, dword [0x115c774]
lea esi, [eax + eax]
and esi, 0x82cc170
neg esi
add eax, esi
add eax, 0x841660b8
mov dword [0x115cb74], eax
movsd xmm0, qword [0x115c778]
xorps xmm0, xmmword [0x1158ae0]
movlps qword [0x115cb78], xmm0
mov eax, 0xc6fd34a7
xor eax, dword [0x115c780]
mov dword [0x115cb80], eax
mov eax, dword [0x115c784]
lea esi, [eax + eax]
and esi, 0xa525ecec
neg esi
add eax, esi
add eax, 0x5292f676
mov dword [0x115cb84], eax
mov eax, 0x240063
xor eax, dword [0x115c788]
mov dword [0x115cb88], eax
mov eax, dword [0x115c78c]
mov esi, eax
not esi
or eax, 0xd8911f98
or esi, 0x276ee067
and esi, eax
not esi
mov dword [0x115cb8c], esi
mov eax, dword [0x115c790]
lea esi, [eax + eax]
and esi, 0xe9e7135e
neg esi
add eax, esi
add eax, 0x74f389af
mov dword [0x115cb90], eax
movups xmm0, xmmword [0x115c794]
xorps xmm0, xmmword [0x1158af0]
movups xmmword [0x115cb94], xmm0
movsd xmm0, qword [0x115c7a4]
xorps xmm0, xmmword [0x1158b00]
movlps qword [0x115cba4], xmm0
mov eax, 0x3b508db3
xor eax, dword [0x115c7ac]
mov dword [0x115cbac], eax
mov eax, dword [0x115c7b0]
mov esi, eax
not esi
or esi, 0x596ee10f
or eax, 0xa6911ef0
and eax, esi
mov dword [0x115cbb0], eax
movsd xmm0, qword [0x115c7b4]
xorps xmm0, xmmword [0x1158b10]
movlps qword [0x115cbb4], xmm0
mov eax, 0x24b24953
xor eax, dword [0x115c7bc]
mov dword [0x115cbbc], eax
mov eax, dword [0x115c7c0]
lea esi, [eax + eax]
and esi, 0xe13a8510
neg esi
add eax, esi
add eax, 0x709d4288
movsd xmm0, qword [0x115c7c4]
xorps xmm0, xmmword [0x1158b20]
mov dword [0x115cbc0], eax
mov eax, 0x5336cafd
xor eax, dword [0x115c7cc]
movlps qword [0x115cbc4], xmm0
mov dword [0x115cbcc], eax
mov eax, dword [0x115c7d0]
mov esi, eax
not esi
or eax, 0x1d9b3238
or esi, 0xe264cdc7
and esi, eax
not esi
movups xmm0, xmmword [0x115c7d4]
xorps xmm0, xmmword [0x1158b30]
mov dword [0x115cbd0], esi
movsd xmm1, qword [0x115c7e4]
xorps xmm1, xmmword [0x1158b40]
movups xmmword [0x115cbd4], xmm0
mov eax, 0xae31e01a
xor eax, dword [0x115c7ec]
movlps qword [0x115cbe4], xmm1
mov dword [0x115cbec], eax
mov eax, dword [0x115c7f0]
lea esi, [eax + eax]
and esi, 0x72084a74
neg esi
add eax, esi
add eax, 0xb904253a
mov dword [0x115cbf0], eax
mov eax, 0xf41a4a8e
xor eax, dword [0x115c7f4]
mov dword [0x115cbf4], eax
mov eax, dword [0x115c7f8]
mov esi, eax
not esi
or eax, 0x14260a88
or esi, 0xebd9f577
and esi, eax
not esi
mov dword [0x115cbf8], esi
mov eax, 0x224bf34f
xor eax, dword [0x115c7fc]
mov dword [0x115cbfc], eax
mov eax, dword [0x115c800]
lea esi, [eax + eax]
and esi, 0x3eeda442
neg esi
add eax, esi
add eax, 0x1f76d221
movups xmm0, xmmword [0x115c804]
xorps xmm0, xmmword [0x1158b50]
mov dword [0x115cc00], eax
movups xmm1, xmmword [0x115c814]
xorps xmm1, xmmword [0x1158b60]
movups xmmword [0x115cc04], xmm0
mov eax, 0xeeb97419
xor eax, dword [0x115c824]
movups xmmword [0x115cc14], xmm1
mov dword [0x115cc24], eax
mov eax, dword [0x115c828]
lea esi, [eax + eax]
and esi, 0x1e04af08
neg esi
add eax, esi
add eax, 0xf025784
mov dword [0x115cc28], eax
movups xmm0, xmmword [0x115c82c]
xorps xmm0, xmmword [0x1158b70]
movups xmmword [0x115cc2c], xmm0
movups xmm0, xmmword [0x115c83c]
xorps xmm0, xmmword [0x1158b80]
movups xmmword [0x115cc3c], xmm0
mov eax, 0x81384da7
xor eax, dword [0x115c84c]
mov dword [0x115cc4c], eax
mov eax, dword [0x115c850]
lea esi, [eax + eax]
and esi, 0x3843a46a
neg esi
add eax, esi
add eax, 0x1c21d235
movups xmm0, xmmword [0x115c854]
xorps xmm0, xmmword [0x1158b90]
mov dword [0x115cc50], eax
movups xmm1, xmmword [0x115c864]
xorps xmm1, xmmword [0x1158ba0]
movups xmmword [0x115cc54], xmm0
movsd xmm0, qword [0x115c874]
xorps xmm0, xmmword [0x1158bb0]
movups xmmword [0x115cc64], xmm1
mov eax, 0x7f0c8bca
xor eax, dword [0x115c87c]
movlps qword [0x115cc74], xmm0
mov dword [0x115cc7c], eax
mov eax, dword [0x115c880]
lea esi, [eax + eax]
and esi, 0x4d520ebc
neg esi
add eax, esi
add eax, 0xa6a9075e
mov dword [0x115cc80], eax
movsd xmm0, qword [0x115c884]
xorps xmm0, xmmword [0x1158bc0]
movlps qword [0x115cc84], xmm0
mov eax, dword [0x115c88c]
lea esi, [eax + eax]
and esi, 0x33f325d0
neg esi
add eax, esi
add eax, 0x19f992e8
mov esi, 0x29e8dfec
xor esi, dword [0x115c890]
mov dword [0x115cc8c], eax
mov dword [0x115cc90], esi
mov eax, dword [0x115c894]
lea esi, [eax + eax]
and esi, 0xf4d99d6e
neg esi
add eax, esi
add eax, 0x7a6cceb7
mov dword [0x115cc94], eax
movups xmm0, xmmword [0x115c898]
xorps xmm0, xmmword [0x1158bd0]
movups xmmword [0x115cc98], xmm0
movsd xmm0, qword [0x115c8a8]
xorps xmm0, xmmword [0x1158be0]
movlps qword [0x115cca8], xmm0
mov eax, 0xc24984ac
xor eax, dword [0x115c8b0]
movq xmm0, qword [0x115c8b4]
movdqa xmm1, xmm0
paddd xmm1, xmm0
pand xmm1, xmmword [0x1158bf0]
mov dword [0x115ccb0], eax
psubd xmm0, xmm1
paddd xmm0, xmmword [0x1158c00]
movq qword [0x115ccb4], xmm0
movups xmm0, xmmword [0x115c8bc]
xorps xmm0, xmmword [0x1158c10]
movups xmmword [0x115ccbc], xmm0
mov eax, dword [0x115c8cc]
lea esi, [eax + eax]
and esi, 0xf3af0db8
neg esi
add eax, esi
add eax, 0xf9d786dc
mov dword [0x115cccc], eax
mov eax, 0xf9387503
xor eax, dword [0x115c8d0]
mov dword [0x115ccd0], eax
mov eax, dword [0x115c8d4]
mov esi, eax
not esi
or esi, 0x542ebf1e
or eax, 0xabd140e1
and eax, esi
movups xmm0, xmmword [0x115c8d8]
xorps xmm0, xmmword [0x1158c20]
mov dword [0x115ccd4], eax
movups xmmword [0x115ccd8], xmm0
mov eax, dword [0x115c8e8]
lea esi, [eax + eax]
and esi, 0x974f818a
neg esi
add eax, esi
add eax, 0x4ba7c0c5
mov dword [0x115cce8], eax
movsd xmm0, qword [0x115c8ec]
xorps xmm0, xmmword [0x1158c30]
movlps qword [0x115ccec], xmm0
mov eax, dword [0x115c8f4]
lea esi, [eax + eax]
and esi, 0xc3cadf8c
neg esi
add eax, esi
add eax, 0xe1e56fc6
movsd xmm0, qword [0x115c8f8]
xorps xmm0, xmmword [0x1158c40]
mov dword [0x115ccf4], eax
movlps qword [0x115ccf8], xmm0
mov eax, dword [0x115c900]
lea esi, [eax + eax]
and esi, 0xe4ed29a
neg esi
add eax, esi
add eax, 0x8727694d
mov dword [0x115cd00], eax
mov eax, 0x2d91fd88
xor eax, dword [0x115c904]
movq xmm0, qword [0x115c908]
movdqa xmm1, xmm0
paddd xmm1, xmm0
pand xmm1, xmmword [0x1158c50]
mov dword [0x115cd04], eax
psubd xmm0, xmm1
paddd xmm0, xmmword [0x1158c60]
movq qword [0x115cd08], xmm0
movsd xmm0, qword [0x115c910]
xorps xmm0, xmmword [0x1158c70]
movlps qword [0x115cd10], xmm0
mov eax, dword [0x115c918]
mov esi, eax
not esi
or eax, 0x31fdc8b8
or esi, 0xce023747
and esi, eax
not esi
mov dword [0x115cd18], esi
movups xmm0, xmmword [0x115c91c]
xorps xmm0, xmmword [0x1158c80]
movups xmmword [0x115cd1c], xmm0
movups xmm0, xmmword [0x115c92c]
xorps xmm0, xmmword [0x1158c90]
movups xmmword [0x115cd2c], xmm0
movsd xmm0, qword [0x115c93c]
xorps xmm0, xmmword [0x1158ca0]
movlps qword [0x115cd3c], xmm0
mov eax, 0xf68bdfe9
xor eax, dword [0x115c944]
mov dword [0x115cd44], eax
mov eax, dword [0x115c948]
lea esi, [eax + eax]
and esi, 0x57cfc3ba
neg esi
add eax, esi
add eax, 0x2be7e1dd
mov dword [0x115cd48], eax
movups xmm0, xmmword [0x115c94c]
xorps xmm0, xmmword [0x1158cb0]
movups xmmword [0x115cd4c], xmm0
movups xmm0, xmmword [0x115c95c]
xorps xmm0, xmmword [0x1158cc0]
movups xmmword [0x115cd5c], xmm0
movups xmm0, xmmword [0x115c96c]
xorps xmm0, xmmword [0x1158cd0]
movups xmmword [0x115cd6c], xmm0
mov eax, 0x573bfa92
xor eax, dword [0x115c97c]
mov dword [0x115cd7c], eax
mov eax, dword [0x115c980]
mov esi, eax
not esi
or esi, 0xe272ee50
or eax, 0x1d8d11af
and eax, esi
movups xmm0, xmmword [0x115c984]
xorps xmm0, xmmword [0x1158ce0]
mov dword [0x115cd80], eax
movups xmm1, xmmword [0x115c994]
xorps xmm1, xmmword [0x1158cf0]
movups xmmword [0x115cd84], xmm0
movups xmm0, xmmword [0x115c9a4]
xorps xmm0, xmmword [0x1158d00]
movups xmmword [0x115cd94], xmm1
movups xmmword [0x115cda4], xmm0
mov eax, dword [0x115c9b4]
mov esi, eax
not esi
or eax, 0xa842e8f4
or esi, 0x57bd170b
and esi, eax
not esi
movups xmm0, xmmword [0x115c9b8]
xorps xmm0, xmmword [0x1158d10]
mov dword [0x115cdb4], esi
movsd xmm1, qword [0x115c9c8]
xorps xmm1, xmmword [0x1158d20]
movups xmmword [0x115cdb8], xmm0
movlps qword [0x115cdc8], xmm1
mov eax, dword [0x115c9d0]
lea esi, [eax + eax]
and esi, 0xaa08f18c
neg esi
add eax, esi
add eax, 0x550478c6
mov dword [0x115cdd0], eax
movsd xmm0, qword [0x115c9d4]
xorps xmm0, xmmword [0x1158d30]
movlps qword [0x115cdd4], xmm0
mov eax, dword [0x115c9dc]
mov esi, eax
not esi
or eax, 0x2fb261fe
or esi, 0xd04d9e01
and esi, eax
not esi
mov dword [0x115cddc], esi
movaps xmm0, xmmword [0x115c9e0]
xorps xmm0, xmmword [0x1158d40]
movaps xmmword [0x115cde0], xmm0
mov esi, dword [esp + 0x14]
mov dword [0x1178f30], 1
not edx
cmp ecx, 4
jb 0x403c46
nop word cs:[eax + eax]
mov eax, edx
shr eax, 8
movzx edi, byte [esi]
mov ebx, edx
and ebx, edi
add edx, edi
add ebx, ebx
sub edx, ebx
movzx edx, dl
xor eax, dword [edx*4 + 0x115c9f0]
mov edx, eax
shr edx, 8
xor al, byte [esi + 1]
movzx eax, al
xor edx, dword [eax*4 + 0x115c9f0]
mov eax, edx
shr eax, 8
movzx edi, byte [esi + 2]
xor edi, edx
xor edi, 0x3fffff00
or edx, 0xff
and edx, edi
xor eax, dword [edx*4 + 0x115c9f0]
mov edx, eax
shr edx, 8
movzx edi, byte [esi + 3]
mov ebx, eax
and ebx, edi
add eax, edi
add ebx, ebx
sub eax, ebx
movzx eax, al
xor edx, dword [eax*4 + 0x115c9f0]
add esi, 4
add ecx, 0xfffffffc
cmp ecx, 3
ja 0x403bd0
test ecx, ecx
je 0x403c58
test cl, 1
jne 0x403c5c
mov edi, ecx
cmp ecx, 1
jne 0x403c78
jmp 0x403cac
mov eax, edx
jmp 0x403cac
mov eax, edx
xor dl, byte [esi]
shr eax, 8
movzx edx, dl
xor eax, dword [edx*4 + 0x115c9f0]
inc esi
lea edi, [ecx - 1]
mov edx, eax
cmp ecx, 1
je 0x403cac
xor ecx, ecx
mov eax, edx
nop dword [eax]
mov edx, eax
shr edx, 8
xor al, byte [esi + ecx]
movzx eax, al
xor edx, dword [eax*4 + 0x115c9f0]
mov eax, edx
shr eax, 8
xor dl, byte [esi + ecx + 1]
movzx edx, dl
xor eax, dword [edx*4 + 0x115c9f0]
add ecx, 2
cmp edi, ecx
jne 0x403c80
not eax
pop esi
pop edi
pop ebx
ret