Function at 0x100ac660
Capabilities:
Set thread local storage value

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x30
mov edi, dword [ebp + 8]
mov eax, dword [0x101b9014]
xor eax, ebp
mov dword [esp + 0x28], eax
test edi, edi
je 0x100aca2d
mov ecx, dword [edi + 0xc]
lea ebx, [ecx + 0x308]
mov byte [esp + 0xf], 0xff
movzx eax, byte [edi + 2]
cmp eax, 2
mov dword [esp + 4], ebx
je 0x100ac6cd
cmp eax, 1
jne 0x100ac713
lea edx, [ecx + 0x207]
mov eax, ebx
cmp edx, 0xfefe
ja 0x100ac776
add ecx, 0x307
je 0x100ac759
bsr ecx, ecx
xor ecx, 0x1f
jmp 0x100ac75e
mov eax, 0x20
mov ecx, 0x20
test ebx, ebx
je 0x100ac6e1
bsr ecx, ebx
xor ecx, 0x1f
sub eax, ecx
mov edx, 0x101a06b4
sub edx, ecx
movzx ecx, byte [edx]
mov edx, ebx
shr edx, cl
and edx, 7
mov ecx, dword [eax*4 + 0x101a06b8]
and ecx, ebx
lea eax, [edx + eax*8]
cmp ecx, 1
sbb eax, 0xffffffff
movzx eax, word [eax + eax + 0x101a702c]
jmp 0x100ac7cb
mov eax, 0x20
mov edx, 0x20
test ebx, ebx
je 0x100ac727
bsr edx, ebx
xor edx, 0x1f
mov ecx, 0x101a06b4
sub ecx, edx
movzx ecx, byte [ecx]
mov esi, ebx
shr esi, cl
sub eax, edx
and esi, 7
mov ecx, dword [eax*4 + 0x101a06b8]
and ecx, ebx
lea eax, [esi + eax*8]
cmp ecx, 1
sbb eax, 0xffffffff
movzx ecx, word [eax + eax + 0x101a702c]
cmp ebx, 0x41
jmp 0x100ac7ba
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, ebx
cmovb eax, edx
mov edx, 0x20
mov esi, 0x20
test eax, eax
je 0x100ac78a
bsr esi, eax
xor esi, 0x1f
mov ecx, 0x101a06b4
sub ecx, esi
movzx ecx, byte [ecx]
mov ebx, eax
shr ebx, cl
sub edx, esi
and ebx, 7
mov ecx, dword [edx*4 + 0x101a06b8]
and ecx, eax
lea edx, [ebx + edx*8]
cmp ecx, 1
sbb edx, 0xffffffff
movzx ecx, word [edx + edx + 0x101a702c]
cmp eax, 0x41
setae al
cmp cx, 0x76
setb dl
and dl, al
movzx eax, dl
or eax, ecx
movzx ebx, ax
shl ebx, 5
lea eax, [edi + ebx]
add eax, 0x48
mov dword [esp], eax
lea esi, [edi + 0x40]
push esi
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
jne 0x100ac7ef
mov ecx, esi
call fcn.100acf90
mov dword [esp + 8], esi
mov ecx, dword [esp]
mov eax, dword [ecx]
mov esi, dword [eax]
test esi, esi
je 0x100ac9ac
mov byte [esp + 0xf], 0
mov edx, dword [esi]
test edx, edx
je 0x100ac83c
add ebx, edi
mov ecx, dword [ebx + 0x54]
mov dword [esp], ecx
mov ebx, edx
bswap edx
mov ecx, edx
xor ecx, esi
cmp ecx, 0x1fffff
ja 0x100ac9f8
mov ecx, edx
and ecx, 0x1fc000
je 0x100ac9f8
prefetcht0 byte [edx]
jmp 0x100ac83e
xor edx, edx
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 [edi + 0x117c]
add ecx, dword [eax + 0xc]
mov eax, dword [edi + 0x1180]
mov dword [edi + 0x117c], ecx
cmp eax, ecx
cmova ecx, eax
mov dword [edi + 0x1180], ecx
push dword [esp + 8]
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov dword [esi], 0
mov byte [esi + 4], 0
lea eax, [esi + 0x78]
push 0x280
push 0
push eax
call fcn.10149430
add esp, 0xc
mov dword [esi + 0x2f8], edi
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov dword [esi + 0x2fc], eax
mov dword [esi + 0x300], 0
mov dword [esi + 0x304], 0
push 0x101bbd78
call dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
test al, al
jne 0x100ac8e0
mov ecx, 0x101bbd78
call fcn.100acf90
mov dword [esi + 0x304], 0
mov eax, dword [0x101bbd7c]
mov dword [0x101bbd7c], esi
mov dword [esi + 0x300], eax
test eax, eax
je 0x100ac905
mov dword [eax + 0x304], esi
push 0x101bbd78
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
xorps xmm0, xmm0
movups xmmword [esi + 0x48], xmm0
movups xmmword [esi + 0x38], xmm0
movups xmmword [esi + 0x28], xmm0
movups xmmword [esi + 0x18], xmm0
movups xmmword [esi + 8], xmm0
add edi, 0x48
mov eax, 0xf
jmp 0x100ac949
inc eax
add edi, 0x20
cmp eax, 0x5f
je 0x100ac975
mov dword [esi + eax*8], 0
mov byte [esi + eax*8 + 4], 0
movzx ecx, byte [eax + 0x101cd025]
mov byte [esi + eax*8 + 5], cl
movzx ecx, word [edi + 0xc]
mov word [esi + eax*8 + 6], cx
cmp dword [edi], 0
jne 0x100ac940
mov byte [esi + eax*8 + 5], 0
jmp 0x100ac940
push esi
push dword [0x101cd030]
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
mov eax, dword [0x101bd164]
mov ecx, dword fs:[0x2c]
mov eax, dword [ecx + eax*4]
mov dword [eax + 0x90], esi
mov ecx, dword [esp + 0x28]
xor ecx, ebp
call fcn.101465a3
mov eax, esi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
lea eax, [esp + 0xf]
push eax
push 0x4000
push dword [esp + 0xc]
push 2
push edi
call fcn.100ad100
test eax, eax
je 0x100aca26
mov esi, 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 0x100ac857
pcmpeqd xmm0, xmm0
movdqa xmmword [esp + 0x10], xmm0
lea esi, [esp + 0x10]
mov ecx, esi
push 0
push ebx
push str.first
call fcn.100690a0
push esi
call fcn.10012050
add esp, 4
mov ecx, dword [esp]
call fcn.100a9b60
xor esi, esi
jmp 0x100ac87a
int3