All pastes #608595 Raw Edit

Anonymous

public cpp v1 · immutable
·published 2007-07-08 12:24 UTC
rendered paste body
DWORD __usercall AMRUSBInterfaceWritePipe<eax>(LPVOID buffer<ecx>,DWORD bufsize<eax>,AppleDevice *device<ebx>,unsigned __int8 ctlNo){  void *_buffer; // edi@1  DWORD _bufsize; // esi@1  void *hEvent; // eax@3  void *_hEvent; // ebp@3  DWORD v9; // esi@7  void *v10; // eax@2  void *hPipe; // ecx@5  DWORD v12; // eax@7  DWORD v13; // eax@9  DWORD v14; // ST1C_4@9  void *v15; // eax@9  void *v16; // eax@11  DWORD NumberOfBytesTransferred; // [sp+8h] [bp-18h]@3  struct _OVERLAPPED Overlapped; // [sp+Ch] [bp-14h]@5  _bufsize = bufsize;  _buffer = buffer;  if ( !device )  {    v10 = _CFStringMakeConstantString("_AMRUSBInterfaceWritePipe pAppleDevice == NULL");    AMRLog(3, v10);    return 2003;  }  NumberOfBytesTransferred = 0;  hEvent = CreateEventW(0, 1, 0, 0);  _hEvent = hEvent;  if ( !hEvent )    return GetLastError();  hPipe = device->hDeviceHandle;  Overlapped.Internal = 0;  Overlapped.InternalHigh = 0;  *(_QWORD *)&Overlapped.Offset = 0i64;  NumberOfBytesTransferred = 0;  Overlapped.hEvent = hEvent;  if ( DeviceIoControl(hPipe, (4 * ctlNo + 64) | 0x220002, _buffer, _bufsize, _buffer, _bufsize, 0, &Overlapped) )  {    CloseHandle(_hEvent);    return 0;  }  v12 = GetLastError();  v9 = v12;  if ( v12 != 997 )    goto LABEL_10;  v9 = 0;  if ( !GetOverlappedResult(device->hDeviceHandle, &Overlapped, &NumberOfBytesTransferred, 1) )  {    v13 = GetLastError();    v9 = v13;    v14 = v13;    v15 = _CFStringMakeConstantString("_AMRUSBInterfaceWritePipe: error %d");    AMRLog(3, v15, v14);LABEL_10:    if ( v9 )    {      v16 = _CFStringMakeConstantString("_AMRUSBInterfaceWritePipe: error %d");      AMRLog(3, v16, v9);    }  }  CloseHandle(_hEvent);  return v9;}int __usercall AMRUSBInterfaceReadPipe<eax>(LPVOID buffer<ecx>,DWORD *pbufsize<eax>,AppleDevice *device<edi>,unsigned __int8 ctlNo){  void *_buf; // ebx@1  DWORD _bufsize; // esi@1  int result; // eax@2  void *v7; // eax@3  void *v8; // ebp@3  int v9; // esi@7  void *v10; // eax@2  DWORD v11; // ST1C_4@4  void *v12; // eax@4  void *v13; // ecx@5  DWORD v14; // eax@7  DWORD v15; // ST1C_4@9  void *v16; // eax@9  DWORD NumberOfBytesTransferred; // [sp+8h] [bp-18h]@1  struct _OVERLAPPED Overlapped; // [sp+Ch] [bp-14h]@5  _bufsize = *pbufsize;  _buf = buffer;  NumberOfBytesTransferred = 0;  if ( device )  {    v7 = CreateEventW(0, 1, 0, 0);    v8 = v7;    if ( v7 )    {      v13 = device->hDeviceHandle;      Overlapped.Internal = 0;      Overlapped.InternalHigh = 0;      *(_QWORD *)&Overlapped.Offset = 0i64;      NumberOfBytesTransferred = 0;      Overlapped.hEvent = v7;      if ( DeviceIoControl(v13, (4 * ctlNo + 32) | 0x220001, _buf, _bufsize, _buf, _bufsize, 0, &Overlapped) )      {        CloseHandle(v8);        result = 0;      }      else      {        v14 = GetLastError();        v9 = v14;        if ( v14 == 997 )        {          v9 = 0;          if ( !GetOverlappedResult(device->hDeviceHandle, &Overlapped, &NumberOfBytesTransferred, 1) )          {            v15 = GetLastError();            v16 = _CFStringMakeConstantString("_AMRUSBInterfaceReadPipe: GetOverlappedResult error %d");            AMRLog(3, v16, v15);            v9 = 2001;          }        }        CloseHandle(v8);        result = v9;      }    }    else    {      v11 = GetLastError();      v12 = _CFStringMakeConstantString("_AMRUSBInterfaceReadPipe: CreateEvent error %d");      AMRLog(3, v12, v11);      result = 2001;    }  }  else  {    v10 = _CFStringMakeConstantString("_AMRUSBInterfaceReadPipe pAppleDevice == NULL");    AMRLog(3, v10);    result = 2004;  }  return result;}