Function at 0x1800938c0
Capabilities:
Decrypt data using aes via x86 extensions
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x68
mov ebx, r9d
mov rdi, r8
mov rsi, rdx
mov r14, rcx
mov eax, dword [0x18014fc10]
mov ecx, dword [0x1801514bc]
mov rdx, qword gs:[0x58]
mov rcx, qword [rdx + rcx*8]
cmp eax, dword [rcx + 0x30]
jg 0x180093d8f
test byte [0x18014fbf7], 2
jne 0x180093d22
mov qword [rsp + 0x60], rsi
lea rax, [rsp + 0x20]
mov qword [rsp + 0x40], rax
lea rax, [rsp + 0x24]
mov qword [rsp + 0x48], rax
lea rax, [rsp + 0x28]
mov qword [rsp + 0x50], rax
lea rax, [rsp + 0x2c]
mov qword [rsp + 0x58], rax
movzx r13d, byte [r14 + 4]
movzx esi, byte [r14 + 8]
movzx r12d, byte [r14 + 0xc]
movzx eax, byte [r14]
movzx r15d, byte [r14 + 1]
movzx ebp, byte [r14 + 5]
movzx r11d, byte [r14 + 9]
movzx r10d, byte [r14 + 0xd]
movzx r9d, byte [r14 + 2]
movzx r8d, byte [r14 + 6]
movzx edx, byte [r14 + 0xa]
movzx ecx, byte [r14 + 0xe]
mov byte [rsp + 0x3f], cl
movzx ecx, byte [r14 + 3]
mov byte [rsp + 0x2c], cl
movzx ecx, byte [r14 + 7]
mov byte [rsp + 0x2d], cl
movzx ecx, byte [r14 + 0xb]
mov byte [rsp + 0x2e], cl
movzx ecx, byte [r14 + 0xf]
mov byte [rsp + 0x2f], cl
movsxd rcx, ebx
shl rcx, 4
xor al, byte [rdi + rcx]
mov byte [rsp + 0x20], al
xor r13b, byte [rdi + rcx + 4]
mov byte [rsp + 0x21], r13b
xor sil, byte [rdi + rcx + 8]
mov byte [rsp + 0x22], sil
xor r12b, byte [rdi + rcx + 0xc]
mov byte [rsp + 0x23], r12b
xor r15b, byte [rdi + rcx + 1]
mov byte [rsp + 0x24], r15b
xor bpl, byte [rdi + rcx + 5]
mov byte [rsp + 0x25], bpl
xor r11b, byte [rdi + rcx + 9]
mov byte [rsp + 0x26], r11b
xor r10b, byte [rdi + rcx + 0xd]
mov byte [rsp + 0x27], r10b
xor r9b, byte [rdi + rcx + 2]
mov byte [rsp + 0x28], r9b
xor r8b, byte [rdi + rcx + 6]
mov byte [rsp + 0x29], r8b
xor dl, byte [rdi + rcx + 0xa]
mov byte [rsp + 0x2a], dl
movzx eax, byte [rsp + 0x3f]
xor al, byte [rdi + rcx + 0xe]
mov byte [rsp + 0x2b], al
mov r15, qword [rsp + 0x58]
movzx eax, byte [rdi + rcx + 3]
xor byte [r15], al
movzx eax, byte [rdi + rcx + 7]
xor byte [r15 + 1], al
movzx eax, byte [rdi + rcx + 0xb]
xor byte [r15 + 2], al
movzx eax, byte [rdi + rcx + 0xf]
xor byte [r15 + 3], al
cmp ebx, 2
jl 0x180093b8b
mov r12d, ebx
inc r12
shl ebx, 4
add ebx, 0xfffffff0
lea r14, [rsp + 0x40]
nop dword [rax]
mov rcx, r14
call fcn.1800953a0
movzx eax, byte [rsp + 0x27]
movzx ecx, byte [rsp + 0x24]
movzx edx, word [rsp + 0x25]
shl edx, 0x10
shl ecx, 8
or ecx, eax
or ecx, edx
mov dword [rsp + 0x24], ecx
movzx eax, word [rsp + 0x2a]
mov ecx, dword [rsp + 0x28]
shl ecx, 0x10
or ecx, eax
mov dword [rsp + 0x28], ecx
movzx eax, word [r15 + 1]
movzx ecx, byte [r15 + 3]
movzx edx, byte [r15]
shl edx, 0x18
shl ecx, 0x10
or ecx, eax
or ecx, edx
mov dword [r15], ecx
movsxd rbx, ebx
movzx eax, byte [rdi + rbx]
movzx ecx, byte [rdi + rbx + 8]
movzx edx, byte [rdi + rbx + 1]
movzx r8d, byte [rdi + rbx + 9]
movq xmm0, qword [rsp + 0x20]
movzx r9d, byte [rdi + rbx + 0xc]
shl r9d, 8
or r9d, ecx
movzx ecx, byte [rdi + rbx + 4]
shl ecx, 8
or ecx, eax
movd xmm1, ecx
pinsrw xmm1, r9d, 1
movzx eax, byte [rdi + rbx + 5]
shl eax, 8
or eax, edx
pinsrw xmm1, eax, 2
movzx eax, byte [rdi + rbx + 0xd]
shl eax, 8
or eax, r8d
pinsrw xmm1, eax, 3
pxor xmm1, xmm0
movq qword [rsp + 0x20], xmm1
movzx eax, byte [rdi + rbx + 2]
movzx ecx, byte [rdi + rbx + 0xa]
movq xmm0, qword [rsp + 0x28]
movzx edx, byte [rdi + rbx + 0xe]
shl edx, 8
or edx, ecx
movzx ecx, byte [rdi + rbx + 6]
shl ecx, 8
or ecx, eax
movd xmm1, ecx
pinsrw xmm1, edx, 1
pxor xmm1, xmm0
movd dword [rsp + 0x28], xmm1
movzx eax, byte [rdi + rbx + 3]
xor byte [r15], al
movzx eax, byte [rdi + rbx + 7]
xor byte [r15 + 1], al
movzx eax, byte [rdi + rbx + 0xb]
xor byte [r15 + 2], al
movzx eax, byte [rdi + rbx + 0xf]
xor byte [r15 + 3], al
mov rcx, r14
call fcn.180095600
dec r12
add ebx, 0xfffffff0
cmp r12, 2
ja 0x180093a60
lea rcx, [rsp + 0x40]
call fcn.1800953a0
movzx eax, byte [rsp + 0x27]
movzx ecx, byte [rsp + 0x24]
movzx edx, word [rsp + 0x25]
shl edx, 0x10
shl ecx, 8
or ecx, eax
or ecx, edx
mov dword [rsp + 0x24], ecx
movzx eax, word [rsp + 0x2a]
mov ecx, dword [rsp + 0x28]
shl ecx, 0x10
or ecx, eax
mov dword [rsp + 0x28], ecx
movzx eax, word [r15 + 1]
movzx ecx, byte [r15 + 3]
movzx edx, byte [r15]
shl edx, 0x18
shl ecx, 0x10
or ecx, eax
or ecx, edx
mov dword [r15], ecx
movzx eax, byte [rdi]
movzx ecx, byte [rdi + 8]
movzx edx, byte [rdi + 1]
movzx r8d, byte [rdi + 9]
movq xmm0, qword [rsp + 0x20]
movzx r9d, byte [rdi + 0xc]
shl r9d, 8
or r9d, ecx
movzx ecx, byte [rdi + 4]
shl ecx, 8
or ecx, eax
movd xmm1, ecx
pinsrw xmm1, r9d, 1
movzx eax, byte [rdi + 5]
shl eax, 8
or eax, edx
pinsrw xmm1, eax, 2
movzx eax, byte [rdi + 0xd]
shl eax, 8
or eax, r8d
pinsrw xmm1, eax, 3
pxor xmm1, xmm0
movq qword [rsp + 0x20], xmm1
movzx eax, byte [rdi + 2]
movzx ecx, byte [rdi + 0xa]
movq xmm0, qword [rsp + 0x28]
movzx edx, byte [rdi + 0xe]
shl edx, 8
or edx, ecx
movzx ecx, byte [rdi + 6]
shl ecx, 8
or ecx, eax
movd xmm1, ecx
pinsrw xmm1, edx, 1
pxor xmm1, xmm0
movd dword [rsp + 0x28], xmm1
movzx eax, byte [rdi + 3]
xor byte [r15], al
movzx eax, byte [rdi + 7]
xor byte [r15 + 1], al
movzx eax, byte [rdi + 0xb]
xor byte [r15 + 2], al
movzx eax, byte [rdi + 0xf]
xor byte [r15 + 3], al
mov rax, qword [rsp + 0x40]
movzx ecx, byte [rax]
mov rdx, qword [rsp + 0x60]
mov byte [rdx], cl
movzx ecx, byte [rax + 1]
mov byte [rdx + 4], cl
movzx ecx, byte [rax + 2]
mov byte [rdx + 8], cl
movzx eax, byte [rax + 3]
mov byte [rdx + 0xc], al
mov rax, qword [rsp + 0x48]
movzx ecx, byte [rax]
mov byte [rdx + 1], cl
movzx ecx, byte [rax + 1]
mov byte [rdx + 5], cl
movzx ecx, byte [rax + 2]
mov byte [rdx + 9], cl
movzx eax, byte [rax + 3]
mov byte [rdx + 0xd], al
mov rax, qword [rsp + 0x50]
movzx ecx, byte [rax]
mov byte [rdx + 2], cl
movzx ecx, byte [rax + 1]
mov byte [rdx + 6], cl
movzx ecx, byte [rax + 2]
mov byte [rdx + 0xa], cl
movzx eax, byte [rax + 3]
mov byte [rdx + 0xe], al
mov rax, qword [rsp + 0x58]
movzx ecx, byte [rax]
mov byte [rdx + 3], cl
movzx ecx, byte [rax + 1]
mov byte [rdx + 7], cl
movzx ecx, byte [rax + 2]
mov byte [rdx + 0xb], cl
movzx eax, byte [rax + 3]
mov byte [rdx + 0xf], al
add rsp, 0x68
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
cmp ebx, 0xe
je 0x180093d53
cmp ebx, 0xc
je 0x180093d71
cmp ebx, 0xa
jne 0x18009390e
mov rcx, r14
mov rdx, rsi
mov r8, rdi
add rsp, 0x68
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
jmp fcn.1800a28f0
mov rcx, r14
mov rdx, rsi
mov r8, rdi
add rsp, 0x68
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
jmp fcn.1800a29c0
mov rcx, r14
mov rdx, rsi
mov r8, rdi
add rsp, 0x68
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
jmp fcn.1800a2950
lea rcx, [0x18014fc10]
call fcn.1800aabec
cmp dword [0x18014fc10], 0xffffffff
jne 0x180093901
lea rcx, [0x18014fbd0]
call fcn.180041610
lea rcx, [0x18014fc10]
call fcn.1800aab80
jmp 0x180093901