Function at 0x1400bcf6c
Capabilities:
Encode data using xor

Disassembly:
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x88
mov r12d, dword [rcx + 8]
mov rdi, rcx
mov eax, edx
and eax, 1
mov ecx, edx
mov r15d, edx
and ecx, 2
mov ebx, edx
and r15d, 4
sar ebx, 0x10
mov byte [rsp + 0xd0], 0xff
mov dword [rsp + 0xd8], eax
mov dword [rsp + 0x60], ecx
test r12d, r12d
jg 0x1400bcfbc
xor eax, eax
jmp 0x1400bd75c
mov rsi, qword [rdi]
lea rcx, [rsp + 0x38]
mov edx, 0x28
mov qword [rsp + 0x58], rsi
call fcn.140056040
mov rax, qword [rdi + 8]
mov rbp, qword [rsp + 0x38]
lea r14, [rsi + rax]
mov rax, qword [rdi]
movzx ecx, word [rax]
xor sil, sil
xor r13d, r13d
xor cx, bx
mov word [rbp], cx
mov rax, qword [rdi]
movzx ecx, word [rax + 2]
mov rax, qword [rsp + 0x38]
xor cx, bx
mov word [rax + 2], cx
mov rax, qword [rdi]
movzx ecx, word [rax + 4]
mov rax, qword [rsp + 0x38]
xor cx, bx
cmp r12d, 2
mov word [rax + 4], cx
jl 0x1400bd02b
cmp byte [rbp], r13b
jne 0x1400bd02b
cmp byte [rbp + 1], r13b
jne 0x1400bd046
mov rcx, qword [rsp + 0x38]
lea rdx, [0x1400f077c]
mov r8d, 2
call fcn.14004ea9c
test eax, eax
jne 0x1400bd05b
mov rcx, qword [rdi]
mov edx, r12d
call fcn.1400539e8
mov eax, 1
mov sil, al
jmp 0x1400bd060
mov eax, 1
cmp byte [rbp], r13b
je 0x1400bd071
cmp byte [rbp + 1], r13b
movzx esi, sil
cmove esi, eax
mov rcx, qword [rsp + 0x38]
lea rdx, [0x1400f0778]
mov r8d, 2
call fcn.14004ea9c
xor ecx, ecx
cmp eax, ecx
jne 0x1400bd095
mov sil, 1
lea r13d, [rcx + 2]
or dword [rsp + 0xe8], 0xffffffff
mov eax, r12d
mov dword [rsp + 0xe0], ecx
cdq
mov qword [rsp + 0x40], rcx
mov qword [rsp + 0x68], rcx
sub eax, edx
mov qword [rsp + 0x70], rcx
mov qword [rsp + 0x78], rcx
sar eax, 1
mov dword [rsp + 0x48], 0xff000000
mov dword [rsp + 0x50], eax
cmp sil, cl
jne 0x1400bd0fd
mov rcx, qword [rsp + 0x38]
mov r13d, 3
lea rdx, [0x1400f0780]
mov r8, r13
call fcn.14004ea9c
xor ecx, ecx
cmp eax, ecx
jne 0x1400bd15e
mov eax, 0xfde9
mov dword [rsp + 0xe0], eax
sub r12d, r13d
movsxd rbp, r12d
mov eax, r12d
cdq
mov qword [rdi + 0x10], rbp
mov qword [rdi + 8], rbp
sub eax, edx
sar eax, 1
cmp r13d, ecx
mov r14d, eax
jle 0x1400bd133
mov rcx, qword [rdi]
lea eax, [r12 + 6]
movsxd rdx, r13d
add rdx, qword [rdi]
movsxd r8, eax
call fcn.14001a478
xor ecx, ecx
mov rax, qword [rdi]
mov r13d, dword [rsp + 0xd8]
mov byte [rax + rbp], bl
mov rax, qword [rdi]
mov ebp, dword [rsp + 0xe0]
mov qword [rsp + 0x58], rax
cmp sil, cl
jne 0x1400bd34a
jmp 0x1400bd69e
mov r13d, dword [rsp + 0xd8]
cmp r13d, ecx
je 0x1400bd30e
cmp byte [rbp], 0x40
mov rsi, qword [rsp + 0x58]
mov rax, rbp
mov qword [rsp + 0x30], rsi
jne 0x1400bd186
lea rax, [rbp + 1]
mov ecx, 0x3a
cmp byte [rax], cl
jne 0x1400bd1b1
cmp byte [rax + 1], cl
jne 0x1400bd1b1
lea rcx, [rsp + 0x30]
mov dl, bl
call fcn.1400bc390
lea rcx, [rsp + 0x30]
mov dl, bl
call fcn.1400bc3bc
mov rsi, qword [rsp + 0x30]
mov al, byte [rsi]
xor al, bl
cmp al, 0x40
jne 0x1400bd1c1
inc rsi
mov qword [rsp + 0x30], rsi
movsx eax, byte [rsi]
movzx ecx, bx
mov edx, 0x23
xor eax, ecx
cmp eax, edx
jne 0x1400bd1ff
movsx eax, byte [rsi + 1]
xor eax, ecx
cmp eax, 0x21
jne 0x1400bd1ff
lea rcx, [rsp + 0x30]
mov dl, bl
call fcn.1400bc390
lea rcx, [rsp + 0x30]
mov dl, bl
call fcn.1400bc3bc
mov rsi, qword [rsp + 0x30]
mov edx, 0x23
mov al, byte [rsi]
mov r9d, 1
xor al, bl
cmp al, 0x40
jne 0x1400bd210
add rsi, r9
mov al, byte [rsi]
xor al, bl
cmp al, dl
jne 0x1400bd30c
sub r14d, esi
mov eax, 0x20
cmp r14d, eax
cmovg r14d, eax
movsxd r8, r14d
test r14d, r14d
jle 0x1400bd24b
mov rdx, rsi
mov rcx, rbp
sub rdx, rbp
mov al, byte [rdx + rcx]
xor al, bl
mov byte [rcx], al
add rcx, r9
sub r8, r9
jne 0x1400bd23c
lea rdx, [0x1400ea720]
mov r8d, 6
mov rcx, rbp
call qword [sym.imp.SHLWAPI.dll_StrCmpNIA]
xor ecx, ecx
cmp eax, ecx
jne 0x1400bd30e
mov al, bl
or r8, 0xffffffffffffffff
lea rdx, [rbp + 6]
xor al, 0x2d
mov dword [rsp + 0xd8], r8d
lea rcx, [rsp + 0x50]
bts r13d, 9
mov byte [rsp + 0xd0], 1
mov byte [rsi + 1], al
call fcn.1400601ac
mov r11, qword [rsp + 0x50]
lea rdx, [rsp + 0xd8]
lea rcx, [rsp + 0x30]
mov qword [rsp + 0x30], r11
call fcn.1400a45f8
mov eax, dword [rsp + 0xd8]
mov ebp, dword [rsp + 0xe0]
mov rcx, qword [rsp + 0x30]
test eax, eax
mov dword [rsp + 0xe8], eax
cmovns ebp, eax
movzx eax, word [rcx]
mov edx, 0x74
or ax, 0x20
cmp dx, ax
jne 0x1400bd2fd
add rcx, 2
lea rdx, [rsp + 0x48]
mov qword [rsp + 0x30], rcx
lea rcx, [rsp + 0x30]
call fcn.1400a45f8
lea rcx, [rsp + 0x50]
call fcn.14004ea6c
jmp 0x1400bd69e
xor ecx, ecx
mov eax, dword [rdi]
sub eax, dword [rsp + 0x58]
add r12d, eax
cmp r12d, 4
jl 0x1400bd5ee
cmp byte [rbp], cl
jne 0x1400bd5e0
cmp byte [rbp + 1], cl
je 0x1400bd5ee
mov rcx, qword [rdi]
mov edx, r12d
call fcn.1400539e8
mov ebp, dword [rsp + 0xe0]
mov r14d, dword [rsp + 0x50]
xor r12d, r12d
mov r15d, 0x3a
mov rcx, qword [rdi]
lea eax, [r14 + 9]
movsxd rdx, eax
lea rdx, [rdx + rdx + 2]
call fcn.140055c58
movsxd r8, r14d
mov ecx, 7
mov qword [rdi], rax
lea rdx, [r8 + r8 + 0xe]
mov rax, qword [rdi]
dec rcx
mov word [rdx + rax], bx
sub rdx, 2
cmp rcx, r12
jge 0x1400bd377
cmp r13d, 0x10
mov rax, qword [rdi]
mov word [rax + r8*2 + 0x10], r12w
jge 0x1400bd55d
mov rdx, qword [rdi]
or dword [rsp + 0xd8], 0xffffffff
mov esi, 0x40
movzx eax, word [rdx]
mov qword [rsp + 0xe0], rdx
mov rcx, rdx
xor ax, bx
cmp si, ax
jne 0x1400bd3c7
lea rcx, [rdx + 2]
movzx eax, word [rcx]
xor ax, bx
cmp r15w, ax
jne 0x1400bd408
movzx eax, word [rcx + 2]
xor ax, bx
cmp r15w, ax
jne 0x1400bd408
lea rcx, [rsp + 0xe0]
movzx edx, bx
call fcn.1400bc3e4
lea rcx, [rsp + 0xe0]
movzx edx, bx
call fcn.1400bc418
mov rdx, qword [rsp + 0xe0]
movzx eax, word [rdx]
mov rcx, rdx
xor ax, bx
cmp si, ax
jne 0x1400bd41a
lea rcx, [rdx + 2]
movzx eax, word [rcx]
mov r8d, 0x23
xor ax, bx
cmp r8w, ax
jne 0x1400bd46a
movzx eax, word [rcx + 2]
lea ecx, [r8 - 2]
xor ax, bx
cmp cx, ax
jne 0x1400bd46a
lea rcx, [rsp + 0xe0]
movzx edx, bx
call fcn.1400bc3e4
lea rcx, [rsp + 0xe0]
movzx edx, bx
call fcn.1400bc418
mov rdx, qword [rsp + 0xe0]
mov r8d, 0x23
movzx eax, word [rdx]
xor ax, bx
cmp si, ax
jne 0x1400bd479
add rdx, 2
movzx eax, word [rdx]
xor ax, bx
cmp r8w, ax
jne 0x1400bd55d
mov rsi, qword [rsp + 0x38]
mov rax, rdx
mov ecx, r14d
sub rax, qword [rdi]
mov r8, r12
sar rax, 1
sub ecx, eax
mov eax, 0x20
cmp ecx, eax
cmovg ecx, eax
movsxd r9, ecx
cmp r9, r12
jle 0x1400bd4c6
movzx eax, word [rdx + r8*2]
xor ax, bx
mov word [rsi + r8*2], ax
inc r8
cmp r8, r9
jl 0x1400bd4b1
mov word [rsi + r8*2], r12w
lea rdx, str.code
mov rcx, rsi
mov r8d, 6
call qword [sym.imp.SHLWAPI.dll_StrCmpNIW]
cmp eax, r12d
jne 0x1400bd55d
lea rax, [rsi + 0xc]
lea rdx, [rsp + 0xd8]
lea rcx, [rsp + 0xe0]
mov qword [rsp + 0xe0], rax
call fcn.1400a45f8
mov edx, dword [rsp + 0xd8]
mov rcx, qword [rsp + 0xe0]
cmp edx, r12d
mov r8d, 0x74
movzx eax, word [rcx]
cmovge ebp, edx
mov dword [rsp + 0xe8], edx
or ax, 0x20
cmp r8w, ax
je 0x1400bd53f
lea eax, [r8 - 0x4a]
cmp ax, word [rcx]
jne 0x1400bd564
add rcx, 2
lea rdx, [rsp + 0x48]
mov qword [rsp + 0xe0], rcx
lea rcx, [rsp + 0xe0]
call fcn.1400a45f8
mov edx, dword [rsp + 0xe8]
cmp r13d, 0x1000
jge 0x1400bd6ed
mov eax, dword [rsp + 0x48]
cmp eax, r12d
jle 0x1400bd6ed
movzx ecx, word [0x140111004]
cmp eax, ecx
jne 0x1400bd6ed
cmp edx, ecx
je 0x1400bd6ed
mov rcx, qword [rdi]
cmp eax, 0x3b6
mov r8d, r12d
movzx r9d, bx
mov rdx, rdi
sete r8b
mov qword [rsp + 0xe0], rcx
mov qword [rdi], r12
call fcn.140064f5c
mov rcx, qword [rdi]
movzx edx, bx
call fcn.14001804c
lea rcx, [rsp + 0xe0]
bts r13d, 0xc
mov r14d, eax
call fcn.14004ea6c
jmp 0x1400bd353
cmp byte [rbp + 1], cl
jne 0x1400bd5ee
cmp byte [rbp + 2], cl
jne 0x1400bd33e
mov rcx, qword [rsp + 0x40]
lea esi, [r12 + r12*2]
lea eax, [rsi + 3]
movsxd rdx, eax
lea rdx, [rdx + rdx + 2]
call fcn.140055c58
mov rdx, qword [rdi]
movzx ebp, bx
mov ecx, ebp
mov r8d, r12d
mov r9, rax
bts ecx, 0x18
mov qword [rsp + 0x40], rax
mov dword [rsp + 0x28], ecx
xor ecx, ecx
mov dword [rsp + 0x20], esi
call fcn.1400bcbb0
mov r14d, eax
test eax, eax
jg 0x1400bd66b
mov r9, qword [rsp + 0x40]
mov rdx, qword [rdi]
neg r15d
sbb eax, eax
mov r8d, r12d
mov ecx, 0xfde9
and eax, 0x40000
or eax, ebp
mov dword [rsp + 0x28], eax
mov dword [rsp + 0x20], esi
call fcn.1400bcbb0
mov r14d, eax
test eax, eax
jle 0x1400bd697
mov ebp, 0xfde9
jmp 0x1400bd672
mov ebp, dword [rsp + 0xe0]
mov rax, qword [rsp + 0x40]
movsxd rcx, r14d
xor r12d, r12d
mov word [rax + rcx*2], r12w
mov rcx, qword [rdi]
mov rax, qword [rsp + 0x40]
mov qword [rdi], rax
mov qword [rsp + 0x40], rcx
jmp 0x1400bd34d
mov ebp, dword [rsp + 0xe0]
mov rcx, qword [rsp + 0x68]
mov rax, qword [rdi]
lea r8d, [r12 + r12*2 + 3]
movsxd rdx, r8d
mov qword [rsp + 0x68], rax
mov qword [rdi], rcx
lea rdx, [rdx + rdx + 2]
call fcn.140055c58
mov rdx, qword [rsp + 0x58]
lea r8d, [r12 + r12]
movzx ecx, bx
mov r9, rax
mov qword [rdi], rax
mov dword [rsp + 0x28], ecx
mov dword [rsp + 0x20], r8d
mov r8d, r12d
mov ecx, ebp
call fcn.1400bcbb0
mov r14d, eax
jmp 0x1400bd34a
mov al, byte [rsp + 0xd0]
cmp al, r12b
jl 0x1400bd708
movsx rcx, al
mov rax, qword [rdi]
xor bx, 0x63
mov word [rax + rcx*2], bx
lea eax, [r14 + r14]
movsxd rcx, eax
mov qword [rdi + 8], rcx
mov qword [rdi + 0x10], rcx
cmp dword [rsp + 0x60], r12d
je 0x1400bd73c
mov rcx, qword [rsp + 0x38]
call fcn.14004ea20
mov rcx, qword [rsp + 0x40]
call fcn.14004ea20
mov rcx, qword [rsp + 0x68]
call fcn.14004ea20
lea rcx, [rsp + 0x68]
call fcn.14004ea6c
lea rcx, [rsp + 0x40]
call fcn.14004ea6c
lea rcx, [rsp + 0x38]
call fcn.14004ea6c
mov eax, ebp
add rsp, 0x88
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret