Function at 0x1400f5610
Capabilities:
Encode data using base64
Get thread local storage value

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x58
movapd xmmword [rsp + 0x40], xmm6
mov rsi, rcx
mov rax, qword [0x140219028]
xor rax, rsp
mov qword [rsp + 0x38], rax
call fcn.14011d894
mov r15d, dword [rax]
call fcn.14011d894
mov dword [rax], 0
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov edi, eax
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_SetLastError]
mov rbx, qword [0x140227710]
cmp rbx, 1
jbe 0x1400f57f9
mov rbp, qword [rsi + 8]
mov ecx, dword [0x14021aed0]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
and rax, 0xfffffffffffffffc
je 0x1400f5846
movsxd rcx, dword [rbx]
shl rcx, 4
mov qword [rax + rcx], rbp
mov ecx, dword [rbx + 4]
movsxd rdx, dword [rbx]
shl rdx, 4
mov dword [rax + rdx + 8], ecx
mov rcx, qword [rsi]
test rcx, rcx
jne 0x1400f5741
mov ecx, edi
call qword [sym.imp.KERNEL32.dll_SetLastError]
call fcn.14011d894
mov dword [rax], r15d
cmp byte [rsi + 0x38], 0
je 0x1400f56d2
mov rbx, qword [rsi + 0x48]
test rbx, rbx
jne 0x1400f5756
mov byte [rsi + 0x38], 0
movabs rdi, 0xfffffffe00000000
lea rcx, [rsi + 0x18]
call fcn.1400d38a0
mov rcx, qword [rsi + 8]
mov rax, rcx
and rax, rdi
cmp rax, qword [0x14021af08]
je 0x1400f59b5
mov qword [rsi + 8], 0
mov rcx, qword [rsi]
and rdi, rcx
cmp rdi, qword [0x14021af08]
je 0x1400f57ef
mov qword [rsi], 0
mov rcx, qword [rsp + 0x38]
xor rcx, rsp
call fcn.14011fe20
movaps xmm6, xmmword [rsp + 0x40]
add rsp, 0x58
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
cmp qword [rsi + 8], 0
jne 0x1400f56ab
call fcn.140119d50
jmp 0x1400f56ab
mov rax, qword [fcn.1401122d0]
lea rcx, [0x14011c810]
cmp rax, rcx
jne 0x1400f599f
lea rdi, [rsp + 0x30]
mov qword [rdi], 0
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov rax, qword [rdi]
movabs rcx, 0x8637bd05af6
cmp rax, rcx
jg 0x1400f59bf
imul rax, rax, 0xf4240
cqo
idiv qword [0x140227198]
mov qword [rsp + 0x28], rax
mov rbp, qword [rsi + 0x40]
mov rdi, rax
sub rdi, rbp
cmp rdi, 0xf4240
jge 0x1400f5859
mov rdi, qword [rsi + 0x48]
test rdi, rdi
je 0x1400f56ce
lock dec dword [rdi]
jne 0x1400f56ce
mov rcx, rdi
call fcn.14005b670
mov rcx, rdi
call fcn.14011d780
jmp 0x1400f56ce
call fcn.1400f23b0
jmp 0x1400f5717
lea rcx, [0x140227710]
call fcn.1400f5aa0
test al, al
je 0x1400f59e6
mov qword [0x140227718], 0
lea r14, [0x140227710]
lea rbx, [0x140227718]
mov rcx, rbx
xor edx, edx
call fcn.140012fc0
mov rcx, r14
mov rdx, rbx
xor r8d, r8d
mov r9, r14
call fcn.140014c00
jmp 0x1400f566c
test rbp, rbp
je 0x1400f569f
call fcn.140013120
jmp 0x1400f5686
mov r8, qword [rbx + 0x1f0]
mov edx, 0x3938700
lea rcx, [rdx + r8]
sar rcx, 0x3f
btc rcx, 0x3f
add rdx, r8
cmovo rdx, rcx
cmp rdx, rax
jle 0x1400f59f2
movabs r15, 0x8000000000000001
sub rbp, qword [rbx + 0x1f0]
lea rax, [r15 + rbp]
cmp rax, 2
jb 0x1400f58a4
cvtsi2sd xmm0, rbp
jmp 0x1400f58b4
shr rbp, 0x3f
lea rax, [0x1401f7bd0]
movsd xmm0, qword [rax + rbp*8]
divsd xmm0, qword [0x1401f8060]
call fcn.1401527a4
movsd xmm6, qword [0x1401e2e30]
ucomisd xmm6, xmm0
jb 0x1400f5a2d
maxsd xmm0, qword [0x1401e2e48]
cvttsd2si r14d, xmm0
add r15, rdi
cmp r15, 2
jb 0x1400f58fb
xorps xmm0, xmm0
cvtsi2sd xmm0, rdi
divsd xmm0, qword [0x1401f8060]
jmp 0x1400f5903
movsd xmm0, qword [0x1401fce90]
xorpd xmm1, xmm1
ucomisd xmm0, xmm1
jb 0x1400f5a46
addsd xmm0, qword [0x1401e2a28]
call fcn.1401527a4
ucomisd xmm6, xmm0
jb 0x1400f5a58
maxsd xmm0, qword [0x1401e2e48]
cvttsd2si ebp, xmm0
mov r15, qword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
mov r12, qword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
add ebp, r14d
cmp ebp, 0x3c
mov edi, 0x3c
cmovl edi, ebp
lea r13, [rbx + 8]
mov rcx, r13
call r15
test al, al
je 0x1400f5a6f
cmp r14d, edi
jge 0x1400f597a
movsxd rax, r14d
movsxd rcx, edi
inc qword [rbx + rax*8 + 0x10]
inc rax
cmp rcx, rax
jne 0x1400f596d
mov rcx, r13
call r12
cmp ebp, 0x3d
jl 0x1400f57c4
mov rbx, qword [rbx + 0x1f8]
sub ebp, edi
xor r14d, r14d
test rbx, rbx
jne 0x1400f5942
jmp 0x1400f57c4
lea rdi, [rsp + 0x28]
mov rcx, rdi
call qword [0x14023a010]
mov rax, qword [rdi]
jmp 0x1400f57ad
call fcn.1400f23b0
jmp 0x1400f56fc
mov rcx, qword [0x140227198]
cqo
idiv rcx
imul rbp, rax, 0xf4240
imul rax, rdx, 0xf4240
cqo
idiv rcx
add rax, rbp
jmp 0x1400f57a8
mov rbx, qword [0x140227710]
jmp 0x1400f566c
lea r14, [rsp + 0x30]
mov rcx, r14
mov rdx, rax
call fcn.1400a3b80
mov r14, qword [r14]
test r14, r14
je 0x1400f5882
lock dec dword [r14]
jne 0x1400f5882
mov rcx, r14
call fcn.14005b670
mov rcx, r14
call fcn.14011d780
jmp 0x1400f5882
xor eax, eax
ucomisd xmm0, qword [0x1401e2e48]
mov r14d, 0x7fffffff
cmovb r14d, eax
jmp 0x1400f58e0
addsd xmm0, qword [0x1401e2e38]
call fcn.1401523a8
jmp 0x1400f591e
xor eax, eax
ucomisd xmm0, qword [0x1401e2e48]
mov ebp, 0x7fffffff
cmovb ebp, eax
jmp 0x1400f5934
mov rcx, r13
call fcn.1400fd520
jmp 0x1400f5962