Function at 0x2ba38b000
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
movups xmmword [rsp + 0x190], xmm6
mov rax, qword [rdx]
imul rax, qword [rdx + 8]
mov qword [rsp + 0x80], 0
mov r12, rcx
mov rsi, rdx
mov qword [rsp + 0x88], 0
jo 0x2ba38b3f0
mov edx, 0xffffffff
cmp rax, rdx
jg 0x2ba38b428
imul rax, qword [rsi + 0x20], 3
jo 0x2ba38b3f0
xor ebp, ebp
add rax, 0x16
seto bpl
jo 0x2ba38b3f0
test rax, rax
js 0x2ba38b658
lea rdi, [rsp + 0x70]
mov rdx, rax
lea r13, [rsp + 0x80]
mov rcx, rdi
mov qword [rsp + 0x48], rdi
call fcn.2ba327220
movdqu xmm1, xmmword [rsp + 0x70]
mov edx, 4
mov rcx, r13
movups xmmword [rsp + 0x80], xmm1
call fcn.2ba326f70
mov rax, qword [rsp + 0x80]
mov rdx, qword [rsp + 0x88]
lea rax, [rdx + rax + 8]
mov dword [rax], 0x66696f71
mov byte [rax + 4], 0
mov rax, qword [rsp + 0x80]
add rax, 4
jo 0x2ba38bc23
mov qword [rsp + 0x80], rax
mov rax, qword [0x2ba3e1ef0]
cmp byte [rax], 0
jne 0x2ba38b3f5
mov r10, qword [rsp + 0x80]
add r10, 4
jo 0x2ba38b824
test r10, r10
js 0x2ba38b840
mov rdx, r10
mov rcx, r13
mov rbx, qword [rsi]
call fcn.2ba3271c0
mov rdx, qword [rsp + 0x80]
mov rcx, rdx
sub rcx, 4
jo 0x2ba38b824
test rcx, rcx
js 0x2ba38b860
cmp rdx, rcx
jle 0x2ba38b860
mov eax, ebx
rol ax, 8
mov edx, eax
mov eax, ebx
shr ebx, 0x18
shr eax, 0x10
shl edx, 0x10
shl eax, 8
or eax, ebx
movzx eax, ax
or eax, edx
mov rdx, qword [rsp + 0x88]
mov dword [rdx + rcx + 8], eax
mov rax, qword [0x2ba3e1ef0]
cmp byte [rax], 0
jne 0x2ba38b3f5
mov r10, qword [rsp + 0x80]
add r10, 4
jo 0x2ba38b82e
test r10, r10
js 0x2ba38b870
mov rdx, r10
mov rcx, r13
mov rbx, qword [rsi + 8]
call fcn.2ba3271c0
mov rdx, qword [rsp + 0x80]
mov rcx, rdx
sub rcx, 4
jo 0x2ba38b82e
cmp rdx, rcx
jle 0x2ba38b890
test rcx, rcx
js 0x2ba38b890
mov eax, ebx
rol ax, 8
mov edx, eax
mov eax, ebx
shr ebx, 0x18
shr eax, 0x10
shl edx, 0x10
shl eax, 8
or eax, ebx
movzx eax, ax
or eax, edx
mov rdx, qword [rsp + 0x88]
mov dword [rdx + rcx + 8], eax
mov rax, qword [0x2ba3e1ef0]
cmp byte [rax], 0
jne 0x2ba38b3f5
mov edx, 1
mov rcx, r13
mov rbx, qword [rsi + 0x10]
call fcn.2ba326f70
mov rax, qword [rsp + 0x80]
mov rdx, qword [rsp + 0x88]
mov byte [rdx + rax + 8], bl
add rax, 1
jo 0x2ba38bc0f
mov rdx, qword [rsp + 0x88]
mov qword [rsp + 0x80], rax
mov byte [rdx + rax + 8], 0
mov rax, qword [0x2ba3e1ef0]
cmp byte [rax], 0
jne 0x2ba38b3f5
mov edx, 1
mov rcx, r13
movzx ebx, byte [rsi + 0x18]
call fcn.2ba326f70
mov rax, qword [rsp + 0x80]
mov rdx, qword [rsp + 0x88]
mov byte [rdx + rax + 8], bl
add rax, 1
jo 0x2ba38bc05
mov rdx, qword [rsp + 0x88]
mov qword [rsp + 0x80], rax
mov byte [rdx + rax + 8], 0
mov rax, qword [0x2ba3e1ef0]
cmp byte [rax], 0
jne 0x2ba38b3f5
lea rdi, [rsp + 0x90]
mov ecx, 0x20
xor eax, eax
mov qword [rsp + 0x68], rdi
rep stosq qword [rdi], rax
mov rdi, qword [rsi + 0x20]
test rdi, rdi
jle 0x2ba38ba28
mov byte [rsp + 0x40], 0
movdqu xmm6, xmmword [0x2ba3daf40]
xor r14d, r14d
mov byte [rsp + 0x38], 0xff
mov byte [rsp + 0x47], 0
mov byte [rsp + 0x46], 0
mov qword [rsp + 0x1f0], r12
mov rcx, qword [rsi + 0x28]
lea rdx, [rbp*4]
lea rax, [rcx + rdx]
mov r15d, dword [rcx + rdx + 8]
xor edx, edx
mov dl, byte [rsp + 0x46]
movzx ebx, byte [rax + 9]
movzx r12d, byte [rax + 8]
mov ecx, dword [rsp + 0x38]
mov byte [rsp + 0x34], bl
movzx ebx, byte [rax + 0xa]
shl ecx, 0x18
mov byte [rsp + 0x45], bl
movzx ebx, byte [rax + 0xb]
mov eax, dword [rsp + 0x40]
mov dh, al
movzx eax, byte [rsp + 0x47]
movzx edx, dx
shl eax, 0x10
or edx, eax
or edx, ecx
mov ecx, r15d
call fcn.2ba331c30
test al, al
je 0x2ba38b490
lea edx, [r14 + 1]
cmp r14b, 0x3d
je 0x2ba38b5e8
mov rax, qword [rsi + 0x20]
sub rax, 1
cmp rbp, rax
je 0x2ba38b5e8
mov r14d, edx
mov r15, rbp
add r15, 1
mov rbp, r15
jo 0x2ba38b3e4
cmp rdi, qword [rsi + 0x20]
je 0x2ba38b3b3
mov rcx, qword [rsp + 0x48]
movups xmmword [rsp + 0x70], xmm6
call fcn.2ba321f80
mov rax, qword [0x2ba3e1ef0]
cmp byte [rax], 0
jne 0x2ba38b648
cmp r15, rdi
jge 0x2ba38ba20
mov rdx, qword [rsi + 0x20]
test r15, r15
js 0x2ba38b3ce
cmp r15, rdx
jl 0x2ba38b300
sub rdx, 1
mov rcx, r15
mov r12, qword [rsp + 0x1f0]
call fcn.2ba32b450
jmp 0x2ba38b3f5
mov r12, qword [rsp + 0x1f0]
nop dword [rax]
call fcn.2ba326290
movdqu xmm0, xmmword [rsp + 0x80]
mov rax, r12
movups xmmword [r12], xmm0
movups xmm6, xmmword [rsp + 0x190]
add rsp, 0x1a8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov edx, 8
mov ecx, 0x40
call fcn.2ba327470
lea rdx, [0x2ba3daf00]
lea r9, str.qoi.nim
mov rcx, rax
mov rax, qword [0x2ba3e1c80]
lea r8, str.encodeQoi
mov qword [rcx + 0x10], rdx
mov qword [rcx], rax
lea rax, [0x2ba3dafe0]
mov qword [rcx + 0x18], 0x1a
mov qword [rcx + 0x20], rax
mov qword [rcx + 8], 0
mov qword [rsp + 0x20], 0x98
call fcn.2ba32aff0
jmp 0x2ba38b3f5
test r14b, r14b
jne 0x2ba38b678
movzx r11d, byte [rsp + 0x34]
movzx r10d, byte [rsp + 0x45]
movzx r9d, r12b
lea r14, [r9 + r9*2]
lea rax, [r11 + r11*4]
add rax, r14
lea r14, [r10*8]
sub r14, r10
add r14, rax
movzx eax, bl
lea rdx, [rax + rax*4]
lea rax, [rax + rdx*2]
add r14, rax
mov rax, qword [0x2ba3e1ef0]
and r14d, 0x3f
cmp byte [rax], 0
jne 0x2ba38b648
mov ecx, dword [rsp + r14*4 + 0x90]
mov edx, r15d
mov qword [rsp + 0x60], r9
mov qword [rsp + 0x58], r10
mov qword [rsp + 0x50], r11
call fcn.2ba331c30
mov r11, qword [rsp + 0x50]
mov r10, qword [rsp + 0x58]
test al, al
mov r9, qword [rsp + 0x60]
jne 0x2ba38b7b0
mov ecx, dword [rsp + 0x34]
xor eax, eax
movzx edx, byte [rsp + 0x45]
mov al, r12b
mov ah, cl
shl edx, 0x10
mov ecx, ebx
movzx eax, ax
shl ecx, 0x18
or eax, edx
or eax, ecx
mov rcx, qword [rsp + 0x68]
mov dword [rcx + r14*4], eax
cmp bl, byte [rsp + 0x38]
jne 0x2ba38b8a0
movzx edx, byte [rsp + 0x46]
mov rax, r9
sub rax, rdx
movzx edx, byte [rsp + 0x40]
lea r14, [rax + 2]
sub r11, rdx
movzx edx, byte [rsp + 0x47]
sub r10, rdx
cmp r14, 3
ja 0x2ba38b711
lea r9, [r11 + 2]
cmp r9, 3
mov qword [rsp + 0x38], r9
ja 0x2ba38b711
lea r15, [r10 + 2]
cmp r15, 3
ja 0x2ba38bacd
mov edx, 1
mov rcx, r13
shl r14, 4
call fcn.2ba326f70
mov r9, qword [rsp + 0x38]
mov rax, qword [rsp + 0x80]
mov rdx, qword [rsp + 0x88]
shl r9, 2
or r14d, r9d
or r14d, r15d
or r14d, 0x40
mov byte [rdx + rax + 8], r14b
add rax, 1
jno 0x2ba38b7dc
call fcn.2ba326290
jmp 0x2ba38b7f1
mov edx, 1
mov rcx, r13
or r14d, 0xffffffc0
call fcn.2ba326f70
mov rax, qword [rsp + 0x80]
mov rdx, qword [rsp + 0x88]
mov byte [rdx + rax + 8], r14b
add rax, 1
jo 0x2ba38bc19
mov rdx, qword [rsp + 0x88]
mov qword [rsp + 0x80], rax
mov byte [rdx + rax + 8], 0
mov rax, qword [0x2ba3e1ef0]
cmp byte [rax], 0
jne 0x2ba38b648
xor r14d, r14d
jmp 0x2ba38b382
mov r12, qword [rsp + 0x1f0]
jmp 0x2ba38b3f5
movabs r8, 0x7fffffffffffffff
xor edx, edx
mov rcx, rax
call fcn.2ba326850
jmp 0x2ba38b3f5
mov edx, 1
mov rcx, r13
sub r14d, 1
call fcn.2ba326f70
mov rax, qword [rsp + 0x80]
or r14d, 0xffffffc0
mov rdx, qword [rsp + 0x88]
mov byte [rdx + rax + 8], r14b
add rax, 1
jo 0x2ba38bc2d
mov rdx, qword [rsp + 0x88]
mov qword [rsp + 0x80], rax
mov byte [rdx + rax + 8], 0
mov rax, qword [0x2ba3e1ef0]
cmp byte [rax], 0
jne 0x2ba38b648
movzx r11d, byte [rsp + 0x34]
movzx r10d, byte [rsp + 0x45]
movzx r9d, r12b
lea r14, [r9 + r9*2]
lea rax, [r11 + r11*4]
add rax, r14
lea r14, [r10*8]
sub r14, r10
add r14, rax
movzx eax, bl
lea rdx, [rax + rax*4]
lea rax, [rax + rdx*2]
add r14, rax
and r14d, 0x3f
jmp 0x2ba38b4e4
sub rax, r11
lea r15, [rax + 8]
cmp r15, 0xf
ja 0x2ba38bad9
lea r8, [r11 + 0x20]
cmp r8, 0x3f
ja 0x2ba38bad9
sub r10, r11
lea r14, [r10 + 8]
cmp r14, 0xf
ja 0x2ba38bad9
mov edx, 1
mov rcx, r13
mov qword [rsp + 0x38], r8
call fcn.2ba326f70
mov r8, qword [rsp + 0x38]
mov rax, qword [rsp + 0x80]
mov rdx, qword [rsp + 0x88]
or r8d, 0xffffff80
mov byte [rdx + rax + 8], r8b
add rax, 1
jo 0x2ba38bc41
mov rdx, qword [rsp + 0x88]
mov qword [rsp + 0x80], rax
mov byte [rdx + rax + 8], 0
mov rax, qword [0x2ba3e1ef0]
cmp byte [rax], 0
jne 0x2ba38b648
mov rax, r15
shl rax, 4
or r14d, eax
nop word [rax + rax]
mov edx, 1
mov rcx, r13
call fcn.2ba326f70
mov rax, qword [rsp + 0x80]
mov rdx, qword [rsp + 0x88]
mov byte [rdx + rax + 8], r14b
add rax, 1
jo 0x2ba38b5d9
mov rdx, qword [rsp + 0x88]
mov byte [rdx + rax + 8], 0
mov qword [rsp + 0x80], rax
mov rax, qword [0x2ba3e1ef0]
cmp byte [rax], 0
jne 0x2ba38b648
movzx eax, byte [rsp + 0x45]
mov byte [rsp + 0x38], bl
xor r14d, r14d
mov byte [rsp + 0x46], r12b
mov byte [rsp + 0x47], al
movzx eax, byte [rsp + 0x34]
mov byte [rsp + 0x40], al
jmp 0x2ba38b382
call fcn.2ba326290
jmp 0x2ba38b173
call fcn.2ba326290
jmp 0x2ba38b1fd
movabs r8, 0x7fffffffffffffff
xor edx, edx
mov rcx, r10
call fcn.2ba326850
jmp 0x2ba38b173
sub rdx, 1
call fcn.2ba32b450
jmp 0x2ba38b173
movabs r8, 0x7fffffffffffffff
xor edx, edx
mov rcx, r10
call fcn.2ba326850
jmp 0x2ba38b1fd
sub rdx, 1
call fcn.2ba32b450
jmp 0x2ba38b1fd
mov edx, 1
mov rcx, r13
call fcn.2ba326f70
mov rax, qword [rsp + 0x80]
mov rdx, qword [rsp + 0x88]
mov byte [rdx + rax + 8], 0xff
add rax, 1
jo 0x2ba38bc87
mov rdx, qword [rsp + 0x88]
mov qword [rsp + 0x80], rax
mov byte [rdx + rax + 8], 0
mov rax, qword [0x2ba3e1ef0]
cmp byte [rax], 0
jne 0x2ba38b648
mov edx, 1
mov rcx, r13
call fcn.2ba326f70
mov rax, qword [rsp + 0x80]
mov rdx, qword [rsp + 0x88]
mov byte [rdx + rax + 8], r12b
add rax, 1
jo 0x2ba38bc7d
mov rdx, qword [rsp + 0x88]
mov qword [rsp + 0x80], rax
mov byte [rdx + rax + 8], 0
mov rax, qword [0x2ba3e1ef0]
cmp byte [rax], 0
jne 0x2ba38b648
mov edx, 1
mov rcx, r13
call fcn.2ba326f70
mov rax, qword [rsp + 0x80]
movzx ecx, byte [rsp + 0x34]
mov rdx, qword [rsp + 0x88]
mov byte [rdx + rax + 8], cl
add rax, 1
jo 0x2ba38bc73
mov rdx, qword [rsp + 0x88]
mov qword [rsp + 0x80], rax
mov byte [rdx + rax + 8], 0
mov rax, qword [0x2ba3e1ef0]
cmp byte [rax], 0
jne 0x2ba38b648
mov edx, 1
mov rcx, r13
call fcn.2ba326f70
mov rax, qword [rsp + 0x80]
movzx ecx, byte [rsp + 0x45]
mov rdx, qword [rsp + 0x88]
mov byte [rdx + rax + 8], cl
add rax, 1
jo 0x2ba38bc69
mov rdx, qword [rsp + 0x88]
mov qword [rsp + 0x80], rax
mov byte [rdx + rax + 8], 0
mov rax, qword [0x2ba3e1ef0]
cmp byte [rax], 0
jne 0x2ba38b648
mov edx, 1
mov rcx, r13
call fcn.2ba326f70
mov rax, qword [rsp + 0x80]
mov rdx, qword [rsp + 0x88]
mov byte [rdx + rax + 8], bl
add rax, 1
jno 0x2ba38b7dc
jmp 0x2ba38b5d9
mov r12, qword [rsp + 0x1f0]
mov ebx, 7
nop dword [rax]
mov edx, 1
mov rcx, r13
call fcn.2ba326f70
mov rax, qword [rsp + 0x80]
mov rdx, qword [rsp + 0x88]
mov byte [rdx + rax + 8], 0
add rax, 1
jo 0x2ba38bc37
mov rdx, qword [rsp + 0x88]
mov qword [rsp + 0x80], rax
mov byte [rdx + rax + 8], 0
mov rax, qword [0x2ba3e1ef0]
cmp byte [rax], 0
jne 0x2ba38b3f5
sub rbx, 1
jne 0x2ba38ba30
mov edx, 1
mov rcx, r13
call fcn.2ba326f70
mov rax, qword [rsp + 0x80]
mov rdx, qword [rsp + 0x88]
mov byte [rdx + rax + 8], 1
add rax, 1
jo 0x2ba38b3f0
mov rdx, qword [rsp + 0x88]
mov qword [rsp + 0x80], rax
mov byte [rdx + rax + 8], 0
jmp 0x2ba38b3f5
sub rax, r11
lea r15, [rax + 8]
jmp 0x2ba38b722
mov edx, 1
mov rcx, r13
call fcn.2ba326f70
mov rax, qword [rsp + 0x80]
mov rdx, qword [rsp + 0x88]
mov byte [rdx + rax + 8], 0xfe
add rax, 1
jo 0x2ba38bc5f
mov rdx, qword [rsp + 0x88]
mov qword [rsp + 0x80], rax
mov byte [rdx + rax + 8], 0
mov rax, qword [0x2ba3e1ef0]
cmp byte [rax], 0
jne 0x2ba38b648
mov edx, 1
mov rcx, r13
call fcn.2ba326f70
mov rax, qword [rsp + 0x80]
mov rdx, qword [rsp + 0x88]
mov byte [rdx + rax + 8], r12b
add rax, 1
jo 0x2ba38bc55
mov rdx, qword [rsp + 0x88]
mov qword [rsp + 0x80], rax
mov byte [rdx + rax + 8], 0
mov rax, qword [0x2ba3e1ef0]
cmp byte [rax], 0
jne 0x2ba38b648
mov edx, 1
mov rcx, r13
call fcn.2ba326f70
mov rax, qword [rsp + 0x80]
movzx ecx, byte [rsp + 0x34]
mov rdx, qword [rsp + 0x88]
mov byte [rdx + rax + 8], cl
add rax, 1
jo 0x2ba38bc4b
mov rdx, qword [rsp + 0x88]
mov qword [rsp + 0x80], rax
mov byte [rdx + rax + 8], 0
mov rax, qword [0x2ba3e1ef0]
cmp byte [rax], 0
jne 0x2ba38b648
mov edx, 1
mov rcx, r13
call fcn.2ba326f70
mov rax, qword [rsp + 0x80]
movzx ecx, byte [rsp + 0x45]
mov rdx, qword [rsp + 0x88]
mov byte [rdx + rax + 8], cl
add rax, 1
jno 0x2ba38b7dc
jmp 0x2ba38b5d9
call fcn.2ba326290
jmp 0x2ba38b2a5
call fcn.2ba326290
jmp 0x2ba38b251
call fcn.2ba326290
jmp 0x2ba38b62d
call fcn.2ba326290
jmp 0x2ba38b0ea
call fcn.2ba326290
jmp 0x2ba38b6c1
call fcn.2ba326290
jmp 0x2ba38ba71
call fcn.2ba326290
jmp 0x2ba38b790
call fcn.2ba326290
jmp 0x2ba38bbc0
call fcn.2ba326290
jmp 0x2ba38bb6b
call fcn.2ba326290
jmp 0x2ba38bb1a
call fcn.2ba326290
jmp 0x2ba38b9dc
call fcn.2ba326290
jmp 0x2ba38b987
call fcn.2ba326290
jmp 0x2ba38b932
call fcn.2ba326290
jmp 0x2ba38b8e1