TDL/Source/Furutaka/output/x64/Release/asmlist/cui.asm

495 lines
10 KiB
NASM

; Listing generated by Microsoft (R) Optimizing Compiler Version 19.28.29335.0
include listing.inc
INCLUDELIB LIBCMT
INCLUDELIB OLDNAMES
PUBLIC g_ConOut
PUBLIC g_ConIn
PUBLIC g_ConsoleOutput
PUBLIC g_BE
_BSS SEGMENT
g_ConOut DQ 01H DUP (?)
g_ConIn DQ 01H DUP (?)
g_ConsoleOutput DD 01H DUP (?)
_BSS ENDS
_DATA SEGMENT
g_BE DW 0feffH
_DATA ENDS
PUBLIC cuiInitialize
PUBLIC cuiPrintTextA
PUBLIC cuiPrintTextW
PUBLIC cuiPrintTextLastErrorA
PUBLIC cuiPrintTextLastErrorW
PUBLIC cuiClrScr
PUBLIC ??_C@_02PCIJFNDE@?$AN?6@ ; `string'
PUBLIC ??_C@_15JNBOKNOG@?$AA?$AN?$AA?6@ ; `string'
EXTRN __imp_GetStdHandle:PROC
EXTRN __imp_WriteFile:PROC
EXTRN __imp_GetLastError:PROC
EXTRN __imp_HeapAlloc:PROC
EXTRN __imp_HeapFree:PROC
EXTRN __imp_GetProcessHeap:PROC
EXTRN __imp_FormatMessageA:PROC
EXTRN __imp_FormatMessageW:PROC
EXTRN __imp_GetConsoleMode:PROC
EXTRN __imp_SetConsoleMode:PROC
EXTRN __imp_WriteConsoleA:PROC
EXTRN __imp_WriteConsoleW:PROC
EXTRN __imp_FillConsoleOutputCharacterW:PROC
EXTRN __imp_FillConsoleOutputAttribute:PROC
EXTRN __imp_GetConsoleScreenBufferInfo:PROC
EXTRN __imp_SetConsoleCursorPosition:PROC
EXTRN _strcpy_a:PROC
EXTRN _strcpy_w:PROC
EXTRN _strcat_a:PROC
EXTRN _strcat_w:PROC
EXTRN _strlen_a:PROC
EXTRN _strlen_w:PROC
; COMDAT pdata
pdata SEGMENT
$pdata$cuiInitialize DD imagerel $LN7
DD imagerel $LN7+173
DD imagerel $unwind$cuiInitialize
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$cuiPrintTextA DD imagerel $LN13
DD imagerel $LN13+207
DD imagerel $unwind$cuiPrintTextA
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$cuiPrintTextW DD imagerel $LN13
DD imagerel $LN13+215
DD imagerel $unwind$cuiPrintTextW
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$cuiPrintTextLastErrorA DD imagerel $LN4
DD imagerel $LN4+84
DD imagerel $unwind$cuiPrintTextLastErrorA
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$cuiPrintTextLastErrorW DD imagerel $LN4
DD imagerel $LN4+84
DD imagerel $unwind$cuiPrintTextLastErrorW
pdata ENDS
; COMDAT pdata
pdata SEGMENT
$pdata$cuiClrScr DD imagerel $LN8
DD imagerel $LN8+173
DD imagerel $unwind$cuiClrScr
pdata ENDS
; COMDAT ??_C@_15JNBOKNOG@?$AA?$AN?$AA?6@
CONST SEGMENT
??_C@_15JNBOKNOG@?$AA?$AN?$AA?6@ DB 0dH, 00H, 0aH, 00H, 00H, 00H ; `string'
CONST ENDS
; COMDAT ??_C@_02PCIJFNDE@?$AN?6@
CONST SEGMENT
??_C@_02PCIJFNDE@?$AN?6@ DB 0dH, 0aH, 00H ; `string'
CONST ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$cuiClrScr DD 040a01H
DD 0e640aH
DD 07006920aH
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$cuiPrintTextLastErrorW DD 030901H
DD 0880109H
DD 03002H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$cuiPrintTextLastErrorA DD 030901H
DD 0480109H
DD 03002H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$cuiPrintTextW DD 061801H
DD 0a6418H
DD 093418H
DD 070145218H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$cuiPrintTextA DD 061801H
DD 0a6418H
DD 093418H
DD 070145218H
xdata ENDS
; COMDAT xdata
xdata SEGMENT
$unwind$cuiInitialize DD 040a01H
DD 09340aH
DD 07006520aH
xdata ENDS
; Function compile flags: /Ogspy
; COMDAT cuiClrScr
_TEXT SEGMENT
csbi$ = 48
coordScreen$ = 96
cCharsWritten$ = 104
cuiClrScr PROC ; COMDAT
; File J:\Workspace\drivers\TDL\Source\Furutaka\cui.c
; Line 69
$LN8:
mov QWORD PTR [rsp+24], rsi
push rdi
sub rsp, 80 ; 00000050H
; Line 78
mov rcx, QWORD PTR g_ConOut
lea rdx, QWORD PTR csbi$[rsp]
xor esi, esi
mov DWORD PTR coordScreen$[rsp], esi
call QWORD PTR __imp_GetConsoleScreenBufferInfo
test eax, eax
je SHORT $LN1@cuiClrScr
; Line 81
movsx eax, WORD PTR csbi$[rsp]
; Line 83
lea edx, QWORD PTR [rsi+32]
movsx edi, WORD PTR csbi$[rsp+2]
mov r9d, esi
mov rcx, QWORD PTR g_ConOut
imul edi, eax
lea rax, QWORD PTR cCharsWritten$[rsp]
mov QWORD PTR [rsp+32], rax
mov r8d, edi
call QWORD PTR __imp_FillConsoleOutputCharacterW
test eax, eax
je SHORT $LN1@cuiClrScr
; Line 87
mov rcx, QWORD PTR g_ConOut
lea rdx, QWORD PTR csbi$[rsp]
call QWORD PTR __imp_GetConsoleScreenBufferInfo
test eax, eax
je SHORT $LN1@cuiClrScr
; Line 90
movzx edx, WORD PTR csbi$[rsp+8]
lea rax, QWORD PTR cCharsWritten$[rsp]
mov rcx, QWORD PTR g_ConOut
mov r9d, esi
mov r8d, edi
mov QWORD PTR [rsp+32], rax
call QWORD PTR __imp_FillConsoleOutputAttribute
test eax, eax
je SHORT $LN1@cuiClrScr
; Line 94
mov rcx, QWORD PTR g_ConOut
mov edx, esi
call QWORD PTR __imp_SetConsoleCursorPosition
$LN1@cuiClrScr:
; Line 95
mov rsi, QWORD PTR [rsp+112]
add rsp, 80 ; 00000050H
pop rdi
ret 0
cuiClrScr ENDP
_TEXT ENDS
; Function compile flags: /Ogspy
; COMDAT cuiPrintTextLastErrorW
_TEXT SEGMENT
szTextBuffer$ = 64
UseReturn$ = 1104
cuiPrintTextLastErrorW PROC ; COMDAT
; File J:\Workspace\drivers\TDL\Source\Furutaka\cui.c
; Line 217
$LN4:
push rbx
sub rsp, 1088 ; 00000440H
mov ebx, ecx
; Line 219
call QWORD PTR __imp_GetLastError
; Line 221
and QWORD PTR [rsp+48], 0
lea rcx, QWORD PTR szTextBuffer$[rsp]
mov DWORD PTR [rsp+40], 512 ; 00000200H
mov r9d, 1024 ; 00000400H
mov QWORD PTR [rsp+32], rcx
mov r8d, eax
mov ecx, 4096 ; 00001000H
xor edx, edx
call QWORD PTR __imp_FormatMessageW
; Line 222
mov edx, ebx
lea rcx, QWORD PTR szTextBuffer$[rsp]
call cuiPrintTextW
; Line 223
add rsp, 1088 ; 00000440H
pop rbx
ret 0
cuiPrintTextLastErrorW ENDP
_TEXT ENDS
; Function compile flags: /Ogspy
; COMDAT cuiPrintTextLastErrorA
_TEXT SEGMENT
szTextBuffer$ = 64
UseReturn$ = 592
cuiPrintTextLastErrorA PROC ; COMDAT
; File J:\Workspace\drivers\TDL\Source\Furutaka\cui.c
; Line 197
$LN4:
push rbx
sub rsp, 576 ; 00000240H
mov ebx, ecx
; Line 199
call QWORD PTR __imp_GetLastError
; Line 201
and QWORD PTR [rsp+48], 0
lea rcx, QWORD PTR szTextBuffer$[rsp]
mov DWORD PTR [rsp+40], 512 ; 00000200H
mov r9d, 1024 ; 00000400H
mov QWORD PTR [rsp+32], rcx
mov r8d, eax
mov ecx, 4096 ; 00001000H
xor edx, edx
call QWORD PTR __imp_FormatMessageA
; Line 202
mov edx, ebx
lea rcx, QWORD PTR szTextBuffer$[rsp]
call cuiPrintTextA
; Line 203
add rsp, 576 ; 00000240H
pop rbx
ret 0
cuiPrintTextLastErrorA ENDP
_TEXT ENDS
; Function compile flags: /Ogspy
; COMDAT cuiPrintTextW
_TEXT SEGMENT
bytesIO$ = 64
lpText$ = 64
UseReturn$ = 72
cuiPrintTextW PROC ; COMDAT
; File J:\Workspace\drivers\TDL\Source\Furutaka\cui.c
; Line 154
$LN13:
; Line 159
test rcx, rcx
je $LN11@cuiPrintTe
mov QWORD PTR [rsp+16], rbx
mov QWORD PTR [rsp+24], rsi
push rdi
sub rsp, 48 ; 00000030H
; Line 154
mov esi, edx
mov rdi, rcx
; Line 162
call _strlen_w
; Line 163
lea r8, QWORD PTR [rax-1]
cmp r8, 1039 ; 0000040fH
ja $LN4@cuiPrintTe
; Line 166
lea rbx, QWORD PTR [rax*2+6]
; Line 167
call QWORD PTR __imp_GetProcessHeap
mov r8, rbx
mov edx, 8
mov rcx, rax
call QWORD PTR __imp_HeapAlloc
mov rbx, rax
; Line 168
test rax, rax
je SHORT $LN4@cuiPrintTe
; Line 170
mov rdx, rdi
mov rcx, rax
call _strcpy_w
; Line 171
test esi, esi
je SHORT $LN6@cuiPrintTe
lea rdx, OFFSET FLAT:??_C@_15JNBOKNOG@?$AA?$AN?$AA?6@
mov rcx, rbx
call _strcat_w
$LN6@cuiPrintTe:
; Line 173
mov rcx, rbx
call _strlen_w
; Line 175
and QWORD PTR [rsp+32], 0
lea r9, QWORD PTR bytesIO$[rsp]
cmp DWORD PTR g_ConsoleOutput, 0
mov rdx, rbx
mov rcx, QWORD PTR g_ConOut
je SHORT $LN7@cuiPrintTe
; Line 176
mov r8d, eax
call QWORD PTR __imp_WriteConsoleW
; Line 177
jmp SHORT $LN8@cuiPrintTe
$LN7@cuiPrintTe:
; Line 179
lea r8d, DWORD PTR [rax+rax]
call QWORD PTR __imp_WriteFile
$LN8@cuiPrintTe:
; Line 181
call QWORD PTR __imp_GetProcessHeap
mov r8, rbx
xor edx, edx
mov rcx, rax
call QWORD PTR __imp_HeapFree
$LN4@cuiPrintTe:
; Line 183
mov rbx, QWORD PTR [rsp+72]
mov rsi, QWORD PTR [rsp+80]
add rsp, 48 ; 00000030H
pop rdi
$LN11@cuiPrintTe:
ret 0
cuiPrintTextW ENDP
_TEXT ENDS
; Function compile flags: /Ogspy
; COMDAT cuiPrintTextA
_TEXT SEGMENT
bytesIO$ = 64
lpText$ = 64
UseReturn$ = 72
cuiPrintTextA PROC ; COMDAT
; File J:\Workspace\drivers\TDL\Source\Furutaka\cui.c
; Line 110
$LN13:
; Line 115
test rcx, rcx
je $LN11@cuiPrintTe
mov QWORD PTR [rsp+16], rbx
mov QWORD PTR [rsp+24], rsi
push rdi
sub rsp, 48 ; 00000030H
; Line 110
mov esi, edx
mov rdi, rcx
; Line 118
call _strlen_a
; Line 119
lea r8, QWORD PTR [rax-1]
cmp r8, 1039 ; 0000040fH
ja $LN4@cuiPrintTe
; Line 122
lea rbx, QWORD PTR [rax+5]
; Line 123
call QWORD PTR __imp_GetProcessHeap
mov r8, rbx
mov edx, 8
mov rcx, rax
call QWORD PTR __imp_HeapAlloc
mov rbx, rax
; Line 124
test rax, rax
je SHORT $LN4@cuiPrintTe
; Line 126
mov rdx, rdi
mov rcx, rax
call _strcpy_a
; Line 127
test esi, esi
je SHORT $LN6@cuiPrintTe
lea rdx, OFFSET FLAT:??_C@_02PCIJFNDE@?$AN?6@
mov rcx, rbx
call _strcat_a
$LN6@cuiPrintTe:
; Line 129
mov rcx, rbx
call _strlen_a
; Line 131
and QWORD PTR [rsp+32], 0
lea r9, QWORD PTR bytesIO$[rsp]
cmp DWORD PTR g_ConsoleOutput, 0
mov r8d, eax
mov rcx, QWORD PTR g_ConOut
mov rdx, rbx
je SHORT $LN7@cuiPrintTe
; Line 132
call QWORD PTR __imp_WriteConsoleA
; Line 133
jmp SHORT $LN8@cuiPrintTe
$LN7@cuiPrintTe:
; Line 135
call QWORD PTR __imp_WriteFile
$LN8@cuiPrintTe:
; Line 137
call QWORD PTR __imp_GetProcessHeap
mov r8, rbx
xor edx, edx
mov rcx, rax
call QWORD PTR __imp_HeapFree
$LN4@cuiPrintTe:
; Line 139
mov rbx, QWORD PTR [rsp+72]
mov rsi, QWORD PTR [rsp+80]
add rsp, 48 ; 00000030H
pop rdi
$LN11@cuiPrintTe:
ret 0
cuiPrintTextA ENDP
_TEXT ENDS
; Function compile flags: /Ogspy
; COMDAT cuiInitialize
_TEXT SEGMENT
dummy$ = 64
InitInput$ = 64
IsConsoleOutput$ = 72
cuiInitialize PROC ; COMDAT
; File J:\Workspace\drivers\TDL\Source\Furutaka\cui.c
; Line 37
$LN7:
mov QWORD PTR [rsp+16], rbx
push rdi
sub rsp, 48 ; 00000030H
mov ebx, ecx
mov rdi, rdx
; Line 40
mov ecx, -11 ; fffffff5H
call QWORD PTR __imp_GetStdHandle
mov QWORD PTR g_ConOut, rax
; Line 42
test ebx, ebx
je SHORT $LN2@cuiInitial
mov ecx, -10 ; fffffff6H
call QWORD PTR __imp_GetStdHandle
mov QWORD PTR g_ConIn, rax
mov rax, QWORD PTR g_ConOut
$LN2@cuiInitial:
; Line 44
mov edx, 7
mov rcx, rax
call QWORD PTR __imp_SetConsoleMode
; Line 47
mov rcx, QWORD PTR g_ConOut
lea rdx, QWORD PTR dummy$[rsp]
mov DWORD PTR g_ConsoleOutput, 1
call QWORD PTR __imp_GetConsoleMode
test eax, eax
jne SHORT $LN3@cuiInitial
; Line 48
and DWORD PTR g_ConsoleOutput, eax
; Line 49
lea r9, QWORD PTR dummy$[rsp]
and QWORD PTR [rsp+32], 0
lea r8d, QWORD PTR [rax+2]
mov rcx, QWORD PTR g_ConOut
lea rdx, OFFSET FLAT:g_BE
call QWORD PTR __imp_WriteFile
$LN3@cuiInitial:
; Line 52
test rdi, rdi
je SHORT $LN4@cuiInitial
; Line 53
mov eax, DWORD PTR g_ConsoleOutput
mov DWORD PTR [rdi], eax
$LN4@cuiInitial:
; Line 56
mov rbx, QWORD PTR [rsp+72]
add rsp, 48 ; 00000030H
pop rdi
ret 0
cuiInitialize ENDP
_TEXT ENDS
END