Function at 0x14009f86c
Capabilities:
Check for time delay via gettickcount
Encode data using xor

Disassembly:
test rcx, rcx
je 0x1400a036b
mov rax, rsp
mov dword [rax + 0x20], r9d
mov qword [rax + 0x18], r8
mov qword [rax + 0x10], rdx
mov qword [rax + 8], rcx
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x58]
sub rsp, 0x158
movsxd r14, r9d
mov rsi, r8
mov r12, rdx
mov rbx, rcx
xor edi, edi
mov r15d, r14d
mov eax, dword [rbp + 0xc0]
mov dword [rsp + 0x70], eax
imul r15d, eax
mov byte [rsp + 0x61], dil
test r9d, r9d
je 0x1400a0358
test eax, eax
je 0x1400a0358
mov byte [rcx + 0x1c3c], dil
xor edx, edx
mov rcx, qword [rcx + 0x58]
call fcn.1400b0590
cmp dword [rbx + 0x1b50], edi
jne 0x14009f905
xor edx, edx
mov rcx, qword [rbx + 0x58]
call fcn.1400b2290
test al, al
je 0x14009f905
mov byte [rsp + 0x62], 1
jmp 0x14009f91c
mov byte [rsp + 0x62], dil
cmp dword [rbx + 0x1c58], edi
je 0x14009f91c
xor edx, edx
mov rcx, rbx
call fcn.1400a6fc8
xor edx, edx
mov rcx, qword [rbx + 0x58]
call fcn.1400af5c0
mov edx, eax
mov rcx, qword [0x14021c740]
call fcn.14007d0e0
mov rdi, rax
mov rcx, rax
call fcn.1400cb3a0
mov r13b, al
mov rcx, qword [rbx + 0x58]
mov rdx, qword [rcx]
mov al, byte [rdx + 0x1604]
mov byte [rsp + 0x60], al
lea r9, [rbp - 0x60]
lea r8, [rbp - 0x18]
mov rdx, rdi
mov rcx, rbx
call fcn.1400a477c
lea rcx, [rbp]
call fcn.1401277b4
nop
lea rdx, [rbx + 0x1a80]
or r9d, 0xffffffff
xor r8d, r8d
lea rcx, [rbp]
call fcn.1401279e0
lea rdx, [rbx + 0x1bec]
lea rcx, [rbp + 0x30]
call fcn.14012b4fc
nop
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [rbx + 0x1be4], eax
mov rcx, qword [rbx + 0x58]
xor r8d, r8d
test rcx, rcx
je 0x14009f9be
mov al, byte [rcx + 0x22]
and al, 0xf
mov cl, byte [rcx + 0x21]
and cl, 0xf
jmp 0x14009f9c3
mov al, r8b
mov cl, 7
shl al, 4
or al, cl
movzx eax, al
lea rcx, [rax + rax*2]
mov rdi, qword [rbp - 0x60]
movups xmm0, xmmword [rdi + rcx*8]
movups xmmword [rbp - 0x50], xmm0
movsd xmm1, qword [rdi + rcx*8 + 0x10]
movsd qword [rbp - 0x80], xmm1
mov qword [rsp + 0x78], rsi
mov eax, dword [rbx]
sub eax, 2
mov r10d, 0x20
cmp eax, 3
jbe 0x14009fbc7
lea rax, vtable.CRefGuard_class_CRConData_.0
mov qword [rbp - 0x40], rax
xor r12d, r12d
mov qword [rbp - 0x38], r12
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [rbp - 0x30], eax
lea rax, vtable.CRConDataGuard.0
mov qword [rbp - 0x40], rax
lea rdx, [rbp - 0x40]
mov rcx, rbx
call fcn.1400a0568
test al, al
je 0x14009fb02
cmp byte [rbx + 0x1c00], r12b
je 0x14009fb02
xor edx, edx
lea rcx, [rbp - 0x40]
call fcn.14009b4c0
test al, al
je 0x14009fb02
mov byte [rsp + 0x61], 1
cmp byte [rsp + 0x62], r12b
je 0x14009fa94
mov rax, qword [rbx + 0x58]
cmp qword [rax + 0x4270], rbx
jne 0x14009fa94
xor r9d, r9d
mov r8b, 1
xor edx, edx
mov rcx, qword [0x14021c5d8]
call fcn.140027a18
test al, al
je 0x14009fa94
xor edx, edx
mov rcx, rbx
call fcn.1400a5598
movups xmm0, xmmword [rbp - 0x50]
movaps xmmword [rbp + 0x10], xmm0
movsd xmm1, qword [rbp - 0x80]
movsd qword [rbp + 0x20], xmm1
mov byte [rsp + 0x50], r13b
mov al, byte [rsp + 0x60]
mov byte [rsp + 0x48], al
mov rax, qword [rbp - 0x18]
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x38], rdi
lea rax, [rbp + 0x10]
mov qword [rsp + 0x30], rax
mov eax, 0x20
mov word [rsp + 0x28], ax
mov ecx, dword [rsp + 0x70]
mov dword [rsp + 0x20], ecx
mov r9d, r14d
mov r8, qword [rbp + 0xb0]
mov rdx, qword [rbp + 0xa8]
mov rcx, qword [rbp - 0x38]
call fcn.14009ad30
mov r13d, eax
mov r15d, eax
imul r15d, r14d
jmp 0x14009fb62
mov r13d, dword [rsp + 0x70]
xor edx, edx
lea rcx, [rbp - 0x40]
call fcn.14009b4c0
mov edx, r15d
test r15d, r15d
je 0x14009fb62
mov eax, 0x20
movzx eax, ax
mov rdi, qword [rbp + 0xa8]
mov ecx, edx
rep stosw word [rdi], ax
movups xmm0, xmmword [rbp - 0x50]
mov rsi, qword [rbp + 0xb0]
movups xmmword [rsi], xmm0
movsd xmm1, qword [rbp - 0x80]
movsd qword [rsi + 0x10], xmm1
lea rax, [r15 + r15*2]
lea rcx, [rax*8 - 0x18]
shr rcx, 3
lea rdi, [rsi + 0x18]
rep movsq qword [rdi], qword [rsi]
mov rsi, qword [rsp + 0x78]
movsxd rax, r15d
mov r15, qword [rbp + 0xa8]
lea r12, [r15 + rax*2]
lea rax, vtable.CRefGuard_class_CRConData_.0
mov qword [rbp - 0x40], rax
mov rcx, qword [rbp - 0x38]
xor r8d, r8d
test rcx, rcx
je 0x14009fbae
mov eax, dword [rcx + 8]
mov edx, 0x7fffffff
cmp eax, edx
je 0x14009fbae
lock dec dword [rcx + 8]
mov eax, dword [rcx + 8]
test eax, eax
jg 0x14009fbab
mov dword [rcx + 8], edx
mov rax, qword [rcx]
call qword [rax]
xor r8d, r8d
jmp 0x14009fbae
mov eax, dword [rcx + 8]
movups xmm0, xmmword [rbp - 0x50]
movsd xmm1, qword [rbp - 0x80]
mov r11d, dword [rsp + 0x70]
mov r10d, 0x20
jmp 0x14009fe1e
mov byte [rsp + 0x61], 1
movsx edx, word [rbx + 0x1cc8]
mov edi, r14d
cmp edx, r14d
cmovl edi, edx
mov dword [rsp + 0x74], edi
movsx ecx, word [rbx + 0x1bac]
movsx eax, word [rbx + 0x1cca]
sub eax, ecx
mov r11d, dword [rsp + 0x70]
mov r13d, r11d
cmp eax, r11d
cmovl r13d, eax
mov dword [rsp + 0x68], r13d
imul edx, ecx
movsxd rdx, edx
movsx rax, word [rbx + 0x1baa]
add rdx, rax
mov rax, qword [rbx + 0x1cd8]
lea r9, [rax + rdx*2]
mov qword [rbp - 0x20], r9
lea rcx, [rdx + rdx*2]
mov rax, qword [rbx + 0x1ce0]
lea rax, [rax + rcx*8]
mov qword [rbp - 0x70], rax
test r13d, r13d
jle 0x14009fe17
movsxd r15, edi
mov qword [rbp - 0x28], r15
lea rdx, [r15 + r15]
lea rdi, [r15 + r15*2]
shl rdi, 3
mov qword [rbp - 0x58], rdi
lea rcx, [r14 + r14]
mov qword [rbp - 0x10], rcx
lea rax, [r14 + r14*2]
shl rax, 3
mov qword [rbp - 8], rax
mov eax, r13d
mov qword [rbp - 0x60], rax
mov r13d, dword [rsp + 0x74]
mov r8, rdx
mov rdx, r9
mov rcx, r12
call fcn.14013b6b0
mov r8, rdi
mov rdx, qword [rbp - 0x70]
mov rcx, rsi
call fcn.14013b6b0
mov esi, r13d
xor eax, eax
mov qword [rbp - 0x68], rax
test r15, r15
jle 0x14009fd10
mov rdi, qword [rsp + 0x78]
add rdi, 8
mov r14d, eax
xor ebx, ebx
mov eax, esi
dec esi
test eax, eax
jle 0x14009fd02
mov byte [rdi - 1], bl
test esi, esi
setg byte [rsp + 0x60]
movsxd rax, r14d
lea rcx, [r12 + rax*2]
lea rdx, [rsp + 0x60]
call fcn.14012b6d4
mov ecx, eax
call fcn.140134e00
test eax, eax
je 0x14009fce8
cmp eax, 2
jne 0x14009fceb
or byte [rdi], 4
jmp 0x14009fceb
or byte [rdi], 2
inc r14d
mov rcx, qword [rbp - 0x68]
inc rcx
mov qword [rbp - 0x68], rcx
add rdi, 0x18
cmp rcx, r15
jl 0x14009fcb0
mov rbx, qword [rbp + 0xa0]
mov r14d, dword [rbp + 0xb8]
cmp r14d, r13d
jle 0x14009fdb4
lea rdi, [r12 + r15*2]
mov eax, r14d
sub eax, r13d
movsxd rcx, eax
mov r15d, r14d
mov esi, r13d
je 0x14009fd39
mov eax, 0x20
movzx eax, ax
rep stosw word [rdi], ax
mov rax, qword [rbp - 0x28]
lea rdi, [rax*2 + 1]
mov rcx, qword [rsp + 0x78]
add rdi, rax
lea rdi, [rcx + rdi*8]
mov eax, r15d
dec r15d
test eax, eax
jle 0x14009fda9
movups xmm0, xmmword [rbp - 0x50]
movups xmmword [rdi - 8], xmm0
movsd xmm0, qword [rbp - 0x80]
movsd qword [rdi + 8], xmm0
test r15d, r15d
setg byte [rsp + 0x60]
movsxd rax, esi
lea rcx, [r12 + rax*2]
lea rdx, [rsp + 0x60]
call fcn.14012b6d4
mov ecx, eax
call fcn.140134e00
test eax, eax
je 0x14009fd9b
cmp eax, 2
jne 0x14009fd9e
or byte [rdi], 4
jmp 0x14009fd9e
or byte [rdi], 2
inc esi
add rdi, 0x18
cmp esi, r14d
jl 0x14009fd51
mov rbx, qword [rbp + 0xa0]
mov r15, qword [rbp - 0x28]
add r12, qword [rbp - 0x10]
mov rsi, qword [rsp + 0x78]
add rsi, qword [rbp - 8]
mov qword [rsp + 0x78], rsi
movsx rax, word [rbx + 0x1cc8]
mov r9, qword [rbp - 0x20]
lea r9, [r9 + rax*2]
mov qword [rbp - 0x20], r9
lea rax, [rax + rax*2]
mov rcx, qword [rbp - 0x70]
lea rcx, [rcx + rax*8]
mov qword [rbp - 0x70], rcx
sub qword [rbp - 0x60], 1
mov rdi, qword [rbp - 0x58]
lea rdx, [r15 + r15]
jne 0x14009fc77
movups xmm0, xmmword [rbp - 0x50]
movsd xmm1, qword [rbp - 0x80]
mov r13d, dword [rsp + 0x68]
mov r11d, dword [rsp + 0x70]
xor r8d, r8d
lea r10d, [r8 + 0x20]
mov r15, qword [rbp + 0xa8]
mov eax, r13d
imul eax, r14d
movsxd rdx, eax
mov rcx, r8
test eax, eax
je 0x14009fe53
cmp word [r15 + rcx*2], r10w
jae 0x14009fe4b
movzx eax, word [r15 + rcx*2]
lea rdi, [0x1401b32b0]
movzx eax, word [rdi + rax*2]
mov word [r15 + rcx*2], ax
inc rcx
cmp rcx, rdx
jb 0x14009fe2f
cmp r13d, r11d
jge 0x14009fecb
movsxd rdx, r14d
lea r10, [rdx + rdx]
lea r8, [rdx + rdx*2]
shl r8, 3
mov r9d, r11d
sub r9d, r13d
mov r15d, 0x20
movzx eax, r15w
mov rdi, r12
mov rcx, rdx
rep stosw word [rdi], ax
add r12, r10
test r14d, r14d
jle 0x14009feaf
movups xmmword [rsi], xmm0
movsd qword [rsi + 0x10], xmm1
mov eax, r14d
lea rcx, [rax + rax*2]
lea rcx, [rcx*8 - 0x18]
shr rcx, 3
lea rdi, [rsi + 0x18]
rep movsq qword [rdi], qword [rsi]
mov rsi, qword [rsp + 0x78]
add rsi, r8
mov qword [rsp + 0x78], rsi
sub r9, 1
movups xmm0, xmmword [rbp - 0x50]
jne 0x14009fe73
mov r15, qword [rbp + 0xa8]
xor r8d, r8d
mov word [r12], r8w
mov rdi, qword [rbp + 0xc8]
xor r12d, r12d
cmp byte [rsp + 0x62], r12b
je 0x14009ff36
cmp dword [rbx + 0x1c58], r12d
je 0x14009ff36
mov byte [rsp + 0x20], r12b
mov r9b, 1
mov r8d, dword [rbx + 0x1c50]
lea rdx, [rbp - 0x80]
mov rcx, rbx
call fcn.14009cbf0
mov ecx, dword [rax]
mov dword [rdi], ecx
mov byte [rsp + 0x20], r12b
mov r9b, 1
mov r8d, dword [rbx + 0x1c54]
lea rdx, [rbp - 0x70]
mov rcx, rbx
call fcn.14009cbf0
mov ecx, dword [rax]
mov dword [rdi + 4], ecx
mov eax, dword [rbx + 0x1c58]
mov r11d, dword [rsp + 0x70]
jmp 0x14009ff39
mov eax, r12d
mov dword [rdi + 8], eax
mov rsi, qword [rbp + 0xb0]
cmp byte [rsp + 0x61], r12b
je 0x1400a0254
mov dword [rsp + 0x20], r11d
mov r9d, r14d
mov r8, rsi
mov rdx, r15
mov rcx, rbx
call fcn.1400a487c
lea rcx, [rbx + 0x60]
call fcn.140136dd8
cmp dword [rbx + 0x1a58], eax
je 0x14009ffc8
cmp dword [rbx], 1
jne 0x14009ff82
mov rcx, rbx
call fcn.14009f2a4
xor edx, edx
mov rcx, qword [rbx + 0x58]
call fcn.1400c2d6c
test al, al
je 0x14009ffb9
mov rcx, qword [rbx + 0x58]
cmp rbx, qword [rcx + 0x4270]
jne 0x14009ffb9
call fcn.1400b16a4
mov rcx, rax
or rax, 0xffffffffffffffff
mov r9, rax
mov r8, rax
lea edx, [rax + 0x21]
call qword [sym.imp.USER32.dll_PostMessageW]
lea rcx, [rbx + 0x60]
call fcn.140136dd8
mov dword [rbx + 0x1a58], eax
mov r13d, dword [rbx + 0x1b50]
test r13d, r13d
je 0x1400a0254
shr r13d, 9
and r13b, 1
movsx edx, word [rbx + 0x1b5a]
movsx ecx, word [rbx + 0x1b58]
call fcn.140127664
mov dword [rsp + 0x68], eax
movzx r15d, ax
cmp byte [rbx + 0x1c24], r12b
movzx r12d, word [rsp + 0x6a]
je 0x1400a001a
sub r15w, word [rbx + 0x1baa]
sub r12w, word [rbx + 0x1bac]
movsx edx, word [rbx + 0x1b5e]
movsx ecx, word [rbx + 0x1b5c]
call fcn.140127664
mov dword [rsp + 0x68], eax
xor edx, edx
movzx esi, word [rsp + 0x68]
movzx ecx, word [rbx + 0x1bac]
mov word [rsp + 0x62], cx
cmp byte [rbx + 0x1c24], dl
je 0x1400a0061
sub si, word [rbx + 0x1baa]
mov word [rsp + 0x68], si
sub word [rsp + 0x6a], cx
mov eax, dword [rsp + 0x68]
movzx ecx, word [rbx + 0x1b5a]
mov word [rbp - 0x78], cx
movzx ecx, word [rbx + 0x1b5e]
mov word [rsp + 0x68], cx
movzx ecx, word [rbx + 0x1bb0]
mov word [rbp - 0x76], cx
shr eax, 0x10
lea r9d, [r14 - 1]
mov dword [rbp - 0x68], r9d
test r15w, r15w
jns 0x1400a009a
movzx r15d, dx
jmp 0x1400a00a3
cmp r15w, r9w
cmovg r15w, r9w
test si, si
jns 0x1400a00ad
movzx esi, dx
jmp 0x1400a00b6
cmp si, r9w
cmovg si, r9w
mov rcx, qword [0x14021c740]
movzx edx, byte [rcx + 0x11032]
mov cl, dl
and cl, 0xf
mov byte [rsp + 0x60], cl
mov cl, dl
shr cl, 4
mov byte [rsp + 0x61], cl
lea rdi, [rdx + rdx*2]
mov rcx, qword [rbx + 0x58]
mov rdx, qword [rcx + 0x4280]
mov r10d, dword [rdx + rdi*8 + 0x10]
mov dword [rsp + 0x78], r10d
mov r11d, dword [rdx + rdi*8 + 0x14]
mov dword [rbp - 0x70], r11d
movsx ecx, r12w
mov dword [rsp + 0x74], ecx
mov edx, ecx
xor r12d, r12d
test ecx, ecx
cmovs edx, r12d
mov ecx, dword [rsp + 0x70]
dec ecx
movsx r8d, ax
mov dword [rbp - 0x80], r8d
mov eax, r8d
cmp ecx, r8d
cmovl eax, ecx
mov dword [rsp + 0x70], eax
cmp edx, eax
jg 0x1400a024d
mov eax, edx
imul eax, r14d
movsxd r12, eax
movsxd rax, r14d
mov qword [rbp - 0x58], rax
movzx r14d, word [rsp + 0x62]
mov ebx, dword [rsp + 0x74]
xor eax, eax
test r13b, r13b
jne 0x1400a0158
movsx edi, r15w
movsx ecx, si
jmp 0x1400a017f
cmp edx, ebx
jne 0x1400a0167
cmp word [rbp - 0x78], r14w
movsx edi, r15w
jge 0x1400a0169
mov edi, eax
cmp edx, r8d
jne 0x1400a017c
movzx eax, word [rbp - 0x76]
cmp word [rsp + 0x68], ax
movsx ecx, si
jle 0x1400a017f
mov ecx, r9d
movsxd rax, edi
add rax, r12
lea rax, [rax + rax*2]
mov r8, qword [rbp + 0xb0]
lea r8, [r8 + rax*8]
cmp edi, ecx
jg 0x1400a0228
mov ebx, 0xffffff
and r10d, ebx
and r11d, ebx
sub ecx, edi
inc ecx
mov dil, byte [rsp + 0x60]
mov r14b, byte [rsp + 0x61]
xor r9d, r9d
mov eax, dword [r8 + 0xc]
and eax, 0xff000000
or eax, r10d
mov dword [r8 + 0xc], eax
and dword [r8], 0xff000000
and eax, ebx
or dword [r8], eax
mov eax, dword [r8 + 0x10]
and eax, 0xff000000
or eax, r11d
mov dword [r8 + 0x10], eax
xor eax, dword [r8 + 4]
and eax, ebx
xor eax, dword [r8 + 4]
mov dword [r8 + 4], eax
mov byte [r8 + 9], dil
mov byte [r8 + 0xa], r14b
shr eax, 0x18
and al, 0xef
mov byte [r8 + 7], al
mov byte [r8 + 3], r9b
lea r8, [r8 + 0x18]
sub rcx, 1
jne 0x1400a01b8
mov r9d, dword [rbp - 0x68]
movzx r14d, word [rsp + 0x62]
mov ebx, dword [rsp + 0x74]
mov r10d, dword [rsp + 0x78]
mov r11d, dword [rbp - 0x70]
inc edx
add r12, qword [rbp - 0x58]
cmp edx, dword [rsp + 0x70]
mov r8d, dword [rbp - 0x80]
jle 0x1400a0148
mov rbx, qword [rbp + 0xa0]
mov r14d, dword [rbp + 0xb8]
xor r12d, r12d
mov rsi, qword [rbp + 0xb0]
mov rcx, qword [rbx + 0x58]
cmp word [rcx + 0x534], r12w
je 0x1400a032f
test byte [rcx + 0x530], 4
je 0x1400a032f
mov rax, qword [0x14021c740]
cmp byte [rax + 0x1108c], r12b
je 0x1400a02a5
mov dl, 1
call fcn.1400c2d6c
test al, al
je 0x1400a032f
xor edx, edx
mov rcx, qword [rbx + 0x58]
call fcn.1400c2d6c
test al, al
jne 0x1400a032f
mov rdx, qword [rbx + 0x58]
add rdx, 0x534
or r15, 0xffffffffffffffff
inc r15
cmp word [rdx + r15*2], r12w
jne 0x1400a02b4
movsxd rax, r15d
lea rdi, [rax + rax]
mov r8, rdi
mov r12, qword [rbp + 0xa8]
mov rcx, r12
call fcn.14013b6b0
cmp r14d, r15d
jle 0x1400a02f5
add rdi, r12
mov eax, r14d
sub eax, r15d
movsxd rcx, eax
je 0x1400a02f5
mov eax, 0x20
movzx eax, ax
rep stosw word [rdi], ax
mov rax, qword [rbp - 0x18]
test r14d, r14d
jle 0x1400a032f
movups xmm0, xmmword [rax + 0xa8]
movups xmmword [rsi], xmm0
movsd xmm1, qword [rax + 0xb8]
movsd qword [rsi + 0x10], xmm1
mov eax, r14d
lea rcx, [rax + rax*2]
lea rcx, [rcx*8 - 0x18]
shr rcx, 3
lea rdi, [rsi + 0x18]
rep movsq qword [rdi], qword [rsi]
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [rbx + 0x1be8], eax
lea rcx, [rbp]
call fcn.140127ca8
nop
lea rcx, [rbp + 0x30]
call fcn.14012b530
nop
lea rcx, [rbp]
call fcn.14012782c
add rsp, 0x158
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret