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

Disassembly:
push ebx
push esi
push edi
push ebp
add esp, 0xfffffe9c
mov dword [esp + 4], ecx
mov dword [esp], eax
mov dword [esp + 0xc], edx
mov eax, dword [esp]
cmp dword [eax + 0xc], 0
jle 0x5f6247
mov eax, dword [esp]
mov eax, dword [eax + 8]
mov ecx, dword [esp]
add eax, dword [ecx + 0xc]
mov ecx, dword [esp]
mov ebx, 0x40
sub ebx, dword [ecx + 0xc]
cmp ebx, dword [esp + 4]
jle 0x5f6004
mov ecx, dword [esp + 4]
xchg edx, eax
call fcn.0040310c
mov eax, dword [esp]
mov edx, dword [esp + 4]
add dword [eax + 0xc], edx
jmp 0x5f64e6
mov ecx, ebx
xchg edx, eax
call fcn.0040310c
sub dword [esp + 4], ebx
add dword [esp + 0xc], ebx
lea edx, [esp + 0x24]
mov eax, dword [esp]
mov eax, dword [eax + 8]
mov ecx, 0x40
call fcn.0040310c
mov esi, 0x10
lea edx, [esp + 0x24]
mov eax, edx
movzx edi, byte [eax]
mov cl, byte [eax + 3]
mov byte [eax], cl
mov ecx, edi
mov byte [eax + 3], cl
movzx edi, byte [eax + 1]
mov cl, byte [eax + 2]
mov byte [eax + 1], cl
mov ecx, edi
mov byte [eax + 2], cl
add edx, 4
dec esi
jne 0x5f6031
mov esi, 0x40
lea eax, [esp + 0x58]
mov edx, dword [eax]
xor edx, dword [eax - 0x14]
xor edx, dword [eax - 0x2c]
xor edx, dword [eax - 0x34]
mov ecx, edx
add ecx, ecx
shr edx, 0x1f
or ecx, edx
mov dword [eax + 0xc], ecx
add eax, 4
dec esi
jne 0x5f605e
mov eax, dword [esp]
mov eax, dword [eax + 0x18]
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov ebx, dword [eax + 8]
mov dword [esp + 0x14], ebx
mov ebx, dword [eax + 0xc]
mov dword [esp + 0x18], ebx
mov eax, dword [eax + 0x10]
mov dword [esp + 0x1c], eax
mov esi, 0x14
lea eax, [esp + 0x24]
mov edi, ecx
shl edi, 5
mov ebx, ecx
shr ebx, 0x1b
or edi, ebx
mov ebx, dword [esp + 0x14]
and ebx, edx
mov ebp, edx
not ebp
and ebp, dword [esp + 0x18]
or ebx, ebp
add edi, ebx
add edi, dword [esp + 0x1c]
add edi, dword [eax]
add edi, 0x5a827999
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x1c], ebx
mov ebx, dword [esp + 0x14]
mov dword [esp + 0x18], ebx
mov ebx, edx
shl ebx, 0x1e
shr edx, 2
or ebx, edx
mov dword [esp + 0x14], ebx
mov edx, ecx
mov ecx, edi
add eax, 4
dec esi
jne 0x5f60a4
mov esi, 0x14
lea eax, [esp + 0x74]
mov edi, ecx
shl edi, 5
mov ebx, ecx
shr ebx, 0x1b
or edi, ebx
mov ebx, dword [esp + 0x14]
xor ebx, edx
xor ebx, dword [esp + 0x18]
add edi, ebx
add edi, dword [esp + 0x1c]
add edi, dword [eax]
add edi, 0x6ed9eba1
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x1c], ebx
mov ebx, dword [esp + 0x14]
mov dword [esp + 0x18], ebx
mov ebx, edx
shl ebx, 0x1e
shr edx, 2
or ebx, edx
mov dword [esp + 0x14], ebx
mov edx, ecx
mov ecx, edi
add eax, 4
dec esi
jne 0x5f60ff
mov esi, 0x14
lea eax, [esp + 0xc4]
mov edi, ecx
shl edi, 5
mov ebx, ecx
shr ebx, 0x1b
or edi, ebx
mov ebx, dword [esp + 0x14]
and ebx, edx
mov ebp, dword [esp + 0x18]
and ebp, edx
or ebx, ebp
mov ebp, dword [esp + 0x14]
and ebp, dword [esp + 0x18]
or ebx, ebp
add edi, ebx
add edi, dword [esp + 0x1c]
add edi, dword [eax]
add edi, 0x8f1bbcdc
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x1c], ebx
mov ebx, dword [esp + 0x14]
mov dword [esp + 0x18], ebx
mov ebx, edx
shl ebx, 0x1e
shr edx, 2
or ebx, edx
mov dword [esp + 0x14], ebx
mov edx, ecx
mov ecx, edi
add eax, 4
dec esi
jne 0x5f6157
mov esi, 0x14
lea eax, [esp + 0x114]
mov edi, ecx
shl edi, 5
mov ebx, ecx
shr ebx, 0x1b
or edi, ebx
mov ebx, dword [esp + 0x14]
xor ebx, edx
xor ebx, dword [esp + 0x18]
add edi, ebx
add edi, dword [esp + 0x1c]
add edi, dword [eax]
add edi, 0xca62c1d6
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x1c], ebx
mov ebx, dword [esp + 0x14]
mov dword [esp + 0x18], ebx
mov ebx, edx
shl ebx, 0x1e
shr edx, 2
or ebx, edx
mov dword [esp + 0x14], ebx
mov edx, ecx
mov ecx, edi
add eax, 4
dec esi
jne 0x5f61bd
mov eax, dword [esp]
mov eax, dword [eax + 0x18]
add dword [eax], ecx
mov eax, dword [esp]
mov eax, dword [eax + 0x18]
add dword [eax + 4], edx
mov eax, dword [esp]
mov eax, dword [eax + 0x18]
mov edx, dword [esp + 0x14]
add dword [eax + 8], edx
mov eax, dword [esp]
mov eax, dword [eax + 0x18]
mov edx, dword [esp + 0x18]
add dword [eax + 0xc], edx
mov eax, dword [esp]
mov eax, dword [eax + 0x18]
mov edx, dword [esp + 0x1c]
add dword [eax + 0x10], edx
mov eax, dword [esp]
inc dword [eax + 0x10]
mov eax, dword [esp + 4]
test eax, eax
jns 0x5f6252
add eax, 0x3f
sar eax, 6
mov dword [esp + 8], eax
mov eax, dword [esp + 0xc]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 8]
test eax, eax
jle 0x5f64ab
mov dword [esp + 0x20], eax
lea edx, [esp + 0x24]
mov eax, dword [esp + 0x10]
mov ecx, 0x40
call fcn.0040310c
mov esi, 0x10
lea edx, [esp + 0x24]
mov eax, edx
movzx edi, byte [eax]
mov cl, byte [eax + 3]
mov byte [eax], cl
mov ecx, edi
mov byte [eax + 3], cl
movzx edi, byte [eax + 1]
mov cl, byte [eax + 2]
mov byte [eax + 1], cl
mov ecx, edi
mov byte [eax + 2], cl
add edx, 4
dec esi
jne 0x5f628c
mov esi, 0x40
lea eax, [esp + 0x58]
mov edx, dword [eax]
xor edx, dword [eax - 0x14]
xor edx, dword [eax - 0x2c]
xor edx, dword [eax - 0x34]
mov ecx, edx
add ecx, ecx
shr edx, 0x1f
or ecx, edx
mov dword [eax + 0xc], ecx
add eax, 4
dec esi
jne 0x5f62b9
mov eax, dword [esp]
mov eax, dword [eax + 0x18]
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov ebx, dword [eax + 8]
mov dword [esp + 0x14], ebx
mov ebx, dword [eax + 0xc]
mov dword [esp + 0x18], ebx
mov eax, dword [eax + 0x10]
mov dword [esp + 0x1c], eax
mov esi, 0x14
lea eax, [esp + 0x24]
mov edi, ecx
shl edi, 5
mov ebx, ecx
shr ebx, 0x1b
or edi, ebx
mov ebx, dword [esp + 0x14]
and ebx, edx
mov ebp, edx
not ebp
and ebp, dword [esp + 0x18]
or ebx, ebp
add edi, ebx
add edi, dword [esp + 0x1c]
add edi, dword [eax]
add edi, 0x5a827999
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x1c], ebx
mov ebx, dword [esp + 0x14]
mov dword [esp + 0x18], ebx
mov ebx, edx
shl ebx, 0x1e
shr edx, 2
or ebx, edx
mov dword [esp + 0x14], ebx
mov edx, ecx
mov ecx, edi
add eax, 4
dec esi
jne 0x5f62ff
mov esi, 0x14
lea eax, [esp + 0x74]
mov edi, ecx
shl edi, 5
mov ebx, ecx
shr ebx, 0x1b
or edi, ebx
mov ebx, dword [esp + 0x14]
xor ebx, edx
xor ebx, dword [esp + 0x18]
add edi, ebx
add edi, dword [esp + 0x1c]
add edi, dword [eax]
add edi, 0x6ed9eba1
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x1c], ebx
mov ebx, dword [esp + 0x14]
mov dword [esp + 0x18], ebx
mov ebx, edx
shl ebx, 0x1e
shr edx, 2
or ebx, edx
mov dword [esp + 0x14], ebx
mov edx, ecx
mov ecx, edi
add eax, 4
dec esi
jne 0x5f635a
mov esi, 0x14
lea eax, [esp + 0xc4]
mov edi, ecx
shl edi, 5
mov ebx, ecx
shr ebx, 0x1b
or edi, ebx
mov ebx, dword [esp + 0x14]
and ebx, edx
mov ebp, dword [esp + 0x18]
and ebp, edx
or ebx, ebp
mov ebp, dword [esp + 0x14]
and ebp, dword [esp + 0x18]
or ebx, ebp
add edi, ebx
add edi, dword [esp + 0x1c]
add edi, dword [eax]
add edi, 0x8f1bbcdc
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x1c], ebx
mov ebx, dword [esp + 0x14]
mov dword [esp + 0x18], ebx
mov ebx, edx
shl ebx, 0x1e
shr edx, 2
or ebx, edx
mov dword [esp + 0x14], ebx
mov edx, ecx
mov ecx, edi
add eax, 4
dec esi
jne 0x5f63b2
mov esi, 0x14
lea eax, [esp + 0x114]
mov edi, ecx
shl edi, 5
mov ebx, ecx
shr ebx, 0x1b
or edi, ebx
mov ebx, dword [esp + 0x14]
xor ebx, edx
xor ebx, dword [esp + 0x18]
add edi, ebx
add edi, dword [esp + 0x1c]
add edi, dword [eax]
add edi, 0xca62c1d6
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x1c], ebx
mov ebx, dword [esp + 0x14]
mov dword [esp + 0x18], ebx
mov ebx, edx
shl ebx, 0x1e
shr edx, 2
or ebx, edx
mov dword [esp + 0x14], ebx
mov edx, ecx
mov ecx, edi
add eax, 4
dec esi
jne 0x5f6418
add dword [esp + 0x10], 0x40
mov eax, dword [esp]
mov eax, dword [eax + 0x18]
add dword [eax], ecx
mov eax, dword [esp]
mov eax, dword [eax + 0x18]
add dword [eax + 4], edx
mov eax, dword [esp]
mov eax, dword [eax + 0x18]
mov edx, dword [esp + 0x14]
add dword [eax + 8], edx
mov eax, dword [esp]
mov eax, dword [eax + 0x18]
mov edx, dword [esp + 0x18]
add dword [eax + 0xc], edx
mov eax, dword [esp]
mov eax, dword [eax + 0x18]
mov edx, dword [esp + 0x1c]
add dword [eax + 0x10], edx
dec dword [esp + 0x20]
jne 0x5f6271
mov eax, dword [esp]
mov edx, dword [esp + 8]
add dword [eax + 0x10], edx
mov eax, dword [esp + 4]
and eax, 0x8000003f
jns 0x5f64c5
dec eax
or eax, 0xffffffc0
inc eax
mov edx, dword [esp]
mov dword [edx + 0xc], eax
mov edx, dword [esp + 4]
sub edx, eax
add dword [esp + 0xc], edx
mov ecx, eax
mov eax, dword [esp]
mov edx, dword [eax + 8]
mov eax, dword [esp + 0xc]
call fcn.0040310c
add esp, 0x164
pop ebp
pop edi
pop esi
pop ebx
ret