Function at 0x405010
Capabilities:
Encode data using xor

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