Function at 0x6ffeec30
Capabilities:
Get thread local storage value
Set thread local storage value

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x5c
mov ebp, dword [esp + 0x70]
test ebp, ebp
jne 0x6ffeec50
add esp, 0x5c
pop ebx
pop esi
pop edi
pop ebp
ret
lea edi, [ebp + 0x1c]
mov dword [esp + 0x2c], 0
mov dword [esp + 0x18], ebp
add dword [esp + 0x2c], 1
mov dword [esp + 0x30], edi
lea eax, [esp + 0x30]
mov dword [esp + 0x3c], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x34], 0
xchg dword [edi], eax
test eax, eax
je 0x6ffeecc1
lea edx, [esp + 0x30]
mov ecx, 0xffffffff
mov dword [eax + 4], edx
lea edx, [eax + 0xc]
xor eax, eax
lock cmpxchg dword [edx], ecx
test eax, eax
je 0x6ffeecaf
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_SetEvent]
sub esp, 4
xor ebx, ebx
lea eax, [esp + 0x38]
lock xadd dword [eax], ebx
test ebx, ebx
je 0x6ffef181
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x30]
mov eax, dword [edx + 0x30]
mov dword [edx + 0x34], eax
xor edx, edx
lea eax, [esp + 0x34]
lock xadd dword [eax], edx
test edx, edx
mov eax, edx
je 0x6ffef263
lea edx, [eax + 8]
mov ecx, 0xffffffff
xor eax, eax
lock cmpxchg dword [edx], ecx
test eax, eax
je 0x6ffeed01
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_SetEvent]
sub esp, 4
mov dword [esp + 0x20], 0
lea esi, [esi]
mov dword [esp + 0x30], edi
mov dword [esp + 0x3c], 0
lea eax, [esp + 0x30]
mov dword [esp + 0x38], 0
mov dword [esp + 0x34], 0
xchg dword [edi], eax
test eax, eax
je 0x6ffeed6d
lea edx, [esp + 0x30]
mov ecx, 0xffffffff
mov dword [eax + 4], edx
lea edx, [eax + 0xc]
xor eax, eax
lock cmpxchg dword [edx], ecx
test eax, eax
je 0x6ffeed5b
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_SetEvent]
sub esp, 4
xor ebx, ebx
lea eax, [esp + 0x38]
lock xadd dword [eax], ebx
test ebx, ebx
je 0x6ffeee00
mov eax, dword [esp + 0x18]
mov esi, dword [eax + 0x34]
test esi, esi
je 0x6ffeee57
mov eax, dword [esi + 4]
xor ecx, ecx
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x44], 0
lea ebp, [esp + 0x40]
lea ebx, [eax + 8]
mov eax, ecx
mov dword [esp + 0x40], ebx
lock cmpxchg dword [ebx], ebp
test eax, eax
mov ebx, eax
je 0x6ffeeea0
mov ebx, dword [esp + 0x30]
lea eax, [esp + 0x34]
lock xadd dword [eax], ecx
test ecx, ecx
mov edx, ecx
je 0x6ffef150
add edx, 8
xor eax, eax
mov ecx, 0xffffffff
lock cmpxchg dword [edx], ecx
test eax, eax
je 0x6ffeede8
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_SetEvent]
sub esp, 4
mov dword [esp], 0
call dword [sym.imp.KERNEL32.dll_Sleep]
sub esp, 4
jmp 0x6ffeed10
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call dword [sym.imp.KERNEL32.dll_CreateEventA]
sub esp, 0x10
mov esi, eax
mov eax, ebx
lea edx, [esp + 0x38]
lock cmpxchg dword [edx], esi
test eax, eax
je 0x6ffef041
mov dword [esp], esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
sub esp, 4
mov eax, dword [esp + 0x18]
mov esi, dword [eax + 0x34]
test esi, esi
jne 0x6ffeed7c
mov edx, dword [esp + 0x30]
lea eax, [esp + 0x34]
lock xadd dword [eax], esi
test esi, esi
mov eax, esi
je 0x6ffef230
lea edx, [eax + 8]
mov ecx, 0xffffffff
xor eax, eax
lock cmpxchg dword [edx], ecx
test eax, eax
je 0x6ffeee8b
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_SetEvent]
sub esp, 4
mov edx, dword [esp + 0x20]
test edx, edx
jne 0x6ffeec5f
jmp 0x6ffeec3f
mov ecx, dword [esi + 4]
mov eax, dword [esi + 8]
mov edx, dword [esp + 0x18]
mov dword [esp + 0x28], ecx
mov dword [edx + 0x34], eax
mov eax, dword [ecx + 4]
mov dword [esp + 0x24], eax
mov eax, dword [ecx]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
sub esp, 4
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x1c], eax
mov dword [esp + 4], 0
mov eax, dword [ecx]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
sub esp, 8
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x6ffeef80
cmp dword [esp + 0x2c], 4
jg 0x6ffeef80
mov esi, dword [esp + 0x30]
lea eax, [esp + 0x34]
lock xadd dword [eax], ebx
test ebx, ebx
mov ecx, ebx
je 0x6ffef0f0
add ecx, 8
xor eax, eax
mov ebx, 0xffffffff
lock cmpxchg dword [ecx], ebx
test eax, eax
je 0x6ffeef2f
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_SetEvent]
sub esp, 4
mov esi, dword [esp + 0x40]
lea ebx, [esp + 0x44]
xor ecx, ecx
lock xadd dword [ebx], ecx
test ecx, ecx
mov eax, ecx
je 0x6ffef0c3
lea edx, [eax + 8]
mov ecx, 0xffffffff
xor eax, eax
lock cmpxchg dword [edx], ecx
test eax, eax
je 0x6ffeef65
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_SetEvent]
sub esp, 4
mov eax, dword [esp + 0x1c]
add dword [esp + 0x20], 1
mov dword [esp], eax
mov eax, dword [esp + 0x24]
call eax
jmp 0x6ffeed10
mov ecx, dword [esi + 0x10]
mov eax, dword [esi + 8]
test ecx, ecx
je 0x6ffeef8d
mov dword [ecx + 8], eax
test eax, eax
je 0x6ffeef94
mov dword [eax + 0x10], ecx
mov ecx, dword [esi]
cmp esi, dword [ecx + 0x30]
je 0x6ffef140
cmp esi, dword [ecx + 0x34]
je 0x6ffef130
mov ecx, dword [esi + 0x14]
mov eax, dword [esi + 0xc]
test ecx, ecx
je 0x6ffeefb5
mov dword [ecx + 0xc], eax
test eax, eax
je 0x6ffeefbc
mov dword [eax + 0x14], ecx
mov ecx, dword [esi + 4]
cmp esi, dword [ecx + 0xc]
je 0x6ffef123
mov dword [esp], esi
call sub.msvcrt.dll_free
mov ebx, dword [esp + 0x30]
xor ecx, ecx
lea eax, [esp + 0x34]
lock xadd dword [eax], ecx
test ecx, ecx
mov eax, ecx
je 0x6ffef090
lea ecx, [eax + 8]
mov ebx, 0xffffffff
xor eax, eax
lock cmpxchg dword [ecx], ebx
test eax, eax
je 0x6ffef006
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_SetEvent]
sub esp, 4
mov esi, dword [esp + 0x40]
lea ebx, [esp + 0x44]
xor ecx, ecx
lock xadd dword [ebx], ecx
test ecx, ecx
mov eax, ecx
je 0x6ffef060
lea edx, [eax + 8]
mov ecx, 0xffffffff
xor eax, eax
lock cmpxchg dword [edx], ecx
test eax, eax
je 0x6ffeed10
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_SetEvent]
sub esp, 4
jmp 0x6ffeed10
mov dword [esp + 4], 0xffffffff
mov dword [esp], esi
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
sub esp, 8
jmp 0x6ffeee3c
mov eax, ebp
lock cmpxchg dword [esi], ecx
cmp ebp, eax
je 0x6ffeed10
lea eax, [esp + 0x4c]
lock xadd dword [eax], ecx
test ecx, ecx
je 0x6ffef2c0
xor eax, eax
lock xadd dword [ebx], eax
jmp 0x6ffef01a
lea eax, [esp + 0x30]
lock cmpxchg dword [ebx], ecx
lea edx, [esp + 0x30]
cmp edx, eax
je 0x6ffef006
lea eax, [esp + 0x3c]
lock xadd dword [eax], ecx
test ecx, ecx
je 0x6ffef2a0
xor eax, eax
lea esi, [esp + 0x34]
lock xadd dword [esi], eax
jmp 0x6ffeefe8
mov eax, ebp
lock cmpxchg dword [esi], ecx
cmp ebp, eax
je 0x6ffeef65
lea eax, [esp + 0x4c]
lock xadd dword [eax], ecx
test ecx, ecx
je 0x6ffef292
xor eax, eax
lock xadd dword [ebx], eax
jmp 0x6ffeef47
lea eax, [esp + 0x30]
lock cmpxchg dword [esi], ebx
lea edx, [esp + 0x30]
cmp edx, eax
je 0x6ffeef2f
lea eax, [esp + 0x3c]
lock xadd dword [eax], ebx
test ebx, ebx
je 0x6ffef2b0
xor ecx, ecx
lea eax, [esp + 0x34]
lock xadd dword [eax], ecx
jmp 0x6ffeef11
mov dword [ecx + 0xc], eax
jmp 0x6ffeefc8
mov dword [ecx + 0x34], eax
jmp 0x6ffeefa8
mov dword [ecx + 0x30], eax
jmp 0x6ffeef9f
lea eax, [esp + 0x30]
lock cmpxchg dword [ebx], ecx
lea edx, [esp + 0x30]
cmp edx, eax
je 0x6ffeede8
lea ebx, [esp + 0x3c]
mov ebp, ecx
lock xadd dword [ebx], ebp
test ebp, ebp
je 0x6ffef1ca
xor edx, edx
lea eax, [esp + 0x34]
lock xadd dword [eax], edx
jmp 0x6ffeedca
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call dword [sym.imp.KERNEL32.dll_CreateEventA]
sub esp, 0x10
mov esi, eax
mov eax, ebx
lea edx, [esp + 0x38]
lock cmpxchg dword [edx], esi
test eax, eax
je 0x6ffef213
mov dword [esp], esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
sub esp, 4
jmp 0x6ffeecc1
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call dword [sym.imp.KERNEL32.dll_CreateEventA]
mov esi, eax
sub esp, 0x10
mov eax, ebp
lock cmpxchg dword [ebx], esi
test eax, eax
je 0x6ffef2db
mov dword [esp], esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
sub esp, 4
jmp 0x6ffef172
mov dword [esp + 4], 0xffffffff
mov dword [esp], esi
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
sub esp, 8
jmp 0x6ffef1b9
lea eax, [esp + 0x30]
lock cmpxchg dword [edx], esi
lea edx, [esp + 0x30]
cmp edx, eax
je 0x6ffeee8b
lea eax, [esp + 0x3c]
lock xadd dword [eax], esi
test esi, esi
je 0x6ffef2d1
xor eax, eax
lea esi, [esp + 0x34]
lock xadd dword [esi], eax
jmp 0x6ffeee6d
lea eax, [esp + 0x30]
lock cmpxchg dword [ecx], edx
lea esi, [esp + 0x30]
cmp esi, eax
je 0x6ffeed01
lea eax, [esp + 0x3c]
lock xadd dword [eax], edx
test edx, edx
je 0x6ffef2ca
xor eax, eax
lea esi, [esp + 0x34]
lock xadd dword [esi], eax
jmp 0x6ffeece3
call fcn.6ffee320
jmp 0x6ffef0e1
call fcn.6ffee320
jmp 0x6ffef0b4
call fcn.6ffee320
jmp 0x6ffef114
call fcn.6ffee320
jmp 0x6ffef07e
call fcn.6ffee320
jmp 0x6ffef283
call fcn.6ffee320
jmp 0x6ffef254
mov dword [esp + 4], 0xffffffff
mov dword [esp], esi
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
sub esp, 8
jmp 0x6ffef202