Kernel.inc

Переключить прокрутку окна
Загрузить этот исходный код

;
  ; Реализация среды исполнения языка программирования
  ; Объектно-ориентированный продвинутый векторный транслятор
  ;
  ; Copyright © 2021, 2024, 2026 Малик Разработчик
  ;
  ; Это свободная программа: вы можете перераспространять ее и/или изменять
  ; ее на условиях Меньшей Стандартной общественной лицензии GNU в том виде,
  ; в каком она была опубликована Фондом свободного программного обеспечения;
  ; либо версии 3 лицензии, либо (по вашему выбору) любой более поздней версии.
  ;
  ; Эта программа распространяется в надежде, что она будет полезной,
  ; но БЕЗО ВСЯКИХ ГАРАНТИЙ; даже без неявной гарантии ТОВАРНОГО ВИДА
  ; или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННЫХ ЦЕЛЕЙ. Подробнее см. в Меньшей Стандартной
  ; общественной лицензии GNU.
  ;
  ; Вы должны были получить копию Меньшей Стандартной общественной лицензии GNU
  ; вместе с этой программой. Если это не так, см.
  ; <https://www.gnu.org/licenses/>.
;

; <fold platform.dependent.mswindows.kernel.Kernel — родной код>
    ; общие функции

    if(used platform.dependent.mswindows.kernel.Kernel$getSystemInfo$long$) ; <fold >
                    fast        platform.dependent.mswindows.kernel.Kernel$getSystemInfo$long$, \
                                lpSystemInfo, long
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.lpSystemInfo]
                    call        qword [impr$GetSystemInfo]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$closeHandle$long$) ; <fold returns boolean>
                    fast        platform.dependent.mswindows.kernel.Kernel$closeHandle$long$, \
                                hObject, long
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.hObject]
                    call        qword [impr$CloseHandle]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$setErrorMode$int$) ; <fold returns int>
                    fast        platform.dependent.mswindows.kernel.Kernel$setErrorMode$int$, \
                                uMode, int
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01d, [.uMode]
                    call        qword [impr$SetErrorMode]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$getLastError$) ; <fold returns int>
                    proc        platform.dependent.mswindows.kernel.Kernel$getLastError$
                    mov         r00q, [gs: $30]
                    mov         r00d, [r00+$0068]
                    ret
                    end_proc
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$getLastStatus$) ; <fold returns int>
                    proc        platform.dependent.mswindows.kernel.Kernel$getLastStatus$
                    mov         r00q, [gs: $30]
                    mov         r00d, [r00+$1250]
                    ret
                    end_proc
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$createToolHelp32Snapshot$int$int$) ; <fold returns long>
                    fast        platform.dependent.mswindows.kernel.Kernel$createToolHelp32Snapshot$int$int$, \
                                dwFlags, int, \
                                th32ProcessId, int
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01d, [.dwFlags]
                    mov         r02d, [.th32ProcessId]
                    call        qword [impr$CreateToolhelp32Snapshot]
                    fleave
    end if ; </fold>

    ; время

    if(used platform.dependent.mswindows.kernel.Kernel$getSystemTime$long$) ; <fold >
                    fast        platform.dependent.mswindows.kernel.Kernel$getSystemTime$long$, \
                                lpSystemTime, long
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.lpSystemTime]
                    call        qword [impr$GetSystemTime]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$getTimeZoneInfo$long$) ; <fold returns int>
                    fast        platform.dependent.mswindows.kernel.Kernel$getTimeZoneInfo$long$, \
                                lpTimeZoneInfo, long
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.lpTimeZoneInfo]
                    call        qword [impr$GetTimeZoneInformation]
                    fleave
    end if ; </fold>

    ; память

    if(used platform.dependent.mswindows.kernel.Kernel$virtualFree$long$long$int$) ; <fold returns boolean>
                    fast        platform.dependent.mswindows.kernel.Kernel$virtualFree$long$long$int$, \
                                lpAddress, long, \
                                dwSize, long, \
                                dwFreeType, int
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.lpAddress]
                    mov         r02q, [.dwSize]
                    mov         r08d, [.dwFreeType]
                    call        qword [impr$VirtualFree]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$virtualProtect$long$long$int$) ; <fold returns int2>
                    fast        platform.dependent.mswindows.kernel.Kernel$virtualProtect$long$long$int$, \
                                lpAddress, long, \
                                dwSize, long, \
                                flNewProtect, int
                    floc        lpflOldProtect, int
                    fenter
                    mov         qword [.lpflOldProtect], $00
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.lpAddress]
                    mov         r02q, [.dwSize]
                    mov         r08d, [.flNewProtect]
                    lea         r09q, [.lpflOldProtect]
                    call        qword [impr$VirtualProtect]
                    vmovd       xmm0, r00d
                    vmovd       xmm1, [.lpflOldProtect]
                    vpslldq     xmm1, xmm1, $04
                    vpor        xmm0, xmm0, xmm1
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$virtualAlloc$long$long$int$int$) ; <fold returns long>
                    fast        platform.dependent.mswindows.kernel.Kernel$virtualAlloc$long$long$int$int$, \
                                lpAddress, long, \
                                dwSize, long, \
                                flAllocationType, int, \
                                flProtect, int
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.lpAddress]
                    mov         r02q, [.dwSize]
                    mov         r08d, [.flAllocationType]
                    mov         r09d, [.flProtect]
                    call        qword [impr$VirtualAlloc]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$virtualQuery$long$long$long$) ; <fold returns long>
                    fast        platform.dependent.mswindows.kernel.Kernel$virtualQuery$long$long$long$, \
                                lpAddress, long, \
                                lpBuffer, long, \
                                dwLength, long
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.lpAddress]
                    mov         r02q, [.lpBuffer]
                    mov         r08q, [.dwLength]
                    call        qword [impr$VirtualQuery]
                    fleave
    end if ; </fold>

    ; мутекс, критическая секция

    if(used platform.dependent.mswindows.kernel.Kernel$initializeCriticalSection$long$) ; <fold >
                    fast        platform.dependent.mswindows.kernel.Kernel$initializeCriticalSection$long$, \
                                lpCriticalSection, long
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.lpCriticalSection]
                    call        qword [impr$InitializeCriticalSection]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$deleteCriticalSection$long$) ; <fold >
                    fast        platform.dependent.mswindows.kernel.Kernel$deleteCriticalSection$long$, \
                                lpCriticalSection, long
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.lpCriticalSection]
                    call        qword [impr$DeleteCriticalSection]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$enterCriticalSection$long$) ; <fold >
                    fast        platform.dependent.mswindows.kernel.Kernel$enterCriticalSection$long$, \
                                lpCriticalSection, long
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.lpCriticalSection]
                    call        qword [impr$EnterCriticalSection]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$leaveCriticalSection$long$) ; <fold >
                    fast        platform.dependent.mswindows.kernel.Kernel$leaveCriticalSection$long$, \
                                lpCriticalSection, long
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.lpCriticalSection]
                    call        qword [impr$LeaveCriticalSection]
                    fleave
    end if ; </fold>

    ; событие

    if(used platform.dependent.mswindows.kernel.Kernel$setEvent$long$) ; <fold returns boolean>
                    fast        platform.dependent.mswindows.kernel.Kernel$setEvent$long$, \
                                hEvent, long
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.hEvent]
                    call        qword [impr$SetEvent]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$resetEvent$long$) ; <fold returns boolean>
                    fast        platform.dependent.mswindows.kernel.Kernel$resetEvent$long$, \
                                hEvent, long
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.hEvent]
                    call        qword [impr$ResetEvent]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$createEvent$long$boolean$boolean$long$) ; <fold returns long>
                    fast        platform.dependent.mswindows.kernel.Kernel$createEvent$long$boolean$boolean$long$, \
                                lpEventAttributes, long, \
                                bManualReset, boolean, \
                                bInitialState, boolean, \
                                lpName, long
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.lpEventAttributes]
                    mov         r02d, [.bManualReset]
                    mov         r08d, [.bInitialState]
                    mov         r09q, [.lpName]
                    call        qword [impr$CreateEvent]
                    fleave
    end if ; </fold>

    ; поток исполнения

    if(used platform.dependent.mswindows.kernel.Kernel$switchToThread$) ; <fold returns boolean>
                    fast        platform.dependent.mswindows.kernel.Kernel$switchToThread$
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    call        qword [impr$SwitchToThread]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$setThreadPriority$long$int$) ; <fold returns boolean>
                    fast        platform.dependent.mswindows.kernel.Kernel$setThreadPriority$long$int$, \
                                hThread, long, \
                                nPriority, int
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.hThread]
                    mov         r02d, [.nPriority]
                    call        qword [impr$SetThreadPriority]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$thread32First$long$long$) ; <fold returns boolean>
                    fast        platform.dependent.mswindows.kernel.Kernel$thread32First$long$long$, \
                                hSnapshot, long, \
                                lpThreadEntry, long
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.hSnapshot]
                    mov         r02q, [.lpThreadEntry]
                    call        qword [impr$Thread32First]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$thread32Next$long$long$) ; <fold returns boolean>
                    fast        platform.dependent.mswindows.kernel.Kernel$thread32Next$long$long$, \
                                hSnapshot, long, \
                                lpThreadEntry, long
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.hSnapshot]
                    mov         r02q, [.lpThreadEntry]
                    call        qword [impr$Thread32Next]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$setThreadDescription$long$long$) ; <fold returns int>
                    fast        platform.dependent.mswindows.kernel.Kernel$setThreadDescription$long$long$, \
                                hThread, long, \
                                lpDescription, long
                    floc        wideDescription, long4
                    fenter
                    mov         r00q, [.lpDescription]
                    vmovdqu     xmm0, [r00+$00]
                    vpmovzxbw   ymm0, xmm0
                    vmovdqu     yword [.wideDescription], ymm0
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.hThread]
                    lea         r02q, [.wideDescription]
                    call        qword [impr$SetThreadDescription]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$getCurrentThreadId$) ; <fold returns int>
                    fast        platform.dependent.mswindows.kernel.Kernel$getCurrentThreadId$
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    call        qword [impr$GetCurrentThreadId]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$getThreadPriority$long$) ; <fold returns int>
                    fast        platform.dependent.mswindows.kernel.Kernel$getThreadPriority$long$, \
                                hThread, long
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.hThread]
                    call        qword [impr$GetThreadPriority]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$getThreadDescription$long$long$) ; <fold returns int>
                    fast        platform.dependent.mswindows.kernel.Kernel$getThreadDescription$long$long$, \
                                hThread, long, \
                                lpDescription, long
                    floc        length, int, \
                                ptrDescription, long, \
                                wideDescription, long4
                    fenter
                    vpxor       ymm0, ymm0, ymm0
                    vmovdqa     xword [.length], xmm0
                    vmovdqa     xword [.ptrDescription], xmm0
                    vmovdqu     yword [.wideDescription], ymm0
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.hThread]
                    lea         r02q, [.ptrDescription]
                    call        qword [impr$GetThreadDescription]
                    test        r00d, $80000000
                    jnz         .L.0002
                    mov         r08q, [.ptrDescription]
                    test        r08q, r08q
                    jz          .L.0002
                    mov         r00d, $00000000
                    mov         r01d, $0000000f
        .L.0000:    movzx       r02d, word  [r08+r00*2+$00]
                    test        r02d, r02d
                    jz          .L.0001
                    mov         word  [.wideDescription+r00*2+$00], r02w
                    lea         r00d, [r00d+$01]
                    loop        .L.0000
        .L.0001:    mov         dword [.length], r00d
                    mov         r01q, r08q
                    call        qword [impr$LocalFree]
        .L.0002:    mov         r00d, [.length]
                    mov         r01q, [.lpDescription]
                    vmovdqa     xmm0, [.wideDescription+$00]
                    vmovdqa     xmm1, [.wideDescription+$10]
                    vpand       xmm0, xmm0, [cons$short8.$00ff]
                    vpand       xmm1, xmm1, [cons$short8.$00ff]
                    vpackuswb   xmm0, xmm0, xmm1
                    vmovdqu     xword [r01+$00], xmm0
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$waitForSingleObject$long$int$) ; <fold returns int>
                    fast        platform.dependent.mswindows.kernel.Kernel$waitForSingleObject$long$int$, \
                                hHandle, long, \
                                dwMilliseconds, int
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.hHandle]
                    mov         r02d, [.dwMilliseconds]
                    call        qword [impr$WaitForSingleObject]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$getExitCodeThread$long$) ; <fold returns int2>
                    fast        platform.dependent.mswindows.kernel.Kernel$getExitCodeThread$long$, \
                                hThread, long
                    floc        lpExitCode, int
                    fenter
                    mov         qword [.lpExitCode], $00
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.hThread]
                    lea         r02q, [.lpExitCode]
                    call        qword [impr$GetExitCodeThread]
                    vmovd       xmm0, r00d
                    vmovd       xmm1, [.lpExitCode]
                    vpslldq     xmm1, xmm1, $04
                    vpor        xmm0, xmm0, xmm1
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$openThread$int$boolean$int$) ; <fold returns long>
                    fast        platform.dependent.mswindows.kernel.Kernel$openThread$int$boolean$int$, \
                                dwDesiredAccess, int, \
                                bInheritHandle, boolean, \
                                dwThreadId, int
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01d, [.dwDesiredAccess]
                    mov         r02d, [.bInheritHandle]
                    mov         r08d, [.dwThreadId]
                    call        qword [impr$OpenThread]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$createThread$long$long$long$avt.lang.Runnable$int$) ; <fold returns long2>
                    fast        platform.dependent.mswindows.kernel.Kernel$createThread$long$long$long$avt.lang.Runnable$int$, \
                                lpThreadAttributes, long, \
                                dwStackSize, long, \
                                lpStartAddress, long, \
                                lpParameter, avt.lang.Runnable, \
                                dwCreationFlags, int
                    floc        lpThreadId, int
                    fenter
                    mov         qword [.lpThreadId], $00
                    cld
                    lea         rsp,  [rsp-$30]
                    mov         r01q, [.lpThreadAttributes]
                    mov         r02q, [.dwStackSize]
                    mov         r08q, [.lpStartAddress]
                    mov         r09q, [.lpParameter]
                    mov         r00d, [.dwCreationFlags]
                    mov         qword [rsp+$20], r00q
                    lea         r00q, [.lpThreadId]
                    mov         qword [rsp+$28], r00q
                    call        qword [impr$CreateThread]
                    vmovq       xmm0, r00q
                    vmovq       xmm1, [.lpThreadId]
                    vpslldq     xmm1, xmm1, $08
                    vpor        xmm0, xmm0, xmm1
                    mov         r00q, [.lpParameter]
                    tstdecrcoth r00q
                    fcltag_x    lpParameter
                    fleave
    end if ; </fold>

    ; процесс

    if(used platform.dependent.mswindows.kernel.Kernel$exitProcess$int$) ; <fold >
                    fast        platform.dependent.mswindows.kernel.Kernel$exitProcess$int$, \
                                uExitCode, int
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01d, [.uExitCode]
                    call        qword [impr$ExitProcess]
                    end_proc
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$setCurrentDirectory$long$) ; <fold returns boolean>
                    fast        platform.dependent.mswindows.kernel.Kernel$setCurrentDirectory$long$, \
                                lpPathName, long
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.lpPathName]
                    call        qword [impr$SetCurrentDirectory]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$setPriorityClass$long$int$) ; <fold returns boolean>
                    fast        platform.dependent.mswindows.kernel.Kernel$setPriorityClass$long$int$, \
                                hProcess, long, \
                                dwPriorityClass, int
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.hProcess]
                    mov         r02d, [.dwPriorityClass]
                    call        qword [impr$SetPriorityClass]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$setHandleInfo$long$int$int$) ; <fold returns boolean>
                    fast        platform.dependent.mswindows.kernel.Kernel$setHandleInfo$long$int$int$, \
                                hObject, long, \
                                dwMask, int, \
                                dwFlags, int
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.hObject]
                    mov         r02d, [.dwMask]
                    mov         r08d, [.dwFlags]
                    call        qword [impr$SetHandleInformation]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$setEnvironmentStrings$long$) ; <fold returns boolean>
                    fast        platform.dependent.mswindows.kernel.Kernel$setEnvironmentStrings$long$, \
                                newEnvironment, long
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.newEnvironment]
                    call        qword [impr$SetEnvironmentStrings]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$setEnvironmentVariable$long$long$) ; <fold returns boolean>
                    fast        platform.dependent.mswindows.kernel.Kernel$setEnvironmentVariable$long$long$, \
                                lpName, long, \
                                lpValue, long
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.lpName]
                    mov         r02q, [.lpValue]
                    call        qword [impr$SetEnvironmentVariable]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$freeEnvironmentStrings$long$) ; <fold returns boolean>
                    fast        platform.dependent.mswindows.kernel.Kernel$freeEnvironmentStrings$long$, \
                                lpEnv, long
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.lpEnv]
                    call        qword [impr$FreeEnvironmentStrings]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$process32First$long$long$) ; <fold returns boolean>
                    fast        platform.dependent.mswindows.kernel.Kernel$process32First$long$long$, \
                                hSnapshot, long, \
                                lpProcessEntry, long
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.hSnapshot]
                    mov         r02q, [.lpProcessEntry]
                    call        qword [impr$Process32First]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$process32Next$long$long$) ; <fold returns boolean>
                    fast        platform.dependent.mswindows.kernel.Kernel$process32Next$long$long$, \
                                hSnapshot, long, \
                                lpProcessEntry, long
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.hSnapshot]
                    mov         r02q, [.lpProcessEntry]
                    call        qword [impr$Process32Next]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$createProcess$long$long$long$long$boolean$int$long$long$long$long$) ; <fold returns boolean>
                    fast        platform.dependent.mswindows.kernel.Kernel$createProcess$long$long$long$long$boolean$int$long$long$long$long$, \
                                lpApplicationName, long, \
                                lpCommandLine, long, \
                                lpProcessAttributes, long, \
                                lpThreadAttributes, long, \
                                bInheritHandles, boolean, \
                                dwCreationFlags, int, \
                                lpEnvironment, long, \
                                lpCurrentDirectory, long, \
                                lpStartupInfo, long, \
                                lpProcessInfo, long
                    fenter
                    cld
                    lea         rsp,  [rsp-$50]
                    mov         r01q, [.lpApplicationName]
                    mov         r02q, [.lpCommandLine]
                    mov         r08q, [.lpProcessAttributes]
                    mov         r09q, [.lpThreadAttributes]
                    mov         r00d, [.bInheritHandles]
                    mov         qword [rsp+$20], r00q
                    mov         r00d, [.dwCreationFlags]
                    mov         qword [rsp+$28], r00q
                    mov         r00q, [.lpEnvironment]
                    mov         qword [rsp+$30], r00q
                    mov         r00q, [.lpCurrentDirectory]
                    mov         qword [rsp+$38], r00q
                    mov         r00q, [.lpStartupInfo]
                    mov         qword [rsp+$40], r00q
                    mov         r00q, [.lpProcessInfo]
                    mov         qword [rsp+$48], r00q
                    call        qword [impr$CreateProcess]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$getConsoleInputCP$) ; <fold returns int>
                    fast        platform.dependent.mswindows.kernel.Kernel$getConsoleInputCP$
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    call        qword [impr$GetConsoleInputCP]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$getConsoleOutputCP$) ; <fold returns int>
                    fast        platform.dependent.mswindows.kernel.Kernel$getConsoleOutputCP$
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    call        qword [impr$GetConsoleOutputCP]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$getCurrentProcessId$) ; <fold returns int>
                    fast        platform.dependent.mswindows.kernel.Kernel$getCurrentProcessId$
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    call        qword [impr$GetCurrentProcessId]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$getCurrentDirectory$int$long$) ; <fold returns int>
                    fast        platform.dependent.mswindows.kernel.Kernel$getCurrentDirectory$int$long$, \
                                nBufferLength, int, \
                                lpBuffer, long
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01d, [.nBufferLength]
                    mov         r02q, [.lpBuffer]
                    call        qword [impr$GetCurrentDirectory]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$getPriorityClass$long$) ; <fold returns int>
                    fast        platform.dependent.mswindows.kernel.Kernel$getPriorityClass$long$, \
                                hProcess, long
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.hProcess]
                    call        qword [impr$GetPriorityClass]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$getEnvironmentVariable$long$long$int$) ; <fold returns int>
                    fast        platform.dependent.mswindows.kernel.Kernel$getEnvironmentVariable$long$long$int$, \
                                lpName, long, \
                                lpBuffer, long, \
                                nSize, int
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.lpName]
                    mov         r02q, [.lpBuffer]
                    mov         r08d, [.nSize]
                    call        qword [impr$GetEnvironmentVariable]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$getExitCodeProcess$long$) ; <fold returns int2>
                    fast        platform.dependent.mswindows.kernel.Kernel$getExitCodeProcess$long$, \
                                hProcess, long
                    floc        exitCode, int
                    fenter
                    mov         qword [.exitCode], $00
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.hProcess]
                    lea         r02q, [.exitCode]
                    call        qword [impr$GetExitCodeProcess]
                    vmovd       xmm0, r00d
                    vmovd       xmm1, [.exitCode]
                    vpslldq     xmm1, xmm1, $04
                    vpor        xmm0, xmm0, xmm1
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$getCurrentProcess$) ; <fold returns long>
                    fast        platform.dependent.mswindows.kernel.Kernel$getCurrentProcess$
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    call        qword [impr$GetCurrentProcess]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$getStdHandle$int$) ; <fold returns long>
                    fast        platform.dependent.mswindows.kernel.Kernel$getStdHandle$int$, \
                                nStdHandle, int
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01d, [.nStdHandle]
                    call        qword [impr$GetStdHandle]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$openProcess$int$boolean$int$) ; <fold returns long>
                    fast        platform.dependent.mswindows.kernel.Kernel$openProcess$int$boolean$int$, \
                                dwDesiredAccess, int, \
                                bInheritHandle, boolean, \
                                dwProcessId, int
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01d, [.dwDesiredAccess]
                    mov         r02d, [.bInheritHandle]
                    mov         r08d, [.dwProcessId]
                    call        qword [impr$OpenProcess]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$getCommandLine$) ; <fold returns long2>
                    fast        platform.dependent.mswindows.kernel.Kernel$getCommandLine$
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    call        qword [impr$GetCommandLine]
                    savetbp
                    lea         r02q, [r00+$00]
                    lea         r07q, [r00+$00]
                    xor         r00d, r00d
                    mov         r01d, avt.lang.Int$MAX_VALUE
                    cld
                    repne scasw
                    lea         r00q, [r07-$02]
                    sub         r00q, r02q
                    sar         r00q, $01
                    rstortbp
                    vmovq       xmm0, r02q
                    vmovq       xmm1, r00q
                    vpslldq     xmm1, xmm1, $08
                    vpor        xmm0, xmm0, xmm1
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$getEnvironmentStrings$) ; <fold returns long2>
                    fast        platform.dependent.mswindows.kernel.Kernel$getEnvironmentStrings$
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    call        qword [impr$GetEnvironmentStrings]
                    lea         r02q, [r00+$00]
                    test        r00q, r00q
                    jz          .L.0002
                    savetbp
                    lea         r07q, [r00+$00]
                    xor         r00d, r00d
                    mov         r01d, avt.lang.Int$MAX_VALUE
                    cld
                    scasw
                    je          .L.0001
        .L.0000:    repne scasw
                    scasw
                    jne         .L.0000
                    lea         r00q, [r07-$02]
                    sub         r00q, r02q
                    sar         r00q, $01
        .L.0001:    rstortbp
        .L.0002:    vmovq       xmm0, r02q
                    vmovq       xmm1, r00q
                    vpslldq     xmm1, xmm1, $08
                    vpor        xmm0, xmm0, xmm1
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$createPipe$long$int$) ; <fold returns long2>
                    fast        platform.dependent.mswindows.kernel.Kernel$createPipe$long$int$, \
                                lpPipeAttributes, long, \
                                nSize, int
                    floc        result, long2
                    fenter
                    vpxor       xmm0, xmm0, xmm0
                    vmovdqa     xword [.result], xmm0
                    cld
                    lea         rsp,  [rsp-$20]
                    lea         r01q, [.result+$00]
                    lea         r02q, [.result+$08]
                    mov         r08q, [.lpPipeAttributes]
                    mov         r09d, [.nSize]
                    call        qword [impr$CreatePipe]
                    test        r00d, r00d
                    jnz         .L.0000
                    vpxor       xmm0, xmm0, xmm0
                    freturn
        .L.0000:    vmovdqa     xmm0, [.result]
                    fleave
    end if ; </fold>

    ; исполняемые модули

    if(used platform.dependent.mswindows.kernel.Kernel$getModuleFileName$long$long$int$) ; <fold returns int>
                    fast        platform.dependent.mswindows.kernel.Kernel$getModuleFileName$long$long$int$, \
                                hModule, long, \
                                lpFileName, long, \
                                nSize, int
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.hModule]
                    mov         r02q, [.lpFileName]
                    mov         r08d, [.nSize]
                    call        qword [impr$GetModuleFileName]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$getModuleFileNameEx$long$long$long$int$) ; <fold returns int>
                    fast        platform.dependent.mswindows.kernel.Kernel$getModuleFileNameEx$long$long$long$int$, \
                                hProcess, long, \
                                hModule, long, \
                                lpFileName, long, \
                                nSize, int
                    floc        functionName, long4, \
                                functionModule, long, \
                                functionPointer, long
                    fenter
                    lea         r12q, [cons$s]
                    mov         r01d, platform.dependent.mswindows.kernel.Kernel$funcGetModuleFileNameExW
                    mov         r01d, [r12+r01*4+$00]
                    lea         r01q, [r12+r01*1+$02]
                    vmovdqu     xmm0, [r01+$00]
                    vmovdqu     xmm1, [r01+$20]
                    vmovdqu     xmm2, [r01+$10]
                    vmovdqu     xmm3, [r01+$30]
                    vpackuswb   xmm0, xmm0, xmm2
                    vpackuswb   xmm1, xmm1, xmm3
                    vmovdqa     xword [.functionName+$00], xmm0
                    vmovdqa     xword [.functionName+$10], xmm1
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01d, platform.dependent.mswindows.kernel.Kernel$libKERNEL32
                    mov         r01d, [r12+r01*4+$00]
                    lea         r01q, [r12+r01*1+$02]
                    call        qword [impr$GetModuleHandle]
                    lea         r01q, [r00+$00]
                    lea         r02q, [.functionName]
                    call        qword [impr$GetProcAddress]
                    test        r00q, r00q
                    jnz         .L.0002
                    mov         r01d, platform.dependent.mswindows.kernel.Kernel$libPSAPI
                    mov         r01d, [r12+r01*4+$00]
                    lea         r01q, [r12+r01*1+$02]
                    call        qword [impr$GetModuleHandle]
                    test        r00q, r00q
                    jnz         .L.0000
                    mov         r01d, platform.dependent.mswindows.kernel.Kernel$libPSAPI
                    mov         r01d, [r12+r01*4+$00]
                    lea         r01q, [r12+r01*1+$02]
                    call        qword [impr$LoadLibrary]
                    test        r00q, r00q
                    jz          .L.0001
        .L.0000:    lea         r01q, [r00+$00]
                    lea         r02q, [.functionName]
                    call        qword [impr$GetProcAddress]
                    test        r00q, r00q
                    jnz         .L.0002
        .L.0001:    xor         r00d, r00d
                    freturn
        .L.0002:    mov         r01q, [.hProcess]
                    mov         r02q, [.hModule]
                    mov         r08q, [.lpFileName]
                    mov         r09d, [.nSize]
                    call        r00q
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$getModuleHandle$long$) ; <fold returns long>
                    fast        platform.dependent.mswindows.kernel.Kernel$getModuleHandle$long$, \
                                lpModuleName, long
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.lpModuleName]
                    call        qword [impr$GetModuleHandle]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$getProcAddress$long$long$) ; <fold returns long>
                    fast        platform.dependent.mswindows.kernel.Kernel$getProcAddress$long$long$, \
                                hModule, long, \
                                lpProcName, long
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.hModule]
                    mov         r02q, [.lpProcName]
                    call        qword [impr$GetProcAddress]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$loadLibrary$long$) ; <fold returns long>
                    fast        platform.dependent.mswindows.kernel.Kernel$loadLibrary$long$, \
                                lpLibFileName, long
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.lpLibFileName]
                    call        qword [impr$LoadLibrary]
                    fleave
    end if ; </fold>

    ; файловая система

    if(used platform.dependent.mswindows.kernel.Kernel$setEndOfFile$long$) ; <fold returns boolean>
                    fast        platform.dependent.mswindows.kernel.Kernel$setEndOfFile$long$, \
                                hFile, long
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.hFile]
                    call        qword [impr$SetEndOfFile]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$setFileAttributes$long$int$) ; <fold returns boolean>
                    fast        platform.dependent.mswindows.kernel.Kernel$setFileAttributes$long$int$, \
                                lpFileName, long, \
                                dwFileAttributes, int
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.lpFileName]
                    mov         r02d, [.dwFileAttributes]
                    call        qword [impr$SetFileAttributes]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$setFileTime$long$long$long$long$) ; <fold returns boolean>
                    fast        platform.dependent.mswindows.kernel.Kernel$setFileTime$long$long$long$long$, \
                                hFile, long, \
                                lpCreationTime, long, \
                                lpLastAccessTime, long, \
                                lpLastWriteTime, long
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.hFile]
                    mov         r02q, [.lpCreationTime]
                    mov         r08q, [.lpLastAccessTime]
                    mov         r09q, [.lpLastWriteTime]
                    call        qword [impr$SetFileTime]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$getFileTime$long$long$long$long$) ; <fold returns boolean>
                    fast        platform.dependent.mswindows.kernel.Kernel$getFileTime$long$long$long$long$, \
                                hFile, long, \
                                lpCreationTime, long, \
                                lpLastAccessTime, long, \
                                lpLastWriteTime, long
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.hFile]
                    mov         r02q, [.lpCreationTime]
                    mov         r08q, [.lpLastAccessTime]
                    mov         r09q, [.lpLastWriteTime]
                    call        qword [impr$GetFileTime]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$findNextFile$long$long$) ; <fold returns boolean>
                    fast        platform.dependent.mswindows.kernel.Kernel$findNextFile$long$long$, \
                                hFindFile, long, \
                                lpFindFileData, long
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.hFindFile]
                    mov         r02q, [.lpFindFileData]
                    call        qword [impr$FindNextFile]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$findClose$long$) ; <fold returns boolean>
                    fast        platform.dependent.mswindows.kernel.Kernel$findClose$long$, \
                                hFindFile, long
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.hFindFile]
                    call        qword [impr$FindClose]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$flushFileBuffers$long$) ; <fold returns boolean>
                    fast        platform.dependent.mswindows.kernel.Kernel$flushFileBuffers$long$, \
                                hFile, long
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.hFile]
                    call        qword [impr$FlushFileBuffers]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$deleteFile$long$) ; <fold returns boolean>
                    fast        platform.dependent.mswindows.kernel.Kernel$deleteFile$long$, \
                                lpFileName, long
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.lpFileName]
                    call        qword [impr$DeleteFile]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$moveFile$long$long$) ; <fold returns boolean>
                    fast        platform.dependent.mswindows.kernel.Kernel$moveFile$long$long$, \
                                lpExistingFileName, long, \
                                lpNewFileName, long
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.lpExistingFileName]
                    mov         r02q, [.lpNewFileName]
                    call        qword [impr$MoveFile]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$removeDirectory$long$) ; <fold returns boolean>
                    fast        platform.dependent.mswindows.kernel.Kernel$removeDirectory$long$, \
                                lpPathName, long
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.lpPathName]
                    call        qword [impr$RemoveDirectory]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$createDirectory$long$long$) ; <fold returns boolean>
                    fast        platform.dependent.mswindows.kernel.Kernel$createDirectory$long$long$, \
                                lpPathName, long, \
                                lpSecurityAttributes, long
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.lpPathName]
                    mov         r02q, [.lpSecurityAttributes]
                    call        qword [impr$CreateDirectory]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$getFileAttributes$long$) ; <fold returns int>
                    fast        platform.dependent.mswindows.kernel.Kernel$getFileAttributes$long$, \
                                lpFileName, long
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.lpFileName]
                    call        qword [impr$GetFileAttributes]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$getDriveType$long$) ; <fold returns int>
                    fast        platform.dependent.mswindows.kernel.Kernel$getDriveType$long$, \
                                lpRootPathName, long
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.lpRootPathName]
                    call        qword [impr$GetDriveType]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$getVolumeFlags$long$) ; <fold returns int>
                    fast        platform.dependent.mswindows.kernel.Kernel$getVolumeFlags$long$, \
                                lpRootPathName, long
                    floc        flags, int
                    fenter
                    lea         r00q, [.flags]
                    mov         qword [r00+$00], $00
                    cld
                    lea         rsp,  [rsp-$40]
                    mov         r01q, [.lpRootPathName]
                    xor         r02q, r02q
                    xor         r08q, r08q
                    xor         r09q, r09q
                    mov         qword [rsp+$20], $00
                    mov         qword [rsp+$28], r00q
                    mov         qword [rsp+$30], $00
                    mov         qword [rsp+$38], $00
                    call        qword [impr$GetVolumeInformation]
                    test        r00d, r00d
                    jnz         .L.0000
                    mov         r00d, platform.dependent.mswindows.kernel.Kernel$INVALID_VOLUME_FLAGS
                    jmp         .L.EXIT
        .L.0000:    mov         r00d, [.flags]
        .L.EXIT:    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$getVolumeName$long$long$int$) ; <fold returns int>
                    fast        platform.dependent.mswindows.kernel.Kernel$getVolumeName$long$long$int$, \
                                lpRootPathName, long, \
                                lpVolumeNameBuffer, long, \
                                nVolumeNameSize, int
                    fenter
                    cld
                    lea         rsp,  [rsp-$40]
                    mov         r01q, [.lpRootPathName]
                    mov         r02q, [.lpVolumeNameBuffer]
                    mov         r08d, [.nVolumeNameSize]
                    xor         r09q, r09q
                    mov         qword [rsp+$20], $00
                    mov         qword [rsp+$28], $00
                    mov         qword [rsp+$30], $00
                    mov         qword [rsp+$38], $00
                    call        qword [impr$GetVolumeInformation]
                    test        r00d, r00d
                    jnz         .L.0000
                    mov         r00d, $ffffffff
                    jmp         .L.EXIT
        .L.0000:    savetbp
                    xor         r00d, r00d
                    mov         r01d, [.nVolumeNameSize]
                    mov         r02q, [.lpVolumeNameBuffer]
                    lea         r07q, [r02+$00]
                    cld
                    repne scasw
                    lea         r00q, [r07-$02]
                    sub         r00q, r02q
                    sar         r00q, $01
                    rstortbp
        .L.EXIT:    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$readFile$long$long$) ; <fold returns int2>
                    fast        platform.dependent.mswindows.kernel.Kernel$readFile$long$long$, \
                                hFile, long, \
                                lpOverlapped, long
                    floc        lpBuffer, int, \
                                lpNumberOfBytesRead, int
                    fenter
                    mov         qword [.lpBuffer], $00
                    mov         qword [.lpNumberOfBytesRead], $00
                    cld
                    lea         rsp,  [rsp-$30]
                    mov         r01q, [.hFile]
                    lea         r02q, [.lpBuffer]
                    mov         r08d, $01
                    lea         r09q, [.lpNumberOfBytesRead]
                    mov         r00q, [.lpOverlapped]
                    mov         qword [rsp+$20], r00q
                    call        qword [impr$ReadFile]
                    test        r00d, r00d
                    jnz         .L.0000
                    vpxor       xmm0, xmm0, xmm0
                    freturn
        .L.0000:    cmp         dword [.lpNumberOfBytesRead], $01
                    je          .L.0001
                    mov         r01d, -$01
                    jmp         .L.0002
        .L.0001:    mov         r01d, [.lpBuffer]
        .L.0002:    vmovd       xmm0, r00d
                    vmovd       xmm1, r01d
                    vpslldq     xmm1, xmm1, $04
                    vpor        xmm0, xmm0, xmm1
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$readFile$long$long$int$long$) ; <fold returns int2>
                    fast        platform.dependent.mswindows.kernel.Kernel$readFile$long$long$int$long$, \
                                hFile, long, \
                                lpBuffer, long, \
                                nNumberOfBytesToRead, int, \
                                lpOverlapped, long
                    floc        lpNumberOfBytesRead, int
                    fenter
                    mov         qword [.lpNumberOfBytesRead], $00
                    cld
                    lea         rsp,  [rsp-$30]
                    mov         r01q, [.hFile]
                    mov         r02q, [.lpBuffer]
                    mov         r08d, [.nNumberOfBytesToRead]
                    lea         r09q, [.lpNumberOfBytesRead]
                    mov         r00q, [.lpOverlapped]
                    mov         qword [rsp+$20], r00q
                    call        qword [impr$ReadFile]
                    vmovd       xmm0, r00d
                    vmovd       xmm1, [.lpNumberOfBytesRead]
                    vpslldq     xmm1, xmm1, $04
                    vpor        xmm0, xmm0, xmm1
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$writeFile$long$int$long$) ; <fold returns int2>
                    fast        platform.dependent.mswindows.kernel.Kernel$writeFile$long$int$long$, \
                                hFile, long, \
                                lpBuffer, int, \
                                lpOverlapped, long
                    floc        lpNumberOfBytesWritten, int
                    fenter
                    mov         qword [.lpNumberOfBytesWritten], $00
                    cld
                    lea         rsp,  [rsp-$30]
                    mov         r01q, [.hFile]
                    lea         r02q, [.lpBuffer]
                    mov         r08d, $01
                    lea         r09q, [.lpNumberOfBytesWritten]
                    mov         r00q, [.lpOverlapped]
                    mov         qword [rsp+$20], r00q
                    call        qword [impr$WriteFile]
                    vmovd       xmm0, r00d
                    vmovd       xmm1, [.lpNumberOfBytesWritten]
                    vpslldq     xmm1, xmm1, $04
                    vpor        xmm0, xmm0, xmm1
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$writeFile$long$long$int$long$) ; <fold returns int2>
                    fast        platform.dependent.mswindows.kernel.Kernel$writeFile$long$long$int$long$, \
                                hFile, long, \
                                lpBuffer, long, \
                                nNumberOfBytesToWrite, int, \
                                lpOverlapped, long
                    floc        lpNumberOfBytesWritten, int
                    fenter
                    mov         qword [.lpNumberOfBytesWritten], $00
                    cld
                    lea         rsp,  [rsp-$30]
                    mov         r01q, [.hFile]
                    mov         r02q, [.lpBuffer]
                    mov         r08d, [.nNumberOfBytesToWrite]
                    lea         r09q, [.lpNumberOfBytesWritten]
                    mov         r00q, [.lpOverlapped]
                    mov         qword [rsp+$20], r00q
                    call        qword [impr$WriteFile]
                    vmovd       xmm0, r00d
                    vmovd       xmm1, [.lpNumberOfBytesWritten]
                    vpslldq     xmm1, xmm1, $04
                    vpor        xmm0, xmm0, xmm1
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$setFilePointer$long$long$int$) ; <fold returns long>
                    fast        platform.dependent.mswindows.kernel.Kernel$setFilePointer$long$long$int$, \
                                hFile, long, \
                                lDistanceToMove, long, \
                                dwMoveMethod, int
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.hFile]
                    mov         r02d, [.lDistanceToMove+$00]
                    lea         r08q, [.lDistanceToMove+$04]
                    mov         r09d, [.dwMoveMethod]
                    call        qword [impr$SetFilePointer]
                    mov         dword [.lDistanceToMove], r00d
                    mov         r00q, [.lDistanceToMove]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$getFileSize$long$) ; <fold returns long>
                    fast        platform.dependent.mswindows.kernel.Kernel$getFileSize$long$, \
                                hFile, long
                    floc        lpFileSizeHigh, int
                    fenter
                    mov         qword [.lpFileSizeHigh], $00
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.hFile]
                    lea         r02q, [.lpFileSizeHigh]
                    call        qword [impr$GetFileSize]
                    mov         r00d, r00d
                    mov         r01d, [.lpFileSizeHigh]
                    shl         r01q, $20
                    or          r00q, r01q
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$findFirstFile$long$long$) ; <fold returns long>
                    fast        platform.dependent.mswindows.kernel.Kernel$findFirstFile$long$long$, \
                                lpFileName, long, \
                                lpFindFileData, long
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.lpFileName]
                    mov         r02q, [.lpFindFileData]
                    call        qword [impr$FindFirstFile]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$createFile$long$int$int$long$int$int$long$) ; <fold returns long>
                    fast        platform.dependent.mswindows.kernel.Kernel$createFile$long$int$int$long$int$int$long$, \
                                lpFileName, long, \
                                dwDesiredAccess, int, \
                                dwShareMode, int, \
                                lpSecurityAttributes, long, \
                                dwCreationDisposition, int, \
                                dwFlagsAndAttributes, int, \
                                hTemplateFile, long
                    fenter
                    cld
                    lea         rsp,  [rsp-$40]
                    mov         r01q, [.lpFileName]
                    mov         r02d, [.dwDesiredAccess]
                    mov         r08d, [.dwShareMode]
                    mov         r09q, [.lpSecurityAttributes]
                    mov         r00d, [.dwCreationDisposition]
                    mov         qword [rsp+$20], r00q
                    mov         r00d, [.dwFlagsAndAttributes]
                    mov         qword [rsp+$28], r00q
                    mov         r00q, [.hTemplateFile]
                    mov         qword [rsp+$30], r00q
                    call        qword [impr$CreateFile]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$getDiskFreeSpaceEx$long$) ; <fold returns long4>
                    fast        platform.dependent.mswindows.kernel.Kernel$getDiskFreeSpaceEx$long$, \
                                lpDirectoryName, long
                    floc        result, long4
                    fenter
                    vpxor       ymm0, ymm0, ymm0
                    vmovdqu     yword [.result], ymm0
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.lpDirectoryName]
                    lea         r02q, [.result+$08]
                    lea         r08q, [.result+$10]
                    lea         r09q, [.result+$18]
                    call        qword [impr$GetDiskFreeSpaceEx]
                    mov         r00d, r00d
                    mov         qword [.result], r00q
                    vmovdqu     ymm0, [.result]
                    fleave
    end if ; </fold>
; </fold>