Function at 0x10109520
Capabilities:
Get thread local storage value

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0xa4
mov eax, dword [0x101f0098]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
push ebx
mov ebx, dword [ebp + 0x14]
push esi
mov esi, ecx
mov ecx, dword [ebp + 0x10]
push edi
mov edi, dword [esi + 8]
mov dword [ebp - 0x4c], eax
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x94], esi
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x64], ecx
mov dword [ebp - 0x58], ebx
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x44], edi
mov dword [ebp - 0x84], edi
mov dword [ebp - 0x80], 2
mov dword [ebp - 0x88], 0
mov dword [ebp - 0x7c], 0
mov dword [ebp - 0x70], edi
mov dword [ebp - 0x6c], 2
mov dword [ebp - 0x74], 0
mov dword [ebp - 0x68], 0
test ebx, ebx
je 0x1010969c
mov edx, 1
mov dword [ebp - 0x3c], edx
cmp ebx, edx
jbe 0x101096b4
nop
push dword [esi + 8]
mov edi, dword [eax + edx*4]
mov ebx, dword [eax]
call fcn.101019a0
test al, al
je 0x101095f0
mov ecx, dword [ebp - 0x50]
mov edx, dword [ebp - 0x3c]
mov eax, dword [ecx + edx*4]
mov eax, dword [eax + 0x60]
mov ecx, dword [eax + 0xc]
and ecx, 0x4000
xor eax, eax
or eax, ecx
jne 0x101095f0
mov ebx, dword [ebp - 0x58]
inc edx
mov dword [ebp - 0x3c], edx
cmp edx, ebx
jae 0x101096b1
mov eax, dword [ebp - 0x50]
jmp 0x101095b0
mov eax, dword [ebp - 0x58]
xor ecx, ecx
xor ebx, ebx
mov dword [ebp - 0x48], ecx
mov dword [ebp - 0x38], ebx
test eax, eax
je 0x1010969c
lea edx, [eax - 1]
mov eax, dword [ebp - 0x50]
lea edi, [eax + 4]
mov dword [ebp - 0x44], edx
mov dword [ebp - 0x3c], 4
mov dword [ebp - 0x40], edi
jmp 0x10109620
cmp ebx, edx
je 0x10109657
push dword [esi + 8]
mov edi, dword [edi]
mov ebx, dword [eax + ecx*4]
call fcn.101019a0
mov edi, dword [ebp - 0x40]
mov ebx, dword [ebp - 0x38]
test al, al
je 0x10109654
mov eax, dword [edi]
mov eax, dword [eax + 0x60]
mov ecx, dword [eax + 0xc]
and ecx, 0x4000
xor eax, eax
or eax, ecx
mov ecx, dword [ebp - 0x48]
je 0x10109683
jmp 0x10109657
mov ecx, dword [ebp - 0x48]
mov eax, ebx
sub eax, ecx
inc eax
push eax
mov eax, dword [ebp - 0x64]
lea eax, [eax + ecx*4]
push eax
mov eax, dword [ebp - 0x50]
lea eax, [eax + ecx*4]
push eax
push dword [ebp - 0x4c]
mov ecx, esi
call fcn.101019a0
test eax, eax
js 0x10109ec6
lea ecx, [ebx + 1]
mov dword [ebp - 0x48], ecx
add dword [ebp - 0x3c], 4
mov eax, dword [ebp - 0x50]
mov edx, dword [ebp - 0x44]
inc ebx
add edi, 4
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x40], edi
cmp ebx, dword [ebp - 0x58]
jb 0x10109620
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.101ec0b6
mov esp, ebp
pop ebp
ret 0x10
mov edi, dword [ebp - 0x44]
mov ecx, dword [esi + 0xa0]
mov eax, dword [esi + 0x18]
mov eax, dword [eax + ecx*4]
cmp eax, 0xffffffff
je 0x101096f1
lea ecx, [ebp - 0x20]
push ecx
push eax
mov ecx, esi
call fcn.101019a0
test eax, eax
js 0x101096f1
mov eax, dword [esi + 8]
test byte [eax + 0xb0b0], 4
je 0x10109896
mov eax, dword [ebp - 0x10]
or eax, dword [ebp - 0xc]
jne 0x101098a8
mov byte [ebp - 0x31], 0
lea ecx, [ebp - 0x7c]
push ecx
lea ecx, [ebp - 0x88]
push ecx
lea eax, [ebx*8]
push eax
mov ecx, 4
push edi
lea eax, [ecx - 2]
call fcn.101019a0
mov edi, eax
test edi, edi
js 0x10109d5c
mov edx, dword [ebp - 0x88]
lea eax, [edx + ebx*8]
mov dword [ebp - 0x3c], eax
lea eax, [ebx + ebx*2]
lea eax, [edx + eax*4]
mov dword [ebp - 0x44], eax
lea ecx, [ebx*4]
lea eax, [edx + ecx*4]
mov dword [ebp - 0x60], eax
lea eax, [ebx + ebx*4]
lea eax, [edx + eax*4]
mov dword [ebp - 0x90], eax
lea edi, [ecx + edx]
lea eax, [ebx + ebx*2]
lea ecx, [ebx*8]
lea eax, [edx + eax*8]
mov dword [ebp - 0x40], edi
mov dword [ebp - 0x48], eax
test ecx, ecx
je 0x10109772
or eax, 0xffffffff
mov edi, edx
rep stosd dword es:[edi], eax
mov edi, dword [ebp - 0x40]
mov ecx, dword [ebp - 0x50]
mov eax, dword [ecx]
mov edx, dword [eax + 0x60]
mov dword [ebp - 0x54], eax
mov eax, dword [edx + 8]
and eax, 0x20
or eax, 0
mov dword [ebp - 0x5c], edx
je 0x1010978f
mov byte [ebp - 0x31], 1
test ebx, ebx
je 0x10109851
mov edx, dword [ebp - 0x88]
mov eax, ecx
mov ecx, edx
sub dword [ebp - 0x3c], ecx
sub eax, ecx
mov dword [ebp - 0x9c], eax
mov eax, dword [ebp - 0x44]
sub eax, ecx
sub edi, ecx
mov dword [ebp - 0xa4], eax
mov eax, dword [ebp - 0x60]
sub eax, ecx
mov ecx, dword [ebp - 0x64]
mov dword [ebp - 0x40], edi
mov edi, edx
mov dword [ebp - 0xa0], eax
mov eax, dword [ebp - 0x48]
sub ecx, edi
sub eax, edi
mov edi, ebx
mov bl, byte [ebp - 0x31]
mov dword [ebp - 0x8c], ecx
mov dword [ebp - 0x98], eax
mov eax, dword [ebp - 0x9c]
mov eax, dword [eax + edx]
mov dword [edx], eax
mov eax, dword [ecx + edx]
mov ecx, dword [ebp - 0x40]
mov dword [ecx + edx], eax
mov eax, dword [ebp - 0x3c]
mov dword [eax + edx], 0xffffffff
mov ecx, dword [esi + 0xa0]
mov eax, dword [esi + 0x18]
mov eax, dword [eax + ecx*4]
mov ecx, dword [ebp - 0xa4]
mov esi, dword [ebp - 0xa0]
mov dword [ecx + edx], eax
mov ecx, dword [ebp - 0x8c]
mov eax, dword [ecx + edx]
mov dword [esi + edx], eax
mov esi, dword [ebp - 0x94]
test bl, bl
je 0x10109845
mov eax, dword [ecx + edx]
mov ecx, dword [ebp - 0x98]
mov dword [ecx + edx], eax
mov ecx, dword [ebp - 0x8c]
add edx, 4
dec edi
jne 0x101097e4
mov ebx, dword [ebp - 0x58]
mov edx, dword [ebp - 0x5c]
cmp byte [ebp - 0x31], 0
jne 0x1010992d
mov ecx, dword [edx + 0x70]
mov eax, dword [esi + 0x18]
mov eax, dword [eax + ecx*4]
mov eax, dword [eax + 0x60]
mov eax, dword [eax + 8]
and eax, 0x10
or eax, 0
je 0x101098b1
test ebx, ebx
je 0x1010992d
mov eax, dword [ebp - 0x48]
mov edi, dword [ebp - 0x64]
mov ecx, eax
sub edi, eax
mov edx, ebx
mov eax, dword [edi + ecx]
mov dword [ecx], eax
add ecx, 4
dec edx
jne 0x10109886
jmp 0x1010992d
fld qword [ebp - 0x20]
fldz
fucompp
fnstsw ax
test ah, 0x44
jnp 0x101096f1
mov byte [ebp - 0x31], 1
jmp 0x101096f5
push ebx
push dword [ebp - 0x88]
push dword [ebp - 0x90]
push dword [ebp - 0x4c]
push esi
call fcn.101019a0
mov edi, eax
test edi, edi
js 0x10109d5c
xor edx, edx
test ebx, ebx
je 0x101098fb
mov esi, dword [ebp - 0x90]
lea ecx, [ecx]
mov ecx, dword [esi + edx*4]
or dword [ecx + 0x50], 0x200
mov eax, dword [ecx + 0x54]
inc edx
mov dword [ecx + 0x54], eax
cmp edx, ebx
jb 0x101098e0
mov esi, dword [ebp - 0x94]
push 0x11
push 0
push 0
push 0
push dword [ebp - 0x60]
mov eax, ebx
push dword [ebp - 0x44]
and eax, 0xfffff
push dword [ebp - 0x48]
or eax, 0x30100000
push eax
push dword [ebp - 0x4c]
mov ecx, esi
call fcn.101019a0
mov edi, eax
test edi, edi
js 0x10109d5c
lea eax, [ebp - 0x31]
push eax
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x3c]
push eax
mov eax, dword [ebp - 0x5c]
lea edi, [ebp - 0x38]
mov byte [ebp - 0x58], 0
mov byte [ebp - 0x31], 0
call fcn.101019a0
mov edi, eax
test edi, edi
js 0x10109d5c
mov eax, dword [ebp - 0x3c]
and eax, 0xfff00000
cmp eax, 0x52000000
jne 0x101099f3
mov eax, dword [esi + 8]
test byte [eax + 0xb0b7], 0x40
je 0x101099f3
mov eax, dword [ebp - 0x54]
cmp dword [eax + 0x6c], 0xffffffff
je 0x101099f3
mov eax, dword [ebp - 0x64]
mov eax, dword [eax]
mov eax, dword [eax + 0x60]
mov eax, dword [eax + 8]
and eax, 0x80000010
xor ecx, ecx
cmp eax, 0x80000010
jne 0x1010999f
test ecx, ecx
je 0x101099f3
mov al, byte [esi + 0x120]
test al, al
jne 0x101099b8
cmp byte [esi + 0x121], cl
jne 0x101099b8
mov ebx, 1
jmp 0x101099c3
xor ebx, ebx
test al, al
sete bl
lea ebx, [ebx + ebx + 0x1c]
mov ecx, dword [esi + 8]
mov eax, dword [ecx]
call dword [eax + 0x10]
mov edx, dword [ebp - 0x4c]
push eax
push 0x10043588
push ebx
push 0xdde
push 0xdb8
mov edi, esi
call fcn.101019a0
add esp, 0x14
mov edi, 0x80004005
jmp 0x10109d5c
mov eax, dword [ebp - 0x38]
add eax, eax
lea edx, [ebp - 0x68]
push edx
add eax, eax
lea edx, [ebp - 0x74]
add eax, eax
push edx
push eax
push dword [ebp - 0x70]
mov ecx, 4
lea eax, [ecx - 2]
call fcn.101019a0
mov edi, eax
test edi, edi
js 0x10109d5c
mov eax, dword [ebp - 0x38]
mov edx, dword [ebp - 0x74]
lea edi, [eax*4]
lea ecx, [edi + edx]
mov dword [ebp - 0x40], ecx
lea ecx, [edx + eax*8]
mov dword [ebp - 0x60], ecx
mov ecx, dword [ebp - 0x74]
lea edx, [eax*8]
sub edx, eax
lea edx, [ecx + edx*4]
lea ecx, [eax*8]
mov dword [ebp - 0x44], edi
mov dword [ebp - 0x54], edx
test ecx, ecx
je 0x10109a63
mov edi, dword [ebp - 0x74]
or eax, 0xffffffff
rep stosd dword es:[edi], eax
mov edi, dword [ebp - 0x44]
cmp byte [ebp - 0x58], 0
jne 0x10109a86
cmp byte [ebp - 0x31], 0
jne 0x10109a81
push edi
push dword [ebp - 0x50]
push dword [ebp - 0x74]
call sub.msvcrt.dll_memcpy
add esp, 0xc
push edi
jmp 0x10109ae7
mov eax, dword [ebp - 0x74]
jmp 0x10109a88
mov eax, edx
push 0
push dword [ebp - 0x58]
push dword [ebp - 0x50]
push ebx
push dword [ebp - 0x4c]
push esi
call fcn.101019a0
mov edi, eax
test edi, edi
js 0x10109d5c
cmp byte [ebp - 0x58], 0
je 0x10109ae4
mov eax, dword [ebp - 0x38]
mov ecx, dword [ebp - 0x54]
and eax, 0xfffff
or eax, 0x51a00000
cmp dword [ebp - 0x3c], eax
sete al
movzx eax, al
push eax
push dword [ebp - 0x74]
push dword [ebp - 0x48]
push ebx
mov ebx, dword [ebp - 0x38]
push ebx
push esi
call fcn.101019a0
mov edi, eax
test edi, edi
js 0x10109d5c
mov edi, dword [ebp - 0x40]
jmp 0x10109afb
push dword [ebp - 0x44]
push dword [ebp - 0x48]
push dword [ebp - 0x40]
call sub.msvcrt.dll_memcpy
mov ebx, dword [ebp - 0x38]
mov edi, dword [ebp - 0x60]
add esp, 0xc
xor edx, edx
test ebx, ebx
je 0x10109b15
mov eax, dword [ebp - 0x5c]
mov ecx, dword [eax + 0x70]
mov eax, dword [esi + 0x18]
mov eax, dword [eax + ecx*4]
mov dword [edi + edx*4], eax
inc edx
cmp edx, ebx
jb 0x10109b01
push 0x11
push 0
push 0
push 0
push dword [ebp - 0x40]
lea eax, [ebp - 0x78]
push dword [ebp - 0x74]
mov ecx, esi
push eax
push dword [ebp - 0x3c]
mov dword [ebp - 0x78], 0xffffffff
push dword [ebp - 0x4c]
call fcn.101019a0
mov edi, eax
test edi, edi
js 0x10109d5c
mov eax, dword [ebp - 0x5c]
mov ecx, dword [eax + 0xc]
and ecx, 0x6000
xor eax, eax
or eax, ecx
je 0x10109d0b
mov ecx, dword [esi + 8]
test byte [ecx + 0xb0ae], 0x10
je 0x10109d0b
mov eax, dword [ecx + 0xb274]
imul eax, dword [ecx + 0xb270]
imul eax, dword [ecx + 0xb26c]
cmp eax, 1
jbe 0x10109d0b
cmp byte [esi + 0x120], 0
jne 0x10109d0b
mov eax, dword [ebp - 0x78]
mov ecx, dword [esi + 0xe0]
mov edi, dword [eax + 0x98]
mov dword [ebp - 0x54], edi
cmp ecx, 0xffffffff
je 0x10109bcb
mov eax, dword [ecx + 0x50]
and eax, 0x10
or eax, 0
je 0x10109d0b
mov ecx, dword [ecx + 0x78]
call fcn.100e34e0
test al, al
jne 0x10109d0b
push 0
push 0
lea eax, [ebp - 0x30]
push eax
push 0
mov ecx, edi
call fcn.101019a0
mov edi, eax
test edi, edi
js 0x10109d5c
xor ecx, ecx
jmp 0x10109bf0
mov eax, dword [ebp + ecx*4 - 0x30]
cmp eax, 0xffffffff
je 0x10109c08
mov eax, dword [eax + 0x50]
and eax, 0x10
or eax, 0
je 0x10109d0b
inc ecx
cmp ecx, 5
jb 0x10109bf0
mov byte [ebp - 0x31], 1
mov dword [ebp - 0x60], 0
test ebx, ebx
je 0x10109cba
mov ecx, dword [ebp - 0x54]
push 0
lea eax, [ebp - 0x44]
push eax
push 0
push 0
mov dword [ebp - 0x44], 0xffffffff
call fcn.101019a0
mov edi, eax
test edi, edi
js 0x10109d5c
mov eax, dword [ebp - 0x44]
mov eax, dword [eax + 0x50]
and eax, 0x10
or eax, 0
jne 0x10109c59
xor cl, cl
mov byte [ebp - 0x31], cl
jmp 0x10109c5c
mov cl, byte [ebp - 0x31]
mov eax, dword [ebp - 0x60]
inc eax
mov dword [ebp - 0x60], eax
cmp eax, ebx
jb 0x10109c21
test cl, cl
jne 0x10109cba
mov eax, dword [ebp - 0x5c]
mov ecx, dword [eax + 0xc]
mov edx, dword [ebp - 0x4c]
xor eax, eax
and ecx, 0x2000
or eax, ecx
mov eax, esi
je 0x10109c9e
push 0x10043720
push 0xe6e
call fcn.101019a0
add esp, 8
mov edi, 0x80004005
jmp 0x10109d5c
push 0x10043780
push 0xe6f
call fcn.101019a0
add esp, 8
mov edi, 0x80004005
jmp 0x10109d5c
mov ebx, dword [ebp - 0x4c]
push esi
call fcn.101019a0
mov ecx, dword [eax + 8]
test ecx, 0x800
jne 0x10109d0b
or ecx, 0x800
mov dword [eax + 8], ecx
mov eax, dword [ebp - 0x5c]
mov ecx, dword [eax + 0xc]
and ecx, 0x2000
xor eax, eax
or eax, ecx
mov edx, ebx
mov ecx, esi
je 0x10109cf9
push 0x100435e0
push 0xdff
jmp 0x10109d03
push 0x10043680
push 0xe00
call fcn.101019a0
add esp, 8
mov edi, dword [ebp - 0x78]
push 0
push dword [ebp - 0x5c]
mov ebx, esi
call fcn.101019a0
mov edi, eax
test edi, edi
js 0x10109d5c
mov eax, dword [ebp - 0x5c]
mov ecx, dword [eax + 8]
mov eax, dword [eax + 0xc]
and ecx, 0x20
and eax, 0x6000
or ecx, eax
jne 0x10109d5c
mov eax, dword [ebp - 0x38]
push 0x11
push ecx
push ecx
push ecx
push ecx
push dword [ebp - 0x64]
mov ecx, dword [ebp - 0x50]
and eax, 0xfffff
push ecx
or eax, 0x10000000
push eax
push dword [ebp - 0x4c]
mov ecx, esi
call fcn.101019a0
mov edi, eax
cmp dword [ebp - 0x74], 0
mov eax, dword [ebp - 0x6c]
mov ecx, dword [ebp - 0x68]
lea edx, [eax + eax*2]
mov dword [ebp - 0x54], edx
je 0x10109e0e
test ecx, ecx
jne 0x10109d7b
mov ecx, 1
mov ebx, dword [ebp - 0x70]
mov esi, dword [ebx + edx*4 + 0xb2a0]
cmp ecx, dword [esi + 8]
jae 0x10109d92
sub dword [esi + 8], ecx
jmp 0x10109e0e
mov eax, dword [esi]
mov dword [ebx + edx*4 + 0xb2a0], eax
mov ebx, dword [ebx + edx*4 + 0xb2a4]
test ebx, ebx
je 0x10109e04
mov eax, dword [ebx + 0xc]
cmp eax, dword [esi + 0xc]
jb 0x10109ddc
mov eax, dword [0x101f3dec]
test eax, eax
jns 0x10109dc6
xor eax, eax
push esi
push eax
push dword [eax]
mov eax, dword [sym.imp.kernel32.dll_HeapFree]
call eax
jmp 0x10109e0e
push eax
mov eax, dword [sym.imp.kernel32.dll_TlsGetValue]
call eax
push esi
push 0
push dword [eax]
mov eax, dword [sym.imp.kernel32.dll_HeapFree]
call eax
jmp 0x10109e0e
test ebx, ebx
je 0x10109e04
mov eax, dword [0x101f3dec]
test eax, eax
jns 0x10109ded
xor eax, eax
jmp 0x10109df5
push eax
mov eax, dword [sym.imp.kernel32.dll_TlsGetValue]
call eax
push ebx
push 0
push dword [eax]
mov eax, dword [sym.imp.kernel32.dll_HeapFree]
call eax
mov edx, dword [ebp - 0x54]
mov eax, dword [ebp - 0x70]
mov dword [eax + edx*4 + 0xb2a4], esi
cmp dword [ebp - 0x88], 0
mov eax, dword [ebp - 0x80]
mov ecx, dword [ebp - 0x7c]
lea edx, [eax + eax*2]
mov dword [ebp - 0x54], edx
je 0x10109ec4
test ecx, ecx
jne 0x10109e30
mov ecx, 1
mov ebx, dword [ebp - 0x84]
mov esi, dword [ebx + edx*4 + 0xb2a0]
cmp ecx, dword [esi + 8]
jae 0x10109e4a
sub dword [esi + 8], ecx
jmp 0x10109ec4
mov eax, dword [esi]
mov dword [ebx + edx*4 + 0xb2a0], eax
mov ebx, dword [ebx + edx*4 + 0xb2a4]
test ebx, ebx
je 0x10109eb7
mov eax, dword [ebx + 0xc]
cmp eax, dword [esi + 0xc]
jb 0x10109e91
mov eax, dword [0x101f3dec]
test eax, eax
jns 0x10109e7d
xor eax, eax
push esi
push eax
push dword [eax]
call dword [sym.imp.kernel32.dll_HeapFree]
jmp 0x10109ec4
push eax
call dword [sym.imp.kernel32.dll_TlsGetValue]
push esi
push 0
push dword [eax]
call dword [sym.imp.kernel32.dll_HeapFree]
jmp 0x10109ec4
test ebx, ebx
je 0x10109eb7
mov eax, dword [0x101f3dec]
test eax, eax
jns 0x10109ea2
xor eax, eax
jmp 0x10109ea9
push eax
call dword [sym.imp.kernel32.dll_TlsGetValue]
push ebx
push 0
push dword [eax]
call dword [sym.imp.kernel32.dll_HeapFree]
mov edx, dword [ebp - 0x54]
mov eax, dword [ebp - 0x84]
mov dword [eax + edx*4 + 0xb2a4], esi
mov eax, edi
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.101ec0b6
mov esp, ebp
pop ebp
ret 0x10