Function at 0x519ba0
Capabilities:
Get thread local storage value

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x10
mov edx, dword [ebp + 0xc]
mov eax, dword [edx + 0x38]
mov ecx, eax
and eax, 0xfffff
push ebx
mov ebx, eax
mov eax, dword [ebp + 8]
and ecx, 0xfff00000
test byte [eax + 0xae], 0x40
push esi
push edi
mov dword [ebp - 0xc], ecx
mov byte [ebp - 1], 0
je 0x519c0a
mov esi, ebx
and esi, 0xfffff
cmp byte [ebp + 0x10], 0
je 0x519bff
cmp ecx, 0x74800000
jne 0x519bf4
or esi, 0x73200000
jmp 0x519e74
or esi, 0x73000000
jmp 0x519e74
or esi, 0x73100000
jmp 0x519e74
cmp byte [ebp + 0x10], 0
je 0x519d4c
cmp ecx, 0x73600000
ja 0x519d12
je 0x519cff
cmp ecx, 0x10f00000
je 0x519c4d
cmp ecx, 0x73500000
jne 0x519f3c
mov esi, ebx
and esi, 0xfffff
or esi, 0x73900000
jmp 0x519e74
mov ecx, dword [edx + 4]
mov edx, dword [ecx]
mov ecx, dword [edx + 0x10]
mov eax, dword [ecx + 8]
mov edi, ebx
and edi, 0xfffff
mov esi, edi
and eax, 0x208
xor edx, edx
or esi, 0x73000000
or eax, edx
mov dword [ebp - 8], ecx
je 0x519cee
mov ecx, dword [ecx + 4]
test ecx, ecx
je 0x519cdc
push 0x69
push ecx
call sub.msvcrt.dll_strchr
add esp, 8
test eax, eax
jne 0x519cdc
mov eax, dword [ebp - 8]
mov ecx, dword [eax + 4]
push 0x49
push ecx
call sub.msvcrt.dll_strchr
add esp, 8
test eax, eax
jne 0x519cdc
mov edx, dword [ebp - 8]
mov eax, dword [edx + 4]
push 0x62
push eax
call sub.msvcrt.dll_strchr
add esp, 8
test eax, eax
jne 0x519cdc
mov ecx, dword [ebp - 8]
mov edx, dword [ecx + 4]
push 0x42
push edx
call sub.msvcrt.dll_strchr
add esp, 8
test eax, eax
jne 0x519cdc
mov eax, dword [ebp - 8]
mov eax, dword [eax + 8]
and eax, 0x800
xor ecx, ecx
or eax, ecx
jne 0x519cee
mov ecx, dword [ebp + 0xc]
mov edx, dword [ecx + 4]
mov eax, dword [edx]
cmp dword [eax + 0x24], 0xffffffff
je 0x519e74
or edi, 0x73b00000
mov esi, edi
mov byte [ebp - 1], 1
jmp 0x519e74
mov esi, ebx
and esi, 0xfffff
or esi, 0x73a00000
jmp 0x519e74
cmp ecx, 0x73700000
je 0x519d39
cmp ecx, 0x73800000
jne 0x519f3c
mov esi, ebx
and esi, 0xfffff
or esi, 0x73c00000
jmp 0x519e74
mov esi, ebx
and esi, 0xfffff
or esi, 0x73b00000
jmp 0x519e74
cmp ecx, 0x73600000
ja 0x519e42
je 0x519e32
cmp ecx, 0x10f00000
je 0x519d85
cmp ecx, 0x73500000
jne 0x519f3c
mov esi, ebx
and esi, 0xfffff
or esi, 0x73d00000
jmp 0x519e74
mov ecx, edx
mov edx, dword [ecx + 4]
mov eax, dword [edx]
mov ecx, dword [eax + 0x10]
mov eax, dword [ecx + 8]
mov edi, ebx
and edi, 0xfffff
mov esi, edi
and eax, 0x208
xor edx, edx
or esi, 0x73100000
or eax, edx
mov dword [ebp - 8], ecx
je 0x519e24
mov ecx, dword [ecx + 4]
test ecx, ecx
je 0x519e16
push 0x69
push ecx
call sub.msvcrt.dll_strchr
add esp, 8
test eax, eax
jne 0x519e16
mov ecx, dword [ebp - 8]
mov edx, dword [ecx + 4]
push 0x49
push edx
call sub.msvcrt.dll_strchr
add esp, 8
test eax, eax
jne 0x519e16
mov eax, dword [ebp - 8]
mov ecx, dword [eax + 4]
push 0x62
push ecx
call sub.msvcrt.dll_strchr
add esp, 8
test eax, eax
jne 0x519e16
mov edx, dword [ebp - 8]
mov eax, dword [edx + 4]
push 0x42
push eax
call sub.msvcrt.dll_strchr
add esp, 8
test eax, eax
jne 0x519e16
mov ecx, dword [ebp - 8]
mov eax, dword [ecx + 8]
and eax, 0x800
xor ecx, ecx
or eax, ecx
jne 0x519e24
mov edx, dword [ebp + 0xc]
mov eax, dword [edx + 4]
mov ecx, dword [eax]
cmp dword [ecx + 0x24], 0xffffffff
je 0x519e74
or edi, 0x73f00000
mov esi, edi
mov byte [ebp - 1], 1
jmp 0x519e74
mov esi, ebx
and esi, 0xfffff
or esi, 0x73e00000
jmp 0x519e74
cmp ecx, 0x73700000
je 0x519e66
cmp ecx, 0x73800000
jne 0x519f3c
mov esi, ebx
and esi, 0xfffff
or esi, 0x74000000
jmp 0x519e74
mov esi, ebx
and esi, 0xfffff
or esi, 0x73f00000
mov eax, dword [0x776138]
test eax, eax
jge 0x519e81
xor eax, eax
jmp 0x519e88
push eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
cmp dword [eax + 0x10], 0
je 0x519eaf
mov ecx, dword [eax + 0x10]
test ecx, ecx
jne 0x519e99
mov edi, ecx
jmp 0x519ebd
mov edx, dword [ecx]
test edx, edx
mov dword [eax + 0x10], edx
jne 0x519ea5
mov dword [eax + 0x14], edx
mov dword [ecx], 0xfefefefe
mov edi, ecx
jmp 0x519ebd
mov ecx, dword [eax + 0xc]
push 0x10
push 0x40
call fcn.007515ae
mov edi, eax
xor eax, eax
cmp edi, eax
je 0x519f3c
or ecx, 0xffffffff
cmp byte [ebp + 0x10], al
mov dword [edi], eax
mov dword [edi + 8], eax
mov dword [edi + 0x10], ecx
mov dword [edi + 0x38], eax
mov dword [edi + 4], eax
mov word [edi + 0x3c], ax
mov dword [edi + 0xc], eax
mov word [edi + 0x3e], ax
mov dword [edi + 0x14], eax
mov dword [edi + 0x18], eax
mov dword [edi + 0x1c], eax
mov dword [edi + 0x20], ecx
mov dword [edi + 0x24], eax
mov dword [edi + 0x30], eax
mov dword [edi + 0x34], eax
je 0x519f18
cmp dword [ebp - 0xc], 0x10f00000
jne 0x519f0f
cmp byte [ebp - 1], al
jne 0x519f0f
mov edx, ebx
mov ecx, ebx
mov eax, esi
jmp 0x519f29
lea ecx, [ebx + ebx]
mov edx, ebx
mov eax, esi
jmp 0x519f29
mov eax, esi
and eax, 0xfff00001
or eax, 1
mov edx, 1
xor ecx, ecx
push 0
push edi
call fcn.004cc5e0
test eax, eax
jge 0x519f47
mov ebx, edi
call fcn.004c9ab0
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
mov esi, dword [ebp + 0xc]
mov edx, dword [esi + 0x30]
mov bl, byte [ebp + 0x10]
test bl, bl
mov dword [edi + 0x30], edx
mov eax, dword [esi + 0x34]
mov dword [edi + 0x34], eax
mov dword [ebp + 0xc], 0
je 0x519f7e
mov ecx, dword [esi + 8]
mov edx, dword [esi + 0xc]
mov eax, dword [edi + 0xc]
add ecx, ecx
add ecx, ecx
push ecx
push edx
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
jmp 0x519fd3
fldz
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x2920]
mov edx, dword [edi + 0xc]
sub esp, 8
fstp qword [esp]
push 0
push 0
push 0
push 0
push ecx
push edx
push eax
call fcn.004ca3c0
test eax, eax
mov dword [ebp + 0xc], eax
jl 0x519f35
mov eax, dword [edi + 0xc]
mov eax, dword [eax]
mov byte [eax + 0x58], 0
mov byte [eax + 0x59], 0
mov dword [eax + 0x5c], 0xffffffff
mov ecx, dword [edi + 0xc]
mov edx, dword [esi + 0xc]
mov eax, dword [ecx]
mov ecx, dword [edx]
mov edx, dword [ecx + 0x30]
mov dword [eax + 0x30], edx
mov cl, byte [ecx + 0x34]
mov byte [eax + 0x34], cl
mov edx, dword [edi]
mov eax, dword [esi + 4]
mov ecx, dword [edi + 4]
add edx, edx
add edx, edx
push edx
push eax
push ecx
call sub.msvcrt.dll_memcpy
add esp, 0xc
test bl, bl
je 0x51a0ca
cmp byte [ebp - 1], 0
je 0x51a0ca
mov edx, dword [ebp + 8]
mov eax, dword [edx + 8]
mov dword [ebp + 0x10], 0
or esi, 0xffffffff
mov dword [ebp - 8], eax
add esi, 1
cmp esi, dword [ebp - 8]
jae 0x51a07a
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 0x30]
mov ecx, dword [edx + esi*4]
cmp dword [ecx + 0x24], 0
je 0x51a00f
mov eax, dword [ecx + 8]
and eax, 0x100
xor edx, edx
or eax, edx
je 0x51a00f
mov edx, dword [ebp + 8]
mov ebx, dword [edx + 0x30]
mov ecx, dword [ecx + 0x24]
mov eax, dword [ecx + 0x14]
mov ecx, dword [ecx + 0x28]
cmp ecx, dword [ebp + 0x10]
jb 0x51a04e
add ecx, 1
mov dword [ebp + 0x10], ecx
test eax, eax
je 0x51a059
mov ecx, eax
mov eax, dword [eax + 0x14]
jmp 0x51a040
add esi, 1
cmp esi, dword [ebp - 8]
jae 0x51a07a
mov ecx, dword [ebx + esi*4]
cmp dword [ecx + 0x24], 0
je 0x51a059
mov eax, dword [ecx + 8]
and eax, 0x100
xor edx, edx
or eax, edx
je 0x51a059
jmp 0x51a03a
mov esi, dword [ebp + 8]
add esi, 0xaae8
cmp dword [esi], 0xffffffff
jne 0x51a0bd
fldz
mov eax, dword [ebp + 0x10]
sub esp, 8
fstp qword [esp]
push 0x20
push 0
push 0
push eax
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x28e0]
push ecx
push esi
push eax
call fcn.004ca3c0
test eax, eax
jl 0x519f35
mov edx, dword [edi + 4]
mov ecx, dword [esi]
mov dword [edx + 4], ecx
jmp 0x51a0cd
mov edx, dword [edi + 4]
mov ecx, dword [esi]
mov eax, dword [ebp + 0xc]
mov dword [edx + 4], ecx
jmp 0x51a0cd
mov eax, dword [ebp + 0xc]
test eax, eax
jl 0x519f35
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc