Function at 0x4094e0
Capabilities:
Hash data using sha256
Read file on windows
Write file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x44
push ebx
push esi
push edi
push 1
mov ecx, str.DIGEST_TABLE.bin
call fcn.0040f430
add esp, 4
test eax, eax
jne 0x409521
push str.DIGEST_TABLE.bin
push str._s_not_found
push 0x1160
push str.PrepareDigestTable
push 1
call fcn.00401210
add esp, 0x14
push 1
call fcn.004017c0
mov edi, dword [0x2389cec]
mov eax, dword [0x2389ce8]
xor ebx, ebx
push ebx
push 0x20
push edi
push eax
mov dword [0x2389c10], ebx
mov dword [0x2389c14], ebx
call fcn.00421560
mov ecx, dword [0x2389ce8]
push ebx
push 0x20
push edi
mov esi, edx
push ecx
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x2c], esi
call fcn.00421610
cmp edx, ebx
jl 0x409577
jg 0x409566
cmp eax, ebx
jbe 0x409577
push str.DIGEST_TABLE.bin
push str.Your_DIGEST_TABLE__s_file_is_not_a_multiple_of_32_bytes
push 0x116b
jmp 0x40950b
mov edi, dword [ebp - 0x30]
push esi
push edi
push str.NumDigestsInFile___lld
push 0x116f
push str.PrepareDigestTable
push 2
call fcn.00401210
mov eax, dword [0x2389c38]
mov edx, dword [0x2389c3c]
mov ecx, eax
add esp, 0x18
or ecx, edx
jne 0x4095df
push str.3._In_PrepareDigestTable_AND_MaxNumDigestsPerTable_WAS_ZERO
push 0x1174
push str.PrepareDigestTable
push 4
call fcn.00401210
mov edx, dword [0x3a85a1c]
mov eax, dword [0x3a85a18]
add esp, 0x10
push ebx
push 0x20
push edx
push eax
call fcn.00421560
mov dword [0x2389c38], eax
mov dword [0x2389c3c], edx
sub eax, 1
sbb edx, ebx
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x34], edx
cmp esi, ebx
jl 0x409614
jg 0x4095f5
cmp edi, 0x36
jb 0x409614
push edx
sub edi, 0x35
push eax
sbb esi, ebx
push esi
push edi
call fcn.00421560
mov edi, eax
add edi, 1
mov esi, edx
adc esi, ebx
mov dword [ebp - 0x18], edi
mov dword [ebp - 0x14], esi
jmp 0x40961e
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x14], ebx
mov edi, ebx
mov esi, ebx
mov eax, edi
sub eax, 1
mov ecx, esi
sbb ecx, ebx
mov dword [ebp - 0x3c], ecx
mov dword [ebp - 0x24], ecx
push 0x10
mov edx, 0x42d888
mov ecx, str.DIGEST_TABLE.bin
mov dword [ebp - 0x40], eax
mov dword [ebp - 0x28], eax
call fcn.00410ed0
add esp, 4
push 0x100000
push ebx
push 0x277a800
mov dword [0x2389bfc], eax
call fcn.0041c990
add esp, 0xc
push 0x100000
push ebx
push 0x3b8cd60
call fcn.0041c990
xor eax, eax
add esp, 0xc
mov dword [0x2389c44], eax
mov dword [0x2389c48], eax
mov dword [0x2389c4c], eax
mov dword [0x2389c50], eax
mov dword [0x2389c54], eax
mov dword [0x2389c58], eax
mov dword [0x2389c5c], eax
mov dword [0x2389c60], eax
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x1c], ebx
cmp esi, ebx
jl 0x409862
jg 0x4096b4
cmp edi, ebx
jbe 0x409862
mov esi, 0x277a800
sub esi, 0x20
mov dword [ebp - 4], esi
jmp 0x4096c6
mov esi, dword [ebp - 4]
xor ebx, ebx
mov ecx, dword [ebp - 0x34]
mov edx, dword [ebp - 0x38]
mov eax, dword [ebp - 0x24]
push ebx
push ecx
mov ecx, dword [ebp - 0x28]
push edx
push eax
push ecx
call fcn.00424440
add eax, 0x35
adc edx, ebx
shld edx, eax, 5
push edx
mov edx, dword [0x2389bfc]
shl eax, 5
push eax
push edx
call fcn.00418c8a
mov eax, dword [0x2389bfc]
mov ecx, dword [0x3a85a18]
push eax
add ecx, 0xffffffe0
push ecx
push 1
push 0x277a800
call fcn.00419559
mov edx, dword [0x3a85a18]
lea edi, [esi + edx]
add esp, 0x20
mov ecx, 8
mov esi, 0x2389c44
mov dword [0x2389c10], eax
mov dword [0x2389c14], ebx
rep movsd dword es:[edi], dword [esi]
cmp dword [ebp - 0x1c], ebx
jl 0x40974e
jg 0x409741
cmp dword [ebp - 0x20], ebx
jbe 0x40974e
add dword [0x2389c10], 0x20
adc dword [0x2389c14], ebx
mov eax, dword [0x2389bfc]
push eax
call fcn.004179ce
mov ecx, dword [0x2389bfc]
add esp, 4
push 2
push ebx
push ebx
push ecx
mov esi, eax
mov edi, edx
call fcn.00418c8a
mov edx, dword [0x2389bfc]
push edx
call fcn.004179ce
add esp, 0x14
cmp esi, eax
jne 0x4097a0
cmp edi, edx
jne 0x4097a0
mov eax, dword [0x2389c10]
mov byte [eax + 0x277a800], bl
add eax, 1
adc dword [0x2389c14], ebx
mov dword [0x2389c10], eax
xor eax, eax
cmp eax, 0x3a85960
je 0x4097d9
push 0x8c
push ebx
push 0x3a85960
call fcn.0041c990
mov ecx, 8
mov esi, 0x42af98
mov edi, 0x3a85968
rep movsd dword es:[edi], dword [esi]
add esp, 0xc
mov dword [0x3a85960], ebx
mov dword [0x3a85964], ebx
mov eax, dword [0x2389c10]
cmp eax, ebx
je 0x4097f9
push 0x3a859a8
push 0x3a85960
mov ecx, 0x277a800
call fcn.00417390
add esp, 8
mov esi, 0x3a859a8
mov ebx, 0x3a85960
call fcn.00417490
push esi
mov eax, 0x2389c44
mov ecx, ebx
call fcn.00417570
mov eax, dword [ebp - 0x28]
mov edi, eax
shl edi, 5
add edi, 0x3b8cd60
add esp, 4
add eax, 0xffffffff
adc dword [ebp - 0x24], 0xffffffff
add dword [ebp - 0x20], 1
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x1c]
adc eax, 0
mov ecx, 8
mov esi, 0x2389c44
rep movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x1c], eax
cmp eax, dword [ebp - 0x14]
jl 0x4096c1
jg 0x409860
mov ecx, dword [ebp - 0x18]
cmp dword [ebp - 0x20], ecx
jb 0x4096c1
xor ebx, ebx
push 0x15
mov edx, 0x42c9e4
mov ecx, str.DigestsToSign.bin.mbn
call fcn.00410ed0
mov edx, dword [0x2389bfc]
add esp, 4
push ebx
push ebx
push ebx
push edx
mov esi, eax
call fcn.00418c8a
mov eax, dword [0x2389bfc]
push eax
push 0x6a0
push 1
push 0x277a800
call fcn.00419559
push esi
push 1
lea ecx, [ebp - 0x10]
push 4
push ecx
mov dword [0x2389c10], eax
mov dword [0x2389c14], ebx
mov dword [ebp - 0x10], 0x1a
mov dword [ebp - 0xc], ebx
call fcn.004197d9
push esi
push 1
lea edx, [ebp - 0x10]
push 4
push edx
mov dword [ebp - 0x10], 3
mov dword [ebp - 0xc], ebx
call fcn.004197d9
add esp, 0x40
push esi
push 1
lea eax, [ebp - 0x10]
push 4
push eax
mov dword [ebp - 0x10], 0x28
mov dword [ebp - 0xc], ebx
call fcn.004197d9
push esi
push 1
lea ecx, [ebp - 0x10]
push 4
push ecx
mov dword [ebp - 0x10], ebx
mov dword [ebp - 0xc], ebx
call fcn.004197d9
mov edi, dword [ebp - 0x2c]
add esp, 0x20
cmp edi, ebx
jl 0x409926
jg 0x40991a
cmp dword [ebp - 0x30], 0x36
jb 0x409926
mov dword [ebp - 0x10], 0x6c0
mov dword [ebp - 0xc], ebx
jmp 0x40993d
mov edx, dword [ebp - 0x30]
add edx, 1
mov eax, edi
adc eax, ebx
shld eax, edx, 5
shl edx, 5
mov dword [ebp - 0x10], edx
mov dword [ebp - 0xc], eax
push esi
push 1
lea ecx, [ebp - 0x10]
push 4
push ecx
call fcn.004197d9
push esi
push 1
lea edx, [ebp - 0x10]
push 4
push edx
call fcn.004197d9
push esi
push 1
lea eax, [ebp - 0x10]
push 4
push eax
mov dword [ebp - 0x10], ebx
mov dword [ebp - 0xc], ebx
call fcn.004197d9
push esi
push 1
lea ecx, [ebp - 0x10]
push 4
push ecx
mov dword [ebp - 0x10], ebx
mov dword [ebp - 0xc], ebx
call fcn.004197d9
add esp, 0x40
push esi
push 1
lea edx, [ebp - 0x10]
push 4
push edx
mov dword [ebp - 0x10], ebx
mov dword [ebp - 0xc], ebx
call fcn.004197d9
push esi
push 1
lea eax, [ebp - 0x10]
push 4
push eax
mov dword [ebp - 0x10], ebx
mov dword [ebp - 0xc], ebx
call fcn.004197d9
mov ecx, dword [0x2389c10]
push esi
push 1
push ecx
push 0x277a800
call fcn.004197d9
add esp, 0x30
cmp edi, ebx
jg 0x4099e2
jl 0x4099cf
cmp dword [ebp - 0x30], 0x36
jae 0x4099e2
push 0x100000
push ebx
push 0x3b8cd60
call fcn.0041c990
add esp, 0xc
push esi
push 1
push 0x20
push 0x3b8cd60
call fcn.004197d9
push esi
call fcn.00419df4
add esp, 0x14
push 0x19
mov edx, 0x42c9e4
mov ecx, str.ChainedTableOfDigests.bin
call fcn.00410ed0
add esp, 4
xor edi, edi
xor esi, esi
mov dword [ebp - 4], eax
cmp dword [ebp - 0x14], ebx
jl 0x409afd
jg 0x409a30
cmp dword [ebp - 0x18], ebx
jbe 0x409afd
lea esp, [esp]
mov edx, dword [ebp - 0x34]
mov eax, dword [ebp - 0x38]
push ebx
push edx
push eax
push esi
push edi
call fcn.00424440
mov ecx, dword [0x2389bfc]
add eax, 0x35
adc edx, ebx
shld edx, eax, 5
push edx
shl eax, 5
push eax
push ecx
call fcn.00418c8a
push 0x100000
push ebx
push 0x277a800
call fcn.0041c990
mov edx, dword [0x2389bfc]
mov eax, dword [0x3a85a18]
add esp, 0x1c
push edx
add eax, 0xffffffe0
push eax
push 1
push 0x277a800
call fcn.00419559
mov ecx, dword [ebp - 4]
push ecx
push 1
push eax
push 0x277a800
mov dword [0x2389c10], eax
mov dword [0x2389c14], ebx
call fcn.004197d9
add esp, 0x20
cmp esi, dword [ebp - 0x3c]
jg 0x409ac9
jl 0x409ab4
cmp edi, dword [ebp - 0x40]
jae 0x409ac9
mov edx, dword [ebp - 4]
push edx
mov eax, edi
push 1
shl eax, 5
push 0x20
add eax, 0x3b8cd80
push eax
jmp 0x409adc
mov ecx, dword [ebp - 4]
push ecx
push 1
push 1
mov byte [0x277a800], bl
push 0x277a800
call fcn.004197d9
add esp, 0x10
add edi, 1
adc esi, ebx
cmp esi, dword [ebp - 0x14]
jl 0x409a30
jg 0x409afd
cmp edi, dword [ebp - 0x18]
jb 0x409a30
mov edx, dword [ebp - 4]
push edx
call fcn.004179ce
mov ecx, eax
and ecx, 0x1ff
add esp, 4
or ecx, ebx
jne 0x409b4c
mov ecx, dword [0x3a85a1c]
push ecx
mov ecx, dword [0x3a85a18]
push ecx
push edx
push eax
call fcn.004289a0
or eax, edx
je 0x409b4c
push str.This_should_not_be_hit._The_Digest_output_file_is_a_multiple_of_512._This_will_cause_the_target_to_hang._Please_re_run_and_add___nop_to_fix_this_issue
push 0x120e
push str.PrepareDigestTable
push 1
call fcn.00401210
add esp, 0x10
jmp 0x40951a
mov edx, dword [ebp - 4]
push edx
call fcn.00419df4
mov eax, dword [0x2389bfc]
add esp, 4
push eax
call fcn.00419df4
add esp, 4
pop edi
pop esi
mov dword [0x2389bfc], ebx
pop ebx
mov esp, ebp
pop ebp
ret