Function at 0x140118e30
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x168
mov qword [rsp + 0x48], r8
cmp rdx, 0x15
jae 0x140118e80
mov rdi, rdx
mov r15, rcx
cmp rdi, 1
jbe 0x140118e6b
mov r8d, 1
mov rcx, r15
mov rdx, rdi
call fcn.14013a340
nop
add rsp, 0x168
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov ebp, r9d
mov qword [rsp + 0x40], rdx
mov qword [rsp + 0x28], rcx
mov byte [rsp + 0x38], 1
mov byte [rsp + 0x30], 1
movzx eax, byte [rsp + 0x38]
and byte [rsp + 0x30], al
mov r15, qword [rsp + 0x28]
mov r12, qword [rsp + 0x40]
nop word [rax + rax]
test ebp, ebp
je 0x140119aa1
test byte [rsp + 0x38], 1
je 0x1401193bf
mov rdx, r12
shr rdx, 2
lea rax, [rdx + rdx]
lea rcx, [rdx + rdx*2]
cmp r12, 0x31
jbe 0x140118f30
lea r9, [rdx - 1]
mov r10d, dword [r15 + rdx*8]
mov r11d, dword [r15 + rdx*8 + 4]
mov edi, dword [r15 + rdx*8 - 8]
mov r14d, dword [r15 + rdx*8 - 4]
xor r8d, r8d
cmp r11d, r14d
setb r8b
xor ebx, ebx
cmp r10d, edi
setb bl
cmove ebx, r8d
cmp bl, 1
mov dword [rsp + 0x24], ebp
jne 0x140118f40
mov r8d, 1
mov rbx, r9
mov r9, rdx
mov r11d, r14d
mov r10d, edi
jmp 0x140118f46
xor r8d, r8d
mov r13, rax
jmp 0x140119123
xor r8d, r8d
mov rbx, rdx
mov edi, dword [r15 + rdx*8 + 8]
mov r14d, dword [r15 + rdx*8 + 0xc]
xor r13d, r13d
cmp r14d, r11d
setb r13b
xor ebp, ebp
cmp edi, r10d
setb bpl
cmove ebp, r13d
cmp bpl, 1
jne 0x140118f80
inc rdx
inc r8
jmp 0x140118f89
mov r14d, r11d
mov edi, r10d
mov rdx, rbx
xor r10d, r10d
cmp r14d, dword [r15 + r9*8 + 4]
setb r10b
xor r11d, r11d
cmp edi, dword [r15 + r9*8]
setb r11b
cmove r11d, r10d
movzx r10d, r11b
add r8, r10
test r10b, r10b
cmovne rdx, r9
lea r9, [rax - 1]
mov ebx, dword [r15 + rax*8]
mov r14d, dword [r15 + rax*8 + 4]
mov r10d, dword [r15 + rax*8 - 8]
mov r11d, dword [r15 + rax*8 - 4]
xor edi, edi
cmp r14d, r11d
setb dil
xor ebp, ebp
cmp ebx, r10d
setb bpl
cmove ebp, edi
cmp bpl, 1
jne 0x140118ff0
inc r8
mov rdi, r9
mov r9, rax
jmp 0x140118ff9
mov rdi, rax
mov r11d, r14d
mov r10d, ebx
mov r13, rax
or r13, 1
mov ebx, dword [r15 + r13*8]
mov r14d, dword [r15 + r13*8 + 4]
xor ebp, ebp
cmp r14d, r11d
setb bpl
xor esi, esi
cmp ebx, r10d
setb sil
cmove esi, ebp
cmp sil, 1
jne 0x140119030
inc r8
jmp 0x140119039
mov r13, rdi
mov r14d, r11d
mov ebx, r10d
xor r10d, r10d
cmp r14d, dword [r15 + r9*8 + 4]
setb r10b
xor r11d, r11d
cmp ebx, dword [r15 + r9*8]
setb r11b
cmove r11d, r10d
movzx r10d, r11b
add r8, r10
test r10b, r10b
cmovne r13, r9
lea r9, [rcx - 1]
mov ebx, dword [r15 + rcx*8]
mov r14d, dword [r15 + rcx*8 + 4]
mov r11d, dword [r15 + rcx*8 - 8]
mov edi, dword [r15 + rcx*8 - 4]
xor r10d, r10d
cmp r14d, edi
setb r10b
xor esi, esi
cmp ebx, r11d
setb sil
cmove esi, r10d
cmp sil, 1
jne 0x1401190b0
inc r8
mov r10, r9
mov r9, rcx
jmp 0x1401190b9
mov r10, rcx
mov edi, r14d
mov r11d, ebx
mov ebx, dword [r15 + rcx*8 + 8]
mov r14d, dword [r15 + rcx*8 + 0xc]
xor esi, esi
cmp r14d, edi
setb sil
xor ebp, ebp
cmp ebx, r11d
setb bpl
cmove ebp, esi
cmp bpl, 1
jne 0x1401190f0
inc rcx
inc r8
mov r10, rcx
jmp 0x1401190f6
mov r14d, edi
mov ebx, r11d
mov ebp, dword [rsp + 0x24]
xor ecx, ecx
cmp r14d, dword [r15 + r9*8 + 4]
setb cl
xor r11d, r11d
cmp ebx, dword [r15 + r9*8]
setb r11b
cmove r11d, ecx
movzx ecx, r11b
add r8, rcx
test cl, cl
cmovne r10, r9
mov rcx, r10
mov edi, dword [r15 + r13*8]
mov ebx, dword [r15 + r13*8 + 4]
mov r9d, dword [r15 + rdx*8]
mov r10d, dword [r15 + rdx*8 + 4]
xor r11d, r11d
cmp ebx, r10d
setb r11b
xor r14d, r14d
cmp edi, r9d
setb r14b
cmove r14d, r11d
cmp r14b, 1
jne 0x140119160
inc r8
mov r11, rdx
jmp 0x14011916c
mov r11, r13
mov r13, rdx
mov r10d, ebx
mov r9d, edi
mov edx, dword [r15 + rcx*8]
mov edi, dword [r15 + rcx*8 + 4]
xor ebx, ebx
cmp edi, r10d
setb bl
xor r14d, r14d
cmp edx, r9d
setb r14b
cmove r14d, ebx
cmp r14b, 1
jne 0x1401191a0
inc r8
jmp 0x1401191a9
mov rcx, r11
mov edi, r10d
mov edx, r9d
movabs rbx, 0x1ffffffffffffffe
xor r9d, r9d
cmp edi, dword [r15 + r13*8 + 4]
setb r9b
xor r10d, r10d
cmp edx, dword [r15 + r13*8]
setb r10b
cmove r10d, r9d
cmp r10b, 1
jne 0x140119210
mov ecx, r8d
mov r8d, 1
cmp ecx, 0xb
jb 0x140119213
mov rcx, r12
shr rcx, 1
lea rdx, [r15 + r12*8]
lea r8, [rcx*8]
sub rdx, r8
cmp rcx, 1
jne 0x140119224
xor r8d, r8d
jmp 0x140119268
mov r13, rcx
test r8, r8
sete al
test byte [rsp + 0x30], al
je 0x140119299
jmp 0x1401193d1
lea r9, [r12 - 1]
xor r8d, r8d
nop dword [rax]
mov r10, qword [r15 + r9*8]
mov r11, qword [r15 + r8*8]
mov qword [r15 + r8*8], r10
mov qword [r15 + r9*8], r11
mov r10, r8
xor r10, rbx
add r10, rcx
mov r11, qword [rdx + r10*8]
mov rsi, qword [r15 + r8*8 + 8]
mov qword [r15 + r8*8 + 8], r11
mov qword [rdx + r10*8], rsi
add r8, 2
add r9, 0xfffffffffffffffe
cmp rax, r8
jne 0x140119230
test r12b, 2
je 0x140119287
mov rax, r8
not rax
add rcx, rax
mov rax, qword [rdx + rcx*8]
mov r9, qword [r15 + r8*8]
mov qword [r15 + r8*8], rax
mov qword [rdx + rcx*8], r9
not r13
add r13, r12
mov al, 1
test byte [rsp + 0x30], al
jne 0x1401193d1
cmp qword [rsp + 0x48], 0
je 0x1401193f0
cmp r13, r12
jae 0x140119ab1
mov rcx, qword [rsp + 0x48]
mov eax, dword [rcx]
mov ecx, dword [rcx + 4]
xor edx, edx
cmp ecx, dword [r15 + r13*8 + 4]
setb dl
xor ecx, ecx
cmp eax, dword [r15 + r13*8]
setb cl
cmove ecx, edx
test cl, cl
jne 0x1401193fa
mov rax, qword [r15]
mov rcx, qword [r15 + r13*8]
mov qword [r15], rcx
mov qword [r15 + r13*8], rax
lea r8, [r12 - 1]
mov eax, dword [r15]
mov edx, dword [r15 + 4]
lea r9, [r15 + 8]
xor ecx, ecx
cmp rcx, r8
jae 0x14011932d
nop dword [rax + rax]
xor r10d, r10d
cmp edx, dword [r15 + rcx*8 + 0xc]
setb r10b
xor r11d, r11d
cmp eax, dword [r15 + rcx*8 + 8]
setb r11b
cmove r11d, r10d
cmp r11b, 1
je 0x14011932d
inc rcx
cmp r8, rcx
jne 0x140119300
mov rcx, r8
lea r10, [r9 + r8*8]
nop word cs:[rax + rax]
dec r8
cmp rcx, r8
jae 0x140119390
lea r11, [r10 - 8]
xor esi, esi
cmp edx, dword [r10 - 4]
setb sil
xor edi, edi
cmp eax, dword [r10 - 8]
setb dil
cmove edi, esi
mov r10, r11
test dil, dil
jne 0x140119340
mov r10, qword [r15 + rcx*8 + 8]
mov rsi, qword [r11]
mov qword [r15 + rcx*8 + 8], rsi
mov qword [r11], r10
inc rcx
cmp rcx, r8
jb 0x140119300
jmp 0x14011932d
inc rcx
shl rdx, 0x20
or rdx, rax
mov qword [r15], rdx
mov rdi, r12
sub rdi, rcx
jb 0x140119ae4
lea r15, [r15 + rcx*8]
mov r12, rdi
cmp rdi, 0x15
jae 0x140118eb0
jmp 0x140118e54
mov rcx, r15
mov rdx, r12
call fcn.140139dc0
dec ebp
jmp 0x140118ec3
mov rcx, r15
mov rdx, r12
call fcn.140139f10
test al, al
je 0x140119299
jmp 0x140118e6b
mov r15, qword [rsp + 0x28]
mov r12, qword [rsp + 0x40]
cmp r13, r12
jae 0x140119ac3
mov rax, qword [r15]
mov rcx, qword [r15 + r13*8]
mov qword [r15], rcx
mov qword [r15 + r13*8], rax
lea r9, [r15 + 8]
mov qword [rsp + 0x40], r12
lea r10, [r12 - 1]
mov r8d, dword [r15]
mov eax, dword [r15 + 4]
xor ecx, ecx
nop dword [rax + rax]
xor edx, edx
cmp dword [r15 + rcx*8 + 0xc], eax
setb dl
xor r11d, r11d
cmp dword [r15 + rcx*8 + 8], r8d
setb r11b
cmove r11d, edx
test r11b, r11b
je 0x140119460
inc rcx
cmp r10, rcx
jne 0x140119430
mov rcx, r10
nop word [rax + rax]
mov rdx, r10
cmp rcx, r10
jae 0x14011948c
lea r10, [rdx - 1]
xor esi, esi
cmp dword [r15 + rdx*8 + 4], eax
setb sil
xor r11d, r11d
cmp dword [r15 + rdx*8], r8d
setb r11b
cmove r11d, esi
cmp r11b, 1
jne 0x140119460
mov qword [rsp + 0x28], r15
mov dword [rsp + 0x24], ebp
cmp rcx, rdx
ja 0x140119af3
mov qword [rsp + 0x60], rcx
lea r13, [r9 + rcx*8]
mov qword [rsp + 0x50], rdx
lea r11, [r9 + rdx*8]
mov ebx, pe_nt_image_headers64
xor r15d, r15d
xor r14d, r14d
xor esi, esi
xor ebp, ebp
mov r12d, pe_nt_image_headers64
mov qword [rsp + 0x58], r13
jmp 0x14011953f
movzx ecx, byte [rbp + 1]
inc rbp
movzx edx, dl
not rdx
mov r10, qword [r13 + rcx*8]
mov qword [r11 + rdx*8], r10
movzx edi, byte [r14 + 1]
inc r14
not rdi
mov rdx, qword [r11 + rdi*8]
mov qword [r13 + rcx*8], rdx
movlps qword [r11 + rdi*8], xmm0
inc rbp
inc r14
mov r12, qword [rsp + 0x38]
cmp rbp, rsi
mov ecx, 0
cmove rcx, r12
mov rdx, rbx
neg rdx
cmp r14, r15
mov r10d, 0
cmovne rdx, r10
lea r13, [r13 + rcx*8]
lea r11, [r11 + rdx*8]
cmp r9, 0x808
jb 0x140119840
mov r9, r11
sub r9, r13
cmp r9, 0x808
jae 0x140119597
mov rdx, r9
shr rdx, 3
cmp rbp, rsi
setb r10b
cmp r14, r15
setb dil
or dil, r10b
lea r10, [rdx - 0x80]
test dil, dil
mov rcx, r12
mov r12, rdx
cmovne r12, r10
cmp rbp, rsi
cmovb rbx, r10
cmovae rcx, r12
mov r12, rcx
test dil, dil
jne 0x140119597
mov r12, r9
shr r12, 4
sub rdx, r12
mov rbx, rdx
mov qword [rsp + 0x30], rbx
cmp rbp, rsi
mov qword [rsp + 0x38], r12
jne 0x140119680
test r12, r12
je 0x1401195c4
cmp r12, 1
jne 0x1401195d1
xor ebx, ebx
mov r10, r13
lea rsi, [rsp + 0x68]
jmp 0x140119652
lea rbp, [rsp + 0x68]
mov rsi, rbp
jmp 0x140119680
mov rbp, r12
and rbp, 0xfffffffffffffffe
lea rsi, [rsp + 0x68]
mov r10, r13
xor ebx, ebx
nop word cs:[rax + rax]
xor edx, edx
cmp dword [r10 + 4], eax
setae dl
xor r12d, r12d
cmp dword [r10], r8d
mov edi, ebx
setae r12b
cmove r12d, edx
mov byte [rsi], bl
movzx edx, r12b
add rbx, 2
inc edi
mov byte [rsi + rdx], dil
xor edi, edi
cmp dword [r10 + 0xc], eax
setae dil
xor r12d, r12d
cmp dword [r10 + 8], r8d
lea rdx, [rsi + rdx]
setae r12b
cmove r12d, edi
movzx esi, r12b
add rsi, rdx
add r10, 0x10
cmp rbp, rbx
jne 0x1401195f0
lea rbp, [rsp + 0x68]
test byte [rsp + 0x38], 1
je 0x140119680
xor edx, edx
cmp dword [r10 + 4], eax
setae dl
xor ebp, ebp
cmp dword [r10], r8d
setae bpl
cmove ebp, edx
mov byte [rsi], bl
movzx edx, bpl
add rsi, rdx
lea rbp, [rsp + 0x68]
nop word cs:[rax + rax]
cmp r14, r15
mov rbx, qword [rsp + 0x30]
jne 0x140119770
test rbx, rbx
je 0x1401196ab
cmp rbx, 1
jne 0x1401196bb
mov rdx, r11
xor edi, edi
lea r15, [rsp + 0xe8]
jmp 0x140119736
lea r14, [rsp + 0xe8]
mov r15, r14
jmp 0x140119770
mov r10, rbx
and r10, 0xfffffffffffffffe
lea r15, [rsp + 0xe8]
xor edi, edi
mov rdx, r11
nop
xor ebx, ebx
cmp dword [rdx - 4], eax
setb bl
xor r12d, r12d
cmp dword [rdx - 8], r8d
mov r14d, edi
setb r12b
cmove r12d, ebx
add rdi, 2
xor ebx, ebx
cmp dword [rdx - 0xc], eax
setb bl
xor ecx, ecx
cmp dword [rdx - 0x10], r8d
mov byte [r15], r14b
setb cl
cmove ecx, ebx
movzx ebx, r12b
lea r12, [r15 + rbx]
add rdx, 0xfffffffffffffff0
inc r14d
mov byte [r15 + rbx], r14b
movzx r15d, cl
add r15, r12
cmp r10, rdi
jne 0x1401196d0
lea r14, [rsp + 0xe8]
mov rbx, qword [rsp + 0x30]
test bl, 1
je 0x140119770
xor r10d, r10d
cmp dword [rdx - 4], eax
setb r10b
xor ebx, ebx
cmp dword [rdx - 8], r8d
setb bl
cmove ebx, r10d
mov byte [r15], dil
movzx edx, bl
mov rbx, qword [rsp + 0x30]
add r15, rdx
lea r14, [rsp + 0xe8]
nop word cs:[rax + rax]
mov rdx, rsi
sub rdx, rbp
mov r12, r15
sub r12, r14
cmp rdx, r12
cmovb r12, rdx
test r12, r12
je 0x140119505
movzx ecx, byte [rbp]
movsd xmm0, qword [r13 + rcx*8]
movzx edx, byte [r14]
mov rdi, rdx
not rdi
mov r10, qword [r11 + rdi*8]
mov qword [r13 + rcx*8], r10
cmp r12, 1
je 0x1401194fa
cmp r12, 2
je 0x1401194d0
dec r12
mov r10, r12
and r10, 0xfffffffffffffffe
nop dword [rax + rax]
movzx ecx, byte [rbp + 1]
movzx edx, dl
not rdx
mov rdi, qword [r13 + rcx*8]
mov qword [r11 + rdx*8], rdi
movzx edx, byte [r14 + 1]
not rdx
mov rdi, qword [r11 + rdx*8]
mov qword [r13 + rcx*8], rdi
movzx ecx, byte [rbp + 2]
add rbp, 2
mov rdi, qword [r13 + rcx*8]
mov qword [r11 + rdx*8], rdi
movzx edx, byte [r14 + 2]
add r14, 2
mov rdi, rdx
not rdi
mov rbx, qword [r11 + rdi*8]
mov qword [r13 + rcx*8], rbx
add r10, 0xfffffffffffffffe
jne 0x1401197d0
test r12b, 1
mov rbx, qword [rsp + 0x30]
jne 0x1401194d0
jmp 0x1401194fa
mov r10, rbp
sub r10, rsi
jae 0x1401198a0
mov edx, esi
sub edx, ebp
and edx, 3
je 0x1401198da
mov r15, qword [rsp + 0x28]
nop word [rax + rax]
movzx ecx, byte [rsi - 1]
dec rsi
lea r9, [r11 - 8]
mov rdi, qword [r13 + rcx*8]
mov rbx, qword [r11 - 8]
mov qword [r13 + rcx*8], rbx
mov qword [r11 - 8], rdi
mov r11, r9
dec rdx
jne 0x140119860
mov rdi, r9
cmp r10, 0xfffffffffffffffc
jbe 0x1401198f0
jmp 0x1401199d0
cmp r14, r15
jae 0x1401198cd
mov ecx, r15d
sub ecx, r14d
test cl, 1
jne 0x14011995a
mov r9, r15
dec r15
cmp r15, r14
mov r15, qword [rsp + 0x28]
jne 0x140119990
jmp 0x1401199d0
mov rdi, r13
mov r15, qword [rsp + 0x28]
jmp 0x1401199d0
mov r9, r11
mov r15, qword [rsp + 0x28]
mov rdi, r9
cmp r10, 0xfffffffffffffffc
ja 0x1401199d0
nop
movzx ecx, byte [rsi - 1]
mov rdx, qword [r13 + rcx*8]
mov r10, qword [r9 - 8]
mov qword [r13 + rcx*8], r10
mov qword [r9 - 8], rdx
movzx ecx, byte [rsi - 2]
mov rdx, qword [r13 + rcx*8]
mov r10, qword [r9 - 0x10]
mov qword [r13 + rcx*8], r10
mov qword [r9 - 0x10], rdx
movzx ecx, byte [rsi - 3]
mov rdx, qword [r13 + rcx*8]
mov r10, qword [r9 - 0x18]
mov qword [r13 + rcx*8], r10
mov qword [r9 - 0x18], rdx
movzx ecx, byte [rsi - 4]
add rsi, 0xfffffffffffffffc
lea rdi, [r9 - 0x20]
mov rdx, qword [r13 + rcx*8]
mov r10, qword [r9 - 0x20]
mov qword [r13 + rcx*8], r10
mov qword [r9 - 0x20], rdx
mov r9, rdi
cmp rbp, rsi
jb 0x1401198f0
jmp 0x1401199d0
lea r9, [r15 - 1]
movzx ecx, byte [r15 - 1]
not rcx
mov rdx, qword [r13]
mov r10, qword [r11 + rcx*8]
mov qword [r13], r10
mov qword [r11 + rcx*8], rdx
add r13, 8
mov rdi, r13
dec r15
cmp r15, r14
mov r15, qword [rsp + 0x28]
je 0x1401199d0
nop word [rax + rax]
movzx ecx, byte [r9 - 1]
not rcx
mov rdx, qword [r13]
mov r10, qword [r11 + rcx*8]
mov qword [r13], r10
mov qword [r11 + rcx*8], rdx
movzx ecx, byte [r9 - 2]
add r9, 0xfffffffffffffffe
not rcx
mov rdx, qword [r13 + 8]
mov r10, qword [r11 + rcx*8]
mov qword [r13 + 8], r10
mov qword [r11 + rcx*8], rdx
add r13, 0x10
cmp r14, r9
jb 0x140119990
mov rdi, r13
sub rdi, qword [rsp + 0x58]
shr rdi, 3
mov rcx, qword [rsp + 0x60]
add rdi, rcx
shl rax, 0x20
or rax, r8
mov qword [r15], rax
mov rsi, r15
mov rdx, qword [rsp + 0x40]
mov r15, rdx
sub r15, rdi
jbe 0x140119ad5
cmp rcx, qword [rsp + 0x50]
setae byte [rsp + 0x30]
lea r12, [rsi + rdi*8]
mov rcx, qword [rsi + rdi*8]
mov qword [rsi], rcx
mov qword [rsi + rdi*8], rax
cmp rdi, r15
mov rax, r15
cmovb rax, rdi
shr rdx, 3
cmp rax, rdx
setae byte [rsp + 0x38]
lea r14, [rsi + rdi*8]
add r14, 8
dec r15
cmp rdi, r15
jae 0x140119a70
mov rcx, rsi
mov rdx, rdi
mov r8, qword [rsp + 0x48]
mov ebp, dword [rsp + 0x24]
mov r9d, ebp
call fcn.140118e30
mov qword [rsp + 0x48], r12
mov rdi, r15
mov r15, r14
jmp 0x140119a88
mov rcx, r14
mov rdx, r15
mov r8, r12
mov ebp, dword [rsp + 0x24]
mov r9d, ebp
call fcn.140118e30
mov r15, rsi
mov qword [rsp + 0x40], rdi
mov qword [rsp + 0x28], r15
cmp rdi, 0x15
jae 0x140118e97
jmp 0x140118e54
mov rcx, r15
mov rdx, r12
call fcn.140139b60
jmp 0x140118e6b
lea r8, str._rustc_129f3b9964af4d4a709d1383930ade12dfe7c081librarycore_src_slice_sort.rs
mov rcx, r13
mov rdx, r12
call fcn.140046290
lea r8, str._rustc_129f3b9964af4d4a709d1383930ade12dfe7c081librarycore_src_slice_sort.rs
mov rcx, r13
mov rdx, r12
call fcn.140046290
lea r8, str._rustc_129f3b9964af4d4a709d1383930ade12dfe7c081librarycore_src_slice_sort.rs
mov rcx, rdi
call fcn.140046290
lea r8, str._rustc_129f3b9964af4d4a709d1383930ade12dfe7c081librarycore_src_slice_sort.rs
mov rdx, r12
call fcn.140046280
lea r8, str._rustc_129f3b9964af4d4a709d1383930ade12dfe7c081librarycore_src_slice_sort.rs
call fcn.1400479c0
int3