Function at 0x41fca0
Capabilities:
Set thread local storage value

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x37c
push ebx
push esi
push edi
mov edi, ecx
xor ebx, ebx
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], edi
cmp dword [edi + 0x70], ebx
je 0x41fcee
push dword [edi + 0x70]
mov eax, dword [edi + 0x74]
lea ecx, [esp + 0x10]
push ecx
call eax
add esp, 8
mov esi, dword [eax]
mov dword [eax], ebx
mov ecx, dword [esp + 0xc]
mov dword [esp + 0xc], ebx
test ecx, ecx
je 0x41fce6
mov eax, dword [ecx]
push 1
call dword [eax]
mov ecx, dword [edi + 4]
mov dword [edi + 4], esi
jmp 0x41fd16
mov edx, dword [edi + 8]
lea ecx, [esp + 0x10]
call fcn.0041f7d0
mov edx, dword [eax]
mov dword [eax], ebx
mov ecx, dword [edi + 4]
mov dword [edi + 4], edx
test ecx, ecx
je 0x41fd0e
mov eax, dword [ecx]
push 1
call dword [eax]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x10], ebx
test ecx, ecx
je 0x41fd20
mov eax, dword [ecx]
push 1
call dword [eax]
mov eax, dword [0x494ed4]
test eax, 0xfffffffe
jne 0x41fd5c
push 0x494ed4
call fcn.004168e0
add esp, 4
test al, al
je 0x41fd5c
mov ecx, 0x494ed8
call fcn.004212c0
push 0
push 0x494ed4
push eax
push 0x494ed4
call fcn.00416930
add esp, 0x10
mov eax, dword [0x494ed4]
push edi
push dword [eax]
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
test eax, eax
jne 0x41fdae
cmp dword [0x494e44], 3
jg 0x41fd9d
push 3
push 0x23
push str.d:webapps_b_build_slave_repo_build_src_base_threading_thread_local_win.cc
lea ecx, [esp + 0x24]
lea ebx, [eax + 4]
call fcn.00413f50
add eax, 8
push str.Failed_to_TlsSetValue__.
push eax
call fcn.0040b370
add esp, 8
test bl, 4
je 0x41fdae
lea ecx, [esp + 0x18]
and ebx, 0xfffffffb
call fcn.00414010
mov eax, dword [edi + 0xcc]
mov dword [esp + 0xc], eax
lea esi, [eax + 0xc]
push esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
test bl, 8
je 0x41fdd6
lea ecx, [esp + 0xc8]
and ebx, 0xfffffff7
call fcn.00414010
test bl, 0x10
je 0x41fdea
lea ecx, [esp + 0x178]
and ebx, 0xffffffef
call fcn.00414010
mov eax, dword [esp + 0xc]
cmp dword [eax + 0x34], 0
mov byte [eax + 0x42], 1
je 0x41fe3e
test bl, 0x20
je 0x41fe10
lea ecx, [esp + 0x228]
and ebx, 0xffffffdf
call fcn.00414010
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 0x38]
add eax, 4
mov dword [esp + 0x10], eax
test bl, 0x40
je 0x41fe2f
lea ecx, [esp + 0x2d8]
call fcn.00414010
mov eax, dword [esp + 0x10]
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 0xc]
mov eax, dword [esp + 0xc]
mov byte [eax + 0x40], 1
mov ebx, dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
push esi
call ebx
mov edi, dword [edi + 0xd0]
lea esi, [edi + 0x10]
push esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
push esi
mov dword [edi + 0xc], eax
call ebx
mov esi, dword [esp + 0x14]
mov ecx, dword [esi + 0xd0]
mov dword [esi + 0xd0], 0
test ecx, ecx
je 0x41feb9
add ecx, 4
or eax, 0xffffffff
lock xadd dword [ecx], eax
sub eax, 1
setne al
test al, al
jne 0x41feb9
test ecx, ecx
je 0x41fe98
add ecx, 0xfffffffc
jmp 0x41fe9a
xor ecx, ecx
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
cmp eax, 0x48c550
jne 0x41fec7
push 1
call dword [eax + 8]
mov ecx, esi
call fcn.0041fed0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, esi
call fcn.0041fed0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
call edx
jmp 0x41feb9