Function at 0x476470
Capabilities:
Get thread local storage value

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x100
mov esi, dword [ebp + 8]
mov eax, dword [0x511014]
xor eax, ebp
mov dword [esp + 0xf8], eax
mov eax, dword [0x521410]
mov ecx, dword [0x514f00]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x4767c1
cmp byte [esi], 0
je 0x47675c
lea eax, [ebp + 0x10]
mov ecx, dword [eax]
mov dword [esp + 0x10], ecx
mov eax, dword [eax + 4]
mov dword [esp + 0x14], eax
mov eax, dword [0x5211cc]
mov ecx, dword [0x514f00]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x4767f9
cmp byte [0x5211c8], 0
je 0x476889
lea eax, [esp + 0x28]
push eax
call fcn.00476b10
add esp, 4
mov ecx, dword [0x514bd0]
cmp ecx, 0x493220
jne 0x47679d
xor eax, eax
lea ebx, [esp + 0x30]
mov dword [ebx + 4], eax
mov dword [ebx], eax
push ebx
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov edi, dword [ebx]
mov ebx, dword [ebx + 4]
mov eax, 0x7bd05af6
cmp eax, edi
mov eax, 0x863
sbb eax, ebx
jl 0x476a07
mov ecx, 0xf4240
mov eax, edi
mul ecx
imul ecx, ebx, 0xf4240
add ecx, edx
push dword [0x52120c]
push dword [0x521208]
push ecx
push eax
call fcn.004b5fc0
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], edx
mov esi, dword [0x5212fc]
mov edi, dword [0x5212f8]
mov ebx, edi
add ebx, 0xffffffff
mov ecx, esi
adc ecx, 0x7fffffff
add ebx, 2
adc ecx, 0
cmp ebx, 2
sbb ecx, 0
jb 0x476898
sub eax, edi
sbb edx, esi
seto cl
mov edi, edx
sar edi, 0x1f
lea ebx, [edi - 0x80000000]
test cl, cl
cmove edi, eax
test cl, cl
cmove ebx, edx
mov dword [esp + 0x20], edi
mov dword [esp + 0x24], ebx
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov edi, eax
mov eax, dword [ebp + 8]
cmp byte [eax], 0
je 0x47675c
push dword [0x514c54]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, eax
and ecx, 3
cmp ecx, 2
jne 0x476772
mov dword [esp + 0xec], 0
mov dword [esp + 0xe8], 0x11e1a300
lea esi, [esp + 0x30]
push 0x1db
push str....._base_threading_thread_local_storage.cc
push 0x50535a
push esi
call fcn.00454af0
add esp, 4
movsd xmm0, qword [esp + 0xf4]
movsd qword [esp + 4], xmm0
mov dword [esp], esi
call fcn.004be150
add esp, 0xc
mov eax, 0x5213bc
mov ecx, 0x5213bc
shr ecx, 0x13
mov ecx, dword [ecx*4 + 0x518914]
mov edx, 0x5213bc
shr edx, 0xe
bt ecx, edx
jb 0x4768e4
shr eax, 0x15
mov byte [eax + 0x520914], 1
push dword [0x514c54]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
and eax, 0xfffffffc
je 0x4767b7
mov ebx, dword [ebp + 0xc]
mov ecx, dword [0x5213bc]
mov dword [eax + ecx*8], 0x5213bc
mov ecx, dword [0x5213c0]
mov edx, dword [0x5213bc]
mov dword [eax + edx*8 + 4], ecx
mov eax, dword [ebp + 8]
mov al, byte [eax]
test al, 8
jne 0x4768f6
test al, 1
je 0x4768c6
mov ecx, dword [0x521404]
test ecx, ecx
je 0x47691c
mov eax, dword [esp + 0x10]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x34], eax
call dword [section..00cfg]
sub esp, 0x20
movsd xmm0, qword [esp + 0x50]
movsd qword [esp + 8], xmm0
lea eax, [esp + 0x48]
mov dword [esp + 0x1c], eax
lea eax, [esp + 0x40]
mov dword [esp + 0x18], eax
mov dword [esp + 0x10], edi
mov dword [esp + 4], ebx
mov eax, dword [ebp + 8]
mov dword [esp], eax
mov dword [esp + 0x14], 0
call ecx
add esp, 0x20
push dword [0x514c54]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
and eax, 0xfffffffc
je 0x47673c
mov ecx, dword [0x5213bc]
mov dword [eax + ecx*8], 0
mov ecx, dword [0x5213c0]
mov edx, dword [0x5213bc]
mov dword [eax + edx*8 + 4], ecx
mov eax, 0x5213bc
mov ecx, 0x5213bc
shr ecx, 0x13
mov ecx, dword [ecx*4 + 0x518914]
shr eax, 0xe
bt ecx, eax
jb 0x47690a
mov ecx, dword [esp + 0xf8]
xor ecx, ebp
call fcn.00496ce3
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
and eax, 0xfffffffc
je 0x476637
mov ecx, dword [0x5213bc]
mov edx, dword [eax + ecx*8 + 4]
cmp edx, dword [0x5213c0]
jne 0x476637
cmp dword [eax + ecx*8], 0
je 0x476637
jmp 0x47675c
call dword [section..00cfg]
lea edi, [esp + 0x30]
push edi
call ecx
add esp, 4
mov eax, dword [edi]
mov edx, dword [edi + 4]
jmp 0x47656e
call fcn.004048c0
jmp 0x47667b
push 0x521410
call fcn.00494ba0
add esp, 4
cmp dword [0x521410], 0xffffffff
jne 0x4764b1
mov ecx, 0x521210
push 0
call fcn.0041e1d0
push 0x521410
call fcn.00495b95
add esp, 4
jmp 0x4764b1
push 0x5211cc
call fcn.00494ba0
add esp, 4
cmp dword [0x5211cc], 0xffffffff
jne 0x4764eb
lea edi, [esp + 0x5c]
xorps xmm0, xmm0
movups xmmword [edi - 0x11], xmm0
movaps xmmword [edi - 0x1c], xmm0
movaps xmmword [edi - 0x2c], xmm0
mov ecx, edi
push 0x500430
call fcn.004be240
xor eax, eax
mov dword [edi + 0x10], eax
mov dword [edi + 0xc], eax
mov dword [edi + 0x14], eax
lea edi, [esp + 0x30]
mov ecx, edi
push eax
call fcn.0041cf40
mov bl, byte [edi + 0x29]
cmp byte [edi + 0x43], 0
jns 0x47685e
push dword [esp + 0x68]
call fcn.00494aa1
add esp, 4
cmp byte [esp + 0x67], 0
jns 0x476871
push dword [esp + 0x5c]
call fcn.00494aa1
add esp, 4
mov byte [0x5211c8], bl
push 0x5211cc
call fcn.00495b95
add esp, 4
jmp 0x4764eb
xor eax, eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x28], eax
jmp 0x476505
xor eax, edi
xor edx, esi
or edx, eax
je 0x476afe
mov eax, 0x7fffffff
xor ecx, ecx
dec ecx
mov edi, ecx
add edi, 1
mov ebx, 0x7fffffff
adc ebx, 0
test esi, esi
cmovs edi, ecx
cmovs ebx, eax
jmp 0x4765b5
xor eax, eax
mov dword [esp + 0xec], eax
mov dword [esp + 0xe8], eax
mov dword [esp + 0xf0], eax
xor ebx, ebx
jmp 0x4769b6
push 0x5213bc
call fcn.00455550
add esp, 4
jmp 0x476666
push ebx
mov esi, dword [ebp + 8]
push esi
call fcn.004e2d90
add esp, 8
mov al, byte [esi]
jmp 0x4766a8
push 0x5213bc
call fcn.00454d60
add esp, 4
jmp 0x47675c
xor eax, eax
mov dword [esp + 0xec], eax
mov dword [esp + 0xe8], eax
mov dword [esp + 0xf0], eax
lea ecx, [esp + 0x30]
mov dword [ecx + 4], 0xffffff00
mov dword [ecx], 0x521214
mov eax, dword [esp + 0x10]
mov dword [esp + 0xe0], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0xe4], eax
sub esp, 8
movsd xmm0, qword [esp + 0xe8]
movsd qword [esp], xmm0
call fcn.004d9830
add esp, 8
mov edi, eax
test eax, eax
je 0x47698a
lea eax, [esp + 0x28]
lea edx, [esp + 0x20]
mov ecx, edi
push eax
push edx
call fcn.004def70
mov eax, dword [0x521300]
test al, 8
jne 0x476ac1
cmp byte [esp + 0x34], 0
je 0x4769a8
push dword [esp + 0x30]
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov bl, byte [esp + 0xf3]
mov eax, dword [esp + 0xec]
mov ecx, ebx
and cl, 0x7f
test bl, bl
movzx esi, cl
cmovs esi, eax
test esi, esi
je 0x4769d9
push 2
call fcn.004817e0
add esp, 4
test al, al
jne 0x476a99
mov eax, dword [ebp + 8]
test byte [eax], 0x10
jne 0x476a8c
cmp byte [esp + 0xf3], 0
jns 0x47670e
push dword [esp + 0xe8]
call fcn.00494aa1
add esp, 4
jmp 0x47670e
mov ecx, dword [0x521208]
mov eax, dword [0x52120c]
mov dword [esp + 0xc], eax
push eax
push ecx
mov dword [esp + 0x10], ecx
mov esi, ecx
push ebx
push edi
call fcn.004b5fc0
mov dword [esp + 0x18], edx
mov ecx, eax
mul esi
mov dword [esp + 4], eax
mov eax, ecx
imul ecx, dword [esp + 0xc]
add edx, ecx
mov ecx, dword [esp + 0x18]
imul esi, ecx, 0xf4240
mov dword [esp + 0x1c], esi
imul ecx, dword [esp + 8]
add ecx, edx
sub edi, dword [esp + 4]
sbb ebx, ecx
mov ecx, 0xf4240
mul ecx
mov dword [esp + 4], eax
mov esi, edx
add esi, dword [esp + 0x1c]
mov eax, edi
mul ecx
imul ecx, ebx, 0xf4240
add edx, ecx
push dword [esp + 0xc]
push dword [esp + 0xc]
push edx
push eax
call fcn.004b5fc0
add eax, dword [esp + 4]
adc edx, esi
jmp 0x476566
mov ecx, dword [ebp + 8]
call fcn.004d97c0
jmp 0x4769e5
lea edi, [esp + 0x30]
mov ecx, edi
push 2
push 0x80d
push str....._base_trace_event_trace_log.cc
call fcn.004076e0
lea eax, [esp + 0x38]
test bl, bl
jns 0x476ae0
mov ecx, dword [esp + 0xe8]
jmp 0x476ae7
lea eax, [esp + 0x20]
lea ecx, [esp + 0xe8]
mov edx, 0x45
push edi
push eax
call fcn.004d9380
add esp, 8
jmp 0x476997
lea ecx, [esp + 0xe8]
push esi
push ecx
push eax
call fcn.004be490
add esp, 0xc
mov ecx, edi
call fcn.00409090
jmp 0x4769d9
int3