Function at 0x50b8be
Capabilities:
Hash data using sha384
Hash data using sha512

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x118
push ebx
mov ebx, dword [ebp + 8]
push esi
push edi
push dword [ebp + 0x18]
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push ebx
call fcn.0050b78a
test al, al
je 0x50bcb4
push 0x40
pop esi
push esi
call fcn.005f833c
mov edx, dword [ebx]
mov ecx, dword [ebx + 4]
mov dword [ebp - 0x14], eax
mov eax, esp
mov dword [eax], edx
lea eax, [ebp - 0x14]
mov dword [ebp - 0x10], esi
call fcn.0049a338
lea esi, [ebp - 0x14]
mov edi, ebx
call fcn.0049990f
push dword [ebp - 0x14]
call fcn.005f858a
mov esi, dword [ebp + 0x10]
mov eax, dword [ebp + 0x18]
and dword [ebp - 0xc], 0
and dword [ebp - 8], 0
pop ecx
push 0x20
pop edi
lea eax, [esi + eax + 0x40]
push eax
mov dword [ebp - 0x1c], edi
call fcn.005f833c
and dword [ebp - 0x18], 0
pop ecx
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x18], 0x40
jl 0x50b964
mov eax, dword [ebp - 8]
test eax, eax
je 0x50bc84
mov ecx, dword [ebp - 0xc]
movzx eax, byte [eax + ecx - 1]
add eax, edi
cmp dword [ebp - 0x18], eax
jge 0x50bc84
cmp dword [ebx + 4], edi
jb 0x50bca2
mov eax, dword [ebx]
push 0x10
lea ecx, [eax + 0x10]
push ecx
push 0x10
push eax
lea edi, [ebp - 0x34]
call fcn.0052e15a
and dword [ebp + 8], 0
cmp dword [ebp + 0xc], 0
je 0x50b9a3
test esi, esi
jbe 0x50b9a3
mov edi, dword [ebp - 0x14]
push esi
push dword [ebp + 0xc]
push edi
call fcn.005fbd60
add esp, 0xc
mov dword [ebp + 8], esi
jmp 0x50b9a6
mov edi, dword [ebp - 0x14]
mov esi, dword [ebp - 0x1c]
mov eax, dword [ebp + 8]
push esi
push dword [ebx]
add eax, edi
push eax
call fcn.005fbd60
add dword [ebp + 8], esi
xor esi, esi
add esp, 0xc
cmp dword [ebp + 0x14], esi
je 0x50b9e3
cmp dword [ebp + 0x18], esi
jbe 0x50b9e3
push dword [ebp + 0x18]
mov eax, dword [ebp + 8]
push dword [ebp + 0x14]
add eax, edi
push eax
call fcn.005fbd60
mov eax, dword [ebp + 0x18]
add esp, 0xc
add dword [ebp + 8], eax
push esi
push dword [ebp + 8]
lea eax, [ebp - 0x34]
push edi
push eax
lea eax, [ebp - 0xc]
call fcn.0052e29d
mov edi, dword [ebp - 8]
cmp edi, 0x10
jb 0x50b9ff
push 0x10
pop edi
xor eax, eax
xor edx, edx
cmp edi, esi
jbe 0x50ba15
mov ecx, dword [ebp - 0xc]
movzx ecx, byte [ecx + edx]
add eax, ecx
inc edx
cmp edx, edi
jb 0x50ba07
push 3
xor edx, edx
pop ecx
div ecx
sub edx, esi
je 0x50bbfb
dec edx
je 0x50bb17
dec edx
jne 0x50bc6e
xor eax, eax
push 0x10
pop ecx
push dword [ebp - 8]
mov esi, 0x639530
push dword [ebp - 0xc]
mov dword [ebp - 0xd4], esi
mov dword [ebp - 0xd0], 0x639570
mov dword [ebp - 0xcc], eax
mov dword [ebp - 0xc8], eax
mov dword [ebp - 0xc4], eax
mov dword [ebp - 0xc0], eax
mov dword [ebp - 0x3c], eax
mov byte [ebp - 0x38], al
mov byte [ebp - 0x37], al
lea edi, [ebp - 0x114]
rep movsd dword es:[edi], dword [esi]
lea esi, [ebp - 0x114]
mov dword [ebp - 0x1c], 0x40
call fcn.00592398
push 0x3f
pop edi
push 0
push dword [ebp + 8]
lea eax, [ebp - 0x34]
push dword [ebp - 0x14]
push eax
lea eax, [ebp - 0xc]
call fcn.0052e29d
push dword [ebp - 8]
lea esi, [ebp - 0x114]
push dword [ebp - 0xc]
call fcn.00592398
dec edi
jne 0x50ba90
cmp byte [ebp - 0x37], 0
mov edi, dword [ebx]
mov dword [ebx + 4], 0x40
jne 0x50bae1
cmp byte [ebp - 0x38], 0
jne 0x50bad6
call fcn.005a2af6
mov byte [ebp - 0x38], 1
push 0x10
pop ecx
lea esi, [ebp - 0x114]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [ebx + 4]
shr ecx, 3
mov edx, dword [ebx]
mov dword [ebp + 8], 0
je 0x50bc6e
mov eax, dword [ebp + 8]
inc dword [ebp + 8]
cmp dword [ebp + 8], ecx
lea eax, [edx + eax*8]
mov esi, dword [eax]
mov edi, dword [eax + 4]
bswap esi
bswap edi
mov dword [eax], edi
mov dword [eax + 4], esi
jb 0x50baf6
jmp 0x50bc6e
push 0x10
pop ecx
push dword [ebp - 8]
mov eax, 0x6394f0
push dword [ebp - 0xc]
mov dword [ebp - 0xcc], esi
mov dword [ebp - 0xc8], esi
mov dword [ebp - 0xc4], esi
mov dword [ebp - 0xc0], esi
mov dword [ebp - 0x3c], esi
mov esi, eax
mov dword [ebp - 0xd4], eax
mov dword [ebp - 0xd0], 0x639570
mov byte [ebp - 0x38], 0
mov byte [ebp - 0x37], 0
lea edi, [ebp - 0x114]
rep movsd dword es:[edi], dword [esi]
lea esi, [ebp - 0x114]
mov dword [ebp - 0x1c], 0x30
call fcn.00592398
push 0x3f
pop edi
push 0
push dword [ebp + 8]
lea eax, [ebp - 0x34]
push dword [ebp - 0x14]
push eax
lea eax, [ebp - 0xc]
call fcn.0052e29d
push dword [ebp - 8]
lea esi, [ebp - 0x114]
push dword [ebp - 0xc]
call fcn.00592398
dec edi
jne 0x50bb77
cmp byte [ebp - 0x37], 0
mov edi, dword [ebx]
mov dword [ebx + 4], 0x30
jne 0x50bbc8
cmp byte [ebp - 0x38], 0
jne 0x50bbbd
call fcn.005a2af6
mov byte [ebp - 0x38], 1
push 0xc
pop ecx
lea esi, [ebp - 0x114]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [ebx + 4]
shr ecx, 3
mov edx, dword [ebx]
mov dword [ebp + 8], 0
je 0x50bc6e
mov eax, dword [ebp + 8]
inc dword [ebp + 8]
cmp dword [ebp + 8], ecx
lea eax, [edx + eax*8]
mov esi, dword [eax]
mov edi, dword [eax + 4]
bswap esi
bswap edi
mov dword [eax], edi
mov dword [eax + 4], esi
jb 0x50bbdd
jmp 0x50bc6e
lea eax, [ebp - 0xac]
mov dword [ebp - 0x1c], 0x20
call fcn.0054ad65
push dword [ebp - 8]
mov esi, eax
push dword [ebp - 0xc]
call fcn.005922a4
push 0x3f
pop edi
push 0
push dword [ebp + 8]
lea eax, [ebp - 0x34]
push dword [ebp - 0x14]
push eax
lea eax, [ebp - 0xc]
call fcn.0052e29d
push dword [ebp - 8]
lea esi, [ebp - 0xac]
push dword [ebp - 0xc]
call fcn.005922a4
dec edi
jne 0x50bc1d
push dword [ebx]
mov eax, esi
mov dword [ebx + 4], 0x20
call fcn.00592362
mov eax, dword [ebx + 4]
shr eax, 2
mov ecx, dword [ebx]
push edi
pop edx
je 0x50bc6e
mov esi, dword [ecx + edx*4]
bswap esi
mov dword [ecx + edx*4], esi
inc edx
cmp edx, eax
jb 0x50bc61
inc dword [ebp - 0x18]
lea esi, [ebp - 0x34]
call fcn.0052e27f
mov esi, dword [ebp + 0x10]
push 0x20
pop edi
jmp 0x50b940
cmp dword [ebx + 4], edi
push dword [ebp - 0x14]
jb 0x50bca5
mov dword [ebx + 4], edi
call fcn.005f858a
pop ecx
push dword [ebp - 0xc]
call fcn.005f858a
pop ecx
mov al, 1
jmp 0x50bcb6
push dword [ebp - 0x14]
call fcn.005f858a
pop ecx
push dword [ebp - 0xc]
call fcn.005f858a
pop ecx
xor al, al
pop edi
pop esi
pop ebx
leave
ret 0x14