Function at 0x1400039d0
Capabilities:
Allocate thread local storage
Get thread local storage value
Set thread local storage value

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
push rdi
sub rsp, 0x20
cmp dword [0x14025763c], 0
mov ebx, ecx
jne 0x140003744
call fcn.1400039d0
mov ecx, dword [0x140257638]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
test rax, rax
jne 0x140003770
call fcn.1400039d0
mov ecx, dword [0x140257638]
call qword [sym.imp.KERNEL32.dll_TlsGetValue]
nop word [rax + rax]
mov r8d, 1
imul ecx, ebx, 0x53a9b4fb
mov edx, r8d
sub edx, ecx
mov dword [rax + 0x4c], edx
imul ecx, edx, 0x53a9b4fb
mov edx, r8d
sub edx, ecx
mov dword [rax + 8], edx
imul ecx, edx, 0x53a9b4fb
mov edx, r8d
sub edx, ecx
mov dword [rax + 0x50], edx
imul ecx, edx, 0x53a9b4fb
mov edx, r8d
sub edx, ecx
mov dword [rax + 0xc], edx
imul ecx, edx, 0x53a9b4fb
mov edx, r8d
sub edx, ecx
mov dword [rax + 0x54], edx
imul ecx, edx, 0x53a9b4fb
mov edx, r8d
sub edx, ecx
mov dword [rax + 0x10], edx
imul ecx, edx, 0x53a9b4fb
mov edx, r8d
sub edx, ecx
mov dword [rax + 0x58], edx
imul ecx, edx, 0x53a9b4fb
mov edx, r8d
sub edx, ecx
mov dword [rax + 0x14], edx
imul ecx, edx, 0x53a9b4fb
mov edx, r8d
sub edx, ecx
mov dword [rax + 0x5c], edx
imul ecx, edx, 0x53a9b4fb
mov edx, r8d
sub edx, ecx
mov dword [rax + 0x18], edx
imul ecx, edx, 0x53a9b4fb
mov edx, r8d
sub edx, ecx
mov dword [rax + 0x60], edx
imul ecx, edx, 0x53a9b4fb
mov edx, r8d
sub edx, ecx
mov dword [rax + 0x1c], edx
imul ecx, edx, 0x53a9b4fb
mov edx, r8d
sub edx, ecx
mov dword [rax + 0x64], edx
imul ecx, edx, 0x53a9b4fb
mov edx, r8d
sub edx, ecx
mov dword [rax + 0x20], edx
imul ecx, edx, 0x53a9b4fb
mov edx, r8d
sub edx, ecx
mov dword [rax + 0x68], edx
imul ecx, edx, 0x53a9b4fb
mov edx, r8d
sub edx, ecx
mov dword [rax + 0x24], edx
imul ecx, edx, 0x53a9b4fb
mov edx, r8d
sub edx, ecx
mov dword [rax + 0x6c], edx
imul ecx, edx, 0x53a9b4fb
mov edx, r8d
sub edx, ecx
mov dword [rax + 0x28], edx
imul ecx, edx, 0x53a9b4fb
mov edx, r8d
sub edx, ecx
mov dword [rax + 0x70], edx
imul ecx, edx, 0x53a9b4fb
mov edx, r8d
sub edx, ecx
mov dword [rax + 0x2c], edx
imul ecx, edx, 0x53a9b4fb
mov edi, 0xa
mov edx, r8d
sub edx, ecx
mov dword [rax + 0x74], edx
imul ecx, edx, 0x53a9b4fb
mov edx, r8d
sub edx, ecx
mov dword [rax + 0x30], edx
imul ecx, edx, 0x53a9b4fb
mov edx, r8d
sub edx, ecx
mov dword [rax + 0x78], edx
imul ecx, edx, 0x53a9b4fb
mov edx, r8d
sub edx, ecx
mov dword [rax + 0x34], edx
imul ecx, edx, 0x53a9b4fb
mov edx, r8d
sub edx, ecx
mov dword [rax + 0x7c], edx
imul ecx, edx, 0x53a9b4fb
mov edx, r8d
sub edx, ecx
mov dword [rax + 0x38], edx
imul ecx, edx, 0x53a9b4fb
mov edx, r8d
sub edx, ecx
mov dword [rax + 0x80], edx
imul ecx, edx, 0x53a9b4fb
mov edx, r8d
sub edx, ecx
mov dword [rax + 0x3c], edx
imul ecx, edx, 0x53a9b4fb
mov edx, r8d
sub edx, ecx
mov dword [rax + 0x84], edx
imul ecx, edx, 0x53a9b4fb
mov edx, r8d
sub edx, ecx
mov dword [rax + 0x40], edx
imul ecx, edx, 0x53a9b4fb
mov edx, r8d
sub edx, ecx
mov dword [rax + 0x88], edx
imul ecx, edx, 0x53a9b4fb
mov edx, r8d
sub edx, ecx
mov dword [rax + 0x44], edx
imul ecx, edx, 0x53a9b4fb
mov edx, r8d
sub edx, ecx
mov dword [rax + 0x8c], edx
imul ecx, edx, 0x53a9b4fb
sub r8d, ecx
xor ebx, ebx
mov dword [rax + 0x48], r8d
mov dword [rax], ebx
mov dword [rax + 4], edi
lea esi, [rbx + 0x1f]
lea ebp, [rbx + 0x10]
nop
mov r10d, dword [rax + rbx*4 + 8]
lea rdx, [rax + rbx*4]
mov ecx, dword [rax + rbx*4 + 0x4c]
lea r9, [rax + rbx*4]
movsxd r8, edi
ror ecx, 0xd
ror r10d, 5
add ecx, dword [rax + r8*4 + 0x4c]
mov r11d, dword [rax + r8*4 + 8]
add r10d, r11d
sub ebx, 1
mov dword [rdx + 8], ecx
mov dword [r9 + 0x4c], r10d
cmovs ebx, ebp
sub edi, 1
mov dword [rax], ebx
cmovs edi, ebp
mov dword [rax + 4], edi
sub rsi, 1
jne 0x140003970
mov rbx, qword [rsp + 0x30]
mov rbp, qword [rsp + 0x38]
mov rsi, qword [rsp + 0x40]
add rsp, 0x20
pop rdi
ret
push rbx
sub rsp, 0x20
cmp dword [0x14025763c], 0
jne 0x1400039f5
call qword [sym.imp.KERNEL32.dll_TlsAlloc]
mov dword [0x140257638], eax
mov dword [0x14025763c], 1
mov rcx, qword [0x140257138]
xor edx, edx
mov r8d, 0x90
call qword [sym.imp.KERNEL32.dll_HeapAlloc]
mov ecx, dword [0x140257638]
mov rdx, rax
call qword [sym.imp.KERNEL32.dll_TlsSetValue]
call qword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov ebx, eax
call qword [sym.imp.KERNEL32.dll_GetTickCount]
xor ebx, eax
mov ecx, ebx
add rsp, 0x20
pop rbx
jmp 0x140003720