Function at 0x14027d590
Capabilities:
Link many functions at runtime
Query or enumerate registry value

Disassembly:
sub rsp, 0x6b8
mov rax, qword [0x140377790]
xor rax, rsp
mov qword [rsp + 0x6a0], rax
lea rax, [rsp + 0x38]
lea rdx, str.SoftwareNaturalPointNATURALPOINTNPClient_Location
mov r9d, 0x20019
xor r8d, r8d
mov rcx, 0xffffffff80000001
mov dword [rsp + 0x30], 0x104
mov qword [rsp + 0x20], rax
mov byte [rsp + 0x370], 0
call qword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x14027d63b
mov rcx, qword [rsp + 0x38]
lea rax, [rsp + 0x30]
lea r9, [rsp + 0x40]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x480]
lea rdx, str.Path
xor r8d, r8d
mov qword [rsp + 0x20], rax
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
mov rcx, qword [rsp + 0x38]
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
xor r11d, r11d
movzx eax, byte [rsp + r11 + 0x480]
inc r11
mov byte [rsp + r11 + 0x36f], al
test al, al
jne 0x14027d623
lea r8, [rsp + 0x370]
lea rdx, str._sNPClient64.dll
lea rcx, [rsp + 0x590]
call sub.MSVCR90.dll_sprintf
lea rcx, [rsp + 0x590]
call qword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov qword [0x140564ca8], rax
test rax, rax
je 0x14027d87e
lea rdx, str.NP_GetSignature
mov rcx, rax
mov qword [rsp + 0x6b0], rbx
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
lea rcx, [rsp + 0x50]
lea rdx, str.precise_head_tracking_n_put_your_head_into_the_game_n_now_go_look_around_n_n_Copyright_EyeControl_Technologies
mov r8d, 0x6b
mov rbx, rax
mov qword [0x14038d6a8], rax
call sub.MSVCR90.dll_memcpy
lea rcx, [rsp + 0x118]
lea rdx, str.hardware_camera_n_software_processing_data_n_track_user_movement_n_n_Copyright_EyeControl_Technologies
mov r8d, 0x63
call sub.MSVCR90.dll_memcpy
lea rcx, [rsp + 0x1e0]
call rbx
mov rbx, qword [rsp + 0x6b0]
test eax, eax
jne 0x14027d866
lea rax, [rsp + 0x50]
lea r8, [rsp + 0x1e0]
sub r8, rax
movzx edx, byte [rax]
movzx ecx, byte [rax + r8]
sub edx, ecx
jne 0x14027d705
inc rax
test ecx, ecx
jne 0x14027d6f2
test edx, edx
jne 0x14027d866
lea rax, [rsp + 0x118]
lea r8, [rsp + 0x2a8]
sub r8, rax
movzx edx, byte [rax]
movzx ecx, byte [rax + r8]
sub edx, ecx
jne 0x14027d733
inc rax
test ecx, ecx
jne 0x14027d720
test edx, edx
jne 0x14027d866
mov rcx, qword [0x140564ca8]
lea rdx, str.NP_RegisterWindowHandle
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [0x140564ca8]
lea rdx, str.NP_UnregisterWindowHandle
mov qword [0x14038d680], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [0x140564ca8]
lea rdx, str.NP_RegisterProgramProfileID
mov qword [0x14038d688], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [0x140564ca8]
lea rdx, str.NP_QueryVersion
mov qword [0x14038d690], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [0x140564ca8]
lea rdx, str.NP_RequestData
mov qword [0x14038d698], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [0x140564ca8]
lea rdx, str.NP_GetData
mov qword [0x14038d6a0], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [0x140564ca8]
lea rdx, str.NP_StartCursor
mov qword [0x14038d6b0], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [0x140564ca8]
lea rdx, str.NP_StopCursor
mov qword [0x14038d6b8], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [0x140564ca8]
lea rdx, str.NP_ReCenter
mov qword [0x14038d6c0], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [0x140564ca8]
lea rdx, str.NP_StartDataTransmission
mov qword [0x14038d6c8], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, qword [0x140564ca8]
lea rdx, str.NP_StopDataTransmission
mov qword [0x14038d6d0], rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [0x14038d6d8], rax
jmp 0x14027d87e
mov rcx, qword [0x140564ca8]
call qword [sym.imp.KERNEL32.dll_FreeLibrary]
mov qword [0x140564ca8], 0
xor eax, eax
mov rcx, qword [rsp + 0x6a0]
xor rcx, rsp
call fcn.140291ec0
add rsp, 0x6b8
ret