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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x158
push ebx
push esi
push edi
mov edi, ecx
mov dword [ebp - 0x18], edi
xor ecx, ecx
lea eax, [edi + 0x15]
movzx edx, byte [eax - 1]
movzx esi, byte [eax]
shl edx, 8
or edx, esi
movzx esi, byte [eax + 1]
shl edx, 8
or edx, esi
movzx esi, byte [eax + 2]
shl edx, 8
or edx, esi
movzx esi, byte [eax + 4]
mov dword [ebp + ecx*4 - 0x158], edx
movzx edx, byte [eax + 3]
shl edx, 8
or edx, esi
movzx esi, byte [eax + 5]
shl edx, 8
or edx, esi
movzx esi, byte [eax + 6]
shl edx, 8
or edx, esi
movzx esi, byte [eax + 8]
mov dword [ebp + ecx*4 - 0x154], edx
movzx edx, byte [eax + 7]
shl edx, 8
or edx, esi
movzx esi, byte [eax + 9]
shl edx, 8
or edx, esi
movzx esi, byte [eax + 0xa]
shl edx, 8
or edx, esi
movzx esi, byte [eax + 0xc]
mov dword [ebp + ecx*4 - 0x150], edx
movzx edx, byte [eax + 0xb]
shl edx, 8
or edx, esi
movzx esi, byte [eax + 0xd]
shl edx, 8
or edx, esi
movzx esi, byte [eax + 0xe]
shl edx, 8
or edx, esi
mov dword [ebp + ecx*4 - 0x14c], edx
add ecx, 4
add eax, 0x10
cmp ecx, 0x10
jb 0x415486
lea eax, [ebp - 0x138]
mov dword [ebp - 0x10], 0x10
lea esp, [esp]
mov edx, dword [eax - 0x20]
xor edx, dword [eax + 0x14]
mov ecx, dword [eax - 0x18]
xor edx, ecx
xor edx, dword [eax]
add eax, 0x10
mov esi, edx
add edx, edx
shr esi, 0x1f
xor esi, edx
mov edx, dword [eax - 0x2c]
xor edx, dword [eax + 8]
mov dword [eax + 0x10], esi
xor edx, dword [eax - 0xc]
mov esi, dword [eax - 0x24]
xor edx, esi
mov ebx, edx
add edx, edx
shr ebx, 0x1f
xor ebx, edx
mov edx, dword [eax + 0xc]
xor edx, dword [eax - 0x20]
mov dword [eax + 0x14], ebx
xor edx, dword [eax - 8]
xor edx, ecx
mov ecx, edx
add edx, edx
shr ecx, 0x1f
xor ecx, edx
mov edx, dword [eax - 0x1c]
xor edx, dword [eax - 4]
mov dword [eax + 0x18], ecx
xor edx, esi
xor edx, dword [eax + 0x10]
mov ecx, edx
shr ecx, 0x1f
add edx, edx
xor ecx, edx
sub dword [ebp - 0x10], 1
mov dword [eax + 0x1c], ecx
jne 0x415540
mov edx, dword [edi + 0x10]
mov ebx, dword [edi]
mov esi, dword [edi + 4]
mov eax, dword [edi + 8]
mov ecx, dword [edi + 0xc]
mov dword [ebp - 8], edx
lea edx, [ebp - 0x154]
mov dword [ebp - 0xc], ebx
mov dword [ebp - 0x14], 2
mov dword [ebp - 0x10], edx
mov edi, edi
mov edx, dword [ebp - 0x14]
add edx, 0xfffffffe
cmp edx, 0x14
jae 0x4155f0
mov edi, esi
not edi
mov edx, eax
and edi, ecx
and edx, esi
or edi, edx
mov dword [ebp - 4], 0x5a827999
jmp 0x415625
cmp edx, 0x28
jae 0x4155fe
mov dword [ebp - 4], 0x6ed9eba1
jmp 0x41561f
cmp edx, 0x3c
jae 0x415618
mov edi, eax
or edi, esi
mov edx, eax
and edi, ecx
and edx, esi
or edi, edx
mov dword [ebp - 4], 0x8f1bbcdc
jmp 0x415625
mov dword [ebp - 4], 0xca62c1d6
mov edi, ecx
xor edi, eax
xor edi, esi
mov edx, ebx
shr edx, 0x1b
shl ebx, 5
xor edx, ebx
mov ebx, dword [ebp - 0x10]
add edx, dword [ebx - 4]
mov ebx, dword [ebp - 0xc]
add edx, dword [ebp - 4]
add edx, edi
add edx, dword [ebp - 8]
mov dword [ebp - 8], ecx
mov edi, eax
mov eax, dword [ebp - 0x14]
mov ecx, esi
shl ecx, 0x1e
shr esi, 2
dec eax
xor ecx, esi
mov dword [ebp - 0xc], edx
cmp eax, 0x14
jae 0x415670
mov esi, ebx
not esi
mov eax, ecx
and esi, edi
and eax, ebx
or esi, eax
mov dword [ebp - 4], 0x5a827999
jmp 0x4156a5
cmp eax, 0x28
jae 0x41567e
mov dword [ebp - 4], 0x6ed9eba1
jmp 0x41569f
cmp eax, 0x3c
jae 0x415698
mov esi, ecx
or esi, ebx
mov eax, ecx
and esi, edi
and eax, ebx
or esi, eax
mov dword [ebp - 4], 0x8f1bbcdc
jmp 0x4156a5
mov dword [ebp - 4], 0xca62c1d6
mov esi, edi
xor esi, ecx
xor esi, ebx
mov eax, edx
shr eax, 0x1b
shl edx, 5
xor eax, edx
mov edx, dword [ebp - 0x10]
add eax, dword [edx]
mov edx, ecx
add eax, dword [ebp - 4]
mov ecx, ebx
add eax, esi
add eax, dword [ebp - 8]
mov esi, dword [ebp - 0x14]
shl ecx, 0x1e
shr ebx, 2
mov dword [ebp - 8], edi
mov edi, dword [ebp - 0xc]
xor ecx, ebx
mov dword [ebp - 4], edx
mov dword [ebp - 0xc], eax
cmp esi, 0x14
jae 0x4156ef
mov esi, edi
not esi
and esi, edx
mov edx, ecx
and edx, edi
or esi, edx
mov ebx, 0x5a827999
jmp 0x41571e
cmp esi, 0x28
jae 0x4156fb
mov ebx, 0x6ed9eba1
jmp 0x415718
cmp esi, 0x3c
jae 0x415713
mov esi, ecx
or esi, edi
and esi, edx
mov edx, ecx
and edx, edi
or esi, edx
mov ebx, 0x8f1bbcdc
jmp 0x41571e
mov ebx, 0xca62c1d6
mov esi, edx
xor esi, ecx
xor esi, edi
mov edx, eax
shr edx, 0x1b
shl eax, 5
xor edx, eax
mov eax, dword [ebp - 0x10]
add edx, dword [eax + 4]
mov eax, dword [ebp - 4]
add edx, ebx
mov ebx, dword [ebp - 0xc]
add edx, esi
add edx, dword [ebp - 8]
mov esi, dword [ebp - 0x14]
mov dword [ebp - 8], eax
mov eax, ecx
mov ecx, edi
shl ecx, 0x1e
shr edi, 2
inc esi
xor ecx, edi
mov dword [ebp - 4], eax
mov dword [ebp - 0xc], edx
cmp esi, 0x14
jae 0x41576c
mov esi, ebx
not esi
and esi, eax
mov eax, ecx
and eax, ebx
or esi, eax
mov edi, 0x5a827999
jmp 0x41579b
cmp esi, 0x28
jae 0x415778
mov edi, 0x6ed9eba1
jmp 0x415795
cmp esi, 0x3c
jae 0x415790
mov esi, ecx
or esi, ebx
and esi, eax
mov eax, ecx
and eax, ebx
or esi, eax
mov edi, 0x8f1bbcdc
jmp 0x41579b
mov edi, 0xca62c1d6
mov esi, eax
xor esi, ecx
xor esi, ebx
mov eax, edx
shr eax, 0x1b
shl edx, 5
xor eax, edx
mov edx, dword [ebp - 0x10]
add eax, dword [edx + 8]
mov edx, dword [ebp - 4]
add eax, edi
mov edi, dword [ebp - 0xc]
add eax, esi
add eax, dword [ebp - 8]
mov dword [ebp - 8], edx
mov edx, dword [ebp - 0x14]
mov esi, ebx
shl esi, 0x1e
shr ebx, 2
add edx, 2
xor esi, ebx
mov dword [ebp - 0xc], eax
cmp edx, 0x14
jae 0x4157e8
mov ebx, edi
not ebx
mov edx, esi
and ebx, ecx
and edx, edi
or ebx, edx
mov dword [ebp - 4], 0x5a827999
jmp 0x41581d
cmp edx, 0x28
jae 0x4157f6
mov dword [ebp - 4], 0x6ed9eba1
jmp 0x415817
cmp edx, 0x3c
jae 0x415810
mov ebx, esi
or ebx, edi
mov edx, esi
and ebx, ecx
and edx, edi
or ebx, edx
mov dword [ebp - 4], 0x8f1bbcdc
jmp 0x41581d
mov dword [ebp - 4], 0xca62c1d6
mov ebx, ecx
xor ebx, esi
xor ebx, edi
add dword [ebp - 0x14], 5
mov edx, eax
shr edx, 0x1b
shl eax, 5
xor edx, eax
mov eax, dword [ebp - 0x10]
add edx, dword [eax + 0xc]
add dword [ebp - 0x10], 0x14
add edx, dword [ebp - 4]
mov eax, edi
shr edi, 2
add edx, ebx
add edx, dword [ebp - 8]
shl eax, 0x1e
xor eax, edi
mov edi, dword [ebp - 0x14]
mov dword [ebp - 8], ecx
add edi, 0xfffffffe
mov ecx, esi
mov esi, dword [ebp - 0xc]
mov ebx, edx
mov dword [ebp - 0xc], ebx
cmp edi, 0x50
jb 0x4155d0
mov edi, dword [ebp - 0x18]
mov edi, dword [edi]
add edi, edx
mov edx, dword [ebp - 0x18]
mov dword [edx], edi
mov edi, dword [edx + 4]
add edi, esi
mov esi, dword [edx + 8]
add esi, eax
mov eax, dword [edx + 0xc]
add eax, ecx
mov ecx, dword [ebp - 8]
mov dword [edx + 0xc], eax
mov eax, dword [edx + 0x10]
mov dword [edx + 4], edi
pop edi
mov dword [edx + 8], esi
add eax, ecx
pop esi
mov dword [edx + 0x10], eax
pop ebx
mov esp, ebp
pop ebp
ret