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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x18
mov esi, ecx
push dword [ecx + 0x28]
call fcn.004ec4b2
add esp, 4
mov dword [esi + 0x28], eax
push dword [esi + 0x2c]
call fcn.004ec4b2
add esp, 4
mov dword [esi + 0x2c], eax
push dword [esi + 0x30]
call fcn.004ec4b2
add esp, 4
mov dword [esi + 0x30], eax
push dword [esi + 0x34]
call fcn.004ec4b2
add esp, 4
mov dword [esi + 0x34], eax
push dword [esi + 0x38]
call fcn.004ec4b2
add esp, 4
mov dword [esi + 0x38], eax
push dword [esi + 0x3c]
call fcn.004ec4b2
add esp, 4
mov dword [esi + 0x3c], eax
push dword [esi + 0x40]
call fcn.004ec4b2
add esp, 4
mov dword [esi + 0x40], eax
push dword [esi + 0x44]
call fcn.004ec4b2
add esp, 4
mov dword [esi + 0x44], eax
push dword [esi + 0x48]
call fcn.004ec4b2
add esp, 4
mov dword [esi + 0x48], eax
push dword [esi + 0x4c]
call fcn.004ec4b2
add esp, 4
mov dword [esi + 0x4c], eax
push dword [esi + 0x50]
call fcn.004ec4b2
add esp, 4
mov dword [esi + 0x50], eax
push dword [esi + 0x54]
call fcn.004ec4b2
add esp, 4
mov dword [esi + 0x54], eax
push dword [esi + 0x58]
call fcn.004ec4b2
add esp, 4
mov dword [esi + 0x58], eax
push dword [esi + 0x5c]
call fcn.004ec4b2
add esp, 4
mov dword [esi + 0x5c], eax
push dword [esi + 0x60]
call fcn.004ec4b2
add esp, 4
mov dword [esi + 0x60], eax
push dword [esi + 0x64]
call fcn.004ec4b2
add esp, 4
mov dword [ebp - 0x14], esi
mov dword [esi + 0x64], eax
mov eax, 0xffffff00
mov edx, dword [ebp - 0x14]
nop word cs:[eax + eax]
mov ecx, dword [edx + eax + 0x148]
xor ecx, dword [edx + eax + 0x15c]
xor ecx, dword [edx + eax + 0x130]
xor ecx, dword [edx + eax + 0x128]
rol ecx, 1
mov dword [edx + eax + 0x168], ecx
add eax, 4
jne 0x451190
mov eax, dword [ebp - 0x14]
xor ebx, ebx
movdqu xmm0, xmmword [eax + 0x14]
movdqu xmmword [eax], xmm0
pshufd xmm1, xmm0, 0xe5
mov ecx, dword [eax + 0x24]
movd esi, xmm1
pshufd xmm1, xmm0, 0x4e
movd edi, xmm1
pshufd xmm1, xmm0, 0xe7
movd dword [ebp - 0x10], xmm1
mov dword [eax + 0x10], ecx
movd eax, xmm0
mov edx, ecx
mov dword [ebp - 0x24], ecx
nop word cs:[eax + eax]
nop dword [eax]
mov dword [ebp - 0x1c], edx
mov edx, eax
mov eax, dword [ebp - 0x10]
mov ecx, edi
mov edi, esi
mov dword [ebp - 0x18], edx
rol edx, 5
cmp ebx, 0x14
mov dword [ebp - 0x10], ecx
mov dword [ebp - 0x20], eax
jae 0x451240
mov esi, edi
and esi, ecx
mov ecx, eax
mov eax, edi
not eax
and eax, ecx
mov ecx, dword [ebp - 0x14]
or eax, esi
add eax, edx
mov edx, 0x5a827999
jmp 0x451258
cmp ebx, 0x28
jae 0x451270
mov ecx, eax
mov eax, dword [ebp - 0x10]
xor eax, ecx
mov ecx, dword [ebp - 0x14]
xor eax, edi
add eax, edx
mov edx, 0x6ed9eba1
add eax, dword [ebp - 0x1c]
add eax, dword [ecx + ebx*4 + 0x28]
mov ecx, dword [ebp - 0x18]
jmp 0x4512af
cmp ebx, 0x3b
ja 0x451287
mov esi, dword [ebp - 0x10]
mov ecx, eax
or esi, eax
mov eax, dword [ebp - 0x10]
and esi, edi
and eax, ecx
or eax, esi
jmp 0x451290
mov ecx, eax
mov eax, dword [ebp - 0x10]
xor eax, ecx
xor eax, edi
add eax, edx
mov edx, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x18]
mov esi, 0x8f1bbcdc
add eax, dword [ebp - 0x1c]
add eax, dword [edx + ebx*4 + 0x28]
cmp ebx, 0x3c
mov edx, 0xca62c1d6
cmovb edx, esi
add eax, edx
mov edx, dword [ebp - 0x20]
inc ebx
rol edi, 0x1e
mov esi, ecx
cmp ebx, 0x50
jne 0x451200
mov esi, ecx
mov ecx, dword [ebp - 0x10]
mov edx, dword [ebp - 0x14]
mov ebx, dword [ebp - 0x20]
movd xmm2, edi
movd xmm4, eax
movd xmm3, esi
punpckldq xmm4, xmm3
mov dword [edx + 0x10], ebx
mov dword [edx + 0xc], ecx
movd xmm1, ecx
mov ecx, dword [ebp - 0x24]
mov dword [edx + 8], edi
mov dword [edx + 4], esi
mov dword [edx], eax
punpckldq xmm2, xmm1
punpcklqdq xmm4, xmm2
paddd xmm4, xmm0
add ecx, ebx
movdqu xmmword [edx + 0x14], xmm4
mov dword [edx + 0x24], ecx
mov dword [edx + 0x168], 0
add esp, 0x18
pop esi
pop edi
pop ebx
pop ebp
ret