Function at 0x46f0b0
Capabilities:
Get thread local storage value

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x160
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
mov eax, dword [edi + 0xb828]
mov esi, dword [eax + 0x3c]
xor ecx, ecx
push 0x80
mov ebx, esi
push ecx
lea eax, [ebp - 0x15c]
and ebx, 0xfffff
push eax
mov dword [ebp - 0x28], ecx
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x34], 1
mov dword [ebp - 0x30], 2
mov dword [ebp - 0x2c], 3
mov dword [ebp - 0x20], ebx
call sub.msvcrt.dll_memset
and esi, 0xfff00000
add esp, 0xc
cmp esi, 0x30000000
je 0x46f123
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x14
mov byte [ebp - 5], 0
mov byte [ebp - 0xd], 0
mov byte [ebp - 0xe], 0
mov byte [ebp - 0xf], 0
mov dword [ebp - 0x18], 0
test ebx, ebx
jbe 0x46f36c
mov ecx, dword [edi + 0xb828]
fldz
mov edx, dword [ecx + 4]
lea eax, [ebx*4]
lea esi, [ebx*8]
mov dword [ebp - 0x14], edx
mov dword [ebp - 0x24], eax
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x1c], esi
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0xc]
mov edi, dword [eax + ecx]
mov ecx, dword [eax + esi]
mov eax, dword [edi + 0x10]
fld qword [ecx + 0xa8]
mov eax, dword [eax + 8]
and eax, 0x100
xor edx, edx
or eax, edx
je 0x46f1bc
fld st(1)
fcomp qword [edi + 0xa8]
fnstsw ax
test ah, 0x44
jp 0x46f1bc
cmp dword [edi + 0x24], 0xffffffff
jne 0x46f1bc
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0xb828]
mov eax, dword [eax + 4]
mov edx, dword [eax + esi]
mov edi, dword [ebp - 0x18]
cmp edx, dword [eax + edi*4]
jne 0x46f1bc
mov byte [ebp - 5], 1
jmp 0x46f1c3
mov edi, dword [ebp - 0x18]
mov byte [ebp - 0xe], 1
mov eax, dword [ecx + 0x10]
mov eax, dword [eax + 8]
and eax, 0x100
xor edx, edx
or eax, edx
je 0x46f202
fld st(1)
fucompp
fnstsw ax
test ah, 0x44
jp 0x46f204
cmp dword [ecx + 0x24], 0xffffffff
jne 0x46f204
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0xb828]
mov eax, dword [ecx + 4]
mov edx, dword [ebp - 0xc]
mov ecx, dword [eax + edx]
cmp ecx, dword [eax + edi*4]
jne 0x46f204
mov byte [ebp - 0xd], 1
jmp 0x46f208
fstp st(0)
mov byte [ebp - 0xf], 1
add dword [ebp - 0xc], 4
inc edi
add esi, 4
mov dword [ebp - 0x18], edi
cmp edi, ebx
jb 0x46f167
cmp byte [ebp - 5], 0
fstp st(0)
je 0x46f297
cmp byte [ebp - 0xe], 0
jne 0x46f297
call fcn.0050cb40
mov edx, eax
test edx, edx
je 0x46f289
xor esi, esi
or eax, 0xffffffff
mov dword [edx + 0x10], eax
mov dword [edx + 0x20], eax
xor ecx, ecx
push esi
mov eax, ebx
mov word [edx + 0x40], cx
mov word [edx + 0x42], cx
and eax, 0xfffff
mov dword [edx], esi
mov dword [edx + 8], esi
mov dword [edx + 0x3c], esi
mov dword [edx + 4], esi
mov dword [edx + 0xc], esi
mov dword [edx + 0x14], esi
mov dword [edx + 0x18], esi
mov dword [edx + 0x1c], esi
mov dword [edx + 0x24], esi
mov dword [edx + 0x34], esi
mov dword [edx + 0x38], esi
mov edi, edx
push edx
lea ecx, [ebx + ebx]
or eax, 0x70b00000
mov edx, ebx
call fcn.0050a980
mov ebx, eax
cmp ebx, esi
jmp 0x46f2e6
mov eax, 0x8007000e
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x14
cmp byte [ebp - 0xd], 0
je 0x46f36c
cmp byte [ebp - 0xf], 0
jne 0x46f36c
cmp dword [ebp + 0xc], 0
jne 0x46f115
call fcn.0050cb40
test eax, eax
je 0x46f289
call fcn.0050a750
mov edi, eax
test edi, edi
je 0x46f289
mov eax, ebx
push 0
and eax, 0xfffff
lea ecx, [ebx + ebx]
or eax, 0x70c00000
push edi
mov edx, ebx
call fcn.0050a980
mov ebx, eax
test ebx, ebx
jl 0x46f6ad
mov ebx, dword [ebp + 8]
mov eax, dword [ebx + 0xb828]
mov edx, dword [eax + 0x34]
mov esi, dword [ebp - 0x24]
mov dword [edi + 0x34], edx
mov eax, dword [eax + 0x38]
mov dword [edi + 0x38], eax
mov ecx, dword [ebx + 0xb828]
mov edx, dword [ecx + 0xc]
mov eax, dword [edi + 0xc]
push esi
push edx
push eax
call sub.msvcrt.dll_memcpy
mov ecx, dword [ebx + 0xb828]
mov edx, dword [ecx + 4]
mov eax, dword [edi + 4]
add esp, 0xc
push esi
push edx
push eax
call sub.msvcrt.dll_memcpy
mov eax, dword [edi + 4]
mov ecx, dword [ebx + 0xb828]
mov edx, dword [ecx + 4]
add esp, 0xc
add eax, esi
cmp byte [ebp - 5], 0
push esi
je 0x46f34b
add edx, esi
jmp 0x46f34e
add edx, dword [ebp - 0x1c]
push edx
push eax
call sub.msvcrt.dll_memcpy
mov ecx, dword [ebx + 0xb828]
add esp, 0xc
push edi
push ecx
call fcn.0050b3a0
mov ebx, eax
jmp 0x46f6ad
cmp dword [ebp + 0xc], 0
lea ecx, [ebp - 0x38]
sete dl
movzx eax, dl
push eax
push ebx
push ecx
lea edx, [ebp - 0xdc]
push edx
lea eax, [ebp - 0x28]
push eax
lea ecx, [ebp - 0x15c]
push ecx
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0xb828]
push 0x4316d8
push eax
call fcn.004f3a10
cmp dword [ebp - 0x28], 0x20
mov ebx, eax
jbe 0x46f3ba
mov ebx, 0x80004005
mov eax, ebx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x14
test ebx, ebx
jne 0x46f7b4
mov byte [ebp - 5], bl
xor cl, cl
mov dword [ebp - 0xc], 0
mov edi, edi
mov dword [ebp - 0x14], 0
xor edi, edi
mov dword [ebp - 0x18], edi
cmp dword [ebp - 0x20], edi
jbe 0x46f4f6
mov eax, dword [ebp - 0xc]
add eax, eax
add eax, eax
mov ecx, edi
sub ecx, eax
lea edx, [eax + edi]
mov eax, dword [ebp + ecx*4 - 0xcc]
mov ecx, dword [ebp - 0x14]
fld qword [eax + 0xa8]
mov edx, dword [ebp + edx*4 - 0xdc]
mov ebx, edi
sub ebx, ecx
lea esi, [ecx + edi]
mov ecx, dword [ebp + ebx*4 - 0xac]
mov ebx, dword [eax + 0x10]
fld qword [ecx + 0xa8]
mov esi, dword [ebp + esi*4 - 0xbc]
mov dword [ebp - 0x1c], ebx
mov ebx, dword [ecx + 0x10]
mov dword [ebp - 0x24], ebx
cmp dword [edx + 0x44], esi
je 0x46f44b
cmp dword [esi + 0x44], edx
je 0x46f44b
mov ebx, dword [edx + 0x44]
cmp ebx, 0xffffffff
je 0x46f461
mov edi, dword [ebp - 0x18]
cmp ebx, dword [esi + 0x44]
jne 0x46f461
mov ebx, dword [edx + 0x48]
xor ebx, 0x400
cmp ebx, dword [esi + 0x48]
jne 0x46f461
cmp eax, ecx
jne 0x46f461
mov cl, 1
jmp 0x46f4d1
cmp edx, esi
jne 0x46f4cf
mov edx, dword [eax + 0x44]
cmp edx, ecx
je 0x46f47c
mov esi, dword [ecx + 0x44]
cmp esi, eax
je 0x46f47c
cmp edx, 0xffffffff
je 0x46f490
cmp edx, esi
jne 0x46f490
mov edx, dword [eax + 0x48]
xor edx, 0x400
cmp edx, dword [ecx + 0x48]
jne 0x46f490
mov cl, 1
mov al, cl
jmp 0x46f4d3
mov eax, dword [ebp - 0x1c]
mov eax, dword [eax + 8]
and eax, 0x100
xor ecx, ecx
or eax, ecx
je 0x46f4c5
mov ecx, dword [ebp - 0x24]
mov eax, dword [ecx + 8]
and eax, 0x100
xor ecx, ecx
or eax, ecx
je 0x46f4c5
fxch st(1)
fchs
fucompp
fnstsw ax
test ah, 0x44
jp 0x46f4c9
mov cl, 1
mov al, cl
jmp 0x46f4d7
fstp st(1)
fstp st(0)
xor cl, cl
xor al, al
jmp 0x46f4d7
xor cl, cl
xor al, al
fstp st(1)
fstp st(0)
test edi, edi
jne 0x46f4e0
mov byte [ebp - 5], al
jmp 0x46f4e5
cmp byte [ebp - 5], al
jne 0x46f52c
test cl, cl
je 0x46f4fa
inc edi
mov dword [ebp - 0x18], edi
cmp edi, dword [ebp - 0x20]
jb 0x46f3e5
test cl, cl
jne 0x46f530
mov eax, dword [ebp - 0x14]
add eax, 4
mov dword [ebp - 0x14], eax
cmp eax, 8
jb 0x46f3d7
mov eax, dword [ebp - 0xc]
inc eax
mov dword [ebp - 0xc], eax
cmp eax, 2
jb 0x46f3d0
mov ebx, 1
mov eax, ebx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x14
xor cl, cl
jmp 0x46f4fa
mov eax, dword [0x551d48]
xor ebx, ebx
cmp eax, ebx
jge 0x46f53f
xor eax, eax
jmp 0x46f546
push eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
cmp dword [eax + 0x14], ebx
je 0x46f56e
mov ecx, dword [eax + 0x14]
cmp ecx, ebx
jne 0x46f558
xor ecx, ecx
mov esi, ecx
jmp 0x46f57c
mov edx, dword [ecx]
mov dword [eax + 0x14], edx
cmp edx, ebx
jne 0x46f564
mov dword [eax + 0x18], ebx
mov dword [ecx], 0xfefefefe
mov esi, ecx
jmp 0x46f57c
mov ecx, dword [eax + 0x10]
push 0x10
push 0x44
call fcn.00547721
mov esi, eax
cmp esi, ebx
je 0x46f70b
or eax, 0xffffffff
xor ecx, ecx
xor edx, edx
mov edi, esi
mov dword [esi], ebx
mov dword [esi + 8], ebx
mov dword [esi + 0x10], eax
mov dword [esi + 0x3c], ebx
mov dword [esi + 4], ebx
mov word [esi + 0x40], dx
mov dword [esi + 0xc], ebx
mov word [esi + 0x42], cx
mov dword [esi + 0x14], ebx
mov dword [esi + 0x18], ebx
mov dword [esi + 0x1c], ebx
mov dword [esi + 0x20], eax
mov dword [esi + 0x24], ebx
mov dword [esi + 0x34], ebx
mov dword [esi + 0x38], ebx
mov dword [ebp - 0x14], edi
cmp byte [ebp - 5], cl
je 0x46f71b
cmp dword [ebp - 0xc], 1
je 0x46f720
cmp dword [ebp - 0xc], 0
jne 0x46f5fb
mov edx, dword [ebp - 0x20]
mov eax, edx
push 0
and eax, 0xfffff
lea ecx, [edx + edx]
or eax, 0x70c00000
push esi
call fcn.0050a980
mov ebx, eax
test ebx, ebx
jl 0x46f6ad
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0xb828]
mov edx, dword [eax + 0x34]
mov edi, dword [ebp - 0x20]
mov dword [esi + 0x34], edx
mov eax, dword [eax + 0x38]
mov dword [esi + 0x38], eax
mov ecx, dword [ecx + 0xb828]
mov edx, dword [ecx + 0xc]
mov eax, dword [esi + 0xc]
add edi, edi
add edi, edi
push edi
push edx
push eax
xor ebx, ebx
call sub.msvcrt.dll_memcpy
mov eax, dword [ebp - 0xc]
mov edx, dword [esi + 4]
add esp, 0xc
shl eax, 4
push edi
lea ecx, [ebp + eax - 0xdc]
push ecx
push edx
mov dword [ebp - 0x1c], eax
call sub.msvcrt.dll_memcpy
mov ecx, dword [esi + 4]
add esp, 0xc
lea eax, [ebp - 0xcc]
sub eax, dword [ebp - 0x1c]
push edi
push eax
add ecx, edi
push ecx
call sub.msvcrt.dll_memcpy
mov eax, dword [esi + 4]
mov edx, dword [eax]
mov edi, dword [edi + eax]
mov eax, dword [esi + 0xc]
mov ecx, dword [eax]
add esp, 0xc
cmp byte [ebp + 0x18], bl
je 0x46f75d
mov eax, dword [ecx + 0x10]
cmp eax, dword [edx + 0x10]
jne 0x46f68d
mov eax, dword [ecx + 0x28]
cmp eax, dword [edx + 0x28]
je 0x46f6a5
mov eax, dword [ecx + 0x10]
cmp eax, dword [edi + 0x10]
jne 0x46f75d
mov ecx, dword [ecx + 0x28]
cmp ecx, dword [edi + 0x28]
jne 0x46f75d
mov ebx, 1
mov edi, dword [ebp - 0x14]
test edi, edi
je 0x46f7b4
mov esi, edi
call fcn.0050a890
mov eax, dword [0x551d48]
test eax, eax
jl 0x46f7b4
push eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov esi, eax
test esi, esi
je 0x46f7b4
push 0x44
push 0xfe
push edi
call sub.msvcrt.dll_memset
mov dword [edi], 0
mov eax, dword [esi + 0x18]
add esp, 0xc
test eax, eax
je 0x46f7ae
mov dword [eax], edi
mov dword [esi + 0x18], edi
mov eax, ebx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x14
mov ebx, 0x8007000e
mov eax, ebx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x14
cmp dword [ebp - 0xc], ebx
jne 0x46f74e
mov edx, dword [ebp - 0x20]
mov eax, edx
push 0
and eax, 0xfffff
lea ecx, [edx + edx]
or eax, 0x70b00000
push esi
call fcn.0050a980
mov ebx, eax
test ebx, ebx
jl 0x46f6ad
cmp byte [ebp - 5], 0
jne 0x46f5d1
cmp dword [ebp - 0xc], 1
je 0x46f5d7
jmp 0x46f5fb
mov eax, dword [ebp + 0xc]
test eax, eax
je 0x46f797
mov edx, dword [ebp - 0x28]
mov dword [eax], esi
xor eax, eax
test edx, edx
jbe 0x46f787
mov ecx, dword [ebp + 0x10]
lea ecx, [ecx + edx*4 - 4]
mov esi, dword [ebp + eax*4 - 0x15c]
mov dword [ecx], esi
inc eax
sub ecx, 4
cmp eax, edx
jb 0x46f776
mov eax, dword [ebp + 0x14]
mov dword [eax], edx
mov eax, ebx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x14
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 0xb828]
push esi
push edx
call fcn.0050b3a0
mov ebx, eax
jmp 0x46f6aa
mov dword [esi + 0x14], edi
mov dword [esi + 0x18], edi
pop edi
pop esi
mov eax, ebx
pop ebx
mov esp, ebp
pop ebp
ret 0x14