Function at 0x1009c6a0
Capabilities:
Get thread local storage value

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x98
mov edi, dword [ebp + 8]
mov eax, dword [0x101db014]
xor eax, ebp
mov dword [ebp - 0x10], eax
mov eax, dword [edi + 0x48]
cmp dword [eax + 0xc], 0
je 0x1009c6d0
xor ebx, ebx
cmp dword [eax + 0x18], 0
sete bl
jmp 0x1009c9ba
mov ebx, dword [edi + 0x4c]
mov eax, dword [0x101de1f0]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_TlsGetValue]
sub esp, 4
mov esi, eax
test eax, eax
je 0x1009cbb5
lea eax, [ebx + 0x1c]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_EnterCriticalSection]
sub esp, 4
mov dword [ebx + 8], esi
mov esi, dword [edi + 0x3c]
mov ebx, dword [edi + 0x54]
cmp dword [0x101de200], 0
je 0x1009cc8a
mov eax, dword [0x101de1f0]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_TlsGetValue]
sub esp, 4
test eax, eax
je 0x1009cbcc
cmp ebx, eax
je 0x1009c866
cmp byte [0x101decc4], 0
jne 0x1009c751
cmp dword [0x101de200], 0
je 0x1009cc9e
mov byte [0x101decc4], 1
cmp dword [0x101de200], 0
je 0x1009cc94
call dword [sym.imp.winmm.dll_timeGetTime]
cmp esi, 2
jne 0x1009c785
sub eax, dword [edi + 0x38]
xor ecx, ecx
cmp byte [0x101decc4], 0
mov edx, 0x3e8
cmove edx, ecx
cmp eax, edx
jb 0x1009c866
mov eax, dword [edi + 0x4c]
mov dword [esp], eax
call sym.nss3.dll_PR_Unlock
mov eax, dword [edi + 0x44]
test eax, eax
je 0x1009c87c
mov dword [ebp - 0x90], eax
mov ebx, dword [edi + 0x4c]
mov eax, dword [0x101de1f0]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_TlsGetValue]
sub esp, 4
mov esi, eax
test eax, eax
je 0x1009cbe1
lea eax, [ebx + 0x1c]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_EnterCriticalSection]
sub esp, 4
mov dword [ebx + 8], esi
cmp dword [edi + 0x54], 0
je 0x1009c7ec
mov eax, dword [edi + 0x50]
mov dword [esp], eax
mov dword [esp + 4], 0xffffffff
call sym.nss3.dll_PR_WaitCondVar
jmp 0x1009c7d1
mov esi, dword [edi + 0x3c]
cmp dword [0x101de200], 0
je 0x1009cca8
mov eax, dword [0x101de1f0]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_TlsGetValue]
sub esp, 4
test eax, eax
je 0x1009cbf8
test eax, eax
je 0x1009c866
cmp byte [0x101decc4], 0
jne 0x1009c836
cmp dword [0x101de200], 0
je 0x1009ccc6
mov byte [0x101decc4], 1
cmp dword [0x101de200], 0
je 0x1009ccb2
call dword [sym.imp.winmm.dll_timeGetTime]
cmp esi, 2
jne 0x1009c883
sub eax, dword [edi + 0x38]
xor ecx, ecx
cmp byte [0x101decc4], 0
mov edx, 0x3e8
cmove edx, ecx
cmp eax, edx
jae 0x1009c883
mov ebx, dword [edi + 0x20]
mov eax, dword [edi + 0x4c]
mov dword [esp], eax
call sym.nss3.dll_PR_Unlock
and ebx, 1
jmp 0x1009c9ba
xor ebx, ebx
jmp 0x1009c9ba
mov dword [edi + 0x3c], 1
cmp dword [0x101de200], 0
je 0x1009ccbc
mov eax, dword [0x101de1f0]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_TlsGetValue]
sub esp, 4
test eax, eax
je 0x1009cc0d
mov dword [edi + 0x54], eax
mov eax, dword [edi + 0x4c]
mov dword [esp], eax
call sym.nss3.dll_PR_Unlock
mov ebx, dword [edi + 0x40]
test ebx, ebx
je 0x1009c8f2
mov eax, dword [0x101de1f0]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_TlsGetValue]
sub esp, 4
mov esi, eax
test eax, eax
je 0x1009cc3d
lea eax, [ebx + 0x1c]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_EnterCriticalSection]
sub esp, 4
mov dword [ebx + 8], esi
mov eax, dword [ebp - 0x90]
mov ecx, dword [eax + 0x16]
mov esi, dword [edi + 0x1c]
call dword [section..00cfg]
lea eax, [ebp - 0x78]
mov dword [esp + 4], eax
mov dword [esp], esi
call ecx
mov esi, eax
mov eax, dword [edi + 0x40]
test eax, eax
je 0x1009c921
mov dword [esp], eax
call sym.nss3.dll_PR_Unlock
test esi, esi
je 0x1009c9d1
mov eax, dword [edi + 0x18]
mov eax, dword [eax + 0xc]
mov byte [eax], 0
xor ebx, ebx
mov eax, dword [edi + 0x4c]
mov dword [ebp - 0x8c], eax
mov eax, dword [0x101de1f0]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_TlsGetValue]
sub esp, 4
mov dword [ebp - 0x90], eax
test eax, eax
je 0x1009cc22
mov esi, dword [ebp - 0x8c]
lea eax, [esi + 0x1c]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_EnterCriticalSection]
sub esp, 4
mov eax, dword [ebp - 0x90]
mov dword [esi + 8], eax
cmp dword [edi + 0x3c], 1
jne 0x1009c99d
cmp dword [0x101de200], 0
je 0x1009ccd0
call dword [sym.imp.winmm.dll_timeGetTime]
mov dword [edi + 0x38], eax
mov dword [edi + 0x3c], 2
mov dword [edi + 0x54], 0
mov eax, dword [edi + 0x50]
mov dword [esp], eax
call sym.nss3.dll_PR_NotifyAllCondVar
mov eax, dword [edi + 0x4c]
mov dword [esp], eax
call sym.nss3.dll_PR_Unlock
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.1014dc80
mov eax, ebx
add esp, 0x98
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, dword [ebp - 0x18]
mov dword [edi + 0x20], ecx
mov eax, dword [edi + 0x18]
test cl, 1
jne 0x1009cabf
xor ebx, ebx
test eax, eax
je 0x1009c934
mov esi, dword [eax + 0x24]
test esi, esi
je 0x1009ca83
mov eax, dword [esi]
mov dword [ebp - 0x8c], eax
test eax, eax
je 0x1009ca47
mov eax, dword [0x101de1f0]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_TlsGetValue]
sub esp, 4
mov dword [ebp - 0x94], eax
test eax, eax
je 0x1009cc6f
mov eax, dword [ebp - 0x8c]
add eax, 0x1c
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_EnterCriticalSection]
sub esp, 4
mov eax, dword [ebp - 0x94]
mov ecx, dword [ebp - 0x8c]
mov dword [ecx + 8], eax
mov eax, dword [esi + 4]
test eax, eax
je 0x1009ca75
mov dword [ebp - 0x8c], eax
mov eax, dword [ebp - 0x90]
mov ecx, dword [eax + 0x36]
call dword [section..00cfg]
mov eax, dword [ebp - 0x8c]
mov dword [esp], eax
call ecx
mov dword [esi + 4], 0
mov eax, dword [esi]
test eax, eax
je 0x1009ca83
mov dword [esp], eax
call sym.nss3.dll_PR_Unlock
mov eax, dword [edi + 0x18]
mov eax, dword [eax + 0xc]
cmp byte [eax], 0
je 0x1009caa9
mov byte [eax], 0
mov eax, dword [edi + 0x18]
mov ecx, dword [eax + 0x28]
mov dword [esp + 4], eax
mov dword [esp], ecx
call fcn.100a5910
mov eax, dword [edi + 0x18]
mov eax, dword [eax + 0xc]
mov byte [eax], 0
mov eax, dword [edi + 0x18]
mov eax, dword [eax + 0x30]
mov dword [esp], eax
call fcn.1009eca0
jmp 0x1009c934
mov ebx, dword [eax + 0x24]
test ebx, ebx
je 0x1009cb72
mov esi, dword [ebx]
test esi, esi
je 0x1009cb07
mov eax, dword [0x101de1f0]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_TlsGetValue]
sub esp, 4
mov dword [ebp - 0x8c], eax
test eax, eax
je 0x1009cc54
lea eax, [esi + 0x1c]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_EnterCriticalSection]
sub esp, 4
mov eax, dword [ebp - 0x8c]
mov dword [esi + 8], eax
mov esi, dword [ebx + 4]
test esi, esi
je 0x1009cb57
mov eax, dword [ebp - 0x90]
mov ecx, dword [eax + 0x3e]
call dword [section..00cfg]
lea eax, [ebp - 0x88]
mov dword [esp + 4], eax
mov dword [esp], esi
call ecx
test eax, eax
je 0x1009cb4e
mov eax, dword [ebp - 0x90]
mov ecx, dword [eax + 0x36]
mov esi, dword [ebx + 4]
call dword [section..00cfg]
mov dword [esp], esi
call ecx
mov dword [ebx + 4], 0
cmp dword [ebx + 4], 0
sete cl
jmp 0x1009cb59
mov cl, 1
mov eax, dword [ebx]
test eax, eax
je 0x1009cb6b
mov dword [esp], eax
mov ebx, ecx
call sym.nss3.dll_PR_Unlock
mov ecx, ebx
test cl, cl
je 0x1009cbad
mov eax, dword [edi + 0x18]
mov ecx, dword [eax + 0x28]
mov dword [esp + 4], eax
mov dword [esp], ecx
call fcn.100a5910
mov eax, dword [edi + 0x18]
mov eax, dword [eax + 0x30]
mov dword [esp], eax
call fcn.1009eca0
mov dword [esp], edi
call fcn.100a7930
test eax, eax
je 0x1009cbad
mov eax, dword [edi + 0x18]
mov eax, dword [eax + 0xc]
mov byte [eax], 0
and byte [edi + 0x20], 0xfe
jmp 0x1009c932
xor ebx, ebx
inc ebx
jmp 0x1009c934
movaps xmm0, xmmword [0x1019c190]
movups xmmword [esp], xmm0
call fcn.10072140
mov esi, eax
jmp 0x1009c6ee
movaps xmm0, xmmword [0x1019c190]
movups xmmword [esp], xmm0
call fcn.10072140
jmp 0x1009c72c
movaps xmm0, xmmword [0x1019c190]
movups xmmword [esp], xmm0
call fcn.10072140
mov esi, eax
jmp 0x1009c7bf
movaps xmm0, xmmword [0x1019c190]
movups xmmword [esp], xmm0
call fcn.10072140
jmp 0x1009c815
movaps xmm0, xmmword [0x1019c190]
movups xmmword [esp], xmm0
call fcn.10072140
jmp 0x1009c8b0
movaps xmm0, xmmword [0x1019c190]
movups xmmword [esp], xmm0
call fcn.10072140
mov dword [ebp - 0x90], eax
jmp 0x1009c95c
movaps xmm0, xmmword [0x1019c190]
movups xmmword [esp], xmm0
call fcn.10072140
mov esi, eax
jmp 0x1009c8e0
movaps xmm0, xmmword [0x1019c190]
movups xmmword [esp], xmm0
call fcn.10072140
mov dword [ebp - 0x8c], eax
jmp 0x1009caef
movaps xmm0, xmmword [0x1019c190]
movups xmmword [esp], xmm0
call fcn.10072140
mov dword [ebp - 0x94], eax
jmp 0x1009ca23
call fcn.100745e0
jmp 0x1009c713
call fcn.100745f0
jmp 0x1009c75e
call fcn.100745f0
jmp 0x1009c74a
call fcn.100745e0
jmp 0x1009c7fc
call fcn.100745f0
jmp 0x1009c843
call fcn.100745e0
jmp 0x1009c897
call fcn.100745f0
jmp 0x1009c82f
call fcn.100745f0
jmp 0x1009c98d