Function at 0x140119a60
Capabilities:
Encode data using base64

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x78
movaps xmmword [rsp + 0x60], xmm7
movapd xmmword [rsp + 0x50], xmm6
mov r14, rcx
mov qword [rsp + 0x30], 0
mov rbx, qword [rcx + 0x28]
mov r15, qword [rcx + 0x158]
and r15d, 0x3f
mov rsi, rbx
mov ecx, r15d
shr rsi, cl
test rsi, rsi
je 0x140119b4d
mov rax, rsi
shr rax, 0x3d
lea rdx, [rsi*4]
test rax, rax
mov qword [rsp + 0x38], rdx
jne 0x140119fc9
movzx eax, byte [0x1404a5170]
xor ecx, ecx
call sym.std::sys::pal::windows::alloc::process_heap_alloc::h5a8f05db6a24897c
test rax, rax
je 0x140119fd5
mov rdi, rax
cmp rsi, 8
jb 0x140119b0a
lea rax, [rdi + rsi*4]
lea rcx, [rsp + 0x38]
lea rdx, [rsp + 0x30]
cmp rdx, rax
setb al
cmp rcx, rdi
jbe 0x140119bad
test al, al
je 0x140119bad
xor eax, eax
mov r8, rsi
mov rdx, rax
and r8, 3
je 0x140119b3b
mov r9, rax
nop dword [rax + rax]
movzx ecx, byte [rsp + 0x30]
mov r10, r9
shl r10, cl
lea rdx, [r9 + 1]
mov dword [rdi + r9*4], r10d
mov r9, rdx
dec r8
jne 0x140119b20
sub rax, rsi
cmp rax, 0xfffffffffffffffc
jbe 0x140119b60
test rsi, rsi
jne 0x140119c3a
lea rcx, [0x1403d9b58]
call sym.core::option::unwrap_failed::hec1ab125882a5e1e
nop dword [rax]
movzx ecx, byte [rsp + 0x30]
mov rax, rdx
shl rax, cl
mov dword [rdi + rdx*4], eax
movzx ecx, byte [rsp + 0x30]
lea eax, [rdx + 1]
shl rax, cl
mov dword [rdi + rdx*4 + 4], eax
movzx ecx, byte [rsp + 0x30]
lea rax, [rdx + 2]
mov r8, rax
shl r8, cl
mov dword [rdi + rdx*4 + 8], r8d
movzx ecx, byte [rsp + 0x30]
inc eax
shl rax, cl
mov dword [rdi + rdx*4 + 0xc], eax
add rdx, 4
cmp rdx, rsi
jne 0x140119b60
jmp 0x140119c3a
mov rax, rsi
and rax, 0xfffffffffffffffc
movq xmm0, qword [rsp + 0x30]
pshufd xmm0, xmm0, 0x44
pand xmm0, xmmword [0x14039b040]
movdqa xmm1, xmmword [0x14039b050]
xor ecx, ecx
movdqa xmm2, xmmword [0x14039b060]
pshufd xmm3, xmm0, 0xee
movdqa xmm4, xmmword [0x14039b070]
nop word cs:[rax + rax]
movdqa xmm5, xmm1
movdqa xmm6, xmm1
psllq xmm6, xmm0
paddq xmm5, xmm2
movdqa xmm7, xmm1
psllq xmm7, xmm3
movsd xmm7, xmm6
movdqa xmm6, xmm5
psllq xmm6, xmm0
psllq xmm5, xmm3
movsd xmm5, xmm6
shufps xmm7, xmm5, 0x88
movups xmmword [rdi + rcx*4], xmm7
add rcx, 4
paddq xmm1, xmm4
cmp rax, rcx
jne 0x140119bf0
cmp rsi, rax
jne 0x140119b0c
mov r13, qword [rsp + 0x30]
movabs r9, 0x1fffffffffffffff
mov r12, qword [r14 + 0x20]
mov qword [rsp + 0x40], r14
mov r11, qword [r14 + 0x160]
and r13d, 0x3f
mov rbp, rsi
mov r8d, esi
dec r8d
lea rdx, [rbp - 0x80000000]
nop dword [rax]
sub rbp, 1
jb 0x140119d6e
cmp rdx, 0xffffffff80000000
jbe 0x140119f53
mov rax, rbp
mov ecx, r15d
shl rax, cl
add rax, r11
cmp rax, rbx
jae 0x140119f81
mov rax, qword [r12 + rax*8]
shr rax, 0x2a
cmp eax, 0x3ffffe
ja 0x140119c70
cmp r8d, ebp
je 0x140119d41
mov r10d, r8d
mov qword [rsp + 0x48], r10
mov ecx, r15d
shl r10, cl
mov edx, ebp
mov r9, rdx
shl r9, cl
mov r14d, 1
cmp r10, rbx
jae 0x140119fb7
cmp r9, rbx
jae 0x140119fa5
mov rcx, qword [r12 + r10*8]
mov rax, qword [r12 + r9*8]
mov qword [r12 + r10*8], rax
mov qword [r12 + r9*8], rcx
mov rax, r14
mov ecx, r15d
shr rax, cl
inc r9
inc r10
inc r14
test rax, rax
je 0x140119cd0
mov ecx, r13d
mov r10, qword [rsp + 0x48]
shr r10, cl
shr rdx, cl
cmp r10, rsi
jae 0x140119fe4
cmp rdx, rsi
movabs r9, 0x1fffffffffffffff
jae 0x140119ff6
mov eax, dword [rdi + r10*4]
mov ecx, dword [rdi + rdx*4]
mov dword [rdi + r10*4], ecx
mov dword [rdi + rdx*4], eax
mov rax, qword [rsp + 0x40]
mov dword [rax + 0x170], r8d
test r8d, r8d
jne 0x140119c63
lea rcx, str.match_states_should_be_a_proper_subset_of_all_states
lea r8, [0x1403d98a8]
mov edx, 0x34
call sym.core::option::expect_failed::h871cc0eae5c1c846
test rsi, rsi
je 0x140119da2
cmp rsi, r9
ja 0x140119fc9
movzx eax, byte [0x1404a5170]
xor ecx, ecx
mov rdx, qword [rsp + 0x38]
call sym.std::sys::pal::windows::alloc::process_heap_alloc::h5a8f05db6a24897c
test rax, rax
je 0x140119fd5
mov rbp, rax
mov r8, qword [rsp + 0x38]
jmp 0x140119daa
mov ebp, 4
xor r8d, r8d
mov rcx, rbp
mov rdx, rdi
call sym.memcpy
xor edx, edx
jmp 0x140119dcc
mov dword [rdi + rdx*4], r9d
inc rdx
cmp rdx, rsi
je 0x140119e0f
mov r8, rdx
mov ecx, r13d
shl r8, cl
cmp rdx, rsi
je 0x140119f41
mov eax, dword [rbp + rdx*4]
cmp eax, r8d
je 0x140119dc4
nop word [rax + rax]
mov r9d, eax
mov eax, eax
mov ecx, r13d
shr rax, cl
cmp rax, rsi
jae 0x140119f2f
mov eax, dword [rbp + rax*4]
cmp eax, r8d
jne 0x140119df0
jmp 0x140119dc0
mov rax, qword [rsp + 0x40]
mov r8, qword [rax + 0x150]
test r8, r8
je 0x140119e81
xor r9d, r9d
movabs r10, 0x7ffffffffff
nop dword [rax]
mov rax, r9
inc r9
mov ecx, r15d
shl rax, cl
mov r11, r8
nop
cmp rax, rbx
jae 0x140119f0b
mov r14, qword [r12 + rax*8]
mov rdx, r14
shr rdx, 0x2b
mov ecx, r13d
shr rdx, cl
cmp rdx, rsi
jae 0x140119f1d
mov ecx, dword [rdi + rdx*4]
shl rcx, 0x2b
and r14, r10
or r14, rcx
mov qword [r12 + rax*8], r14
inc rax
dec r11
jne 0x140119e40
cmp r9, rsi
jne 0x140119e30
mov rax, qword [rsp + 0x40]
mov rdx, qword [rax + 0x40]
test rdx, rdx
je 0x140119ec4
mov r8, qword [rax + 0x38]
xor r9d, r9d
nop word cs:[rax + rax]
mov eax, dword [r8 + r9*4]
mov ecx, r13d
shr rax, cl
cmp rax, rsi
jae 0x140119f93
mov eax, dword [rdi + rax*4]
mov dword [r8 + r9*4], eax
inc r9
cmp rdx, r9
jne 0x140119ea0
jmp 0x140119ec9
test rsi, rsi
je 0x140119eda
mov rcx, qword [0x1404a5110]
xor edx, edx
mov r8, rbp
call fcn.14021a7bc
test rsi, rsi
je 0x140119ef0
mov rcx, qword [0x1404a5110]
xor edx, edx
mov r8, rdi
call fcn.14021a7bc
movaps xmm6, xmmword [rsp + 0x50]
movaps xmm7, xmmword [rsp + 0x60]
add rsp, 0x78
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
lea r8, [0x1403d9b88]
mov rcx, rax
mov rdx, rbx
call sym.core::panicking::panic_bounds_check::ha5eba36dbaff2278
lea r8, [0x1403d9d60]
mov rcx, rdx
mov rdx, rsi
call sym.core::panicking::panic_bounds_check::ha5eba36dbaff2278
lea r8, [0x1403d8530]
mov rcx, rax
mov rdx, rsi
call sym.core::panicking::panic_bounds_check::ha5eba36dbaff2278
lea r8, [0x1403d8518]
mov rcx, rsi
mov rdx, rsi
call sym.core::panicking::panic_bounds_check::ha5eba36dbaff2278
mov qword [rsp + 0x30], rbp
lea rax, [0x1403d9858]
mov qword [rsp + 0x20], rax
lea rcx, [0x1403d97c6]
lea r9, [0x1403d9680]
lea r8, [rsp + 0x30]
mov edx, 0x15
call sym.core::result::unwrap_failed::h9b9528a0a4171737
lea r8, [0x1403d9b28]
mov rcx, rax
mov rdx, rbx
call sym.core::panicking::panic_bounds_check::ha5eba36dbaff2278
lea r8, [0x1403d9d60]
mov rcx, rax
mov rdx, rsi
call sym.core::panicking::panic_bounds_check::ha5eba36dbaff2278
lea r8, [0x1403d9b70]
mov rcx, r9
mov rdx, rbx
call sym.core::panicking::panic_bounds_check::ha5eba36dbaff2278
lea r8, [0x1403d9b70]
mov rcx, r10
mov rdx, rbx
call sym.core::panicking::panic_bounds_check::ha5eba36dbaff2278
xor ecx, ecx
mov rdx, qword [rsp + 0x38]
call sym.alloc::raw_vec::handle_error::h5313441c9bd13595
mov ecx, 4
mov rdx, qword [rsp + 0x38]
call sym.alloc::raw_vec::handle_error::h5313441c9bd13595
lea r8, [0x1403d8500]
mov rcx, r10
mov rdx, rsi
call sym.core::panicking::panic_bounds_check::ha5eba36dbaff2278
lea r8, [0x1403d8500]
mov rcx, rdx
mov rdx, rsi
call sym.core::panicking::panic_bounds_check::ha5eba36dbaff2278
int3