167 lines
2.9 KiB
NASM
167 lines
2.9 KiB
NASM
|
; Listing generated by Microsoft (R) Optimizing Compiler Version 19.28.29335.0
|
||
|
|
||
|
include listing.inc
|
||
|
|
||
|
INCLUDELIB LIBCMT
|
||
|
INCLUDELIB OLDNAMES
|
||
|
|
||
|
PUBLIC u64tostr_a
|
||
|
PUBLIC u64tostr_w
|
||
|
; COMDAT pdata
|
||
|
pdata SEGMENT
|
||
|
$pdata$u64tostr_a DD imagerel $LN19
|
||
|
DD imagerel $LN19+123
|
||
|
DD imagerel $unwind$u64tostr_a
|
||
|
pdata ENDS
|
||
|
; COMDAT pdata
|
||
|
pdata SEGMENT
|
||
|
$pdata$u64tostr_w DD imagerel $LN19
|
||
|
DD imagerel $LN19+161
|
||
|
DD imagerel $unwind$u64tostr_w
|
||
|
pdata ENDS
|
||
|
; COMDAT xdata
|
||
|
xdata SEGMENT
|
||
|
$unwind$u64tostr_w DD 060f01H
|
||
|
DD 03740fH
|
||
|
DD 02640aH
|
||
|
DD 013405H
|
||
|
xdata ENDS
|
||
|
; COMDAT xdata
|
||
|
xdata SEGMENT
|
||
|
$unwind$u64tostr_a DD 020501H
|
||
|
DD 013405H
|
||
|
xdata ENDS
|
||
|
; Function compile flags: /Ogspy
|
||
|
; COMDAT u64tostr_w
|
||
|
_TEXT SEGMENT
|
||
|
x$ = 8
|
||
|
s$ = 16
|
||
|
u64tostr_w PROC ; COMDAT
|
||
|
; File J:\Workspace\drivers\TDL\Source\Furutaka\minirtl\u64tostr.c
|
||
|
; Line 26
|
||
|
$LN19:
|
||
|
mov QWORD PTR [rsp+8], rbx
|
||
|
mov QWORD PTR [rsp+16], rsi
|
||
|
mov QWORD PTR [rsp+24], rdi
|
||
|
mov r10, rdx
|
||
|
; Line 27
|
||
|
mov rdx, rcx
|
||
|
mov r9, rcx
|
||
|
; Line 30
|
||
|
mov rsi, -3689348814741910323 ; cccccccccccccccdH
|
||
|
mov r8d, 1
|
||
|
cmp rcx, 10
|
||
|
jb SHORT $LN3@u64tostr_w
|
||
|
$LL2@u64tostr_w:
|
||
|
; Line 31
|
||
|
mov rax, rsi
|
||
|
; Line 32
|
||
|
inc r8
|
||
|
mul rdx
|
||
|
shr rdx, 3
|
||
|
cmp rdx, 10
|
||
|
jae SHORT $LL2@u64tostr_w
|
||
|
$LN3@u64tostr_w:
|
||
|
; Line 35
|
||
|
xor edi, edi
|
||
|
test r10, r10
|
||
|
je SHORT $LN17@u64tostr_w
|
||
|
; Line 38
|
||
|
mov r11, r8
|
||
|
test r8, r8
|
||
|
je SHORT $LN5@u64tostr_w
|
||
|
lea rbx, QWORD PTR [r10-2]
|
||
|
lea rbx, QWORD PTR [rbx+r8*2]
|
||
|
$LL6@u64tostr_w:
|
||
|
; Line 39
|
||
|
mov rax, rsi
|
||
|
mul r9
|
||
|
shr rdx, 3
|
||
|
movzx eax, dx
|
||
|
shl ax, 2
|
||
|
lea ecx, DWORD PTR [rax+rdx]
|
||
|
add cx, cx
|
||
|
sub r9w, cx
|
||
|
add r9w, 48 ; 00000030H
|
||
|
mov WORD PTR [rbx], r9w
|
||
|
; Line 40
|
||
|
mov r9, rdx
|
||
|
lea rbx, QWORD PTR [rbx-2]
|
||
|
sub r11, 1
|
||
|
jne SHORT $LL6@u64tostr_w
|
||
|
$LN5@u64tostr_w:
|
||
|
; Line 43
|
||
|
mov WORD PTR [r10+r8*2], di
|
||
|
$LN17@u64tostr_w:
|
||
|
; Line 45
|
||
|
mov rbx, QWORD PTR [rsp+8]
|
||
|
mov rax, r8
|
||
|
mov rsi, QWORD PTR [rsp+16]
|
||
|
mov rdi, QWORD PTR [rsp+24]
|
||
|
ret 0
|
||
|
u64tostr_w ENDP
|
||
|
_TEXT ENDS
|
||
|
; Function compile flags: /Ogspy
|
||
|
; COMDAT u64tostr_a
|
||
|
_TEXT SEGMENT
|
||
|
x$ = 8
|
||
|
s$ = 16
|
||
|
u64tostr_a PROC ; COMDAT
|
||
|
; File J:\Workspace\drivers\TDL\Source\Furutaka\minirtl\u64tostr.c
|
||
|
; Line 4
|
||
|
$LN19:
|
||
|
mov QWORD PTR [rsp+8], rbx
|
||
|
mov r10, rdx
|
||
|
; Line 5
|
||
|
mov rdx, rcx
|
||
|
mov r9, rcx
|
||
|
; Line 8
|
||
|
mov rbx, -3689348814741910323 ; cccccccccccccccdH
|
||
|
mov r8d, 1
|
||
|
cmp rcx, 10
|
||
|
jb SHORT $LN3@u64tostr_a
|
||
|
$LL2@u64tostr_a:
|
||
|
; Line 9
|
||
|
mov rax, rbx
|
||
|
; Line 10
|
||
|
inc r8
|
||
|
mul rdx
|
||
|
shr rdx, 3
|
||
|
cmp rdx, 10
|
||
|
jae SHORT $LL2@u64tostr_a
|
||
|
$LN3@u64tostr_a:
|
||
|
; Line 13
|
||
|
test r10, r10
|
||
|
je SHORT $LN17@u64tostr_a
|
||
|
; Line 16
|
||
|
mov r11, r8
|
||
|
test r8, r8
|
||
|
je SHORT $LN5@u64tostr_a
|
||
|
$LL6@u64tostr_a:
|
||
|
; Line 17
|
||
|
mov rax, rbx
|
||
|
mul r9
|
||
|
shr rdx, 3
|
||
|
mov al, dl
|
||
|
shl al, 2
|
||
|
lea ecx, DWORD PTR [rax+rdx]
|
||
|
add cl, cl
|
||
|
sub r9b, cl
|
||
|
add r9b, 48 ; 00000030H
|
||
|
mov BYTE PTR [r10+r11-1], r9b
|
||
|
; Line 18
|
||
|
mov r9, rdx
|
||
|
sub r11, 1
|
||
|
jne SHORT $LL6@u64tostr_a
|
||
|
$LN5@u64tostr_a:
|
||
|
; Line 21
|
||
|
mov BYTE PTR [r8+r10], 0
|
||
|
$LN17@u64tostr_a:
|
||
|
; Line 23
|
||
|
mov rbx, QWORD PTR [rsp+8]
|
||
|
mov rax, r8
|
||
|
ret 0
|
||
|
u64tostr_a ENDP
|
||
|
_TEXT ENDS
|
||
|
END
|