#include <cstdio>
#include <string>
#include <windows.h>
using namespace std;
int main(int argc, char **argv)
{
  if (argc < 3) return 1;
  HANDLE fin = CreateFile(argv[1], GENERIC_READ, 0, 0, 3, 0, 0);
  if (fin == (HANDLE)-1) return 1;
  HANDLE fout = CreateFile(argv[2], GENERIC_WRITE, 0, 0, 2, 0, 0);
  if (fout == (HANDLE)-1) return 1;
  static char *hextab = "0123456789abcdef";
  unsigned char buff[0x2000], obuff[0x5000], *p;
  DWORD i, j, dwRead, dwWritten;
  while (ReadFile(fin, buff, sizeof buff, &dwRead, 0) && dwRead > 0) {
    for (i = j = 0, p = obuff; i < dwRead; ++i, j = (j + 1) % 0x20) {
      *p++ = hextab[buff[i] >> 4];
      *p++ = hextab[buff[i] & 0xf];
      if (j == 0x1f) *p++ = '\r', *p++ = '\n';
    }
    WriteFile(fout, obuff, p - obuff, &dwWritten, 0);
  }
  CloseHandle(fin), CloseHandle(fout);
  return 0;
}