Function at 0x4039d0
Capabilities:
Hash data using sha256
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x190
mov esi, esp
mov dword [esi + 0x178], ebp
mov dword [esi + 0x17c], esp
mov dword [esi + 0x188], 0xffffffff
mov dword [esi + 0x184], 0x404220
mov dword [esi + 0x2c], ecx
test edx, edx
lea eax, [esi + 0x180]
mov ecx, dword fs:[0]
mov dword [esi + 0x180], ecx
mov dword fs:[0], eax
je 0x403dd5
mov ebx, dword [edx + 8]
mov eax, dword [edx + 4]
pxor xmm0, xmm0
lea ecx, [esi + 0x78]
mov byte [esi + 0xb8], 0
movq qword [esi + 0xb0], xmm0
movq qword [esi + 0xa8], xmm0
movq qword [esi + 0xa0], xmm0
movq qword [esi + 0x98], xmm0
movq qword [esi + 0x90], xmm0
movq qword [esi + 0x88], xmm0
movq qword [esi + 0x80], xmm0
movq qword [esi + 0x78], xmm0
mov dword [esi + 0x50], 0x6a09e667
mov dword [esi + 0x54], 0xbb67ae85
mov dword [esi + 0x58], 0x3c6ef372
mov dword [esi + 0x5c], 0xa54ff53a
mov dword [esi + 0x60], 0x510e527f
mov dword [esi + 0x64], 0x9b05688c
mov dword [esi + 0x68], 0x1f83d9ab
mov dword [esi + 0x6c], 0x5be0cd19
mov dword [esi + 0x74], 0
mov dword [esi + 0x70], 0
cmp ebx, 0x40
jae 0x403ac6
push ebx
push eax
push ecx
jmp 0x403af9
mov edi, ebx
mov edx, ebx
shr ebx, 6
mov dword [esi + 0x74], 0
lea ecx, [esi + 0x50]
and edi, 0xffffffc0
and edx, 0x3f
mov dword [esi + 0x70], ebx
mov dword [esi + 0xc], edx
add edi, eax
push ebx
push eax
push ecx
call fcn.00409330
add esp, 0xc
mov ebx, dword [esi + 0xc]
push ebx
push edi
lea eax, [esi + 0x78]
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov byte [esi + 0xb8], bl
lea eax, [esi + 0x50]
lea ecx, [esi + 0xc0]
push 0x70
push eax
push ecx
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
movzx edi, byte [esi + 0x128]
mov eax, dword [esi + 0xe0]
mov ecx, dword [esi + 0xe4]
lea edx, [esi + 0xe8]
shld ecx, eax, 9
shl eax, 9
lea ebx, [edi*8]
mov byte [esi + edi + 0xe8], pe_nt_image_headers32
or ebx, eax
bswap ecx
cmp edi, 0x3f
bswap ebx
mov dword [esi + 0xc], ecx
je 0x403b80
mov ecx, edi
lea eax, [esi + edi + 0xe8]
xor ecx, 0x3f
inc eax
push ecx
push 0
push eax
call sub.VCRUNTIME140.dll_memset
lea edx, [esi + 0xe8]
add esp, 0xc
xor edi, 0x38
cmp edi, 7
ja 0x403bd5
push 1
push edx
lea edi, [esi + 0xc0]
push edi
call fcn.00409330
add esp, 0xc
mov eax, dword [esi + 0xc]
pxor xmm0, xmm0
movq qword [esi + 0x160], xmm0
pxor xmm0, xmm0
movdqa xmmword [esi + 0x150], xmm0
movdqa xmmword [esi + 0x140], xmm0
movdqa xmmword [esi + 0x130], xmm0
mov dword [esi + 0x16c], ebx
mov dword [esi + 0x168], eax
lea eax, [esi + 0x130]
push 1
push eax
push edi
jmp 0x403bee
mov eax, dword [esi + 0xc]
mov dword [esi + 0x124], ebx
mov dword [esi + 0x120], eax
push 1
push edx
lea eax, [esi + 0xc0]
push eax
call fcn.00409330
add esp, 0xc
movdqu xmm2, xmmword [esi + 0xc0]
pxor xmm0, xmm0
movdqu xmm1, xmmword [esi + 0xd0]
mov edx, 1
xor ecx, ecx
xor ebx, ebx
xor eax, eax
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 [esi + 0x130], xmm2
pshuflw xmm3, xmm3, 0x1b
pshufhw xmm0, xmm0, 0x1b
pshufhw xmm3, xmm3, 0x1b
packuswb xmm0, xmm3
movdqu xmmword [esi + 0x140], xmm0
jmp 0x403c83
mov eax, dword [esi + 0x30]
add ebx, dword [esi + 0x24]
mov edx, dword [esi + 0xc]
inc eax
cmp eax, 0x20
je 0x403db5
mov dword [esi + 0x30], eax
lea eax, [esi + eax + 0x130]
movdqa xmm0, xmmword [0x428220]
mov dword [esi + 0x50], 0x428300
mov dword [esi + 0x54], 1
mov dword [esi + 0x18], ecx
mov dword [esi + 0x1c], edx
mov dword [esi + 0xc0], 2
mov dword [esi + 0x14], ecx
mov dword [esi + 0x34], ebx
mov dword [esi + 0xc], edx
mov dword [esi + 0x20], ebx
mov dword [esi + 0x28], ecx
mov byte [esi + 0x13], 0
mov dword [esi + 0x188], 0
mov dword [esi + 0x38], eax
lea eax, [esi + 0x38]
mov dword [esi + 0x3c], eax
lea eax, [esi + 0xc0]
mov dword [esi + 0x40], 0x4084f0
mov dword [esi + 0x60], eax
lea eax, [esi + 0x3c]
mov dword [esi + 0x64], 1
mov dword [esi + 0x58], eax
lea eax, [esi + 0x50]
movdqu xmmword [esi + 0xc8], xmm0
mov dword [esi + 0xd8], 8
mov byte [esi + 0xdc], 3
mov dword [esi + 0x5c], 1
push eax
lea eax, [esi + 0x44]
push eax
call fcn.00420b00
add esp, 8
mov eax, dword [esi + 0x34]
mov ecx, dword [esi + 0x14]
mov edx, dword [esi + 0x4c]
mov edi, dword [esi + 0x44]
sub ecx, eax
mov ebx, eax
mov dword [esi + 0x24], edx
cmp ecx, edx
mov ecx, dword [esi + 0x48]
mov dword [esi + 0x14], ecx
jae 0x403d80
mov dword [esi + 0xc], edi
mov dword [esi + 0x188], 1
push 1
push 1
push edx
push ebx
lea eax, [esi + 0x18]
push eax
call fcn.00426220
add esp, 0x14
mov eax, dword [esi + 0x1c]
mov ebx, dword [esi + 0x20]
mov edi, dword [esi + 0xc]
mov ecx, dword [esi + 0x14]
mov edx, dword [esi + 0x24]
jmp 0x403d83
mov eax, dword [esi + 0xc]
mov dword [esi + 0xc], eax
add eax, ebx
push edx
push ecx
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov ecx, dword [esi + 0x18]
test edi, edi
je 0x403c70
push 1
push edi
push dword [esi + 0x14]
mov edi, ecx
call fcn.00408ca0
mov ecx, edi
add esp, 0xc
jmp 0x403c70
mov eax, dword [esi + 0x2c]
mov dword [eax], ecx
mov ecx, dword [esi + 0x180]
mov dword [eax + 4], edx
mov dword [eax + 8], ebx
mov dword fs:[0], ecx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
push 0x428398
call fcn.00426fb0
nop
push ebp
sub esp, 0x14
lea esi, [ebp - 0x18c]
mov ebp, dword [esi + 0x178]
mov edi, dword [esi + 0x18]
test edi, edi
je 0x403e05
push 1
push edi
push dword [esi + 0x1c]
call fcn.00408ca0
add esp, 0xc
cmp dword [esi + 0xc], 0
je 0x403e1b
push 1
push dword [esi + 0xc]
push dword [esi + 0x14]
call fcn.00408ca0
add esp, 0xc
mov dword [esi + 0x28], edi
mov byte [esi + 0x13], 1
add esp, 0x14
pop ebp
ret