Function at 0x10012350
Capabilities:
Set thread local storage value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x44
mov eax, dword [ebp + 8]
push ebx
lea edx, [eax + 0x1518]
push esi
mov ecx, eax
push edi
mov dword [ebp - 0x18], ecx
mov dword [ebp - 0x1c], edx
cmp eax, edx
ja 0x100123d3
mov ebx, dword [ebp + 0xc]
cmp ecx, 0x597
ja 0x10012517
je 0x10012748
mov eax, ecx
sub eax, 0x4b6
je 0x10012422
sub eax, 0x4b
je 0x100123ab
sub eax, 0x4b
jne 0x1001272c
xchg byte [esi - 0x76b2d4ee], ch
inc ebp
hlt
invalid
mov eax, dword [ebp - 0xc]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
adc cl, ch
inc ebx
pop ecx
mov dword [ebp - 4], 0
test ebx, ebx
je 0x1001249c
mov eax, dword [ebx]
test eax, eax
je 0x1001249c
push 0
lea esi, [eax + 4]
push 0
push esi
push 0x7246
mov dword [ebp - 4], eax
call fcn.1001d9f0
add esp, 0x10
mov dword [ebp - 8], eax
test eax, eax
jne 0x1001272c
mov eax, dword [ebp - 4]
cmp dword [eax], 0
jge 0x1001247f
push 0
push 0x2167
push esi
call fcn.10030840
add esp, 0xc
mov dword [ebp - 8], 0x10
jmp 0x1001272c
mov edx, dword [eax + 8]
push edx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
test eax, eax
jne 0x100124a8
push eax
push 0x2167
push esi
call fcn.10030840
add esp, 0xc
mov dword [ebp - 8], 0x16
jmp 0x1001272c
mov edi, 0x3f20
lea ecx, [ecx]
mov eax, edi
sub eax, 0x3f20
je 0x100124f3
sub eax, 0x10
jne 0x10012507
popfd
arpl word [ecx], ax
movsd dword es:[edi], dword [esi]
sub edx, dword [eax + 0x68]
and dword [bx + si], eax
add byte [esi - 0x18], dl
jno 0x100124b0
add dword [eax], eax
add esp, 0xc
push 0
call dword [sym.imp.KERNEL32.dll_Sleep]
push 0
push 0
push 0x48cc
push esi
call fcn.10029100
add esp, 0x10
cmp eax, 0x10
je 0x100124d2
jmp 0x10012507
enter 0xfffffffffffff175, 0xfffffffffffffff4
dec ecx
mov eax, dword [ebp - 4]
mov dword [ebx], 0
mov dword [eax], 0x7fffffff
add edi, 0x10
cmp edi, 0x3f30
jbe 0x100124b0
jmp 0x1001272c
mov eax, ecx
sub eax, 0x3101
je 0x10012720
sub eax, 0x4b
je 0x10012541
sub eax, 0x4b
jne 0x1001272c
push esi
int 0x2a
out 0xb3, eax
mov eax, dword [ebp + 8]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
jecxz 0x10012593
dec edi
inc edx
adc eax, 0x139deca1
adc byte [edx], ch
cmp dword [ebx], eax
je 0x10012577
push 0x15b6
push 0
push 0
call int.1001ad30
add esp, 0x10
mov edi, eax
mov dword [ebp - 0x20], edx
test eax, eax
jne 0x100125b1
pop edi
pop esi
mov eax, 2
pop ebx
mov esp, ebp
pop ebp
ret
lea ecx, [ebp + 8]
push ecx
push 0
push 0
push 0x6140
push 0
push 0
mov dword [ebp + 8], eax
call fcn.10010910
add esp, 0x1c
test eax, eax
jne 0x100125a8
mov ecx, dword [ebp + 0x10]
test ecx, ecx
je 0x1001256b
mov edx, dword [ecx + 4]
mov edi, dword [ecx]
mov dword [ebp - 0x20], edx
jmp 0x100125b4
mov edi, dword [eax + 0xc]
mov eax, dword [eax + 0x10]
mov dword [ebp - 0x20], eax
mov ecx, dword [ebp + 0x10]
mov eax, dword [ebx]
mov dword [ebp + 8], 0
test eax, eax
je 0x1001272c
test edi, edi
je 0x10012707
cmp dword [eax + 4], 0
je 0x10012707
test ecx, ecx
je 0x10012707
mov esi, 0x3ffb
jmp 0x100125f0
lea eax, [esi - 0x3ffb]
cmp eax, 0x5a
ja case.0x10012606.16380
movzx ecx, byte [eax + 0x10012774]
jmp dword [ecx*4 + 0x10012758]
ror dword [esi - 0x74b54484], 1
push ebp
in al, dx
mov ecx, dword [edx + 0x30]
mov dword [ebp - 0x10], ecx
test ecx, ecx
je case.0x10012606.16380
mov eax, dword [ebx]
jmp 0x10012633
mov ecx, dword [ebp - 0x10]
cmp dword [ecx + 4], eax
je 0x100126ea
mov ecx, dword [ecx + 8]
mov dword [ebp - 0x10], ecx
test ecx, ecx
jne 0x10012630
jmp case.0x10012606.16380
dec ecx
jbe 0x1001266f
xlatb
cld
lea eax, [ebp - 0x34]
push eax
push 0x6e0f
push 0
call fcn.10028f60
add esp, 0xc
jmp case.0x10012606.16380
dec ebx
bound edi, qword [esi + 0x558b9cf4]
in al, dx
push 0x2d2f
lea ecx, [ebp - 0x44]
push ecx
add edx, 0x1c
push edx
call int.1002aa80
add esp, 0xc
jmp case.0x10012606.16380
and dword [esi + ecx*4 + 0xb8b7798], edx
push 0x2d2f
lea eax, [ebp - 0x34]
push eax
add ecx, 8
push ecx
mov dword [ebp - 0x14], edi
call int.1002aa80
add esp, 0xc
jmp case.0x10012606.16380
retf
mov ch, 0xb3
and eax, 0x31be1e15
inc eax
add byte [eax], al
mov esi, 0x4031
add esi, 0x12
cmp esi, 0x4055
jbe 0x100125f0
cmp dword [ebp + 8], 0
jne 0x1001272c
mov ecx, dword [ebp + 0x10]
mov eax, dword [ebx]
push ecx
mov ecx, dword [eax]
push ecx
call dword [sym.imp.KERNEL32.dll_TlsSetValue]
test eax, eax
jne 0x1001272c
mov dword [ebp + 8], 0xb
jmp 0x1001272c
and al, 0xaf
sbb ebx, 0x845c71a
add byte [eax], al
add byte [eax], al
mov ecx, dword [ebp - 0x18]
add ecx, 0x4b
mov dword [ebp - 0x18], ecx
cmp ecx, dword [ebp - 0x1c]
jbe 0x10012371
mov eax, dword [ebp - 0xc]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
xor ah, byte [edi]
inc ebx
movsb byte es:[edi], byte es:[esi]
mov eax, dword [ebp - 0xc]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret