Function at 0x41cca0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x4c
mov edx, dword [esp + 0x54]
mov eax, dword [esp + 0x50]
mov ecx, edx
shr ecx, 2
push ebx
lea ecx, [eax + ecx*4]
push ebp
mov dword [esp + 0x5c], ecx
mov ecx, dword [esp + 0x60]
add dword [ecx + 0x10], edx
cmp dword [ecx + 0x10], edx
mov ebp, dword [ecx]
mov ebx, dword [ecx + 4]
push esi
mov esi, dword [ecx + 0xc]
push edi
mov edi, dword [ecx + 8]
jae 0x41ccd5
inc dword [ecx + 0x14]
mov edx, dword [esp + 0x64]
cmp dword [esp + 0x60], edx
jae 0x41d5a7
mov ecx, dword [eax]
mov edx, esi
xor edx, edi
and edx, ebx
xor edx, esi
add edx, ecx
lea edx, [edx + ebp - 0x28955b88]
mov dword [esp + 0x60], ebp
mov dword [esp + 0x1c], ecx
mov ecx, edx
shr ecx, 0x19
shl edx, 7
or ecx, edx
mov edx, dword [eax + 4]
add ecx, ebx
mov ebp, edi
xor ebp, ebx
and ebp, ecx
xor ebp, edi
add ebp, edx
add eax, 4
mov dword [esp + 0x18], esi
lea esi, [esi + ebp - 0x173848aa]
mov ebp, ebx
xor ebp, ecx
mov dword [esp + 0x20], edx
mov edx, esi
shl esi, 0xc
shr edx, 0x14
or edx, esi
mov esi, dword [eax + 4]
add edx, ecx
and ebp, edx
xor ebp, ebx
add ebp, esi
add eax, 4
mov dword [esp + 0x14], edi
lea edi, [edi + ebp + 0x242070db]
mov dword [esp + 0x24], esi
mov esi, edi
shl edi, 0x11
shr esi, 0xf
or esi, edi
mov edi, dword [eax + 4]
mov dword [esp + 0x10], ebx
add esi, edx
mov ebp, edx
xor ebp, ecx
add eax, 4
and ebp, esi
xor ebp, ecx
add ebp, edi
lea ebx, [ebx + ebp - 0x3e423112]
mov dword [esp + 0x28], edi
mov edi, ebx
shr ebx, 0xa
shl edi, 0x16
or edi, ebx
mov ebx, dword [eax + 4]
mov dword [esp + 0x2c], ebx
mov ebp, dword [esp + 0x2c]
add eax, 4
add edi, esi
mov ebx, edx
xor ebx, esi
and ebx, edi
xor ebx, edx
add ebx, ebp
lea ecx, [ecx + ebx - 0xa83f051]
mov ebx, ecx
shl ecx, 7
shr ebx, 0x19
or ebx, ecx
mov ecx, dword [eax + 4]
add eax, 4
mov dword [esp + 0x30], ecx
mov ecx, esi
add ebx, edi
xor ecx, edi
and ecx, ebx
xor ecx, esi
add ecx, dword [esp + 0x30]
lea edx, [edx + ecx + 0x4787c62a]
mov ecx, edx
shl edx, 0xc
shr ecx, 0x14
or ecx, edx
mov edx, dword [eax + 4]
add ecx, ebx
add eax, 4
mov dword [esp + 0x34], edx
mov ebp, dword [esp + 0x34]
mov edx, edi
xor edx, ebx
and edx, ecx
xor edx, edi
add edx, ebp
lea esi, [esi + edx - 0x57cfb9ed]
mov edx, esi
shl esi, 0x11
add eax, 4
shr edx, 0xf
or edx, esi
mov esi, dword [eax]
add edx, ecx
mov dword [esp + 0x38], esi
mov ebp, dword [esp + 0x38]
mov esi, ecx
xor esi, ebx
and esi, edx
xor esi, ebx
add esi, ebp
lea edi, [edi + esi - 0x2b96aff]
mov esi, edi
shr edi, 0xa
add eax, 4
shl esi, 0x16
or esi, edi
mov edi, dword [eax]
mov dword [esp + 0x3c], edi
mov ebp, dword [esp + 0x3c]
mov edi, ecx
xor edi, edx
add esi, edx
and edi, esi
xor edi, ecx
add edi, ebp
lea ebx, [ebx + edi + 0x698098d8]
mov edi, ebx
shl ebx, 7
add eax, 4
shr edi, 0x19
or edi, ebx
mov ebx, dword [eax]
mov dword [esp + 0x40], ebx
mov ebp, dword [esp + 0x40]
add edi, esi
mov ebx, edx
xor ebx, esi
and ebx, edi
xor ebx, edx
add ebx, ebp
lea ecx, [ecx + ebx - 0x74bb0851]
mov ebx, ecx
shl ecx, 0xc
shr ebx, 0x14
or ebx, ecx
mov ecx, dword [eax + 4]
mov dword [esp + 0x44], ecx
mov ebp, dword [esp + 0x44]
add eax, 4
mov ecx, esi
xor ecx, edi
add ebx, edi
and ecx, ebx
xor ecx, esi
add ecx, ebp
lea edx, [edx + ecx - 0xa44f]
mov ecx, edx
add eax, 4
shr ecx, 0xf
shl edx, 0x11
or ecx, edx
mov edx, dword [eax]
mov dword [esp + 0x48], edx
mov ebp, dword [esp + 0x48]
add ecx, ebx
mov edx, ebx
xor edx, edi
and edx, ecx
xor edx, edi
add edx, ebp
lea esi, [esi + edx - 0x76a32842]
mov edx, esi
shr esi, 0xa
shl edx, 0x16
or edx, esi
mov esi, dword [eax + 4]
add edx, ecx
add eax, 4
mov dword [esp + 0x4c], esi
mov ebp, dword [esp + 0x4c]
mov esi, ebx
xor esi, ecx
and esi, edx
xor esi, ebx
add esi, ebp
lea edi, [edi + esi + 0x6b901122]
mov esi, edi
shl edi, 7
add eax, 4
shr esi, 0x19
or esi, edi
mov edi, dword [eax]
mov dword [esp + 0x50], edi
mov ebp, dword [esp + 0x50]
add esi, edx
mov edi, ecx
xor edi, edx
and edi, esi
xor edi, ecx
add edi, ebp
lea edi, [ebx + edi - 0x2678e6d]
mov ebx, edi
shl edi, 0xc
mov ebp, edx
xor ebp, esi
shr ebx, 0x14
or ebx, edi
mov edi, dword [eax + 4]
add ebx, esi
and ebp, ebx
xor ebp, edx
add ebp, edi
lea ecx, [ecx + ebp - 0x5986bc72]
add eax, 4
mov dword [esp + 0x54], edi
mov edi, ecx
shl ecx, 0x11
shr edi, 0xf
or edi, ecx
mov ecx, dword [eax + 4]
add edi, ebx
mov ebp, ebx
xor ebp, esi
and ebp, edi
add eax, 4
xor ebp, esi
add ebp, ecx
lea edx, [edx + ebp + 0x49b40821]
mov ebp, dword [esp + 0x20]
mov dword [esp + 0x58], ecx
mov ecx, edx
shr edx, 0xa
shl ecx, 0x16
or ecx, edx
add ecx, edi
mov edx, edi
xor edx, ecx
and edx, ebx
add eax, 4
xor edx, edi
add edx, ebp
lea esi, [esi + edx - 0x9e1da9e]
mov edx, esi
mov ebp, dword [esp + 0x34]
shl esi, 5
shr edx, 0x1b
or edx, esi
add edx, ecx
mov esi, ecx
xor esi, edx
and esi, edi
xor esi, ecx
add esi, ebp
lea ebx, [ebx + esi - 0x3fbf4cc0]
mov ebp, dword [esp + 0x48]
mov esi, ebx
shr esi, 0x17
shl ebx, 9
or esi, ebx
add esi, edx
mov ebx, esi
xor ebx, edx
and ebx, ecx
xor ebx, edx
add ebx, ebp
mov ebp, dword [esp + 0x1c]
lea edi, [edi + ebx + 0x265e5a51]
mov ebx, edi
shl edi, 0xe
shr ebx, 0x12
or ebx, edi
add ebx, esi
mov edi, esi
xor edi, ebx
and edi, edx
xor edi, esi
add edi, ebp
mov ebp, dword [esp + 0x30]
lea ecx, [ecx + edi - 0x16493856]
mov edi, ecx
shr ecx, 0xc
shl edi, 0x14
or edi, ecx
add edi, ebx
mov ecx, ebx
xor ecx, edi
and ecx, esi
xor ecx, ebx
add ecx, ebp
mov ebp, dword [esp + 0x44]
lea edx, [edx + ecx - 0x29d0efa3]
mov ecx, edx
shl edx, 5
shr ecx, 0x1b
or ecx, edx
add ecx, edi
mov edx, edi
xor edx, ecx
and edx, ebx
xor edx, edi
add edx, ebp
mov ebp, dword [esp + 0x58]
lea esi, [esi + edx + 0x2441453]
mov edx, esi
shl esi, 9
shr edx, 0x17
or edx, esi
add edx, ecx
mov esi, edx
xor esi, ecx
and esi, edi
xor esi, ecx
add esi, ebp
lea ebx, [ebx + esi - 0x275e197f]
mov esi, ebx
shr esi, 0x12
shl ebx, 0xe
or esi, ebx
add esi, edx
mov ebx, edx
xor ebx, esi
mov ebp, dword [esp + 0x2c]
and ebx, ecx
xor ebx, edx
add ebx, ebp
lea edi, [edi + ebx - 0x182c0438]
mov ebp, dword [esp + 0x40]
mov ebx, edi
shr edi, 0xc
shl ebx, 0x14
or ebx, edi
add ebx, esi
mov edi, esi
xor edi, ebx
and edi, edx
xor edi, esi
add edi, ebp
lea ecx, [ecx + edi + 0x21e1cde6]
mov ebp, dword [esp + 0x54]
mov edi, ecx
shl ecx, 5
shr edi, 0x1b
or edi, ecx
add edi, ebx
mov ecx, ebx
xor ecx, edi
and ecx, esi
xor ecx, ebx
add ecx, ebp
mov ebp, dword [esp + 0x28]
lea edx, [edx + ecx - 0x3cc8f82a]
mov ecx, edx
shl edx, 9
shr ecx, 0x17
or ecx, edx
add ecx, edi
mov edx, ecx
xor edx, edi
and edx, ebx
xor edx, edi
add edx, ebp
mov ebp, dword [esp + 0x3c]
lea esi, [esi + edx - 0xb2af279]
mov edx, esi
shl esi, 0xe
shr edx, 0x12
or edx, esi
add edx, ecx
mov esi, ecx
xor esi, edx
and esi, edi
xor esi, ecx
add esi, ebp
mov ebp, dword [esp + 0x50]
lea ebx, [ebx + esi + 0x455a14ed]
mov esi, ebx
shr ebx, 0xc
shl esi, 0x14
or esi, ebx
add esi, edx
mov ebx, edx
xor ebx, esi
and ebx, ecx
xor ebx, edx
add ebx, ebp
mov ebp, dword [esp + 0x24]
lea edi, [edi + ebx - 0x561c16fb]
mov ebx, edi
shl edi, 5
shr ebx, 0x1b
or ebx, edi
add ebx, esi
mov edi, esi
xor edi, ebx
and edi, edx
xor edi, esi
add edi, ebp
lea ecx, [ecx + edi - 0x3105c08]
mov edi, ecx
shr edi, 0x17
shl ecx, 9
or edi, ecx
add edi, ebx
mov ebp, dword [esp + 0x38]
mov ecx, edi
xor ecx, ebx
and ecx, esi
xor ecx, ebx
add ecx, ebp
lea edx, [edx + ecx + 0x676f02d9]
mov ebp, edx
shl edx, 0xe
shr ebp, 0x12
or ebp, edx
add ebp, edi
mov edx, edi
xor edx, ebp
mov ecx, edx
and ecx, ebx
xor ecx, edi
add ecx, dword [esp + 0x4c]
lea esi, [esi + ecx - 0x72d5b376]
mov ecx, esi
shr esi, 0xc
shl ecx, 0x14
or ecx, esi
mov esi, dword [esp + 0x30]
add ecx, ebp
xor edx, ecx
add edx, esi
lea ebx, [ebx + edx - 0x5c6be]
mov edx, ebx
shl ebx, 4
shr edx, 0x1c
or edx, ebx
mov ebx, dword [esp + 0x3c]
add edx, ecx
mov esi, ebp
xor esi, ecx
xor esi, edx
add esi, ebx
mov ebx, dword [esp + 0x48]
lea edi, [edi + esi - 0x788e097f]
mov esi, edi
shl edi, 0xb
shr esi, 0x15
or esi, edi
add esi, edx
mov edi, esi
xor edi, ecx
xor edi, edx
add edi, ebx
lea ebx, [edi + ebp + 0x6d9d6122]
mov edi, ebx
shl ebx, 0x10
shr edi, 0x10
or edi, ebx
add edi, esi
mov ebx, esi
xor ebx, edi
mov ebp, ebx
xor ebp, edx
add ebp, dword [esp + 0x54]
lea ebp, [ecx + ebp - 0x21ac7f4]
mov ecx, ebp
shr ebp, 9
shl ecx, 0x17
or ecx, ebp
mov ebp, dword [esp + 0x20]
add ecx, edi
xor ebx, ecx
add ebx, ebp
mov ebp, dword [esp + 0x2c]
lea ebx, [edx + ebx - 0x5b4115bc]
mov edx, ebx
shl ebx, 4
shr edx, 0x1c
or edx, ebx
mov ebx, edi
add edx, ecx
xor ebx, ecx
xor ebx, edx
add ebx, ebp
lea ebx, [esi + ebx + 0x4bdecfa9]
mov esi, ebx
shl ebx, 0xb
mov ebp, dword [esp + 0x38]
shr esi, 0x15
or esi, ebx
add esi, edx
mov ebx, esi
xor ebx, ecx
xor ebx, edx
add ebx, ebp
lea ebx, [edi + ebx - 0x944b4a0]
mov edi, ebx
shl ebx, 0x10
shr edi, 0x10
or edi, ebx
add edi, esi
mov ebx, esi
xor ebx, edi
mov ebp, ebx
xor ebp, edx
add ebp, dword [esp + 0x44]
lea ebp, [ecx + ebp - 0x41404390]
mov ecx, ebp
shr ebp, 9
shl ecx, 0x17
or ecx, ebp
mov ebp, dword [esp + 0x50]
add ecx, edi
xor ebx, ecx
add ebx, ebp
lea ebx, [edx + ebx + 0x289b7ec6]
mov ebp, dword [esp + 0x1c]
mov edx, ebx
shl ebx, 4
shr edx, 0x1c
or edx, ebx
add edx, ecx
mov ebx, edi
xor ebx, ecx
xor ebx, edx
add ebx, ebp
mov ebp, dword [esp + 0x28]
lea ebx, [esi + ebx - 0x155ed806]
mov esi, ebx
shl ebx, 0xb
shr esi, 0x15
or esi, ebx
add esi, edx
mov ebx, esi
xor ebx, ecx
xor ebx, edx
add ebx, ebp
lea ebx, [edi + ebx - 0x2b10cf7b]
mov edi, ebx
shl ebx, 0x10
shr edi, 0x10
or edi, ebx
add edi, esi
mov ebx, esi
xor ebx, edi
mov ebp, ebx
xor ebp, edx
add ebp, dword [esp + 0x34]
lea ebp, [ecx + ebp + 0x4881d05]
mov ecx, ebp
shl ecx, 0x17
shr ebp, 9
or ecx, ebp
mov ebp, dword [esp + 0x40]
add ecx, edi
xor ebx, ecx
add ebx, ebp
lea ebx, [edx + ebx - 0x262b2fc7]
mov edx, ebx
shr edx, 0x1c
shl ebx, 4
or edx, ebx
mov ebx, edi
add edx, ecx
xor ebx, ecx
xor ebx, edx
add ebx, dword [esp + 0x4c]
lea ebx, [esi + ebx - 0x1924661b]
mov esi, ebx
mov ebp, dword [esp + 0x58]
shl ebx, 0xb
shr esi, 0x15
or esi, ebx
add esi, edx
mov ebx, esi
xor ebx, ecx
xor ebx, edx
add ebx, ebp
lea ebx, [edi + ebx + 0x1fa27cf8]
mov ebp, dword [esp + 0x24]
mov edi, ebx
shl ebx, 0x10
shr edi, 0x10
or edi, ebx
add edi, esi
mov ebx, esi
xor ebx, edi
xor ebx, edx
add ebx, ebp
mov ebp, dword [esp + 0x1c]
lea ebx, [ecx + ebx - 0x3b53a99b]
mov ecx, ebx
shr ebx, 9
shl ecx, 0x17
or ecx, ebx
add ecx, edi
mov ebx, esi
not ebx
or ebx, ecx
xor ebx, edi
add ebx, ebp
mov ebp, dword [esp + 0x38]
lea edx, [edx + ebx - 0xbd6ddbc]
mov ebx, edx
shl edx, 6
shr ebx, 0x1a
or ebx, edx
mov edx, edi
add ebx, ecx
not edx
or edx, ebx
xor edx, ecx
add edx, ebp
mov ebp, dword [esp + 0x54]
lea esi, [esi + edx + 0x432aff97]
mov edx, esi
shl esi, 0xa
shr edx, 0x16
or edx, esi
mov esi, ecx
not esi
add edx, ebx
or esi, edx
xor esi, ebx
add esi, ebp
mov ebp, dword [esp + 0x30]
lea edi, [edi + esi - 0x546bdc59]
mov esi, edi
shl edi, 0xf
shr esi, 0x11
or esi, edi
mov edi, ebx
not edi
add esi, edx
or edi, esi
xor edi, edx
add edi, ebp
lea ecx, [ecx + edi - 0x36c5fc7]
mov edi, ecx
shr ecx, 0xb
shl edi, 0x15
or edi, ecx
mov ecx, edx
add edi, esi
not ecx
mov ebp, dword [esp + 0x4c]
or ecx, edi
xor ecx, esi
add ecx, ebp
lea ebx, [ebx + ecx + 0x655b59c3]
mov ebp, dword [esp + 0x28]
mov ecx, ebx
shl ebx, 6
shr ecx, 0x1a
or ecx, ebx
add ecx, edi
mov ebx, esi
not ebx
or ebx, ecx
xor ebx, edi
add ebx, ebp
lea edx, [edx + ebx - 0x70f3336e]
mov ebp, dword [esp + 0x44]
mov ebx, edx
shl edx, 0xa
shr ebx, 0x16
or ebx, edx
add ebx, ecx
mov edx, edi
not edx
or edx, ebx
xor edx, ecx
add edx, ebp
mov ebp, dword [esp + 0x20]
lea esi, [esi + edx - 0x100b83]
mov edx, esi
shl esi, 0xf
shr edx, 0x11
or edx, esi
add edx, ebx
mov esi, ecx
not esi
or esi, edx
xor esi, ebx
add esi, ebp
mov ebp, dword [esp + 0x3c]
lea edi, [edi + esi - 0x7a7ba22f]
mov esi, edi
shr edi, 0xb
shl esi, 0x15
or esi, edi
mov edi, ebx
add esi, edx
not edi
or edi, esi
xor edi, edx
add edi, ebp
mov ebp, dword [esp + 0x58]
lea ecx, [ecx + edi + 0x6fa87e4f]
mov edi, ecx
shl ecx, 6
shr edi, 0x1a
or edi, ecx
mov ecx, edx
not ecx
add edi, esi
or ecx, edi
xor ecx, esi
add ecx, ebp
mov ebp, dword [esp + 0x34]
lea ebx, [ebx + ecx - 0x1d31920]
mov ecx, ebx
shl ebx, 0xa
shr ecx, 0x16
or ecx, ebx
mov ebx, esi
not ebx
add ecx, edi
or ebx, ecx
xor ebx, edi
add ebx, ebp
lea edx, [edx + ebx - 0x5cfebcec]
mov ebx, edx
shr ebx, 0x11
shl edx, 0xf
or ebx, edx
add ebx, ecx
mov ebp, dword [esp + 0x50]
mov edx, edi
not edx
or edx, ebx
xor edx, ecx
add edx, ebp
lea esi, [esi + edx + 0x4e0811a1]
mov ebp, dword [esp + 0x2c]
mov edx, esi
shr esi, 0xb
shl edx, 0x15
or edx, esi
mov esi, ecx
not esi
add edx, ebx
or esi, edx
xor esi, ebx
add esi, ebp
lea edi, [edi + esi - 0x8ac817e]
mov esi, edi
shr esi, 0x1a
shl edi, 6
or esi, edi
mov edi, dword [esp + 0x48]
add esi, edx
mov ebp, esi
mov esi, ebx
not esi
or esi, ebp
xor esi, edx
add esi, edi
lea ecx, [ecx + esi - 0x42c50dcb]
mov esi, ecx
mov edi, dword [esp + 0x24]
shl ecx, 0xa
shr esi, 0x16
or esi, ecx
add esi, ebp
mov ecx, edx
not ecx
or ecx, esi
xor ecx, ebp
add ecx, edi
lea ebx, [ebx + ecx + 0x2ad7d2bb]
mov ecx, ebx
shr ecx, 0x11
shl ebx, 0xf
or ecx, ebx
mov ebx, dword [esp + 0x40]
add ecx, esi
mov edi, ecx
mov ecx, ebp
not ecx
or ecx, edi
xor ecx, esi
add ecx, ebx
mov ebx, dword [esp + 0x10]
lea edx, [edx + ecx - 0x14792c6f]
add ebp, dword [esp + 0x60]
mov ecx, edx
shl ecx, 0x15
shr edx, 0xb
or ecx, edx
mov edx, dword [esp + 0x18]
add ecx, ebx
add ecx, edi
mov ebx, ecx
add edi, dword [esp + 0x14]
mov ecx, dword [esp + 0x64]
add esi, edx
cmp eax, ecx
jb 0x41cce3
mov eax, dword [esp + 0x68]
mov dword [eax + 8], edi
pop edi
mov dword [eax + 0xc], esi
pop esi
mov dword [eax], ebp
pop ebp
mov dword [eax + 4], ebx
pop ebx
add esp, 0x4c
ret