Function at 0x402140
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x4c
mov edx, dword [esp + 0x54]
mov eax, dword [esp + 0x50]
mov ecx, edx
push ebx
shr ecx, 2
push ebp
push esi
lea ecx, [eax + ecx*4]
push edi
mov dword [esp + 0x64], ecx
mov ecx, dword [esp + 0x68]
add dword [ecx + 0x10], edx
cmp dword [ecx + 0x10], edx
mov ebp, dword [ecx]
mov ebx, dword [ecx + 4]
mov edi, dword [ecx + 8]
mov esi, dword [ecx + 0xc]
jae 0x402175
inc dword [ecx + 0x14]
mov edx, dword [esp + 0x64]
mov ecx, dword [esp + 0x60]
cmp ecx, edx
jae 0x402a54
mov ecx, dword [eax]
mov edx, esi
xor edx, edi
mov dword [esp + 0x1c], ecx
and edx, ebx
mov dword [esp + 0x60], ebp
xor edx, esi
add eax, 4
add edx, ecx
mov dword [esp + 0x18], esi
add eax, 4
mov dword [esp + 0x14], edi
lea edx, [edx + ebp - 0x28955b88]
mov ebp, edi
mov ecx, edx
xor ebp, ebx
shr ecx, 0x19
shl edx, 7
or ecx, edx
mov edx, dword [eax - 4]
add ecx, ebx
mov dword [esp + 0x20], edx
and ebp, ecx
add eax, 4
xor ebp, edi
mov dword [esp + 0x10], ebx
add ebp, edx
add eax, 4
add eax, 4
lea esi, [esi + ebp - 0x173848aa]
mov ebp, ebx
mov edx, esi
xor ebp, ecx
shr edx, 0x14
shl esi, 0xc
or edx, esi
mov esi, dword [eax - 0xc]
add edx, ecx
mov dword [esp + 0x24], esi
and ebp, edx
xor ebp, ebx
add ebp, esi
lea edi, [edi + ebp + 0x242070db]
mov ebp, edx
mov esi, edi
xor ebp, ecx
shr esi, 0xf
shl edi, 0x11
or esi, edi
mov edi, dword [eax - 8]
add esi, edx
mov dword [esp + 0x28], edi
and ebp, esi
xor ebp, ecx
add ebp, edi
lea ebx, [ebx + ebp - 0x3e423112]
mov edi, ebx
shl edi, 0x16
shr ebx, 0xa
or edi, ebx
mov ebx, dword [eax - 4]
mov dword [esp + 0x2c], ebx
mov ebp, dword [esp + 0x2c]
mov ebx, edx
add edi, esi
xor ebx, esi
and ebx, edi
xor ebx, edx
add ebx, ebp
lea ecx, [ecx + ebx - 0xa83f051]
mov ebx, ecx
shr ebx, 0x19
shl ecx, 7
or ebx, ecx
mov ecx, dword [eax]
mov dword [esp + 0x30], ecx
mov ecx, esi
add ebx, edi
xor ecx, edi
and ecx, ebx
xor ecx, esi
mov ebp, dword [esp + 0x30]
add eax, 4
add ecx, ebp
add eax, 4
add eax, 4
lea edx, [edx + ecx + 0x4787c62a]
add eax, 4
mov ecx, edx
add eax, 4
shr ecx, 0x14
shl edx, 0xc
or ecx, edx
mov edx, dword [eax - 0x10]
mov dword [esp + 0x34], edx
mov ebp, dword [esp + 0x34]
mov edx, edi
add ecx, ebx
xor edx, ebx
add eax, 4
and edx, ecx
xor edx, edi
add edx, ebp
lea esi, [esi + edx - 0x57cfb9ed]
mov edx, esi
shr edx, 0xf
shl esi, 0x11
or edx, esi
mov esi, dword [eax - 0x10]
mov dword [esp + 0x38], esi
mov ebp, dword [esp + 0x38]
mov esi, ecx
add edx, ecx
xor esi, ebx
and esi, edx
xor esi, ebx
add esi, ebp
lea edi, [edi + esi - 0x2b96aff]
mov esi, edi
shl esi, 0x16
shr edi, 0xa
or esi, edi
mov edi, dword [eax - 0xc]
mov dword [esp + 0x3c], edi
mov ebp, dword [esp + 0x3c]
mov edi, ecx
add esi, edx
xor edi, edx
and edi, esi
xor edi, ecx
add edi, ebp
lea ebx, [ebx + edi + 0x698098d8]
mov edi, ebx
shr edi, 0x19
shl ebx, 7
or edi, ebx
mov ebx, dword [eax - 8]
mov dword [esp + 0x40], ebx
mov ebp, dword [esp + 0x40]
mov ebx, edx
add edi, esi
xor ebx, esi
and ebx, edi
xor ebx, edx
add ebx, ebp
lea ecx, [ecx + ebx - 0x74bb0851]
mov ebx, ecx
shr ebx, 0x14
shl ecx, 0xc
or ebx, ecx
mov ecx, dword [eax - 4]
mov dword [esp + 0x44], ecx
mov ebp, dword [esp + 0x44]
mov ecx, esi
add ebx, edi
xor ecx, edi
and ecx, ebx
xor ecx, esi
add ecx, ebp
lea edx, [edx + ecx - 0xa44f]
mov ecx, edx
shr ecx, 0xf
shl edx, 0x11
or ecx, edx
mov edx, dword [eax]
mov dword [esp + 0x48], edx
mov ebp, dword [esp + 0x48]
mov edx, ebx
add ecx, ebx
xor edx, edi
add eax, 4
and edx, ecx
add eax, 4
xor edx, edi
add eax, 4
add edx, ebp
add eax, 4
add eax, 4
lea esi, [esi + edx - 0x76a32842]
mov edx, esi
shl edx, 0x16
shr esi, 0xa
or edx, esi
mov esi, dword [eax - 0x10]
mov dword [esp + 0x4c], esi
mov ebp, dword [esp + 0x4c]
mov esi, ebx
add edx, ecx
xor esi, ecx
and esi, edx
xor esi, ebx
add esi, ebp
lea edi, [edi + esi + 0x6b901122]
mov esi, edi
shr esi, 0x19
shl edi, 7
or esi, edi
mov edi, dword [eax - 0xc]
mov dword [esp + 0x50], edi
mov ebp, dword [esp + 0x50]
mov edi, ecx
add esi, edx
xor edi, edx
and edi, esi
xor edi, ecx
add edi, ebp
mov ebp, edx
xor ebp, esi
lea edi, [ebx + edi - 0x2678e6d]
mov ebx, edi
shr ebx, 0x14
shl edi, 0xc
or ebx, edi
mov edi, dword [eax - 8]
add ebx, esi
mov dword [esp + 0x54], edi
and ebp, ebx
xor ebp, edx
add ebp, edi
lea ecx, [ecx + ebp - 0x5986bc72]
mov ebp, ebx
mov edi, ecx
xor ebp, esi
shr edi, 0xf
shl ecx, 0x11
or edi, ecx
mov ecx, dword [eax - 4]
add edi, ebx
mov dword [esp + 0x58], ecx
and ebp, edi
xor ebp, esi
add ebp, ecx
lea edx, [edx + ebp + 0x49b40821]
mov ebp, dword [esp + 0x20]
mov ecx, edx
shl ecx, 0x16
shr edx, 0xa
or ecx, edx
mov edx, edi
add ecx, edi
xor edx, ecx
and edx, ebx
xor edx, edi
add edx, ebp
mov ebp, dword [esp + 0x34]
lea esi, [esi + edx - 0x9e1da9e]
mov edx, esi
shr edx, 0x1b
shl esi, 5
or edx, esi
mov esi, ecx
add edx, ecx
xor esi, edx
and esi, edi
xor esi, ecx
add esi, ebp
mov ebp, dword [esp + 0x48]
lea ebx, [ebx + esi - 0x3fbf4cc0]
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
shr ebx, 0x12
shl edi, 0xe
or ebx, edi
mov edi, esi
add ebx, 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
shl edi, 0x14
shr ecx, 0xc
or edi, ecx
mov ecx, ebx
add edi, 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
shr ecx, 0x1b
shl edx, 5
or ecx, edx
mov edx, edi
add ecx, 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
shr edx, 0x17
shl esi, 9
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
mov ebx, edx
add esi, edx
xor ebx, esi
mov ebp, dword [esp + 0x2c]
and ebx, ecx
xor ebx, edx
add ebx, ebp
mov ebp, dword [esp + 0x40]
lea edi, [edi + ebx - 0x182c0438]
mov ebx, edi
shl ebx, 0x14
shr edi, 0xc
or ebx, edi
mov edi, esi
add ebx, esi
xor edi, ebx
and edi, edx
xor edi, esi
add edi, ebp
mov ebp, dword [esp + 0x54]
lea ecx, [ecx + edi + 0x21e1cde6]
mov edi, ecx
shr edi, 0x1b
shl ecx, 5
or edi, ecx
mov ecx, ebx
add edi, 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
shr ecx, 0x17
shl edx, 9
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
shr edx, 0x12
shl esi, 0xe
or edx, esi
mov esi, ecx
add edx, 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
shl esi, 0x14
shr ebx, 0xc
or esi, ebx
mov ebx, edx
add esi, 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
shr ebx, 0x1b
shl edi, 5
or ebx, edi
mov edi, esi
add ebx, 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
shr ebp, 0x12
shl edx, 0xe
or ebp, edx
mov edx, edi
add ebp, 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
shl ecx, 0x14
shr esi, 0xc
or ecx, esi
mov esi, dword [esp + 0x30]
add ecx, ebp
xor edx, ecx
add edx, esi
mov esi, ebp
xor esi, ecx
lea ebx, [ebx + edx - 0x5c6be]
mov edx, ebx
shr edx, 0x1c
shl ebx, 4
or edx, ebx
mov ebx, dword [esp + 0x3c]
add edx, ecx
xor esi, edx
add esi, ebx
mov ebx, dword [esp + 0x48]
lea edi, [edi + esi - 0x788e097f]
mov esi, edi
shr esi, 0x15
shl edi, 0xb
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
shr edi, 0x10
shl ebx, 0x10
or edi, ebx
mov ebx, esi
add edi, esi
xor ebx, edi
mov ebp, ebx
xor ebp, edx
add ebp, dword [esp + 0x54]
lea ebp, [ecx + ebp - 0x21ac7f4]
mov ecx, ebp
shl ecx, 0x17
shr ebp, 9
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
shr edx, 0x1c
shl ebx, 4
or edx, ebx
mov ebx, edi
add edx, ecx
xor ebx, ecx
xor ebx, edx
add ebx, ebp
lea ebx, [esi + ebx + 0x4bdecfa9]
mov ebp, dword [esp + 0x38]
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 - 0x944b4a0]
mov edi, ebx
shr edi, 0x10
shl ebx, 0x10
or edi, ebx
mov ebx, esi
add edi, esi
xor ebx, edi
mov ebp, ebx
xor ebp, edx
add ebp, dword [esp + 0x44]
lea ebp, [ecx + ebp - 0x41404390]
mov ecx, ebp
shl ecx, 0x17
shr ebp, 9
or ecx, ebp
mov ebp, dword [esp + 0x50]
add ecx, edi
xor ebx, ecx
add ebx, ebp
mov ebp, dword [esp + 0x1c]
lea ebx, [edx + ebx + 0x289b7ec6]
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, ebp
mov ebp, dword [esp + 0x28]
lea ebx, [esi + ebx - 0x155ed806]
mov esi, ebx
shr esi, 0x15
shl ebx, 0xb
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
shr edi, 0x10
shl ebx, 0x10
or edi, ebx
mov ebx, esi
add edi, 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
mov ebp, dword [esp + 0x4c]
xor ebx, edx
add ebx, ebp
mov ebp, dword [esp + 0x58]
lea ebx, [esi + ebx - 0x1924661b]
mov esi, ebx
shr esi, 0x15
shl ebx, 0xb
or esi, ebx
add esi, edx
mov ebx, esi
xor ebx, ecx
xor ebx, edx
add ebx, ebp
mov ebp, dword [esp + 0x24]
lea ebx, [edi + ebx + 0x1fa27cf8]
mov edi, ebx
shr edi, 0x10
shl ebx, 0x10
or edi, ebx
mov ebx, esi
add edi, esi
xor ebx, edi
xor ebx, edx
add ebx, ebp
mov ebp, dword [esp + 0x1c]
lea ebx, [ecx + ebx - 0x3b53a99b]
mov ecx, ebx
shl ecx, 0x17
shr ebx, 9
or ecx, ebx
mov ebx, esi
add ecx, edi
not ebx
or ebx, ecx
xor ebx, edi
add ebx, ebp
mov ebp, dword [esp + 0x38]
lea edx, [edx + ebx - 0xbd6ddbc]
mov ebx, edx
shr ebx, 0x1a
shl edx, 6
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
shr edx, 0x16
shl esi, 0xa
or edx, esi
mov esi, ecx
add edx, ebx
not esi
or esi, edx
xor esi, ebx
add esi, ebp
mov ebp, dword [esp + 0x30]
lea edi, [edi + esi - 0x546bdc59]
mov esi, edi
shr esi, 0x11
shl edi, 0xf
or esi, edi
mov edi, ebx
add esi, edx
not edi
or edi, esi
xor edi, edx
add edi, ebp
lea ecx, [ecx + edi - 0x36c5fc7]
mov edi, ecx
shl edi, 0x15
shr ecx, 0xb
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
mov ebp, dword [esp + 0x28]
lea ebx, [ebx + ecx + 0x655b59c3]
mov ecx, ebx
shr ecx, 0x1a
shl ebx, 6
or ecx, ebx
mov ebx, esi
add ecx, edi
not ebx
or ebx, ecx
xor ebx, edi
add ebx, ebp
mov ebp, dword [esp + 0x44]
lea edx, [edx + ebx - 0x70f3336e]
mov ebx, edx
shr ebx, 0x16
shl edx, 0xa
or ebx, edx
mov edx, edi
add ebx, ecx
not edx
or edx, ebx
xor edx, ecx
add edx, ebp
mov ebp, dword [esp + 0x20]
lea esi, [esi + edx - 0x100b83]
mov edx, esi
shr edx, 0x11
shl esi, 0xf
or edx, esi
mov esi, ecx
add edx, ebx
not esi
or esi, edx
xor esi, ebx
add esi, ebp
mov ebp, dword [esp + 0x3c]
lea edi, [edi + esi - 0x7a7ba22f]
mov esi, edi
shl esi, 0x15
shr edi, 0xb
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
shr edi, 0x1a
shl ecx, 6
or edi, ecx
mov ecx, edx
add edi, esi
not ecx
or ecx, edi
xor ecx, esi
add ecx, ebp
mov ebp, dword [esp + 0x34]
lea ebx, [ebx + ecx - 0x1d31920]
mov ecx, ebx
shr ecx, 0x16
shl ebx, 0xa
or ecx, ebx
mov ebx, esi
add ecx, edi
not ebx
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
mov ebp, dword [esp + 0x50]
mov edx, edi
add ebx, ecx
not edx
or edx, ebx
xor edx, ecx
add edx, ebp
mov ebp, dword [esp + 0x2c]
lea esi, [esi + edx + 0x4e0811a1]
mov edx, esi
shl edx, 0x15
shr esi, 0xb
or edx, esi
mov esi, ecx
add edx, ebx
not esi
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
mov edi, dword [esp + 0x24]
lea ecx, [ecx + esi - 0x42c50dcb]
mov esi, ecx
shr esi, 0x16
shl ecx, 0xa
or esi, ecx
mov ecx, edx
add esi, ebp
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]
mov ecx, dword [esp + 0x60]
add ebp, ecx
mov ecx, edx
shl ecx, 0x15
shr edx, 0xb
or ecx, edx
mov edx, dword [esp + 0x18]
add ecx, ebx
add esi, edx
add ecx, edi
mov ebx, ecx
mov ecx, dword [esp + 0x14]
add edi, ecx
mov ecx, dword [esp + 0x64]
cmp eax, ecx
jb 0x402185
mov eax, dword [esp + 0x68]
mov dword [eax + 8], edi
mov dword [eax + 0xc], esi
pop edi
mov dword [eax], ebp
pop esi
mov dword [eax + 4], ebx
pop ebp
pop ebx
add esp, 0x4c
ret