Function at 0x1c6d0b0
Capabilities:
Set thread local storage value

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x14
mov edi, dword [ebp + 8]
mov eax, dword [0x1cf151c]
xor eax, ebp
mov dword [ebp - 0x10], eax
test edi, edi
je 0x1c6d2f9
cmp dword [0x1d0b260], 0xe69e32f3
jne 0x1c6d2fc
mov ecx, dword [edi + 8]
lea esi, [ecx + 0x1c8]
mov byte [ebp - 0x11], 0xff
lea edx, [ecx - 0x7fe38]
mov eax, esi
cmp edx, 0xfff80101
jb 0x1c6d130
cmp byte [edi + 3], 0
mov eax, esi
jne 0x1c6d130
add ecx, 0x1c7
je 0x1c6d113
bsr ecx, ecx
xor ecx, 0x1f
jmp 0x1c6d118
mov ecx, 0x20
neg cl
mov edx, 1
shl edx, cl
mov eax, edx
shr eax, 1
lea eax, [eax + eax*4]
shr eax, 2
cmp eax, esi
cmovb eax, edx
mov dword [ebp - 0x20], esi
mov edx, 0x20
mov ecx, 0x20
test eax, eax
je 0x1c6d147
bsr ecx, eax
xor ecx, 0x1f
sub edx, ecx
mov cl, byte [edx + 0x1cdc994]
mov esi, eax
shr esi, cl
and esi, 3
and eax, dword [edx*4 + 0x1cdc9b8]
lea ecx, [esi + edx*4]
cmp eax, 1
sbb ecx, 0xffffffff
movzx esi, word [ecx + ecx + 0x1cdc888]
shl esi, 5
lea ebx, [edi + esi]
add ebx, 0x48
lea ecx, [edi + 0x40]
mov edi, 1
mov dword [ebp - 0x1c], 0
mov eax, dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
mov dword [ebp - 0x18], ecx
push ecx
call eax
test al, al
jne 0x1c6d1d3
mov edx, edi
mov eax, edi
test edi, edi
jle 0x1c6d1ac
pause
dec eax
jne 0x1c6d19d
mov eax, dword [ebp - 0x1c]
add eax, edx
mov ecx, dword [ebp - 0x18]
jmp 0x1c6d1b2
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x1c]
add edx, edx
cmp edx, 0x10
mov edi, 0x10
cmovge edx, edi
mov edi, edx
mov dword [ebp - 0x1c], eax
cmp eax, 0x40
mov eax, dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
jl 0x1c6d18e
call fcn.01c6da50
mov eax, dword [ebx]
mov edi, dword [eax]
test edi, edi
je 0x1c6d29e
mov byte [ebp - 0x11], 0
mov edx, dword [edi]
test edx, edx
je 0x1c6d215
mov ebx, dword [ebp + 8]
mov ecx, dword [ebx + esi + 0x54]
bswap edx
mov esi, edx
xor esi, edi
cmp esi, 0x1fffff
ja 0x1c6d2ed
mov esi, edx
and esi, 0x1fc000
je 0x1c6d2ed
prefetcht0 byte [edx]
jmp 0x1c6d21a
xor edx, edx
mov ebx, dword [ebp + 8]
mov dword [eax], edx
mov ecx, dword [eax + 0xc]
lea edx, [ecx + 2]
and edx, 0x3ffe
and ecx, 0xffffc001
or ecx, edx
mov dword [eax + 0xc], ecx
mov eax, dword [eax + 8]
mov ecx, dword [ebx + 0x8fc]
add ecx, dword [eax + 0xc]
mov eax, dword [ebx + 0x900]
mov dword [ebx + 0x8fc], ecx
cmp eax, ecx
cmovae ecx, eax
mov dword [ebx + 0x900], ecx
mov eax, dword [ebp - 0x18]
push eax
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov ecx, edi
push ebx
call fcn.01c6d310
push edi
push dword [0x1d1a300]
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
mov eax, dword [0x1d0dc5c]
mov ecx, dword fs:[0x2c]
mov eax, dword [ecx + eax*4]
mov dword [eax + 0x90], edi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.01caaec1
mov eax, edi
add esp, 0x14
pop esi
pop edi
pop ebx
pop ebp
ret
lea eax, [ebp - 0x11]
mov ecx, ebx
push eax
push 0x4000
push dword [ebp - 0x20]
push 2
mov ebx, dword [ebp + 8]
push ebx
call fcn.01c78ac0
test eax, eax
je 0x1c6d2f2
mov edi, eax
mov ecx, eax
and ecx, 0xffe00000
mov edx, eax
shr edx, 9
and edx, 0xfe0
lea eax, [edx + ecx]
movzx ecx, byte [edx + ecx + 0x101e]
and ecx, 0x3f
shl ecx, 5
sub eax, ecx
add eax, 0x1000
jmp 0x1c6d233
call fcn.01c609e0
xor edi, edi
jmp 0x1c6d256
int3
int3