Function at 0x1003b5a0
Capabilities:
Get thread local storage value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x1004278a
mov eax, dword fs:[0]
push eax
sub esp, 0x3c
mov eax, dword [0x10050018]
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 0x1003b602
mov dword [ebp - 0x40], ebx
mov ebx, 1
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x24], ebx
mov eax, dword [section..data]
mov esi, dword [sym.imp.KERNEL32.dll_TlsGetValue]
cmp eax, 0xffffffff
je 0x1003b651
push eax
call esi
test eax, eax
je 0x1003b651
mov eax, dword [section..data]
cmp eax, 0xffffffff
jne 0x1003b627
xor ecx, ecx
jmp 0x1003b631
push eax
call esi
mov ecx, eax
mov eax, dword [section..data]
cmp byte [ecx + 0x38], 0
je 0x1003b651
mov dword [ebp - 0x44], ebx
cmp eax, 0xffffffff
jne 0x1003b643
xor eax, eax
jmp 0x1003b646
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 0x1003b66e
cmp dword [eax + 4], 0x7fffffff
je 0x1003b78f
lea eax, [ebp - 0x38]
push eax
call fcn.1000b050
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 0x1003b69a
jg 0x1003b68f
test ecx, ecx
jb 0x1003b69a
add ecx, 0xf423f
adc edx, 0
jmp 0x1003b6a3
sub ecx, 0xf423f
sbb edx, 0
push 0
push 0xf4240
push edx
push ecx
call fcn.1003f590
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 0x1003b78c
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x34], 0x20
test eax, eax
jl 0x1003b704
jg 0x1003b6e7
cmp edi, 0x294
jb 0x1003b704
push 0
push 0x14
push eax
push edi
call fcn.1003f590
mov ecx, eax
mov eax, 0x3e8
cmp ecx, eax
cmova ecx, eax
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x2c], 0
test eax, eax
jl 0x1003b730
jg 0x1003b71c
test edi, edi
je 0x1003b730
push 0xffffffffffffffff
push 0xffffd8f0
push eax
push edi
call fcn.1003f640
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x2c], edx
mov ecx, dword [0x10051b1c]
test ecx, ecx
jne 0x1003b761
push str.SetWaitableTimerEx
push str.KERNEL32.DLL
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
mov ecx, 0x1003af30
cmovne ecx, eax
mov dword [0x10051b1c], ecx
push dword [ebp - 0x34]
lea eax, [ebp - 0x30]
push 0
push 0
push 0
push 0
push eax
push esi
call ecx
test eax, eax
setne al
test al, al
mov eax, dword [ebp + 0xc]
je 0x1003b78f
mov dword [ebp - 0x28], ebx
mov dword [ebp + ebx*4 - 0x20], esi
inc ebx
mov dword [ebp - 0x24], ebx
jmp 0x1003b78f
mov eax, dword [ebp + 0xc]
or edi, 0xffffffff
xor ebx, ebx
cmp dword [ebp - 0x28], edi
jne 0x1003b803
cmp dword [eax], edi
jne 0x1003b7a6
cmp dword [eax + 4], 0x7fffffff
je 0x1003b803
lea eax, [ebp - 0x38]
push eax
call fcn.1000b050
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 0x1003b7d1
jg 0x1003b7c7
test ecx, ecx
jb 0x1003b7d1
add ecx, 0xf423f
adc edx, ebx
jmp 0x1003b7d9
sub ecx, 0xf423f
sbb edx, ebx
push 0
push 0xf4240
push edx
push ecx
call fcn.1003f590
mov ebx, edx
mov edi, eax
test ebx, ebx
jg 0x1003b803
jl 0x1003b7f5
test edi, edi
jae 0x1003b803
xorps xmm0, xmm0
movlpd qword [ebp - 0x38], xmm0
mov ebx, dword [ebp - 0x34]
mov edi, dword [ebp - 0x38]
mov ecx, dword [sym.imp.KERNEL32.dll_Sleep]
nop dword [eax]
mov eax, dword [ebp - 0x24]
test eax, eax
je 0x1003b84f
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 0x1003b859
cmp eax, dword [ebp - 0x40]
je 0x1003b93d
cmp eax, dword [ebp - 0x44]
je 0x1003b911
cmp eax, dword [ebp - 0x28]
jne 0x1003b859
mov dword [ebp - 4], 2
jmp 0x1003b8e3
test edi, edi
jne 0x1003b856
push edi
jmp 0x1003b857
push edi
call ecx
cmp dword [ebp - 0x28], 0xffffffff
jne 0x1003b8b7
mov eax, dword [ebp + 0xc]
cmp dword [eax], 0xffffffff
jne 0x1003b870
cmp dword [eax + 4], 0x7fffffff
je 0x1003b8b7
lea eax, [ebp - 0x38]
push eax
call fcn.1000b050
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 0x1003b89c
jg 0x1003b891
test ecx, ecx
jb 0x1003b89c
add ecx, 0xf423f
adc edx, 0
jmp 0x1003b8a5
sub ecx, 0xf423f
sbb edx, 0
push 0
push 0xf4240
push edx
push ecx
call fcn.1003f590
mov ebx, edx
mov edi, eax
cmp edi, 0xffffffff
jne 0x1003b8ca
mov ecx, dword [sym.imp.KERNEL32.dll_Sleep]
test ebx, ebx
je 0x1003b810
test ebx, ebx
jl 0x1003b8dc
jg 0x1003b803
test edi, edi
jne 0x1003b803
mov dword [ebp - 4], 3
test esi, esi
je 0x1003b8f3
cmp esi, 0xffffffff
je 0x1003b8f3
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.1003eb30
mov esp, ebp
pop ebp
ret
mov eax, dword [section..data]
cmp eax, 0xffffffff
jne 0x1003b91f
xor eax, eax
jmp 0x1003b926
push eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
push dword [eax + 0x34]
call dword [sym.imp.KERNEL32.dll_ResetEvent]
push 0x1004d508
lea eax, [ebp - 0x39]
push eax
call sub.VCRUNTIME140.dll__CxxThrowException
mov dword [ebp - 4], 1
test esi, esi
je 0x1003b954
cmp esi, 0xffffffff
je 0x1003b954
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov al, 1
jmp 0x1003b8f5