Function at 0x41fcb0
Capabilities:
Get thread local storage value

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x234
push ebx
push esi
mov esi, ecx
xor ebx, ebx
mov dword [esp + 0x1c], ebx
cmp dword [0x49ad14], 1
push edi
mov dword [esi], 0x488f74
jne 0x41fdac
cmp dword [0x49ad28], 3
jg 0x41fdac
call fcn.00421f10
push dword [eax]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
push ecx
lea edx, [esp + 0x28]
mov dword [esp + 0x28], eax
lea ecx, [esp + 0x2c]
mov dword [esp + 0x2c], esi
call fcn.00422fe0
add esp, 4
test eax, eax
je 0x41fd35
push eax
push ecx
push 0xaf
push str.d:devopsworkspacep_37d34ce895ed4865ac95061b653d796fmisc_setup3_basemessage_loop.cc
lea ecx, [esp + 0x1a0]
call fcn.00425a60
lea ecx, [esp + 0x190]
call fcn.00425b00
cmp dword [0x49ad14], 1
jne 0x41fdac
cmp dword [0x49ad28], 3
jg 0x41fdac
cmp dword [esi + 0xb4], ebx
je 0x41fdac
sub esp, 8
mov dword [esp + 0x38], 3
lea ecx, [esp + 0x40]
call fcn.004235a0
mov dword [esp + 0xd4], str.d:devopsworkspacep_37d34ce895ed4865ac95061b653d796fmisc_setup3_basemessage_loop.cc
mov dword [esp + 0xd8], 0xb1
call dword [sym.imp.KERNEL32.dll_GetLastError]
push 0xb1
push str.d:devopsworkspacep_37d34ce895ed4865ac95061b653d796fmisc_setup3_basemessage_loop.cc
lea ecx, [esp + 0x38]
mov dword [esp + 0xe4], eax
call fcn.00426000
mov edx, str.Check_failed:__state_.
lea ecx, [esp + 0x38]
call fcn.00407b40
mov ebx, 1
test bl, 1
je 0x41fdbd
lea ecx, [esp + 0x30]
and ebx, 0xfffffffe
call fcn.00425b00
xor edi, edi
nop
mov ecx, esi
call fcn.004217c0
mov ecx, esi
call fcn.004216c0
mov ecx, esi
call fcn.004217c0
test al, al
je 0x41fddf
inc edi
cmp edi, 0x64
jl 0x41fdc0
cmp dword [0x49ad14], 1
jne 0x41fe5c
cmp dword [0x49ad28], 3
jg 0x41fe5c
test al, al
je 0x41fe5c
sub esp, 8
mov dword [esp + 0xe8], 3
lea ecx, [esp + 0xf0]
or ebx, 2
call fcn.004235a0
mov dword [esp + 0x184], str.d:devopsworkspacep_37d34ce895ed4865ac95061b653d796fmisc_setup3_basemessage_loop.cc
mov dword [esp + 0x188], 0xc2
call dword [sym.imp.KERNEL32.dll_GetLastError]
push 0xc2
push str.d:devopsworkspacep_37d34ce895ed4865ac95061b653d796fmisc_setup3_basemessage_loop.cc
lea ecx, [esp + 0xe8]
mov dword [esp + 0x194], eax
call fcn.00426000
mov edx, str.Check_failed:__did_work.
lea ecx, [esp + 0xe8]
call fcn.00407b40
test bl, 2
je 0x41fe6d
lea ecx, [esp + 0xe0]
call fcn.00425b00
mov eax, dword [esi + 0x58]
sub eax, dword [esi + 0x54]
test eax, 0xfffffffc
je 0x41ffa0
lea eax, [esp + 0x2c]
lea ebx, [esi + 0x50]
push eax
mov ecx, ebx
call fcn.00434d50
mov eax, dword [eax]
mov dword [esp + 0x20], eax
mov dword [esp + 0xc], eax
test eax, eax
je 0x41fea4
push 1
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedExchangeAdd]
mov edi, dword [esp + 0x2c]
mov dword [esp + 0x10], ebx
test edi, edi
je 0x41fed7
push 0xffffffffffffffff
push edi
call dword [sym.imp.KERNEL32.dll_InterlockedExchangeAdd]
sub eax, 1
jne 0x41fed7
test edi, edi
je 0x41fed7
lea eax, [edi + 4]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteCriticalSection]
push 0x24
push edi
call fcn.004501a5
add esp, 8
xor edi, edi
mov dword [esp + 0x14], edi
cmp dword [ebx + 0x14], edi
jne 0x41fee7
or ebx, 0xffffffff
jmp 0x41fef6
mov eax, dword [ebx + 8]
sub eax, dword [ebx + 4]
mov ebx, eax
mov dword [esp + 0x1c], eax
sar ebx, 2
lea ecx, [esp + 0xc]
mov dword [esp + 0x18], ebx
call fcn.00422cc0
inc dword [eax + 0x10]
lea ecx, [esp + 0xc]
call fcn.00434c50
test al, al
je 0x41ff49
lea ecx, [esp + 0xc]
call fcn.00422cc0
mov ecx, ebx
mov edx, dword [eax + 4]
mov eax, dword [eax + 8]
sub eax, edx
sar eax, 2
cmp eax, ebx
mov dword [esp + 0x1c], eax
cmovb ecx, eax
cmp edi, ecx
jae 0x41ff49
cmp dword [edx + edi*4], 0
jne 0x420020
inc edi
mov dword [esp + 0x14], edi
cmp edi, ecx
jb 0x41ff36
lea ecx, [esp + 0xc]
call fcn.00434c50
test al, al
je 0x41ff75
lea ecx, [esp + 0xc]
call fcn.00422cc0
add dword [eax + 0x10], 0xffffffff
jne 0x41ff75
lea ecx, [esp + 0xc]
call fcn.00422cc0
mov ecx, eax
call fcn.00422d80
mov edi, dword [esp + 0x20]
test edi, edi
je 0x41ffa0
push 0xffffffffffffffff
push edi
call dword [sym.imp.KERNEL32.dll_InterlockedExchangeAdd]
sub eax, 1
jne 0x41ffa0
lea eax, [edi + 4]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteCriticalSection]
push 0x24
push edi
call fcn.004501a5
add esp, 8
mov ecx, dword [esi + 0xe0]
mov eax, dword [ecx]
call dword [eax + 0x1c]
mov edi, dword [esi + 0xe0]
mov dword [esi + 0xe0], 0
test edi, edi
je 0x41ffdc
push 0xffffffffffffffff
lea ebx, [edi + 4]
push ebx
call dword [sym.imp.KERNEL32.dll_InterlockedExchangeAdd]
sub eax, 1
jne 0x41ffdc
test ebx, ebx
cmove edi, eax
mov ecx, edi
mov eax, dword [edi]
call dword [eax + 0x10]
mov eax, dword [0x49ad00]
test eax, 0xfffffffe
jne 0x420063
push 0
push 1
push 0x49ad00
call dword [sym.imp.KERNEL32.dll_InterlockedCompareExchange]
test eax, eax
je 0x420045
mov eax, dword [0x49ad00]
cmp eax, 1
jne 0x420063
mov edi, dword [sym.imp.KERNEL32.dll_Sleep]
nop dword [eax + eax]
push 0
call edi
mov eax, dword [0x49ad00]
cmp eax, 1
je 0x420010
jmp 0x420063
cmp edi, ecx
jae 0x41ff49
mov eax, edi
mov ecx, dword [edx + eax*4]
lea edi, [eax + 1]
mov dword [esp + 0x14], edi
test ecx, ecx
je 0x41ff49
mov eax, dword [ecx]
call dword [eax]
jmp 0x41ff06
mov ecx, 0x49ad04
call fcn.00422be0
mov edx, 0x49ad00
mov dword [0x49ad00], eax
mov ecx, 0x422bc0
call fcn.0042f730
mov ecx, dword [0x49ad00]
xor edx, edx
call fcn.00434f90
mov eax, dword [esi + 0xb8]
or eax, dword [esi + 0xbc]
je 0x4200a0
push 1
call dword [sym.imp.WINMM.dll_timeEndPeriod]
dec dword [0x49ad68]
mov dword [esi + 0xb8], 0
mov dword [esi + 0xbc], 0
mov edi, dword [esi + 0xe0]
test edi, edi
je 0x4200c7
push 0xffffffffffffffff
lea ebx, [edi + 4]
push ebx
call dword [sym.imp.KERNEL32.dll_InterlockedExchangeAdd]
sub eax, 1
jne 0x4200c7
xor ecx, ecx
test ebx, ebx
cmovne ecx, edi
mov eax, dword [ecx]
call dword [eax + 0x10]
lea ecx, [esi + 0xc8]
call fcn.00422990
lea eax, [esi + 0x9c]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteCriticalSection]
mov ecx, dword [esi + 0x98]
test ecx, ecx
je 0x420130
nop dword [eax]
mov eax, dword [esi + 0x94]
dec eax
add ecx, eax
mov eax, dword [esi + 0x90]
dec eax
and ecx, eax
mov eax, dword [esi + 0x8c]
mov ecx, dword [eax + ecx*4]
lea ecx, [ecx + 0x18]
call fcn.00402060
add dword [esi + 0x98], 0xffffffff
jne 0x420126
mov dword [esi + 0x94], 0
mov ecx, dword [esi + 0x98]
test ecx, ecx
jne 0x4200f0
mov edi, dword [esi + 0x90]
test edi, edi
je 0x42015d
nop word [eax + eax]
mov eax, dword [esi + 0x8c]
dec edi
mov eax, dword [eax + edi*4]
test eax, eax
je 0x420159
push 0x38
push eax
call fcn.004501a5
add esp, 8
test edi, edi
jne 0x420140
mov eax, dword [esi + 0x8c]
test eax, eax
je 0x420198
mov ecx, dword [esi + 0x90]
shl ecx, 2
cmp ecx, 0x1000
jb 0x42018e
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4203df
mov eax, edx
push ecx
push eax
call fcn.004501a5
add esp, 8
push 8
push dword [esi + 0x88]
mov dword [esi + 0x90], 0
mov dword [esi + 0x8c], 0
call fcn.004501a5
add esp, 8
mov dword [esi + 0x88], 0
lea ecx, [esi + 0x6c]
call fcn.004057e0
lea ecx, [esi + 0x50]
call fcn.00422990
mov edi, dword [esi + 0x4c]
test edi, edi
je 0x4201fa
push 0xffffffffffffffff
lea ebx, [edi + 4]
push ebx
call dword [sym.imp.KERNEL32.dll_InterlockedExchangeAdd]
sub eax, 1
jne 0x4201fa
test ebx, ebx
je 0x4201fa
mov eax, dword [edi]
mov ecx, edi
push 1
call dword [eax]
mov ecx, dword [esi + 0x48]
test ecx, ecx
je 0x42022f
mov eax, dword [esi + 0x44]
dec eax
add ecx, eax
mov eax, dword [esi + 0x40]
dec eax
and ecx, eax
mov eax, dword [esi + 0x3c]
mov ecx, dword [eax + ecx*4]
lea ecx, [ecx + 0x18]
call fcn.00402060
add dword [esi + 0x48], 0xffffffff
jne 0x420228
mov dword [esi + 0x44], 0
mov ecx, dword [esi + 0x48]
test ecx, ecx
jne 0x420201
mov edi, dword [esi + 0x40]
test edi, edi
je 0x420250
mov eax, dword [esi + 0x3c]
dec edi
mov eax, dword [eax + edi*4]
test eax, eax
je 0x42024c
push 0x38
push eax
call fcn.004501a5
add esp, 8
test edi, edi
jne 0x420236
mov eax, dword [esi + 0x3c]
test eax, eax
je 0x420285
mov ecx, dword [esi + 0x40]
shl ecx, 2
cmp ecx, 0x1000
jb 0x42027b
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4203df
mov eax, edx
push ecx
push eax
call fcn.004501a5
add esp, 8
push 8
push dword [esi + 0x38]
mov dword [esi + 0x40], 0
mov dword [esi + 0x3c], 0
call fcn.004501a5
mov dword [esi + 0x38], 0
add esp, 8
mov edi, dword [esi + 0x1c]
test edi, edi
je 0x420328
mov ebx, dword [esi + 0x20]
cmp edi, ebx
je 0x4202c7
lea ecx, [edi + 0x18]
call fcn.00402060
add edi, 0x38
cmp edi, ebx
jne 0x4202b5
mov edi, dword [esi + 0x1c]
mov ecx, dword [esi + 0x24]
mov eax, 0x92492493
sub ecx, edi
imul ecx
add edx, ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
lea ecx, [eax*8]
sub ecx, eax
shl ecx, 3
cmp ecx, 0x1000
jb 0x420309
mov edx, dword [edi - 4]
add ecx, 0x23
sub edi, edx
lea eax, [edi - 4]
cmp eax, 0x1f
ja 0x4203df
mov edi, edx
push ecx
push edi
call fcn.004501a5
add esp, 8
mov dword [esi + 0x1c], 0
mov dword [esi + 0x20], 0
mov dword [esi + 0x24], 0
mov ecx, dword [esi + 0x18]
test ecx, ecx
je 0x42035e
nop
mov eax, dword [esi + 0x14]
dec eax
add ecx, eax
mov eax, dword [esi + 0x10]
dec eax
and ecx, eax
mov eax, dword [esi + 0xc]
mov ecx, dword [eax + ecx*4]
lea ecx, [ecx + 0x18]
call fcn.00402060
add dword [esi + 0x18], 0xffffffff
jne 0x420357
mov dword [esi + 0x14], 0
mov ecx, dword [esi + 0x18]
test ecx, ecx
jne 0x420330
mov edi, dword [esi + 0x10]
test edi, edi
je 0x42037f
mov eax, dword [esi + 0xc]
dec edi
mov eax, dword [eax + edi*4]
test eax, eax
je 0x42037b
push 0x38
push eax
call fcn.004501a5
add esp, 8
test edi, edi
jne 0x420365
mov eax, dword [esi + 0xc]
test eax, eax
je 0x4203b0
mov ecx, dword [esi + 0x10]
shl ecx, 2
cmp ecx, 0x1000
jb 0x4203a6
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4203df
mov eax, edx
push ecx
push eax
call fcn.004501a5
add esp, 8
push 8
push dword [esi + 8]
mov dword [esi + 0x10], 0
mov dword [esi + 0xc], 0
call fcn.004501a5
add esp, 8
mov dword [esi + 8], 0
mov dword [esi], 0x488f60
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
call fcn.0045559f
int3