Function at 0x2d93ab150
Capabilities:
Encode data using base64

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x1a8
mov rax, qword [rdx]
imul rax, qword [rdx + 8]
mov qword [rsp + 0x90], 0
mov rbp, rcx
mov rbx, rdx
mov qword [rsp + 0x98], 0
jo 0x2d93ab4cd
mov edx, 0xffffffff
cmp rax, rdx
jg 0x2d93ab4d8
imul rax, qword [rbx + 0x20], 3
jo 0x2d93ab4cd
add rax, 0x16
jo 0x2d93ab4cd
test rax, rax
js 0x2d93ab540
lea rdi, [rsp + 0x80]
mov rdx, rax
lea r15, [rsp + 0x90]
mov rcx, rdi
mov qword [rsp + 0x40], rdi
call fcn.2d9347640
mov edx, 4
mov rcx, r15
movdqu xmm2, xmmword [rsp + 0x80]
movups xmmword [rsp + 0x90], xmm2
call fcn.2d9347380
mov rax, qword [rsp + 0x90]
mov rdx, qword [rsp + 0x98]
lea rax, [rdx + rax + 8]
mov dword [rax], 0x66696f71
mov byte [rax + 4], 0
mov rax, qword [rsp + 0x90]
add rax, 4
jo 0x2d93abd19
mov qword [rsp + 0x90], rax
mov r14, qword [0x2d9401050]
mov rsi, qword [rbx]
cmp byte [r14], 0
jne 0x2d93ab4a9
mov rcx, qword [rsp + 0x90]
add rcx, 4
jo 0x2d93ab89d
test rcx, rcx
js 0x2d93ab920
mov rdx, rcx
mov rcx, r15
call fcn.2d93475d0
mov rdx, qword [rsp + 0x90]
mov rcx, rdx
sub rcx, 4
jo 0x2d93ab89d
test rcx, rcx
js 0x2d93abab0
cmp rcx, rdx
jge 0x2d93abab0
mov eax, esi
rol ax, 8
mov edx, eax
mov eax, esi
shr esi, 0x18
shr eax, 0x10
shl edx, 0x10
shl eax, 8
or eax, esi
movzx eax, ax
or eax, edx
mov rdx, qword [rsp + 0x98]
mov dword [rdx + rcx + 8], eax
cmp byte [r14], 0
jne 0x2d93ab4a9
mov rcx, qword [rsp + 0x90]
mov rsi, qword [rbx + 8]
add rcx, 4
jo 0x2d93ab911
test rcx, rcx
js 0x2d93abac0
mov rdx, rcx
mov rcx, r15
call fcn.2d93475d0
mov rdx, qword [rsp + 0x90]
mov rcx, rdx
sub rcx, 4
jo 0x2d93ab911
test rcx, rcx
js 0x2d93abae0
cmp rcx, rdx
jge 0x2d93abae0
mov rax, qword [rsp + 0x98]
bswap esi
mov dword [rax + rcx + 8], esi
cmp byte [r14], 0
jne 0x2d93ab4a9
mov edx, 1
mov rcx, r15
mov rsi, qword [rbx + 0x10]
call fcn.2d9347380
mov rax, qword [rsp + 0x90]
mov rdx, qword [rsp + 0x98]
mov byte [rdx + rax + 8], sil
add rax, 1
jo 0x2d93abd23
mov rdx, qword [rsp + 0x98]
mov qword [rsp + 0x90], rax
mov byte [rdx + rax + 8], 0
cmp byte [r14], 0
jne 0x2d93ab4a9
mov edx, 1
mov rcx, r15
movzx esi, byte [rbx + 0x18]
call fcn.2d9347380
mov rax, qword [rsp + 0x90]
mov rdx, qword [rsp + 0x98]
mov byte [rdx + rax + 8], sil
add rax, 1
jo 0x2d93abd05
mov rdx, qword [rsp + 0x98]
mov qword [rsp + 0x90], rax
mov byte [rdx + rax + 8], 0
cmp byte [r14], 0
jne 0x2d93ab4a9
mov r12, qword [rbx + 0x20]
lea rdi, [rsp + 0xa0]
mov ecx, 0x20
xor eax, eax
mov qword [rsp + 0x58], rdi
rep stosq qword [rdi], rax
test r12, r12
jle 0x2d93abaf6
mov eax, dword [0x2d93f9f88]
xor r13d, r13d
mov rdx, r12
xor esi, esi
mov qword [rsp + 0x1f0], rbp
mov ebp, r13d
mov r13, r12
mov dword [rsp + 0x38], eax
cmp rsi, rdx
jge 0x2d93ab495
mov rax, qword [rbx + 0x28]
mov edx, dword [rsp + 0x38]
mov edi, dword [rax + rsi*4 + 8]
mov r12d, dword [rax + rsi*4 + 8]
mov ecx, edi
call fcn.2d9351f20
test al, al
je 0x2d93ab560
lea ecx, [rbp + 1]
cmp bpl, 0x3d
je 0x2d93ab838
mov rax, qword [rbx + 0x20]
lea rdx, [rax - 1]
cmp rdx, rsi
je 0x2d93ab838
mov ebp, ecx
add rsi, 1
cmp r13, rax
je 0x2d93ab483
movdqu xmm1, xmmword [0x2d93f9ec0]
mov rcx, qword [rsp + 0x40]
movups xmmword [rsp + 0x80], xmm1
call fcn.2d9341de0
cmp byte [r14], 0
jne 0x2d93ab890
cmp r13, rsi
je 0x2d93abaee
mov rdx, qword [rbx + 0x20]
cmp rsi, rdx
jl 0x2d93ab416
sub rdx, 1
mov rcx, rsi
mov rbp, qword [rsp + 0x1f0]
call fcn.2d934b440
movdqu xmm0, xmmword [rsp + 0x90]
mov rax, rbp
movups xmmword [rbp], xmm0
add rsp, 0x1a8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
call fcn.2d9346660
jmp 0x2d93ab4a9
mov edx, 8
mov ecx, 0x40
call fcn.2d9347850
lea rdx, [0x2d93f9ea0]
lea r9, str.qoi.nim
mov rcx, rax
mov rax, qword [0x2d9400de0]
lea r8, str.encodeQoi
mov qword [rcx + 0x10], rdx
mov qword [rcx], rax
lea rax, [0x2d93f9f60]
mov qword [rcx + 0x18], 0x1a
mov qword [rcx + 0x20], rax
mov qword [rcx + 8], 0
mov qword [rsp + 0x20], 0xa0
call fcn.2d9349640
jmp 0x2d93ab4a9
movabs r8, 0x7fffffffffffffff
xor edx, edx
mov rcx, rax
call fcn.2d9346cf0
jmp 0x2d93ab4a9
test bpl, bpl
je 0x2d93ab5b6
mov edx, 1
mov rcx, r15
sub ebp, 1
call fcn.2d9347380
mov rax, qword [rsp + 0x90]
mov rdx, qword [rsp + 0x98]
or ebp, 0xffffffc0
mov byte [rdx + rax + 8], bpl
add rax, 1
jo 0x2d93abd37
mov rdx, qword [rsp + 0x98]
mov qword [rsp + 0x90], rax
mov byte [rdx + rax + 8], 0
cmp byte [r14], 0
jne 0x2d93ab890
mov eax, r12d
mov edx, r12d
movzx r9d, r12b
mov ecx, r12d
shr edx, 0x10
movzx eax, ah
shr ecx, 0x18
mov ebp, r12d
mov dword [rsp + 0x78], eax
mov eax, r12d
movzx r10d, dl
movzx eax, ah
mov dword [rsp + 0x7c], edx
mov r8, rax
lea rax, [r9 + r9*2]
mov dword [rsp + 0x54], ecx
lea rdx, [r8 + r8*4]
add rax, rdx
lea rdx, [r10*8]
sub rdx, r10
add rax, rdx
movzx edx, cl
lea rcx, [rdx + rdx*4]
lea rdx, [rdx + rcx*2]
add rax, rdx
jo 0x2d93abcd0
cqo
shr rdx, 0x3a
add rax, rdx
and eax, 0x3f
sub rax, rdx
cmp byte [r14], 0
mov r11, rax
jne 0x2d93ab890
cmp rax, 0x3f
ja 0x2d93abc70
mov ecx, dword [rsp + r11*4 + 0xa0]
mov edx, edi
mov qword [rsp + 0x48], r11
mov qword [rsp + 0x70], r10
mov qword [rsp + 0x68], r8
mov qword [rsp + 0x60], r9
call fcn.2d9351f20
mov r11, qword [rsp + 0x48]
test al, al
jne 0x2d93ab8b0
mov rax, qword [rsp + 0x58]
mov r9, qword [rsp + 0x60]
mov r8, qword [rsp + 0x68]
mov r10, qword [rsp + 0x70]
mov dword [rax + r11*4], r12d
mov eax, dword [rsp + 0x38]
mov edx, eax
shr edx, 0x18
cmp byte [rsp + 0x54], dl
jne 0x2d93ab940
movzx edx, al
mov rdi, r8
sub r9, rdx
movzx edx, ah
shr eax, 0x10
movzx eax, al
sub rdi, rdx
sub r10, rax
lea rax, [r9 + 2]
cmp rax, 3
setbe dl
cmp rdi, 0xfffffffffffffffe
setge cl
and ecx, edx
cmp rdi, 1
setle dl
and edx, ecx
cmp r10, 0xfffffffffffffffe
setge cl
test dl, cl
je 0x2d93ab6e0
cmp r10, 1
jle 0x2d93abb56
sub r9, rdi
sub r10, rdi
cmp rdi, 0xffffffffffffffe0
setge al
cmp rdi, 0x1f
setle dl
add r9, 8
and eax, edx
cmp r9, 0xf
setbe dl
test al, dl
je 0x2d93ab713
add r10, 8
cmp r10, 0xf
jbe 0x2d93abbc7
mov edx, 1
mov rcx, r15
call fcn.2d9347380
mov rax, qword [rsp + 0x90]
mov rdx, qword [rsp + 0x98]
mov byte [rdx + rax + 8], 0xfe
add rax, 1
jo 0x2d93abd55
mov rdx, qword [rsp + 0x98]
mov qword [rsp + 0x90], rax
mov byte [rdx + rax + 8], 0
cmp byte [r14], 0
jne 0x2d93ab890
mov edx, 1
mov rcx, r15
call fcn.2d9347380
mov rax, qword [rsp + 0x90]
mov rdx, qword [rsp + 0x98]
mov byte [rdx + rax + 8], bpl
add rax, 1
jo 0x2d93abd4b
mov rdx, qword [rsp + 0x98]
mov qword [rsp + 0x90], rax
mov byte [rdx + rax + 8], 0
cmp byte [r14], 0
jne 0x2d93ab890
mov edx, 1
mov rcx, r15
call fcn.2d9347380
mov rax, qword [rsp + 0x90]
movzx edi, byte [rsp + 0x78]
mov rdx, qword [rsp + 0x98]
mov byte [rdx + rax + 8], dil
add rax, 1
jo 0x2d93abd41
mov rdx, qword [rsp + 0x98]
mov qword [rsp + 0x90], rax
mov byte [rdx + rax + 8], 0
cmp byte [r14], 0
jne 0x2d93ab890
mov edx, 1
mov rcx, r15
call fcn.2d9347380
mov rax, qword [rsp + 0x90]
movzx edi, byte [rsp + 0x7c]
mov rdx, qword [rsp + 0x98]
mov byte [rdx + rax + 8], dil
add rax, 1
jno 0x2d93ab8e6
call fcn.2d9346660
jmp 0x2d93ab8fb
mov edx, 1
mov rcx, r15
or ebp, 0xffffffc0
call fcn.2d9347380
mov rax, qword [rsp + 0x90]
mov rdx, qword [rsp + 0x98]
mov byte [rdx + rax + 8], bpl
add rax, 1
jo 0x2d93abd0f
mov rdx, qword [rsp + 0x98]
mov qword [rsp + 0x90], rax
mov byte [rdx + rax + 8], 0
cmp byte [r14], 0
jne 0x2d93ab890
mov rax, qword [rbx + 0x20]
xor ebp, ebp
jmp 0x2d93ab456
mov rbp, qword [rsp + 0x1f0]
jmp 0x2d93ab4a9
call fcn.2d9346660
jmp 0x2d93ab2bc
mov edx, 1
mov rcx, r15
mov qword [rsp + 0x38], r11
call fcn.2d9347380
mov rax, qword [rsp + 0x90]
mov r11, qword [rsp + 0x38]
mov rdx, qword [rsp + 0x98]
mov byte [rdx + rax + 8], r11b
add rax, 1
jo 0x2d93ab82a
mov rdx, qword [rsp + 0x98]
mov byte [rdx + rax + 8], 0
mov qword [rsp + 0x90], rax
cmp byte [r14], 0
jne 0x2d93ab890
mov dword [rsp + 0x38], r12d
mov rax, qword [rbx + 0x20]
xor ebp, ebp
jmp 0x2d93ab456
call fcn.2d9346660
jmp 0x2d93ab325
movabs r8, 0x7fffffffffffffff
xor edx, edx
call fcn.2d9346cf0
jmp 0x2d93ab2bc
mov edx, 1
mov rcx, r15
call fcn.2d9347380
mov rax, qword [rsp + 0x90]
mov rdx, qword [rsp + 0x98]
mov byte [rdx + rax + 8], 0xff
add rax, 1
jo 0x2d93abd9b
mov rdx, qword [rsp + 0x98]
mov qword [rsp + 0x90], rax
mov byte [rdx + rax + 8], 0
cmp byte [r14], 0
jne 0x2d93ab890
mov edx, 1
mov rcx, r15
call fcn.2d9347380
mov rax, qword [rsp + 0x90]
mov rdx, qword [rsp + 0x98]
mov byte [rdx + rax + 8], bpl
add rax, 1
jo 0x2d93abd91
mov rdx, qword [rsp + 0x98]
mov qword [rsp + 0x90], rax
mov byte [rdx + rax + 8], 0
cmp byte [r14], 0
jne 0x2d93ab890
mov edx, 1
mov rcx, r15
call fcn.2d9347380
mov rax, qword [rsp + 0x90]
movzx edi, byte [rsp + 0x78]
mov rdx, qword [rsp + 0x98]
mov byte [rdx + rax + 8], dil
add rax, 1
jo 0x2d93abd87
mov rdx, qword [rsp + 0x98]
mov qword [rsp + 0x90], rax
mov byte [rdx + rax + 8], 0
cmp byte [r14], 0
jne 0x2d93ab890
mov edx, 1
mov rcx, r15
call fcn.2d9347380
mov rax, qword [rsp + 0x90]
movzx edi, byte [rsp + 0x7c]
mov rdx, qword [rsp + 0x98]
mov byte [rdx + rax + 8], dil
add rax, 1
jo 0x2d93abd7d
mov rdx, qword [rsp + 0x98]
mov qword [rsp + 0x90], rax
mov byte [rdx + rax + 8], 0
cmp byte [r14], 0
jne 0x2d93ab890
mov edx, 1
mov rcx, r15
call fcn.2d9347380
mov rax, qword [rsp + 0x90]
movzx edi, byte [rsp + 0x54]
mov rdx, qword [rsp + 0x98]
mov byte [rdx + rax + 8], dil
add rax, 1
jno 0x2d93ab8e6
jmp 0x2d93ab82a
sub rdx, 1
call fcn.2d934b440
jmp 0x2d93ab2bc
movabs r8, 0x7fffffffffffffff
xor edx, edx
call fcn.2d9346cf0
jmp 0x2d93ab325
sub rdx, 1
call fcn.2d934b440
jmp 0x2d93ab325
mov rbp, qword [rsp + 0x1f0]
mov ebx, 7
jmp 0x2d93abb0a
sub rbx, 1
je 0x2d93abc8a
mov edx, 1
mov rcx, r15
call fcn.2d9347380
mov rax, qword [rsp + 0x90]
mov rdx, qword [rsp + 0x98]
mov byte [rdx + rax + 8], 0
add rax, 1
jo 0x2d93abd2d
mov rdx, qword [rsp + 0x98]
mov qword [rsp + 0x90], rax
mov byte [rdx + rax + 8], 0
cmp byte [r14], 0
je 0x2d93abb00
jmp 0x2d93ab4a9
mov edx, 1
mov rcx, r15
mov qword [rsp + 0x48], rax
mov qword [rsp + 0x38], r10
call fcn.2d9347380
mov rax, qword [rsp + 0x48]
mov r10, qword [rsp + 0x38]
lea r8d, [rdi*4 + 8]
mov rdx, qword [rsp + 0x90]
mov rcx, qword [rsp + 0x98]
shl eax, 4
add r10, 2
or eax, r8d
or eax, r10d
or eax, 0x40
mov byte [rcx + rdx + 8], al
add rdx, 1
jo 0x2d93ab82a
mov rax, qword [rsp + 0x98]
mov qword [rsp + 0x90], rdx
mov byte [rax + rdx + 8], 0
jmp 0x2d93ab8fb
mov edx, 1
mov rcx, r15
mov qword [rsp + 0x48], r10
mov qword [rsp + 0x38], r9
call fcn.2d9347380
lea r8, [rdi + 0x20]
mov r9, qword [rsp + 0x38]
mov rax, qword [rsp + 0x90]
mov rdx, qword [rsp + 0x98]
or r8d, 0xffffff80
mov r10, qword [rsp + 0x48]
mov byte [rdx + rax + 8], r8b
add rax, 1
jo 0x2d93abd5f
mov rdx, qword [rsp + 0x98]
mov qword [rsp + 0x90], rax
mov byte [rdx + rax + 8], 0
cmp byte [r14], 0
jne 0x2d93ab890
shl r9d, 4
mov edx, 1
mov rcx, r15
mov edi, r9d
or edi, r10d
call fcn.2d9347380
mov rax, qword [rsp + 0x90]
mov rdx, qword [rsp + 0x98]
mov byte [rdx + rax + 8], dil
add rax, 1
jno 0x2d93ab8e6
jmp 0x2d93ab82a
mov rcx, rax
mov edx, 0x3f
mov rbp, qword [rsp + 0x1f0]
call fcn.2d934b440
jmp 0x2d93ab4a9
mov edx, 1
mov rcx, r15
call fcn.2d9347380
mov rax, qword [rsp + 0x90]
mov rdx, qword [rsp + 0x98]
mov byte [rdx + rax + 8], 1
add rax, 1
jo 0x2d93ab4cd
mov rdx, qword [rsp + 0x98]
mov qword [rsp + 0x90], rax
mov byte [rdx + rax + 8], 0
jmp 0x2d93ab4a9
mov qword [rsp + 0x68], r10
mov qword [rsp + 0x60], r8
mov qword [rsp + 0x48], r9
call fcn.2d9346660
cmp byte [r14], 0
mov r9, qword [rsp + 0x48]
mov r8, qword [rsp + 0x60]
mov r10, qword [rsp + 0x68]
jne 0x2d93ab890
xor r11d, r11d
jmp 0x2d93ab63b
call fcn.2d9346660
jmp 0x2d93ab3c3
call fcn.2d9346660
jmp 0x2d93ab87c
call fcn.2d9346660
jmp 0x2d93ab232
call fcn.2d9346660
jmp 0x2d93ab374
call fcn.2d9346660
jmp 0x2d93abb4b
call fcn.2d9346660
jmp 0x2d93ab5ac
call fcn.2d9346660
jmp 0x2d93ab7ef
call fcn.2d9346660
jmp 0x2d93ab79f
call fcn.2d9346660
jmp 0x2d93ab754
mov qword [rsp + 0x48], r10
mov qword [rsp + 0x38], r9
call fcn.2d9346660
mov r10, qword [rsp + 0x48]
mov r9, qword [rsp + 0x38]
jmp 0x2d93abc24
call fcn.2d9346660
jmp 0x2d93aba6c
call fcn.2d9346660
jmp 0x2d93aba1c
call fcn.2d9346660
jmp 0x2d93ab9cc
call fcn.2d9346660
jmp 0x2d93ab981