Function at 0x100caea0
Capabilities:
Get thread local storage value

Disassembly:
push 0xffffffffffffffff
push 0x10112748
mov eax, dword fs:[0]
push eax
sub esp, 0x2c
push ebx
push ebp
push esi
push edi
mov eax, dword [0x10156de0]
xor eax, esp
push eax
lea eax, [esp + 0x40]
mov dword fs:[0], eax
xor eax, eax
or ebp, 0xffffffff
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x50]
xor ebx, ebx
xor esi, esi
mov dword [esp + 0x30], ebx
mov dword [esp + 0x14], esi
mov dword [esp + 0x20], ebp
mov dword [esp + 0x24], ebp
mov dword [esp + 0x1c], ebp
cmp eax, ebp
je 0x100caf0c
mov dword [esp + 0x14], 1
mov esi, dword [esp + 0x14]
mov dword [esp + 0x20], ebx
mov dword [esp + 0x30], eax
mov eax, dword [0x1015682c]
cmp eax, ebp
je 0x100caf59
mov edi, dword [sym.imp.KERNEL32.dll_TlsGetValue]
push eax
call edi
cmp eax, ebx
je 0x100caf59
mov ecx, dword [0x1015682c]
cmp ecx, ebp
jne 0x100caf30
xor eax, eax
jmp 0x100caf39
push ecx
call edi
mov ecx, dword [0x1015682c]
cmp byte [eax + 0x68], bl
je 0x100caf59
mov dword [esp + 0x24], esi
cmp ecx, ebp
jne 0x100caf4a
xor eax, eax
jmp 0x100caf4d
push ecx
call edi
mov eax, dword [eax + 0x64]
mov dword [esp + esi*4 + 0x30], eax
inc esi
mov dword [esp + 0x14], esi
mov dword [esp + 0x18], ebx
mov ebp, dword [esp + 0x54]
mov eax, dword [ebp]
mov ecx, dword [ebp + 4]
mov dword [esp + 0x48], ebx
cmp eax, 0xffffffff
jne 0x100caf7c
cmp ecx, 0x7fffffff
je 0x100cb081
lea eax, [esp + 0x28]
push eax
call fcn.100cac70
mov ecx, dword [ebp + 4]
mov edx, eax
mov esi, dword [edx]
mov eax, dword [ebp]
mov edx, dword [edx + 4]
add esp, 4
sub eax, esi
sbb ecx, edx
js 0x100cafab
jg 0x100cafa2
cmp eax, ebx
jb 0x100cafab
add eax, 0xf423f
adc ecx, ebx
jmp 0x100cafb2
sub eax, 0xf423f
sbb ecx, ebx
push ebx
push 0xf4240
push ecx
push eax
call fcn.100db0b0
push ebx
push ebx
push ebx
mov edi, edx
mov esi, eax
call dword [sym.imp.KERNEL32.dll_CreateWaitableTimerA]
mov dword [esp + 0x50], eax
mov dword [esp + 0x18], eax
cmp eax, ebx
je 0x100cb081
push 0
push 0x14
push edi
push esi
mov ebx, 0x20
call fcn.100db0b0
xor ecx, ecx
cmp edx, ecx
jl 0x100caffa
jg 0x100caff8
cmp eax, ebx
jbe 0x100caffa
mov ebx, eax
cmp edi, ecx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x2c], ecx
jl 0x100cb022
jg 0x100cb00c
cmp esi, ecx
jbe 0x100cb022
push 0xffffffffffffffff
push 0xffffd8f0
push edi
push esi
call fcn.100d9ce0
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], edx
mov eax, dword [0x1015bc28]
test eax, eax
jne 0x100cb050
push str.SetWaitableTimerEx
push 0x101269a8
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
jne 0x100cb04b
mov eax, 0x100cae40
mov dword [0x1015bc28], eax
mov esi, dword [esp + 0x50]
push ebx
push 0
push 0
push 0
push 0
lea ecx, [esp + 0x3c]
push ecx
push esi
call eax
test eax, eax
setne al
test al, al
je 0x100cb07f
mov eax, dword [esp + 0x14]
mov dword [esp + 0x1c], eax
mov dword [esp + eax*4 + 0x30], esi
inc eax
mov dword [esp + 0x14], eax
xor ebx, ebx
or esi, 0xffffffff
cmp dword [esp + 0x1c], esi
setne al
xor edi, edi
mov byte [esp + 0x50], al
test al, al
jne 0x100cb0e6
mov eax, dword [ebp]
mov ecx, dword [ebp + 4]
cmp eax, esi
jne 0x100cb0a7
cmp ecx, 0x7fffffff
je 0x100cb0e6
lea edx, [esp + 0x28]
push edx
call fcn.100cac70
mov esi, dword [eax]
mov eax, dword [eax + 4]
mov ecx, dword [ebp]
mov edx, dword [ebp + 4]
add esp, 4
sub ecx, esi
sbb edx, eax
mov dword [esp + 0x28], ecx
lea ecx, [esp + 0x28]
mov dword [esp + 0x2c], edx
call fcn.100cabe0
mov edi, edx
cmp edi, ebx
mov esi, eax
jg 0x100cb0e6
jl 0x100cb0e2
cmp esi, ebx
jae 0x100cb0e6
xor esi, esi
xor edi, edi
mov ebx, dword [sym.imp.KERNEL32.dll_WaitForMultipleObjectsEx]
lea esp, [esp]
mov eax, dword [esp + 0x14]
test eax, eax
je 0x100cb157
push 0
push esi
push 0
lea ecx, [esp + 0x3c]
push ecx
push eax
call ebx
cmp eax, dword [esp + 0x14]
jae 0x100cb165
cmp eax, dword [esp + 0x20]
je 0x100cb1f1
cmp eax, dword [esp + 0x24]
je 0x100cb223
cmp eax, dword [esp + 0x1c]
jne 0x100cb165
mov eax, dword [esp + 0x18]
mov dword [esp + 0x48], 0xffffffff
test eax, eax
je 0x100cb141
cmp eax, 0xffffffff
je 0x100cb141
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
xor al, al
mov ecx, dword [esp + 0x40]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x38
ret
test esi, esi
jne 0x100cb15e
push esi
jmp 0x100cb15f
push esi
call dword [sym.imp.KERNEL32.dll_Sleep]
cmp byte [esp + 0x50], 0
jne 0x100cb1c9
mov eax, dword [ebp]
mov ecx, dword [ebp + 4]
cmp eax, 0xffffffff
jne 0x100cb17f
cmp ecx, 0x7fffffff
je 0x100cb1c9
lea edx, [esp + 0x28]
push edx
call fcn.100cac70
mov ecx, dword [ebp + 4]
mov edx, eax
mov esi, dword [edx]
mov eax, dword [ebp]
mov edx, dword [edx + 4]
add esp, 4
sub eax, esi
sbb ecx, edx
js 0x100cb1af
jg 0x100cb1a5
test eax, eax
jb 0x100cb1af
add eax, 0xf423f
adc ecx, 0
jmp 0x100cb1b7
sub eax, 0xf423f
sbb ecx, 0
push 0
push 0xf4240
push ecx
push eax
call fcn.100db0b0
mov edi, edx
mov esi, eax
cmp esi, 0xffffffff
jne 0x100cb1d6
test edi, edi
je 0x100cb0f0
test edi, edi
jl 0x100cb125
jg 0x100cb0f0
test esi, esi
jbe 0x100cb125
jmp 0x100cb0f0
mov eax, dword [esp + 0x18]
mov dword [esp + 0x48], 0xffffffff
test eax, eax
je 0x100cb20d
cmp eax, 0xffffffff
je 0x100cb20d
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov al, 1
mov ecx, dword [esp + 0x40]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x38
ret
mov eax, dword [0x1015682c]
cmp eax, 0xffffffff
jne 0x100cb231
xor eax, eax
jmp 0x100cb238
push eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov eax, dword [eax + 0x64]
push eax
call dword [sym.imp.KERNEL32.dll_ResetEvent]
push 0x10142984
lea ecx, [esp + 0x54]
xor al, al
push ecx
mov byte [esp + 0x58], al
call fcn.100d54dc
int3