Function at 0x4254c0
Capabilities:
Execute anti-debugging instructions
Get thread local storage value

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
mov eax, dword [0x4c6074]
sub esp, 0x24
push ebx
push esi
push edi
push eax
mov ebx, ecx
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, eax
mov esi, dword [ecx + 4]
cmp esi, dword [ecx + 0xc]
jae 0x4254fd
mov dword [esi], str.TtrcConvexVert
rdtsc
mov dword [esp + 0x1c], eax
mov edx, dword [esp + 0x1c]
mov dword [esi + 4], edx
add esi, 0xc
mov dword [ecx + 4], esi
fld dword [0x4b2f80]
mov esi, dword [ebp + 0x10]
mov edx, dword [ebx + 0x54]
fstp dword [esp + 0x18]
sub edx, 1
fld dword [esi + 0x10]
fstp dword [esp + 0x1c]
fldz
fst dword [esp + 0x2c]
fst dword [esp + 0x28]
fst dword [esp + 0x24]
fst dword [esp + 0x20]
js 0x425655
fld dword [esp + 0x18]
mov edi, dword [ebp + 0xc]
fld dword [esp + 0x1c]
mov ecx, edx
shl ecx, 4
add ecx, dword [ebx + 0x50]
fld dword [ecx + 4]
fmul dword [edi + 4]
fld dword [edi]
fmul dword [ecx]
faddp st(1)
fld dword [edi + 8]
fmul dword [ecx + 8]
faddp st(1)
fadd dword [ecx + 0xc]
fstp dword [esp + 0x18]
fld dword [edi + 0x10]
fmul dword [ecx]
fld dword [ecx + 4]
fmul dword [edi + 0x14]
faddp st(1)
fld dword [edi + 0x18]
fmul dword [ecx + 8]
faddp st(1)
fadd dword [ecx + 0xc]
fstp dword [esp + 0x1c]
fld dword [esp + 0x18]
fcom st(3)
fnstsw ax
fld dword [esp + 0x1c]
fcom st(4)
test ah, 1
fnstsw ax
jne 0x4255d7
test ah, 1
je 0x42567b
fsubr st(1)
fdivp st(1)
fstp dword [esp + 0x1c]
fld dword [esp + 0x1c]
fcom st(2)
fnstsw ax
test ah, 1
jne 0x4255fd
fstp st(2)
fxch st(1)
fstp dword [esp + 0x18]
fld dword [ecx]
fstp dword [esp + 0x20]
fld dword [ecx + 4]
fstp dword [esp + 0x24]
fld dword [ecx + 8]
fstp dword [esp + 0x28]
fld dword [ecx + 0xc]
fstp dword [esp + 0x2c]
fld dword [esp + 0x18]
fxch st(1)
jmp 0x4255ff
test ah, 1
jne 0x425636
fsubr st(1)
fdivp st(1)
fstp dword [esp + 0x1c]
fld dword [esp + 0x1c]
fcom st(1)
fnstsw ax
test ah, 0x41
je 0x4255fd
fstp st(1)
fstp dword [esp + 0x1c]
fld dword [esp + 0x1c]
jmp 0x4255ff
fstp st(0)
fcom st(1)
fnstsw ax
test ah, 5
jp 0x42563a
mov eax, dword [0x4c6074]
fstp st(1)
fstp st(0)
push eax
fstp st(0)
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov esi, eax
mov ecx, dword [esi + 4]
cmp ecx, dword [esi + 0xc]
jae 0x4256b4
mov dword [ecx], 0x4b2454
rdtsc
mov dword [esp + 0x1c], eax
jmp 0x4256a7
fstp st(1)
fstp st(0)
sub edx, 1
sub ecx, 0x10
test edx, edx
jge 0x425542
fstp st(0)
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 5
jp 0x4256c3
mov eax, dword [0x4c6074]
fstp st(0)
push eax
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov esi, eax
mov ecx, dword [esi + 4]
cmp ecx, dword [esi + 0xc]
jae 0x4256b4
mov dword [ecx], 0x4b2454
rdtsc
mov dword [esp + 0x1c], eax
jmp 0x4256a7
mov eax, dword [0x4c6074]
fstp st(1)
fstp st(0)
push eax
fstp st(1)
fstp st(0)
fstp st(0)
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov esi, eax
mov ecx, dword [esi + 4]
cmp ecx, dword [esi + 0xc]
jae 0x4256b4
mov dword [ecx], 0x4b2454
rdtsc
mov dword [esp + 0x1c], eax
mov edx, dword [esp + 0x1c]
mov dword [ecx + 4], edx
add ecx, 0xc
mov dword [esi + 4], ecx
mov eax, dword [ebp + 8]
mov byte [eax], 0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
fld dword [esp + 0x20]
mov eax, dword [esi + 0x40]
fstp dword [esi]
fld dword [esp + 0x24]
fstp dword [esi + 4]
fld dword [esp + 0x28]
fstp dword [esi + 8]
fld dword [esp + 0x2c]
fstp dword [esi + 0xc]
fstp dword [esi + 0x10]
mov dword [esi + eax*4 + 0x20], 0xffffffff
mov ecx, dword [0x4c6074]
push ecx
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
mov ecx, eax
mov esi, dword [ecx + 4]
cmp esi, dword [ecx + 0xc]
jae 0x42571c
mov dword [esi], 0x4b2454
rdtsc
mov dword [esp + 0x1c], eax
mov edx, dword [esp + 0x1c]
mov dword [esi + 4], edx
add esi, 0xc
mov dword [ecx + 4], esi
mov eax, dword [ebp + 8]
pop edi
pop esi
mov byte [eax], 1
pop ebx
mov esp, ebp
pop ebp
ret 0xc