Function at 0x4d7660
Capabilities:
Check for time delay via gettickcount
Create directory
Get common file path
Get memory capacity
Get system information on windows
Identify system language via api
Print debug messages
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xde4
mov eax, dword [0x5c4008]
xor eax, esp
mov dword [esp + 0xde0], eax
push ebx
push esi
mov esi, ecx
mov ecx, 0x70a6a4
push edi
call fcn.0056b0a5
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
lea ecx, [esp + 0x230]
mov dword [0x5cdef0], eax
sub ecx, esi
nop
mov al, byte [esi]
lea esi, [esi + 1]
mov byte [ecx + esi - 1], al
test al, al
jne 0x4d76a0
cmp byte [esp + 0x230], al
jne 0x4d76cb
lea eax, [esp + 0x230]
push 0x3e8
push eax
call fcn.00556a8d
add esp, 8
lea edi, [esp + 0x230]
dec edi
mov al, byte [edi + 1]
lea edi, [edi + 1]
test al, al
jne 0x4d76d3
mov ax, word [0x5b100c]
mov word [edi], ax
lea eax, [esp + 0xc]
push eax
push 0x1a
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderLocation]
test eax, eax
je 0x4d772a
lea eax, [esp + 0xc]
push eax
push 5
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderLocation]
test eax, eax
je 0x4d772a
xor ecx, ecx
nop
mov al, byte [esp + ecx + 0x230]
lea ecx, [ecx + 1]
mov byte [esp + ecx + 0x617], al
test al, al
jne 0x4d7710
jmp 0x4d77e5
lea eax, [esp + 0x128]
push eax
push dword [esp + 0x10]
call dword [sym.imp.SHELL32.dll_SHGetPathFromIDListA]
test eax, eax
je 0x4d77a5
lea ecx, [esp + 0x128]
lea edx, [ecx + 1]
nop word [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4d7750
sub ecx, edx
cmp byte [esp + ecx + 0x127], 0x5c
je 0x4d7783
lea edi, [esp + 0x128]
dec edi
nop dword [eax + eax]
mov al, byte [edi + 1]
lea edi, [edi + 1]
test al, al
jne 0x4d7770
mov ax, word [0x5b100c]
mov word [edi], ax
push str.Polda_2_rem
lea eax, [esp + 0x12c]
push eax
lea eax, [esp + 0x620]
push str._s_s_
push eax
call fcn.004d74b0
add esp, 0x10
lea eax, [esp + 0xc8]
push eax
call dword [sym.imp.SHELL32.dll_SHGetMalloc]
mov eax, dword [esp + 0xc8]
push dword [esp + 0xc]
push eax
mov ecx, dword [eax]
mov esi, dword [ecx + 0x14]
mov ecx, esi
call dword [0x579378]
call esi
mov eax, dword [esp + 0xc8]
push eax
mov ecx, dword [eax]
mov esi, dword [ecx + 8]
mov ecx, esi
call dword [0x579378]
call esi
push 0x3e8
lea eax, [esp + 0x61c]
push eax
push 0x6e5798
call fcn.00555440
add esp, 0xc
mov byte [0x6e5b7f], 0
push 0x4ffec0
call dword [sym.imp.KERNEL32.dll_SetUnhandledExceptionFilter]
call fcn.004ffaf0
xor ecx, ecx
nop dword [eax + eax]
mov al, byte [esp + ecx + 0x618]
lea ecx, [ecx + 1]
mov byte [esp + ecx + 0x9ff], al
test al, al
jne 0x4d7820
mov al, byte [esp + 0xa00]
lea esi, [esp + 0xa00]
test al, al
je 0x4d786d
cmp al, 0x5c
je 0x4d784f
cmp al, 0x2f
jne 0x4d7865
lea eax, [esp + 0xa00]
mov byte [esi], 0
push eax
call fcn.00556aa9
add esp, 4
mov byte [esi], 0x5c
mov al, byte [esi + 1]
inc esi
test al, al
jne 0x4d7847
xor ecx, ecx
nop
mov al, byte [esp + ecx + 0x618]
lea ecx, [ecx + 1]
mov byte [ecx + 0x5cdf6f], al
test al, al
jne 0x4d7870
push 1
push str.Settings
call fcn.004dbe80
mov eax, dword [0x5cdef0]
xorps xmm0, xmm0
push 0x65
push eax
mov dword [esp + 0x50], 0
movlpd qword [esp + 0x5c], xmm0
movlpd qword [esp + 0x68], xmm0
movlpd qword [esp + 0x70], xmm0
movlpd qword [esp + 0x78], xmm0
mov dword [esp + 0x54], 0x23
mov dword [esp + 0x58], 0x4d7f00
mov dword [esp + 0x64], eax
call dword [sym.imp.USER32.dll_LoadIconA]
push 0x7f00
push dword [0x5cdef0]
mov dword [esp + 0x68], eax
call dword [sym.imp.USER32.dll_LoadCursorA]
push 0x65
push dword [0x5cdef0]
mov dword [esp + 0x6c], eax
mov dword [esp + 0x70], 6
mov dword [esp + 0x78], str.PSEngine_WindowClass
mov dword [esp + 0x50], 0x30
call dword [sym.imp.USER32.dll_LoadIconA]
mov dword [esp + 0x74], eax
lea eax, [esp + 0x48]
push eax
call dword [sym.imp.USER32.dll_RegisterClassExA]
test ax, ax
je 0x4d7ee0
mov eax, dword [0x6e48c8]
mov edx, 0x86000000
push 0
push dword [0x5cdef0]
test eax, eax
mov dword [0x5cd9f8], 0
push 0
push 0
push 0x258
push 0x320
push 0
push 0
mov ecx, 0x6000000
mov dword [0x5cd9fc], eax
cmovne ecx, edx
push ecx
push str.Polda_2_rem
push str.PSEngine_WindowClass
push 0
call dword [sym.imp.USER32.dll_CreateWindowExA]
mov dword [0x5cd9f8], eax
test eax, eax
jne 0x4d79ad
push 0x30
push str.ERROR
push str.Window_Creation_Error.
push eax
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xde0]
xor ecx, esp
call fcn.00551170
mov esp, ebp
pop ebp
ret
cmp dword [0x6e4538], 0
mov ebx, 1
mov eax, dword [0x6e48c8]
cmove eax, ebx
test eax, eax
mov dword [0x6e48c8], eax
setne cl
call fcn.004d7580
push dword [0x5cd9f8]
call dword [sym.imp.USER32.dll_SetForegroundWindow]
push dword [0x5cd9f8]
call dword [sym.imp.USER32.dll_SetFocus]
push ebx
call dword [sym.imp.USER32.dll_ShowCursor]
lea eax, [esp + 0xd8]
push eax
push dword [0x5cd9f8]
call dword [sym.imp.USER32.dll_GetWindowRect]
mov eax, dword [esp + 0xe0]
sub eax, dword [esp + 0xd8]
sub eax, dword [0x5cddec]
push dword [0x5cd9f8]
mov dword [0x5cdf60], eax
mov eax, dword [esp + 0xe8]
sub eax, dword [esp + 0xe0]
sub eax, dword [0x5cdde8]
mov dword [0x5cdf58], eax
call dword [sym.imp.USER32.dll_GetDC]
mov dword [0x5cf13c], eax
test eax, eax
jne 0x4d7a72
push 0x30
push str.ERROR
push str.Cant_Create_A_GL_Device_Context.
push eax
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xde0]
xor ecx, esp
call fcn.00551170
mov esp, ebp
pop ebp
ret
push 0x5cbfbc
push eax
call dword [sym.imp.GDI32.dll_ChoosePixelFormat]
test eax, eax
jne 0x4d7aaa
push 0x30
push str.ERROR
push str.Cant_Find_A_Suitable_PixelFormat.
push eax
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xde0]
xor ecx, esp
call fcn.00551170
mov esp, ebp
pop ebp
ret
push 0x5cbfbc
push eax
push dword [0x5cf13c]
call dword [sym.imp.GDI32.dll_SetPixelFormat]
test eax, eax
jne 0x4d7ae8
push 0x30
push str.ERROR
push str.Cant_Set_The_PixelFormat.
push eax
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xde0]
xor ecx, esp
call fcn.00551170
mov esp, ebp
pop ebp
ret
push dword [0x5cf13c]
call dword [sym.imp.OPENGL32.dll_wglCreateContext]
mov dword [0x5cf140], eax
test eax, eax
jne 0x4d7b25
push 0x30
push str.ERROR
push str.Cant_Create_A_GL_Rendering_Context.
push eax
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xde0]
xor ecx, esp
call fcn.00551170
mov esp, ebp
pop ebp
ret
push eax
push dword [0x5cf13c]
call dword [sym.imp.OPENGL32.dll_wglMakeCurrent]
test eax, eax
jne 0x4d7b5e
push 0x30
push str.ERROR
push str.Cant_Activate_The_GL_Rendering_Context.
push eax
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xde0]
xor ecx, esp
call fcn.00551170
mov esp, ebp
pop ebp
ret
call dword [sym.imp.KERNEL32.dll_GetUserDefaultUILanguage]
mov ecx, 0x3ff
and ax, cx
movzx ecx, ax
cmp ecx, 5
je 0x4d7b8f
cmp ecx, 0x1b
je 0x4d7b8f
cmp ecx, 7
mov eax, 0x5b1054
mov edx, 0x5b1058
cmovne eax, edx
mov dword [esp + 0x18], eax
jmp 0x4d7b97
mov dword [esp + 0x18], 0x5b1050
call fcn.005000d0
lea eax, [esp + 0xe8]
mov dword [esp + 0xe8], 0x40
push eax
call dword [sym.imp.KERNEL32.dll_GlobalMemoryStatusEx]
mov eax, dword [esp + 0xf0]
mov ecx, dword [esp + 0xf4]
shrd eax, ecx, 1
shr ecx, 1
jne 0x4d7be6
cmp eax, 0xbebc200
ja 0x4d7be6
test ecx, ecx
ja 0x4d7bf6
jb 0x4d7bdf
cmp eax, 0x8f0d180
jae 0x4d7bf6
mov eax, 0x8f0d180
jmp 0x4d7beb
mov eax, 0xbebc200
mov dword [esp + 0xcc], 0
mov dword [esp + 0x3c], eax
lea eax, [esp + 0xa4]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
mov eax, dword [esp + 0xb8]
mov dword [esp + 0x44], eax
lea eax, [esp + 0x230]
mov dword [esp + 0x10], eax
lea eax, [esp + 0x618]
mov dword [esp + 0x14], eax
mov eax, dword [0x5cdf60]
mov dword [esp + 0x20], eax
mov eax, dword [0x5cdf58]
push 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0x28], eax
call dword [sym.imp.USER32.dll_GetSystemMetrics]
push 1
mov dword [esp + 0x2c], eax
call dword [sym.imp.USER32.dll_GetSystemMetrics]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x38], 0
mov dword [esp + 0x30], 0x1e
mov dword [esp + 0x40], ebx
call dword [sym.imp.KERNEL32.dll_GetTickCount]
lea ecx, [esp + 0x10]
mov esi, eax
call fcn.004e89e0
cmp dword [0x6e4538], 0
jne 0x4d7d4c
call fcn.004d7500
mov ecx, dword [0x5cdf68]
add ecx, dword [0x5cddec]
mov eax, dword [0x5cdf64]
mov dword [0x6e4538], ecx
mov ecx, dword [0x5cdde8]
add eax, ecx
push 0
mov dword [0x6e45d0], eax
lea eax, [esp + 0xcc]
push eax
push 0
push 0x30
call dword [sym.imp.USER32.dll_SystemParametersInfoA]
test eax, eax
je 0x4d7d4c
mov edi, dword [esp + 0xd0]
mov ecx, dword [esp + 0xd4]
sub edi, dword [esp + 0xc8]
sub ecx, dword [esp + 0xcc]
cmp dword [0x6e4538], edi
jg 0x4d7d02
cmp dword [0x6e45d0], ecx
jle 0x4d7d4c
mov eax, edi
imul eax, dword [0x5cdf64]
cdq
idiv dword [0x5cdf68]
mov ebx, eax
cmp ebx, ecx
jle 0x4d7d2a
mov eax, ecx
imul eax, dword [0x5cdf68]
cdq
idiv dword [0x5cdf64]
mov edi, eax
sub edi, dword [0x5cddec]
cmp ebx, ecx
mov dword [0x6e4538], edi
cmovle ecx, ebx
mov ebx, 1
sub ecx, dword [0x5cdde8]
mov dword [0x6e45d0], ecx
cmp dword [0x6e48c8], 0
jne 0x4d7db8
lea eax, [esp + 0xc8]
push eax
call dword [sym.imp.USER32.dll_GetCursorPos]
test eax, eax
je 0x4d7db8
lea eax, [esp + 0xc8]
push eax
push dword [0x5cd9f8]
call dword [sym.imp.USER32.dll_ScreenToClient]
test eax, eax
je 0x4d7db8
mov eax, dword [esp + 0xc8]
cmp dword [esp + 0x20], eax
jg 0x4d7da1
mov ecx, dword [esp + 0xcc]
cmp dword [esp + 0x24], ecx
jg 0x4d7da1
test ecx, ecx
js 0x4d7da1
test eax, eax
jns 0x4d7db8
lea ecx, [esp + 0x94]
mov dword [esp + 0x94], 3
call fcn.004feb40
mov dword [0x5cde18], 0
push 0
push 0
push 0
push 0
lea eax, [esp + 0x88]
push eax
call dword [sym.imp.USER32.dll_PeekMessageA]
test eax, eax
je 0x4d7e10
push 0
push 0
push 0
lea eax, [esp + 0x84]
push eax
call dword [sym.imp.USER32.dll_GetMessageA]
test eax, eax
je 0x4d7eca
lea eax, [esp + 0x78]
push eax
call dword [sym.imp.USER32.dll_TranslateMessage]
lea eax, [esp + 0x78]
push eax
call dword [sym.imp.USER32.dll_DispatchMessageA]
jmp 0x4d7dc2
mov eax, dword [0x5cd9fc]
cmp eax, dword [0x6e48c8]
je 0x4d7e4a
test eax, eax
jne 0x4d7e34
xor cl, cl
call fcn.004d7580
mov dword [0x6e48c8], 0
jmp 0x4d7dc2
mov cl, 1
mov dword [0x6e48c8], 1
call fcn.004d7580
jmp 0x4d7dc2
mov eax, dword [0x5cde1c]
cmp eax, 1
je 0x4d7dc2
cmp eax, 2
cmove eax, ebx
cmp byte [0x5c8738], 0
mov dword [0x5cde1c], eax
je 0x4d7e84
push 0x5cde20
push dword [0x5cd9f8]
mov byte [0x5c8738], 0
call dword [sym.imp.USER32.dll_SetWindowTextW]
push 5
call dword [sym.imp.KERNEL32.dll_Sleep]
cmp dword [0x5cde18], 0
jne 0x4d7dc2
call fcn.004e8fd0
cmp esi, 0xffffffff
je 0x4d7ebe
call dword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, esi
push eax
push str.INIT:_i
push 0
call fcn.004e9620
add esp, 0xc
or esi, 0xffffffff
mov byte [0x6d7d3d], 1
jmp 0x4d7dc2
push str.Exiting_O.K.
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
push 0x5b0fe0
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
mov ecx, dword [esp + 0xdec]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.00551170
mov esp, ebp
pop ebp
ret