Function at 0x45b7d0
Capabilities:
Get thread local storage value

Disassembly:
push ebp
mov ebp, esp
sub esp, 4
push ebx
push esi
push edi
mov eax, dword [0x7d8230]
push eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov edi, eax
mov dword [0x7d80f4], 0
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov edx, dword [0x7d87bc]
cmp edx, eax
je 0x45b887
mov dword [0x7be2a0], 1
push 0x7d87c0
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov dword [edi + 0x1658], 0
push 0x7d87c0
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
cmp dword [edi + 0x7c], 0
jne 0x45b882
movzx eax, word [edi + 0x80]
test eax, eax
jne 0x45b882
push 0x7d87d8
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
jmp 0x45b861
push 0xffffffffffffffff
push 0x7d87d8
push 0x7d87f8
call fcn.0048db80
add esp, 0xc
mov eax, dword [0x7d87f4]
test eax, eax
jne 0x45b84d
inc dword [0x7d87f0]
mov dword [edi + 0x7c], 1
push 0x7d87d8
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
call fcn.0048d580
cmp dword [0x7be2b8], 1
jne 0x45b89a
mov eax, dword [0x7be28c]
jmp 0x45bad3
mov dword [0x7be2b8], 1
call fcn.0048d7e0
call fcn.0048d750
mov word [edi + 0x44], 0
call fcn.0046cf60
mov eax, dword [0x7be2b4]
push eax
call fcn.0045b370
pop ecx
call fcn.0045b320
call fcn.0046a250
call fcn.004ff4d7
call fcn.004b8bc0
call fcn.004b93b0
call fcn.0049bdd0
call fcn.004b8940
mov eax, dword [0x7be25c]
test eax, eax
je 0x45b8f7
call dword [0x7be25c]
mov eax, dword [0x7d811c]
test eax, eax
je 0x45b907
push eax
call fcn.0049f7d0
pop ecx
mov esi, dword [edi + 0x12e0]
xor ebx, ebx
jmp 0x45b938
mov eax, ebx
shl eax, 5
mov eax, dword [edi + eax + 0x8e0]
and eax, 0xf405
je 0x45b937
mov eax, ebx
shl eax, 5
lea eax, [edi + eax + 0x8e0]
push eax
call fcn.004a45e0
pop ecx
inc ebx
cmp ebx, esi
jb 0x45b911
mov esi, dword [edi + 0x8d8]
xor ebx, ebx
jmp 0x45b96d
mov eax, ebx
shl eax, 5
mov eax, dword [edi + eax + 0xd8]
and eax, 0xf405
je 0x45b96c
mov eax, ebx
shl eax, 5
lea eax, [edi + eax + 0xd8]
push eax
call fcn.004a45e0
pop ecx
inc ebx
cmp ebx, esi
jb 0x45b946
jmp 0x45b9a5
mov eax, dword [edi + 4]
mov eax, dword [eax - 4]
mov eax, dword [eax]
and eax, 0x400
je 0x45b98f
mov eax, dword [edi + 4]
mov eax, dword [eax - 4]
push eax
call fcn.004a4580
pop ecx
mov eax, dword [edi + 4]
mov eax, dword [eax - 4]
mov dword [eax], 0
lea eax, [edi + 4]
mov edx, dword [eax]
lea edx, [edx - 4]
mov dword [eax], edx
mov eax, dword [edi + 4]
mov edx, dword [edi]
cmp eax, edx
ja 0x45b973
mov eax, dword [edi + 0x10]
and eax, 0xf405
je 0x45b9c2
lea eax, [edi + 0x10]
push eax
call fcn.004a45e0
pop ecx
mov eax, dword [0x7cd4a4]
cmp eax, 0x8000
jne 0x45ba01
mov eax, dword [0x7cd4ac]
mov eax, dword [eax + 4]
push eax
push 1
mov eax, dword [edi + 4]
mov eax, dword [eax]
push eax
push 0x7cd4a4
call fcn.004a3510
add esp, 0x10
push 0x7cd4a4
call fcn.004a3de0
pop ecx
mov dword [0x7cd4a4], 0
push 1
call fcn.0049b180
pop ecx
mov eax, dword [0x7cd4cc]
cmp eax, 0x8000
jne 0x45ba2a
push 0x7cd4cc
call fcn.004a3de0
pop ecx
mov dword [0x7cd4cc], 0
call fcn.00491200
call fcn.004869d0
call fcn.0045b730
call fcn.004a2290
call fcn.004abf80
call fcn.004782b0
call fcn.004bad10
push 1
call fcn.0049b180
pop ecx
call fcn.004a8d20
mov eax, dword [0x7be2a8]
push eax
call fcn.0049f7d0
pop ecx
push 0x3ea
call fcn.0049b7c0
pop ecx
test eax, eax
je 0x45ba7f
push 1
call fcn.0049b180
pop ecx
jmp 0x45baa6
call fcn.0049b3b0
jmp 0x45baa6
mov eax, dword [edi + 0x15f4]
mov dword [ebp - 4], eax
lea eax, [edi + 0x15f4]
mov edx, dword [eax]
mov edx, dword [edx + 0x1c]
mov dword [eax], edx
mov eax, dword [ebp - 4]
push eax
call fcn.0049b640
pop ecx
mov eax, dword [edi + 0x15f4]
test eax, eax
jne 0x45ba86
cmp dword [0x7be258], 0
je 0x45babf
call dword [sym.imp.ole32.dll_OleUninitialize]
call fcn.0049b7b0
call fcn.004a9600
call fcn.0048cb50
mov eax, dword [0x7be28c]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret