Function at 0x100e2250
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x10124b88
mov eax, dword fs:[0]
push eax
sub esp, 0x10
push ebx
push esi
push edi
mov eax, dword [0x1016e750]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
test byte [0x10175108], 1
mov edi, dword [ebp + 0x10]
je 0x100e22f6
test edi, 0x10002
je 0x100e22f6
push edi
push dword [ebp + 0xc]
lea eax, [ebp + 8]
push str._denying_access_to__s:0x_x__SCM_SUPPORT_DENY_CHANGE_
push eax
call fcn.10044f30
add esp, 0x10
mov dword [ebp - 4], 0
mov ecx, 0x101530d4
mov edx, dword [eax]
call fcn.10043b30
mov dword [ebp - 4], 0xffffffff
or ecx, 0xffffffff
mov edx, dword [ebp + 8]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x100e22d8
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push 5
call dword [sym.imp.KERNEL32.dll_SetLastError]
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
call dword [sym.imp.KERNEL32.dll_GetLastError]
push dword [0x1016f5d0]
mov ebx, eax
mov dword [ebp + 0x10], ebx
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
cmp byte [0x1017045d], 0
mov dword [ebp - 0x14], eax
je 0x100e2324
test al, 1
je 0x100e2345
push ebx
call dword [sym.imp.KERNEL32.dll_SetLastError]
push edi
push dword [ebp + 0xc]
push dword [ebp + 8]
call dword [0x101728fc]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
or eax, 1
push eax
push dword [0x1016f5d0]
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
mov ebx, dword [ebp + 0xc]
mov eax, str.NULL
push edi
test ebx, ebx
cmovne eax, ebx
push eax
push dword [ebp + 8]
lea eax, [ebp + 0xc]
push str.OpenServiceWNext_0x_x___s__0x_x_
push eax
call fcn.10044f30
add esp, 0x14
mov dword [ebp - 4], 1
mov ecx, 0x101530d4
mov edx, dword [eax]
call fcn.10043b30
mov dword [ebp - 4], 0xffffffff
or eax, 0xffffffff
mov edx, dword [ebp + 0xc]
add edx, 0xfffffff0
lea ecx, [edx + 0xc]
lock xadd dword [ecx], eax
dec eax
test eax, eax
jg 0x100e23af
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
test byte [0x10175108], 2
je 0x100e2547
push ecx
mov ecx, dword [0x1017507c]
mov esi, esp
add ecx, 0xfffffff0
mov dword [ebp + 0xc], esp
call fcn.10024750
add eax, 0x10
mov dword [esi], eax
push ecx
mov ecx, esp
mov dword [ebp - 4], 2
push ebx
call fcn.10023fc0
mov dword [ebp - 4], 0xffffffff
call fcn.1003e6a0
add esp, 8
test eax, eax
jne 0x100e2547
push ecx
mov ecx, dword [0x1017507c]
mov esi, esp
add ecx, 0xfffffff0
mov dword [ebp + 0xc], esp
call fcn.10024750
add eax, 0x10
mov dword [esi], eax
push ecx
mov ecx, esp
mov dword [ebp - 4], 3
push ebx
call fcn.10023fc0
mov ecx, 0x10
mov dword [ebp - 4], 0xffffffff
call fcn.100e1250
add esp, 8
test eax, eax
jne 0x100e2482
push ecx
mov ecx, dword [0x1017507c]
mov esi, esp
add ecx, 0xfffffff0
mov dword [ebp + 0xc], esp
call fcn.10024750
add eax, 0x10
mov dword [esi], eax
push ecx
mov ecx, esp
mov dword [ebp - 4], 4
push ebx
call fcn.10023fc0
mov ecx, 1
mov dword [ebp - 4], 0xffffffff
call fcn.100e1250
add esp, 8
test eax, eax
je 0x100e2547
push ecx
mov ecx, dword [0x1017507c]
mov esi, esp
add ecx, 0xfffffff0
mov dword [ebp - 0x18], esp
call fcn.10024750
add eax, 0x10
mov dword [esi], eax
push ecx
mov ecx, esp
mov dword [ebp - 4], 5
push ebx
call fcn.10023fc0
lea ecx, [ebp + 0xc]
mov dword [ebp - 4], 0xffffffff
call fcn.1003e600
mov dword [ebp - 4], 6
lea eax, [ebp - 0x10]
push dword [ebp + 0xc]
push ebx
push str._Virtualizing_OpenServiceW:__s_____s
push eax
call fcn.10044f30
add esp, 0x18
mov byte [ebp - 4], 7
mov ecx, 0x101530d4
mov edx, dword [eax]
call fcn.10043b30
mov byte [ebp - 4], 6
or ebx, 0xffffffff
mov edx, dword [ebp - 0x10]
mov ecx, ebx
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x100e2509
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push dword [ebp + 0x10]
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov eax, dword [ebp + 8]
push edi
push dword [ebp + 0xc]
push eax
call dword [0x101728fc]
mov dword [ebp - 4], 0xffffffff
mov esi, eax
mov edi, dword [ebp + 0xc]
mov edx, ebx
add edi, 0xfffffff0
lea ecx, [edi + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x100e2558
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x100e2558
mov eax, dword [ebp + 8]
push edi
push ebx
push eax
call dword [0x101728fc]
mov esi, eax
or ebx, 0xffffffff
push esi
lea eax, [ebp - 0x10]
push str.Result0x_x
push eax
call fcn.10044f30
add esp, 0xc
mov dword [ebp - 4], 8
mov ecx, 0x101530d4
mov edx, dword [eax]
call fcn.10043b30
mov dword [ebp - 4], 0xffffffff
mov edx, dword [ebp - 0x10]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ebx
dec ebx
test ebx, ebx
jg 0x100e259e
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push dword [ebp - 0x14]
push dword [0x1016f5d0]
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
push dword [ebp + 0x10]
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc