Function at 0x1019c930
Capabilities:
Get thread local storage value

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x28
mov eax, dword [ebp + 0xc]
mov ecx, dword [eax + 8]
push ebx
push esi
mov esi, dword [ebp + 0x10]
push edi
xor edi, edi
xor edx, edx
mov dword [ebp - 0xc], edi
mov dword [ebp - 0x10], edi
mov dword [ebp - 8], ecx
mov dword [ebp - 0x1c], edi
mov dword [ebp - 0x14], edx
mov dword [esi], edi
mov dword [ebp - 0x18], edi
cmp ecx, edi
jbe 0x1019ca37
mov ecx, dword [eax + 0xc]
mov edx, dword [ebp - 0x18]
mov esi, dword [ecx + edx*4]
mov edx, dword [eax + 0x3c]
mov ecx, edx
and ecx, 0xfff00000
cmp ecx, 0x12b00000
je 0x1019c9b1
cmp ecx, 0x12e00000
je 0x1019c9b1
cmp ecx, 0x12c00000
je 0x1019c9b1
mov eax, edx
call fcn.10171cb0
test al, al
jne 0x1019c9b1
mov eax, edx
call fcn.10171b60
test al, al
jne 0x1019c9b1
mov byte [ebp - 1], al
cmp ecx, 0x30100000
jne 0x1019c9b5
mov byte [ebp - 1], 1
mov ecx, dword [esi + 0x40]
mov eax, dword [esi + 0x44]
mov edx, ecx
and edx, 0x800000
mov dword [ebp - 0x24], eax
xor ebx, ebx
mov eax, edx
or eax, ebx
je 0x1019cabb
mov eax, dword [ebp + 8]
test byte [eax + 0x812c], 8
jne 0x1019cabb
mov eax, dword [esi + 0x50]
mov eax, dword [eax + 8]
and eax, 0x40211028
xor edi, edi
or eax, edi
jne 0x1019cab9
and ecx, 0x400000
or ecx, eax
je 0x1019ca19
mov ecx, dword [ebp + 8]
push esi
lea esi, [ecx + 0x648]
call fcn.1017c720
test al, al
jne 0x1019ca19
cmp byte [ebp - 1], al
je 0x1019ca1c
inc dword [ebp - 0x1c]
xor edi, edi
mov eax, dword [ebp - 0x18]
inc eax
cmp eax, dword [ebp - 8]
mov dword [ebp - 0x18], eax
mov eax, dword [ebp + 0xc]
jb 0x1019c964
mov edx, dword [ebp - 0x14]
mov ecx, dword [ebp - 8]
mov eax, dword [eax + 0x3c]
and eax, 0xfff00000
cmp eax, 0x10000000
jne 0x1019ca4a
cmp edx, ecx
je 0x1019ca57
mov esi, dword [ebp - 0x1c]
add edx, esi
cmp edx, ecx
jae 0x1019cb0f
cmp eax, 0x10000000
jne 0x1019caab
mov ebx, dword [ebp - 8]
test ebx, ebx
jbe 0x1019caa2
mov ecx, dword [ebp + 0xc]
mov esi, dword [ecx + 4]
jmp 0x1019ca70
mov ecx, dword [esi]
cmp ecx, 0xffffffff
je 0x1019ca97
mov eax, dword [ecx + 0x50]
mov eax, dword [eax + 8]
and eax, 0x100
xor edx, edx
or eax, edx
je 0x1019ca97
mov eax, dword [ecx + 0x40]
and eax, 0x800000
xor ecx, ecx
or eax, ecx
je 0x1019ca97
inc edi
add esi, 4
sub ebx, 1
jne 0x1019ca70
mov ebx, dword [ebp - 8]
cmp dword [ebp - 0x14], ebx
jne 0x1019caab
cmp edi, ebx
jne 0x1019cb0d
mov eax, 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
xor edi, edi
or edx, ebx
je 0x1019ca1e
mov edx, dword [esi + 0x50]
mov eax, dword [edx + 8]
mov edx, dword [edx + 0xc]
and eax, 0x44210008
and edx, 0x180
or eax, edx
jne 0x1019ca1e
and ecx, 0x400000
or ecx, eax
je 0x1019cb05
mov ecx, dword [ebp + 8]
push esi
lea esi, [ecx + 0x648]
call fcn.1017c720
test al, al
jne 0x1019cb05
cmp byte [ebp - 1], al
je 0x1019ca1e
inc dword [ebp - 0x14]
jmp 0x1019ca1e
xor edi, edi
mov ebx, dword [ebp + 8]
mov esi, dword [ebp - 0x14]
inc dword [ebx + 0x64c]
cmp esi, edi
jbe 0x1019ccae
mov eax, dword [0x101e316c]
cmp eax, edi
jge 0x1019cb30
xor eax, eax
jmp 0x1019cb37
push eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
cmp dword [eax + 0x18], edi
je 0x1019cb5f
mov ecx, dword [eax + 0x18]
cmp ecx, edi
jne 0x1019cb49
xor ecx, ecx
mov eax, ecx
jmp 0x1019cb6b
mov edx, dword [ecx]
mov dword [eax + 0x18], edx
cmp edx, edi
jne 0x1019cb55
mov dword [eax + 0x1c], edi
mov dword [ecx], 0xfefefefe
mov eax, ecx
jmp 0x1019cb6b
mov ecx, dword [eax + 0x14]
push 0x10
push 0x44
call fcn.101d8457
cmp eax, edi
je 0x1019cba7
or ecx, 0xffffffff
xor edx, edx
mov dword [eax], edi
mov dword [eax + 8], edi
mov dword [eax + 0x10], ecx
mov dword [eax + 0x3c], edi
mov dword [eax + 4], edi
mov word [eax + 0x40], dx
mov dword [eax + 0xc], edi
mov word [eax + 0x42], dx
mov dword [eax + 0x14], edi
mov dword [eax + 0x18], edi
mov dword [eax + 0x1c], edi
mov dword [eax + 0x20], ecx
mov dword [eax + 0x24], edi
mov dword [eax + 0x34], edi
mov dword [eax + 0x38], edi
mov dword [ebp - 0x10], eax
jmp 0x1019cbaa
mov dword [ebp - 0x10], edi
mov ecx, dword [ebp - 0x10]
push edi
mov eax, esi
and eax, 0xfffff
push ecx
or eax, 0x10000000
mov edx, esi
mov ecx, esi
call fcn.10172020
mov edi, eax
xor edx, edx
cmp edi, edx
jl 0x1019cd95
mov ecx, dword [ebp + 0xc]
mov esi, dword [ecx + 0x34]
mov eax, dword [ebp - 0x10]
mov dword [eax + 0x34], esi
mov esi, dword [ecx + 0x38]
mov dword [eax + 0x38], esi
xor esi, esi
mov dword [ebp - 0xc], edx
mov dword [ebp - 0x18], esi
cmp dword [ebp - 8], edx
jbe 0x1019ccac
mov dword [ebp - 0x1c], edx
jmp 0x1019cc03
mov ecx, dword [ebp + 0xc]
test byte [ebx + 0x812c], 8
mov eax, dword [ecx + 0xc]
mov edi, dword [eax + esi*4]
jne 0x1019cc23
mov eax, dword [edi + 0x50]
mov eax, dword [eax + 8]
and eax, 0x1020
xor ecx, ecx
or eax, ecx
je 0x1019cc9f
mov eax, dword [ebp - 0x10]
mov ecx, dword [eax + 0xc]
mov dword [edx + ecx], edi
mov esi, dword [eax + 4]
mov eax, dword [edi + 0x40]
and eax, 0x800000
xor ecx, ecx
add esi, edx
or eax, ecx
jne 0x1019cc46
mov ebx, 0x80004005
jmp 0x1019cc85
mov edx, dword [ebx + 0x8024]
push 0x11
push 0
push 0
push edx
push esi
push ebx
call fcn.10169c20
mov ebx, eax
test ebx, ebx
jl 0x1019cc85
mov eax, dword [esi]
mov ecx, dword [edi + 0x4c]
mov dword [eax + 0x4c], ecx
mov eax, dword [esi]
mov dword [eax + 0x74], eax
mov eax, dword [esi]
mov ecx, edi
call fcn.10166070
mov esi, dword [esi]
mov edx, dword [esi + 0x44]
or dword [esi + 0x40], 0x800010
mov dword [esi + 0x44], edx
mov dword [ebp - 0xc], ebx
test ebx, ebx
jl 0x1019cd92
mov edx, dword [ebp - 0x1c]
mov ebx, dword [ebp + 8]
mov esi, dword [ebp - 0x18]
add edx, 4
mov dword [ebp - 0x1c], edx
inc esi
mov dword [ebp - 0x18], esi
cmp esi, dword [ebp - 8]
jb 0x1019cc00
xor edi, edi
test byte [ebx + 0x812c], 8
jne 0x1019cd5b
xor edx, edx
mov dword [ebp - 0x1c], edx
cmp dword [ebp - 8], edi
jbe 0x1019cd5b
lea esp, [esp]
mov eax, dword [ebp + 0xc]
mov ecx, dword [eax + 0xc]
mov esi, dword [ecx + edx*4]
mov eax, dword [esi + 0x50]
mov eax, dword [eax + 8]
and eax, 0x1020
xor ecx, ecx
or eax, ecx
jne 0x1019cd4e
mov eax, dword [esi + 0x40]
and eax, 0x800000
or eax, ecx
lea edi, [esi + 0x74]
jne 0x1019cd00
mov ebx, 0x80004005
jmp 0x1019cd3f
mov edx, dword [ebx + 0x8024]
push 0x11
push 0
push 0
push edx
push edi
push ebx
call fcn.10169c20
mov ebx, eax
test ebx, ebx
jl 0x1019cd3f
mov eax, dword [edi]
mov ecx, dword [esi + 0x4c]
mov dword [eax + 0x4c], ecx
mov eax, dword [edi]
mov dword [eax + 0x74], eax
mov eax, dword [edi]
mov ecx, esi
call fcn.10166070
mov edi, dword [edi]
mov edx, dword [edi + 0x44]
or dword [edi + 0x40], 0x800010
mov dword [edi + 0x44], edx
mov dword [ebp - 0xc], ebx
test ebx, ebx
jl 0x1019cd92
mov ebx, dword [ebp + 8]
mov edx, dword [ebp - 0x1c]
xor edi, edi
inc edx
mov dword [ebp - 0x1c], edx
cmp edx, dword [ebp - 8]
jb 0x1019ccd0
mov eax, dword [ebp - 0x10]
cmp eax, edi
je 0x1019cd76
push eax
mov edi, ebx
call fcn.101699c0
mov dword [ebp - 0xc], eax
test eax, eax
jl 0x1019cd92
mov eax, dword [ebp - 0x10]
xor edi, edi
mov ecx, dword [ebp + 0xc]
mov dword [ecx + 0x3c], edi
mov dword [ecx], edi
mov dword [ecx + 8], edi
mov ecx, dword [ebp + 0x10]
mov dword [ecx], eax
mov eax, dword [ebp - 0xc]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
mov edi, dword [ebp - 0xc]
mov esi, dword [ebp - 0x10]
test esi, esi
je 0x1019cdea
call fcn.10171ee0
mov eax, dword [0x101e316c]
test eax, eax
jl 0x1019cdea
push eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ebx, eax
test ebx, ebx
je 0x1019cdea
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 0x1019cde4
mov dword [eax], esi
mov dword [ebx + 0x1c], esi
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
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 0xc