Function at 0x101a55a0
Capabilities:
Get thread local storage value

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x60
mov eax, dword [0x102b0014]
xor eax, ebp
mov dword [esp + 0x58], eax
xor ecx, ecx
mov dl, 1
xor eax, eax
lock cmpxchg byte [0x102b323c], dl
jne 0x101a58ae
mov eax, dword [0x102b3238]
mov eax, dword [eax + 4]
lock add dword [eax + 8], 1
xchg dword [eax], ecx
mov dword [eax + 0xc], ecx
call fcn.101aafb0
mov edi, eax
mov byte [esp + 0xf], 0
mov dword [esp + 0x10], 0xffffffff
cmp byte [eax], 2
jne 0x101a5603
mov al, byte [0x102b323c]
cmp al, 2
je 0x101a59b8
cmp byte [edi + 2], 0
je 0x101a59c7
mov ebx, dword [0x102b910c]
call dword [sym.imp.kernel32.dll_GetLastError]
mov esi, eax
push ebx
call dword [sym.imp.kernel32.dll_TlsGetValue]
mov ebx, eax
test esi, esi
jne 0x101a58f2
cmp ebx, 2
jb 0x101a5902
add dword [ebx + 0x310], 1
adc dword [ebx + 0x314], 0
mov esi, dword [ebx + 0x110]
test esi, esi
je 0x101a591c
add dword [ebx + 0x318], 1
adc dword [ebx + 0x31c], 0
mov eax, dword [esi]
test eax, eax
je 0x101a5679
mov ecx, eax
not ecx
cmp dword [esi + 4], ecx
jne 0x101a5a71
bswap eax
prefetcht0 byte [eax]
jmp 0x101a567b
bswap eax
add byte [ebx + 0x114], 0xff
mov dword [ebx + 0x110], eax
movzx eax, word [ebx + 0x116]
mov dword [esp + 0x10], eax
sub dword [ebx + 0x308], eax
test esi, esi
je 0x101a594f
mov dword [esi], 0
mov eax, dword [0x102b3228]
mov dword [esi + 4], eax
lea eax, [esi + 0xc]
pxor xmm0, xmm0
movdqu xmmword [esi + 0xc], xmm0
mov dword [esi + 8], eax
mov dword [esi + 0x1d], 0
mov dword [esi + 0x19], 0
mov dword [esi + 0x28], 0
mov dword [esi + 0x24], 0
mov dword [esi + 0x2d], 0
mov dword [esi + 0x29], 0
mov dword [esi + 0x38], 0
mov dword [esi + 0x34], 0
mov dword [esi + 0x3d], 0
mov dword [esi + 0x39], 0
mov dword [esi + 0x44], 0
mov eax, dword [0x102b9104]
mov ecx, dword [0x102b3718]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x101a5a76
lea ecx, [esi + 0x48]
push dword [0x102b90f4]
call fcn.101e50f0
pxor xmm0, xmm0
movdqu xmmword [esi + 0x84], xmm0
mov dword [esi + 0x94], 0x102b3220
test esi, esi
je 0x101a5758
lock add dword [esi], 1
mov eax, dword [0x102b9104]
mov ecx, dword [0x102b3718]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x101a5b86
test esi, esi
je 0x101a5781
lock add dword [esi], 1
mov ebx, dword [ebp + 8]
mov ecx, 0x102b908c
call fcn.101405b0
mov edi, dword [0x102b9088]
mov dword [0x102b9088], esi
test edi, edi
je 0x101a57eb
lock sub dword [edi], 1
jne 0x101a57eb
lea ecx, [edi + 0x48]
call fcn.101e5130
mov ecx, dword [edi + 0x34]
test ecx, ecx
je 0x101a57bb
mov dword [edi + 0x38], ecx
call fcn.101a88b0
mov ecx, dword [edi + 0x24]
test ecx, ecx
je 0x101a57ca
mov dword [edi + 0x28], ecx
call fcn.101a88b0
mov ecx, dword [edi + 0x14]
test ecx, ecx
je 0x101a57d9
mov dword [edi + 0x18], ecx
call fcn.101a88b0
lea ecx, [edi + 8]
mov edx, dword [edi + 0xc]
call fcn.101aa9b0
mov ecx, edi
call fcn.101a88b0
mov ecx, 0x102b908c
call fcn.101405bc
cmp ebx, 1
jne 0x101a58c3
mov eax, dword [0x102b9190]
mov ecx, dword [0x102b3718]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x101a5bbc
mov ecx, 0x102b9178
call fcn.101405b0
mov edi, dword [0x102b9180]
mov dword [0x102b9180], esi
test edi, edi
je 0x101a5886
lock sub dword [edi], 1
jne 0x101a5886
lea ecx, [edi + 0x48]
call fcn.101e5130
mov ecx, dword [edi + 0x34]
test ecx, ecx
je 0x101a5856
mov dword [edi + 0x38], ecx
call fcn.101a88b0
mov ecx, dword [edi + 0x24]
test ecx, ecx
je 0x101a5865
mov dword [edi + 0x28], ecx
call fcn.101a88b0
mov ecx, dword [edi + 0x14]
test ecx, ecx
je 0x101a5874
mov dword [edi + 0x18], ecx
call fcn.101a88b0
lea ecx, [edi + 8]
mov edx, dword [edi + 0xc]
call fcn.101aa9b0
mov ecx, edi
call fcn.101a88b0
mov dword [0x102b918c], 0
mov dword [0x102b9188], 0
mov ecx, 0x102b9178
call fcn.101405bc
mov ecx, 0x102b917c
call fcn.1012ab8c
mov ecx, dword [esp + 0x58]
xor ecx, ebp
call fcn.10205d16
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 4
cmp ebx, 3
jne 0x101a58d1
mov byte [0x102b323c], 2
jmp 0x101a58d8
mov ecx, esi
call fcn.101a4610
test esi, esi
je 0x101a58ae
lock sub dword [esi], 1
jne 0x101a58ae
mov ecx, esi
call fcn.101aa960
mov ecx, esi
call fcn.101a88b0
jmp 0x101a58ae
push esi
call dword [sym.imp.kernel32.dll_SetLastError]
cmp ebx, 2
jae 0x101a5635
lea eax, [esp + 0x10]
mov ecx, edi
push eax
push 0x22
call fcn.101a1710
mov esi, eax
test esi, esi
jne 0x101a56a1
jmp 0x101a594f
add dword [ebx + 0x328], 1
adc dword [ebx + 0x32c], 0
add dword [ebx + 0x320], 1
adc dword [ebx + 0x324], 0
mov ecx, ebx
push 0x22
call fcn.101a3420
mov esi, dword [ebx + 0x110]
test esi, esi
jne 0x101a565f
lea eax, [edi + 0x450]
mov dword [esp + 8], eax
mov ebx, edi
add ebx, 8
mov dword [esp], 1
mov dword [esp + 4], 0
mov esi, dword [sym.imp.kernel32.dll_TryAcquireSRWLockExclusive]
push ebx
call esi
test al, al
jne 0x101a5a31
mov ecx, dword [esp]
mov eax, ecx
test ecx, ecx
jle 0x101a5999
pause
add eax, 0xffffffff
jne 0x101a5987
mov eax, dword [esp + 4]
add eax, dword [esp]
mov dword [esp + 4], eax
mov eax, dword [esp]
add eax, eax
cmp eax, 0x40
mov ecx, 0x40
cmovge eax, ecx
mov dword [esp], eax
cmp dword [esp + 4], 0x3e8
jl 0x101a5973
jmp 0x101a5a2a
call fcn.101a12f0
cmp byte [edi + 2], 0
jne 0x101a560d
lea eax, [edi + 0x450]
mov dword [esp + 8], eax
mov ebx, edi
add ebx, 8
mov dword [esp], 1
mov dword [esp + 4], 0
mov esi, dword [sym.imp.kernel32.dll_TryAcquireSRWLockExclusive]
push ebx
call esi
test al, al
jne 0x101a5a31
mov ecx, dword [esp]
mov eax, ecx
test ecx, ecx
jle 0x101a5a0d
pause
add eax, 0xffffffff
jne 0x101a59fb
mov eax, dword [esp + 4]
add eax, dword [esp]
mov dword [esp + 4], eax
mov eax, dword [esp]
add eax, eax
cmp eax, 0x40
mov ecx, 0x40
cmovge eax, ecx
mov dword [esp], eax
cmp dword [esp + 4], 0x3e8
jl 0x101a59eb
push ebx
call dword [sym.imp.kernel32.dll_AcquireSRWLockExclusive]
mov ecx, dword [esp + 8]
mov eax, dword [ecx]
mov esi, dword [eax]
test esi, esi
je 0x101a5bed
mov byte [esp + 0xf], 0
mov ecx, dword [esi]
test ecx, ecx
je 0x101a5a5c
mov edx, ecx
not edx
cmp dword [esi + 4], edx
jne 0x101a5a71
bswap ecx
prefetcht0 byte [ecx]
jmp 0x101a5a5e
bswap ecx
mov dword [eax], ecx
add word [eax + 0xc], 1
push ebx
call dword [sym.imp.kernel32.dll_ReleaseSRWLockExclusive]
jmp 0x101a56a1
call fcn.1002c4d0
push 0x102b9104
call fcn.1020d865
add esp, 4
cmp dword [0x102b9104], 0xffffffff
jne 0x101a572c
pxor xmm0, xmm0
movdqu xmmword [0x102b90dc], xmm0
movdqu xmmword [0x102b9088], xmm0
movdqu xmmword [0x102b9098], xmm0
movdqu xmmword [0x102b90a8], xmm0
movdqu xmmword [0x102b90b8], xmm0
movdqu xmmword [0x102b90c8], xmm0
mov byte [0x102b90d8], 0
mov dword [0x102b90ec], 0x3f800000
mov dword [0x102b90f0], 0
mov dword [0x102b90f4], 0
pcmpeqd xmm0, xmm0
movdqa xmmword [esp + 0x40], xmm0
movdqa xmmword [esp + 0x30], xmm0
movdqa xmmword [esp + 0x20], xmm0
movdqa xmmword [esp + 0x10], xmm0
mov dword [esp + 0x54], 0xffffffff
mov dword [esp + 0x50], 0xffffffff
lea ecx, [esp + 0x10]
call fcn.101be5d0
mov bh, byte [esp + 0x36]
mov bl, byte [esp + 0x3a]
cmp byte [esp + 0x57], 0
jns 0x101a5b39
push dword [esp + 0x4c]
call fcn.10205096
add esp, 4
cmp byte [esp + 0x4b], 0
jns 0x101a5b4c
push dword [esp + 0x40]
call fcn.10205096
add esp, 4
xor eax, eax
test bh, bh
setne al
test bl, bl
mov ecx, 2
cmove ecx, eax
mov byte [0x102b90f8], cl
mov dword [0x102b90fc], 0
mov byte [0x102b9100], 0
push 0x102b9104
call fcn.1020d865
add esp, 4
jmp 0x101a572c
push 0x102b9104
call fcn.1020d865
add esp, 4
cmp dword [0x102b9104], 0xffffffff
jne 0x101a5779
mov ecx, 0x102b9088
call fcn.101a54b0
push 0x102b9104
call fcn.1020d865
add esp, 4
jmp 0x101a5779
push 0x102b9190
call fcn.1020d865
add esp, 4
cmp dword [0x102b9190], 0xffffffff
jne 0x101a581f
call fcn.101a8e90
push 0x102b9190
call fcn.1020d865
add esp, 4
jmp 0x101a581f
lea eax, [esp + 0xf]
push eax
push 0x4000
push 0x98
push 0
push edi
call fcn.1002bc80
mov esi, eax
test eax, eax
jne 0x101a5a65
xor esi, esi
jmp 0x101a5a65