Function at 0x140021310
Capabilities:
Link many functions at runtime

Disassembly:
push rsi
push r12
push r13
push r14
push r15
sub rsp, 0x80
mov rax, qword [0x1400fd010]
xor rax, rsp
mov qword [rsp + 0x68], rax
xor r13d, r13d
mov r12d, r8d
mov r14d, edx
lea r8, str.Initialize_async_communications
mov r15d, ecx
mov esi, r13d
mov ecx, 0x10000
lea edx, [r13 + 1]
call fcn.140027720
cmp r14d, 0x100
jbe 0x14002137f
lfence
mov r9d, r14d
lea r8, str.Invalid_number_of_threads_requested:__lu
lea edx, [r13 + 5]
mov ecx, 0x10000
call fcn.140027720
xor eax, eax
jmp 0x140021e12
call fcn.140025560
test eax, eax
je 0x140021378
mov qword [rsp + 0xb0], rbx
mov ecx, 0x110
mov qword [rsp + 0x78], rbp
mov qword [rsp + 0x70], rdi
call fcn.140025600
mov rbx, rax
test rax, rax
je 0x140021df9
xor edx, edx
mov r8d, 0x110
mov rcx, rax
call fcn.1400735b0
lea rcx, str.Kernel32.dll
call qword [sym.imp.KERNEL32.dll_GetModuleHandleW]
mov rbp, rax
test rax, rax
jne 0x1400213f5
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r9d, eax
lea r8, str.Unable_to_open_Kernel32.dll_0x_08X
lea edx, [rbp + 5]
lea ecx, [rbp + 1]
call fcn.140027720
jmp 0x140021ca8
lea rcx, str.fltlib.dll
call qword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov rdi, rax
test rax, rax
jne 0x14002142a
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r9d, eax
lea r8, str.Unable_to_load_fltlib.dll_0x_08X
lea edx, [rdi + 5]
lea ecx, [rdi + 1]
call fcn.140027720
jmp 0x140021ca8
lea rdx, str.FilterConnectCommunicationPort
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
lea rdx, str.FilterSendMessage
mov rcx, rdi
mov qword [rbx + 8], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
lea rdx, str.FilterGetMessage
mov rcx, rdi
mov qword [rbx + 0x10], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
lea rdx, str.FilterReplyMessage
mov rcx, rdi
mov qword [rbx + 0x18], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
lea rdx, str.CancelIoEx
mov rcx, rbp
mov qword [rbx + 0x20], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rbx + 0x28], rax
cmp qword [rbx + 8], r13
je 0x140021c9f
cmp qword [rbx + 0x10], r13
je 0x140021c9f
cmp qword [rbx + 0x18], r13
je 0x140021c9f
cmp qword [rbx + 0x20], r13
je 0x140021c9f
test rax, rax
je 0x140021c9f
mov qword [rbx], rdi
mov ecx, 0x48
mov dword [rbx + 0x100], r15d
call fcn.140025600
mov rdi, rax
test rax, rax
jne 0x1400214e4
mov qword [rbx + 0x40], r13
jmp 0x140021ca8
xorps xmm0, xmm0
xor eax, eax
movups xmmword [rdi], xmm0
movups xmmword [rdi + 0x10], xmm0
lea ecx, [rax + 0x70]
movups xmmword [rdi + 0x20], xmm0
movups xmmword [rdi + 0x30], xmm0
mov qword [rdi + 0x40], rax
call fcn.140025600
test rax, rax
jne 0x14002151d
mov qword [rdi], r13
mov rcx, rdi
call fcn.140025930
mov qword [rbx + 0x40], r13
jmp 0x140021ca8
xor ecx, ecx
mov qword [rax + 0x50], rcx
mov qword [rax + 0x68], rcx
lea rcx, [0x140026ae0]
mov qword [rax + 0x28], rcx
lea rcx, [0x1400231a0]
mov qword [rax + 0x30], r13
mov qword [rax + 0x38], r13
mov qword [rax + 0x40], r13
mov qword [rax + 0x48], r13
mov qword [rax + 0x60], r13
mov qword [rax], r13
mov qword [rax + 8], r13
mov qword [rax + 0x10], r13
mov qword [rax + 0x18], r13
mov dword [rax + 0x20], r13d
mov dword [rax + 0x24], 0x70
mov qword [rdi], rax
mov qword [rax + 0x58], rcx
lea rcx, [0x1400231e0]
mov rax, qword [rdi]
mov qword [rax + 0x60], rcx
mov rax, qword [rdi]
mov dword [rax + 0x50], 1
mov rbp, qword [rdi]
test rbp, rbp
je 0x14002150c
mov ecx, 0x400
mov dword [rbp + 0x4c], 0x80
call fcn.140025600
mov qword [rbp + 0x30], rax
test rax, rax
jne 0x1400215e4
mov dword [rbp + 0x4c], r13d
mov rcx, qword [rdi]
test rcx, rcx
je 0x14002150c
mov rax, qword [rcx + 0x28]
test rax, rax
je 0x1400215ce
call qword [0x1400ce5a8]
mov rcx, qword [rdi]
call fcn.140025930
mov rcx, rdi
call fcn.140025930
mov qword [rbx + 0x40], r13
jmp 0x140021ca8
xor edx, edx
mov r8d, 0x400
mov rcx, rax
call fcn.1400735b0
lea rcx, [rdi + 8]
test rcx, rcx
je 0x140021603
call qword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
mov ecx, 0x50
mov qword [rbx + 0x40], rdi
mov dword [rbx + 0x90], r14d
call fcn.140025600
test rax, rax
jne 0x140021626
mov qword [rbx + 0x60], r13
jmp 0x140021ca8
mov qword [rax + 0x44], r13
lea rbp, [0x140026810]
mov dword [rax + 0x4c], r13d
mov edi, r13d
mov qword [rax + 0x30], r13
mov qword [rax + 0x38], r13
mov dword [rax + 0x40], r13d
mov qword [rax], r13
mov qword [rax + 8], r13
mov qword [rax + 0x10], r13
mov qword [rax + 0x18], r13
mov dword [rax + 0x20], r13d
mov dword [rax + 0x24], 0x50
mov qword [rax + 0x28], rbp
mov qword [rbx + 0x60], rax
cmp dword [rbx + 0x90], r13d
jbe 0x1400216e1
nop
mov ecx, 0x40068
call fcn.140025600
mov rcx, rax
test rax, rax
je 0x140021ca8
mov qword [rax], r13
mov qword [rax + 8], r13
mov qword [rax + 0x10], r13
mov qword [rax + 0x18], r13
mov dword [rax + 0x20], r13d
mov dword [rax + 0x24], 0x40068
mov qword [rax + 0x28], r13
mov qword [rax + 0x30], 0x40010
mov rdx, qword [rbx + 0x60]
test rdx, rdx
je 0x1400216d7
cmp qword [rdx + 0x38], r13
jne 0x1400216c1
mov qword [rdx + 0x30], rax
jmp 0x1400216d0
mov rax, qword [rdx + 0x38]
mov qword [rcx + 8], rax
mov rax, qword [rdx + 0x38]
mov qword [rax], rcx
mov qword [rdx + 0x38], rcx
inc dword [rdx + 0x40]
inc edi
cmp edi, dword [rbx + 0x90]
jb 0x140021670
mov ecx, 0x10
call fcn.140025600
mov rsi, rax
test rax, rax
je 0x140021ca8
xorps xmm0, xmm0
movups xmmword [rax], xmm0
mov byte [rax], 1
mov byte [rax + 2], 3
mov dword [rax + 4], 0x10
mov byte [rax + 8], 1
mov ecx, dword [rbx + 0x100]
mov dword [rax + 0xc], ecx
mov byte [rax + 9], 1
mov al, 1
test al, r12b
je 0x140021729
mov byte [rsi + 9], 3
mov al, 3
test r12b, 2
je 0x140021734
or al, 4
mov byte [rsi + 9], al
mov ecx, r12d
and ecx, 0x38
je 0x14002177c
cmp ecx, 8
je 0x14002177a
cmp ecx, 0x10
je 0x140021776
cmp ecx, 0x18
je 0x140021772
cmp ecx, 0x20
je 0x14002176e
mov r9d, r12d
lea r8, str.Invalid_mode_flags:_0x_08x
mov edx, 5
mov ecx, 0x10000
call fcn.140027720
jmp 0x140021ca8
or al, 0x20
jmp 0x14002177c
or al, 0x18
jmp 0x14002177c
or al, 0x10
jmp 0x14002177c
or al, 8
mov byte [rsi + 9], al
lea rdi, [rbx + 0x30]
xor eax, eax
shr r12d, 8
mov qword [rsp + 0x60], rax
lea rcx, str.SophosEndpointDefenseAsyncCommPort
movups xmmword [rsp + 0x50], xmm0
mov qword [rsp + 0x28], rdi
and r12d, 1
lea r9d, [rax + 0x10]
mov dword [rsp + 0x50], 0x18
lea rax, [rsp + 0x50]
mov dword [rsp + 0x60], r12d
mov qword [rsp + 0x20], rax
mov r8, rsi
mov rax, qword [rbx + 8]
xor edx, edx
call qword [0x1400ce5a8]
test eax, eax
je 0x1400217ef
mov r9d, eax
lea r8, str.Unable_to_open_async_communications_port___error_0x_08X
mov edx, 5
mov ecx, 0x10000
call fcn.140027720
jmp 0x140021ca8
mov rcx, rsi
call fcn.140025930
mov r9d, dword [rbx + 0x90]
test r9d, r9d
je 0x14002184d
mov rcx, qword [rdi]
xor r8d, r8d
xor edx, edx
call qword [sym.imp.KERNEL32.dll_CreateIoCompletionPort]
mov qword [rbx + 0x38], rax
test rax, rax
jne 0x14002184d
call qword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x14002182c
movzx eax, ax
or eax, 0x80070000
mov r9d, eax
lea r8, str.Unable_to_create_I_O_completion_port___error_0x_08X
mov edx, 5
mov ecx, 0x10000
call fcn.140027720
mov rsi, r13
jmp 0x140021ca8
mov eax, dword [rbx + 0x90]
test eax, eax
je 0x1400219be
lea eax, [rax*8]
mov ecx, eax
mov edi, eax
call fcn.140025600
mov qword [rbx + 0x98], rax
mov rsi, r13
test rax, rax
je 0x140021ca8
mov r8d, edi
xor edx, edx
mov rcx, rax
call fcn.1400735b0
cmp dword [rbx + 0x90], esi
jbe 0x1400219be
lea r12, [0x1400247e0]
lea rbp, [0x140020db0]
nop word [rax + rax]
mov ecx, 0x90
mov qword [rsp + 0x40], rbx
mov dword [rsp + 0x48], esi
call fcn.140025600
mov rdi, rax
test rax, rax
je 0x140021a07
mov ecx, 0x18
call fcn.140025600
mov r14, rax
test rax, rax
je 0x1400219ff
xorps xmm0, xmm0
xor eax, eax
movups xmmword [rdi], xmm0
movups xmmword [rdi + 0x10], xmm0
lea ecx, [rax + 0x10]
movups xmmword [rdi + 0x20], xmm0
movups xmmword [rdi + 0x30], xmm0
movups xmmword [rdi + 0x40], xmm0
movups xmmword [rdi + 0x50], xmm0
movups xmmword [rdi + 0x60], xmm0
movups xmmword [rdi + 0x70], xmm0
movups xmmword [rdi + 0x80], xmm0
movups xmmword [r14], xmm0
mov qword [r14 + 0x10], rax
mov qword [rdi], r13
mov qword [rdi + 8], r13
mov qword [rdi + 0x10], r13
mov qword [rdi + 0x18], r13
mov dword [rdi + 0x20], r13d
mov dword [rdi + 0x24], 0x90
mov qword [rdi + 0x28], r12
mov qword [rdi + 0x38], r14
call fcn.140025600
mov qword [rdi + 0x40], rax
test rax, rax
je 0x1400219f7
movups xmm0, xmmword [rsp + 0x40]
mov dword [rdi + 0x58], 0x10
xor r9d, r9d
xor r8d, r8d
xor edx, edx
movups xmmword [rax], xmm0
xor ecx, ecx
mov dword [rdi + 0x54], 0x32
call qword [sym.imp.KERNEL32.dll_CreateEventW]
mov qword [r14], rax
test rax, rax
je 0x1400219dc
lea rcx, [rdi + 0x60]
mov qword [rdi + 0x48], rbp
mov dword [rdi + 0x50], 0x10000
test rcx, rcx
je 0x140021997
call qword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
mov byte [rdi + 0x89], r13b
mov rax, qword [rbx + 0x98]
mov qword [rax + rsi*8], rdi
inc esi
cmp esi, dword [rbx + 0x90]
jb 0x1400218b0
lea rbp, [0x140026810]
mov ecx, 0x50
call fcn.140025600
test rax, rax
jne 0x140021a1a
mov qword [rbx + 0xa0], r13
mov rsi, r13
jmp 0x140021ca8
mov rcx, qword [rdi + 0x40]
test rcx, rcx
je 0x1400219ea
call fcn.140025930
mov rcx, rdi
call fcn.140025930
mov rcx, r14
jmp 0x140021a02
mov rcx, r14
call fcn.140025930
mov rcx, rdi
call fcn.140025930
mov rax, qword [rbx + 0x98]
mov qword [rax + rsi*8], r13
mov rsi, r13
jmp 0x140021ca8
mov qword [rax + 0x44], r13
mov ecx, 0x70
mov dword [rax + 0x4c], r13d
mov qword [rax + 0x30], r13
mov qword [rax + 0x38], r13
mov dword [rax + 0x40], r13d
mov qword [rax], r13
mov qword [rax + 8], r13
mov qword [rax + 0x10], r13
mov qword [rax + 0x18], r13
mov dword [rax + 0x20], r13d
mov dword [rax + 0x24], 0x50
mov qword [rax + 0x28], rbp
mov qword [rbx + 0xa0], rax
call fcn.140025600
test rax, rax
jne 0x140021a71
mov qword [rbx + 0xd0], r13
mov rsi, r13
jmp 0x140021ca8
xor ecx, ecx
mov qword [rax + 0x50], rcx
mov qword [rax + 0x68], rcx
lea rcx, [0x140026ae0]
mov qword [rax + 0x28], rcx
lea rcx, [0x14001fbf0]
mov qword [rax + 0x30], r13
mov qword [rax + 0x38], r13
mov qword [rax + 0x40], r13
mov qword [rax + 0x48], r13
mov qword [rax + 0x60], r13
mov qword [rax], r13
mov qword [rax + 8], r13
mov qword [rax + 0x10], r13
mov qword [rax + 0x18], r13
mov dword [rax + 0x20], r13d
mov dword [rax + 0x24], 0x70
mov qword [rbx + 0xd0], rax
mov qword [rax + 0x58], rcx
lea rcx, [0x14001fc10]
mov rax, qword [rbx + 0xd0]
mov qword [rax + 0x60], rcx
mov rdi, qword [rbx + 0xd0]
test rdi, rdi
jne 0x140021aec
mov rsi, r13
jmp 0x140021ca8
mov ecx, 0x200
mov dword [rdi + 0x4c], 0x40
call fcn.140025600
mov qword [rdi + 0x30], rax
test rax, rax
jne 0x140021b12
mov dword [rdi + 0x4c], r13d
mov rsi, r13
jmp 0x140021ca8
xor edx, edx
mov r8d, 0x200
mov rcx, rax
call fcn.1400735b0
mov rax, qword [rbx + 0x40]
test rax, rax
jne 0x140021b5e
lea rax, str.commandmgmt___NULL
mov edx, 4
mov qword [rsp + 0x28], rax
lea r9, str.C:workspace_sed_srcCommonSgCommandMgmt.c
lea r8, str._s___d_:_Assertion_failure:__s
mov dword [rsp + 0x20], 0x210
mov ecx, 0x80000000
call fcn.140027720
jmp 0x140021b6d
lea rcx, [0x140020570]
mov qword [rax + 0x40], rbx
mov qword [rax + 0x38], rcx
lea rcx, [rbx + 0xa8]
test rcx, rcx
je 0x140021b7f
call qword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
lea rcx, [rbx + 0xd8]
test rcx, rcx
je 0x140021b91
call qword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
lea rcx, [rbx + 0x68]
test rcx, rcx
je 0x140021ba0
call qword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
cmp dword [rbx + 0x90], r13d
jbe 0x140021c97
lea r8, str.Registering_with_SED_driver...
mov edx, 1
mov ecx, 0x10000
call fcn.140027720
mov ebp, dword [rbx + 0x100]
mov ecx, 0x10
xor sil, sil
call fcn.140026280
mov rdi, rax
test rax, rax
jne 0x140021bf7
lea r8, str.Unable_to_create_a_registration_message
mov ecx, 0x10000
lea edx, [rax + 5]
call fcn.140027720
jmp 0x140021c7c
add rax, 0x58
mov qword [rdi + 0x38], r13
mov qword [rdi + 0x30], rax
mov rdx, rdi
mov rcx, rbx
mov byte [rax], 1
mov byte [rax + 2], 3
mov rax, qword [rdi + 0x30]
mov byte [rax + 3], 0x32
mov rax, qword [rdi + 0x30]
mov dword [rax + 4], 0x10
mov rax, qword [rdi + 0x30]
mov byte [rax + 8], 1
mov rax, qword [rdi + 0x30]
mov dword [rax + 0xc], ebp
call fcn.140022f20
test eax, eax
je 0x140021c56
mov r9d, eax
lea r8, str.Unable_to_send_a_registration_message__0x_X_
mov edx, 5
mov ecx, 0x10000
call fcn.140027720
jmp 0x140021c59
mov sil, 1
mov rax, qword [rdi + 0x28]
mov rcx, rdi
test rax, rax
je 0x140021c72
call qword [0x1400ce5a8]
cmp al, 1
jne 0x140021c77
mov rcx, rdi
call fcn.140025930
test sil, sil
jne 0x140021c97
lea r8, str.Registration_failed
mov edx, 1
mov ecx, 0x10000
call fcn.140027720
mov rsi, r13
jmp 0x140021ca8
mov rax, rbx
jmp 0x140021e00
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_FreeLibrary]
mov rcx, qword [rbx + 0x38]
test rcx, rcx
je 0x140021cbb
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov qword [rbx + 0x38], r13
mov rcx, qword [rbx + 0x30]
test rcx, rcx
je 0x140021cce
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov qword [rbx + 0x30], r13
mov rcx, qword [rbx + 0x98]
test rcx, rcx
je 0x140021d40
mov edi, r13d
cmp dword [rbx + 0x90], r13d
jbe 0x140021d34
mov eax, edi
lea r14, [rax*8]
mov rax, qword [rbx + 0x98]
mov rcx, qword [r14 + rax]
test rcx, rcx
je 0x140021d23
mov rax, qword [rcx + 0x28]
test rax, rax
je 0x140021d1e
call qword [0x1400ce5a8]
cmp al, 1
jne 0x140021d23
mov rcx, qword [rbx + 0x98]
mov rcx, qword [rcx + r14]
call fcn.140025930
inc edi
cmp edi, dword [rbx + 0x90]
jb 0x140021ce6
mov rcx, qword [rbx + 0x98]
call fcn.140025930
mov qword [rbx + 0x98], r13
mov rcx, qword [rbx + 0xa0]
test rcx, rcx
je 0x140021d67
mov rax, qword [rcx + 0x28]
test rax, rax
je 0x140021d62
call qword [0x1400ce5a8]
mov rcx, qword [rbx + 0xa0]
call fcn.140025930
mov rcx, qword [rbx + 0xd0]
mov qword [rbx + 0xa0], r13
test rcx, rcx
je 0x140021d95
mov rax, qword [rcx + 0x28]
test rax, rax
je 0x140021d90
call qword [0x1400ce5a8]
mov rcx, qword [rbx + 0xd0]
call fcn.140025930
mov rcx, qword [rbx + 0x60]
mov qword [rbx + 0xd0], r13
test rcx, rcx
je 0x140021dbd
mov rax, qword [rcx + 0x28]
test rax, rax
je 0x140021db8
call qword [0x1400ce5a8]
mov rcx, qword [rbx + 0x60]
call fcn.140025930
mov qword [rbx + 0x60], r13
test rsi, rsi
je 0x140021dce
mov rcx, rsi
call fcn.140025930
mov rcx, qword [rbx + 0x40]
test rcx, rcx
je 0x140021de0
call fcn.140023bc0
mov qword [rbx + 0x40], r13
mov rcx, qword [rbx]
test rcx, rcx
je 0x140021df1
call qword [sym.imp.KERNEL32.dll_FreeLibrary]
mov qword [rbx], r13
mov rcx, rbx
call fcn.140025930
call fcn.1400255c0
xor eax, eax
mov rbp, qword [rsp + 0x78]
mov rbx, qword [rsp + 0xb0]
mov rdi, qword [rsp + 0x70]
mov rcx, qword [rsp + 0x68]
xor rcx, rsp
call fcn.1400494a0
add rsp, 0x80
pop r15
pop r14
pop r13
pop r12
pop rsi
ret