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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x168
mov eax, dword [0x495580]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov ebx, dword [ebp + 8]
push esi
push edi
mov edi, edx
mov dword [ebp - 0x154], ecx
mov eax, dword [ebx]
mov esi, 0x40
mov edx, eax
mov dword [ebp - 0x158], ebx
and edx, 0x3f
add eax, edi
sub esi, edx
mov dword [ebx], eax
cmp eax, edi
jae 0x40ce50
inc dword [ebx + 4]
cmp edi, esi
jb 0x40d0ab
push esi
lea eax, [edx + 0x1c]
push ecx
add eax, ebx
push eax
call fcn.0044ca70
add dword [ebp - 0x154], esi
lea edx, [ebx + 0x1c]
sub edi, esi
mov dword [ebp - 0x168], 0x40
add esp, 0xc
mov dword [ebp - 0x164], edi
mov dword [ebp - 0x15c], 0
xor ecx, ecx
nop
mov eax, dword [edx]
lea edx, [edx + 4]
bswap eax
mov dword [ebp + ecx*4 - 0x144], eax
inc ecx
cmp ecx, 0x10
jb 0x40ce90
lea eax, [ebp - 0x13c]
mov edx, 0x40
nop
mov ecx, dword [eax + 0x2c]
lea eax, [eax + 4]
xor ecx, dword [eax + 0x14]
xor ecx, dword [eax - 0xc]
xor ecx, dword [eax - 4]
ror ecx, 0x1f
mov dword [eax + 0x34], ecx
sub edx, 1
jne 0x40ceb0
mov ecx, dword [ebp - 0x158]
mov eax, dword [ebx + 8]
mov esi, eax
mov ebx, dword [ebx + 0xc]
mov dword [ebp - 0x160], eax
mov eax, dword [ecx + 0x14]
mov edi, dword [ecx + 0x10]
mov ecx, dword [ecx + 0x18]
mov dword [ebp - 0x148], eax
mov dword [ebp - 0x150], ecx
mov dword [ebp - 0x14c], edx
nop dword [eax]
mov ecx, ebx
mov edx, esi
not ecx
ror esi, 0x1b
and ecx, eax
mov eax, edi
and eax, ebx
xor ecx, eax
mov eax, dword [ebp - 0x150]
add esi, ecx
add eax, 0x5a827999
mov ecx, dword [ebp - 0x14c]
add esi, dword [ebp + ecx*4 - 0x144]
inc ecx
add esi, eax
mov dword [ebp - 0x14c], ecx
mov eax, dword [ebp - 0x148]
mov dword [ebp - 0x150], eax
mov eax, edi
mov edi, ebx
mov dword [ebp - 0x148], eax
shr ebx, 2
shl edi, 0x1e
or edi, ebx
mov ebx, edx
cmp ecx, 0x14
jb 0x40cf00
mov edx, 0x14
nop
xor eax, edi
mov ecx, esi
xor eax, ebx
ror esi, 0x1b
add esi, eax
mov eax, dword [ebp - 0x150]
add esi, dword [ebp + edx*4 - 0x144]
add eax, 0x6ed9eba1
add esi, eax
inc edx
mov eax, dword [ebp - 0x148]
mov dword [ebp - 0x150], eax
mov eax, edi
mov edi, ebx
mov dword [ebp - 0x148], eax
shr ebx, 2
shl edi, 0x1e
or edi, ebx
mov ebx, ecx
cmp edx, 0x28
jb 0x40cf60
mov dword [ebp - 0x14c], 0x28
nop
mov ecx, edi
mov edx, esi
xor ecx, ebx
ror esi, 0x1b
add esi, dword [ebp - 0x150]
and ecx, eax
mov eax, edi
and eax, ebx
xor ecx, eax
mov eax, dword [ebp - 0x14c]
add ecx, 0x8f1bbcdc
add ecx, dword [ebp + eax*4 - 0x144]
mov eax, dword [ebp - 0x148]
add esi, ecx
mov ecx, dword [ebp - 0x14c]
mov dword [ebp - 0x150], eax
inc ecx
mov eax, edi
mov dword [ebp - 0x14c], ecx
mov edi, ebx
mov dword [ebp - 0x148], eax
shr ebx, 2
shl edi, 0x1e
or edi, ebx
mov ebx, edx
cmp ecx, 0x3c
jb 0x40cfb0
mov edx, dword [ebp - 0x150]
mov ecx, 0x3c
nop dword [eax]
xor eax, edi
mov dword [ebp - 0x14c], esi
xor eax, ebx
ror esi, 0x1b
add eax, 0xca62c1d6
add esi, edx
add eax, dword [ebp + ecx*4 - 0x144]
inc ecx
mov edx, dword [ebp - 0x148]
add esi, eax
mov eax, edi
mov edi, ebx
shr ebx, 2
shl edi, 0x1e
or edi, ebx
mov dword [ebp - 0x148], eax
mov ebx, dword [ebp - 0x14c]
cmp ecx, 0x50
jb 0x40d020
mov ebx, dword [ebp - 0x158]
mov eax, dword [ebp - 0x160]
mov ecx, dword [ebp - 0x154]
add eax, esi
mov esi, dword [ebp - 0x168]
add dword [ebx + 0x10], edi
add dword [ebx + 0x18], edx
mov edi, dword [ebp - 0x164]
mov edx, dword [ebp - 0x15c]
mov dword [ebx + 8], eax
mov eax, dword [ebp - 0x14c]
add dword [ebx + 0xc], eax
mov eax, dword [ebp - 0x148]
add dword [ebx + 0x14], eax
cmp edi, 0x40
jae 0x40ce58
push edi
lea eax, [edx + 0x1c]
push ecx
add eax, ebx
push eax
call fcn.0044ca70
mov ecx, dword [ebp - 4]
add esp, 0xc
xor ecx, ebp
pop edi
pop esi
pop ebx
call fcn.0044ae3d
mov esp, ebp
pop ebp
ret