Function at 0x14001c658
Capabilities:
Link many functions at runtime

Disassembly:
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x48
xor eax, eax
mov rbx, rcx
mov qword [rsp + 0x98], rax
mov rsi, rax
mov rbp, rax
mov r12, rax
mov r13, rax
mov r14, rax
mov r15, rax
mov qword [rsp + 0xa0], rax
mov qword [rsp + 0xa8], rax
mov qword [rsp + 0x20], rax
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x30], rax
cmp rcx, rax
jne 0x14001c6b5
lea eax, [r15 + 0x57]
jmp 0x14001c925
lea rcx, str.crypt32.dll
call fcn.14001c440
mov rdi, rax
test rax, rax
jne 0x14001c6dc
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea ecx, [rdi + 0x7e]
test eax, eax
cmove eax, ecx
jmp 0x14001c925
call fcn.14001c308
lea rdx, str.CertGetNameStringA
mov rcx, rdi
mov dword [rsp + 0x90], eax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rsp + 0x38], rax
test rax, rax
je 0x14001c908
cmp dword [rsp + 0x90], esi
jne 0x14001c889
lea rdx, str.CertVerifySubjectCertificateContext
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
lea rdx, str.CertFreeCertificateContext
mov rcx, rdi
mov qword [rsp + 0x98], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
lea rdx, str.CertFindCertificateInStore
mov rcx, rdi
mov rsi, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
lea rdx, str.CryptMsgGetParam
mov rcx, rdi
mov rbp, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
lea rdx, str.CryptMsgControl
mov rcx, rdi
mov r12, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
lea rdx, str.CertGetSubjectCertificateFromStore
mov rcx, rdi
mov r13, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
lea rdx, str.CertOpenStore
mov rcx, rdi
mov r14, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
lea rdx, str.CertCloseStore
mov rcx, rdi
mov r15, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
lea rdx, str.CertFreeCertificateChain
mov rcx, rdi
mov qword [rsp + 0xa0], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
lea rdx, str.CryptMsgClose
mov rcx, rdi
mov qword [rsp + 0xa8], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
lea rdx, str.CryptQueryObject
mov rcx, rdi
mov qword [rsp + 0x20], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
lea rdx, str.CryptDecodeObject
mov rcx, rdi
mov qword [rsp + 0x28], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
xor ecx, ecx
mov qword [rsp + 0x30], rax
cmp qword [rsp + 0x98], rcx
je 0x14001c908
cmp rsi, rcx
je 0x14001c908
cmp rbp, rcx
je 0x14001c908
cmp r12, rcx
je 0x14001c908
cmp r13, rcx
je 0x14001c908
cmp r14, rcx
je 0x14001c908
cmp r15, rcx
je 0x14001c908
cmp qword [rsp + 0xa0], rcx
je 0x14001c908
cmp qword [rsp + 0xa8], rcx
je 0x14001c908
cmp qword [rsp + 0x20], rcx
je 0x14001c908
cmp qword [rsp + 0x28], rcx
je 0x14001c908
cmp rax, rcx
je 0x14001c908
xor edx, edx
mov rcx, rbx
lea r8d, [rdx + 0x70]
call sub.MSVCR90.dll_memset
cmp dword [rsp + 0x90], 0
mov rax, qword [rsp + 0x38]
mov qword [rbx + 8], rax
mov qword [rbx], rdi
jne 0x14001c904
mov rax, qword [rsp + 0x98]
mov qword [rbx + 0x18], rsi
mov qword [rbx + 0x20], rbp
mov qword [rbx + 0x10], rax
mov rax, qword [rsp + 0xa0]
mov qword [rbx + 0x28], r12
mov qword [rbx + 0x48], rax
mov rax, qword [rsp + 0xa8]
mov qword [rbx + 0x30], r13
mov qword [rbx + 0x50], rax
mov rax, qword [rsp + 0x20]
mov qword [rbx + 0x38], r14
mov qword [rbx + 0x58], rax
mov rax, qword [rsp + 0x28]
mov qword [rbx + 0x40], r15
mov qword [rbx + 0x60], rax
mov rax, qword [rsp + 0x30]
mov qword [rbx + 0x68], rax
xor eax, eax
jmp 0x14001c925
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov rcx, rdi
mov ebx, eax
mov eax, 0x7f
test ebx, ebx
cmove ebx, eax
call qword [sym.imp.KERNEL32.dll_FreeLibrary]
mov eax, ebx
add rsp, 0x48
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret