Function at 0x100164a9
Capabilities:
Encode data using xor

Disassembly:
push 0x5c
mov eax, 0x100745ad
call fcn.1003d3a0
mov esi, ecx
mov eax, dword [esi]
mov edi, dword [sym.imp.KERNEL32.dll_GetTickCount64]
mov dword [0x1009ee14], eax
call edi
sub eax, dword [esi + 0x30]
mov ecx, eax
sbb edx, dword [esi + 0x34]
call fcn.10073090
cvtsd2ss xmm0, xmm0
divss xmm0, dword [0x1008f5b0]
comiss xmm0, dword [0x1008f548]
jb 0x10016895
call edi
mov dword [esi + 0x30], eax
mov al, byte [esi + 0x20]
mov dword [esi + 0x34], edx
push 0x65
pop ebx
test al, al
je 0x100166c0
mov eax, dword [esi + 0x24]
test eax, eax
jle 0x1001650d
dec eax
mov dword [esi + 0x24], eax
mov edi, dword [esi + 0x24]
test edi, edi
js 0x100166b2
mov eax, edi
mov dword [ebp - 0x14], 0xf
cdq
mov ecx, 0xe10
idiv ecx
push 0x3c
mov eax, edx
cdq
pop ecx
idiv ecx
push 0x3c
mov ecx, eax
mov eax, edi
cdq
pop edi
idiv edi
xor eax, eax
mov dword [ebp - 0x18], eax
mov byte [ebp - 0x28], al
push 0xa
pop edi
mov dword [ebp - 4], eax
push edx
push ecx
cmp ecx, edi
jae 0x100165b7
cmp edx, edi
jae 0x10016584
mov cl, 0x33
mov dword [ebp - 0x34], 0x57160333
mov dword [ebp - 0x30], 0x57160309
mov edx, eax
mov byte [ebp - 0x2c], al
xor cl, byte [ebp + edx - 0x33]
mov byte [ebp + edx - 0x33], cl
inc edx
cmp edx, 7
jae 0x1001657b
mov cl, byte [ebp - 0x34]
jmp 0x10016568
mov byte [ebp - 0x2c], 0
jmp 0x10016606
push 0xa
pop edx
mov byte [ebp - 0x30], dl
mov cl, 0x30
mov dword [ebp - 0x34], 0x54150030
mov edx, eax
mov word [ebp - 0x2f], 0x5415
mov byte [ebp - 0x2d], al
xor cl, byte [ebp + edx - 0x33]
mov byte [ebp + edx - 0x33], cl
inc edx
cmp edx, 6
jae 0x100165b1
mov cl, byte [ebp - 0x34]
jmp 0x1001659e
mov byte [ebp - 0x2d], 0
jmp 0x10016606
mov ecx, eax
cmp edx, edi
jae 0x100165e1
mov dl, 0x55
mov dword [ebp - 0x34], 0x6f317055
mov byte [ebp - 0x30], bl
mov word [ebp - 0x2f], 0x3170
mov byte [ebp - 0x2d], al
xor byte [ebp + ecx - 0x33], dl
inc ecx
cmp ecx, 6
jae 0x100165b1
mov dl, byte [ebp - 0x34]
jmp 0x100165d2
mov dl, 0x12
mov dword [ebp - 0x34], 0x28763712
mov word [ebp - 0x30], 0x7637
mov byte [ebp - 0x2e], al
xor byte [ebp + ecx - 0x33], dl
inc ecx
cmp ecx, 5
jae 0x10016602
mov dl, byte [ebp - 0x34]
jmp 0x100165f3
mov byte [ebp - 0x2e], 0
sub esp, 0x18
lea eax, [ebp - 0x33]
mov ecx, esp
push eax
call fcn.10004179
lea eax, [ebp - 0x50]
push eax
call fcn.10003c43
add esp, 0x24
lea ecx, [ebp - 0x28]
push eax
call fcn.10005f9d
push 0
push 1
lea ecx, [ebp - 0x50]
call fcn.1000402e
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
movaps xmm0, xmmword [str._lKQ_VQX]
cmovae eax, dword [ebp - 0x28]
xor ecx, ecx
push eax
movups xmmword [ebp - 0x50], xmm0
mov dword [ebp - 0x40], 0x624c1a64
mov byte [ebp - 0x3c], 0
mov al, byte [ebp + ecx - 0x4f]
xor al, byte [ebp - 0x50]
mov byte [ebp + ecx - 0x4f], al
inc ecx
cmp ecx, 0x13
jb 0x10016659
sub esp, 0x18
mov byte [ebp - 0x3c], 0
lea eax, [ebp - 0x4f]
mov ecx, esp
push eax
call fcn.10004179
lea eax, [ebp - 0x68]
push eax
call fcn.10003c43
add esp, 0x20
mov byte [ebp - 4], 1
mov edx, eax
mov ecx, dword [esi + 8]
call fcn.1000de50
push 0
push 1
lea ecx, [ebp - 0x68]
call fcn.1000402e
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x28]
push 0
push 1
call fcn.1000402e
cmp dword [esi + 0x24], 0
jg 0x100166c0
and dword [esi + 0x24], 0
mov byte [esi + 0x20], 0
mov al, byte [esi + 0x21]
test al, al
je 0x10016895
movzx eax, word [esi + 0x28]
test ax, ax
jle 0x100166d9
dec eax
mov word [esi + 0x28], ax
movzx edi, word [esi + 0x28]
mov eax, edi
test ax, ax
js 0x10016884
cwde
mov ecx, 0xe10
cdq
idiv ecx
push 0x3c
mov eax, edx
mov dword [ebp - 0x14], 0xf
cdq
pop ecx
idiv ecx
push 0x3c
movzx ecx, ax
mov eax, edi
cwde
cdq
pop edi
idiv edi
movzx eax, dx
xor edx, edx
mov dword [ebp - 0x18], edx
mov byte [ebp - 0x28], dl
push 0xa
pop edi
mov dword [ebp - 4], 2
cmp cx, di
jae 0x10016790
push edi
pop ebx
push eax
push ecx
cmp ax, bx
jae 0x1001675d
xor ebx, ebx
mov dword [ebp - 0x34], 0x3e7f6a5a
mov dl, 0x5a
mov dword [ebp - 0x30], 0x3e7f6a60
mov byte [ebp - 0x2c], bl
mov ecx, ebx
xor byte [ebp + ecx - 0x33], dl
inc ecx
cmp ecx, 7
jae 0x10016755
mov dl, byte [ebp - 0x34]
jmp 0x10016746
mov byte [ebp - 0x2c], bl
jmp 0x100167e0
mov byte [ebp - 0x31], bl
mov dl, 0x6e
mov byte [ebp - 0x2e], bl
xor ebx, ebx
mov word [ebp - 0x34], 0x5e6e
mov ecx, ebx
mov byte [ebp - 0x32], 0x4b
mov word [ebp - 0x30], 0x4b54
mov byte [ebp - 0x2d], bl
xor byte [ebp + ecx - 0x33], dl
inc ecx
cmp ecx, 6
jae 0x1001678b
mov dl, byte [ebp - 0x34]
jmp 0x1001677c
mov byte [ebp - 0x2d], bl
jmp 0x100167e0
push eax
push ecx
cmp ax, di
jae 0x100167ba
xor ebx, ebx
mov dword [ebp - 0x34], 0x742a6b4e
mov dl, 0x4e
mov dword [ebp - 0x30], 0x2a6b7e
mov ecx, ebx
xor byte [ebp + ecx - 0x33], dl
inc ecx
cmp ecx, 6
jae 0x1001678b
mov dl, byte [ebp - 0x34]
jmp 0x100167ab
mov byte [ebp - 0x34], bl
mov ecx, edx
mov dword [ebp - 0x33], 0x405f0140
mov word [ebp - 0x2f], 1
xor byte [ebp + ecx - 0x33], bl
inc ecx
cmp ecx, 5
jae 0x100167db
mov bl, byte [ebp - 0x34]
jmp 0x100167cc
xor ebx, ebx
mov byte [ebp - 0x2e], bl
sub esp, 0x18
lea eax, [ebp - 0x33]
mov ecx, esp
push eax
call fcn.10004179
lea eax, [ebp - 0x68]
push eax
call fcn.10003c43
add esp, 0x24
lea ecx, [ebp - 0x28]
push eax
call fcn.10005f9d
push ebx
push 1
lea ecx, [ebp - 0x68]
call fcn.1000402e
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
movaps xmm0, xmmword [0x10090370]
mov edx, ebx
cmovae eax, dword [ebp - 0x28]
push eax
movups xmmword [ebp - 0x50], xmm0
mov dword [ebp - 0x40], 0x16403e45
mov word [ebp - 0x3c], 0x38
mov cl, byte [ebp - 0x50]
xor byte [ebp + edx - 0x4f], cl
inc edx
cmp edx, 0x14
jb 0x10016834
sub esp, 0x18
mov byte [ebp - 0x3b], bl
lea eax, [ebp - 0x4f]
mov ecx, esp
push eax
call fcn.10004179
lea eax, [ebp - 0x68]
push eax
call fcn.10003c43
add esp, 0x20
mov byte [ebp - 4], 3
mov edx, eax
mov ecx, dword [esi + 0xc]
call fcn.1000de50
push ebx
push 1
lea ecx, [ebp - 0x68]
call fcn.1000402e
push ebx
push 1
lea ecx, [ebp - 0x28]
call fcn.1000402e
jmp 0x10016886
xor ebx, ebx
cmp word [esi + 0x28], bx
jg 0x10016895
xor eax, eax
mov byte [esi + 0x21], bl
mov word [esi + 0x28], ax
call fcn.1003d34a
ret