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

Disassembly:
mov qword [rsp + 0x20], r9
mov dword [rsp + 0x18], r8d
mov qword [rsp + 0x10], rdx
mov qword [rsp + 8], rcx
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x38
lea eax, [r8 + 0x2fa]
mov r15d, r8d
mov dword [rsp + 0x24], eax
mov r13, rcx
cmp r8d, eax
jae 0x1800296da
movzx ebx, byte [rsp + 0x90]
movzx ebp, byte [rsp + 0x90]
movzx esi, byte [rsp + 0x90]
movzx r14d, byte [rsp + 0x90]
movzx edi, byte [rsp + 0x90]
nop word [rax + rax]
cmp r15d, 0x209
ja 0x1800294a8
je 0x180029474
mov eax, r15d
sub eax, 0x10b
je 0x180029400
sub eax, 6
je 0x1800293e0
cmp eax, 0x79
je 0x180029469
jmp 0x1800296c3
test r9, r9
je 0x1800296c3
lea rcx, [r9 - 0x18]
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
mov rdx, qword [rsp + 0x88]
jmp 0x1800296bb
movzx ecx, byte [rdx]
sub ecx, 0x10
je 0x180029466
sub ecx, 8
je 0x180029458
sub ecx, 8
je 0x18002944a
sub ecx, 0x60
je 0x180029466
cmp ecx, 0x40
je 0x180029458
mov ecx, 0xcf
mov eax, ecx
sub eax, 0xce
je 0x1800296f3
cmp eax, 1
jne 0x18002943b
mov byte [r13 + 0xf0], 0
dec ecx
cmp ecx, 0xcd
ja 0x180029421
jmp 0x1800296c3
mov byte [rdx], 0x20
mov r15d, 0x18a
jmp 0x1800296c3
mov byte [rdx], 0x18
mov r15d, 0x18a
jmp 0x1800296c3
mov byte [rdx], reloc.SHELL32.dll_ILFindLastID
mov r15d, 0x18a
jmp 0x1800296c3
movzx r8d, byte [rdx]
mov rcx, r13
mov rdx, r9
call sub.VCRUNTIME140.dll_memcpy
mov rdx, qword [rsp + 0x88]
movzx eax, byte [rdx]
add al, 0x1c
shl al, 2
mov byte [rsp + 0x20], al
shr al, 4
dec al
mov byte [r13 + 0xf0], al
jmp 0x1800296bb
mov eax, r15d
sub eax, 0x288
je 0x1800294c2
cmp eax, 0x7f
jne 0x1800296c3
xor al, al
jmp 0x1800296e2
movzx r12d, byte [rdx]
mov r8b, 1
cmp r12b, byte [rsp + 0x20]
jae 0x1800296c3
nop dword [rax]
nop dword [rax + rax]
movzx ecx, r12b
mov r11d, 0xbe
movzx r10d, r12b
add r10, r13
lea r15, [rcx + r13]
nop word [rax + rax]
mov eax, r11d
sub eax, 0xbe
je 0x18002968a
sub eax, 0x78
je 0x180029679
sub eax, 0x78
je 0x18002956f
sub eax, 0x78
je 0x18002955c
cmp eax, 0x78
jne 0x18002968f
movzx eax, bl
movzx ecx, byte [rax + r13 + 1]
xor cl, bpl
mov byte [r10 + 1], cl
movzx ecx, bl
movzx eax, byte [rcx + r13 + 2]
xor al, sil
mov byte [r10 + 2], al
movzx eax, byte [rcx + r13 + 3]
xor al, r14b
mov byte [r10 + 3], al
jmp 0x18002968f
movzx eax, bl
movzx ecx, byte [rax + r13]
xor cl, dil
mov byte [r10], cl
jmp 0x18002968f
movzx r9d, byte [rdx]
mov eax, ecx
xor edx, edx
div r9d
test edx, edx
jne 0x180029609
mov edx, 0xfe
lea r13, str.cw
nop
cmp edx, 0xfe
je 0x1800295c6
cmp edx, 0xbe80
jne 0x1800295df
movzx eax, r14b
movzx esi, byte [rax + r13]
movzx eax, bl
movzx r14d, byte [rax + r13]
movzx eax, r8b
shr al, 7
add r8b, r8b
movzx eax, al
imul ecx, eax, 0x1b
xor r8b, cl
jmp 0x1800295df
movzx eax, bpl
movzx ebx, dil
movzx edi, byte [rax + r13]
movzx eax, sil
xor dil, r8b
movzx ebp, byte [rax + r13]
add edx, 0xbd82
cmp edx, 0x17b04
jbe 0x180029590
mov r13, qword [rsp + 0x80]
movzx ebx, r12b
mov rdx, qword [rsp + 0x88]
sub bl, r9b
jmp 0x18002968f
cmp r9b, 0x18
jbe 0x180029668
cmp edx, 0x10
jne 0x180029668
mov eax, 0x100
lea r13, str.cw
cmp eax, 0x100
je 0x18002964b
cmp eax, 0x1a4
jne 0x180029654
movzx ecx, bpl
movzx ebp, byte [rcx + r13]
movzx ecx, sil
movzx esi, byte [rcx + r13]
movzx ecx, r14b
movzx r14d, byte [rcx + r13]
jmp 0x180029654
movzx ecx, dil
movzx edi, byte [rcx + r13]
add eax, 0xa4
cmp eax, 0x248
jb 0x180029620
mov r13, qword [rsp + 0x80]
mov rdx, qword [rsp + 0x88]
movzx ebx, r12b
sub bl, r9b
jmp 0x18002968f
movzx ebp, byte [r15 - 3]
movzx esi, byte [r15 - 2]
movzx r14d, byte [r15 - 1]
jmp 0x18002968f
movzx edi, byte [r10 - 4]
add r11d, 0x78
movzx ecx, r12b
cmp r11d, 0x316
jb 0x180029500
add r12b, 4
cmp r12b, byte [rsp + 0x20]
jb 0x1800294e0
mov r15d, dword [rsp + 0x90]
mov r9, qword [rsp + 0x98]
add r15d, 0x7f
mov dword [rsp + 0x90], r15d
cmp r15d, dword [rsp + 0x24]
jb 0x1800293b0
movzx eax, byte [rsp + 0x90]
add rsp, 0x38
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret
mov al, 0xff
jmp 0x1800296e2