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

Disassembly:
push rbp
push r14
push r13
push rdi
push rsi
push rbx
sub rsp, 0x48
mov rbp, rsp
mov rbx, rcx
mov rsi, rdx
mov edi, r8d
shr edi, 3
lea rcx, [rbp + 0x20]
mov edx, 0x20
xor r8, r8
call fcn.004069b0
mov rcx, rsi
lea rdx, [rbp + 0x20]
mov r8d, edi
call fcn.00405ac0
cmp edi, 0x10
ja 0x43570c
mov eax, 4
mov ecx, 0xa
jmp 0x435727
cmp edi, 0x18
ja 0x43571d
mov eax, 6
mov ecx, 0xc
jmp 0x435727
mov eax, 8
mov ecx, 0xe
mov dword [rbx + 0x2c], ecx
xor esi, esi
xor r8, r8
xor edx, edx
jmp 0x43576f
mov r9d, esi
add r9, r9
add r9, r9
lea r9, [rbx + r9*8 + 0x30]
mov r10d, r8d
mov r11d, edx
mov r11d, dword [rbp + r11*4 + 0x20]
mov dword [r9 + r10*4], r11d
add edx, 1
add r8d, 1
cmp edx, eax
jae 0x435763
cmp r8d, 4
jb 0x435735
cmp r8d, 4
jne 0x43576f
xor r8, r8
add esi, 1
cmp edx, eax
jae 0x43577f
mov r9d, ecx
add r9d, 1
cmp esi, r9d
jb 0x435759
xor r9, r9
jmp 0x43599f
mov r10d, eax
sub r10d, 1
mov edx, r10d
lea r11, str.cw
movzx rdi, byte [rbp + rdx*4 + 0x21]
movzx r11, byte [r11 + rdi]
xor byte [rbp + 0x20], r11b
lea r11, [rbp + 0x21]
lea rdi, str.cw
movzx r13, byte [rbp + rdx*4 + 0x22]
movzx rdi, byte [rdi + r13]
xor byte [r11], dil
lea r11, [rbp + 0x22]
lea rdi, str.cw
movzx r13, byte [rbp + rdx*4 + 0x23]
movzx rdi, byte [rdi + r13]
xor byte [r11], dil
lea r11, [rbp + 0x23]
lea rdi, str.cw
movzx rdx, byte [rbp + rdx*4 + 0x20]
movzx rdx, byte [rdi + rdx]
xor byte [r11], dl
lea rdx, [0x004620d8]
mov r11d, r9d
movzx rdx, byte [rdx + r11*4]
xor byte [rbp + 0x20], dl
add r9d, 1
cmp eax, 8
je 0x43584d
mov r11d, 1
mov edi, r10d
mov edx, r11d
cmp edx, edi
ja 0x435847
sub edi, r11d
add edi, 1
lea r10, [rbp + 0x24]
mov r11d, edx
sub r11d, 1
mov r11d, r11d
mov r11d, dword [rbp + r11*4 + 0x20]
xor dword [r10], r11d
add edx, 1
add r10, 4
sub edi, 1
test edi, edi
jne 0x435827
nop
jmp 0x435951
mov r10d, 1
mov r11d, eax
shr r11d, 1
sub r11d, 1
mov edx, r10d
cmp edx, r11d
ja 0x43588f
sub r11d, r10d
add r11d, 1
lea r10, [rbp + 0x24]
mov edi, edx
sub edi, 1
mov edi, edi
mov edi, dword [rbp + rdi*4 + 0x20]
xor dword [r10], edi
add edx, 1
add r10, 4
sub r11d, 1
test r11d, r11d
jne 0x435871
nop
mov edx, eax
shr edx, 1
mov r11d, edx
mov r10d, edx
sub r10d, 1
mov r10d, r10d
lea rdi, [rbp + r11*4 + 0x20]
lea r13, str.cw
movzx r14, byte [rbp + r10*4 + 0x20]
movzx r13, byte [r13 + r14]
xor byte [rdi], r13b
lea rdi, [rbp + r11*4 + 0x21]
lea r13, str.cw
movzx r14, byte [rbp + r10*4 + 0x21]
movzx r13, byte [r13 + r14]
xor byte [rdi], r13b
lea rdi, [rbp + r11*4 + 0x22]
lea r13, str.cw
movzx r14, byte [rbp + r10*4 + 0x22]
movzx r13, byte [r13 + r14]
xor byte [rdi], r13b
lea r11, [rbp + r11*4 + 0x23]
lea rdi, str.cw
movzx r10, byte [rbp + r10*4 + 0x23]
movzx r10, byte [rdi + r10]
xor byte [r11], r10b
mov r10d, edx
add r10d, 1
mov r11d, eax
sub r11d, 1
mov edx, r10d
cmp edx, r11d
ja 0x435950
sub r11d, r10d
add r11d, 1
mov r10d, edx
lea r10, [rbp + r10*4 + 0x20]
mov edi, edx
sub edi, 1
mov edi, edi
mov edi, dword [rbp + rdi*4 + 0x20]
xor dword [r10], edi
add edx, 1
add r10, 4
sub r11d, 1
test r11d, r11d
jne 0x435932
nop
xor edx, edx
jmp 0x43598f
mov r10d, esi
add r10, r10
add r10, r10
lea r10, [rbx + r10*8 + 0x30]
mov r11d, r8d
mov edi, edx
mov edi, dword [rbp + rdi*4 + 0x20]
mov dword [r10 + r11*4], edi
add edx, 1
add r8d, 1
cmp edx, eax
jae 0x435983
cmp r8d, 4
jb 0x435957
cmp r8d, 4
jne 0x43598f
add esi, 1
xor r8, r8
cmp edx, eax
jae 0x43599f
mov r10d, ecx
add r10d, 1
cmp esi, r10d
jb 0x435979
mov edx, ecx
add edx, 1
cmp esi, edx
jb 0x435787
lea rcx, [rbx + 0x30]
lea rdx, [rbx + 0x210]
mov r8d, 0x1e0
call fcn.00405ac0
mov eax, 1
mov edi, dword [rbx + 0x2c]
sub edi, 1
mov esi, eax
cmp esi, edi
ja 0x4359fd
sub edi, eax
add edi, 1
mov rcx, rbx
mov eax, esi
add rax, rax
add rax, rax
lea rdx, [rbx + rax*8 + 0x210]
mov r8b, 4
call fcn.00435630
add esi, 1
sub edi, 1
test edi, edi
jne 0x4359d8
nop
lea rsp, [rbp + 0x48]
pop rbx
pop rsi
pop rdi
pop r13
pop r14
pop rbp
ret