Function at 0x4e3990
Capabilities:
Get thread local storage value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x53c478
mov eax, dword fs:[0]
push eax
sub esp, 0x40
mov eax, dword [0x58d00c]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
xor ebx, ebx
mov dword [ebp - 0x24], ebx
xorps xmm0, xmm0
mov dword [ebp - 0x40], 0xffffffff
mov dword [ebp - 0x44], 0xffffffff
mov dword [ebp - 0x28], 0xffffffff
movups xmmword [ebp - 0x20], xmm0
cmp eax, 0xffffffff
je 0x4e39f2
mov dword [ebp - 0x40], ebx
mov ebx, 1
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x24], ebx
mov eax, dword [0x58d0b8]
mov esi, dword [sym.imp.KERNEL32.dll_TlsGetValue]
cmp eax, 0xffffffff
je 0x4e3a41
push eax
call esi
test eax, eax
je 0x4e3a41
mov eax, dword [0x58d0b8]
cmp eax, 0xffffffff
jne 0x4e3a17
xor ecx, ecx
jmp 0x4e3a21
push eax
call esi
mov ecx, eax
mov eax, dword [0x58d0b8]
cmp byte [ecx + 0x38], 0
je 0x4e3a41
mov dword [ebp - 0x44], ebx
cmp eax, 0xffffffff
jne 0x4e3a33
xor eax, eax
jmp 0x4e3a36
push eax
call esi
mov eax, dword [eax + 0x34]
mov dword [ebp + ebx*4 - 0x20], eax
inc ebx
mov dword [ebp - 0x24], ebx
xor esi, esi
mov dword [ebp - 0x48], esi
mov eax, dword [ebp + 0xc]
mov dword [ebp - 4], esi
cmp dword [eax], 0xffffffff
jne 0x4e3a5e
cmp dword [eax + 4], 0x7fffffff
je 0x4e3b6e
lea eax, [ebp - 0x4c]
push eax
call fcn.004e3e70
mov edx, dword [ebp + 0xc]
add esp, 4
mov ecx, dword [edx]
sub ecx, dword [eax]
mov edx, dword [edx + 4]
sbb edx, dword [eax + 4]
js 0x4e3a8a
jg 0x4e3a7f
test ecx, ecx
jb 0x4e3a8a
add ecx, 0xf423f
adc edx, 0
jmp 0x4e3a93
sub ecx, 0xf423f
sbb edx, 0
push 0
push 0xf4240
push edx
push ecx
call fcn.00526ac0
push 0
push 0
push 0
mov dword [ebp - 0x2c], edx
mov edi, eax
call dword [sym.imp.KERNEL32.dll_CreateWaitableTimerA]
mov esi, eax
mov dword [ebp - 0x48], esi
test esi, esi
je 0x4e3b6b
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x38], 0x20
test eax, eax
jl 0x4e3ae8
jg 0x4e3ad7
cmp edi, 0x294
jb 0x4e3ae8
push 0
push 0x14
push eax
push edi
call fcn.00526ac0
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x2c], 0
test eax, eax
jl 0x4e3b14
jg 0x4e3b00
test edi, edi
je 0x4e3b14
push 0xffffffffffffffff
push 0xffffd8f0
push eax
push edi
call fcn.00526a10
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x2c], edx
mov ecx, dword [0x5bf48c]
test ecx, ecx
jne 0x4e3b45
push str.SetWaitableTimerEx
push 0x544c90
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
mov ecx, 0x4e3630
cmovne ecx, eax
mov dword [0x5bf48c], ecx
push dword [ebp - 0x38]
lea eax, [ebp - 0x30]
push 0
push 0
push 0
push 0
push eax
push esi
call ecx
test eax, eax
mov eax, dword [ebp + 0xc]
je 0x4e3b6e
mov dword [ebp - 0x28], ebx
mov dword [ebp + ebx*4 - 0x20], esi
inc ebx
mov dword [ebp - 0x24], ebx
jmp 0x4e3b6e
mov eax, dword [ebp + 0xc]
or edi, 0xffffffff
xor ebx, ebx
cmp dword [ebp - 0x28], edi
jne 0x4e3be2
cmp dword [eax], edi
jne 0x4e3b85
cmp dword [eax + 4], 0x7fffffff
je 0x4e3be2
lea eax, [ebp - 0x3c]
push eax
call fcn.004e3e70
mov edx, dword [ebp + 0xc]
add esp, 4
mov ecx, dword [edx]
sub ecx, dword [eax]
mov edx, dword [edx + 4]
sbb edx, dword [eax + 4]
js 0x4e3bb0
jg 0x4e3ba6
test ecx, ecx
jb 0x4e3bb0
add ecx, 0xf423f
adc edx, ebx
jmp 0x4e3bb8
sub ecx, 0xf423f
sbb edx, ebx
push 0
push 0xf4240
push edx
push ecx
call fcn.00526ac0
mov ebx, edx
mov edi, eax
test ebx, ebx
jg 0x4e3be2
jl 0x4e3bd4
test edi, edi
jae 0x4e3be2
xorps xmm0, xmm0
movlpd qword [ebp - 0x3c], xmm0
mov ebx, dword [ebp - 0x38]
mov edi, dword [ebp - 0x3c]
mov ecx, dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [ebp - 0x24]
test eax, eax
je 0x4e3c49
push 0
push edi
push 0
lea ecx, [ebp - 0x20]
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_WaitForMultipleObjectsEx]
cmp eax, dword [ebp - 0x24]
jae 0x4e3c53
cmp eax, dword [ebp - 0x40]
je 0x4e3d0b
cmp eax, dword [ebp - 0x44]
je 0x4e3cdf
cmp eax, dword [ebp - 0x28]
jne 0x4e3c53
test esi, esi
je 0x4e3c2b
cmp esi, 0xffffffff
je 0x4e3c2b
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
xor al, al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004c79eb
mov esp, ebp
pop ebp
ret
test edi, edi
jne 0x4e3c50
push edi
jmp 0x4e3c51
push edi
call ecx
cmp dword [ebp - 0x28], 0xffffffff
jne 0x4e3cb1
mov eax, dword [ebp + 0xc]
cmp dword [eax], 0xffffffff
jne 0x4e3c6a
cmp dword [eax + 4], 0x7fffffff
je 0x4e3cb1
lea eax, [ebp - 0x3c]
push eax
call fcn.004e3e70
mov edx, dword [ebp + 0xc]
add esp, 4
mov ecx, dword [edx]
sub ecx, dword [eax]
mov edx, dword [edx + 4]
sbb edx, dword [eax + 4]
js 0x4e3c96
jg 0x4e3c8b
test ecx, ecx
jb 0x4e3c96
add ecx, 0xf423f
adc edx, 0
jmp 0x4e3c9f
sub ecx, 0xf423f
sbb edx, 0
push 0
push 0xf4240
push edx
push ecx
call fcn.00526ac0
mov ebx, edx
mov edi, eax
cmp edi, 0xffffffff
jne 0x4e3cc4
mov ecx, dword [sym.imp.KERNEL32.dll_Sleep]
test ebx, ebx
je 0x4e3be8
test ebx, ebx
jl 0x4e3c1b
jg 0x4e3be2
test edi, edi
je 0x4e3c1b
jmp 0x4e3be2
mov eax, dword [0x58d0b8]
cmp eax, 0xffffffff
jne 0x4e3ced
xor eax, eax
jmp 0x4e3cf4
push eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
push dword [eax + 0x34]
call dword [sym.imp.KERNEL32.dll_ResetEvent]
push 0x586564
lea eax, [ebp - 0x31]
push eax
call fcn.004e676c
test esi, esi
je 0x4e3d1b
cmp esi, 0xffffffff
je 0x4e3d1b
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov al, 1
jmp 0x4e3c2d