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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x30
mov eax, dword [0x102519c8]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, ecx
push esi
mov dword [ebp - 0x30], eax
mov esi, dword [eax]
mov dword [ebp - 0x2c], esi
cmp esi, dword [eax + 4]
je 0x101245ad
push ebx
mov ebx, dword [sym.imp.KERNEL32.dll_TlsSetValue]
push edi
lea esp, [esp]
mov eax, dword [0x1025b450]
mov edi, dword [esi + 0x3c]
cmp eax, 0xffffffff
je 0x101242d6
cmp dword [0x1025b454], 0xffffffff
je 0x101242d6
push eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, eax
mov dword [ebp - 0x24], ecx
test edi, edi
je 0x101242a6
mov dword [ebp - 0x20], 0
test ecx, ecx
jne 0x101242dd
mov eax, dword [0x1025b458]
test eax, eax
je 0x101242dd
lea ecx, [ebp - 0x20]
push ecx
call eax
push eax
push dword [0x1025b450]
call ebx
push dword [ebp - 0x20]
push dword [0x1025b454]
call ebx
jmp 0x101242dd
test ecx, ecx
je 0x101242dd
cmp dword [0x1025b45c], 0
je 0x101242dd
push dword [0x1025b454]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
push eax
call dword [0x1025b45c]
neg eax
sbb eax, eax
inc eax
push eax
push dword [0x1025b450]
call ebx
jmp 0x101242dd
mov dword [ebp - 0x24], 0
mov eax, dword [esi + 0x30]
cmp eax, 0x90000
ja 0x1012438e
je 0x10124376
cmp eax, 0x40000
je 0x1012433b
cmp eax, 0x70000
jne 0x10124505
cmp dword [esi + 0x14], 8
mov eax, esi
jb 0x1012430d
mov eax, dword [esi]
push dword [esi + 0x38]
push eax
call fcn.100de920
add esp, 8
cmp dword [esi + 0x34], 0
je 0x10124505
cmp dword [esi + 0x14], 8
mov eax, esi
jb 0x1012432d
mov eax, dword [esi]
push eax
call fcn.100d9640
add esp, 4
jmp 0x10124505
cmp dword [esi + 0x38], 0
jne 0x10124354
cmp dword [esi + 0x14], 8
mov eax, esi
jb 0x1012434b
mov eax, dword [esi]
push eax
call fcn.100d9de0
add esp, 4
cmp dword [esi + 0x34], 0
je 0x10124505
cmp dword [esi + 0x14], 8
mov eax, esi
jb 0x10124368
mov eax, dword [esi]
push eax
call fcn.100d9640
add esp, 4
jmp 0x10124505
cmp dword [esi + 0x14], 8
mov eax, esi
jb 0x10124380
mov eax, dword [esi]
push dword [esi + 0x3c]
push eax
call fcn.100de5a0
jmp 0x10124502
cmp eax, 0xa0000
je 0x101244ef
cmp eax, 0xb0000
jne 0x10124505
push esi
lea ecx, [ebp - 0x1c]
call fcn.10005170
cmp dword [ebp - 8], 8
lea edx, [ebp - 0x1c]
mov ecx, dword [ebp - 0x1c]
jb 0x101243bb
mov edx, ecx
lea edi, [ebp - 0x1c]
jb 0x101243c2
mov edi, ecx
mov eax, dword [ebp - 0xc]
lea eax, [edi + eax*2]
lea edi, [ebp - 0x1c]
jb 0x101243cf
mov edi, ecx
mov ecx, eax
xor ebx, ebx
sub ecx, edi
inc ecx
shr ecx, 1
cmp eax, edi
sbb eax, eax
not eax
and eax, ecx
mov dword [ebp - 0x28], eax
je 0x1012440c
sub edx, edi
mov dword [ebp - 0x20], edx
mov esi, edx
lea esp, [esp]
movzx eax, word [edi]
push eax
call fcn.101fa095
inc ebx
mov word [esi + edi], ax
add esp, 4
lea edi, [edi + 2]
cmp ebx, dword [ebp - 0x28]
jne 0x101243f0
mov esi, dword [ebp - 0x2c]
cmp dword [ebp - 8], 8
lea ecx, [ebp - 0x1c]
mov dword [ebp - 0x20], ecx
jb 0x1012441e
mov ecx, dword [ebp - 0x1c]
mov dword [ebp - 0x20], ecx
mov eax, dword [ebp - 0xc]
cmp eax, 9
jb 0x1012444e
add eax, 0xfffffff8
lea edx, [ecx + eax*2]
mov eax, ecx
mov dword [ebp - 0x28], edx
mov ecx, edx
sub ecx, eax
sar ecx, 1
je 0x1012444e
lea esp, [esp]
cmp word [eax], 0x73
je 0x1012449f
add eax, 2
sub ecx, 1
jne 0x10124440
cmp dword [esi + 0x14], 8
mov eax, esi
jb 0x10124458
mov eax, dword [esi]
push 0
push 0
push 0
push eax
push str.taskbarunpin
push 0
call dword [0x102023f4]
lea ecx, [ebp - 0x1c]
call fcn.10005250
cmp dword [esi + 0x14], 8
mov eax, esi
jb 0x1012447e
mov eax, dword [esi]
push eax
call fcn.1000aa00
add esp, 4
test eax, eax
je 0x10124505
cmp dword [esi + 0x14], 8
mov eax, esi
jb 0x10124495
mov eax, dword [esi]
push 1
push eax
call fcn.100d9c10
jmp 0x10124502
test eax, eax
je 0x1012444e
mov edx, str.startmenu
mov ebx, eax
mov edi, 9
sub ebx, edx
mov cx, word [ebx + edx]
cmp cx, word [edx]
jne 0x101244e4
add edx, 2
sub edi, 1
jne 0x101244b1
sub eax, dword [ebp - 0x20]
sar eax, 1
cmp eax, 0xffffffff
je 0x1012444e
cmp dword [esi + 0x14], 8
mov eax, esi
jb 0x101244d6
mov eax, dword [esi]
push 0
push 0
push 0
push eax
push str.startunpin
jmp 0x10124464
mov edx, dword [ebp - 0x28]
add eax, 2
jmp 0x10124431
cmp dword [esi + 0x14], 8
mov eax, esi
jb 0x101244f9
mov eax, dword [esi]
push dword [esi + 0x3c]
push eax
call fcn.100deb00
add esp, 8
mov eax, dword [0x1025b450]
cmp eax, 0xffffffff
je 0x10124593
cmp dword [0x1025b454], 0xffffffff
je 0x10124593
mov ebx, dword [sym.imp.KERNEL32.dll_TlsGetValue]
push eax
call ebx
cmp dword [ebp - 0x24], 0
je 0x10124561
mov dword [ebp - 0x24], 0
test eax, eax
jne 0x10124593
mov eax, dword [0x1025b458]
test eax, eax
je 0x10124593
lea ecx, [ebp - 0x24]
push ecx
call eax
mov ebx, dword [sym.imp.KERNEL32.dll_TlsSetValue]
push eax
push dword [0x1025b450]
call ebx
push dword [ebp - 0x24]
push dword [0x1025b454]
call ebx
jmp 0x10124599
test eax, eax
je 0x10124593
cmp dword [0x1025b45c], 0
je 0x10124593
push dword [0x1025b454]
call ebx
push eax
call dword [0x1025b45c]
mov ebx, dword [sym.imp.KERNEL32.dll_TlsSetValue]
neg eax
sbb eax, eax
inc eax
push eax
push dword [0x1025b450]
call ebx
jmp 0x10124599
mov ebx, dword [sym.imp.KERNEL32.dll_TlsSetValue]
mov eax, dword [ebp - 0x30]
add esi, 0x44
mov dword [ebp - 0x2c], esi
cmp esi, dword [eax + 4]
jne 0x10124250
pop edi
pop ebx
mov ecx, dword [ebp - 4]
mov eax, 1
xor ecx, ebp
pop esi
call fcn.101f99c6
mov esp, ebp
pop ebp
ret