Function at 0x4e2880
Capabilities:
Create thread
Link many functions at runtime

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x18
mov edi, dword [ebp + 8]
lea eax, [esp + 8]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
test eax, eax
je 0x4e2ab6
push str.User32
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov esi, eax
test eax, eax
mov dword [0x5c5240], eax
je 0x4e2b1a
push str.GetMessageA
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
mov dword [0x5c5244], eax
jne 0x4e28ff
push str.GetMessageAA
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
mov dword [0x5c5244], eax
jne 0x4e28ff
push str.GetMessageAW
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
mov dword [0x5c5244], eax
je 0x4e2b1a
mov esi, dword [0x5c5240]
push str.PeekMessageA
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
mov dword [0x5c5248], eax
jne 0x4e2948
push str.PeekMessageAA
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
mov dword [0x5c5248], eax
jne 0x4e2948
push str.PeekMessageAW
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
mov dword [0x5c5248], eax
je 0x4e2b1a
mov esi, dword [0x5c5240]
push str.PostThreadMessageA
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
mov dword [0x5c5224], eax
jne 0x4e2991
push str.PostThreadMessageAA
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
mov dword [0x5c5224], eax
jne 0x4e2991
push str.PostThreadMessageAW
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
mov dword [0x5c5224], eax
je 0x4e2b1a
mov ebx, dword [esp + 0xc]
mov esi, dword [esp + 8]
mov dword [0x5c5234], ebx
mov dword [0x5c5230], esi
push ebx
push esi
push 0xe8
push 0xd4a51000
call fcn.004f1bc0
add esp, 0x10
mov dword [0x5c523c], edx
mov dword [0x5c5238], eax
push ebx
push esi
push str.hires_timer_available__Frequency:__llu_Hz_
push str.windows_init_clock
push 4
push 0
call fcn.004d3fa0
add esp, 0x18
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
lea ecx, [esp + 0x10]
lea edx, [esp + 4]
push ecx
push edx
push eax
call dword [sym.imp.KERNEL32.dll_GetProcessAffinityMask]
test eax, eax
je 0x4e2b31
mov eax, dword [esp + 4]
test eax, eax
je 0x4e2b31
mov ecx, 0xffffffff
nop dword [eax]
inc ecx
mov edx, 1
shl edx, cl
bt eax, ecx
jae 0x4e2a10
mov dword [esp + 4], edx
push ecx
push str.timer_thread_will_run_on_core__d
push str.windows_init_clock
push 4
push 0
call fcn.004d3fa0
add esp, 0x14
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateEventA]
mov esi, eax
test eax, eax
je 0x4e2b47
push 0x5c5228
push 0
push esi
push 0x4e2d10
push 0
push 0
call dword [sym.imp.msvcrt.dll__beginthreadex]
add esp, 0x18
test eax, eax
mov dword [0x5c5220], eax
je 0x4e2b6d
push dword [esp + 4]
push eax
call dword [sym.imp.KERNEL32.dll_SetThreadAffinityMask]
test eax, eax
jne 0x4e2a9b
push str.unable_to_set_timer_thread_affinity__timer_discrepancies_may_arise
push str.windows_init_clock
push 2
push edi
call fcn.004d3fa0
add esp, 0x10
push 0xffffffffffffffff
push esi
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
test eax, eax
je 0x4e2b9b
push str.failed_to_wait_for_timer_thread_to_become_ready___aborting
jmp 0x4e2b72
push str.no_hires_timer_available_on_this_platform
push str.windows_init_clock
push 4
push 0
call fcn.004d3fa0
add esp, 0x10
mov dword [0x5c5234], 0
mov dword [0x5c5230], 0
mov dword [0x5c523c], 0
mov dword [0x5c5238], 0
cmp dword [0x5c5214], 0
je 0x4e2baf
push str.hash_table_already_allocated
push str.htab_create
push 1
push edi
call fcn.004d3fa0
add esp, 0x10
xor eax, eax
jmp 0x4e2b93
push str.could_not_resolve_DLL_functions
push str.windows_init_clock
push 1
push edi
call fcn.004d3fa0
add esp, 0x10
jmp 0x4e2b89
push 0
call fcn.004e2040
add esp, 4
push 0x5c5110
push str.could_not_get_process_affinity:__s
jmp 0x4e2b5b
push 0
call fcn.004e2040
add esp, 4
push 0x5c5110
push str.could_not_create_event:__s
push str.windows_init_clock
push 1
push edi
call fcn.004d3fa0
add esp, 0x14
jmp 0x4e2b89
push str.unable_to_create_timer_thread___aborting
push str.windows_init_clock
push 1
push edi
call fcn.004d3fa0
add esp, 0x10
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
call fcn.004e2c70
mov eax, 0xfffffff5
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [0x5c5214], 0
jne 0x4e2b01
push 0x5c521c
call fcn.004da720
add esp, 4
mov eax, 0x3fd
nop word cs:[eax + eax]
nop dword [eax + eax]
mov ecx, eax
mov esi, 3
cmp eax, 0xa
jb 0x4e2c06
mov esi, 3
nop word cs:[eax + eax]
nop dword [eax + eax]
xor edx, edx
mov eax, ecx
div esi
test edx, edx
je 0x4e2c06
add esi, 2
mov eax, esi
imul eax, esi
cmp eax, ecx
jb 0x4e2bf0
xor edx, edx
mov eax, ecx
div esi
lea eax, [ecx + 2]
test edx, edx
je 0x4e2bd0
mov dword [0x5c5210], ecx
push ecx
push str.using__lu_entries_hash_table
push str.htab_create
push 4
push 0
call fcn.004d3fa0
add esp, 0x14
mov eax, dword [0x5c5210]
mov dword [0x5c5218], 0
inc eax
push 8
push eax
call sub.msvcrt.dll_calloc
add esp, 8
mov ecx, eax
mov dword [0x5c5214], eax
xor eax, eax
test ecx, ecx
jne 0x4e2b93
push str.could_not_allocate_space_for_hash_table
push str.htab_create
jmp 0x4e2b24