Function at 0x4f3731
Capabilities:
Get thread local storage value

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x38
push ebx
push esi
push edi
mov ebx, eax
mov eax, dword [0x551d48]
xor edi, edi
cmp eax, edi
mov esi, ecx
jge 0x4f34be
xor eax, eax
jmp 0x4f34c5
push eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
cmp dword [eax + 0x14], edi
je 0x4f34f3
mov ecx, dword [eax + 0x14]
cmp ecx, edi
jne 0x4f34da
xor ecx, ecx
mov edx, ecx
mov dword [ebp - 8], edx
jmp 0x4f3504
mov edx, dword [ecx]
mov dword [eax + 0x14], edx
cmp edx, edi
jne 0x4f34e6
mov dword [eax + 0x18], edi
mov edx, ecx
mov dword [ecx], 0xfefefefe
mov dword [ebp - 8], edx
jmp 0x4f3504
mov ecx, dword [eax + 0x10]
push 0x10
push 0x44
call fcn.00547721
mov dword [ebp - 8], eax
mov edx, eax
cmp edx, edi
je 0x4f3593
or eax, 0xffffffff
mov dword [edx + 0x10], eax
mov dword [edx + 0x20], eax
mov eax, dword [ebp + 8]
xor ecx, ecx
mov dword [edx], edi
mov dword [edx + 8], edi
mov dword [edx + 0x3c], edi
mov dword [edx + 4], edi
mov word [edx + 0x40], cx
mov dword [edx + 0xc], edi
mov word [edx + 0x42], cx
mov ecx, dword [ebp + 0xc]
mov dword [edx + 0x14], edi
mov dword [edx + 0x18], edi
mov dword [edx + 0x1c], edi
mov dword [edx + 0x24], edi
mov dword [edx + 0x34], edi
mov dword [edx + 0x38], edi
mov eax, dword [eax + 0x3c]
and eax, 0xfffff
shl ebx, 6
add ebx, dword [ecx + 8]
mov edi, eax
mov dword [ebp - 0x1c], eax
mov dword [ebp + 0xc], eax
mov eax, dword [ecx + 0xc]
mov dword [ebp - 0x2c], ebx
mov dword [ebp - 0xc], edi
test eax, eax
je 0x4f356b
mov dword [ebp + 0xc], eax
mov ecx, dword [ecx + 0x10]
test ecx, ecx
je 0x4f3577
mov dword [ebp - 0xc], ecx
mov edi, ecx
mov eax, dword [ebx + 4]
cmp eax, 0xf0000000
jb 0x4f35a1
mov ecx, dword [ebp + 0x1c]
mov eax, dword [ecx + eax*4 + 0x40000000]
mov ecx, dword [eax + 0x3c]
mov dword [ebp - 0x10], ecx
jmp 0x4f35a4
mov eax, 0x8007000e
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x1c
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x10]
mov ecx, edi
imul ecx, dword [ebx + 8]
xor eax, edi
push 0
and eax, 0xfffff
xor eax, dword [ebp - 0x10]
push edx
mov edx, dword [ebp + 0xc]
call fcn.0050a980
mov edi, eax
test edi, edi
jl 0x4f3974
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x34]
mov ecx, dword [ebp - 8]
mov dword [ecx + 0x34], edx
mov eax, dword [eax + 0x38]
mov dword [ecx + 0x38], eax
xor eax, eax
xor edi, edi
mov dword [ebp + 8], eax
cmp dword [ebp + 0xc], eax
jbe 0x4f360f
mov ecx, dword [ebx + 0x18]
lea edx, [eax + ecx*4 - 0x100]
mov eax, dword [ebp - 8]
mov ecx, dword [eax + 0xc]
mov eax, dword [ebp + 0x10]
mov edx, dword [eax + edx*4]
mov eax, dword [ebp + 8]
mov dword [ecx + eax*4], edx
inc eax
mov dword [ebp + 8], eax
cmp eax, dword [ebp + 0xc]
jb 0x4f35ea
xor ecx, ecx
mov dword [ebp - 0x18], ecx
cmp dword [ebp - 0xc], ecx
jbe 0x4f395c
lea ecx, [ecx]
cmp dword [ebx + 8], 0
mov dword [ebp - 0x20], 0
jbe 0x4f394f
lea eax, [ecx*4]
mov dword [ebp + 0xc], eax
lea eax, [ebx + 0x20]
add ebx, 0xc
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x14], ebx
jmp 0x4f3650
mov edx, dword [ebp - 0x14]
mov eax, dword [edx]
mov dword [ebp + 8], 0xffffffff
cmp eax, 0x10
jae 0x4f3695
mov edx, dword [ebp + 0x18]
add ecx, ecx
add ecx, ecx
mov ecx, dword [ecx + edx]
mov edx, dword [ebp - 0x1c]
cmp ecx, edx
jae 0x4f3683
mov edx, dword [ebp + 0x1c]
mov eax, dword [edx + eax*4]
mov edx, dword [eax + 0xc]
mov eax, dword [edx + ecx*4]
jmp 0x4f382a
mov ecx, dword [ebp + 0x1c]
mov eax, dword [ecx + eax*4]
mov ecx, dword [eax + 0xc]
mov eax, dword [ecx + edx*4 - 4]
jmp 0x4f382a
cmp eax, 0x20
jae 0x4f36bf
mov edx, dword [ebp - 0x1c]
cmp ecx, edx
jae 0x4f36ad
lea edx, [ecx + eax*4 - 0x40]
mov eax, dword [ebp + 0x14]
jmp 0x4f3827
lea ecx, [edx + eax*4]
mov edx, dword [ebp + 0x14]
mov eax, dword [edx + ecx*4 - 0x104]
jmp 0x4f382a
cmp eax, 0x30
jae 0x4f3814
add eax, 0xffffffe0
cmp eax, 0xa
ja case.default.0x4f36d4
jmp dword [eax*4 + 0x4f39dc]
fld1
mov eax, dword [esi + 0x366c]
sub esp, 8
fstp qword [esp]
push 0x20
push 0x800
push 0
push 0
push eax
lea ecx, [ebp + 8]
push ecx
push esi
call fcn.00508980
mov edi, eax
test edi, edi
jl 0x4f3974
mov eax, dword [ebp + 8]
jmp 0x4f382a
fldz
mov edx, dword [esi + 0x366c]
sub esp, 8
fstp qword [esp]
push 0x20
push 0x800
push 0
push 0
push edx
lea eax, [ebp + 8]
push eax
jmp 0x4f36f9
fld qword [0x44f558]
mov ecx, dword [esi + 0x366c]
sub esp, 8
fstp qword [esp]
push 0x20
push 0x800
push 0
push 0
push ecx
lea edx, [ebp + 8]
push edx
jmp 0x4f36f9
fld qword [0x44f530]
jmp 0x4f36dd
fld qword [0x44f538]
mov edx, dword [esi + 0x366c]
sub esp, 8
fstp qword [esp]
push 0x20
push 0x800
push 0
push 0
push edx
lea eax, [ebp + 8]
push eax
jmp 0x4f36f9
mov ecx, dword [esi + 0x366c]
push 0
push 0x80000800
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0
push 0
push ecx
lea edx, [ebp + 8]
push edx
jmp 0x4f37ff
push 0x10
push 0x800
push 0
push 0
jmp 0x4f37f0
mov edx, dword [esi + 0x366c]
push 0x10
push 0x800
push 0
push 2
push 0
push 0
push edx
lea eax, [ebp + 8]
push eax
jmp 0x4f37ff
mov ecx, dword [esi + 0x366c]
push 0x10
push 0x800
push 0
push 1
push 0
push 0
push ecx
lea edx, [ebp + 8]
push edx
jmp 0x4f37ff
push 0x10
push 0x800
push 0xffffffffffffffff
push 0xffffffffffffffff
mov eax, dword [esi + 0x366c]
push 0
push 0
push eax
lea ecx, [ebp + 8]
push ecx
push esi
call fcn.00508a30
mov edi, eax
test edi, edi
jl 0x4f3974
mov eax, dword [ebp + 8]
jmp 0x4f382a
cmp eax, 0x40
jb case.default.0x4f36d4
lea edx, [ecx + eax*4 - 0x100]
mov eax, dword [ebp + 0x10]
mov eax, dword [eax + edx*4]
mov ecx, dword [ebp - 8]
mov edx, dword [ecx + 4]
mov ecx, dword [ebp + 0xc]
mov dword [ecx + edx], eax
mov ecx, dword [ebp - 0x10]
mov ecx, dword [ecx + 4]
mov edx, dword [ebp - 0x10]
mov edx, dword [edx]
mov dword [ebp - 0x30], ecx
mov ecx, edx
and ecx, 0x400
xor ebx, ebx
or ecx, ebx
je 0x4f38b0
mov ebx, dword [eax + 8]
mov edi, dword [eax + 0xc]
mov ecx, ebx
and ecx, 0x800
xor edx, edx
or ecx, edx
je 0x4f39c2
mov edx, edi
and edx, 0x124
xor ecx, ecx
or ecx, edx
je 0x4f39c2
fld qword [eax + 0xa8]
mov edx, dword [esi + 0x366c]
sub esp, 8
fchs
fstp qword [esp]
push edi
push ebx
push 0
push 0
push edx
lea eax, [ebp - 0x24]
push eax
push esi
call fcn.00508980
mov edi, eax
test edi, edi
jl 0x4f3974
mov eax, dword [ebp - 0x24]
jmp 0x4f391b
and edx, 0x800
xor ecx, ecx
or edx, ecx
je 0x4f3927
mov ebx, dword [eax + 8]
mov edi, dword [eax + 0xc]
mov ecx, ebx
and ecx, 0x800
xor edx, edx
or ecx, edx
je 0x4f39c2
mov edx, edi
and edx, 0x2000092
xor ecx, ecx
or ecx, edx
je 0x4f39c2
mov ecx, dword [eax + 0xb0]
mov eax, dword [eax + 0xb4]
mov edx, dword [esi + 0x366c]
push edi
push ebx
neg ecx
adc eax, 0
neg eax
push eax
push ecx
push 0
push 0
push edx
lea eax, [ebp - 0x28]
push eax
push esi
call fcn.00508a30
mov edi, eax
test edi, edi
jl 0x4f3974
mov eax, dword [ebp - 0x28]
mov ecx, dword [ebp - 8]
mov edx, dword [ecx + 4]
mov ecx, dword [ebp + 0xc]
mov dword [ecx + edx], eax
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x20]
mov ebx, dword [ebp - 0x2c]
add dword [ebp - 0x14], 4
add dword [ebp - 0x10], 8
add ecx, ecx
add ecx, ecx
add dword [ebp + 0xc], ecx
mov ecx, dword [ebp - 0x18]
inc eax
mov dword [ebp - 0x20], eax
cmp eax, dword [ebx + 8]
jb 0x4f3650
inc ecx
mov dword [ebp - 0x18], ecx
cmp ecx, dword [ebp - 0xc]
jb 0x4f3620
mov eax, dword [ebp - 8]
mov edx, dword [ebp + 0x20]
mov dword [edx], eax
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x1c
mov edi, 0x8007003f
mov esi, dword [ebp - 8]
call fcn.0050a890
mov eax, dword [0x551d48]
test eax, eax
jl 0x4f39cf
push eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov esi, eax
test esi, esi
je 0x4f39cf
mov ebx, dword [ebp - 8]
push 0x44
push 0xfe
push ebx
call sub.msvcrt.dll_memset
mov dword [ebx], 0
mov eax, dword [esi + 0x18]
add esp, 0xc
test eax, eax
je 0x4f39c9
mov dword [eax], ebx
mov dword [esi + 0x18], ebx
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x1c
mov edi, 0x8007054f
jmp 0x4f3974
mov dword [esi + 0x14], ebx
mov dword [esi + 0x18], ebx
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x1c