Function at 0x253ba2260
Capabilities:
Encrypt data using aes
Inspect section memory permissions
Reference aes constants
Resolve function by parsing pe exports

Disassembly:
push r12
push rbp
push rdi
push rsi
push rbx
mov rax, rcx
mov ecx, edx
test rax, rax
je 0x253ba2c22
and edx, 0xffffffbf
add edx, 0xffffff80
jne 0x253ba2410
cmp ecx, 0x80
mov edx, 0xc
je 0x253ba2800
mov dword [r8 + 0xf0], edx
mov r11d, dword [rax]
cmp ecx, 0xc0
bswap r11d
mov dword [r8], r11d
mov r9d, dword [rax + 4]
bswap r9d
mov dword [r8 + 4], r9d
mov r10d, dword [rax + 8]
bswap r10d
mov dword [r8 + 8], r10d
mov edx, dword [rax + 0xc]
bswap edx
mov dword [r8 + 0xc], edx
mov ebx, dword [rax + 0x10]
bswap ebx
mov dword [r8 + 0x10], ebx
mov edi, dword [rax + 0x14]
mov esi, edi
bswap esi
mov dword [r8 + 0x14], esi
je 0x253ba2430
mov ecx, dword [rax + 0x18]
lea rbx, [0x253ba70a0]
add r8, 0x20
lea rsi, [rbx + 0x1c]
bswap ecx
mov dword [r8 - 8], ecx
mov eax, dword [rax + 0x1c]
lea rcx, str.cw
bswap eax
mov dword [r8 - 4], eax
jmp 0x253ba2379
mov ebp, edx
movzx eax, dl
mov r12d, dword [r8 - 0x2c]
shr ebp, 0x18
movzx eax, byte [rcx + rax]
movzx ebp, byte [rcx + rbp]
xor eax, dword [r8 - 0x30]
shl ebp, 0x18
xor eax, ebp
mov ebp, edx
shr ebp, 0x10
movzx ebp, bpl
movzx ebp, byte [rcx + rbp]
shl ebp, 0x10
xor eax, ebp
movzx ebp, dh
movzx ebp, byte [rcx + rbp]
shl ebp, 8
xor eax, ebp
mov ebp, dword [r8 - 0x28]
xor r12d, eax
movd xmm0, eax
movd xmm5, r12d
punpckldq xmm0, xmm5
xor ebp, r12d
xor edi, ebp
movd xmm1, ebp
movd xmm4, edi
punpckldq xmm1, xmm4
punpcklqdq xmm0, xmm1
movups xmmword [r8 - 0x10], xmm0
mov edi, dword [r8 - 4]
add rbx, 4
add r8, 0x20
mov eax, edi
movzx ebp, dil
shr eax, 0x18
movzx ebp, byte [rcx + rbp]
movzx eax, byte [rcx + rax]
xor eax, dword [rbx - 4]
shl ebp, 8
xor eax, ebp
mov ebp, edi
shr ebp, 0x10
movzx ebp, bpl
movzx ebp, byte [rcx + rbp]
shl ebp, 0x18
xor eax, ebp
mov r12d, eax
mov eax, edi
movzx ebp, ah
mov eax, r12d
movzx ebp, byte [rcx + rbp]
shl ebp, 0x10
xor eax, ebp
xor r11d, eax
xor r9d, r11d
movd xmm0, r11d
xor r10d, r9d
movd xmm3, r9d
xor edx, r10d
movd xmm1, r10d
punpckldq xmm0, xmm3
movd xmm2, edx
punpckldq xmm1, xmm2
punpcklqdq xmm0, xmm1
movups xmmword [r8 - 0x20], xmm0
cmp rsi, rbx
jne 0x253ba2310
xor eax, eax
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret
cmp ecx, 0x100
jne 0x253ba2c2c
mov edx, 0xe
jmp 0x253ba2291
lea r11, str.cw
mov eax, edi
mov ecx, r10d
shr eax, 0x10
movzx eax, al
movzx ebx, byte [r11 + rax]
movzx eax, dil
movzx eax, byte [r11 + rax]
shl ebx, 0x10
xor ebx, eax
mov eax, edi
shr eax, 0x18
movzx eax, byte [r11 + rax]
shl eax, 8
xor ebx, eax
mov eax, edi
xor ebx, dword [r8]
movzx edi, ah
movzx eax, byte [r11 + rdi]
mov edi, dword [r8 + 0x10]
shl eax, 0x18
xor ebx, eax
mov eax, r9d
xor ebx, 0x1000000
xor eax, ebx
mov dword [r8 + 0x18], ebx
xor ecx, eax
mov dword [r8 + 0x1c], eax
mov dword [r8 + 0x20], ecx
xor ecx, edx
xor edi, ecx
mov dword [r8 + 0x24], ecx
xor esi, edi
mov dword [r8 + 0x28], edi
mov edx, esi
mov dword [r8 + 0x2c], esi
movzx esi, dh
movzx r9d, byte [r11 + rsi]
mov esi, ecx
shl r9d, 0x10
xor ebx, r9d
mov r9d, edx
shr r9d, 0x18
movzx r9d, byte [r11 + r9]
xor ebx, r9d
movzx r9d, dl
movzx r9d, byte [r11 + r9]
shl r9d, 8
xor ebx, r9d
mov r9d, edx
shr r9d, 0x10
movzx r9d, r9b
movzx r9d, byte [r11 + r9]
shl r9d, 0x18
xor ebx, r9d
mov r9d, edx
xor ebx, 0x2000000
xor r10d, ebx
xor eax, ebx
mov dword [r8 + 0x30], ebx
xor esi, r10d
mov ebp, eax
mov dword [r8 + 0x34], eax
mov dword [r8 + 0x3c], esi
xor esi, edi
xor r9d, esi
mov dword [r8 + 0x38], r10d
mov eax, r9d
mov dword [r8 + 0x44], r9d
movzx edi, ah
mov eax, ebp
mov dword [r8 + 0x40], esi
mov ebp, esi
movzx edi, byte [r11 + rdi]
shl edi, 0x10
xor ebx, edi
mov edi, r9d
shr edi, 0x18
movzx edi, byte [r11 + rdi]
xor ebx, edi
movzx edi, r9b
shr r9d, 0x10
movzx edi, byte [r11 + rdi]
movzx r9d, r9b
movzx r9d, byte [r11 + r9]
shl edi, 8
xor ebx, edi
shl r9d, 0x18
mov edi, edx
xor ebx, r9d
xor ebx, 0x4000000
xor eax, ebx
mov r9d, ebx
mov dword [r8 + 0x48], ebx
mov ebx, r10d
xor ebx, eax
xor ecx, eax
mov dword [r8 + 0x4c], eax
mov dword [r8 + 0x50], ebx
mov ebx, esi
xor edi, ecx
xor ebx, ecx
mov dword [r8 + 0x54], ecx
mov dword [r8 + 0x58], ebx
mov ebx, edi
movzx ebx, bh
mov dword [r8 + 0x5c], edi
movzx ebx, byte [r11 + rbx]
shl ebx, 0x10
xor ebx, r9d
mov r9d, edi
shr r9d, 0x18
movzx r9d, byte [r11 + r9]
xor ebx, r9d
movzx r9d, dil
movzx r9d, byte [r11 + r9]
shl r9d, 8
xor ebx, r9d
mov r9d, edi
shr r9d, 0x10
movzx r9d, r9b
movzx r9d, byte [r11 + r9]
shl r9d, 0x18
xor ebx, r9d
mov r9d, ecx
xor ebx, 0x8000000
xor r10d, ebx
xor eax, ebx
mov dword [r8 + 0x60], ebx
xor ebp, r10d
mov r12d, eax
mov dword [r8 + 0x64], eax
xor r9d, r10d
xor edi, ebp
mov dword [r8 + 0x6c], r9d
mov eax, edi
mov dword [r8 + 0x74], edi
movzx eax, ah
mov dword [r8 + 0x68], r10d
movzx r9d, byte [r11 + rax]
mov eax, r12d
mov dword [r8 + 0x70], ebp
shl r9d, 0x10
xor r9d, ebx
mov ebx, edi
shr ebx, 0x18
movzx ebx, byte [r11 + rbx]
xor r9d, ebx
movzx ebx, dil
movzx ebx, byte [r11 + rbx]
shl ebx, 8
shr edi, 0x10
movzx edi, dil
xor r9d, ebx
movzx ebx, byte [r11 + rdi]
shl ebx, 0x18
xor r9d, ebx
mov ebx, r9d
mov r9d, r10d
xor ebx, 0x10000000
xor eax, ebx
mov dword [r8 + 0x78], ebx
xor edx, eax
xor r9d, eax
xor ecx, eax
mov dword [r8 + 0x7c], eax
movzx edi, dh
mov dword [r8 + 0x80], r9d
xor ebp, ecx
movzx r9d, byte [r11 + rdi]
mov edi, edx
mov dword [r8 + 0x84], ecx
mov dword [r8 + 0x8c], edx
mov dword [r8 + 0x88], ebp
shl r9d, 0x10
xor r9d, ebx
mov ebx, edx
shr ebx, 0x18
movzx ebx, byte [r11 + rbx]
xor r9d, ebx
movzx ebx, dl
movzx ebx, byte [r11 + rbx]
shl ebx, 8
xor r9d, ebx
mov ebx, edx
shr ebx, 0x10
movzx ebx, bl
movzx ebx, byte [r11 + rbx]
shl ebx, 0x18
xor r9d, ebx
mov ebx, ecx
xor r9d, 0x20000000
xor r10d, r9d
xor esi, r9d
xor eax, r9d
mov dword [r8 + 0x90], r9d
xor edi, esi
xor ebx, r10d
mov dword [r8 + 0x94], eax
mov dword [r8 + 0x9c], ebx
mov ebx, edi
movzx ebx, bh
mov dword [r8 + 0xa0], esi
movzx ebx, byte [r11 + rbx]
mov dword [r8 + 0xa4], edi
mov dword [r8 + 0x98], r10d
shl ebx, 0x10
xor r9d, ebx
mov ebx, edi
shr ebx, 0x18
movzx ebx, byte [r11 + rbx]
xor r9d, ebx
movzx ebx, dil
movzx ebx, byte [r11 + rbx]
shl ebx, 8
xor r9d, ebx
shr edi, 0x10
movzx edi, dil
movzx ebx, byte [r11 + rdi]
shl ebx, 0x18
xor r9d, ebx
xor r9d, 0x40000000
xor eax, r9d
mov dword [r8 + 0xa8], r9d
mov ebx, eax
mov dword [r8 + 0xac], eax
mov eax, r10d
xor ecx, ebx
xor eax, ebx
xor edx, ecx
mov dword [r8 + 0xb0], eax
xor esi, ecx
movzx eax, dh
mov dword [r8 + 0xbc], edx
movzx eax, byte [r11 + rax]
mov dword [r8 + 0xb4], ecx
mov dword [r8 + 0xb8], esi
shl eax, 0x10
xor eax, r9d
mov r9d, edx
shr r9d, 0x18
movzx r9d, byte [r11 + r9]
xor eax, r9d
movzx r9d, dl
shr edx, 0x10
movzx r9d, byte [r11 + r9]
movzx edx, dl
movzx edx, byte [r11 + rdx]
shl r9d, 8
xor eax, r9d
shl edx, 0x18
xor eax, edx
add eax, 0x80000000
xor ebx, eax
mov dword [r8 + 0xc0], eax
xor eax, r10d
xor ecx, eax
movd xmm0, eax
mov dword [r8 + 0xc4], ebx
movd xmm4, ecx
punpckldq xmm0, xmm4
movq qword [r8 + 0xc8], xmm0
jmp 0x253ba23fd
mov dword [r8 + 0xf0], 0xa
mov edx, dword [rax]
lea r9, str.cw
bswap edx
mov dword [r8], edx
mov ecx, dword [rax + 4]
bswap ecx
mov dword [r8 + 4], ecx
mov r10d, dword [rax + 8]
bswap r10d
mov dword [r8 + 8], r10d
mov edx, dword [rax + 0xc]
mov eax, edx
mov ebx, edx
shr eax, 0x10
bswap ebx
mov dword [r8 + 0xc], ebx
movzx eax, al
movzx r11d, byte [r9 + rax]
movzx eax, dl
movzx eax, byte [r9 + rax]
shl r11d, 0x10
xor r11d, eax
mov eax, edx
movzx edx, dh
shr eax, 0x18
movzx eax, byte [r9 + rax]
shl eax, 8
xor r11d, eax
movzx eax, byte [r9 + rdx]
mov edx, r10d
xor r11d, dword [r8]
shl eax, 0x18
xor r11d, eax
mov eax, ecx
xor r11d, 0x1000000
xor eax, r11d
mov dword [r8 + 0x10], r11d
xor edx, eax
mov dword [r8 + 0x14], eax
mov dword [r8 + 0x18], edx
xor edx, ebx
movzx ecx, dh
mov ebx, edx
mov dword [r8 + 0x1c], edx
movzx ecx, byte [r9 + rcx]
shl ecx, 0x10
xor ecx, r11d
mov r11d, edx
shr r11d, 0x18
movzx r11d, byte [r9 + r11]
xor ecx, r11d
movzx r11d, dl
movzx r11d, byte [r9 + r11]
shl r11d, 8
xor ecx, r11d
mov r11d, edx
shr r11d, 0x10
movzx r11d, r11b
movzx r11d, byte [r9 + r11]
shl r11d, 0x18
xor ecx, r11d
xor ecx, 0x2000000
xor r10d, ecx
xor eax, ecx
mov dword [r8 + 0x20], ecx
xor ebx, r10d
mov dword [r8 + 0x24], eax
movzx esi, bh
mov dword [r8 + 0x2c], ebx
movzx r11d, byte [r9 + rsi]
mov dword [r8 + 0x28], r10d
shl r11d, 0x10
xor r11d, ecx
mov ecx, ebx
shr ecx, 0x18
movzx ecx, byte [r9 + rcx]
xor r11d, ecx
movzx ecx, bl
movzx ecx, byte [r9 + rcx]
shl ecx, 8
xor r11d, ecx
shr ebx, 0x10
movzx ebx, bl
movzx ecx, byte [r9 + rbx]
shl ecx, 0x18
xor r11d, ecx
xor r11d, 0x4000000
xor eax, r11d
mov dword [r8 + 0x30], r11d
mov ecx, eax
xor edx, eax
mov dword [r8 + 0x34], eax
xor ecx, r10d
mov dword [r8 + 0x38], ecx
movzx ecx, dh
movzx ecx, byte [r9 + rcx]
mov dword [r8 + 0x3c], edx
shl ecx, 0x10
xor ecx, r11d
mov r11d, edx
shr r11d, 0x18
movzx r11d, byte [r9 + r11]
xor ecx, r11d
movzx r11d, dl
movzx r11d, byte [r9 + r11]
shl r11d, 8
xor ecx, r11d
mov r11d, edx
shr r11d, 0x10
movzx r11d, r11b
movzx r11d, byte [r9 + r11]
shl r11d, 0x18
xor ecx, r11d
xor ecx, 0x8000000
xor r10d, ecx
xor eax, ecx
mov dword [r8 + 0x40], ecx
mov ebx, r10d
mov dword [r8 + 0x44], eax
xor ebx, edx
mov dword [r8 + 0x48], r10d
movzx esi, bh
mov dword [r8 + 0x4c], ebx
movzx r11d, byte [r9 + rsi]
shl r11d, 0x10
xor r11d, ecx
mov ecx, ebx
shr ecx, 0x18
movzx ecx, byte [r9 + rcx]
xor r11d, ecx
movzx ecx, bl
shr ebx, 0x10
movzx ecx, byte [r9 + rcx]
movzx ebx, bl
shl ecx, 8
xor r11d, ecx
movzx ecx, byte [r9 + rbx]
shl ecx, 0x18
xor r11d, ecx
xor r11d, 0x10000000
xor eax, r11d
mov dword [r8 + 0x50], r11d
mov ecx, eax
mov dword [r8 + 0x54], eax
xor ecx, r10d
xor edx, eax
mov dword [r8 + 0x58], ecx
movzx ecx, dh
movzx ecx, byte [r9 + rcx]
mov dword [r8 + 0x5c], edx
shl ecx, 0x10
xor ecx, r11d
mov r11d, edx
shr r11d, 0x18
movzx r11d, byte [r9 + r11]
xor ecx, r11d
movzx r11d, dl
movzx r11d, byte [r9 + r11]
shl r11d, 8
xor ecx, r11d
mov r11d, edx
shr r11d, 0x10
movzx r11d, r11b
movzx r11d, byte [r9 + r11]
shl r11d, 0x18
xor ecx, r11d
xor ecx, 0x20000000
xor r10d, ecx
xor eax, ecx
mov dword [r8 + 0x60], ecx
mov ebx, r10d
mov dword [r8 + 0x64], eax
xor ebx, edx
mov dword [r8 + 0x68], r10d
movzx esi, bh
mov dword [r8 + 0x6c], ebx
movzx r11d, byte [r9 + rsi]
shl r11d, 0x10
xor r11d, ecx
mov ecx, ebx
shr ecx, 0x18
movzx ecx, byte [r9 + rcx]
xor r11d, ecx
movzx ecx, bl
shr ebx, 0x10
movzx ecx, byte [r9 + rcx]
movzx ebx, bl
shl ecx, 8
xor r11d, ecx
movzx ecx, byte [r9 + rbx]
shl ecx, 0x18
xor r11d, ecx
xor r11d, 0x40000000
xor eax, r11d
mov dword [r8 + 0x70], r11d
mov ecx, eax
xor edx, eax
mov dword [r8 + 0x74], eax
xor ecx, r10d
mov dword [r8 + 0x78], ecx
movzx ecx, dh
mov dword [r8 + 0x7c], edx
movzx ecx, byte [r9 + rcx]
shl ecx, 0x10
xor ecx, r11d
mov r11d, edx
shr r11d, 0x18
movzx r11d, byte [r9 + r11]
xor ecx, r11d
movzx r11d, dl
movzx r11d, byte [r9 + r11]
shl r11d, 8
xor ecx, r11d
mov r11d, edx
shr r11d, 0x10
movzx r11d, r11b
movzx r11d, byte [r9 + r11]
shl r11d, 0x18
xor ecx, r11d
add ecx, 0x80000000
xor r10d, ecx
xor eax, ecx
mov dword [r8 + 0x80], ecx
mov ebx, r10d
mov dword [r8 + 0x84], eax
xor ebx, edx
mov dword [r8 + 0x88], r10d
movzx esi, bh
mov dword [r8 + 0x8c], ebx
movzx r11d, byte [r9 + rsi]
shl r11d, 0x10
xor r11d, ecx
mov ecx, ebx
shr ecx, 0x18
movzx ecx, byte [r9 + rcx]
xor r11d, ecx
movzx ecx, bl
shr ebx, 0x10
movzx ecx, byte [r9 + rcx]
movzx ebx, bl
shl ecx, 8
xor r11d, ecx
movzx ecx, byte [r9 + rbx]
shl ecx, 0x18
xor r11d, ecx
mov ecx, r10d
xor r11d, 0x1b000000
xor eax, r11d
mov dword [r8 + 0x90], r11d
xor edx, eax
xor ecx, eax
mov dword [r8 + 0x94], eax
mov dword [r8 + 0x98], ecx
movzx ecx, dh
movzx ecx, byte [r9 + rcx]
mov dword [r8 + 0x9c], edx
shl ecx, 0x10
xor ecx, r11d
mov r11d, edx
shr r11d, 0x18
movzx r11d, byte [r9 + r11]
xor ecx, r11d
movzx r11d, dl
movzx r11d, byte [r9 + r11]
shl r11d, 8
xor ecx, r11d
mov r11d, edx
shr r11d, 0x10
movzx r11d, r11b
movzx r9d, byte [r9 + r11]
shl r9d, 0x18
xor ecx, r9d
xor ecx, 0x36000000
xor eax, ecx
mov dword [r8 + 0xa0], ecx
xor ecx, r10d
xor edx, ecx
mov dword [r8 + 0xa4], eax
mov dword [r8 + 0xa8], ecx
mov dword [r8 + 0xac], edx
jmp 0x253ba23fd
mov eax, 0xffffffff
jmp 0x253ba23ff
mov eax, 0xfffffffe
jmp 0x253ba23ff