Function at 0x475590
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 + 0x3c]
mov ecx, eax
and eax, 0xfffff
push ebx
mov ebx, eax
mov eax, dword [ebp + 8]
and ecx, 0xfff00000
test byte [eax + 0xb2], 0x40
push esi
push edi
mov dword [ebp - 0xc], ecx
mov byte [ebp - 1], 0
je 0x4755fa
mov edi, ebx
and edi, 0xfffff
cmp byte [ebp + 0x10], 0
je 0x4755ef
cmp ecx, 0x74800000
jne 0x4755e4
or edi, 0x73200000
jmp 0x475864
or edi, 0x73000000
jmp 0x475864
or edi, 0x73100000
jmp 0x475864
cmp byte [ebp + 0x10], 0
je 0x47573c
cmp ecx, 0x73600000
ja 0x475702
je 0x4756ef
cmp ecx, 0x10f00000
je 0x47563d
cmp ecx, 0x73500000
jne 0x475931
mov edi, ebx
and edi, 0xfffff
or edi, 0x73900000
jmp 0x475864
mov ecx, dword [edx + 4]
mov edx, dword [ecx]
mov ecx, dword [edx + 0x10]
mov eax, dword [ecx + 8]
mov esi, ebx
and esi, 0xfffff
mov edi, esi
and eax, 0x208
xor edx, edx
or edi, 0x73000000
or eax, edx
mov dword [ebp - 8], ecx
je 0x4756de
mov ecx, dword [ecx + 4]
test ecx, ecx
je 0x4756cc
push 0x69
push ecx
call sub.msvcrt.dll_strchr
add esp, 8
test eax, eax
jne 0x4756cc
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 0x4756cc
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 0x4756cc
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 0x4756cc
mov eax, dword [ebp - 8]
mov eax, dword [eax + 8]
and eax, 0x800
xor ecx, ecx
or eax, ecx
jne 0x4756de
mov ecx, dword [ebp + 0xc]
mov edx, dword [ecx + 4]
mov eax, dword [edx]
cmp dword [eax + 0x24], 0xffffffff
je 0x475864
or esi, 0x73b00000
mov edi, esi
mov byte [ebp - 1], 1
jmp 0x475864
mov edi, ebx
and edi, 0xfffff
or edi, 0x73a00000
jmp 0x475864
cmp ecx, 0x73700000
je 0x475729
cmp ecx, 0x73800000
jne 0x475931
mov edi, ebx
and edi, 0xfffff
or edi, 0x73c00000
jmp 0x475864
mov edi, ebx
and edi, 0xfffff
or edi, 0x73b00000
jmp 0x475864
cmp ecx, 0x73600000
ja 0x475832
je 0x475822
cmp ecx, 0x10f00000
je 0x475775
cmp ecx, 0x73500000
jne 0x475931
mov edi, ebx
and edi, 0xfffff
or edi, 0x73d00000
jmp 0x475864
mov ecx, edx
mov edx, dword [ecx + 4]
mov eax, dword [edx]
mov ecx, dword [eax + 0x10]
mov eax, dword [ecx + 8]
mov esi, ebx
and esi, 0xfffff
mov edi, esi
and eax, 0x208
xor edx, edx
or edi, 0x73100000
or eax, edx
mov dword [ebp - 8], ecx
je 0x475814
mov ecx, dword [ecx + 4]
test ecx, ecx
je 0x475806
push 0x69
push ecx
call sub.msvcrt.dll_strchr
add esp, 8
test eax, eax
jne 0x475806
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 0x475806
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 0x475806
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 0x475806
mov ecx, dword [ebp - 8]
mov eax, dword [ecx + 8]
and eax, 0x800
xor ecx, ecx
or eax, ecx
jne 0x475814
mov edx, dword [ebp + 0xc]
mov eax, dword [edx + 4]
mov ecx, dword [eax]
cmp dword [ecx + 0x24], 0xffffffff
je 0x475864
or esi, 0x73f00000
mov edi, esi
mov byte [ebp - 1], 1
jmp 0x475864
mov edi, ebx
and edi, 0xfffff
or edi, 0x73e00000
jmp 0x475864
cmp ecx, 0x73700000
je 0x475856
cmp ecx, 0x73800000
jne 0x475931
mov edi, ebx
and edi, 0xfffff
or edi, 0x74000000
jmp 0x475864
mov edi, ebx
and edi, 0xfffff
or edi, 0x73f00000
mov eax, dword [0x551d48]
test eax, eax
jge 0x475871
xor eax, eax
jmp 0x475878
push eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
cmp dword [eax + 0x14], 0
je 0x47589f
mov ecx, dword [eax + 0x14]
test ecx, ecx
jne 0x475889
mov esi, ecx
jmp 0x4758ad
mov edx, dword [ecx]
mov dword [eax + 0x14], edx
test edx, edx
jne 0x475895
mov dword [eax + 0x18], edx
mov dword [ecx], 0xfefefefe
mov esi, ecx
jmp 0x4758ad
mov ecx, dword [eax + 0x10]
push 0x10
push 0x44
call fcn.00547721
mov esi, eax
xor eax, eax
cmp esi, eax
je 0x475931
xor edx, edx
or ecx, 0xffffffff
mov dword [esi], eax
mov dword [esi + 8], eax
mov dword [esi + 0x10], ecx
mov dword [esi + 0x3c], eax
mov dword [esi + 4], eax
mov word [esi + 0x40], dx
mov dword [esi + 0xc], eax
mov word [esi + 0x42], dx
mov dword [esi + 0x14], eax
mov dword [esi + 0x18], eax
mov dword [esi + 0x1c], eax
mov dword [esi + 0x20], ecx
mov dword [esi + 0x24], eax
mov dword [esi + 0x34], eax
mov dword [esi + 0x38], eax
cmp byte [ebp + 0x10], dl
je 0x47590a
cmp dword [ebp - 0xc], 0x10f00000
jne 0x475901
cmp byte [ebp - 1], dl
jne 0x475901
mov edx, ebx
mov ecx, ebx
mov eax, edi
jmp 0x47591b
lea ecx, [ebx + ebx]
mov edx, ebx
mov eax, edi
jmp 0x47591b
mov eax, edi
and eax, 0xfff00001
or eax, 1
mov edx, 1
xor ecx, ecx
push 0
push esi
call fcn.0050a980
test eax, eax
jge 0x47593c
call fcn.0050a890
call fcn.0050cb90
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
mov edi, dword [ebp + 0xc]
mov eax, dword [edi + 0x34]
mov dword [esi + 0x34], eax
mov ecx, dword [edi + 0x38]
xor ebx, ebx
mov dword [esi + 0x38], ecx
mov ecx, dword [esi + 0xc]
mov dword [ebp + 0xc], ebx
cmp byte [ebp + 0x10], bl
je 0x47596f
mov edx, dword [edi + 8]
mov eax, dword [edi + 0xc]
add edx, edx
add edx, edx
push edx
push eax
push ecx
call sub.msvcrt.dll_memcpy
add esp, 0xc
jmp 0x4759c3
fldz
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x36ac]
sub esp, 8
fstp qword [esp]
push 0
push 0
push 0
push 0
push edx
push ecx
push eax
call fcn.00508980
mov ebx, eax
mov dword [ebp + 0xc], ebx
test ebx, ebx
jl 0x475927
mov edx, dword [esi + 0xc]
mov eax, dword [edx]
mov byte [eax + 0x5c], 0
mov byte [eax + 0x5d], 0
mov dword [eax + 0x58], 0xffffffff
mov ecx, dword [edi + 0xc]
mov ecx, dword [ecx]
mov eax, dword [esi + 0xc]
mov edx, dword [ecx + 0x30]
mov eax, dword [eax]
mov dword [eax + 0x30], edx
mov cl, byte [ecx + 0x34]
mov byte [eax + 0x34], cl
mov edx, dword [esi]
mov eax, dword [edi + 4]
mov ecx, dword [esi + 4]
add edx, edx
add edx, edx
push edx
push eax
push ecx
call sub.msvcrt.dll_memcpy
add esp, 0xc
cmp byte [ebp + 0x10], 0
je 0x475ab5
cmp byte [ebp - 1], 0
je 0x475ab5
mov edx, dword [ebp + 8]
mov eax, dword [edx + 8]
mov dword [ebp + 0x10], 0
or edi, 0xffffffff
mov dword [ebp - 8], eax
inc edi
cmp edi, dword [ebp - 8]
jae 0x475a6e
mov ebx, dword [ebp + 8]
mov ecx, dword [ebx + 0x30]
mov ecx, dword [ecx + edi*4]
cmp dword [ecx + 0x24], 0
je 0x475a01
mov eax, dword [ecx + 8]
and eax, 0x100
xor edx, edx
or eax, edx
je 0x475a01
mov edx, dword [ebx + 0x30]
mov dword [ebp - 0xc], edx
mov ecx, dword [ecx + 0x24]
mov eax, dword [ecx + 0x14]
mov ecx, dword [ecx + 0x28]
cmp ecx, dword [ebp + 0x10]
jb 0x475a3c
inc ecx
mov dword [ebp + 0x10], ecx
test eax, eax
je 0x475a47
mov ecx, eax
mov eax, dword [eax + 0x14]
jmp 0x475a30
mov eax, dword [ebp - 0xc]
lea ebx, [eax + edi*4]
inc edi
add ebx, 4
cmp edi, dword [ebp - 8]
jae 0x475a6e
mov ecx, dword [ebx]
cmp dword [ecx + 0x24], 0
je 0x475a4d
mov eax, dword [ecx + 8]
and eax, 0x100
xor edx, edx
or eax, edx
je 0x475a4d
jmp 0x475a2a
mov edi, dword [ebp + 8]
add edi, 0xb898
cmp dword [edi], 0xffffffff
jne 0x475aaa
fldz
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 0x10]
mov edx, dword [eax + 0x366c]
sub esp, 8
fstp qword [esp]
push 0x20
push 0
push 0
push ecx
push edx
push edi
push eax
call fcn.00508980
mov dword [ebp + 0xc], eax
test eax, eax
jl 0x475927
mov eax, dword [esi + 4]
mov ecx, dword [edi]
mov ebx, dword [ebp + 0xc]
mov dword [eax + 4], ecx
test ebx, ebx
jl 0x475927
pop edi
mov eax, esi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc