Function at 0x407140
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
mov eax, 0x1190
call fcn.00587440
mov esi, esp
mov dword [esi + 0x1178], ebp
mov dword [esi + 0x117c], esp
mov dword [esi + 0x1188], 0xffffffff
mov dword [esi + 0x1184], 0x41ba80
mov dword [esi + 0xc], ecx
mov ecx, dword [ebp + 8]
lea ebx, [esi + 0x1180]
mov edi, edx
mov eax, dword fs:[0]
mov dword [esi + 0x1180], eax
mov dword fs:[0], ebx
lea ebx, [esi + 0x178]
mov dword [esi + 0x44], edx
mov dword [esi + 0x48], ecx
push ebx
call fcn.005162b0
add esp, 4
push 1
push ebx
call fcn.005162e0
add esp, 8
lea ecx, [esi + 0x1c]
push dword [ebp + 8]
push edi
push eax
push ecx
call fcn.00516330
add esp, 0x10
lea eax, [esi + 0x44]
mov dword [esi + str.error_opening], 0x5b2650
mov dword [esi + 0x17c], 1
mov dword [esi + 0x188], 0
mov byte [esi + 2], 1
mov dword [esi + 0x1188], 0
mov dword [esi + 0x10], eax
lea eax, [esi + 0x10]
mov dword [esi + 0x130], eax
lea eax, [esi + 0x130]
mov dword [esi + 0x134], 0x41fc40
mov dword [esi + 0x180], eax
mov dword [esi + 0x184], 1
lea eax, [esi + 0x50]
push ebx
push eax
call fcn.00538850
add esp, 8
mov eax, dword [esi + 0x50]
movq xmm0, qword [esi + 0x54]
cmp byte [esi + 0x1c], 4
jne 0x40725d
mov edi, dword [esi + 0x20]
movd ecx, xmm0
test ecx, ecx
je 0x4072e5
push 1
push ecx
push eax
call fcn.00452e30
add esp, 0xc
jmp 0x4072e5
movsd xmm1, qword [esi + 0x1c]
mov dword [esi + 0x50], eax
lea eax, [esi + 0x130]
movq qword [esi + 0x54], xmm0
mov byte [esi + 2], 0
movsd qword [esi + 0x130], xmm1
push eax
lea eax, [esi + 0x50]
push eax
lea eax, [esi + 0x178]
push eax
call fcn.0044a0d0
add esp, 0xc
movsd xmm1, qword [esi + 0x188]
mov eax, dword [esi + 0x178]
movq xmm0, qword [esi + 0x180]
movq xmm2, qword [esi + 0x190]
mov edi, dword [esi + 0x17c]
movsd qword [esi + 0xc8], xmm1
movq xmm1, qword [esi + 0x198]
cmp eax, 3
movq qword [esi + 0xc0], xmm0
movq qword [esi + 0xd0], xmm2
movq qword [esi + 0xd8], xmm1
jne 0x4077db
movzx eax, byte [0x636fbd]
push 1
push 0x2000
call fcn.00452e20
add esp, 8
test eax, eax
je 0x407986
movdqa xmm0, xmmword [0x5b23d0]
mov dword [esi + 0x30], edi
mov dword [esi + 0x1c], eax
mov dword [esi + 0x7c], 0
mov dword [esi + 0x78], 0
mov dword [esi + 0x84], 0
mov dword [esi + 0x80], 0
mov dword [esi + 0x8c], 0
mov dword [esi + 0x88], 0
mov dword [esi + 0x94], 0
mov dword [esi + 0x90], 0
mov dword [esi + 0x9c], 0
mov dword [esi + 0x98], 0
mov dword [esi + 0xa4], 0
mov dword [esi + 0xa0], 0
mov dword [esi + 0xac], 0
mov dword [esi + 0xa8], 0
mov dword [esi + 0xb4], 0
mov dword [esi + 0xb0], 0
mov byte [esi + 0xb8], 0
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
movdqu xmmword [esi + 0x20], xmm0
push 0x1000
push 0
lea eax, [esi + 0x178]
push eax
call fcn.00588b30
add esp, 0xc
jmp 0x407448
lea eax, [esi + 0x78]
add eax, edi
push ebx
lea ecx, [esi + 0x178]
push ecx
push eax
call fcn.005885b0
add esp, 0xc
add ebx, edi
mov byte [esi + 0xb8], bl
mov dword [esi + 0x1188], 2
mov dword [esi + 0x1188], 2
push 0x1000
lea eax, [esi + 0x178]
push eax
lea eax, [esi + 0x1c]
push eax
lea eax, [esi + 0x34]
push eax
call fcn.00450f90
add esp, 0x10
lea eax, [esi + 0x44]
mov dword [esi + 0xc0], 0x5b2674
mov dword [esi + 0xc4], 1
mov dword [esi + 0xd0], 0
mov byte [esi + 3], 1
mov dword [esi + 0x1188], 3
mov dword [esi + 0x4c], eax
lea eax, [esi + 0x4c]
mov dword [esi + 0x3c], eax
lea eax, [esi + 0x3c]
mov dword [esi + 0x40], 0x41fc40
mov dword [esi + 0xc8], eax
lea eax, [esi + 0xc0]
mov dword [esi + 0xcc], 1
push eax
lea eax, [esi + 0x10]
push eax
call fcn.00538850
add esp, 8
mov eax, dword [esi + 0x10]
movq xmm0, qword [esi + 0x14]
cmp byte [esi + 0x34], 4
jne 0x407500
mov ebx, dword [esi + 0x38]
movd ecx, xmm0
test ecx, ecx
je 0x40757b
push 1
push ecx
push eax
call fcn.00452e30
add esp, 0xc
jmp 0x40757b
movq xmm1, qword [esi + 0x34]
mov dword [esi + 0x10], eax
lea eax, [esi + 0x3c]
movq qword [esi + 0x14], xmm0
mov byte [esi + 3], 0
movq qword [esi + 0x3c], xmm1
push eax
lea eax, [esi + 0x10]
push eax
lea eax, [esi + 0xc0]
push eax
call fcn.0044a0d0
add esp, 0xc
lea ecx, [esi + 0xc8]
mov eax, dword [esi + 0xc0]
mov ebx, dword [esi + 0xc4]
movsd xmm1, qword [ecx + 8]
movq xmm0, qword [ecx]
movq xmm2, qword [ecx + 0x10]
cmp eax, 3
movsd qword [esi + 0x138], xmm1
movq xmm1, qword [ecx + 0x18]
movq qword [esi + 0x130], xmm0
movq qword [esi + 0x140], xmm2
movq qword [esi + 0x148], xmm1
jne 0x40774e
test ebx, ebx
je 0x407650
cmp ebx, 0x1001
jae 0x407967
movzx eax, byte [esi + 0xb8]
mov edx, 0x40
mov ecx, ebx
movzx edi, al
sub edx, edi
sub ecx, edx
jb 0x407420
mov dword [esi + 4], ecx
test al, al
lea ecx, [esi + 0x178]
je 0x4075fe
lea ebx, [esi + 0x78]
add edi, ebx
push edx
lea eax, [esi + 0x178]
push eax
push edi
mov dword [esi + 8], edx
call fcn.005885b0
add esp, 0xc
add dword [esi + 0x70], 1
mov dword [esi + 0x1188], 2
adc dword [esi + 0x74], 0
push 1
push ebx
lea eax, [esi + 0x50]
push eax
call fcn.0047dee0
add esp, 0xc
mov eax, dword [esi + 8]
mov ebx, dword [esi + 4]
lea ecx, [esi + eax + 0x178]
cmp ebx, 0x40
jb 0x407633
mov eax, ebx
mov dword [esi + 0x1188], 2
shr eax, 6
add dword [esi + 0x70], eax
adc dword [esi + 0x74], 0
push eax
push ecx
lea eax, [esi + 0x50]
push eax
mov dword [esi + 4], ebx
mov dword [esi + 8], ecx
call fcn.0047dee0
mov ecx, dword [esi + 8]
mov ebx, dword [esi + 4]
add esp, 0xc
mov eax, ebx
and ebx, 0x3f
and eax, 0xffffffc0
add ecx, eax
push ebx
push ecx
lea eax, [esi + 0x78]
push eax
call fcn.005885b0
add esp, 0xc
jmp 0x407438
push 0x70
lea eax, [esi + 0x50]
push eax
lea eax, [esi + 0xc0]
push eax
call fcn.005885b0
add esp, 0xc
movzx ebx, byte [esi + 0x128]
mov eax, dword [esi + 0xe0]
mov ecx, dword [esi + 0xe4]
lea edi, [esi + 0xe8]
shld ecx, eax, 9
shl eax, 9
lea edx, [ebx*8]
mov byte [esi + ebx + 0xe8], 0x80
or edx, eax
mov eax, ebx
xor eax, 0x3f
je 0x4076bd
mov dword [esi + 4], ecx
lea ecx, [ebx + edi + 1]
push eax
push 0
push ecx
mov edi, edx
call fcn.00588b30
mov ecx, dword [esi + 4]
mov edx, edi
lea edi, [esi + 0xe8]
add esp, 0xc
xor ebx, 0x38
bswap edx
bswap ecx
cmp ebx, 8
jae 0x407854
mov dword [esi + 8], edx
mov dword [esi + 4], ecx
mov dword [esi + 0x1188], 2
push 1
push edi
lea eax, [esi + 0xc0]
push eax
call fcn.0047dee0
add esp, 0xc
mov eax, dword [esi + 4]
pxor xmm0, xmm0
mov dword [esi + 0x164], 0
mov dword [esi + 0x160], 0
movdqa xmmword [esi + 0x150], xmm0
movdqa xmmword [esi + 0x140], xmm0
movdqa xmmword [esi + 0x130], xmm0
mov dword [esi + 0x168], eax
mov eax, dword [esi + 8]
mov dword [esi + 0x16c], eax
push 1
lea eax, [esi + 0x130]
push eax
lea eax, [esi + 0xc0]
push eax
call fcn.0047dee0
add esp, 0xc
jmp 0x40787c
movsd xmm1, qword [esi + 0x140]
movsd xmm0, qword [esi + 0x148]
movsd xmm2, qword [esi + 0x130]
mov dword [esi + 0x1188], 2
movsd qword [esi + 0xd8], xmm1
movsd xmm1, qword [esi + 0x138]
movsd qword [esi + 0xe0], xmm0
movsd qword [esi + 0xc8], xmm2
movsd qword [esi + 0xd0], xmm1
mov dword [esi + 0xc0], eax
lea eax, [esi + 0xc0]
mov dword [esi + 0xc4], ebx
push eax
call fcn.00429d60
add esp, 4
mov ecx, dword [esi + 0xc]
mov dword [esi + 0x1188], 4
mov dword [ecx + 4], eax
mov eax, dword [esi + 0x30]
mov dword [ecx + 8], edx
mov dword [ecx], 0
push eax
call dword [sym.imp.kernel32.dll_CloseHandle]
jmp 0x40793e
movsd xmm1, qword [esi + 0xd0]
movq xmm0, qword [esi + 0xd8]
movq xmm2, qword [esi + 0xc0]
mov dword [esi + 0x1188], 0xffffffff
movsd qword [esi + 0x190], xmm1
movq xmm1, qword [esi + 0xc8]
movq qword [esi + 0x198], xmm0
movq qword [esi + 0x180], xmm2
movq qword [esi + 0x188], xmm1
mov dword [esi + 0x178], eax
lea eax, [esi + 0x178]
mov dword [esi + 0x17c], edi
push eax
call fcn.00429d60
add esp, 4
mov ecx, dword [esi + 0xc]
mov dword [ecx + 4], eax
mov dword [ecx + 8], edx
mov dword [ecx], 0
jmp 0x407953
mov dword [esi + 0x120], ecx
mov dword [esi + 0x124], edx
mov dword [esi + 0x1188], 2
push 1
push edi
lea eax, [esi + 0xc0]
push eax
call fcn.0047dee0
add esp, 0xc
movdqu xmm2, xmmword [esi + 0xc0]
pxor xmm0, xmm0
movdqu xmm1, xmmword [esi + 0xd0]
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 + 0xc0], xmm2
pshuflw xmm3, xmm3, 0x1b
pshufhw xmm0, xmm0, 0x1b
pshufhw xmm3, xmm3, 0x1b
packuswb xmm0, xmm3
movdqu xmmword [esi + 0xd0], xmm0
push str.0123456789abcdefPoisonError
push 0x20
lea eax, [esi + 0xc0]
push eax
lea eax, [esi + 0x130]
push eax
call fcn.0049ddc0
add esp, 0x10
lea eax, [esi + 0x130]
push eax
lea eax, [esi + 0x10]
push eax
call fcn.004510c0
add esp, 8
mov eax, dword [esi + 0x18]
mov ecx, dword [esi + 0xc]
movq xmm0, qword [esi + 0x10]
mov dword [esi + 0x1188], 5
mov dword [ecx + 8], eax
mov eax, dword [esi + 0x30]
movq qword [ecx], xmm0
push eax
call dword [sym.imp.kernel32.dll_CloseHandle]
mov eax, dword [esi + 0x20]
test eax, eax
je 0x407953
push 1
push eax
push dword [esi + 0x1c]
call fcn.00452e30
add esp, 0xc
mov eax, dword [esi + 0x1180]
mov dword fs:[0], eax
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov dword [esi + 0x1188], 2
push 0x5b268c
push 0x1000
push ebx
call fcn.005b1b20
add esp, 0xc
jmp 0x4079a2
mov dword [esi + 4], edi
mov dword [esi + 0x1188], 1
push 0x2000
push 1
call fcn.005b14d0
add esp, 8
ud2