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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xf0
mov eax, dword [0x102519c8]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0x20]
push ebx
push esi
mov dword [ebp - 0x50], eax
mov eax, dword [ebp + 0x24]
push edi
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0x4c], eax
mov dword [ebp - 0x5c], 0
mov dword [ebp - 0x58], 0
mov dword [ebp - 0x54], 0
mov dword [ebp - 0x44], 0
mov dword [ebp - 0x40], 0
mov dword [ebp - 0x3c], 0
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x7c], 0
mov dword [ebp - 0x78], 0
mov dword [ebp - 0x74], 0xffffffff
call fcn.10002d70
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
add eax, 0x10
lea ecx, [ebp - 0x2c]
push str.SOFTWAREMicrosoftInternet_ExplorerActiveX_Compatibility_
mov dword [ebp - 0x2c], eax
call fcn.10023e80
test al, al
jne 0x1002792d
push 0x3b
push str.SOFTWAREMicrosoftInternet_ExplorerActiveX_Compatibility_
lea ecx, [ebp - 0x2c]
call fcn.10003740
cmp dword [ebp + 0x1c], 8
lea eax, [ebp + 8]
jb 0x10027939
mov eax, dword [ebp + 8]
push eax
lea eax, [ebp - 0x2c]
push eax
lea eax, [ebp - 0x20]
push eax
call fcn.10007f40
add esp, 0xc
lea ecx, [ebp - 0x7c]
mov esi, dword [eax]
call fcn.10008220
push 0x20219
push esi
lea eax, [ebp - 0x7c]
push reloc.OLEAUT32.dll_SysReAllocString
push eax
mov ecx, eax
call fcn.1000a260
mov edx, dword [ebp - 0x20]
test eax, eax
sete bl
or edi, 0xffffffff
add edx, 0xfffffff0
mov eax, edi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x1002798c
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
test bl, bl
je 0x10027a6e
lea eax, [ebp - 0x20]
mov dword [ebp - 0x38], 4
push eax
lea eax, [ebp - 0x24]
mov dword [ebp - 0x24], 0
push eax
lea eax, [ebp - 0x38]
mov dword [ebp - 0x20], 4
push eax
push str.Compatibility_Flags
lea ecx, [ebp - 0x7c]
call fcn.100263b0
test dword [ebp - 0x24], 0x400
je 0x10027a6e
push 0x20219
push 1
push ecx
mov esi, esp
call fcn.10002d70
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
add eax, 0x10
mov ecx, esi
push 0x10202940
mov dword [esi], eax
call fcn.10023e80
test al, al
jne 0x10027a08
push 0
push 0x10202940
mov ecx, esi
call fcn.10003740
cmp dword [ebp + 0x1c], 8
lea ecx, [ebp + 8]
jb 0x10027a14
mov ecx, dword [ebp + 8]
push ecx
mov eax, esp
push ecx
lea ecx, [ebp - 0x2c]
push ecx
push eax
call fcn.10007f40
add esp, 0xc
lea eax, [ebp - 0x44]
push reloc.OLEAUT32.dll_SysReAllocString
push eax
lea eax, [ebp - 0x30]
push eax
call fcn.100da240
mov ecx, dword [ebp - 0x34]
add esp, 0x1c
push dword [eax]
call fcn.100d06f0
mov edx, dword [ebp - 0x30]
test eax, eax
mov eax, edi
sete bl
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x10027a63
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
test bl, bl
je 0x10027a6e
mov dword [ebp - 0x28], 1
mov dword [ebp - 0x6c], 0
mov dword [ebp - 0x68], 0
mov dword [ebp - 0x64], 0xffffffff
call fcn.10002d70
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
add eax, 0x10
lea ecx, [ebp - 0x24]
push str.SoftwareMicrosoftWindowsCurrentVersionExtSettings_
mov dword [ebp - 0x24], eax
call fcn.10023e80
test al, al
jne 0x10027ab5
push 0x37
push str.SoftwareMicrosoftWindowsCurrentVersionExtSettings_
lea ecx, [ebp - 0x24]
call fcn.10003740
cmp dword [ebp + 0x1c], 8
lea eax, [ebp + 8]
jb 0x10027ac1
mov eax, dword [ebp + 8]
push eax
lea eax, [ebp - 0x24]
push eax
lea eax, [ebp - 0x30]
push eax
call fcn.10007f40
add esp, 0xc
lea ecx, [ebp - 0x6c]
mov esi, dword [eax]
call fcn.10008220
push 0x20219
push esi
lea eax, [ebp - 0x6c]
push SysReAllocString
push eax
mov ecx, eax
call fcn.1000a260
mov edx, dword [ebp - 0x30]
test eax, eax
mov eax, edi
sete bl
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x10027b11
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
test bl, bl
je 0x10027bf0
lea eax, [ebp - 0x30]
mov dword [ebp - 0x38], 4
push eax
lea eax, [ebp - 0x20]
mov dword [ebp - 0x20], 0
push eax
lea eax, [ebp - 0x38]
mov dword [ebp - 0x30], 4
push eax
push str.Flags
lea ecx, [ebp - 0x6c]
call fcn.100263b0
test byte [ebp - 0x20], 1
je 0x10027bf0
push 0x20219
push 1
push ecx
mov esi, esp
call fcn.10002d70
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
add eax, 0x10
mov ecx, esi
push 0x10202940
mov dword [esi], eax
call fcn.10023e80
test al, al
jne 0x10027b8a
push 0
push 0x10202940
mov ecx, esi
call fcn.10003740
cmp dword [ebp + 0x1c], 8
lea ecx, [ebp + 8]
jb 0x10027b96
mov ecx, dword [ebp + 8]
push ecx
mov eax, esp
push ecx
lea ecx, [ebp - 0x24]
push ecx
push eax
call fcn.10007f40
add esp, 0xc
lea eax, [ebp - 0x44]
push SysReAllocString
push eax
lea eax, [ebp - 0x48]
push eax
call fcn.100da240
mov ecx, dword [ebp - 0x34]
add esp, 0x1c
push dword [eax]
call fcn.100d06f0
mov edx, dword [ebp - 0x48]
test eax, eax
mov eax, edi
sete bl
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x10027be5
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
test bl, bl
je 0x10027bf0
mov dword [ebp - 0x28], 1
push dword [ebp - 0x4c]
mov ecx, dword [ebp - 0x34]
call fcn.10026330
cmp dword [ebp + 0x1c], 8
lea ecx, [ebp + 8]
jb 0x10027c07
mov ecx, dword [ebp + 8]
push eax
push ecx
lea ecx, [ebp - 0x90]
call fcn.1009d050
cmp dword [ebp - 0x8c], 0
je 0x10027cc4
cmp dword [ebp - 0x88], 0
je 0x10027cc4
mov eax, dword [0x1025b450]
cmp eax, 0xffffffff
je 0x10027c80
cmp dword [0x1025b454], 0xffffffff
je 0x10027c80
push eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov edi, eax
mov dword [ebp - 0x20], 0
test edi, edi
jne 0x10027c82
mov eax, dword [0x1025b458]
test eax, eax
je 0x10027c82
lea ecx, [ebp - 0x20]
push ecx
call eax
mov esi, dword [sym.imp.KERNEL32.dll_TlsSetValue]
push eax
push dword [0x1025b450]
call esi
push dword [ebp - 0x20]
push dword [0x1025b454]
call esi
jmp 0x10027c82
xor edi, edi
mov eax, dword [ebp - 0x80]
add eax, 0xfffffff0
push eax
call fcn.10002a60
lea esi, [eax + 0x10]
push esi
call fcn.1000aa00
add esp, 8
mov ebx, eax
add esi, 0xfffffff0
or ecx, 0xffffffff
lock xadd dword [esi + 0xc], ecx
dec ecx
test ecx, ecx
jg 0x10027cb4
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
push edi
mov ecx, 0x1025b450
call fcn.10008cd0
or edi, 0xffffffff
jmp 0x10027cf5
mov eax, dword [ebp - 0x80]
add eax, 0xfffffff0
push eax
call fcn.10002a60
lea esi, [eax + 0x10]
push esi
call fcn.1000aa00
mov ebx, eax
add esp, 8
add esi, 0xfffffff0
mov eax, edi
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x10027cf5
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
cmp dword [ebp - 0x28], 0
je 0x10027f8d
test ebx, ebx
je 0x10027f8d
lea ecx, [ebp - 0xf0]
call fcn.10020800
mov ebx, dword [ebp - 0x50]
lea eax, [ebp - 0x1c]
push ebx
push eax
call fcn.10007a20
mov edx, eax
add esp, 8
cmp dword [edx + 0x14], 8
jb 0x10027d2c
mov edx, dword [edx]
test edx, edx
jne 0x10027d34
xor ecx, ecx
jmp 0x10027d4f
mov ecx, edx
lea esi, [ecx + 2]
lea esp, [esp]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x10027d40
sub ecx, esi
sar ecx, 1
push ecx
push edx
lea ecx, [ebp - 0xf0]
call fcn.10003740
lea ecx, [ebp - 0x1c]
call fcn.10005250
lea eax, [ebx + 0x30]
push eax
lea eax, [ebp - 0x1c]
push eax
call fcn.10007a20
mov edx, eax
add esp, 8
cmp dword [edx + 0x14], 8
jb 0x10027d7e
mov edx, dword [edx]
test edx, edx
jne 0x10027d86
xor ecx, ecx
jmp 0x10027d9f
mov ecx, edx
lea esi, [ecx + 2]
jmp 0x10027d90
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x10027d90
sub ecx, esi
sar ecx, 1
push ecx
push edx
lea ecx, [ebp - 0xec]
call fcn.10003740
lea ecx, [ebp - 0x1c]
call fcn.10005250
lea eax, [ebx + 0x18]
push eax
lea eax, [ebp - 0x1c]
push eax
call fcn.10007a20
mov edx, eax
add esp, 8
cmp dword [edx + 0x14], 8
jb 0x10027dce
mov edx, dword [edx]
test edx, edx
jne 0x10027dd6
xor ecx, ecx
jmp 0x10027def
mov ecx, edx
lea esi, [ecx + 2]
jmp 0x10027de0
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x10027de0
sub ecx, esi
sar ecx, 1
push ecx
push edx
lea ecx, [ebp - 0xe8]
call fcn.10003740
lea ecx, [ebp - 0x1c]
call fcn.10005250
call fcn.10002d70
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
add eax, 0x10
lea ecx, [ebp - 0x28]
push 0x2735
mov dword [ebp - 0x28], eax
call fcn.10023e80
test al, al
jne 0x10027e4d
mov ecx, 0x2735
lea edx, [ecx + 2]
nop
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x10027e30
sub ecx, edx
sar ecx, 1
push ecx
push 0x2735
lea ecx, [ebp - 0x28]
call fcn.10003740
lea eax, [ebp - 0x28]
push eax
lea ecx, [ebp - 0xe4]
call fcn.10002790
mov edx, dword [ebp - 0x28]
mov eax, edi
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x10027e76
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
movsx eax, byte [ebx + 0x49]
lea ecx, [ebp - 0xdc]
mov dword [ebp - 0xe0], eax
lea eax, [ebp - 0x5c]
push eax
call fcn.10021770
lea eax, [ebp - 0x44]
push eax
lea ecx, [ebp - 0xd0]
call fcn.10021770
lea eax, [ebx + 0x80]
mov dword [ebp - 0xb8], 4
push eax
lea eax, [ebp - 0x1c]
push eax
call fcn.10007a20
mov edx, eax
add esp, 8
cmp dword [edx + 0x14], 8
jb 0x10027ec5
mov edx, dword [edx]
test edx, edx
jne 0x10027ecd
xor ecx, ecx
jmp 0x10027ee1
mov ecx, edx
lea esi, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x10027ed2
sub ecx, esi
sar ecx, 1
push ecx
push edx
lea ecx, [ebp - 0xb4]
call fcn.10003740
lea ecx, [ebp - 0x1c]
call fcn.10005250
mov eax, dword [ebx + 0x64]
mov dword [ebp - 0xb0], eax
lea eax, [ebx + 0x68]
push eax
lea eax, [ebp - 0x1c]
push eax
call fcn.10007a20
mov edx, eax
add esp, 8
cmp dword [edx + 0x14], 8
jb 0x10027f19
mov edx, dword [edx]
test edx, edx
jne 0x10027f21
xor ecx, ecx
jmp 0x10027f35
mov ecx, edx
lea esi, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x10027f26
sub ecx, esi
sar ecx, 1
push ecx
push edx
lea ecx, [ebp - 0xac]
call fcn.10003740
lea ecx, [ebp - 0x1c]
call fcn.10005250
cmp dword [ebp + 0x1c], 8
lea esi, [ebp + 8]
jb 0x10027f56
mov esi, dword [ebp + 8]
lea eax, [ebp - 0xf0]
push eax
sub esp, 0xc
lea eax, [ebp - 0x44]
mov ecx, esp
push eax
call fcn.10020590
sub esp, 0xc
lea eax, [ebp - 0x5c]
mov ecx, esp
push eax
call fcn.10020590
mov ecx, dword [ebp - 0x34]
push esi
call fcn.10023260
lea ecx, [ebp - 0xf0]
call fcn.100210e0
lea ecx, [ebp - 0x90]
call fcn.1009d0f0
mov edx, dword [ebp - 0x24]
mov eax, edi
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x10027fb2
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea ecx, [ebp - 0x6c]
call fcn.10008220
mov edx, dword [ebp - 0x2c]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], edi
dec edi
test edi, edi
jg 0x10027fd2
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea ecx, [ebp - 0x7c]
call fcn.10008220
lea ecx, [ebp - 0x44]
call fcn.1002a3c0
lea ecx, [ebp - 0x5c]
call fcn.1002a3c0
mov edx, dword [ebp + 0x1c]
cmp edx, 8
jb 0x10028020
mov ecx, dword [ebp + 8]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x10028016
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10028033
push edx
push ecx
call sub.msvcrt.dll_void___cdecl_operator_delete_void__
add esp, 8
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.101f99c6
mov esp, ebp
pop ebp
ret 0x20
call fcn.101e6c40
int3