Function at 0x10163420
Capabilities:
Get thread local storage value

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
push ebx
mov ebx, eax
push ebx
push edi
call fcn.101692d0
test eax, eax
jl 0x10163842
mov eax, dword [ebx + 0x8100]
mov dword [edi + 0x8100], eax
mov ecx, dword [ebx + 0x8104]
mov eax, dword [ebp + 8]
push esi
mov esi, dword [edi + 0x8130]
mov dword [edi + 0x8104], ecx
mov edx, dword [ebx + 0x8108]
mov ecx, dword [ebp + 0xc]
mov dword [edi + 0x8108], edx
mov dword [edi + 0x8118], eax
mov dword [edi + 0x8124], ecx
test esi, esi
je 0x10163486
call fcn.10100050
push esi
call sub.msvcrt.dll_void___cdecl_operator_delete_void__
add esp, 4
test byte [edi + 0x8124], 1
mov dword [edi + 0x8130], 0
je 0x101634b9
push 0x80
call sub.msvcrt.dll_void____cdecl_operator_new_unsigned_int_
add esp, 4
test eax, eax
je 0x101634b1
call fcn.10100140
jmp 0x101634b3
xor eax, eax
mov dword [edi + 0x8130], eax
mov edx, dword [edi + 0x812c]
and edx, 0xffffff08
or edx, 0x100
mov dword [edi + 0x812c], edx
mov eax, dword [ebx + 0x8020]
mov ecx, dword [eax + 0x2c]
mov dword [edi + 0x8020], ecx
mov edx, dword [ebx + 0x8024]
mov eax, dword [edx + 0x2c]
mov dword [edi + 0x8024], eax
mov ecx, dword [ebx + 0x8028]
mov edx, dword [ecx + 0x2c]
mov dword [edi + 0x8028], edx
mov eax, dword [ebx + 0x802c]
mov ecx, dword [eax + 0x2c]
mov dword [edi + 0x802c], ecx
mov edx, dword [ebx + 0x8030]
mov eax, dword [edx + 0x2c]
mov dword [edi + 0x8030], eax
mov ecx, dword [ebx + 0x8038]
mov edx, dword [ecx + 0x2c]
mov dword [edi + 0x8038], edx
mov eax, dword [ebx + 0x803c]
mov ecx, dword [eax + 0x2c]
mov dword [edi + 0x803c], ecx
mov edx, dword [ebx + 0x8040]
mov eax, dword [edx + 0x2c]
mov dword [edi + 0x8040], eax
mov ecx, dword [ebx + 0x8044]
mov edx, dword [ecx + 0x2c]
mov dword [edi + 0x8044], edx
mov eax, dword [ebx + 0x8048]
mov ecx, dword [eax + 0x2c]
mov dword [edi + 0x8048], ecx
mov edx, dword [ebx + 0x804c]
mov eax, dword [edx + 0x2c]
mov dword [edi + 0x804c], eax
mov ecx, dword [ebx + 0x8050]
mov edx, dword [ecx + 0x2c]
mov dword [edi + 0x8050], edx
mov eax, dword [ebx + 0x8054]
mov ecx, dword [eax + 0x2c]
mov dword [edi + 0x8054], ecx
mov edx, dword [ebx + 0x8058]
mov eax, dword [edx + 0x2c]
mov dword [edi + 0x8058], eax
mov ecx, dword [ebx + 0x805c]
mov edx, dword [ecx + 0x2c]
mov dword [edi + 0x805c], edx
mov eax, dword [ebx + 0x8060]
mov ecx, dword [eax + 0x2c]
mov dword [edi + 0x8060], ecx
mov edx, dword [ebx + 0x8064]
mov eax, dword [edx + 0x2c]
mov dword [edi + 0x8064], eax
mov ecx, dword [ebx + 0x8068]
mov edx, dword [ecx + 0x2c]
mov dword [edi + 0x8068], edx
mov eax, dword [ebx + 0x806c]
mov ecx, dword [eax + 0x2c]
mov dword [edi + 0x806c], ecx
mov edx, dword [ebx + 0x8070]
mov eax, dword [edx + 0x2c]
mov dword [edi + 0x8070], eax
mov ecx, dword [ebx + 0x8074]
mov edx, dword [ecx + 0x2c]
mov dword [edi + 0x8074], edx
mov eax, dword [ebx + 0x8078]
mov ecx, dword [eax + 0x2c]
mov dword [edi + 0x8078], ecx
mov edx, dword [ebx + 0x807c]
mov eax, dword [edx + 0x2c]
mov dword [edi + 0x807c], eax
mov ecx, dword [ebx + 0x8080]
mov edx, dword [ecx + 0x2c]
mov dword [edi + 0x8080], edx
mov eax, dword [ebx + 0x8084]
mov ecx, dword [eax + 0x2c]
mov dword [edi + 0x8084], ecx
mov edx, dword [ebx + 0x8088]
mov eax, dword [edx + 0x2c]
mov dword [edi + 0x8088], eax
mov ecx, dword [ebx + 0x808c]
mov edx, dword [ecx + 0x2c]
mov dword [edi + 0x808c], edx
mov eax, dword [ebx + 0x8090]
mov ecx, dword [eax + 0x2c]
mov dword [edi + 0x8090], ecx
mov edx, dword [ebx + 0x8094]
mov eax, dword [edx + 0x2c]
mov dword [edi + 0x8094], eax
mov ecx, dword [ebx + 0x8098]
mov edx, dword [ecx + 0x2c]
mov dword [edi + 0x8098], edx
mov eax, dword [ebx + 0x809c]
mov ecx, dword [eax + 0x2c]
mov dword [edi + 0x809c], ecx
mov edx, dword [ebx + 0x80a0]
mov eax, dword [edx + 0x2c]
mov dword [edi + 0x80a0], eax
mov ecx, dword [ebx + 0x80a4]
mov edx, dword [ecx + 0x2c]
mov dword [edi + 0x80a4], edx
mov eax, dword [ebx + 0x80a8]
mov ecx, dword [eax + 0x2c]
mov dword [edi + 0x80a8], ecx
mov edx, dword [ebx + 0x80ac]
mov eax, dword [edx + 0x2c]
mov dword [edi + 0x80ac], eax
mov ecx, dword [ebx + 0x80b0]
mov edx, dword [ecx + 0x2c]
mov dword [edi + 0x80b0], edx
mov eax, dword [ebx + 0x80b4]
mov ecx, dword [eax + 0x2c]
mov dword [edi + 0x80b4], ecx
mov edx, dword [ebx + 0x80b8]
mov eax, dword [edx + 0x2c]
mov dword [edi + 0x80b8], eax
mov ecx, dword [ebx + 0x80bc]
mov edx, dword [ecx + 0x2c]
mov dword [edi + 0x80bc], edx
mov eax, dword [ebx + 0x80c0]
mov ecx, dword [eax + 0x2c]
mov dword [edi + 0x80c0], ecx
mov edx, dword [ebx + 0x80c4]
mov eax, dword [edx + 0x2c]
mov dword [edi + 0x80c4], eax
mov ecx, dword [ebx + 0x80c8]
mov edx, dword [ecx + 0x2c]
mov dword [edi + 0x80c8], edx
mov eax, dword [ebx + 0x80cc]
mov ecx, dword [eax + 0x2c]
mov dword [edi + 0x80cc], ecx
mov edx, dword [ebx + 0x80d0]
mov eax, dword [edx + 0x2c]
mov dword [edi + 0x80d0], eax
mov ecx, dword [ebx + 0x80d4]
mov edx, dword [ecx + 0x2c]
mov dword [edi + 0x80d4], edx
mov eax, dword [ebx + 0x80d8]
mov ecx, dword [eax + 0x2c]
mov dword [edi + 0x80d8], ecx
mov edx, dword [ebx + 0x80dc]
mov eax, dword [edx + 0x2c]
mov dword [edi + 0x80dc], eax
mov ecx, dword [ebx + 0x80e0]
mov edx, dword [ecx + 0x2c]
push 0x4000
lea eax, [edi + 0x8270]
push 0
push eax
mov dword [edi + 0x80e0], edx
call sub.msvcrt.dll_memset
push 0x4000
lea ecx, [edi + 0xc270]
push 0
push ecx
call sub.msvcrt.dll_memset
push 0x98
push 0
lea edx, [edi + 0x7f44]
push edx
call sub.msvcrt.dll_memset
push 0x7d78
add ebx, 0x1c
lea eax, [edi + 0x1c]
push ebx
push eax
call sub.msvcrt.dll_memcpy
mov edx, dword [edi]
mov eax, dword [edx + 0x10]
add esp, 0x30
mov ecx, edi
call eax
test eax, eax
jl 0x10163841
mov esi, dword [edi + 0x8128]
test esi, esi
je 0x10163826
mov eax, dword [0x101e316c]
test eax, eax
jge 0x10163813
xor eax, eax
jmp 0x1016381a
push eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, dword [eax]
push esi
push 0
push ecx
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov esi, edi
mov dword [edi + 0x8128], 0
call fcn.101ab3e0
xor edx, edx
test eax, eax
setge dl
dec edx
and eax, edx
pop esi
pop ebx
pop ebp
ret 8