Function at 0x508570
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x48
call fcn.00611bb0
mov ecx, dword [esp + 0x4c]
mov eax, dword [esp + 0x50]
push ebp
push esi
mov edx, dword [ecx]
mov esi, dword [ecx + 8]
mov ebp, dword [ecx + 0xc]
push edi
mov edi, dword [ecx + 4]
mov ecx, dword [esp + 0x60]
mov dword [esp + 0x44], edx
mov dword [esp + 0x5c], edi
mov dword [esp + 0x38], esi
mov dword [esp + 0x34], ebp
test ecx, ecx
je 0x508e7f
mov dword [esp + 0x48], edi
mov dword [esp + 0x4c], esi
mov dword [esp + 0x50], ebp
push ebx
nop dword [eax]
dec ecx
movzx edx, byte [eax]
mov dword [esp + 0x64], ecx
movzx ecx, byte [eax + 1]
shl ecx, 8
or edx, ecx
movzx ebx, byte [eax + 4]
movzx ecx, byte [eax + 2]
shl ecx, 0x10
or edx, ecx
movzx ecx, byte [eax + 3]
shl ecx, 0x18
or edx, ecx
movzx ecx, byte [eax + 5]
shl ecx, 8
or ebx, ecx
mov dword [esp + 0x28], edx
movzx ecx, byte [eax + 6]
shl ecx, 0x10
or ebx, ecx
movzx ecx, byte [eax + 7]
shl ecx, 0x18
or ebx, ecx
mov ecx, ebp
xor ecx, esi
mov dword [esp + 0x40], ebx
and ecx, edi
xor ecx, ebp
movzx ebp, byte [eax + 8]
add ecx, edx
mov edx, dword [esp + 0x48]
add edx, 0xd76aa478
add edx, ecx
movzx ecx, byte [eax + 9]
shl ecx, 8
or ebp, ecx
rol edx, 7
movzx ecx, byte [eax + 0xa]
add edx, edi
shl ecx, 0x10
or ebp, ecx
movzx ecx, byte [eax + 0xb]
shl ecx, 0x18
or ebp, ecx
mov ecx, esi
xor ecx, edi
mov dword [esp + 0x44], ebp
and ecx, edx
xor ecx, esi
mov esi, dword [esp + 0x38]
add ecx, ebx
add esi, 0xe8c7b756
movzx ebx, byte [eax + 0xc]
add esi, ecx
movzx ecx, byte [eax + 0xd]
shl ecx, 8
or ebx, ecx
rol esi, 0xc
movzx ecx, byte [eax + 0xe]
add esi, edx
shl ecx, 0x10
or ebx, ecx
movzx ecx, byte [eax + 0xf]
shl ecx, 0x18
or ebx, ecx
mov ecx, edi
xor ecx, edx
mov dword [esp + 0x38], ebx
and ecx, esi
xor ecx, edi
mov edi, dword [esp + 0x3c]
add ecx, ebp
add edi, 0x242070db
movzx ebp, byte [eax + 0x10]
add edi, ecx
movzx ecx, byte [eax + 0x11]
ror edi, 0xf
shl ecx, 8
add edi, esi
or ebp, ecx
movzx ecx, byte [eax + 0x12]
shl ecx, 0x10
or ebp, ecx
movzx ecx, byte [eax + 0x13]
shl ecx, 0x18
or ebp, ecx
mov ecx, esi
xor ecx, edx
mov dword [esp + 0x20], ebp
and ecx, edi
movzx ebp, byte [eax + 0x14]
xor ecx, edx
add ecx, ebx
mov ebx, dword [esp + 0x60]
add ebx, 0xc1bdceee
add ebx, ecx
movzx ecx, byte [eax + 0x15]
shl ecx, 8
or ebp, ecx
ror ebx, 0xa
movzx ecx, byte [eax + 0x16]
add ebx, edi
shl ecx, 0x10
or ebp, ecx
movzx ecx, byte [eax + 0x17]
shl ecx, 0x18
or ebp, ecx
mov ecx, esi
xor ecx, edi
mov dword [esp + 0x30], ebp
and ecx, ebx
add ebp, 0x4787c62a
xor ecx, esi
add ecx, 0xf57c0faf
add ecx, dword [esp + 0x20]
add edx, ecx
movzx ecx, byte [eax + 0x18]
mov dword [esp + 0x14], ecx
movzx ecx, byte [eax + 0x19]
shl ecx, 8
or dword [esp + 0x14], ecx
movzx ecx, byte [eax + 0x1a]
shl ecx, 0x10
or dword [esp + 0x14], ecx
movzx ecx, byte [eax + 0x1b]
shl ecx, 0x18
or dword [esp + 0x14], ecx
mov ecx, edi
xor ecx, ebx
rol edx, 7
add edx, ebx
and ecx, edx
xor ecx, edi
add ecx, ebp
movzx ebp, byte [eax + 0x1c]
add esi, ecx
movzx ecx, byte [eax + 0x1d]
shl ecx, 8
or ebp, ecx
rol esi, 0xc
movzx ecx, byte [eax + 0x1e]
add esi, edx
shl ecx, 0x10
or ebp, ecx
movzx ecx, byte [eax + 0x1f]
shl ecx, 0x18
or ebp, ecx
mov ecx, ebx
xor ecx, edx
mov dword [esp + 0x2c], ebp
and ecx, esi
xor ecx, ebx
add ecx, 0xa8304613
add ecx, dword [esp + 0x14]
add edi, ecx
movzx ecx, byte [eax + 0x20]
mov dword [esp + 0x60], ecx
movzx ecx, byte [eax + 0x21]
ror edi, 0xf
shl ecx, 8
add edi, esi
or dword [esp + 0x60], ecx
movzx ecx, byte [eax + 0x22]
add ebp, 0xfd469501
shl ecx, 0x10
or dword [esp + 0x60], ecx
movzx ecx, byte [eax + 0x23]
shl ecx, 0x18
or dword [esp + 0x60], ecx
mov ecx, esi
xor ecx, edx
and ecx, edi
xor ecx, edx
add ecx, ebp
movzx ebp, byte [eax + 0x24]
add ebx, ecx
movzx ecx, byte [eax + 0x25]
shl ecx, 8
or ebp, ecx
ror ebx, 0xa
movzx ecx, byte [eax + 0x26]
add ebx, edi
shl ecx, 0x10
or ebp, ecx
movzx ecx, byte [eax + 0x27]
shl ecx, 0x18
or ebp, ecx
mov ecx, esi
xor ecx, edi
mov dword [esp + 0x24], ebp
and ecx, ebx
lea ebp, [edx + 0x698098d8]
xor ecx, esi
movzx edx, byte [eax + 0x28]
add ecx, dword [esp + 0x60]
add ebp, ecx
movzx ecx, byte [eax + 0x29]
shl ecx, 8
or edx, ecx
rol ebp, 7
movzx ecx, byte [eax + 0x2a]
add ebp, ebx
shl ecx, 0x10
or edx, ecx
movzx ecx, byte [eax + 0x2b]
shl ecx, 0x18
or edx, ecx
mov ecx, edi
xor ecx, ebx
mov dword [esp + 0x3c], edx
and ecx, ebp
xor ecx, edi
add ecx, 0x8b44f7af
add ecx, dword [esp + 0x24]
add esi, ecx
movzx ecx, byte [eax + 0x2c]
mov dword [esp + 0x18], ecx
movzx ecx, byte [eax + 0x2d]
shl ecx, 8
or dword [esp + 0x18], ecx
movzx ecx, byte [eax + 0x2e]
shl ecx, 0x10
or dword [esp + 0x18], ecx
movzx ecx, byte [eax + 0x2f]
shl ecx, 0x18
or dword [esp + 0x18], ecx
mov ecx, ebx
xor ecx, ebp
rol esi, 0xc
add esi, ebp
and ecx, esi
mov dword [esp + 0x48], esi
xor ecx, ebx
add ecx, edx
lea edx, [edi - 0xa44f]
movzx edi, byte [eax + 0x30]
add edx, ecx
movzx ecx, byte [eax + 0x31]
ror edx, 0xf
shl ecx, 8
add edx, esi
or edi, ecx
movzx ecx, byte [eax + 0x32]
shl ecx, 0x10
lea eax, [eax + 0x40]
or edi, ecx
movzx ecx, byte [eax - 0xd]
shl ecx, 0x18
or edi, ecx
mov ecx, esi
xor ecx, ebp
mov dword [esp + 0x34], edi
and ecx, edx
lea esi, [ebx - 0x76a32842]
xor ecx, ebp
movzx ebx, byte [eax - 0xc]
add ecx, dword [esp + 0x18]
add esi, ecx
movzx ecx, byte [eax - 0xb]
shl ecx, 8
or ebx, ecx
ror esi, 0xa
movzx ecx, byte [eax - 0xa]
add esi, edx
shl ecx, 0x10
or ebx, ecx
movzx ecx, byte [eax - 9]
shl ecx, 0x18
or ebx, ecx
mov dword [esp + 0x1c], ebx
mov ebx, dword [esp + 0x48]
mov ecx, ebx
xor ecx, edx
and ecx, esi
xor ecx, ebx
add ebx, 0xfd987193
add ecx, edi
lea edi, [ebp + 0x6b901122]
movzx ebp, byte [eax - 8]
add edi, ecx
movzx ecx, byte [eax - 7]
shl ecx, 8
or ebp, ecx
rol edi, 7
movzx ecx, byte [eax - 6]
add edi, esi
shl ecx, 0x10
or ebp, ecx
movzx ecx, byte [eax - 5]
shl ecx, 0x18
or ebp, ecx
mov ecx, edx
xor ecx, esi
mov dword [esp + 0x48], ebp
and ecx, edi
xor ecx, edx
add ecx, dword [esp + 0x1c]
add ebx, ecx
movzx ecx, byte [eax - 4]
mov dword [esp + 0x10], ecx
movzx ecx, byte [eax - 3]
shl ecx, 8
or dword [esp + 0x10], ecx
movzx ecx, byte [eax - 2]
shl ecx, 0x10
or dword [esp + 0x10], ecx
movzx ecx, byte [eax - 1]
shl ecx, 0x18
or dword [esp + 0x10], ecx
mov ecx, esi
xor ecx, edi
rol ebx, 0xc
add ebx, edi
and ecx, ebx
xor ecx, esi
add ecx, 0xa679438e
add ecx, ebp
add edx, ecx
mov ecx, ebx
ror edx, 0xf
xor ecx, edi
add edx, ebx
and ecx, edx
xor ecx, edi
add ecx, 0x49b40821
add ecx, dword [esp + 0x10]
add esi, ecx
mov ecx, edx
ror esi, 0xa
add esi, edx
xor ecx, esi
and ecx, ebx
xor ecx, edx
add ecx, 0xf61e2562
add ecx, dword [esp + 0x40]
add edi, ecx
mov ecx, esi
rol edi, 5
add edi, esi
xor ecx, edi
and ecx, edx
xor ecx, esi
add ecx, 0xc040b340
add ecx, dword [esp + 0x14]
add ebx, ecx
rol ebx, 9
add ebx, edi
mov ecx, ebx
xor ecx, edi
and ecx, esi
xor ecx, edi
add ecx, 0x265e5a51
add ecx, dword [esp + 0x18]
add edx, ecx
mov ecx, ebx
rol edx, 0xe
add edx, ebx
xor ecx, edx
and ecx, edi
xor ecx, ebx
add ecx, 0xe9b6c7aa
add ecx, dword [esp + 0x28]
add esi, ecx
mov ecx, edx
ror esi, 0xc
add esi, edx
xor ecx, esi
and ecx, ebx
xor ecx, edx
add ecx, 0xd62f105d
add ecx, dword [esp + 0x30]
add edi, ecx
mov ecx, esi
rol edi, 5
add edi, esi
xor ecx, edi
and ecx, edx
xor ecx, esi
add ecx, 0x2441453
add ecx, dword [esp + 0x3c]
add ebx, ecx
rol ebx, 9
add ebx, edi
mov ecx, ebx
xor ecx, edi
and ecx, esi
xor ecx, edi
add ecx, 0xd8a1e681
add ecx, dword [esp + 0x10]
add edx, ecx
mov ecx, ebx
rol edx, 0xe
add edx, ebx
xor ecx, edx
and ecx, edi
xor ecx, ebx
add ecx, 0xe7d3fbc8
add ecx, dword [esp + 0x20]
add esi, ecx
mov ecx, edx
ror esi, 0xc
add esi, edx
xor ecx, esi
and ecx, ebx
xor ecx, edx
add ecx, 0x21e1cde6
add ecx, dword [esp + 0x24]
add edi, ecx
mov ecx, esi
rol edi, 5
add edi, esi
xor ecx, edi
and ecx, edx
xor ecx, esi
add ecx, 0xc33707d6
add ecx, ebp
add ebx, ecx
rol ebx, 9
add ebx, edi
mov ecx, ebx
xor ecx, edi
and ecx, esi
xor ecx, edi
add ecx, 0xf4d50d87
add ecx, dword [esp + 0x38]
add edx, ecx
mov ecx, ebx
rol edx, 0xe
add edx, ebx
xor ecx, edx
and ecx, edi
xor ecx, ebx
add ecx, 0x455a14ed
lea ebp, [edx + 0x676f02d9]
add ecx, dword [esp + 0x60]
add esi, ecx
mov ecx, edx
ror esi, 0xc
add esi, edx
xor ecx, esi
and ecx, ebx
xor ecx, edx
add ecx, 0xa9e3e905
add ecx, dword [esp + 0x1c]
add edi, ecx
mov ecx, esi
rol edi, 5
add edi, esi
xor ecx, edi
and ecx, edx
xor ecx, esi
add ecx, 0xfcefa3f8
add ecx, dword [esp + 0x44]
add ebx, ecx
rol ebx, 9
add ebx, edi
mov ecx, ebx
mov edx, ebx
xor ecx, edi
and ecx, esi
xor ecx, edi
add ecx, dword [esp + 0x2c]
add ebp, ecx
rol ebp, 0xe
add ebp, ebx
xor edx, ebp
mov ecx, edx
and ecx, edi
xor ecx, ebx
add ecx, 0x8d2a4c8a
add ecx, dword [esp + 0x34]
add esi, ecx
mov ecx, ebp
ror esi, 0xc
add esi, ebp
xor edx, esi
xor ecx, esi
add edx, 0xfffa3942
add edx, dword [esp + 0x30]
add edi, edx
rol edi, 4
add edi, esi
xor ecx, edi
add ecx, 0x8771f681
add ecx, dword [esp + 0x60]
add ebx, ecx
rol ebx, 0xb
add ebx, edi
mov ecx, ebx
mov edx, ebx
xor ecx, esi
xor ecx, edi
add ecx, 0x6d9d6122
add ecx, dword [esp + 0x18]
add ebp, ecx
rol ebp, 0x10
add ebp, ebx
xor edx, ebp
mov ecx, edx
xor ecx, edi
add ecx, 0xfde5380c
add ecx, dword [esp + 0x48]
add esi, ecx
mov ecx, ebp
ror esi, 9
add esi, ebp
xor ecx, esi
xor edx, esi
add edx, 0xa4beea44
add edx, dword [esp + 0x40]
add edi, edx
rol edi, 4
add edi, esi
xor ecx, edi
add ecx, 0x4bdecfa9
add ecx, dword [esp + 0x20]
add ebx, ecx
rol ebx, 0xb
add ebx, edi
mov ecx, ebx
mov edx, ebx
xor ecx, esi
xor ecx, edi
add ecx, 0xf6bb4b60
add ecx, dword [esp + 0x2c]
add ebp, ecx
rol ebp, 0x10
add ebp, ebx
xor edx, ebp
mov ecx, edx
xor ecx, edi
add ecx, 0xbebfbc70
add ecx, dword [esp + 0x3c]
add esi, ecx
mov ecx, ebp
ror esi, 9
add esi, ebp
xor edx, esi
xor ecx, esi
add edx, 0x289b7ec6
add edx, dword [esp + 0x1c]
add edi, edx
rol edi, 4
add edi, esi
xor ecx, edi
add ecx, 0xeaa127fa
add ecx, dword [esp + 0x28]
add ebx, ecx
rol ebx, 0xb
add ebx, edi
mov ecx, ebx
mov edx, ebx
xor ecx, esi
xor ecx, edi
add ecx, 0xd4ef3085
add ecx, dword [esp + 0x38]
add ebp, ecx
rol ebp, 0x10
add ebp, ebx
xor edx, ebp
mov ecx, edx
xor ecx, edi
add ecx, 0x4881d05
add ecx, dword [esp + 0x14]
add esi, ecx
ror esi, 9
add esi, ebp
xor edx, esi
add edi, 0xd9d4d039
add edx, dword [esp + 0x24]
mov ecx, ebp
xor ecx, esi
add edx, edi
rol edx, 4
lea edi, [ebx - 0x1924661b]
add edx, esi
xor ecx, edx
add ecx, dword [esp + 0x34]
add edi, ecx
rol edi, 0xb
add edi, edx
mov ebx, edi
mov ecx, edi
xor ebx, esi
xor ebx, edx
add ebx, 0x1fa27cf8
add ebx, dword [esp + 0x10]
add ebx, ebp
rol ebx, 0x10
add ebx, edi
xor ecx, ebx
xor ecx, edx
add ecx, 0xc4ac5665
add ecx, dword [esp + 0x44]
add esi, ecx
mov ecx, edi
not ecx
ror esi, 9
add esi, ebx
or ecx, esi
xor ecx, ebx
add ecx, 0xf4292244
add ecx, dword [esp + 0x28]
add edx, ecx
mov ecx, ebx
not ecx
rol edx, 6
add edx, esi
or ecx, edx
xor ecx, esi
add ecx, 0x432aff97
add ecx, dword [esp + 0x2c]
add edi, ecx
mov ecx, esi
not ecx
rol edi, 0xa
add edi, edx
or ecx, edi
xor ecx, edx
add ecx, 0xab9423a7
add ecx, dword [esp + 0x48]
add ebx, ecx
mov ecx, edx
not ecx
rol ebx, 0xf
add ebx, edi
or ecx, ebx
xor ecx, edi
add ecx, 0xfc93a039
add ecx, dword [esp + 0x30]
add esi, ecx
mov ecx, edi
not ecx
ror esi, 0xb
add esi, ebx
or ecx, esi
xor ecx, ebx
add ecx, 0x655b59c3
add ecx, dword [esp + 0x34]
add edx, ecx
mov ecx, ebx
rol edx, 6
not ecx
add edx, esi
or ecx, edx
xor ecx, esi
add ecx, 0x8f0ccc92
add ecx, dword [esp + 0x38]
add edi, ecx
mov ecx, esi
not ecx
rol edi, 0xa
add edi, edx
or ecx, edi
xor ecx, edx
add ecx, 0xffeff47d
add ecx, dword [esp + 0x3c]
add ebx, ecx
mov ecx, edx
not ecx
rol ebx, 0xf
add ebx, edi
or ecx, ebx
xor ecx, edi
add ecx, 0x85845dd1
add ecx, dword [esp + 0x40]
add esi, ecx
mov ecx, edi
not ecx
ror esi, 0xb
add esi, ebx
or ecx, esi
xor ecx, ebx
add ecx, 0x6fa87e4f
add ecx, dword [esp + 0x60]
lea ebp, [esi + 0x4e0811a1]
add edx, ecx
mov ecx, ebx
not ecx
rol edx, 6
add edx, esi
or ecx, edx
xor ecx, esi
add ecx, 0xfe2ce6e0
add ecx, dword [esp + 0x10]
add edi, ecx
mov ecx, esi
not ecx
rol edi, 0xa
add edi, edx
lea esi, [edx - 0x8ac817e]
or ecx, edi
xor ecx, edx
add ecx, 0xa3014314
add ecx, dword [esp + 0x14]
add ebx, ecx
mov ecx, edx
not ecx
rol ebx, 0xf
add ebx, edi
or ecx, ebx
xor ecx, edi
add ecx, dword [esp + 0x1c]
add ebp, ecx
lea edx, [ebx + 0x2ad7d2bb]
mov ecx, edi
ror ebp, 0xb
not ecx
add ebp, ebx
or ecx, ebp
xor ecx, ebx
add ecx, dword [esp + 0x20]
add esi, ecx
mov ecx, ebx
not ecx
rol esi, 6
add esi, ebp
or ecx, esi
xor ecx, ebp
add ecx, 0xbd3af235
add ecx, dword [esp + 0x18]
add edi, ecx
mov ecx, ebp
rol edi, 0xa
not ecx
add edi, esi
or ecx, edi
xor ecx, esi
add ecx, dword [esp + 0x44]
mov ebx, dword [esp + 0x5c]
add edx, ecx
mov ecx, esi
rol edx, 0xf
not ecx
add edx, edi
or ecx, edx
add ebp, 0xeb86d391
add dword [ebx], esi
xor ecx, edi
add ecx, dword [esp + 0x24]
mov esi, dword [esp + 0x4c]
add ecx, ebp
mov ebp, dword [ebx]
ror ecx, 0xb
add ecx, edx
mov dword [esp + 0x48], ebp
add esi, ecx
mov ecx, dword [esp + 0x50]
add ecx, edx
mov dword [esp + 0x60], esi
mov dword [esp + 0x50], ecx
mov dword [esp + 0x3c], ecx
mov dword [ebx + 8], ecx
mov dword [esp + 0x4c], esi
mov dword [ebx + 4], esi
mov esi, ecx
mov ecx, dword [esp + 0x54]
add ecx, edi
mov edi, dword [esp + 0x60]
mov dword [esp + 0x54], ecx
mov ebp, ecx
mov dword [esp + 0x38], ecx
mov dword [ebx + 0xc], ecx
mov ecx, dword [esp + 0x64]
test ecx, ecx
jne 0x5085c0
pop ebx
pop edi
pop esi
pop ebp
add esp, 0x48
ret