Function at 0x41f2b0
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 [0x49ad1c], 1
push edi
mov dword [esi], 0x488f6c
jne 0x41f3ac
cmp dword [0x49ad2c], 3
jg 0x41f3ac
call fcn.00421510
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.004225f0
add esp, 4
test eax, eax
je 0x41f335
push eax
push ecx
push 0xaf
push str.d:devopsworkspacep_37d34ce895ed4865ac95061b653d796fmisc_setup3_basemessage_loop.cc
lea ecx, [esp + 0x1a0]
call fcn.00425070
lea ecx, [esp + 0x190]
call fcn.00425110
cmp dword [0x49ad1c], 1
jne 0x41f3ac
cmp dword [0x49ad2c], 3
jg 0x41f3ac
cmp dword [esi + 0xb4], ebx
je 0x41f3ac
sub esp, 8
mov dword [esp + 0x38], 3
lea ecx, [esp + 0x40]
call fcn.00422bb0
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.00425610
mov edx, str.Check_failed:__state_.
lea ecx, [esp + 0x38]
call fcn.00407130
mov ebx, 1
test bl, 1
je 0x41f3bd
lea ecx, [esp + 0x30]
and ebx, 0xfffffffe
call fcn.00425110
xor edi, edi
nop
mov ecx, esi
call fcn.00420dc0
mov ecx, esi
call fcn.00420cc0
mov ecx, esi
call fcn.00420dc0
test al, al
je 0x41f3df
inc edi
cmp edi, 0x64
jl 0x41f3c0
cmp dword [0x49ad1c], 1
jne 0x41f45c
cmp dword [0x49ad2c], 3
jg 0x41f45c
test al, al
je 0x41f45c
sub esp, 8
mov dword [esp + 0xe8], 3
lea ecx, [esp + 0xf0]
or ebx, 2
call fcn.00422bb0
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.00425610
mov edx, str.Check_failed:__did_work.
lea ecx, [esp + 0xe8]
call fcn.00407130
test bl, 2
je 0x41f46d
lea ecx, [esp + 0xe0]
call fcn.00425110
mov eax, dword [esi + 0x58]
sub eax, dword [esi + 0x54]
test eax, 0xfffffffc
je 0x41f5a0
lea eax, [esp + 0x2c]
lea ebx, [esi + 0x50]
push eax
mov ecx, ebx
call fcn.00434370
mov eax, dword [eax]
mov dword [esp + 0x20], eax
mov dword [esp + 0xc], eax
test eax, eax
je 0x41f4a4
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 0x41f4d7
push 0xffffffffffffffff
push edi
call dword [sym.imp.KERNEL32.dll_InterlockedExchangeAdd]
sub eax, 1
jne 0x41f4d7
test edi, edi
je 0x41f4d7
lea eax, [edi + 4]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteCriticalSection]
push 0x24
push edi
call fcn.0044f7c7
add esp, 8
xor edi, edi
mov dword [esp + 0x14], edi
cmp dword [ebx + 0x14], edi
jne 0x41f4e7
or ebx, 0xffffffff
jmp 0x41f4f6
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.004222e0
inc dword [eax + 0x10]
lea ecx, [esp + 0xc]
call fcn.00434270
test al, al
je 0x41f549
lea ecx, [esp + 0xc]
call fcn.004222e0
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 0x41f549
cmp dword [edx + edi*4], 0
jne 0x41f620
inc edi
mov dword [esp + 0x14], edi
cmp edi, ecx
jb 0x41f536
lea ecx, [esp + 0xc]
call fcn.00434270
test al, al
je 0x41f575
lea ecx, [esp + 0xc]
call fcn.004222e0
add dword [eax + 0x10], 0xffffffff
jne 0x41f575
lea ecx, [esp + 0xc]
call fcn.004222e0
mov ecx, eax
call fcn.004223a0
mov edi, dword [esp + 0x20]
test edi, edi
je 0x41f5a0
push 0xffffffffffffffff
push edi
call dword [sym.imp.KERNEL32.dll_InterlockedExchangeAdd]
sub eax, 1
jne 0x41f5a0
lea eax, [edi + 4]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteCriticalSection]
push 0x24
push edi
call fcn.0044f7c7
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 0x41f5dc
push 0xffffffffffffffff
lea ebx, [edi + 4]
push ebx
call dword [sym.imp.KERNEL32.dll_InterlockedExchangeAdd]
sub eax, 1
jne 0x41f5dc
test ebx, ebx
cmove edi, eax
mov ecx, edi
mov eax, dword [edi]
call dword [eax + 0x10]
mov eax, dword [0x49ad0c]
test eax, 0xfffffffe
jne 0x41f663
push 0
push 1
push 0x49ad0c
call dword [sym.imp.KERNEL32.dll_InterlockedCompareExchange]
test eax, eax
je 0x41f645
mov eax, dword [0x49ad0c]
cmp eax, 1
jne 0x41f663
mov edi, dword [sym.imp.KERNEL32.dll_Sleep]
nop dword [eax + eax]
push 0
call edi
mov eax, dword [0x49ad0c]
cmp eax, 1
je 0x41f610
jmp 0x41f663
cmp edi, ecx
jae 0x41f549
mov eax, edi
mov ecx, dword [edx + eax*4]
lea edi, [eax + 1]
mov dword [esp + 0x14], edi
test ecx, ecx
je 0x41f549
mov eax, dword [ecx]
call dword [eax]
jmp 0x41f506
mov ecx, 0x49ad10
call fcn.00422200
mov edx, 0x49ad0c
mov dword [0x49ad0c], eax
mov ecx, 0x4221e0
call fcn.0042ed50
mov ecx, dword [0x49ad0c]
xor edx, edx
call fcn.004345b0
mov eax, dword [esi + 0xb8]
or eax, dword [esi + 0xbc]
je 0x41f6a0
push 1
call dword [sym.imp.WINMM.dll_timeEndPeriod]
dec dword [0x49ad64]
mov dword [esi + 0xb8], 0
mov dword [esi + 0xbc], 0
mov edi, dword [esi + 0xe0]
test edi, edi
je 0x41f6c7
push 0xffffffffffffffff
lea ebx, [edi + 4]
push ebx
call dword [sym.imp.KERNEL32.dll_InterlockedExchangeAdd]
sub eax, 1
jne 0x41f6c7
xor ecx, ecx
test ebx, ebx
cmovne ecx, edi
mov eax, dword [ecx]
call dword [eax + 0x10]
lea ecx, [esi + 0xc8]
call fcn.00421fb0
lea eax, [esi + 0x9c]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteCriticalSection]
mov ecx, dword [esi + 0x98]
test ecx, ecx
je 0x41f730
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.004020a0
add dword [esi + 0x98], 0xffffffff
jne 0x41f726
mov dword [esi + 0x94], 0
mov ecx, dword [esi + 0x98]
test ecx, ecx
jne 0x41f6f0
mov edi, dword [esi + 0x90]
test edi, edi
je 0x41f75d
nop word [eax + eax]
mov eax, dword [esi + 0x8c]
dec edi
mov eax, dword [eax + edi*4]
test eax, eax
je 0x41f759
push 0x38
push eax
call fcn.0044f7c7
add esp, 8
test edi, edi
jne 0x41f740
mov eax, dword [esi + 0x8c]
test eax, eax
je 0x41f798
mov ecx, dword [esi + 0x90]
shl ecx, 2
cmp ecx, 0x1000
jb 0x41f78e
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x41f9df
mov eax, edx
push ecx
push eax
call fcn.0044f7c7
add esp, 8
push 8
push dword [esi + 0x88]
mov dword [esi + 0x90], 0
mov dword [esi + 0x8c], 0
call fcn.0044f7c7
add esp, 8
mov dword [esi + 0x88], 0
lea ecx, [esi + 0x6c]
call fcn.00404e00
lea ecx, [esi + 0x50]
call fcn.00421fb0
mov edi, dword [esi + 0x4c]
test edi, edi
je 0x41f7fa
push 0xffffffffffffffff
lea ebx, [edi + 4]
push ebx
call dword [sym.imp.KERNEL32.dll_InterlockedExchangeAdd]
sub eax, 1
jne 0x41f7fa
test ebx, ebx
je 0x41f7fa
mov eax, dword [edi]
mov ecx, edi
push 1
call dword [eax]
mov ecx, dword [esi + 0x48]
test ecx, ecx
je 0x41f82f
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.004020a0
add dword [esi + 0x48], 0xffffffff
jne 0x41f828
mov dword [esi + 0x44], 0
mov ecx, dword [esi + 0x48]
test ecx, ecx
jne 0x41f801
mov edi, dword [esi + 0x40]
test edi, edi
je 0x41f850
mov eax, dword [esi + 0x3c]
dec edi
mov eax, dword [eax + edi*4]
test eax, eax
je 0x41f84c
push 0x38
push eax
call fcn.0044f7c7
add esp, 8
test edi, edi
jne 0x41f836
mov eax, dword [esi + 0x3c]
test eax, eax
je 0x41f885
mov ecx, dword [esi + 0x40]
shl ecx, 2
cmp ecx, 0x1000
jb 0x41f87b
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x41f9df
mov eax, edx
push ecx
push eax
call fcn.0044f7c7
add esp, 8
push 8
push dword [esi + 0x38]
mov dword [esi + 0x40], 0
mov dword [esi + 0x3c], 0
call fcn.0044f7c7
mov dword [esi + 0x38], 0
add esp, 8
mov edi, dword [esi + 0x1c]
test edi, edi
je 0x41f928
mov ebx, dword [esi + 0x20]
cmp edi, ebx
je 0x41f8c7
lea ecx, [edi + 0x18]
call fcn.004020a0
add edi, 0x38
cmp edi, ebx
jne 0x41f8b5
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 0x41f909
mov edx, dword [edi - 4]
add ecx, 0x23
sub edi, edx
lea eax, [edi - 4]
cmp eax, 0x1f
ja 0x41f9df
mov edi, edx
push ecx
push edi
call fcn.0044f7c7
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 0x41f95e
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.004020a0
add dword [esi + 0x18], 0xffffffff
jne 0x41f957
mov dword [esi + 0x14], 0
mov ecx, dword [esi + 0x18]
test ecx, ecx
jne 0x41f930
mov edi, dword [esi + 0x10]
test edi, edi
je 0x41f97f
mov eax, dword [esi + 0xc]
dec edi
mov eax, dword [eax + edi*4]
test eax, eax
je 0x41f97b
push 0x38
push eax
call fcn.0044f7c7
add esp, 8
test edi, edi
jne 0x41f965
mov eax, dword [esi + 0xc]
test eax, eax
je 0x41f9b0
mov ecx, dword [esi + 0x10]
shl ecx, 2
cmp ecx, 0x1000
jb 0x41f9a6
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x41f9df
mov eax, edx
push ecx
push eax
call fcn.0044f7c7
add esp, 8
push 8
push dword [esi + 8]
mov dword [esi + 0x10], 0
mov dword [esi + 0xc], 0
call fcn.0044f7c7
add esp, 8
mov dword [esi + 8], 0
mov dword [esi], 0x488f58
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
call fcn.00454bbf
int3