Function at 0x180016fe4
Capabilities:
Encode data using xor

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x1f]
sub rsp, 0xd8
mov rax, qword [0x18004fa38]
xor rax, rsp
mov qword [rbp + 0xf], rax
mov al, byte [0x18004f640]
mov r13, rcx
mov byte [rbp - 0x49], al
mov al, byte [0x18004f54c]
mov byte [rbp - 0x55], al
movsx eax, word [0x18004f650]
mov dword [rbp - 0x39], eax
mov eax, 0x60d8
mov word [rbp - 0x61], ax
movsx eax, byte [0x18004f58e]
mov byte [rbp - 0x49], al
mov r11d, eax
movabs rax, 0xddc93c52957ab
mov qword [rbp - 9], rdx
mov qword [rbp - 0x31], rax
mov dword [rbp - 0x51], 0x262a600b
mov rbx, qword [0x18004f610]
movzx r15d, byte [0x18004f640]
mov r12d, dword [0x18004f5cc]
movzx r10d, word [0x18004f648]
mov byte [rbp - 0x69], 0x3b
mov qword [rbp - 0x21], 0x13a
movsx eax, word [0x18004f66c]
mov esi, dword [0x18004f564]
mov dword [rbp - 0x4d], eax
movsx rax, word [0x18004f618]
mov qword [rbp - 0x19], rax
mov qword [rbp - 0x21], 0x8357
mov rax, qword [0x18004f610]
mov word [rbp - 0x5d], ax
mov dword [rbp - 0x65], 0x12ccc830
movzx eax, word [0x18004f630]
mov byte [rbp - 0x59], al
mov dword [rbp - 0x65], 0x25083b9a
movsx rax, word [0x18004f66c]
mov qword [rbp - 0x21], rax
movzx eax, word [0x18004f638]
mov dword [rbp - 0x65], eax
mov qword [rbp - 0x21], 0x14e
movzx eax, word [0x18004f61c]
mov eax, 0x745b
mov dword [rbp - 0x29], r9d
mov word [rbp - 0x59], ax
mov r9, r8
mov byte [rbp - 0x59], 0x7b
mov eax, dword [0x18004f634]
movzx edi, word [0x18004f630]
movsx edx, byte [rbp - 0x69]
movsx eax, byte [rbp - 0x69]
add eax, edx
mov qword [rbp - 0x11], r8
add al, byte [0x18004f628]
xor r8d, r8d
mov byte [rbp - 0x69], al
mov eax, dword [0x1809e7d20]
mov dword [rbp - 0x59], eax
mov eax, 0x7515
add eax, ebx
mov qword [0x18004f660], 3
mov word [0x18004f618], ax
mov al, byte [rbp - 0x49]
mov rax, qword [0x18004f660]
test rax, rax
je 0x18001722b
sub rax, 1
je 0x1800171ff
sub rax, 1
je 0x180017193
cmp rax, 1
jne 0x180017238
movsx rax, word [rbp - 0x61]
add eax, ebx
add ax, word [0x18004f628]
mov word [0x18004f630], ax
jmp 0x180017238
mov rax, qword [0x18004f600]
mov r9, r8
sub dword [0x18004f5cc], eax
movsx ecx, byte [rbp - 0x55]
movsx r8, byte [rbp - 0x69]
movsx eax, byte [0x18004f58e]
cmp eax, ecx
movabs rax, 0xacaef3b441564
sete r9b
xor r8, rax
mov rax, qword [rbp - 0x31]
not r8
neg rax
mov eax, dword [rbp - 0x51]
movzx ecx, word [0x18004f5f8]
sbb rdx, rdx
sub cx, ax
not rdx
and edx, 0x37
xor eax, eax
add cx, dx
cmp r8, r9
mov r9, qword [rbp - 0x11]
cmove ax, cx
xor r8d, r8d
mov word [rbp - 0x5d], ax
jmp 0x180017238
movzx eax, word [0x18004f630]
mov edx, dword [0x18004f564]
not eax
cdqe
add rax, rbx
not rax
add rdx, rax
mov eax, dword [0x18004f654]
sub rdx, rax
mov qword [0x18004f600], rdx
jmp 0x180017238
movsx eax, word [rbp - 0x5d]
movsx ecx, al
imul eax, ecx, 0x49
mov byte [rbp - 0x55], al
mov eax, dword [rbp - 0x59]
mov r14d, 1
add eax, 0x3ad
mov rdx, r8
mov dword [rbp - 0x65], eax
mov eax, dword [rbp - 0x59]
add eax, 0x21d
mov dword [rbp - 0x45], eax
mov eax, dword [rbp - 0x51]
sub eax, r14d
mov dword [rbp - 0x51], eax
mov eax, dword [rbp - 0x59]
add eax, 0x173
mov dword [rbp - 0x65], eax
movzx eax, word [0x18004f638]
mov al, byte [rbp - 0x69]
mov eax, dword [0x1809e7d20]
mov dword [rbp - 0x59], eax
mov eax, dword [rbp - 0x59]
add eax, 0x30c3
mov dword [rbp - 0x65], eax
movsxd rcx, dword [0x18004f62c]
movsx rax, word [0x18004f640]
and rax, rcx
mov qword [rbp - 0x19], rax
mov rax, qword [rbp - 0x31]
add rax, r14
mov qword [rbp - 0x31], rax
mov eax, dword [rbp - 0x59]
add eax, 0x636a
mov dword [rbp - 0x41], eax
movzx ecx, word [0x18004f66c]
movzx eax, word [rbp - 0x61]
cmp ax, cx
mov rax, rbx
not rax
setge dl
cmp rax, rdx
jl 0x1800172d9
mov rax, qword [rbp - 0x31]
mov r11d, dword [rbp - 0x19]
mov eax, dword [rbp - 0x59]
add eax, 0xbd13
mov dword [rbp - 0x4d], eax
mov ecx, dword [rbp - 0x4d]
mov eax, dword [rbp - 0x41]
xor ecx, eax
xor ecx, 0xdd8a
mov dword [rbp - 0x3d], ecx
mov qword [0x18004f600], r14
mov qword [rbp - 0x31], 0x79d8
mov rax, qword [0x18004f600]
test rax, rax
je 0x18001731e
cmp rax, r14
jne 0x180017322
lea r12d, [rsi - 0x21db]
jmp 0x180017322
mov byte [rbp - 0x69], 4
mov eax, dword [0x1809e7d20]
mov r14d, r10d
mov dword [rbp - 0x59], eax
movsx ecx, word [rbp - 0x5d]
add ecx, 0x202821a1
mov dword [rbp - 0x4d], ecx
mov eax, dword [rbp - 0x59]
add eax, 0xc4
mov dword [rbp - 0x41], eax
mov eax, dword [rbp - 0x59]
add eax, 0xb56f
mov dword [rbp - 0x65], eax
movzx eax, word [0x18004f658]
imul ecx, eax, 0x3c
mov word [0x18004f61c], cx
mov ecx, 0x78ad
mov rax, qword [rbp - 0x19]
sub ax, cx
mov word [rbp - 0x61], ax
mov eax, dword [rbp - 0x59]
add eax, 0xfb65
mov dword [rbp - 0x65], eax
mov eax, dword [rbp - 0x41]
sub eax, 0x75
xor eax, 0x2a6
cmp byte [0x18004f58f], r8b
mov dword [rbp - 0x41], eax
mov eax, r8d
sete al
mov dword [0x18004f63c], eax
mov eax, 0xda587d47
mov qword [0x18004f600], rax
mov eax, dword [0x1809e7d20]
mov dword [rbp - 0x59], eax
imul rax, r10, 0x7f86
mov qword [rbp - 0x21], rax
mov eax, dword [rbp - 0x59]
add eax, 0x7c
mov dword [rbp - 0x65], eax
mov eax, dword [rbp - 0x59]
add eax, 0xfd00
mov dword [rbp - 0x65], eax
mov al, byte [0x1809e7d20]
mov byte [0x18004f54b], al
mov eax, dword [rbp - 0x59]
add eax, 0x1d
mov word [0x180b239c0], di
mov dword [rbp - 0x65], eax
movabs rax, 0x78258423a6042
mov qword [0x18004f620], rax
mov qword [0x18004f608], 1
mov rax, qword [0x18004f608]
test rax, rax
je 0x180017444
cmp rax, 1
jne 0x180017444
shr r11d, 3
mov eax, 0x5a62
mov byte [0x18004f535], r11b
movsx ecx, word [0x18004f66c]
add cx, word [0x18004f668]
sub cx, ax
mov word [0x18004f66c], cx
movsx eax, byte [0x18004f537]
movabs r11, 0xee65e2321dc1f
cmp byte [0x18004f58e], r8b
mov word [0x18004f638], ax
mov rax, r8
sete al
and rax, rbx
mov rbx, qword [0x18004f600]
not rax
imul rbx, rax
movsx rax, word [rbp - 0x61]
sub rbx, r10
sub rbx, rax
mov rax, qword [0x18004f608]
add rbx, qword [0x18004f648]
sub rbx, rax
mov dword [rbp - 0x65], 0x36f
mov rax, qword [rbp - 0x21]
cmp rax, r11
jb 0x1800174e0
movzx eax, word [0x18004f638]
movzx eax, word [rbp - 0x61]
test ax, ax
jne 0x1800174e0
mov rax, qword [rbp - 0x31]
not eax
imul ecx, eax, 0xf849b57e
mov eax, dword [0x18004f54c]
imul eax, ecx
imul ecx, r15d, 0x36d52778
mov dword [0x18004f54c], eax
mov eax, dword [rbp - 0x51]
add ecx, eax
mov dword [rbp - 0x51], ecx
mov eax, dword [0x1809e7d20]
mov dword [rbp - 0x59], eax
movzx eax, word [0x18004f61c]
test ax, ax
je 0x18001752b
mov rax, qword [rbp - 0x31]
mov edx, r8d
mov rax, qword [rbp - 0x31]
mov dl, 1
mov ecx, r8d
mov cl, dl
cmp edx, ecx
ja 0x180017514
mov byte [0x18004f54b], 0xd4
jmp 0x180017551
cmp dword [0x18004f564], r14d
jb 0x180017551
mov eax, 0xffffcf3b
mov word [0x18004f66c], ax
jmp 0x180017551
mov eax, dword [rbp - 0x4d]
test eax, eax
je 0x180017551
mov eax, dword [rbp - 0x51]
not r10w
movzx eax, word [0x18004f650]
sub r10w, 0x65
add r10w, ax
mov word [0x18004f650], r10w
mov ecx, dword [rbp - 0x59]
xor r10d, r10d
mov eax, dword [rbp - 0x3d]
mov rsi, r15
add ecx, eax
mov qword [rsp + 0x40], r10
mov dword [rbp - 0x51], ecx
mov rdx, r13
mov ecx, dword [rbp - 0x59]
mov eax, dword [rbp - 0x41]
add ecx, eax
mov dword [rbp - 0x3d], ecx
mov r8, qword [rbp - 0x31]
mov rax, qword [rbp - 0x31]
mov r8, qword [rbp - 9]
mov byte [rbp - 0x69], r10b
movsx rcx, byte [0x18004f537]
mov rax, qword [rbp - 0x19]
sub rcx, r15
mov r15d, dword [rbp - 0x29]
sub cl, al
mov byte [0x18004f5b6], cl
lea rcx, [0x18002c3ee]
mov eax, dword [rbp - 0x59]
mov qword [rsp + 0x38], r10
add eax, 0x14f
mov qword [rsp + 0x30], r10
mov qword [rsp + 0x28], r10
mov dword [rbp - 0x41], eax
mov qword [rsp + 0x20], r15
call fcn.1800152bc
mov edx, dword [rbp - 0x3d]
mov r8, rax
mov eax, dword [rbp - 0x51]
or edx, eax
mov ecx, dword [rbp - 0x65]
mov eax, dword [rbp - 0x51]
sub ecx, 0x81
xor ecx, edx
cmp eax, ecx
je 0x180017bb6
mov eax, dword [0x1809e7d20]
xor r10d, r10d
movsx ecx, byte [0x18004f536]
mov edx, r10d
not ecx
mov dword [rbp - 0x51], eax
mov eax, dword [0x18004f654]
cmp eax, ecx
mov eax, dword [rbp - 0x4d]
mov ecx, r10d
sete dl
test eax, eax
sete cl
add ecx, dword [0x18004f564]
cmp edx, ecx
jne 0x180017649
movzx eax, word [0x18004f61c]
test ax, ax
je 0x180017649
mov rax, qword [rbp - 0x31]
mov ecx, 0xfffffb6f
movsx ecx, cx
movsx edx, ax
imul edx, ecx
mov word [0x18004f618], dx
mov eax, dword [rbp - 0x51]
add eax, 0xe2fc
mov dword [rbp - 0x65], eax
mov eax, dword [rbp - 0x51]
add eax, 0xb9b
mov dword [rbp - 0x65], eax
mov eax, dword [rbp - 0x51]
movsx ecx, word [0x18004f628]
add eax, 0x23
mov dword [rbp - 0x65], eax
xor ecx, r14d
mov dword [rbp - 0x51], 0x23096bc1
movsx edx, byte [rbp - 0x49]
movsx ecx, cl
imul edx, ecx
not dl
mov byte [0x18004f54b], dl
mov edx, r10d
mov eax, dword [rbp - 0x65]
imul ecx, eax, 0x9fa6
mov eax, 0x15d590
sub eax, ecx
mov dword [rbp - 0x29], eax
mov rax, qword [0x18004f648]
shl rax, 2
mov qword [0x18004f608], rax
mov eax, dword [0x1809e7d20]
mov dword [rbp - 0x4d], eax
movsxd rcx, dword [0x18004f634]
mov rax, qword [0x18004f610]
cmp rcx, rax
mov eax, dword [0x18004f634]
mov ecx, r10d
setle dl
cmp eax, 0x5e
setle cl
cmp edx, ecx
ja 0x180017755
mov eax, dword [rbp - 0x51]
mov edx, r10d
movsx ecx, byte [0x18004f58f]
cmp ecx, eax
mov eax, r10d
setg dl
cmp byte [0x18004f58f], 0x2c
setg al
cmp edx, eax
je 0x180017724
mov r9d, 1
lea rax, [rsi - 0xca]
and qword [0x18004f660], rax
mov word [0x18004f628], r9w
jmp 0x18001775b
mov al, byte [rbp - 0x69]
mov ecx, r10d
mov eax, dword [rbp - 0x39]
mov cl, 1
cmp eax, ecx
je 0x180017890
mov rax, qword [0x18004f600]
mov ecx, 0x55c6
sub ax, cx
mov word [0x18004f61c], ax
mov qword [rbp - 0x21], 0x37
mov r9d, 1
mov eax, dword [rbp - 0x4d]
mov ecx, 0x26b2
add eax, 0x767f
mov dword [rbp - 0x65], eax
mov al, byte [rbp - 0x69]
movzx eax, word [0x18004f5f8]
sub ax, cx
mov word [rbp - 0x5d], ax
neg rbx
movsx ecx, byte [rbp - 0x55]
sbb rdx, rdx
imul rax, qword [0x18004f620], 0x1d
neg rdx
add rdx, 0x1c
sub rdx, rax
movzx eax, word [rbp - 0x5d]
xor ax, cx
mov rcx, r10
mov eax, r10d
sete cl
add rcx, rdx
sete al
mov dword [rbp - 0x39], eax
mov eax, dword [rbp - 0x4d]
add eax, 0x4377
mov dword [rbp - 0x3d], eax
movsxd rax, dword [0x18004f54c]
cmp rax, qword [0x18004f658]
jle 0x1800177fa
movzx eax, word [0x18004f66c]
test ax, ax
je 0x1800177fa
movzx eax, word [rbp - 0x5d]
sub word [0x18004f618], ax
movsx edx, word [rbp - 0x61]
movsx eax, word [rbp - 0x61]
sub edx, eax
mov eax, dword [0x18004f63c]
add ax, dx
mov word [rbp - 0x61], ax
mov eax, dword [rbp - 0x4d]
mov ebx, 3
add eax, 0x35a9
mov dword [rbp - 0x3d], eax
mov rax, qword [0x18004f608]
mov ecx, dword [rbp - 0x65]
mov eax, 0x7a2f
or ecx, 0x515a
mov qword [0x18004f5f8], rbx
sub eax, ecx
mov dword [rbp - 0x3d], eax
mov eax, dword [0x1809e7d20]
mov dword [rbp - 0x4d], eax
mov eax, 0xffffa45b
and di, ax
mov word [0x18004f650], di
mov ecx, dword [rbp - 0x39]
mov eax, dword [rbp - 0x39]
sub rcx, rax
mov rax, qword [0x18004f610]
add eax, ecx
mov dword [rbp - 0x39], eax
mov rax, qword [0x18004f5f8]
test rax, rax
je 0x18001791d
sub rax, 1
je 0x180017907
sub rax, 1
je 0x1800178db
cmp rax, 1
jne 0x180017928
mov al, byte [0x180b1d6a8]
mov byte [rbp - 0x69], al
jmp 0x180017928
movsx ecx, word [rbp - 0x5d]
mov r9d, 1
not ecx
test ecx, ecx
je 0x1800178bf
movzx eax, word [rbp - 0x5d]
xor ax, word [0x180a6447c]
mov word [rbp - 0x5d], ax
mov eax, dword [0x18004f5f8]
inc eax
imul edi, eax
jmp 0x18001775b
mov eax, dword [rbp - 0x39]
mov eax, dword [rbp - 0x39]
mov eax, dword [0x1809e7d20]
mov qword [0x18004f5f8], rax
mov qword [rbp - 0x21], rax
jmp 0x18001775b
mov eax, dword [0x18004f654]
mov rcx, r10
add eax, 0x60
movsxd rax, dword [0x18004f54c]
sete cl
add rax, rcx
add rax, qword [0x18004f658]
mov rax, r10
sete al
mov qword [rbp - 0x31], rax
jmp 0x180017928
movsx eax, byte [0x180a63d49]
dec byte [0x18004f563]
mov word [0x18004f66c], ax
jmp 0x180017928
movzx eax, word [0x1809e7d20]
mov word [rbp - 0x61], ax
mov eax, dword [rbp - 0x4d]
mov edx, 0x1ca3
add eax, 0x83
mov dword [rbp - 0x65], eax
mov qword [0x18004f610], 0x4ba
mov eax, dword [rbp - 0x4d]
add eax, 0x102
mov dword [rbp - 0x65], eax
mov eax, dword [rbp - 0x4d]
add eax, 0x1b81
mov dword [rbp - 0x65], eax
movzx eax, word [rbp - 0x61]
imul eax, eax, 0x49
mov word [0x18004f630], ax
mov ecx, dword [rbp - 0x45]
mov eax, dword [rbp - 0x45]
xor ecx, eax
mov eax, dword [rbp - 0x45]
imul eax, ecx
imul ecx, eax, 0x135
mov eax, dword [rbp - 0x65]
sub edx, ecx
sub edx, eax
movsx eax, byte [0x18004f536]
mov dword [rbp - 0x41], edx
mov ecx, dword [rbp - 0x51]
sub ecx, eax
mov eax, dword [0x1809e7d20]
mov dword [rbp - 0x51], ecx
mov dword [rbp - 0x45], eax
mov eax, dword [0x18004f63c]
mov eax, dword [rbp - 0x45]
add eax, 0x4b22
mov dword [rbp - 0x65], eax
movzx ecx, word [0x18004f66c]
movzx eax, word [rbp - 0x61]
cmp cx, ax
jne 0x1800179ec
movsx eax, byte [0x18004f58e]
not eax
test eax, eax
je 0x1800179ec
movzx ecx, word [0x18004f564]
mov eax, 0x2225
imul ecx, eax
mov qword [0x18004f648], 8
mov word [0x18004f668], cx
mov eax, dword [rbp - 0x45]
mov ecx, r10d
add eax, 0xde
mov dword [rbp - 0x65], eax
movzx eax, word [rbp - 0x5d]
test ax, ax
movsx eax, byte [0x18004f58f]
sete cl
cmp eax, ecx
jg 0x180017a3a
movzx eax, word [0x18004f650]
cmp r10w, ax
je 0x180017a3a
movzx eax, word [0x18004f668]
sub eax, 0x71a9c697
mov dword [0x18004f5cc], eax
mov al, byte [0x18004f660]
shl al, 3
mov byte [rbp - 0x69], al
mov eax, dword [rbp - 0x45]
mov ecx, 0x148
add eax, 0x55
mov dword [rbp - 0x45], eax
mov eax, dword [rbp - 0x65]
sub ecx, eax
mov dword [rbp - 0x65], ecx
test r8, r8
jne 0x180017bb6
movsx ecx, byte [rbp - 0x69]
mov eax, dword [0x18004f63c]
cmp ecx, eax
jne 0x180017ad8
movsx rcx, byte [0x18004f535]
mov edx, r10d
mov rax, qword [0x18004f610]
cmp rcx, rax
mov al, byte [0x18004f535]
mov ecx, r10d
sete dl
cmp al, 0x4d
sete cl
cmp edx, ecx
ja 0x180017aa1
movzx eax, word [0x1809e7d20]
mov word [0x18004f640], ax
jmp 0x180017af8
movzx ecx, word [0x18004f630]
mov eax, dword [0x18004f634]
sub cx, ax
mov eax, 0x7af5
add cx, ax
cmp dword [0x18004f644], r10d
mov word [0x18004f630], cx
je 0x180017acf
movzx eax, word [rbp - 0x5d]
jmp 0x180017af8
movzx eax, word [0x18004f630]
jmp 0x180017af8
test r12d, r12d
je 0x180017af8
mov al, byte [0x18004f564]
neg al
shl al, 4
mov byte [rbp - 0x69], al
movsx eax, byte [0x18004f537]
imul eax, eax, 0xffffffef
mov byte [rbp - 0x55], al
mov eax, dword [0x1809e7d20]
mov dword [rbp - 0x45], eax
mov ecx, dword [rbp - 0x45]
mov eax, dword [rbp - 0x29]
add ecx, eax
mov dword [rbp - 0x29], ecx
movsx edx, byte [0x18004f537]
movsx ecx, byte [0x18004f658]
imul edx, ecx
mov byte [0x18004f535], dl
mov ecx, dword [rbp - 0x45]
mov eax, dword [rbp - 0x3d]
add ecx, eax
mov dword [rbp - 0x4d], ecx
movabs rax, 0xb9058a560c8f3
mov qword [rbp - 0x19], rax
mov ecx, dword [rbp - 0x45]
mov eax, dword [rbp - 0x41]
add ecx, eax
mov dword [rbp - 0x3d], ecx
mov ecx, dword [rbp - 0x4d]
mov eax, dword [rbp - 0x65]
sub ecx, eax
mov eax, dword [rbp - 0x29]
add ecx, eax
mov eax, dword [rbp - 0x4d]
cmp ecx, eax
je 0x180017bb6
mov dword [rbp - 1], 0x8d9697c5
mov rcx, r10
mov dword [rbp + 3], 0x8c969fd9
mov dword [rbp + 7], 0xc79d97
xor byte [rbp + rcx - 1], 0xf9
add rcx, r9
cmp rcx, 0xb
jb 0x180017b73
mov rdx, qword [rbp - 0x11]
lea r9d, [r15 - 1]
mov qword [rsp + 0x40], r10
lea r8, [rbp - 1]
mov qword [rsp + 0x38], r10
lea rcx, [0x18002ec90]
mov qword [rsp + 0x30], r10
mov qword [rsp + 0x28], r10
mov qword [rsp + 0x20], r10
call fcn.1800152bc
mov eax, ebx
jmp 0x180017bb8
xor eax, eax
mov rcx, qword [rbp + 0xf]
xor rcx, rsp
call fcn.18002c480
add rsp, 0xd8
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret