Function at 0x1012ac10
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x4c
call fcn.101bea50
mov ecx, dword [esp + 0x50]
mov eax, dword [esp + 0x54]
push ebp
push esi
mov edx, dword [ecx]
mov esi, dword [ecx + 4]
mov ebp, dword [ecx + 8]
push edi
mov edi, dword [ecx + 0xc]
mov ecx, dword [esp + 0x64]
mov dword [esp + 0x40], edx
mov dword [esp + 0x60], esi
mov dword [esp + 0x38], ebp
mov dword [esp + 0x44], edi
test ecx, ecx
je 0x1012b525
mov dword [esp + 0x48], edx
mov dword [esp + 0x4c], esi
mov dword [esp + 0x50], ebp
mov dword [esp + 0x54], edi
push ebx
nop dword [eax]
dec ecx
movzx edx, byte [eax]
mov dword [esp + 0x68], 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, edi
xor ecx, ebp
mov dword [esp + 0x40], ebx
and ecx, esi
movzx ebp, byte [eax + 8]
xor ecx, edi
mov edi, dword [esp + 0x3c]
add ecx, edx
add edi, 0x242070db
mov edx, dword [esp + 0x44]
add edx, 0xd76aa478
add edx, ecx
movzx ecx, byte [eax + 9]
shl ecx, 8
or ebp, ecx
ror edx, 0x19
movzx ecx, byte [eax + 0xa]
add edx, esi
shl ecx, 0x10
or ebp, ecx
movzx ecx, byte [eax + 0xb]
shl ecx, 0x18
or ebp, ecx
mov ecx, dword [esp + 0x3c]
xor ecx, esi
mov dword [esp + 0x44], ebp
mov esi, dword [esp + 0x48]
and ecx, edx
xor ecx, dword [esp + 0x3c]
add esi, 0xe8c7b756
add ecx, ebx
movzx ebx, byte [eax + 0xc]
add esi, ecx
movzx ecx, byte [eax + 0xd]
shl ecx, 8
or ebx, ecx
ror esi, 0x14
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, dword [esp + 0x64]
xor ecx, edx
mov dword [esp + 0x38], ebx
and ecx, esi
xor ecx, dword [esp + 0x64]
add ecx, ebp
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 + 0x64]
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
ror edx, 0x19
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
ror esi, 0x14
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 + 0x64], ecx
movzx ecx, byte [eax + 0x21]
ror edi, 0xf
shl ecx, 8
add edi, esi
or dword [esp + 0x64], ecx
movzx ecx, byte [eax + 0x22]
add ebp, 0xfd469501
shl ecx, 0x10
or dword [esp + 0x64], ecx
movzx ecx, byte [eax + 0x23]
shl ecx, 0x18
or dword [esp + 0x64], 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 + 0x64]
add ebp, ecx
movzx ecx, byte [eax + 0x29]
shl ecx, 8
or edx, ecx
ror ebp, 0x19
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
ror esi, 0x14
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
ror edi, 0x19
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
ror ebx, 0x14
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
ror edi, 0x1b
add edi, esi
xor ecx, edi
and ecx, edx
xor ecx, esi
add ecx, 0xc040b340
add ecx, dword [esp + 0x14]
add ebx, ecx
ror ebx, 0x17
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
ror edx, 0x12
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
ror edi, 0x1b
add edi, esi
xor ecx, edi
and ecx, edx
xor ecx, esi
add ecx, 0x2441453
add ecx, dword [esp + 0x3c]
add ebx, ecx
ror ebx, 0x17
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
ror edx, 0x12
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
ror edi, 0x1b
add edi, esi
xor ecx, edi
and ecx, edx
xor ecx, esi
add ecx, 0xc33707d6
add ecx, ebp
add ebx, ecx
ror ebx, 0x17
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
ror edx, 0x12
add edx, ebx
xor ecx, edx
and ecx, edi
xor ecx, ebx
add ecx, 0x455a14ed
lea ebp, [edx + 0x676f02d9]
add ecx, dword [esp + 0x64]
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
ror edi, 0x1b
add edi, esi
xor ecx, edi
and ecx, edx
xor ecx, esi
add ecx, 0xfcefa3f8
add ecx, dword [esp + 0x44]
add ebx, ecx
ror ebx, 0x17
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
ror ebp, 0x12
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
ror edi, 0x1c
add edi, esi
xor ecx, edi
add ecx, 0x8771f681
add ecx, dword [esp + 0x64]
add ebx, ecx
ror ebx, 0x15
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
ror 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
ror edi, 0x1c
add edi, esi
xor ecx, edi
add ecx, 0x4bdecfa9
add ecx, dword [esp + 0x20]
add ebx, ecx
ror ebx, 0x15
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
ror 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
ror edi, 0x1c
add edi, esi
xor ecx, edi
add ecx, 0xeaa127fa
add ecx, dword [esp + 0x28]
add ebx, ecx
ror ebx, 0x15
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
ror 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
ror edx, 0x1c
lea edi, [ebx - 0x1924661b]
add edx, esi
xor ecx, edx
add ecx, dword [esp + 0x34]
add edi, ecx
ror edi, 0x15
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
ror 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
ror edx, 0x1a
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
ror edi, 0x16
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
ror ebx, 0x11
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
ror edx, 0x1a
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
ror edi, 0x16
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
ror ebx, 0x11
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 + 0x64]
lea ebp, [esi + 0x4e0811a1]
add edx, ecx
mov ecx, ebx
not ecx
ror edx, 0x1a
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
ror edi, 0x16
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
ror ebx, 0x11
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
ror esi, 0x1a
add esi, ebp
or ecx, esi
xor ecx, ebp
add ecx, 0xbd3af235
add ecx, dword [esp + 0x18]
add edi, ecx
mov ecx, ebp
ror edi, 0x16
not ecx
add edi, esi
or ecx, edi
xor ecx, esi
add ecx, dword [esp + 0x44]
mov ebx, dword [esp + 0x60]
add edx, ecx
mov ecx, esi
ror edx, 0x11
add esi, dword [esp + 0x4c]
add edx, edi
not ecx
mov dword [esp + 0x44], esi
or ecx, edx
mov dword [ebx], esi
xor ecx, edi
lea esi, [ebp - 0x14792c6f]
add ecx, dword [esp + 0x24]
mov ebp, dword [esp + 0x54]
add esi, ecx
add edi, dword [esp + 0x58]
add ebp, edx
mov ecx, dword [esp + 0x44]
ror esi, 0xb
add esi, dword [esp + 0x50]
add esi, edx
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x68]
mov dword [esp + 0x64], esi
mov dword [ebx + 4], esi
mov dword [esp + 0x3c], ebp
mov dword [ebx + 8], ebp
mov dword [esp + 0x48], edi
mov dword [ebx + 0xc], edi
mov dword [esp + 0x50], esi
mov dword [esp + 0x54], ebp
mov dword [esp + 0x58], edi
test ecx, ecx
jne 0x1012ac60
pop ebx
pop edi
pop esi
pop ebp
add esp, 0x4c
ret