
mup.nostrip.sys:     file format pei-i386

Disassembly of section .text:

00011000 <_DriverEntry@8>:
 *           DriverObject = object describing this driver
 *           RegistryPath = path to our configuration entries
 * RETURNS: Success or failure
 */
{
   11000:	55                   	push   %ebp
   11001:	89 e5                	mov    %esp,%ebp
   11003:	56                   	push   %esi
   11004:	53                   	push   %ebx
   11005:	83 ec 14             	sub    $0x14,%esp
   11008:	8b 75 08             	mov    0x8(%ebp),%esi
  PDEVICE_OBJECT DeviceObject;
  NTSTATUS Status;
  UNICODE_STRING DeviceName;

  DPRINT("MUP 0.0.1\n");
   1100b:	6a 3a                	push   $0x3a
   1100d:	68 00 20 01 00       	push   $0x12000
   11012:	68 06 20 01 00       	push   $0x12006
   11017:	e8 54 01 00 00       	call   11170 <_DbgPrint>
   1101c:	c7 04 24 0f 20 01 00 	movl   $0x1200f,(%esp)
   11023:	e8 48 01 00 00       	call   11170 <_DbgPrint>
   11028:	59                   	pop    %ecx
   11029:	5b                   	pop    %ebx

  RtlInitUnicodeString(&DeviceName,
   1102a:	8d 5d f0             	lea    0xfffffff0(%ebp),%ebx
   1102d:	68 1a 20 01 00       	push   $0x1201a
   11032:	53                   	push   %ebx
   11033:	e8 18 01 00 00       	call   11150 <_RtlInitUnicodeString@8>
		       L"\\Device\\Mup");
  Status = IoCreateDevice(DriverObject,
   11038:	8d 45 ec             	lea    0xffffffec(%ebp),%eax
   1103b:	89 04 24             	mov    %eax,(%esp)
   1103e:	6a 00                	push   $0x0
   11040:	6a 00                	push   $0x0
   11042:	6a 10                	push   $0x10
   11044:	53                   	push   %ebx
   11045:	6a 04                	push   $0x4
   11047:	56                   	push   %esi
   11048:	e8 13 01 00 00       	call   11160 <_IoCreateDevice@28>
			  sizeof(DEVICE_EXTENSION),
			  &DeviceName,
			  FILE_DEVICE_MULTI_UNC_PROVIDER,
			  0,
			  FALSE,
			  &DeviceObject);
  if (!NT_SUCCESS(Status))
   1104d:	5a                   	pop    %edx
   1104e:	85 c0                	test   %eax,%eax
   11050:	78 2b                	js     1107d <_DriverEntry@8+0x7d>
    {
      return(Status);
    }

  /* Initialize driver data */
  DeviceObject->Flags = DO_DIRECT_IO;
   11052:	8b 45 ec             	mov    0xffffffec(%ebp),%eax
//  DriverObject->MajorFunction[IRP_MJ_CLOSE] = NtfsClose;
  DriverObject->MajorFunction[IRP_MJ_CREATE] = MupCreate;
   11055:	c7 46 38 90 10 01 00 	movl   $0x11090,0x38(%esi)
  DriverObject->MajorFunction[IRP_MJ_CREATE_NAMED_PIPE] = MupCreate;
   1105c:	c7 46 3c 90 10 01 00 	movl   $0x11090,0x3c(%esi)
  DriverObject->MajorFunction[IRP_MJ_CREATE_MAILSLOT] = MupCreate;
   11063:	c7 86 84 00 00 00 90 	movl   $0x11090,0x84(%esi)
   1106a:	10 01 00 
   1106d:	c7 40 1c 10 00 00 00 	movl   $0x10,0x1c(%eax)
//  DriverObject->MajorFunction[IRP_MJ_READ] = NtfsRead;
//  DriverObject->MajorFunction[IRP_MJ_WRITE] = NtfsWrite;
//  DriverObject->MajorFunction[IRP_MJ_FILE_SYSTEM_CONTROL] =
//    NtfsFileSystemControl;
//  DriverObject->MajorFunction[IRP_MJ_DIRECTORY_CONTROL] =
//    NtfsDirectoryControl;
//  DriverObject->MajorFunction[IRP_MJ_QUERY_INFORMATION] =
//    NtfsQueryInformation;
//  DriverObject->MajorFunction[IRP_MJ_QUERY_VOLUME_INFORMATION] =
//    NtfsQueryVolumeInformation;
//  DriverObject->MajorFunction[IRP_MJ_SET_VOLUME_INFORMATION] =
//    NtfsSetVolumeInformation;

  DriverObject->DriverUnload = NULL;
   11074:	c7 46 34 00 00 00 00 	movl   $0x0,0x34(%esi)


  /* Initialize global data */
//  DeviceExtensionNtfsGlobalData = DeviceObject->DeviceExtension;
//  RtlZeroMemory(NtfsGlobalData,
//		sizeof(NTFS_GLOBAL_DATA));
//  NtfsGlobalData->DriverObject = DriverObject;
//  NtfsGlobalData->DeviceObject = DeviceObject;

  return(STATUS_SUCCESS);
   1107b:	31 c0                	xor    %eax,%eax
}
   1107d:	8d 65 f8             	lea    0xfffffff8(%ebp),%esp
   11080:	5b                   	pop    %ebx
   11081:	5e                   	pop    %esi
   11082:	5d                   	pop    %ebp
   11083:	c2 08 00             	ret    $0x8
   11086:	90                   	nop    
   11087:	90                   	nop    
   11088:	90                   	nop    
   11089:	90                   	nop    
   1108a:	90                   	nop    
   1108b:	90                   	nop    
   1108c:	90                   	nop    
   1108d:	90                   	nop    
   1108e:	90                   	nop    
   1108f:	90                   	nop    

