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

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x1b8
movaps xmmword [rsp + 0x110], xmm6
movaps xmmword [rsp + 0x120], xmm7
movaps xmmword [rsp + 0x130], xmm8
movaps xmmword [rsp + 0x140], xmm9
movaps xmmword [rsp + 0x150], xmm10
movaps xmmword [rsp + 0x160], xmm11
movaps xmmword [rsp + 0x170], xmm12
movaps xmmword [rsp + 0x180], xmm13
movaps xmmword [rsp + 0x190], xmm14
movaps xmmword [rsp + 0x1a0], xmm15
lea rax, str.cw
mov r8, rcx
mov rcx, qword [rcx + 0xe0]
lea r15, [rsp + 0xb0]
lea r13, [rsp + 0x90]
mov ebx, dword [r8 + 0x14]
movdqa xmm15, xmmword [r8]
lea r12, [rsp + 0x80]
lea rbp, [rsp + 0x100]
movdqa xmm14, xmmword [r8 + 0x10]
lea rdi, [rsp + 0xf0]
lea rsi, [rsp + 0xe0]
mov edx, ebx
movzx r9d, bl
movdqa xmm2, xmm15
shr edx, 0x18
movzx r9d, byte [rax + r9]
pslldq xmm2, 4
lea r14, [rsp + 0xc0]
movzx edx, byte [rax + rdx]
movdqa xmm8, xmm2
pslldq xmm8, 4
shl edx, 0x18
or edx, r9d
mov r9d, ebx
movzx ebx, bh
shr r9d, 0x10
movzx r9d, r9b
movzx r9d, byte [rax + r9]
shl r9d, 0x10
or edx, r9d
movzx r9d, byte [rax + rbx]
mov ebx, dword [r8 + 0x1c]
mov r8d, ebx
shl r9d, 8
shr r8d, 0x18
or edx, r9d
movzx r9d, bl
movzx r8d, byte [rax + r8]
movzx r9d, byte [rax + r9]
movd xmm0, edx
shl r8d, 0x18
or r8d, r9d
mov r9d, ebx
movzx ebx, bh
shr r9d, 0x10
movzx r9d, r9b
movzx r9d, byte [rax + r9]
shl r9d, 0x10
or r8d, r9d
movzx r9d, byte [rax + rbx]
shl r9d, 8
or r8d, r9d
mov r9d, edx
mov r10d, r8d
ror r9d, 8
movd xmm1, r8d
ror r10d, 8
xor r9d, 1
xor r10d, 1
movd xmm7, r9d
movd xmm6, r10d
punpckldq xmm0, xmm7
punpckldq xmm1, xmm6
punpcklqdq xmm0, xmm1
movdqa xmm1, xmm8
pxor xmm8, xmm2
pslldq xmm1, 4
pshufd xmm0, xmm0, 0xff
movdqa xmm2, xmm14
pxor xmm0, xmm1
pslldq xmm2, 4
pxor xmm8, xmm0
pxor xmm8, xmm15
pshufd xmm0, xmm8, 0x55
movd ebx, xmm0
pshufd xmm0, xmm8, 0xff
mov edx, ebx
movzx r8d, bl
shr edx, 0x18
movzx r8d, byte [rax + r8]
movzx edx, byte [rax + rdx]
shl edx, 0x18
or edx, r8d
mov r8d, ebx
movzx ebx, bh
shr r8d, 0x10
movzx r8d, r8b
movzx r8d, byte [rax + r8]
shl r8d, 0x10
or edx, r8d
movzx r8d, byte [rax + rbx]
movd ebx, xmm0
movzx r9d, bl
shl r8d, 8
movzx r9d, byte [rax + r9]
or edx, r8d
mov r8d, ebx
shr r8d, 0x18
movd xmm0, edx
movzx r8d, byte [rax + r8]
shl r8d, 0x18
or r8d, r9d
mov r9d, ebx
movzx ebx, bh
shr r9d, 0x10
movzx r9d, r9b
movzx r9d, byte [rax + r9]
shl r9d, 0x10
or r8d, r9d
movzx r9d, byte [rax + rbx]
shl r9d, 8
or r8d, r9d
mov r9d, edx
mov r10d, r8d
ror r9d, 8
movd xmm1, r8d
ror r10d, 8
movd xmm7, r9d
movd xmm6, r10d
punpckldq xmm0, xmm7
punpckldq xmm1, xmm6
punpcklqdq xmm0, xmm1
movdqa xmm1, xmm2
pslldq xmm1, 4
pshufd xmm0, xmm0, 0xaa
movdqa xmm11, xmm1
pxor xmm1, xmm2
movdqa xmm2, xmm8
pslldq xmm11, 4
pslldq xmm2, 4
pxor xmm11, xmm0
pxor xmm11, xmm1
pxor xmm11, xmm14
pshufd xmm0, xmm11, 0x55
movd ebx, xmm0
pshufd xmm0, xmm11, 0xff
mov edx, ebx
movzx r8d, bl
shr edx, 0x18
movzx r8d, byte [rax + r8]
movzx edx, byte [rax + rdx]
shl edx, 0x18
or edx, r8d
mov r8d, ebx
movzx ebx, bh
shr r8d, 0x10
movzx r8d, r8b
movzx r8d, byte [rax + r8]
shl r8d, 0x10
or edx, r8d
movzx r8d, byte [rax + rbx]
movd ebx, xmm0
movzx r9d, bl
shl r8d, 8
movzx r9d, byte [rax + r9]
or edx, r8d
mov r8d, ebx
shr r8d, 0x18
movd xmm0, edx
movzx r8d, byte [rax + r8]
shl r8d, 0x18
or r8d, r9d
mov r9d, ebx
movzx ebx, bh
shr r9d, 0x10
movzx r9d, r9b
movzx r9d, byte [rax + r9]
shl r9d, 0x10
or r8d, r9d
movzx r9d, byte [rax + rbx]
shl r9d, 8
or r8d, r9d
mov r9d, edx
ror r9d, 8
mov r10d, r8d
movd xmm1, r8d
xor r9d, 2
ror r10d, 8
xor r10d, 2
movd xmm7, r9d
movd xmm6, r10d
punpckldq xmm0, xmm7
movdqa xmm7, xmm2
punpckldq xmm1, xmm6
pslldq xmm7, 4
punpcklqdq xmm0, xmm1
movdqa xmm1, xmm7
pxor xmm7, xmm2
pslldq xmm1, 4
pshufd xmm0, xmm0, 0xff
movdqa xmm2, xmm11
pxor xmm0, xmm1
pslldq xmm2, 4
pxor xmm7, xmm0
pxor xmm7, xmm8
pshufd xmm0, xmm7, 0x55
movd ebx, xmm0
pshufd xmm0, xmm7, 0xff
mov edx, ebx
movzx r8d, bl
shr edx, 0x18
movzx r8d, byte [rax + r8]
movzx edx, byte [rax + rdx]
shl edx, 0x18
or edx, r8d
mov r8d, ebx
movzx ebx, bh
shr r8d, 0x10
movzx r8d, r8b
movzx r8d, byte [rax + r8]
shl r8d, 0x10
or edx, r8d
movzx r8d, byte [rax + rbx]
movd ebx, xmm0
movzx r9d, bl
shl r8d, 8
movzx r9d, byte [rax + r9]
or edx, r8d
mov r8d, ebx
shr r8d, 0x18
movd xmm0, edx
movzx r8d, byte [rax + r8]
shl r8d, 0x18
or r8d, r9d
mov r9d, ebx
movzx ebx, bh
shr r9d, 0x10
movzx r9d, r9b
movzx r9d, byte [rax + r9]
shl r9d, 0x10
or r8d, r9d
movzx r9d, byte [rax + rbx]
shl r9d, 8
or r8d, r9d
mov r9d, edx
mov r10d, r8d
ror r9d, 8
movd xmm1, r8d
ror r10d, 8
movd xmm6, r10d
punpckldq xmm1, xmm6
movd xmm6, r9d
punpckldq xmm0, xmm6
movdqa xmm6, xmm2
pslldq xmm6, 4
punpcklqdq xmm0, xmm1
movdqa xmm1, xmm6
pshufd xmm0, xmm0, 0xaa
pxor xmm6, xmm2
pslldq xmm1, 4
movdqa xmm2, xmm7
pxor xmm0, xmm1
pslldq xmm2, 4
pxor xmm6, xmm0
pxor xmm6, xmm11
pshufd xmm0, xmm6, 0x55
movd ebx, xmm0
pshufd xmm0, xmm6, 0xff
mov edx, ebx
movzx r8d, bl
shr edx, 0x18
movzx r8d, byte [rax + r8]
movzx edx, byte [rax + rdx]
shl edx, 0x18
or edx, r8d
mov r8d, ebx
movzx ebx, bh
shr r8d, 0x10
movzx r8d, r8b
movzx r8d, byte [rax + r8]
shl r8d, 0x10
or edx, r8d
movzx r8d, byte [rax + rbx]
movd ebx, xmm0
movzx r9d, bl
shl r8d, 8
movzx r9d, byte [rax + r9]
or edx, r8d
mov r8d, ebx
shr r8d, 0x18
movd xmm0, edx
movzx r8d, byte [rax + r8]
shl r8d, 0x18
or r8d, r9d
mov r9d, ebx
movzx ebx, bh
shr r9d, 0x10
movzx r9d, r9b
movzx r9d, byte [rax + r9]
shl r9d, 0x10
or r8d, r9d
movzx r9d, byte [rax + rbx]
shl r9d, 8
or r8d, r9d
mov r9d, edx
mov r10d, r8d
ror r9d, 8
movd xmm1, r8d
ror r10d, 8
xor r9d, 4
xor r10d, 4
movd xmm4, r9d
movd xmm3, r10d
punpckldq xmm0, xmm4
punpckldq xmm1, xmm3
punpcklqdq xmm0, xmm1
movdqa xmm1, xmm2
pslldq xmm1, 4
pshufd xmm0, xmm0, 0xff
movdqa xmm10, xmm1
pxor xmm1, xmm2
movdqa xmm2, xmm6
pslldq xmm10, 4
pslldq xmm2, 4
pxor xmm10, xmm0
pxor xmm10, xmm1
pxor xmm10, xmm7
pshufd xmm0, xmm10, 0x55
movd ebx, xmm0
pshufd xmm0, xmm10, 0xff
mov edx, ebx
movzx r8d, bl
shr edx, 0x18
movzx r8d, byte [rax + r8]
movzx edx, byte [rax + rdx]
shl edx, 0x18
or edx, r8d
mov r8d, ebx
movzx ebx, bh
shr r8d, 0x10
movzx r8d, r8b
movzx r8d, byte [rax + r8]
shl r8d, 0x10
or edx, r8d
movzx r8d, byte [rax + rbx]
movd ebx, xmm0
movzx r9d, bl
shl r8d, 8
movzx r9d, byte [rax + r9]
or edx, r8d
mov r8d, ebx
shr r8d, 0x18
movd xmm0, edx
movzx r8d, byte [rax + r8]
shl r8d, 0x18
or r8d, r9d
mov r9d, ebx
movzx ebx, bh
shr r9d, 0x10
movzx r9d, r9b
movzx r9d, byte [rax + r9]
shl r9d, 0x10
or r8d, r9d
movzx r9d, byte [rax + rbx]
shl r9d, 8
or r8d, r9d
mov r9d, edx
mov r10d, r8d
ror r9d, 8
movd xmm1, r8d
ror r10d, 8
movd xmm3, r9d
movd xmm5, r10d
punpckldq xmm0, xmm3
punpckldq xmm1, xmm5
punpcklqdq xmm0, xmm1
movdqa xmm1, xmm2
pslldq xmm1, 4
pshufd xmm0, xmm0, 0xaa
movdqa xmm9, xmm1
pxor xmm1, xmm2
movdqa xmm2, xmm10
pslldq xmm9, 4
pslldq xmm2, 4
pxor xmm9, xmm0
movdqa xmm12, xmm2
pxor xmm9, xmm1
pslldq xmm12, 4
pxor xmm9, xmm6
pshufd xmm0, xmm9, 0x55
movd ebx, xmm0
pshufd xmm0, xmm9, 0xff
mov edx, ebx
movzx r8d, bl
shr edx, 0x18
movzx r8d, byte [rax + r8]
movzx edx, byte [rax + rdx]
shl edx, 0x18
or edx, r8d
mov r8d, ebx
movzx ebx, bh
shr r8d, 0x10
movzx r8d, r8b
movzx r8d, byte [rax + r8]
shl r8d, 0x10
or edx, r8d
movzx r8d, byte [rax + rbx]
movd ebx, xmm0
movzx r9d, bl
shl r8d, 8
movzx r9d, byte [rax + r9]
or edx, r8d
mov r8d, ebx
shr r8d, 0x18
movd xmm0, edx
movzx r8d, byte [rax + r8]
shl r8d, 0x18
or r8d, r9d
mov r9d, ebx
movzx ebx, bh
shr r9d, 0x10
movzx r9d, r9b
movzx r9d, byte [rax + r9]
shl r9d, 0x10
or r8d, r9d
movzx r9d, byte [rax + rbx]
shl r9d, 8
or r8d, r9d
mov r9d, edx
mov r10d, r8d
ror r9d, 8
movd xmm1, r8d
ror r10d, 8
xor r9d, 8
xor r10d, 8
movd xmm5, r9d
movd xmm4, r10d
punpckldq xmm0, xmm5
lea r10, [rcx + 0x800]
punpckldq xmm1, xmm4
punpcklqdq xmm0, xmm1
movdqa xmm1, xmm12
pxor xmm12, xmm2
pslldq xmm1, 4
pshufd xmm0, xmm0, 0xff
movdqa xmm2, xmm9
pxor xmm0, xmm1
pslldq xmm2, 4
pxor xmm12, xmm0
movdqa xmm13, xmm2
pxor xmm12, xmm10
pslldq xmm13, 4
pshufd xmm0, xmm12, 0x55
movd ebx, xmm0
pshufd xmm0, xmm12, 0xff
mov edx, ebx
movzx r8d, bl
shr edx, 0x18
movzx r8d, byte [rax + r8]
movzx edx, byte [rax + rdx]
shl edx, 0x18
or edx, r8d
mov r8d, ebx
movzx ebx, bh
shr r8d, 0x10
movzx r8d, r8b
movzx r8d, byte [rax + r8]
shl r8d, 0x10
or edx, r8d
movzx r8d, byte [rax + rbx]
movd ebx, xmm0
movzx r9d, bl
shl r8d, 8
movzx r9d, byte [rax + r9]
or edx, r8d
mov r8d, ebx
shr r8d, 0x18
movd xmm0, edx
movzx r8d, byte [rax + r8]
shl r8d, 0x18
or r8d, r9d
mov r9d, ebx
movzx ebx, bh
shr r9d, 0x10
movzx r9d, r9b
movzx r9d, byte [rax + r9]
movzx eax, byte [rax + rbx]
lea rbx, [rsp + 0xd0]
shl r9d, 0x10
shl eax, 8
or r8d, r9d
or eax, r8d
mov r8d, edx
lea rdx, [rcx + 0x1ff800]
mov r9d, eax
ror r8d, 8
movd xmm1, eax
lea rax, [rcx + 0x200800]
ror r9d, 8
movd xmm4, r8d
mov qword [rsp + 0x78], rax
lea rax, [rsp + 0xa0]
movd xmm3, r9d
punpckldq xmm0, xmm4
mov qword [rsp + 0x58], rax
punpckldq xmm1, xmm3
punpcklqdq xmm0, xmm1
movdqa xmm1, xmm13
pxor xmm13, xmm2
pshufd xmm0, xmm0, 0xaa
pslldq xmm1, 4
pxor xmm0, xmm1
pxor xmm13, xmm0
pxor xmm13, xmm9
mov qword [rsp + 0x68], rdx
mov qword [rsp + 0x70], rcx
mov qword [rsp + 0x50], r12
mov r12, rcx
nop
prefetcht0 byte [r10]
prefetcht0 byte [r10 + 0x40]
mov qword [rsp + 0x40], rbp
mov r9, r15
mov qword [rsp + 0x38], rdi
mov r8, qword [rsp + 0x58]
mov rdx, r13
sub r12, 0xffffffffffffff80
mov qword [rsp + 0x30], rsi
mov rcx, qword [rsp + 0x50]
mov qword [rsp + 0x28], rbx
mov qword [rsp + 0x20], r14
mov qword [rsp + 0x60], r10
movaps xmmword [rsp + 0x80], xmm15
call fcn.1400970d0
mov qword [rsp + 0x40], rbp
mov r9, r15
mov rdx, r13
mov qword [rsp + 0x38], rdi
mov r8, qword [rsp + 0x58]
mov qword [rsp + 0x30], rsi
mov rcx, qword [rsp + 0x50]
mov qword [rsp + 0x28], rbx
mov qword [rsp + 0x20], r14
movaps xmmword [rsp + 0x80], xmm14
call fcn.1400970d0
mov qword [rsp + 0x40], rbp
mov r9, r15
mov rdx, r13
mov qword [rsp + 0x38], rdi
mov r8, qword [rsp + 0x58]
mov qword [rsp + 0x30], rsi
mov rcx, qword [rsp + 0x50]
mov qword [rsp + 0x28], rbx
mov qword [rsp + 0x20], r14
movaps xmmword [rsp + 0x80], xmm8
call fcn.1400970d0
mov qword [rsp + 0x40], rbp
mov r9, r15
mov rdx, r13
mov qword [rsp + 0x38], rdi
mov r8, qword [rsp + 0x58]
mov qword [rsp + 0x30], rsi
mov rcx, qword [rsp + 0x50]
mov qword [rsp + 0x28], rbx
mov qword [rsp + 0x20], r14
movaps xmmword [rsp + 0x80], xmm11
call fcn.1400970d0
mov qword [rsp + 0x40], rbp
mov r9, r15
mov rdx, r13
mov qword [rsp + 0x38], rdi
mov r8, qword [rsp + 0x58]
mov qword [rsp + 0x30], rsi
mov rcx, qword [rsp + 0x50]
mov qword [rsp + 0x28], rbx
mov qword [rsp + 0x20], r14
movaps xmmword [rsp + 0x80], xmm7
call fcn.1400970d0
mov qword [rsp + 0x40], rbp
mov r9, r15
mov rdx, r13
mov qword [rsp + 0x38], rdi
mov r8, qword [rsp + 0x58]
mov qword [rsp + 0x30], rsi
mov rcx, qword [rsp + 0x50]
mov qword [rsp + 0x28], rbx
mov qword [rsp + 0x20], r14
movaps xmmword [rsp + 0x80], xmm6
call fcn.1400970d0
mov qword [rsp + 0x40], rbp
mov r9, r15
mov rdx, r13
mov qword [rsp + 0x38], rdi
mov r8, qword [rsp + 0x58]
mov qword [rsp + 0x30], rsi
mov rcx, qword [rsp + 0x50]
mov qword [rsp + 0x28], rbx
mov qword [rsp + 0x20], r14
movaps xmmword [rsp + 0x80], xmm10
call fcn.1400970d0
mov qword [rsp + 0x40], rbp
mov r9, r15
mov rdx, r13
mov qword [rsp + 0x38], rdi
mov r8, qword [rsp + 0x58]
mov qword [rsp + 0x30], rsi
mov rcx, qword [rsp + 0x50]
mov qword [rsp + 0x28], rbx
mov qword [rsp + 0x20], r14
movaps xmmword [rsp + 0x80], xmm9
call fcn.1400970d0
mov qword [rsp + 0x40], rbp
mov r9, r15
mov rdx, r13
mov qword [rsp + 0x38], rdi
mov r8, qword [rsp + 0x58]
mov qword [rsp + 0x30], rsi
mov rcx, qword [rsp + 0x50]
mov qword [rsp + 0x28], rbx
mov qword [rsp + 0x20], r14
movaps xmmword [rsp + 0x80], xmm12
call fcn.1400970d0
mov qword [rsp + 0x40], rbp
mov r9, r15
mov rdx, r13
mov qword [rsp + 0x38], rdi
mov r8, qword [rsp + 0x58]
mov qword [rsp + 0x30], rsi
mov rcx, qword [rsp + 0x50]
mov qword [rsp + 0x28], rbx
mov qword [rsp + 0x20], r14
movaps xmmword [rsp + 0x80], xmm13
call fcn.1400970d0
mov r10, qword [rsp + 0x60]
mov rax, qword [rsp + 0x68]
movdqa xmm3, xmmword [rsp + 0x90]
movdqa xmm4, xmmword [rsp + 0xa0]
movdqa xmm5, xmmword [rsp + 0xb0]
sub r10, 0xffffffffffffff80
movdqa xmm2, xmmword [rsp + 0xc0]
movdqa xmm1, xmmword [rsp + 0x100]
movaps xmmword [r12 - 0x80], xmm3
movdqa xmm3, xmmword [rsp + 0xd0]
movaps xmmword [r12 - 0x70], xmm4
movdqa xmm4, xmmword [rsp + 0xe0]
movaps xmmword [r12 - 0x60], xmm5
movdqa xmm5, xmmword [rsp + 0xf0]
movaps xmmword [r12 - 0x50], xmm2
movaps xmmword [r12 - 0x40], xmm3
movaps xmmword [r12 - 0x30], xmm4
movaps xmmword [r12 - 0x20], xmm5
movaps xmmword [r12 - 0x10], xmm1
cmp r12, rax
jb 0x140098170
mov rdx, rax
mov rcx, qword [rsp + 0x70]
mov r12, qword [rsp + 0x50]
lea r8, [rax + 0x800]
mov rax, qword [rsp + 0x78]
cmp r8, rax
je 0x140098490
mov rax, rdx
sub rax, rcx
sub rax, 1
and rax, 0xffffffffffffff80
lea r10, [rax + 0x80]
lea rax, [rcx + 1]
cmp rdx, rax
mov eax, pe_nt_image_headers64
mov rdx, r8
cmovb r10, rax
add r10, rcx
mov rcx, r10
jmp 0x14009815c
movaps xmm6, xmmword [rsp + 0x110]
movaps xmm7, xmmword [rsp + 0x120]
movaps xmm8, xmmword [rsp + 0x130]
movaps xmm9, xmmword [rsp + 0x140]
movaps xmm10, xmmword [rsp + 0x150]
movaps xmm11, xmmword [rsp + 0x160]
movaps xmm12, xmmword [rsp + 0x170]
movaps xmm13, xmmword [rsp + 0x180]
movaps xmm14, xmmword [rsp + 0x190]
movaps xmm15, xmmword [rsp + 0x1a0]
add rsp, 0x1b8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret