Function at 0x1800177a0
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rsi
push rbp
push rdi
push r12
push r14
push r15
lea rbp, [rsp - 0x30]
sub rsp, 0x130
mov rax, qword [0x18001f140]
xor rax, rsp
mov qword [rbp + 0x10], rax
cmp edx, 1
jne 0x180018152
lea rdi, str.20:32:42
mov rbx, rdi
nop
inc rbx
cmp byte [rbx], 0
jne 0x1800177e0
sub ebx, edi
mov eax, 2
movsxd rcx, ebx
inc rcx
mul rcx
mov rcx, 0xffffffffffffffff
cmovo rax, rcx
mov rcx, rax
call fcn.180018cb4
xor r10d, r10d
mov r9, rax
mov r8d, r10d
test ebx, ebx
jle 0x180017914
cmp ebx, 4
jb 0x180017914
lea ecx, [rbx - 1]
movsxd rdx, ecx
lea rcx, [rax + rdx*2]
lea rax, [rdx + rdi]
cmp r9, rax
ja 0x180017841
cmp rcx, rdi
jae 0x180017914
cmp ebx, 0x20
jb 0x1800178d8
mov ecx, ebx
and ecx, 0x8000001f
jge 0x18001785b
dec ecx
or ecx, 0xffffffe0
inc ecx
mov eax, ebx
sub eax, ecx
movsxd rdx, eax
mov rcx, r10
lea rax, [r9 + 0x20]
nop dword [rax]
movq xmm0, qword [rcx + rdi]
lea rax, [rax + 0x40]
movq xmm1, qword [rcx + rdi + 8]
add r8d, 0x20
punpcklbw xmm0, xmm0
punpcklbw xmm1, xmm1
psraw xmm0, 8
movdqu xmmword [rax - 0x60], xmm0
movq xmm0, qword [rcx + rdi + 0x10]
psraw xmm1, 8
movdqu xmmword [rax - 0x50], xmm1
movq xmm1, qword [rcx + rdi + 0x18]
add rcx, 0x20
punpcklbw xmm0, xmm0
punpcklbw xmm1, xmm1
psraw xmm0, 8
psraw xmm1, 8
movdqu xmmword [rax - 0x40], xmm0
movdqu xmmword [rax - 0x30], xmm1
cmp rcx, rdx
jl 0x180017870
mov eax, ebx
and al, 0x1f
cmp al, 4
jb 0x180017914
mov ecx, ebx
and ecx, 0x80000003
jge 0x1800178e9
dec ecx
or ecx, 0xfffffffc
inc ecx
mov eax, ebx
sub eax, ecx
movsxd rcx, r8d
movsxd rdx, eax
movd xmm0, dword [rcx + rdi]
add r8d, 4
punpcklbw xmm0, xmm0
psraw xmm0, 8
movq qword [r9 + rcx*2], xmm0
add rcx, 4
cmp rcx, rdx
jl 0x1800178f3
movsxd rcx, r8d
movsxd rdx, ebx
cmp rcx, rdx
jge 0x180017937
nop
movsx eax, byte [rcx + rdi]
mov word [r9 + rcx*2], ax
inc rcx
cmp rcx, rdx
jl 0x180017920
movzx ecx, r10w
jmp 0x18001793a
mov ecx, r10d
movups xmm1, xmmword [0x18001cec0]
movups xmm0, xmmword [0x18001ceb0]
mov eax, dword [0x18001cef0]
movups xmmword [rbp - 0x30], xmm1
movups xmm1, xmmword [0x18001cee0]
movups xmmword [rbp - 0x40], xmm0
movups xmm0, xmmword [0x18001ced0]
mov dword [rbp], eax
lea rax, [r9 + rdx*2]
movups xmmword [rbp - 0x10], xmm1
movups xmmword [rbp - 0x20], xmm0
mov word [rax], cx
mov ecx, r10d
cmp dword [0x18001f188], 2
jl 0x180017a6a
movdqa xmm4, xmmword [0x18001d3b0]
lea rdx, [rbp - 0x38]
movdqa xmm5, xmmword [0x18001d3c0]
movaps xmmword [rsp + 0x120], xmm6
movdqa xmm6, xmmword [0x18001d460]
nop word [rax + rax]
xorps xmm0, xmm0
movd xmm1, ecx
pshufd xmm1, xmm1, 0
lea eax, [rcx + 4]
paddd xmm1, xmm4
lea rdx, [rdx + 0x10]
pcmpgtd xmm0, xmm1
movq xmm2, xmm6
andps xmm0, xmm5
add ecx, 8
paddd xmm0, xmm1
psrad xmm0, 2
pslld xmm0, 2
psubd xmm1, xmm0
pshuflw xmm0, xmm1, 0xd8
pshufhw xmm1, xmm0, 0xd8
movq xmm0, qword [rdx - 0x18]
pshufd xmm3, xmm1, 0xd8
movd xmm1, eax
psubw xmm3, xmm2
pshufd xmm1, xmm1, 0
xorps xmm3, xmm0
movq qword [rdx - 0x18], xmm3
xorps xmm0, xmm0
paddd xmm1, xmm4
movq xmm2, xmm6
pcmpgtd xmm0, xmm1
andps xmm0, xmm5
paddd xmm0, xmm1
psrad xmm0, 2
pslld xmm0, 2
psubd xmm1, xmm0
pshuflw xmm0, xmm1, 0xd8
pshufhw xmm1, xmm0, 0xd8
movq xmm0, qword [rdx - 0x10]
pshufd xmm3, xmm1, 0xd8
psubw xmm3, xmm2
xorps xmm3, xmm0
movq qword [rdx - 0x10], xmm3
cmp ecx, 0x20
jl 0x1800179b0
movaps xmm6, xmmword [rsp + 0x120]
cmp ecx, 0x22
jge 0x180017a97
movsxd rax, ecx
lea rdx, [rbp - 0x40]
lea rdx, [rdx + rax*2]
mov eax, ecx
and eax, 0x80000003
jge 0x180017a85
dec eax
or eax, 0xfffffffc
inc eax
sub ax, 0x77
inc ecx
xor word [rdx], ax
add rdx, 2
cmp ecx, 0x22
jl 0x180017a75
call fcn.180018670
test rax, rax
je 0x180017ba1
mov rcx, qword [rax + 0x18]
test rcx, rcx
je 0x180017ba1
mov r14, qword [rcx + 0x20]
lea r15, [rcx + 0x20]
cmp r14, r15
je 0x180017ba1
movzx r12d, word [rbp - 0x40]
xor r8d, r8d
nop dword [rax + rax]
mov r11, qword [r14 + 0x40]
mov eax, r8d
mov rcx, r11
test r11, r11
je 0x180017afc
cmp word [r11], 0
je 0x180017afc
nop word [rax + rax]
inc eax
lea rcx, [rcx + 2]
cmp word [rcx], 0
jne 0x180017af0
lea rcx, [rbp - 0x40]
mov edx, r8d
test r12w, r12w
je 0x180017b1c
nop dword [rax]
inc edx
lea rcx, [rcx + 2]
cmp word [rcx], 0
jne 0x180017b10
cmp eax, edx
jl 0x180017b93
sub eax, edx
movsxd r10, edx
movsxd rsi, eax
mov rdi, r8
lea rax, [rbp - 0x40]
sub r11, rax
mov r9, r8
test r10, r10
je 0x180017b7b
lea rbx, [rbp - 0x40]
add rbx, r11
movzx ecx, word [rbx + r9*2]
movzx r8d, word [rbp + r9*2 - 0x40]
lea eax, [rcx - 0x41]
cmp ax, 0x19
lea edx, [rcx + 0x20]
lea eax, [r8 - 0x41]
cmova dx, cx
cmp ax, 0x19
lea ecx, [r8 + 0x20]
cmova cx, r8w
cmp dx, cx
jne 0x180017b81
inc r9
cmp r9, r10
jb 0x180017b41
xor r8d, r8d
mov r12, qword [r14 + 0x20]
jmp 0x180017ba7
inc rdi
add r11, 2
mov r8d, 0
cmp rdi, rsi
jbe 0x180017b32
mov r14, qword [r14]
cmp r14, r15
jne 0x180017ad0
jmp 0x180017ba4
xor r8d, r8d
mov r12, r8
mov qword [rsp + 0x50], r12
mov qword [0x18001f9e8], r12
test r12, r12
jne 0x180017bbf
xor eax, eax
jmp 0x180018157
movsxd rsi, dword [r12 + 0x3c]
mov rbx, r8
add rsi, r12
mov qword [rsp + 0x160], r13
mov qword [rbp - 0x58], rbx
mov r13, r8
mov qword [rbp - 0x50], r8
mov edi, r8d
mov qword [rsp + 0x40], rsi
movzx r15d, word [rsi + 0x14]
mov eax, dword [rsi + 0x50]
add r15, 0x24
mov dword [rsp + 0x48], eax
mov dword [rsp + 0x38], r8d
cmp r8w, word [rsi + 6]
jae 0x180017d91
add r15, rsi
nop dword [rax + rax]
test dword [r15 + 0x18], 0x2000000
jne 0x180017d73
mov edx, dword [r15]
add rdx, r12
nop dword [rax]
nop dword [rax + rax]
mov qword [rsp + 0x28], r8
lea r9, [rsp + 0x60]
xor r8d, r8d
mov qword [rbp - 0x78], 0
mov qword [rbp - 0x80], 0
mov qword [rsp + 0x78], 0
mov qword [rsp + 0x70], 0
lea rcx, [r8 - 1]
mov qword [rsp + 0x68], 0
mov qword [rsp + 0x60], 0
mov qword [rsp + 0x20], 0x30
call fcn.180018770
test eax, eax
jne 0x180017d67
mov ecx, dword [rbp - 0x7c]
mov rsi, qword [rsp + 0x60]
lea eax, [rcx - 0x20]
test eax, 0xffffff9f
jne 0x180017d43
cmp ecx, 0x60
je 0x180017d43
mov rdx, qword [rsp + 0x78]
lea rax, [rdx - 0x10]
test rax, rax
je 0x180017d48
xor ecx, ecx
lea edi, [rcx + 2]
cmp byte [rcx + rsi], 0x48
lea r14, [rcx + rsi]
jne 0x180017d33
lea eax, [rdi - 1]
cmp byte [rax + rsi], 0x83
jne 0x180017d33
mov eax, edi
cmp byte [rax + rsi], 0xc4
jne 0x180017d33
lea eax, [rdi + 2]
cmp byte [rax + rsi], 0xc3
jne 0x180017d33
lea eax, [rdi + 1]
movzx eax, byte [rax + rsi]
lea rdx, [rsp + 0x30]
lea rcx, [rbp - 0x58]
mov byte [rsp + 0x30], al
call fcn.1800182c0
mov rbx, rax
mov rdx, qword [rax + 0x10]
test rdx, rdx
jne 0x180017d11
mov edx, 8
jmp 0x180017d18
cmp qword [rax], rdx
jne 0x180017d20
add edx, edx
mov rcx, rbx
call fcn.180018500
mov rcx, qword [rbx]
mov rax, qword [rbx + 8]
mov qword [rax + rcx*8], r14
inc qword [rbx]
mov rdx, qword [rsp + 0x78]
inc edi
lea rax, [rdx - 0x10]
lea ecx, [rdi - 2]
cmp rcx, rax
jb 0x180017cc1
jmp 0x180017d48
mov rdx, qword [rsp + 0x78]
mov eax, dword [r15 - 4]
add rdx, rsi
mov ecx, dword [r15]
add rax, r12
add rcx, rax
mov r8d, 0
cmp rdx, rcx
jb 0x180017c30
mov edi, dword [rsp + 0x38]
xor r8d, r8d
mov rsi, qword [rsp + 0x40]
movzx eax, word [rsi + 6]
inc edi
add r15, 0x28
mov dword [rsp + 0x38], edi
cmp edi, eax
jl 0x180017c10
mov r13, qword [rbp - 0x50]
mov rbx, qword [rbp - 0x58]
mov qword [rsp + 0x40], r8
mov r12, r8
mov qword [rsp + 0x38], r8
mov r14, r8
movsxd rdi, r13d
mov r15, r8
test r13d, r13d
je 0x180017dc2
mov rcx, rdi
call fcn.180018cb4
mov r14, rax
mov qword [rsp + 0x38], rax
xor r8d, r8d
mov r15, rdi
mov ecx, 0xe0
mov qword [rbp - 0x70], r8
mov rdi, r8
call fcn.180018cb4
shl r13, 5
mov esi, 0x1c
add r13, rbx
mov qword [rbp - 0x68], rax
mov qword [rbp - 0x60], rsi
mov qword [rsp + 0x58], r13
cmp rbx, r13
je 0x180017f30
lea r9, [section..data]
nop dword [rax]
mov ecx, dword [0x18001f284]
mov eax, 0x86186187
movsx r8, byte [rbx]
add ecx, 0x3ad
mul ecx
mov eax, ecx
shr r8, 3
sub eax, edx
shr eax, 1
add eax, edx
shr eax, 4
imul eax, eax, 0x15
sub ecx, eax
mov dword [0x18001f284], ecx
cmp ecx, 0xa
jae 0x180017e44
add ecx, 0x15
cmp ecx, 0xa
jb 0x180017e36
mov dword [0x18001f284], ecx
mov eax, ecx
xor edx, edx
div qword [rbx + 8]
mov rax, qword [rbx + 0x10]
movsxd rcx, edx
mov rax, qword [rax + rcx*8]
mov qword [r9 + r8*8], rax
cmp r8, 0xa
jae 0x180017f14
test r8b, 1
je 0x180017f14
test r15, r15
jne 0x180017eb8
lea ecx, [r15 + 8]
call fcn.180018cb4
xor r8d, r8d
mov r9, rax
test r12, r12
je 0x180017ea6
mov rdx, rax
sub r14, rax
nop
movzx ecx, byte [r14 + rdx]
inc r8d
movsxd rax, r8d
mov byte [rdx], cl
lea rdx, [rdx + 1]
cmp rax, r12
jb 0x180017e90
mov r14, r9
mov r15d, 8
lea r9, [section..data]
jmp 0x180017f0a
cmp r12, r15
jne 0x180017f0a
lea eax, [r15 + r15]
movsxd r13, eax
cmp r13, r15
jbe 0x180017f05
mov rcx, r13
call fcn.180018cb4
xor r8d, r8d
mov r9, rax
test r12, r12
je 0x180017ef8
mov rdx, rax
sub r14, rax
movzx ecx, byte [r14 + rdx]
inc r8d
movsxd rax, r8d
mov byte [rdx], cl
lea rdx, [rdx + 1]
cmp rax, r12
jb 0x180017ee2
mov r14, r9
mov r15, r13
lea r9, [section..data]
mov r13, qword [rsp + 0x58]
movzx eax, byte [rbx]
mov byte [r14 + r12], al
inc r12
add rbx, 0x20
cmp rbx, r13
jne 0x180017e00
mov qword [rsp + 0x40], r12
mov qword [rsp + 0x38], r14
nop dword [rax + rax]
mov ecx, dword [0x18001f284]
mov eax, 0x86186187
add ecx, 0x3ad
mul ecx
mov eax, ecx
sub eax, edx
shr eax, 1
add eax, edx
shr eax, 4
imul eax, eax, 0x15
sub ecx, eax
mov dword [0x18001f284], ecx
cmp ecx, 0xa
jae 0x180017f6e
nop
add ecx, 0x15
cmp ecx, 0xa
jb 0x180017f60
mov dword [0x18001f284], ecx
xor edx, edx
mov eax, ecx
div r12
mov ebx, ecx
movsxd rcx, edx
movsx rdx, byte [rcx + r14]
lea rcx, [rbp - 0x58]
mov r13, rdx
mov byte [rsp + 0x30], dl
lea rdx, [rsp + 0x30]
shr r13, 3
call fcn.1800182c0
mov r8, rax
xor edx, edx
mov eax, ebx
div qword [r8]
mov rax, qword [r8 + 8]
movsxd rcx, edx
mov rbx, qword [rax + rcx*8]
test rsi, rsi
jne 0x180017fb7
lea edx, [rsi + 8]
jmp 0x180017fbf
cmp rdi, rsi
jne 0x180017fd0
lea edx, [rsi + rsi]
lea rcx, [rbp - 0x70]
call fcn.180018500
mov rdi, qword [rbp - 0x70]
mov rsi, qword [rbp - 0x60]
mov rax, qword [rbp - 0x68]
xor r15d, r15d
mov qword [rax + rdi*8], rbx
inc rdi
mov qword [rbp - 0x70], rdi
test r13, r13
je 0x180018088
mov r12, qword [rsp + 0x50]
mov r14d, dword [rsp + 0x48]
mov ecx, dword [0x18001f284]
mov eax, 0x86186187
add ecx, 0x3ad
mul ecx
mov eax, ecx
sub eax, edx
shr eax, 1
add eax, edx
shr eax, 4
imul eax, eax, 0x15
sub ecx, eax
mov dword [0x18001f284], ecx
cmp ecx, 0xa
jae 0x180018031
add ecx, 0x15
cmp ecx, 0xa
jb 0x180018023
mov dword [0x18001f284], ecx
xor edx, edx
mov eax, ecx
div r14d
mov ebx, edx
add rbx, r12
test rsi, rsi
jne 0x180018047
lea edx, [rsi + 8]
jmp 0x18001804f
cmp rdi, rsi
jne 0x180018060
lea edx, [rsi + rsi]
lea rcx, [rbp - 0x70]
call fcn.180018500
mov rdi, qword [rbp - 0x70]
mov rsi, qword [rbp - 0x60]
mov rax, qword [rbp - 0x68]
inc r15d
mov ecx, r15d
mov qword [rax + rdi*8], rbx
inc rdi
mov qword [rbp - 0x70], rdi
cmp rcx, r13
jb 0x180017ff5
mov r14, qword [rsp + 0x38]
mov r12, qword [rsp + 0x40]
cmp rdi, 0xe
jb 0x180017f30
mov r13, qword [rsp + 0x160]
mov rcx, 0xffffffffffffffff
mov eax, 8
mov qword [0x18001f108], rdi
mul rdi
cmovo rax, rcx
mov rcx, rax
call fcn.180018cb4
mov rcx, qword [0x18001f108]
mov rdx, rax
mov qword [0x18001f100], rax
mov rax, qword [rbp - 0x68]
lea rcx, [rcx*8]
cmp rdx, rax
jbe 0x180018116
add rax, rcx
cmp rdx, rax
jae 0x180018116
lea r8, [rcx - 1]
add r8, rdx
lea rdx, [rax - 1]
test rcx, rcx
je 0x180018141
nop word [rax + rax]
movzx eax, byte [rdx]
lea rdx, [rdx - 1]
mov byte [r8], al
lea r8, [r8 - 1]
sub rcx, 1
jne 0x180018100
jmp 0x180018141
test rcx, rcx
je 0x180018141
mov r8, qword [rbp - 0x68]
sub r8, rdx
nop dword [rax]
nop word [rax + rax]
movzx eax, byte [r8 + rdx]
mov byte [rdx], al
lea rdx, [rdx + 1]
sub rcx, 1
jne 0x180018130
lea rdx, [0x180016850]
mov ecx, 0x13041052
call fcn.180018680
mov eax, 1
mov rcx, qword [rbp + 0x10]
xor rcx, rsp
call fcn.180018790
lea r11, [rsp + 0x130]
mov rbx, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rsp, r11
pop r15
pop r14
pop r12
pop rdi
pop rbp
ret