Function at 0x489950
Capabilities:
Encrypt data using aes
Reference aes constants

Disassembly:
push rbx
sub rsp, 0x40
movaps xmmword [rsp], xmm6
movaps xmmword [rsp + 0x10], xmm7
movaps xmmword [rsp + 0x20], xmm8
movaps xmmword [rsp + 0x30], xmm9
lea rax, str.cw
movdqa xmm3, xmmword [rcx + 0x10]
movdqa xmm9, xmmword [rcx]
pshufd xmm2, xmm3, 0x55
pshufd xmm0, xmm3, 0xff
movdqa xmm4, xmm9
movd ecx, xmm2
movd ebx, xmm0
movdqa xmm8, xmm3
movaps xmmword [rdx], xmm9
movd edx, xmm2
pslldq xmm4, 4
shr edx, 0x18
movaps xmmword [r8], xmm3
movzx r8d, cl
movzx ecx, ch
movzx edx, byte [rax + rdx]
movzx ecx, byte [rax + rcx]
pslldq xmm8, 4
movzx r8d, byte [rax + r8]
movdqa xmm1, xmm8
shl edx, 0x18
shl ecx, 8
pslldq xmm1, 4
or edx, r8d
movd r8d, xmm2
movdqa xmm2, xmm4
shr r8d, 0x10
pslldq xmm2, 4
pxor xmm8, xmm1
movzx r8d, r8b
movdqa xmm7, xmm2
pxor xmm2, xmm4
movzx r8d, byte [rax + r8]
pslldq xmm7, 4
shl r8d, 0x10
or edx, r8d
movzx r8d, bl
movzx ebx, bh
or edx, ecx
movd ecx, xmm0
movzx r8d, byte [rax + r8]
shr ecx, 0x18
movd xmm5, edx
movzx ecx, byte [rax + rcx]
shl ecx, 0x18
or ecx, r8d
movd r8d, xmm0
shr r8d, 0x10
movzx r8d, r8b
movzx r8d, byte [rax + r8]
shl r8d, 0x10
or ecx, r8d
movzx r8d, byte [rax + rbx]
shl r8d, 8
or ecx, r8d
mov r8d, edx
mov r10d, ecx
ror r8d, 8
movd xmm0, ecx
ror r10d, 8
xor r8d, 1
xor r10d, 1
movd xmm6, r10d
punpckldq xmm0, xmm6
movd xmm6, r8d
punpckldq xmm5, xmm6
punpcklqdq xmm5, xmm0
pshufd xmm5, xmm5, 0xff
pxor xmm7, xmm5
pxor xmm7, xmm2
pxor xmm9, xmm7
pshufd xmm2, xmm9, 0x55
pshufd xmm0, xmm9, 0xff
movaps xmmword [r9], xmm9
movd edx, xmm2
movd ecx, xmm2
movd ebx, xmm0
shr edx, 0x18
movzx r8d, cl
movzx ecx, ch
movzx edx, byte [rax + rdx]
movzx r8d, byte [rax + r8]
movzx ecx, byte [rax + rcx]
shl edx, 0x18
or edx, r8d
movd r8d, xmm2
shl ecx, 8
shr r8d, 0x10
movzx r8d, r8b
movzx r8d, byte [rax + r8]
shl r8d, 0x10
or edx, r8d
movzx r8d, bl
movzx ebx, bh
or edx, ecx
movd ecx, xmm0
movzx r8d, byte [rax + r8]
shr ecx, 0x18
movd xmm6, edx
movzx ecx, byte [rax + rcx]
shl ecx, 0x18
or ecx, r8d
movd r8d, xmm0
shr r8d, 0x10
movzx r8d, r8b
movzx r8d, byte [rax + r8]
shl r8d, 0x10
or ecx, r8d
movzx r8d, byte [rax + rbx]
shl r8d, 8
or ecx, r8d
mov r8d, edx
mov rdx, qword [rsp + 0x70]
mov r10d, ecx
ror r8d, 8
movd xmm0, ecx
ror r10d, 8
movd xmm7, r10d
punpckldq xmm0, xmm7
movd xmm7, r8d
punpckldq xmm6, xmm7
movdqa xmm7, xmm9
punpcklqdq xmm6, xmm0
pslldq xmm7, 4
movdqa xmm0, xmm1
pslldq xmm0, 4
pshufd xmm6, xmm6, 0xaa
pxor xmm6, xmm0
pxor xmm8, xmm6
pxor xmm8, xmm3
pshufd xmm6, xmm8, 0x55
movaps xmmword [rdx], xmm8
movd edx, xmm6
movd ecx, xmm6
shr edx, 0x18
movzx r8d, cl
movzx ecx, ch
movzx edx, byte [rax + rdx]
movzx r8d, byte [rax + r8]
movzx ecx, byte [rax + rcx]
shl edx, 0x18
or edx, r8d
movd r8d, xmm6
shl ecx, 8
pshufd xmm6, xmm8, 0xff
shr r8d, 0x10
movd ebx, xmm6
movzx r8d, r8b
movzx r8d, byte [rax + r8]
shl r8d, 0x10
or edx, r8d
movzx r8d, bl
movzx ebx, bh
or edx, ecx
movd ecx, xmm6
movzx r8d, byte [rax + r8]
shr ecx, 0x18
movd xmm5, edx
movzx ecx, byte [rax + rcx]
shl ecx, 0x18
or ecx, r8d
movd r8d, xmm6
shr r8d, 0x10
movzx r8d, r8b
movzx r8d, byte [rax + r8]
shl r8d, 0x10
or ecx, r8d
movzx r8d, byte [rax + rbx]
shl r8d, 8
or ecx, r8d
mov r8d, edx
mov r9d, ecx
ror r8d, 8
movd xmm0, ecx
ror r9d, 8
xor r8d, 2
xor r9d, 2
movd xmm6, r9d
punpckldq xmm0, xmm6
movd xmm6, r8d
punpckldq xmm5, xmm6
punpcklqdq xmm5, xmm0
movdqa xmm0, xmm7
pslldq xmm0, 4
pshufd xmm5, xmm5, 0xff
movdqa xmm4, xmm0
pxor xmm0, xmm7
pslldq xmm4, 4
pxor xmm4, xmm5
pxor xmm4, xmm0
movdqa xmm7, xmm4
pxor xmm7, xmm9
pshufd xmm5, xmm7, 0x55
movdqa xmm4, xmm7
movd edx, xmm5
pslldq xmm4, 4
movd ecx, xmm5
shr edx, 0x18
movzx r8d, cl
movzx ecx, ch
movzx edx, byte [rax + rdx]
movzx r8d, byte [rax + r8]
movzx ecx, byte [rax + rcx]
shl edx, 0x18
or edx, r8d
movd r8d, xmm5
pshufd xmm5, xmm7, 0xff
shr r8d, 0x10
movd ebx, xmm5
movzx r8d, r8b
movzx r8d, byte [rax + r8]
shl r8d, 0x10
or edx, r8d
shl ecx, 8
movzx r8d, bl
movzx ebx, bh
or edx, ecx
movd ecx, xmm5
movzx r8d, byte [rax + r8]
shr ecx, 0x18
movd xmm2, edx
movzx ecx, byte [rax + rcx]
shl ecx, 0x18
or ecx, r8d
movd r8d, xmm5
shr r8d, 0x10
movzx r8d, r8b
movzx r8d, byte [rax + r8]
shl r8d, 0x10
or ecx, r8d
movzx r8d, byte [rax + rbx]
shl r8d, 8
or ecx, r8d
mov r8d, edx
mov rdx, qword [rsp + 0x78]
mov r9d, ecx
ror r8d, 8
movd xmm0, ecx
ror r9d, 8
movaps xmmword [rdx], xmm7
mov rdx, qword [rsp + 0x80]
movd xmm6, r9d
punpckldq xmm0, xmm6
movd xmm6, r8d
punpckldq xmm2, xmm6
movdqa xmm6, xmm8
pslldq xmm6, 4
punpcklqdq xmm2, xmm0
movdqa xmm0, xmm6
pshufd xmm2, xmm2, 0xaa
pslldq xmm0, 4
movdqa xmm3, xmm0
pslldq xmm3, 4
pxor xmm2, xmm3
movdqa xmm3, xmm0
pxor xmm3, xmm6
pxor xmm3, xmm2
pxor xmm8, xmm3
pshufd xmm2, xmm8, 0x55
movaps xmmword [rdx], xmm8
movd edx, xmm2
movd ecx, xmm2
shr edx, 0x18
movzx r8d, cl
movzx ecx, ch
movzx edx, byte [rax + rdx]
movzx r8d, byte [rax + r8]
movzx ecx, byte [rax + rcx]
shl edx, 0x18
or edx, r8d
movd r8d, xmm2
shl ecx, 8
pshufd xmm2, xmm8, 0xff
shr r8d, 0x10
movd ebx, xmm2
movzx r8d, r8b
movzx r8d, byte [rax + r8]
shl r8d, 0x10
or edx, r8d
movzx r8d, bl
movzx ebx, bh
or edx, ecx
movd ecx, xmm2
movzx r8d, byte [rax + r8]
shr ecx, 0x18
movzx ecx, byte [rax + rcx]
shl ecx, 0x18
or ecx, r8d
movd r8d, xmm2
movd xmm2, edx
shr r8d, 0x10
movzx r8d, r8b
movzx r8d, byte [rax + r8]
shl r8d, 0x10
or ecx, r8d
movzx r8d, byte [rax + rbx]
shl r8d, 8
or ecx, r8d
mov r8d, edx
mov r9d, ecx
ror r8d, 8
movd xmm0, ecx
ror r9d, 8
xor r8d, 4
xor r9d, 4
movd xmm6, r8d
movd xmm3, r9d
punpckldq xmm2, xmm6
punpckldq xmm0, xmm3
movdqa xmm3, xmm8
punpcklqdq xmm2, xmm0
pslldq xmm3, 4
movdqa xmm0, xmm4
pslldq xmm0, 4
pshufd xmm2, xmm2, 0xff
movdqa xmm1, xmm0
pxor xmm0, xmm4
pslldq xmm1, 4
pxor xmm1, xmm2
pxor xmm1, xmm0
movdqa xmm4, xmm1
pxor xmm4, xmm7
pshufd xmm1, xmm4, 0x55
movdqa xmm5, xmm4
movd edx, xmm1
pslldq xmm5, 4
movd ecx, xmm1
shr edx, 0x18
movzx r8d, cl
movzx ecx, ch
movzx edx, byte [rax + rdx]
movzx r8d, byte [rax + r8]
movzx ecx, byte [rax + rcx]
shl edx, 0x18
or edx, r8d
movd r8d, xmm1
shl ecx, 8
pshufd xmm1, xmm4, 0xff
shr r8d, 0x10
movd ebx, xmm1
movzx r8d, r8b
movzx r8d, byte [rax + r8]
shl r8d, 0x10
or edx, r8d
movzx r8d, bl
movzx ebx, bh
or edx, ecx
movd ecx, xmm1
movzx r8d, byte [rax + r8]
shr ecx, 0x18
movd xmm2, edx
movzx ecx, byte [rax + rcx]
shl ecx, 0x18
or ecx, r8d
movd r8d, xmm1
movdqa xmm1, xmm3
shr r8d, 0x10
pslldq xmm1, 4
movzx r8d, r8b
movzx r8d, byte [rax + r8]
shl r8d, 0x10
or ecx, r8d
movzx r8d, byte [rax + rbx]
shl r8d, 8
or ecx, r8d
mov r8d, edx
mov rdx, qword [rsp + 0x88]
mov r9d, ecx
ror r8d, 8
movd xmm0, ecx
ror r9d, 8
movaps xmmword [rdx], xmm4
mov rdx, qword [rsp + 0x90]
movd xmm7, r9d
punpckldq xmm0, xmm7
movd xmm7, r8d
punpckldq xmm2, xmm7
punpcklqdq xmm2, xmm0
movdqa xmm0, xmm1
pxor xmm1, xmm3
pshufd xmm2, xmm2, 0xaa
pslldq xmm0, 4
pxor xmm0, xmm2
pxor xmm0, xmm1
movdqa xmm3, xmm0
pxor xmm3, xmm8
pshufd xmm0, xmm3, 0x55
movaps xmmword [rdx], xmm3
movd edx, xmm0
movd ecx, xmm0
shr edx, 0x18
movzx r8d, cl
movzx ecx, ch
movzx edx, byte [rax + rdx]
movzx r8d, byte [rax + r8]
movzx ecx, byte [rax + rcx]
shl edx, 0x18
or edx, r8d
movd r8d, xmm0
shl ecx, 8
pshufd xmm0, xmm3, 0xff
shr r8d, 0x10
movd ebx, xmm0
movzx r8d, r8b
movzx r8d, byte [rax + r8]
shl r8d, 0x10
or edx, r8d
movzx r8d, bl
movzx ebx, bh
or edx, ecx
movd ecx, xmm0
movzx r8d, byte [rax + r8]
shr ecx, 0x18
movd xmm2, edx
movzx ecx, byte [rax + rcx]
shl ecx, 0x18
or ecx, r8d
movd r8d, xmm0
shr r8d, 0x10
movzx r8d, r8b
movzx r8d, byte [rax + r8]
shl r8d, 0x10
or ecx, r8d
movzx r8d, byte [rax + rbx]
shl r8d, 8
or ecx, r8d
mov r8d, edx
mov r9d, ecx
ror r8d, 8
movd xmm0, ecx
ror r9d, 8
xor r8d, 8
xor r9d, 8
movd xmm7, r9d
punpckldq xmm0, xmm7
movd xmm7, r8d
punpckldq xmm2, xmm7
punpcklqdq xmm2, xmm0
movdqa xmm0, xmm5
pslldq xmm0, 4
pshufd xmm2, xmm2, 0xff
movdqa xmm1, xmm0
pxor xmm0, xmm5
pslldq xmm1, 4
pxor xmm1, xmm2
pxor xmm1, xmm0
pxor xmm1, xmm4
pshufd xmm2, xmm1, 0x55
movd edx, xmm2
movd ecx, xmm2
shr edx, 0x18
movzx r8d, cl
movzx ecx, ch
movzx edx, byte [rax + rdx]
movzx r8d, byte [rax + r8]
movzx ecx, byte [rax + rcx]
shl edx, 0x18
or edx, r8d
movd r8d, xmm2
shl ecx, 8
pshufd xmm2, xmm1, 0xff
shr r8d, 0x10
movd ebx, xmm2
movzx r8d, r8b
movzx r8d, byte [rax + r8]
shl r8d, 0x10
or edx, r8d
movzx r8d, bl
movzx ebx, bh
or edx, ecx
movd ecx, xmm2
movzx r8d, byte [rax + r8]
shr ecx, 0x18
movzx ecx, byte [rax + rcx]
shl ecx, 0x18
or ecx, r8d
movd r8d, xmm2
movd xmm2, edx
shr r8d, 0x10
movzx r8d, r8b
movzx r8d, byte [rax + r8]
movzx eax, byte [rax + rbx]
shl r8d, 0x10
shl eax, 8
or ecx, r8d
or eax, ecx
mov ecx, edx
ror ecx, 8
mov r8d, eax
movd xmm0, eax
mov rax, qword [rsp + 0x98]
movd xmm5, ecx
ror r8d, 8
movd xmm4, r8d
punpckldq xmm2, xmm5
movdqa xmm5, xmm3
movaps xmmword [rax], xmm1
punpckldq xmm0, xmm4
pslldq xmm5, 4
mov rax, qword [rsp + 0xa0]
punpcklqdq xmm2, xmm0
movdqa xmm0, xmm5
pslldq xmm0, 4
pshufd xmm2, xmm2, 0xaa
movdqa xmm4, xmm0
pxor xmm0, xmm5
pslldq xmm4, 4
pxor xmm2, xmm4
pxor xmm0, xmm2
pxor xmm0, xmm3
movaps xmmword [rax], xmm0
movaps xmm6, xmmword [rsp]
movaps xmm7, xmmword [rsp + 0x10]
movaps xmm8, xmmword [rsp + 0x20]
movaps xmm9, xmmword [rsp + 0x30]
add rsp, 0x40
pop rbx
ret