aboutsummaryrefslogtreecommitdiffstats
path: root/epan/asm_utils_win32_x86.asm
diff options
context:
space:
mode:
Diffstat (limited to 'epan/asm_utils_win32_x86.asm')
-rw-r--r--epan/asm_utils_win32_x86.asm39
1 files changed, 39 insertions, 0 deletions
diff --git a/epan/asm_utils_win32_x86.asm b/epan/asm_utils_win32_x86.asm
index 52143a5b00..46a1996bc7 100644
--- a/epan/asm_utils_win32_x86.asm
+++ b/epan/asm_utils_win32_x86.asm
@@ -26,6 +26,7 @@ SECTION .text
GLOBAL _wrs_strcmp
GLOBAL _wrs_strcmp_with_data
+GLOBAL _wrs_str_equal
GLOBAL _wrs_check_charset
GLOBAL _wrs_str_hash
@@ -71,6 +72,44 @@ CMP_NEQ_END:
retn
align 16
+_wrs_str_equal
+ mov ecx, dword [esp + 4] ; a
+ mov edx, dword [esp + 8] ; b
+ push ebx
+EQL_LOOP:
+ mov eax, dword [ecx]
+ mov ebx, dword [edx]
+ cmp al, bl
+ jne EQL_NEQ_END
+ or al, al
+ jz EQL_EQ_END
+ cmp ah, bh
+ jne EQL_NEQ_END
+ or ah, ah
+ jz EQL_EQ_END
+ shr eax, 16
+ shr ebx, 16
+ add ecx, byte 4
+ add edx, byte 4
+ cmp al, bl
+ jne EQL_NEQ_END
+ or al, al
+ jz EQL_EQ_END
+ cmp ah, bh
+ jne EQL_NEQ_END
+ or ah, ah
+ jnz EQL_LOOP
+EQL_EQ_END:
+ xor eax, eax
+ pop ebx
+ not eax
+ retn
+EQL_NEQ_END:
+ pop ebx
+ xor eax, eax
+ retn
+
+ align 16
_wrs_check_charset:
mov edx, dword [esp + 4] ; table
mov ecx, dword [esp + 8] ; str