Function at 0x405e70
Capabilities:
Encode data using xor

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