Function at 0x46d960
Capabilities:
Get thread local storage value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5a2640
mov eax, dword fs:[0]
push eax
sub esp, 0xd4
push ebx
push esi
push edi
mov eax, dword [0x60f074]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
mov dword [ebp - 0x2c], esi
xor ebx, ebx
mov dword [esi], vtable.MessageLoop.0
cmp dword [0x61a268], 1
mov dword [ebp - 0x18], ebx
jne 0x46da3d
cmp dword [0x61a250], 3
jg 0x46da3d
call fcn.0046fec0
push dword [eax]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
push ecx
lea edx, [ebp - 0x14]
mov dword [ebp - 0x14], eax
lea ecx, [ebp - 0x10]
mov dword [ebp - 0x10], esi
call fcn.004701e0
add esp, 4
test eax, eax
je 0x46d9fa
push eax
push ecx
push 0x7f
push str.f:my_lab_tabexplorerextab_masterlibrary_basemessage_loop.cpp
lea ecx, [ebp - 0xe0]
call fcn.0046bff0
lea ecx, [ebp - 0xe0]
call fcn.0046c520
cmp dword [0x61a268], 1
jne 0x46da3d
cmp dword [0x61a250], 3
jg 0x46da3d
cmp dword [esi + 0xb4], ebx
je 0x46da3d
push 3
push 0x81
push str.f:my_lab_tabexplorerextab_masterlibrary_basemessage_loop.cpp
lea ecx, [ebp - 0xe0]
call fcn.0046c100
mov edx, str.Check_failed:__state_.
lea ecx, [eax + 8]
call fcn.00403840
mov ebx, 1
test bl, 1
je 0x46da50
lea ecx, [ebp - 0xe0]
and ebx, 0xfffffffe
call fcn.0046c520
xor edi, edi
mov ecx, esi
call fcn.0046f110
mov ecx, esi
call fcn.0046efe0
mov ecx, esi
call fcn.0046f110
test al, al
je 0x46da71
inc edi
cmp edi, 0x64
jl 0x46da52
cmp dword [0x61a268], 1
jne 0x46dade
cmp dword [0x61a250], 3
jg 0x46dade
test al, al
je 0x46dade
sub esp, 8
mov dword [ebp - 0xe0], 3
lea ecx, [ebp - 0xd8]
or ebx, 2
call fcn.0040bae0
mov dword [ebp - 0x3c], str.f:my_lab_tabexplorerextab_masterlibrary_basemessage_loop.cpp
mov dword [ebp - 0x38], 0x93
call dword [sym.imp.KERNEL32.dll_GetLastError]
push 0x93
push str.f:my_lab_tabexplorerextab_masterlibrary_basemessage_loop.cpp
lea ecx, [ebp - 0xe0]
mov dword [ebp - 0x34], eax
call fcn.0046c190
mov edx, str.Check_failed:__did_work.
lea ecx, [ebp - 0xd8]
call fcn.00403840
test bl, 2
je 0x46daf1
lea ecx, [ebp - 0xe0]
and ebx, 0xfffffffd
call fcn.0046c520
lea edi, [esi + 0x50]
lea eax, [ebp - 0x10]
mov dword [ebp - 0x18], edi
push eax
mov ecx, edi
call fcn.0046b290
mov ecx, dword [eax]
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x28], ecx
test ecx, ecx
je 0x46db17
mov eax, 1
lock xadd dword [ecx], eax
mov ecx, dword [ebp - 0x10]
mov dword [ebp - 0x24], edi
test ecx, ecx
je 0x46db3c
or eax, 0xffffffff
lock xadd dword [ecx], eax
sub eax, 1
jne 0x46db3c
test ecx, ecx
je 0x46db3c
push 8
push ecx
call fcn.0055053d
add esp, 8
mov ecx, dword [ebp - 0x18]
xor edi, edi
mov dword [ebp - 0x20], edi
cmp dword [ecx + 0x14], edi
jne 0x46db4e
or eax, 0xffffffff
jmp 0x46db57
mov eax, dword [ecx + 8]
sub eax, dword [ecx + 4]
sar eax, 2
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x1c], eax
call fcn.00413860
mov esi, dword [ebp - 0x14]
inc dword [eax + 0x10]
nop dword [eax + eax]
test esi, esi
je 0x46dbc2
test bl, 4
je 0x46db87
lea ecx, [ebp - 0xe0]
and ebx, 0xfffffffb
call fcn.0046c520
cmp byte [esi + 5], 0
je 0x46dbc2
lea ecx, [ebp - 0x28]
call fcn.00413860
mov ecx, dword [ebp - 0x10]
mov edx, dword [eax + 4]
mov eax, dword [eax + 8]
sub eax, edx
sar eax, 2
cmp eax, ecx
cmovb ecx, eax
cmp edi, ecx
jae 0x46dbc2
nop dword [eax]
cmp dword [edx + edi*4], 0
jne 0x46e065
inc edi
mov dword [ebp - 0x20], edi
cmp edi, ecx
jb 0x46dbb0
mov esi, dword [ebp - 0x2c]
mov dword [ebp - 4], 0
mov edi, dword [ebp - 0x14]
test edi, edi
je 0x46dc21
test bl, 8
je 0x46dbe3
lea ecx, [ebp - 0xe0]
call fcn.0046c520
cmp byte [edi + 5], 0
je 0x46dc06
lea ecx, [ebp - 0x28]
call fcn.00413860
add dword [eax + 0x10], 0xffffffff
jne 0x46dc06
lea ecx, [ebp - 0x28]
call fcn.00413860
mov ecx, eax
call fcn.004137e0
test edi, edi
je 0x46dc21
or eax, 0xffffffff
lock xadd dword [edi], eax
sub eax, 1
jne 0x46dc21
push 8
push edi
call fcn.0055053d
add esp, 8
mov dword [ebp - 4], 0xffffffff
mov ecx, dword [esi + 0xe8]
mov eax, dword [ecx]
call dword [eax + 0x30]
mov edx, dword [esi + 0xe8]
test edx, edx
je 0x46dc58
lea edi, [edx + 4]
or eax, 0xffffffff
lock xadd dword [edi], eax
sub eax, 1
jne 0x46dc58
xor ecx, ecx
test edi, edi
cmovne ecx, edx
mov eax, dword [ecx]
call dword [eax + 0x28]
mov dword [esi + 0xe8], 0
call fcn.0046fec0
xor edx, edx
mov ecx, eax
call fcn.00486b80
mov eax, dword [esi + 0xc0]
or eax, dword [esi + 0xc4]
je 0x46dca9
cmp byte [0x61a271], 0
je 0x46dc95
push 1
call dword [sym.imp.WINMM.dll_timeEndPeriod]
dec dword [0x61a288]
mov dword [esi + 0xc0], 0
mov dword [esi + 0xc4], 0
mov dword [ebp - 4], 1
mov edx, dword [esi + 0xe8]
test edx, edx
je 0x46dcd5
lea edi, [edx + 4]
or eax, 0xffffffff
lock xadd dword [edi], eax
sub eax, 1
jne 0x46dcd5
xor ecx, ecx
test edi, edi
cmovne ecx, edx
mov eax, dword [ecx]
call dword [eax + 0x28]
lea ecx, [esi + 0xd0]
call fcn.00413550
lea eax, [esi + 0x9c]
mov dword [ebp - 4], 0xffffffff
push eax
call dword [sym.imp.KERNEL32.dll_DeleteCriticalSection]
mov ecx, dword [esi + 0x98]
test ecx, ecx
je 0x46dd57
nop
mov eax, dword [esi + 0x94]
dec eax
add eax, ecx
mov ecx, dword [esi + 0x90]
dec ecx
and ecx, eax
mov eax, dword [esi + 0x8c]
mov eax, dword [eax + ecx*4]
mov ecx, dword [eax]
test ecx, ecx
je 0x46dd3a
lea edx, [ecx + 4]
or eax, 0xffffffff
lock xadd dword [edx], eax
sub eax, 1
jne 0x46dd3a
test edx, edx
je 0x46dd3a
mov eax, dword [ecx]
push 1
call dword [eax]
add dword [esi + 0x98], 0xffffffff
jne 0x46dd4d
mov dword [esi + 0x94], 0
mov ecx, dword [esi + 0x98]
test ecx, ecx
jne 0x46dd00
mov edi, dword [esi + 0x90]
test edi, edi
je 0x46dd7e
mov eax, dword [esi + 0x8c]
dec edi
mov eax, dword [eax + edi*4]
test eax, eax
je 0x46dd7a
push 0x20
push eax
call fcn.0055053d
add esp, 8
test edi, edi
jne 0x46dd61
mov ecx, dword [esi + 0x8c]
test ecx, ecx
je 0x46ddbd
mov eax, dword [esi + 0x90]
lea edx, [eax*4]
cmp edx, 0x1000
jb 0x46ddb3
mov edi, dword [ecx - 4]
add edx, 0x23
sub ecx, edi
lea eax, [ecx - 4]
cmp eax, 0x1f
ja 0x46e089
mov ecx, edi
push edx
push ecx
call fcn.0055053d
add esp, 8
mov dword [esi + 0x90], 0
mov dword [esi + 0x8c], 0
push 8
push dword [esi + 0x88]
call fcn.0055053d
mov dword [esi + 0x88], 0
add esp, 8
mov ecx, dword [esi + 0x80]
cmp ecx, 0x10
jb 0x46de22
mov eax, dword [esi + 0x6c]
inc ecx
cmp ecx, 0x1000
jb 0x46de18
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x46e089
mov eax, edx
push ecx
push eax
call fcn.0055053d
add esp, 8
mov dword [esi + 0x7c], 0
mov dword [esi + 0x80], 0xf
mov byte [esi + 0x6c], 0
lea ecx, [esi + 0x50]
call fcn.00413550
mov dword [ebp - 4], 4
mov ecx, dword [esi + 0x4c]
test ecx, ecx
je 0x46de66
lea edx, [ecx + 4]
or eax, 0xffffffff
lock xadd dword [edx], eax
sub eax, 1
jne 0x46de66
test edx, edx
je 0x46de66
mov eax, dword [ecx]
push 1
call dword [eax]
mov ecx, dword [esi + 0x48]
test ecx, ecx
je 0x46deb5
nop dword [eax]
mov eax, dword [esi + 0x44]
dec eax
add ecx, eax
mov eax, dword [esi + 0x40]
dec eax
and ecx, eax
mov eax, dword [esi + 0x3c]
mov eax, dword [eax + ecx*4]
mov ecx, dword [eax]
test ecx, ecx
je 0x46dea1
lea edx, [ecx + 4]
or eax, 0xffffffff
lock xadd dword [edx], eax
sub eax, 1
jne 0x46dea1
test edx, edx
je 0x46dea1
mov eax, dword [ecx]
push 1
call dword [eax]
add dword [esi + 0x48], 0xffffffff
jne 0x46deae
mov dword [esi + 0x44], 0
mov ecx, dword [esi + 0x48]
test ecx, ecx
jne 0x46de70
mov edi, dword [esi + 0x40]
test edi, edi
je 0x46deda
nop dword [eax]
mov eax, dword [esi + 0x3c]
dec edi
mov eax, dword [eax + edi*4]
test eax, eax
je 0x46ded6
push 0x20
push eax
call fcn.0055053d
add esp, 8
test edi, edi
jne 0x46dec0
mov eax, dword [esi + 0x3c]
test eax, eax
je 0x46df0f
mov ecx, dword [esi + 0x40]
shl ecx, 2
cmp ecx, 0x1000
jb 0x46df05
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x46e089
mov eax, edx
push ecx
push eax
call fcn.0055053d
add esp, 8
mov dword [esi + 0x40], 0
mov dword [esi + 0x3c], 0
push 8
push dword [esi + 0x38]
call fcn.0055053d
mov dword [esi + 0x38], 0
add esp, 8
mov ecx, dword [esi + 0x1c]
test ecx, ecx
je 0x46df8c
mov edx, dword [esi + 0x20]
push ecx
call fcn.00470590
mov ecx, dword [esi + 0x24]
add esp, 4
mov eax, dword [esi + 0x1c]
sub ecx, eax
and ecx, 0xffffffe0
cmp ecx, 0x1000
jb 0x46df6d
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x46e089
mov eax, edx
push ecx
push eax
call fcn.0055053d
mov dword [esi + 0x1c], 0
add esp, 8
mov dword [esi + 0x20], 0
mov dword [esi + 0x24], 0
mov ecx, dword [esi + 0x18]
test ecx, ecx
je 0x46dfd8
mov eax, dword [esi + 0x14]
dec eax
add ecx, eax
mov eax, dword [esi + 0x10]
dec eax
and ecx, eax
mov eax, dword [esi + 0xc]
mov eax, dword [eax + ecx*4]
mov ecx, dword [eax]
test ecx, ecx
je 0x46dfc4
lea edx, [ecx + 4]
or eax, 0xffffffff
lock xadd dword [edx], eax
sub eax, 1
jne 0x46dfc4
test edx, edx
je 0x46dfc4
mov eax, dword [ecx]
push 1
call dword [eax]
add dword [esi + 0x18], 0xffffffff
jne 0x46dfd1
mov dword [esi + 0x14], 0
mov ecx, dword [esi + 0x18]
test ecx, ecx
jne 0x46df93
mov edi, dword [esi + 0x10]
test edi, edi
je 0x46dffa
nop
mov eax, dword [esi + 0xc]
dec edi
mov eax, dword [eax + edi*4]
test eax, eax
je 0x46dff6
push 0x20
push eax
call fcn.0055053d
add esp, 8
test edi, edi
jne 0x46dfe0
mov eax, dword [esi + 0xc]
test eax, eax
je 0x46e02b
mov ecx, dword [esi + 0x10]
shl ecx, 2
cmp ecx, 0x1000
jb 0x46e021
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x46e089
mov eax, edx
push ecx
push eax
call fcn.0055053d
add esp, 8
mov dword [esi + 0x10], 0
mov dword [esi + 0xc], 0
push 8
push dword [esi + 8]
call fcn.0055053d
mov dword [esi + 8], 0
add esp, 8
mov dword [esi], vtable.base::MessagePump::Delegate.0
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp edi, ecx
jae 0x46dbc2
mov eax, edi
mov ecx, dword [edx + eax*4]
lea edi, [eax + 1]
mov dword [ebp - 0x20], edi
test ecx, ecx
je 0x46dbc2
mov eax, dword [ecx]
call dword [eax]
jmp 0x46db70
call fcn.00572795
int3