Function at 0x299eefd40
Capabilities:
Encode data using base64

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x1b8
movaps xmmword [rsp + 0x1a0], xmm6
mov rax, qword [rdx]
imul rax, qword [rdx + 8]
mov rbp, rcx
mov rbx, rdx
mov qword [rsp + 0x90], 0
mov qword [rsp + 0x98], 0
jo 0x299ef00d8
mov edx, 0xffffffff
cmp rax, rdx
jg 0x299ef00e0
imul rax, qword [rbx + 0x20], 3
jo 0x299ef00d8
add rax, 0x16
jo 0x299ef00d8
test rax, rax
js 0x299ef0148
lea rdi, [rsp + 0x80]
mov rdx, rax
mov qword [rsp + 0x48], rdi
lea r15, [rsp + 0x90]
mov rcx, rdi
call fcn.299e89a40
mov edx, 4
mov rcx, r15
movdqu xmm1, xmmword [rsp + 0x80]
movaps xmmword [rsp + 0x90], xmm1
call fcn.299e89810
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 0x299ef08f0
mov qword [rsp + 0x90], rax
mov rcx, qword [0x299f4c780]
mov rsi, qword [rbx]
call sub.libgcc_s_seh_1.dll___emutls_get_address
cmp byte [rax], 0
mov r14, rax
jne 0x299ef00ac
mov rcx, qword [rsp + 0x90]
add rcx, 4
jo 0x299ef057e
test rcx, rcx
js 0x299ef0598
mov rdx, rcx
mov rcx, r15
call fcn.299e899d0
mov rdx, qword [rsp + 0x90]
mov rcx, rdx
sub rcx, 4
jo 0x299ef057e
test rcx, rcx
js 0x299ef0730
cmp rcx, rdx
jge 0x299ef0730
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 0x299ef00ac
mov rcx, qword [rsp + 0x90]
mov rsi, qword [rbx + 8]
add rcx, 4
jo 0x299ef0588
test rcx, rcx
js 0x299ef0740
mov rdx, rcx
mov rcx, r15
call fcn.299e899d0
mov rdx, qword [rsp + 0x90]
mov rcx, rdx
sub rcx, 4
jo 0x299ef0588
test rcx, rcx
js 0x299ef0760
cmp rcx, rdx
jge 0x299ef0760
mov rax, qword [rsp + 0x98]
bswap esi
mov dword [rax + rcx + 8], esi
cmp byte [r14], 0
jne 0x299ef00ac
mov edx, 1
mov rcx, r15
mov rsi, qword [rbx + 0x10]
call fcn.299e89810
mov rax, qword [rsp + 0x90]
mov rdx, qword [rsp + 0x98]
mov byte [rdx + rax + 8], sil
add rax, 1
jo 0x299ef08fa
mov rdx, qword [rsp + 0x98]
mov qword [rsp + 0x90], rax
mov byte [rdx + rax + 8], 0
cmp byte [r14], 0
jne 0x299ef00ac
mov edx, 1
mov rcx, r15
movzx esi, byte [rbx + 0x18]
call fcn.299e89810
mov rax, qword [rsp + 0x90]
mov rdx, qword [rsp + 0x98]
mov byte [rdx + rax + 8], sil
add rax, 1
jo 0x299ef08dc
mov rdx, qword [rsp + 0x98]
mov qword [rsp + 0x90], rax
mov byte [rdx + rax + 8], 0
cmp byte [r14], 0
jne 0x299ef00ac
mov r11, qword [rbx + 0x20]
lea rdi, [rsp + 0xa0]
xor eax, eax
mov ecx, 0x20
mov qword [rsp + 0x58], rdi
rep stosq qword [rdi], rax
test r11, r11
jle 0x299ef077b
mov eax, dword [0x299f45c68]
mov rdx, r11
xor esi, esi
xor r13d, r13d
cmp rsi, rdx
mov qword [rsp + 0x40], r15
movdqa xmm6, xmmword [0x299f45ba0]
mov r15, r11
mov qword [rsp + 0x200], rbp
mov dword [rsp + 0x38], eax
jge 0x299ef0098
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.299e93280
test al, al
je 0x299ef0168
lea ecx, [r13 + 1]
cmp r13b, 0x3d
je 0x299ef0448
mov rax, qword [rbx + 0x20]
lea rdx, [rax - 1]
cmp rdx, rsi
je 0x299ef0448
mov r13d, ecx
add rsi, 1
cmp r15, rax
je 0x299ef0086
mov rcx, qword [rsp + 0x48]
movaps xmmword [rsp + 0x80], xmm6
call fcn.299e83e30
cmp byte [r14], 0
jne 0x299ef04a8
cmp r15, rsi
je 0x299ef076e
mov rdx, qword [rbx + 0x20]
cmp rsi, rdx
jl 0x299ef001f
sub rdx, 1
mov rcx, rsi
mov rbp, qword [rsp + 0x200]
call fcn.299e8b510
movdqa xmm0, xmmword [rsp + 0x90]
mov rax, rbp
movups xmmword [rbp], xmm0
movaps xmm6, xmmword [rsp + 0x1a0]
add rsp, 0x1b8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
call fcn.299e88960
jmp 0x299ef00ac
mov edx, 8
mov ecx, 0x40
call fcn.299e89bd0
lea rdx, [0x299f45b80]
lea r9, str.qoi.nim
mov rcx, rax
mov rax, qword [0x299f4c6a0]
mov qword [rcx + 0x10], rdx
lea r8, str.encodeQoi
mov qword [rcx + 0x18], 0x1a
mov qword [rcx + 8], 0
mov qword [rcx], rax
lea rax, [0x299f45c40]
mov qword [rcx + 0x20], rax
mov qword [rsp + 0x20], 0x98
call fcn.299e8b270
jmp 0x299ef00ac
movabs r8, 0x7fffffffffffffff
xor edx, edx
mov rcx, rax
call fcn.299e88fc0
jmp 0x299ef00ac
test r13b, r13b
je 0x299ef01c2
mov rcx, qword [rsp + 0x40]
mov edx, 1
sub r13d, 1
or r13d, 0xffffffc0
call fcn.299e89810
mov rax, qword [rsp + 0x90]
mov rdx, qword [rsp + 0x98]
mov byte [rdx + rax + 8], r13b
add rax, 1
jo 0x299ef090e
mov rdx, qword [rsp + 0x98]
mov qword [rsp + 0x90], rax
mov byte [rdx + rax + 8], 0
cmp byte [r14], 0
jne 0x299ef04a8
mov eax, r12d
mov edx, r12d
movzx r9d, r12b
movzx eax, ah
shr edx, 0x10
mov ecx, r12d
mov dword [rsp + 0x78], eax
mov eax, r12d
movzx r10d, dl
shr ecx, 0x18
movzx eax, ah
mov dword [rsp + 0x7c], edx
mov ebp, r12d
mov r8, rax
mov dword [rsp + 0x54], ecx
lea rdx, [r8 + r8*4]
lea rax, [r9 + r9*2]
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 0x299ef08a7
cqo
shr rdx, 0x3a
add rax, rdx
and eax, 0x3f
sub rax, rdx
cmp byte [r14], 0
mov r13, rax
jne 0x299ef04a8
cmp rax, 0x3f
ja 0x299ef0847
mov ecx, dword [rsp + r13*4 + 0xa0]
mov edx, edi
mov qword [rsp + 0x70], r10
mov qword [rsp + 0x68], r8
mov qword [rsp + 0x60], r9
call fcn.299e93280
test al, al
jne 0x299ef0520
mov rax, qword [rsp + 0x58]
mov r9, qword [rsp + 0x60]
mov r8, qword [rsp + 0x68]
mov r10, qword [rsp + 0x70]
mov dword [rax + r13*4], r12d
mov eax, dword [rsp + 0x38]
mov edx, eax
shr edx, 0x18
cmp byte [rsp + 0x54], dl
jne 0x299ef05b0
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]
mov r13, r10
cmp rax, 3
setbe dl
cmp rdi, 0xfffffffffffffffe
setge cl
and edx, ecx
cmp rdi, 1
setle cl
and edx, ecx
cmp r10, 0xfffffffffffffffe
setge cl
test dl, cl
je 0x299ef02e5
cmp r10, 1
jle 0x299ef07de
sub r9, rdi
sub r13, 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 0x299ef0318
add r13, 8
cmp r13, 0xf
jbe 0x299ef04b5
mov rcx, qword [rsp + 0x40]
mov edx, 1
call fcn.299e89810
mov rax, qword [rsp + 0x90]
mov rdx, qword [rsp + 0x98]
mov byte [rdx + rax + 8], 0xfe
add rax, 1
jo 0x299ef092c
mov rdx, qword [rsp + 0x98]
mov qword [rsp + 0x90], rax
mov byte [rdx + rax + 8], 0
cmp byte [r14], 0
jne 0x299ef04a8
mov rcx, qword [rsp + 0x40]
mov edx, 1
call fcn.299e89810
mov rax, qword [rsp + 0x90]
mov rdx, qword [rsp + 0x98]
mov byte [rdx + rax + 8], bpl
add rax, 1
jo 0x299ef0922
mov rdx, qword [rsp + 0x98]
mov qword [rsp + 0x90], rax
mov byte [rdx + rax + 8], 0
cmp byte [r14], 0
jne 0x299ef04a8
mov rcx, qword [rsp + 0x40]
mov edx, 1
call fcn.299e89810
mov rax, qword [rsp + 0x90]
mov rdx, qword [rsp + 0x98]
movzx edi, byte [rsp + 0x78]
mov byte [rdx + rax + 8], dil
add rax, 1
jo 0x299ef0918
mov rdx, qword [rsp + 0x98]
mov qword [rsp + 0x90], rax
mov byte [rdx + rax + 8], 0
cmp byte [r14], 0
jne 0x299ef04a8
mov rcx, qword [rsp + 0x40]
mov edx, 1
call fcn.299e89810
mov rax, qword [rsp + 0x90]
mov rdx, qword [rsp + 0x98]
movzx edi, byte [rsp + 0x7c]
mov byte [rdx + rax + 8], dil
add rax, 1
jno 0x299ef054e
call fcn.299e88960
jmp 0x299ef0563
mov rcx, qword [rsp + 0x40]
mov edx, 1
or r13d, 0xffffffc0
call fcn.299e89810
mov rax, qword [rsp + 0x90]
mov rdx, qword [rsp + 0x98]
mov byte [rdx + rax + 8], r13b
add rax, 1
jo 0x299ef08e6
mov rdx, qword [rsp + 0x98]
mov qword [rsp + 0x90], rax
mov byte [rdx + rax + 8], 0
cmp byte [r14], 0
jne 0x299ef04a8
mov rax, qword [rbx + 0x20]
xor r13d, r13d
jmp 0x299ef0061
mov rbp, qword [rsp + 0x200]
jmp 0x299ef00ac
mov rcx, qword [rsp + 0x40]
mov edx, 1
mov qword [rsp + 0x38], r9
call fcn.299e89810
lea r8, [rdi + 0x20]
mov r9, qword [rsp + 0x38]
mov rax, qword [rsp + 0x90]
or r8d, 0xffffff80
mov rdx, qword [rsp + 0x98]
mov byte [rdx + rax + 8], r8b
add rax, 1
jo 0x299ef0936
mov rdx, qword [rsp + 0x98]
mov qword [rsp + 0x90], rax
mov byte [rdx + rax + 8], 0
cmp byte [r14], 0
jne 0x299ef04a8
shl r9d, 4
or r13d, r9d
nop word [rax + rax]
mov rcx, qword [rsp + 0x40]
mov edx, 1
call fcn.299e89810
mov rax, qword [rsp + 0x90]
mov rdx, qword [rsp + 0x98]
mov byte [rdx + rax + 8], r13b
add rax, 1
jo 0x299ef0437
mov rdx, qword [rsp + 0x98]
mov byte [rdx + rax + 8], 0
mov qword [rsp + 0x90], rax
cmp byte [r14], 0
jne 0x299ef04a8
mov rax, qword [rbx + 0x20]
mov dword [rsp + 0x38], r12d
xor r13d, r13d
jmp 0x299ef0061
call fcn.299e88960
jmp 0x299eefebb
call fcn.299e88960
jmp 0x299eeff24
movabs r8, 0x7fffffffffffffff
xor edx, edx
call fcn.299e88fc0
jmp 0x299eefebb
mov rcx, qword [rsp + 0x40]
mov edx, 1
call fcn.299e89810
mov rax, qword [rsp + 0x90]
mov rdx, qword [rsp + 0x98]
mov byte [rdx + rax + 8], 0xff
add rax, 1
jo 0x299ef0968
mov rdx, qword [rsp + 0x98]
mov qword [rsp + 0x90], rax
mov byte [rdx + rax + 8], 0
cmp byte [r14], 0
jne 0x299ef04a8
mov rcx, qword [rsp + 0x40]
mov edx, 1
call fcn.299e89810
mov rax, qword [rsp + 0x90]
mov rdx, qword [rsp + 0x98]
mov byte [rdx + rax + 8], bpl
add rax, 1
jo 0x299ef095e
mov rdx, qword [rsp + 0x98]
mov qword [rsp + 0x90], rax
mov byte [rdx + rax + 8], 0
cmp byte [r14], 0
jne 0x299ef04a8
mov rcx, qword [rsp + 0x40]
mov edx, 1
call fcn.299e89810
mov rax, qword [rsp + 0x90]
mov rdx, qword [rsp + 0x98]
movzx edi, byte [rsp + 0x78]
mov byte [rdx + rax + 8], dil
add rax, 1
jo 0x299ef0954
mov rdx, qword [rsp + 0x98]
mov qword [rsp + 0x90], rax
mov byte [rdx + rax + 8], 0
cmp byte [r14], 0
jne 0x299ef04a8
mov rcx, qword [rsp + 0x40]
mov edx, 1
call fcn.299e89810
mov rax, qword [rsp + 0x90]
mov rdx, qword [rsp + 0x98]
movzx edi, byte [rsp + 0x7c]
mov byte [rdx + rax + 8], dil
add rax, 1
jo 0x299ef094a
mov rdx, qword [rsp + 0x98]
mov qword [rsp + 0x90], rax
mov byte [rdx + rax + 8], 0
cmp byte [r14], 0
jne 0x299ef04a8
mov rcx, qword [rsp + 0x40]
mov edx, 1
call fcn.299e89810
mov rax, qword [rsp + 0x90]
mov rdx, qword [rsp + 0x98]
movzx edi, byte [rsp + 0x54]
mov byte [rdx + rax + 8], dil
add rax, 1
jno 0x299ef054e
jmp 0x299ef0437
sub rdx, 1
call fcn.299e8b510
jmp 0x299eefebb
movabs r8, 0x7fffffffffffffff
xor edx, edx
call fcn.299e88fc0
jmp 0x299eeff24
sub rdx, 1
call fcn.299e8b510
jmp 0x299eeff24
mov rbp, qword [rsp + 0x200]
mov r15, qword [rsp + 0x40]
mov ebx, 7
jmp 0x299ef0792
sub rbx, 1
je 0x299ef0861
mov edx, 1
mov rcx, r15
call fcn.299e89810
mov rax, qword [rsp + 0x90]
mov rdx, qword [rsp + 0x98]
mov byte [rdx + rax + 8], 0
add rax, 1
jo 0x299ef0904
mov rdx, qword [rsp + 0x98]
mov qword [rsp + 0x90], rax
mov byte [rdx + rax + 8], 0
cmp byte [r14], 0
je 0x299ef0788
jmp 0x299ef00ac
mov rcx, qword [rsp + 0x40]
mov edx, 1
mov qword [rsp + 0x38], rax
call fcn.299e89810
mov rax, qword [rsp + 0x38]
lea r8d, [rdi*4 + 8]
mov rdx, qword [rsp + 0x90]
lea r10, [r13 + 2]
mov rcx, qword [rsp + 0x98]
shl eax, 4
or eax, r8d
or eax, r10d
or eax, 0x40
mov byte [rcx + rdx + 8], al
add rdx, 1
jo 0x299ef0437
mov rax, qword [rsp + 0x98]
mov qword [rsp + 0x90], rdx
mov byte [rax + rdx + 8], 0
jmp 0x299ef0563
mov rcx, rax
mov edx, 0x3f
mov rbp, qword [rsp + 0x200]
call fcn.299e8b510
jmp 0x299ef00ac
mov edx, 1
mov rcx, r15
call fcn.299e89810
mov rax, qword [rsp + 0x90]
mov rdx, qword [rsp + 0x98]
mov byte [rdx + rax + 8], 1
add rax, 1
jo 0x299ef00d8
mov rdx, qword [rsp + 0x98]
mov qword [rsp + 0x90], rax
mov byte [rdx + rax + 8], 0
jmp 0x299ef00ac
mov qword [rsp + 0x70], r10
mov qword [rsp + 0x68], r8
mov qword [rsp + 0x60], r9
call fcn.299e88960
cmp byte [r14], 0
mov r9, qword [rsp + 0x60]
mov r8, qword [rsp + 0x68]
mov r10, qword [rsp + 0x70]
jne 0x299ef04a8
xor r13d, r13d
jmp 0x299ef0247
call fcn.299e88960
jmp 0x299eeffc2
call fcn.299e88960
jmp 0x299ef048f
call fcn.299e88960
jmp 0x299eefe2a
call fcn.299e88960
jmp 0x299eeff73
call fcn.299e88960
jmp 0x299ef07d3
call fcn.299e88960
jmp 0x299ef01b8
call fcn.299e88960
jmp 0x299ef03fa
call fcn.299e88960
jmp 0x299ef03a8
call fcn.299e88960
jmp 0x299ef035b
mov qword [rsp + 0x38], r9
call fcn.299e88960
mov r9, qword [rsp + 0x38]
jmp 0x299ef050a
call fcn.299e88960
jmp 0x299ef06e4
call fcn.299e88960
jmp 0x299ef0692
call fcn.299e88960
jmp 0x299ef0640
call fcn.299e88960
jmp 0x299ef05f3