Function at 0x46afe0
Capabilities:
Get thread local storage value

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x48
mov esi, esp
mov dword [esi], ecx
mov eax, dword [0x511014]
xor eax, ebp
mov dword [esi + 0x40], eax
mov ebx, dword [0x524ae0]
cmp ebx, 1
jbe 0x46b4d2
push dword [0x514c54]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, eax
and ecx, 3
cmp ecx, 2
jne 0x46b35b
mov dword [esi + 0x3c], 0
mov dword [esi + 0x38], 0x11e1a300
lea edi, [esi + 0x28]
push 0x1db
push str....._base_threading_thread_local_storage.cc
push 0x50535a
push edi
call fcn.00454af0
add esp, 4
movsd xmm0, qword [esi + 0x38]
movsd qword [esp + 4], xmm0
mov dword [esp], edi
call fcn.004be150
add esp, 0xc
xor edi, edi
mov eax, edi
shr eax, 0xe
mov ecx, edi
shr ecx, 0x13
mov ecx, dword [ecx*4 + 0x518914]
bt ecx, eax
mov ecx, dword [esi]
jb 0x46b484
mov eax, edi
shr eax, 0x15
mov byte [eax + 0x520914], 1
mov dword [ecx], edi
mov ebx, dword [0x524aec]
cmp ebx, 1
jbe 0x46b5a3
push dword [0x514c54]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, eax
and ecx, 3
cmp ecx, 2
jne 0x46b37d
mov dword [esi + 0x3c], 0
mov dword [esi + 0x38], 0x11e1a300
lea edi, [esi + 0x28]
push 0x1db
push str....._base_threading_thread_local_storage.cc
push 0x50535a
push edi
call fcn.00454af0
add esp, 4
movsd xmm0, qword [esi + 0x38]
movsd qword [esp + 4], xmm0
mov dword [esp], edi
call fcn.004be150
add esp, 0xc
xor edi, edi
mov eax, edi
shr eax, 0xe
mov ecx, edi
shr ecx, 0x13
mov ecx, dword [ecx*4 + 0x518914]
bt ecx, eax
mov edx, dword [esi]
jb 0x46b640
mov eax, edi
shr eax, 0x15
mov byte [eax + 0x520914], 1
mov eax, dword [ebp + 8]
mov dword [edx + 4], edi
cmp dword [ebp + 0xc], 1
sete bl
mov ecx, ebx
je 0x46b139
test edi, edi
jne 0x46b4aa
mov dword [esi + 0x24], ebx
mov edi, esp
mov byte [edx + 8], cl
push eax
sub esp, 0x18
mov ecx, esp
movups xmm0, xmmword [eax]
movups xmmword [ecx], xmm0
mov byte [ecx + 0x10], 0
mov eax, 0x11be9915
mov dword [ecx + 0x14], eax
xor ebx, ebx
mov dword [ecx + 0x18], ebx
mov ecx, dword [ecx + 0xc]
mov dword [esi + 0x10], ecx
mov dword [esi + 0x2c], ebx
mov dword [esi + 0x28], eax
mov ecx, dword [0x52113c]
test ecx, ecx
jne 0x46b650
mov eax, ebx
shr eax, 0xe
mov ecx, ebx
shr ecx, 0x13
mov ecx, dword [ecx*4 + 0x518914]
bt ecx, eax
lea ecx, [edx + 0xc]
mov dword [esi + 0x14], ecx
jb 0x46b65e
mov eax, ebx
shr eax, 0x15
mov byte [eax + 0x520914], 1
mov dword [ecx], ebx
test ebx, ebx
jne 0x46b671
mov dword [edx + 0x14], 0
mov dword [edx + 0x18], 0x11be9915
mov esp, edi
mov byte [edx + 0x20], 0
mov edi, dword [0x524aec]
cmp edi, 1
jbe 0x46b5e8
push dword [0x514c54]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
and eax, 0xfffffffc
je 0x46b62d
mov ecx, dword [edi]
mov edx, dword [esi]
mov dword [eax + ecx*8], edx
mov ecx, dword [edi]
mov edx, dword [edi + 4]
mov dword [eax + ecx*8 + 4], edx
mov edi, dword [0x526010]
cmp edi, 1
jbe 0x46b55e
push dword [0x514c54]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, eax
and ecx, 3
cmp ecx, 2
jne 0x46b39f
mov dword [esi + 0x3c], 0
mov dword [esi + 0x38], 0x11e1a300
lea edi, [esi + 0x28]
push 0x1db
push str....._base_threading_thread_local_storage.cc
push 0x50535a
push edi
call fcn.00454af0
add esp, 4
movsd xmm0, qword [esi + 0x38]
movsd qword [esp + 4], xmm0
mov dword [esp], edi
call fcn.004be150
add esp, 0xc
mov edx, dword [esi]
cmp dword [ebp + 0x10], 0
jne 0x46b418
cmp byte [edx + 8], 0
jne 0x46b418
cmp dword [edx + 4], 0
jne 0x46b32b
lea ebx, [edx + 0x28]
cmp byte [edx + 0x20], 0
jne 0x46b70c
mov ecx, dword [fcn.0048cd00]
cmp ecx, 0x493220
jne 0x46b494
mov dword [esi + 0x10], ebx
xor eax, eax
lea edi, [esi + 0x28]
mov dword [edi + 4], eax
mov dword [edi], eax
push edi
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov ebx, dword [edi]
mov edi, dword [edi + 4]
mov eax, 0x7bd05af6
cmp eax, ebx
mov eax, 0x863
sbb eax, edi
jl 0x46b71e
mov ecx, 0xf4240
mov eax, ebx
mul ecx
imul ecx, edi, 0xf4240
add ecx, edx
push dword [0x52120c]
push dword [0x521208]
push ecx
push eax
call fcn.004b5fc0
mov ebx, dword [esi + 0x10]
mov dword [ebx], eax
mov dword [ebx + 4], edx
mov edi, dword [esi]
lea ecx, [edi + 0x30]
mov dword [esi + 0x28], eax
mov dword [esi + 0x2c], edx
sub esp, 0xc
movsd xmm0, qword [esi + 0x28]
movsd qword [esp + 4], xmm0
mov dword [esp], ecx
call fcn.0046b7d0
mov edx, edi
add esp, 0xc
mov ecx, dword [edi + 0x30]
test ecx, ecx
jne 0x46b45f
mov byte [edx + 0x20], 1
mov ecx, dword [edx]
test ecx, ecx
mov edi, dword [ebp + 0xc]
jne 0x46b402
mov eax, dword [esi + 0x14]
mov eax, dword [eax]
test eax, eax
jne 0x46b690
mov ecx, dword [esi + 0x40]
xor ecx, ebp
call fcn.00496ce3
mov eax, dword [esi]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0xc
xor edi, edi
and eax, 0xfffffffc
je 0x46b064
mov ecx, dword [ebx]
mov edx, dword [eax + ecx*8 + 4]
cmp edx, dword [ebx + 4]
jne 0x46b064
mov edi, dword [eax + ecx*8]
jmp 0x46b064
xor edi, edi
and eax, 0xfffffffc
je 0x46b0f8
mov ecx, dword [ebx]
mov edx, dword [eax + ecx*8 + 4]
cmp edx, dword [ebx + 4]
jne 0x46b0f8
mov edi, dword [eax + ecx*8]
jmp 0x46b0f8
and eax, 0xfffffffc
je 0x46b25e
mov ecx, dword [edi]
mov edx, dword [eax + ecx*8 + 4]
cmp edx, dword [edi + 4]
jne 0x46b25e
mov eax, dword [eax + ecx*8]
test eax, eax
mov edx, dword [esi]
je 0x46b260
cmp byte [eax], 0
jne 0x46b260
mov eax, dword [0x526020]
mov ecx, dword [0x514f00]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x46b517
cmp byte [0x52601c], 0
mov edx, dword [esi]
jne 0x46b32b
jmp 0x46b260
mov eax, dword [edx + 4]
test eax, eax
jne 0x46b4b4
push edi
call fcn.00490660
jmp 0x46b338
mov eax, dword [edx + 4]
test eax, eax
je 0x46b32b
cmp byte [eax + 0x20], 0
je 0x46b32b
mov ebx, dword [eax + 0x30]
mov dword [eax + 0x30], 0
test ebx, ebx
je 0x46b32b
lock dec dword [ebx]
jne 0x46b32b
mov ecx, ebx
call fcn.00409d50
push ebx
call fcn.00494aa1
mov edx, dword [esi]
add esp, 4
jmp 0x46b32b
mov eax, dword [ecx + 0xf8]
mov ecx, dword [ecx + 0xfc]
mov edx, dword [ebx + 4]
cmp dword [ebx], eax
sbb edx, ecx
mov edx, dword [esi]
jge 0x46b327
mov dword [ebx], eax
mov dword [ebx + 4], ecx
jmp 0x46b327
push edi
call fcn.00455550
mov ecx, dword [esi]
add esp, 4
jmp 0x46b08c
call dword [section..00cfg]
push ebx
call ecx
add esp, 4
mov eax, dword [ebx]
mov edx, dword [ebx + 4]
jmp 0x46b2f6
mov cl, byte [edi + 8]
xor ebx, ebx
jmp 0x46b139
cmp byte [esi + 0x24], 0
je 0x46b338
cmp byte [eax + 8], 0
jne 0x46b338
call fcn.004eb200
jmp 0x46b338
push 0x524ae0
call fcn.004099e0
add esp, 4
test al, al
je 0x46b79b
mov dword [0x524ae8], 0
mov dword [0x524ae4], 0xffffffff
mov ebx, 0x524ae4
mov ecx, 0x524ae4
push 0
call fcn.00404c70
mov dword [0x524ae0], ebx
jmp 0x46b009
push 0x526020
call fcn.00494ba0
add esp, 4
cmp dword [0x526020], 0xffffffff
jne 0x46b3ee
mov ecx, dword [0x516838]
test ecx, ecx
je 0x46b545
push str.enable_background_thread_pool
call fcn.0048adb0
mov byte [0x52601c], 1
push 0x526020
call fcn.00495b95
add esp, 4
jmp 0x46b3ee
push 0x526010
call fcn.004099e0
add esp, 4
test al, al
je 0x46b7a6
mov dword [0x526018], 0
mov dword [0x526014], 0xffffffff
mov edi, 0x526014
mov ecx, 0x526014
push 0
call fcn.00404c70
mov dword [0x526010], edi
jmp 0x46b205
push 0x524aec
call fcn.004099e0
add esp, 4
test al, al
je 0x46b7b1
mov dword [0x524af4], 0
mov dword [0x524af0], 0xffffffff
mov ebx, 0x524af0
mov ecx, 0x524af0
push 0
call fcn.00404c70
mov dword [0x524aec], ebx
jmp 0x46b09d
push 0x524aec
call fcn.004099e0
add esp, 4
test al, al
je 0x46b7bc
mov dword [0x524af4], 0
mov dword [0x524af0], 0xffffffff
mov edi, 0x524af0
mov ecx, 0x524af0
push 0
call fcn.00404c70
mov dword [0x524aec], edi
jmp 0x46b1d1
cmp dword [esi], 0
je 0x46b1f6
call fcn.004048c0
jmp 0x46b1e6
push edi
call fcn.00455550
mov edx, dword [esi]
add esp, 4
jmp 0x46b120
call fcn.004d7a40
mov edx, dword [esi]
mov ebx, eax
jmp 0x46b178
push ebx
call fcn.00455550
mov ecx, dword [esi + 0x14]
mov edx, dword [esi]
add esp, 4
jmp 0x46b1a4
lea eax, [esi + 0x28]
mov ecx, ebx
push eax
push 0xf0
push 0
push dword [esi + 0x10]
call fcn.004d7280
mov edx, dword [esi]
mov dword [edx + 0x10], eax
jmp 0x46b1ae
mov eax, dword [eax + 0xc]
mov ecx, dword [esi]
cmp eax, dword [ecx + 0x10]
mov ebx, dword [esi + 0x14]
jbe 0x46b345
xor eax, eax
dec eax
lea ecx, [esi + 0x38]
mov dword [ecx + 4], eax
mov dword [ecx], eax
push ecx
call fcn.00492f00
add esp, 4
mov ecx, ebx
call fcn.004d76a0
mov ebx, eax
lea eax, [esi + 0x38]
movsd xmm0, qword [eax]
lea edx, [esi + 0x28]
movsd qword [edx], xmm0
mov eax, 8
mov ecx, ebx
push eax
push edx
push eax
push 0xc
push str.timestamp_us
call fcn.004d6fb0
mov eax, edi
sar eax, 0x1f
lea ecx, [esi + 0x28]
mov dword [ecx + 4], eax
mov dword [ecx], edi
mov eax, ecx
mov ecx, ebx
mov edx, 8
push edx
push eax
push edx
push 0xd
push str.blocking_type
call fcn.004d6fb0
jmp 0x46b345
mov ecx, ebx
call fcn.004e02d0
mov eax, dword [esi]
mov byte [eax + 0x20], 0
jmp 0x46b28b
mov eax, dword [0x521208]
mov dword [esi + 0xc], eax
mov ecx, dword [0x52120c]
mov dword [esi + 0x18], ecx
push ecx
push eax
push edi
push ebx
call fcn.004b5fc0
mov dword [esi + 4], eax
mov dword [esi + 0x1c], edx
mul dword [esi + 0xc]
mov dword [esi + 0x20], eax
mov ecx, dword [esi + 4]
imul ecx, dword [esi + 0x18]
add edx, ecx
mov eax, dword [esi + 0x1c]
imul ecx, eax, 0xf4240
mov dword [esi + 8], ecx
imul eax, dword [esi + 0xc]
add eax, edx
sub ebx, dword [esi + 0x20]
sbb edi, eax
mov ecx, 0xf4240
mov eax, dword [esi + 4]
mul ecx
mov dword [esi + 4], eax
add edx, dword [esi + 8]
mov dword [esi + 8], edx
mov eax, ebx
mul ecx
imul ecx, edi, 0xf4240
add edx, ecx
push dword [esi + 0x18]
push dword [esi + 0xc]
push edx
push eax
call fcn.004b5fc0
add eax, dword [esi + 4]
adc edx, dword [esi + 8]
jmp 0x46b2ee
mov ebx, dword [0x524ae0]
jmp 0x46b009
mov edi, dword [0x526010]
jmp 0x46b205
mov ebx, dword [0x524aec]
jmp 0x46b09d
mov edi, dword [0x524aec]
jmp 0x46b1d1