Function at 0x418170
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 0x418186
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 0x418240
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 0x4182f0
mov edi, esi
not edi
mov edx, eax
and edi, ecx
and edx, esi
or edi, edx
mov dword [ebp - 4], 0x5a827999
jmp 0x418325
cmp edx, 0x28
jae 0x4182fe
mov dword [ebp - 4], 0x6ed9eba1
jmp 0x41831f
cmp edx, 0x3c
jae 0x418318
mov edi, eax
or edi, esi
mov edx, eax
and edi, ecx
and edx, esi
or edi, edx
mov dword [ebp - 4], 0x8f1bbcdc
jmp 0x418325
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 0x418370
mov esi, ebx
not esi
mov eax, ecx
and esi, edi
and eax, ebx
or esi, eax
mov dword [ebp - 4], 0x5a827999
jmp 0x4183a5
cmp eax, 0x28
jae 0x41837e
mov dword [ebp - 4], 0x6ed9eba1
jmp 0x41839f
cmp eax, 0x3c
jae 0x418398
mov esi, ecx
or esi, ebx
mov eax, ecx
and esi, edi
and eax, ebx
or esi, eax
mov dword [ebp - 4], 0x8f1bbcdc
jmp 0x4183a5
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 0x4183ef
mov esi, edi
not esi
and esi, edx
mov edx, ecx
and edx, edi
or esi, edx
mov ebx, 0x5a827999
jmp 0x41841e
cmp esi, 0x28
jae 0x4183fb
mov ebx, 0x6ed9eba1
jmp 0x418418
cmp esi, 0x3c
jae 0x418413
mov esi, ecx
or esi, edi
and esi, edx
mov edx, ecx
and edx, edi
or esi, edx
mov ebx, 0x8f1bbcdc
jmp 0x41841e
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 0x41846c
mov esi, ebx
not esi
and esi, eax
mov eax, ecx
and eax, ebx
or esi, eax
mov edi, 0x5a827999
jmp 0x41849b
cmp esi, 0x28
jae 0x418478
mov edi, 0x6ed9eba1
jmp 0x418495
cmp esi, 0x3c
jae 0x418490
mov esi, ecx
or esi, ebx
and esi, eax
mov eax, ecx
and eax, ebx
or esi, eax
mov edi, 0x8f1bbcdc
jmp 0x41849b
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 0x4184e8
mov ebx, edi
not ebx
mov edx, esi
and ebx, ecx
and edx, edi
or ebx, edx
mov dword [ebp - 4], 0x5a827999
jmp 0x41851d
cmp edx, 0x28
jae 0x4184f6
mov dword [ebp - 4], 0x6ed9eba1
jmp 0x418517
cmp edx, 0x3c
jae 0x418510
mov ebx, esi
or ebx, edi
mov edx, esi
and ebx, ecx
and edx, edi
or ebx, edx
mov dword [ebp - 4], 0x8f1bbcdc
jmp 0x41851d
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 0x4182d0
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