Function at 0x180083610
Capabilities:
Get file size
Hash data via wincrypt
Hash data with md5
Initialize hashing via wincrypt
Read file via mapping

Disassembly:
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x130
mov qword [rsp + 0x68], 0xfffffffffffffffe
mov qword [rsp + 0x180], rbx
mov rax, qword [0x1801dc960]
xor rax, rsp
mov qword [rsp + 0x120], rax
mov rax, rdx
mov rsi, rcx
mov qword [rsp + 0x60], rcx
xor r12d, r12d
mov dword [rsp + 0x40], r12d
test rdx, rdx
je 0x180083a70
cmp byte [rdx], r12b
je 0x180083a70
mov qword [rsp + 0x50], r12
mov qword [rsp + 0x48], r12
mov dword [rsp + 0x58], 0x10
mov r13, r12
mov qword [rsp + 0x90], 0xf
mov qword [rsp + 0x88], r12
mov byte [rsp + 0x78], r12b
mov dword [rsp + 0x44], r12d
mov qword [rsp + 0x30], r12
mov dword [rsp + 0x28], r12d
mov dword [rsp + 0x20], 3
xor r9d, r9d
mov edx, 0x80000000
lea r8d, [r12 + 1]
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_CreateFileA]
mov r15, rax
cmp rax, 0xffffffffffffffff
jne 0x180083730
mov qword [rsi + 0x20], 0xf
mov qword [rsi + 0x18], r12
mov byte [rsi + 8], r12b
or r9, rax
xor r8d, r8d
lea rdx, [rsp + 0x70]
mov rcx, rsi
call fcn.1800035e0
mov dword [rsp + 0x40], 1
cmp qword [rsp + 0x90], 0x10
jb 0x18008370f
mov rcx, qword [rsp + 0x78]
call fcn.1800f4b9c
mov qword [rsp + 0x90], 0xf
mov qword [rsp + 0x88], r12
mov byte [rsp + 0x78], 0
mov rax, rsi
jmp 0x180083a9b
lea rdx, [rsp + 0x44]
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetFileSize]
mov ebx, eax
mov qword [rsp + 0x28], r12
mov dword [rsp + 0x20], r12d
xor r9d, r9d
xor edx, edx
lea r8d, [r9 + 2]
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_CreateFileMappingA]
mov r14, rax
test rax, rax
je 0x1800839d9
cmp rax, 0xffffffffffffffff
je 0x1800839d9
mov dword [rsp + 0x20], 0xf0000020
mov r9d, 1
xor r8d, r8d
xor edx, edx
lea rcx, [rsp + 0x50]
call qword [sym.imp.ADVAPI32.dll_CryptAcquireContextA]
test eax, eax
je 0x1800839d9
lea rax, [rsp + 0x48]
mov qword [rsp + 0x20], rax
xor r9d, r9d
xor r8d, r8d
mov edx, 0x8003
mov rcx, qword [rsp + 0x50]
call qword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
je 0x1800839d9
mov ebp, dword [rsp + 0x44]
shl rbp, 0x20
or rbp, rbx
mov rbx, r12
nop
mov rax, rbp
sub rax, rbx
mov edi, 0x100000
cmp rax, rdi
cmovb rdi, rax
mov r8, rbx
shr r8, 0x20
mov qword [rsp + 0x20], rdi
mov r9d, ebx
mov edx, 4
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_MapViewOfFile]
mov r13, rax
test rax, rax
je 0x1800839d9
xor r9d, r9d
mov r8d, edi
mov rdx, rax
mov rcx, qword [rsp + 0x48]
call qword [sym.imp.ADVAPI32.dll_CryptHashData]
test eax, eax
je 0x1800839d9
mov rcx, r13
call qword [sym.imp.KERNEL32.dll_UnmapViewOfFile]
mov r13, r12
add rbx, 0x100000
cmp rbx, rbp
jbe 0x1800837d0
mov dword [rsp + 0x20], r12d
lea r9, [rsp + 0x58]
lea r8, [rsp + 0xa0]
mov edx, 2
mov rcx, qword [rsp + 0x48]
call qword [sym.imp.ADVAPI32.dll_CryptGetHashParam]
test eax, eax
je 0x1800839d9
mov r9, qword [rsp + 0x88]
cmp r9, 0x20
jb 0x18008391d
or rbx, 0xffffffffffffffff
cmp r9, 0x20
jae 0x180083892
call fcn.1800f3b58
mov r9, qword [rsp + 0x88]
lea rax, [r9 - 0x20]
cmp rax, 0xffffffffffffffff
jae 0x1800838a8
mov rbx, rax
test rax, rax
je 0x18008393a
lea r8, [rsp + 0x78]
mov rax, qword [rsp + 0x78]
mov rdx, qword [rsp + 0x90]
cmp rdx, 0x10
cmovae r8, rax
lea rcx, [rsp + 0x78]
cmp rdx, 0x10
cmovae rcx, rax
sub r9, rbx
sub r9, 0x20
add rdx, 0xffffffffffffffe0
add rcx, 0x20
lea r8, [r8 + rbx + 0x20]
call fcn.1800f6010
mov r11, qword [rsp + 0x88]
sub r11, rbx
mov qword [rsp + 0x88], r11
lea rax, [rsp + 0x78]
cmp qword [rsp + 0x90], 0x10
cmovae rax, qword [rsp + 0x78]
mov byte [rax + r11], r13b
mov r9, qword [rsp + 0x88]
jmp 0x18008393a
mov edx, 0x20
sub rdx, r9
xor r8d, r8d
lea rcx, [rsp + 0x70]
call fcn.180031330
mov r9, qword [rsp + 0x88]
mov rbp, r12
mov rdi, r12
movzx ebx, byte [rsp + rbp + 0xa0]
shr bl, 4
cmp bl, 0xa
jae 0x180083955
add bl, 0x30
jmp 0x180083958
add bl, 0x57
cmp rdi, r9
jbe 0x180083962
call fcn.1800f8c38
lea rax, [rsp + 0x78]
cmp qword [rsp + 0x90], 0x10
cmovae rax, qword [rsp + 0x78]
mov byte [rdi + rax], bl
movzx ebx, byte [rsp + rbp + 0xa0]
and bl, 0xf
cmp bl, 0xa
jae 0x18008398e
add bl, 0x30
jmp 0x180083991
add bl, 0x57
lea r12, [rdi + 1]
cmp r12, qword [rsp + 0x88]
jbe 0x1800839a4
call fcn.1800f8c38
lea rax, [rsp + 0x78]
cmp qword [rsp + 0x90], 0x10
cmovae rax, qword [rsp + 0x78]
mov byte [r12 + rax], bl
inc rbp
add rdi, 2
cmp rdi, 0x20
jge 0x1800839d6
mov r9, qword [rsp + 0x88]
jmp 0x180083940
xor r12d, r12d
mov rcx, qword [rsp + 0x48]
call qword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
xor edx, edx
mov rcx, qword [rsp + 0x50]
call qword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
test r13, r13
je 0x1800839ff
mov rcx, r13
call qword [sym.imp.KERNEL32.dll_UnmapViewOfFile]
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov qword [rsi + 0x20], 0xf
mov qword [rsi + 0x18], r12
mov byte [rsi + 8], 0
or r9, 0xffffffffffffffff
xor r8d, r8d
lea rdx, [rsp + 0x70]
mov rcx, rsi
call fcn.1800035e0
mov dword [rsp + 0x40], 1
cmp qword [rsp + 0x90], 0x10
jb 0x180083a52
mov rcx, qword [rsp + 0x78]
call fcn.1800f4b9c
mov qword [rsp + 0x90], 0xf
mov qword [rsp + 0x88], r12
mov byte [rsp + 0x78], 0
mov rax, rsi
jmp 0x180083a9b
mov qword [rcx + 0x20], 0xf
mov qword [rcx + 0x18], r12
mov byte [rcx + 8], r12b
xor r8d, r8d
lea rdx, [0x180152644]
call fcn.180003700
nop
mov dword [rsp + 0x40], 1
mov rax, rsi
mov rcx, qword [rsp + 0x120]
xor rcx, rsp
call fcn.1800f4f80
mov rbx, qword [rsp + 0x180]
add rsp, 0x130
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret