Function at 0x40c534
Capabilities:
Hash data using sha1

Disassembly:
push ebx
push esi
push edi
push ebp
add esp, 0xffffffc0
mov dword [esp + 4], edx
mov dword [esp], eax
lea esi, [esp + 0x2c]
mov ebx, dword [esp + 4]
xor eax, eax
mov edx, dword [esp]
mov ecx, dword [edx + eax*4]
mov dword [esi + eax*4], ecx
inc eax
cmp eax, 5
jl 0x40c54c
xor ecx, ecx
xor eax, eax
mov dword [esp + 0x18], eax
lea eax, [ecx + 2]
mov edi, 5
cdq
idiv edi
lea eax, [ecx + 3]
mov ebp, 5
mov edi, dword [esi + edx*4]
cdq
idiv ebp
lea eax, [ecx + 1]
mov ebp, 5
xor edi, dword [esi + edx*4]
cdq
idiv ebp
lea eax, [ecx + 3]
mov ebp, 5
and edi, dword [esi + edx*4]
cdq
idiv ebp
mov eax, dword [esp + 0x18]
mov ebp, dword [esp + 0x18]
xor edi, dword [esi + edx*4]
mov edx, dword [ebx + eax*4]
mov eax, dword [esp + 0x18]
mov ebp, dword [ebx + ebp*4]
shl edx, 0x18
shr ebp, 0x18
mov eax, dword [ebx + eax*4]
shr eax, 8
or edx, eax
mov eax, dword [esp + 0x18]
and edx, 0xff00ff00
mov eax, dword [ebx + eax*4]
shl eax, 8
or eax, ebp
mov ebp, 5
and eax, 0xff00ff
or edx, eax
mov eax, dword [esp + 0x18]
add edi, edx
mov dword [ebx + eax*4], edx
mov eax, dword [esi + ecx*4]
mov edx, dword [esi + ecx*4]
shr edx, 0x1b
shl eax, 5
or eax, edx
add edi, eax
lea eax, [ecx + 4]
cdq
idiv ebp
add edi, 0x5a827999
lea eax, [ecx + 1]
add dword [esi + edx*4], edi
mov edi, 5
cdq
idiv edi
lea eax, [ecx + 1]
mov ebp, 5
mov edi, dword [esi + edx*4]
cdq
idiv ebp
shl edi, 0x1e
mov ebp, 5
mov eax, dword [esi + edx*4]
shr eax, 2
or edi, eax
lea eax, [ecx + 1]
cdq
idiv ebp
mov dword [esi + edx*4], edi
inc dword [esp + 0x18]
test ecx, ecx
je 0x40c640
lea eax, [ecx - 1]
jmp 0x40c645
mov eax, 4
cmp dword [esp + 0x18], 0x10
mov ecx, eax
jl 0x40c563
mov dword [esp + 0x1c], 0x10
lea eax, [ecx + 2]
mov edi, 5
cdq
idiv edi
lea eax, [ecx + 3]
mov ebp, 5
mov edi, dword [esi + edx*4]
cdq
idiv ebp
lea eax, [ecx + 1]
mov ebp, 5
xor edi, dword [esi + edx*4]
cdq
idiv ebp
lea eax, [ecx + 3]
mov ebp, 5
and edi, dword [esi + edx*4]
cdq
idiv ebp
mov eax, dword [esp + 0x1c]
mov ebp, dword [esp + 0x1c]
add eax, 0xd
add ebp, 8
and eax, 0xf
and ebp, 0xf
xor edi, dword [esi + edx*4]
mov edx, dword [ebx + eax*4]
mov eax, dword [esp + 0x1c]
add eax, 8
and eax, 0xf
xor edx, dword [ebx + eax*4]
mov eax, dword [esp + 0x1c]
add eax, 2
and eax, 0xf
xor edx, dword [ebx + eax*4]
mov eax, dword [esp + 0x1c]
and eax, 0xf
xor edx, dword [ebx + eax*4]
mov eax, dword [esp + 0x1c]
add eax, 0xd
add edx, edx
and eax, 0xf
mov eax, dword [ebx + eax*4]
xor eax, dword [ebx + ebp*4]
mov ebp, dword [esp + 0x1c]
add ebp, 2
and ebp, 0xf
xor eax, dword [ebx + ebp*4]
mov ebp, dword [esp + 0x1c]
and ebp, 0xf
xor eax, dword [ebx + ebp*4]
mov ebp, 5
shr eax, 0x1f
or edx, eax
mov eax, dword [esp + 0x1c]
and eax, 0xf
add edi, edx
mov dword [ebx + eax*4], edx
mov eax, dword [esi + ecx*4]
mov edx, dword [esi + ecx*4]
shr edx, 0x1b
shl eax, 5
or eax, edx
add edi, eax
lea eax, [ecx + 4]
cdq
idiv ebp
add edi, 0x5a827999
lea eax, [ecx + 1]
add dword [esi + edx*4], edi
mov edi, 5
cdq
idiv edi
lea eax, [ecx + 1]
mov ebp, 5
mov edi, dword [esi + edx*4]
cdq
idiv ebp
shl edi, 0x1e
mov ebp, 5
mov eax, dword [esi + edx*4]
shr eax, 2
or edi, eax
lea eax, [ecx + 1]
cdq
idiv ebp
mov dword [esi + edx*4], edi
inc dword [esp + 0x1c]
test ecx, ecx
je 0x40c76a
lea eax, [ecx - 1]
jmp 0x40c76f
mov eax, 4
cmp dword [esp + 0x1c], 0x14
mov ecx, eax
jl 0x40c65a
mov dword [esp + 0x20], 0x14
lea eax, [ecx + 1]
mov edi, 5
cdq
idiv edi
lea eax, [ecx + 2]
mov ebp, 5
mov edi, dword [esi + edx*4]
cdq
idiv ebp
lea eax, [ecx + 3]
mov ebp, 5
xor edi, dword [esi + edx*4]
cdq
idiv ebp
mov eax, dword [esp + 0x20]
mov ebp, dword [esp + 0x20]
add eax, 0xd
add ebp, 8
and eax, 0xf
and ebp, 0xf
xor edi, dword [esi + edx*4]
mov edx, dword [ebx + eax*4]
mov eax, dword [esp + 0x20]
add eax, 8
and eax, 0xf
xor edx, dword [ebx + eax*4]
mov eax, dword [esp + 0x20]
add eax, 2
and eax, 0xf
xor edx, dword [ebx + eax*4]
mov eax, dword [esp + 0x20]
and eax, 0xf
xor edx, dword [ebx + eax*4]
mov eax, dword [esp + 0x20]
add eax, 0xd
add edx, edx
and eax, 0xf
mov eax, dword [ebx + eax*4]
xor eax, dword [ebx + ebp*4]
mov ebp, dword [esp + 0x20]
add ebp, 2
and ebp, 0xf
xor eax, dword [ebx + ebp*4]
mov ebp, dword [esp + 0x20]
and ebp, 0xf
xor eax, dword [ebx + ebp*4]
mov ebp, 5
shr eax, 0x1f
or edx, eax
mov eax, dword [esp + 0x20]
and eax, 0xf
add edi, edx
mov dword [ebx + eax*4], edx
mov eax, dword [esi + ecx*4]
mov edx, dword [esi + ecx*4]
shr edx, 0x1b
shl eax, 5
or eax, edx
add edi, eax
lea eax, [ecx + 4]
cdq
idiv ebp
add edi, 0x6ed9eba1
lea eax, [ecx + 1]
add dword [esi + edx*4], edi
mov edi, 5
cdq
idiv edi
lea eax, [ecx + 1]
mov ebp, 5
mov edi, dword [esi + edx*4]
cdq
idiv ebp
shl edi, 0x1e
mov ebp, 5
mov eax, dword [esi + edx*4]
shr eax, 2
or edi, eax
lea eax, [ecx + 1]
cdq
idiv ebp
mov dword [esi + edx*4], edi
inc dword [esp + 0x20]
test ecx, ecx
je 0x40c886
lea eax, [ecx - 1]
jmp 0x40c88b
mov eax, 4
cmp dword [esp + 0x20], 0x28
mov ecx, eax
jl 0x40c784
mov dword [esp + 0x24], 0x28
lea eax, [ecx + 1]
mov edi, 5
cdq
idiv edi
lea eax, [ecx + 2]
mov ebp, 5
mov edi, dword [esi + edx*4]
cdq
idiv ebp
lea eax, [ecx + 3]
mov ebp, 5
or edi, dword [esi + edx*4]
cdq
idiv ebp
lea eax, [ecx + 1]
mov ebp, 5
and edi, dword [esi + edx*4]
cdq
idiv ebp
lea eax, [ecx + 2]
mov ebp, dword [esi + edx*4]
cdq
push ecx
mov ecx, 5
idiv ecx
pop ecx
mov eax, dword [esp + 0x24]
add eax, 0xd
and ebp, dword [esi + edx*4]
and eax, 0xf
or edi, ebp
mov ebp, dword [esp + 0x24]
add ebp, 8
mov edx, dword [ebx + eax*4]
mov eax, dword [esp + 0x24]
and ebp, 0xf
add eax, 8
and eax, 0xf
xor edx, dword [ebx + eax*4]
mov eax, dword [esp + 0x24]
add eax, 2
and eax, 0xf
xor edx, dword [ebx + eax*4]
mov eax, dword [esp + 0x24]
and eax, 0xf
xor edx, dword [ebx + eax*4]
mov eax, dword [esp + 0x24]
add eax, 0xd
add edx, edx
and eax, 0xf
mov eax, dword [ebx + eax*4]
xor eax, dword [ebx + ebp*4]
mov ebp, dword [esp + 0x24]
add ebp, 2
and ebp, 0xf
xor eax, dword [ebx + ebp*4]
mov ebp, dword [esp + 0x24]
and ebp, 0xf
xor eax, dword [ebx + ebp*4]
mov ebp, 5
shr eax, 0x1f
or edx, eax
mov eax, dword [esp + 0x24]
and eax, 0xf
add edi, edx
mov dword [ebx + eax*4], edx
mov eax, dword [esi + ecx*4]
mov edx, dword [esi + ecx*4]
shr edx, 0x1b
shl eax, 5
or eax, edx
add edi, eax
lea eax, [ecx + 4]
cdq
idiv ebp
add edi, 0x8f1bbcdc
lea eax, [ecx + 1]
add dword [esi + edx*4], edi
mov edi, 5
cdq
idiv edi
lea eax, [ecx + 1]
mov ebp, 5
mov edi, dword [esi + edx*4]
cdq
idiv ebp
shl edi, 0x1e
mov ebp, 5
mov eax, dword [esi + edx*4]
shr eax, 2
or edi, eax
lea eax, [ecx + 1]
cdq
idiv ebp
mov dword [esi + edx*4], edi
inc dword [esp + 0x24]
test ecx, ecx
je 0x40c9c2
lea eax, [ecx - 1]
jmp 0x40c9c7
mov eax, 4
cmp dword [esp + 0x24], 0x3c
mov ecx, eax
jl 0x40c8a0
mov dword [esp + 0x28], 0x3c
lea eax, [ecx + 1]
mov edi, 5
cdq
idiv edi
lea eax, [ecx + 2]
mov ebp, 5
mov edi, dword [esi + edx*4]
cdq
idiv ebp
lea eax, [ecx + 3]
mov ebp, 5
xor edi, dword [esi + edx*4]
cdq
idiv ebp
mov eax, dword [esp + 0x28]
mov ebp, dword [esp + 0x28]
add eax, 0xd
add ebp, 8
and eax, 0xf
and ebp, 0xf
xor edi, dword [esi + edx*4]
mov edx, dword [ebx + eax*4]
mov eax, dword [esp + 0x28]
add eax, 8
and eax, 0xf
xor edx, dword [ebx + eax*4]
mov eax, dword [esp + 0x28]
add eax, 2
and eax, 0xf
xor edx, dword [ebx + eax*4]
mov eax, dword [esp + 0x28]
and eax, 0xf
xor edx, dword [ebx + eax*4]
mov eax, dword [esp + 0x28]
add eax, 0xd
add edx, edx
and eax, 0xf
mov eax, dword [ebx + eax*4]
xor eax, dword [ebx + ebp*4]
mov ebp, dword [esp + 0x28]
add ebp, 2
and ebp, 0xf
xor eax, dword [ebx + ebp*4]
mov ebp, dword [esp + 0x28]
and ebp, 0xf
xor eax, dword [ebx + ebp*4]
mov ebp, 5
shr eax, 0x1f
or edx, eax
mov eax, dword [esp + 0x28]
and eax, 0xf
add edi, edx
mov dword [ebx + eax*4], edx
mov eax, dword [esi + ecx*4]
mov edx, dword [esi + ecx*4]
shr edx, 0x1b
shl eax, 5
or eax, edx
add edi, eax
lea eax, [ecx + 4]
cdq
idiv ebp
add edi, 0xca62c1d6
lea eax, [ecx + 1]
add dword [esi + edx*4], edi
mov edi, 5
cdq
idiv edi
lea eax, [ecx + 1]
mov ebp, 5
mov edi, dword [esi + edx*4]
cdq
idiv ebp
shl edi, 0x1e
mov ebp, 5
mov eax, dword [esi + edx*4]
shr eax, 2
or edi, eax
lea eax, [ecx + 1]
cdq
idiv ebp
mov dword [esi + edx*4], edi
inc dword [esp + 0x28]
test ecx, ecx
je 0x40cade
lea eax, [ecx - 1]
jmp 0x40cae3
mov eax, 4
cmp dword [esp + 0x28], 0x50
mov ecx, eax
jl 0x40c9dc
xor eax, eax
mov edx, dword [esp]
mov ecx, dword [esi + eax*4]
add dword [edx + eax*4], ecx
inc eax
cmp eax, 5
jl 0x40caf2
add esp, 0x40
pop ebp
pop edi
pop esi
pop ebx
ret