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

Disassembly:
sub esp, 0x184
push ebx
push ebp
push esi
mov esi, ecx
mov dword [esp + 0x48], edx
xorps xmm0, xmm0
mov dword [esp + 0x18], 0x67452301
xor ebp, ebp
movlpd qword [esp + 0x34], xmm0
mov eax, dword [esp + 0x38]
cmp byte [esi], 0
push edi
mov dword [esp + 0x20], 0xefcdab89
mov dword [esp + 0x24], 0x98badcfe
mov dword [esp + 0x28], 0x10325476
mov dword [esp + 0x2c], 0xc3d2e1f0
je 0x459687
mov ecx, dword [esp + 0x38]
inc ebp
add ecx, 8
adc eax, 0
cmp byte [esi + ebp], 0
jne 0x459670
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], eax
jmp 0x459693
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x14], eax
mov eax, 0x24924925
mul ebp
mov eax, ebp
sub eax, edx
shr eax, 1
add eax, edx
shr eax, 5
lea ebx, [eax*8]
sub ebx, eax
lea eax, [ebp + 8]
shr eax, 6
add ebx, eax
shl ebx, 3
sub ebx, ebp
add ebx, 0x37
lea eax, [ebx + 9]
add eax, ebp
push eax
call fcn.00478b1b
push ebp
mov edi, eax
push esi
push edi
mov dword [esp + 0x58], edi
call fcn.0047a8c0
push ebx
lea eax, [edi + 1]
mov byte [edi + ebp], 0x80
add eax, ebp
push 0
push eax
call fcn.0047ae50
mov edx, dword [esp + 0x34]
xor esi, esi
mov eax, dword [esp + 0x30]
mov ecx, edx
shrd eax, ecx, 0x10
mov edi, edx
add esp, 0x1c
or esi, eax
shr ecx, 0x10
and edi, 0xff0000
mov eax, edx
or edi, ecx
and eax, 0xff00
shrd esi, edi, 0x10
xor ecx, ecx
shr edi, 0x10
or edi, eax
movzx eax, dl
shrd esi, edi, 0x10
shr edi, 0x10
or edi, eax
mov eax, dword [esp + 0x14]
mov edx, eax
shld dword [esp + 0x18], eax, 0x10
or ecx, dword [esp + 0x18]
and edx, 0xff00
shl eax, 0x10
or edx, eax
mov eax, dword [esp + 0x14]
shld ecx, edx, 0x10
and eax, 0xff0000
shl edx, 0x10
or edx, eax
mov eax, dword [esp + 0x14]
shld ecx, edx, 0x10
and eax, 0xff000000
shl edx, 0x10
or edx, eax
shld ecx, edx, 8
shrd esi, edi, 8
shl edx, 8
shr edi, 8
or esi, edx
or edi, ecx
mov ecx, dword [esp + 0x48]
lea eax, [ecx + ebx]
mov dword [eax + ebp + 1], esi
mov dword [eax + ebp + 5], edi
lea eax, [ebx + 9]
add eax, ebp
shr eax, 6
mov dword [esp + 0x44], eax
test eax, eax
je 0x4598e8
mov esi, dword [esp + 0x4c]
mov edx, ecx
xor ecx, ecx
mov eax, dword [edx]
add edx, 4
bswap eax
mov dword [esp + ecx*4 + 0x50], eax
inc ecx
cmp ecx, 0x10
jb 0x4597a5
push 0x100
lea eax, [esp + 0x94]
mov dword [esp + 0x3c], edx
push 0
push eax
call fcn.0047ae50
add esp, 0xc
lea ecx, [esp + 0x58]
mov edx, 0x40
nop word [eax + eax]
mov eax, dword [ecx + 0x2c]
lea ecx, [ecx + 4]
xor eax, dword [ecx + 0x14]
xor eax, dword [ecx - 0xc]
xor eax, dword [ecx - 4]
rol eax, 1
mov dword [ecx + 0x34], eax
sub edx, 1
jne 0x4597e0
mov eax, dword [esp + 0x2c]
mov ebx, 0xffffffd8
mov ecx, dword [esp + 0x1c]
mov edi, dword [esp + 0x20]
mov edx, dword [esp + 0x24]
mov ebp, dword [esp + 0x28]
mov dword [esp + 0x34], eax
lea eax, [esp + 0x50]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x30], eax
jmp 0x459828
mov ecx, dword [esp + 0x18]
lea eax, [ebx + 0x28]
cmp eax, 0x13
ja 0x459843
mov esi, edi
mov eax, edx
not esi
and eax, edi
and esi, ebp
or esi, eax
mov eax, 0x5a827999
jmp 0x45987d
lea eax, [ebx + 0x14]
cmp eax, 0x13
ja 0x459852
mov eax, 0x6ed9eba1
jmp 0x459877
cmp ebx, 0x13
ja 0x45986a
mov esi, edx
mov eax, edx
or esi, edi
and eax, edi
and esi, ebp
or esi, eax
mov eax, 0x8f1bbcdc
jmp 0x45987d
lea eax, [ebx - 0x14]
cmp eax, 0x13
ja 0x459881
mov eax, 0xca62c1d6
mov esi, ebp
xor esi, edx
xor esi, edi
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x30]
inc ebx
add dword [esp + 0x30], 4
rol ecx, 5
add ecx, dword [eax]
lea eax, [ebx + 0x28]
add ecx, dword [esp + 0x14]
add ecx, esi
add ecx, dword [esp + 0x34]
mov dword [esp + 0x34], ebp
mov ebp, edx
mov edx, edi
mov edi, dword [esp + 0x18]
ror edx, 2
mov dword [esp + 0x18], ecx
cmp eax, 0x4f
jbe 0x459824
mov eax, dword [esp + 0x2c]
add dword [esp + 0x24], edx
add eax, dword [esp + 0x34]
add dword [esp + 0x1c], ecx
add dword [esp + 0x20], edi
add dword [esp + 0x28], ebp
sub dword [esp + 0x44], 1
mov edx, dword [esp + 0x38]
mov dword [esp + 0x2c], eax
jne 0x4597a3
mov ecx, dword [esp + 0x48]
push ecx
call fcn.00478b24
mov ecx, dword [esp + 0x50]
add esp, 4
mov eax, dword [esp + 0x1c]
mov dword [ecx], eax
mov eax, dword [esp + 0x20]
mov dword [ecx + 4], eax
mov eax, dword [esp + 0x24]
pop edi
mov dword [ecx + 8], eax
mov eax, dword [esp + 0x24]
pop esi
mov dword [ecx + 0xc], eax
mov eax, dword [esp + 0x24]
pop ebp
mov dword [ecx + 0x10], eax
pop ebx
add esp, 0x184
ret