Function at 0x677d40
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
movd ecx, xmm2
pshufd xmm0, xmm3, 0xff
movd ebx, xmm0
movdqa xmm4, xmm9
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]
pslldq xmm8, 4
movzx r8d, byte [rax + r8]
movdqa xmm1, xmm8
movzx ecx, byte [rax + rcx]
pslldq xmm1, 4
pxor xmm8, xmm1
shl edx, 0x18
or edx, r8d
movd r8d, xmm2
shr r8d, 0x10
shl ecx, 8
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 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
movdqa xmm0, xmm4
pshufd xmm5, xmm5, 0xff
pslldq xmm0, 4
movdqa xmm7, xmm0
pslldq xmm7, 4
pxor xmm5, xmm7
movdqa xmm7, xmm0
pxor xmm7, xmm4
pxor xmm7, xmm5
pxor xmm9, xmm7
pshufd xmm2, xmm9, 0x55
movd edx, xmm2
movd ecx, xmm2
pshufd xmm0, xmm9, 0xff
movd ebx, xmm0
shr edx, 0x18
movzx r8d, cl
movzx ecx, ch
movaps xmmword [r9], xmm9
movzx edx, byte [rax + rdx]
movzx r8d, byte [rax + r8]
movzx ecx, byte [rax + rcx]
shl edx, 0x18
or edx, r8d
movd r8d, xmm2
shr r8d, 0x10
shl ecx, 8
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
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
movd xmm0, ecx
ror r8d, 8
ror r10d, 8
movd xmm7, r8d
movd xmm6, r10d
punpckldq xmm0, xmm6
movd xmm6, edx
mov rdx, qword [rsp + 0x70]
punpckldq xmm6, xmm7
punpcklqdq xmm6, xmm0
movdqa xmm0, xmm1
pshufd xmm6, xmm6, 0xaa
pslldq xmm0, 4
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
pshufd xmm6, xmm8, 0xff
movd ebx, xmm6
shr r8d, 0x10
shl ecx, 8
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
ror r8d, 8
mov r9d, ecx
movd xmm0, ecx
xor r8d, 2
ror r9d, 8
movd xmm7, r8d
xor r9d, 2
punpckldq xmm5, xmm7
movdqa xmm7, xmm9
movd xmm6, r9d
pslldq xmm7, 4
punpckldq xmm0, xmm6
punpcklqdq xmm5, xmm0
pshufd xmm5, xmm5, 0xff
movdqa xmm0, xmm7
pslldq xmm0, 4
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
movd edx, xmm5
movd ecx, xmm5
shr edx, 0x18
movzx r8d, cl
movzx ecx, ch
movzx edx, byte [rax + rdx]
movdqa xmm4, xmm7
movzx r8d, byte [rax + r8]
pslldq xmm4, 4
movzx ecx, byte [rax + rcx]
shl edx, 0x18
or edx, r8d
movd r8d, xmm5
pshufd xmm5, xmm7, 0xff
movd ebx, xmm5
shr r8d, 0x10
movzx r8d, r8b
movzx r8d, byte [rax + r8]
shl r8d, 0x10
or edx, r8d
shl ecx, 8
movzx r8d, bl
or edx, ecx
movd ecx, xmm5
movzx r8d, byte [rax + r8]
movzx ebx, bh
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
movd xmm6, r9d
punpckldq xmm0, xmm6
movd xmm6, r8d
movaps xmmword [rdx], xmm7
mov rdx, qword [rsp + 0x80]
punpckldq xmm2, xmm6
movdqa xmm6, xmm8
punpcklqdq xmm2, xmm0
pshufd xmm2, xmm2, 0xaa
pslldq xmm6, 4
movdqa xmm0, xmm6
pslldq xmm0, 4
movdqa xmm3, xmm0
pslldq xmm3, 4
pxor xmm2, xmm3
movdqa xmm3, xmm0
pxor xmm3, xmm6
pxor xmm3, xmm2
pxor xmm8, xmm3
movaps xmmword [rdx], xmm8
pshufd xmm2, xmm8, 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
pshufd xmm2, xmm8, 0xff
movd ebx, xmm2
shr r8d, 0x10
shl ecx, 8
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
punpcklqdq xmm2, xmm0
movdqa xmm0, xmm4
pshufd xmm2, xmm2, 0xff
pslldq xmm0, 4
movdqa xmm3, xmm8
movdqa xmm1, xmm0
pxor xmm0, xmm4
pslldq xmm3, 4
pslldq xmm1, 4
pxor xmm1, xmm2
pxor xmm1, xmm0
movdqa xmm4, xmm1
pxor xmm4, xmm7
pshufd xmm1, xmm4, 0x55
movd edx, xmm1
movd ecx, xmm1
shr edx, 0x18
movzx r8d, cl
movzx ecx, ch
movzx edx, byte [rax + rdx]
movdqa xmm5, xmm4
movzx r8d, byte [rax + r8]
pslldq xmm5, 4
movzx ecx, byte [rax + rcx]
shl edx, 0x18
or edx, r8d
movd r8d, xmm1
pshufd xmm1, xmm4, 0xff
movd ebx, xmm1
shr r8d, 0x10
shl ecx, 8
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
movd xmm7, r9d
movaps xmmword [rdx], xmm4
punpckldq xmm0, xmm7
mov rdx, qword [rsp + 0x90]
movd xmm7, r8d
punpckldq xmm2, xmm7
punpcklqdq xmm2, xmm0
movdqa xmm0, xmm1
pshufd xmm2, xmm2, 0xaa
pslldq xmm0, 4
pxor xmm1, xmm3
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 edx, byte [rax + rdx]
movzx r8d, cl
movzx ecx, ch
movzx r8d, byte [rax + r8]
movzx ecx, byte [rax + rcx]
shl edx, 0x18
or edx, r8d
movd r8d, xmm0
pshufd xmm0, xmm3, 0xff
movd ebx, xmm0
shr r8d, 0x10
shl ecx, 8
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 xmm6, r8d
movd xmm7, r9d
punpckldq xmm2, xmm6
punpckldq xmm0, xmm7
punpcklqdq xmm2, xmm0
movdqa xmm0, xmm5
pshufd xmm2, xmm2, 0xff
pslldq xmm0, 4
movdqa xmm1, xmm0
pxor xmm0, xmm5
movdqa xmm5, xmm3
pslldq xmm1, 4
pxor xmm1, xmm2
pxor xmm1, xmm0
pxor xmm1, xmm4
pshufd xmm2, xmm1, 0x55
movd edx, xmm2
pslldq xmm5, 4
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
pshufd xmm2, xmm1, 0xff
movd ebx, xmm2
shr r8d, 0x10
shl ecx, 8
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
or ecx, r8d
shl eax, 8
or eax, ecx
mov ecx, edx
mov r8d, eax
movd xmm0, eax
mov rax, qword [rsp + 0x98]
ror ecx, 8
ror r8d, 8
movd xmm4, r8d
punpckldq xmm0, xmm4
movd xmm4, ecx
movaps xmmword [rax], xmm1
punpckldq xmm2, xmm4
mov rax, qword [rsp + 0xa0]
punpcklqdq xmm2, xmm0
movdqa xmm0, xmm5
pshufd xmm2, xmm2, 0xaa
pslldq xmm0, 4
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