Function at 0x475ad0
Capabilities:
Get thread local storage value

Disassembly:
push 0xffffffffffffffff
push 0x5b9380
mov eax, dword fs:[0]
push eax
sub esp, 0xc
push ebx
push ebp
push esi
push edi
mov eax, dword [0x6216ec]
xor eax, esp
push eax
lea eax, [esp + 0x20]
mov dword fs:[0], eax
mov ebp, dword [esp + 0x3c]
mov edi, dword [esp + 0x30]
fldz
mov eax, dword [esp + 0x34]
fst qword [edi]
xor ebx, ebx
fst qword [edi + 8]
mov byte [edi + 0x30], bl
fld qword [0x5ef520]
mov dword [edi + 0x58], eax
fstp qword [edi + 0x10]
mov dword [edi + 0x5c], ecx
fld qword [0x5ef518]
mov dword [edi + 0x60], ebp
fstp qword [edi + 0x18]
fst qword [edi + 0x20]
fst qword [edi + 0x28]
fst qword [edi + 0x38]
fst qword [edi + 0x40]
fst qword [edi + 0x48]
fstp qword [edi + 0x50]
mov edx, dword [0x62b26c]
cmp edx, 0xffffffff
jne 0x475b4b
xor eax, eax
jmp 0x475b57
mov eax, dword [0x62b26c]
push eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, dword [esp + 0x38]
mov dword [edi + 0x64], eax
mov dword [edi + 0x68], ecx
mov dword [edi + 0x6c], ebx
mov dword [edi + 0x70], ebx
mov dword [edi + 0x74], ebx
mov dword [edi + 0x78], ebx
mov dword [edi + 0x7c], ebx
mov eax, vtable.ggadget::Signal0_void_.0
mov dword [edi + 0x84], ebx
mov dword [edi + 0x80], eax
mov dword [esp + 0x28], ebx
mov dword [edi + 0x8c], ebx
mov dword [edi + 0x88], eax
mov dword [edi + 0x94], ebx
mov dword [edi + 0x90], eax
mov dword [edi + 0x9c], ebx
mov dword [edi + 0x98], eax
mov dword [edi + 0xa4], ebx
mov dword [edi + 0xa0], eax
mov dword [edi + 0xac], ebx
mov dword [edi + 0xa8], eax
mov dword [edi + 0xb4], ebx
mov dword [edi + 0xb0], eax
mov dword [edi + 0xbc], ebx
mov dword [edi + 0xb8], eax
mov dword [edi + 0xc4], ebx
mov dword [edi + 0xc0], eax
mov dword [edi + 0xcc], ebx
mov dword [edi + 0xc8], eax
mov dword [edi + 0xd4], ebx
mov dword [edi + 0xd0], eax
mov dword [edi + 0xdc], ebx
mov dword [edi + 0xd8], eax
mov dword [edi + 0xe4], ebx
mov dword [edi + 0xe0], eax
mov dword [edi + 0xec], ebx
mov dword [edi + 0xe8], eax
mov dword [edi + 0xf4], ebx
mov dword [edi + 0xf0], eax
mov dword [edi + 0xfc], ebx
mov dword [edi + 0xf8], eax
mov dword [edi + 0x104], ebx
mov dword [edi + 0x100], eax
mov dword [edi + 0x10c], ebx
mov dword [edi + 0x108], eax
mov dword [edi + 0x114], ebx
mov dword [edi + 0x110], eax
mov dword [edi + 0x11c], ebx
mov dword [edi + 0x118], eax
mov dword [edi + 0x124], ebx
mov dword [edi + 0x120], eax
mov dword [edi + 0x12c], ebx
mov dword [edi + 0x128], eax
mov dword [edi + 0x134], ebx
mov dword [edi + 0x130], eax
mov dword [edi + 0x13c], ebx
mov dword [edi + 0x138], eax
mov dword [edi + 0x144], ebx
mov dword [edi + 0x140], eax
mov dword [edi + 0x14c], ebx
mov dword [edi + 0x148], eax
mov dword [edi + 0x154], ebx
mov dword [edi + 0x150], eax
mov dword [edi + 0x15c], ebx
mov dword [edi + 0x158], eax
mov dword [edi + 0x164], ebx
mov dword [edi + 0x160], eax
mov dword [edi + 0x16c], ebx
mov dword [edi + method.ggadget::Signal4_void__double__double__double__double_.virtual_0], vtable.ggadget::Signal4_void__double__double__double__double_.0
mov byte [esp + 0x28], 0x1d
call fcn.00493650
mov dword [edi + 0x170], eax
mov byte [esp + 0x28], 0x1e
push 0x30
mov dword [edi + 0x17c], ebx
call fcn.00548a50
add esp, 4
cmp eax, ebx
je 0x475e9a
mov dword [edi + 0x178], eax
mov dword [eax], eax
mov eax, dword [edi + 0x178]
mov dword [eax + 4], eax
mov eax, dword [edi + 0x178]
mov dword [eax + 8], eax
mov edx, dword [edi + 0x178]
mov al, 1
mov byte [edx + 0x2c], al
mov ecx, dword [edi + 0x178]
mov byte [ecx + 0x2d], al
mov byte [esp + 0x28], 0x20
fld qword [0x5ef510]
sub esp, 8
lea esi, [edi + 0x184]
fstp qword [esp]
call fcn.004939c0
mov edx, dword [esp + 0x34]
push edx
push ebx
push ebp
lea eax, [edi + 0x188]
push eax
mov byte [esp + 0x38], 0x21
call fcn.0048bcf0
mov dword [edi + 0x19c], ebx
mov dword [edi + 0x1a0], ebx
mov dword [edi + 0x1a4], ebx
mov dword [edi + 0x1a8], ebx
mov dword [edi + 0x1ac], ebx
mov dword [edi + 0x1b0], ebx
mov dword [edi + 0x1b4], ebx
mov dword [edi + 0x1b8], ebx
mov dword [edi + 0x1bc], ebx
mov dword [edi + 0x1c0], ebx
mov dword [edi + 0x1c4], ebx
mov dword [edi + 0x1c8], ebx
mov dword [edi + 0x1cc], ebx
mov dword [edi + 0x1d0], ebx
mov dword [edi + 0x1d4], ebx
mov dword [edi + 0x1d8], ebx
mov dword [edi + 0x1dc], ebx
mov dword [edi + 0x1e4], ebx
mov dword [edi + 0x1e8], ebx
mov dword [edi + 0x1ec], ebx
mov dword [edi + 0x208], 0xf
mov dword [edi + 0x204], ebx
mov byte [edi + 0x1f4], bl
mov byte [esp + 0x28], 0x2c
mov cl, byte [edi + 0x225]
and cl, 0xcc
or cl, 0xc
mov eax, 2
mov byte [edi + 0x225], cl
mov ecx, dword [edi + 0x5c]
mov dword [edi + 0x210], eax
mov dword [edi + 0x214], eax
mov dword [edi + 0x218], ebx
mov dword [edi + 0x21c], eax
mov dword [edi + 0x220], ebx
mov byte [edi + 0x224], 0x33
cmp ecx, ebx
je 0x475e82
mov edx, dword [ecx]
mov eax, dword [edx + 0x24]
call eax
push 0xc
mov esi, eax
call fcn.00548a50
add esp, 4
cmp eax, ebx
je 0x475e73
mov dword [eax], vtable.._AV__MethodSlot1_XPBDVImpl_View_ggadget__P8123_AEXPBD_Z_ggadget__.0
mov dword [eax + 4], edi
mov dword [eax + 8], 0x47ac10
jmp 0x475e75
xor eax, eax
mov edx, dword [esi]
push eax
mov eax, dword [edx + 4]
mov ecx, esi
call eax
mov dword [edi + 0x70], eax
mov eax, edi
mov ecx, dword [esp + 0x20]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x18
ret 0x10
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x18], vtable.stdext::bad_alloc.0
lea ecx, [esp + 0x18]
mov byte [esp + 0x28], 0x1f
call fcn.00404df0
int3