ntdll!strcmp

来源:互联网 发布:自动作曲软件 编辑:程序博客网 时间:2024/06/03 18:16
7c902583 8b542404        mov     edx,dword ptr [esp+4]
7c902587 8b4c2408        mov     ecx,dword ptr [esp+8]
7c90258b f7c203000000    test    edx,3
7c902591 753d            jne     ntdll!strcmp+0x4c (7c9025d0)
7c902593 8b02            mov     eax,dword ptr [edx]  ; 4 bytes aligning
7c902595 3a01            cmp     al,byte ptr [ecx]  ; compare the first byte
7c902597 752e            jne     ntdll!strcmp+0x44 (7c9025c7)
7c902599 0ac0            or      al,al
7c90259b 7426            je      ntdll!strcmp+0x40 (7c9025c3)
7c90259d 3a6101          cmp     ah,byte ptr [ecx+1]  ; compare the second byte
7c9025a0 7525            jne     ntdll!strcmp+0x44 (7c9025c7)
7c9025a2 0ae4            or      ah,ah
7c9025a4 741d            je      ntdll!strcmp+0x40 (7c9025c3)
7c9025a6 c1e810          shr     eax,10h
7c9025a9 3a4102          cmp     al,byte ptr [ecx+2]  ; comare the third byte
7c9025ac 7519            jne     ntdll!strcmp+0x44 (7c9025c7)
7c9025ae 0ac0            or      al,al
7c9025b0 7411            je      ntdll!strcmp+0x40 (7c9025c3)
7c9025b2 3a6103          cmp     ah,byte ptr [ecx+3]  ; compare the fourth byte
7c9025b5 7510            jne     ntdll!strcmp+0x44 (7c9025c7)
7c9025b7 83c104          add     ecx,4
7c9025ba 83c204          add     edx,4
7c9025bd 0ae4            or      ah,ah
7c9025bf 75d2            jne     ntdll!strcmp+0x10 (7c902593)  ; cycle
7c9025c1 8bff            mov     edi,edi
7c9025c3 33c0            xor     eax,eax
7c9025c5 c3              ret
7c9025c6 90              nop
7c9025c7 1bc0            sbb     eax,eax ; After comparison if edx is smaller than dcx, the CF will be set, return -1 otherwise return 1
7c9025c9 d1e0            shl     eax,1
7c9025cb 40              inc     eax
7c9025cc c3              ret
7c9025cd 90              nop
7c9025ce 8bff            mov     edi,edi
7c9025d0 f7c201000000    test    edx,1
7c9025d6 7414            je      ntdll!strcmp+0x68 (7c9025ec)
7c9025d8 8a02            mov     al,byte ptr [edx]  ; 1 byte aligning
7c9025da 42              inc     edx
7c9025db 3a01            cmp     al,byte ptr [ecx]
7c9025dd 75e8            jne     ntdll!strcmp+0x44 (7c9025c7)   ;
7c9025df 41              inc     ecx
7c9025e0 0ac0            or      al,al    ; Check if it is the end, the previous comparison equals, so the strings match.
7c9025e2 74df            je      ntdll!strcmp+0x40 (7c9025c3)
7c9025e4 f7c202000000    test    edx,2    ; Check if 4 bytes aligning, if the answer if true goto 2593
7c9025ea 74a7            je      ntdll!strcmp+0x10 (7c902593)
7c9025ec 668b02          mov     ax,word ptr [edx]            ; 2 bytes align
7c9025ef 83c202          add     edx,2
7c9025f2 3a01            cmp     al,byte ptr [ecx]
7c9025f4 75d1            jne     ntdll!strcmp+0x44 (7c9025c7)
7c9025f6 0ac0            or      al,al    ; is the end?
7c9025f8 74c9            je      ntdll!strcmp+0x40 (7c9025c3) ; return 0
7c9025fa 3a6101          cmp     ah,byte ptr [ecx+1]
7c9025fd 75c8            jne     ntdll!strcmp+0x44 (7c9025c7) 
7c9025ff 0ae4            or      ah,ah    ; is the end?
7c902601 74c0            je      ntdll!strcmp+0x40 (7c9025c3) ; return 0
7c902603 83c102          add     ecx,2
7c902606 eb8b            jmp     ntdll!strcmp+0x10 (7c902593)   ; finally 4 bytes aligned
原创粉丝点击