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

Disassembly:
push rsi
push rdi
push r15
mov eax, 0x40
call fcn.1800320e0
sub rsp, rax
mov rdi, rcx
mov r15, rdx
mov rcx, 0xffffffffffffffff
mov rsi, rcx
inc rsi
cmp word [rdi + rsi*2], 0
jne 0x180003262
test rsi, rsi
jne 0x18000327c
xor eax, eax
add rsp, 0x40
pop r15
pop rdi
pop rsi
ret
movzx eax, word [rdi + rsi*2 - 2]
mov qword [rsp + 0x60], rbx
mov qword [rsp + 0x68], r14
cmp ax, 0x5c
je 0x180003297
cmp ax, 0x2f
jne 0x18000329a
dec rsi
lea rbx, [rsi + 2]
mov eax, 2
mul rbx
cmovo rax, rcx
mov rcx, rax
call fcn.1800035c4
lea r8, [rbx + rbx]
xor edx, edx
mov rcx, rax
mov r14, rax
call fcn.180024430
xor ebx, ebx
lea rax, [rsi + 1]
mov edx, ebx
test rax, rax
je 0x1800032e9
movzx ecx, word [rdi]
mov word [r14 + rdx*2], cx
cmp word [rdi], bx
je 0x1800032e1
add rdi, 2
inc rdx
cmp rdx, rax
jne 0x1800032d0
movzx ecx, word [r14]
mov rdx, r14
test cx, cx
je 0x180003312
lea eax, [rcx - 0x41]
cmp ax, 0x19
ja 0x180003305
add cx, 0x20
mov word [rdx], cx
movzx ecx, word [rdx + 2]
add rdx, 2
test cx, cx
jne 0x1800032f5
mov r9d, 1
mov dword [rsp + 0x70], ebx
xor r8d, r8d
mov qword [rsp + 0x38], rbx
xor edx, edx
mov qword [rsp + 0x30], rbx
lea rcx, [rsp + 0x38]
mov dword [rsp + 0x20], 0xf0000000
call qword [sym.imp.ADVAPI32.dll_CryptAcquireContextA]
test eax, eax
jne 0x180003379
call qword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x80090016
jne 0x1800034c2
mov r9d, 1
mov dword [rsp + 0x20], 0xf0000008
xor r8d, r8d
lea rcx, [rsp + 0x38]
xor edx, edx
call qword [sym.imp.ADVAPI32.dll_CryptAcquireContextA]
test eax, eax
je 0x1800034c2
mov rcx, qword [rsp + 0x38]
lea rax, [rsp + 0x30]
xor r9d, r9d
mov qword [rsp + 0x20], rax
xor r8d, r8d
mov edx, 0x8003
call qword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
je 0x1800034c2
mov rcx, qword [rsp + 0x30]
lea r8d, [rsi + rsi]
xor r9d, r9d
mov rdx, r14
call qword [sym.imp.ADVAPI32.dll_CryptHashData]
test eax, eax
je 0x1800034c2
mov rcx, qword [rsp + 0x30]
lea r9, [rsp + 0x78]
lea r8, [rsp + 0x70]
mov dword [rsp + 0x78], 4
mov edx, 4
mov dword [rsp + 0x20], ebx
call qword [sym.imp.ADVAPI32.dll_CryptGetHashParam]
test eax, eax
je 0x1800034c2
mov ecx, dword [rsp + 0x70]
call fcn.1800035c4
mov r8d, dword [rsp + 0x70]
xor edx, edx
mov rcx, rax
mov rsi, rax
call fcn.180024430
mov rcx, qword [rsp + 0x30]
lea r9, [rsp + 0x70]
mov r8, rsi
mov dword [rsp + 0x20], ebx
mov edx, 2
call qword [sym.imp.ADVAPI32.dll_CryptGetHashParam]
test eax, eax
je 0x1800034c2
mov rcx, qword [rsp + 0x30]
test rcx, rcx
je 0x18000343b
call qword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov rcx, qword [rsp + 0x38]
test rcx, rcx
je 0x18000344d
xor edx, edx
call qword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
mov rcx, r14
call fcn.180003570
lea rdx, str.SOFTWARELibreOfficeMaintenanceService_
mov rcx, rbx
nop
movzx eax, word [rdx]
mov word [r15 + rcx*2], ax
cmp word [rdx], bx
je 0x180003471
add rdx, 2
inc rcx
cmp rcx, 0x104
jne 0x180003460
lea rdi, [r15 + 0x50]
cmp dword [rsp + 0x70], ebx
jbe 0x1800034b3
nop word [rax + rax]
mov ecx, ebx
lea rdx, str._.2x
movzx r8d, byte [rcx + rsi]
mov rcx, rdi
call qword [sym.imp.USER32.dll_wsprintfW]
add rdi, 4
inc ebx
cmp ebx, dword [rsp + 0x70]
jb 0x180003490
mov rcx, rsi
call fcn.180003570
mov eax, 1
jmp 0x1800034cc
mov rcx, r14
call fcn.180003570
xor eax, eax
mov rbx, qword [rsp + 0x60]
mov r14, qword [rsp + 0x68]
add rsp, 0x40
pop r15
pop rdi
pop rsi
ret