Function at 0x5a1aa8
Capabilities:
Encode data using xor
Hash data using whirlpool

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x15c
mov eax, dword [0x783760]
xor eax, ebp
mov dword [ebp - 4], eax
mov ecx, dword [ebp + 8]
mov eax, dword [ebp + 0xc]
push ebx
push esi
mov dword [ebp - 0x158], ecx
push edi
lea edi, [ecx + 8]
lea ecx, [ebp - 0xc6]
mov dword [ebp - 0x15c], edi
sub ecx, eax
mov dword [ebp - 0x154], edi
xor ebx, ebx
lea esi, [eax + 2]
mov edx, ebx
mov dword [ebp - 0x148], esi
mov ebx, ecx
mov dword [ebp - 0x14c], edx
mov ecx, edi
mov eax, dword [ecx]
mov dword [ebp + edx - 0x84], eax
mov eax, dword [ecx + 4]
mov dword [ebp + edx - 0x80], eax
movzx eax, byte [esi - 2]
cdq
mov ecx, eax
mov esi, edx
mov eax, dword [ebp - 0x148]
shld esi, ecx, 8
shl ecx, 8
movzx eax, byte [eax - 1]
cdq
or ecx, eax
or esi, edx
mov eax, dword [ebp - 0x148]
shld esi, ecx, 8
shl ecx, 8
movzx eax, byte [eax]
cdq
or ecx, eax
or esi, edx
mov eax, dword [ebp - 0x148]
shld esi, ecx, 8
shl ecx, 8
movzx eax, byte [eax + 1]
cdq
or ecx, eax
or esi, edx
mov eax, dword [ebp - 0x148]
shld esi, ecx, 8
shl ecx, 8
movzx eax, byte [eax + 2]
cdq
or ecx, eax
or esi, edx
mov eax, dword [ebp - 0x148]
shld esi, ecx, 8
shl ecx, 8
movzx eax, byte [eax + 3]
cdq
or ecx, eax
or esi, edx
mov eax, dword [ebp - 0x148]
shld esi, ecx, 8
shl ecx, 8
movzx eax, byte [eax + 4]
cdq
or ecx, eax
or esi, edx
mov eax, dword [ebp - 0x148]
shld esi, ecx, 8
shl ecx, 8
movzx eax, byte [eax + 5]
cdq
or ecx, eax
or esi, edx
mov edx, dword [ebp - 0x14c]
mov eax, esi
mov esi, dword [ebp - 0x148]
mov dword [ebx + esi], ecx
xor ecx, dword [ebp + edx - 0x84]
mov dword [ebx + esi + 4], eax
add esi, 8
xor eax, dword [ebp + edx - 0x80]
mov dword [ebp + edx - 0x144], ecx
mov ecx, dword [ebp - 0x154]
mov dword [ebp + edx - 0x140], eax
add ecx, 8
add edx, 8
mov dword [ebp - 0x154], ecx
mov dword [ebp - 0x148], esi
mov dword [ebp - 0x14c], edx
cmp edx, 0x40
jl 0x5a1af8
mov dword [ebp - 0x148], 0x70d088
push 2
pop edi
lea ebx, [ebp - 0x44]
lea eax, [edi - 1]
and eax, 7
lea esi, [edi + 1]
movzx ecx, byte [ebp + eax*8 - 0x84]
lea eax, [edi + 2]
and eax, 7
mov edx, dword [ecx*8 + 0x70c880]
movzx eax, byte [ebp + eax*8 - 0x81]
mov ecx, dword [ecx*8 + 0x70c884]
xor edx, dword [eax*8 + 0x70b080]
xor ecx, dword [eax*8 + 0x70b084]
lea eax, [edi + 3]
and eax, 7
movzx eax, byte [ebp + eax*8 - 0x80]
xor edx, dword [eax*8 + 0x70a880]
xor ecx, dword [eax*8 + 0x70a884]
lea eax, [edi - 4]
and eax, 7
movzx eax, byte [ebp + eax*8 - 0x7f]
xor edx, dword [eax*8 + 0x70a080]
xor ecx, dword [eax*8 + 0x70a084]
lea eax, [edi - 3]
and eax, 7
movzx eax, byte [ebp + eax*8 - 0x7e]
xor edx, dword [eax*8 + 0x709880]
xor ecx, dword [eax*8 + 0x709884]
lea eax, [edi - 2]
and eax, 7
and edi, 7
movzx eax, byte [ebp + eax*8 - 0x7d]
xor edx, dword [eax*8 + 0x709080]
xor ecx, dword [eax*8 + 0x709084]
movzx eax, byte [ebp + edi*8 - 0x83]
mov edi, esi
xor edx, dword [eax*8 + 0x70c080]
xor ecx, dword [eax*8 + 0x70c084]
mov eax, esi
and eax, 7
movzx eax, byte [ebp + eax*8 - 0x82]
xor edx, dword [eax*8 + 0x70b880]
xor ecx, dword [eax*8 + 0x70b884]
lea eax, [edi - 2]
mov dword [ebx], edx
lea ebx, [ebx + 8]
mov dword [ebx - 4], ecx
cmp eax, 8
jl 0x5a1c12
mov ecx, dword [ebp - 0x148]
push 2
pop edi
mov eax, dword [ecx - 8]
xor dword [ebp - 0x44], eax
mov eax, dword [ecx - 4]
xor dword [ebp - 0x40], eax
xor ebx, ebx
lea eax, [edi - 1]
and eax, 7
lea esi, [edi + 1]
lea ebx, [ebx + 8]
movzx ecx, byte [ebp + eax*8 - 0x144]
lea eax, [edi + 2]
and eax, 7
mov edx, dword [ecx*8 + 0x70c880]
movzx eax, byte [ebp + eax*8 - 0x141]
mov ecx, dword [ecx*8 + 0x70c884]
xor edx, dword [eax*8 + 0x70b080]
xor ecx, dword [eax*8 + 0x70b084]
lea eax, [edi + 3]
and eax, 7
movzx eax, byte [ebp + eax*8 - 0x140]
xor edx, dword [eax*8 + 0x70a880]
xor ecx, dword [eax*8 + 0x70a884]
lea eax, [edi - 4]
and eax, 7
movzx eax, byte [ebp + eax*8 - 0x13f]
xor edx, dword [eax*8 + 0x70a080]
xor ecx, dword [eax*8 + 0x70a084]
lea eax, [edi - 3]
and eax, 7
movzx eax, byte [ebp + eax*8 - 0x13e]
xor edx, dword [eax*8 + 0x709880]
xor ecx, dword [eax*8 + 0x709884]
lea eax, [edi - 2]
and eax, 7
and edi, 7
movzx eax, byte [ebp + eax*8 - 0x13d]
xor edx, dword [eax*8 + 0x709080]
xor ecx, dword [eax*8 + 0x709084]
mov eax, esi
and eax, 7
movzx eax, byte [ebp + eax*8 - 0x142]
xor edx, dword [eax*8 + 0x70b880]
xor ecx, dword [eax*8 + 0x70b884]
movzx eax, byte [ebp + edi*8 - 0x143]
mov edi, esi
xor edx, dword [eax*8 + 0x70c080]
xor ecx, dword [eax*8 + 0x70c084]
lea eax, [edi - 2]
xor edx, dword [ebp + ebx - 0x4c]
xor ecx, dword [ebp + ebx - 0x48]
mov dword [ebp + ebx - 0x10c], edx
mov dword [ebp + ebx - 0x108], ecx
cmp eax, 8
jl 0x5a1d12
push 3
lea eax, [ebp - 0x84]
xor ebx, ebx
pop edi
mov dword [ebp - 0x14c], eax
lea eax, [edi - 1]
and eax, 7
lea esi, [edi + 1]
movzx ecx, byte [ebp + eax*8 - 0x43]
lea eax, [edi - 2]
and eax, 7
mov edx, dword [ecx*8 + 0x70c080]
movzx eax, byte [ebp + eax*8 - 0x44]
mov ecx, dword [ecx*8 + 0x70c084]
xor edx, dword [eax*8 + 0x70c880]
xor ecx, dword [eax*8 + 0x70c884]
lea eax, [edi + 2]
and eax, 7
movzx eax, byte [ebp + eax*8 - 0x40]
xor edx, dword [eax*8 + 0x70a880]
xor ecx, dword [eax*8 + 0x70a884]
lea eax, [edi + 3]
and eax, 7
movzx eax, byte [ebp + eax*8 - 0x3f]
xor edx, dword [eax*8 + 0x70a080]
xor ecx, dword [eax*8 + 0x70a084]
lea eax, [edi - 4]
and eax, 7
movzx eax, byte [ebp + eax*8 - 0x3e]
xor edx, dword [eax*8 + 0x709880]
xor ecx, dword [eax*8 + 0x709884]
lea eax, [edi - 3]
and eax, 7
and edi, 7
movzx eax, byte [ebp + eax*8 - 0x3d]
xor edx, dword [eax*8 + 0x709080]
xor ecx, dword [eax*8 + 0x709084]
mov eax, esi
and eax, 7
movzx eax, byte [ebp + eax*8 - 0x41]
xor edx, dword [eax*8 + 0x70b080]
xor ecx, dword [eax*8 + 0x70b084]
movzx eax, byte [ebp + edi*8 - 0x42]
mov edi, esi
xor edx, dword [eax*8 + 0x70b880]
xor ecx, dword [eax*8 + 0x70b884]
mov eax, dword [ebp - 0x14c]
mov dword [eax], edx
mov dword [eax + 4], ecx
add eax, 8
mov dword [ebp - 0x14c], eax
lea eax, [edi - 3]
cmp eax, 8
jl 0x5a1e29
mov ecx, dword [ebp - 0x148]
push 3
pop edi
mov eax, dword [ecx]
xor dword [ebp - 0x84], eax
mov eax, dword [ecx + 4]
xor dword [ebp - 0x80], eax
lea eax, [edi - 1]
and eax, 7
lea esi, [edi + 1]
push 8
movzx ecx, byte [ebp + eax*8 - 0x103]
lea eax, [edi + 2]
and eax, 7
mov edx, dword [ecx*8 + 0x70c080]
movzx eax, byte [ebp + eax*8 - 0x100]
mov ecx, dword [ecx*8 + 0x70c084]
xor edx, dword [eax*8 + 0x70a880]
xor ecx, dword [eax*8 + 0x70a884]
lea eax, [edi + 3]
and eax, 7
movzx eax, byte [ebp + eax*8 - 0xff]
xor edx, dword [eax*8 + 0x70a080]
xor ecx, dword [eax*8 + 0x70a084]
lea eax, [edi - 4]
and eax, 7
movzx eax, byte [ebp + eax*8 - 0xfe]
xor edx, dword [eax*8 + 0x709880]
xor ecx, dword [eax*8 + 0x709884]
lea eax, [edi - 3]
and eax, 7
movzx eax, byte [ebp + eax*8 - 0xfd]
xor edx, dword [eax*8 + 0x709080]
xor ecx, dword [eax*8 + 0x709084]
lea eax, [edi - 2]
and eax, 7
and edi, 7
movzx eax, byte [ebp + eax*8 - 0x104]
xor edx, dword [eax*8 + 0x70c880]
xor ecx, dword [eax*8 + 0x70c884]
movzx eax, byte [ebp + edi*8 - 0x102]
mov edi, esi
xor edx, dword [eax*8 + 0x70b880]
xor ecx, dword [eax*8 + 0x70b884]
mov eax, esi
and eax, 7
pop esi
movzx eax, byte [ebp + eax*8 - 0x101]
xor edx, dword [eax*8 + 0x70b080]
xor ecx, dword [eax*8 + 0x70b084]
lea eax, [edi - 3]
xor edx, dword [ebp + ebx - 0x84]
xor ecx, dword [ebp + ebx - 0x80]
mov dword [ebp + ebx - 0x144], edx
mov dword [ebp + ebx - 0x140], ecx
add ebx, esi
cmp eax, esi
jl 0x5a1f29
mov eax, dword [ebp - 0x148]
add eax, 0x10
mov dword [ebp - 0x148], eax
push 0
pop ebx
cmp eax, 0x70d0d8
jl 0x5a1c0c
mov edi, dword [ebp - 0x15c]
lea edx, [ebp - 0xcc]
sub edx, dword [ebp - 0x158]
mov ecx, dword [ebp + ebx*8 - 0x144]
xor ecx, dword [edx + edi]
mov eax, dword [ebp + ebx*8 - 0x140]
xor eax, dword [edx + edi + 4]
xor dword [edi], ecx
xor dword [edi + 4], eax
inc ebx
add edi, esi
cmp ebx, esi
jl 0x5a2062
mov ecx, dword [ebp - 4]
xor eax, eax
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0056e1bf
mov esp, ebp
pop ebp
ret