Function at 0x1000af91
Capabilities:
Get thread local storage value

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x3c
mov eax, dword [0x100181d4]
xor eax, esp
mov dword [esp + 0x38], eax
and dword [esp + 4], 0
push ebx
push esi
push edi
mov edi, ecx
mov dword [esp + 0x18], edx
xor ecx, ecx
xor esi, esi
and dword [esp + 0x20], ecx
and dword [esp + 0x38], ecx
and dword [esp + 0x1c], ecx
mov eax, dword [edi + 4]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x2c], esi
cmp dword [edi + 8], ecx
jge 0x1000afdf
add eax, 0xfffffffc
mov dword [edi + 4], eax
mov ecx, dword [eax]
jmp 0x1000afe7
mov ecx, dword [eax]
add eax, 4
mov dword [edi + 4], eax
mov bl, byte [ebp + 8]
mov al, bl
mov dword [esp + 0x24], ecx
and al, 0x80
mov byte [esp + 0xf], al
je 0x1000b028
test ecx, ecx
je 0x1000b028
mov edx, ecx
mov ecx, edi
push 4
call fcn.10008334
mov ecx, eax
test ecx, ecx
jne 0x1000b01a
mov eax, 0x80070057
mov dword [edi + 0x1c], eax
jmp 0x1000b358
mov al, bl
and al, 0x40
je 0x1000b024
mov ecx, dword [ecx]
jmp 0x1000b02c
xor ecx, ecx
jmp 0x1000b02c
mov al, bl
and al, 0x40
mov dword [esp + 0x28], ecx
test al, al
je 0x1000b140
test ecx, ecx
je 0x1000b13a
mov edx, ecx
mov ecx, edi
call fcn.10008489
test eax, eax
je 0x1000b00d
and bl, 0x3f
cmp bl, 0x1c
jne 0x1000b07c
push dword [ebp + 0xc]
mov ecx, dword [edi + 0x28]
call fcn.10007514
mov esi, dword [0x100186d0]
mov ecx, esi
push 1
push 0x24
push eax
call dword [0x10019344]
call esi
mov eax, dword [eax + 0x10]
mov dword [esp + 0x1c], eax
cmp bl, 0x20
jne 0x1000b0b8
mov ecx, dword [edi + 0x28]
lea eax, [esp + 0x30]
push eax
lea eax, [esp + 0x24]
push eax
push dword [esp + 0x30]
call fcn.10023f42
mov esi, eax
mov dword [esp + 0x38], 1
mov eax, dword [esp + 0x20]
lea ecx, [esp + 0x3c]
mov dword [esp + 0x2c], esi
mov dword [esp + 0x3c], eax
call fcn.10005345
jmp 0x1000b127
mov eax, dword [edi + 0x18]
xor esi, esi
cmp eax, dword [sym.imp.ole32.dll_OleIsCurrentClipboard]
jne 0x1000b0da
push dword [0x100181dc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
test dword [eax + 0x44], 0x100000
jne 0x1000b102
push dword [0x100181dc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
test dword [eax + 0x44], 0x10000
je 0x1000b105
cmp dword [edi + 0x2c], 0x14
jne 0x1000b105
cmp dword [esp + 0x18], 0xf
jne 0x1000b105
cmp dword [edi + 0x30], 3
jne 0x1000b105
xor esi, esi
inc esi
mov ecx, dword [edi + 0x28]
lea eax, [esp + 0x30]
push eax
push esi
push dword [esp + 0x20]
push dword [esp + 0x28]
push dword [esp + 0x38]
push 0
call fcn.10006eff
mov esi, eax
mov dword [esp + 0x2c], eax
test esi, esi
jne 0x1000b140
mov ebx, 0x8007000e
mov dword [edi + 0x1c], ebx
mov eax, ebx
jmp 0x1000b358
xor esi, esi
mov dword [esp + 0x2c], esi
cmp byte [esp + 0xf], 0
mov ebx, 0x8007000e
je 0x1000b1bd
cmp dword [esp + 0x24], 0
je 0x1000b1bd
push dword [esp + 0x18]
mov ecx, dword [edi + 0x28]
call fcn.100060be
mov edx, eax
mov dword [esp + 0x14], edx
test edx, edx
je 0x1000b1b6
mov ecx, dword [edi + 0x10]
lea eax, [esp + 0x10]
push 1
mov dword [esp + 0x14], esi
push 0x24
mov dword [ecx], eax
add dword [edi + 0x10], 4
mov esi, dword [0x100186d0]
mov ecx, esi
push edx
call dword [0x10019344]
call esi
push 1
lea ecx, [esp + 0x14]
push 4
push dword [esp + 0x2c]
mov dword [eax + 0x20], ecx
mov esi, dword [0x100186d0]
mov ecx, esi
call dword [0x10019344]
call esi
mov ecx, dword [esp + 0x14]
mov dword [eax], ecx
jmp 0x1000b1c6
mov dword [edi + 0x1c], ebx
mov ecx, ebx
jmp 0x1000b1e7
mov eax, dword [edi + 0x10]
mov dword [eax], esi
add dword [edi + 0x10], 4
mov eax, dword [edi + 0x14]
push edi
movzx eax, byte [eax]
and eax, 0x3f
mov esi, dword [eax*4 + 0x10001028]
mov ecx, esi
call dword [0x10019344]
call esi
mov edx, dword [esp + 0x14]
mov ecx, eax
cmp byte [esp + 0xf], 0
mov dword [esp + 0x20], ecx
je 0x1000b2f4
mov eax, dword [esp + 0x24]
test eax, eax
je 0x1000b2f4
and dword [esp + 0x1c], 0
test ecx, ecx
js 0x1000b2d4
cmp dword [esp + 0x10], 0
je 0x1000b2d4
cmp dword [ebp + 0xc], 0
je 0x1000b256
push dword [0x100181dc]
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
and dword [esp + 0x34], 0
lea ecx, [esp + 0x34]
push ecx
push dword [esp + 0x1c]
mov eax, dword [eax + 0x48]
mov ecx, dword [esp + 0x1c]
push dword [eax]
push dword [esp + 0x1c]
push ecx
mov ecx, dword [edi + 0x28]
call fcn.100061bb
mov edx, dword [esp + 0x34]
jmp 0x1000b272
mov ecx, dword [edi + 0x28]
lea eax, [esp + 0x30]
push eax
push dword [esp + 0x1c]
push 0
push dword [esp + 0x1c]
push edx
call fcn.100061bb
mov edx, dword [esp + 0x30]
mov dword [esp + 0x1c], eax
test eax, eax
je 0x1000b2b0
mov bl, byte [ebp + 8]
mov cl, bl
and cl, 0x3f
cmp cl, 0x21
jne 0x1000b2a8
cmp edx, 4
je 0x1000b2a8
mov esi, dword [0x100186d0]
mov ecx, esi
push 1
push 0x24
push eax
call dword [0x10019344]
call esi
mov dword [eax + 0x1c], 0x20
xor ecx, ecx
mov dword [esp + 0x14], ecx
jmp 0x1000b2ba
mov dword [edi + 0x1c], ebx
mov dword [esp + 0x20], ebx
mov bl, byte [ebp + 8]
mov eax, dword [esp + 0x10]
push eax
mov ecx, dword [eax]
mov esi, dword [ecx + 8]
mov ecx, esi
call dword [0x10019344]
call esi
mov eax, dword [esp + 0x24]
jmp 0x1000b2d7
mov bl, byte [ebp + 8]
mov esi, dword [0x100186d0]
mov ecx, esi
push 1
push 4
push eax
call dword [0x10019344]
call esi
mov ecx, dword [esp + 0x1c]
mov dword [eax], ecx
jmp 0x1000b2f7
mov bl, byte [ebp + 8]
mov ecx, dword [esp + 0x2c]
test ecx, ecx
je 0x1000b333
and bl, 0xc0
cmp bl, 0xc0
jne 0x1000b323
push dword [esp + 0x28]
mov esi, dword [0x100186e8]
mov ecx, esi
push dword [0x10018598]
call dword [0x10019344]
call esi
jmp 0x1000b333
mov eax, dword [ecx]
push ecx
mov esi, dword [eax + 8]
mov ecx, esi
call dword [0x10019344]
call esi
mov eax, dword [esp + 0x14]
test eax, eax
je 0x1000b348
push dword [esp + 0x18]
mov ecx, dword [edi + 0x28]
push eax
call fcn.10006159
cmp dword [esp + 0x38], 0
je 0x1000b354
call fcn.1000536d
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x44]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.100165d0
mov esp, ebp
pop ebp
ret 8