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

Disassembly:
sub esp, 0x174
mov eax, dword [esp + 0x178]
xorps xmm0, xmm0
push ebx
push ebp
push esi
xor ebp, ebp
movlpd qword [esp + 0x1c], xmm0
cmp byte [eax], 0
push edi
mov edi, dword [esp + 0x24]
mov dword [esp + 0x28], 0x67452301
mov dword [esp + 0x30], 0xefcdab89
mov dword [esp + 0x2c], 0x98badcfe
mov dword [esp + 0x1c], 0x10325476
mov dword [esp + 0x18], 0xc3d2e1f0
je 0x4195f1
mov esi, dword [esp + 0x20]
inc ebp
add esi, 8
adc edi, 0
mov dword [esp + 0x24], edi
cmp byte [eax + ebp], 0
jne 0x4195da
mov dword [esp + 0x10], esi
jmp 0x4195f9
mov eax, dword [esp + 0x20]
mov dword [esp + 0x10], eax
push 0x38
pop ecx
xor edx, edx
mov dword [esp + 0x14], edi
mov eax, ebp
lea ebx, [ebp + 8]
div ecx
shr ebx, 6
lea eax, [ebp + 9]
shl ebx, 3
sub ebx, edx
add ebx, 0x37
add eax, ebx
push eax
call fcn.0041f49d
mov esi, eax
mov dword [esp + 0x40], esi
pop ecx
test esi, esi
je 0x419888
push ebp
push dword [esp + 0x18c]
push esi
call fcn.004201a0
push ebx
lea eax, [esi + 1]
mov byte [esi + ebp], 0x80
add eax, ebp
push 0
push eax
call fcn.00420a30
mov ecx, dword [esp + 0x2c]
and edi, 0xff0000
mov eax, dword [esp + 0x28]
xor esi, esi
shrd eax, ecx, 0x10
add esp, 0x18
or esi, eax
shr ecx, 0x10
mov eax, dword [esp + 0x14]
or edi, ecx
shrd esi, edi, 0x10
mov ecx, 0xff00
and eax, ecx
shr edi, 0x10
or edi, eax
movzx eax, byte [esp + 0x24]
shrd esi, edi, 0x10
shr edi, 0x10
or edi, eax
mov eax, dword [esp + 0x10]
mov edx, eax
shld dword [esp + 0x14], eax, 0x10
and edx, ecx
xor ecx, ecx
or ecx, dword [esp + 0x14]
shl eax, 0x10
or edx, eax
mov eax, dword [esp + 0x10]
shld ecx, edx, 0x10
and eax, 0xff0000
shl edx, 0x10
or edx, eax
mov eax, dword [esp + 0x10]
shld ecx, edx, 0x10
and eax, 0xff000000
shl edx, 0x10
or edx, eax
shrd esi, edi, 8
shld ecx, edx, 8
shr edi, 8
or edi, ecx
shl edx, 8
mov ecx, dword [esp + 0x3c]
or esi, edx
lea eax, [ecx + ebx]
mov dword [eax + ebp + 1], esi
mov dword [eax + ebp + 5], edi
lea eax, [ebp + 9]
add eax, ebx
shr eax, 6
mov dword [esp + 0x40], eax
test eax, eax
je 0x419858
mov esi, dword [esp + 0x20]
mov ebx, ecx
xor edi, edi
mov ecx, dword [ebx]
mov edx, ecx
and edx, 0xff0000
mov eax, ecx
shr eax, 0x10
add ebx, 4
or edx, eax
mov eax, ecx
shl eax, 0x10
and ecx, 0xff00
or eax, ecx
shr edx, 8
shl eax, 8
or edx, eax
mov dword [esp + edi*4 + 0x44], edx
inc edi
cmp edi, 0x10
jb 0x419708
push 0x100
lea eax, [esp + 0x88]
mov dword [esp + 0x24], ebx
push 0
push eax
call fcn.00420a30
add esp, 0xc
lea ecx, [esp + 0x4c]
push 0x40
pop edx
mov eax, dword [ecx + 0x2c]
xor eax, dword [ecx + 0x18]
xor eax, dword [ecx - 8]
xor eax, dword [ecx]
lea ecx, [ecx + 4]
rol eax, 1
mov dword [ecx + 0x34], eax
dec edx
jne 0x41975d
mov ecx, dword [esp + 0x28]
lea eax, [esp + 0x44]
mov edi, dword [esp + 0x30]
mov edx, dword [esp + 0x2c]
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x18]
push 0xffffffffffffffd8
mov dword [esp + 0x3c], ecx
pop ebp
mov dword [esp + 0x34], eax
push 0x13
lea eax, [ebp + 0x28]
pop ecx
cmp eax, ecx
ja 0x4197b7
mov esi, edi
mov eax, edx
not esi
and eax, edi
and esi, ebx
or esi, eax
mov eax, 0x5a827999
jmp 0x4197ee
lea eax, [ebp + 0x14]
cmp eax, ecx
ja 0x4197c5
mov eax, 0x6ed9eba1
jmp 0x4197e8
cmp ebp, ecx
ja 0x4197dc
mov esi, edx
mov eax, edx
or esi, edi
and eax, edi
and esi, ebx
or esi, eax
mov eax, 0x8f1bbcdc
jmp 0x4197ee
lea eax, [ebp - 0x14]
cmp eax, ecx
ja 0x4197f2
mov eax, 0xca62c1d6
mov esi, ebx
xor esi, edx
xor esi, edi
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x14]
add dword [esp + 0x34], 4
rol ecx, 5
add ecx, dword [eax]
add ecx, dword [esp + 0x10]
add ecx, esi
add ecx, dword [esp + 0x38]
mov dword [esp + 0x38], ebx
mov ebx, edx
mov edx, edi
mov edi, dword [esp + 0x14]
ror edx, 2
inc ebp
mov dword [esp + 0x14], ecx
lea eax, [ebp + 0x28]
cmp eax, 0x4f
jbe 0x41979a
add dword [esp + 0x1c], ebx
mov eax, dword [esp + 0x38]
add dword [esp + 0x28], ecx
add dword [esp + 0x30], edi
add dword [esp + 0x2c], edx
add dword [esp + 0x18], eax
dec dword [esp + 0x40]
mov ebx, dword [esp + 0x20]
jne 0x419706
mov ecx, dword [esp + 0x3c]
push ecx
call fcn.004226f4
mov eax, dword [esp + 0x190]
pop ecx
mov ecx, dword [esp + 0x28]
mov dword [eax], ecx
mov ecx, dword [esp + 0x30]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x2c]
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x1c]
mov dword [eax + 0xc], ecx
mov ecx, dword [esp + 0x18]
mov dword [eax + 0x10], ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x174
ret