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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x150
mov esi, dword [edx]
mov edi, dword [edx + 4]
mov ebx, dword [edx + 8]
mov eax, dword [edx + 0xc]
mov dword [esp + 4], eax
mov dword [esp + 0xc], edx
mov eax, dword [edx + 0x10]
mov dword [esp + 8], eax
mov eax, 0xfffffff0
mov edx, dword [ecx + eax*4 + 0x40]
bswap edx
mov dword [esp + eax*4 + 0x50], edx
inc eax
jne 0x42149a
mov eax, 0xffffff00
mov ecx, dword [esp + eax + 0x130]
xor ecx, dword [esp + eax + 0x144]
xor ecx, dword [esp + eax + 0x118]
xor ecx, dword [esp + eax + 0x110]
rol ecx, 1
mov dword [esp + eax + 0x150], ecx
add eax, 4
jne 0x4214ac
mov ebp, 0xfffffffb
mov ecx, dword [esp + 8]
mov edx, dword [esp + 4]
mov dword [esp + 4], edx
mov eax, esi
rol eax, 5
add eax, ecx
mov ecx, edx
xor ecx, ebx
and ecx, edi
xor ecx, edx
add ecx, eax
add ecx, dword [esp + ebp*4 + 0x24]
mov dword [esp], ebp
rol edi, 0x1e
mov eax, 0x5a827999
add ecx, eax
mov eax, ecx
rol eax, 5
mov edx, edi
xor edx, ebx
and edx, esi
xor edx, ebx
add edx, dword [esp + 4]
add edx, dword [esp + ebp*4 + 0x28]
mov ebp, 0x5a827999
add edx, ebp
add edx, eax
rol esi, 0x1e
mov eax, edx
rol eax, 5
mov dword [esp + 4], eax
mov ebp, esi
xor ebp, edi
and ebp, ecx
xor ebp, edi
mov eax, dword [esp]
add ebx, dword [esp + eax*4 + 0x2c]
add ebx, ebp
mov ebp, 0x5a827999
add ebx, ebp
rol ecx, 0x1e
add ebx, dword [esp + 4]
mov eax, ecx
xor eax, esi
and eax, edx
xor eax, esi
mov ebp, dword [esp]
add edi, dword [esp + ebp*4 + 0x30]
add edi, eax
mov eax, ebx
rol eax, 5
mov ebp, 0x5a827999
add edi, ebp
add edi, eax
rol edx, 0x1e
mov eax, edx
xor eax, ecx
and eax, ebx
xor eax, ecx
mov ebp, dword [esp]
add esi, dword [esp + ebp*4 + 0x34]
add esi, eax
mov eax, edi
rol eax, 5
mov ebp, 0x5a827999
add esi, ebp
add esi, eax
rol ebx, 0x1e
mov eax, dword [esp]
add eax, 5
mov ebp, eax
cmp eax, 0xf
jb 0x4214e3
mov dword [esp], 0xf
mov eax, esi
rol eax, 5
mov ebp, ebx
xor ebp, edi
xor ebp, edx
add ebp, ecx
add ebp, eax
mov eax, dword [esp]
add ebp, dword [esp + eax*4 + 0x24]
mov eax, 0x6ed9eba1
add ebp, eax
rol edi, 0x1e
mov eax, ebx
xor eax, esi
xor eax, edi
add eax, edx
mov ecx, ebp
rol ecx, 5
mov edx, dword [esp]
add eax, dword [esp + edx*4 + 0x28]
mov edx, 0x6ed9eba1
add eax, edx
rol esi, 0x1e
add eax, ecx
mov edx, esi
xor edx, edi
xor edx, ebp
mov ecx, ebp
mov ebp, dword [esp]
add ebx, dword [esp + ebp*4 + 0x2c]
add ebx, edx
mov edx, eax
rol edx, 5
mov ebp, 0x6ed9eba1
add ebx, ebp
add ebx, edx
rol ecx, 0x1e
mov edx, ecx
xor edx, esi
xor edx, eax
mov ebp, dword [esp]
add edi, dword [esp + ebp*4 + 0x30]
add edi, edx
mov edx, ebx
rol edx, 5
mov ebp, 0x6ed9eba1
add edi, ebp
rol eax, 0x1e
add edi, edx
mov edx, eax
xor eax, ecx
xor eax, ebx
mov ebp, dword [esp]
add esi, dword [esp + ebp*4 + 0x34]
add esi, eax
mov eax, edi
rol eax, 5
mov ebp, 0x6ed9eba1
add esi, ebp
add esi, eax
rol ebx, 0x1e
mov eax, dword [esp]
add eax, 5
mov dword [esp], eax
cmp eax, 0x23
jb 0x4215ae
mov dword [esp], 0x23
mov dword [esp + 4], edx
mov eax, esi
rol eax, 5
add eax, ecx
mov ecx, edx
or ecx, ebx
and ecx, edi
rol edi, 0x1e
mov edx, ebx
and edx, edi
mov ebp, ebx
or ebp, edi
and ebp, esi
or ebp, edx
mov edx, dword [esp + 4]
add ebp, edx
and edx, ebx
or ecx, edx
add ecx, eax
mov edx, dword [esp]
add ecx, dword [esp + edx*4 + 0x24]
mov eax, 0x8f1bbcdc
add ecx, eax
mov eax, ecx
rol eax, 5
add ebp, dword [esp + edx*4 + 0x28]
mov edx, 0x8f1bbcdc
add ebp, edx
rol esi, 0x1e
add ebp, eax
mov eax, esi
and eax, edi
mov dword [esp + 4], eax
mov edx, esi
or edx, edi
and edx, ecx
mov eax, dword [esp]
add ebx, dword [esp + eax*4 + 0x2c]
or edx, dword [esp + 4]
add ebx, edx
rol ecx, 0x1e
mov eax, ecx
or eax, esi
and eax, ebp
mov edx, ebp
rol edx, 5
mov dword [esp + 4], edx
mov edx, 0x8f1bbcdc
add ebx, edx
add ebx, dword [esp + 4]
mov edx, ecx
and edx, esi
or eax, edx
mov edx, ebx
rol edx, 5
mov dword [esp + 4], edx
mov edx, dword [esp]
add edi, dword [esp + edx*4 + 0x30]
add edi, eax
mov eax, 0x8f1bbcdc
add edi, eax
add edi, dword [esp + 4]
rol ebp, 0x1e
mov eax, ebp
and eax, ecx
mov edx, ebp
or edx, ecx
and edx, ebx
or edx, eax
mov eax, dword [esp]
add esi, dword [esp + eax*4 + 0x34]
add esi, edx
mov edx, ebp
mov eax, edi
rol eax, 5
mov ebp, 0x8f1bbcdc
add esi, ebp
add esi, eax
rol ebx, 0x1e
mov eax, dword [esp]
add eax, 5
mov dword [esp], eax
cmp eax, 0x37
jb 0x421669
mov dword [esp], 0x37
mov ebp, esi
rol ebp, 5
mov eax, ebx
xor eax, edi
xor eax, edx
add eax, ecx
add eax, ebp
mov ecx, dword [esp]
add eax, dword [esp + ecx*4 + 0x24]
mov ecx, 0xca62c1d6
add eax, ecx
rol edi, 0x1e
mov ebp, ebx
xor ebp, esi
xor ebp, edi
add ebp, edx
mov ecx, eax
rol ecx, 5
mov edx, dword [esp]
add ebp, dword [esp + edx*4 + 0x28]
mov edx, 0xca62c1d6
add ebp, edx
rol esi, 0x1e
add ebp, ecx
mov edx, esi
xor edx, edi
xor edx, eax
mov ecx, eax
mov eax, dword [esp]
add ebx, dword [esp + eax*4 + 0x2c]
add ebx, edx
mov eax, ebp
rol eax, 5
mov edx, 0xca62c1d6
add ebx, edx
add ebx, eax
rol ecx, 0x1e
mov eax, ecx
xor eax, esi
xor eax, ebp
mov edx, dword [esp]
add edi, dword [esp + edx*4 + 0x30]
add edi, eax
mov eax, ebx
rol eax, 5
mov edx, ebp
mov ebp, 0xca62c1d6
add edi, ebp
rol edx, 0x1e
add edi, eax
mov eax, edx
xor eax, ecx
xor eax, ebx
mov ebp, dword [esp]
add esi, dword [esp + ebp*4 + 0x34]
add esi, eax
mov eax, edi
rol eax, 5
mov ebp, 0xca62c1d6
add esi, ebp
add esi, eax
rol ebx, 0x1e
mov eax, dword [esp]
add eax, 5
mov dword [esp], eax
cmp eax, 0x4b
jb 0x421757
mov eax, dword [esp + 0xc]
movdqu xmm0, xmmword [eax]
movd xmm1, edx
movd xmm2, ebx
punpckldq xmm2, xmm1
movd xmm1, edi
movd xmm3, esi
punpckldq xmm3, xmm1
punpcklqdq xmm3, xmm2
paddd xmm3, xmm0
movdqu xmmword [eax], xmm3
mov edx, dword [esp + 8]
add edx, ecx
mov dword [eax + 0x10], edx
add esp, 0x150
pop esi
pop edi
pop ebx
pop ebp
ret