Function at 0x6adc5630
Capabilities:
Get thread local storage value

Disassembly:
push esi
push ebx
sub esp, 0x24
mov esi, dword [esp + 0x30]
test esi, esi
je 0x6adc5768
mov dword [esp], 0x6ae1302c
call fcn.6adc28e0
mov eax, esi
call fcn.6adc3000
mov dword [esp], 0x6ae1302c
mov ebx, eax
call fcn.6adc2c20
test ebx, ebx
je 0x6adc5768
mov eax, dword [ebx + 0x14]
test eax, eax
je 0x6adc5768
lea edx, [esp + 0x1c]
mov dword [esp], eax
mov dword [esp + 4], edx
call dword [sym.imp.KERNEL32.dll_GetHandleInformation]
sub esp, 8
test eax, eax
je 0x6adc5768
test byte [ebx + 0x24], 4
jne 0x6adc5778
cmp dword [0x6ae6b0b8], 1
je 0x6adc56a9
call fcn.6adc3740
mov eax, dword [0x6ae13034]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
sub esp, 4
test eax, eax
je 0x6adc5788
cmp esi, dword [eax + 0xb4]
je 0x6adc57a0
mov ecx, dword [ebx + 0x68]
mov eax, dword [ebx + 0x14]
test ecx, ecx
je 0x6adc56e0
lea edx, [eax - 1]
cmp edx, 0xfffffffd
ja 0x6adc56f7
mov dword [esp + 4], 0xffffffff
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov eax, dword [ebx + 0x14]
sub esp, 8
mov dword [esp], eax
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
call esi
mov eax, dword [ebx + 0x18]
sub esp, 4
test eax, eax
je 0x6adc5714
mov dword [esp], eax
call esi
sub esp, 4
mov edx, dword [esp + 0x34]
mov dword [ebx + 0x18], 0
test edx, edx
je 0x6adc572c
mov eax, dword [ebx + 4]
mov ecx, dword [esp + 0x34]
mov dword [ecx], eax
lea eax, [ebx + 0x1c]
mov dword [esp], eax
call fcn.6adc2db0
lea eax, [ebx + 0x38]
mov dword [esp], eax
call fcn.6adc2f70
cmp eax, 1
je 0x6adc57a7
mov eax, dword [ebx + 0xb0]
mov dword [ebx + 0x38], 0xffffffff
xor esi, esi
test eax, eax
jne 0x6adc576d
mov eax, ebx
call fcn.6adc35b0
jmp 0x6adc576d
mov esi, 3
add esp, 0x24
mov eax, esi
pop ebx
pop esi
ret
mov esi, 0x16
add esp, 0x24
mov eax, esi
pop ebx
pop esi
ret
call fcn.6adc37e0
test eax, eax
je 0x6adc56ce
jmp 0x6adc56c2
mov esi, 0x24
jmp 0x6adc576d
call fcn.6adc3310
lea esi, [esi]
push edi
push esi
push ebx
sub esp, 0x20
mov dword [esp], 0x6ae1302c
mov edi, dword [esp + 0x30]
call fcn.6adc28e0
mov eax, edi
call fcn.6adc3000
test eax, eax
je 0x6adc58f0
mov ebx, eax
mov eax, dword [eax + 0x14]
test eax, eax
je 0x6adc58f0
lea edx, [esp + 0x1c]
mov dword [esp], eax
mov dword [esp + 4], edx
call dword [sym.imp.KERNEL32.dll_GetHandleInformation]
sub esp, 8
test eax, eax
je 0x6adc58f0
mov esi, dword [ebx + 0x24]
and esi, 4
jne 0x6adc5910
cmp dword [0x6ae6b0b8], 1
je 0x6adc5818
call fcn.6adc3740
mov eax, dword [0x6ae13034]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
sub esp, 4
test eax, eax
je 0x6adc5950
mov esi, dword [eax + 0xb4]
cmp edi, esi
je 0x6adc5978
mov esi, dword [ebx + 0x68]
mov eax, dword [ebx + 0x14]
test esi, esi
jne 0x6adc5868
mov dword [esp + 4], 0
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
sub esp, 8
test eax, eax
jne 0x6adc5930
mov eax, dword [ebx + 0x14]
mov dword [esp], eax
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
call esi
mov eax, dword [ebx + 0x18]
sub esp, 4
test eax, eax
je 0x6adc5885
mov dword [esp], eax
call esi
sub esp, 4
mov edx, dword [esp + 0x34]
mov dword [ebx + 0x18], 0
test edx, edx
je 0x6adc589d
mov eax, dword [ebx + 4]
mov ecx, dword [esp + 0x34]
mov dword [ecx], eax
lea eax, [ebx + 0x1c]
mov dword [esp], eax
call fcn.6adc2db0
lea eax, [ebx + 0x38]
mov dword [esp], eax
call fcn.6adc2f70
cmp eax, 1
je 0x6adc598e
mov eax, dword [ebx + 0xb0]
mov dword [ebx + 0x38], 0xffffffff
test eax, eax
je 0x6adc5968
mov dword [esp], 0x6ae1302c
call fcn.6adc2c20
xor eax, eax
add esp, 0x20
pop ebx
pop esi
pop edi
ret
mov dword [esp], 0x6ae1302c
call fcn.6adc2c20
add esp, 0x20
mov eax, 3
pop ebx
pop esi
pop edi
ret
mov dword [esp], 0x6ae1302c
call fcn.6adc2c20
add esp, 0x20
mov eax, 0x16
pop ebx
pop esi
pop edi
ret
mov ecx, dword [ebx + 0x68]
test ecx, ecx
jne 0x6adc5865
mov dword [esp], 0x6ae1302c
call fcn.6adc2c20
mov eax, 0x10
jmp 0x6adc58df
call fcn.6adc37e0
test eax, eax
je 0x6adc5837
jmp 0x6adc5831
mov eax, ebx
call fcn.6adc35b0
jmp 0x6adc58d1
mov dword [esp], 0x6ae1302c
call fcn.6adc2c20
mov eax, 0x24
jmp 0x6adc58df
call fcn.6adc3310
lea esi, [esi]
lea esi, [esi]
push esi
push ebx
sub esp, 0x24
mov ebx, dword [esp + 0x30]
mov dword [esp], 0x6ae1302c
test ebx, ebx
je 0x6adc5aa0
call fcn.6adc28e0
mov eax, ebx
call fcn.6adc3000
mov dword [esp], 0x6ae1302c
mov ebx, eax
call fcn.6adc2c20
mov dword [esp], 0x6ae1302c
call fcn.6adc28e0
test ebx, ebx
je 0x6adc5aa5
mov eax, dword [ebx + 0x14]
test eax, eax
je 0x6adc5aa5
lea edx, [esp + 0x1c]
mov dword [esp], eax
mov dword [esp + 4], edx
call dword [sym.imp.KERNEL32.dll_GetHandleInformation]
sub esp, 8
test eax, eax
je 0x6adc5aa5
mov eax, dword [ebx + 0x24]
test al, 4
jne 0x6adc5ac0
or eax, 4
mov edx, dword [ebx + 0x14]
mov dword [ebx + 0x14], 0
mov dword [ebx + 0x24], eax
test edx, edx
je 0x6adc5a88
mov dword [esp], edx
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
call esi
mov edx, dword [ebx + 0x68]
sub esp, 4
test edx, edx
je 0x6adc5a88
mov eax, dword [ebx + 0x18]
test eax, eax
je 0x6adc5a50
mov dword [esp], eax
call esi
sub esp, 4
lea eax, [ebx + 0x1c]
mov dword [ebx + 0x18], 0
mov dword [esp], eax
call fcn.6adc2db0
lea eax, [ebx + 0x38]
mov dword [esp], eax
call fcn.6adc2f70
cmp eax, 1
je 0x6adc5ae1
mov eax, dword [ebx + 0xb0]
mov dword [ebx + 0x38], 0xffffffff
test eax, eax
je 0x6adc5ad8
lea esi, [esi]
nop
mov dword [esp], 0x6ae1302c
call fcn.6adc2c20
xor eax, eax
add esp, 0x24
pop ebx
pop esi
ret
call fcn.6adc28e0
mov dword [esp], 0x6ae1302c
call fcn.6adc2c20
add esp, 0x24
mov eax, 3
pop ebx
pop esi
ret
mov dword [esp], 0x6ae1302c
call fcn.6adc2c20
mov eax, 0x16
jmp 0x6adc5a96
mov eax, ebx
call fcn.6adc35b0
jmp 0x6adc5a88
call fcn.6adc3310
lea esi, [esi]
lea esi, [esi]
mov eax, dword [0x6ae6b088]
ret