-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathhelper_utils.asm
More file actions
80 lines (69 loc) · 1.29 KB
/
Copy pathhelper_utils.asm
File metadata and controls
80 lines (69 loc) · 1.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
; Copyright (c) 2026 渟雲. All rights reserved.
.data
table_initialized db 0
crc64_table dq 256 dup(0)
.code
CalculateRequestsChecksum proc
push rbx
push rdi
mov r9, rcx
test rcx, rcx
jnz loc_continue
xor eax, eax
jmp loc_exit
loc_continue:
cmp table_initialized, 0
lea rdi, crc64_table
jne loc_calculate_crc
mov rcx, 0
mov rdx, rdi
mov r11d, 100h
loc_init_table_outer:
mov rax, rcx
mov r10d, 8
loc_init_table_inner:
test al, 1
jz loc_shift_only
mov rbx, 85E1C3D753D46D27h
xor rax, rbx
loc_shift_only:
shr rax, 1
sub r10, 1
jnz loc_init_table_inner
mov [rdx], rax
inc rcx
add rdx, 8
sub r11, 1
jnz loc_init_table_outer
mov table_initialized, 1
loc_calculate_crc:
mov rax, 0FFFFFFFFFFFFFFFFh
xor r8, r8
loc_crc_loop:
movzx ecx, byte ptr [r9+r8]
inc r8
xor rax, rcx
movzx edx, al
shr rax, 8
xor rax, [rdi+rdx*8]
cmp r8, 0B8h
jb loc_crc_loop
not rax
loc_exit:
pop rdi
pop rbx
ret
CalculateRequestsChecksum endp
ResolveRelativeAddress proc
xor eax, eax
test rcx, rcx
jz short loc_fin
mov eax, edx
movsxd rdx, dword ptr [rax+rcx]
add rax, 4
add rax, rdx
add rax, rcx
loc_fin:
ret
ResolveRelativeAddress endp
END