Function at 0x180023570
Capabilities:
Link many functions at runtime

Disassembly:
mov qword [rsp + 0x18], rbx
push rdi
sub rsp, 0x160
mov rax, qword [0x180144010]
xor rax, rsp
mov qword [rsp + 0x150], rax
mov rdi, rcx
mov rbx, rdx
mov rcx, rdx
call fcn.1800336f0
cmp byte [rbx + 8], 0
je 0x180023864
cmp qword [rdi + 0xc8], 0
jne 0x180023854
cmp byte [rdi + 0xd8], 0
jne 0x180023864
cmp qword [rdi + 0xf0], 0
je 0x180023864
lea r9, [rdi + 0xe0]
mov byte [rsp + 0x40], 0
cmp qword [r9 + 0x18], 0x10
jb 0x1800235e6
mov r9, qword [r9]
mov rax, qword [rdi + 0x38]
lea r8, [0x180119702]
mov qword [rsp + 0x28], r8
lea rcx, [rsp + 0x40]
mov edx, 0x103
mov qword [rsp + 0x20], rax
call fcn.18008a7fc
mov rax, qword [rdi + 0xb8]
test rax, rax
je 0x18002385d
cmp qword [rdi + 0xc8], 0
jne 0x180023645
lea rcx, [rsp + 0x40]
call qword [case.0x18001dfea.0]
test rax, rax
mov qword [rdi + 0xc8], rax
mov byte [rdi + 0xd0], 1
setne al
jmp 0x180023647
xor al, al
mov byte [rdi + 0xd2], al
test al, al
je 0x18002385d
mov rcx, qword [rdi + 0xc8]
lea rdx, str.RxDiagActivate
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
test rax, rax
lea rcx, [0x180023500]
lea rdx, str.RxDiagActivateSucceeded
cmovne rcx, rax
mov qword [rdi + 0x108], rcx
mov rcx, qword [rdi + 0xc8]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
test rax, rax
lea rcx, [0x180023520]
lea rdx, str.RxDiagRelease
cmovne rcx, rax
mov qword [rdi + 0x110], rcx
mov rcx, qword [rdi + 0xc8]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
test rax, rax
lea rcx, [0x180023510]
lea rdx, str.RxDiagWriteData
cmovne rcx, rax
mov qword [rdi + 0x118], rcx
mov rcx, qword [rdi + 0xc8]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
test rax, rax
lea rcx, [0x180023530]
lea rdx, str.RxDiagGetStartTime
cmovne rcx, rax
mov qword [rdi + 0x120], rcx
mov rcx, qword [rdi + 0xc8]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
test rax, rax
lea rcx, [0x180023540]
lea rdx, str.RxDiagSetStartTime
cmovne rcx, rax
mov qword [rdi + 0x128], rcx
mov rcx, qword [rdi + 0xc8]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
test rax, rax
lea rcx, [0x180023550]
lea rdx, str.RxDiagGetThreadId
cmovne rcx, rax
mov qword [rdi + 0x130], rcx
mov rcx, qword [rdi + 0xc8]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
test rax, rax
lea rcx, [0x180023560]
lea rdx, str.RxDiagFeaturesSet
cmovne rcx, rax
mov qword [rdi + 0x138], rcx
mov rcx, qword [rdi + 0xc8]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
test rax, rax
lea rcx, [0x180021f30]
lea rdx, str.RxDiagMessagePumpHandle
cmovne rcx, rax
mov qword [rdi], rcx
mov rcx, qword [rdi + 0xc8]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
lea rcx, [0x180021f40]
mov byte [rsp + 0x30], 0
test rax, rax
cmovne rcx, rax
mov rax, qword [rdi + 0x108]
mov qword [rdi + 8], rcx
lea rcx, [rsp + 0x30]
call qword [case.0x18001dfea.0]
mov rax, qword [rdi + 0x110]
call qword [case.0x18001dfea.0]
mov byte [rdi + 0x100], al
test al, al
je 0x180023854
cmp byte [rsp + 0x30], 0
je 0x180023847
call fcn.18003f3bc
mov rbx, rax
call fcn.18003f3a0
cqo
idiv rbx
mov rcx, rax
imul rax, rdx, 0x3b9aca00
imul r8, rcx, 0x3b9aca00
cqo
idiv rbx
add r8, rax
movabs rax, 0x431bde82d7b634db
imul r8
mov rax, qword [rdi + 0x130]
sar rdx, 0x12
mov rcx, rdx
shr rcx, 0x3f
add rcx, rdx
call qword [case.0x18001dfea.0]
mov rax, qword [rdi + 0x128]
call qword [case.0x18001dfea.0]
movzx eax, byte [rdi + 0x100]
jmp 0x180023866
mov byte [rdi + 0xd8], 1
xor al, al
mov rcx, qword [rsp + 0x150]
xor rcx, rsp
call fcn.1800341c0
mov rbx, qword [rsp + 0x180]
add rsp, 0x160
pop rdi
ret