Function at 0x43a6e0
Capabilities:
Hash data using sha384

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x260
mov ebx, edx
lea eax, [esp + 0x1d0]
mov dword [esp + 0x1c], ecx
push 0x81
push 0
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
lea eax, [esp + 0x180]
mov ecx, 0x10
mov esi, 0x6b4400
mov edi, eax
rep movsd dword es:[edi], dword [esi]
mov dword [esp + 0x1cc], 0
mov dword [esp + 0x1c8], 0
mov dword [esp + 0x1c4], 0
mov dword [esp + 0x1c0], 1
push 1
push ebx
push eax
call fcn.005d6680
add esp, 0xc
mov eax, dword [ebx + 0x140]
mov ecx, dword [ebx + 0x144]
mov edx, dword [ebx + 0x148]
mov edi, dword [ebx + 0x14c]
movzx esi, byte [ebx + 0x1d0]
mov dword [esp + 0x18], ebx
mov byte [esp + 0x250], 0
shld edi, edx, 0xa
shld edx, ecx, 0xa
shld ecx, eax, 0xa
shl eax, 0xa
mov byte [ebx + esi + 0x150], 0x80
add ebx, 0x150
mov dword [esp + 0x14], ecx
lea ecx, [esi*8]
mov dword [esp + 8], edi
or ecx, eax
mov eax, esi
xor eax, 0x7f
je 0x43a7d5
mov dword [esp + 0x10], ecx
lea ecx, [esi + ebx + 1]
push eax
push 0
push ecx
mov edi, edx
call sub.msvcrt.dll_memset
mov ecx, dword [esp + 0x1c]
mov edx, edi
add esp, 0xc
xor esi, 0x70
mov eax, dword [esp + 8]
mov dword [esp + 0xc], ebx
mov ebx, dword [esp + 0x18]
bswap edx
bswap ecx
cmp esi, 0x10
mov esi, dword [esp + 0x14]
lea edi, [ebx + 0x100]
bswap eax
bswap esi
jae 0x43a889
push 1
push dword [esp + 0x10]
push edi
mov dword [esp + 0x20], edx
mov dword [esp + 0x14], eax
mov dword [esp + 0x1c], ecx
call fcn.005d6680
add esp, 0xc
mov eax, dword [esp + 0x10]
xorps xmm0, xmm0
movaps xmmword [esp + 0x100], xmm0
movaps xmmword [esp + 0xf0], xmm0
movaps xmmword [esp + 0xe0], xmm0
movaps xmmword [esp + 0xd0], xmm0
movaps xmmword [esp + 0xc0], xmm0
movaps xmmword [esp + 0xb0], xmm0
movaps xmmword [esp + 0xa0], xmm0
mov dword [esp + 0x118], esi
mov dword [esp + 0x11c], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x114], eax
mov eax, dword [esp + 8]
mov dword [esp + 0x110], eax
lea eax, [esp + 0xa0]
push 1
push eax
jmp 0x43a8a7
mov dword [ebx + 0x1c0], eax
mov dword [ebx + 0x1c4], edx
mov dword [ebx + 0x1c8], esi
mov dword [ebx + 0x1cc], ecx
push 1
push dword [esp + 0x10]
push edi
call fcn.005d6680
add esp, 0xc
movdqu xmm0, xmmword [ebx + 0x100]
pxor xmm1, xmm1
movdqu xmm5, xmmword [ebx + 0x120]
movdqu xmm2, xmmword [ebx + 0x110]
mov ecx, 0x10
mov esi, 0x6b4400
mov edx, edi
rep movsd dword es:[edi], dword [esi]
mov dword [ebx + 0x14c], 0
mov dword [ebx + 0x148], 0
mov dword [ebx + 0x144], 0
mov dword [ebx + 0x140], 0
mov byte [ebx + 0x1d0], 0
mov esi, ebx
movzx ebx, byte [esp + 0x250]
movdqa xmm3, xmm0
punpcklbw xmm0, xmm1
movdqa xmm4, xmm5
punpcklbw xmm5, xmm1
punpckhbw xmm3, xmm1
pshufd xmm0, xmm0, 0x4e
punpckhbw xmm4, xmm1
pshufd xmm3, xmm3, 0x4e
pshuflw xmm0, xmm0, 0x1b
pshufd xmm4, xmm4, 0x4e
cmp ebx, 0x4f
pshuflw xmm3, xmm3, 0x1b
pshufhw xmm0, xmm0, 0x1b
pshuflw xmm4, xmm4, 0x1b
pshufhw xmm3, xmm3, 0x1b
pshufhw xmm4, xmm4, 0x1b
packuswb xmm0, xmm3
movdqa xmm3, xmm2
punpcklbw xmm2, xmm1
punpckhbw xmm3, xmm1
pshufd xmm2, xmm2, 0x4e
pshufd xmm1, xmm5, 0x4e
movdqu xmmword [esp + 0x20], xmm0
pshufd xmm3, xmm3, 0x4e
pshuflw xmm2, xmm2, 0x1b
pshuflw xmm1, xmm1, 0x1b
pshuflw xmm3, xmm3, 0x1b
pshufhw xmm1, xmm1, 0x1b
pshufhw xmm2, xmm2, 0x1b
pshufhw xmm3, xmm3, 0x1b
packuswb xmm1, xmm4
packuswb xmm2, xmm3
movdqu xmmword [esp + 0x30], xmm2
movdqu xmmword [esp + 0x40], xmm1
ja 0x43aa27
movsd xmm1, qword [esp + 0x40]
lea eax, [esp + 0x1d0]
movsd xmm2, qword [esp + 0x38]
movq xmm0, qword [esp + 0x48]
mov edi, dword [esp + 0xc]
mov dword [esp + 8], 0
mov dword [esp + 0x10], edx
movsd qword [eax + ebx + 0x20], xmm1
movsd xmm1, qword [esp + 0x30]
movsd qword [eax + ebx + 0x18], xmm2
movq xmm2, qword [esp + 0x20]
movq qword [eax + ebx + 0x28], xmm0
movsd qword [eax + ebx + 0x10], xmm1
movq xmm1, qword [esp + 0x28]
movq qword [eax + ebx], xmm2
movq qword [eax + ebx + 8], xmm1
add bl, 0x30
lea eax, [esi + 0x80]
mov byte [esp + 0x250], bl
jmp 0x43ab03
mov eax, 0x80
lea ecx, [esp + 0x1d0]
mov dword [esp + 0x14], edx
lea edx, [esp + 0x20]
sub eax, ebx
add ecx, ebx
add ebx, 0xffffffb0
lea edi, [esp + eax + 0x20]
push eax
push edx
push ecx
call sub.msvcrt.dll_memcpy
add esp, 0xc
add dword [esp + 0x1c0], 1
adc dword [esp + 0x1c4], 0
adc dword [esp + 0x1c8], 0
adc dword [esp + 0x1cc], 0
push 1
lea eax, [esp + 0x1d4]
push eax
lea eax, [esp + 0x188]
push eax
call fcn.005d6680
add esp, 0xc
mov eax, ebx
and eax, 0xffffff80
add eax, edi
push ebx
push eax
lea eax, [esp + 0x1d8]
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
movzx ecx, byte [esi + 0x1d0]
lea eax, [esi + 0x80]
mov byte [esp + 0x250], bl
test ecx, ecx
je 0x43aaeb
mov edi, dword [esp + 0xc]
mov edx, 0x80
mov dword [esp + 8], ecx
sub edx, ecx
lea esi, [eax + edx]
mov dword [esp + 0x10], esi
add ecx, edi
push edx
push eax
push ecx
call sub.msvcrt.dll_memcpy
add esp, 0xc
mov esi, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
mov eax, edi
jmp 0x43ab03
mov edx, dword [esp + 0x14]
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 0xc]
mov dword [esp + 8], 0
mov dword [esp + 0x10], edx
add dword [esi + 0x140], 1
adc dword [esi + 0x144], 0
adc dword [esi + 0x148], 0
adc dword [esi + 0x14c], 0
push 1
push eax
push edx
call fcn.005d6680
add esp, 0xc
mov ebx, dword [esp + 8]
push ebx
push dword [esp + 0x14]
push edi
call sub.msvcrt.dll_memcpy
add esp, 0xc
lea ecx, [esp + 0xa0]
mov byte [esi + 0x1d0], bl
push 0xd8
lea eax, [esp + 0x184]
push eax
push ecx
call sub.msvcrt.dll_memcpy
add esp, 0xc
movzx esi, byte [esp + 0x170]
mov eax, dword [esp + 0xe0]
mov edi, dword [esp + 0xe4]
mov ebx, dword [esp + 0xe8]
mov ecx, dword [esp + 0xec]
shld ecx, ebx, 0xa
shld ebx, edi, 0xa
shld edi, eax, 0xa
shl eax, 0xa
lea edx, [esi*8]
mov byte [esp + esi + 0xf0], 0x80
or edx, eax
mov eax, esi
xor eax, 0x7f
je 0x43abd2
mov dword [esp + 0xc], ecx
lea ecx, [esp + 0xf0]
lea ecx, [esi + ecx + 1]
push eax
push 0
push ecx
mov dword [esp + 0x14], edx
call sub.msvcrt.dll_memset
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
add esp, 0xc
xor esi, 0x70
lea eax, [esp + 0xf0]
bswap ebx
bswap ecx
bswap edx
bswap edi
cmp esi, 0x10
jae 0x43ac59
push 1
push eax
lea esi, [esp + 0xa8]
push esi
mov dword [esp + 0x18], ecx
mov esi, edx
call fcn.005d6680
add esp, 0xc
mov eax, dword [esp + 0xc]
pxor xmm0, xmm0
movdqa xmmword [esp + 0x80], xmm0
movdqa xmmword [esp + 0x70], xmm0
movdqa xmmword [esp + 0x60], xmm0
movdqa xmmword [esp + 0x50], xmm0
movdqa xmmword [esp + 0x40], xmm0
movdqa xmmword [esp + 0x30], xmm0
movdqa xmmword [esp + 0x20], xmm0
mov dword [esp + 0x9c], esi
mov dword [esp + 0x98], edi
mov dword [esp + 0x94], ebx
mov dword [esp + 0x90], eax
lea eax, [esp + 0x20]
jmp 0x43ac75
mov dword [esp + 0x160], ecx
mov dword [esp + 0x164], ebx
mov dword [esp + 0x168], edi
mov dword [esp + 0x16c], edx
push 1
push eax
lea eax, [esp + 0xa8]
push eax
call fcn.005d6680
add esp, 0xc
movdqu xmm1, xmmword [esp + 0xa0]
pxor xmm0, xmm0
movdqu xmm5, xmmword [esp + 0xc0]
movdqu xmm2, xmmword [esp + 0xb0]
mov eax, dword [esp + 0x1c]
movdqa xmm3, xmm1
punpcklbw xmm1, xmm0
movdqa xmm4, xmm5
punpcklbw xmm5, xmm0
punpckhbw xmm3, xmm0
pshufd xmm1, xmm1, 0x4e
punpckhbw xmm4, xmm0
pshufd xmm3, xmm3, 0x4e
pshuflw xmm1, xmm1, 0x1b
pshufd xmm4, xmm4, 0x4e
pshuflw xmm3, xmm3, 0x1b
pshufhw xmm1, xmm1, 0x1b
pshuflw xmm4, xmm4, 0x1b
pshufhw xmm3, xmm3, 0x1b
pshufhw xmm4, xmm4, 0x1b
packuswb xmm1, xmm3
movdqa xmm3, xmm2
punpcklbw xmm2, xmm0
punpckhbw xmm3, xmm0
pshufd xmm2, xmm2, 0x4e
pshufd xmm0, xmm5, 0x4e
movdqu xmmword [eax], xmm1
pshufd xmm3, xmm3, 0x4e
pshuflw xmm2, xmm2, 0x1b
pshuflw xmm0, xmm0, 0x1b
pshuflw xmm3, xmm3, 0x1b
pshufhw xmm0, xmm0, 0x1b
pshufhw xmm2, xmm2, 0x1b
pshufhw xmm3, xmm3, 0x1b
packuswb xmm0, xmm4
packuswb xmm2, xmm3
movdqu xmmword [eax + 0x10], xmm2
movdqu xmmword [eax + 0x20], xmm0
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret