Function at 0x4ef960
Capabilities:
Get thread local storage value

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x38
push ebx
mov ebx, dword [ebp + 8]
test byte [ebx + 0x372c], 4
push esi
push edi
je 0x4ef985
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
xor eax, eax
mov edx, 1
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x30], eax
cmp dword [ebx + 0x10], edx
jbe 0x4efec2
mov dword [ebp - 0x14], edx
mov dword [ebp - 0x1c], eax
mov edi, dword [ebx + 0x14]
mov eax, dword [ebp - 0x1c]
mov eax, dword [edi + eax]
mov ecx, dword [eax + 0x3c]
mov dword [ebp - 0x28], eax
mov eax, ecx
and eax, 0xf0000000
cmp eax, 0x10000000
jb 0x4efe4f
cmp eax, 0x40000000
ja 0x4efe4f
mov esi, ecx
and esi, 0xfff00000
cmp esi, 0x23400000
je 0x4efe4f
cmp esi, 0x23500000
je 0x4efe4f
cmp esi, 0x23600000
je 0x4efe4f
cmp esi, 0x10600000
ja 0x4efa1b
je 0x4efe4f
cmp esi, 0x10300000
je 0x4efe4f
cmp esi, 0x10500000
jmp 0x4efa21
cmp esi, 0x10700000
je 0x4efe4f
mov ecx, dword [ebp - 0x14]
cmp ecx, dword [ebx + 0x10]
jae 0x4efe4f
mov eax, ecx
lea eax, [edi + eax*4]
jmp 0x4efa40
mov ecx, dword [eax]
test dword [ecx + 0x3c], 0xfff00000
mov dword [ebp - 8], ecx
jne 0x4efa5c
inc edx
add eax, 4
cmp edx, dword [ebx + 0x10]
jb 0x4efa40
jmp 0x4efe4f
mov edx, dword [ecx + 0x3c]
and edx, 0xfff00000
cmp edx, esi
jne 0x4efe4f
inc dword [ebx + 0x830]
mov al, byte [ebx + 0x828]
mov edx, dword [ebp - 0x28]
mov ecx, dword [ecx + 0xc]
mov edi, dword [ecx]
mov byte [ebp - 2], al
mov eax, dword [edx + 0xc]
mov esi, dword [eax]
call fcn.0051b0e0
test al, al
je 0x4efe4c
mov esi, dword [ebp - 8]
mov edx, dword [esi + 0xc]
mov ebx, dword [ebp - 0x28]
mov eax, dword [edx]
mov ecx, dword [ebx + 0xc]
mov edx, dword [ecx]
mov eax, dword [eax + 0x48]
cmp eax, dword [edx + 0x48]
jne 0x4efe4c
mov ecx, dword [ebx + 0x3c]
mov eax, dword [ebx]
and ecx, 0xfffff
xor edx, edx
div ecx
mov dword [ebp - 0x18], ecx
mov ecx, dword [esi + 0x3c]
and ecx, 0xfffff
mov dword [ebp - 0x28], ecx
xor ecx, ecx
mov dword [ebp - 0xc], ecx
mov dword [ebp - 0x10], eax
cmp eax, ecx
jbe 0x4efb49
mov dword [ebp - 0x24], ecx
mov dword [ebp - 0x20], ecx
jmp 0x4efae7
mov esi, dword [ebp - 8]
mov eax, dword [ebp + 8]
mov ecx, dword [esi + 4]
mov edx, dword [ebx + 4]
push eax
mov eax, dword [ebp - 0x20]
mov esi, dword [ecx + eax]
mov ecx, dword [ebp - 0x24]
mov edi, dword [edx + ecx]
call fcn.005192b0
test al, al
je 0x4efb43
mov edx, dword [ebp - 8]
mov eax, dword [edx + 4]
mov ecx, dword [ebp - 0x20]
mov edx, dword [eax + ecx]
mov ecx, dword [ebp - 0x24]
mov eax, dword [ebx + 4]
mov eax, dword [eax + ecx]
mov ecx, dword [eax + 0x48]
cmp ecx, dword [edx + 0x48]
jne 0x4efb43
mov ecx, dword [ebp - 0x28]
mov eax, dword [ebp - 0xc]
add ecx, ecx
add ecx, ecx
add dword [ebp - 0x20], ecx
mov ecx, dword [ebp - 0x18]
add ecx, ecx
add ecx, ecx
add dword [ebp - 0x24], ecx
inc eax
mov dword [ebp - 0xc], eax
cmp eax, dword [ebp - 0x10]
jb 0x4efae4
mov esi, dword [ebp - 8]
mov eax, dword [ebp - 0x10]
cmp dword [ebp - 0xc], eax
jne 0x4efe4c
xor edi, edi
cmp dword [esi], edi
jbe 0x4efb80
jmp 0x4efb60
mov edx, dword [ebx + 8]
mov ecx, dword [esi + 4]
mov eax, dword [ebx + 0xc]
push edx
mov edx, dword [ecx + edi*4]
mov ecx, dword [ebp + 8]
push eax
push edx
call fcn.004ef8c0
test al, al
jne 0x4efb80
inc edi
cmp edi, dword [esi]
jb 0x4efb60
cmp edi, dword [esi]
jne 0x4efe4c
mov edx, dword [ebx + 8]
mov dword [ebp - 0x24], 0
test edx, edx
jbe 0x4efbb7
mov eax, dword [ebx + 0xc]
lea esp, [esp]
mov ecx, dword [eax]
mov ecx, dword [ecx + 0x2c]
mov edi, 1
shl edi, cl
add eax, 4
or dword [ebp - 0x24], edi
sub edx, 1
jne 0x4efba0
xor eax, eax
cmp dword [esi + 8], eax
jbe 0x4efbdd
mov edx, dword [esi + 0xc]
mov ecx, dword [edx]
mov ecx, dword [ecx + 0x2c]
mov edi, 1
shl edi, cl
mov ecx, dword [ebp - 0x24]
test ecx, edi
jne 0x4efbdd
inc eax
add edx, 4
cmp eax, dword [esi + 8]
jb 0x4efbc1
cmp eax, dword [esi + 8]
jne 0x4efe4c
mov eax, dword [ebp + 8]
inc dword [eax + 0x82c]
cmp byte [ebp - 2], 0
je 0x4efe4c
test byte [eax + 0xac], 2
je 0x4efd11
xor edx, edx
mov dword [ebp - 0xc], edx
cmp dword [ebp - 0x10], edx
jbe 0x4efd08
xor eax, eax
mov byte [ebp - 1], 1
mov byte [ebp - 2], 1
cmp dword [ebp - 0x18], eax
jbe 0x4efc8c
mov ecx, dword [ebx + 0x3c]
mov esi, dword [ebx + 4]
and ecx, 0xfffff
imul ecx, edx
lea ecx, [esi + ecx*4]
mov esi, dword [ecx]
mov esi, dword [esi + 0x2c]
mov dword [ebp - 0x24], esi
mov esi, ecx
mov ecx, dword [ebx + 0x3c]
and ecx, 0xfffff
imul ecx, edx
mov edx, dword [ebx + 4]
lea edi, [edx + ecx*4]
mov ecx, dword [edi]
cmp dword [ecx + 0x2c], eax
je 0x4efc5c
mov byte [ebp - 1], 0
mov edx, dword [esi]
mov ecx, dword [ebp - 0x24]
cmp dword [edx + 0x2c], ecx
je 0x4efc6a
mov byte [ebp - 2], 0
inc eax
add edi, 4
add esi, 4
cmp eax, dword [ebp - 0x18]
jb 0x4efc51
cmp byte [ebp - 1], 0
jne 0x4efc86
cmp byte [ebp - 2], 0
je 0x4efd02
mov edx, dword [ebp - 0xc]
mov esi, dword [ebp - 8]
xor eax, eax
cmp dword [ebp - 0x28], eax
jbe 0x4efce7
mov ecx, dword [ebx + 0x3c]
mov edi, dword [ebx + 4]
and ecx, 0xfffff
imul ecx, edx
mov ecx, dword [edi + ecx*4]
mov ecx, dword [ecx + 0x2c]
mov dword [ebp - 0x24], ecx
mov ecx, dword [esi + 0x3c]
mov esi, dword [esi + 4]
and ecx, 0xfffff
imul ecx, edx
lea edi, [esi + ecx*4]
lea ecx, [ecx]
mov ecx, dword [edi]
mov esi, dword [ecx + 0x2c]
mov ecx, dword [ebp - 0x18]
add ecx, eax
cmp esi, ecx
je 0x4efcd2
mov byte [ebp - 1], 0
cmp esi, dword [ebp - 0x24]
je 0x4efcdb
mov byte [ebp - 2], 0
inc eax
add edi, 4
cmp eax, dword [ebp - 0x28]
jb 0x4efcc0
mov esi, dword [ebp - 8]
cmp byte [ebp - 1], 0
jne 0x4efcf3
cmp byte [ebp - 2], 0
je 0x4efd08
inc edx
mov dword [ebp - 0xc], edx
cmp edx, dword [ebp - 0x10]
jb 0x4efc14
jmp 0x4efd08
mov edx, dword [ebp - 0xc]
mov esi, dword [ebp - 8]
cmp edx, dword [ebp - 0x10]
jne 0x4efe4c
mov eax, dword [ebx + 0x3c]
mov edi, dword [esi + 8]
add edi, dword [ebx + 8]
mov ecx, dword [esi]
add ecx, dword [ebx]
and eax, 0xfff00000
mov edx, eax
push edi
xor edx, edi
push ecx
mov ecx, dword [ebp + 8]
and edx, 0xfffff
xor edx, eax
push edx
lea eax, [ebp - 0x2c]
push eax
push ecx
call fcn.00508af0
mov esi, dword [ebp - 0x2c]
mov dword [ebp - 0x30], eax
test eax, eax
jl 0x4efe6f
mov edx, dword [ebx + 0x34]
mov dword [esi + 0x34], edx
mov eax, dword [ebx + 0x38]
mov dword [esi + 0x38], eax
mov ecx, dword [ebx + 8]
mov edx, dword [ebx + 0xc]
mov eax, dword [esi + 0xc]
add ecx, ecx
add ecx, ecx
push ecx
push edx
push eax
call sub.msvcrt.dll_memcpy
mov eax, dword [ebp - 8]
mov ecx, dword [eax + 8]
mov edx, dword [eax + 0xc]
mov eax, dword [ebx + 8]
add ecx, ecx
add esp, 0xc
add ecx, ecx
push ecx
mov ecx, dword [esi + 0xc]
push edx
lea edx, [ecx + eax*4]
push edx
call sub.msvcrt.dll_memcpy
xor eax, eax
add esp, 0xc
cmp dword [ebp - 0x10], eax
jbe 0x4efe19
lea edx, [edi*4]
mov edi, dword [ebp - 0x18]
mov dword [ebp - 0x20], eax
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x28]
lea ecx, [eax*4]
mov eax, dword [ebp - 0x10]
add edi, edi
add edi, edi
mov dword [ebp - 0x30], ecx
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x28], edi
mov dword [ebp - 0x18], eax
mov ecx, dword [ebx + 4]
add ecx, dword [ebp - 0x24]
mov edx, dword [esi + 4]
add edx, dword [ebp - 0xc]
push edi
push ecx
push edx
call sub.msvcrt.dll_memcpy
mov ecx, dword [ebp - 8]
mov eax, dword [ebp - 0x30]
mov edx, dword [ecx + 4]
add edx, dword [ebp - 0x20]
add esp, 0xc
push eax
mov eax, dword [esi + 4]
add eax, dword [ebp - 0x28]
push edx
push eax
call sub.msvcrt.dll_memcpy
mov eax, dword [ebp - 0x34]
mov ecx, dword [ebp - 0x30]
add dword [ebp - 0x24], edi
add dword [ebp - 0x20], ecx
add dword [ebp - 0xc], eax
add dword [ebp - 0x28], eax
add esp, 0xc
sub dword [ebp - 0x18], 1
jne 0x4efdcd
mov edi, dword [ebp + 8]
push 1
push ebx
lea edx, [ebp - 0x2c]
push edx
push 1
call fcn.00508f00
mov dword [ebp - 0x30], eax
test eax, eax
jl 0x4efe6f
mov eax, dword [ebp - 8]
sub dword [ebp - 0x1c], 4
xor ecx, ecx
dec dword [ebp - 0x14]
mov dword [ebp - 0x2c], ecx
mov dword [eax + 0x3c], ecx
mov dword [eax], ecx
mov dword [eax + 8], ecx
mov ebx, edi
jmp 0x4efe4f
mov ebx, dword [ebp + 8]
mov edx, dword [ebp - 0x14]
add dword [ebp - 0x1c], 4
inc edx
mov dword [ebp - 0x14], edx
cmp edx, dword [ebx + 0x10]
jb 0x4ef9a1
mov eax, dword [ebp - 0x30]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
test esi, esi
je 0x4efec2
call fcn.0050a890
mov eax, dword [0x551d48]
test eax, eax
jl 0x4efec2
push eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov edi, eax
test edi, edi
je 0x4efec2
push 0x44
push 0xfe
push esi
call sub.msvcrt.dll_memset
mov dword [esi], 0
mov eax, dword [edi + 0x18]
add esp, 0xc
test eax, eax
je 0x4efebc
mov dword [eax], esi
mov eax, dword [ebp - 0x30]
mov dword [edi + 0x18], esi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov dword [edi + 0x14], esi
mov dword [edi + 0x18], esi
mov eax, dword [ebp - 0x30]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4