Function at 0x140031c70
Capabilities:
Encode data using base64
Get thread local storage value
Resolve function by parsing pe exports
Set thread local storage value

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x58
lea rbx, [rcx + 0x78]
mov rsi, rcx
mov rcx, rbx
call fcn.140341618
movzx eax, byte [rsi + 0x94]
test al, 1
jne 0x140031eb0
or eax, 1
mov rcx, rbx
mov byte [rsi + 0x94], al
call fcn.140341260
mov rbx, qword [rsi + 0x58]
test rbx, rbx
je 0x140031e6b
mov rcx, rbx
call fcn.1400b1a40
test eax, eax
je 0x140031e40
lea rcx, [0x1404c9ea8]
call fcn.140341618
mov rcx, qword [0x1404c9e90]
mov rdx, rbx
call fcn.1400c84f0
mov r13, rax
test rax, rax
je 0x140031f7a
mov edx, dword [rax]
xor edi, edi
xor r14d, r14d
lea rbp, [0x14035c050]
test edx, edx
je 0x140031f7a
mov rdx, rdi
mov rdi, rbx
nop
mov eax, r14d
imul eax, dword [rbp]
lea r15, [r13 + rax + 8]
mov eax, dword [r15]
cmp eax, dword [0x1404c9ea0]
jae 0x140355e60
mov rcx, qword [0x1404c9e98]
mov rbx, qword [rcx + rax*8]
cmp qword [rbx + 0x40], 0
je 0x140031d93
mov r12, qword [r15 + 8]
test r12, r12
je 0x140031d93
mov rax, r13
mov qword [rsp + 0x38], r15
mov r13, rdi
mov r15, rbx
mov rdi, rax
nop word [rax + rax]
mov eax, dword [r12]
test eax, eax
je 0x140031d80
mov rax, qword [r12 + 0x28]
cmp rsi, qword [rax + 0x10]
je 0x140031ed0
nop word [rax + rax]
mov r12, qword [r12 + 8]
test r12, r12
jne 0x140031d60
mov rax, rdi
mov rdi, r13
mov r13, rax
add r14d, 1
cmp r14d, dword [r13]
jb 0x140031d10
mov rbx, rdi
mov rdi, rdx
test rdx, rdx
je 0x140031f7a
lea r15, [0x14036cc49]
lea r14, str.handler_unref_R
lea r13, [0x14036c704]
jmp 0x140031e09
mov qword [rsp + 0x20], r15
mov r9, r14
mov edx, 8
mov rcx, r13
lea r8, [0x14036c6ea]
call fcn.1400d2190
nop dword [rax]
mov rdx, rdi
mov ecx, 0x18
call fcn.1400e6130
test rbp, rbp
je 0x140031f7a
mov rdi, rbp
mov r8, qword [rdi]
mov edx, dword [r8]
test edx, edx
je 0x140031e1e
mov rcx, rbx
call fcn.1400b6750
mov r8, qword [rdi]
mov eax, dword [r8 + 0x20]
mov rbp, qword [rdi + 8]
mov ecx, dword [rdi + 0x10]
test eax, eax
je 0x140031dd0
sub eax, 1
mov dword [r8 + 0x20], eax
jne 0x140031df0
mov rdx, rbx
call fcn.1400b5190
jmp 0x140031df0
lea rax, [0x14036cc28]
lea r9, str.g_signal_handlers_disconnect_matched
mov edx, 8
mov qword [rsp + 0x20], rax
lea r8, [0x14036c6ea]
lea rcx, [0x14036c704]
call fcn.1400d2190
test byte [rsi + 0x9c], 2
je 0x140031e98
lea rcx, [rsi + 0x80]
add rsp, 0x58
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
jmp qword [sym.imp.KERNEL32.dll_WakeConditionVariable]
mov rcx, rsi
add rsp, 0x58
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
jmp fcn.140031940
mov rcx, rbx
add rsp, 0x58
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
jmp fcn.140341260
mov rbx, qword [r15 + 0x40]
cmp qword [rax + 8], rbx
jne 0x140031d80
cmp qword [rax - 0x20], 0
jne 0x140031d80
lea rcx, [0x140031f90]
cmp qword [rax + 0x20], rcx
jne 0x140031d80
mov rax, qword [rsp + 0x38]
mov ecx, 0x18
mov qword [rsp + 0x48], rdx
mov r8d, dword [rax]
mov dword [rsp + 0x44], r8d
call fcn.1400e69e0
mov rdx, qword [rsp + 0x48]
mov r8d, dword [rsp + 0x44]
mov qword [rax], r12
mov rbx, rax
mov qword [rax + 8], rdx
mov dword [rax + 0x10], r8d
mov eax, dword [r12 + 0x20]
test eax, eax
jne 0x140031f70
lea rax, [0x14036cc49]
lea r9, str.handler_ref
mov edx, 8
mov qword [rsp + 0x20], rax
lea r8, [0x14036c6ea]
lea rcx, [0x14036c704]
call fcn.1400d2190
mov rdx, rbx
jmp 0x140031d80
add eax, 1
mov dword [r12 + 0x20], eax
jmp 0x140031f62
lea rcx, [0x1404c9ea8]
call fcn.140341260
jmp 0x140031e6b
mov rax, qword [0x40]
ud2