Function at 0x100382d0
Capabilities:
Hash data using sha256

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x140
mov eax, dword [ebp + 0xc]
lea ecx, [esp + 0x80]
mov dword [esp + 0x84], 0
mov dword [esp + 0x80], 0
mov dword [esp + 0x8c], 0
mov dword [esp + 0x88], 0
mov dword [esp + 0x94], 0
mov dword [esp + 0x90], 0
mov dword [esp + 0x9c], 0
mov dword [esp + 0x98], 0
mov dword [esp + 0xa4], 0
mov dword [esp + 0xa0], 0
mov dword [esp + 0xac], 0
mov dword [esp + 0xa8], 0
mov dword [esp + 0xb4], 0
mov dword [esp + 0xb0], 0
mov dword [esp + 0xbc], 0
mov dword [esp + 0xb8], 0
mov byte [esp + 0xc0], 0
mov dword [esp + 0x58], 0x6a09e667
mov dword [esp + 0x5c], 0xbb67ae85
mov dword [esp + 0x60], 0x3c6ef372
mov dword [esp + 0x64], 0xa54ff53a
mov dword [esp + 0x68], 0x510e527f
mov dword [esp + 0x6c], 0x9b05688c
mov dword [esp + 0x70], 0x1f83d9ab
mov dword [esp + 0x74], 0x5be0cd19
mov dword [esp + 0x7c], 0
mov dword [esp + 0x78], 0
mov ebx, dword [eax + 8]
mov esi, dword [eax]
mov edi, dword [eax + 4]
cmp ebx, 0x40
jae 0x10038403
push ebx
push esi
push ecx
jmp 0x10038437
mov eax, ebx
mov dword [esp + 0x7c], 0
shr eax, 6
mov dword [esp + 0x78], eax
lea ecx, [esp + 0x58]
push eax
push esi
push ecx
call fcn.1011a7c0
add esp, 0xc
mov eax, ebx
and ebx, 0x3f
and eax, 0xffffffc0
add eax, esi
push ebx
push eax
lea eax, [esp + 0x88]
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
test edi, edi
mov byte [esp + 0xc0], bl
je 0x10038459
mov eax, dword [0x1035648c]
push esi
push 0
push dword [eax]
call sub.KERNEL32.dll_HeapFree
lea edx, [esp + 0xc8]
lea esi, [esp + 0x58]
mov ecx, 0x1c
mov edi, edx
rep movsd dword es:[edi], dword [esi]
lea ecx, [esp + 0xf0]
movzx ebx, byte [esp + 0x130]
mov eax, dword [esp + 0xe8]
mov esi, dword [esp + 0xec]
shld esi, eax, 9
shl eax, 9
lea edi, [ebx*8]
mov byte [esp + ebx + 0xf0], pe_nt_image_headers32
or edi, eax
mov eax, ebx
xor eax, 0x3f
je 0x100384ce
lea ecx, [esp + 0xf0]
lea ecx, [ebx + ecx + 1]
push eax
push 0
push ecx
call sub.msvcrt.dll_memset
lea ecx, [esp + 0xfc]
lea edx, [esp + 0xd4]
add esp, 0xc
xor ebx, 0x38
bswap edi
bswap esi
cmp ebx, 8
jae 0x10038520
push 1
push ecx
push edx
mov ebx, edx
call fcn.1011a7c0
add esp, 0xc
pxor xmm0, xmm0
mov dword [esp + 0x44], 0
mov dword [esp + 0x40], 0
movdqa xmmword [esp + 0x30], xmm0
movdqa xmmword [esp + 0x20], xmm0
movdqa xmmword [esp + 0x10], xmm0
mov dword [esp + 0x4c], edi
mov dword [esp + 0x48], esi
lea eax, [esp + 0x10]
push 1
push eax
push ebx
jmp 0x10038532
mov dword [esp + 0x128], esi
mov dword [esp + 0x12c], edi
push 1
push ecx
push edx
call fcn.1011a7c0
add esp, 0xc
movdqu xmm2, xmmword [esp + 0xc8]
pxor xmm0, xmm0
movdqu xmm1, xmmword [esp + 0xd8]
mov dword [esp + 0x10], 1
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], 0
movdqa xmm3, xmm2
punpcklbw xmm2, xmm0
punpckhbw xmm3, xmm0
pshuflw xmm2, xmm2, 0x1b
pshuflw xmm3, xmm3, 0x1b
pshufhw xmm2, xmm2, 0x1b
pshufhw xmm3, xmm3, 0x1b
packuswb xmm2, xmm3
movdqa xmm3, xmm1
punpcklbw xmm1, xmm0
punpckhbw xmm3, xmm0
pshuflw xmm0, xmm1, 0x1b
movdqu xmmword [esp + 0xc8], xmm2
pshuflw xmm3, xmm3, 0x1b
pshufhw xmm0, xmm0, 0x1b
pshufhw xmm3, xmm3, 0x1b
packuswb xmm0, xmm3
movdqu xmmword [esp + 0xd8], xmm0
xor edx, edx
lea ecx, [esp + 0x10]
mov dword [esp + 0xc], 0
push 0x40
call fcn.10031340
add esp, 4
mov ebx, 0x110000
cmp ebx, 0x110000
je 0x1003864f
jmp 0x10038615
mov eax, dword [esp + 0x10]
add eax, ebx
push esi
lea ecx, [esp + 0xc]
push ecx
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
add ebx, esi
mov dword [esp + 0x18], ebx
mov ebx, edi
cmp ebx, 0x110000
je 0x1003864f
mov edi, 0x110000
cmp ebx, 0x80
jae 0x10038687
mov edx, dword [esp + 0x18]
cmp edx, dword [esp + 0x14]
jne 0x10038639
lea ecx, [esp + 0x10]
call fcn.100312b0
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x10]
mov byte [eax + edx], bl
inc edx
mov ebx, edi
mov dword [esp + 0x18], edx
cmp ebx, 0x110000
jne 0x10038615
mov ecx, dword [esp + 0xc]
cmp ecx, 0x20
je 0x1003874c
movzx eax, byte [esp + ecx + 0xc8]
inc ecx
mov dword [esp + 0xc], ecx
mov ecx, eax
shr eax, 4
and ecx, 0xf
movzx ebx, byte [eax + 0x101df61a]
movzx edi, byte [ecx + 0x101df61a]
cmp ebx, 0x80
jb 0x10038622
mov eax, ebx
cmp ebx, 0x800
mov dword [esp + 8], 0
jae 0x100386c0
shr eax, 6
and bl, 0x3f
mov esi, 2
or al, 0xc0
or bl, 0x80
mov byte [esp + 8], al
mov byte [esp + 9], bl
jmp 0x10038722
cmp ebx, 0x10000
jae 0x100386f0
shr eax, 0xc
mov esi, 3
or al, 0xe0
mov byte [esp + 8], al
mov eax, ebx
and bl, 0x3f
shr eax, 6
or bl, 0x80
and al, 0x3f
or al, 0x80
mov byte [esp + 9], al
mov byte [esp + 0xa], bl
jmp 0x10038722
shr eax, 0x12
mov esi, 4
or al, 0xf0
mov byte [esp + 8], al
mov eax, ebx
shr eax, 0xc
and al, 0x3f
or al, 0x80
mov byte [esp + 9], al
mov eax, ebx
and bl, 0x3f
shr eax, 6
or bl, 0x80
and al, 0x3f
or al, 0x80
mov byte [esp + 0xa], al
mov byte [esp + 0xb], bl
mov eax, dword [esp + 0x14]
mov ebx, dword [esp + 0x18]
sub eax, ebx
cmp eax, esi
jae 0x100385f0
mov edx, ebx
lea ecx, [esp + 0x10]
push esi
call fcn.10031340
add esp, 4
mov ebx, dword [esp + 0x18]
jmp 0x100385f0
mov ecx, dword [esp + 0x18]
mov eax, dword [ebp + 8]
movsd xmm0, qword [esp + 0x10]
mov dword [eax + 8], ecx
movsd qword [eax], xmm0
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret