Function at 0x40451c
Capabilities:
Get file attributes
Get thread local storage value
Query environment variable

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x984
cmp dword [0x2c18e24], 0x66
push ebx
push esi
push edi
jne 0x404592
push ecx
push ecx
mov eax, esp
xor esi, esi
mov dword [eax], esi
mov dword [eax + 4], esi
call fcn.00404190
fstp st(0)
push esi
call fcn.00405845
fstp st(0)
add esp, 4
push esi
call fcn.00405373
pop ecx
push esi
push esi
call fcn.00405389
push esi
call fcn.004053a2
add esp, 0xc
push esi
push esi
call fcn.0040546c
push esi
push esi
call fcn.0040528e
push esi
push esi
call fcn.004055cb
push esi
call fcn.00405373
add esp, 0x1c
push esi
push esi
call fcn.004055aa
pop ecx
pop ecx
push esi
call fcn.00405af8
add dword [0x2c18e24], 0xb2d3b
push 0x404018
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
push 0x404028
push eax
mov dword [0x2c18c78], eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
push dword [0x2c18e24]
xor esi, esi
push esi
mov dword [0x2c18bec], eax
call eax
mov dword [0x2c18be8], eax
call fcn.0040445b
xor edi, edi
cmp dword [0x2c18e24], esi
jbe 0x40460f
cmp dword [0x2c18e24], 0x292
mov eax, dword [0x2c18e28]
mov al, byte [eax + edi + 0xb2d3b]
mov ecx, dword [0x2c18be8]
mov byte [ecx + edi], al
jne 0x404606
push esi
push esi
push esi
call dword [sym.imp.KERNEL32.dll_OpenMutexA]
inc edi
cmp edi, dword [0x2c18e24]
jb 0x4045dc
xor edi, edi
mov eax, dword [0x2c18e24]
add eax, edi
cmp eax, 0x5e
jne 0x404638
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
push esi
push esi
push esi
push esi
call dword [sym.imp.KERNEL32.dll_VirtualProtect]
push esi
push esi
push esi
push esi
push esi
call dword [sym.imp.KERNEL32.dll_ReadConsoleW]
inc edi
cmp edi, 0x40c893
jl 0x404611
call fcn.004043cf
xor ecx, ecx
cmp ecx, 0x770e
jne 0x404655
call fcn.00404441
inc ecx
cmp ecx, 0x286b97d
jl 0x404648
push 0x7b
pop edi
cmp dword [0x2c18e24], 0x86
jne 0x404699
push 0x404034
call dword [sym.imp.KERNEL32.dll_GlobalAddAtomW]
push esi
push esi
push esi
call dword [sym.imp.KERNEL32.dll_FindFirstChangeNotificationA]
push esi
lea eax, [ebp - 0x580]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemWindowsDirectoryA]
push esi
push esi
push esi
push esi
call dword [sym.imp.GDI32.dll_GetCharWidthFloatW]
cmp dword [0x2c18e24], 0xf
jne 0x4046d2
push esi
push esi
call dword [sym.imp.KERNEL32.dll_AddVectoredExceptionHandler]
push esi
lea eax, [ebp - 0x580]
push eax
push 0x404040
call dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableA]
lea eax, [ebp - 0x60]
push eax
push esi
push esi
push esi
push esi
call dword [sym.imp.KERNEL32.dll_FindActCtxSectionStringW]
push esi
call dword [sym.imp.KERNEL32.dll_ReleaseActCtx]
dec edi
jne 0x404661
mov edi, dword [sym.imp.KERNEL32.dll_SetComputerNameA]
mov ebx, 0x184cc
cmp dword [0x2c18e24], 0x1833b
jne 0x40474d
push esi
lea eax, [ebp - 0x1c]
push eax
call dword [sym.imp.KERNEL32.dll_SetCriticalSectionSpinCount]
push esi
lea eax, [ebp - 4]
push eax
push esi
lea eax, [ebp - 0x580]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_WriteConsoleA]
push esi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
push 0x404050
call edi
push esi
push esi
call dword [sym.imp.KERNEL32.dll_Beep]
lea eax, [ebp - 0x980]
push eax
push esi
push esi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesExW]
push 0x404088
call edi
lea eax, [ebp - 0x180]
push eax
push esi
push esi
call dword [sym.imp.KERNEL32.dll_GetCPInfoExA]
push esi
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
dec ebx
jne 0x4046e0
call fcn.004041d8
call fcn.00404510
pop edi
pop esi
pop ebx
leave
ret