Function at 0x409e5f3e
Capabilities:
Get thread local storage value

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x18
xor eax, eax
push ebx
mov ebx, dword [ebp + 0x14]
push edi
mov edi, ecx
mov dword [ebp - 8], eax
mov dword [ebp - 0x14], eax
mov dword [ebp - 4], eax
cmp dword [ebp + 8], eax
je 0x409e5f6d
mov eax, ebx
shr eax, 0x10
test ax, ax
je 0x409e5f6d
push ebx
call fcn.409e4d4c
push esi
push dword [ebp + 0xc]
mov ecx, edi
call fcn.409e5065
mov esi, eax
test esi, esi
je 0x409e5fb3
mov eax, ebx
shr eax, 0x10
test ax, ax
jne 0x409e5f9d
cmp ebx, dword [esi + 0xc]
jle 0x409e5f9d
mov eax, ebx
shl eax, 4
mov eax, dword [eax + 0x409e3438]
mov dword [esi], eax
mov dword [esi + 0xc], ebx
push esi
mov ecx, edi
call fcn.409e4fac
mov dword [ebp - 4], 2
mov ebx, esi
jmp 0x409e60bd
push dword [ebp + 0xc]
mov ecx, edi
call fcn.409e4e57
mov ebx, eax
test ebx, ebx
je 0x409e5feb
push 1
push 0x24
push dword [ebp + 0xc]
call sub.wow32.dll_WOWGetVDMPointer
mov esi, dword [edi + 8]
and dword [edi + 8], 0
mov eax, dword [ebx]
push ebx
call dword [eax + 4]
mov dword [edi + 8], esi
mov dword [ebp - 4], 4
jmp 0x409e60bd
cmp dword [ebp + 0x10], 0
jne 0x409e60ce
push dword [section..data]
mov dword [ebp - 0xc], 1
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
test dword [eax + 0x44], 0x1000000
mov esi, dword [ebp + 0x14]
je 0x409e601d
cmp esi, 0x1b
jne 0x409e601d
and dword [ebp - 0xc], 0
push dword [ebp + 0x18]
lea eax, [ebp - 4]
push dword [ebp - 0xc]
mov ecx, edi
push eax
lea eax, [ebp - 0x10]
push eax
push dword [ebp + 0xc]
call fcn.409e57a8
test eax, eax
jne 0x409e60b6
cmp dword [ebp - 0xc], 2
jne 0x409e6095
test esi, esi
jne 0x409e6056
cmp dword [ebp - 4], 2
mov ebx, dword [ebp - 0x10]
jne 0x409e60bd
push ebx
mov ecx, edi
call fcn.409e4fac
jmp 0x409e60bd
cmp dword [ebp - 4], 1
mov eax, dword [ebp - 0x10]
jne 0x409e608d
mov ecx, dword [ebp + 0xc]
cmp dword [eax + 0x20], ecx
jne 0x409e608a
mov ecx, esi
shr ecx, 0x10
test cx, cx
jne 0x409e6086
cmp esi, dword [eax + 0xc]
jbe 0x409e6086
mov ecx, esi
shl ecx, 4
mov ecx, dword [ecx + 0x409e3438]
mov dword [eax], ecx
mov dword [eax + 0xc], esi
mov ebx, eax
jmp 0x409e608d
mov dword [ebp - 8], eax
mov eax, dword [eax + 0x10]
mov dword [ebp + 0x10], eax
jmp 0x409e60bd
push 1
push 0x24
push dword [ebp - 0x10]
call sub.wow32.dll_WOWGetVDMPointer
mov ecx, dword [eax + 0x10]
mov dword [ebp + 0x10], ecx
test esi, esi
jne 0x409e60ce
mov ebx, dword [eax + 0x20]
mov eax, dword [ebx]
push ebx
call dword [eax + 4]
jmp 0x409e60bd
mov dword [ebp - 0x14], 1
test ebx, ebx
jne 0x409e6179
cmp dword [ebp - 0x14], ebx
jne 0x409e6179
mov esi, dword [ebp + 8]
and dword [ebp - 4], 0
test esi, esi
je 0x409e60df
and dword [ebp + 8], 0
jmp 0x409e60eb
mov ecx, 0x409f2020
call fcn.409e4b54
mov esi, eax
test esi, esi
je 0x409e618c
mov ebx, dword [ebp + 0xc]
mov ecx, dword [edi + 0x10]
push esi
push ebx
call fcn.409e501a
test eax, eax
je 0x409e6174
mov eax, dword [ebp + 0x14]
shr eax, 0x10
test ax, ax
je 0x409e6113
and dword [ebp + 0x14], 0
push ebx
push dword [0x409f23dc]
call sub.wow32.dll_WOWCallback16
mov ecx, dword [ebp + 0x14]
mov eax, ecx
shl eax, 4
mov eax, dword [eax + 0x409e3438]
mov dword [esi], eax
xor eax, eax
inc eax
mov dword [esi + 8], eax
mov dword [esi + 4], eax
xor eax, eax
mov dword [esi + 0x18], eax
mov dword [esi + 0x14], eax
mov dword [esi + 0x10], eax
lea eax, [ebp - 0x18]
push eax
push esi
push dword [ebp + 0x10]
mov dword [esi + 0xc], ecx
mov ecx, edi
mov dword [esi + 0x20], ebx
mov dword [esi + 0x1c], 0x80
mov dword [ebp - 0x18], esi
mov dword [ebp - 0x14], 2
call fcn.409e5093
mov ebx, esi
mov dword [ebp - 4], 1
jmp 0x409e618c
xor ebx, ebx
mov dword [ebp - 4], ebx
cmp dword [ebp + 8], 0
je 0x409e618c
push dword [ebp + 8]
mov ecx, 0x409f2020
call fcn.409e4a8b
cmp dword [ebp - 8], 0
pop esi
je 0x409e619d
push dword [ebp - 8]
mov ecx, edi
call fcn.409e5952
mov eax, dword [ebp + 0x1c]
test eax, eax
je 0x409e61a9
mov ecx, dword [ebp - 4]
mov dword [eax], ecx
pop edi
mov eax, ebx
pop ebx
leave
ret 0x18