Function at 0x180001fe0
Capabilities:
Hash data via wincrypt
Hash data with md5
Initialize hashing via wincrypt

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rsi
mov qword [rsp + 0x18], rdi
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x15e0]
mov eax, 0x16e0
call fcn.18000d8a0
sub rsp, rax
mov rax, qword [0x180042078]
xor rax, rsp
mov qword [rbp + 0x15d0], rax
xor edi, edi
mov dword [rsp + 0x30], edi
mov r8d, 0x104
lea rdx, [rbp + 0x3b0]
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea rcx, [rbp + 0x3b0]
mov rax, 0xffffffffffffffff
inc rax
cmp byte [rcx + rax], dil
jne 0x180002047
sub eax, 1
movsxd rcx, eax
js 0x180002076
nop dword [rax + rax]
cmp byte [rbp + rcx + 0x3b0], 0x5c
je 0x1800025e7
dec eax
sub rcx, 1
jns 0x180002060
lea r8, str._score.dat
mov edx, 0x104
lea rcx, [rbp + 0x3b0]
call fcn.180016b28
cmp qword [0x180044df8], rdi
jne 0x180002989
mov qword [rbp + 0x168], rdi
lea rdx, [rbp + 0x168]
lea rcx, [rbp + 0x3b0]
call fcn.180008f70
mov qword [rsp + 0x38], rax
test rax, rax
je 0x180002989
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
mov rsi, rax
test rax, rax
jne 0x180002100
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
lea rdx, str.Failed_to_get_module_handle:
lea rcx, [0x180043740]
call fcn.180007980
mov rcx, rax
mov edx, ebx
call fcn.180004830
mov rcx, rax
call fcn.180007c30
mov r8d, 0x104
lea rdx, [rbp + 0x4c0]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
test eax, eax
jne 0x180002147
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
lea rdx, str.Failed_to_get_module_filename:
lea rcx, [0x180043740]
call fcn.180007980
mov rcx, rax
mov edx, ebx
call fcn.180004830
mov rcx, rax
call fcn.180007c30
xor edx, edx
mov r8d, pe_nt_image_headers64
lea rcx, [rbp + 0x170]
call fcn.18000f470
lea rdx, [rbp + 0x4c0]
lea rcx, [rbp + 0x170]
call fcn.1800043a0
nop
cmp qword [rbp + 0x200], 0
jne 0x1800021a6
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
lea rdx, str.Failed_to_open_file:
lea rcx, [0x180043740]
call fcn.180007980
mov rcx, rax
mov edx, ebx
call fcn.180004830
mov rcx, rax
call fcn.180007c30
mov qword [rbp + 0x288], rdi
mov qword [rbp + 0x280], rdi
mov dword [rsp + 0x20], 0xf0000000
mov r9d, 1
xor r8d, r8d
xor edx, edx
lea rcx, [rbp + 0x288]
call qword [sym.imp.ADVAPI32.dll_CryptAcquireContextA]
test eax, eax
jne 0x180002205
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
lea rdx, str.Failed_to_acquire_crypto_context:
lea rcx, [0x180043740]
call fcn.180007980
mov rcx, rax
mov edx, ebx
call fcn.180004830
mov rcx, rax
call fcn.180007c30
lea rax, [rbp + 0x280]
mov qword [rsp + 0x20], rax
xor r9d, r9d
xor r8d, r8d
mov edx, 0x8003
mov rcx, qword [rbp + 0x288]
call qword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
jne 0x180002269
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
lea rdx, str.Failed_to_create_hash:
lea rcx, [0x180043740]
call fcn.180007980
mov rcx, rax
mov edx, ebx
call fcn.180004830
mov rcx, rax
call fcn.180007c30
xor edx, edx
mov rcx, qword [rbp + 0x288]
call qword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
mov rax, qword [rbp + 0x170]
movsxd rcx, dword [rax + 4]
test byte [rbp + rcx + 0x180], 6
jne 0x180002319
lea rdx, [rbp + 0x5d0]
lea rcx, [rbp + 0x170]
call fcn.1800046b0
xor r9d, r9d
mov r8d, dword [rbp + 0x178]
lea rdx, [rbp + 0x5d0]
mov rcx, qword [rbp + 0x280]
call qword [sym.imp.ADVAPI32.dll_CryptHashData]
test eax, eax
jne 0x180002300
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
lea rdx, str.Failed_to_hash_data:
lea rcx, [0x180043740]
call fcn.180007980
mov rcx, rax
mov edx, ebx
call fcn.180004830
mov rcx, rax
call fcn.180007c30
mov rcx, qword [rbp + 0x280]
call qword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
xor edx, edx
mov rcx, qword [rbp + 0x288]
call qword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
mov rax, qword [rbp + 0x170]
movsxd rcx, dword [rax + 4]
test byte [rbp + rcx + 0x180], 6
je 0x180002282
mov dword [rbp + 0x160], edi
mov dword [rbp + 0x290], 4
mov dword [rsp + 0x20], edi
lea r9, [rbp + 0x290]
lea r8, [rbp + 0x160]
mov edx, 4
mov rcx, qword [rbp + 0x280]
call qword [sym.imp.ADVAPI32.dll_CryptGetHashParam]
test eax, eax
jne 0x18000239a
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
lea rdx, str.Failed_to_get_hash_size:
lea rcx, [0x180043740]
call fcn.180007980
mov rcx, rax
mov edx, ebx
call fcn.180004830
mov rcx, rax
call fcn.180007c30
mov rcx, qword [rbp + 0x280]
call qword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
xor edx, edx
mov rcx, qword [rbp + 0x288]
call qword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
mov ecx, dword [rbp + 0x160]
call fcn.18000d0a4
mov r14, rax
mov dword [rsp + 0x20], edi
lea r9, [rbp + 0x160]
mov r8, rax
mov edx, 2
mov rcx, qword [rbp + 0x280]
call qword [sym.imp.ADVAPI32.dll_CryptGetHashParam]
test eax, eax
jne 0x180002423
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, eax
lea rdx, str.Failed_to_get_hash:
lea rcx, [0x180043740]
call fcn.180007980
mov rcx, rax
mov edx, ebx
call fcn.180004830
mov rcx, rax
call fcn.180007c30
mov rcx, qword [rbp + 0x280]
call qword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
xor edx, edx
mov rcx, qword [rbp + 0x288]
call qword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
mov rcx, r14
call fcn.180008f60
mov r14d, 0x8123
xor edx, edx
mov r8d, 0xe8
lea rcx, [rbp + 0x2c0]
call fcn.18000f470
lea rax, [0x18003bb58]
mov qword [rbp + 0x2c0], rax
mov qword [rbp + 0x350], rdi
mov qword [rbp + 0x378], rdi
xorps xmm0, xmm0
movdqa xmmword [rbp + 0x380], xmm0
mov dword [rsp + 0x30], 4
lea rax, vtable.std::basic_ostream_char__struct_std::char_traits_char__.0
mov qword [rbp + 0x348], rax
mov dword [rbp + 0x344], 0x78
xor r8d, r8d
lea rdx, [rbp + 0x2c8]
lea rcx, [rbp + 0x348]
call fcn.180007660
nop
mov rax, qword [rbp + 0x2c0]
movsxd rcx, dword [rax + 4]
lea rax, vtable.std::basic_ostringstream_char__struct_std::char_traits_char___class_std::allocator_char__.0
mov qword [rbp + rcx + 0x2c0], rax
mov rax, qword [rbp + 0x2c0]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0x88]
mov dword [rbp + rcx + 0x2bc], edx
lea rcx, [rbp + 0x2c8]
call fcn.180007300
lea rax, vtable.std::basic_stringbuf_char__struct_std::char_traits_char___class_std::allocator_char__.0
mov qword [rbp + 0x2c8], rax
mov qword [rbp + 0x330], rdi
mov dword [rbp + 0x338], 4
mov rax, qword [rbp + 0x2c0]
movsxd rcx, dword [rax + 4]
mov eax, dword [rbp + rcx + 0x2d8]
and eax, 0xfffff9ff
bts eax, 0xb
mov dword [rbp + rcx + 0x2d8], eax
mov rax, qword [rbp + 0x2c0]
movsxd rcx, dword [rax + 4]
mov byte [rbp + rcx + 0x318], 0x30
mov ebx, edi
cmp dword [rbp + 0x160], edi
jbe 0x180002578
mov edx, 2
lea rcx, [rsp + 0x40]
call fcn.18000c934
mov rcx, qword [rbp + 0x2c0]
movsxd rdx, dword [rcx + 4]
lea rcx, [rbp + 0x2c0]
add rcx, rdx
mov rdx, qword [rax + 8]
call qword [rax]
mov eax, ebx
movzx edx, byte [rax + r14]
lea rcx, [rbp + 0x2c0]
call fcn.180004a30
inc ebx
cmp ebx, dword [rbp + 0x160]
jb 0x180002531
xorps xmm0, xmm0
movups xmmword [rbp + 0x298], xmm0
mov rbx, rdi
mov qword [rbp + 0x2a8], rbx
mov r13d, 0xf
mov qword [rbp + 0x2b0], r13
mov byte [rbp + 0x298], bl
mov dword [rsp + 0x30], 6
movups xmmword [rsp + 0x40], xmm0
mov ecx, dword [rbp + 0x338]
mov eax, ecx
and al, 0x22
cmp al, 2
je 0x180002604
mov rax, qword [rbp + 0x308]
mov r8, qword [rax]
test r8, r8
je 0x180002604
mov rax, qword [rbp + 0x2e8]
mov rdx, qword [rax]
cmp r8, qword [rbp + 0x330]
cmovb r8, qword [rbp + 0x330]
sub r8, rdx
jmp 0x18000263e
movsxd rcx, eax
cmp rcx, 0x104
jae 0x180002b22
mov byte [rbp + rcx + 0x3b0], dil
jmp 0x180002076
test cl, 4
jne 0x180002634
mov rax, qword [rbp + 0x300]
mov rcx, qword [rax]
test rcx, rcx
je 0x180002634
mov rax, qword [rbp + 0x2e0]
mov rdx, qword [rax]
mov rax, qword [rbp + 0x318]
movsxd r8, dword [rax]
add r8, rcx
sub r8, rdx
jmp 0x18000263e
mov r8, qword [rsp + 0x48]
mov rdx, qword [rsp + 0x40]
test rdx, rdx
je 0x18000265d
lea rcx, [rbp + 0x298]
call fcn.1800062e0
mov r13, qword [rbp + 0x2b0]
mov rbx, qword [rbp + 0x2a8]
mov rcx, rbx
call fcn.180016b20
mov r15, rax
mov rdx, rdi
mov rsi, qword [rbp + 0x298]
test rbx, rbx
je 0x18000269d
cmp r13, 0x10
setae cl
nop
lea rax, [rbp + 0x298]
test cl, cl
cmovne rax, rsi
movzx eax, byte [rax + rdx]
mov byte [rdx + r15], al
inc rdx
cmp rdx, rbx
jb 0x180002680
mov rcx, qword [rbp + 0x280]
call qword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
xor edx, edx
mov rcx, qword [rbp + 0x288]
call qword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
mov rcx, r14
call fcn.180008f60
movsxd rbx, dword [rbp + 0x168]
mov rcx, rbx
call fcn.180016b20
mov r12, rax
mov r14, rbx
mov r8, rbx
mov rbx, qword [rsp + 0x38]
mov rdx, rbx
mov rcx, rax
call fcn.18000edd0
mov r8d, edi
mov r9, rdi
mov r10d, 0x100
mov r11d, dword [rbp + 0x2a8]
nop dword [rax]
mov byte [rsp + r9 + 0x60], r8b
mov eax, r8d
cdq
idiv r11d
movsxd rax, edx
movzx ecx, byte [rax + r15]
mov byte [rbp + r9 + 0x60], cl
inc r8d
lea r9, [r9 + 1]
cmp r8d, r10d
jl 0x180002700
mov edx, edi
mov r8, rdi
nop word [rax + rax]
movzx r9d, byte [rsp + r8 + 0x60]
movzx eax, byte [rbp + r8 + 0x60]
add edx, eax
add edx, r9d
and edx, 0x800000ff
jge 0x180002753
dec edx
or edx, 0xffffff00
inc edx
movsxd rax, edx
lea rcx, [rsp + 0x60]
add rcx, rax
movzx eax, byte [rcx]
mov byte [rsp + r8 + 0x60], al
mov byte [rcx], r9b
inc r8
sub r10, 1
jne 0x180002730
mov edx, edi
test r14, r14
jle 0x1800027eb
mov r11, r12
mov rbx, r14
nop
inc edx
and edx, 0x800000ff
jge 0x180002794
dec edx
or edx, 0xffffff00
inc edx
movsxd rax, edx
lea r10, [rsp + 0x60]
add r10, rax
movzx r9d, byte [r10]
lea eax, [rdi + r9]
and eax, 0x800000ff
jge 0x1800027b7
dec eax
or eax, 0xffffff00
inc eax
movsxd rdi, eax
lea rcx, [rsp + 0x60]
movzx eax, byte [rcx + rdi]
mov byte [r10], al
mov byte [rcx + rdi], r9b
movzx eax, byte [r10]
add r9, rax
movzx eax, r9b
movzx ecx, byte [rsp + rax + 0x60]
xor byte [r11], cl
inc r11
sub rbx, 1
jne 0x180002780
mov rbx, qword [rsp + 0x38]
mov r8, r14
mov rdx, r12
mov rcx, rbx
call fcn.18000edd0
mov rcx, r12
call fcn.1800161cc
mov rcx, r15
call fcn.1800161cc
xor r9d, r9d
lea r8, [0x180044df0]
mov rdx, qword [rbp + 0x168]
mov rcx, rbx
call fcn.180009170
mov qword [0x180044df8], rax
mov rcx, rbx
call fcn.180008f60
xor ecx, ecx
call fcn.1800161cc
mov rcx, qword [0x180044df8]
test rcx, rcx
jne 0x1800029bb
cmp r13, 0x10
jb 0x180002880
lea rdx, [r13 + 1]
mov rax, rsi
cmp rdx, 0x1000
jb 0x180002877
add rdx, 0x27
mov rsi, qword [rsi - 8]
sub rax, rsi
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x180002b1c
mov rcx, rsi
call fcn.180008f60
nop
mov rax, qword [rbp + 0x2c0]
movsxd rcx, dword [rax + 4]
lea rax, vtable.std::basic_ostringstream_char__struct_std::char_traits_char___class_std::allocator_char__.0
mov qword [rbp + rcx + 0x2c0], rax
mov rax, qword [rbp + 0x2c0]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0x88]
mov dword [rbp + rcx + 0x2bc], edx
lea rcx, [rbp + 0x2c8]
call fcn.1800032e0
mov rax, qword [rbp + 0x2c0]
movsxd rcx, dword [rax + 4]
lea rax, vtable.std::basic_ostream_char__struct_std::char_traits_char__.0
mov qword [rbp + rcx + 0x2c0], rax
mov rax, qword [rbp + 0x2c0]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0x10]
mov dword [rbp + rcx + 0x2bc], edx
lea rbx, vtable.std::ios_base.0
mov qword [rbp + 0x348], rbx
lea rcx, [rbp + 0x348]
call fcn.18000c83c
nop
mov rax, qword [rbp + 0x170]
movsxd rcx, dword [rax + 4]
lea rax, vtable.std::basic_ifstream_char__struct_std::char_traits_char__.0
mov qword [rbp + rcx + 0x170], rax
mov rax, qword [rbp + 0x170]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0xb0]
mov dword [rbp + rcx + 0x16c], edx
lea rcx, [rbp + 0x180]
call fcn.180004040
mov rax, qword [rbp + 0x170]
movsxd rcx, dword [rax + 4]
lea rax, vtable.std::basic_istream_char__struct_std::char_traits_char__.0
mov qword [rbp + rcx + 0x170], rax
mov rax, qword [rbp + 0x170]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0x18]
mov dword [rbp + rcx + 0x16c], edx
mov qword [rbp + 0x220], rbx
lea rcx, [rbp + 0x220]
call fcn.18000c83c
nop
xor al, al
mov rcx, qword [rbp + 0x15d0]
xor rcx, rsp
call fcn.18000cd80
lea r11, [rsp + 0x16e0]
mov rbx, qword [r11 + 0x30]
mov rsi, qword [r11 + 0x38]
mov rdi, qword [r11 + 0x40]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret
call fcn.180009410
nop
xor r8d, r8d
mov rcx, qword [0x180044df8]
mov rdx, rcx
call fcn.180009470
nop
cmp r13, 0x10
jb 0x180002a0c
lea rdx, [r13 + 1]
mov rax, rsi
cmp rdx, 0x1000
jb 0x180002a03
add rdx, 0x27
mov rsi, qword [rsi - 8]
sub rax, rsi
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x180002b1c
mov rcx, rsi
call fcn.180008f60
nop
mov rax, qword [rbp + 0x2c0]
movsxd rcx, dword [rax + 4]
lea rax, vtable.std::basic_ostringstream_char__struct_std::char_traits_char___class_std::allocator_char__.0
mov qword [rbp + rcx + 0x2c0], rax
mov rax, qword [rbp + 0x2c0]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0x88]
mov dword [rbp + rcx + 0x2bc], edx
lea rcx, [rbp + 0x2c8]
call fcn.1800032e0
mov rax, qword [rbp + 0x2c0]
movsxd rcx, dword [rax + 4]
lea rax, vtable.std::basic_ostream_char__struct_std::char_traits_char__.0
mov qword [rbp + rcx + 0x2c0], rax
mov rax, qword [rbp + 0x2c0]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0x10]
mov dword [rbp + rcx + 0x2bc], edx
lea rbx, vtable.std::ios_base.0
mov qword [rbp + 0x348], rbx
lea rcx, [rbp + 0x348]
call fcn.18000c83c
nop
mov rax, qword [rbp + 0x170]
movsxd rcx, dword [rax + 4]
lea rax, vtable.std::basic_ifstream_char__struct_std::char_traits_char__.0
mov qword [rbp + rcx + 0x170], rax
mov rax, qword [rbp + 0x170]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0xb0]
mov dword [rbp + rcx + 0x16c], edx
lea rcx, [rbp + 0x180]
call fcn.180004040
mov rax, qword [rbp + 0x170]
movsxd rcx, dword [rax + 4]
lea rax, vtable.std::basic_istream_char__struct_std::char_traits_char__.0
mov qword [rbp + rcx + 0x170], rax
mov rax, qword [rbp + 0x170]
movsxd rcx, dword [rax + 4]
lea edx, [rcx - 0x18]
mov dword [rbp + rcx + 0x16c], edx
mov qword [rbp + 0x220], rbx
lea rcx, [rbp + 0x220]
call fcn.18000c83c
nop
mov al, 1
jmp 0x18000298b
call fcn.180016584
nop
call fcn.18000cf10
int3