Function at 0x1400ed330
Capabilities:
Encode data using base64

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x88
mov r12, rcx
mov rax, qword [0x140219028]
xor rax, rsp
mov qword [rsp + 0x80], rax
mov rsi, qword [0x140227680]
cmp rsi, 1
jbe 0x1400eda40
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
je 0x1400eda2b
mov rax, qword [0x140227680]
cmp rax, 1
jbe 0x1400eda80
mov r14, qword [0x140227690]
test r14, r14
je 0x1400edabd
mov rdi, qword [r12 + 8]
test rdi, rdi
je 0x1400edaed
mov rcx, rdi
call fcn.14013dc90
mov r13, rax
test rax, rax
mov qword [rsp + 0x48], rsi
je 0x1400ed597
lea rcx, [r13 - 1]
mov eax, r13d
and eax, 7
cmp rcx, 7
jae 0x1400ed3dc
xor esi, esi
mov rcx, rdi
jmp 0x1400ed475
mov rdx, r13
and rdx, 0xfffffffffffffff8
xor esi, esi
mov rcx, rdi
nop dword [rax + rax]
movsx rbp, byte [rcx]
imul rbx, rsi, 0x83
add rbx, rbp
movsx rbp, byte [rcx + 1]
imul rbx, rbx, 0x83
add rbx, rbp
movsx rbp, byte [rcx + 2]
imul rbx, rbx, 0x83
add rbx, rbp
movsx rbp, byte [rcx + 3]
imul rbx, rbx, 0x83
add rbx, rbp
movsx rbp, byte [rcx + 4]
imul rbx, rbx, 0x83
add rbx, rbp
movsx rbp, byte [rcx + 5]
imul rbx, rbx, 0x83
add rbx, rbp
movsx rbp, byte [rcx + 6]
imul rbx, rbx, 0x83
add rbx, rbp
movsx rbp, byte [rcx + 7]
imul rsi, rbx, 0x83
add rsi, rbp
add rcx, 8
add rdx, 0xfffffffffffffff8
jne 0x1400ed3f0
test rax, rax
je 0x1400ed497
xor edx, edx
nop dword [rax]
movsx rbp, byte [rcx + rdx]
imul rsi, rsi, 0x83
add rsi, rbp
inc rdx
cmp rax, rdx
jne 0x1400ed480
mov rbp, qword [r14 + 8]
movabs rcx, 0x5555555555555555
movabs rbx, 0x3333333333333333
movabs rdx, 0xf0f0f0f0f0f0f0f
movabs r8, 0x101010101010101
test rbp, rbp
mov qword [rsp + 0x30], rdi
je 0x1400ed5af
mov rax, rbp
shr rax, 1
and rax, rcx
mov rcx, rbp
sub rcx, rax
mov rax, rcx
and rax, rbx
shr rcx, 2
and rcx, rbx
add rcx, rax
mov rbx, rcx
shr rbx, 4
add rbx, rcx
and rbx, rdx
imul rbx, r8
shr rbx, 0x38
cmp rbx, 1
jbe 0x1400ed5a3
mov r15, rsi
cmp rsi, rbp
jb 0x1400ed522
mov rax, rsi
xor edx, edx
div rbp
mov r15, rdx
mov rax, qword [r14]
mov rax, qword [rax + r15*8]
test rax, rax
je 0x1400ed5b9
mov rdi, qword [rax]
test rdi, rdi
je 0x1400ed5b9
lea rcx, [rbp - 1]
mov rax, qword [rdi + 8]
cmp rax, rsi
je 0x1400ed55e
cmp ebx, 1
jbe 0x1400ed59e
cmp rax, rbp
jb 0x1400ed559
xor edx, edx
div rbp
mov rax, rdx
cmp rax, r15
jne 0x1400ed5b9
cmp qword [rdi + 0x18], r13
je 0x1400ed56e
mov rdi, qword [rdi]
test rdi, rdi
jne 0x1400ed53e
jmp 0x1400ed5b9
mov qword [rsp + 0x28], rcx
mov rcx, qword [rdi + 0x10]
mov rdx, qword [rsp + 0x30]
mov r8, r13
call fcn.140121b40
mov rcx, qword [rsp + 0x28]
test eax, eax
jne 0x1400ed564
mov r15, qword [rsp + 0x30]
jmp 0x1400ed663
xor esi, esi
jmp 0x1400ed497
and rax, rcx
jmp 0x1400ed559
lea r15, [rbp - 1]
and r15, rsi
jmp 0x1400ed522
movabs r15, 0xaaaaaaaaaaaaaaaa
mov ecx, 0x28
call fcn.14011d790
mov rdi, rax
mov rax, qword [rsp + 0x30]
mov qword [rdi + 0x10], rax
mov qword [rdi + 0x18], r13
xor eax, eax
mov qword [rdi + 0x20], rax
mov qword [rdi + 8], rsi
mov qword [rdi], rax
mov rax, qword [r14 + 0x18]
inc rax
js 0x1400ed5f0
cvtsi2ss xmm0, rax
jmp 0x1400ed605
mov rcx, rax
shr rcx, 1
and eax, 1
or rax, rcx
cvtsi2ss xmm0, rax
addss xmm0, xmm0
mov rcx, rbp
shr rcx, 1
mov eax, ebp
and eax, 1
or rax, rcx
test rbp, rbp
js 0x1400ed61f
cvtsi2ss xmm1, rbp
jmp 0x1400ed628
cvtsi2ss xmm1, rax
addss xmm1, xmm1
movss xmm2, dword [r14 + 0x20]
je 0x1400ed7e7
mulss xmm1, xmm2
ucomiss xmm0, xmm1
ja 0x1400ed7e7
mov rax, qword [r14]
mov rcx, qword [rax + r15*8]
test rcx, rcx
je 0x1400ed763
mov rax, qword [rcx]
mov qword [rdi], rax
mov qword [rcx], rdi
mov r15, qword [rsp + 0x30]
inc qword [r14 + 0x18]
mov rsi, qword [rdi + 0x20]
test rsi, rsi
jne 0x1400ed7b1
mov qword [rdi + 0x20], r12
mov rsi, qword [0x140227690]
mov rcx, r15
call fcn.14013dc90
cmp rax, 0xfffffffffffffff0
jae 0x1400edadb
mov rbp, rax
cmp rax, 0x17
jae 0x1400ed6a6
lea rbx, [rsp + 0x60]
mov byte [rbx + 0x17], bpl
test rbp, rbp
jne 0x1400ed6d0
jmp 0x1400ed6de
mov rdi, rbp
add rdi, 0x10
and rdi, 0xfffffffffffffff0
mov rcx, rdi
call fcn.14011d790
mov rbx, rax
mov qword [rsp + 0x60], rax
bts rdi, 0x3f
mov qword [rsp + 0x70], rdi
mov qword [rsp + 0x68], rbp
mov rcx, rbx
mov rdx, r15
mov r8, rbp
call fcn.140121c40
mov byte [rbx + rbp], 0
movzx r8d, byte [rsp + 0x77]
test r8b, r8b
jns 0x1400ed6f9
mov rdx, qword [rsp + 0x60]
mov r8, qword [rsp + 0x68]
jmp 0x1400ed6fe
lea rdx, [rsp + 0x60]
lea rcx, [rsp + 0x78]
call fcn.1400eddb0
mov rbp, qword [rsi + 0x30]
test rbp, rbp
jne 0x1400edaf0
xor ebx, ebx
cmp byte [rsp + 0x77], 0
jns 0x1400ed728
mov rcx, qword [rsp + 0x60]
call fcn.14011d780
test rbx, rbx
jne 0x1400edbdd
mov rcx, qword [rsp + 0x48]
call qword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov rcx, qword [rsp + 0x80]
xor rcx, rsp
call fcn.14011fe20
mov rax, r12
add rsp, 0x88
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
lea rcx, [r14 + 0x10]
mov rdx, qword [r14 + 0x10]
mov qword [rdi], rdx
mov qword [r14 + 0x10], rdi
mov qword [rax + r15*8], rcx
mov rax, qword [rdi]
test rax, rax
mov r15, qword [rsp + 0x30]
je 0x1400ed65f
mov rax, qword [rax + 8]
lea rcx, [rbp - 1]
test rbp, rcx
je 0x1400eda38
cmp rax, rbp
jb 0x1400ed7a5
xor edx, edx
div rbp
mov rax, rdx
mov rcx, qword [r14]
mov qword [rcx + rax*8], rdi
jmp 0x1400ed65f
cmp rsi, r12
je 0x1400ed731
mov rcx, qword [rsp + 0x48]
call qword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
test r12, r12
je 0x1400ed7df
mov rax, qword [r12]
mov rax, qword [rax]
mov rcx, r12
mov edx, 1
call qword [0x14023a010]
mov r12, rsi
jmp 0x1400ed73c
divss xmm0, xmm2
call fcn.140135b9c
cvttss2si rcx, xmm0
mov rdx, rcx
sar rdx, 0x3f
subss xmm0, dword [0x1401e2fa8]
cvttss2si rax, xmm0
and rax, rdx
or rax, rcx
mov rbx, rbp
add rbx, rbp
cmp rbp, 3
jb 0x1400eda17
lea rdx, [rbp - 1]
xor ecx, ecx
test rbp, rdx
setne cl
or rcx, rbx
cmp rcx, rax
cmovb rcx, rax
cmp rcx, 1
je 0x1400eda21
lea rax, [rcx - 1]
test rcx, rax
je 0x1400ed850
call fcn.14010b600
mov rcx, rax
mov rbp, qword [r14 + 8]
cmp rcx, rbp
mov qword [rsp + 0x28], r14
mov qword [rsp + 0x38], r12
jbe 0x1400edc14
mov rax, rcx
shr rax, 0x3d
jne 0x1400edc33
mov qword [rsp + 0x40], rcx
lea rcx, [rcx*8]
call fcn.14011d790
mov rcx, qword [r14]
mov qword [r14], rax
test rcx, rcx
je 0x1400ed896
call fcn.14011d780
mov rbx, qword [rsp + 0x40]
mov qword [r14 + 8], rbx
xor eax, eax
mov rcx, qword [r14]
mov qword [rcx + rax*8], 0
inc rax
cmp rbx, rax
jne 0x1400ed8a1
mov r12, qword [r14 + 0x10]
test r12, r12
je 0x1400edd53
lea rcx, [r14 + 0x10]
mov r9, qword [r12 + 8]
mov rax, rbx
shr rax, 1
movabs rdx, 0x5555555555555555
and rax, rdx
mov rdx, rbx
sub rdx, rax
mov rax, rdx
movabs rbp, 0x3333333333333333
and rax, rbp
shr rdx, 2
and rdx, rbp
add rdx, rax
mov r10, rdx
shr r10, 4
add r10, rdx
movabs rax, 0xf0f0f0f0f0f0f0f
and r10, rax
movabs rax, 0x101010101010101
imul r10, rax
shr r10, 0x38
cmp r10, 1
jbe 0x1400edc38
cmp r9, rbx
jb 0x1400ed940
mov rax, r9
xor edx, edx
div rbx
mov r9, rdx
mov rax, qword [r14]
mov qword [rax + r9*8], rcx
mov r15, qword [r12]
test r15, r15
je 0x1400edd53
lea r11, [rbx - 1]
mov rbp, qword [r15 + 8]
cmp r10d, 1
jbe 0x1400edae5
cmp rbp, rbx
jb 0x1400ed976
mov rax, rbp
xor edx, edx
div rbx
mov rbp, rdx
cmp rbp, r9
je 0x1400ed9a5
mov rax, qword [r14]
cmp qword [rax + rbp*8], 0
mov r13, r15
jne 0x1400ed9aa
mov qword [rax + rbp*8], r12
mov r12, r15
mov r9, rbp
mov r14, qword [rsp + 0x28]
mov r15, qword [r12]
test r15, r15
jne 0x1400ed958
jmp 0x1400edd53
mov r12, r15
jmp 0x1400ed997
mov r14, r13
mov r13, qword [r13]
test r13, r13
je 0x1400ed9c0
mov r8, qword [r13 + 0x18]
cmp qword [r15 + 0x18], r8
je 0x1400ed9e5
mov qword [r12], r13
mov rcx, qword [rsp + 0x28]
mov rax, qword [rcx]
mov rax, qword [rax + rbp*8]
mov rax, qword [rax]
mov qword [r14], rax
mov r14, rcx
mov rax, qword [rcx]
mov rax, qword [rax + rbp*8]
mov qword [rax], r15
jmp 0x1400ed997
mov rcx, qword [r15 + 0x10]
mov rdx, qword [r13 + 0x10]
mov rbx, r9
mov qword [rsp + 0x58], r10
mov qword [rsp + 0x50], r11
call fcn.140121b40
mov r11, qword [rsp + 0x50]
mov r10, qword [rsp + 0x58]
mov r9, rbx
mov rbx, qword [rsp + 0x40]
test eax, eax
jne 0x1400ed9c0
jmp 0x1400ed9aa
mov ecx, 1
jmp 0x1400ed82b
mov ecx, 2
jmp 0x1400ed850
mov rcx, rsi
call fcn.1400fd520
jmp 0x1400ed37a
and rax, rcx
jmp 0x1400ed7a5
lea rcx, [0x140227680]
call fcn.1400f5aa0
test al, al
je 0x1400edd8f
mov qword [0x140227688], 0
lea rsi, [0x140227688]
lea rcx, [0x140227680]
mov rdx, rsi
xor r8d, r8d
mov r9, rcx
call fcn.140014c00
jmp 0x1400ed369
lea rcx, [0x140227680]
call fcn.1400f5aa0
test al, al
je 0x1400edd9b
mov qword [0x140227688], 0
lea rdx, [0x140227688]
lea rcx, [0x140227680]
xor r8d, r8d
mov r9, rcx
call fcn.140014c00
jmp 0x1400ed38b
mov ecx, 0xa0
call fcn.14011d790
mov rcx, rax
call fcn.1400141b0
mov r14, qword [0x140227690]
jmp 0x1400ed39b
lea rcx, [rsp + 0x60]
call fcn.14016bfc0
and rbp, r11
jmp 0x1400ed976
int3
mov rdi, rax
mov rax, rbp
shr rax, 1
movabs rcx, 0x5555555555555555
and rax, rcx
mov rcx, rbp
sub rcx, rax
mov rax, rcx
movabs rdx, 0x3333333333333333
and rax, rdx
shr rcx, 2
and rcx, rdx
add rcx, rax
mov r14, rcx
shr r14, 4
add r14, rcx
movabs rax, 0xf0f0f0f0f0f0f0f
and r14, rax
movabs rax, 0x101010101010101
imul r14, rax
shr r14, 0x38
cmp r14, 1
ja 0x1400edbef
lea r15, [rbp - 1]
and r15, rdi
mov rax, qword [rsi + 0x28]
mov rax, qword [rax + r15*8]
test rax, rax
je 0x1400ed715
mov r13, qword [rax]
test r13, r13
je 0x1400ed715
lea rax, [rbp - 1]
mov qword [rsp + 0x30], rax
add rsi, 0x4c
xor ebx, ebx
mov rax, qword [r13 + 8]
cmp rdi, rax
jne 0x1400edbac
lea rdx, [r13 + 0x10]
mov rcx, rsi
lea r8, [rsp + 0x60]
call fcn.140114a40
test al, al
je 0x1400edbc0
jmp 0x1400edc0c
cmp r14d, 1
ja 0x1400edbce
and rax, qword [rsp + 0x30]
cmp rax, r15
jne 0x1400ed717
mov r13, qword [r13]
test r13, r13
jne 0x1400edb8c
jmp 0x1400ed717
cmp rax, rbp
jb 0x1400edbb7
xor edx, edx
div rbp
mov rax, rdx
jmp 0x1400edbb7
mov rcx, r12
mov edx, 0x20
call fcn.14011c310
jmp 0x1400ed731
cmp rdi, rbp
jae 0x1400edbfc
mov r15, rdi
jmp 0x1400edb60
mov rax, rdi
xor edx, edx
div rbp
mov r15, rdx
jmp 0x1400edb60
mov rbx, r13
jmp 0x1400ed717
jae 0x1400edd53
mov rax, r14
mov r14, rcx
mov rax, qword [rax + 0x18]
test rax, rax
js 0x1400edc44
xorps xmm0, xmm0
cvtsi2ss xmm0, rax
jmp 0x1400edc5c
call fcn.14011d580
lea rax, [rbx - 1]
and r9, rax
jmp 0x1400ed940
mov rcx, rax
shr rcx, 1
and eax, 1
or rax, rcx
xorps xmm0, xmm0
cvtsi2ss xmm0, rax
addss xmm0, xmm0
mov rax, qword [rsp + 0x28]
divss xmm0, dword [rax + 0x20]
call fcn.140135b9c
cvttss2si rcx, xmm0
mov rdx, rcx
subss xmm0, dword [0x1401e2fa8]
cvttss2si rax, xmm0
sar rdx, 0x3f
and rax, rdx
or rax, rcx
cmp rbp, 3
jb 0x1400edd0d
mov rcx, rbp
shr rcx, 1
movabs rdx, 0x5555555555555555
and rcx, rdx
mov rdx, rbp
sub rdx, rcx
mov rcx, rdx
shr rcx, 2
movabs rbx, 0x3333333333333333
and rdx, rbx
and rcx, rbx
add rcx, rdx
mov rdx, rcx
shr rdx, 4
add rdx, rcx
movabs rcx, 0xf0f0f0f0f0f0f0f
and rdx, rcx
movabs rcx, 0x101010101010101
imul rdx, rcx
shr rdx, 0x38
cmp edx, 1
ja 0x1400edd0d
cmp rax, 2
jb 0x1400edd15
dec rax
bsr rcx, rax
xor ecx, 0x3f
neg cl
mov eax, 1
shl rax, cl
jmp 0x1400edd15
mov rcx, rax
call fcn.14010b600
mov rcx, r14
cmp r14, rax
cmovb rcx, rax
cmp rcx, rbp
mov r14, qword [rsp + 0x28]
jae 0x1400edd53
test rcx, rcx
jne 0x1400ed867
mov rcx, qword [r14]
mov qword [r14], 0
test rcx, rcx
je 0x1400edd46
call fcn.14011d780
mov r14, qword [rsp + 0x28]
mov qword [r14 + 8], 0
mov rbp, qword [r14 + 8]
lea r15, [rbp - 1]
test rbp, r15
je 0x1400edd7a
cmp rsi, rbp
mov r12, qword [rsp + 0x38]
jb 0x1400edd87
mov rax, rsi
xor edx, edx
div rbp
mov r15, rdx
jmp 0x1400ed641
and r15, rsi
mov r12, qword [rsp + 0x38]
jmp 0x1400ed641
mov r15, rsi
jmp 0x1400ed641
mov rsi, qword [0x140227680]
jmp 0x1400ed369
mov rax, qword [0x140227680]
jmp 0x1400ed38b