Function at 0x523be4
Capabilities:
Encode data using xor
Hash data using sha1

Disassembly:
push ebx
push esi
push edi
push ebp
add esp, 0xfffffeb4
mov dword [esp], eax
mov edx, dword [esp]
add edx, 0x50
lea eax, [esp + 0xc]
call fcn.00523ba8
mov eax, dword [esp]
mov eax, dword [eax]
mov edx, dword [esp]
mov edx, dword [edx + 4]
mov ecx, dword [esp]
mov ecx, dword [ecx + 8]
mov ebx, dword [esp]
mov ebx, dword [ebx + 0xc]
mov esi, dword [esp]
mov esi, dword [esi + 0x10]
mov dword [esp + 8], esi
xor esi, esi
mov dword [esp + 4], esi
cmp dword [esp + 4], 0x14
jge 0x523d52
mov esi, eax
shl esi, 5
mov edi, eax
shr edi, 0x1b
or esi, edi
mov edi, ebx
xor edi, ecx
and edi, edx
xor edi, ebx
add esi, edi
mov edi, dword [esp + 4]
add esi, dword [esp + edi*4 + 0xc]
add esi, 0x5a827999
add dword [esp + 8], esi
mov esi, edx
shr esi, 2
shl edx, 0x1e
or esi, edx
mov edx, esi
mov esi, dword [esp + 8]
shl esi, 5
mov edi, dword [esp + 8]
shr edi, 0x1b
or esi, edi
mov edi, ecx
xor edi, edx
and edi, eax
xor edi, ecx
add esi, edi
mov edi, dword [esp + 4]
add esi, dword [esp + edi*4 + 0x10]
add esi, 0x5a827999
add ebx, esi
mov esi, eax
shr esi, 2
shl eax, 0x1e
or esi, eax
mov eax, esi
mov esi, ebx
shl esi, 5
mov edi, ebx
shr edi, 0x1b
or esi, edi
mov edi, edx
xor edi, eax
and edi, dword [esp + 8]
xor edi, edx
add esi, edi
mov edi, dword [esp + 4]
add esi, dword [esp + edi*4 + 0x14]
add esi, 0x5a827999
add ecx, esi
mov esi, dword [esp + 8]
shr esi, 2
mov edi, dword [esp + 8]
shl edi, 0x1e
or esi, edi
mov dword [esp + 8], esi
mov esi, ecx
shl esi, 5
mov edi, ecx
shr edi, 0x1b
or esi, edi
mov edi, dword [esp + 8]
xor edi, eax
and edi, ebx
xor edi, eax
add esi, edi
mov edi, dword [esp + 4]
add esi, dword [esp + edi*4 + 0x18]
add esi, 0x5a827999
add edx, esi
mov esi, ebx
shr esi, 2
shl ebx, 0x1e
or esi, ebx
mov ebx, esi
mov esi, edx
shl esi, 5
mov edi, edx
shr edi, 0x1b
or esi, edi
mov edi, dword [esp + 8]
xor edi, ebx
and edi, ecx
xor edi, dword [esp + 8]
add esi, edi
mov edi, dword [esp + 4]
add esi, dword [esp + edi*4 + 0x1c]
add esi, 0x5a827999
add eax, esi
mov esi, ecx
shr esi, 2
shl ecx, 0x1e
or esi, ecx
mov ecx, esi
add dword [esp + 4], 5
cmp dword [esp + 4], 0x14
jl 0x523c32
cmp dword [esp + 4], 0x28
jge 0x523e71
mov esi, eax
shl esi, 5
mov edi, eax
shr edi, 0x1b
or esi, edi
mov edi, edx
xor edi, ebx
xor edi, ecx
add esi, edi
mov edi, dword [esp + 4]
add esi, dword [esp + edi*4 + 0xc]
add esi, 0x6ed9eba1
add dword [esp + 8], esi
mov esi, edx
shr esi, 2
shl edx, 0x1e
or esi, edx
mov edx, esi
mov esi, dword [esp + 8]
shl esi, 5
mov edi, dword [esp + 8]
shr edi, 0x1b
or esi, edi
mov edi, eax
xor edi, ecx
xor edi, edx
add esi, edi
mov edi, dword [esp + 4]
add esi, dword [esp + edi*4 + 0x10]
add esi, 0x6ed9eba1
add ebx, esi
mov esi, eax
shr esi, 2
shl eax, 0x1e
or esi, eax
mov eax, esi
mov esi, ebx
shl esi, 5
mov edi, ebx
shr edi, 0x1b
or esi, edi
mov edi, dword [esp + 8]
xor edi, edx
xor edi, eax
add esi, edi
mov edi, dword [esp + 4]
add esi, dword [esp + edi*4 + 0x14]
add esi, 0x6ed9eba1
add ecx, esi
mov esi, dword [esp + 8]
shr esi, 2
mov edi, dword [esp + 8]
shl edi, 0x1e
or esi, edi
mov dword [esp + 8], esi
mov esi, ecx
shl esi, 5
mov edi, ecx
shr edi, 0x1b
or esi, edi
mov edi, ebx
xor edi, eax
xor edi, dword [esp + 8]
add esi, edi
mov edi, dword [esp + 4]
add esi, dword [esp + edi*4 + 0x18]
add esi, 0x6ed9eba1
add edx, esi
mov esi, ebx
shr esi, 2
shl ebx, 0x1e
or esi, ebx
mov ebx, esi
mov esi, edx
shl esi, 5
mov edi, edx
shr edi, 0x1b
or esi, edi
mov edi, dword [esp + 8]
xor edi, ecx
xor edi, ebx
add esi, edi
mov edi, dword [esp + 4]
add esi, dword [esp + edi*4 + 0x1c]
add esi, 0x6ed9eba1
add eax, esi
mov esi, ecx
shr esi, 2
shl ecx, 0x1e
or esi, ecx
mov ecx, esi
add dword [esp + 4], 5
cmp dword [esp + 4], 0x28
jl 0x523d5d
cmp dword [esp + 4], 0x3c
jge 0x523fb2
mov esi, eax
shl esi, 5
mov edi, eax
shr edi, 0x1b
or esi, edi
mov edi, ecx
and edi, edx
mov ebp, ecx
or ebp, edx
and ebp, ebx
or edi, ebp
add esi, edi
mov edi, dword [esp + 4]
add esi, dword [esp + edi*4 + 0xc]
add esi, 0x8f1bbcdc
add dword [esp + 8], esi
mov esi, edx
shr esi, 2
shl edx, 0x1e
or esi, edx
mov edx, esi
mov esi, dword [esp + 8]
shl esi, 5
mov edi, dword [esp + 8]
shr edi, 0x1b
or esi, edi
mov edi, edx
and edi, eax
mov ebp, edx
or ebp, eax
and ebp, ecx
or edi, ebp
add esi, edi
mov edi, dword [esp + 4]
add esi, dword [esp + edi*4 + 0x10]
add esi, 0x8f1bbcdc
add ebx, esi
mov esi, eax
shr esi, 2
shl eax, 0x1e
or esi, eax
mov eax, esi
mov esi, ebx
shl esi, 5
mov edi, ebx
shr edi, 0x1b
or esi, edi
mov edi, dword [esp + 8]
and edi, eax
mov ebp, dword [esp + 8]
or ebp, eax
and ebp, edx
or edi, ebp
add esi, edi
mov edi, dword [esp + 4]
add esi, dword [esp + edi*4 + 0x14]
add esi, 0x8f1bbcdc
add ecx, esi
mov esi, dword [esp + 8]
shr esi, 2
mov edi, dword [esp + 8]
shl edi, 0x1e
or esi, edi
mov dword [esp + 8], esi
mov esi, ecx
shl esi, 5
mov edi, ecx
shr edi, 0x1b
or esi, edi
mov edi, dword [esp + 8]
and edi, ebx
mov ebp, dword [esp + 8]
or ebp, ebx
and ebp, eax
or edi, ebp
add esi, edi
mov edi, dword [esp + 4]
add esi, dword [esp + edi*4 + 0x18]
add esi, 0x8f1bbcdc
add edx, esi
mov esi, ebx
shr esi, 2
shl ebx, 0x1e
or esi, ebx
mov ebx, esi
mov esi, edx
shl esi, 5
mov edi, edx
shr edi, 0x1b
or esi, edi
mov edi, ebx
and edi, ecx
mov ebp, ebx
or ebp, ecx
and ebp, dword [esp + 8]
or edi, ebp
add esi, edi
mov edi, dword [esp + 4]
add esi, dword [esp + edi*4 + 0x1c]
add esi, 0x8f1bbcdc
add eax, esi
mov esi, ecx
shr esi, 2
shl ecx, 0x1e
or esi, ecx
mov ecx, esi
add dword [esp + 4], 5
cmp dword [esp + 4], 0x3c
jl 0x523e7c
cmp dword [esp + 4], 0x50
jge 0x5240d1
mov esi, eax
shl esi, 5
mov edi, eax
shr edi, 0x1b
or esi, edi
mov edi, edx
xor edi, ebx
xor edi, ecx
add esi, edi
mov edi, dword [esp + 4]
add esi, dword [esp + edi*4 + 0xc]
add esi, 0xca62c1d6
add dword [esp + 8], esi
mov esi, edx
shr esi, 2
shl edx, 0x1e
or esi, edx
mov edx, esi
mov esi, dword [esp + 8]
shl esi, 5
mov edi, dword [esp + 8]
shr edi, 0x1b
or esi, edi
mov edi, eax
xor edi, ecx
xor edi, edx
add esi, edi
mov edi, dword [esp + 4]
add esi, dword [esp + edi*4 + 0x10]
add esi, 0xca62c1d6
add ebx, esi
mov esi, eax
shr esi, 2
shl eax, 0x1e
or esi, eax
mov eax, esi
mov esi, ebx
shl esi, 5
mov edi, ebx
shr edi, 0x1b
or esi, edi
mov edi, dword [esp + 8]
xor edi, edx
xor edi, eax
add esi, edi
mov edi, dword [esp + 4]
add esi, dword [esp + edi*4 + 0x14]
add esi, 0xca62c1d6
add ecx, esi
mov esi, dword [esp + 8]
shr esi, 2
mov edi, dword [esp + 8]
shl edi, 0x1e
or esi, edi
mov dword [esp + 8], esi
mov esi, ecx
shl esi, 5
mov edi, ecx
shr edi, 0x1b
or esi, edi
mov edi, ebx
xor edi, eax
xor edi, dword [esp + 8]
add esi, edi
mov edi, dword [esp + 4]
add esi, dword [esp + edi*4 + 0x18]
add esi, 0xca62c1d6
add edx, esi
mov esi, ebx
shr esi, 2
shl ebx, 0x1e
or esi, ebx
mov ebx, esi
mov esi, edx
shl esi, 5
mov edi, edx
shr edi, 0x1b
or esi, edi
mov edi, dword [esp + 8]
xor edi, ecx
xor edi, ebx
add esi, edi
mov edi, dword [esp + 4]
add esi, dword [esp + edi*4 + 0x1c]
add esi, 0xca62c1d6
add eax, esi
mov esi, ecx
shr esi, 2
shl ecx, 0x1e
or esi, ecx
mov ecx, esi
add dword [esp + 4], 5
cmp dword [esp + 4], 0x50
jl 0x523fbd
mov esi, dword [esp]
add dword [esi], eax
mov eax, dword [esp]
add dword [eax + 4], edx
mov eax, dword [esp]
add dword [eax + 8], ecx
mov eax, dword [esp]
add dword [eax + 0xc], ebx
mov eax, dword [esp]
mov edx, dword [esp + 8]
add dword [eax + 0x10], edx
add esp, 0x14c
pop ebp
pop edi
pop esi
pop ebx
ret