Function at 0x1c71d60
Capabilities:
Get thread local storage value

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x20
mov dword [ebp - 0x2c], edx
mov edx, dword [ebp + 8]
mov eax, dword [0x1d01324]
xor eax, ebp
mov dword [ebp - 0x10], eax
mov edi, dword [ecx + 4]
test edi, edi
je 0x1c71db1
lea ebx, [ecx + 4]
mov eax, dword [edx]
jmp 0x1c71d9a
mov edx, dword [edi]
mov ebx, edi
test edx, edx
je 0x1c71db4
mov edi, edx
mov edx, dword [edi + 0x10]
cmp eax, edx
jb 0x1c71d90
cmp edx, eax
jae 0x1c71db6
lea ebx, [edi + 4]
mov edx, dword [edi + 4]
test edx, edx
jne 0x1c71d98
jmp 0x1c71db6
lea edi, [ecx + 4]
mov ebx, edi
mov eax, dword [ebx]
test eax, eax
je 0x1c71dc5
mov esi, eax
xor eax, eax
jmp 0x1c71ef0
mov dword [ebp - 0x28], ecx
mov eax, dword [0x1d0b680]
mov ecx, dword [0x1d04a8c]
mov edx, dword fs:[0x2c]
mov ecx, dword [edx + ecx*4]
cmp eax, dword [ecx + 4]
jg 0x1c7211b
mov byte [ebp - 0x19], 0
cmp byte [0x1d0a4e0], 2
jne 0x1c71dfb
mov al, byte [0x1d021a4]
cmp byte [0x1d0a4e2], 0
je 0x1c71f0c
mov esi, dword [0x1d0b694]
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x20], eax
push esi
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov esi, eax
mov eax, dword [ebp - 0x20]
test eax, eax
jne 0x1c71f66
cmp esi, 1
jbe 0x1c71f76
add dword [esi + 0x308], 1
adc dword [esi + 0x30c], 0
add dword [esi + 0x818], 1
adc dword [esi + 0x81c], 0
add dword [esi + 0x318], 1
adc dword [esi + 0x31c], 0
cmp word [0x1d021a8], 0xb
mov edx, dword [ebp - 0x28]
jbe 0x1c72006
mov ecx, dword [esi + 0x60]
test ecx, ecx
je 0x1c720a7
add dword [esi + 0x320], 1
adc dword [esi + 0x324], 0
mov eax, dword [ecx]
test eax, eax
je 0x1c71ea3
mov edx, ecx
mov ecx, eax
not ecx
cmp dword [edx + 4], ecx
mov ecx, edx
mov edx, dword [ebp - 0x28]
je 0x1c71ea5
call fcn.01c56c20
xor eax, eax
bswap eax
add byte [esi + 0x64], 0xff
mov dword [esi + 0x60], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax]
mov dword [ecx + 0x10], eax
mov dword [ecx], 0
mov dword [ecx + 4], 0
mov dword [ecx + 8], edi
mov dword [ebx], ecx
mov eax, dword [edx]
mov eax, dword [eax]
test eax, eax
je 0x1c71ed8
mov esi, ecx
mov dword [edx], eax
mov eax, dword [ebx]
jmp 0x1c71edc
mov esi, ecx
mov eax, ecx
push eax
push dword [edx + 4]
mov edi, edx
call fcn.01c25da9
add esp, 8
add dword [edi + 8], 1
mov al, 1
mov edi, dword [ebp - 0x2c]
mov dword [edi], esi
mov byte [edi + 4], al
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.01cb3141
mov eax, edi
add esp, 0x20
pop esi
pop edi
pop ebx
pop ebp
ret
mov dword [ebp - 0x20], 1
mov dword [ebp - 0x24], 0
mov esi, dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
push 0x1d0a4e8
call esi
test al, al
jne 0x1c7207d
mov ecx, dword [ebp - 0x20]
mov eax, ecx
test ecx, ecx
jle 0x1c71f45
pause
add eax, 0xffffffff
jne 0x1c71f38
mov eax, dword [ebp - 0x20]
add dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x20]
add eax, eax
cmp eax, 0x40
mov ecx, 0x40
cmovge eax, ecx
mov dword [ebp - 0x20], eax
cmp dword [ebp - 0x24], 0x3e8
jl 0x1c71f20
jmp 0x1c72073
push eax
call dword [sym.imp.KERNEL32.dll_SetLastError]
cmp esi, 1
ja 0x1c71e34
je 0x1c72022
mov byte [0x1d0a4e2], 0
push 0x1d0a4e0
call fcn.01c74450
add esp, 4
mov esi, eax
mov byte [0x1d0a4e2], 1
add dword [eax + 0x308], 1
adc dword [eax + 0x30c], 0
add dword [eax + 0x818], 1
adc dword [eax + 0x81c], 0
add dword [eax + 0x318], 1
adc dword [eax + 0x31c], 0
cmp word [0x1d021a8], 0xb
jbe 0x1c72006
mov eax, dword [esi + 0x60]
test eax, eax
je 0x1c72213
add dword [esi + 0x320], 1
adc dword [esi + 0x324], 0
mov edx, eax
mov eax, dword [eax]
test eax, eax
je 0x1c72106
mov ecx, eax
not ecx
cmp dword [edx + 4], ecx
mov ecx, edx
je 0x1c7210a
jmp 0x1c71e9e
add dword [esi + 0x338], 1
adc dword [esi + 0x33c], 0
add dword [esi + 0x328], 1
adc dword [esi + 0x32c], 0
mov dword [ebp - 0x20], 1
mov dword [ebp - 0x24], 0
mov esi, dword [sym.imp.KERNEL32.dll_TryAcquireSRWLockExclusive]
push 0x1d0a4e8
call esi
test al, al
jne 0x1c7207d
mov ecx, dword [ebp - 0x20]
mov eax, ecx
test ecx, ecx
jle 0x1c72057
pause
add eax, 0xffffffff
jne 0x1c7204a
mov eax, dword [ebp - 0x20]
add dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x20]
add eax, eax
cmp eax, 0x40
mov ecx, 0x40
cmovge eax, ecx
mov dword [ebp - 0x20], eax
cmp dword [ebp - 0x24], 0x3e8
jl 0x1c72036
mov ecx, 0x1d0a4e8
call fcn.01c76bc0
mov eax, dword [0x1d0a670]
mov esi, dword [eax]
test esi, esi
je 0x1c721f4
mov byte [ebp - 0x19], 0
mov ecx, dword [esi]
test ecx, ecx
mov dword [ebp - 0x20], esi
je 0x1c720db
mov edx, ecx
not edx
cmp dword [esi + 4], edx
je 0x1c720dd
jmp 0x1c71e9e
movdqu xmm0, xmmword [esi + 0x328]
pcmpeqd xmm1, xmm1
psubq xmm0, xmm1
movdqu xmmword [esi + 0x328], xmm0
mov ecx, esi
push 0xc
call fcn.01c748f0
mov edx, dword [ebp - 0x28]
mov ecx, dword [esi + 0x60]
test ecx, ecx
jne 0x1c71e88
jmp 0x1c72022
xor ecx, ecx
bswap ecx
mov dword [eax], ecx
add word [eax + 0xc], 1
push 0x1d0a4e8
call dword [sym.imp.KERNEL32.dll_ReleaseSRWLockExclusive]
mov ecx, dword [ebp - 0x20]
test ecx, ecx
mov edx, dword [ebp - 0x28]
jne 0x1c71eae
xor ecx, ecx
jmp 0x1c71eae
xor eax, eax
mov ecx, edx
bswap eax
add byte [esi + 0x64], 0xff
mov dword [esi + 0x60], eax
mov edx, dword [ebp - 0x28]
jmp 0x1c71eae
push 0x1d0b680
call fcn.01cb3187
add esp, 4
cmp dword [0x1d0b680], 0xffffffff
jne 0x1c71de9
mov dword [ebp - 0x18], 0x1000000
mov byte [ebp - 0x14], 0
mov dword [0x1d0a4e0], 0x1000000
mov byte [0x1d0a4e7], 1
mov dword [0x1d0a4e8], 0
push 0x1100
push 0
push 0x1d0a4f0
call fcn.01cb76e0
add esp, 0xc
mov byte [0x1d0b610], 0
mov dword [0x1d0b67c], 0
pxor xmm0, xmm0
movdqu xmmword [0x1d0b614], xmm0
movdqu xmmword [0x1d0b624], xmm0
movdqu xmmword [0x1d0b634], xmm0
movdqu xmmword [0x1d0b644], xmm0
movdqu xmmword [0x1d0b654], xmm0
movdqu xmmword [0x1d0b664], xmm0
mov dword [0x1d0b676], 0
mov dword [0x1d0b672], 0
sub esp, 8
mov al, byte [ebp - 0x14]
mov byte [esp + 4], al
mov eax, dword [ebp - 0x18]
mov dword [esp], eax
mov ecx, 0x1d0a4e0
call fcn.01c74c60
push 0x1d0b680
call fcn.01cb31fd
add esp, 4
jmp 0x1c71de9
lea eax, [ebp - 0x19]
mov ecx, 0x1d0a670
push eax
push 0x14
push 0
push 0x1d0a4e0
call fcn.01c76d00
mov dword [ebp - 0x20], eax
jmp 0x1c720e6
movdqu xmm0, xmmword [esi + 0x328]
pcmpeqd xmm1, xmm1
psubq xmm0, xmm1
movdqu xmmword [esi + 0x328], xmm0
mov ecx, esi
push 0xc
call fcn.01c748f0
mov eax, dword [esi + 0x60]
test eax, eax
jne 0x1c71fe6
jmp 0x1c72022