00011090 <_MupCreate@8>:

NTSTATUS STDCALL
MupCreate(PDEVICE_OBJECT DeviceObject,
	  PIRP Irp)
{
   11090:	55                   	push   %ebp
   11091:	89 e5                	mov    %esp,%ebp
   11093:	56                   	push   %esi
   11094:	53                   	push   %ebx
  PDEVICE_EXTENSION DeviceExt;
  PIO_STACK_LOCATION Stack;
  PFILE_OBJECT FileObject;
  NTSTATUS Status;

  DPRINT("MupCreate() called\n");
   11095:	50                   	push   %eax
   11096:	6a 31                	push   $0x31
   11098:	68 40 20 01 00       	push   $0x12040
   1109d:	68 49 20 01 00       	push   $0x12049
   110a2:	8b 75 0c             	mov    0xc(%ebp),%esi
   110a5:	e8 c6 00 00 00       	call   11170 <_DbgPrint>
   110aa:	c7 04 24 52 20 01 00 	movl   $0x12052,(%esp)
   110b1:	e8 ba 00 00 00       	call   11170 <_DbgPrint>

  DeviceExt = DeviceObject->DeviceExtension;
  ASSERT(DeviceExt);
   110b6:	8b 45 08             	mov    0x8(%ebp),%eax
   110b9:	8b 40 28             	mov    0x28(%eax),%eax
   110bc:	83 c4 10             	add    $0x10,%esp
   110bf:	85 c0                	test   %eax,%eax
   110c1:	74 52                	je     11115 <_MupCreate@8+0x85>
  Stack = IoGetCurrentIrpStackLocation (Irp);
   110c3:	8b 5e 60             	mov    0x60(%esi),%ebx
  ASSERT(Stack);
   110c6:	85 db                	test   %ebx,%ebx
   110c8:	74 63                	je     1112d <_MupCreate@8+0x9d>

  FileObject = Stack->FileObject;
   110ca:	8b 5b 18             	mov    0x18(%ebx),%ebx

  DPRINT("FileName: '%wZ'\n", &FileObject->FileName);
   110cd:	83 c3 30             	add    $0x30,%ebx
   110d0:	50                   	push   %eax
   110d1:	6a 3a                	push   $0x3a
   110d3:	68 40 20 01 00       	push   $0x12040
   110d8:	68 49 20 01 00       	push   $0x12049
   110dd:	e8 8e 00 00 00       	call   11170 <_DbgPrint>
   110e2:	59                   	pop    %ecx
   110e3:	58                   	pop    %eax
   110e4:	53                   	push   %ebx
   110e5:	68 66 20 01 00       	push   $0x12066
   110ea:	e8 81 00 00 00       	call   11170 <_DbgPrint>
   110ef:	58                   	pop    %eax
   110f0:	5a                   	pop    %edx

  Status = STATUS_ACCESS_DENIED;

  Irp->IoStatus.Information = (NT_SUCCESS(Status)) ? FILE_OPENED : 0;
   110f1:	c7 46 1c 00 00 00 00 	movl   $0x0,0x1c(%esi)
  Irp->IoStatus.Status = Status;
   110f8:	c7 46 18 22 00 00 c0 	movl   $0xc0000022,0x18(%esi)

  IoCompleteRequest(Irp,
   110ff:	6a 00                	push   $0x0
   11101:	56                   	push   %esi
   11102:	e8 79 00 00 00       	call   11180 <_IoCompleteRequest@8>
		    IO_NO_INCREMENT);

  return(Status);
}
   11107:	8d 65 f8             	lea    0xfffffff8(%ebp),%esp
   1110a:	b8 22 00 00 c0       	mov    $0xc0000022,%eax
   1110f:	5b                   	pop    %ebx
   11110:	5e                   	pop    %esi
   11111:	5d                   	pop    %ebp
   11112:	c2 08 00             	ret    $0x8
   11115:	68 77 20 01 00       	push   $0x12077
   1111a:	6a 34                	push   $0x34
   1111c:	68 40 20 01 00       	push   $0x12040
   11121:	68 78 20 01 00       	push   $0x12078
   11126:	e8 65 00 00 00       	call   11190 <_RtlAssert@16>
   1112b:	eb 96                	jmp    110c3 <_MupCreate@8+0x33>
   1112d:	68 77 20 01 00       	push   $0x12077
   11132:	6a 36                	push   $0x36
   11134:	68 40 20 01 00       	push   $0x12040
   11139:	68 78 20 01 00       	push   $0x12078
   1113e:	e8 4d 00 00 00       	call   11190 <_RtlAssert@16>
   11143:	eb 85                	jmp    110ca <_MupCreate@8+0x3a>
   11145:	90                   	nop    
   11146:	90                   	nop    
   11147:	90                   	nop    
   11148:	90                   	nop    
   11149:	90                   	nop    
   1114a:	90                   	nop    
   1114b:	90                   	nop    
   1114c:	90                   	nop    
   1114d:	90                   	nop    
   1114e:	90                   	nop    
   1114f:	90                   	nop    

