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

Disassembly:
test rcx, rcx
je 0x140097cf8
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 r12, rdx
mov rbx, rcx
xor edi, edi
mov r15d, r14d
mov r13d, dword [rbp + 0xc0]
mov dword [rsp + 0x70], r13d
imul r15d, r13d
mov byte [rsp + 0x62], dil
test r9d, r9d
je 0x140097ce5
test r13d, r13d
je 0x140097ce5
mov byte [rcx + 0x1c34], dil
xor edx, edx
mov rcx, qword [rcx + 0x58]
call fcn.1400a6b88
cmp dword [rbx + 0x1b50], edi
jne 0x1400972f1
xor edx, edx
mov rcx, qword [rbx + 0x58]
call fcn.1400a8ec4
test al, al
je 0x1400972f1
mov byte [rsp + 0x61], 1
jmp 0x140097308
mov byte [rsp + 0x61], dil
cmp dword [rbx + 0x1c50], edi
je 0x140097308
xor edx, edx
mov rcx, rbx
call fcn.14009e3a0
xor edx, edx
mov rcx, qword [rbx + 0x58]
call fcn.1400a5bd4
mov edx, eax
mov rcx, qword [0x14022ab50]
call fcn.140074c74
mov rdi, rax
mov rcx, rax
call fcn.1400c12e4
mov sil, al
mov rcx, qword [rbx + 0x58]
mov rdx, qword [rcx]
mov al, byte [rdx + 0x1604]
mov byte [rsp + 0x60], al
lea r9, [rbp - 0x58]
lea r8, [rbp - 0x20]
mov rdx, rdi
mov rcx, rbx
call fcn.14009bc38
lea rcx, [rbp]
call fcn.14011a6a4
nop
lea rdx, [rbx + 0x1a80]
or r9d, 0xffffffff
xor r8d, r8d
lea rcx, [rbp]
call fcn.14011a8d0
lea rdx, [rbx + 0x1be4]
lea rcx, [rbp + 0x30]
call fcn.14011dbbc
nop
call qword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [rbx + 0x1bdc], eax
mov rcx, qword [rbx + 0x58]
xor r8d, r8d
test rcx, rcx
je 0x1400973aa
mov al, byte [rcx + 0x22]
and al, 0xf
mov cl, byte [rcx + 0x21]
and cl, 0xf
jmp 0x1400973af
mov al, r8b
mov cl, 7
shl al, 4
or al, cl
movzx eax, al
lea rcx, [rax + rax*2]
mov rdi, qword [rbp - 0x58]
movups xmm0, xmmword [rdi + rcx*8]
movups xmmword [rbp - 0x50], xmm0
movsd xmm1, qword [rdi + rcx*8 + 0x10]
movsd qword [rbp - 0x80], xmm1
mov r11, qword [rbp + 0xb0]
mov qword [rsp + 0x78], r11
mov eax, dword [rbx]
sub eax, 2
cmp eax, 3
jbe 0x1400975a5
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.140097ef8
test al, al
je 0x1400974f0
cmp byte [rbx + 0x1bf8], r12b
je 0x1400974f0
xor edx, edx
lea rcx, [rbp - 0x40]
call fcn.140093000
test al, al
je 0x1400974f0
mov byte [rsp + 0x62], 1
cmp byte [rsp + 0x61], r12b
je 0x140097481
mov rax, qword [rbx + 0x58]
cmp qword [rax + 0x4268], rbx
jne 0x140097481
xor r9d, r9d
mov r8b, 1
xor edx, edx
mov rcx, qword [0x14022a9e0]
call fcn.1400264d4
test al, al
je 0x140097481
xor edx, edx
mov rcx, rbx
call fcn.14009c9c8
movups xmm0, xmmword [rbp - 0x50]
movaps xmmword [rbp + 0x10], xmm0
movsd xmm1, qword [rbp - 0x80]
movsd qword [rbp + 0x20], xmm1
mov byte [rsp + 0x50], sil
mov al, byte [rsp + 0x60]
mov byte [rsp + 0x48], al
mov rax, qword [rbp - 0x20]
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 dword [rsp + 0x20], r13d
mov r9d, r14d
mov r8, qword [rbp + 0xb0]
mov r12, qword [rbp + 0xa8]
mov rdx, r12
mov rcx, qword [rbp - 0x38]
call fcn.140092878
mov dword [rsp + 0x74], eax
mov r15d, eax
imul r15d, r14d
jmp 0x14009754e
mov dword [rsp + 0x74], r13d
xor edx, edx
lea rcx, [rbp - 0x40]
call fcn.140093000
mov edx, r15d
mov r12, qword [rbp + 0xa8]
test r15d, r15d
je 0x14009754e
mov eax, 0x20
movzx eax, ax
mov rdi, r12
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]
movsxd rax, r15d
lea r12, [r12 + rax*2]
lea rax, vtable.CRefGuard_class_CRConData_.0
mov qword [rbp - 0x40], rax
mov rcx, qword [rbp - 0x38]
test rcx, rcx
je 0x1400975a0
mov eax, dword [rcx + 8]
mov edx, 0x7fffffff
cmp eax, edx
je 0x14009758d
lock dec dword [rcx + 8]
mov eax, dword [rcx + 8]
test eax, eax
jg 0x14009758a
mov dword [rcx + 8], edx
mov rax, qword [rcx]
call qword [rax]
jmp 0x14009758d
mov eax, dword [rcx + 8]
mov r13d, dword [rbp + 0xc0]
mov dword [rsp + 0x70], r13d
mov r14d, dword [rbp + 0xb8]
jmp 0x1400977d4
mov r15b, 1
mov byte [rsp + 0x62], r15b
movsx edx, word [rbx + 0x1cc0]
mov edi, r14d
cmp edx, r14d
cmovl edi, edx
mov dword [rsp + 0x68], edi
movsx ecx, word [rbx + 0x1ba4]
movsx eax, word [rbx + 0x1cc2]
sub eax, ecx
mov esi, r13d
cmp eax, r13d
cmovl esi, eax
mov dword [rsp + 0x74], esi
imul edx, ecx
movsxd rdx, edx
movsx rax, word [rbx + 0x1ba2]
add rdx, rax
mov rax, qword [rbx + 0x1cd0]
lea r9, [rax + rdx*2]
mov qword [rbp - 0x28], r9
lea rcx, [rdx + rdx*2]
mov rax, qword [rbx + 0x1cd8]
lea rax, [rax + rcx*8]
mov qword [rbp - 0x70], rax
xor ecx, ecx
test esi, esi
jle 0x1400977ed
movsxd r15, edi
mov qword [rbp - 0x68], r15
lea rdx, [r15 + r15]
lea rax, [r15 + r15*2]
shl rax, 3
mov qword [rbp - 0x18], rax
lea rcx, [r14 + r14]
mov qword [rbp - 0x10], rcx
lea rax, [r14 + r14*2]
shl rax, 3
mov qword [rbp - 8], rax
mov eax, esi
mov qword [rbp - 0x58], rax
mov r13, r11
mov r8, rdx
mov rdx, r9
mov rcx, r12
call fcn.14012d940
mov r8, qword [rbp - 0x18]
mov rdx, qword [rbp - 0x70]
mov rcx, r13
call fcn.14012d940
mov esi, edi
xor edx, edx
mov qword [rbp - 0x60], rdx
test r15, r15
jle 0x1400976e4
lea rdi, [r13 + 8]
mov ebx, edx
xor r13d, r13d
mov eax, esi
dec esi
test eax, eax
jle 0x1400976d4
mov byte [rdi - 1], r13b
test esi, esi
setg byte [rsp + 0x60]
mov eax, ebx
lea rcx, [r12 + rax*2]
lea rdx, [rsp + 0x60]
call fcn.14011dd74
mov ecx, eax
call fcn.140126a54
test eax, eax
je 0x1400976bb
cmp eax, 2
jne 0x1400976be
or byte [rdi], 4
jmp 0x1400976be
or byte [rdi], 2
inc ebx
mov rcx, qword [rbp - 0x60]
inc rcx
mov qword [rbp - 0x60], rcx
add rdi, 0x18
cmp rcx, r15
jl 0x140097683
mov rbx, qword [rbp + 0xa0]
mov r13, qword [rsp + 0x78]
mov edi, dword [rsp + 0x68]
cmp r14d, edi
jle 0x14009778f
lea rdi, [r12 + r15*2]
mov eax, r14d
sub eax, dword [rsp + 0x68]
movsxd rcx, eax
je 0x140097708
mov eax, 0x20
movzx eax, ax
rep stosw word [rdi], ax
mov esi, r14d
mov edi, dword [rsp + 0x68]
mov r15d, edi
cmp edi, r14d
jge 0x14009778b
mov rax, qword [rbp - 0x68]
lea rax, [rax + rax*2]
lea rdi, [rax*8 + 8]
add rdi, r13
mov eax, esi
dec esi
test eax, eax
jle 0x140097780
movups xmm0, xmmword [rbp - 0x50]
movups xmmword [rdi - 8], xmm0
movsd xmm0, qword [rbp - 0x80]
movsd qword [rdi + 8], xmm0
test esi, esi
setg byte [rsp + 0x60]
movsxd rax, r15d
lea rcx, [r12 + rax*2]
lea rdx, [rsp + 0x60]
call fcn.14011dd74
mov ecx, eax
call fcn.140126a54
test eax, eax
je 0x140097771
cmp eax, 2
jne 0x140097774
or byte [rdi], 4
jmp 0x140097774
or byte [rdi], 2
inc r15d
add rdi, 0x18
cmp r15d, r14d
jl 0x14009772a
mov rbx, qword [rbp + 0xa0]
mov edi, dword [rsp + 0x68]
mov r15, qword [rbp - 0x68]
add r12, qword [rbp - 0x10]
add r13, qword [rbp - 8]
mov qword [rsp + 0x78], r13
movsx rax, word [rbx + 0x1cc0]
mov r9, qword [rbp - 0x28]
lea r9, [r9 + rax*2]
mov qword [rbp - 0x28], r9
lea rax, [rax + rax*2]
mov rcx, qword [rbp - 0x70]
lea rcx, [rcx + rax*8]
mov qword [rbp - 0x70], rcx
sub qword [rbp - 0x58], 1
lea rdx, [r15 + r15]
jne 0x14009764f
mov r13d, dword [rsp + 0x70]
xor ecx, ecx
mov r15b, byte [rsp + 0x62]
mov esi, dword [rsp + 0x74]
mov r11, qword [rsp + 0x78]
movsd xmm1, qword [rbp - 0x80]
movups xmm0, xmmword [rbp - 0x50]
cmp esi, r13d
jge 0x140097864
movsxd rdx, r14d
lea r10, [rdx + rdx]
lea r8, [rdx + rdx*2]
shl r8, 3
mov r9d, r13d
sub r9d, esi
mov r15d, 0x20
test r14d, r14d
je 0x140097821
movzx eax, r15w
mov rdi, r12
mov rcx, rdx
rep stosw word [rdi], ax
xor ecx, ecx
add r12, r10
test r14d, r14d
jle 0x140097852
movups xmmword [r11], xmm0
movsd qword [r11 + 0x10], xmm1
mov eax, r14d
lea rcx, [rax + rax*2]
lea rcx, [rcx*8 - 0x18]
shr rcx, 3
lea rdi, [r11 + 0x18]
mov rsi, r11
rep movsq qword [rdi], qword [rsi]
xor ecx, ecx
add r11, r8
sub r9, 1
movups xmm0, xmmword [rbp - 0x50]
jne 0x14009780d
mov r15b, byte [rsp + 0x62]
mov word [r12], cx
mov rdi, qword [rbp + 0xc8]
cmp byte [rsp + 0x61], cl
je 0x1400978c8
cmp dword [rbx + 0x1c50], ecx
je 0x1400978c8
mov byte [rsp + 0x20], cl
mov r9b, 1
mov r8d, dword [rbx + 0x1c48]
lea rdx, [rbp - 0x80]
mov rcx, rbx
call fcn.140094734
mov ecx, dword [rax]
mov dword [rdi], ecx
xor r8d, r8d
mov byte [rsp + 0x20], r8b
mov r9b, 1
mov r8d, dword [rbx + 0x1c4c]
lea rdx, [rsp + 0x78]
mov rcx, rbx
call fcn.140094734
mov ecx, dword [rax]
mov dword [rdi + 4], ecx
mov eax, dword [rbx + 0x1c50]
jmp 0x1400978ca
mov eax, ecx
mov dword [rdi + 8], eax
xor edi, edi
mov rsi, qword [rbp + 0xb0]
mov r12, qword [rbp + 0xa8]
test r15b, r15b
je 0x140097be9
mov dword [rsp + 0x20], r13d
mov r9d, r14d
mov r8, rsi
mov rdx, r12
mov rcx, rbx
call fcn.14009bd38
lea rcx, [rbx + 0x60]
call fcn.140128a34
cmp dword [rbx + 0x1a58], eax
je 0x140097960
cmp dword [rbx], 1
jne 0x14009791a
mov rcx, rbx
call fcn.140096d54
xor edx, edx
mov rcx, qword [rbx + 0x58]
call fcn.1400b8f08
test al, al
je 0x140097951
mov rcx, qword [rbx + 0x58]
cmp rbx, qword [rcx + 0x4268]
jne 0x140097951
call fcn.1400a7c44
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.140128a34
mov dword [rbx + 0x1a58], eax
mov r13d, dword [rbx + 0x1b50]
test r13d, r13d
je 0x140097be9
shr r13d, 9
and r13b, 1
movsx edx, word [rbx + 0x1b5a]
movsx ecx, word [rbx + 0x1b58]
call fcn.14011a554
mov dword [rsp + 0x68], eax
movzx r15d, ax
movzx r12d, word [rsp + 0x6a]
cmp byte [rbx + 0x1c18], dil
je 0x1400979b2
sub r15w, word [rbx + 0x1ba2]
sub r12w, word [rbx + 0x1ba4]
movsx edx, word [rbx + 0x1b5e]
movsx ecx, word [rbx + 0x1b5c]
call fcn.14011a554
mov dword [rsp + 0x68], eax
movzx esi, word [rsp + 0x68]
movzx ecx, word [rbx + 0x1ba4]
mov word [rsp + 0x62], cx
cmp byte [rbx + 0x1c18], dil
je 0x1400979f8
sub si, word [rbx + 0x1ba2]
mov word [rsp + 0x68], si
sub word [rsp + 0x6a], cx
mov eax, dword [rsp + 0x68]
movzx r11d, word [rbx + 0x1b5a]
mov word [rsp + 0x68], r11w
movzx ecx, word [rbx + 0x1b5e]
mov word [rsp + 0x74], cx
movzx ecx, word [rbx + 0x1ba8]
mov word [rbp - 0x78], cx
shr eax, 0x10
lea r10d, [r14 - 1]
test r15w, r15w
jns 0x140097a30
movzx r15d, di
jmp 0x140097a39
cmp r15w, r10w
cmovg r15w, r10w
test si, si
jns 0x140097a43
movzx esi, di
jmp 0x140097a4c
cmp si, r10w
cmovg si, r10w
mov rcx, qword [0x14022ab50]
movzx edx, byte [rcx + 0x1102a]
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 + 0x4278]
mov ecx, dword [rdx + rdi*8 + 0x10]
mov dword [rbp - 0x60], ecx
mov ecx, dword [rdx + rdi*8 + 0x14]
mov dword [rbp - 0x70], ecx
movsx edx, r12w
mov dword [rsp + 0x78], edx
xor edi, edi
mov r8d, edi
test edx, edx
cmovns r8d, edx
mov ecx, dword [rsp + 0x70]
dec ecx
movsx r9d, ax
mov dword [rbp - 0x80], r9d
cmp ecx, r9d
cmovge ecx, r9d
mov dword [rbp - 0x68], ecx
mov eax, r8d
imul eax, r14d
movzx ebx, word [rsp + 0x62]
mov dword [rsp + 0x70], eax
cmp r8d, ecx
jg 0x140097bd4
test r13b, r13b
jne 0x140097adb
movsx edi, r15w
movsx edx, si
jmp 0x140097b00
cmp r8d, edx
jne 0x140097aea
cmp r11w, bx
jl 0x140097aea
movsx edi, r15w
cmp r8d, r9d
jne 0x140097afd
movzx ecx, word [rbp - 0x78]
cmp word [rsp + 0x74], cx
movsx edx, si
jle 0x140097b00
mov edx, r10d
movsxd rcx, eax
movsxd rax, edi
add rcx, rax
lea rax, [rcx + rcx*2]
mov rcx, qword [rbp + 0xb0]
lea r9, [rcx + rax*8]
cmp edi, edx
jg 0x140097bb8
mov r11d, dword [rbp - 0x60]
mov ecx, 0xffffff
and r11d, ecx
mov r12d, dword [rbp - 0x70]
and r12d, ecx
sub edx, edi
inc edx
mov bl, byte [rsp + 0x60]
mov r10b, byte [rsp + 0x61]
xor edi, edi
mov eax, dword [r9 + 0xc]
and eax, 0xff000000
or eax, r11d
mov dword [r9 + 0xc], eax
and dword [r9], 0xff000000
and eax, ecx
or dword [r9], eax
mov eax, dword [r9 + 0x10]
and eax, 0xff000000
or eax, r12d
mov dword [r9 + 0x10], eax
mov ecx, dword [r9 + 4]
xor ecx, eax
and ecx, 0xffffff
xor ecx, dword [r9 + 4]
mov dword [r9 + 4], ecx
mov byte [r9 + 9], bl
mov byte [r9 + 0xa], r10b
shr ecx, 0x18
and cl, 0xef
mov byte [r9 + 7], cl
mov byte [r9 + 3], dil
lea r9, [r9 + 0x18]
sub rdx, 1
mov ecx, 0xffffff
jne 0x140097b42
lea r10d, [r14 - 1]
movzx ebx, word [rsp + 0x62]
movzx r11d, word [rsp + 0x68]
jmp 0x140097bba
xor edi, edi
inc r8d
mov eax, dword [rsp + 0x70]
add eax, r14d
mov ecx, dword [rbp - 0x68]
mov edx, dword [rsp + 0x78]
mov r9d, dword [rbp - 0x80]
jmp 0x140097ac0
mov rbx, qword [rbp + 0xa0]
mov rsi, qword [rbp + 0xb0]
mov r12, qword [rbp + 0xa8]
mov rcx, qword [rbx + 0x58]
cmp word [rcx + 0x534], di
je 0x140097cbc
test byte [rcx + 0x530], 4
je 0x140097cbc
mov rax, qword [0x14022ab50]
cmp byte [rax + 0x11084], dil
je 0x140097c39
mov dl, 1
call fcn.1400b8f08
test al, al
je 0x140097cbc
xor edx, edx
mov rcx, qword [rbx + 0x58]
call fcn.1400b8f08
test al, al
jne 0x140097cbc
mov rdx, qword [rbx + 0x58]
add rdx, 0x534
or r15, 0xffffffffffffffff
inc r15
cmp word [rdx + r15*2], di
jne 0x140097c48
movsxd rax, r15d
lea rdi, [rax + rax]
mov r8, rdi
mov rcx, r12
call fcn.14012d940
cmp r14d, r15d
jle 0x140097c82
add rdi, r12
mov eax, r14d
sub eax, r15d
movsxd rcx, eax
je 0x140097c82
mov eax, 0x20
movzx eax, ax
rep stosw word [rdi], ax
mov rax, qword [rbp - 0x20]
test r14d, r14d
jle 0x140097cbc
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 + 0x1be0], eax
lea rcx, [rbp]
call fcn.14011ab98
nop
lea rcx, [rbp + 0x30]
call fcn.14011dbf0
nop
lea rcx, [rbp]
call fcn.14011a71c
add rsp, 0x158
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret