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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x15c
mov eax, dword [0x4ed4e0]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
mov esi, ecx
push edi
mov dword [ebp - 0x15c], esi
xor ecx, ecx
lea eax, [esi + 0x15]
movzx edx, byte [eax - 1]
movzx edi, byte [eax]
shl edx, 8
or edx, edi
movzx edi, byte [eax + 1]
shl edx, 8
or edx, edi
movzx edi, byte [eax + 2]
shl edx, 8
or edx, edi
movzx edi, byte [eax + 4]
mov dword [ebp + ecx*4 - 0x144], edx
movzx edx, byte [eax + 3]
shl edx, 8
or edx, edi
movzx edi, byte [eax + 5]
shl edx, 8
or edx, edi
movzx edi, byte [eax + 6]
shl edx, 8
or edx, edi
movzx edi, byte [eax + 8]
mov dword [ebp + ecx*4 - 0x140], edx
movzx edx, byte [eax + 7]
shl edx, 8
or edx, edi
movzx edi, byte [eax + 9]
shl edx, 8
or edx, edi
movzx edi, byte [eax + 0xa]
shl edx, 8
or edx, edi
movzx edi, byte [eax + 0xc]
mov dword [ebp + ecx*4 - 0x13c], edx
movzx edx, byte [eax + 0xb]
shl edx, 8
or edx, edi
movzx edi, byte [eax + 0xd]
shl edx, 8
or edx, edi
movzx edi, byte [eax + 0xe]
shl edx, 8
or edx, edi
mov dword [ebp + ecx*4 - 0x138], edx
add ecx, 4
add eax, 0x10
cmp ecx, 0x10
jb 0x417993
lea eax, [ebp - 0x124]
mov dword [ebp - 0x154], 0x10
lea esp, [esp]
mov ecx, dword [eax - 0x20]
xor ecx, dword [eax + 0x14]
mov edx, dword [eax - 0x18]
xor ecx, dword [eax]
add eax, 0x10
xor ecx, edx
mov edi, ecx
add ecx, ecx
shr edi, 0x1f
xor edi, ecx
mov ecx, dword [eax - 0x2c]
xor ecx, dword [eax + 8]
mov dword [eax + 0x10], edi
xor ecx, dword [eax - 0xc]
mov edi, dword [eax - 0x24]
xor ecx, edi
mov ebx, ecx
add ecx, ecx
shr ebx, 0x1f
xor ebx, ecx
mov ecx, dword [eax + 0xc]
xor ecx, dword [eax - 0x20]
mov dword [eax + 0x14], ebx
xor ecx, dword [eax - 8]
xor ecx, edx
mov edx, ecx
add ecx, ecx
shr edx, 0x1f
xor edx, ecx
mov ecx, dword [eax - 0x1c]
xor ecx, dword [eax - 4]
mov dword [eax + 0x18], edx
xor ecx, edi
xor ecx, dword [eax + 0x10]
mov edx, ecx
shr edx, 0x1f
add ecx, ecx
xor edx, ecx
dec dword [ebp - 0x154]
mov dword [eax + 0x1c], edx
jne 0x417a50
mov ecx, dword [esi + 0x10]
mov edi, dword [esi]
mov edx, dword [esi + 4]
mov eax, dword [esi + 8]
mov ebx, dword [esi + 0xc]
mov dword [ebp - 0x14c], ecx
lea ecx, [ebp - 0x140]
mov dword [ebp - 0x150], edi
mov dword [ebp - 0x158], 2
mov dword [ebp - 0x154], ecx
lea esp, [esp]
mov ecx, dword [ebp - 0x158]
add ecx, 0xfffffffe
cmp ecx, 0x14
jae 0x417b16
mov esi, edx
not esi
mov ecx, eax
and esi, ebx
and ecx, edx
or esi, ecx
mov dword [ebp - 0x148], 0x5a827999
jmp 0x417b54
cmp ecx, 0x28
jae 0x417b27
mov dword [ebp - 0x148], 0x6ed9eba1
jmp 0x417b4e
cmp ecx, 0x3c
jae 0x417b44
mov esi, eax
or esi, edx
mov ecx, eax
and esi, ebx
and ecx, edx
or esi, ecx
mov dword [ebp - 0x148], 0x8f1bbcdc
jmp 0x417b54
mov dword [ebp - 0x148], 0xca62c1d6
mov esi, ebx
xor esi, eax
xor esi, edx
mov ecx, edi
shr ecx, 0x1b
shl edi, 5
xor ecx, edi
mov edi, dword [ebp - 0x154]
add ecx, dword [edi - 4]
mov edi, dword [ebp - 0x150]
add ecx, dword [ebp - 0x148]
add ecx, esi
add ecx, dword [ebp - 0x14c]
mov dword [ebp - 0x14c], ebx
mov esi, eax
mov eax, dword [ebp - 0x158]
mov ebx, edx
shl ebx, 0x1e
shr edx, 2
dec eax
xor ebx, edx
mov dword [ebp - 0x150], ecx
cmp eax, 0x14
jae 0x417bb7
mov edx, edi
not edx
mov eax, ebx
and edx, esi
and eax, edi
or edx, eax
mov dword [ebp - 0x148], 0x5a827999
jmp 0x417bf5
cmp eax, 0x28
jae 0x417bc8
mov dword [ebp - 0x148], 0x6ed9eba1
jmp 0x417bef
cmp eax, 0x3c
jae 0x417be5
mov edx, ebx
or edx, edi
mov eax, ebx
and edx, esi
and eax, edi
or edx, eax
mov dword [ebp - 0x148], 0x8f1bbcdc
jmp 0x417bf5
mov dword [ebp - 0x148], 0xca62c1d6
mov edx, esi
xor edx, ebx
xor edx, edi
mov eax, ecx
shr eax, 0x1b
shl ecx, 5
xor eax, ecx
mov ecx, dword [ebp - 0x154]
add eax, dword [ecx]
mov ecx, ebx
add eax, dword [ebp - 0x148]
mov ebx, edi
add eax, edx
add eax, dword [ebp - 0x14c]
mov edx, dword [ebp - 0x158]
shl ebx, 0x1e
shr edi, 2
mov dword [ebp - 0x14c], esi
mov esi, dword [ebp - 0x150]
xor ebx, edi
mov dword [ebp - 0x148], ecx
mov dword [ebp - 0x150], eax
cmp edx, 0x14
jae 0x417c57
mov edx, esi
not edx
and edx, ecx
mov ecx, ebx
and ecx, esi
or edx, ecx
mov edi, 0x5a827999
jmp 0x417c86
cmp edx, 0x28
jae 0x417c63
mov edi, 0x6ed9eba1
jmp 0x417c80
cmp edx, 0x3c
jae 0x417c7b
mov edx, ebx
or edx, esi
and edx, ecx
mov ecx, ebx
and ecx, esi
or edx, ecx
mov edi, 0x8f1bbcdc
jmp 0x417c86
mov edi, 0xca62c1d6
mov edx, ecx
xor edx, ebx
xor edx, esi
mov ecx, eax
shr ecx, 0x1b
shl eax, 5
xor ecx, eax
mov eax, dword [ebp - 0x154]
add ecx, dword [eax + 4]
mov eax, ebx
add ecx, edi
mov edi, dword [ebp - 0x150]
add ecx, edx
mov edx, dword [ebp - 0x148]
add ecx, dword [ebp - 0x14c]
mov dword [ebp - 0x14c], edx
mov edx, dword [ebp - 0x158]
mov ebx, esi
shl ebx, 0x1e
shr esi, 2
inc edx
xor ebx, esi
mov dword [ebp - 0x148], eax
mov dword [ebp - 0x150], ecx
cmp edx, 0x14
jae 0x417cec
mov edx, edi
not edx
and edx, eax
mov eax, ebx
and eax, edi
or edx, eax
mov esi, 0x5a827999
jmp 0x417d1b
cmp edx, 0x28
jae 0x417cf8
mov esi, 0x6ed9eba1
jmp 0x417d15
cmp edx, 0x3c
jae 0x417d10
mov edx, ebx
or edx, edi
and edx, eax
mov eax, ebx
and eax, edi
or edx, eax
mov esi, 0x8f1bbcdc
jmp 0x417d1b
mov esi, 0xca62c1d6
mov edx, eax
xor edx, ebx
xor edx, edi
mov eax, ecx
shr eax, 0x1b
shl ecx, 5
xor eax, ecx
mov ecx, dword [ebp - 0x154]
add eax, dword [ecx + 8]
mov ecx, dword [ebp - 0x158]
add eax, esi
mov esi, dword [ebp - 0x150]
add eax, edx
add eax, dword [ebp - 0x14c]
mov edx, dword [ebp - 0x148]
mov dword [ebp - 0x14c], edx
mov edx, edi
shl edx, 0x1e
shr edi, 2
add ecx, 2
xor edx, edi
mov dword [ebp - 0x150], eax
cmp ecx, 0x14
jae 0x417d80
mov edi, esi
not edi
mov ecx, edx
and edi, ebx
and ecx, esi
or edi, ecx
mov dword [ebp - 0x148], 0x5a827999
jmp 0x417dbe
cmp ecx, 0x28
jae 0x417d91
mov dword [ebp - 0x148], 0x6ed9eba1
jmp 0x417db8
cmp ecx, 0x3c
jae 0x417dae
mov edi, edx
or edi, esi
mov ecx, edx
and edi, ebx
and ecx, esi
or edi, ecx
mov dword [ebp - 0x148], 0x8f1bbcdc
jmp 0x417dbe
mov dword [ebp - 0x148], 0xca62c1d6
mov edi, ebx
xor edi, edx
xor edi, esi
add dword [ebp - 0x158], 5
mov ecx, eax
shr ecx, 0x1b
shl eax, 5
xor ecx, eax
mov eax, dword [ebp - 0x154]
add ecx, dword [eax + 0xc]
add dword [ebp - 0x154], 0x14
add ecx, dword [ebp - 0x148]
mov eax, esi
shr esi, 2
add ecx, edi
add ecx, dword [ebp - 0x14c]
shl eax, 0x1e
xor eax, esi
mov esi, dword [ebp - 0x158]
mov dword [ebp - 0x14c], ebx
add esi, 0xfffffffe
mov ebx, edx
mov edx, dword [ebp - 0x150]
mov edi, ecx
mov dword [ebp - 0x150], edi
cmp esi, 0x50
jb 0x417af0
mov esi, dword [ebp - 0x15c]
mov esi, dword [esi]
add esi, ecx
mov ecx, dword [ebp - 0x15c]
mov dword [ecx], esi
mov esi, dword [ecx + 4]
add esi, edx
mov edx, dword [ecx + 8]
add edx, eax
mov eax, dword [ecx + 0xc]
add eax, ebx
mov dword [ecx + 0xc], eax
mov eax, dword [ecx + 0x10]
add eax, dword [ebp - 0x14c]
mov dword [ecx + 4], esi
mov dword [ecx + 8], edx
mov dword [ecx + 0x10], eax
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00485642
mov esp, ebp
pop ebp
ret