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

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 0xb8
lea rbp, [rsp + 0x80]
mov qword [rbp + 0x30], 0xfffffffffffffffe
mov r15, r9
mov rsi, r8
mov rbx, rdx
mov r14, rcx
mov rdi, qword [rbp + 0xa8]
test rdi, rdi
je 0x1400253ff
mov edx, 1
mov rcx, rdi
call fcn.1400035f0
mov r12, rax
test rax, rax
jne 0x140025405
mov edx, 1
mov rcx, rdi
call fcn.140049940
ud2
mov r12d, 1
mov rdx, qword [rbp + 0xa0]
mov qword [r14], r12
mov qword [r14 + 8], rdi
mov rcx, r12
mov r8, rdi
call sub.VCRUNTIME140.dll_memcpy
mov qword [r14 + 0x10], rdi
mov eax, dword [rbx + 0xf4]
mov dword [rbp - 0x28], eax
mov eax, dword [rbx + 0xf8]
mov dword [rbp - 0x24], eax
mov eax, dword [rbx + 0xfc]
mov dword [rbp - 0x20], eax
mov eax, dword [rbx + 0x100]
mov dword [rbp - 0x1c], eax
mov al, byte [rbx + 0x1e4]
shr al, 1
mov byte [rbp + 0x2f], al
add rbx, 0x120
mov qword [rbp - 0x40], rbx
xor eax, eax
xor ecx, ecx
mov qword [rbp - 0x30], r14
mov qword [rbp - 0x38], r12
test al, 1
je 0x14002547a
nop dword [rax]
add rcx, 0xf
jb 0x140025a1a
cmp rcx, rdi
jae 0x140025a1a
lea rdx, [rcx + 0x10]
cmp rcx, 0xffffffffffffffef
ja 0x140025b1a
mov qword [rbp - 0x60], r15
mov qword [rbp - 0x50], rsi
cmp rdx, rdi
ja 0x140025b28
lea rax, [rcx + 1]
mov qword [rbp - 0x48], rax
mov esi, dword [r12 + rcx]
mov edi, dword [r12 + rcx + 4]
bswap esi
xor esi, dword [rbp - 0x28]
mov r9d, esi
bswap edi
xor edi, dword [rbp - 0x24]
mov esi, edi
mov edx, dword [r12 + rcx + 8]
bswap edx
xor edx, dword [rbp - 0x20]
mov qword [rbp - 0x58], rcx
mov eax, dword [r12 + rcx + 0xc]
bswap eax
xor eax, dword [rbp - 0x1c]
mov ecx, 0x3c
mov rbx, qword [rbp - 0x40]
mov qword [rbp + 8], rbx
mov bl, byte [rbp + 0x2f]
mov byte [rbp + 0x10], bl
lea r14, [0x14004f0e0]
nop word cs:[rax + rax]
nop
mov qword [rbp + 0x18], rcx
movzx ecx, dh
mov qword [rbp + 0x20], rcx
movzx ecx, dl
mov qword [rbp - 0x18], rcx
mov r13d, edx
shr edx, 0x10
movzx ecx, dl
mov r12d, eax
movzx edx, ah
mov qword [rbp - 8], rdx
movzx edx, al
mov qword [rbp - 0x10], rdx
shr eax, 0x18
lea r10, [0x14004ece0]
mov edi, dword [r10 + rcx*4]
lea r8, [0x14004e8c8]
xor edi, dword [r8 + rax*4]
mov ebx, r9d
mov eax, r9d
shr eax, 0x18
shr r12d, 0x10
movzx r12d, r12b
mov ecx, esi
movzx edx, cl
mov qword [rbp], rdx
mov r9d, esi
mov r11d, esi
movzx ecx, ch
mov r15, rcx
mov edx, dword [r10 + r12*4]
xor edx, dword [r8 + rax*4]
mov rax, qword [rbp + 0x20]
xor edx, dword [r14 + rax*4]
shr r9d, 0x18
mov eax, ebx
shr eax, 0x10
movzx eax, al
movzx esi, bh
movzx r12d, bl
mov ecx, dword [r10 + rax*4]
xor ecx, dword [r8 + r9*4]
mov rax, qword [rbp - 8]
xor ecx, dword [r14 + rax*4]
shr r13d, 0x18
shr r11d, 0x10
movzx eax, r11b
mov eax, dword [r10 + rax*4]
xor eax, dword [r8 + r13*4]
xor eax, dword [r14 + rsi*4]
xor edi, dword [r14 + r15*4]
lea rbx, [0x14004f4e0]
mov rsi, qword [rbp]
xor edx, dword [rbx + rsi*4]
lea rbx, [0x14004f4e0]
mov rsi, qword [rbp - 0x18]
xor ecx, dword [rbx + rsi*4]
mov rsi, qword [rbp - 0x10]
xor eax, dword [rbx + rsi*4]
xor edi, dword [rbx + r12*4]
mov rbx, qword [rbp + 8]
xor edx, dword [rbx - 0x1c]
xor ecx, dword [rbx - 0x18]
xor eax, dword [rbx - 0x14]
xor edi, dword [rbx - 0x10]
movzx ebx, byte [rbp + 0x10]
add bl, 0xff
je 0x140025720
mov byte [rbp + 0x10], bl
movzx esi, ah
mov qword [rbp + 0x20], rsi
movzx ebx, al
mov qword [rbp - 0x18], rbx
mov r13d, eax
shr eax, 0x10
movzx esi, al
mov rax, rdi
mov r12d, eax
movzx edi, ah
mov qword [rbp], rdi
mov r15, qword [rbp + 8]
movzx ebx, al
mov qword [rbp - 0x10], rbx
shr eax, 0x18
lea r10, [0x14004ece0]
mov edi, dword [r10 + rsi*4]
lea r9, [0x14004e8c8]
xor edi, dword [r9 + rax*4]
mov rax, rdi
movzx ebx, cl
mov qword [rbp - 8], rbx
mov r8d, ecx
shr r8d, 0x18
mov esi, edx
shr esi, 0x10
movzx r11d, sil
mov esi, ecx
movzx ebx, ch
mov edi, dword [r10 + r11*4]
xor edi, dword [r9 + r8*4]
mov rcx, qword [rbp]
xor edi, dword [r14 + rcx*4]
mov r8d, edx
shr r13d, 0x18
shr esi, 0x10
movzx ecx, sil
movzx esi, dh
movzx r11d, dl
mov edx, dword [r10 + rcx*4]
xor edx, dword [r9 + r13*4]
xor edx, dword [r14 + rsi*4]
xor eax, dword [r14 + rbx*4]
mov rcx, qword [rbp + 0x20]
mov ebx, dword [r14 + rcx*4]
lea rsi, [0x14004f4e0]
mov rcx, qword [rbp - 8]
xor ebx, dword [rsi + rcx*4]
lea rcx, [0x14004f4e0]
shr r12d, 0x10
movzx esi, r12b
xor ebx, dword [r10 + rsi*4]
shr r8d, 0x18
xor ebx, dword [r9 + r8*4]
mov rsi, qword [rbp - 0x18]
xor edi, dword [rcx + rsi*4]
mov rsi, qword [rbp - 0x10]
xor edx, dword [rcx + rsi*4]
xor eax, dword [rcx + r11*4]
mov rcx, qword [rbp + 0x18]
add rcx, 0xfffffffffffffff8
xor ebx, dword [r15 - 0xc]
mov r9d, ebx
xor edi, dword [r15 - 8]
mov esi, edi
xor edx, dword [r15 - 4]
xor eax, dword [r15]
add r15, 0x20
mov qword [rbp + 8], r15
cmp rcx, 4
ja 0x140025500
jmp 0x140025a5e
cmp qword [rbp + 0x18], 8
je 0x140025a79
mov rbx, rcx
mov r9d, edi
mov ecx, edi
mov qword [rbp + 0x10], rcx
mov r14d, edi
mov r10d, edx
mov esi, edx
shr edx, 8
movzx ecx, dl
mov qword [rbp + 0x18], rcx
mov rdx, rbx
mov ecx, edx
mov r11d, edx
shr edx, 8
movzx edx, dl
mov qword [rbp + 0x20], rdx
movzx edx, cl
lea r8, [0x14004f8f8]
movzx edx, byte [rdx + r8]
shl edx, 0x18
mov ebx, eax
shr ebx, 8
movzx ebx, bl
movzx ebx, byte [rbx + r8]
shl ebx, 0x10
or ebx, edx
mov edi, eax
shr eax, 0x10
movzx r13d, al
shr r9d, 0x10
movzx edx, r9b
movzx edx, byte [rdx + r8]
shl edx, 8
or edx, ebx
mov rbx, r10
shr rbx, 0x18
movzx ebx, byte [rbx + r8]
or ebx, edx
bswap ebx
mov r15, qword [rbp + 8]
xor ebx, dword [r15 - 0xc]
bswap ebx
mov r12, qword [rbp - 0x38]
mov r9, qword [rbp - 0x58]
mov dword [r12 + r9], ebx
movzx edx, dil
movzx edx, byte [rdx + r8]
shl edx, 0x18
mov rax, qword [rbp + 0x10]
shr eax, 8
movzx ebx, al
movzx ebx, byte [rbx + r8]
shl ebx, 0x10
or ebx, edx
shr esi, 0x10
movzx edx, sil
movzx eax, byte [rdx + r8]
shl eax, 8
or eax, ebx
shr rcx, 0x18
movzx esi, byte [rcx + r8]
or esi, eax
movzx eax, r14b
movzx eax, byte [rax + r8]
shl eax, 0x18
mov rcx, qword [rbp + 0x18]
movzx ecx, byte [rcx + r8]
shl ecx, 0x10
or ecx, eax
shr r11d, 0x10
movzx eax, r11b
movzx eax, byte [rax + r8]
shl eax, 8
or eax, ecx
shr rdi, 0x18
movzx ecx, byte [rdi + r8]
or ecx, eax
movzx eax, r10b
movzx eax, byte [rax + r8]
shl eax, 0x18
mov rdx, qword [rbp + 0x20]
movzx ebx, byte [rdx + r8]
shl ebx, 0x10
or ebx, eax
movzx edi, byte [r13 + r8]
shl edi, 8
or edi, ebx
shr r14, 0x18
movzx eax, byte [r14 + r8]
or eax, edi
bswap esi
xor esi, dword [r15 - 8]
bswap esi
mov dword [r12 + r9 + 4], esi
bswap ecx
xor ecx, dword [r15 - 4]
bswap ecx
mov dword [r12 + r9 + 8], ecx
bswap eax
xor eax, dword [r15]
bswap eax
mov dword [r12 + r9 + 0xc], eax
mov rdi, qword [rbp - 0x60]
test rdi, rdi
je 0x140025a8e
mov r8, qword [rbp - 0x50]
mov bl, byte [r8]
xor byte [r12 + r9], bl
cmp rdi, 1
je 0x140025a92
mov bl, byte [r8 + 1]
xor byte [r12 + r9 + 1], bl
cmp rdi, 2
je 0x140025a99
mov bl, byte [r8 + 2]
xor byte [r12 + r9 + 2], bl
cmp rdi, 3
je 0x140025aa0
mov bl, byte [r8 + 3]
xor byte [r12 + r9 + 3], bl
cmp rdi, 4
je 0x140025aa7
mov bl, byte [r8 + 4]
xor bl, sil
mov byte [r12 + r9 + 4], bl
cmp rdi, 5
je 0x140025aae
mov edx, esi
shr edx, 8
xor dl, byte [r8 + 5]
mov byte [r12 + r9 + 5], dl
cmp rdi, 6
je 0x140025ab5
mov edx, esi
shr edx, 0x10
xor dl, byte [r8 + 6]
mov byte [r12 + r9 + 6], dl
cmp rdi, 7
je 0x140025abc
shr esi, 0x18
xor sil, byte [r8 + 7]
mov byte [r12 + r9 + 7], sil
cmp rdi, 8
je 0x140025ac3
mov dl, byte [r8 + 8]
xor dl, cl
mov byte [r12 + r9 + 8], dl
cmp rdi, 9
je 0x140025aca
mov edx, ecx
shr edx, 8
xor dl, byte [r8 + 9]
mov byte [r12 + r9 + 9], dl
cmp rdi, 0xa
je 0x140025ad1
mov edx, ecx
shr edx, 0x10
xor dl, byte [r8 + 0xa]
mov byte [r12 + r9 + 0xa], dl
cmp rdi, 0xb
je 0x140025ad8
shr ecx, 0x18
xor cl, byte [r8 + 0xb]
mov byte [r12 + r9 + 0xb], cl
cmp rdi, 0xc
je 0x140025adf
mov cl, byte [r8 + 0xc]
xor cl, al
mov byte [r12 + r9 + 0xc], cl
cmp rdi, 0xd
je 0x140025ae6
mov ecx, eax
shr ecx, 8
xor cl, byte [r8 + 0xd]
mov byte [r12 + r9 + 0xd], cl
cmp rdi, 0xe
je 0x140025aed
mov ecx, eax
shr ecx, 0x10
xor cl, byte [r8 + 0xe]
mov byte [r12 + r9 + 0xe], cl
cmp rdi, 0xf
je 0x140025af4
shr eax, 0x18
xor al, byte [r8 + 0xf]
mov byte [r12 + r9 + 0xf], al
mov rsi, r9
add rsi, qword [rbp + 0xa0]
mov r15d, 0x10
mov al, 1
mov rcx, qword [rbp - 0x48]
mov r14, qword [rbp - 0x30]
mov rdi, qword [rbp + 0xa8]
test al, 1
jne 0x140025470
jmp 0x14002547a
mov rbx, qword [r14 + 0x10]
mov rcx, rbx
sub rcx, 1
jb 0x140025b0a
mov rdx, qword [r14]
movzx edx, byte [rdx + rcx]
xor ecx, ecx
mov rax, rbx
sub rax, rdx
cmovae rcx, rax
cmp rbx, rcx
jb 0x140025a47
mov qword [r14 + 0x10], rcx
mov rax, r14
add rsp, 0xb8
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
lea r8, str.C:UsersEmran.cargo_registry_srcmirrors.ustc.edu.cn_61ef6e0cd06fb9b8libaes_0.6.2_srclib.rs
mov ecx, 4
mov edx, 4
call fcn.1400499b0
jmp 0x140025b3e
lea r8, str.C:UsersEmran.cargo_registry_srcmirrors.ustc.edu.cn_61ef6e0cd06fb9b8libaes_0.6.2_srclib.rs
xor ecx, ecx
xor edx, edx
call fcn.1400499b0
jmp 0x140025b3e
xor ecx, ecx
jmp 0x140025af9
mov ecx, 1
jmp 0x140025af9
mov ecx, 2
jmp 0x140025af9
mov ecx, 3
jmp 0x140025af9
mov ecx, 4
jmp 0x140025af9
mov ecx, 5
jmp 0x140025af9
mov ecx, 6
jmp 0x140025af9
mov ecx, 7
jmp 0x140025af9
mov ecx, 8
jmp 0x140025af9
mov ecx, 9
jmp 0x140025af9
mov ecx, 0xa
jmp 0x140025af9
mov ecx, 0xb
jmp 0x140025af9
mov ecx, 0xc
jmp 0x140025af9
mov ecx, 0xd
jmp 0x140025af9
mov ecx, 0xe
jmp 0x140025af9
mov ecx, 0xf
lea r8, str.C:UsersEmran.cargo_registry_srcmirrors.ustc.edu.cn_61ef6e0cd06fb9b8libaes_0.6.2_srclib.rs
mov rdx, rcx
call fcn.1400499b0
jmp 0x140025b3e
lea r8, str.C:UsersEmran.cargo_registry_srcmirrors.ustc.edu.cn_61ef6e0cd06fb9b8libaes_0.6.2_srclib.rs
xor edx, edx
call fcn.1400499b0
jmp 0x140025b3e
lea r8, str.C:UsersEmran.cargo_registry_srcmirrors.ustc.edu.cn_61ef6e0cd06fb9b8libaes_0.6.2_srclib.rs
call fcn.140049bd0
jmp 0x140025b3e
lea r8, str.C:UsersEmran.cargo_registry_srcmirrors.ustc.edu.cn_61ef6e0cd06fb9b8libaes_0.6.2_srclib.rs
mov rcx, rdx
mov rdx, qword [rbp + 0xa8]
call fcn.140049bc0
ud2