Function at 0x59125646
Capabilities:
Get thread local storage value

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
mov eax, dword [ebp + 0xc]
sub esp, 0x18
dec eax
push ebx
push esi
push edi
mov edi, dword [ebp + 0x14]
mov esi, ecx
mov ecx, dword [ebp + 8]
je 0x591256b6
dec eax
jne 0x591256a4
mov eax, dword [ecx + 0xbc]
cmp eax, 0x25
jg 0x59125fe0
je 0x5912fa3c
cmp eax, 0x11
jle 0x59126c7d
cmp eax, 0x12
je 0x59133bf3
cmp eax, 0x16
je 0x591265a3
cmp eax, 0x1d
je 0x59127fff
cmp eax, 0x24
je 0x591367ed
mov eax, dword [esi + 8]
test eax, eax
jne 0x59125bae
pop edi
pop esi
pop ebx
leave
ret 0x10
mov eax, dword [ecx + 0xbc]
sub eax, 0
je 0x5913e09c
sub eax, 0x12
je 0x59133baa
dec eax
dec eax
jne 0x591256a4
cmp word [edi + 4], 0xffff
mov ecx, esi
je 0x5913c671
call fcn.59125940
test al, al
je 0x591256a4
or byte [esi + 0x38], 4
push 3
mov eax, dword [esi]
push esi
mov ecx, esi
call dword [eax + 0x60]
jmp 0x591256a4
mov edi, dword [eax]
xor ebx, ebx
inc ebx
cmp edi, ebx
jb 0x591256af
push dword [ebp + 0x14]
mov eax, dword [esi + 8]
push dword [ebp + 0x10]
mov ecx, dword [eax + ebx*4]
push dword [ebp + 0xc]
mov eax, dword [ecx]
push dword [ebp + 8]
push esi
call dword [eax + 0xc]
inc ebx
cmp ebx, edi
ja 0x591256af
jmp 0x59125bbb
cmp eax, 0x2e
jle 0x59126017
mov ecx, eax
sub ecx, 0x31
je 0x5912d759
sub ecx, 3
je 0x5916a852
sub ecx, 0xb
je 0x5914219f
dec ecx
jne 0x591256a4
push 1
mov ecx, esi
call sym.MSNCore.dll_public:_void___thiscall_DirectUI::Element::EvaluateBindings_bool_
jmp 0x591256a4
je 0x5912ea4a
sub eax, 0x26
je 0x5912fb5c
sub eax, 3
je 0x5913f617
dec eax
dec eax
je 0x59126e60
dec eax
je 0x5912ba86
dec eax
jne 0x591256a4
mov ecx, esi
call fcn.59126c55
test al, al
je 0x5912605b
push esi
push 0x800d
call sym.MSNCore.dll_void___stdcall_DirectUI::NotifyAccessibilityEvent_unsigned_long_int__class_DirectUI::Element__
mov ecx, esi
call fcn.59125940
test al, al
je 0x591256a4
mov eax, dword [esi]
or byte [esi + 0x38], 4
push esi
mov ecx, esi
call dword [eax + 0x5c]
jmp 0x591256a4
xor edi, edi
mov ecx, esi
mov dword [ebp - 0x14], edi
mov byte [ebp - 1], 0
xor bl, bl
call fcn.59123680
test al, al
jne 0x5912851d
mov ecx, esi
call fcn.59123653
test al, al
jne 0x591284ab
push 2
push dword [sym.MSNCore.dll_struct_DirectUI::PropertyInfo__DirectUI::Element::BackgroundProp]
mov ecx, esi
call sym.MSNCore.dll_public:_class_DirectUI::Value____thiscall_DirectUI::Element::GetValue_struct_DirectUI::PropertyInfo_const___int_const
mov edi, eax
movzx edx, word [edi + 4]
cmp dx, 9
jne 0x591265f4
mov al, byte [edi + 0xc]
and al, 0xf
cmp al, 2
jne 0x5912851d
cmp dx, 0xb
je 0x5912ba38
cmp dx, 0x10
je 0x5912851d
mov al, byte [ebp - 1]
neg bl
push 0x600
sbb ebx, ebx
and ebx, 0x400
neg al
sbb eax, eax
and eax, 0x200
or ebx, eax
push ebx
push dword [esi + 4]
call sym.MSNCore.dll_SetGadgetStyle
test edi, edi
je 0x59126639
mov ecx, edi
call fcn.5911cf70
mov ecx, dword [ebp - 0x14]
test ecx, ecx
je 0x591256a4
call fcn.5911cf70
jmp 0x591256a4
cmp ecx, 3
jne 0x591284d1
jmp 0x591284cd
call sym.MSNCore.dll_void___stdcall_DirectUI::NotifyAccessibilityEvent_unsigned_long_int__class_DirectUI::Element__
jmp 0x591256a4
je 0x591265a3
cmp eax, 7
je 0x5912cddd
cmp eax, 8
je 0x5912d759
cmp eax, 0xa
je 0x5913f3c5
jle 0x591256a4
cmp eax, 0xc
jle 0x591265a3
cmp eax, 0xe
jne 0x591256a4
mov al, byte [edi + 0xc]
neg al
push 2
sbb eax, eax
and eax, 2
push eax
push dword [esi + 4]
call sym.MSNCore.dll_SetGadgetStyle
mov ecx, esi
call fcn.59126c55
test al, al
je 0x591256a4
mov ecx, esi
call fcn.59126e06
cmp byte [edi + 0xc], 0
mov ebx, eax
push esi
je 0x5912e1d8
and ebx, 0xffff7fff
push 0x8002
call sym.MSNCore.dll_void___stdcall_DirectUI::NotifyAccessibilityEvent_unsigned_long_int__class_DirectUI::Element__
push ebx
mov ecx, esi
call fcn.59126e24
jmp 0x591256a4
mov ecx, dword [ebp - 0x18]
jmp 0x59126644
mov ecx, esi
call fcn.59126c55
test al, al
je 0x591256a4
push esi
push 0x800a
jmp 0x59126c73
movzx eax, word [edi + 4]
cmp ax, 9
mov bl, 1
je 0x59128087
cmp ax, 0xb
je 0x5912ba08
cmp ax, 0x10
jne 0x5912804f
mov edi, dword [edi + 0xc]
push edi
call fcn.59128180
and dword [ebp - 8], 0
test eax, eax
mov dword [ebp - 0x18], eax
jbe 0x5912804f
test bl, bl
je 0x5912804f
push dword [ebp - 8]
push edi
call fcn.5912d9b0
mov bl, al
neg bl
sbb bl, bl
inc bl
inc dword [ebp - 8]
mov eax, dword [ebp - 8]
cmp eax, dword [ebp - 0x18]
jb 0x5912802f
neg bl
mov eax, 0x800
push eax
sbb ebx, ebx
and ebx, eax
push ebx
push dword [esi + 4]
call sym.MSNCore.dll_SetGadgetStyle
jmp 0x591265a3
xor bl, bl
jmp 0x5912804f
mov al, byte [edi + 0xc]
and al, 0xf
cmp al, 2
jne 0x5912804f
cmp byte [edi + 0x13], 0xff
jne 0x59128083
jmp 0x5912804f
mov ecx, esi
call fcn.591236b8
test al, al
jne 0x5912851d
mov ecx, esi
call fcn.591236f4
mov ecx, eax
sar ecx, 2
and ecx, 3
test al, 3
je 0x59126aee
mov byte [ebp - 1], 1
test ecx, ecx
je 0x591284d7
mov bl, 1
cmp byte [ebp - 1], 0
je 0x591284e5
test bl, bl
jne 0x59126608
push 2
push dword [sym.MSNCore.dll_struct_DirectUI::PropertyInfo__DirectUI::Element::ContentProp]
mov ecx, esi
call sym.MSNCore.dll_public:_class_DirectUI::Value____thiscall_DirectUI::Element::GetValue_struct_DirectUI::PropertyInfo_const___int_const
mov dword [ebp - 0x14], eax
movzx eax, word [eax + 4]
cmp ax, 0xb
je 0x5912851d
cmp ax, 9
je 0x5912851d
cmp ax, 0x10
je 0x5912851d
cmp ax, 0x15
je 0x5912851d
cmp ax, 0x16
jne 0x591265cc
mov byte [ebp - 1], 1
mov bl, 1
jmp 0x59126608
mov edi, dword [edi + 0xc]
test edi, edi
je 0x5912804f
mov al, byte [edi + 0x10]
shr al, 2
and al, 7
cmp al, 1
je 0x59128083
cmp al, 2
je 0x59128083
cmp al, 7
jne 0x5912804f
jmp 0x59128083
mov eax, dword [edi + 0xc]
test eax, eax
je 0x591265fe
mov al, byte [eax + 0x10]
mov cl, al
and cl, 3
cmp cl, 2
je 0x5912851d
test cl, cl
jne 0x591265fe
shr al, 2
and al, 7
cmp al, 4
je 0x5912851d
cmp al, 5
je 0x5912851d
cmp al, 6
je 0x5912851d
cmp al, 7
je 0x5912851d
jmp 0x591265fe
mov ecx, esi
call fcn.59126c55
test al, al
je 0x591256a4
push esi
push 0x800c
jmp 0x59126c73
cmp dword [edi + 0xc], 0xfffffffe
je 0x5912ce16
push dword [sym.MSNCore.dll_unsigned_long_int_DirectUI::g_dwElSlot]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
test eax, eax
je 0x5912ce16
mov ebx, dword [eax + 0xc]
test ebx, ebx
je 0x5912ce16
mov ecx, dword [ebx + 0x14]
test ecx, ecx
je 0x5912ce16
cmp dword [ebx + 0x10], 0
je 0x5912ce16
push esi
call fcn.59126928
mov ecx, dword [ebx + 0x10]
push esi
call fcn.59126928
mov ecx, esi
call fcn.5911d218
mov ebx, eax
test ebx, ebx
je 0x591256a4
lea eax, [ebp - 0x18]
push eax
mov ecx, ebx
call fcn.591268ae
test eax, eax
je 0x59126d0b
push dword [edi + 0xc]
mov ecx, dword [ebp + 0x10]
push dword [ecx + 0xc]
mov edx, dword [eax]
push esi
push ebx
mov ecx, eax
call dword [edx + 0x10]
jmp 0x59126d0b
cmp eax, 0x31
mov ecx, esi
je 0x5912d848
call fcn.591239d7
movzx ebx, al
mov eax, dword [edi + 0xc]
push eax
push ebx
mov ecx, esi
call fcn.5912d79f
mov ecx, esi
call fcn.59126c55
test al, al
je 0x591256a4
mov ecx, esi
call fcn.59126e06
test ebx, ebx
je 0x5912d86d
and eax, 0xfffffffe
push eax
jmp 0x59126cff
movzx ebx, byte [edi + 0xc]
call fcn.5912381e
jmp 0x5912d76f
or eax, 1
jmp 0x5912d799
or ebx, 0x8000
push 0x8003
jmp 0x59126cf9
mov ecx, esi
call fcn.59126c55
test al, al
je 0x591256a4
push esi
push 0x800e
jmp 0x59126c73
mov ecx, esi
call fcn.591269a8
test al, al
je 0x591256a4
mov ecx, esi
call fcn.5912fb0c
mov edi, eax
mov ebx, 0xf00
test ebx, edi
je 0x591256a4
call fcn.5912fb2a
test al, al
je 0x591256a4
mov eax, dword [ebp + 0x10]
test eax, eax
je 0x5912fa89
cmp word [eax + 4], 1
jne 0x5912fa89
movzx eax, byte [eax + 0xc]
push eax
push dword [esi + 4]
call sym.MSNCore.dll_void___stdcall_DirectUI::SetGadgetOpacity_struct_HGADGET_____unsigned_char_
push ebx
push edi
mov ecx, esi
call sym.MSNCore.dll_public:_void___thiscall_DirectUI::Element::InvokeAnimation_int__unsigned_int_
jmp 0x591256a4
mov ecx, dword [ebp + 0x10]
mov eax, 0xf000
test dword [ecx + 0xc], eax
jne 0x5914c478
mov eax, dword [ebp + 0x10]
mov ebx, 0xf00
test dword [eax + 0xc], ebx
je 0x591256a4
test dword [edi + 0xc], ebx
jne 0x591256a4
push ebx
mov ecx, esi
call sym.MSNCore.dll_public:_void___thiscall_DirectUI::Element::StopAnimation_unsigned_int_
jmp 0x591256a4
cmp word [edi + 4], 0xffff
je 0x591256a4
mov edi, dword [esi + 4]
call sym.MSNCore.dll_GetGadgetFocus
cmp eax, edi
je 0x591256a4
push dword [esi + 4]
call sym.MSNCore.dll_SetGadgetFocus
jmp 0x591256a4
mov ecx, esi
call fcn.59126c55
test al, al
je 0x591256a4
mov ecx, esi
call fcn.5912381e
test al, 2
je 0x591256a4
mov ecx, esi
call fcn.59126e06
cmp byte [edi + 0xc], 0
mov ebx, eax
je 0x59133d0f
push esi
or ebx, 4
push 0x8005
jmp 0x59126cf9
and ebx, 0xfffffffb
jmp 0x59126cfe
mov ecx, esi
call fcn.59126c55
test al, al
je 0x591256a4
mov ecx, esi
call fcn.59126e06
test eax, 0x200000
je 0x591256a4
cmp byte [edi + 0xc], 0
je 0x59136a8b
or eax, 2
jmp 0x5912d799
and eax, 0xfffffffd
jmp 0x5912d799
call fcn.59125940
test al, al
je 0x591256a4
push 0
jmp 0x591256ee
mov eax, edi
mov eax, dword [eax + 0xc]
mov dword [ebp - 0xc], eax
mov eax, dword [ebp + 0x10]
mov ebx, dword [eax + 0xc]
xor edi, edi
cmp ebx, edi
mov dword [ebp - 0x10], edi
mov dword [ebp - 8], edi
mov dword [ebp - 0x18], esi
jne 0x59140954
cmp dword [ebp - 0xc], 0
je 0x5913e12c
push dword [sym.MSNCore.dll_unsigned_long_int_DirectUI::g_dwElSlot]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
test eax, eax
je 0x5913e0f6
mov ebx, dword [eax + 0xc]
test ebx, ebx
je 0x5913e0f6
mov ecx, dword [ebx + 0x14]
test ecx, ecx
je 0x5913e0f6
cmp dword [ebx + 0x10], 0
je 0x5913e0f6
push esi
call fcn.59126928
mov ecx, dword [ebx + 0x10]
push esi
call fcn.59126928
mov ecx, dword [ebp - 0xc]
lea eax, [ebp - 0x14]
push eax
call fcn.591268ae
test eax, eax
je 0x5913e11e
mov edx, dword [eax]
push 1
lea ecx, [ebp - 0x18]
push ecx
push dword [ebp - 0xc]
mov ecx, eax
call dword [edx + 8]
mov ecx, dword [ebp - 0x14]
call fcn.5911cf70
mov ecx, dword [ebp - 0xc]
mov edi, dword [ecx + 4]
call fcn.5911d25c
mov dword [ebp - 0x10], eax
push 3
push 0
push edi
push dword [esi + 4]
call sym.MSNCore.dll_SetGadgetParent
mov eax, dword [ebp - 0x10]
cmp dword [ebp - 8], eax
je 0x591256a4
cmp dword [ebp - 8], 0
jne 0x5914098b
cmp dword [ebp - 0x10], 0
je 0x591256a4
push dword [ebp - 0x10]
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x54]
jmp 0x591256a4
lea eax, [ebp - 0x18]
push eax
mov ecx, esi
call fcn.59123800
mov ebx, eax
mov eax, dword [ebp + 0x10]
mov edi, dword [eax + 0xc]
test edi, edi
jne 0x5914bdf4
mov eax, dword [ebp + 0x14]
mov edi, dword [eax + 0xc]
test edi, edi
je 0x59126d0b
mov eax, dword [edi]
push esi
mov ecx, edi
call dword [eax + 0x14]
test ebx, ebx
je 0x59126d0b
push dword [ebx + 8]
mov eax, dword [edi]
push dword [ebx + 0x10]
mov ecx, edi
push esi
call dword [eax + 8]
jmp 0x59126d0b
cmp byte [edi + 0xc], 0
je 0x591256a4
mov ecx, esi
call fcn.59126e06
mov ecx, esi
mov edi, eax
call fcn.5912381e
test al, 2
je 0x5913f647
mov ecx, esi
call fcn.59123470
test al, al
jne 0x5916a824
and edi, 0xfffffffb
test edi, 0x200000
jne 0x5916a837
push edi
jmp 0x59126cff
lea eax, [ebp - 0x14]
push eax
mov ecx, ebx
call fcn.591268ae
test eax, eax
jne 0x5914a637
mov ecx, dword [ebp - 0x14]
call fcn.5911cf70
mov ecx, ebx
xor edi, edi
call fcn.5911d25c
mov dword [ebp - 8], eax
jmp 0x5913e0bd
push dword [ebp - 8]
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x58]
jmp 0x5913e14f
push 0
jmp 0x5912600b
mov edx, dword [eax]
push 1
lea ecx, [ebp - 0x18]
push ecx
push ebx
mov ecx, eax
call dword [edx + 0xc]
jmp 0x59140967
test ebx, ebx
je 0x5914be06
push dword [ebx + 8]
mov eax, dword [edi]
push dword [ebx + 0x10]
mov ecx, edi
push esi
call dword [eax + 0xc]
mov eax, dword [edi]
push esi
mov ecx, edi
call dword [eax + 0x18]
jmp 0x5913f3e0
test dword [edi + 0xc], eax
jne 0x5912fb6d
push eax
mov ecx, esi
call sym.MSNCore.dll_public:_void___thiscall_DirectUI::Element::StopAnimation_unsigned_int_
jmp 0x5912fb6d
push esi
push 0x8005
or edi, 4
call sym.MSNCore.dll_void___stdcall_DirectUI::NotifyAccessibilityEvent_unsigned_long_int__class_DirectUI::Element__
jmp 0x5913f647
mov ecx, esi
call fcn.59125e0b
test al, al
je 0x5916a84a
or edi, 2
jmp 0x5913f653
and edi, 0xfffffffd
jmp 0x5913f653
and dword [ebp - 0x14], 0
lea eax, [ebp - 0x14]
push eax
mov ecx, esi
call fcn.5917dce4
test eax, eax
je 0x591256a4
push eax
call dword [sym.imp.MSVCR80.dll__wcsdup]
test eax, eax
pop ecx
mov dword [ebp - 0x10], eax
je 0x5916a965
mov ebx, dword [sym.imp.MSVCR80.dll_wcschr]
push 0x3b
push eax
call ebx
mov edi, eax
test edi, edi
pop ecx
pop ecx
je 0x5916a95b
and word [edi], 0
inc edi
inc edi
push 0x3b
push edi
call ebx
test eax, eax
pop ecx
pop ecx
mov dword [ebp - 8], eax
je 0x5916a95b
and word [eax], 0
add dword [ebp - 8], 2
push 0
call dword [sym.imp.USER32.dll_GetDC]
mov ebx, eax
test ebx, ebx
je 0x5916a8cc
push 0x5a
push ebx
call dword [sym.imp.GDI32.dll_GetDeviceCaps]
jmp 0x5916a8cf
push 0x60
pop eax
push eax
push 0xa
push 0
push dword [ebp - 0x10]
call dword [sym.imp.MSVCR80.dll_wcstol]
add esp, 0xc
push eax
call fcn.59148545
push eax
mov ecx, esi
call fcn.5917dd45
test ebx, ebx
je 0x5916a8fb
push ebx
push 0
call dword [sym.imp.USER32.dll_ReleaseDC]
cmp word [edi], 0
je 0x5916a944
mov eax, dword [sym.MSNCore.dll_struct_DirectUI::PropertyInfo__DirectUI::Element::FontWeightProp]
mov ebx, dword [eax + 0xb0]
and dword [ebp - 0xc], 0
cmp dword [ebx], 0
je 0x5916a944
mov eax, ebx
push dword [eax]
push edi
call dword [sym.imp.MSVCR80.dll__wcsicmp]
test eax, eax
pop ecx
pop ecx
je 0x5916a936
inc dword [ebp - 0xc]
mov eax, dword [ebp - 0xc]
lea eax, [ebx + eax*8]
cmp dword [eax], 0
je 0x5916a944
jmp 0x5916a917
mov eax, dword [ebp - 0xc]
push dword [ebx + eax*8 + 4]
mov ecx, esi
call fcn.5917dd84
cmp dword [ebp - 8], 0
je 0x5916a95b
mov eax, dword [ebp - 8]
cmp word [eax], 0
je 0x5916a95b
push eax
mov ecx, esi
call fcn.5917dd02
push dword [ebp - 0x10]
call dword [sym.imp.MSVCR80.dll_free]
pop ecx
mov ecx, dword [ebp - 0x14]
jmp 0x59126644