Function at 0x424200
Capabilities:
Allocate thread local storage
Get common file path
Get system information on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2a8
mov dword [ebp - 4], esi
cmp dword [0x4e0fdc], 0
je 0x424219
mov esp, ebp
pop ebp
ret
push 0x4e0fe0
call dword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
lea eax, [ebp - 0xc]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
test eax, eax
je 0x424410
fild qword [ebp - 0xc]
fld1
fdivrp st(1)
fstp qword [0x4e0fc8]
cmp dword [0x459440], 0
jne 0x424259
push 0x459440
call fcn.00415da0
add esp, 4
mov eax, dword [0x4e0d00]
or eax, dword [0x4e0d04]
jne 0x424296
lea eax, [ebp - 0x38]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
test eax, eax
je 0x424287
mov eax, dword [ebp - 0x38]
mov edx, dword [ebp - 0x34]
mov dword [0x4e0d00], eax
mov dword [0x4e0d04], edx
jmp 0x424296
mov eax, 0xffffffff
mov dword [0x4e0d00], eax
mov dword [0x4e0d04], eax
mov dword [0x45951c], 0
cmp dword [0x4e0d08], 0
jne 0x424318
call dword [sym.imp.KERNEL32.dll_TlsAlloc]
mov dword [0x4e0d08], eax
cmp eax, 0xffffffff
jne 0x424318
push 0x40075
lea eax, [ebp - 0x68]
push eax
call fcn.00416410
add esp, 8
mov ecx, dword [ebp - 0x68]
lea edx, [esp + 4]
mov dword [esp], 2
mov dword [edx], ecx
mov esi, dword [ebp - 0x64]
mov eax, dword [ebp - 0x60]
mov ecx, dword [ebp - 0x5c]
mov dword [edx + 4], esi
mov dword [edx + 8], eax
lea eax, [esp + 0x14]
mov dword [edx + 0xc], ecx
mov edx, dword [0x4e0ea0]
mov dword [eax], edx
mov esi, dword [0x4e0ea4]
mov edx, dword [0x4e0ea8]
mov ecx, dword [0x4e0eac]
mov dword [eax + 4], esi
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
call fcn.00416830
mov edx, 0x200
lea ecx, [ebp - 0x268]
push edx
xor eax, eax
mov dword [ebp - 0x274], ecx
mov dword [ebp - 0x270], edx
mov dword [ebp - 0x26c], eax
mov byte [ecx], al
push ecx
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
cmp eax, dword [ebp - 0x270]
jae 0x4243e9
lea esi, [ebp - 0x274]
test eax, eax
jbe 0x42435f
cmp eax, dword [ebp - 0x270]
jb 0x4243ba
mov eax, dword [0x4e0fd8]
test eax, eax
je 0x424379
push str.NtQuerySystemInformation
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x4e0fd4], eax
lea eax, [ebp - 0x30]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
mov eax, dword [ebp - 0x1c]
test eax, eax
jle 0x424391
mov dword [0x4e0d84], eax
jmp 0x42439b
mov dword [0x4e0d84], 2
push esi
call fcn.004257c0
add esp, 4
call fcn.0042bbb0
mov esi, dword [ebp - 4]
mov dword [0x4e0fdc], 1
mov esp, ebp
pop ebp
ret
push str.ntdll.dll
push 0x452a84
push esi
mov dword [ebp - 0x26c], eax
call fcn.00425b10
add esp, 0xc
push dword [ebp - 0x274]
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
mov dword [0x4e0fd8], eax
jmp 0x424364
push eax
lea esi, [ebp - 0x274]
push esi
call fcn.004255e0
add esp, 8
push dword [ebp - 0x270]
push dword [ebp - 0x274]
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
jmp 0x424353
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
push str.QueryPerformanceFrequency__
push 0x400b2
lea eax, [ebp - 0x58]
push eax
call fcn.00416410
push esi
lea eax, [ebp - 0x48]
push eax
call fcn.00418700
add esp, 0x14
mov esi, dword [ebp - 0x58]
lea ecx, [esp + 4]
mov dword [esp], 2
mov dword [ecx], esi
mov eax, dword [ebp - 0x54]
mov edx, dword [ebp - 0x50]
mov esi, dword [ebp - 0x4c]
mov dword [ecx + 4], eax
mov dword [ecx + 8], edx
lea edx, [esp + 0x14]
mov dword [ecx + 0xc], esi
mov ecx, dword [ebp - 0x48]
mov dword [edx], ecx
mov eax, dword [ebp - 0x44]
mov ecx, dword [ebp - 0x40]
mov esi, dword [ebp - 0x3c]
mov dword [edx + 4], eax
lea eax, [esp + 0x24]
mov dword [edx + 8], ecx
mov dword [edx + 0xc], esi
mov edx, dword [0x4e0ea0]
mov dword [eax], edx
mov edx, dword [0x4e0ea4]
mov ecx, dword [0x4e0ea8]
mov esi, dword [0x4e0eac]
mov dword [eax + 4], edx
mov dword [eax + 8], ecx
mov dword [eax + 0xc], esi
call fcn.00416830
jmp 0x424243