Function at 0x426e00
Capabilities:
Encode data using base64

Disassembly:
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x100
lea rsi, [rsp + 0x20]
mov rbx, rcx
mov rcx, rsi
call fcn.0042b9a0
mov rax, qword [0x005230b0]
mov rdx, qword [rax]
mov rcx, qword [rbx + 0x90]
mov qword [rbx + 0x40], rdx
mov rdx, rsi
call fcn.004157a0
test al, al
jne 0x426e58
cmp dword [rsp + 0x2c], 0xffffffff
je 0x427070
mov rdx, rsi
mov rcx, rbx
call fcn.00426140
test al, al
je 0x426e70
mov rcx, rsi
call fcn.00414500
nop
add rsp, 0x100
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret
movzx eax, byte [rsp + 0x20]
mov r10, qword [rbx + 0x90]
mov byte [r10], al
movzx ecx, byte [rsp + 0x21]
mov byte [r10 + 1], cl
movzx r9d, byte [rsp + 0x22]
mov byte [r10 + 2], r9b
movzx edi, byte [rsp + 0x23]
mov byte [r10 + 3], dil
movzx r8d, byte [rsp + 0x24]
lea rdi, [r10 + 0x30]
mov byte [r10 + 4], r8b
movzx ebp, byte [rsp + 0x25]
lea r8, [rsi + 0x40]
cmp r8, rdi
mov byte [r10 + 5], bpl
mov r11d, dword [rsp + 0x28]
mov r12d, dword [rsp + 0x2c]
mov edx, dword [rsp + 0x30]
mov rax, qword [rsp + 0x38]
mov rcx, qword [rsp + 0x40]
mov r9, qword [rsp + 0x48]
mov dword [r10 + 8], r11d
mov dword [r10 + 0xc], r12d
mov dword [r10 + 0x10], edx
mov qword [r10 + 0x18], rax
mov qword [r10 + 0x20], rcx
mov qword [r10 + 0x28], r9
jbe 0x426f01
lea rbp, [rsi + 0x30]
lea r11, [r10 + 0x40]
cmp rbp, r11
jb 0x4279b0
movdqa xmm4, xmmword [rsp + 0x50]
movups xmmword [r10 + 0x30], xmm4
movdqa xmm5, xmmword [rsp + 0x60]
movups xmmword [r10 + 0x40], xmm5
movdqa xmm0, xmmword [rsp + 0x70]
movups xmmword [r10 + 0x50], xmm0
movdqa xmm1, xmmword [rsp + 0x80]
movups xmmword [r10 + 0x60], xmm1
movdqa xmm2, xmmword [rsp + 0x90]
movups xmmword [r10 + 0x70], xmm2
movdqa xmm3, xmmword [rsp + 0xa0]
movups xmmword [r10 + 0x80], xmm3
mov rdi, qword [rsp + 0xb0]
mov qword [r10 + 0x90], rdi
mov rbp, qword [rsi + 0x98]
mov qword [r10 + 0x98], rbp
mov r12, qword [rsi + 0xa0]
mov qword [r10 + 0xa0], r12
mov rcx, qword [rsi + 0xa8]
mov qword [r10 + 0xa8], rcx
mov r9, qword [rsi + 0xb0]
mov qword [r10 + 0xb0], r9
mov r8, qword [rsi + 0xb8]
mov qword [r10 + 0xb8], r8
mov r11, qword [rsi + 0xc0]
mov qword [r10 + 0xc0], r11
mov rdx, qword [rsi + 0xc8]
mov qword [r10 + 0xc8], rdx
mov eax, dword [rsp + 0xf0]
mov dword [r10 + 0xd0], eax
mov r10, qword [rbx + 0x90]
mov r8, qword [r10 + 0x18]
lea rcx, [r10 + 0xe0]
lea rdx, [r10 + 0x30]
call sub.msvcrt.dll_memcpy
mov rdi, qword [rbx + 0x90]
mov r8, qword [rdi + 0x18]
lea rdx, [rdi + 0x30]
lea rcx, [rdi + r8 + 0xe0]
call sub.msvcrt.dll_memcpy
mov rbp, qword [rbx + 0x90]
cmp byte [rbp], 0
je 0x4278d0
mov eax, 0xffffff
xor edx, edx
mov r8, qword [rbx + 0x10]
div qword [rbx + 0x20]
mov r11d, dword [rbp + 0x107]
mov r10, qword [rbp + 0x18]
and r11d, 0xff000000
mov r9d, eax
imul r9d, r8d
add r8, qword [rbx + 0x18]
add r11d, r9d
mov dword [rbp + 0xd8], r11d
mov edi, dword [rbp + r10 + 0x107]
imul eax, r8d
and edi, 0xff000000
add eax, edi
mov dword [rbp + 0xdc], eax
jmp 0x426e58
mov rax, qword [rbx + 0x90]
mov ecx, dword [rax + 0xc]
test ecx, ecx
js 0x426e49
movzx edi, byte [rax]
mov rdx, qword [rbx + 0x98]
mov byte [rdx], dil
movzx ebp, byte [rax + 1]
mov byte [rdx + 1], bpl
movzx r8d, byte [rax + 2]
mov byte [rdx + 2], r8b
movzx r9d, byte [rax + 3]
mov byte [rdx + 3], r9b
movzx r10d, byte [rax + 4]
mov byte [rdx + 4], r10b
movzx r11d, byte [rax + 5]
lea r10, [rax + 0x40]
mov byte [rdx + 5], r11b
mov r9, qword [rax + 0x28]
mov r12d, dword [rax + 8]
mov ecx, dword [rax + 0xc]
mov edi, dword [rax + 0x10]
mov rbp, qword [rax + 0x18]
mov r8, qword [rax + 0x20]
mov qword [rdx + 0x28], r9
lea r9, [rdx + 0x30]
mov dword [rdx + 8], r12d
mov dword [rdx + 0xc], ecx
cmp r10, r9
mov dword [rdx + 0x10], edi
mov qword [rdx + 0x18], rbp
mov qword [rdx + 0x20], r8
lea r8, [rax + 0x30]
jbe 0x427105
lea r11, [rdx + 0x40]
cmp r8, r11
jb 0x427940
mov rcx, r8
neg rcx
and ecx, 0xf
je 0x427920
movzx r9d, byte [rax + 0x30]
cmp rcx, 1
lea r8, [rax + 0x31]
mov byte [rdx + 0x30], r9b
lea r9, [rdx + 0x31]
je 0x427ba5
movzx r8d, byte [rax + 0x31]
cmp rcx, 2
lea r9, [rdx + 0x32]
mov byte [rdx + 0x31], r8b
lea r8, [rax + 0x32]
je 0x427b9b
movzx r10d, byte [rax + 0x32]
cmp rcx, 3
lea r9, [rdx + 0x33]
lea r8, [rax + 0x33]
mov byte [rdx + 0x32], r10b
je 0x427b91
movzx r11d, byte [rax + 0x33]
cmp rcx, 4
lea r9, [rdx + 0x34]
lea r8, [rax + 0x34]
mov byte [rdx + 0x33], r11b
je 0x427b87
movzx r12d, byte [rax + 0x34]
cmp rcx, 5
lea r9, [rdx + 0x35]
lea r8, [rax + 0x35]
mov byte [rdx + 0x34], r12b
je 0x427b7d
movzx edi, byte [rax + 0x35]
cmp rcx, 6
lea r9, [rdx + 0x36]
lea r8, [rax + 0x36]
mov byte [rdx + 0x35], dil
je 0x427b73
movzx ebp, byte [rax + 0x36]
cmp rcx, 7
lea r9, [rdx + 0x37]
lea r8, [rax + 0x37]
mov byte [rdx + 0x36], bpl
je 0x427b69
movzx r9d, byte [rax + 0x37]
cmp rcx, 8
lea r8, [rax + 0x38]
mov byte [rdx + 0x37], r9b
lea r9, [rdx + 0x38]
je 0x427b5f
movzx r8d, byte [rax + 0x38]
cmp rcx, 9
lea r9, [rdx + 0x39]
mov byte [rdx + 0x38], r8b
lea r8, [rax + 0x39]
je 0x427b55
movzx r10d, byte [rax + 0x39]
cmp rcx, 0xa
lea r9, [rdx + 0x3a]
lea r8, [rax + 0x3a]
mov byte [rdx + 0x39], r10b
je 0x427b4b
movzx r11d, byte [rax + 0x3a]
cmp rcx, 0xb
lea r9, [rdx + 0x3b]
lea r8, [rax + 0x3b]
mov byte [rdx + 0x3a], r11b
je 0x427b41
movzx r12d, byte [rax + 0x3b]
cmp rcx, 0xc
lea r9, [rdx + 0x3c]
lea r8, [rax + 0x3c]
mov byte [rdx + 0x3b], r12b
je 0x427b37
movzx edi, byte [rax + 0x3c]
cmp rcx, 0xd
lea r9, [rdx + 0x3d]
lea r8, [rax + 0x3d]
mov byte [rdx + 0x3c], dil
je 0x427b2d
movzx ebp, byte [rax + 0x3d]
cmp rcx, 0xe
lea r9, [rdx + 0x3e]
lea r8, [rax + 0x3e]
mov byte [rdx + 0x3d], bpl
je 0x427b23
movzx r9d, byte [rax + 0x3e]
lea r8, [rax + 0x3f]
mov ebp, 0x51
mov byte [rdx + 0x3e], r9b
lea r9, [rdx + 0x3f]
mov edi, 0x60
mov r11d, 0x50
mov r12d, 5
sub rdi, rcx
add rcx, 0x30
lea r10, [rax + rcx]
add rcx, rdx
cmp r12, 5
movdqa xmm0, xmmword [r10]
movups xmmword [rcx], xmm0
movdqa xmm1, xmmword [r10 + 0x10]
movups xmmword [rcx + 0x10], xmm1
movdqa xmm2, xmmword [r10 + 0x20]
movups xmmword [rcx + 0x20], xmm2
movdqa xmm3, xmmword [r10 + 0x30]
movups xmmword [rcx + 0x30], xmm3
movdqa xmm4, xmmword [r10 + 0x40]
movups xmmword [rcx + 0x40], xmm4
je 0x4272ff
movdqa xmm5, xmmword [r10 + 0x50]
movups xmmword [rcx + 0x50], xmm5
add r8, r11
sub rbp, r11
cmp rdi, r11
lea rcx, [r9 + r11]
je 0x427403
cmp rbp, 1
movzx r11d, byte [r8]
mov byte [rcx], r11b
je 0x427403
movzx r12d, byte [r8 + 1]
cmp rbp, 2
mov byte [rcx + 1], r12b
je 0x427403
movzx edi, byte [r8 + 2]
cmp rbp, 3
mov byte [rcx + 2], dil
je 0x427403
movzx r9d, byte [r8 + 3]
cmp rbp, 4
mov byte [rcx + 3], r9b
je 0x427403
movzx r10d, byte [r8 + 4]
cmp rbp, 5
mov byte [rcx + 4], r10b
je 0x427403
movzx r11d, byte [r8 + 5]
cmp rbp, 6
mov byte [rcx + 5], r11b
je 0x427403
movzx r12d, byte [r8 + 6]
cmp rbp, 7
mov byte [rcx + 6], r12b
je 0x427403
movzx edi, byte [r8 + 7]
cmp rbp, 8
mov byte [rcx + 7], dil
je 0x427403
movzx r9d, byte [r8 + 8]
cmp rbp, 9
mov byte [rcx + 8], r9b
je 0x427403
movzx r10d, byte [r8 + 9]
cmp rbp, 0xa
mov byte [rcx + 9], r10b
je 0x427403
movzx r11d, byte [r8 + 0xa]
cmp rbp, 0xb
mov byte [rcx + 0xa], r11b
je 0x427403
movzx r12d, byte [r8 + 0xb]
cmp rbp, 0xc
mov byte [rcx + 0xb], r12b
je 0x427403
movzx edi, byte [r8 + 0xc]
cmp rbp, 0xd
mov byte [rcx + 0xc], dil
je 0x427403
movzx r9d, byte [r8 + 0xd]
cmp rbp, 0xe
mov byte [rcx + 0xd], r9b
je 0x427403
movzx r8d, byte [r8 + 0xe]
mov byte [rcx + 0xe], r8b
mov rcx, qword [rax + 0x90]
mov qword [rdx + 0x90], rcx
mov rbp, qword [rax + 0x98]
mov qword [rdx + 0x98], rbp
mov r10, qword [rax + 0xa0]
mov qword [rdx + 0xa0], r10
mov r11, qword [rax + 0xa8]
mov qword [rdx + 0xa8], r11
mov r12, qword [rax + 0xb0]
lea r11, [rax + 0xf0]
mov qword [rdx + 0xb0], r12
mov rdi, qword [rax + 0xb8]
lea r12, [rdx + 0xe0]
cmp r12, r11
mov qword [rdx + 0xb8], rdi
mov r9, qword [rax + 0xc0]
mov qword [rdx + 0xc0], r9
mov r8, qword [rax + 0xc8]
lea r9, [rax + 0xe0]
mov qword [rdx + 0xc8], r8
mov ecx, dword [rax + 0xd0]
mov ebp, dword [rax + 0xd8]
mov r10d, dword [rax + 0xdc]
mov dword [rdx + 0xd0], ecx
mov dword [rdx + 0xd8], ebp
mov dword [rdx + 0xdc], r10d
jae 0x4274c3
lea rdi, [rdx + 0xf0]
cmp r9, rdi
jb 0x427a20
mov rcx, r9
neg rcx
and ecx, 0xf
je 0x427900
movzx r12d, byte [rax + 0xe0]
cmp rcx, 1
lea r9, [rax + 0xe1]
mov byte [rdx + 0xe0], r12b
lea r12, [rdx + 0xe1]
je 0x427b18
movzx r9d, byte [rax + 0xe1]
cmp rcx, 2
lea r12, [rdx + 0xe2]
mov byte [rdx + 0xe1], r9b
lea r9, [rax + 0xe2]
je 0x427b02
movzx edi, byte [rax + 0xe2]
cmp rcx, 3
lea r12, [rdx + 0xe3]
lea r9, [rax + 0xe3]
mov byte [rdx + 0xe2], dil
je 0x427af7
movzx r8d, byte [rax + 0xe3]
cmp rcx, 4
lea r12, [rdx + 0xe4]
lea r9, [rax + 0xe4]
mov byte [rdx + 0xe3], r8b
je 0x427aec
movzx ebp, byte [rax + 0xe4]
cmp rcx, 5
lea r12, [rdx + 0xe5]
lea r9, [rax + 0xe5]
mov byte [rdx + 0xe4], bpl
je 0x427ae1
movzx r11d, byte [rax + 0xe5]
cmp rcx, 6
lea r12, [rdx + 0xe6]
lea r9, [rax + 0xe6]
mov byte [rdx + 0xe5], r11b
je 0x427ad6
movzx r10d, byte [rax + 0xe6]
cmp rcx, 7
lea r12, [rdx + 0xe7]
lea r9, [rax + 0xe7]
mov byte [rdx + 0xe6], r10b
je 0x427acb
movzx r12d, byte [rax + 0xe7]
cmp rcx, 8
lea r9, [rax + 0xe8]
mov byte [rdx + 0xe7], r12b
lea r12, [rdx + 0xe8]
je 0x427ac0
movzx r9d, byte [rax + 0xe8]
cmp rcx, 9
lea r12, [rdx + 0xe9]
mov byte [rdx + 0xe8], r9b
lea r9, [rax + 0xe9]
je 0x427ab5
movzx edi, byte [rax + 0xe9]
cmp rcx, 0xa
lea r12, [rdx + 0xea]
lea r9, [rax + 0xea]
mov byte [rdx + 0xe9], dil
je 0x427aaa
movzx r8d, byte [rax + 0xea]
cmp rcx, 0xb
lea r12, [rdx + 0xeb]
lea r9, [rax + 0xeb]
mov byte [rdx + 0xea], r8b
je 0x427a9f
movzx ebp, byte [rax + 0xeb]
cmp rcx, 0xc
lea r12, [rdx + 0xec]
lea r9, [rax + 0xec]
mov byte [rdx + 0xeb], bpl
je 0x427a94
movzx r11d, byte [rax + 0xec]
cmp rcx, 0xd
lea r12, [rdx + 0xed]
lea r9, [rax + 0xed]
mov byte [rdx + 0xec], r11b
je 0x427a89
movzx r10d, byte [rax + 0xed]
cmp rcx, 0xe
lea r12, [rdx + 0xee]
lea r9, [rax + 0xee]
mov byte [rdx + 0xed], r10b
je 0x427b0d
movzx r12d, byte [rax + 0xee]
lea r9, [rax + 0xef]
mov r10d, 0x99
mov byte [rdx + 0xee], r12b
lea r12, [rdx + 0xef]
mov ebp, 0x98
mov r11d, 0xa8
sub rbp, rcx
sub r11, rcx
shr rbp, 4
add rbp, 1
mov r8, rbp
shl r8, 4
add rcx, 0xe0
add rax, rcx
add rdx, rcx
cmp rbp, 9
movdqa xmm0, xmmword [rax]
movups xmmword [rdx], xmm0
movdqa xmm1, xmmword [rax + 0x10]
movups xmmword [rdx + 0x10], xmm1
movdqa xmm2, xmmword [rax + 0x20]
movups xmmword [rdx + 0x20], xmm2
movdqa xmm3, xmmword [rax + 0x30]
movups xmmword [rdx + 0x30], xmm3
movdqa xmm4, xmmword [rax + 0x40]
movups xmmword [rdx + 0x40], xmm4
movdqa xmm5, xmmword [rax + 0x50]
movups xmmword [rdx + 0x50], xmm5
movdqa xmm0, xmmword [rax + 0x60]
movups xmmword [rdx + 0x60], xmm0
movdqa xmm1, xmmword [rax + 0x70]
movups xmmword [rdx + 0x70], xmm1
movdqa xmm2, xmmword [rax + 0x80]
movups xmmword [rdx + 0x80], xmm2
je 0x4277aa
movdqa xmm3, xmmword [rax + 0x90]
movups xmmword [rdx + 0x90], xmm3
sub r10, r8
cmp r8, r11
lea rdx, [r9 + r8]
lea rax, [r12 + r8]
je 0x426e49
cmp r10, 1
movzx ecx, byte [rdx]
mov byte [rax], cl
je 0x426e49
movzx r9d, byte [rdx + 1]
cmp r10, 2
mov byte [rax + 1], r9b
je 0x426e49
movzx edi, byte [rdx + 2]
cmp r10, 3
mov byte [rax + 2], dil
je 0x426e49
movzx r8d, byte [rdx + 3]
cmp r10, 4
mov byte [rax + 3], r8b
je 0x426e49
movzx ebp, byte [rdx + 4]
cmp r10, 5
mov byte [rax + 4], bpl
je 0x426e49
movzx r11d, byte [rdx + 5]
cmp r10, 6
mov byte [rax + 5], r11b
je 0x426e49
movzx r12d, byte [rdx + 6]
cmp r10, 7
mov byte [rax + 6], r12b
je 0x426e49
movzx ecx, byte [rdx + 7]
cmp r10, 8
mov byte [rax + 7], cl
je 0x426e49
movzx r9d, byte [rdx + 8]
cmp r10, 9
mov byte [rax + 8], r9b
je 0x426e49
movzx edi, byte [rdx + 9]
cmp r10, 0xa
mov byte [rax + 9], dil
je 0x426e49
movzx r8d, byte [rdx + 0xa]
cmp r10, 0xb
mov byte [rax + 0xa], r8b
je 0x426e49
movzx ebp, byte [rdx + 0xb]
cmp r10, 0xc
mov byte [rax + 0xb], bpl
je 0x426e49
movzx r11d, byte [rdx + 0xc]
cmp r10, 0xd
mov byte [rax + 0xc], r11b
je 0x426e49
movzx r12d, byte [rdx + 0xd]
cmp r10, 0xe
mov byte [rax + 0xd], r12b
je 0x426e49
movzx edx, byte [rdx + 0xe]
mov byte [rax + 0xe], dl
jmp 0x426e49
mov eax, 0xffffffff
xor edx, edx
mov r12, qword [rbx + 0x10]
div qword [rbx + 0x20]
mov ecx, eax
imul ecx, r12d
add r12, qword [rbx + 0x18]
mov dword [rbp + 0xd8], ecx
imul eax, r12d
mov dword [rbp + 0xdc], eax
jmp 0x426e58
mov r8d, 0xa0
mov ebp, 0xa
mov r11d, 0xa8
mov r10d, 0xa8
jmp 0x427733
mov r11d, 0x60
mov r12d, 6
mov edi, 0x60
mov ebp, 0x60
jmp 0x4272b4
xor r12d, r12d
movzx ecx, byte [r8 + r12]
mov byte [r9 + r12], cl
movzx edi, byte [r8 + r12 + 1]
mov byte [r9 + r12 + 1], dil
movzx ebp, byte [r8 + r12 + 2]
mov byte [r9 + r12 + 2], bpl
movzx r10d, byte [r8 + r12 + 3]
mov byte [r9 + r12 + 3], r10b
movzx r11d, byte [r8 + r12 + 4]
mov byte [r9 + r12 + 4], r11b
movzx ecx, byte [r8 + r12 + 5]
mov byte [r9 + r12 + 5], cl
movzx edi, byte [r8 + r12 + 6]
mov byte [r9 + r12 + 6], dil
movzx ebp, byte [r8 + r12 + 7]
mov byte [r9 + r12 + 7], bpl
add r12, 8
cmp r12, 0x60
jne 0x427943
jmp 0x427403
xor r12d, r12d
movzx edx, byte [rbp + r12]
mov byte [rdi + r12], dl
movzx eax, byte [rbp + r12 + 1]
mov byte [rdi + r12 + 1], al
movzx ecx, byte [rbp + r12 + 2]
mov byte [rdi + r12 + 2], cl
movzx r9d, byte [rbp + r12 + 3]
mov byte [rdi + r12 + 3], r9b
movzx r8d, byte [rbp + r12 + 4]
mov byte [rdi + r12 + 4], r8b
movzx r11d, byte [rbp + r12 + 5]
mov byte [rdi + r12 + 5], r11b
movzx edx, byte [rbp + r12 + 6]
mov byte [rdi + r12 + 6], dl
movzx eax, byte [rbp + r12 + 7]
mov byte [rdi + r12 + 7], al
add r12, 8
cmp r12, 0x60
jne 0x4279b3
jmp 0x426f4f
xor eax, eax
movzx edx, byte [r9 + rax]
mov byte [r12 + rax], dl
movzx r8d, byte [r9 + rax + 1]
mov byte [r12 + rax + 1], r8b
movzx ecx, byte [r9 + rax + 2]
mov byte [r12 + rax + 2], cl
movzx ebp, byte [r9 + rax + 3]
mov byte [r12 + rax + 3], bpl
movzx r10d, byte [r9 + rax + 4]
mov byte [r12 + rax + 4], r10b
movzx r11d, byte [r9 + rax + 5]
mov byte [r12 + rax + 5], r11b
movzx edi, byte [r9 + rax + 6]
mov byte [r12 + rax + 6], dil
movzx edx, byte [r9 + rax + 7]
mov byte [r12 + rax + 7], dl
add rax, 8
cmp rax, 0xa8
jne 0x427a22
jmp 0x426e49
mov r10d, 0x9b
jmp 0x427713
mov r10d, 0x9c
jmp 0x427713
mov r10d, 0x9d
jmp 0x427713
mov r10d, 0x9e
jmp 0x427713
mov r10d, 0x9f
jmp 0x427713
mov r10d, 0xa0
jmp 0x427713
mov r10d, 0xa1
jmp 0x427713
mov r10d, 0xa2
jmp 0x427713
mov r10d, 0xa3
jmp 0x427713
mov r10d, 0xa4
jmp 0x427713
mov r10d, 0xa5
jmp 0x427713
mov r10d, 0xa6
jmp 0x427713
mov r10d, 0x9a
jmp 0x427713
mov r10d, 0xa7
jmp 0x427713
mov ebp, 0x52
jmp 0x4272a0
mov ebp, 0x53
jmp 0x4272a0
mov ebp, 0x54
jmp 0x4272a0
mov ebp, 0x55
jmp 0x4272a0
mov ebp, 0x56
jmp 0x4272a0
mov ebp, 0x57
jmp 0x4272a0
mov ebp, 0x58
jmp 0x4272a0
mov ebp, 0x59
jmp 0x4272a0
mov ebp, 0x5a
jmp 0x4272a0
mov ebp, 0x5b
jmp 0x4272a0
mov ebp, 0x5c
jmp 0x4272a0
mov ebp, 0x5d
jmp 0x4272a0
mov ebp, 0x5e
jmp 0x4272a0
mov ebp, 0x5f
jmp 0x4272a0