Function at 0x40a650
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.00410560
add esp, 4
test eax, eax
jne 0x40a691
push str.DIGEST_TABLE.bin
push str._s_not_found
push 0x13e3
push str.PrepareDigestTable
push 2
call fcn.004016a0
add esp, 0x14
push 1
call fcn.00401c50
mov edi, dword [0x23b654c]
mov eax, dword [0x23b6548]
xor ebx, ebx
push ebx
push 0x20
push edi
push eax
mov dword [0x23b6470], ebx
mov dword [0x23b6474], ebx
call fcn.00423900
mov ecx, dword [0x23b6548]
push ebx
push 0x20
push edi
mov esi, edx
push ecx
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x2c], esi
call fcn.004239b0
cmp edx, ebx
jl 0x40a6e7
jg 0x40a6d6
cmp eax, ebx
jbe 0x40a6e7
push str.DIGEST_TABLE.bin
push str.Your_DIGEST_TABLE__s_file_is_not_a_multiple_of_32_bytes
push 0x13ee
jmp 0x40a67b
mov edi, dword [ebp - 0x30]
push esi
push edi
push str.NumDigestsInFile___lld
push 0x13f2
push str.PrepareDigestTable
push 1
call fcn.004016a0
mov eax, dword [0x23b6498]
mov edx, dword [0x23b649c]
mov ecx, eax
add esp, 0x18
or ecx, edx
jne 0x40a74f
push str.3._In_PrepareDigestTable_AND_MaxNumDigestsPerTable_WAS_ZERO
push 0x13f7
push str.PrepareDigestTable
push 4
call fcn.004016a0
mov edx, dword [0x3b1d2fc]
mov eax, dword [0x3b1d2f8]
add esp, 0x10
push ebx
push 0x20
push edx
push eax
call fcn.00423900
mov dword [0x23b6498], eax
mov dword [0x23b649c], edx
sub eax, 1
sbb edx, ebx
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x34], edx
cmp esi, ebx
jl 0x40a784
jg 0x40a765
cmp edi, 0x36
jb 0x40a784
push edx
sub edi, 0x35
push eax
sbb esi, ebx
push esi
push edi
call fcn.00423900
mov edi, eax
add edi, 1
mov esi, edx
adc esi, ebx
mov dword [ebp - 0x18], edi
mov dword [ebp - 0x14], esi
jmp 0x40a78e
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, 0x42ddb4
mov ecx, str.DIGEST_TABLE.bin
mov dword [ebp - 0x40], eax
mov dword [ebp - 0x28], eax
call fcn.00412100
add esp, 4
push 0x100000
push ebx
push 0x27dc8a0
mov dword [0x23b645c], eax
call fcn.0041e920
add esp, 0xc
push 0x100000
push ebx
push 0x3c24680
call fcn.0041e920
xor eax, eax
add esp, 0xc
mov dword [0x23b64a4], eax
mov dword [0x23b64a8], eax
mov dword [0x23b64ac], eax
mov dword [0x23b64b0], eax
mov dword [0x23b64b4], eax
mov dword [0x23b64b8], eax
mov dword [0x23b64bc], eax
mov dword [0x23b64c0], eax
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x1c], ebx
cmp esi, ebx
jl 0x40a9d2
jg 0x40a824
cmp edi, ebx
jbe 0x40a9d2
mov esi, 0x27dc8a0
sub esi, 0x20
mov dword [ebp - 4], esi
jmp 0x40a836
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.00425ae0
add eax, 0x35
adc edx, ebx
shld edx, eax, 5
push edx
mov edx, dword [0x23b645c]
shl eax, 5
push eax
push edx
call fcn.0041aa2a
mov eax, dword [0x23b645c]
mov ecx, dword [0x3b1d2f8]
push eax
add ecx, 0xffffffe0
push ecx
push 1
push 0x27dc8a0
call fcn.0041b2f9
mov edx, dword [0x3b1d2f8]
lea edi, [esi + edx]
add esp, 0x20
mov ecx, 8
mov esi, 0x23b64a4
mov dword [0x23b6470], eax
mov dword [0x23b6474], ebx
rep movsd dword es:[edi], dword [esi]
cmp dword [ebp - 0x1c], ebx
jl 0x40a8be
jg 0x40a8b1
cmp dword [ebp - 0x20], ebx
jbe 0x40a8be
add dword [0x23b6470], 0x20
adc dword [0x23b6474], ebx
mov eax, dword [0x23b645c]
push eax
call fcn.004190ae
mov ecx, dword [0x23b645c]
add esp, 4
push 2
push ebx
push ebx
push ecx
mov esi, eax
mov edi, edx
call fcn.0041aa2a
mov edx, dword [0x23b645c]
push edx
call fcn.004190ae
add esp, 0x14
cmp esi, eax
jne 0x40a910
cmp edi, edx
jne 0x40a910
mov eax, dword [0x23b6470]
mov byte [eax + 0x27dc8a0], bl
add eax, 1
adc dword [0x23b6474], ebx
mov dword [0x23b6470], eax
xor eax, eax
cmp eax, 0x3b1d240
je 0x40a949
push 0x8c
push ebx
push 0x3b1d240
call fcn.0041e920
mov ecx, 8
mov esi, 0x42ce60
mov edi, 0x3b1d248
rep movsd dword es:[edi], dword [esi]
add esp, 0xc
mov dword [0x3b1d240], ebx
mov dword [0x3b1d244], ebx
mov eax, dword [0x23b6470]
cmp eax, ebx
je 0x40a969
push 0x3b1d288
push 0x3b1d240
mov ecx, 0x27dc8a0
call fcn.00418a70
add esp, 8
mov esi, 0x3b1d288
mov ebx, 0x3b1d240
call fcn.00418b70
push esi
mov eax, 0x23b64a4
mov ecx, ebx
call fcn.00418c50
mov eax, dword [ebp - 0x28]
mov edi, eax
shl edi, 5
add edi, 0x3c24680
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, 0x23b64a4
rep movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x1c], eax
cmp eax, dword [ebp - 0x14]
jl 0x40a831
jg 0x40a9d0
mov ecx, dword [ebp - 0x18]
cmp dword [ebp - 0x20], ecx
jb 0x40a831
xor ebx, ebx
push 0x15
mov edx, 0x42ede4
mov ecx, str.DigestsToSign.bin.mbn
call fcn.00412100
mov edx, dword [0x23b645c]
add esp, 4
push ebx
push ebx
push ebx
push edx
mov esi, eax
call fcn.0041aa2a
mov eax, dword [0x23b645c]
push eax
push 0x6a0
push 1
push 0x27dc8a0
call fcn.0041b2f9
push esi
push 1
lea ecx, [ebp - 0x10]
push 4
push ecx
mov dword [0x23b6470], eax
mov dword [0x23b6474], ebx
mov dword [ebp - 0x10], 0x1a
mov dword [ebp - 0xc], ebx
call fcn.0041b579
push esi
push 1
lea edx, [ebp - 0x10]
push 4
push edx
mov dword [ebp - 0x10], 3
mov dword [ebp - 0xc], ebx
call fcn.0041b579
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.0041b579
push esi
push 1
lea ecx, [ebp - 0x10]
push 4
push ecx
mov dword [ebp - 0x10], ebx
mov dword [ebp - 0xc], ebx
call fcn.0041b579
mov edi, dword [ebp - 0x2c]
add esp, 0x20
cmp edi, ebx
jl 0x40aa96
jg 0x40aa8a
cmp dword [ebp - 0x30], 0x36
jb 0x40aa96
mov dword [ebp - 0x10], 0x6c0
mov dword [ebp - 0xc], ebx
jmp 0x40aaad
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.0041b579
push esi
push 1
lea edx, [ebp - 0x10]
push 4
push edx
call fcn.0041b579
push esi
push 1
lea eax, [ebp - 0x10]
push 4
push eax
mov dword [ebp - 0x10], ebx
mov dword [ebp - 0xc], ebx
call fcn.0041b579
push esi
push 1
lea ecx, [ebp - 0x10]
push 4
push ecx
mov dword [ebp - 0x10], ebx
mov dword [ebp - 0xc], ebx
call fcn.0041b579
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.0041b579
push esi
push 1
lea eax, [ebp - 0x10]
push 4
push eax
mov dword [ebp - 0x10], ebx
mov dword [ebp - 0xc], ebx
call fcn.0041b579
mov ecx, dword [0x23b6470]
push esi
push 1
push ecx
push 0x27dc8a0
call fcn.0041b579
add esp, 0x30
cmp edi, ebx
jg 0x40ab52
jl 0x40ab3f
cmp dword [ebp - 0x30], 0x36
jae 0x40ab52
push 0x100000
push ebx
push 0x3c24680
call fcn.0041e920
add esp, 0xc
push esi
push 1
push 0x20
push 0x3c24680
call fcn.0041b579
push esi
call fcn.0041bc41
add esp, 0x14
push 0x19
mov edx, 0x42ede4
mov ecx, str.ChainedTableOfDigests.bin
call fcn.00412100
add esp, 4
xor edi, edi
xor esi, esi
mov dword [ebp - 4], eax
cmp dword [ebp - 0x14], ebx
jl 0x40ac6d
jg 0x40aba0
cmp dword [ebp - 0x18], ebx
jbe 0x40ac6d
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.00425ae0
mov ecx, dword [0x23b645c]
add eax, 0x35
adc edx, ebx
shld edx, eax, 5
push edx
shl eax, 5
push eax
push ecx
call fcn.0041aa2a
push 0x100000
push ebx
push 0x27dc8a0
call fcn.0041e920
mov edx, dword [0x23b645c]
mov eax, dword [0x3b1d2f8]
add esp, 0x1c
push edx
add eax, 0xffffffe0
push eax
push 1
push 0x27dc8a0
call fcn.0041b2f9
mov ecx, dword [ebp - 4]
push ecx
push 1
push eax
push 0x27dc8a0
mov dword [0x23b6470], eax
mov dword [0x23b6474], ebx
call fcn.0041b579
add esp, 0x20
cmp esi, dword [ebp - 0x3c]
jg 0x40ac39
jl 0x40ac24
cmp edi, dword [ebp - 0x40]
jae 0x40ac39
mov edx, dword [ebp - 4]
push edx
mov eax, edi
push 1
shl eax, 5
push 0x20
add eax, 0x3c246a0
push eax
jmp 0x40ac4c
mov ecx, dword [ebp - 4]
push ecx
push 1
push 1
mov byte [0x27dc8a0], bl
push 0x27dc8a0
call fcn.0041b579
add esp, 0x10
add edi, 1
adc esi, ebx
cmp esi, dword [ebp - 0x14]
jl 0x40aba0
jg 0x40ac6d
cmp edi, dword [ebp - 0x18]
jb 0x40aba0
mov edx, dword [ebp - 4]
push edx
call fcn.004190ae
mov ecx, eax
and ecx, 0x1ff
add esp, 4
or ecx, ebx
jne 0x40acbc
mov ecx, dword [0x3b1d2fc]
push ecx
mov ecx, dword [0x3b1d2f8]
push ecx
push edx
push eax
call fcn.0042a3d0
or eax, edx
je 0x40acbc
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 0x1491
push str.PrepareDigestTable
push 2
call fcn.004016a0
add esp, 0x10
jmp 0x40a68a
mov edx, dword [ebp - 4]
push edx
call fcn.0041bc41
mov eax, dword [0x23b645c]
add esp, 4
push eax
call fcn.0041bc41
add esp, 4
pop edi
pop esi
mov dword [0x23b645c], ebx
pop ebx
mov esp, ebp
pop ebp
ret