Function at 0x471640
Capabilities:
Get thread local storage value

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x150
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
mov eax, dword [edi + 0xb828]
mov ebx, dword [eax + 0x3c]
push 1
and ebx, 0xfffff
push ebx
lea ecx, [ebp - 0x18]
push ecx
lea edx, [ebp - 0xcc]
push edx
lea ecx, [ebp - 8]
push ecx
lea edx, [ebp - 0x14c]
push edx
push 0x432088
xor esi, esi
push eax
mov ecx, edi
mov dword [ebp - 8], esi
mov dword [ebp - 0x18], esi
mov dword [ebp - 0x14], 1
mov dword [ebp - 0x10], 2
mov dword [ebp - 0xc], 3
call fcn.004f3a10
test eax, eax
jne 0x4717a6
call fcn.0050cb40
mov esi, eax
xor eax, eax
cmp esi, eax
je 0x471720
push eax
mov dword [esi], eax
mov dword [esi + 8], eax
mov dword [esi + 0x3c], eax
mov dword [esi + 4], eax
mov dword [esi + 0xc], eax
mov dword [esi + 0x14], eax
mov dword [esi + 0x18], eax
mov dword [esi + 0x1c], eax
mov dword [esi + 0x24], eax
mov dword [esi + 0x34], eax
mov dword [esi + 0x38], eax
or edx, 0xffffffff
xor ecx, ecx
mov eax, ebx
and eax, 0xfffff
mov dword [esi + 0x10], edx
mov word [esi + 0x40], cx
mov word [esi + 0x42], cx
mov dword [esi + 0x20], edx
lea ecx, [ebx + ebx]
or eax, 0x73600000
push esi
mov edx, ebx
call fcn.0050a980
mov dword [ebp + 8], eax
test eax, eax
jge 0x47172e
call fcn.0050a890
call fcn.0050cb90
mov eax, dword [ebp + 8]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov eax, 0x8007000e
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov eax, dword [edi + 0xb828]
mov edx, dword [eax + 0x34]
mov dword [esi + 0x34], edx
mov eax, dword [eax + 0x38]
mov dword [esi + 0x38], eax
mov ecx, dword [edi + 0xb828]
mov edx, dword [ecx + 0xc]
mov eax, dword [esi + 0xc]
add ebx, ebx
add ebx, ebx
push ebx
push edx
push eax
call sub.msvcrt.dll_memcpy
mov edx, dword [esi + 4]
add esp, 0xc
push ebx
lea ecx, [ebp - 0xcc]
push ecx
push edx
call sub.msvcrt.dll_memcpy
mov ecx, dword [esi + 4]
add esp, 0xc
push ebx
lea eax, [ebp - 0xbc]
push eax
add ecx, ebx
push ecx
call sub.msvcrt.dll_memcpy
add esp, 0xc
mov edx, dword [edi + 0xb828]
push esi
push edx
call fcn.0050b3a0
mov edi, eax
mov eax, esi
call fcn.0046f000
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
push 1
push ebx
lea eax, [ebp - 0x18]
push eax
lea ecx, [ebp - 0xcc]
push ecx
mov ecx, dword [edi + 0xb828]
lea edx, [ebp - 8]
push edx
lea eax, [ebp - 0x14c]
push eax
push 0x432128
push ecx
mov ecx, edi
call fcn.004f3a10
test eax, eax
jne 0x471872
call fcn.0050cb40
cmp eax, esi
je 0x471720
call fcn.0050a750
mov esi, eax
test esi, esi
je 0x471720
mov eax, ebx
push 0
and eax, 0xfffff
lea ecx, [ebx + ebx]
or eax, 0x73500000
push esi
mov edx, ebx
call fcn.0050a980
mov dword [ebp + 8], eax
test eax, eax
jge 0x471829
mov eax, esi
call fcn.0046f000
mov eax, dword [ebp + 8]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov eax, dword [edi + 0xb828]
mov edx, dword [eax + 0x34]
mov dword [esi + 0x34], edx
mov eax, dword [eax + 0x38]
mov dword [esi + 0x38], eax
mov ecx, dword [edi + 0xb828]
mov edx, dword [ecx + 0xc]
push 0
push esi
mov eax, ebx
call fcn.00467080
push 0
push esi
mov eax, ebx
lea edx, [ebp - 0xcc]
call fcn.00467050
push ebx
push esi
mov eax, ebx
lea edx, [ebp - 0xbc]
call fcn.00467050
jmp 0x471785
push 1
push ebx
lea eax, [ebp - 0x18]
push eax
lea ecx, [ebp - 0xcc]
push ecx
mov ecx, dword [edi + 0xb828]
lea edx, [ebp - 8]
push edx
lea eax, [ebp - 0x14c]
push eax
push 0x4321c8
push ecx
mov ecx, edi
call fcn.004f3a10
cmp eax, esi
jne 0x471b01
mov edx, dword [ebp - 0xac]
mov eax, 0x400
cmp dword [edx + 0x48], eax
jne 0x4718e5
xor eax, eax
cmp ebx, esi
jbe 0x471926
mov ecx, ebx
lea esi, [ebp - 0x9c]
lea edi, [ebp - 0x18]
rep movsd dword es:[edi], dword [esi]
lea esp, [esp]
mov ecx, dword [ebp + eax*4 - 0xac]
mov edx, dword [ecx + 0x44]
mov dword [ebp + eax*4 - 0x28], edx
inc eax
cmp eax, ebx
jb 0x4718d0
jmp 0x471923
mov ecx, dword [ebp - 0x9c]
cmp dword [ecx + 0x48], eax
jne 0x471afc
xor eax, eax
cmp ebx, esi
jbe 0x471926
mov ecx, ebx
lea esi, [ebp - 0xac]
lea edi, [ebp - 0x18]
rep movsd dword es:[edi], dword [esi]
jmp 0x471910
mov edx, dword [ebp + eax*4 - 0x9c]
mov ecx, dword [edx + 0x44]
mov dword [ebp + eax*4 - 0x28], ecx
inc eax
cmp eax, ebx
jb 0x471910
mov edi, dword [ebp + 8]
mov dl, 1
xor ecx, ecx
mov byte [ebp + 0xb], dl
test ebx, ebx
jbe 0x4719d2
fldz
fld1
mov eax, dword [ebp + ecx*4 - 0xcc]
fld qword [eax + 0xa8]
mov eax, dword [eax + 0x10]
mov eax, dword [eax + 8]
and eax, 0x100
xor esi, esi
or eax, esi
jne 0x47195c
mov byte [ebp + 0xb], al
xor dl, dl
fld st(2)
fucomp st(1)
fnstsw ax
test ah, 0x44
jnp 0x47196b
mov byte [ebp + 0xb], 0
fld st(1)
fucompp
fnstsw ax
test ah, 0x44
jnp 0x471978
xor dl, dl
mov eax, dword [ebp + ecx*4 - 0xbc]
fld qword [eax + 0xa8]
mov eax, dword [eax + 0x10]
mov eax, dword [eax + 8]
and eax, 0x100
xor esi, esi
or eax, esi
jne 0x47199b
mov byte [ebp + 0xb], al
xor dl, dl
fld st(1)
fucomp st(1)
fnstsw ax
test ah, 0x44
jnp 0x4719aa
mov byte [ebp + 0xb], 0
fld st(2)
fucompp
fnstsw ax
test ah, 0x44
jnp 0x4719b7
xor dl, dl
inc ecx
cmp ecx, ebx
jb 0x471939
cmp byte [ebp + 0xb], 0
fstp st(1)
fstp st(0)
jne 0x4719d2
test dl, dl
je 0x471afc
mov eax, dword [0x551d48]
test eax, eax
jge 0x4719df
xor eax, eax
jmp 0x4719e6
push eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
cmp dword [eax + 0x14], 0
je 0x471a0d
mov ecx, dword [eax + 0x14]
test ecx, ecx
jne 0x4719f7
mov esi, ecx
jmp 0x471a1b
mov edx, dword [ecx]
mov dword [eax + 0x14], edx
test edx, edx
jne 0x471a03
mov dword [eax + 0x18], edx
mov dword [ecx], 0xfefefefe
mov esi, ecx
jmp 0x471a1b
mov ecx, dword [eax + 0x10]
push 0x10
push 0x44
call fcn.00547721
mov esi, eax
xor ecx, ecx
cmp esi, ecx
je 0x471720
xor eax, eax
mov word [esi + 0x40], ax
mov word [esi + 0x42], ax
or edx, 0xffffffff
mov eax, ebx
and eax, 0xfffff
mov dword [esi], ecx
mov dword [esi + 8], ecx
mov dword [esi + 0x10], edx
mov dword [esi + 0x3c], ecx
mov dword [esi + 4], ecx
mov dword [esi + 0xc], ecx
mov dword [esi + 0x14], ecx
mov dword [esi + 0x18], ecx
mov dword [esi + 0x1c], ecx
mov dword [esi + 0x20], edx
mov dword [esi + 0x24], ecx
mov dword [esi + 0x34], ecx
mov dword [esi + 0x38], ecx
cmp byte [ebp + 0xb], cl
je 0x471a6b
or eax, 0x73600000
jmp 0x471a70
or eax, 0x73500000
push ecx
lea ecx, [ebx + ebx]
push esi
mov edx, ebx
call fcn.0050a980
mov dword [ebp + 8], eax
test eax, eax
jl 0x47170a
mov eax, dword [edi + 0xb828]
mov ecx, dword [eax + 0x34]
mov dword [esi + 0x34], ecx
mov edx, dword [eax + 0x38]
mov dword [esi + 0x38], edx
mov eax, dword [edi + 0xb828]
mov ecx, dword [eax + 0xc]
mov edx, dword [esi + 0xc]
add ebx, ebx
add ebx, ebx
push ebx
push ecx
push edx
call sub.msvcrt.dll_memcpy
mov ecx, dword [esi + 4]
add esp, 0xc
push ebx
lea eax, [ebp - 0x18]
push eax
push ecx
call sub.msvcrt.dll_memcpy
mov eax, dword [esi + 4]
add esp, 0xc
push ebx
lea edx, [ebp - 0x28]
push edx
add eax, ebx
push eax
call sub.msvcrt.dll_memcpy
mov ecx, dword [edi + 0xb828]
add esp, 0xc
push esi
push ecx
call fcn.0050b3a0
mov edi, eax
call fcn.0050a890
call fcn.0050cb90
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4