Function at 0x140049900
Capabilities:
Encode data using base64

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x98
mov r15, r8
mov rdi, rdx
cmp byte [r9 + 0x10], 0
lea rax, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789___n_r_n_home_theo_.cargo_registry_src_index.crates.io_6f17d22bba15001f_rustc_serialize_0.3.25_src_base64.rs
lea rbp, [0x14013eb88]
cmove rbp, rax
xor eax, eax
cmp byte [r9 + 0x11], 0
sete al
lea rdx, [0x14013ebc8]
lea r12, [0x14013ebc9]
cmove r12, rdx
mov r10d, 2
sub r10, rax
lea rax, [r8 + 2]
movabs rbx, 0xaaaaaaaaaaaaaaab
mul rbx
mov rsi, rdx
add rsi, rdx
and rsi, 0xfffffffffffffffc
mov qword [rsp + 0x38], r9
mov rax, qword [r9]
mov qword [rsp + 0x60], rax
test rax, rax
je 0x1400499c0
test rsi, rsi
je 0x1400499b0
mov rax, qword [rsp + 0x38]
mov r8, qword [rax + 8]
test r8, r8
je 0x140049f87
lea rax, [rsi - 1]
mov rdx, rax
or rdx, r8
shr rdx, 0x20
je 0x1400499b4
xor edx, edx
div r8
jmp 0x1400499b9
xor eax, eax
jmp 0x1400499b9
xor edx, edx
div r8d
imul rax, r10
add rsi, rax
test rsi, rsi
mov qword [rsp + 0x58], r10
mov qword [rsp + 0x48], rcx
je 0x140049a06
setns al
js 0x140049fe3
movzx r13d, al
mov rax, qword [0x14016e368]
movzx eax, byte [rax]
mov rcx, rsi
mov rdx, r13
call sym.__rust_alloc
mov r14, rax
test rax, rax
jne 0x140049a0c
mov rcx, r13
mov rdx, rsi
call dbg.handle_alloc_error
ud2
mov r14d, 1
mov rcx, r14
mov dl, 0x3d
mov r8, rsi
call sub.msvcrt.dll_memset
mov rax, r15
mul rbx
shr rdx, 1
lea r9, [rdx + rdx*2]
mov rcx, r15
sub rcx, r9
mov qword [rsp + 0x30], rdi
add r9, rdi
lea rdi, [r14 + rsi]
mov rax, qword [rsp + 0x58]
lea r8, [r12 + rax]
cmp qword [rsp + 0x60], 0
mov qword [rsp + 0x40], r15
mov qword [rsp + 0x28], r14
mov qword [rsp + 0x50], rcx
je 0x140049a73
cmp rcx, r15
jne 0x140049a8a
test rcx, rcx
je 0x140049efd
xor r10d, r10d
mov r14, qword [rsp + 0x28]
jmp 0x140049d76
cmp rcx, r15
jne 0x140049c11
test rcx, rcx
jne 0x140049e1c
jmp 0x140049efd
lea rdx, [rax - 1]
xor r10d, r10d
mov r13, qword [rsp + 0x30]
mov qword [rsp + 0x78], rsi
nop dword [rax + rax]
lea rax, [r13 + 1]
cmp rax, r9
je 0x140049d5e
lea rax, [r13 + 2]
cmp rax, r9
je 0x140049d5e
movzx ebx, byte [r13]
movzx ecx, byte [r13 + 1]
movzx r15d, byte [r13 + 2]
mov rax, qword [rsp + 0x38]
cmp r10, qword [rax + 8]
jb 0x140049b7e
mov rax, rdi
sub rax, r14
cmp rax, rdx
cmovae rax, rdx
inc rax
cmp rax, 0x21
jb 0x140049b50
mov r10, r14
sub r10, r12
cmp r10, 0x1f
jbe 0x140049b50
mov r10d, eax
and r10d, 0x1f
mov r11d, 0x20
cmove r10, r11
sub rax, r10
lea r11, [r14 + rax]
lea r10, [r12 + rax]
xor esi, esi
nop dword [rax + rax]
movups xmm0, xmmword [r12 + rsi]
movups xmm1, xmmword [r12 + rsi + 0x10]
movups xmmword [r14 + rsi], xmm0
movups xmmword [r14 + rsi + 0x10], xmm1
add rsi, 0x20
cmp rax, rsi
jne 0x140049b20
mov r14, r11
mov rsi, qword [rsp + 0x78]
jmp 0x140049b60
mov r10, r12
nop word cs:[rax + rax]
cmp r14, rdi
je 0x140049fc4
movzx eax, byte [r10]
inc r10
mov byte [r14], al
inc r14
cmp r10, r8
jne 0x140049b60
xor r10d, r10d
cmp r14, rdi
je 0x140049fc4
mov rax, rbx
shr rax, 2
movzx eax, byte [rbp + rax]
lea r11, [r14 + 1]
mov byte [r14], al
cmp r11, rdi
je 0x140049fc4
shl rbx, 0x10
shl rcx, 8
or rbx, rcx
shr ebx, 0xc
and ebx, 0x3f
movzx eax, byte [rbp + rbx]
lea r11, [r14 + 2]
mov byte [r14 + 1], al
cmp r11, rdi
je 0x140049fc4
or rcx, r15
shr ecx, 6
and ecx, 0x3f
movzx eax, byte [rbp + rcx]
lea rcx, [r14 + 3]
mov byte [r14 + 2], al
cmp rcx, rdi
je 0x140049fc4
add r13, 3
and r15d, 0x3f
movzx eax, byte [rbp + r15]
mov byte [r14 + 3], al
add r14, 4
add r10, 4
cmp r13, r9
jne 0x140049aa0
jmp 0x140049d5e
lea r10, [rdx*4]
movabs rax, 0xaaaaaaaaaaaaaaa8
lea rax, [rax + rdx*4]
mov qword [rsp + 0x68], rax
movabs rax, 0x5555555555555554
lea rax, [rax + rdx*4]
mov qword [rsp + 0x70], rax
lea rax, [rsi - 3]
mov qword [rsp + 0x80], rax
lea rax, [rsi - 2]
mov qword [rsp + 0x88], rax
lea rax, [rsi - 1]
mov qword [rsp + 0x90], rax
xor r11d, r11d
mov rax, qword [rsp + 0x30]
mov rdx, qword [rsp + 0x28]
lea rbx, [rax + 1]
cmp rbx, r9
je 0x140049d59
inc rbx
cmp rbx, r9
je 0x140049f69
cmp rsi, r11
je 0x140049fc4
movzx eax, byte [rax]
movzx r13d, byte [rbx - 1]
movzx r15d, byte [rbx]
mov rcx, rsi
mov rsi, rax
shr rsi, 2
movzx esi, byte [rbp + rsi]
mov byte [rdx + r11], sil
mov rsi, rcx
cmp qword [rsp + 0x90], r11
je 0x140049fc4
shl rax, 0x10
shl r13, 8
or rax, r13
shr eax, 0xc
and eax, 0x3f
movzx eax, byte [rbp + rax]
mov rcx, qword [rsp + 0x28]
mov byte [rcx + r11 + 1], al
cmp qword [rsp + 0x88], r11
je 0x140049fc4
or r13, r15
shr r13d, 6
and r13d, 0x3f
movzx eax, byte [rbp + r13]
mov rcx, qword [rsp + 0x28]
mov byte [rcx + r11 + 2], al
cmp qword [rsp + 0x80], r11
je 0x140049fc4
and r15d, 0x3f
movzx eax, byte [rbp + r15]
add r14, 4
mov rcx, qword [rsp + 0x28]
mov byte [rcx + r11 + 3], al
add r11, 4
inc rbx
mov rax, rbx
cmp rbx, r9
jne 0x140049c70
add r11, qword [rsp + 0x28]
mov r14, r11
cmp qword [rsp + 0x50], 0
jne 0x140049d6a
jmp 0x140049efd
mov r10, qword [rsp + 0x70]
cmp qword [rsp + 0x50], 0
je 0x140049efd
cmp qword [rsp + 0x60], 0
je 0x140049e1c
mov rax, qword [rsp + 0x38]
cmp r10, qword [rax + 8]
jb 0x140049e1c
mov rax, rdi
sub rax, r14
mov rdx, qword [rsp + 0x58]
dec rdx
cmp rax, rdx
cmovb rdx, rax
inc rdx
cmp rdx, 0x21
jb 0x140049e00
mov rax, r14
sub rax, r12
cmp rax, 0x20
jb 0x140049e00
mov eax, edx
and eax, 0x1f
mov ecx, 0x20
cmovne rcx, rax
sub rdx, rcx
lea rax, [r14 + rdx]
lea rcx, [r12 + rdx]
xor r9d, r9d
nop dword [rax + rax]
movups xmm0, xmmword [r12 + r9]
movups xmm1, xmmword [r12 + r9 + 0x10]
movups xmmword [r14 + r9], xmm0
movups xmmword [r14 + r9 + 0x10], xmm1
add r9, 0x20
cmp rdx, r9
jne 0x140049dd0
mov r14, rax
mov r12, rcx
nop word cs:[rax + rax]
cmp r14, rdi
je 0x140049fc4
movzx eax, byte [r12]
inc r12
mov byte [r14], al
inc r14
cmp r12, r8
jne 0x140049e00
mov rax, qword [rsp + 0x50]
cmp rax, 1
je 0x140049ead
cmp rax, 2
mov rdx, qword [rsp + 0x40]
jne 0x140049fea
lea rcx, [rdx - 2]
cmp rdx, 1
jbe 0x140049fa1
cmp r14, rdi
je 0x140049fc4
mov rax, qword [rsp + 0x30]
movzx r8d, byte [rdx + rax - 1]
movzx eax, byte [rax + rcx]
mov rcx, rax
shr rcx, 2
movzx ecx, byte [rbp + rcx]
lea r9, [r14 + 1]
mov byte [r14], cl
cmp r9, rdi
je 0x140049fc4
shl eax, 0x10
mov ecx, r8d
shl ecx, 8
or ecx, eax
shr ecx, 0xc
and ecx, 0x3f
movzx eax, byte [rbp + rcx]
mov byte [r14 + 1], al
add r14, 2
cmp r14, rdi
je 0x140049fc4
shl r8d, 2
and r8d, 0x3c
jmp 0x140049ef2
mov rdx, qword [rsp + 0x40]
test rdx, rdx
je 0x140049faa
cmp r14, rdi
je 0x140049fc4
mov rax, qword [rsp + 0x30]
movzx r8d, byte [rax + rdx - 1]
mov rax, r8
shr rax, 2
movzx eax, byte [rbp + rax]
mov byte [r14], al
inc r14
cmp r14, rdi
je 0x140049fc4
shl r8d, 4
and r8d, 0x30
mov eax, r8d
movzx eax, byte [rbp + rax]
mov byte [r14], al
mov rax, qword [rsp + 0x38]
movzx ecx, byte [rax + 0x12]
xor edx, edx
test cl, cl
cmovne rdx, rsi
test rsi, rsi
je 0x140049f40
test cl, cl
mov rax, qword [rsp + 0x48]
mov rcx, qword [rsp + 0x28]
jne 0x140049f4a
mov rdx, rsi
nop word cs:[rax + rax]
cmp byte [rcx + rdx - 1], 0x3d
jne 0x140049f4a
dec rdx
jne 0x140049f30
xor edx, edx
jmp 0x140049f4a
mov rax, qword [rsp + 0x48]
mov rcx, qword [rsp + 0x28]
mov qword [rax], rcx
mov qword [rax + 8], rsi
mov qword [rax + 0x10], rdx
add rsp, 0x98
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
add r11, qword [rsp + 0x28]
mov r14, r11
mov r10, qword [rsp + 0x68]
cmp qword [rsp + 0x50], 0
jne 0x140049d6a
jmp 0x140049efd
lea rcx, [0x14013ec50]
lea r8, [0x14013ec30]
mov edx, 0x19
call dbg.panic
ud2
lea r8, [0x14013ec88]
jmp 0x140049fb8
lea r8, [0x14013ec70]
mov rcx, 0xffffffffffffffff
mov rbx, qword [rsp + 0x28]
call dbg.panic_bounds_check
jmp 0x14004a007
lea rcx, [0x14013ece8]
lea r8, [0x14013ed18]
mov edx, 0x2b
mov rbx, qword [rsp + 0x28]
call dbg.panic
jmp 0x14004a007
call dbg.capacity_overflow
ud2
lea rcx, str.Algebra_is_broken__please_alert_the_math_police
lea r8, [0x14013ecd0]
mov edx, 0x2f
mov rbx, qword [rsp + 0x28]
call sym.std::panicking::begin_panic::h128f6cf2fad29595
ud2