00011150 <_RtlInitUnicodeString@8>:
   11150:	ff 25 58 30 01 00    	jmp    *0x13058
   11156:	90                   	nop    
   11157:	90                   	nop    
	...

00011160 <_IoCreateDevice@28>:
   11160:	ff 25 50 30 01 00    	jmp    *0x13050
   11166:	90                   	nop    
   11167:	90                   	nop    
	...

00011170 <_DbgPrint>:
   11170:	ff 25 48 30 01 00    	jmp    *0x13048
   11176:	90                   	nop    
   11177:	90                   	nop    
	...

00011180 <_IoCompleteRequest@8>:
   11180:	ff 25 4c 30 01 00    	jmp    *0x1304c
   11186:	90                   	nop    
   11187:	90                   	nop    
	...

00011190 <_RtlAssert@16>:
   11190:	ff 25 54 30 01 00    	jmp    *0x13054
   11196:	90                   	nop    
   11197:	90                   	nop    
	...

000111a0 <__CTOR_LIST__>:
   111a0:	ff                   	(bad)  
   111a1:	ff                   	(bad)  
   111a2:	ff                   	(bad)  
   111a3:	ff 00                	incl   (%eax)
   111a5:	00 00                	add    %al,(%eax)
	...

000111a8 <__DTOR_LIST__>:
   111a8:	ff                   	(bad)  
   111a9:	ff                   	(bad)  
   111aa:	ff                   	(bad)  
   111ab:	ff 00                	incl   (%eax)
   111ad:	00 00                	add    %al,(%eax)
	...
