Function at 0x14016b880
Capabilities:
Encode data using xor

Disassembly:
push rsi
push rbx
sub rsp, 0xb8
mov qword [rsp + 0xa0], r8
mov qword [rsp + 0xa8], rdx
mov qword [rsp + 0xb0], rcx
mov eax, dword [0x14027beb8]
mov ecx, 0x51ae2921
xor ecx, 0x6c9e8e01
xor eax, ecx
mov ecx, dword [0x14027bebc]
xor ecx, 0xec3b939b
add eax, ecx
mov ecx, 0xae8a698
xor ecx, 0x9b741cdc
and eax, ecx
mov ecx, 0x4c92b5a9
xor ecx, 0xf04e87e1
imul eax, ecx
imul eax, eax, 0xb13763a0
mov ecx, 0xfd88a4e4
xor ecx, 0x67202c57
cmp eax, ecx
je 0x14016c572
mov ecx, dword [0x14027bec0]
mov edx, dword [0x14027bec4]
mov r8d, ecx
and r8d, edx
mov eax, 0x21f288a5
xor eax, 0x21f288a7
imul eax, r8d
add ecx, edx
sub ecx, eax
add ecx, 0xd7cc932d
sub ecx, 0x89dad533
sub ecx, 0xd7cc932d
mov edx, 0x53e535ac
xor edx, 0x49da5bea
mov eax, 0xf10373bf
xor eax, 0xefc8c40
xor edx, eax
mov eax, ecx
xor eax, edx
and eax, ecx
mov ecx, 0x6b4a693a
xor ecx, 0x381d9922
imul eax, ecx
mov dword [rsp + 0x8c], eax
mov rax, qword [0x14028d330]
mov ecx, dword [rax]
call fcn.14000efc9
mov rax, qword [0x14028d330]
mov ecx, dword [rax]
call fcn.14000efc9
mov rcx, qword [rsp + 0xa8]
mov rdx, qword [rsp + 0xa0]
mov eax, dword [rsp + 0x8c]
sub rcx, rdx
mov qword [rsp + 0x90], rcx
cmp rcx, 1
setl cl
mov byte [rsp + 0x9f], cl
cmp eax, 0xc76b386d
ja 0x14016b8f6
mov cl, byte [rsp + 0x9f]
xor eax, eax
test cl, 1
mov qword [rsp + 0x80], rax
jne 0x14016c560
jmp 0x14016b9d4
mov rax, qword [rsp + 0xb0]
mov rcx, qword [rsp + 0xa0]
mov rdx, rax
add rdx, rcx
mov qword [rsp + 0x70], rdx
mov al, byte [rax + rcx]
mov byte [rsp + 0x7b], al
movzx ecx, al
mov dword [rsp + 0x7c], ecx
cmp al, 0xff
jle 0x14016ba38
mov rax, qword [0x14028d330]
mov ecx, dword [rax]
call fcn.14000efc9
mov eax, dword [rsp + 0x7c]
movd xmm0, eax
movaps xmm1, xmmword [0x14028a8c0]
punpckldq xmm0, xmm1
movq rax, xmm0
mov qword [rsp + 0x80], rax
jmp 0x14016c560
mov rcx, qword [rsp + 0x90]
xor eax, eax
cmp rcx, 1
mov qword [rsp + 0x80], rax
je 0x14016c560
mov rax, qword [rsp + 0x90]
cmp rax, 3
jbe 0x14016bf79
mov rax, qword [rsp + 0x70]
mov ecx, dword [rax]
mov dword [rsp + 0x68], ecx
mov eax, 0x98a60e84
xor eax, 0x98a60e85
mov edx, ecx
add edx, eax
mov eax, ecx
xor eax, 0xffffffff
mov r8d, 0x5ca70f88
xor r8d, 0x5ca7cf68
or eax, r8d
add eax, edx
and ecx, 0xc0c0c0f8
mov dword [rsp + 0x6c], ecx
cmp eax, 0x80c0
jne 0x14016bc0b
mov rax, qword [rsp + 0xb0]
mov rdx, qword [rsp + 0xa0]
mov r8d, dword [rsp + 0x7c]
mov ecx, 0xe16879c6
xor ecx, 0xe16879c0
shl r8d, cl
mov ecx, r8d
xor ecx, 0xffffffff
mov r9d, 0xffffffff
xor r9d, 0x7c0
mov r8d, 0xffffffff
xor r8d, 0x11d10b72
or ecx, r9d
or r8d, 0x11d10b72
xor ecx, 0xffffffff
and ecx, r8d
movabs r9, 0x20335a55cca53486
movabs r8, 0x20335a55cca53487
xor r9, r8
mov r8, rdx
and r8, r9
shl r8, 1
xor rdx, 1
add rdx, r8
mov al, byte [rax + rdx]
and al, 0x3f
movzx eax, al
or ecx, eax
mov dword [rsp + 0x64], ecx
xor eax, eax
cmp ecx, 0x7f
mov qword [rsp + 0x80], rax
jbe 0x14016c560
mov eax, dword [0x14027bec8]
xor eax, 0xbd7e4ad0
or eax, dword [0x14027becc]
mov ecx, 0x6c30c3bf
xor edx, edx
div ecx
mov ecx, 0x61fa0272
xor edx, edx
div ecx
mov ecx, 0xfa1c7bfe
xor edx, edx
div ecx
cmp eax, 0x543627dd
ja 0x14016c57b
mov ecx, dword [rsp + 0x64]
mov eax, dword [0x14027bed0]
mov r9d, dword [0x14027bed4]
xor r9d, 0x8b4b186c
mov r10d, r9d
xor r10d, 0xffffffff
mov r8d, eax
and r8d, r10d
mov edx, eax
or edx, r10d
xor edx, 0xffffffff
imul edx, r8d
mov r8d, eax
and r8d, r9d
or eax, r9d
imul eax, r8d
add eax, edx
mov r8d, 0x1c9b9ece
xor edx, edx
div r8d
mov r8d, 0x79b471fe
xor edx, edx
div r8d
sub eax, 0xdca56873
mov dword [rsp + 0x54], eax
call fcn.14016c5a8
mov rcx, rax
mov eax, dword [rsp + 0x54]
mov qword [rsp + 0x58], rcx
cmp eax, 0xcb499800
jae 0x14016bb7e
mov rax, qword [rsp + 0x58]
mov qword [rsp + 0x80], rax
jmp 0x14016c560
mov ecx, dword [rsp + 0x68]
mov edx, 0xe63ee0af
xor edx, 0x19c11f50
mov eax, ecx
xor eax, edx
mov edx, 0xffffffff
xor edx, 0xc0c0f0
or eax, edx
xor ecx, 0xffffffff
mov edx, 0xffffffff
xor edx, 0xc0c0f0
or ecx, edx
xor eax, 0xffffffff
mov edx, 0x21387942
xor edx, 0xdec786bd
xor ecx, edx
or eax, ecx
cmp eax, 0x8080e0
jne 0x14016bce8
mov rcx, qword [rsp + 0xa0]
mov rdx, qword [rsp + 0xb0]
mov eax, dword [rsp + 0x7c]
shl eax, 0xc
mov r8d, eax
xor r8d, 0xffff0000
and r8d, eax
movzx eax, byte [rcx + rdx + 1]
and eax, 0x3f
shl eax, 6
or eax, r8d
movzx edx, byte [rcx + rdx + 2]
and edx, 0x3f
mov ecx, eax
or ecx, edx
mov dword [rsp + 0x50], ecx
sub ecx, 0x800
setb cl
mov edx, eax
not edx
or edx, 0xf800
add eax, edx
sub eax, 0xd7ff
sete dl
mov al, dl
and al, cl
add cl, dl
sub cl, al
xor eax, eax
test cl, 1
mov qword [rsp + 0x80], rax
jne 0x14016c560
mov ecx, dword [rsp + 0x50]
call fcn.14016c5a8
mov qword [rsp + 0x80], rax
jmp 0x14016c560
mov ecx, dword [0x14027bed8]
mov eax, 0x344aa187
xor eax, 0xa2592f8d
xor ecx, eax
and ecx, dword [0x14027bedc]
sub ecx, 0xce953a46
sub ecx, 0xd7495f59
mov eax, ecx
xor eax, 0xffffffff
mov r8d, 0x43799b2e
xor r8d, 0xbc8664d1
mov edx, ecx
xor edx, r8d
and eax, edx
mov edx, 0x3a580495
xor edx, 0x3c981787
mov r8d, 0x8cbedfa8
xor r8d, 0x73412057
xor edx, r8d
mov r8d, 0x54fbf46c
xor r8d, 0x523be77e
mov r9d, 0x8d26b110
xor r9d, 0x72d94eef
xor r8d, r9d
and edx, r8d
xor eax, 0xffffffff
xor edx, 0xffffffff
and eax, edx
or ecx, 0x6c01312
mov edx, 0x87299dde
xor edx, 0x78d66221
xor ecx, edx
or eax, ecx
xor eax, 0xffffffff
mov ecx, 0x99329275
xor ecx, 0x581a8f41
cmp eax, ecx
jae 0x14016c584
mov edx, dword [rsp + 0x6c]
mov esi, dword [0x14027bee0]
mov r8d, dword [0x14027bee4]
mov r9d, r8d
xor r9d, 0xffffffff
mov ecx, esi
and ecx, r9d
mov eax, esi
or eax, r9d
xor eax, 0xffffffff
imul eax, ecx
mov ecx, esi
and ecx, r8d
or esi, r8d
imul esi, ecx
add esi, eax
xor esi, 0xffffffff
mov ecx, 0xffffffff
xor ecx, 0x6ac6506b
mov eax, 0xffffffff
xor eax, 0x6a50fbbc
or esi, ecx
or eax, 0x6a50fbbc
xor esi, 0xffffffff
and esi, eax
sub esi, 0x3e8539a
mov ecx, esi
xor ecx, 0xffffffff
mov r9d, 0x9fe26bc6
xor r9d, 0xac362d1c
mov eax, 0xe5673aa9
xor eax, 0x1a98c556
xor r9d, eax
mov r8d, 0xffffffff
xor r8d, 0xbdfbfde4
mov eax, ecx
and eax, 0xbdfbfde4
and esi, r8d
mov r10d, r9d
and r10d, 0xbdfbfde4
mov r11d, r8d
and r11d, 0x33d446da
or eax, esi
or r10d, r11d
xor eax, r10d
or ecx, r9d
xor ecx, 0xffffffff
or r8d, 0xbdfbfde4
and ecx, r8d
or eax, ecx
mov ecx, 0x4dfc65ae
xor ecx, 0x4e0ba889
cmp edx, 0x808080f0
sete dl
mov byte [rsp + 0x4f], dl
cmp eax, ecx
jbe 0x14016c584
mov cl, byte [rsp + 0x4f]
xor eax, eax
test cl, 1
mov qword [rsp + 0x80], rax
jne 0x14016be92
jmp 0x14016c560
mov rax, qword [rsp + 0xb0]
mov rdx, qword [rsp + 0xa0]
mov r8d, dword [rsp + 0x7c]
shl r8d, 0x12
and r8d, 0x1c0000
movabs r9, 0x7c5b38efc1fad473
movabs rcx, 0x7c5b38efc1fad472
xor r9, rcx
mov rcx, rdx
add rcx, r9
mov cl, byte [rax + rcx]
and cl, 0x3f
movzx ecx, cl
shl ecx, 0xc
or ecx, r8d
mov r8b, byte [rax + rdx + 2]
and r8b, 0x3f
movzx r9d, r8b
shl r9d, 6
mov r8d, r9d
and r8d, ecx
xor r8d, 0xffffffff
add ecx, r9d
add ecx, 1
add ecx, r8d
mov dl, byte [rax + rdx + 3]
mov r8b, 0x84
xor r8b, 0xbb
mov al, 0x50
xor al, 0xaf
xor r8b, al
mov al, dl
xor al, r8b
and al, dl
movzx eax, al
or ecx, eax
mov dword [rsp + 0x48], ecx
xor eax, eax
sub eax, ecx
mov ecx, 0x1f452fbd
xor ecx, 0x1f452fbd
mov edx, 0xfa04c94d
xor edx, 0x5fbc94c
sub ecx, edx
add eax, ecx
xor ecx, ecx
sub ecx, eax
mov edx, 0x36a55e9
xor edx, 0x37a55e8
xor eax, eax
cmp ecx, edx
mov qword [rsp + 0x80], rax
jae 0x14016c560
mov ecx, dword [rsp + 0x48]
call fcn.14016c5a8
mov qword [rsp + 0x80], rax
jmp 0x14016c560
mov rax, qword [rsp + 0xb0]
mov rcx, qword [rsp + 0xa0]
mov al, byte [rax + rcx + 1]
movzx ecx, al
mov dword [rsp + 0x44], ecx
mov cl, al
and cl, 0xc0
mov dl, 0x48
xor dl, 0xb7
xor cl, dl
xor al, 0xff
mov dl, 0x37
xor dl, 0xf7
mov r8b, 0x8f
xor r8b, 0x70
xor dl, r8b
or al, dl
and cl, al
xor cl, 0xff
mov dl, 0xdf
xor dl, 0x5f
xor eax, eax
cmp cl, dl
mov qword [rsp + 0x80], rax
jne 0x14016c560
mov eax, dword [0x14027bee8]
and eax, dword [0x14027beec]
mov edx, 0xffffffff
xor edx, 0xc933bfb3
mov ecx, eax
and ecx, edx
mov r8d, 0x2c626393
xor r8d, 0xe551dc20
mov edx, eax
xor edx, r8d
add eax, edx
sub eax, ecx
mov ecx, 0xb596af40
xor ecx, 0xb596af40
sub ecx, eax
xor eax, eax
sub eax, 0x4e2e717c
add ecx, eax
mov eax, 0x4d3746ad
xor eax, 0x4d3746ad
sub eax, ecx
and eax, 0x2986d24a
cmp eax, 0xea765955
jae 0x14016c58d
mov cl, byte [rsp + 0x7b]
mov eax, dword [0x14027bef0]
mov r9d, dword [0x14027bef4]
xor r9d, 0x2a6df8ca
mov edx, eax
xor edx, 0xffffffff
mov r8d, r9d
and r8d, edx
mov edx, 0x3bdb969
xor edx, 0xfc424696
mov r10d, r9d
xor r10d, edx
mov edx, eax
and edx, r10d
imul edx, r8d
mov r8d, eax
and r8d, r9d
or eax, r9d
imul eax, r8d
add eax, edx
mov r8d, 0x2b8c6609
xor r8d, 0xb313c10e
xor edx, edx
div r8d
mov edx, 0xfb4e00fe
xor edx, 0xc22b5e8
xor eax, edx
mov edx, 0xffffffff
xor edx, 0x589e0e39
add eax, edx
add eax, 1
mov dl, cl
add dl, 1
mov r8b, 0xf1
xor r8b, 0xe
xor cl, r8b
or cl, 0xe0
add cl, dl
mov dl, 0xb1
xor dl, 0x71
cmp cl, dl
sete cl
mov byte [rsp + 0x43], cl
cmp eax, 0xa012b498
ja 0x14016c032
mov al, byte [rsp + 0x43]
test al, 1
jne 0x14016c0eb
jmp 0x14016c2df
mov eax, dword [rsp + 0x44]
mov edx, dword [rsp + 0x7c]
shl edx, 6
and edx, 0x7c0
and eax, 0x3f
mov ecx, eax
xor ecx, 0xffffffff
xor eax, 0xffffffff
or ecx, eax
mov eax, edx
xor eax, 0xffffffff
xor edx, 0xffffffff
or eax, edx
and ecx, eax
xor ecx, 0xffffffff
mov dword [rsp + 0x3c], ecx
xor eax, eax
cmp ecx, 0x7f
mov qword [rsp + 0x80], rax
jbe 0x14016c560
mov r11d, dword [str.bJ_]
xor r11d, 0xef6ae72e
mov r10d, dword [0x14027befc]
mov ecx, r11d
xor ecx, 0xffffffff
mov eax, 0x340cd887
xor eax, 0xcbf32778
mov edx, r10d
xor edx, eax
mov r8d, 0xffffffff
xor r8d, 0x9d5813bd
mov eax, ecx
and eax, 0x9d5813bd
and r11d, r8d
mov r9d, edx
and r9d, 0x9d5813bd
and r10d, r8d
or eax, r11d
or r9d, r10d
xor eax, r9d
or ecx, edx
mov edx, 0x36b708c3
xor edx, 0xc948f73c
xor ecx, edx
mov edx, 0x80da852b
xor edx, 0x1d829696
or edx, r8d
and ecx, edx
or eax, ecx
sub eax, 0x3cdebcb3
mov ecx, 0x6a40d7d1
xor ecx, 0xa2626e9c
imul eax, ecx
mov edx, 0xc0c65cce
xor edx, 0xc0c65ccf
mov ecx, eax
add ecx, edx
xor eax, 0xffffffff
mov edx, 0xbbfdd5b0
xor edx, 0xc22207d7
or eax, edx
add eax, ecx
cmp eax, 0x605ce1b5
jb 0x14016c596
mov ecx, dword [rsp + 0x3c]
mov edx, dword [0x14027bf00]
mov r8d, dword [0x14027bf04]
mov eax, edx
and eax, r8d
xor edx, r8d
or eax, edx
mov edx, 0x7a17fb4a
xor edx, 0xbe380d31
mov r9d, eax
or r9d, edx
xor r9d, 0xffffffff
mov edx, 0x8e9bf797
xor edx, 0x4ab401ec
or eax, edx
xor eax, 0xffffffff
mov edx, 0x303cf709
xor edx, 0xcfc308f6
xor r9d, edx
xor eax, 0xffffffff
and r9d, eax
mov edx, 0xce6936d6
xor edx, 0x3196c929
mov eax, r9d
xor eax, edx
and eax, 0xda3ade36
mov r10d, 0xffffffff
xor r10d, 0xda3ade36
and r9d, r10d
mov edx, 0x84754828
xor edx, 0x3fc8f6c1
mov r8d, 0x2171cc40
xor r8d, 0xde8e33bf
xor edx, r8d
and edx, 0xda3ade36
mov r8d, 0x367d81bd
xor r8d, 0x8dc03f54
and r8d, r10d
or eax, r9d
or edx, r8d
xor eax, edx
imul eax, eax, 0x6ba4722
mov dword [rsp + 0x2c], eax
mov eax, 0x2e12af3a
xor eax, 0x8b16d762
mov dword [rsp + 0x28], eax
call fcn.14016c5a8
mov ecx, dword [rsp + 0x28]
mov rdx, rax
mov eax, dword [rsp + 0x2c]
mov qword [rsp + 0x30], rdx
cmp eax, ecx
jbe 0x14016c596
mov rax, qword [rsp + 0x30]
mov qword [rsp + 0x80], rax
jmp 0x14016c560
mov al, byte [rsp + 0x7b]
mov rcx, qword [rsp + 0x90]
sub rcx, 3
sete cl
and al, 0xf0
sub al, 0xe0
sete al
and cl, al
xor eax, eax
test cl, 1
mov qword [rsp + 0x80], rax
jne 0x14016c313
jmp 0x14016c560
mov rax, qword [rsp + 0xb0]
mov rcx, qword [rsp + 0xa0]
mov al, byte [rax + rcx + 2]
mov byte [rsp + 0x27], al
mov dl, 0xff
xor dl, 0xc0
mov cl, al
xor cl, dl
and cl, al
xor eax, eax
cmp cl, 0x80
mov qword [rsp + 0x80], rax
jne 0x14016c560
mov ecx, dword [0x14027bf08]
imul ecx, dword [0x14027bf0c]
mov edx, 0xe185e157
xor edx, 0x93971c7e
mov eax, ecx
and eax, edx
or ecx, 0x7212fd29
add eax, ecx
mov ecx, 0xad255c4
xor ecx, 0x3b00dd35
and eax, ecx
mov r8d, 0xb303c8e7
xor r8d, 0x18262d9e
mov ecx, 0x787ceeff
xor ecx, 0x87831100
xor r8d, ecx
mov edx, eax
and edx, r8d
mov ecx, eax
or ecx, r8d
mov r8d, 0xc7dd25cf
xor r8d, 0x3822da30
xor ecx, r8d
imul ecx, edx
mov edx, eax
and edx, 0xab25e579
or eax, 0xab25e579
imul eax, edx
add eax, ecx
cmp eax, 0xd55c3080
je 0x14016c59f
mov r9d, dword [rsp + 0x44]
mov r8d, dword [rsp + 0x7c]
mov eax, dword [0x14027bf10]
and eax, dword [0x14027bf14]
sub eax, 0xca176ac5
mov ecx, 0x73b65fe7
xor edx, edx
div ecx
mov dl, byte [rsp + 0x27]
mov r11d, eax
mov ecx, r11d
xor ecx, 0xffffffff
mov eax, 0xd0636586
xor eax, 0x3f08f5f3
and eax, ecx
mov esi, 0xffffffff
xor esi, 0xef6b9075
and r11d, esi
mov ecx, 0xffffffff
xor ecx, 0xc4754c16
mov r10d, 0x30be09b1
xor r10d, 0xdfd599c4
and ecx, r10d
mov r10d, 0x896ccbcf
xor r10d, 0x4d1987d9
and r10d, esi
or eax, r11d
or ecx, r10d
xor eax, ecx
shl r8d, 0xc
and r8d, 0xf000
mov ecx, 0xb62b4e67
xor ecx, 0xb62b4e61
shl r9d, cl
mov ecx, r9d
or ecx, ecx
xor ecx, 0xffffffff
mov r9d, 0xffffffff
xor r9d, 0xfc0
mov r10d, 0xffffffff
xor r10d, 0xfc0
and r9d, r10d
xor ecx, 0xffffffff
xor r9d, 0xffffffff
and ecx, r9d
or ecx, r8d
mov r8b, dl
xor r8b, 0x3f
mov r9b, 0xad
xor r9b, 0x52
xor r8b, r9b
or dl, 0x3f
and dl, r8b
movzx r8d, dl
mov edx, ecx
or edx, r8d
mov dword [rsp + 0x20], edx
cmp edx, 0x800
setb bl
and ecx, 0xf800
cmp ecx, 0xd800
sete r11b
mov dl, bl
xor dl, 0xff
mov cl, 1
xor cl, 0
mov r9b, r11b
xor r9b, cl
mov r8b, 1
xor r8b, 0
xor ecx, ecx
xor cl, 1
xor r8b, cl
mov cl, dl
and cl, 0xff
and bl, r8b
mov r10b, r9b
and r10b, 0xff
and r11b, r8b
or cl, bl
or r10b, r11b
xor cl, r10b
or dl, r9b
xor r9d, r9d
xor r9b, 1
xor dl, r9b
or r8b, 1
and dl, r8b
or cl, dl
mov byte [rsp + 0x26], cl
cmp eax, 0x7316c6f7
jbe 0x14016c59f
mov cl, byte [rsp + 0x26]
xor eax, eax
test cl, 1
mov qword [rsp + 0x80], rax
jne 0x14016c560
jmp 0x14016c54f
mov ecx, dword [rsp + 0x20]
call fcn.14016c5a8
mov qword [rsp + 0x80], rax
mov rax, qword [rsp + 0x80]
add rsp, 0xb8
pop rbx
pop rsi
ret
pop rbp
in al, 0x57
xchg ebp, eax
jmp 0x14016b8f6
mov dl, 0xbe
invalid
mov byte [rax], bl
mov eax, gs
jmp 0x14016bd93
rcr al, cl
in al, dx
mov bl, 0xe9
pushfq
cli
invalid
push rsp
retf 0x4585
imul edx, dword [rbp + 0x27e9b88e], 0xfffffffe
invalid