Kernel.inc

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

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

; <fold platform.dependent.mswindows.kernel.Kernel — родной код>
    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$kernel.exitProcess]
                    fleave
    end if ; </fold>

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

    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$kernel.getSystemInfo]
                    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$kernel.getSystemTime]
                    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$kernel.initializeCriticalSection]
                    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$kernel.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$kernel.leaveCriticalSection]
                    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$kernel.deleteCriticalSection]
                    fleave
    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$kernel.setCurrentDirectory]
                    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$kernel.createDirectory]
                    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$kernel.removeDirectory]
                    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$kernel.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$kernel.findClose]
                    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$kernel.moveFile]
                    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$kernel.deleteFile]
                    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$kernel.flushFileBuffers]
                    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$kernel.setEndOfFile]
                    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$kernel.setFileTime]
                    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$kernel.setFileAttributes]
                    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$kernel.getFileTime]
                    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$kernel.setThreadPriority]
                    fleave
    end if ; </fold>

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

    if(used platform.dependent.mswindows.kernel.Kernel$setThreadContext$long$long$) ; <fold returns boolean>
                    fast        platform.dependent.mswindows.kernel.Kernel$setThreadContext$long$long$, \
                                hThread, long, \
                                lpContext, long
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.hThread]
                    mov         r02q, [.lpContext]
                    call        qword [impr$kernel.setThreadContext]
                    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$kernel.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$kernel.thread32Next]
                    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$kernel.virtualFree]
                    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$kernel.freeEnvironmentStrings]
                    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$kernel.closeHandle]
                    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$kernel.setEvent]
                    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$kernel.switchToThread]
                    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$kernel.setEnvironmentVariable]
                    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$kernel.getCurrentDirectory]
                    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$kernel.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$kernel.getDriveType]
                    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$kernel.getModuleFileName]
                    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$kernel.getCurrentProcessId]
                    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$kernel.getCurrentThreadId]
                    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$kernel.getConsoleOutputCP]
                    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$kernel.getConsoleInputCP]
                    fleave
    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$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$resumeThread$long$) ; <fold returns int>
                    fast        platform.dependent.mswindows.kernel.Kernel$resumeThread$long$, \
                                hThread, long
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.hThread]
                    call        qword [impr$kernel.resumeThread]
                    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$kernel.getThreadPriority]
                    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$kernel.getEnvironmentVariable]
                    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$kernel.waitForSingleObject]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$getTimeZoneInformation$long$) ; <fold returns int>
                    fast        platform.dependent.mswindows.kernel.Kernel$getTimeZoneInformation$long$, \
                                lpTimeZoneInformation, long
                    fenter
                    cld
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.lpTimeZoneInformation]
                    call        qword [impr$kernel.getTimeZoneInformation]
                    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
                    cld
                    mov         qword [.lpExitCode], $00
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.hThread]
                    lea         r02q, [.lpExitCode]
                    call        qword [impr$kernel.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$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
                    cld
                    mov         qword [.lpBuffer], $00
                    mov         qword [.lpNumberOfBytesRead], $00
                    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$kernel.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
                    cld
                    mov         qword [.lpNumberOfBytesRead], $00
                    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$kernel.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
                    cld
                    mov         qword [.lpNumberOfBytesWritten], $00
                    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$kernel.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
                    cld
                    mov         qword [.lpNumberOfBytesWritten], $00
                    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$kernel.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$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
                    cld
                    mov         qword [.lpflOldProtect], $00
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.lpAddress]
                    mov         r02q, [.dwSize]
                    mov         r08d, [.flNewProtect]
                    lea         r09q, [.lpflOldProtect]
                    call        qword [impr$kernel.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$kernel.virtualAlloc]
                    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$kernel.getStdHandle]
                    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$kernel.openThread]
                    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$kernel.findFirstFile]
                    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
                    cld
                    mov         qword [.lpFileSizeHigh], $00
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.hFile]
                    lea         r02q, [.lpFileSizeHigh]
                    call        qword [impr$kernel.getFileSize]
                    mov         r00d, r00d
                    mov         r01d, [.lpFileSizeHigh]
                    shl         r01q, $20
                    or          r00q, r01q
                    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$kernel.setFilePointer]
                    mov         dword [.lDistanceToMove], r00d
                    mov         r00q, [.lDistanceToMove]
                    fleave
    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$kernel.createToolHelp32Snapshot]
                    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$kernel.createFile]
                    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]
                    test        dword [.bManualReset], -$01
                    setz        r02b
                    dec         r02b
                    movsx       r02d, r02b
                    test        dword [.bInitialState], -$01
                    setz        r08b
                    dec         r08b
                    movsx       r08d, r08b
                    mov         r09q, [.lpName]
                    call        qword [impr$kernel.createEvent]
                    fleave
    end if ; </fold>

    if(used platform.dependent.mswindows.kernel.Kernel$createThread$long$long$long$long$int$) ; <fold returns long2>
                    fast        platform.dependent.mswindows.kernel.Kernel$createThread$long$long$long$long$int$, \
                                lpThreadAttributes, long, \
                                dwStackSize, long, \
                                lpStartAddress, long, \
                                lpParameter, long, \
                                dwCreationFlags, int
                    floc        lpThreadId, int
                    fenter
                    cld
                    mov         qword [.lpThreadId], $00
                    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$kernel.createThread]
                    vmovq       xmm0, r00q
                    vmovq       xmm1, [.lpThreadId]
                    vpslldq     xmm1, xmm1, $08
                    vpor        xmm0, xmm0, xmm1
                    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$kernel.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$kernel.getEnvironmentStrings]
                    lea         r02q, [r00+$00]
                    test        r00q, r00q
                    jz          .L.0001
                    savetbp
                    lea         r07q, [r00+$00]
                    xor         r00d, r00d
                    mov         r01d, avt.lang.Int$MAX_VALUE
                    cld
        .L.0000:    repne scasw
                    scasw
                    jne         .L.0000
                    lea         r00q, [r07-$02]
                    sub         r00q, r02q
                    sar         r00q, $01
                    rstortbp
        .L.0001:    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$getDiskFreeSpaceEx$long$) ; <fold returns long4>
                    fast        platform.dependent.mswindows.kernel.Kernel$getDiskFreeSpaceEx$long$, \
                                lpDirectoryName, long
                    floc        result, long4
                    fenter
                    cld
                    vpxor       ymm0, ymm0, ymm0
                    vmovdqu     yword [.result], ymm0
                    lea         rsp,  [rsp-$20]
                    mov         r01q, [.lpDirectoryName]
                    lea         r02q, [.result+$08]
                    lea         r08q, [.result+$10]
                    lea         r09q, [.result+$18]
                    call        qword [impr$kernel.getDiskFreeSpaceEx]
                    mov         r00d, r00d
                    mov         qword [.result], r00q
                    vmovdqu     ymm0, [.result]
                    fleave
    end if ; </fold>
; </fold>