Function at 0x14000a660
Capabilities:
Link many functions at runtime

Disassembly:
push rbp
push rsi
push rdi
push r14
push r15
lea rbp, [rsp - 0x1010]
mov eax, 0x1110
call fcn.14002b1d0
sub rsp, rax
mov qword [rsp + 0x30], 0xfffffffffffffffe
mov qword [rsp + 0x1150], rbx
mov rax, qword [0x140065ec0]
xor rax, rsp
mov qword [rbp + 0x1000], rax
mov rax, rdx
mov rbx, rcx
cmp qword [rcx + 8], 0
je 0x14000a6fd
cmp qword [rcx + 0x10], 0
je 0x14000a6fd
cmp qword [rcx + 0x18], 0
je 0x14000a6fd
cmp qword [rcx + 0x20], 0
je 0x14000a6fd
cmp qword [rcx + 0x28], 0
je 0x14000a6fd
cmp qword [rcx + 0x30], 0
je 0x14000a6fd
cmp qword [rcx + 0x38], 0
je 0x14000a6fd
cmp qword [rcx + 0x40], 0
je 0x14000a6fd
cmp qword [rcx + 0x48], 0
je 0x14000a6fd
cmp qword [rcx + 0x50], 0
je 0x14000a6fd
cmp qword [rcx + 0x58], 0
je 0x14000a6fd
cmp qword [rcx + 0x68], 0
jne 0x14000b14e
mov qword [rsp + 0x78], 7
xor r14d, r14d
mov qword [rsp + 0x70], r14
mov word [rsp + 0x60], r14w
lea rdx, [rsp + 0x60]
mov rcx, rax
call fcn.140014e40
mov qword [rbp - 0x38], 7
mov qword [rbp - 0x40], r14
mov word [rbp - 0x50], r14w
lea r8d, [r14 + 0xd]
lea rdx, str.DongleX64.dll
lea rcx, [rbp - 0x50]
call fcn.140002b50
nop
lea r8, [rbp - 0x50]
lea rdx, [rsp + 0x60]
lea rcx, [rsp + 0x38]
call fcn.140014680
nop
cmp qword [rbp - 0x38], 8
jb 0x14000a76b
mov rcx, qword [rbp - 0x50]
call fcn.14002747c
mov qword [rbp - 0x38], 7
mov qword [rbp - 0x40], r14
mov word [rbp - 0x50], r14w
lea rcx, [rsp + 0x38]
cmp qword [rsp + 0x50], 8
cmovae rcx, qword [rsp + 0x38]
xor edx, edx
lea r8d, [rdx + 8]
call qword [sym.imp.KERNEL32.dll_LoadLibraryExW]
mov qword [rbx], rax
test rax, rax
jne 0x14000ada2
mov r15d, 0x5c
mov word [rsp + 0x20], r15w
or r8, 0xffffffffffffffff
mov rcx, qword [rsp + 0x70]
cmp rcx, 1
jb 0x14000a853
dec rcx
cmp rcx, r8
cmova rcx, r8
lea rax, [rsp + 0x60]
cmp qword [rsp + 0x78], 8
cmovae rax, qword [rsp + 0x60]
lea rsi, [rax + rcx*2]
cmp word [rsi], r15w
jne 0x14000a81d
mov ecx, 1
lea rdx, [rsp + 0x20]
mov rdi, rsi
movzx eax, word [rdx]
cmp word [rdi], ax
jne 0x14000a80d
add rdi, 2
add rdx, 2
dec rcx
je 0x14000a836
jmp 0x14000a7f6
mov ecx, 1
cmp word [rdi], ax
cmovb ecx, r8d
test ecx, ecx
je 0x14000a836
lea rcx, [rsp + 0x60]
call fcn.140003070
cmp rsi, rax
je 0x14000a84f
sub rsi, 2
or r8, 0xffffffffffffffff
jmp 0x14000a7e3
lea rax, [rsp + 0x60]
cmp qword [rsp + 0x78], 8
cmovae rax, qword [rsp + 0x60]
sub rsi, rax
sar rsi, 1
jmp 0x14000a856
or r8, 0xffffffffffffffff
mov rsi, r8
mov r9, rsi
xor r8d, r8d
lea rdx, [rbp - 0x78]
lea rcx, [rsp + 0x60]
call fcn.1400031d0
nop
mov qword [rbp - 0x38], 7
mov qword [rbp - 0x40], r14
mov word [rbp - 0x50], r14w
mov r8d, 0xd
lea rdx, str.DongleX64.dll
lea rcx, [rbp - 0x50]
call fcn.140002b50
nop
lea r8, [rbp - 0x50]
lea rdx, [rbp - 0x78]
lea rcx, [rbp - 0x28]
call fcn.140014680
mov rdi, rax
lea rax, [rsp + 0x38]
cmp rax, rdi
je 0x14000a91c
cmp qword [rsp + 0x50], 8
jb 0x14000a8c3
mov rcx, qword [rsp + 0x38]
call fcn.14002747c
mov qword [rsp + 0x50], 7
mov qword [rsp + 0x48], r14
mov word [rsp + 0x38], r14w
cmp qword [rdi + 0x18], 8
jae 0x14000a8f7
mov r8, qword [rdi + 0x10]
inc r8
add r8, r8
mov rdx, rdi
lea rcx, [rsp + 0x38]
call fcn.140027770
jmp 0x14000a902
mov rax, qword [rdi]
mov qword [rsp + 0x38], rax
mov qword [rdi], r14
mov rax, qword [rdi + 0x10]
mov qword [rsp + 0x48], rax
mov rax, qword [rdi + 0x18]
mov qword [rsp + 0x50], rax
mov qword [rdi + 0x10], r14
mov qword [rdi + 0x18], r14
cmp qword [rbp - 0x10], 8
jb 0x14000a92c
mov rcx, qword [rbp - 0x28]
call fcn.14002747c
mov qword [rbp - 0x10], 7
mov qword [rbp - 0x18], r14
mov word [rbp - 0x28], r14w
cmp qword [rbp - 0x38], 8
jb 0x14000a94d
mov rcx, qword [rbp - 0x50]
call fcn.14002747c
lea rcx, [rsp + 0x38]
cmp qword [rsp + 0x50], 8
cmovae rcx, qword [rsp + 0x38]
xor edx, edx
lea r8d, [rdx + 8]
call qword [sym.imp.KERNEL32.dll_LoadLibraryExW]
mov qword [rbx], rax
test rax, rax
jne 0x14000ad92
lea rcx, str.ilocker.exe
call fcn.14000c560
mov edi, eax
cmp eax, 0xffffffff
jne 0x14000a9fc
lea rcx, str.PiClient.exe
call fcn.14000c560
mov edi, eax
cmp eax, 0xffffffff
jne 0x14000a9fc
cmp qword [rbp - 0x60], 8
jb 0x14000a9ac
mov rcx, qword [rbp - 0x78]
call fcn.14002747c
mov qword [rbp - 0x60], 7
mov qword [rbp - 0x68], r14
mov word [rbp - 0x78], r14w
cmp qword [rsp + 0x50], 8
jb 0x14000a9cf
mov rcx, qword [rsp + 0x38]
call fcn.14002747c
mov qword [rsp + 0x50], 7
mov qword [rsp + 0x48], r14
mov word [rsp + 0x38], r14w
cmp qword [rsp + 0x78], 8
jb 0x14000a9f5
mov rcx, qword [rsp + 0x60]
call fcn.14002747c
xor eax, eax
jmp 0x14000b153
mov qword [rsp + 0x28], r14
call qword [sym.imp.KERNEL32.dll_GetCurrentProcess]
mov rcx, rax
lea r8, [rsp + 0x28]
mov edx, 0x20
call qword [sym.imp.ADVAPI32.dll_OpenProcessToken]
mov rcx, qword [rsp + 0x28]
call fcn.14000b180
mov word [rbp], r14w
xor edx, edx
mov r8d, 0x7fe
lea rcx, [rbp + 2]
call fcn.14002a2d0
mov r8d, edi
xor edx, edx
mov ecx, 0x410
call qword [sym.imp.KERNEL32.dll_OpenProcess]
mov rdi, rax
test rax, rax
jne 0x14000aa9e
cmp qword [rbp - 0x60], 8
jb 0x14000aa62
mov rcx, qword [rbp - 0x78]
call fcn.14002747c
mov qword [rbp - 0x60], 7
mov qword [rbp - 0x68], r14
mov word [rbp - 0x78], r14w
cmp qword [rsp + 0x50], 8
jb 0x14000aa85
mov rcx, qword [rsp + 0x38]
call fcn.14002747c
mov qword [rsp + 0x50], 7
mov qword [rsp + 0x48], r14
mov word [rsp + 0x38], r14w
jmp 0x14000a9e3
mov r9d, 0x400
lea r8, [rbp]
xor edx, edx
mov rcx, rax
call qword [sym.imp.PSAPI.DLL_GetModuleFileNameExW]
test eax, eax
jne 0x14000aac0
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_CloseHandle]
xor eax, eax
or rsi, 0xffffffffffffffff
mov rcx, rsi
lea rdi, [rbp]
repne scasw ax, word [rdi]
not rcx
lea r8, [rcx - 1]
lea rdx, [rbp]
lea rcx, [rsp + 0x60]
call fcn.140002b50
mov word [rsp + 0x20], r15w
mov rcx, qword [rsp + 0x70]
cmp rcx, 1
jb 0x14000ab90
dec rcx
cmp rcx, rsi
mov r8, rsi
cmova rcx, rsi
lea rax, [rsp + 0x60]
cmp qword [rsp + 0x78], 8
cmovae rax, qword [rsp + 0x60]
lea rsi, [rax + rcx*2]
nop dword [rax]
cmp word [rsi], 0x5c
jne 0x14000ab5a
mov ecx, 1
lea rdx, [rsp + 0x20]
mov rdi, rsi
movzx eax, word [rdx]
cmp word [rdi], ax
jne 0x14000ab4a
add rdi, 2
add rdx, 2
dec rcx
je 0x14000ab73
jmp 0x14000ab33
mov ecx, 1
cmp word [rdi], ax
cmovb ecx, r8d
test ecx, ecx
je 0x14000ab73
lea rcx, [rsp + 0x60]
call fcn.140003070
cmp rsi, rax
je 0x14000ab8c
sub rsi, 2
or r8, 0xffffffffffffffff
jmp 0x14000ab20
lea rax, [rsp + 0x60]
cmp qword [rsp + 0x78], 8
cmovae rax, qword [rsp + 0x60]
sub rsi, rax
sar rsi, 1
jmp 0x14000ab90
or rsi, 0xffffffffffffffff
mov r9, rsi
xor r8d, r8d
lea rdx, [rbp - 0x28]
lea rcx, [rsp + 0x60]
call fcn.1400031d0
mov rdi, rax
lea rax, [rbp - 0x78]
cmp rax, rdi
je 0x14000ac12
cmp qword [rbp - 0x60], 8
jb 0x14000abc0
mov rcx, qword [rbp - 0x78]
call fcn.14002747c
mov qword [rbp - 0x60], 7
mov qword [rbp - 0x68], r14
mov word [rbp - 0x78], r14w
cmp qword [rdi + 0x18], 8
jae 0x14000abf0
mov r8, qword [rdi + 0x10]
inc r8
add r8, r8
mov rdx, rdi
lea rcx, [rbp - 0x78]
call fcn.140027770
jmp 0x14000abfa
mov rax, qword [rdi]
mov qword [rbp - 0x78], rax
mov qword [rdi], r14
mov rax, qword [rdi + 0x10]
mov qword [rbp - 0x68], rax
mov rax, qword [rdi + 0x18]
mov qword [rbp - 0x60], rax
mov qword [rdi + 0x10], r14
mov qword [rdi + 0x18], r14
cmp qword [rbp - 0x10], 8
jb 0x14000ac22
mov rcx, qword [rbp - 0x28]
call fcn.14002747c
mov qword [rbp - 0x38], 7
mov qword [rbp - 0x40], r14
mov word [rbp - 0x50], r14w
mov r8d, 0xd
lea rdx, str.DongleX64.dll
lea rcx, [rbp - 0x50]
call fcn.140002b50
nop
lea r8, [rbp - 0x50]
lea rdx, [rbp - 0x78]
lea rcx, [rbp - 0x28]
call fcn.140014680
mov rdi, rax
lea rax, [rsp + 0x38]
cmp rax, rdi
je 0x14000acd3
cmp qword [rsp + 0x50], 8
jb 0x14000ac7a
mov rcx, qword [rsp + 0x38]
call fcn.14002747c
mov qword [rsp + 0x50], 7
mov qword [rsp + 0x48], r14
mov word [rsp + 0x38], r14w
cmp qword [rdi + 0x18], 8
jae 0x14000acae
mov r8, qword [rdi + 0x10]
inc r8
add r8, r8
mov rdx, rdi
lea rcx, [rsp + 0x38]
call fcn.140027770
jmp 0x14000acb9
mov rax, qword [rdi]
mov qword [rsp + 0x38], rax
mov qword [rdi], r14
mov rax, qword [rdi + 0x10]
mov qword [rsp + 0x48], rax
mov rax, qword [rdi + 0x18]
mov qword [rsp + 0x50], rax
mov qword [rdi + 0x10], r14
mov qword [rdi + 0x18], r14
cmp qword [rbp - 0x10], 8
jb 0x14000ace3
mov rcx, qword [rbp - 0x28]
call fcn.14002747c
mov qword [rbp - 0x10], 7
mov qword [rbp - 0x18], r14
mov word [rbp - 0x28], r14w
cmp qword [rbp - 0x38], 8
jb 0x14000ad04
mov rcx, qword [rbp - 0x50]
call fcn.14002747c
lea rcx, [rsp + 0x38]
cmp qword [rsp + 0x50], 8
cmovae rcx, qword [rsp + 0x38]
xor edx, edx
lea r8d, [rdx + 8]
call qword [sym.imp.KERNEL32.dll_LoadLibraryExW]
mov qword [rbx], rax
test rax, rax
jne 0x14000ad92
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r8d, eax
lea rdx, [0x140055e10]
lea rcx, [rbp + 0x800]
call fcn.1400058d0
nop
cmp qword [rbp - 0x60], 8
jb 0x14000ad56
mov rcx, qword [rbp - 0x78]
call fcn.14002747c
mov qword [rbp - 0x60], 7
mov qword [rbp - 0x68], r14
mov word [rbp - 0x78], r14w
cmp qword [rsp + 0x50], 8
jb 0x14000ad79
mov rcx, qword [rsp + 0x38]
call fcn.14002747c
mov qword [rsp + 0x50], 7
mov qword [rsp + 0x48], r14
mov word [rsp + 0x38], r14w
jmp 0x14000a9e3
cmp qword [rbp - 0x60], 8
jb 0x14000ada2
mov rcx, qword [rbp - 0x78]
call fcn.14002747c
lea rdx, str.Dongle_ChangePIN
mov rcx, qword [rbx]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rbx + 0x40], rax
test rax, rax
jne 0x14000ade6
cmp qword [rsp + 0x50], 8
jb 0x14000adcd
mov rcx, qword [rsp + 0x38]
call fcn.14002747c
mov qword [rsp + 0x50], 7
mov qword [rsp + 0x48], r14
mov word [rsp + 0x38], r14w
jmp 0x14000a9e3
lea rdx, str.Dongle_Enum
mov rcx, qword [rbx]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rbx + 8], rax
test rax, rax
jne 0x14000ae2a
cmp qword [rsp + 0x50], 8
jb 0x14000ae11
mov rcx, qword [rsp + 0x38]
call fcn.14002747c
mov qword [rsp + 0x50], 7
mov qword [rsp + 0x48], r14
mov word [rsp + 0x38], r14w
jmp 0x14000a9e3
lea rdx, str.Dongle_Open
mov rcx, qword [rbx]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rbx + 0x10], rax
test rax, rax
jne 0x14000ae6e
cmp qword [rsp + 0x50], 8
jb 0x14000ae55
mov rcx, qword [rsp + 0x38]
call fcn.14002747c
mov qword [rsp + 0x50], 7
mov qword [rsp + 0x48], r14
mov word [rsp + 0x38], r14w
jmp 0x14000a9e3
lea rdx, str.Dongle_LEDControl
mov rcx, qword [rbx]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rbx + 0x18], rax
test rax, rax
jne 0x14000aeb2
cmp qword [rsp + 0x50], 8
jb 0x14000ae99
mov rcx, qword [rsp + 0x38]
call fcn.14002747c
mov qword [rsp + 0x50], 7
mov qword [rsp + 0x48], r14
mov word [rsp + 0x38], r14w
jmp 0x14000a9e3
lea rdx, str.Dongle_Close
mov rcx, qword [rbx]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rbx + 0x20], rax
test rax, rax
jne 0x14000aef6
cmp qword [rsp + 0x50], 8
jb 0x14000aedd
mov rcx, qword [rsp + 0x38]
call fcn.14002747c
mov qword [rsp + 0x50], 7
mov qword [rsp + 0x48], r14
mov word [rsp + 0x38], r14w
jmp 0x14000a9e3
lea rdx, str.Dongle_GenUniqueKey
mov rcx, qword [rbx]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rbx + 0x28], rax
test rax, rax
jne 0x14000af3a
cmp qword [rsp + 0x50], 8
jb 0x14000af21
mov rcx, qword [rsp + 0x38]
call fcn.14002747c
mov qword [rsp + 0x50], 7
mov qword [rsp + 0x48], r14
mov word [rsp + 0x38], r14w
jmp 0x14000a9e3
lea rdx, str.Dongle_GetUTCTime
mov rcx, qword [rbx]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rbx + 0x30], rax
test rax, rax
jne 0x14000af7e
cmp qword [rsp + 0x50], 8
jb 0x14000af65
mov rcx, qword [rsp + 0x38]
call fcn.14002747c
mov qword [rsp + 0x50], 7
mov qword [rsp + 0x48], r14
mov word [rsp + 0x38], r14w
jmp 0x14000a9e3
lea rdx, str.Dongle_CreateFile
mov rcx, qword [rbx]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rbx + 0x38], rax
test rax, rax
jne 0x14000afc2
cmp qword [rsp + 0x50], 8
jb 0x14000afa9
mov rcx, qword [rsp + 0x38]
call fcn.14002747c
mov qword [rsp + 0x50], 7
mov qword [rsp + 0x48], r14
mov word [rsp + 0x38], r14w
jmp 0x14000a9e3
lea rdx, str.Dongle_DeleteFile
mov rcx, qword [rbx]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rbx + 0x48], rax
test rax, rax
jne 0x14000b006
cmp qword [rsp + 0x50], 8
jb 0x14000afed
mov rcx, qword [rsp + 0x38]
call fcn.14002747c
mov qword [rsp + 0x50], 7
mov qword [rsp + 0x48], r14
mov word [rsp + 0x38], r14w
jmp 0x14000a9e3
lea rdx, str.Dongle_ReadFile
mov rcx, qword [rbx]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rbx + 0x50], rax
test rax, rax
jne 0x14000b04a
cmp qword [rsp + 0x50], 8
jb 0x14000b031
mov rcx, qword [rsp + 0x38]
call fcn.14002747c
mov qword [rsp + 0x50], 7
mov qword [rsp + 0x48], r14
mov word [rsp + 0x38], r14w
jmp 0x14000a9e3
lea rdx, str.Dongle_ResetUserPIN
mov rcx, qword [rbx]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rbx + 0x58], rax
test rax, rax
jne 0x14000b08e
cmp qword [rsp + 0x50], 8
jb 0x14000b075
mov rcx, qword [rsp + 0x38]
call fcn.14002747c
mov qword [rsp + 0x50], 7
mov qword [rsp + 0x48], r14
mov word [rsp + 0x38], r14w
jmp 0x14000a9e3
lea rdx, str.Dongle_VerifyPIN
mov rcx, qword [rbx]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rbx + 0x60], rax
test rax, rax
jne 0x14000b0d2
cmp qword [rsp + 0x50], 8
jb 0x14000b0b9
mov rcx, qword [rsp + 0x38]
call fcn.14002747c
mov qword [rsp + 0x50], 7
mov qword [rsp + 0x48], r14
mov word [rsp + 0x38], r14w
jmp 0x14000a9e3
lea rdx, str.Dongle_WriteFile
mov rcx, qword [rbx]
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rbx + 0x68], rax
test rax, rax
jne 0x14000b116
cmp qword [rsp + 0x50], 8
jb 0x14000b0fd
mov rcx, qword [rsp + 0x38]
call fcn.14002747c
mov qword [rsp + 0x50], 7
mov qword [rsp + 0x48], r14
mov word [rsp + 0x38], r14w
jmp 0x14000a9e3
cmp qword [rsp + 0x50], 8
jb 0x14000b128
mov rcx, qword [rsp + 0x38]
call fcn.14002747c
mov qword [rsp + 0x50], 7
mov qword [rsp + 0x48], r14
mov word [rsp + 0x38], r14w
cmp qword [rsp + 0x78], 8
jb 0x14000b14e
mov rcx, qword [rsp + 0x60]
call fcn.14002747c
mov eax, 1
mov rcx, qword [rbp + 0x1000]
xor rcx, rsp
call fcn.1400274a0
mov rbx, qword [rsp + 0x1150]
add rsp, 0x1110
pop r15
pop r14
pop rdi
pop rsi
pop rbp
ret