.text:00000000 ; .text:00000000 ; ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» .text:00000000 ; º This file is generated by The Interactive Disassembler (IDA) º .text:00000000 ; º Copyright (c) 2006 by DataRescue sa/nv, º .text:00000000 ; º Licensed to: University of Wisconsin, 5 users std, edu, 09/2004 º .text:00000000 ; ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ .text:00000000 ; .text:00000000 ; File Name : H:\research\TSL\analyzer\TSLFiles\DASH\regression\019.driver\floppy\SpinLock\floppy-SpinLock.long.obj .text:00000000 ; Format : COFF (X386MAGIC) .text:00000000 ; includelib "LIBCMT" .text:00000000 ; includelib "OLDNAMES"" .text:00000000 .text:00000000 .686p .text:00000000 .mmx .text:00000000 .model flat .text:00000000 .text:00000000 ; ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ .text:00000000 .text:00000000 ; Segment type: Pure code .text:00000000 _text segment para public 'CODE' use32 .text:00000000 assume cs:_text .text:00000000 assume es:nothing, ss:nothing, ds:nothing, fs:nothing, gs:nothing .text:00000000 .text:00000000 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:00000000 .text:00000000 ; Attributes: bp-based frame .text:00000000 .text:00000000 public _my_malloc .text:00000000 _my_malloc proc near .text:00000000 .text:00000000 var_4 = dword ptr -4 .text:00000000 arg_0 = dword ptr 8 .text:00000000 .text:00000000 push ebp .text:00000001 mov ebp, esp .text:00000003 push ecx .text:00000004 mov eax, dword ptr ds:_malloc_starting_addr .text:00000009 mov [ebp+var_4], eax .text:0000000C mov ecx, dword ptr ds:_malloc_starting_addr .text:00000012 add ecx, [ebp+arg_0] .text:00000015 mov dword ptr ds:_malloc_starting_addr, ecx .text:0000001B mov eax, [ebp+var_4] .text:0000001E mov esp, ebp .text:00000020 pop ebp .text:00000021 retn .text:00000021 _my_malloc endp .text:00000021 .text:00000021 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000022 align 10h .text:00000030 .text:00000030 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:00000030 .text:00000030 ; Attributes: bp-based frame .text:00000030 .text:00000030 public _SdvBuggyFunctionOnInitPageThatShouldNotBeCalledOutSideDriverEntry .text:00000030 _SdvBuggyFunctionOnInitPageThatShouldNotBeCalledOutSideDriverEntry proc near .text:00000030 push ebp .text:00000031 mov ebp, esp .text:00000033 pop ebp .text:00000034 retn .text:00000034 _SdvBuggyFunctionOnInitPageThatShouldNotBeCalledOutSideDriverEntry endp .text:00000034 .text:00000034 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000035 align 10h .text:00000040 .text:00000040 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:00000040 .text:00000040 ; Attributes: bp-based frame .text:00000040 .text:00000040 public _ExAllocatePoolWithTag .text:00000040 _ExAllocatePoolWithTag proc near .text:00000040 .text:00000040 var_4 = dword ptr -4 .text:00000040 arg_4 = dword ptr 0Ch .text:00000040 .text:00000040 push ebp .text:00000041 mov ebp, esp .text:00000043 push ecx .text:00000044 mov eax, [ebp+arg_4] .text:00000047 push eax .text:00000048 call _malloc .text:0000004D add esp, 4 .text:00000050 mov [ebp+var_4], eax .text:00000053 mov eax, [ebp+var_4] .text:00000056 mov esp, ebp .text:00000058 pop ebp .text:00000059 retn .text:00000059 _ExAllocatePoolWithTag endp .text:00000059 .text:00000059 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:0000005A align 10h .text:00000060 .text:00000060 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:00000060 .text:00000060 ; Attributes: bp-based frame .text:00000060 .text:00000060 public _MmPageEntireDriver .text:00000060 _MmPageEntireDriver proc near ; CODE XREF: _DriverEntry+17p .text:00000060 push ebp .text:00000061 mov ebp, esp .text:00000063 pop ebp .text:00000064 retn .text:00000064 _MmPageEntireDriver endp .text:00000064 .text:00000064 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000065 align 10h .text:00000070 .text:00000070 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:00000070 .text:00000070 ; Attributes: bp-based frame .text:00000070 .text:00000070 public _ExInitializeFastMutex .text:00000070 _ExInitializeFastMutex proc near .text:00000070 push ebp .text:00000071 mov ebp, esp .text:00000073 pop ebp .text:00000074 retn .text:00000074 _ExInitializeFastMutex endp .text:00000074 .text:00000074 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000075 align 10h .text:00000080 .text:00000080 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:00000080 .text:00000080 ; Attributes: bp-based frame .text:00000080 .text:00000080 public _InitializeObjectAttributes .text:00000080 _InitializeObjectAttributes proc near ; CODE XREF: _FlQueueIrpToThread+A9p .text:00000080 push ebp .text:00000081 mov ebp, esp .text:00000083 pop ebp .text:00000084 retn .text:00000084 _InitializeObjectAttributes endp .text:00000084 .text:00000084 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000085 align 10h .text:00000090 .text:00000090 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:00000090 .text:00000090 ; Attributes: bp-based frame .text:00000090 .text:00000090 public _PsCreateSystemThread .text:00000090 _PsCreateSystemThread proc near ; CODE XREF: _FlQueueIrpToThread+B1p .text:00000090 .text:00000090 var_8 = dword ptr -8 .text:00000090 var_4 = dword ptr -4 .text:00000090 .text:00000090 push ebp .text:00000091 mov ebp, esp .text:00000093 sub esp, 8 .text:00000096 call _SdvMakeChoice .text:0000009B and eax, 1 .text:0000009E mov [ebp+var_4], eax .text:000000A1 mov eax, [ebp+var_4] .text:000000A4 mov [ebp+var_8], eax .text:000000A7 cmp [ebp+var_8], 0 .text:000000AB jz short loc_AF .text:000000AD jmp short loc_B6 .text:000000AF ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:000000AF .text:000000AF loc_AF: ; CODE XREF: _PsCreateSystemThread+1Bj .text:000000AF mov eax, 1 .text:000000B4 jmp short loc_B9 .text:000000B6 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:000000B6 .text:000000B6 loc_B6: ; CODE XREF: _PsCreateSystemThread+1Dj .text:000000B6 or eax, 0FFFFFFFFh .text:000000B9 .text:000000B9 loc_B9: ; CODE XREF: _PsCreateSystemThread+24j .text:000000B9 mov esp, ebp .text:000000BB pop ebp .text:000000BC retn .text:000000BC _PsCreateSystemThread endp .text:000000BC .text:000000BC ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:000000BD align 10h .text:000000C0 .text:000000C0 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:000000C0 .text:000000C0 ; Attributes: bp-based frame .text:000000C0 .text:000000C0 public _ObReferenceObjectByHandle .text:000000C0 _ObReferenceObjectByHandle proc near ; CODE XREF: _FlQueueIrpToThread:loc_D55p .text:000000C0 .text:000000C0 var_8 = dword ptr -8 .text:000000C0 var_4 = dword ptr -4 .text:000000C0 .text:000000C0 push ebp .text:000000C1 mov ebp, esp .text:000000C3 sub esp, 8 .text:000000C6 call _SdvMakeChoice .text:000000CB and eax, 1 .text:000000CE mov [ebp+var_4], eax .text:000000D1 mov eax, [ebp+var_4] .text:000000D4 mov [ebp+var_8], eax .text:000000D7 cmp [ebp+var_8], 0 .text:000000DB jz short loc_DF .text:000000DD jmp short loc_E6 .text:000000DF ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:000000DF .text:000000DF loc_DF: ; CODE XREF: _ObReferenceObjectByHandle+1Bj .text:000000DF mov eax, 1 .text:000000E4 jmp short loc_E9 .text:000000E6 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:000000E6 .text:000000E6 loc_E6: ; CODE XREF: _ObReferenceObjectByHandle+1Dj .text:000000E6 or eax, 0FFFFFFFFh .text:000000E9 .text:000000E9 loc_E9: ; CODE XREF: _ObReferenceObjectByHandle+24j .text:000000E9 mov esp, ebp .text:000000EB pop ebp .text:000000EC retn .text:000000EC _ObReferenceObjectByHandle endp .text:000000EC .text:000000EC ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:000000ED align 10h .text:000000F0 .text:000000F0 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:000000F0 .text:000000F0 ; Attributes: bp-based frame .text:000000F0 .text:000000F0 public _ExInterlockedInsertTailList .text:000000F0 _ExInterlockedInsertTailList proc near ; CODE XREF: _FlQueueIrpToThread+156p .text:000000F0 ; _FloppyQueueRequest+7Fp .text:000000F0 push ebp .text:000000F1 mov ebp, esp .text:000000F3 xor eax, eax .text:000000F5 pop ebp .text:000000F6 retn .text:000000F6 _ExInterlockedInsertTailList endp .text:000000F6 .text:000000F6 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:000000F7 align 10h .text:00000100 .text:00000100 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:00000100 .text:00000100 ; Attributes: bp-based frame .text:00000100 .text:00000100 public _KeReleaseSemaphore .text:00000100 _KeReleaseSemaphore proc near ; CODE XREF: _FlQueueIrpToThread+163p .text:00000100 push ebp .text:00000101 mov ebp, esp .text:00000103 xor eax, eax .text:00000105 pop ebp .text:00000106 retn .text:00000106 _KeReleaseSemaphore endp .text:00000106 .text:00000106 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000107 align 10h .text:00000110 .text:00000110 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:00000110 .text:00000110 ; Attributes: bp-based frame .text:00000110 .text:00000110 public _ExAcquireFastMutex .text:00000110 _ExAcquireFastMutex proc near ; CODE XREF: _FloppyStartDevice+20Cp .text:00000110 ; _FloppyPower:loc_AECp ... .text:00000110 push ebp .text:00000111 mov ebp, esp .text:00000113 pop ebp .text:00000114 retn .text:00000114 _ExAcquireFastMutex endp .text:00000114 .text:00000114 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000115 align 10h .text:00000120 .text:00000120 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:00000120 .text:00000120 ; Attributes: bp-based frame .text:00000120 .text:00000120 public _PsTerminateSystemThread .text:00000120 _PsTerminateSystemThread proc near .text:00000120 push ebp .text:00000121 mov ebp, esp .text:00000123 xor eax, eax .text:00000125 pop ebp .text:00000126 retn .text:00000126 _PsTerminateSystemThread endp .text:00000126 .text:00000126 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000127 align 10h .text:00000130 .text:00000130 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:00000130 .text:00000130 ; Attributes: bp-based frame .text:00000130 .text:00000130 public _IoSkipCurrentIrpStackLocation .text:00000130 _IoSkipCurrentIrpStackLocation proc near ; CODE XREF: _FloppyPower+1D5p .text:00000130 ; _FloppyDeviceControl+CEp .text:00000130 push ebp .text:00000131 mov ebp, esp .text:00000133 pop ebp .text:00000134 retn .text:00000134 _IoSkipCurrentIrpStackLocation endp .text:00000134 .text:00000134 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000135 align 10h .text:00000140 .text:00000140 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:00000140 .text:00000140 ; Attributes: bp-based frame .text:00000140 .text:00000140 public _error .text:00000140 _error proc near ; CODE XREF: _main+1AAp .text:00000140 push ebp .text:00000141 mov ebp, esp .text:00000143 pop ebp .text:00000144 retn .text:00000144 _error endp .text:00000144 .text:00000144 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000145 align 10h .text:00000150 .text:00000150 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:00000150 .text:00000150 ; Attributes: bp-based frame .text:00000150 .text:00000150 public _DriverEntry .text:00000150 _DriverEntry proc near ; CODE XREF: _main+44p .text:00000150 ; DATA XREF: _DriverEntry+12o .text:00000150 .text:00000150 var_4 = dword ptr -4 .text:00000150 .text:00000150 push ebp .text:00000151 mov ebp, esp .text:00000153 push ecx .text:00000154 mov [ebp+var_4], 1 .text:0000015B mov eax, 64h ; 'd' .text:00000160 jmp short loc_172 .text:00000162 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000162 push offset _DriverEntry .text:00000167 call _MmPageEntireDriver .text:0000016C add esp, 4 .text:0000016F mov eax, [ebp+var_4] .text:00000172 .text:00000172 loc_172: ; CODE XREF: _DriverEntry+10j .text:00000172 mov esp, ebp .text:00000174 pop ebp .text:00000175 retn .text:00000175 _DriverEntry endp .text:00000175 .text:00000175 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000176 align 10h .text:00000180 .text:00000180 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:00000180 .text:00000180 ; Attributes: bp-based frame .text:00000180 .text:00000180 public _IoGetCurrentIrpStackLocation .text:00000180 _IoGetCurrentIrpStackLocation proc near ; CODE XREF: _FloppyProcessQueuedRequests+46p .text:00000180 ; _FloppyStartDevice+27p ... .text:00000180 .text:00000180 arg_0 = dword ptr 8 .text:00000180 .text:00000180 push ebp .text:00000181 mov ebp, esp .text:00000183 mov eax, [ebp+arg_0] .text:00000186 mov eax, [eax+30h] .text:00000189 pop ebp .text:0000018A retn .text:0000018A _IoGetCurrentIrpStackLocation endp .text:0000018A .text:0000018A ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:0000018B align 10h .text:00000190 .text:00000190 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:00000190 .text:00000190 ; Attributes: bp-based frame .text:00000190 .text:00000190 public _IoGetConfigurationInformation .text:00000190 _IoGetConfigurationInformation proc near .text:00000190 push ebp .text:00000191 mov ebp, esp .text:00000193 push 2Ch ; ',' .text:00000195 call _malloc .text:0000019A add esp, 4 .text:0000019D pop ebp .text:0000019E retn .text:0000019E _IoGetConfigurationInformation endp .text:0000019E .text:0000019E ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:0000019F align 10h .text:000001A0 .text:000001A0 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:000001A0 .text:000001A0 ; Attributes: bp-based frame .text:000001A0 .text:000001A0 public _FloppyPageEntireDriver .text:000001A0 _FloppyPageEntireDriver proc near ; CODE XREF: _FloppyProcessQueuedRequests+106p .text:000001A0 ; _FloppyPnp:loc_A1Cp ... .text:000001A0 push ebp .text:000001A1 mov ebp, esp .text:000001A3 pop ebp .text:000001A4 retn .text:000001A4 _FloppyPageEntireDriver endp .text:000001A4 .text:000001A4 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:000001A5 align 10h .text:000001B0 .text:000001B0 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:000001B0 .text:000001B0 ; Attributes: bp-based frame .text:000001B0 .text:000001B0 public _ExFreePool .text:000001B0 _ExFreePool proc near .text:000001B0 push ebp .text:000001B1 mov ebp, esp .text:000001B3 pop ebp .text:000001B4 retn .text:000001B4 _ExFreePool endp .text:000001B4 .text:000001B4 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:000001B5 align 10h .text:000001C0 .text:000001C0 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:000001C0 .text:000001C0 ; Attributes: bp-based frame .text:000001C0 .text:000001C0 public _IoDeleteDevice .text:000001C0 _IoDeleteDevice proc near .text:000001C0 push ebp .text:000001C1 mov ebp, esp .text:000001C3 pop ebp .text:000001C4 retn .text:000001C4 _IoDeleteDevice endp .text:000001C4 .text:000001C4 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:000001C5 align 10h .text:000001D0 .text:000001D0 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:000001D0 .text:000001D0 ; Attributes: bp-based frame .text:000001D0 .text:000001D0 public _IoDeassignArcName .text:000001D0 _IoDeassignArcName proc near .text:000001D0 push ebp .text:000001D1 mov ebp, esp .text:000001D3 pop ebp .text:000001D4 retn .text:000001D4 _IoDeassignArcName endp .text:000001D4 .text:000001D4 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:000001D5 align 10h .text:000001E0 .text:000001E0 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:000001E0 .text:000001E0 ; Attributes: bp-based frame .text:000001E0 .text:000001E0 public _RtlInitUnicodeString .text:000001E0 _RtlInitUnicodeString proc near .text:000001E0 push ebp .text:000001E1 mov ebp, esp .text:000001E3 pop ebp .text:000001E4 retn .text:000001E4 _RtlInitUnicodeString endp .text:000001E4 .text:000001E4 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:000001E5 align 10h .text:000001F0 .text:000001F0 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:000001F0 .text:000001F0 ; Attributes: bp-based frame .text:000001F0 .text:000001F0 public _RtlFreeUnicodeString .text:000001F0 _RtlFreeUnicodeString proc near .text:000001F0 push ebp .text:000001F1 mov ebp, esp .text:000001F3 pop ebp .text:000001F4 retn .text:000001F4 _RtlFreeUnicodeString endp .text:000001F4 .text:000001F4 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:000001F5 align 10h .text:00000200 .text:00000200 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:00000200 .text:00000200 ; Attributes: bp-based frame .text:00000200 .text:00000200 public _IoSetDeviceInterfaceState .text:00000200 _IoSetDeviceInterfaceState proc near ; CODE XREF: _FloppyStartDevice+1D3p .text:00000200 ; _FloppyStartDevice+1F7p .text:00000200 .text:00000200 var_8 = dword ptr -8 .text:00000200 var_4 = dword ptr -4 .text:00000200 .text:00000200 push ebp .text:00000201 mov ebp, esp .text:00000203 sub esp, 8 .text:00000206 call _SdvMakeChoice .text:0000020B and eax, 3 .text:0000020E mov [ebp+var_4], eax .text:00000211 mov eax, [ebp+var_4] .text:00000214 mov [ebp+var_8], eax .text:00000217 cmp [ebp+var_8], 0 .text:0000021B jz short loc_225 .text:0000021D cmp [ebp+var_8], 1 .text:00000221 jz short loc_22C .text:00000223 jmp short loc_230 .text:00000225 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000225 .text:00000225 loc_225: ; CODE XREF: _IoSetDeviceInterfaceState+1Bj .text:00000225 mov eax, 1 .text:0000022A jmp short loc_235 .text:0000022C ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:0000022C .text:0000022C loc_22C: ; CODE XREF: _IoSetDeviceInterfaceState+21j .text:0000022C xor eax, eax .text:0000022E jmp short loc_235 .text:00000230 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000230 .text:00000230 loc_230: ; CODE XREF: _IoSetDeviceInterfaceState+23j .text:00000230 mov eax, 0FFFFFFDEh .text:00000235 .text:00000235 loc_235: ; CODE XREF: _IoSetDeviceInterfaceState+2Aj .text:00000235 ; _IoSetDeviceInterfaceState+2Ej .text:00000235 mov esp, ebp .text:00000237 pop ebp .text:00000238 retn .text:00000238 _IoSetDeviceInterfaceState endp .text:00000238 .text:00000238 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000239 align 10h .text:00000240 .text:00000240 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:00000240 .text:00000240 ; Attributes: bp-based frame .text:00000240 .text:00000240 public _IoBuildDeviceIoControlRequest .text:00000240 _IoBuildDeviceIoControlRequest proc near ; CODE XREF: _FlFdcDeviceIo+16p .text:00000240 .text:00000240 var_8 = dword ptr -8 .text:00000240 var_4 = dword ptr -4 .text:00000240 .text:00000240 push ebp .text:00000241 mov ebp, esp .text:00000243 sub esp, 8 .text:00000246 call _SdvMakeChoice .text:0000024B and eax, 1 .text:0000024E mov [ebp+var_4], eax .text:00000251 mov eax, [ebp+var_4] .text:00000254 mov [ebp+var_8], eax .text:00000257 cmp [ebp+var_8], 0 .text:0000025B jz short loc_25F .text:0000025D jmp short loc_26B .text:0000025F ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:0000025F .text:0000025F loc_25F: ; CODE XREF: _IoBuildDeviceIoControlRequest+1Bj .text:0000025F push 38h ; '8' .text:00000261 call _malloc .text:00000266 add esp, 4 .text:00000269 jmp short loc_26D .text:0000026B ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:0000026B .text:0000026B loc_26B: ; CODE XREF: _IoBuildDeviceIoControlRequest+1Dj .text:0000026B xor eax, eax .text:0000026D .text:0000026D loc_26D: ; CODE XREF: _IoBuildDeviceIoControlRequest+29j .text:0000026D mov esp, ebp .text:0000026F pop ebp .text:00000270 retn .text:00000270 _IoBuildDeviceIoControlRequest endp .text:00000270 .text:00000270 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000271 align 10h .text:00000280 .text:00000280 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:00000280 .text:00000280 ; Attributes: bp-based frame .text:00000280 .text:00000280 public _FloppyResetDriverPaging .text:00000280 _FloppyResetDriverPaging proc near ; CODE XREF: _FloppyPnp+Dp .text:00000280 ; _FlQueueIrpToThread+98p ... .text:00000280 push ebp .text:00000281 mov ebp, esp .text:00000283 pop ebp .text:00000284 retn .text:00000284 _FloppyResetDriverPaging endp .text:00000284 .text:00000284 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000285 align 10h .text:00000290 .text:00000290 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:00000290 .text:00000290 ; Attributes: bp-based frame .text:00000290 .text:00000290 public _ExInterlockedRemoveHeadList .text:00000290 _ExInterlockedRemoveHeadList proc near ; CODE XREF: _FloppyProcessQueuedRequests+24p .text:00000290 push ebp .text:00000291 mov ebp, esp .text:00000293 xor eax, eax .text:00000295 pop ebp .text:00000296 retn .text:00000296 _ExInterlockedRemoveHeadList endp .text:00000296 .text:00000296 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000297 align 10h .text:000002A0 .text:000002A0 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:000002A0 .text:000002A0 ; Attributes: bp-based frame .text:000002A0 .text:000002A0 public _KeReleaseSpinLock .text:000002A0 _KeReleaseSpinLock proc near ; CODE XREF: _FloppyProcessQueuedRequests+6Cp .text:000002A0 ; _FloppyProcessQueuedRequests+128p ... .text:000002A0 .text:000002A0 arg_0 = dword ptr 8 .text:000002A0 .text:000002A0 push ebp .text:000002A1 mov ebp, esp .text:000002A3 mov eax, [ebp+arg_0] .text:000002A6 cmp dword ptr [eax], 0 .text:000002A9 jnz short loc_2B7 .text:000002AB mov dword ptr ds:_yogi_error, 0 .text:000002B5 jmp short loc_2C0 .text:000002B7 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:000002B7 .text:000002B7 loc_2B7: ; CODE XREF: _KeReleaseSpinLock+9j .text:000002B7 mov ecx, [ebp+arg_0] .text:000002BA mov dword ptr [ecx], 0 .text:000002C0 .text:000002C0 loc_2C0: ; CODE XREF: _KeReleaseSpinLock+15j .text:000002C0 pop ebp .text:000002C1 retn .text:000002C1 _KeReleaseSpinLock endp .text:000002C1 .text:000002C1 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:000002C2 align 10h .text:000002D0 .text:000002D0 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:000002D0 .text:000002D0 ; Attributes: bp-based frame .text:000002D0 .text:000002D0 public _KeAcquireSpinLock .text:000002D0 _KeAcquireSpinLock proc near ; CODE XREF: _FloppyProcessQueuedRequests+Ep .text:000002D0 ; _FloppyProcessQueuedRequests+113p ... .text:000002D0 .text:000002D0 arg_0 = dword ptr 8 .text:000002D0 .text:000002D0 push ebp .text:000002D1 mov ebp, esp .text:000002D3 mov eax, [ebp+arg_0] .text:000002D6 cmp dword ptr [eax], 1 .text:000002D9 jnz short loc_2E7 .text:000002DB mov dword ptr ds:_yogi_error, 1 .text:000002E5 jmp short loc_2F0 .text:000002E7 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:000002E7 .text:000002E7 loc_2E7: ; CODE XREF: _KeAcquireSpinLock+9j .text:000002E7 mov ecx, [ebp+arg_0] .text:000002EA mov dword ptr [ecx], 1 .text:000002F0 .text:000002F0 loc_2F0: ; CODE XREF: _KeAcquireSpinLock+15j .text:000002F0 pop ebp .text:000002F1 retn .text:000002F1 _KeAcquireSpinLock endp .text:000002F1 .text:000002F1 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:000002F2 align 10h .text:00000300 .text:00000300 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:00000300 .text:00000300 ; Attributes: bp-based frame .text:00000300 .text:00000300 public _KeInitializeEvent .text:00000300 _KeInitializeEvent proc near ; CODE XREF: _FlFdcDeviceIo+Ep .text:00000300 ; _FloppyStartDevice+3Dp .text:00000300 push ebp .text:00000301 mov ebp, esp .text:00000303 pop ebp .text:00000304 retn .text:00000304 _KeInitializeEvent endp .text:00000304 .text:00000304 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000305 align 10h .text:00000310 .text:00000310 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:00000310 .text:00000310 ; Attributes: bp-based frame .text:00000310 .text:00000310 public _ExReleaseFastMutex .text:00000310 _ExReleaseFastMutex proc near ; CODE XREF: _FloppyStartDevice+224p .text:00000310 ; _FloppyPower+91p ... .text:00000310 push ebp .text:00000311 mov ebp, esp .text:00000313 pop ebp .text:00000314 retn .text:00000314 _ExReleaseFastMutex endp .text:00000314 .text:00000314 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000315 align 10h .text:00000320 .text:00000320 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:00000320 .text:00000320 ; Attributes: bp-based frame .text:00000320 .text:00000320 public _IoCopyCurrentIrpStackLocationToNext .text:00000320 _IoCopyCurrentIrpStackLocationToNext proc near .text:00000320 ; CODE XREF: _FloppyStartDevice+49p .text:00000320 push ebp .text:00000321 mov ebp, esp .text:00000323 pop ebp .text:00000324 retn .text:00000324 _IoCopyCurrentIrpStackLocationToNext endp .text:00000324 .text:00000324 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000325 align 10h .text:00000330 .text:00000330 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:00000330 .text:00000330 ; Attributes: bp-based frame .text:00000330 .text:00000330 public _IoQueryDeviceDescription .text:00000330 _IoQueryDeviceDescription proc near ; CODE XREF: _FloppyStartDevice+181p .text:00000330 .text:00000330 var_8 = dword ptr -8 .text:00000330 var_4 = dword ptr -4 .text:00000330 .text:00000330 push ebp .text:00000331 mov ebp, esp .text:00000333 sub esp, 8 .text:00000336 call _SdvMakeChoice .text:0000033B and eax, 1 .text:0000033E mov [ebp+var_4], eax .text:00000341 mov eax, [ebp+var_4] .text:00000344 mov [ebp+var_8], eax .text:00000347 cmp [ebp+var_8], 0 .text:0000034B jz short loc_34F .text:0000034D jmp short loc_356 .text:0000034F ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:0000034F .text:0000034F loc_34F: ; CODE XREF: _IoQueryDeviceDescription+1Bj .text:0000034F mov eax, 1 .text:00000354 jmp short loc_359 .text:00000356 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000356 .text:00000356 loc_356: ; CODE XREF: _IoQueryDeviceDescription+1Dj .text:00000356 or eax, 0FFFFFFFFh .text:00000359 .text:00000359 loc_359: ; CODE XREF: _IoQueryDeviceDescription+24j .text:00000359 mov esp, ebp .text:0000035B pop ebp .text:0000035C retn .text:0000035C _IoQueryDeviceDescription endp .text:0000035C .text:0000035C ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:0000035D align 10h .text:00000360 .text:00000360 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:00000360 .text:00000360 ; Attributes: bp-based frame .text:00000360 .text:00000360 public _KeWaitForSingleObject .text:00000360 _KeWaitForSingleObject proc near ; CODE XREF: _FlFdcDeviceIo+5Cp .text:00000360 ; _FloppyStartDevice+84p ... .text:00000360 .text:00000360 var_8 = dword ptr -8 .text:00000360 var_4 = dword ptr -4 .text:00000360 .text:00000360 push ebp .text:00000361 mov ebp, esp .text:00000363 sub esp, 8 .text:00000366 call _SdvMakeChoice .text:0000036B and eax, 1 .text:0000036E mov [ebp+var_4], eax .text:00000371 mov eax, [ebp+var_4] .text:00000374 mov [ebp+var_8], eax .text:00000377 cmp [ebp+var_8], 0 .text:0000037B jz short loc_37F .text:0000037D jmp short loc_386 .text:0000037F ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:0000037F .text:0000037F loc_37F: ; CODE XREF: _KeWaitForSingleObject+1Bj .text:0000037F mov eax, 1 .text:00000384 jmp short loc_389 .text:00000386 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000386 .text:00000386 loc_386: ; CODE XREF: _KeWaitForSingleObject+1Dj .text:00000386 or eax, 0FFFFFFFFh .text:00000389 .text:00000389 loc_389: ; CODE XREF: _KeWaitForSingleObject+24j .text:00000389 mov esp, ebp .text:0000038B pop ebp .text:0000038C retn .text:0000038C _KeWaitForSingleObject endp .text:0000038C .text:0000038C ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:0000038D align 10h .text:00000390 .text:00000390 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:00000390 .text:00000390 ; Attributes: bp-based frame .text:00000390 .text:00000390 public _IoSetCompletionRoutine .text:00000390 _IoSetCompletionRoutine proc near ; CODE XREF: _FloppyStartDevice+51p .text:00000390 push ebp .text:00000391 mov ebp, esp .text:00000393 pop ebp .text:00000394 retn .text:00000394 _IoSetCompletionRoutine endp .text:00000394 .text:00000394 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000395 align 10h .text:000003A0 .text:000003A0 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:000003A0 .text:000003A0 ; Attributes: bp-based frame .text:000003A0 .text:000003A0 public _IoRegisterDeviceInterface .text:000003A0 _IoRegisterDeviceInterface proc near ; CODE XREF: _FloppyStartDevice+1B9p .text:000003A0 ; _FloppyStartDevice+1DEp .text:000003A0 .text:000003A0 var_8 = dword ptr -8 .text:000003A0 var_4 = dword ptr -4 .text:000003A0 .text:000003A0 push ebp .text:000003A1 mov ebp, esp .text:000003A3 sub esp, 8 .text:000003A6 call _SdvMakeChoice .text:000003AB and eax, 3 .text:000003AE mov [ebp+var_4], eax .text:000003B1 mov eax, [ebp+var_4] .text:000003B4 mov [ebp+var_8], eax .text:000003B7 cmp [ebp+var_8], 0 .text:000003BB jz short loc_3C5 .text:000003BD cmp [ebp+var_8], 1 .text:000003C1 jz short loc_3CC .text:000003C3 jmp short loc_3D1 .text:000003C5 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:000003C5 .text:000003C5 loc_3C5: ; CODE XREF: _IoRegisterDeviceInterface+1Bj .text:000003C5 mov eax, 1 .text:000003CA jmp short loc_3D6 .text:000003CC ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:000003CC .text:000003CC loc_3CC: ; CODE XREF: _IoRegisterDeviceInterface+21j .text:000003CC or eax, 0FFFFFFFFh .text:000003CF jmp short loc_3D6 .text:000003D1 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:000003D1 .text:000003D1 loc_3D1: ; CODE XREF: _IoRegisterDeviceInterface+23j .text:000003D1 mov eax, 0FFFFFFF6h .text:000003D6 .text:000003D6 loc_3D6: ; CODE XREF: _IoRegisterDeviceInterface+2Aj .text:000003D6 ; _IoRegisterDeviceInterface+2Fj .text:000003D6 mov esp, ebp .text:000003D8 pop ebp .text:000003D9 retn .text:000003D9 _IoRegisterDeviceInterface endp .text:000003D9 .text:000003D9 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:000003DA align 10h .text:000003E0 .text:000003E0 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:000003E0 .text:000003E0 ; Attributes: bp-based frame .text:000003E0 .text:000003E0 public _IoCompleteRequest .text:000003E0 _IoCompleteRequest proc near ; CODE XREF: _FloppyProcessQueuedRequests+A1p .text:000003E0 ; _FloppyProcessQueuedRequests+F8p ... .text:000003E0 push ebp .text:000003E1 mov ebp, esp .text:000003E3 pop ebp .text:000003E4 retn .text:000003E4 _IoCompleteRequest endp .text:000003E4 .text:000003E4 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:000003E5 align 10h .text:000003F0 .text:000003F0 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:000003F0 .text:000003F0 ; Attributes: bp-based frame .text:000003F0 .text:000003F0 public _PoStartNextPowerIrp .text:000003F0 _PoStartNextPowerIrp proc near ; CODE XREF: _FloppyPower+9Dp .text:000003F0 ; _FloppyPower+1C9p .text:000003F0 push ebp .text:000003F1 mov ebp, esp .text:000003F3 pop ebp .text:000003F4 retn .text:000003F4 _PoStartNextPowerIrp endp .text:000003F4 .text:000003F4 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:000003F5 align 10h .text:00000400 .text:00000400 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:00000400 .text:00000400 ; Attributes: bp-based frame .text:00000400 .text:00000400 public _FlTerminateFloppyThread .text:00000400 _FlTerminateFloppyThread proc near .text:00000400 push ebp .text:00000401 mov ebp, esp .text:00000403 pop ebp .text:00000404 retn .text:00000404 _FlTerminateFloppyThread endp .text:00000404 .text:00000404 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000405 align 10h .text:00000410 .text:00000410 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:00000410 .text:00000410 ; Attributes: bp-based frame .text:00000410 .text:00000410 public _FloppyProcessQueuedRequests .text:00000410 _FloppyProcessQueuedRequests proc near ; CODE XREF: _FloppyStartDevice+230p .text:00000410 .text:00000410 var_14 = dword ptr -14h .text:00000410 var_10 = dword ptr -10h .text:00000410 var_C = dword ptr -0Ch .text:00000410 var_8 = dword ptr -8 .text:00000410 var_4 = dword ptr -4 .text:00000410 arg_0 = dword ptr 8 .text:00000410 .text:00000410 push ebp .text:00000411 mov ebp, esp .text:00000413 sub esp, 14h .text:00000416 lea eax, [ebp+var_8] .text:00000419 push eax .text:0000041A mov ecx, [ebp+arg_0] .text:0000041D push ecx .text:0000041E call _KeAcquireSpinLock .text:00000423 add esp, 8 .text:00000426 .text:00000426 loc_426: ; CODE XREF: _FloppyProcessQueuedRequests+11Bj .text:00000426 mov edx, [ebp+arg_0] .text:00000429 add edx, 20h ; ' ' .text:0000042C push edx .text:0000042D mov eax, [ebp+arg_0] .text:00000430 add eax, 18h .text:00000433 push eax .text:00000434 call _ExInterlockedRemoveHeadList .text:00000439 add esp, 8 .text:0000043C mov [ebp+var_4], eax .text:0000043F cmp [ebp+var_4], 0 .text:00000443 jz loc_530 .text:00000449 mov ecx, [ebp+var_C] .text:0000044C cmp dword ptr [ecx+20h], 0 .text:00000450 jz short loc_463 .text:00000452 mov edx, [ebp+var_C] .text:00000455 push edx .text:00000456 call _IoGetCurrentIrpStackLocation .text:0000045B add esp, 4 .text:0000045E mov [ebp+var_10], eax .text:00000461 jmp short loc_474 .text:00000463 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000463 .text:00000463 loc_463: ; CODE XREF: _FloppyProcessQueuedRequests+40j .text:00000463 mov eax, [ebp+var_C] .text:00000466 mov dword ptr [eax+28h], 0 .text:0000046D mov [ebp+var_C], 0 .text:00000474 .text:00000474 loc_474: ; CODE XREF: _FloppyProcessQueuedRequests+51j .text:00000474 mov ecx, [ebp+var_8] .text:00000477 push ecx .text:00000478 mov edx, [ebp+arg_0] .text:0000047B push edx .text:0000047C call _KeReleaseSpinLock .text:00000481 add esp, 8 .text:00000484 cmp [ebp+var_C], 0 .text:00000488 jz loc_510 .text:0000048E mov eax, [ebp+arg_0] .text:00000491 cmp dword ptr [eax+10h], 0 .text:00000495 jz short loc_4BB .text:00000497 mov ecx, [ebp+var_C] .text:0000049A mov dword ptr [ecx+10h], 0 .text:000004A1 mov edx, [ebp+var_C] .text:000004A4 mov dword ptr [edx+0Ch], 0FFFFFFC8h .text:000004AB push 0 .text:000004AD mov eax, [ebp+var_C] .text:000004B0 push eax .text:000004B1 call _IoCompleteRequest .text:000004B6 add esp, 8 .text:000004B9 jmp short loc_510 .text:000004BB ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:000004BB .text:000004BB loc_4BB: ; CODE XREF: _FloppyProcessQueuedRequests+85j .text:000004BB mov ecx, [ebp+var_10] .text:000004BE mov edx, [ecx] .text:000004C0 mov [ebp+var_14], edx .text:000004C3 cmp [ebp+var_14], 3 .text:000004C7 jl short loc_4EE .text:000004C9 cmp [ebp+var_14], 4 .text:000004CD jle short loc_4D7 .text:000004CF cmp [ebp+var_14], 0Eh .text:000004D3 jz short loc_4D9 .text:000004D5 jmp short loc_4EE .text:000004D7 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:000004D7 .text:000004D7 loc_4D7: ; CODE XREF: _FloppyProcessQueuedRequests+BDj .text:000004D7 jmp short loc_510 .text:000004D9 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:000004D9 .text:000004D9 loc_4D9: ; CODE XREF: _FloppyProcessQueuedRequests+C3j .text:000004D9 mov eax, [ebp+var_C] .text:000004DC push eax .text:000004DD mov ecx, [ebp+arg_0] .text:000004E0 mov edx, [ecx+24h] .text:000004E3 push edx .text:000004E4 call _FloppyDeviceControl .text:000004E9 add esp, 8 .text:000004EC jmp short loc_510 .text:000004EE ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:000004EE .text:000004EE loc_4EE: ; CODE XREF: _FloppyProcessQueuedRequests+B7j .text:000004EE ; _FloppyProcessQueuedRequests+C5j .text:000004EE mov eax, [ebp+var_C] .text:000004F1 mov dword ptr [eax+10h], 0 .text:000004F8 mov ecx, [ebp+var_C] .text:000004FB mov dword ptr [ecx+0Ch], 0FFFFFFFFh .text:00000502 push 0 .text:00000504 mov edx, [ebp+var_C] .text:00000507 push edx .text:00000508 call _IoCompleteRequest .text:0000050D add esp, 8 .text:00000510 .text:00000510 loc_510: ; CODE XREF: _FloppyProcessQueuedRequests+78j .text:00000510 ; _FloppyProcessQueuedRequests+A9j ... .text:00000510 cmp [ebp+var_C], 0 .text:00000514 jz short loc_51B .text:00000516 call _FloppyPageEntireDriver .text:0000051B .text:0000051B loc_51B: ; CODE XREF: _FloppyProcessQueuedRequests+104j .text:0000051B lea eax, [ebp+var_8] .text:0000051E push eax .text:0000051F mov ecx, [ebp+arg_0] .text:00000522 push ecx .text:00000523 call _KeAcquireSpinLock .text:00000528 add esp, 8 .text:0000052B jmp loc_426 .text:00000530 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000530 .text:00000530 loc_530: ; CODE XREF: _FloppyProcessQueuedRequests+33j .text:00000530 mov edx, [ebp+var_8] .text:00000533 push edx .text:00000534 mov eax, [ebp+arg_0] .text:00000537 push eax .text:00000538 call _KeReleaseSpinLock .text:0000053D add esp, 8 .text:00000540 mov esp, ebp .text:00000542 pop ebp .text:00000543 retn .text:00000543 _FloppyProcessQueuedRequests endp .text:00000543 .text:00000543 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000544 align 10h .text:00000550 .text:00000550 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:00000550 .text:00000550 ; Attributes: bp-based frame .text:00000550 .text:00000550 public _IoCallDriver .text:00000550 _IoCallDriver proc near ; CODE XREF: _FlFdcDeviceIo+3Fp .text:00000550 ; _FloppyStartDevice+61p ... .text:00000550 .text:00000550 var_14 = dword ptr -14h .text:00000550 var_10 = dword ptr -10h .text:00000550 var_C = dword ptr -0Ch .text:00000550 arg_4 = dword ptr 0Ch .text:00000550 .text:00000550 push ebp .text:00000551 mov ebp, esp .text:00000553 sub esp, 14h .text:00000556 call _SdvMakeChoice .text:0000055B and eax, 3 .text:0000055E mov [ebp+var_10], eax .text:00000561 mov eax, [ebp+var_10] .text:00000564 mov [ebp+var_14], eax .text:00000567 cmp [ebp+var_14], 0 .text:0000056B jz short loc_575 .text:0000056D cmp [ebp+var_14], 1 .text:00000571 jz short loc_592 .text:00000573 jmp short loc_5AF .text:00000575 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000575 .text:00000575 loc_575: ; CODE XREF: _IoCallDriver+1Bj .text:00000575 mov ecx, [ebp+arg_4] .text:00000578 mov dword ptr [ecx+0Ch], 1 .text:0000057F mov [ebp+var_C], 1 .text:00000586 mov edx, [ebp+arg_4] .text:00000589 mov dword ptr [edx+14h], 0 .text:00000590 jmp short loc_5C0 .text:00000592 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000592 .text:00000592 loc_592: ; CODE XREF: _IoCallDriver+21j .text:00000592 mov eax, [ebp+arg_4] .text:00000595 mov dword ptr [eax+0Ch], 0FFFFFFFFh .text:0000059C mov [ebp+var_C], 0FFFFFFFFh .text:000005A3 mov ecx, [ebp+arg_4] .text:000005A6 mov dword ptr [ecx+14h], 0 .text:000005AD jmp short loc_5C0 .text:000005AF ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:000005AF .text:000005AF loc_5AF: ; CODE XREF: _IoCallDriver+23j .text:000005AF mov [ebp+var_C], 0FFFFFF99h .text:000005B6 mov edx, [ebp+arg_4] .text:000005B9 mov dword ptr [edx+14h], 1 .text:000005C0 .text:000005C0 loc_5C0: ; CODE XREF: _IoCallDriver+40j .text:000005C0 ; _IoCallDriver+5Dj .text:000005C0 mov eax, [ebp+var_C] .text:000005C3 mov esp, ebp .text:000005C5 pop ebp .text:000005C6 retn .text:000005C6 _IoCallDriver endp .text:000005C6 .text:000005C6 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:000005C7 align 10h .text:000005D0 .text:000005D0 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:000005D0 .text:000005D0 ; Attributes: bp-based frame .text:000005D0 .text:000005D0 public _PoCallDriver .text:000005D0 _PoCallDriver proc near ; CODE XREF: _FloppyPower+1E8p .text:000005D0 .text:000005D0 var_14 = dword ptr -14h .text:000005D0 var_10 = dword ptr -10h .text:000005D0 var_C = dword ptr -0Ch .text:000005D0 arg_4 = dword ptr 0Ch .text:000005D0 .text:000005D0 push ebp .text:000005D1 mov ebp, esp .text:000005D3 sub esp, 14h .text:000005D6 call _SdvMakeChoice .text:000005DB and eax, 3 .text:000005DE mov [ebp+var_10], eax .text:000005E1 mov eax, [ebp+var_10] .text:000005E4 mov [ebp+var_14], eax .text:000005E7 cmp [ebp+var_14], 0 .text:000005EB jz short loc_5F5 .text:000005ED cmp [ebp+var_14], 1 .text:000005F1 jz short loc_612 .text:000005F3 jmp short loc_62F .text:000005F5 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:000005F5 .text:000005F5 loc_5F5: ; CODE XREF: _PoCallDriver+1Bj .text:000005F5 mov ecx, [ebp+arg_4] .text:000005F8 mov dword ptr [ecx+0Ch], 1 .text:000005FF mov [ebp+var_C], 1 .text:00000606 mov edx, [ebp+arg_4] .text:00000609 mov dword ptr [edx+14h], 0 .text:00000610 jmp short loc_640 .text:00000612 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000612 .text:00000612 loc_612: ; CODE XREF: _PoCallDriver+21j .text:00000612 mov eax, [ebp+arg_4] .text:00000615 mov dword ptr [eax+0Ch], 0FFFFFFFFh .text:0000061C mov [ebp+var_C], 0FFFFFFFFh .text:00000623 mov ecx, [ebp+arg_4] .text:00000626 mov dword ptr [ecx+14h], 0 .text:0000062D jmp short loc_640 .text:0000062F ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:0000062F .text:0000062F loc_62F: ; CODE XREF: _PoCallDriver+23j .text:0000062F mov [ebp+var_C], 0FFFFFF99h .text:00000636 mov edx, [ebp+arg_4] .text:00000639 mov dword ptr [edx+14h], 1 .text:00000640 .text:00000640 loc_640: ; CODE XREF: _PoCallDriver+40j .text:00000640 ; _PoCallDriver+5Dj .text:00000640 mov eax, [ebp+var_C] .text:00000643 mov esp, ebp .text:00000645 pop ebp .text:00000646 retn .text:00000646 _PoCallDriver endp .text:00000646 .text:00000646 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000647 align 10h .text:00000650 .text:00000650 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:00000650 .text:00000650 ; Attributes: bp-based frame .text:00000650 .text:00000650 public _FlFdcDeviceIo .text:00000650 _FlFdcDeviceIo proc near ; CODE XREF: _FloppyStartDevice+BCp .text:00000650 .text:00000650 var_20 = dword ptr -20h .text:00000650 var_1C = dword ptr -1Ch .text:00000650 var_18 = dword ptr -18h .text:00000650 var_4 = dword ptr -4 .text:00000650 arg_0 = dword ptr 8 .text:00000650 .text:00000650 push ebp .text:00000651 mov ebp, esp .text:00000653 sub esp, 28h .text:00000656 push 0 .text:00000658 push 0 .text:0000065A lea eax, [ebp+var_18] .text:0000065D push eax .text:0000065E call _KeInitializeEvent .text:00000663 add esp, 0Ch .text:00000666 call _IoBuildDeviceIoControlRequest .text:0000066B mov [ebp+var_1C], eax .text:0000066E cmp [ebp+var_1C], 0 .text:00000672 jnz short loc_67B .text:00000674 mov eax, 64h ; 'd' .text:00000679 jmp short loc_6B9 .text:0000067B ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:0000067B .text:0000067B loc_67B: ; CODE XREF: _FlFdcDeviceIo+22j .text:0000067B mov ecx, [ebp+var_1C] .text:0000067E mov edx, [ecx+30h] .text:00000681 sub edx, 34h ; '4' .text:00000684 mov [ebp+var_4], edx .text:00000687 mov eax, [ebp+var_1C] .text:0000068A push eax .text:0000068B mov ecx, [ebp+arg_0] .text:0000068E push ecx .text:0000068F call _IoCallDriver .text:00000694 add esp, 8 .text:00000697 mov [ebp+var_20], eax .text:0000069A cmp [ebp+var_20], 0FFFFFF99h .text:0000069E jnz short loc_6B4 .text:000006A0 push 0 .text:000006A2 push 0 .text:000006A4 push 0 .text:000006A6 push 0 .text:000006A8 lea edx, [ebp+var_18] .text:000006AB push edx .text:000006AC call _KeWaitForSingleObject .text:000006B1 add esp, 14h .text:000006B4 .text:000006B4 loc_6B4: ; CODE XREF: _FlFdcDeviceIo+4Ej .text:000006B4 mov eax, 1 .text:000006B9 .text:000006B9 loc_6B9: ; CODE XREF: _FlFdcDeviceIo+29j .text:000006B9 mov esp, ebp .text:000006BB pop ebp .text:000006BC retn .text:000006BC _FlFdcDeviceIo endp .text:000006BC .text:000006BC ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:000006BD align 10h .text:000006C0 .text:000006C0 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:000006C0 .text:000006C0 ; Attributes: bp-based frame .text:000006C0 .text:000006C0 public _FloppyStartDevice .text:000006C0 _FloppyStartDevice proc near .text:000006C0 .text:000006C0 var_A8 = dword ptr -0A8h .text:000006C0 var_A4 = dword ptr -0A4h .text:000006C0 var_A0 = dword ptr -0A0h .text:000006C0 var_9C = dword ptr -9Ch .text:000006C0 var_98 = dword ptr -98h .text:000006C0 var_8C = dword ptr -8Ch .text:000006C0 var_80 = dword ptr -80h .text:000006C0 var_78 = dword ptr -78h .text:000006C0 var_74 = dword ptr -74h .text:000006C0 var_70 = dword ptr -70h .text:000006C0 var_2C = dword ptr -2Ch .text:000006C0 var_28 = dword ptr -28h .text:000006C0 var_20 = dword ptr -20h .text:000006C0 var_C = dword ptr -0Ch .text:000006C0 var_8 = dword ptr -8 .text:000006C0 var_4 = dword ptr -4 .text:000006C0 arg_0 = dword ptr 8 .text:000006C0 arg_4 = dword ptr 0Ch .text:000006C0 .text:000006C0 push ebp .text:000006C1 mov ebp, esp .text:000006C3 sub esp, 0A8h .text:000006C9 mov [ebp+var_A4], 0Dh .text:000006D3 mov [ebp+var_4], 1Ah .text:000006DA mov eax, [ebp+arg_0] .text:000006DD mov ecx, [eax+24h] .text:000006E0 mov [ebp+var_8], ecx .text:000006E3 mov edx, [ebp+arg_4] .text:000006E6 push edx .text:000006E7 call _IoGetCurrentIrpStackLocation .text:000006EC add esp, 4 .text:000006EF mov [ebp+var_A0], eax .text:000006F5 push 0 .text:000006F7 push 0 .text:000006F9 lea eax, [ebp+var_20] .text:000006FC push eax .text:000006FD call _KeInitializeEvent .text:00000702 add esp, 0Ch .text:00000705 mov ecx, [ebp+arg_4] .text:00000708 push ecx .text:00000709 call _IoCopyCurrentIrpStackLocationToNext .text:0000070E add esp, 4 .text:00000711 call _IoSetCompletionRoutine .text:00000716 mov edx, [ebp+arg_4] .text:00000719 push edx .text:0000071A mov eax, [ebp+var_8] .text:0000071D mov ecx, [eax+8] .text:00000720 push ecx .text:00000721 call _IoCallDriver .text:00000726 add esp, 8 .text:00000729 mov [ebp+var_9C], eax .text:0000072F cmp [ebp+var_9C], 0FFFFFF99h .text:00000736 jnz short loc_75E .text:00000738 push 0 .text:0000073A push 0 .text:0000073C push 0 .text:0000073E push 0 .text:00000740 lea edx, [ebp+var_20] .text:00000743 push edx .text:00000744 call _KeWaitForSingleObject .text:00000749 add esp, 14h .text:0000074C mov [ebp+var_9C], eax .text:00000752 mov eax, [ebp+arg_4] .text:00000755 mov ecx, [eax+0Ch] .text:00000758 mov [ebp+var_9C], ecx .text:0000075E .text:0000075E loc_75E: ; CODE XREF: _FloppyStartDevice+76j .text:0000075E mov [ebp+var_2C], 0 .text:00000765 mov [ebp+var_28], 0 .text:0000076C lea edx, [ebp+var_98] .text:00000772 push edx .text:00000773 push 0Ah .text:00000775 mov eax, [ebp+var_8] .text:00000778 mov ecx, [eax+8] .text:0000077B push ecx .text:0000077C call _FlFdcDeviceIo .text:00000781 add esp, 0Ch .text:00000784 mov [ebp+var_9C], eax .text:0000078A cmp [ebp+var_9C], 0 .text:00000791 jl loc_8F8 .text:00000797 mov edx, [ebp+var_8] .text:0000079A mov eax, [ebp+var_78] .text:0000079D mov [edx+48h], eax .text:000007A0 cmp [ebp+var_74], 0 .text:000007A4 jz short loc_7EC .text:000007A6 cmp [ebp+var_70], 0 .text:000007AA jz short loc_7EC .text:000007AC lea ecx, [ebp+var_98] .text:000007B2 push ecx .text:000007B3 mov edx, [ebp+var_8] .text:000007B6 push edx .text:000007B7 call _FlAcpiConfigureFloppy .text:000007BC add esp, 8 .text:000007BF mov [ebp+var_9C], eax .text:000007C5 mov eax, [ebp+var_8] .text:000007C8 cmp dword ptr [eax+5Ch], 4 .text:000007CC jnz short loc_7EA .text:000007CE mov edx, 1 .text:000007D3 mov ecx, [ebp+var_80] .text:000007D6 shl edx, cl .text:000007D8 mov eax, [ebp+var_8] .text:000007DB or edx, [eax+0C0h] .text:000007E1 mov ecx, [ebp+var_8] .text:000007E4 mov [ecx+0C0h], edx .text:000007EA .text:000007EA loc_7EA: ; CODE XREF: _FloppyStartDevice+10Cj .text:000007EA jmp short loc_859 .text:000007EC ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:000007EC .text:000007EC loc_7EC: ; CODE XREF: _FloppyStartDevice+E4j .text:000007EC ; _FloppyStartDevice+EAj .text:000007EC mov edx, [ebp+var_8] .text:000007EF cmp dword ptr [edx+5Ch], 4 .text:000007F3 jnz short loc_811 .text:000007F5 mov eax, 1 .text:000007FA mov ecx, [ebp+var_80] .text:000007FD shl eax, cl .text:000007FF mov ecx, [ebp+var_8] .text:00000802 or eax, [ecx+0C0h] .text:00000808 mov edx, [ebp+var_8] .text:0000080B mov [edx+0C0h], eax .text:00000811 .text:00000811 loc_811: ; CODE XREF: _FloppyStartDevice+133j .text:00000811 mov [ebp+var_A8], 0 .text:0000081B jmp short loc_82C .text:0000081D ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:0000081D .text:0000081D loc_81D: ; CODE XREF: _FloppyStartDevice:loc_857j .text:0000081D mov eax, [ebp+var_A8] .text:00000823 add eax, 1 .text:00000826 mov [ebp+var_A8], eax .text:0000082C .text:0000082C loc_82C: ; CODE XREF: _FloppyStartDevice+15Bj .text:0000082C cmp [ebp+var_A8], 10h .text:00000833 jge short loc_859 .text:00000835 mov ecx, [ebp+var_A8] .text:0000083B mov [ebp+var_8C], ecx .text:00000841 call _IoQueryDeviceDescription .text:00000846 mov [ebp+var_9C], eax .text:0000084C cmp [ebp+var_9C], 0 .text:00000853 jl short loc_857 .text:00000855 jmp short loc_859 .text:00000857 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000857 .text:00000857 loc_857: ; CODE XREF: _FloppyStartDevice+193j .text:00000857 jmp short loc_81D .text:00000859 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000859 .text:00000859 loc_859: ; CODE XREF: _FloppyStartDevice:loc_7EAj .text:00000859 ; _FloppyStartDevice+173j ... .text:00000859 cmp [ebp+var_9C], 0 .text:00000860 jl loc_8F8 .text:00000866 mov edx, [ebp+var_8] .text:00000869 mov eax, [ebp+var_80] .text:0000086C mov [edx+68h], eax .text:0000086F mov ecx, [ebp+var_8] .text:00000872 mov dword ptr [ecx+6Ch], 0 .text:00000879 call _IoRegisterDeviceInterface .text:0000087E mov [ebp+var_C], eax .text:00000881 cmp [ebp+var_C], 0 .text:00000885 jl short loc_8C2 .text:00000887 push 1 .text:00000889 mov edx, [ebp+var_8] .text:0000088C add edx, 0D4h ; 'Ô' .text:00000892 push edx .text:00000893 call _IoSetDeviceInterfaceState .text:00000898 add esp, 8 .text:0000089B mov [ebp+var_C], eax .text:0000089E call _IoRegisterDeviceInterface .text:000008A3 mov [ebp+var_C], eax .text:000008A6 cmp [ebp+var_C], 0 .text:000008AA jl short loc_8C2 .text:000008AC push 1 .text:000008AE mov eax, [ebp+var_8] .text:000008B1 add eax, 0E0h ; 'à' .text:000008B6 push eax .text:000008B7 call _IoSetDeviceInterfaceState .text:000008BC add esp, 8 .text:000008BF mov [ebp+var_C], eax .text:000008C2 .text:000008C2 loc_8C2: ; CODE XREF: _FloppyStartDevice+1C5j .text:000008C2 ; _FloppyStartDevice+1EAj .text:000008C2 mov ecx, [ebp+var_8] .text:000008C5 mov dword ptr [ecx+0Ch], 1 .text:000008CC call _ExAcquireFastMutex .text:000008D1 mov edx, [ebp+var_8] .text:000008D4 mov dword ptr [edx+14h], 0 .text:000008DB mov eax, [ebp+var_8] .text:000008DE add eax, 10Ch .text:000008E3 push eax .text:000008E4 call _ExReleaseFastMutex .text:000008E9 add esp, 4 .text:000008EC mov ecx, [ebp+var_8] .text:000008EF push ecx .text:000008F0 call _FloppyProcessQueuedRequests .text:000008F5 add esp, 4 .text:000008F8 .text:000008F8 loc_8F8: ; CODE XREF: _FloppyStartDevice+D1j .text:000008F8 ; _FloppyStartDevice+1A0j .text:000008F8 mov edx, [ebp+arg_4] .text:000008FB mov eax, [ebp+var_9C] .text:00000901 mov [edx+0Ch], eax .text:00000904 push 0 .text:00000906 mov ecx, [ebp+arg_4] .text:00000909 push ecx .text:0000090A call _IoCompleteRequest .text:0000090F add esp, 8 .text:00000912 mov eax, [ebp+var_9C] .text:00000918 mov esp, ebp .text:0000091A pop ebp .text:0000091B retn .text:0000091B _FloppyStartDevice endp .text:0000091B .text:0000091B ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:0000091C align 10h .text:00000920 .text:00000920 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:00000920 .text:00000920 ; Attributes: bp-based frame .text:00000920 .text:00000920 public _FlAcpiConfigureFloppy .text:00000920 _FlAcpiConfigureFloppy proc near ; CODE XREF: _FloppyStartDevice+F7p .text:00000920 .text:00000920 var_C = dword ptr -0Ch .text:00000920 var_8 = dword ptr -8 .text:00000920 var_4 = dword ptr -4 .text:00000920 arg_0 = dword ptr 8 .text:00000920 arg_4 = dword ptr 0Ch .text:00000920 .text:00000920 push ebp .text:00000921 mov ebp, esp .text:00000923 sub esp, 0Ch .text:00000926 mov eax, [ebp+arg_0] .text:00000929 add eax, 74h ; 't' .text:0000092C mov [ebp+var_4], eax .text:0000092F mov ecx, [ebp+arg_4] .text:00000932 cmp dword ptr [ecx+28h], 0 .text:00000936 jnz short loc_93D .text:00000938 or eax, 0FFFFFFFFh .text:0000093B jmp short loc_9A1 .text:0000093D ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:0000093D .text:0000093D loc_93D: ; CODE XREF: _FlAcpiConfigureFloppy+16j .text:0000093D mov edx, [ebp+arg_4] .text:00000940 mov eax, [edx+30h] .text:00000943 mov [ebp+var_C], eax .text:00000946 mov ecx, [ebp+var_C] .text:00000949 sub ecx, 1 .text:0000094C mov [ebp+var_C], ecx .text:0000094F cmp [ebp+var_C], 4 .text:00000953 ja short loc_98C .text:00000955 mov edx, [ebp+var_C] .text:00000958 jmp ds:$LN12[edx*4] .text:0000095F .text:0000095F $LN6: ; DATA XREF: .text:$LN12o .text:0000095F mov [ebp+var_8], 0 .text:00000966 jmp short loc_993 .text:00000968 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000968 .text:00000968 $LN5: ; CODE XREF: _FlAcpiConfigureFloppy+38j .text:00000968 ; DATA XREF: .text:000009ACo .text:00000968 mov [ebp+var_8], 1 .text:0000096F jmp short loc_993 .text:00000971 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000971 .text:00000971 $LN4: ; CODE XREF: _FlAcpiConfigureFloppy+38j .text:00000971 ; DATA XREF: .text:000009B0o .text:00000971 mov [ebp+var_8], 2 .text:00000978 jmp short loc_993 .text:0000097A ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:0000097A .text:0000097A $LN3: ; CODE XREF: _FlAcpiConfigureFloppy+38j .text:0000097A ; DATA XREF: .text:000009B4o .text:0000097A mov [ebp+var_8], 3 .text:00000981 jmp short loc_993 .text:00000983 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000983 .text:00000983 $LN2: ; CODE XREF: _FlAcpiConfigureFloppy+38j .text:00000983 ; DATA XREF: .text:000009B8o .text:00000983 mov [ebp+var_8], 4 .text:0000098A jmp short loc_993 .text:0000098C ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:0000098C .text:0000098C loc_98C: ; CODE XREF: _FlAcpiConfigureFloppy+33j .text:0000098C mov [ebp+var_8], 1 .text:00000993 .text:00000993 loc_993: ; CODE XREF: _FlAcpiConfigureFloppy+46j .text:00000993 ; _FlAcpiConfigureFloppy+4Fj ... .text:00000993 mov eax, [ebp+arg_0] .text:00000996 mov ecx, [ebp+var_8] .text:00000999 mov [eax+5Ch], ecx .text:0000099C mov eax, 1 .text:000009A1 .text:000009A1 loc_9A1: ; CODE XREF: _FlAcpiConfigureFloppy+1Bj .text:000009A1 mov esp, ebp .text:000009A3 pop ebp .text:000009A4 retn .text:000009A4 _FlAcpiConfigureFloppy endp .text:000009A4 .text:000009A4 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:000009A5 align 4 .text:000009A8 $LN12 dd offset $LN6 ; DATA XREF: _FlAcpiConfigureFloppy+38r .text:000009AC dd offset $LN5 .text:000009B0 dd offset $LN4 .text:000009B4 dd offset $LN3 .text:000009B8 dd offset $LN2 .text:000009BC align 10h .text:000009C0 .text:000009C0 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:000009C0 .text:000009C0 ; Attributes: bp-based frame .text:000009C0 .text:000009C0 public _FloppyPnp .text:000009C0 _FloppyPnp proc near ; CODE XREF: _main+174p .text:000009C0 .text:000009C0 var_10 = dword ptr -10h .text:000009C0 var_C = dword ptr -0Ch .text:000009C0 var_8 = dword ptr -8 .text:000009C0 arg_0 = dword ptr 8 .text:000009C0 arg_4 = dword ptr 0Ch .text:000009C0 .text:000009C0 push ebp .text:000009C1 mov ebp, esp .text:000009C3 sub esp, 10h .text:000009C6 mov [ebp+var_C], 1 .text:000009CD call _FloppyResetDriverPaging .text:000009D2 mov eax, [ebp+arg_0] .text:000009D5 mov ecx, [eax+24h] .text:000009D8 mov [ebp+var_8], ecx .text:000009DB mov edx, [ebp+arg_4] .text:000009DE push edx .text:000009DF call _IoGetCurrentIrpStackLocation .text:000009E4 add esp, 4 .text:000009E7 mov [ebp+var_10], eax .text:000009EA mov eax, [ebp+var_8] .text:000009ED cmp dword ptr [eax+10h], 0 .text:000009F1 jz short loc_A1C .text:000009F3 mov ecx, [ebp+arg_4] .text:000009F6 mov dword ptr [ecx+10h], 0 .text:000009FD mov edx, [ebp+arg_4] .text:00000A00 mov dword ptr [edx+0Ch], 0FFFFFFC8h .text:00000A07 push 0 .text:00000A09 mov eax, [ebp+arg_4] .text:00000A0C push eax .text:00000A0D call _IoCompleteRequest .text:00000A12 add esp, 8 .text:00000A15 mov eax, 0FFFFFFC8h .text:00000A1A jmp short loc_A24 .text:00000A1C ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000A1C .text:00000A1C loc_A1C: ; CODE XREF: _FloppyPnp+31j .text:00000A1C call _FloppyPageEntireDriver .text:00000A21 mov eax, [ebp+var_C] .text:00000A24 .text:00000A24 loc_A24: ; CODE XREF: _FloppyPnp+5Aj .text:00000A24 mov esp, ebp .text:00000A26 pop ebp .text:00000A27 retn .text:00000A27 _FloppyPnp endp .text:00000A27 .text:00000A27 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000A28 align 10h .text:00000A30 .text:00000A30 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:00000A30 .text:00000A30 ; Attributes: bp-based frame .text:00000A30 .text:00000A30 public _FloppyUnload .text:00000A30 _FloppyUnload proc near ; CODE XREF: _main+192p .text:00000A30 push ebp .text:00000A31 mov ebp, esp .text:00000A33 pop ebp .text:00000A34 retn .text:00000A34 _FloppyUnload endp .text:00000A34 .text:00000A34 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000A35 align 10h .text:00000A40 .text:00000A40 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:00000A40 .text:00000A40 ; Attributes: bp-based frame .text:00000A40 .text:00000A40 public _ZwClose .text:00000A40 _ZwClose proc near .text:00000A40 push ebp .text:00000A41 mov ebp, esp .text:00000A43 xor eax, eax .text:00000A45 pop ebp .text:00000A46 retn .text:00000A46 _ZwClose endp .text:00000A46 .text:00000A46 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000A47 align 10h .text:00000A50 .text:00000A50 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:00000A50 .text:00000A50 ; Attributes: bp-based frame .text:00000A50 .text:00000A50 public _IoSetCancelRoutine .text:00000A50 _IoSetCancelRoutine proc near ; CODE XREF: _FloppyQueueRequest+1Bp .text:00000A50 push ebp .text:00000A51 mov ebp, esp .text:00000A53 pop ebp .text:00000A54 retn .text:00000A54 _IoSetCancelRoutine endp .text:00000A54 .text:00000A54 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000A55 align 10h .text:00000A60 .text:00000A60 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:00000A60 .text:00000A60 ; Attributes: bp-based frame .text:00000A60 .text:00000A60 public _IoMarkIrpPending .text:00000A60 _IoMarkIrpPending proc near ; CODE XREF: _FlQueueIrpToThread+144p .text:00000A60 ; _FloppyQueueRequest+77p .text:00000A60 push ebp .text:00000A61 mov ebp, esp .text:00000A63 mov dword ptr ds:_markIrpPending, 1 .text:00000A6D pop ebp .text:00000A6E retn .text:00000A6E _IoMarkIrpPending endp .text:00000A6E .text:00000A6E ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000A6F align 10h .text:00000A70 .text:00000A70 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:00000A70 .text:00000A70 ; Attributes: bp-based frame .text:00000A70 .text:00000A70 public _FloppyPower .text:00000A70 _FloppyPower proc near .text:00000A70 .text:00000A70 var_20 = dword ptr -20h .text:00000A70 var_1C = dword ptr -1Ch .text:00000A70 var_18 = dword ptr -18h .text:00000A70 var_14 = dword ptr -14h .text:00000A70 var_10 = dword ptr -10h .text:00000A70 var_C = dword ptr -0Ch .text:00000A70 var_8 = dword ptr -8 .text:00000A70 var_4 = dword ptr -4 .text:00000A70 arg_0 = dword ptr 8 .text:00000A70 arg_4 = dword ptr 0Ch .text:00000A70 .text:00000A70 push ebp .text:00000A71 mov ebp, esp .text:00000A73 sub esp, 20h .text:00000A76 mov eax, [ebp+arg_4] .text:00000A79 mov ecx, [eax+0Ch] .text:00000A7C mov [ebp+var_10], ecx .text:00000A7F mov [ebp+var_C], 1 .text:00000A86 mov edx, [ebp+arg_0] .text:00000A89 mov eax, [edx+24h] .text:00000A8C mov [ebp+var_4], eax .text:00000A8F mov ecx, [ebp+arg_4] .text:00000A92 push ecx .text:00000A93 call _IoGetCurrentIrpStackLocation .text:00000A98 add esp, 4 .text:00000A9B mov [ebp+var_14], eax .text:00000A9E mov edx, [ebp+var_14] .text:00000AA1 mov eax, [edx+20h] .text:00000AA4 mov [ebp+var_8], eax .text:00000AA7 mov ecx, [ebp+var_14] .text:00000AAA mov edx, [ecx+24h] .text:00000AAD mov eax, [ecx+28h] .text:00000AB0 mov [ebp+var_1C], edx .text:00000AB3 mov [ebp+var_18], eax .text:00000AB6 mov ecx, [ebp+var_14] .text:00000AB9 mov edx, [ecx+4] .text:00000ABC mov [ebp+var_20], edx .text:00000ABF cmp [ebp+var_20], 2 .text:00000AC3 jz loc_BBC .text:00000AC9 cmp [ebp+var_20], 3 .text:00000ACD jz short loc_AD4 .text:00000ACF jmp loc_C35 .text:00000AD4 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000AD4 .text:00000AD4 loc_AD4: ; CODE XREF: _FloppyPower+5Dj .text:00000AD4 cmp [ebp+var_8], 0 .text:00000AD8 jnz short loc_AEC .text:00000ADA cmp [ebp+var_1C], 5 .text:00000ADE jle short loc_AEC .text:00000AE0 mov [ebp+var_10], 1 .text:00000AE7 jmp loc_C35 .text:00000AEC ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000AEC .text:00000AEC loc_AEC: ; CODE XREF: _FloppyPower+68j .text:00000AEC ; _FloppyPower+6Ej .text:00000AEC call _ExAcquireFastMutex .text:00000AF1 mov eax, [ebp+var_4] .text:00000AF4 cmp dword ptr [eax+38h], 0 .text:00000AF8 jle short loc_B43 .text:00000AFA mov ecx, [ebp+var_4] .text:00000AFD add ecx, 2Ch ; ',' .text:00000B00 push ecx .text:00000B01 call _ExReleaseFastMutex .text:00000B06 add esp, 4 .text:00000B09 mov edx, [ebp+arg_4] .text:00000B0C push edx .text:00000B0D call _PoStartNextPowerIrp .text:00000B12 add esp, 4 .text:00000B15 mov eax, [ebp+arg_4] .text:00000B18 mov dword ptr [eax+10h], 0 .text:00000B1F mov ecx, [ebp+arg_4] .text:00000B22 mov dword ptr [ecx+0Ch], 0FFFFFFF5h .text:00000B29 push 0 .text:00000B2B mov edx, [ebp+arg_4] .text:00000B2E push edx .text:00000B2F call _IoCompleteRequest .text:00000B34 add esp, 8 .text:00000B37 mov eax, 0FFFFFFF5h .text:00000B3C jmp loc_C66 .text:00000B41 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000B41 jmp short loc_BB3 .text:00000B43 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000B43 .text:00000B43 loc_B43: ; CODE XREF: _FloppyPower+88j .text:00000B43 mov eax, [ebp+var_4] .text:00000B46 cmp dword ptr [eax+38h], 0 .text:00000B4A jnz short loc_BA4 .text:00000B4C mov ecx, [ebp+var_4] .text:00000B4F cmp dword ptr [ecx+3Ch], 0 .text:00000B53 jz short loc_BA4 .text:00000B55 mov edx, [ebp+var_4] .text:00000B58 add edx, 2Ch ; ',' .text:00000B5B push edx .text:00000B5C call _ExReleaseFastMutex .text:00000B61 add esp, 4 .text:00000B64 call _ExAcquireFastMutex .text:00000B69 mov eax, [ebp+var_4] .text:00000B6C mov dword ptr [eax+118h], 1 .text:00000B76 mov ecx, [ebp+var_4] .text:00000B79 add ecx, 100h .text:00000B7F push ecx .text:00000B80 call _ExReleaseFastMutex .text:00000B85 add esp, 4 .text:00000B88 push 0 .text:00000B8A push 0 .text:00000B8C push 0 .text:00000B8E push 0 .text:00000B90 mov edx, [ebp+var_4] .text:00000B93 add edx, 11Ch .text:00000B99 push edx .text:00000B9A call _KeWaitForSingleObject .text:00000B9F add esp, 14h .text:00000BA2 jmp short loc_BB3 .text:00000BA4 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000BA4 .text:00000BA4 loc_BA4: ; CODE XREF: _FloppyPower+DAj .text:00000BA4 ; _FloppyPower+E3j .text:00000BA4 mov eax, [ebp+var_4] .text:00000BA7 add eax, 2Ch ; ',' .text:00000BAA push eax .text:00000BAB call _ExReleaseFastMutex .text:00000BB0 add esp, 4 .text:00000BB3 .text:00000BB3 loc_BB3: ; CODE XREF: _FloppyPower+D1j .text:00000BB3 ; _FloppyPower+132j .text:00000BB3 mov [ebp+var_10], 1 .text:00000BBA jmp short loc_C35 .text:00000BBC ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000BBC .text:00000BBC loc_BBC: ; CODE XREF: _FloppyPower+53j .text:00000BBC cmp [ebp+var_8], 0 .text:00000BC0 jnz short loc_C2E .text:00000BC2 call _ExAcquireFastMutex .text:00000BC7 cmp [ebp+var_1C], 1 .text:00000BCB jnz short loc_BE3 .text:00000BCD mov ecx, [ebp+var_4] .text:00000BD0 mov dword ptr [ecx+0FCh], 0 .text:00000BDA mov [ebp+var_C], 0 .text:00000BE1 jmp short loc_BF7 .text:00000BE3 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000BE3 .text:00000BE3 loc_BE3: ; CODE XREF: _FloppyPower+15Bj .text:00000BE3 mov [ebp+var_C], 1 .text:00000BEA mov edx, [ebp+var_4] .text:00000BED mov dword ptr [edx+0FCh], 1 .text:00000BF7 .text:00000BF7 loc_BF7: ; CODE XREF: _FloppyPower+171j .text:00000BF7 mov eax, [ebp+var_4] .text:00000BFA add eax, 100h .text:00000BFF push eax .text:00000C00 call _ExReleaseFastMutex .text:00000C05 add esp, 4 .text:00000C08 mov ecx, [ebp+var_4] .text:00000C0B cmp dword ptr [ecx+3Ch], 0 .text:00000C0F jz short loc_C2E .text:00000C11 cmp [ebp+var_C], 1 .text:00000C15 jnz short loc_C2E .text:00000C17 push 0 .text:00000C19 push 0 .text:00000C1B push 0 .text:00000C1D push 0 .text:00000C1F mov edx, [ebp+var_4] .text:00000C22 mov eax, [edx+3Ch] .text:00000C25 push eax .text:00000C26 call _KeWaitForSingleObject .text:00000C2B add esp, 14h .text:00000C2E .text:00000C2E loc_C2E: ; CODE XREF: _FloppyPower+150j .text:00000C2E ; _FloppyPower+19Fj ... .text:00000C2E mov [ebp+var_10], 1 .text:00000C35 .text:00000C35 loc_C35: ; CODE XREF: _FloppyPower+5Fj .text:00000C35 ; _FloppyPower+77j ... .text:00000C35 mov ecx, [ebp+arg_4] .text:00000C38 push ecx .text:00000C39 call _PoStartNextPowerIrp .text:00000C3E add esp, 4 .text:00000C41 mov edx, [ebp+arg_4] .text:00000C44 push edx .text:00000C45 call _IoSkipCurrentIrpStackLocation .text:00000C4A add esp, 4 .text:00000C4D mov eax, [ebp+arg_4] .text:00000C50 push eax .text:00000C51 mov ecx, [ebp+var_4] .text:00000C54 mov edx, [ecx+8] .text:00000C57 push edx .text:00000C58 call _PoCallDriver .text:00000C5D add esp, 8 .text:00000C60 mov [ebp+var_10], eax .text:00000C63 mov eax, [ebp+var_10] .text:00000C66 .text:00000C66 loc_C66: ; CODE XREF: _FloppyPower+CCj .text:00000C66 mov esp, ebp .text:00000C68 pop ebp .text:00000C69 retn .text:00000C69 _FloppyPower endp .text:00000C69 .text:00000C69 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000C6A align 10h .text:00000C70 .text:00000C70 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:00000C70 .text:00000C70 ; Attributes: bp-based frame .text:00000C70 .text:00000C70 public _FlQueueIrpToThread .text:00000C70 _FlQueueIrpToThread proc near ; CODE XREF: _FloppyDeviceControl+F3p .text:00000C70 .text:00000C70 var_28 = dword ptr -28h .text:00000C70 var_10 = dword ptr -10h .text:00000C70 var_8 = dword ptr -8 .text:00000C70 arg_0 = dword ptr 8 .text:00000C70 arg_4 = dword ptr 0Ch .text:00000C70 .text:00000C70 push ebp .text:00000C71 mov ebp, esp .text:00000C73 sub esp, 28h .text:00000C76 mov eax, [ebp+arg_0] .text:00000C79 push eax .text:00000C7A call _IoGetCurrentIrpStackLocation .text:00000C7F add esp, 4 .text:00000C82 mov [ebp+var_8], eax .text:00000C85 call _ExAcquireFastMutex .text:00000C8A mov ecx, [ebp+arg_4] .text:00000C8D cmp dword ptr [ecx+0FCh], 1 .text:00000C94 jnz short loc_CC6 .text:00000C96 mov edx, [ebp+arg_4] .text:00000C99 add edx, 100h .text:00000C9F push edx .text:00000CA0 call _ExReleaseFastMutex .text:00000CA5 add esp, 4 .text:00000CA8 mov eax, [ebp+arg_0] .text:00000CAB mov dword ptr [eax+0Ch], 0FFFFFFE9h .text:00000CB2 mov ecx, [ebp+arg_0] .text:00000CB5 mov dword ptr [ecx+10h], 0 .text:00000CBC mov eax, 0FFFFFFE9h .text:00000CC1 jmp loc_DE0 .text:00000CC6 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000CC6 .text:00000CC6 loc_CC6: ; CODE XREF: _FlQueueIrpToThread+24j .text:00000CC6 mov edx, [ebp+arg_4] .text:00000CC9 add edx, 100h .text:00000CCF push edx .text:00000CD0 call _ExReleaseFastMutex .text:00000CD5 add esp, 4 .text:00000CD8 call _ExAcquireFastMutex .text:00000CDD mov eax, [ebp+arg_4] .text:00000CE0 mov ecx, [eax+38h] .text:00000CE3 add ecx, 1 .text:00000CE6 mov edx, [ebp+arg_4] .text:00000CE9 mov [edx+38h], ecx .text:00000CEC mov eax, [ebp+arg_4] .text:00000CEF cmp dword ptr [eax+38h], 0 .text:00000CF3 jnz loc_DA1 .text:00000CF9 mov ecx, [ebp+arg_4] .text:00000CFC mov edx, [ecx+38h] .text:00000CFF add edx, 1 .text:00000D02 mov eax, [ebp+arg_4] .text:00000D05 mov [eax+38h], edx .text:00000D08 call _FloppyResetDriverPaging .text:00000D0D push 0 .text:00000D0F push 0 .text:00000D11 push 0 .text:00000D13 push 0 .text:00000D15 lea ecx, [ebp+var_28] .text:00000D18 push ecx .text:00000D19 call _InitializeObjectAttributes .text:00000D1E add esp, 14h .text:00000D21 call _PsCreateSystemThread .text:00000D26 mov [ebp+var_10], eax .text:00000D29 cmp [ebp+var_10], 0 .text:00000D2D jge short loc_D55 .text:00000D2F mov edx, [ebp+arg_4] .text:00000D32 mov dword ptr [edx+38h], 0FFFFFFFFh .text:00000D39 call _FloppyPageEntireDriver .text:00000D3E mov eax, [ebp+arg_4] .text:00000D41 add eax, 2Ch ; ',' .text:00000D44 push eax .text:00000D45 call _ExReleaseFastMutex .text:00000D4A add esp, 4 .text:00000D4D mov eax, [ebp+var_10] .text:00000D50 jmp loc_DE0 .text:00000D55 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000D55 .text:00000D55 loc_D55: ; CODE XREF: _FlQueueIrpToThread+BDj .text:00000D55 call _ObReferenceObjectByHandle .text:00000D5A mov [ebp+var_10], eax .text:00000D5D cmp [ebp+var_10], 0 .text:00000D61 jge short loc_D90 .text:00000D63 mov ecx, [ebp+arg_4] .text:00000D66 mov dword ptr [ecx+38h], 0FFFFFFFFh .text:00000D6D mov edx, [ebp+arg_4] .text:00000D70 mov dword ptr [edx+3Ch], 0 .text:00000D77 call _FloppyPageEntireDriver .text:00000D7C mov eax, [ebp+arg_4] .text:00000D7F add eax, 2Ch ; ',' .text:00000D82 push eax .text:00000D83 call _ExReleaseFastMutex .text:00000D88 add esp, 4 .text:00000D8B mov eax, [ebp+var_10] .text:00000D8E jmp short loc_DE0 .text:00000D90 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000D90 .text:00000D90 loc_D90: ; CODE XREF: _FlQueueIrpToThread+F1j .text:00000D90 mov ecx, [ebp+arg_4] .text:00000D93 add ecx, 2Ch ; ',' .text:00000D96 push ecx .text:00000D97 call _ExReleaseFastMutex .text:00000D9C add esp, 4 .text:00000D9F jmp short loc_DB0 .text:00000DA1 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000DA1 .text:00000DA1 loc_DA1: ; CODE XREF: _FlQueueIrpToThread+83j .text:00000DA1 mov edx, [ebp+arg_4] .text:00000DA4 add edx, 2Ch ; ',' .text:00000DA7 push edx .text:00000DA8 call _ExReleaseFastMutex .text:00000DAD add esp, 4 .text:00000DB0 .text:00000DB0 loc_DB0: ; CODE XREF: _FlQueueIrpToThread+12Fj .text:00000DB0 mov eax, [ebp+arg_0] .text:00000DB3 push eax .text:00000DB4 call _IoMarkIrpPending .text:00000DB9 add esp, 4 .text:00000DBC mov dword ptr ds:_markIrpPending, 0 .text:00000DC6 call _ExInterlockedInsertTailList .text:00000DCB push 0 .text:00000DCD push 1 .text:00000DCF push 0 .text:00000DD1 push 0 .text:00000DD3 call _KeReleaseSemaphore .text:00000DD8 add esp, 10h .text:00000DDB mov eax, 0FFFFFF99h .text:00000DE0 .text:00000DE0 loc_DE0: ; CODE XREF: _FlQueueIrpToThread+51j .text:00000DE0 ; _FlQueueIrpToThread+E0j ... .text:00000DE0 mov esp, ebp .text:00000DE2 pop ebp .text:00000DE3 retn .text:00000DE3 _FlQueueIrpToThread endp .text:00000DE3 .text:00000DE3 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000DE4 align 10h .text:00000DF0 .text:00000DF0 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:00000DF0 .text:00000DF0 ; Attributes: bp-based frame .text:00000DF0 .text:00000DF0 public _FloppyQueueRequest .text:00000DF0 _FloppyQueueRequest proc near ; CODE XREF: _FloppyDeviceControl+47p .text:00000DF0 .text:00000DF0 var_8 = dword ptr -8 .text:00000DF0 var_4 = dword ptr -4 .text:00000DF0 arg_0 = dword ptr 8 .text:00000DF0 arg_4 = dword ptr 0Ch .text:00000DF0 .text:00000DF0 push ebp .text:00000DF1 mov ebp, esp .text:00000DF3 sub esp, 8 .text:00000DF6 call _FloppyResetDriverPaging .text:00000DFB lea eax, [ebp+var_4] .text:00000DFE push eax .text:00000DFF mov ecx, [ebp+arg_0] .text:00000E02 push ecx .text:00000E03 call _KeAcquireSpinLock .text:00000E08 add esp, 8 .text:00000E0B call _IoSetCancelRoutine .text:00000E10 mov edx, [ebp+arg_4] .text:00000E13 cmp dword ptr [edx+20h], 0 .text:00000E17 jz short loc_E59 .text:00000E19 mov eax, [ebp+arg_4] .text:00000E1C mov dword ptr [eax+0Ch], 0FFFFFF88h .text:00000E23 mov ecx, [ebp+arg_4] .text:00000E26 mov dword ptr [ecx+10h], 0 .text:00000E2D mov edx, [ebp+var_4] .text:00000E30 push edx .text:00000E31 mov eax, [ebp+arg_0] .text:00000E34 push eax .text:00000E35 call _KeReleaseSpinLock .text:00000E3A add esp, 8 .text:00000E3D push 0 .text:00000E3F mov ecx, [ebp+arg_4] .text:00000E42 push ecx .text:00000E43 call _IoCompleteRequest .text:00000E48 add esp, 8 .text:00000E4B call _FloppyPageEntireDriver .text:00000E50 mov [ebp+var_8], 0FFFFFF88h .text:00000E57 jmp short loc_E8B .text:00000E59 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000E59 .text:00000E59 loc_E59: ; CODE XREF: _FloppyQueueRequest+27j .text:00000E59 mov edx, [ebp+arg_4] .text:00000E5C mov dword ptr [edx+0Ch], 0FFFFFF99h .text:00000E63 mov eax, [ebp+arg_4] .text:00000E66 push eax .text:00000E67 call _IoMarkIrpPending .text:00000E6C add esp, 4 .text:00000E6F call _ExInterlockedInsertTailList .text:00000E74 mov ecx, [ebp+var_4] .text:00000E77 push ecx .text:00000E78 mov edx, [ebp+arg_0] .text:00000E7B push edx .text:00000E7C call _KeReleaseSpinLock .text:00000E81 add esp, 8 .text:00000E84 mov [ebp+var_8], 0FFFFFF99h .text:00000E8B .text:00000E8B loc_E8B: ; CODE XREF: _FloppyQueueRequest+67j .text:00000E8B mov eax, [ebp+var_8] .text:00000E8E mov esp, ebp .text:00000E90 pop ebp .text:00000E91 retn .text:00000E91 _FloppyQueueRequest endp .text:00000E91 .text:00000E91 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000E92 align 10h .text:00000EA0 .text:00000EA0 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:00000EA0 .text:00000EA0 ; Attributes: bp-based frame .text:00000EA0 .text:00000EA0 public _FloppyDeviceControl .text:00000EA0 _FloppyDeviceControl proc near ; CODE XREF: _FloppyProcessQueuedRequests+D4p .text:00000EA0 ; _main+15Ap .text:00000EA0 .text:00000EA0 var_28 = dword ptr -28h .text:00000EA0 var_24 = dword ptr -24h .text:00000EA0 var_10 = dword ptr -10h .text:00000EA0 arg_0 = dword ptr 8 .text:00000EA0 arg_4 = dword ptr 0Ch .text:00000EA0 .text:00000EA0 push ebp .text:00000EA1 mov ebp, esp .text:00000EA3 sub esp, 28h .text:00000EA6 mov eax, [ebp+arg_0] .text:00000EA9 mov ecx, [eax+24h] .text:00000EAC mov [ebp+var_10], ecx .text:00000EAF mov edx, [ebp+arg_4] .text:00000EB2 push edx .text:00000EB3 call _IoGetCurrentIrpStackLocation .text:00000EB8 add esp, 4 .text:00000EBB mov [ebp+var_28], eax .text:00000EBE mov eax, [ebp+arg_4] .text:00000EC1 mov dword ptr [eax+10h], 0 .text:00000EC8 call _ExAcquireFastMutex .text:00000ECD mov ecx, [ebp+var_10] .text:00000ED0 cmp dword ptr [ecx+14h], 0 .text:00000ED4 jz short loc_F0C .text:00000ED6 mov edx, [ebp+var_28] .text:00000ED9 cmp dword ptr [edx+18h], 64h ; 'd' .text:00000EDD jz short loc_F0C .text:00000EDF mov eax, [ebp+arg_4] .text:00000EE2 push eax .text:00000EE3 mov ecx, [ebp+var_10] .text:00000EE6 push ecx .text:00000EE7 call _FloppyQueueRequest .text:00000EEC add esp, 8 .text:00000EEF mov [ebp+var_24], eax .text:00000EF2 mov edx, [ebp+var_10] .text:00000EF5 add edx, 10Ch .text:00000EFB push edx .text:00000EFC call _ExReleaseFastMutex .text:00000F01 add esp, 4 .text:00000F04 mov eax, [ebp+var_24] .text:00000F07 jmp loc_FB5 .text:00000F0C ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000F0C .text:00000F0C loc_F0C: ; CODE XREF: _FloppyDeviceControl+34j .text:00000F0C ; _FloppyDeviceControl+3Dj .text:00000F0C mov eax, [ebp+var_10] .text:00000F0F cmp dword ptr [eax+10h], 0 .text:00000F13 jz short loc_F50 .text:00000F15 mov ecx, [ebp+var_10] .text:00000F18 add ecx, 10Ch .text:00000F1E push ecx .text:00000F1F call _ExReleaseFastMutex .text:00000F24 add esp, 4 .text:00000F27 mov edx, [ebp+arg_4] .text:00000F2A mov dword ptr [edx+10h], 0 .text:00000F31 mov eax, [ebp+arg_4] .text:00000F34 mov dword ptr [eax+0Ch], 0FFFFFFC8h .text:00000F3B push 0 .text:00000F3D mov ecx, [ebp+arg_4] .text:00000F40 push ecx .text:00000F41 call _IoCompleteRequest .text:00000F46 add esp, 8 .text:00000F49 mov eax, 0FFFFFFC8h .text:00000F4E jmp short loc_FB5 .text:00000F50 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000F50 .text:00000F50 loc_F50: ; CODE XREF: _FloppyDeviceControl+73j .text:00000F50 mov edx, [ebp+var_10] .text:00000F53 cmp dword ptr [edx+0Ch], 0 .text:00000F57 jnz short loc_F8B .text:00000F59 mov eax, [ebp+var_10] .text:00000F5C add eax, 10Ch .text:00000F61 push eax .text:00000F62 call _ExReleaseFastMutex .text:00000F67 add esp, 4 .text:00000F6A mov ecx, [ebp+arg_4] .text:00000F6D push ecx .text:00000F6E call _IoSkipCurrentIrpStackLocation .text:00000F73 add esp, 4 .text:00000F76 mov edx, [ebp+arg_4] .text:00000F79 push edx .text:00000F7A mov eax, [ebp+var_10] .text:00000F7D mov ecx, [eax+8] .text:00000F80 push ecx .text:00000F81 call _IoCallDriver .text:00000F86 add esp, 8 .text:00000F89 jmp short loc_FB5 .text:00000F8B ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000F8B .text:00000F8B loc_F8B: ; CODE XREF: _FloppyDeviceControl+B7j .text:00000F8B mov edx, [ebp+var_10] .text:00000F8E push edx .text:00000F8F mov eax, [ebp+arg_4] .text:00000F92 push eax .text:00000F93 call _FlQueueIrpToThread .text:00000F98 add esp, 8 .text:00000F9B mov [ebp+var_24], eax .text:00000F9E mov ecx, [ebp+var_10] .text:00000FA1 add ecx, 10Ch .text:00000FA7 push ecx .text:00000FA8 call _ExReleaseFastMutex .text:00000FAD add esp, 4 .text:00000FB0 mov eax, 1 .text:00000FB5 .text:00000FB5 loc_FB5: ; CODE XREF: _FloppyDeviceControl+67j .text:00000FB5 ; _FloppyDeviceControl+AEj ... .text:00000FB5 mov esp, ebp .text:00000FB7 pop ebp .text:00000FB8 retn .text:00000FB8 _FloppyDeviceControl endp .text:00000FB8 .text:00000FB8 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000FB9 align 10h .text:00000FC0 .text:00000FC0 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:00000FC0 .text:00000FC0 ; Attributes: bp-based frame .text:00000FC0 .text:00000FC0 public _FloppyCreateClose .text:00000FC0 _FloppyCreateClose proc near ; CODE XREF: _main+124p .text:00000FC0 ; _main+13Fp .text:00000FC0 .text:00000FC0 arg_4 = dword ptr 0Ch .text:00000FC0 .text:00000FC0 push ebp .text:00000FC1 mov ebp, esp .text:00000FC3 mov eax, [ebp+arg_4] .text:00000FC6 mov dword ptr [eax+0Ch], 1 .text:00000FCD mov ecx, [ebp+arg_4] .text:00000FD0 mov dword ptr [ecx+10h], 1 .text:00000FD7 mov eax, 1 .text:00000FDC pop ebp .text:00000FDD retn .text:00000FDD _FloppyCreateClose endp .text:00000FDD .text:00000FDD ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000FDE align 10h .text:00000FE0 .text:00000FE0 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:00000FE0 .text:00000FE0 ; Attributes: bp-based frame .text:00000FE0 .text:00000FE0 public __Yogi_init .text:00000FE0 __Yogi_init proc near ; CODE XREF: _main+2Ep .text:00000FE0 push ebp .text:00000FE1 mov ebp, esp .text:00000FE3 mov dword ptr ds:_markIrpPending, 0 .text:00000FED mov dword ptr ds:_yogi_error, 0 .text:00000FF7 pop ebp .text:00000FF8 retn .text:00000FF8 __Yogi_init endp .text:00000FF8 .text:00000FF8 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00000FF9 align 10h .text:00001000 .text:00001000 ; ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ S U B R O U T I N E ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ .text:00001000 .text:00001000 ; Attributes: bp-based frame .text:00001000 .text:00001000 public _main .text:00001000 _main proc near .text:00001000 .text:00001000 var_8AC = dword ptr -8ACh .text:00001000 var_8A8 = dword ptr -8A8h .text:00001000 var_884 = dword ptr -884h .text:00001000 var_85C = dword ptr -85Ch .text:00001000 var_858 = dword ptr -858h .text:00001000 var_84 = dword ptr -84h .text:00001000 var_80 = dword ptr -80h .text:00001000 var_58 = dword ptr -58h .text:00001000 var_54 = dword ptr -54h .text:00001000 var_50 = dword ptr -50h .text:00001000 var_4C = dword ptr -4Ch .text:00001000 var_14 = dword ptr -14h .text:00001000 var_10 = dword ptr -10h .text:00001000 var_4 = dword ptr -4 .text:00001000 .text:00001000 push ebp .text:00001001 mov ebp, esp .text:00001003 sub esp, 8ACh .text:00001009 mov eax, dword ptr ds:___security_cookie .text:0000100E xor eax, ebp .text:00001010 mov [ebp+var_84], eax .text:00001016 lea eax, [ebp+var_858] .text:0000101C mov dword ptr ds:_malloc_starting_addr, eax .text:00001021 mov [ebp+var_54], 0 .text:00001028 mov ecx, [ebp+var_4] .text:0000102B mov [ebp+var_14], ecx .text:0000102E call __Yogi_init .text:00001033 lea edx, [ebp+var_4C] .text:00001036 mov dword ptr ds:_pirp, edx .text:0000103C lea eax, [ebp+var_10] .text:0000103F push eax .text:00001040 lea ecx, [ebp+var_80] .text:00001043 push ecx .text:00001044 call _DriverEntry .text:00001049 add esp, 8 .text:0000104C mov [ebp+var_54], eax .text:0000104F cmp [ebp+var_54], 0 .text:00001053 jl loc_119A .text:00001059 mov edx, [ebp+var_58] .text:0000105C mov [ebp+var_85C], edx .text:00001062 push 130h .text:00001067 call _malloc .text:0000106C add esp, 4 .text:0000106F mov [ebp+var_884], eax .text:00001075 mov eax, [ebp+var_884] .text:0000107B mov dword ptr [eax+14h], 1 .text:00001082 mov ecx, [ebp+var_884] .text:00001088 mov dword ptr [ecx+10h], 0 .text:0000108F mov edx, [ebp+var_884] .text:00001095 mov dword ptr [edx+0Ch], 0 .text:0000109C mov eax, [ebp+var_884] .text:000010A2 mov dword ptr [eax], 0 .text:000010A8 mov ecx, dword ptr ds:_NP .text:000010AE mov dword ptr ds:_s, ecx .text:000010B4 mov edx, dword ptr ds:_pirp .text:000010BA mov dword ptr [edx+0Ch], 0 .text:000010C1 mov dword ptr ds:_myStatus, 0 .text:000010CB cmp [ebp+var_85C], 0 .text:000010D2 jnz short loc_10EA .text:000010D4 mov eax, dword ptr ds:_pirp .text:000010D9 mov dword ptr [eax+0Ch], 0FFFFFFFFh .text:000010E0 mov dword ptr ds:_myStatus, 0FFFFFFFFh .text:000010EA .text:000010EA loc_10EA: ; CODE XREF: _main+D2j .text:000010EA cmp [ebp+var_54], 0 .text:000010EE jge short loc_10F8 .text:000010F0 or eax, 0FFFFFFFFh .text:000010F3 jmp loc_11B2 .text:000010F8 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:000010F8 .text:000010F8 loc_10F8: ; CODE XREF: _main+EEj .text:000010F8 mov ecx, [ebp+var_50] .text:000010FB mov [ebp+var_8AC], ecx .text:00001101 cmp [ebp+var_8AC], 4 .text:00001108 ja short loc_1183 .text:0000110A mov edx, [ebp+var_8AC] .text:00001110 jmp ds:$LN16[edx*4] .text:00001117 .text:00001117 $LN8: ; DATA XREF: .text:$LN16o .text:00001117 mov eax, dword ptr ds:_pirp .text:0000111C push eax .text:0000111D lea ecx, [ebp+var_8A8] .text:00001123 push ecx .text:00001124 call _FloppyCreateClose .text:00001129 add esp, 8 .text:0000112C mov [ebp+var_54], eax .text:0000112F jmp short loc_1188 .text:00001131 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00001131 .text:00001131 $LN7: ; CODE XREF: _main+110j .text:00001131 ; DATA XREF: .text:000011C8o .text:00001131 mov edx, dword ptr ds:_pirp .text:00001137 push edx .text:00001138 lea eax, [ebp+var_8A8] .text:0000113E push eax .text:0000113F call _FloppyCreateClose .text:00001144 add esp, 8 .text:00001147 mov [ebp+var_54], eax .text:0000114A jmp short loc_1188 .text:0000114C ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:0000114C .text:0000114C $LN6_0: ; CODE XREF: _main+110j .text:0000114C ; DATA XREF: .text:000011CCo .text:0000114C mov ecx, dword ptr ds:_pirp .text:00001152 push ecx .text:00001153 lea edx, [ebp+var_8A8] .text:00001159 push edx .text:0000115A call _FloppyDeviceControl .text:0000115F add esp, 8 .text:00001162 mov [ebp+var_54], eax .text:00001165 jmp short loc_1188 .text:00001167 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00001167 .text:00001167 $LN5_0: ; CODE XREF: _main+110j .text:00001167 ; DATA XREF: .text:000011D0o .text:00001167 mov eax, dword ptr ds:_pirp .text:0000116C push eax .text:0000116D lea ecx, [ebp+var_8A8] .text:00001173 push ecx .text:00001174 call _FloppyPnp .text:00001179 add esp, 8 .text:0000117C mov [ebp+var_54], eax .text:0000117F jmp short loc_1188 .text:00001181 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00001181 .text:00001181 $LN4_0: ; CODE XREF: _main+110j .text:00001181 ; DATA XREF: .text:000011D4o .text:00001181 jmp short loc_1188 .text:00001183 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00001183 .text:00001183 loc_1183: ; CODE XREF: _main+108j .text:00001183 or eax, 0FFFFFFFFh .text:00001186 jmp short loc_11B2 .text:00001188 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:00001188 .text:00001188 loc_1188: ; CODE XREF: _main+12Fj .text:00001188 ; _main+14Aj ... .text:00001188 cmp [ebp+var_14], 0 .text:0000118C jz short loc_119A .text:0000118E lea edx, [ebp+var_80] .text:00001191 push edx .text:00001192 call _FloppyUnload .text:00001197 add esp, 4 .text:0000119A .text:0000119A loc_119A: ; CODE XREF: _main+53j .text:0000119A ; _main+18Cj .text:0000119A mov [ebp+var_54], 0 .text:000011A1 cmp dword ptr ds:_yogi_error, 1 .text:000011A8 jnz short loc_11AF .text:000011AA call _error .text:000011AF .text:000011AF loc_11AF: ; CODE XREF: _main+1A8j .text:000011AF mov eax, [ebp+var_54] .text:000011B2 .text:000011B2 loc_11B2: ; CODE XREF: _main+F3j .text:000011B2 ; _main+186j .text:000011B2 mov ecx, [ebp+var_84] .text:000011B8 xor ecx, ebp .text:000011BA call @__security_check_cookie@4 ; __security_check_cookie(x) .text:000011BF mov esp, ebp .text:000011C1 pop ebp .text:000011C2 retn .text:000011C2 _main endp .text:000011C2 .text:000011C2 ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ .text:000011C3 align 4 .text:000011C4 $LN16 dd offset $LN8 ; DATA XREF: _main+110r .text:000011C8 dd offset $LN7 .text:000011CC dd offset $LN6_0 .text:000011D0 dd offset $LN5_0 .text:000011D4 dd offset $LN4_0 .text:000011D4 _text ends .text:000011D4 UNDEF:000011E0 ; ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ UNDEF:000011E0 UNDEF:000011E0 ; Segment type: Externs UNDEF:000011E0 ; UNDEF UNDEF:000011E0 extrn _SKIP2:near UNDEF:000011E4 extrn _yogi_error:near ; DATA XREF: _KeReleaseSpinLock+Bw UNDEF:000011E4 ; _KeAcquireSpinLock+Bw ... UNDEF:000011E8 extrn _malloc_starting_addr:near ; DATA XREF: _my_malloc+4r UNDEF:000011E8 ; _my_malloc+Cr ... UNDEF:000011EC extrn _DriveMediaLimits:near UNDEF:000011F0 extrn _markIrpPending:near ; DATA XREF: _IoMarkIrpPending+3w UNDEF:000011F0 ; _FlQueueIrpToThread+14Cw ... UNDEF:000011F4 extrn _UNLOADED:near UNDEF:000011F8 extrn _DC:near UNDEF:000011FC extrn _lowerDriverReturn:near UNDEF:00001200 extrn _s:near ; DATA XREF: _main+AEw UNDEF:00001204 extrn _IPC:near UNDEF:00001208 extrn _pended:near UNDEF:0000120C extrn _MPR3:near UNDEF:00001210 extrn _NP:near ; DATA XREF: _main+A8r UNDEF:00001214 extrn _myStatus:near ; DATA XREF: _main+C1w UNDEF:00001214 ; _main+E0w UNDEF:00001218 extrn _pirp:near ; DATA XREF: _main+36w UNDEF:00001218 ; _main+B4r ... UNDEF:0000121C extrn _malloc:near ; CODE XREF: _ExAllocatePoolWithTag+8p UNDEF:0000121C ; _IoGetConfigurationInformation+5p ... UNDEF:00001220 extrn _SdvMakeChoice:near UNDEF:00001220 ; CODE XREF: _PsCreateSystemThread+6p UNDEF:00001220 ; _ObReferenceObjectByHandle+6p ... UNDEF:00001224 extrn ___security_cookie:near ; DATA XREF: _main+9r UNDEF:00001228 ; __fastcall __security_check_cookie(x) UNDEF:00001228 extrn @__security_check_cookie@4:near ; CODE XREF: _main+1BAp UNDEF:00001228 UNDEF:00001228 UNDEF:00001228 end