Function at 0x100bfd20
Capabilities:
Get thread local storage value

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x180
mov ecx, dword [ebp + 0x10]
xor eax, eax
push ebx
push esi
mov esi, dword [ebp + 0x14]
push edi
mov dword [ebp - 0x4c], eax
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x44], eax
mov byte [ebp - 0x40], al
mov byte [ebp - 0x3f], 1
cmp ecx, eax
je 0x100bfd7d
cmp dword [ebp + 0x1c], 1
jne 0x100bfd7d
mov eax, dword [esi + 0x14]
cmp eax, dword [ecx + 8]
jae 0x100bfd7d
mov ecx, dword [ecx]
cmp dword [ecx + eax*8], esi
lea eax, [ecx + eax*8]
jne 0x100bfd7d
mov edx, dword [eax + 4]
mov eax, dword [ebp + 0x24]
lea esi, [ebp - 0x4c]
mov dword [eax], edx
call fcn.100da4b0
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x24
mov edx, dword [esi]
mov edx, dword [edx + 0x2c]
lea eax, [ebp - 0xbc]
push eax
push 3
mov ecx, esi
call edx
test al, al
jne 0x100bfda3
mov esi, 0x80004005
mov eax, esi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x24
mov edx, dword [ebp - 0xbc]
mov ebx, dword [ebp + 0xc]
xor edi, edi
mov dword [ebp - 0x38], edi
cmp edx, 7
je 0x100bfe0e
mov eax, dword [ebp + 8]
cmp dword [eax + 0x30], 0x24
jb 0x100bfe0e
mov eax, esi
cmp dword [esi + 8], edi
jne 0x100bfde1
lea ecx, [edi + 0xa]
lea esp, [esp]
test eax, eax
je 0x100bfe0e
cmp dword [eax + 4], ecx
jne 0x100bfe0e
mov eax, dword [eax + 0x20]
cmp dword [eax + 8], edi
je 0x100bfdd0
mov eax, dword [eax + 8]
test eax, eax
je 0x100bfe0e
mov eax, dword [eax + 0xc]
lea ecx, [ebp - 0x38]
push ecx
push 7
push eax
push ebx
or eax, 0xffffffff
call fcn.100b41f0
mov esi, eax
test esi, esi
jl 0x100c04a8
mov edx, dword [ebp - 0xbc]
mov edi, dword [ebp - 0x38]
lea ecx, [edx - 2]
cmp ecx, 7
ja case.default.0x100bfe1a
jmp dword [ecx*4 + 0x100c04b4]
xor edx, edx
xor eax, eax
mov word [ebp - 0x2c], dx
mov dword [ebp - 0x2a], eax
mov dword [ebp - 0x26], eax
mov dword [ebp - 0x22], eax
mov dword [ebp - 0x1e], eax
mov dword [ebp - 0x1a], eax
mov dword [ebp - 0x16], eax
mov dword [ebp - 0x12], eax
mov dword [ebp - 0xe], eax
mov word [ebp - 0xa], ax
jmp dword [ecx*4 + 0x100c04d4]
call fcn.100b41f0
mov esi, eax
test esi, esi
jl 0x100c04a8
cmp dword [ebp + 0x10], 0
je 0x100c048e
cmp dword [ebp + 0x1c], 1
jne 0x100c048e
lea eax, [ebp + 8]
push eax
mov eax, dword [ebp + 0x10]
mov ebx, dword [eax + 8]
call fcn.100da5f0
mov esi, eax
test esi, esi
jl 0x100c015c
mov eax, dword [ebp + 8]
mov esi, dword [ebp + 0x14]
mov edx, dword [ebp + 0x10]
mov dword [eax], esi
mov ecx, dword [edi]
mov dword [eax + 4], ecx
mov ecx, dword [edx]
test ecx, ecx
je 0x100c0488
cmp eax, ecx
jb 0x100c0488
mov edx, dword [edx + 4]
lea edx, [ecx + edx*8]
cmp eax, edx
jae 0x100c0488
sub eax, ecx
sar eax, 3
mov dword [esi + 0x14], eax
xor esi, esi
jmp 0x100c015c
mov ecx, dword [ebp - 0xb0]
xor eax, eax
mov esi, ecx
mov dword [ebp - 8], esi
mov dword [ebp - 0x2a], eax
mov dword [ebp - 0x26], eax
mov dword [ebp - 0x22], eax
mov dword [ebp - 0x1e], eax
mov dword [ebp - 0x1a], eax
mov dword [ebp - 0x16], eax
mov dword [ebp - 0x12], eax
mov dword [ebp - 0xe], eax
mov word [ebp - 0xa], ax
cmp edx, 4
jne 0x100bff93
mov eax, 6
mov word [ebp - 0x2c], ax
jmp 0x100bff9c
mov edx, 5
mov word [ebp - 0x2c], dx
xor eax, eax
mov edx, 1
mov word [ebp - 0x28], dx
mov word [ebp - 0x2a], ax
mov eax, dword [ecx]
mov edx, dword [eax + 4]
call edx
mov word [ebp - 0x26], ax
mov ax, word [ebp + 0x1c]
mov word [ebp - 0x24], ax
mov eax, dword [esi + 0x20]
test eax, eax
je 0x100c005d
lea esp, [esp]
inc dword [ebp - 0x14]
mov eax, dword [eax + 4]
test eax, eax
jne 0x100bffd0
mov eax, dword [ebp - 0x14]
lea ecx, [ebp - 0x30]
push ecx
xor ebx, ebx
lea ecx, [ebp - 0x4c]
call fcn.100da500
mov esi, eax
test esi, esi
jl 0x100c015c
mov edx, dword [ebp - 8]
mov ebx, dword [edx + 0x20]
test ebx, ebx
je 0x100c0039
mov edi, dword [ebp - 0x30]
mov eax, dword [ebp + 0x28]
mov ecx, dword [ebp + 0x20]
mov edx, dword [ebp + 0x18]
push eax
mov eax, dword [ebx]
push edi
push ecx
mov ecx, dword [ebp + 0x10]
push 1
push edx
mov edx, dword [ebp + 0xc]
push eax
mov eax, dword [ebp + 8]
push ecx
push edx
push eax
call fcn.100bfd20
mov esi, eax
test esi, esi
jl 0x100c015c
mov ebx, dword [ebx + 4]
add edi, 4
test ebx, ebx
jne 0x100c0002
mov edx, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x44]
lea ecx, [ebp - 0x10]
push ecx
mov ecx, dword [ebp + 0xc]
push 2
add eax, eax
push edx
add eax, eax
push ecx
call fcn.100b41f0
mov esi, eax
test esi, esi
jl 0x100c015c
mov ebx, dword [ebp - 8]
mov ecx, dword [ebx + 0x1c]
test ecx, ecx
je 0x100c00ac
mov edx, dword [ebp + 0x28]
xor eax, eax
test edx, edx
je 0x100c0076
mov edx, dword [edx + 0xc]
mov eax, dword [edx + 0x10]
mov edx, dword [ebp + 0x20]
push eax
lea eax, [ebp - 0x18]
push eax
mov eax, dword [ebp + 0x18]
push edx
mov edx, dword [ebp + 0xc]
push 1
push eax
mov eax, dword [ebp + 8]
push ecx
mov ecx, dword [ebp + 0x10]
push ecx
push edx
push eax
call fcn.100bfd20
mov esi, eax
test esi, esi
jl 0x100c015c
mov edi, 1
add word [ebp - 0x22], di
jmp 0x100c00b1
mov edi, 1
mov eax, dword [ebx + 8]
test eax, eax
je 0x100c00bd
mov esi, dword [eax + 0x50]
jmp 0x100c00bf
xor esi, esi
test esi, esi
je 0x100c00e7
test byte [esi + 0x64], 4
je 0x100c00e0
mov ecx, dword [esi + 0x48]
mov edx, dword [ecx]
mov edx, dword [edx + 0x28]
lea eax, [ebp - 0x3c]
push eax
call edx
test byte [eax], 8
jne 0x100c00e0
add word [ebp - 0x22], di
mov esi, dword [esi + 0x58]
test esi, esi
jne 0x100c00c3
movzx esi, word [ebp - 0x22]
mov eax, dword [ebp + 8]
imul esi, dword [eax + 0x34]
mov eax, dword [0x101e316c]
mov dword [ebp - 0x3c], esi
test eax, eax
jl 0x100c010f
push eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
test eax, eax
je 0x100c010f
mov eax, dword [eax]
test eax, eax
jne 0x100c0115
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push esi
push 0
push eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov dword [ebp - 8], eax
test eax, eax
jne 0x100c0185
mov esi, 0x8007000e
mov edi, dword [ebp - 8]
test edi, edi
je 0x100c015c
mov eax, dword [0x101e316c]
test eax, eax
jl 0x100c014c
push eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
test eax, eax
je 0x100c014c
mov eax, dword [eax]
test eax, eax
jne 0x100c0152
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push edi
push 0
push eax
call dword [sym.imp.KERNEL32.dll_HeapFree]
cmp byte [ebp - 0x40], 0
je 0x100c04a8
mov edi, dword [ebp - 0x4c]
test edi, edi
je 0x100c04a8
mov eax, dword [0x101e316c]
test eax, eax
jge 0x100c0495
xor eax, eax
jmp 0x100c049c
cmp dword [ebx + 0x1c], 0
mov dword [ebp - 0x34], 0
je 0x100c01ea
mov edi, dword [ebp + 0xc]
push eax
push 7
push 0x10086878
push edi
or eax, 0xffffffff
call fcn.100b41f0
mov esi, eax
test esi, esi
jl 0x100c012b
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 8]
mov dword [eax + 4], ecx
mov dword [eax + 8], 0
mov ecx, dword [ebx + 0x1c]
mov edx, dword [ecx]
mov edx, dword [edx + 0x2c]
lea eax, [ebp - 0x11c]
push eax
push 0x13
call edx
test al, al
jne 0x100c01e1
mov esi, 0x80004005
jmp 0x100c012b
mov dword [ebp - 0x34], 1
jmp 0x100c0200
push 0x60
lea eax, [ebp - 0x11c]
push 0
push eax
call sub.msvcrt.dll_memset
mov edi, dword [ebp + 0xc]
add esp, 0xc
mov eax, dword [ebx + 8]
test eax, eax
je 0x100c020c
mov eax, dword [eax + 0x50]
jmp 0x100c020e
xor eax, eax
mov ebx, eax
test ebx, ebx
je 0x100c0340
mov eax, dword [ebp - 0x34]
lea esi, [eax + eax*2]
add esi, esi
add esi, esi
add esi, esi
mov dword [ebp - 0x30], esi
jmp 0x100c0230
test byte [ebx + 0x64], 4
je 0x100c0335
mov ecx, dword [ebx + 0x48]
mov edx, dword [ecx]
mov edx, dword [edx + 0x28]
lea eax, [ebp - 0x5c]
push eax
call edx
test byte [eax], 8
jne 0x100c0335
mov eax, dword [ebp + 8]
cmp dword [eax + 0x34], 8
je 0x100c02a7
mov eax, dword [ebp + 0x28]
test eax, eax
je 0x100c0273
mov ecx, dword [eax + 0xc]
mov edx, dword [ecx + esi]
sub edx, dword [eax + 0x10]
add edx, edx
add edx, edx
mov dword [ebp - 0x50], edx
jmp 0x100c02a7
mov ecx, dword [ebx + 0x48]
mov eax, dword [ecx]
mov eax, dword [eax + 0x2c]
lea edx, [ebp - 0x17c]
push edx
push 0x13
call eax
test al, al
je 0x100c01d7
lea eax, [ebp - 0x17c]
lea esi, [ebp - 0x11c]
mov edx, 0x13
call fcn.10114850
mov dword [ebp - 0x50], eax
mov eax, dword [ebx + 8]
lea ecx, [ebp - 0x58]
push ecx
push 7
push eax
push edi
or eax, 0xffffffff
call fcn.100b41f0
mov esi, eax
test esi, esi
jl 0x100c012b
mov eax, dword [ebp + 0x28]
test eax, eax
je 0x100c02e0
mov edx, dword [ebp + 8]
cmp dword [edx + 0x34], 8
je 0x100c02e0
mov eax, dword [eax + 0xc]
mov ecx, dword [ebp - 0x30]
mov eax, dword [eax + ecx + 0x10]
jmp 0x100c02e2
xor eax, eax
mov ecx, dword [ebp + 0x18]
push eax
mov eax, dword [ebp + 0x20]
lea edx, [ebp - 0x54]
push edx
mov edx, dword [ebx + 0x48]
push eax
mov eax, dword [ebp + 0x10]
push 1
push ecx
mov ecx, dword [ebp + 8]
push edx
push eax
push edi
push ecx
call fcn.100bfd20
mov esi, eax
test esi, esi
jl 0x100c012b
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0x34]
mov esi, dword [ebp - 0x34]
push eax
imul eax, esi
add eax, dword [ebp - 8]
lea ecx, [ebp - 0x58]
push ecx
push eax
call sub.msvcrt.dll_memcpy
inc esi
add esp, 0xc
add dword [ebp - 0x30], 0x18
mov dword [ebp - 0x34], esi
mov esi, dword [ebp - 0x30]
mov ebx, dword [ebx + 0x58]
test ebx, ebx
jne 0x100c0230
mov ebx, dword [ebp - 8]
mov eax, dword [ebp - 0x3c]
lea edx, [ebp - 0x20]
push edx
push 2
push ebx
push edi
call fcn.100b41f0
mov esi, eax
test esi, esi
jl 0x100c012b
mov eax, dword [0x101e316c]
test eax, eax
jl 0x100c0377
push eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
test eax, eax
je 0x100c0377
mov eax, dword [eax]
test eax, eax
jne 0x100c037d
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push ebx
push 0
push eax
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov edi, dword [ebp + 0x24]
mov eax, dword [ebp - 0x38]
mov edx, dword [ebp + 0xc]
push edi
push 0x12
mov dword [ebp - 0xc], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x30]
lea ecx, [ebp - 0x2c]
push ecx
push edx
call fcn.100b41f0
mov esi, eax
test esi, esi
jl 0x100c015c
jmp 0x100bfeee
mov edx, dword [ebp + 0x28]
xor eax, eax
push edx
mov edx, dword [ebp + 0x18]
xor ecx, ecx
mov dword [ebp - 0x2a], eax
mov dword [ebp - 0x26], eax
mov dword [ebp - 0x22], eax
mov dword [ebp - 0x1e], eax
mov dword [ebp - 0x1a], eax
mov dword [ebp - 0x16], eax
mov dword [ebp - 0x12], eax
mov dword [ebp - 0xe], eax
mov word [ebp - 0xa], ax
mov word [ebp - 0x2c], cx
mov ecx, dword [ebp + 0x20]
lea eax, [ebp - 0x1c]
push eax
mov eax, dword [ebp - 0xac]
push ecx
mov ecx, dword [ebp + 0x10]
push 1
push edx
mov edx, dword [ebp + 8]
push eax
push ecx
push ebx
push edx
call fcn.100bfd20
mov esi, eax
test esi, esi
jl 0x100c04a8
mov dx, word [ebp - 0x8c]
mov eax, 7
mov dword [ebp - 0xc], edi
mov edi, dword [ebp + 0x24]
mov word [ebp - 0x2c], ax
mov ax, word [ebp - 0x88]
push edi
mov ecx, 0x25
mov word [ebp - 0x28], dx
push 0x12
mov word [ebp - 0x26], ax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x30]
lea edx, [ebp - 0x2c]
mov word [ebp - 0x2a], cx
mov cx, word [ebp + 0x1c]
push edx
mov word [ebp - 0x24], cx
push ebx
jmp 0x100bfedf
mov ecx, dword [ebp + 0x28]
mov eax, dword [ebp - 0xb0]
mov edi, dword [ebp + 0x24]
mov edx, dword [ebp + 0x20]
push ecx
mov ecx, dword [eax + 0x1c]
imul ecx, dword [ebp + 0x1c]
mov eax, dword [eax + 0x18]
push edi
push edx
mov edx, dword [ebp + 0x18]
push ecx
mov ecx, dword [ebp + 0x10]
push edx
mov edx, dword [ebp + 8]
push eax
push ecx
push ebx
push edx
call fcn.100bfd20
jmp 0x100bfee4
or eax, 0xffffffff
mov dword [esi + 0x14], eax
xor esi, esi
jmp 0x100c015c
push eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov eax, dword [eax]
push edi
push 0
push eax
call dword [sym.imp.KERNEL32.dll_HeapFree]
pop edi
mov eax, esi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x24