Function at 0x100c9310
Capabilities:
Get thread local storage value

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x170
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
mov ecx, dword [edi + 0x10294]
mov ebx, dword [ecx + 0x3c]
xor eax, eax
push 0x80
mov esi, ebx
push eax
lea edx, [ebp - 0x16c]
and esi, 0xfffff
push edx
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x4c], eax
mov dword [ebp - 0x48], 1
mov dword [ebp - 0x44], 2
mov dword [ebp - 0x40], 3
mov dword [ebp - 0x18], esi
call sub.msvcrt.dll_memset
and ebx, 0xfff00000
add esp, 0xc
cmp ebx, 0x30000000
je 0x100c9383
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x14
mov byte [ebp - 5], 0
mov byte [ebp - 0xe], 0
mov byte [ebp - 0xf], 0
mov byte [ebp - 0xd], 0
mov dword [ebp - 0xc], 0
test esi, esi
jbe 0x100c95ed
mov ecx, esi
lea eax, [ecx*4]
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x14], eax
lea eax, [ecx*8]
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x1c], eax
mov edi, edi
mov eax, dword [edi + 0x10294]
mov eax, dword [eax + 4]
mov ecx, dword [ebp - 0x14]
mov ebx, dword [eax + ecx]
mov edx, dword [ebp - 0x1c]
mov esi, dword [eax + edx]
mov eax, dword [esi + 0x50]
mov dword [ebp - 0x38], eax
mov eax, dword [ebx + 0x50]
mov eax, dword [eax + 8]
and eax, 0x100
xor ecx, ecx
or eax, ecx
je 0x100c9428
lea ecx, [ebp - 0x2c]
push ecx
call fcn.101658d0
test eax, eax
jne 0x100c9428
fldz
fcomp qword [ebp - 0x2c]
fnstsw ax
test ah, 0x44
jp 0x100c9428
cmp dword [ebx + 0x5c], 0xffffffff
jne 0x100c9428
mov edx, dword [edi + 0x10294]
mov eax, dword [edx + 4]
mov ecx, dword [ebp - 0x1c]
mov edx, dword [eax + ecx]
mov ecx, dword [ebp - 0xc]
cmp edx, dword [eax + ecx*4]
jne 0x100c9428
mov byte [ebp - 5], 1
jmp 0x100c942c
mov byte [ebp - 0xf], 1
mov edx, dword [ebp - 0x38]
mov eax, dword [edx + 8]
and eax, 0x100
xor ecx, ecx
or eax, ecx
je 0x100c947b
lea eax, [ebp - 0x34]
push eax
mov ebx, esi
call fcn.101658d0
test eax, eax
jne 0x100c947b
fldz
fcomp qword [ebp - 0x34]
fnstsw ax
test ah, 0x44
jp 0x100c947b
cmp dword [esi + 0x5c], 0xffffffff
jne 0x100c947b
mov ecx, dword [edi + 0x10294]
mov eax, dword [ecx + 4]
mov edx, dword [ebp - 0x14]
mov ecx, dword [eax + edx]
mov edx, dword [ebp - 0xc]
cmp ecx, dword [eax + edx*4]
jne 0x100c947b
mov byte [ebp - 0xe], 1
jmp 0x100c947f
mov byte [ebp - 0xd], 1
mov eax, dword [ebp - 0xc]
mov ecx, 4
add dword [ebp - 0x1c], ecx
add dword [ebp - 0x14], ecx
inc eax
mov dword [ebp - 0xc], eax
cmp eax, dword [ebp - 0x18]
jb 0x100c93c0
cmp byte [ebp - 5], 0
je 0x100c9517
cmp byte [ebp - 0xf], 0
jne 0x100c9517
call fcn.101751a0
mov edx, eax
test edx, edx
je 0x100c9509
mov edi, dword [ebp - 0x18]
xor ebx, ebx
or eax, 0xffffffff
mov dword [edx + 0x10], eax
mov dword [edx + 0x20], eax
xor ecx, ecx
push ebx
mov eax, edi
mov word [edx + 0x40], cx
mov word [edx + 0x42], cx
and eax, 0xfffff
mov dword [edx], ebx
mov dword [edx + 8], ebx
mov dword [edx + 0x3c], ebx
mov dword [edx + 4], ebx
mov dword [edx + 0xc], ebx
mov dword [edx + 0x14], ebx
mov dword [edx + 0x18], ebx
mov dword [edx + 0x1c], ebx
mov dword [edx + 0x24], ebx
mov dword [edx + 0x34], ebx
mov dword [edx + 0x38], ebx
mov esi, edx
push edx
lea ecx, [edi + edi]
or eax, 0x70b00000
mov edx, edi
call fcn.10172020
mov edi, eax
cmp edi, ebx
jmp 0x100c9567
mov eax, 0x8007000e
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x14
cmp byte [ebp - 0xe], 0
je 0x100c95ed
cmp byte [ebp - 0xd], 0
jne 0x100c95ed
cmp dword [ebp + 0xc], 0
jne 0x100c9375
call fcn.101751a0
test eax, eax
je 0x100c9509
call fcn.10171da0
mov esi, eax
test esi, esi
je 0x100c9509
mov edx, dword [ebp - 0x18]
mov eax, edx
push 0
and eax, 0xfffff
lea ecx, [edx + edx]
or eax, 0x70c00000
push esi
call fcn.10172020
mov edi, eax
test edi, edi
jl 0x100c9946
mov ebx, dword [ebp + 8]
mov eax, dword [ebx + 0x10294]
mov edx, dword [eax + 0x34]
mov edi, dword [ebp - 0x3c]
mov dword [esi + 0x34], edx
mov eax, dword [eax + 0x38]
mov dword [esi + 0x38], eax
mov ecx, dword [ebx + 0x10294]
mov edx, dword [ecx + 0xc]
mov eax, dword [esi + 0xc]
push edi
push edx
push eax
call sub.msvcrt.dll_memcpy
mov ecx, dword [ebx + 0x10294]
mov edx, dword [ecx + 4]
mov eax, dword [esi + 4]
add esp, 0xc
push edi
push edx
push eax
call sub.msvcrt.dll_memcpy
mov eax, dword [esi + 4]
mov ecx, dword [ebx + 0x10294]
mov edx, dword [ecx + 4]
add esp, 0xc
add eax, edi
cmp byte [ebp - 5], 0
push edi
je 0x100c95cc
add edx, edi
jmp 0x100c95cf
add edx, dword [ebp - 0x24]
push edx
push eax
call sub.msvcrt.dll_memcpy
mov ecx, dword [ebx + 0x10294]
add esp, 0xc
push esi
push ecx
call fcn.10172c80
mov edi, eax
jmp 0x100c9946
cmp dword [ebp + 0xc], 0
mov ecx, dword [ebp - 0x18]
sete dl
movzx eax, dl
push eax
push ecx
lea edx, [ebp - 0x4c]
push edx
lea eax, [ebp - 0xec]
push eax
mov eax, dword [edi + 0x10294]
lea ecx, [ebp - 0x20]
push ecx
lea edx, [ebp - 0x16c]
push edx
push 0x100717b8
push eax
mov ecx, edi
call fcn.10161210
cmp dword [ebp - 0x20], 0x20
mov edi, eax
jbe 0x100c963d
mov edi, 0x80004005
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x14
test edi, edi
jne 0x100c9a4e
mov byte [ebp - 5], 0
xor cl, cl
mov dword [ebp - 0xc], 0
mov dword [ebp - 0x1c], 0
lea esp, [esp]
cmp dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 0
jbe 0x100c978e
mov edx, dword [ebp - 0x14]
mov ecx, dword [ebp - 0xc]
add ecx, ecx
add ecx, ecx
mov esi, edx
sub esi, ecx
mov ebx, dword [ebp + esi*4 - 0xdc]
mov esi, dword [ebp - 0x1c]
lea eax, [ecx + edx]
mov eax, dword [ebp + eax*4 - 0xec]
lea ecx, [esi + edx]
mov ecx, dword [ebp + ecx*4 - 0xcc]
sub edx, esi
mov esi, dword [ebp + edx*4 - 0xbc]
mov edx, dword [eax + 0x7c]
cmp edx, ecx
je 0x100c96bd
mov edi, dword [ecx + 0x7c]
cmp edi, eax
je 0x100c96bd
cmp edx, 0xffffffff
je 0x100c96dc
cmp edx, edi
jne 0x100c96dc
mov edx, dword [eax + 0x80]
xor edx, 0x400
cmp edx, dword [ecx + 0x80]
jne 0x100c96dc
cmp ebx, esi
jne 0x100c96dc
mov cl, 1
jmp 0x100c976a
cmp eax, ecx
jne 0x100c9768
mov eax, dword [ebx + 0x7c]
cmp eax, esi
je 0x100c96fb
mov ecx, dword [esi + 0x7c]
cmp ecx, ebx
je 0x100c96fb
cmp eax, 0xffffffff
je 0x100c9714
cmp eax, ecx
jne 0x100c9714
mov eax, dword [ebx + 0x80]
xor eax, 0x400
cmp eax, dword [esi + 0x80]
jne 0x100c9714
mov cl, 1
mov al, cl
jmp 0x100c976c
mov eax, dword [ebx + 0x50]
mov eax, dword [eax + 8]
and eax, 0x100
xor ecx, ecx
or eax, ecx
je 0x100c9768
mov eax, dword [esi + 0x50]
mov eax, dword [eax + 8]
and eax, 0x100
or eax, ecx
je 0x100c9768
mov edi, dword [ebp + 8]
lea ecx, [ebp - 0x34]
push ecx
call fcn.101658d0
test eax, eax
jne 0x100c9768
lea edx, [ebp - 0x2c]
push edx
mov ebx, esi
call fcn.101658d0
test eax, eax
jne 0x100c9768
fld qword [ebp - 0x34]
fchs
fcomp qword [ebp - 0x2c]
fnstsw ax
test ah, 0x44
jp 0x100c9768
mov cl, 1
mov al, cl
jmp 0x100c976c
xor cl, cl
xor al, al
mov edx, dword [ebp - 0x14]
test edx, edx
jne 0x100c9778
mov byte [ebp - 5], al
jmp 0x100c977d
cmp byte [ebp - 5], al
jne 0x100c97c4
test cl, cl
je 0x100c9792
inc edx
mov dword [ebp - 0x14], edx
cmp edx, dword [ebp - 0x18]
jb 0x100c9671
test cl, cl
jne 0x100c97c8
mov eax, dword [ebp - 0x1c]
add eax, 4
mov dword [ebp - 0x1c], eax
cmp eax, 8
jb 0x100c9660
mov eax, dword [ebp - 0xc]
inc eax
mov dword [ebp - 0xc], eax
cmp eax, 2
jb 0x100c9652
mov edi, 1
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x14
xor cl, cl
jmp 0x100c9792
mov eax, dword [0x101e316c]
xor edi, edi
cmp eax, edi
jge 0x100c97d7
xor eax, eax
jmp 0x100c97de
push eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
cmp dword [eax + 0x18], edi
je 0x100c9806
mov ecx, dword [eax + 0x18]
cmp ecx, edi
jne 0x100c97f0
xor ecx, ecx
mov ebx, ecx
jmp 0x100c9814
mov edx, dword [ecx]
mov dword [eax + 0x18], edx
cmp edx, edi
jne 0x100c97fc
mov dword [eax + 0x1c], edi
mov dword [ecx], 0xfefefefe
mov ebx, ecx
jmp 0x100c9814
mov ecx, dword [eax + 0x14]
push 0x10
push 0x44
call fcn.101d8457
mov ebx, eax
cmp ebx, edi
je 0x100c99a2
or eax, 0xffffffff
xor edx, edx
xor ecx, ecx
mov esi, ebx
mov dword [ebx], edi
mov dword [ebx + 8], edi
mov dword [ebx + 0x10], eax
mov dword [ebx + 0x3c], edi
mov dword [ebx + 4], edi
mov word [ebx + 0x40], cx
mov dword [ebx + 0xc], edi
mov word [ebx + 0x42], dx
mov dword [ebx + 0x14], edi
mov dword [ebx + 0x18], edi
mov dword [ebx + 0x1c], edi
mov dword [ebx + 0x20], eax
mov dword [ebx + 0x24], edi
mov dword [ebx + 0x34], edi
mov dword [ebx + 0x38], edi
mov dword [ebp - 0x14], esi
cmp byte [ebp - 5], dl
je 0x100c99b2
cmp dword [ebp - 0xc], 1
je 0x100c99b7
cmp dword [ebp - 0xc], 0
jne 0x100c9893
mov edx, dword [ebp - 0x18]
mov eax, edx
push 0
and eax, 0xfffff
lea ecx, [edx + edx]
or eax, 0x70c00000
push ebx
call fcn.10172020
mov edi, eax
test edi, edi
jl 0x100c9946
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0x10294]
mov edx, dword [eax + 0x34]
mov esi, dword [ebp - 0x18]
mov dword [ebx + 0x34], edx
mov eax, dword [eax + 0x38]
mov dword [ebx + 0x38], eax
mov ecx, dword [ecx + 0x10294]
mov edx, dword [ecx + 0xc]
mov eax, dword [ebx + 0xc]
add esi, esi
add esi, esi
push esi
push edx
push eax
xor edi, edi
call sub.msvcrt.dll_memcpy
mov eax, dword [ebp - 0xc]
mov edx, dword [ebx + 4]
add esp, 0xc
shl eax, 4
push esi
lea ecx, [ebp + eax - 0xec]
push ecx
push edx
mov dword [ebp - 0x24], eax
call sub.msvcrt.dll_memcpy
mov ecx, dword [ebx + 4]
add esp, 0xc
lea eax, [ebp - 0xdc]
sub eax, dword [ebp - 0x24]
push esi
push eax
add ecx, esi
push ecx
call sub.msvcrt.dll_memcpy
mov eax, dword [ebx + 4]
mov edx, dword [eax]
mov esi, dword [esi + eax]
mov eax, dword [ebx + 0xc]
mov ecx, dword [eax]
add esp, 0xc
cmp byte [ebp + 0x18], 0
je 0x100c99f4
mov eax, dword [ecx + 0x50]
cmp eax, dword [edx + 0x50]
jne 0x100c9926
mov eax, dword [ecx + 0x60]
cmp eax, dword [edx + 0x60]
je 0x100c993e
mov eax, dword [ecx + 0x50]
cmp eax, dword [esi + 0x50]
jne 0x100c99f4
mov ecx, dword [ecx + 0x60]
cmp ecx, dword [esi + 0x60]
jne 0x100c99f4
mov edi, 1
mov esi, dword [ebp - 0x14]
test esi, esi
je 0x100c9a4e
call fcn.10171ee0
mov eax, dword [0x101e316c]
test eax, eax
jl 0x100c9a4e
push eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ebx, eax
test ebx, ebx
je 0x100c9a4e
push 0x44
push 0xfe
push esi
call sub.msvcrt.dll_memset
mov dword [esi], 0
mov eax, dword [ebx + 0x1c]
add esp, 0xc
test eax, eax
je 0x100c9a48
mov dword [eax], esi
mov dword [ebx + 0x1c], esi
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x14
mov edi, 0x8007000e
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x14
cmp dword [ebp - 0xc], edi
jne 0x100c99e5
mov edx, dword [ebp - 0x18]
mov eax, edx
push 0
and eax, 0xfffff
lea ecx, [edx + edx]
or eax, 0x70b00000
push ebx
call fcn.10172020
mov edi, eax
test edi, edi
jl 0x100c9946
cmp byte [ebp - 5], 0
jne 0x100c9869
cmp dword [ebp - 0xc], 1
je 0x100c986f
jmp 0x100c9893
mov eax, dword [ebp + 0xc]
test eax, eax
je 0x100c9a31
mov edx, dword [ebp - 0x20]
mov dword [eax], ebx
xor eax, eax
test edx, edx
jbe 0x100c9a21
mov ecx, dword [ebp + 0x10]
lea ecx, [ecx + edx*4 - 4]
lea ecx, [ecx]
mov esi, dword [ebp + eax*4 - 0x16c]
mov dword [ecx], esi
inc eax
sub ecx, 4
cmp eax, edx
jb 0x100c9a10
mov eax, dword [ebp + 0x14]
mov dword [eax], edx
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x14
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 0x10294]
push ebx
push edx
call fcn.10172c80
mov edi, eax
jmp 0x100c9943
mov dword [ebx + 0x18], esi
mov dword [ebx + 0x1c], esi
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x14