Function at 0x33e069420
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 0x33e06979d
mov edx, 0xffffffff
cmp rax, rdx
jg 0x33e0697a8
imul rax, qword [rbx + 0x20], 3
jo 0x33e06979d
add rax, 0x16
jo 0x33e06979d
test rax, rax
js 0x33e069810
lea rdi, [rsp + 0x80]
mov rdx, rax
lea r15, [rsp + 0x90]
mov rcx, rdi
mov qword [rsp + 0x40], rdi
call fcn.33e007d80
mov edx, 4
mov rcx, r15
movdqu xmm2, xmmword [rsp + 0x80]
movups xmmword [rsp + 0x90], xmm2
call fcn.33e007ac0
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 0x33e069fe9
mov qword [rsp + 0x90], rax
mov r14, qword [0x33e0ab970]
mov rsi, qword [rbx]
cmp byte [r14], 0
jne 0x33e069779
mov rcx, qword [rsp + 0x90]
add rcx, 4
jo 0x33e069b6d
test rcx, rcx
js 0x33e069bf0
mov rdx, rcx
mov rcx, r15
call fcn.33e007d10
mov rdx, qword [rsp + 0x90]
mov rcx, rdx
sub rcx, 4
jo 0x33e069b6d
test rcx, rcx
js 0x33e069d80
cmp rcx, rdx
jge 0x33e069d80
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 0x33e069779
mov rcx, qword [rsp + 0x90]
mov rsi, qword [rbx + 8]
add rcx, 4
jo 0x33e069be1
test rcx, rcx
js 0x33e069d90
mov rdx, rcx
mov rcx, r15
call fcn.33e007d10
mov rdx, qword [rsp + 0x90]
mov rcx, rdx
sub rcx, 4
jo 0x33e069be1
test rcx, rcx
js 0x33e069db0
cmp rcx, rdx
jge 0x33e069db0
mov rax, qword [rsp + 0x98]
bswap esi
mov dword [rax + rcx + 8], esi
cmp byte [r14], 0
jne 0x33e069779
mov edx, 1
mov rcx, r15
mov rsi, qword [rbx + 0x10]
call fcn.33e007ac0
mov rax, qword [rsp + 0x90]
mov rdx, qword [rsp + 0x98]
mov byte [rdx + rax + 8], sil
add rax, 1
jo 0x33e069ff3
mov rdx, qword [rsp + 0x98]
mov qword [rsp + 0x90], rax
mov byte [rdx + rax + 8], 0
cmp byte [r14], 0
jne 0x33e069779
mov edx, 1
mov rcx, r15
movzx esi, byte [rbx + 0x18]
call fcn.33e007ac0
mov rax, qword [rsp + 0x90]
mov rdx, qword [rsp + 0x98]
mov byte [rdx + rax + 8], sil
add rax, 1
jo 0x33e069fd5
mov rdx, qword [rsp + 0x98]
mov qword [rsp + 0x90], rax
mov byte [rdx + rax + 8], 0
cmp byte [r14], 0
jne 0x33e069779
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 0x33e069dc6
mov eax, dword [0x33e0a7668]
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 0x33e069765
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.33e0127c0
test al, al
je 0x33e069830
lea ecx, [rbp + 1]
cmp bpl, 0x3d
je 0x33e069b08
mov rax, qword [rbx + 0x20]
lea rdx, [rax - 1]
cmp rdx, rsi
je 0x33e069b08
mov ebp, ecx
add rsi, 1
cmp r13, rax
je 0x33e069753
movdqu xmm1, xmmword [0x33e0a75a0]
mov rcx, qword [rsp + 0x40]
movups xmmword [rsp + 0x80], xmm1
call fcn.33e001de0
cmp byte [r14], 0
jne 0x33e069b60
cmp r13, rsi
je 0x33e069dbe
mov rdx, qword [rbx + 0x20]
cmp rsi, rdx
jl 0x33e0696e6
sub rdx, 1
mov rcx, rsi
mov rbp, qword [rsp + 0x1f0]
call fcn.33e00bb80
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.33e006da0
jmp 0x33e069779
mov edx, 8
mov ecx, 0x40
call fcn.33e007f90
lea rdx, [0x33e0a7580]
lea r9, str.qoi.nim
mov rcx, rax
mov rax, qword [0x33e0ab750]
lea r8, str.encodeQoi
mov qword [rcx + 0x10], rdx
mov qword [rcx], rax
lea rax, [0x33e0a7640]
mov qword [rcx + 0x18], 0x1a
mov qword [rcx + 0x20], rax
mov qword [rcx + 8], 0
mov qword [rsp + 0x20], 0xa0
call fcn.33e009d80
jmp 0x33e069779
movabs r8, 0x7fffffffffffffff
xor edx, edx
mov rcx, rax
call fcn.33e007430
jmp 0x33e069779
test bpl, bpl
je 0x33e069886
mov edx, 1
mov rcx, r15
sub ebp, 1
call fcn.33e007ac0
mov rax, qword [rsp + 0x90]
mov rdx, qword [rsp + 0x98]
or ebp, 0xffffffc0
mov byte [rdx + rax + 8], bpl
add rax, 1
jo 0x33e06a007
mov rdx, qword [rsp + 0x98]
mov qword [rsp + 0x90], rax
mov byte [rdx + rax + 8], 0
cmp byte [r14], 0
jne 0x33e069b60
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 0x33e069fa0
cqo
shr rdx, 0x3a
add rax, rdx
and eax, 0x3f
sub rax, rdx
cmp byte [r14], 0
mov r11, rax
jne 0x33e069b60
cmp rax, 0x3f
ja 0x33e069f40
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.33e0127c0
mov r11, qword [rsp + 0x48]
test al, al
jne 0x33e069b80
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 0x33e069c10
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 0x33e0699b0
cmp r10, 1
jle 0x33e069e26
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 0x33e0699e3
add r10, 8
cmp r10, 0xf
jbe 0x33e069e97
mov edx, 1
mov rcx, r15
call fcn.33e007ac0
mov rax, qword [rsp + 0x90]
mov rdx, qword [rsp + 0x98]
mov byte [rdx + rax + 8], 0xfe
add rax, 1
jo 0x33e06a025
mov rdx, qword [rsp + 0x98]
mov qword [rsp + 0x90], rax
mov byte [rdx + rax + 8], 0
cmp byte [r14], 0
jne 0x33e069b60
mov edx, 1
mov rcx, r15
call fcn.33e007ac0
mov rax, qword [rsp + 0x90]
mov rdx, qword [rsp + 0x98]
mov byte [rdx + rax + 8], bpl
add rax, 1
jo 0x33e06a01b
mov rdx, qword [rsp + 0x98]
mov qword [rsp + 0x90], rax
mov byte [rdx + rax + 8], 0
cmp byte [r14], 0
jne 0x33e069b60
mov edx, 1
mov rcx, r15
call fcn.33e007ac0
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 0x33e06a011
mov rdx, qword [rsp + 0x98]
mov qword [rsp + 0x90], rax
mov byte [rdx + rax + 8], 0
cmp byte [r14], 0
jne 0x33e069b60
mov edx, 1
mov rcx, r15
call fcn.33e007ac0
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 0x33e069bb6
call fcn.33e006da0
jmp 0x33e069bcb
mov edx, 1
mov rcx, r15
or ebp, 0xffffffc0
call fcn.33e007ac0
mov rax, qword [rsp + 0x90]
mov rdx, qword [rsp + 0x98]
mov byte [rdx + rax + 8], bpl
add rax, 1
jo 0x33e069fdf
mov rdx, qword [rsp + 0x98]
mov qword [rsp + 0x90], rax
mov byte [rdx + rax + 8], 0
cmp byte [r14], 0
jne 0x33e069b60
mov rax, qword [rbx + 0x20]
xor ebp, ebp
jmp 0x33e069726
mov rbp, qword [rsp + 0x1f0]
jmp 0x33e069779
call fcn.33e006da0
jmp 0x33e06958c
mov edx, 1
mov rcx, r15
mov qword [rsp + 0x38], r11
call fcn.33e007ac0
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 0x33e069afa
mov rdx, qword [rsp + 0x98]
mov byte [rdx + rax + 8], 0
mov qword [rsp + 0x90], rax
cmp byte [r14], 0
jne 0x33e069b60
mov dword [rsp + 0x38], r12d
mov rax, qword [rbx + 0x20]
xor ebp, ebp
jmp 0x33e069726
call fcn.33e006da0
jmp 0x33e0695f5
movabs r8, 0x7fffffffffffffff
xor edx, edx
call fcn.33e007430
jmp 0x33e06958c
mov edx, 1
mov rcx, r15
call fcn.33e007ac0
mov rax, qword [rsp + 0x90]
mov rdx, qword [rsp + 0x98]
mov byte [rdx + rax + 8], 0xff
add rax, 1
jo 0x33e06a06b
mov rdx, qword [rsp + 0x98]
mov qword [rsp + 0x90], rax
mov byte [rdx + rax + 8], 0
cmp byte [r14], 0
jne 0x33e069b60
mov edx, 1
mov rcx, r15
call fcn.33e007ac0
mov rax, qword [rsp + 0x90]
mov rdx, qword [rsp + 0x98]
mov byte [rdx + rax + 8], bpl
add rax, 1
jo 0x33e06a061
mov rdx, qword [rsp + 0x98]
mov qword [rsp + 0x90], rax
mov byte [rdx + rax + 8], 0
cmp byte [r14], 0
jne 0x33e069b60
mov edx, 1
mov rcx, r15
call fcn.33e007ac0
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 0x33e06a057
mov rdx, qword [rsp + 0x98]
mov qword [rsp + 0x90], rax
mov byte [rdx + rax + 8], 0
cmp byte [r14], 0
jne 0x33e069b60
mov edx, 1
mov rcx, r15
call fcn.33e007ac0
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 0x33e06a04d
mov rdx, qword [rsp + 0x98]
mov qword [rsp + 0x90], rax
mov byte [rdx + rax + 8], 0
cmp byte [r14], 0
jne 0x33e069b60
mov edx, 1
mov rcx, r15
call fcn.33e007ac0
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 0x33e069bb6
jmp 0x33e069afa
sub rdx, 1
call fcn.33e00bb80
jmp 0x33e06958c
movabs r8, 0x7fffffffffffffff
xor edx, edx
call fcn.33e007430
jmp 0x33e0695f5
sub rdx, 1
call fcn.33e00bb80
jmp 0x33e0695f5
mov rbp, qword [rsp + 0x1f0]
mov ebx, 7
jmp 0x33e069dda
sub rbx, 1
je 0x33e069f5a
mov edx, 1
mov rcx, r15
call fcn.33e007ac0
mov rax, qword [rsp + 0x90]
mov rdx, qword [rsp + 0x98]
mov byte [rdx + rax + 8], 0
add rax, 1
jo 0x33e069ffd
mov rdx, qword [rsp + 0x98]
mov qword [rsp + 0x90], rax
mov byte [rdx + rax + 8], 0
cmp byte [r14], 0
je 0x33e069dd0
jmp 0x33e069779
mov edx, 1
mov rcx, r15
mov qword [rsp + 0x48], rax
mov qword [rsp + 0x38], r10
call fcn.33e007ac0
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 0x33e069afa
mov rax, qword [rsp + 0x98]
mov qword [rsp + 0x90], rdx
mov byte [rax + rdx + 8], 0
jmp 0x33e069bcb
mov edx, 1
mov rcx, r15
mov qword [rsp + 0x48], r10
mov qword [rsp + 0x38], r9
call fcn.33e007ac0
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 0x33e06a02f
mov rdx, qword [rsp + 0x98]
mov qword [rsp + 0x90], rax
mov byte [rdx + rax + 8], 0
cmp byte [r14], 0
jne 0x33e069b60
shl r9d, 4
mov edx, 1
mov rcx, r15
mov edi, r9d
or edi, r10d
call fcn.33e007ac0
mov rax, qword [rsp + 0x90]
mov rdx, qword [rsp + 0x98]
mov byte [rdx + rax + 8], dil
add rax, 1
jno 0x33e069bb6
jmp 0x33e069afa
mov rcx, rax
mov edx, 0x3f
mov rbp, qword [rsp + 0x1f0]
call fcn.33e00bb80
jmp 0x33e069779
mov edx, 1
mov rcx, r15
call fcn.33e007ac0
mov rax, qword [rsp + 0x90]
mov rdx, qword [rsp + 0x98]
mov byte [rdx + rax + 8], 1
add rax, 1
jo 0x33e06979d
mov rdx, qword [rsp + 0x98]
mov qword [rsp + 0x90], rax
mov byte [rdx + rax + 8], 0
jmp 0x33e069779
mov qword [rsp + 0x68], r10
mov qword [rsp + 0x60], r8
mov qword [rsp + 0x48], r9
call fcn.33e006da0
cmp byte [r14], 0
mov r9, qword [rsp + 0x48]
mov r8, qword [rsp + 0x60]
mov r10, qword [rsp + 0x68]
jne 0x33e069b60
xor r11d, r11d
jmp 0x33e06990b
call fcn.33e006da0
jmp 0x33e069693
call fcn.33e006da0
jmp 0x33e069b4c
call fcn.33e006da0
jmp 0x33e069502
call fcn.33e006da0
jmp 0x33e069644
call fcn.33e006da0
jmp 0x33e069e1b
call fcn.33e006da0
jmp 0x33e06987c
call fcn.33e006da0
jmp 0x33e069abf
call fcn.33e006da0
jmp 0x33e069a6f
call fcn.33e006da0
jmp 0x33e069a24
mov qword [rsp + 0x48], r10
mov qword [rsp + 0x38], r9
call fcn.33e006da0
mov r10, qword [rsp + 0x48]
mov r9, qword [rsp + 0x38]
jmp 0x33e069ef4
call fcn.33e006da0
jmp 0x33e069d3c
call fcn.33e006da0
jmp 0x33e069cec
call fcn.33e006da0
jmp 0x33e069c9c
call fcn.33e006da0
jmp 0x33e069c51