Function at 0x1400035d0
Capabilities:
Encode data using xor
Encrypt data using aes
Reference aes constants

Disassembly:
sub rsp, 8
test rcx, rcx
mov r11, r8
mov r10, rcx
je 0x140003b58
test r8, r8
je 0x140003b58
cmp edx, 0x20
je 0x1400035ff
cmp edx, 0x18
je 0x1400035ff
cmp edx, 0x10
jne 0x140003b58
cmp edx, 0x10
mov qword [rsp + 0x10], rbx
mov qword [rsp], rdi
jne 0x14000361a
mov dword [r8 + 0xf0], 0xa
jmp 0x140003631
mov eax, 0xe
mov ecx, 0xc
cmp edx, 0x18
cmove eax, ecx
mov dword [r8 + 0xf0], eax
movzx eax, byte [r10 + 1]
movzx edi, byte [r10]
lea r9, [r8 + 4]
shl edi, 8
xor edi, eax
movzx eax, byte [r10 + 2]
shl edi, 8
xor edi, eax
movzx eax, byte [r10 + 3]
shl edi, 8
xor edi, eax
mov dword [r8], edi
movzx eax, byte [r10 + 5]
movzx ecx, byte [r10 + 4]
shl ecx, 8
xor ecx, eax
movzx eax, byte [r10 + 6]
shl ecx, 8
xor ecx, eax
movzx eax, byte [r10 + 7]
shl ecx, 8
xor ecx, eax
mov dword [r9], ecx
movzx eax, byte [r10 + 9]
movzx ecx, byte [r10 + 8]
shl ecx, 8
xor ecx, eax
movzx eax, byte [r10 + 0xa]
shl ecx, 8
xor ecx, eax
movzx eax, byte [r10 + 0xb]
shl ecx, 8
xor ecx, eax
mov dword [r8 + 8], ecx
movzx eax, byte [r10 + 0xd]
movzx ebx, byte [r10 + 0xc]
shl ebx, 8
xor ebx, eax
movzx eax, byte [r10 + 0xe]
shl ebx, 8
xor ebx, eax
movzx eax, byte [r10 + 0xf]
shl ebx, 8
xor ebx, eax
cmp edx, 0x10
mov dword [r8 + 0xc], ebx
jne 0x1400037df
lea r10, str.cw
mov eax, ebx
mov edx, ebx
shr rax, 0x10
shr rdx, 0x18
movzx ecx, al
mov eax, ebx
movzx r8d, byte [rcx + r10]
shr rax, 8
xor r8d, 1
movzx ecx, al
movzx eax, byte [rcx + r10]
shl r8d, 8
xor r8d, eax
movzx eax, bl
movzx eax, byte [rax + r10]
shl r8d, 8
xor r8d, eax
movzx eax, byte [rdx + r10]
shl r8d, 8
xor r8d, eax
xor r8d, edi
mov dword [r11 + 0x10], r8d
xor r8d, dword [r9]
mov dword [r11 + 0x14], r8d
xor r8d, dword [r11 + 8]
mov dword [r11 + 0x18], r8d
xor r8d, ebx
lea rbx, [0x14000d9f8]
mov dword [r11 + 0x1c], r8d
lea r11, [0x14000d9d4]
mov edx, dword [r9 + 0x18]
add r9, 0x10
add r11, 4
mov rax, rdx
shr rax, 0x10
movzx ecx, al
mov rax, rdx
movzx r8d, byte [rcx + r10]
shr rax, 8
shl r8d, 8
movzx ecx, al
movzx eax, byte [rcx + r10]
xor r8d, eax
movzx eax, dl
shr rdx, 0x18
movzx eax, byte [rax + r10]
shl r8d, 8
xor r8d, eax
movzx eax, byte [rdx + r10]
shl r8d, 8
xor r8d, eax
xor r8d, dword [r9 - 4]
xor r8d, dword [r11 - 4]
mov dword [r9 + 0xc], r8d
xor r8d, dword [r9]
mov dword [r9 + 0x10], r8d
mov eax, dword [r9 + 4]
xor eax, r8d
mov dword [r9 + 0x14], eax
xor eax, dword [r9 + 8]
cmp r11, rbx
mov dword [r9 + 0x18], eax
jne 0x140003751
mov rbx, qword [rsp + 0x10]
mov rdi, qword [rsp]
mov eax, 1
add rsp, 8
ret
movzx eax, byte [r10 + 0x11]
movzx ecx, byte [r10 + 0x10]
shl ecx, 8
xor ecx, eax
movzx eax, byte [r10 + 0x12]
shl ecx, 8
xor ecx, eax
movzx eax, byte [r10 + 0x13]
shl ecx, 8
xor ecx, eax
mov dword [r8 + 0x10], ecx
movzx eax, byte [r10 + 0x15]
movzx ecx, byte [r10 + 0x14]
shl ecx, 8
xor ecx, eax
movzx eax, byte [r10 + 0x16]
shl ecx, 8
xor ecx, eax
movzx eax, byte [r10 + 0x17]
shl ecx, 8
xor ecx, eax
cmp edx, 0x18
mov dword [r8 + 0x14], ecx
jne 0x14000396d
mov edx, ecx
lea r10, str.cw
mov eax, ecx
shr rax, 0x10
lea rbx, [0x14000d9f0]
movzx ecx, al
mov rax, rdx
movzx r8d, byte [rcx + r10]
shr rax, 8
xor r8d, 1
movzx ecx, al
movzx eax, byte [rcx + r10]
shl r8d, 8
xor r8d, eax
movzx eax, dl
shr rdx, 0x18
movzx eax, byte [rax + r10]
shl r8d, 8
xor r8d, eax
movzx eax, byte [rdx + r10]
shl r8d, 8
xor r8d, eax
xor r8d, edi
mov dword [r11 + 0x18], r8d
xor r8d, dword [r9]
lea r9, [r11 + 0x28]
mov dword [r11 + 0x1c], r8d
xor r8d, dword [r11 + 8]
mov dword [r11 + 0x20], r8d
xor r8d, dword [r11 + 0xc]
mov dword [r11 + 0x24], r8d
lea r11, [0x14000d9d4]
nop
nop
nop
mov ecx, dword [r9 - 0x18]
mov eax, dword [r9 - 0x14]
add r9, 0x18
xor ecx, dword [r9 - 0x1c]
add r11, 4
xor eax, ecx
mov dword [r9 - 0x18], ecx
mov dword [r9 - 0x14], eax
mov edx, dword [r9 - 0x14]
mov rax, rdx
shr rax, 0x10
movzx ecx, al
mov rax, rdx
movzx r8d, byte [rcx + r10]
shr rax, 8
movzx ecx, al
shl r8d, 8
movzx eax, byte [rcx + r10]
xor r8d, eax
movzx eax, dl
shr rdx, 0x18
movzx eax, byte [rax + r10]
shl r8d, 8
xor r8d, eax
movzx eax, byte [rdx + r10]
shl r8d, 8
xor r8d, eax
xor r8d, dword [r9 - 0x28]
xor r8d, dword [r11 - 4]
mov dword [r9 - 0x10], r8d
mov eax, dword [r9 - 0x24]
xor eax, r8d
mov dword [r9 - 0xc], eax
mov ecx, dword [r9 - 0x20]
xor ecx, eax
mov dword [r9 - 8], ecx
mov eax, dword [r9 - 0x1c]
xor eax, ecx
cmp r11, rbx
mov dword [r9 - 4], eax
jne 0x1400038c0
mov rbx, qword [rsp + 0x10]
mov rdi, qword [rsp]
mov eax, 1
add rsp, 8
ret
movzx eax, byte [r10 + 0x19]
movzx ecx, byte [r10 + 0x18]
shl ecx, 8
xor ecx, eax
movzx eax, byte [r10 + 0x1a]
shl ecx, 8
xor ecx, eax
movzx eax, byte [r10 + 0x1b]
shl ecx, 8
xor ecx, eax
mov dword [r8 + 0x18], ecx
movzx eax, byte [r10 + 0x1d]
movzx ecx, byte [r10 + 0x1c]
shl ecx, 8
xor ecx, eax
movzx eax, byte [r10 + 0x1e]
shl ecx, 8
xor ecx, eax
movzx eax, byte [r10 + 0x1f]
shl ecx, 8
xor ecx, eax
cmp edx, 0x20
mov dword [r8 + 0x1c], ecx
jne 0x140003b45
mov edx, ecx
lea r10, str.cw
mov eax, ecx
shr rax, 0x10
lea rbx, [0x14000d9ec]
movzx ecx, al
mov rax, rdx
movzx r8d, byte [rcx + r10]
shr rax, 8
xor r8d, 1
movzx ecx, al
movzx eax, byte [rcx + r10]
shl r8d, 8
xor r8d, eax
movzx eax, dl
shr rdx, 0x18
movzx eax, byte [rax + r10]
shl r8d, 8
xor r8d, eax
movzx eax, byte [rdx + r10]
shl r8d, 8
xor r8d, eax
xor r8d, edi
mov dword [r11 + 0x20], r8d
xor r8d, dword [r9]
lea r9, [r11 + 0x30]
mov dword [r11 + 0x24], r8d
xor r8d, dword [r11 + 8]
mov dword [r11 + 0x28], r8d
xor r8d, dword [r11 + 0xc]
mov dword [r11 + 0x2c], r8d
lea r11, [0x14000d9d4]
nop
nop
nop
mov edx, dword [r9 - 4]
add r9, 0x20
add r11, 4
mov rax, rdx
shr rax, 0x10
movzx ecx, al
mov rax, rdx
movzx r8d, byte [rcx + r10]
shr rax, 0x18
movzx eax, byte [rax + r10]
shl eax, 8
xor r8d, eax
mov rax, rdx
shr rax, 8
shl r8d, 8
movzx ecx, al
movzx eax, byte [rcx + r10]
mov ecx, dword [r9 - 0x38]
xor r8d, eax
movzx eax, dl
movzx eax, byte [rax + r10]
shl r8d, 8
xor r8d, eax
mov eax, dword [r9 - 0x3c]
xor r8d, dword [r9 - 0x40]
xor eax, r8d
mov dword [r9 - 0x20], r8d
mov dword [r9 - 0x1c], eax
xor ecx, eax
mov eax, dword [r9 - 0x34]
xor eax, ecx
mov dword [r9 - 0x18], ecx
mov dword [r9 - 0x14], eax
mov edx, dword [r9 - 0x14]
mov rax, rdx
shr rax, 0x10
movzx ecx, al
mov rax, rdx
movzx r8d, byte [rcx + r10]
shr rax, 8
movzx ecx, al
shl r8d, 8
movzx eax, byte [rcx + r10]
xor r8d, eax
movzx eax, dl
shr rdx, 0x18
movzx eax, byte [rax + r10]
shl r8d, 8
xor r8d, eax
movzx eax, byte [rdx + r10]
shl r8d, 8
xor r8d, eax
xor r8d, dword [r9 - 0x30]
xor r8d, dword [r11 - 4]
mov dword [r9 - 0x10], r8d
mov eax, dword [r9 - 0x2c]
xor eax, r8d
mov dword [r9 - 0xc], eax
mov ecx, dword [r9 - 0x28]
xor ecx, eax
mov dword [r9 - 8], ecx
mov eax, dword [r9 - 0x24]
xor eax, ecx
cmp r11, rbx
mov dword [r9 - 4], eax
jne 0x140003a50
mov rbx, qword [rsp + 0x10]
mov rdi, qword [rsp]
mov eax, 1
add rsp, 8
ret
mov eax, 1
add rsp, 8
ret