/* LICENSE:
  =========================================================================
    CMPack'04 Source Code Release for OPEN-R SDK 1.1.5-r2 for ERS7
    Copyright (C) 2004 Multirobot Lab [Project Head: Manuela Veloso]
    School of Computer Science, Carnegie Mellon University
    All rights reserved.
  ========================================================================= */
/* Kick motions copied from German Team */
/* The kicks in this file were developed by the GermanTeam (http://www.robocup.de/germanteam/). */
/* THIS FILE IS AUTOMATICALLY GENERATED! */

#include "genmot.h"


void make_kicks_de()
{
  Motion::BodyStateMotion m[64];
  Motion::BodyState b;
  FILE *out;
  int n;

  mzero(m,64);

  //==== armKickLeft ====//
  // ArmKickLeft : Schuss mit linkem Arm
  // mittelstarker, sehr schnell ausgeführter Schuss
  // Richtung: ca. 45° nach rechts
  // beste Ballentfernung: ca. 12 cm

  mzero(b);

  n = 0;
  m[n].body = b;
  m[n].time = 100;
  n++;

  HeadAng (b,       0,     0,     0);
  LegAng  (b,0,     0,   0.2,   1.2);
  LegAng  (b,1,     0,   0.2,  1.24);
  LegAng  (b,2,    -1,   0.5,   1.7);
  LegAng  (b,3,    -1,   0.5,   1.7);
  m[n].body = b;
  m[n].time = 240;
  n++;

  HeadAng (b,       0,     0,     0);
  LegAng  (b,0,     0,   0.2,   1.2);
  LegAng  (b,1,     0,   0.2,  1.24);
  LegAng  (b,2,    -1,   0.5,   1.7);
  LegAng  (b,3,    -1,   0.5,   1.7);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,    0.75,     0,     0);
  LegAng  (b,0,   1.2,   1.5,     0);
  LegAng  (b,1,     0,     0, 1.154);
  LegAng  (b,2,  -1.2,   0.5,   1.8);
  LegAng  (b,3,    -1,   0.5,   2.1);
  m[n].body = b;
  m[n].time = 240;
  n++;

  HeadAng (b,    0.75,     0,     0);
  LegAng  (b,0,   1.2,   1.5,     0);
  LegAng  (b,1,     0,     0, 1.154);
  LegAng  (b,2,  -1.2,   0.5,   1.8);
  LegAng  (b,3,    -1,   0.5,   2.1);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,    0.75,     0,     0);
  LegAng  (b,0,     2,   1.2,   0.7);
  LegAng  (b,1,  -0.8,   0.3, 2.854);
  LegAng  (b,2,     0,   0.5,   1.8);
  LegAng  (b,3,     0,   0.5,   2.1);
  m[n].body = b;
  m[n].time = 80;
  n++;

  HeadAng (b,    0.75,     0,     0);
  LegAng  (b,0,     2,   1.2,   0.7);
  LegAng  (b,1,  -0.8,   0.3, 2.854);
  LegAng  (b,2,     0,   0.5,   1.8);
  LegAng  (b,3,     0,   0.5,   2.1);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,    0.75,     0,     0);
  LegAng  (b,0,     2,     0,   0.4);
  LegAng  (b,1,  -0.8,   0.3, 2.854);
  LegAng  (b,2,     0,   0.5,   1.8);
  LegAng  (b,3,     0,   0.5,   2.1);
  m[n].body = b;
  m[n].time = 400;
  n++;

  // Darmstadt GO-Stand
  HeadAng (b,    0.75,     0,     0);
  LegAng  (b,0,     2,     0,   0.4);
  LegAng  (b,1,  -0.8,   0.3, 2.854);
  LegAng  (b,2,     0,   0.5,   1.8);
  LegAng  (b,3,     0,   0.5,   2.1);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,       0,     0,     0);
  LegAng  (b,0,   0.5,   0.7,  1.24);
  LegAng  (b,1,   0.5,   0.7,  1.24);
  LegAng  (b,2,  -0.8,   0.4,   1.8);
  LegAng  (b,3,  -0.8,   0.4,   1.8);
  m[n].body = b;
  m[n].time = 480;
  n++;

  HeadAng (b,       0,     0,     0);
  LegAng  (b,0,   0.5,   0.7,  1.24);
  LegAng  (b,1,   0.5,   0.7,  1.24);
  LegAng  (b,2,  -0.8,   0.4,   1.8);
  LegAng  (b,3,  -0.8,   0.4,   1.8);
  m[n].body = b;
  m[n].time = 0;
  n++;

  out = fopen("armKickLeft.mot","wb");
  fwrite(&n,sizeof(n),1,out);
  fwrite(m,sizeof(Motion::BodyStateMotion),n,out);
  fclose(out);


  //==== armKickRight ====//
  // ArmKickRight : Schuss mit rechtem Arm
  // mittelstarker, sehr schnell ausgeführter Schuss
  // Richtung: ca. 45° nach links
  // beste Ballentfernung: ca. 12 cm

  mzero(b);

  n = 0;
  m[n].body = b;
  m[n].time = 100;
  n++;

  HeadAng (b,       0,     0,     0);
  LegAng  (b,0,     0,   0.2,  1.24);
  LegAng  (b,1,     0,   0.2,   1.2);
  LegAng  (b,2,    -1,   0.5,   1.7);
  LegAng  (b,3,    -1,   0.5,   1.7);
  m[n].body = b;
  m[n].time = 240;
  n++;

  HeadAng (b,       0,     0,     0);
  LegAng  (b,0,     0,   0.2,  1.24);
  LegAng  (b,1,     0,   0.2,   1.2);
  LegAng  (b,2,    -1,   0.5,   1.7);
  LegAng  (b,3,    -1,   0.5,   1.7);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,    0.75,     0,     0);
  LegAng  (b,0,     0,     0, 1.154);
  LegAng  (b,1,   1.2,   1.5,     0);
  LegAng  (b,2,    -1,   0.5,   2.1);
  LegAng  (b,3,  -1.2,   0.5,   1.8);
  m[n].body = b;
  m[n].time = 240;
  n++;

  HeadAng (b,    0.75,     0,     0);
  LegAng  (b,0,     0,     0, 1.154);
  LegAng  (b,1,   1.2,   1.5,     0);
  LegAng  (b,2,    -1,   0.5,   2.1);
  LegAng  (b,3,  -1.2,   0.5,   1.8);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,    0.75,     0,     0);
  LegAng  (b,0,  -0.8,   0.3, 2.854);
  LegAng  (b,1,     2,   1.2,   0.7);
  LegAng  (b,2,     0,   0.5,   2.1);
  LegAng  (b,3,     0,   0.5,   1.8);
  m[n].body = b;
  m[n].time = 80;
  n++;

  HeadAng (b,    0.75,     0,     0);
  LegAng  (b,0,  -0.8,   0.3, 2.854);
  LegAng  (b,1,     2,   1.2,   0.7);
  LegAng  (b,2,     0,   0.5,   2.1);
  LegAng  (b,3,     0,   0.5,   1.8);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,    0.75,     0,     0);
  LegAng  (b,0,  -0.8,   0.3, 2.854);
  LegAng  (b,1,     2,     0,   0.4);
  LegAng  (b,2,     0,   0.5,   2.1);
  LegAng  (b,3,     0,   0.5,   1.8);
  m[n].body = b;
  m[n].time = 400;
  n++;

  // Darmstadt GO-Stand
  HeadAng (b,    0.75,     0,     0);
  LegAng  (b,0,  -0.8,   0.3, 2.854);
  LegAng  (b,1,     2,     0,   0.4);
  LegAng  (b,2,     0,   0.5,   2.1);
  LegAng  (b,3,     0,   0.5,   1.8);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,       0,     0,     0);
  LegAng  (b,0,   0.5,   0.7,  1.24);
  LegAng  (b,1,   0.5,   0.7,  1.24);
  LegAng  (b,2,  -0.8,   0.4,   1.8);
  LegAng  (b,3,  -0.8,   0.4,   1.8);
  m[n].body = b;
  m[n].time = 480;
  n++;

  HeadAng (b,       0,     0,     0);
  LegAng  (b,0,   0.5,   0.7,  1.24);
  LegAng  (b,1,   0.5,   0.7,  1.24);
  LegAng  (b,2,  -0.8,   0.4,   1.8);
  LegAng  (b,3,  -0.8,   0.4,   1.8);
  m[n].body = b;
  m[n].time = 0;
  n++;

  out = fopen("armKickRight.mot","wb");
  fwrite(&n,sizeof(n),1,out);
  fwrite(m,sizeof(Motion::BodyStateMotion),n,out);
  fclose(out);


  //==== bicycleKick ====//
  // BicycleKick: Fallrückzieher. Der Ball wird festgehalten, während sich der Roboter auf den 
  // Hintern setzt. Dann richtet sich der Roboter auf und schmeißt den Ball nach hinten weg.
  // Dabei fällt er um (und steht dann wieder auf), wobei er sich um 180° gedreht hat
  // Dauer      :  2.8s ohne aufstehen
  // Parameter  :  keine
  // 
  // Hinterbeine nach außen drehen

  mzero(b);

  n = 0;
  m[n].body = b;
  m[n].time = 160;
  n++;

  HeadAng (b,    -0.1,     0,     0);
  // ignoring tail commands for motion bicycleKick
  LegAng  (b,0,   1.5,  -0.2,   0.1);
  LegAng  (b,1,   1.5,  -0.2,   0.1);
  LegAng  (b,2,  -0.7,   1.6,   1.6);
  LegAng  (b,3,  -0.7,   1.6,   1.6);
  m[n].body = b;
  m[n].time = 160;
  n++;

  // Ball hoch & Hinterbeine nach vorne
  HeadAng (b,    -0.3,     0,     0);
  // ignoring tail commands for motion bicycleKick
  LegAng  (b,0,   1.5,  -0.2,   0.1);
  LegAng  (b,1,   1.5,  -0.2,   0.1);
  LegAng  (b,2,  -0.7,   1.6,     0);
  LegAng  (b,3,  -0.7,   1.6,     0);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,    0.65,     0,     0);
  // ignoring tail commands for motion bicycleKick
  LegAng  (b,0,   1.5,  -0.2,   0.1);
  LegAng  (b,1,   1.5,  -0.2,   0.1);
  LegAng  (b,2,  -0.7,   1.6,     0);
  LegAng  (b,3,  -0.7,   1.6,     0);
  m[n].body = b;
  m[n].time = 40;
  n++;

  HeadAng (b,    0.65,     0,     0);
  // ignoring tail commands for motion bicycleKick
  LegAng  (b,0,   1.5,  -0.2,   0.1);
  LegAng  (b,1,   1.5,  -0.2,   0.1);
  LegAng  (b,2,  -0.7,   1.6,     0);
  LegAng  (b,3,  -0.7,   1.6,     0);
  m[n].body = b;
  m[n].time = 176;
  n++;

  // Körper hochruckeln
  HeadAng (b,    0.65,     0,     0);
  // ignoring tail commands for motion bicycleKick
  LegAng  (b,0,   1.8,  -0.3,   0.7);
  LegAng  (b,1,   1.8,  -0.3,   0.7);
  LegAng  (b,2,  -1.8,   0.5,     0);
  LegAng  (b,3,  -1.8,   0.5,     0);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,    0.65,     0,     0);
  // ignoring tail commands for motion bicycleKick
  LegAng  (b,0,   1.8,  -0.3,   0.7);
  LegAng  (b,1,   1.8,  -0.3,   0.7);
  LegAng  (b,2,  -0.4,  0.35,   0.5);
  LegAng  (b,3,  -0.4,  0.35,  -0.1);
  m[n].body = b;
  m[n].time = 192;
  n++;

  HeadAng (b,    0.65,     0,     0);
  // ignoring tail commands for motion bicycleKick
  LegAng  (b,0,   1.8,  -0.3,   0.7);
  LegAng  (b,1,   1.8,  -0.3,   0.7);
  LegAng  (b,2,  -0.4,  0.35,   0.5);
  LegAng  (b,3,  -0.4,  0.35,  -0.1);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,    0.65,     0,     0);
  // ignoring tail commands for motion bicycleKick
  LegAng  (b,0,   1.8,  -0.3,   0.7);
  LegAng  (b,1,   1.8,  -0.3,   0.7);
  LegAng  (b,2,  -0.4,  0.35,  -0.1);
  LegAng  (b,3,  -0.4,  0.35,   0.5);
  m[n].body = b;
  m[n].time = 176;
  n++;

  HeadAng (b,    0.65,     0,     0);
  // ignoring tail commands for motion bicycleKick
  LegAng  (b,0,   1.8,  -0.3,   0.7);
  LegAng  (b,1,   1.8,  -0.3,   0.7);
  LegAng  (b,2,  -0.4,  0.35,  -0.1);
  LegAng  (b,3,  -0.4,  0.35,   0.5);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,    0.65,     0,     0);
  // ignoring tail commands for motion bicycleKick
  LegAng  (b,0,   1.8,  -0.3,   0.7);
  LegAng  (b,1,   1.8,  -0.3,   0.7);
  LegAng  (b,2,  -0.4,  0.35,   0.5);
  LegAng  (b,3,  -0.4,  0.35,  -0.1);
  m[n].body = b;
  m[n].time = 176;
  n++;

  HeadAng (b,    0.65,     0,     0);
  // ignoring tail commands for motion bicycleKick
  LegAng  (b,0,   1.8,  -0.3,   0.7);
  LegAng  (b,1,   1.8,  -0.3,   0.7);
  LegAng  (b,2,  -0.4,  0.35,   0.5);
  LegAng  (b,3,  -0.4,  0.35,  -0.1);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,    0.65,     0,     0);
  // ignoring tail commands for motion bicycleKick
  LegAng  (b,0,   1.8,  -0.3,   0.7);
  LegAng  (b,1,   1.8,  -0.3,   0.7);
  LegAng  (b,2,  -0.4,  0.35,  -0.1);
  LegAng  (b,3,  -0.4,  0.35,   0.5);
  m[n].body = b;
  m[n].time = 176;
  n++;

  HeadAng (b,    0.65,     0,     0);
  // ignoring tail commands for motion bicycleKick
  LegAng  (b,0,   1.8,  -0.3,   0.7);
  LegAng  (b,1,   1.8,  -0.3,   0.7);
  LegAng  (b,2,  -0.4,  0.35,  -0.1);
  LegAng  (b,3,  -0.4,  0.35,   0.5);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,    0.65,     0,     0);
  // ignoring tail commands for motion bicycleKick
  LegAng  (b,0,   1.8,  -0.3,   0.7);
  LegAng  (b,1,   1.8,  -0.3,   0.7);
  LegAng  (b,2,  -0.4,  0.35,   0.5);
  LegAng  (b,3,  -0.4,  0.35,  -0.1);
  m[n].body = b;
  m[n].time = 176;
  n++;

  HeadAng (b,    0.65,     0,     0);
  // ignoring tail commands for motion bicycleKick
  LegAng  (b,0,   1.8,  -0.3,   0.7);
  LegAng  (b,1,   1.8,  -0.3,   0.7);
  LegAng  (b,2,  -0.4,  0.35,   0.5);
  LegAng  (b,3,  -0.4,  0.35,  -0.1);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,    0.65,     0,     0);
  // ignoring tail commands for motion bicycleKick
  LegAng  (b,0,   1.8,  -0.3,   0.7);
  LegAng  (b,1,   1.8,  -0.3,   0.7);
  LegAng  (b,2,  -0.4,  0.35,  -0.1);
  LegAng  (b,3,  -0.4,  0.35,   0.4);
  m[n].body = b;
  m[n].time = 176;
  n++;

  HeadAng (b,    0.65,     0,     0);
  // ignoring tail commands for motion bicycleKick
  LegAng  (b,0,   1.8,  -0.3,   0.7);
  LegAng  (b,1,   1.8,  -0.3,   0.7);
  LegAng  (b,2,  -0.4,  0.35,  -0.1);
  LegAng  (b,3,  -0.4,  0.35,   0.4);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,    0.65,     0,     0);
  // ignoring tail commands for motion bicycleKick
  LegAng  (b,0,   1.8,  -0.3,   0.7);
  LegAng  (b,1,   1.8,  -0.3,   0.7);
  LegAng  (b,2,  -0.4,  0.35,   0.4);
  LegAng  (b,3,  -0.4,  0.35,     0);
  m[n].body = b;
  m[n].time = 176;
  n++;

  HeadAng (b,    0.65,     0,     0);
  // ignoring tail commands for motion bicycleKick
  LegAng  (b,0,   1.8,  -0.3,   0.7);
  LegAng  (b,1,   1.8,  -0.3,   0.7);
  LegAng  (b,2,  -0.4,  0.35,   0.4);
  LegAng  (b,3,  -0.4,  0.35,     0);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,    0.65,     0,     0);
  // ignoring tail commands for motion bicycleKick
  LegAng  (b,0,   1.8,  -0.3,   0.7);
  LegAng  (b,1,   1.8,  -0.3,   0.7);
  LegAng  (b,2,  -0.4,  0.35,     0);
  LegAng  (b,3,  -0.4,  0.35,   0.4);
  m[n].body = b;
  m[n].time = 136;
  n++;

  HeadAng (b,    0.65,     0,     0);
  // ignoring tail commands for motion bicycleKick
  LegAng  (b,0,   1.8,  -0.3,   0.7);
  LegAng  (b,1,   1.8,  -0.3,   0.7);
  LegAng  (b,2,  -0.4,  0.35,     0);
  LegAng  (b,3,  -0.4,  0.35,   0.4);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,    0.65,     0,     0);
  // ignoring tail commands for motion bicycleKick
  LegAng  (b,0,   1.8,  -0.3,   0.7);
  LegAng  (b,1,   1.8,  -0.3,   0.7);
  LegAng  (b,2,  -0.4,  0.35,   0.2);
  LegAng  (b,3,  -0.4,  0.35,     0);
  m[n].body = b;
  m[n].time = 136;
  n++;

  // Kopf zur Seite (Martin, klappt, aber nicht in dieser Zeit)
  HeadAng (b,    0.65,     0,     0);
  // ignoring tail commands for motion bicycleKick
  LegAng  (b,0,   1.8,  -0.3,   0.7);
  LegAng  (b,1,   1.8,  -0.3,   0.7);
  LegAng  (b,2,  -0.4,  0.35,   0.2);
  LegAng  (b,3,  -0.4,  0.35,     0);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,     0.7,   0.7,   0.3);
  MouthAng(b,      0);
  // ignoring tail commands for motion bicycleKick
  LegAng  (b,0,   0.7,  -0.3,   0.7);
  LegAng  (b,1,   0.7,  -0.3,   0.7);
  LegAng  (b,2,  -0.4,  0.35,   0.2);
  LegAng  (b,3,  -0.4,  0.35,     0);
  m[n].body = b;
  m[n].time = 40;
  n++;

  HeadAng (b,     0.7,   0.7,   0.3);
  MouthAng(b,      0);
  // ignoring tail commands for motion bicycleKick
  LegAng  (b,0,   0.7,  -0.3,   0.7);
  LegAng  (b,1,   0.7,  -0.3,   0.7);
  LegAng  (b,2,  -0.4,  0.35,   0.2);
  LegAng  (b,3,  -0.4,  0.35,     0);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,     0.6,   1.5,   0.2);
  MouthAng(b,      0);
  // ignoring tail commands for motion bicycleKick
  LegAng  (b,0,   0.4,  -0.3,   0.9);
  LegAng  (b,1,   0.4,  -0.3,   0.9);
  LegAng  (b,2,  -0.3,  0.35,     0);
  LegAng  (b,3,  -0.3,  0.35,     0);
  m[n].body = b;
  m[n].time = 40;
  n++;

  // und Schuß !! (Martin, klappt, fällt aber auf Kopf)
  HeadAng (b,     0.6,   1.5,   0.2);
  MouthAng(b,      0);
  // ignoring tail commands for motion bicycleKick
  LegAng  (b,0,   0.4,  -0.3,   0.9);
  LegAng  (b,1,   0.4,  -0.3,   0.9);
  LegAng  (b,2,  -0.3,  0.35,     0);
  LegAng  (b,3,  -0.3,  0.35,     0);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,    0.75,   1.5,   0.5);
  MouthAng(b,      0);
  // ignoring tail commands for motion bicycleKick
  LegAng  (b,0,   1.8,  -0.3,  -0.3);
  LegAng  (b,1,   1.8,  -0.3,  -0.3);
  LegAng  (b,2,   0.7,   0.4,     1);
  LegAng  (b,3,   0.7,   0.4,     1);
  m[n].body = b;
  m[n].time = 200;
  n++;

  HeadAng (b,    0.75,   1.5,   0.5);
  MouthAng(b,      0);
  // ignoring tail commands for motion bicycleKick
  LegAng  (b,0,   1.8,  -0.3,  -0.3);
  LegAng  (b,1,   1.8,  -0.3,  -0.3);
  LegAng  (b,2,   0.7,   0.4,     1);
  LegAng  (b,3,   0.7,   0.4,     1);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,    -1.5,     0,     0);
  MouthAng(b,      0);
  // ignoring tail commands for motion bicycleKick
  LegAng  (b,0,   1.8,  -0.3,  -0.3);
  LegAng  (b,1,   1.8,  -0.3,  -0.3);
  LegAng  (b,2,   0.7,   0.4,     1);
  LegAng  (b,3,   0.7,   0.4,     1);
  m[n].body = b;
  m[n].time = 200;
  n++;

  // Beine und Kopf gerade zur Vorbereitung aufs aufstehen
  HeadAng (b,    -1.5,     0,     0);
  MouthAng(b,      0);
  // ignoring tail commands for motion bicycleKick
  LegAng  (b,0,   1.8,  -0.3,  -0.3);
  LegAng  (b,1,   1.8,  -0.3,  -0.3);
  LegAng  (b,2,   0.7,   0.4,     1);
  LegAng  (b,3,   0.7,   0.4,     1);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,       0,     0,     0);
  // ignoring tail commands for motion bicycleKick
  LegAng  (b,0,     0,     0,     0);
  LegAng  (b,1,     0,     0,     0);
  LegAng  (b,2,     0,     0,     0);
  LegAng  (b,3,     0,     0,     0);
  m[n].body = b;
  m[n].time = 280;
  n++;

  // und Schuß (kopfschonender, aber geht daneben)
  // 200 1500 100   0 0 -500   1800 -300 -300   1800 -300 -300   700  400 1000    700  400 1000  0 30
  // -1500 0 0       0 0 -500   0 0 0            0 1400 2500      0 0 0            0 1400 2500    0 50
  // Beine und Kopf gerade zur Vorbereitung aufs aufstehen
  // 0 0 0   0 0 0      0 0 -500    0 0 0    0 0 0   0 0 0      0 35
  // aufstehen
  // 0 0 0       0 0 -500   0 0 0            2000 0 2500      0 0 0            2000 0 2500       0 47
  // 0 0 0       0 0 -500   -1000 1000 2000  1500 1500 2500   -1000 1000 2000  1500 1500 2500    0 30
  // 0 0 0       0 0 -500   -1600 1500 2500  -1600 1500 2500  -1400 1600 2500  -1400 1600 2500   0 30
  // ~ ~ ~       0 0 -500   -1300 800 2100   -1300 800 2100   -1200 1000 2300  -1200 1000 2300   0 10
  // ~ ~ ~       0 0 -500   -317 251 1334   -317 251 1334   -508 294 1507   -508 294 1507   0 80
  HeadAng (b,       0,     0,     0);
  // ignoring tail commands for motion bicycleKick
  LegAng  (b,0,     0,     0,     0);
  LegAng  (b,1,     0,     0,     0);
  LegAng  (b,2,     0,     0,     0);
  LegAng  (b,3,     0,     0,     0);
  m[n].body = b;
  m[n].time = 0;
  n++;

  out = fopen("bicycleKick.mot","wb");
  fwrite(&n,sizeof(n),1,out);
  fwrite(m,sizeof(Motion::BodyStateMotion),n,out);
  fclose(out);


  //==== catchBall2 ====//

  mzero(b);

  n = 0;
  m[n].body = b;
  m[n].time = 100;
  n++;

  HeadAng (b,       0,     0,     0);
  LegAng  (b,0,  -0.1,  0.27, 1.925);
  LegAng  (b,1,  -0.1,  0.27, 1.925);
  LegAng  (b,2, -0.58, 0.165,  1.38);
  LegAng  (b,3, -0.58, 0.165,  1.38);
  m[n].body = b;
  m[n].time = 200;
  n++;

  HeadAng (b,       0,     0,     0);
  LegAng  (b,0,  -0.1,  0.27, 1.925);
  LegAng  (b,1,  -0.1,  0.27, 1.925);
  LegAng  (b,2, -0.58, 0.165,  1.38);
  LegAng  (b,3, -0.58, 0.165,  1.38);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,    -0.1,     0,     0);
  LegAng  (b,0,  0.04, 0.305,  1.92);
  LegAng  (b,1,  0.04, 0.305,  1.92);
  LegAng  (b,2,-1.055, 0.165,  1.38);
  LegAng  (b,3,-1.055, 0.165,  1.38);
  m[n].body = b;
  m[n].time = 200;
  n++;

  HeadAng (b,    -0.1,     0,     0);
  LegAng  (b,0,  0.04, 0.305,  1.92);
  LegAng  (b,1,  0.04, 0.305,  1.92);
  LegAng  (b,2,-1.055, 0.165,  1.38);
  LegAng  (b,3,-1.055, 0.165,  1.38);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,    -0.2,     0,     0);
  LegAng  (b,0,   0.8, 0.475,  1.05);
  LegAng  (b,1,   0.8, 0.475,  1.05);
  LegAng  (b,2,-0.325,  0.14, 1.385);
  LegAng  (b,3,-0.325,  0.14, 1.385);
  m[n].body = b;
  m[n].time = 200;
  n++;

  HeadAng (b,    -0.2,     0,     0);
  LegAng  (b,0,   0.8, 0.475,  1.05);
  LegAng  (b,1,   0.8, 0.475,  1.05);
  LegAng  (b,2,-0.325,  0.14, 1.385);
  LegAng  (b,3,-0.325,  0.14, 1.385);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,    -0.3,     0,     0);
  LegAng  (b,0,  0.92, -0.15,  1.36);
  LegAng  (b,1,  0.92, -0.15,  1.36);
  LegAng  (b,2, -0.25,  0.16, 1.385);
  LegAng  (b,3, -0.25,  0.16, 1.385);
  m[n].body = b;
  m[n].time = 200;
  n++;

  HeadAng (b,    -0.3,     0,     0);
  LegAng  (b,0,  0.92, -0.15,  1.36);
  LegAng  (b,1,  0.92, -0.15,  1.36);
  LegAng  (b,2, -0.25,  0.16, 1.385);
  LegAng  (b,3, -0.25,  0.16, 1.385);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,    -0.4,     0,     0);
  LegAng  (b,0,  0.92, -0.15,  1.36);
  LegAng  (b,1,  0.92, -0.15,  1.36);
  LegAng  (b,2, -0.25,  0.16, 1.385);
  LegAng  (b,3, -0.25,  0.16, 1.385);
  m[n].body = b;
  m[n].time = 200;
  n++;

  // unhandled transition in motion catchBall2, 'transition catchBall2 catchBall2 hold'
  // unhandled transition in motion catchBall2, 'transition boundaryKick boundaryKick fromhold'
  // unhandled transition in motion catchBall2, 'transition unswBashOptimized unswBashOptimized fromhold'
  // unhandled transition in motion catchBall2, 'transition mantisKick mantisKick fromhold'
  // unhandled transition in motion catchBall2, 'transition unswBash unswBash fromhold'
  HeadAng (b,    -0.4,     0,     0);
  LegAng  (b,0,  0.92, -0.15,  1.36);
  LegAng  (b,1,  0.92, -0.15,  1.36);
  LegAng  (b,2, -0.25,  0.16, 1.385);
  LegAng  (b,3, -0.25,  0.16, 1.385);
  m[n].body = b;
  m[n].time = 0;
  n++;

  out = fopen("catchBall2.mot","wb");
  fwrite(&n,sizeof(n),1,out);
  fwrite(m,sizeof(Motion::BodyStateMotion),n,out);
  fclose(out);


  //==== catchBall ====//
  // catchBall: Ball wird eingeklemmt

  mzero(b);

  n = 0;
  m[n].body = b;
  m[n].time = 200;
  n++;

  HeadAng (b,    0.46,     0,     0);
  LegAng  (b,0, 0.034,     0,     2);
  LegAng  (b,1, 0.034,     0,     2);
  LegAng  (b,2, -0.75,  0.25,  0.97);
  LegAng  (b,3, -0.75,  0.25,  0.97);
  m[n].body = b;
  m[n].time = 200;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,   1.2,     0,     1);
  LegAng  (b,1,   1.2,     0,     1);
  LegAng  (b,2,  -0.7,     0,   3.5);
  LegAng  (b,3,  -0.7,     0,   3.5);
  m[n].body = b;
  m[n].time = 200;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,   1.2,  -0.3,     1);
  LegAng  (b,1,   1.2,  -0.3,     1);
  LegAng  (b,2,  -0.7,     0,   3.5);
  LegAng  (b,3,  -0.7,     0,   3.5);
  m[n].body = b;
  m[n].time = 200;
  n++;

  HeadAng (b,    0.46,     0,     0);
  LegAng  (b,0, 0.034,     0,     2);
  LegAng  (b,1, 0.034,     0,     2);
  LegAng  (b,2, -0.75,  0.25,  0.97);
  LegAng  (b,3, -0.75,  0.25,  0.97);
  m[n].body = b;
  m[n].time = 0;
  n++;

  out = fopen("catchBall.mot","wb");
  fwrite(&n,sizeof(n),1,out);
  fwrite(m,sizeof(Motion::BodyStateMotion),n,out);
  fclose(out);


  //==== chestKick1 ====//
  // ChestKick1 : Schuss mit dem Bauch
  // nicht sehr starker Schuss, aber relativ gut geradeaus
  // Ball kann bis zu ca. 12cm vor den Vorderbeinen liegen
  // Parameter : keine

  mzero(b);

  n = 0;
  m[n].body = b;
  m[n].time = 100;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,    -2,   0.2,     2);
  LegAng  (b,1,    -2,   0.2,     2);
  LegAng  (b,2,     2,  0.25,   1.5);
  LegAng  (b,3,     2,  0.25,   1.5);
  m[n].body = b;
  m[n].time = 320;
  n++;

  // pause
  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,    -2,   0.2,     2);
  LegAng  (b,1,    -2,   0.2,     2);
  LegAng  (b,2,     2,  0.25,   1.5);
  LegAng  (b,3,     2,  0.25,   1.5);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,    -2,   0.2,     2);
  LegAng  (b,1,    -2,   0.2,     2);
  LegAng  (b,2,     2,  0.25,   1.5);
  LegAng  (b,3,     2,  0.25,   1.5);
  m[n].body = b;
  m[n].time = 480;
  n++;

  // aufstehen
  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,    -2,   0.2,     2);
  LegAng  (b,1,    -2,   0.2,     2);
  LegAng  (b,2,     2,  0.25,   1.5);
  LegAng  (b,3,     2,  0.25,   1.5);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,    -2,   1.5,     2);
  LegAng  (b,1,    -2,   1.5,     2);
  LegAng  (b,2,     2,  0.25,   1.5);
  LegAng  (b,3,     2,  0.25,   1.5);
  m[n].body = b;
  m[n].time = 480;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,    -2,   1.5,     2);
  LegAng  (b,1,    -2,   1.5,     2);
  LegAng  (b,2,     2,  0.25,   1.5);
  LegAng  (b,3,     2,  0.25,   1.5);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,-0.426, 0.356, 1.626);
  LegAng  (b,1,-0.426, 0.356, 1.626);
  LegAng  (b,2,-0.662, 0.456, 1.784);
  LegAng  (b,3,-0.662, 0.456, 1.784);
  m[n].body = b;
  m[n].time = 800;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,-0.426, 0.356, 1.626);
  LegAng  (b,1,-0.426, 0.356, 1.626);
  LegAng  (b,2,-0.662, 0.456, 1.784);
  LegAng  (b,3,-0.662, 0.456, 1.784);
  m[n].body = b;
  m[n].time = 0;
  n++;

  out = fopen("chestKick1.mot","wb");
  fwrite(&n,sizeof(n),1,out);
  fwrite(m,sizeof(Motion::BodyStateMotion),n,out);
  fclose(out);


  //==== chestKick2 ====//
  // ChestKick2 : Schuss mit dem Bauch und Kopf
  // etwas stärker als ChestKick1, aber gut geradeaus, da Vorderbeine Ball führen
  // Ball kann bis zu ca. 10cm vor den Vorderbeinen liegen aber nicht direkt vor dem
  // Bauch da sonst Ball eingeklemmt wird.
  // Parameter : keine

  mzero(b);

  n = 0;
  m[n].body = b;
  m[n].time = 100;
  n++;

  HeadAng (b,       0,     0,     0);
  LegAng  (b,0,    18,     0,     0);
  LegAng  (b,1,   1.8,     0,     0);
  LegAng  (b,2,     0,  0.25,     0);
  LegAng  (b,3,     0,  0.25,     0);
  m[n].body = b;
  m[n].time = 320;
  n++;

  // pause
  HeadAng (b,       0,     0,     0);
  LegAng  (b,0,    18,     0,     0);
  LegAng  (b,1,   1.8,     0,     0);
  LegAng  (b,2,     0,  0.25,     0);
  LegAng  (b,3,     0,  0.25,     0);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,       0,     0,     0);
  LegAng  (b,0,    18,     0,     0);
  LegAng  (b,1,   1.8,     0,     0);
  LegAng  (b,2,     0,  0.25,     0);
  LegAng  (b,3,     0,  0.25,     0);
  m[n].body = b;
  m[n].time = 320;
  n++;

  // aufstehen
  HeadAng (b,       0,     0,     0);
  LegAng  (b,0,    18,     0,     0);
  LegAng  (b,1,   1.8,     0,     0);
  LegAng  (b,2,     0,  0.25,     0);
  LegAng  (b,3,     0,  0.25,     0);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,-0.426, 0.356, 1.626);
  LegAng  (b,1,-0.426, 0.356, 1.626);
  LegAng  (b,2,-0.662, 0.456, 1.784);
  LegAng  (b,3,-0.662, 0.456, 1.784);
  m[n].body = b;
  m[n].time = 800;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,-0.426, 0.356, 1.626);
  LegAng  (b,1,-0.426, 0.356, 1.626);
  LegAng  (b,2,-0.662, 0.456, 1.784);
  LegAng  (b,3,-0.662, 0.456, 1.784);
  m[n].body = b;
  m[n].time = 0;
  n++;

  out = fopen("chestKick2.mot","wb");
  fwrite(&n,sizeof(n),1,out);
  fwrite(m,sizeof(Motion::BodyStateMotion),n,out);
  fclose(out);


  //==== darmstadtGOCheckForBall ====//
  //  darmstadtGOCheckForBall motion for looking for the ball between front legs
  //  when using a walk which is too deep to see the ball while walking

  mzero(b);

  n = 0;
  m[n].body = b;
  m[n].time = 240;
  n++;

  // unhandled transition in motion darmstadtGOCheckForBall, 'transition darmstadtGOCheckForBall darmstadtGOCheckForBall start'
  HeadAng (b,      -1,     0,     0);
  LegAng  (b,0,  0.45,   0.2,   0.6);
  LegAng  (b,1,  0.45,   0.2,   0.6);
  LegAng  (b,2,-0.797, 0.429, 1.769);
  LegAng  (b,3,-0.797, 0.429, 1.769);
  m[n].body = b;
  m[n].time = 0;
  n++;

  out = fopen("darmstadtGOCheckForBall.mot","wb");
  fwrite(&n,sizeof(n),1,out);
  fwrite(m,sizeof(Motion::BodyStateMotion),n,out);
  fclose(out);


  //==== extern ====//
  // This motion is entry point for SpecialAction from other motion modules
  // kicks
  // unhandled transition in motion extern, 'transition headKick headKick start'
  // unhandled transition in motion extern, 'transition chestKick1 chestKick1 start'
  // unhandled transition in motion extern, 'transition chestKick2 chestKick2 start'
  // unhandled transition in motion extern, 'transition leftKick leftKick start'
  // unhandled transition in motion extern, 'transition rightKick rightKick start'
  // unhandled transition in motion extern, 'transition leftHeadKick leftHeadKick start'
  // unhandled transition in motion extern, 'transition rightHeadKick rightHeadKick start'
  // unhandled transition in motion extern, 'transition legKick legKick start'
  // unhandled transition in motion extern, 'transition armKickLeft armKickLeft start'
  // unhandled transition in motion extern, 'transition armKickRight armKickRight start'
  // unhandled transition in motion extern, 'transition pawKickWithLeftForward pawKickWithLeftForward start'
  // unhandled transition in motion extern, 'transition pawKickWithRightForward pawKickWithRightForward start'
  // unhandled transition in motion extern, 'transition kickWithLeftToRight kickWithLeftToRight start'
  // unhandled transition in motion extern, 'transition kickWithRightToLeft kickWithRightToLeft start'
  // unhandled transition in motion extern, 'transition unswBashOptimized unswBashOptimized start'
  // unhandled transition in motion extern, 'transition mantisKick mantisKick start'
  // unhandled transition in motion extern, 'transition heelKickRight heelKickRight start'
  // unhandled transition in motion extern, 'transition heelKickLeft heelKickLeft start'
  // catch ball
  // unhandled transition in motion extern, 'transition grabBall grabBall start'
  // unhandled transition in motion extern, 'transition catchBall2 catchBall2 start'
  // kicks after catch
  // unhandled transition in motion extern, 'transition boundaryKick catchBall2 start'
  // unhandled transition in motion extern, 'transition boundaryKickRight catchBall2 start'
  // unhandled transition in motion extern, 'transition boundaryKickLeft catchBall2 start'
  // Ball Challenge
  // unhandled transition in motion extern, 'transition unswBash unswBash start'
  // unhandled transition in motion extern, 'transition unswChestKick unswChestKick start'
  // unhandled transition in motion extern, 'transition goalieDefend goalieDefend start'
  // unhandled transition in motion extern, 'transition catchBall catchBall start'
  // unhandled transition in motion extern, 'transition openArm openArm start'
  // other
  // unhandled transition in motion extern, 'transition legRotate legRotate start'
  // unhandled transition in motion extern, 'transition darmstadtGOCheckForBall darmstadtGOCheckForBall start'
  // unhandled transition in motion extern, 'transition goalieJumpLeft goalieJumpLeft start'
  // unhandled transition in motion extern, 'transition goalieJumpRight goalieJumpRight start'
  // nonsense
  // unhandled transition in motion extern, 'transition sit sit start'
  // unhandled transition in motion extern, 'transition scratchHead sit start'
  // unhandled transition in motion extern, 'transition headStand headStand start'
  // unhandled transition in motion extern, 'transition swing swing start'
  // unhandled transition in motion extern, 'transition extern extern start'
  out = fopen("extern.mot","wb");
  fwrite(&n,sizeof(n),1,out);
  fwrite(m,sizeof(Motion::BodyStateMotion),n,out);
  fclose(out);


  //==== goalieDefend ====//
  // Eine Verteidigungshaltung für den Goalie
  // Parameter  :  keine
  // 
  // Vorderbeine seitlich, leicht angewinkelt nachvorne, auf der Brust liegend
  // Hinterbeine wie beim Stand
  // Kopf nach vorne gerichtet

  mzero(b);

  n = 0;
  m[n].body = b;
  m[n].time = 200;
  n++;

  // in der ersten Position kurz bleiben
  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,   0.6,   1.4,   0.9);
  LegAng  (b,1,   0.6,   1.4,   0.9);
  LegAng  (b,2,-0.662, 0.456, 1.784);
  LegAng  (b,3,-0.662, 0.456, 1.784);
  m[n].body = b;
  m[n].time = 640;
  n++;

  // Fangbreite verringern
  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,   0.6,   1.4,   0.9);
  LegAng  (b,1,   0.6,   1.4,   0.9);
  LegAng  (b,2,-0.662, 0.456, 1.784);
  LegAng  (b,3,-0.662, 0.456, 1.784);
  m[n].body = b;
  m[n].time = 640;
  n++;

  // unhandled transition in motion goalieDefend, 'transition goalieDefend goalieDefend hold'
  // unhandled transition in motion goalieDefend, 'transition catchBall catchBall start'
  // unhandled transition in motion goalieDefend, 'transition unswBash unswBash start'
  // aufstehen
  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,   0.6,   1.4,   1.7);
  LegAng  (b,1,   0.6,   1.4,   1.7);
  LegAng  (b,2,-0.662, 0.456, 1.784);
  LegAng  (b,3,-0.662, 0.456, 1.784);
  m[n].body = b;
  m[n].time = 240;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,   1.5,  -0.1,  1.55);
  LegAng  (b,1,   1.5,     0,  1.55);
  LegAng  (b,2,-0.662, 0.456, 1.784);
  LegAng  (b,3,-0.662, 0.456, 1.784);
  m[n].body = b;
  m[n].time = 240;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,-0.426, 0.356,  1.55);
  LegAng  (b,1,-0.426, 0.356,  1.55);
  LegAng  (b,2,-0.662, 0.456, 1.784);
  LegAng  (b,3,-0.662, 0.456, 1.784);
  m[n].body = b;
  m[n].time = 240;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,-0.426, 0.356,  1.55);
  LegAng  (b,1,-0.426, 0.356,  1.55);
  LegAng  (b,2,-0.662, 0.456, 1.784);
  LegAng  (b,3,-0.662, 0.456, 1.784);
  m[n].body = b;
  m[n].time = 240;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,-0.426, 0.356,  1.55);
  LegAng  (b,1,-0.426, 0.356,  1.55);
  LegAng  (b,2,-0.662, 0.456, 1.784);
  LegAng  (b,3,-0.662, 0.456, 1.784);
  m[n].body = b;
  m[n].time = 0;
  n++;

  out = fopen("goalieDefend.mot","wb");
  fwrite(&n,sizeof(n),1,out);
  fwrite(m,sizeof(Motion::BodyStateMotion),n,out);
  fclose(out);


  //==== goalieJumpLeft ====//
  // goalieJumpLeft : Torwart Hechtsprung nach links

  mzero(b);

  n = 0;
  m[n].body = b;
  m[n].time = 100;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,   1.2,   1.5,     0);
  LegAng  (b,1,-0.426, 0.356,  1.55);
  LegAng  (b,2,-0.662, 0.456, 1.784);
  LegAng  (b,3,-0.662, 0.456, 1.784);
  m[n].body = b;
  m[n].time = 80;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,   1.2,   1.5,     0);
  LegAng  (b,1,-0.426, 0.356,  1.55);
  LegAng  (b,2,-0.662, 0.456, 1.784);
  LegAng  (b,3,-0.662, 0.456, 1.784);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,       0,     0,     0);
  LegAng  (b,0,   1.8,   1.5,   0.3);
  LegAng  (b,1,-0.426,   0.8,  0.95);
  LegAng  (b,2,  -0.3,   0.2,   2.5);
  LegAng  (b,3,   0.5,   0.8,     0);
  m[n].body = b;
  m[n].time = 1200;
  n++;

  HeadAng (b,       0,     0,     0);
  LegAng  (b,0,   1.8,   1.5,   0.3);
  LegAng  (b,1,-0.426,   0.8,  0.95);
  LegAng  (b,2,  -0.3,   0.2,   2.5);
  LegAng  (b,3,   0.5,   0.8,     0);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,       0,     0,     0);
  LegAng  (b,0,   1.8,     0,   0.3);
  LegAng  (b,1,   1.5,   0.5,   1.2);
  LegAng  (b,2,  -0.3,   0.2,   2.5);
  LegAng  (b,3,   0.5,   0.8,     0);
  m[n].body = b;
  m[n].time = 800;
  n++;

  HeadAng (b,       0,     0,     0);
  LegAng  (b,0,   1.8,     0,   0.3);
  LegAng  (b,1,   1.5,   0.5,   1.2);
  LegAng  (b,2,  -0.3,   0.2,   2.5);
  LegAng  (b,3,   0.5,   0.8,     0);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,-0.426, 0.356,  1.55);
  LegAng  (b,1,-0.426, 0.356,  1.55);
  LegAng  (b,2,-0.662, 0.456, 1.784);
  LegAng  (b,3,-0.662, 0.456, 1.784);
  m[n].body = b;
  m[n].time = 800;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,-0.426, 0.356,  1.55);
  LegAng  (b,1,-0.426, 0.356,  1.55);
  LegAng  (b,2,-0.662, 0.456, 1.784);
  LegAng  (b,3,-0.662, 0.456, 1.784);
  m[n].body = b;
  m[n].time = 0;
  n++;

  out = fopen("goalieJumpLeft.mot","wb");
  fwrite(&n,sizeof(n),1,out);
  fwrite(m,sizeof(Motion::BodyStateMotion),n,out);
  fclose(out);


  //==== goalieJumpRight ====//
  // goalieJumpRight : Torwart Hechtsprung nach links

  mzero(b);

  n = 0;
  m[n].body = b;
  m[n].time = 100;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,-0.426, 0.356,  1.55);
  LegAng  (b,1,   1.2,   1.5,     0);
  LegAng  (b,2,-0.662, 0.456, 1.784);
  LegAng  (b,3,-0.662, 0.456, 1.784);
  m[n].body = b;
  m[n].time = 80;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,-0.426, 0.356,  1.55);
  LegAng  (b,1,   1.2,   1.5,     0);
  LegAng  (b,2,-0.662, 0.456, 1.784);
  LegAng  (b,3,-0.662, 0.456, 1.784);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,       0,     0,     0);
  LegAng  (b,0,-0.426,   0.8,  0.95);
  LegAng  (b,1,   1.8,   1.5,   0.3);
  LegAng  (b,2,   0.5,   0.8,     0);
  LegAng  (b,3,  -0.3,   0.2,   2.5);
  m[n].body = b;
  m[n].time = 1200;
  n++;

  HeadAng (b,       0,     0,     0);
  LegAng  (b,0,-0.426,   0.8,  0.95);
  LegAng  (b,1,   1.8,   1.5,   0.3);
  LegAng  (b,2,   0.5,   0.8,     0);
  LegAng  (b,3,  -0.3,   0.2,   2.5);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,       0,     0,     0);
  LegAng  (b,0,   1.5,   0.5,   1.2);
  LegAng  (b,1,   1.8,     0,   0.3);
  m[n].body = b;
  m[n].time = 800;
  n++;

  HeadAng (b,       0,     0,     0);
  LegAng  (b,0,   1.5,   0.5,   1.2);
  LegAng  (b,1,   1.8,     0,   0.3);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,-0.426, 0.356,  1.55);
  LegAng  (b,1,-0.426, 0.356,  1.55);
  LegAng  (b,2,-0.662, 0.456, 1.784);
  LegAng  (b,3,-0.662, 0.456, 1.784);
  m[n].body = b;
  m[n].time = 800;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,-0.426, 0.356,  1.55);
  LegAng  (b,1,-0.426, 0.356,  1.55);
  LegAng  (b,2,-0.662, 0.456, 1.784);
  LegAng  (b,3,-0.662, 0.456, 1.784);
  m[n].body = b;
  m[n].time = 0;
  n++;

  out = fopen("goalieJumpRight.mot","wb");
  fwrite(&n,sizeof(n),1,out);
  fwrite(m,sizeof(Motion::BodyStateMotion),n,out);
  fclose(out);


  //==== grabBall ====//
  // grabBall: Ball wird eingeklemmt

  mzero(b);

  n = 0;
  m[n].body = b;
  m[n].time = 200;
  n++;

  HeadAng (b,     0.5,     0,     0);
  MouthAng(b,      0);
  LegAng  (b,0,   0.4,  0.29,  1.48);
  LegAng  (b,1,   0.4,  0.29,  1.48);
  LegAng  (b,2,  -0.8,  0.43,  1.77);
  LegAng  (b,3,  -0.8,  0.43,  1.77);
  m[n].body = b;
  m[n].time = 200;
  n++;

  HeadAng (b,     0.5,     0,     0);
  MouthAng(b,      0);
  LegAng  (b,0,   1.6,  0.29,   0.6);
  LegAng  (b,1,   1.6,  0.29,   0.6);
  LegAng  (b,2,  -0.8,  0.43,  1.77);
  LegAng  (b,3,  -0.8,  0.43,  1.77);
  m[n].body = b;
  m[n].time = 200;
  n++;

  HeadAng (b,     0.5,     0,     0);
  MouthAng(b,      0);
  LegAng  (b,0,   1.6,  -0.1,   0.6);
  LegAng  (b,1,   1.6,  -0.1,   0.6);
  LegAng  (b,2,  -0.8,  0.43,  1.77);
  LegAng  (b,3,  -0.8,  0.43,  1.77);
  m[n].body = b;
  m[n].time = 200;
  n++;

  HeadAng (b,     0.5,     0,     0);
  MouthAng(b,      0);
  LegAng  (b,0,  -1.6,  -0.1,   0.6);
  LegAng  (b,1,  -1.6,  -0.1,   0.6);
  LegAng  (b,2,  -0.8,  0.43,  1.77);
  LegAng  (b,3,  -0.8,  0.43,  1.77);
  m[n].body = b;
  m[n].time = 200;
  n++;

  HeadAng (b,     0.5,     0,     0);
  MouthAng(b,      0);
  LegAng  (b,0,   0.4,  -0.1,  1.48);
  LegAng  (b,1,   0.4,  -0.1,  1.48);
  LegAng  (b,2,  -0.8,  0.43,  1.77);
  LegAng  (b,3,  -0.8,  0.43,  1.77);
  m[n].body = b;
  m[n].time = 0;
  n++;

  out = fopen("grabBall.mot","wb");
  fwrite(&n,sizeof(n),1,out);
  fwrite(m,sizeof(Motion::BodyStateMotion),n,out);
  fclose(out);


  //==== headStand ====//
  // mbox Handstand

  mzero(b);

  n = 0;
  m[n].body = b;
  m[n].time = 968;
  n++;

  HeadAng (b,     0.5,     0,     0);
  LegAng  (b,0,   1.2,   0.9,   0.1);
  LegAng  (b,1,   1.2,   0.9,   0.1);
  LegAng  (b,2,  -0.6,     0,   1.8);
  LegAng  (b,3,  -0.6,     0,   1.8);
  m[n].body = b;
  m[n].time = 976;
  n++;

  HeadAng (b,     0.5,  -0.4,     0);
  LegAng  (b,0,     0,  1.57,     0);
  LegAng  (b,1,     0,  1.57,     0);
  LegAng  (b,2,     0,     0,     0);
  LegAng  (b,3,     0,     0,     0);
  m[n].body = b;
  m[n].time = 968;
  n++;

  HeadAng (b,    0.55,    -1,  -0.2);
  LegAng  (b,0, -0.58,     0, -0.47);
  LegAng  (b,1, -0.58,     0, -0.47);
  LegAng  (b,2,     0,     0,     0);
  LegAng  (b,3,     0,     0,     0);
  m[n].body = b;
  m[n].time = 976;
  n++;

  // Beine auseinander:
  HeadAng (b,     0.7,  -1.4, -0.49);
  LegAng  (b,0,  0.17,     0, -0.27);
  LegAng  (b,1,  0.17,     0, -0.27);
  LegAng  (b,2,  1.57,     0,     0);
  LegAng  (b,3,  1.57,     0,     0);
  m[n].body = b;
  m[n].time = 976;
  n++;

  HeadAng (b,     0.7,  -1.4, -0.49);
  LegAng  (b,0,   0.2,  -0.2,  -0.3);
  LegAng  (b,1,   0.2,   1.5,  -0.1);
  LegAng  (b,2,  1.57,  1.57,     0);
  LegAng  (b,3,  1.57,  1.57,     0);
  m[n].body = b;
  m[n].time = 976;
  n++;

  HeadAng (b,     0.7,  -1.4, -0.49);
  LegAng  (b,0,   0.2,  -0.2,  -0.3);
  LegAng  (b,1,   0.2,   1.5,  -0.1);
  LegAng  (b,2,  1.57,     0,     0);
  LegAng  (b,3,  1.57,     0,     0);
  m[n].body = b;
  m[n].time = 976;
  n++;

  HeadAng (b,     0.7,  -1.4, -0.49);
  LegAng  (b,0,   0.2,  -0.2,  -0.3);
  LegAng  (b,1,   0.2,   1.5,  -0.1);
  LegAng  (b,2,  1.57,  1.57,     0);
  LegAng  (b,3,  1.57,  1.57,     0);
  m[n].body = b;
  m[n].time = 976;
  n++;

  HeadAng (b,     0.7,  -1.4, -0.49);
  LegAng  (b,0,   0.1,   1.5,     0);
  LegAng  (b,1,   0.8,   1.4,  -0.1);
  LegAng  (b,2,  1.57,     0,     0);
  LegAng  (b,3,  1.57,     0,     0);
  m[n].body = b;
  m[n].time = 304;
  n++;

  HeadAng (b,     0.7,  -1.4, -0.49);
  LegAng  (b,0,  1.57,   1.3,   1.6);
  LegAng  (b,1,  1.57,   1.3,   1.6);
  LegAng  (b,2,     0,     0,     0);
  LegAng  (b,3,     0,     0,     0);
  m[n].body = b;
  m[n].time = 296;
  n++;

  // sitzen:
  HeadAng (b,    0.55,  -0.8,  -0.1);
  LegAng  (b,0,  0.65,   1.1,   1.6);
  LegAng  (b,1,  0.65,   1.1,   1.6);
  LegAng  (b,2,     0,     0,     0);
  LegAng  (b,3,     0,     0,     0);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,    0.55,  -0.4,     0);
  LegAng  (b,0,  -0.5,   0.6,  2.55);
  LegAng  (b,1,  -0.5,   0.6,  2.55);
  LegAng  (b,2,  -1.2,     0,  1.65);
  LegAng  (b,3,  -1.2,     0,  1.65);
  m[n].body = b;
  m[n].time = 696;
  n++;

  HeadAng (b,    0.55,  -0.4,     0);
  LegAng  (b,0,  -0.5,   0.6,  2.55);
  LegAng  (b,1,  -0.5,   0.6,  2.55);
  LegAng  (b,2,  -1.2,     0,  1.65);
  LegAng  (b,3,  -1.2,     0,  1.65);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,    -0.4,     0,     0);
  LegAng  (b,0,     0,     0,     0);
  LegAng  (b,1,     0,     0,     0);
  LegAng  (b,2,  -1.2,     0,  2.55);
  LegAng  (b,3,  -1.2,     0,  2.55);
  m[n].body = b;
  m[n].time = 704;
  n++;

  // unhandled transition in motion headStand, 'transition sit sit start'
  HeadAng (b,    -0.4,     0,     0);
  LegAng  (b,0,     0,     0,     0);
  LegAng  (b,1,     0,     0,     0);
  LegAng  (b,2,  -1.2,     0,  2.55);
  LegAng  (b,3,  -1.2,     0,  2.55);
  m[n].body = b;
  m[n].time = 0;
  n++;

  out = fopen("headStand.mot","wb");
  fwrite(&n,sizeof(n),1,out);
  fwrite(m,sizeof(Motion::BodyStateMotion),n,out);
  fclose(out);


  //==== heelKickLeft ====//
  //  kick backwards
  // Vorderbeine durchstrecken

  mzero(b);

  n = 0;
  m[n].body = b;
  m[n].time = 400;
  n++;

  // zur linken Seite
  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,     0,  0.15,  0.35);
  LegAng  (b,1,     0,  0.15,  0.35);
  LegAng  (b,2,  -0.6,   0.3,   1.3);
  LegAng  (b,3,  -0.7,   0.3,   1.3);
  m[n].body = b;
  m[n].time = 160;
  n++;

  // rechten Arm heben
  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,     0,   0.5,  0.35);
  LegAng  (b,1,     0,  -0.2,  0.35);
  LegAng  (b,2,  -0.6,   0.5,   1.3);
  LegAng  (b,3, -0.75,  -0.2,     2);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,   0.9,   1.2,  1.45);
  LegAng  (b,1,     0,  -0.2,  0.35);
  LegAng  (b,2,  -0.6,   0.5,   1.3);
  LegAng  (b,3, -0.75,  -0.2,     2);
  m[n].body = b;
  m[n].time = 200;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,   0.9,   1.2,  1.45);
  LegAng  (b,1,     0,  -0.2,  0.35);
  LegAng  (b,2,  -0.6,   0.5,   1.3);
  LegAng  (b,3, -0.75,  -0.2,     2);
  m[n].body = b;
  m[n].time = 280;
  n++;

  // Schuss
  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,     2,   0.1,     1);
  LegAng  (b,1,     0,  -0.2,   0.3);
  LegAng  (b,2,  -0.6,  -0.2,   1.3);
  LegAng  (b,3, -0.75,  -0.2,     2);
  m[n].body = b;
  m[n].time = 200;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,  0.35,   0.1,  -0.3);
  LegAng  (b,1,     0,  -0.2,  0.35);
  LegAng  (b,2,  -0.6,  -0.2,   1.3);
  LegAng  (b,3, -0.75,  -0.2,     2);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0, -0.65,   0.8,  -0.3);
  LegAng  (b,1,     0,  -0.2,  0.35);
  LegAng  (b,2,  -0.6,  -0.2,   1.3);
  LegAng  (b,3, -0.75,  -0.2,     2);
  m[n].body = b;
  m[n].time = 240;
  n++;

  // bein anwinkeln
  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0, -0.65,   0.8,  -0.3);
  LegAng  (b,1,     0,  -0.2,  0.35);
  LegAng  (b,2,  -0.6,  -0.2,   1.3);
  LegAng  (b,3, -0.75,  -0.2,     2);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,     0,   0.2,  1.24);
  LegAng  (b,1,     0,   0.2,   1.2);
  LegAng  (b,2,    -1,  -0.2,   1.7);
  LegAng  (b,3,    -1,   0.5,   1.7);
  m[n].body = b;
  m[n].time = 280;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,     0,   0.2,  1.24);
  LegAng  (b,1,     0,   0.2,   1.2);
  LegAng  (b,2,    -1,  -0.2,   1.7);
  LegAng  (b,3,    -1,   0.5,   1.7);
  m[n].body = b;
  m[n].time = 0;
  n++;

  out = fopen("heelKickLeft.mot","wb");
  fwrite(&n,sizeof(n),1,out);
  fwrite(m,sizeof(Motion::BodyStateMotion),n,out);
  fclose(out);


  //==== heelKickRight ====//
  //  kick backwards
  // Vorderbeine durchstrecken

  mzero(b);

  n = 0;
  m[n].body = b;
  m[n].time = 400;
  n++;

  // zur linken Seite
  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,     0,  0.15,  0.35);
  LegAng  (b,1,     0,  0.15,  0.35);
  LegAng  (b,2,  -0.7,   0.3,   1.3);
  LegAng  (b,3,  -0.6,   0.3,   1.3);
  m[n].body = b;
  m[n].time = 160;
  n++;

  // rechten Arm heben
  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,     0,  -0.2,  0.35);
  LegAng  (b,1,     0,   0.5,  0.35);
  LegAng  (b,2, -0.75,  -0.2,     2);
  LegAng  (b,3,  -0.6,   0.5,   1.3);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,     0,  -0.2,  0.35);
  LegAng  (b,1,   0.9,   1.2,  1.45);
  LegAng  (b,2, -0.75,  -0.2,     2);
  LegAng  (b,3,  -0.6,   0.5,   1.3);
  m[n].body = b;
  m[n].time = 200;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,     0,  -0.2,  0.35);
  LegAng  (b,1,   0.9,   1.2,  1.45);
  LegAng  (b,2, -0.75,  -0.2,     2);
  LegAng  (b,3,  -0.6,   0.5,   1.3);
  m[n].body = b;
  m[n].time = 280;
  n++;

  // Schuss
  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,     0,  -0.2,   0.3);
  LegAng  (b,1,     2,   0.1,     1);
  LegAng  (b,2, -0.75,  -0.2,     2);
  LegAng  (b,3,  -0.6,  -0.2,   1.3);
  m[n].body = b;
  m[n].time = 200;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,     0,  -0.2,  0.35);
  LegAng  (b,1,  0.35,   0.1,  -0.3);
  LegAng  (b,2, -0.75,  -0.2,     2);
  LegAng  (b,3,  -0.6,  -0.2,   1.3);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,     0,  -0.2,  0.35);
  LegAng  (b,1, -0.65,   0.8,  -0.3);
  LegAng  (b,2, -0.75,  -0.2,     2);
  LegAng  (b,3,  -0.6,  -0.2,   1.3);
  m[n].body = b;
  m[n].time = 240;
  n++;

  // bein anwinkeln
  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,     0,  -0.2,  0.35);
  LegAng  (b,1, -0.65,   0.8,  -0.3);
  LegAng  (b,2, -0.75,  -0.2,     2);
  LegAng  (b,3,  -0.6,  -0.2,   1.3);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,     0,   0.2,   1.2);
  LegAng  (b,1,     0,   0.2,  1.24);
  LegAng  (b,2,    -1,   0.5,   1.7);
  LegAng  (b,3,    -1,  -0.2,   1.7);
  m[n].body = b;
  m[n].time = 280;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,     0,   0.2,   1.2);
  LegAng  (b,1,     0,   0.2,  1.24);
  LegAng  (b,2,    -1,   0.5,   1.7);
  LegAng  (b,3,    -1,  -0.2,   1.7);
  m[n].body = b;
  m[n].time = 0;
  n++;

  out = fopen("heelKickRight.mot","wb");
  fwrite(&n,sizeof(n),1,out);
  fwrite(m,sizeof(Motion::BodyStateMotion),n,out);
  fclose(out);


  //==== kickWithLeftToRight ====//

  mzero(b);

  n = 0;
  m[n].body = b;
  m[n].time = 600;
  n++;

  // 24 973 -3  ~ ~ ~  -177 245 1927  -641 17 1850  -1334 638 1618 -1142 592 1679  1 25
  // 3 969 -7  ~ ~ ~  -367 290 1185  -433 262 1105  -614 501 850 -479 427 782  1 25
  // 17 969 -3  ~ ~ ~  800 883 1185  -416 267 1122  -647 461 839 -572 421 1198  1 25
  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,-0.017, 0.279,  1.89);
  LegAng  (b,1,-0.132, 0.256, 1.906);
  LegAng  (b,2, -1.15, 0.558, 1.658);
  LegAng  (b,3,-1.335, 0.598, 1.627);
  m[n].body = b;
  m[n].time = 200;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,-0.512, 0.245, 1.117);
  LegAng  (b,1, 0.822, 0.997, 1.191);
  LegAng  (b,2,-0.641, 0.438, 1.587);
  LegAng  (b,3,-0.598,  0.45,  0.85);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,-0.878,-0.081, 1.576);
  LegAng  (b,1, 0.574,-0.023, 0.801);
  LegAng  (b,2,-0.878,-0.081, 2.456);
  LegAng  (b,3, -0.62, 0.661, 1.745);
  m[n].body = b;
  m[n].time = 200;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,-0.878,-0.081, 1.576);
  LegAng  (b,1, 0.574,-0.023, 0.801);
  LegAng  (b,2,-0.878,-0.081, 2.456);
  LegAng  (b,3, -0.62, 0.661, 1.745);
  m[n].body = b;
  m[n].time = 0;
  n++;

  out = fopen("kickWithLeftToRight.mot","wb");
  fwrite(&n,sizeof(n),1,out);
  fwrite(m,sizeof(Motion::BodyStateMotion),n,out);
  fclose(out);


  //==== kickWithRightToLeft ====//

  mzero(b);

  n = 0;
  m[n].body = b;
  m[n].time = 600;
  n++;

  // 24 973 -3  ~ ~ ~  -177 245 1927  -641 17 1850  -1334 638 1618 -1142 592 1679  1 25
  // 3 969 -7  ~ ~ ~  -367 290 1185  -433 262 1105  -614 501 850 -479 427 782  1 25
  // 17 969 -3  ~ ~ ~  800 883 1185  -416 267 1122  -647 461 839 -572 421 1198  1 25
  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,-0.017, 0.279,  1.89);
  LegAng  (b,1,-0.132, 0.256, 1.906);
  LegAng  (b,2, -1.15, 0.558, 1.658);
  LegAng  (b,3,-1.335, 0.598, 1.627);
  m[n].body = b;
  m[n].time = 200;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,-0.512, 0.245, 1.117);
  LegAng  (b,1, 0.822, 0.997, 1.191);
  LegAng  (b,2,-0.641, 0.438, 1.587);
  LegAng  (b,3,-0.598,  0.45,  0.85);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,-0.878,-0.081, 1.576);
  LegAng  (b,1, 0.574,-0.023, 0.801);
  LegAng  (b,2,-0.878,-0.081, 2.456);
  LegAng  (b,3, -0.62, 0.661, 1.745);
  m[n].body = b;
  m[n].time = 200;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,-0.878,-0.081, 1.576);
  LegAng  (b,1, 0.574,-0.023, 0.801);
  LegAng  (b,2,-0.878,-0.081, 2.456);
  LegAng  (b,3, -0.62, 0.661, 1.745);
  m[n].body = b;
  m[n].time = 0;
  n++;

  out = fopen("kickWithRightToLeft.mot","wb");
  fwrite(&n,sizeof(n),1,out);
  fwrite(m,sizeof(Motion::BodyStateMotion),n,out);
  fclose(out);


  //==== leftHeadKick ====//
  // alt:
  // 0    -1400 0     ~ ~ ~  -550 200	1400  -550 200	1400	-750 200	1500	-750 200 1500  0 30
  // -750 -1400 -300  ~ ~ ~  -600 150	2450  -600 250	2450	-650 200	1500	-650 200 1500  1 30
  // -750	1400 300   ~ ~ ~  -600 350	2450  -600 50		2450	-650 200	1500	-650 200 1500  0 80

  mzero(b);

  n = 0;
  m[n].body = b;
  m[n].time = 100;
  n++;

  HeadAng (b,       0,  -1.4,     0);
  LegAng  (b,0,-0.476, 0.356, 1.626);
  LegAng  (b,1,-0.476, 0.356, 1.626);
  LegAng  (b,2,-0.662, 0.456, 1.784);
  LegAng  (b,3,-0.662, 0.456, 1.784);
  m[n].body = b;
  m[n].time = 240;
  n++;

  HeadAng (b,       0,  -1.4,     0);
  LegAng  (b,0,-0.476, 0.356, 1.626);
  LegAng  (b,1,-0.476, 0.356, 1.626);
  LegAng  (b,2,-0.662, 0.456, 1.784);
  LegAng  (b,3,-0.662, 0.456, 1.784);
  m[n].body = b;
  m[n].time = 240;
  n++;

  HeadAng (b,   -0.75,  -1.4,  -0.3);
  LegAng  (b,0,-0.926, 0.406,  2.55);
  LegAng  (b,1,-0.926, 0.306,  2.55);
  LegAng  (b,2,-0.662, 0.456, 1.784);
  LegAng  (b,3,-0.662, 0.456, 1.784);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,   -0.75,   1.4,   0.3);
  LegAng  (b,0,-0.926, 0.156,  2.55);
  LegAng  (b,1,-0.926, 0.506,  2.55);
  LegAng  (b,2,-0.662, 0.456, 1.784);
  LegAng  (b,3,-0.562, 0.496, 1.584);
  m[n].body = b;
  m[n].time = 640;
  n++;

  HeadAng (b,   -0.75,   1.4,   0.3);
  LegAng  (b,0,-0.926, 0.156,  2.55);
  LegAng  (b,1,-0.926, 0.506,  2.55);
  LegAng  (b,2,-0.662, 0.456, 1.784);
  LegAng  (b,3,-0.562, 0.496, 1.584);
  m[n].body = b;
  m[n].time = 0;
  n++;

  out = fopen("leftHeadKick.mot","wb");
  fwrite(&n,sizeof(n),1,out);
  fwrite(m,sizeof(Motion::BodyStateMotion),n,out);
  fclose(out);


  //==== leftKick ====//
  // LeftKick: Schuss nach links mit dem Kopf, Ball muss mit Catchball gehalten werden
  // :45°
  // 750     0 0    ~ ~ ~   1400 -100  300  1400 -130  300  -1400 660 1900  -1400 660 1900   1 30
  // 750 -1400 0    ~ ~ ~   1400 -100  300  1400 -130  300  -1400 660 1900  -1400 660 1900   1 5 
  // 
  // 0 -1400 0     ~ ~ ~  1400 -100  300  1400 -130  300  -1400 660 1900  -1400 660 1900   0 30
  // -450 -1400 ~     ~ ~ ~  1400 -100  300  1400 -130  300  -1400 660 1900  -1400 660 1900   1 30
  // -450  1400 ~     ~ ~ ~  1400 -100  300  2000 1570  300  -1400 660 1900  -1400 660 1900   0 80

  mzero(b);

  n = 0;
  m[n].body = b;
  m[n].time = 160;
  n++;

  HeadAng (b,   -0.15,     0,     0);
  MouthAng(b,   -0.3);
  LegAng  (b,0,   1.5,-0.025,   0.3);
  LegAng  (b,1,   1.5,-0.025,   0.3);
  LegAng  (b,2,  -1.4,  0.66,   1.9);
  LegAng  (b,3,  -1.4,  0.66,   1.9);
  m[n].body = b;
  m[n].time = 240;
  n++;

  HeadAng (b,    0.75,     0,     0);
  LegAng  (b,0,   1.4,     0,   0.3);
  LegAng  (b,1,   1.4,-0.025,   0.3);
  LegAng  (b,2,  -1.4,  0.66,   1.9);
  LegAng  (b,3,  -1.4,  0.66,   1.9);
  m[n].body = b;
  m[n].time = 80;
  n++;

  HeadAng (b,     0.5,  -1.4,     0);
  LegAng  (b,0,   1.4,     0,   0.3);
  LegAng  (b,1,   1.4,-0.025,   0.3);
  LegAng  (b,2,  -1.4,  0.66,   1.9);
  LegAng  (b,3,  -1.4,  0.66,   1.9);
  m[n].body = b;
  m[n].time = 240;
  n++;

  HeadAng (b,   -0.45,  -1.4,     0);
  LegAng  (b,0,   1.4,     0,   0.3);
  LegAng  (b,1,   1.4,-0.025,   0.3);
  LegAng  (b,2,  -1.4,  0.66,   1.9);
  LegAng  (b,3,  -1.4,  0.66,   1.9);
  m[n].body = b;
  m[n].time = 240;
  n++;

  HeadAng (b,   -0.45,  -1.4,     0);
  LegAng  (b,0,     2,  1.57,   0.3);
  LegAng  (b,1,   1.4,-0.025,   0.3);
  LegAng  (b,2,  -1.4,  0.66,   1.9);
  LegAng  (b,3,  -1.4,  0.66,   1.9);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,   -0.45,   1.4,     0);
  LegAng  (b,0,     2,  1.57,   0.3);
  LegAng  (b,1,   1.4,   0.5,   0.3);
  LegAng  (b,2,  -1.5,  0.66,   1.9);
  LegAng  (b,3,  -1.1,  0.66,   1.9);
  m[n].body = b;
  m[n].time = 640;
  n++;

  // unhandled transition in motion leftKick, 'transition leftKick leftKick start'
  HeadAng (b,   -0.45,   1.4,     0);
  LegAng  (b,0,     2,  1.57,   0.3);
  LegAng  (b,1,   1.4,   0.5,   0.3);
  LegAng  (b,2,  -1.5,  0.66,   1.9);
  LegAng  (b,3,  -1.1,  0.66,   1.9);
  m[n].body = b;
  m[n].time = 0;
  n++;

  out = fopen("leftKick.mot","wb");
  fwrite(&n,sizeof(n),1,out);
  fwrite(m,sizeof(Motion::BodyStateMotion),n,out);
  fclose(out);


  //==== legKick ====//
  //  legKick, powerful straight kick with both front legs
  // old motion (slower)
  // 1500 0 0  ~ ~ ~  490 1500 1233  491 1500 1235  -889 1000 3000 -900 1000 3000  0 25
  // 1500 0 0  ~ ~ ~  2000 1436 1221  2000 1413 1212  -889 1000 3000 -900 1000 3000  0 25
  // 1500 0 0  ~ ~ ~  2000 -200 1221  2000 -200 1212  -889 1000 3000 -900 1000 3000  0 40
  // 1500 0 0  ~ ~ ~  1500 -200 -100  1500 -200 -100  -889 1000 3000 -900 1000 3000  0 40

  mzero(b);

  n = 0;
  m[n].body = b;
  m[n].time = 100;
  n++;

  HeadAng (b,     1.5,     0,     0);
  LegAng  (b,0,  0.49,   1.5, 1.235);
  LegAng  (b,1,  0.49,   1.5, 1.235);
  LegAng  (b,2,  -0.9,     1,     3);
  LegAng  (b,3,  -0.9,     1,     3);
  m[n].body = b;
  m[n].time = 40;
  n++;

  HeadAng (b,     1.5,     0,     0);
  LegAng  (b,0,  0.49,   1.5, 1.235);
  LegAng  (b,1,  0.49,   1.5, 1.235);
  LegAng  (b,2,  -0.9,     1,     3);
  LegAng  (b,3,  -0.9,     1,     3);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,     1.5,     0,     0);
  LegAng  (b,0,     2, 1.435,  1.22);
  LegAng  (b,1,     2, 1.435,  1.22);
  LegAng  (b,2,  -0.9,     1,     3);
  LegAng  (b,3,-0.889,     1,     3);
  m[n].body = b;
  m[n].time = 160;
  n++;

  HeadAng (b,     1.5,     0,     0);
  LegAng  (b,0,     2, 1.435,  1.22);
  LegAng  (b,1,     2, 1.435,  1.22);
  LegAng  (b,2,  -0.9,     1,     3);
  LegAng  (b,3,-0.889,     1,     3);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,     1.5,     0,     0);
  LegAng  (b,0,     2,  -0.2,  1.22);
  LegAng  (b,1,     2,  -0.2,  1.22);
  LegAng  (b,2,  -0.9,     1,     3);
  LegAng  (b,3,-0.889,     1,     3);
  m[n].body = b;
  m[n].time = 320;
  n++;

  HeadAng (b,     1.5,     0,     0);
  LegAng  (b,0,     2,  -0.2,  1.22);
  LegAng  (b,1,     2,  -0.2,  1.22);
  LegAng  (b,2,  -0.9,     1,     3);
  LegAng  (b,3,-0.889,     1,     3);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,     1.5,     0,     0);
  LegAng  (b,0,   1.5,  -0.2,  -0.1);
  LegAng  (b,1,   1.5,  -0.2,  -0.1);
  LegAng  (b,2,  -0.9,     1,     3);
  LegAng  (b,3,-0.889,     1,     3);
  m[n].body = b;
  m[n].time = 160;
  n++;

  HeadAng (b,     1.5,     0,     0);
  LegAng  (b,0,   1.5,  -0.2,  -0.1);
  LegAng  (b,1,   1.5,  -0.2,  -0.1);
  LegAng  (b,2,  -0.9,     1,     3);
  LegAng  (b,3,-0.889,     1,     3);
  m[n].body = b;
  m[n].time = 0;
  n++;

  out = fopen("legKick.mot","wb");
  fwrite(&n,sizeof(n),1,out);
  fwrite(m,sizeof(Motion::BodyStateMotion),n,out);
  fclose(out);


  //==== legRotate ====//
  //  old getup motion, useful for freeing legs from blocked situation

  mzero(b);

  n = 0;
  m[n].body = b;
  m[n].time = 100;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,     2,     0,   2.5);
  LegAng  (b,1,     2,     0,   2.5);
  LegAng  (b,2,     2,     0,   2.5);
  LegAng  (b,3,     2,     0,   2.5);
  m[n].body = b;
  m[n].time = 640;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,     2,     0,   2.5);
  LegAng  (b,1,     2,     0,   2.5);
  LegAng  (b,2,     2,     0,   2.5);
  LegAng  (b,3,     2,     0,   2.5);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,   1.5,   1.5,   2.5);
  LegAng  (b,1,   1.5,   1.5,   2.5);
  LegAng  (b,2,   1.5,   1.5,   2.5);
  LegAng  (b,3,   1.5,   1.5,   2.5);
  m[n].body = b;
  m[n].time = 240;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,   1.5,   1.5,   2.5);
  LegAng  (b,1,   1.5,   1.5,   2.5);
  LegAng  (b,2,   1.5,   1.5,   2.5);
  LegAng  (b,3,   1.5,   1.5,   2.5);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,  -1.6,   1.5,   2.5);
  LegAng  (b,1,  -1.6,   1.5,   2.5);
  LegAng  (b,2,  -1.4,   1.6,   2.5);
  LegAng  (b,3,  -1.4,   1.6,   2.5);
  m[n].body = b;
  m[n].time = 400;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,  -1.6,   1.5,   2.5);
  LegAng  (b,1,  -1.6,   1.5,   2.5);
  LegAng  (b,2,  -1.4,   1.6,   2.5);
  LegAng  (b,3,  -1.4,   1.6,   2.5);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,     0,   0.8,   2.1);
  LegAng  (b,1,     0,   0.8,   2.1);
  LegAng  (b,2,  -1.2,     1,   2.3);
  LegAng  (b,3,  -1.2,     1,   2.3);
  m[n].body = b;
  m[n].time = 80;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,     0,   0.8,   2.1);
  LegAng  (b,1,     0,   0.8,   2.1);
  LegAng  (b,2,  -1.2,     1,   2.3);
  LegAng  (b,3,  -1.2,     1,   2.3);
  m[n].body = b;
  m[n].time = 0;
  n++;

  out = fopen("legRotate.mot","wb");
  fwrite(&n,sizeof(n),1,out);
  fwrite(m,sizeof(Motion::BodyStateMotion),n,out);
  fclose(out);


  //==== mantisKick ====//
  // MantisKick : Schuss mit Bauch und Armen durch Aufrichten und Fallenlassen
  // starker Schuss, relativ gut geradeaus
  // Ball sollte recht nah liegen
  // Darmstadt GO-Stand

  mzero(b);

  n = 0;
  m[n].body = b;
  m[n].time = 100;
  n++;

  HeadAng (b,       1,     0,     0);
  // ignoring tail commands for motion mantisKick
  LegAng  (b,0,   0.5,   0.7,  1.24);
  LegAng  (b,1,   0.5,   0.7,  1.24);
  LegAng  (b,2,  -0.8,  0.42, 1.765);
  LegAng  (b,3,  -0.8,  0.42, 1.765);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,       1,     0,     0);
  // ignoring tail commands for motion mantisKick
  LegAng  (b,0,   0.5,   0.7,  1.24);
  LegAng  (b,1,   0.5,   0.7,  1.24);
  LegAng  (b,2,  -0.8,  0.42, 1.765);
  LegAng  (b,3,  -0.8,  0.42, 1.765);
  m[n].body = b;
  m[n].time = 160;
  n++;

  HeadAng (b,       1,     0,     0);
  // ignoring tail commands for motion mantisKick
  LegAng  (b,0,   0.5,   1.2,  1.24);
  LegAng  (b,1,   0.5,   1.2,  1.24);
  LegAng  (b,2,  -1.5,  0.42,   2.5);
  LegAng  (b,3,  -1.5,  0.42,   2.5);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,       1,     0,     0);
  // ignoring tail commands for motion mantisKick
  LegAng  (b,0,     2,   1.2,     0);
  LegAng  (b,1,     2,   1.2,     0);
  LegAng  (b,2,  -1.5,  0.42,   2.5);
  LegAng  (b,3,  -1.5,  0.42,   2.5);
  m[n].body = b;
  m[n].time = 240;
  n++;

  HeadAng (b,       1,     0,     0);
  // ignoring tail commands for motion mantisKick
  LegAng  (b,0,     2,   1.2,     0);
  LegAng  (b,1,     2,   1.2,     0);
  LegAng  (b,2,  -1.5,  0.42,   2.5);
  LegAng  (b,3,  -1.5,  0.42,   2.5);
  m[n].body = b;
  m[n].time = 720;
  n++;

  // Klemmen
  HeadAng (b,       1,     0,     0);
  // ignoring tail commands for motion mantisKick
  LegAng  (b,0,     2,     0,     0);
  LegAng  (b,1,     2,     0,     0);
  LegAng  (b,2,  -0.8,  0.42, 1.765);
  LegAng  (b,3,  -0.8,  0.42, 1.765);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,       1,     0,     0);
  // ignoring tail commands for motion mantisKick
  LegAng  (b,0,     1,  -0.2,     1);
  LegAng  (b,1,     1,  -0.2,     1);
  LegAng  (b,2,  -1.5,   0.4,   2.5);
  LegAng  (b,3,  -1.5,   0.4,   2.5);
  m[n].body = b;
  m[n].time = 640;
  n++;

  // Power-Wäms
  HeadAng (b,       1,     0,     0);
  // ignoring tail commands for motion mantisKick
  LegAng  (b,0,     1,  -0.2,     1);
  LegAng  (b,1,     1,  -0.2,     1);
  LegAng  (b,2,  -1.5,   0.4,   2.5);
  LegAng  (b,3,  -1.5,   0.4,   2.5);
  m[n].body = b;
  m[n].time = 560;
  n++;

  HeadAng (b,       1,     0,     0);
  // ignoring tail commands for motion mantisKick
  LegAng  (b,0, -0.35,   0.6,  1.75);
  LegAng  (b,1, -0.35,   0.6,  1.75);
  LegAng  (b,2,  -1.5,   0.4,   2.5);
  LegAng  (b,3,  -1.5,   0.4,   2.5);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,       1,     0,     0);
  // ignoring tail commands for motion mantisKick
  LegAng  (b,0,  -0.7,   0.2,  0.05);
  LegAng  (b,1,  -0.7,   0.2,  0.05);
  LegAng  (b,2, -1.25,   0.4,   2.5);
  LegAng  (b,3, -1.25,   0.4,   2.5);
  m[n].body = b;
  m[n].time = 640;
  n++;

  HeadAng (b,       1,     0,     0);
  // ignoring tail commands for motion mantisKick
  LegAng  (b,0,  -0.7,   0.2,  0.05);
  LegAng  (b,1,  -0.7,   0.2,  0.05);
  LegAng  (b,2, -1.25,   0.4,   2.5);
  LegAng  (b,3, -1.25,   0.4,   2.5);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,       1,     0,     0);
  // ignoring tail commands for motion mantisKick
  LegAng  (b,0,  -0.5,   0.7,  0.05);
  LegAng  (b,1,  -0.5,   0.7,  0.05);
  LegAng  (b,2, -1.25,   0.4,   2.5);
  LegAng  (b,3, -1.25,   0.4,   2.5);
  m[n].body = b;
  m[n].time = 160;
  n++;

  HeadAng (b,       1,     0,     0);
  // ignoring tail commands for motion mantisKick
  LegAng  (b,0,  -0.5,   0.7,  0.05);
  LegAng  (b,1,  -0.5,   0.7,  0.05);
  LegAng  (b,2, -1.25,   0.4,   2.5);
  LegAng  (b,3, -1.25,   0.4,   2.5);
  m[n].body = b;
  m[n].time = 400;
  n++;

  // und Kick
  HeadAng (b,       1,     0,     0);
  // ignoring tail commands for motion mantisKick
  LegAng  (b,0,   2.4,     0,   2.5);
  LegAng  (b,1,   2.4,     0,   2.5);
  LegAng  (b,2, -1.25,   0.4,   2.5);
  LegAng  (b,3, -1.25,   0.4,   2.5);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,       1,     0,     0);
  // ignoring tail commands for motion mantisKick
  LegAng  (b,0,     1,    -2,     1);
  LegAng  (b,1,     1,    -2,     1);
  LegAng  (b,2,  -1.9,   0.4,   2.5);
  LegAng  (b,3,  -1.9,   0.4,   2.5);
  m[n].body = b;
  m[n].time = 440;
  n++;

  // Darmstadt GO-Stand
  HeadAng (b,       1,     0,     0);
  // ignoring tail commands for motion mantisKick
  LegAng  (b,0,     1,    -2,     1);
  LegAng  (b,1,     1,    -2,     1);
  LegAng  (b,2,  -1.9,   0.4,   2.5);
  LegAng  (b,3,  -1.9,   0.4,   2.5);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,       0,     0,     0);
  // ignoring tail commands for motion mantisKick
  LegAng  (b,0,   0.5,   0.7,  1.24);
  LegAng  (b,1,   0.5,   0.7,  1.24);
  LegAng  (b,2,-0.744, 0.427, 1.765);
  LegAng  (b,3,-0.828, 0.416, 1.756);
  m[n].body = b;
  m[n].time = 400;
  n++;

  // kicks
  // Ball Challenge
  // other
  // nonsense
  // extern
  HeadAng (b,       0,     0,     0);
  // ignoring tail commands for motion mantisKick
  LegAng  (b,0,   0.5,   0.7,  1.24);
  LegAng  (b,1,   0.5,   0.7,  1.24);
  LegAng  (b,2,-0.744, 0.427, 1.765);
  LegAng  (b,3,-0.828, 0.416, 1.756);
  m[n].body = b;
  m[n].time = 0;
  n++;

  out = fopen("mantisKick.mot","wb");
  fwrite(&n,sizeof(n),1,out);
  fwrite(m,sizeof(Motion::BodyStateMotion),n,out);
  fclose(out);


  //==== openArm ====//
  //  openArm: Roboter schiebt sich nur mit den Hinterbeinen nach vorne
  //  Spezielle Bewegung für den BallChallenge

  mzero(b);

  n = 0;
  m[n].body = b;
  m[n].time = 200;
  n++;

  HeadAng (b,       0,     0,     0);
  LegAng  (b,0,   0.8,   0.8,   1.1);
  LegAng  (b,1,   0.8,   0.8,   1.1);
  LegAng  (b,2,  -0.7,  0.25,   1.5);
  LegAng  (b,3,  -1.7,  0.25,     2);
  m[n].body = b;
  m[n].time = 200;
  n++;

  HeadAng (b,       0,     0,     0);
  LegAng  (b,0,   0.8,   0.8,   1.1);
  LegAng  (b,1,   0.8,   0.8,   1.1);
  LegAng  (b,2,  -1.7,  0.25,     2);
  LegAng  (b,3,  -0.7,  0.25,   1.5);
  m[n].body = b;
  m[n].time = 0;
  n++;

  out = fopen("openArm.mot","wb");
  fwrite(&n,sizeof(n),1,out);
  fwrite(m,sizeof(Motion::BodyStateMotion),n,out);
  fclose(out);


  //==== pawKickWithLeftForward ====//

  mzero(b);

  n = 0;
  m[n].body = b;
  m[n].time = 200;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0, 0.016, 0.313,  1.29);
  LegAng  (b,1, 0.583,  0.21, 1.565);
  LegAng  (b,2, -0.69, 0.159, 0.649);
  LegAng  (b,3, -0.93, 0.199, 2.271);
  m[n].body = b;
  m[n].time = 200;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,-0.433, 0.045, 2.565);
  LegAng  (b,1,-0.074, 0.433, 1.081);
  LegAng  (b,2,-0.364, 0.062, 0.692);
  LegAng  (b,3,-0.913, 0.262, 2.178);
  m[n].body = b;
  m[n].time = 200;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0, 0.838,-0.098,-0.442);
  LegAng  (b,1,-0.304, 0.285, 1.875);
  LegAng  (b,2, 0.387, 0.176, 0.624);
  LegAng  (b,3,-0.587, 0.262, 1.722);
  m[n].body = b;
  m[n].time = 0;
  n++;

  out = fopen("pawKickWithLeftForward.mot","wb");
  fwrite(&n,sizeof(n),1,out);
  fwrite(m,sizeof(Motion::BodyStateMotion),n,out);
  fclose(out);


  //==== pawKickWithRightForward ====//

  mzero(b);

  n = 0;
  m[n].body = b;
  m[n].time = 200;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0, 0.583,  0.21, 1.565);
  LegAng  (b,1, 0.016, 0.313,  1.29);
  LegAng  (b,2, -0.93, 0.199, 2.271);
  LegAng  (b,3, -0.69, 0.159, 0.649);
  m[n].body = b;
  m[n].time = 200;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,-0.074, 0.433, 1.081);
  LegAng  (b,1,-0.433, 0.045, 2.565);
  LegAng  (b,2,-0.913, 0.262, 2.178);
  LegAng  (b,3,-0.364, 0.062, 0.692);
  m[n].body = b;
  m[n].time = 200;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,-0.304, 0.285, 1.875);
  LegAng  (b,1, 0.838,-0.098,-0.442);
  LegAng  (b,2,-0.587, 0.262, 1.722);
  LegAng  (b,3, 0.387, 0.176, 0.624);
  m[n].body = b;
  m[n].time = 0;
  n++;

  out = fopen("pawKickWithRightForward.mot","wb");
  fwrite(&n,sizeof(n),1,out);
  fwrite(m,sizeof(Motion::BodyStateMotion),n,out);
  fclose(out);


  //==== rightHeadKick ====//
  // alt:
  // 0    1400  0     ~ ~ ~  -550 200	1400  -550 200	1400	-750 200	1500	-750 200 1500  0 30
  // -750 1400  300   ~ ~ ~  -600 250	2450  -600 150	2450	-650 200	1500	-650 200 1500  1 30
  // -750 -1400 -300  ~ ~ ~  -600 50		2450  -600 350	2450	-650 200	1500	-650 200 1500  0 80

  mzero(b);

  n = 0;
  m[n].body = b;
  m[n].time = 100;
  n++;

  HeadAng (b,       0,   1.4,     0);
  LegAng  (b,0,-0.476, 0.356, 1.626);
  LegAng  (b,1,-0.476, 0.356, 1.626);
  LegAng  (b,2,-0.662, 0.456, 1.784);
  LegAng  (b,3,-0.662, 0.456, 1.784);
  m[n].body = b;
  m[n].time = 240;
  n++;

  HeadAng (b,       0,   1.4,     0);
  LegAng  (b,0,-0.476, 0.356, 1.626);
  LegAng  (b,1,-0.476, 0.356, 1.626);
  LegAng  (b,2,-0.662, 0.456, 1.784);
  LegAng  (b,3,-0.662, 0.456, 1.784);
  m[n].body = b;
  m[n].time = 240;
  n++;

  HeadAng (b,   -0.75,   1.4,   0.3);
  LegAng  (b,0,-0.926, 0.306,  2.55);
  LegAng  (b,1,-0.926, 0.406,  2.55);
  LegAng  (b,2,-0.662, 0.456, 1.784);
  LegAng  (b,3,-0.662, 0.456, 1.784);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,   -0.75,  -1.4,  -0.3);
  LegAng  (b,0,-0.926, 0.506,  2.55);
  LegAng  (b,1,-0.926, 0.156,  2.55);
  LegAng  (b,2,-0.562, 0.496, 1.584);
  LegAng  (b,3,-0.662, 0.456, 1.784);
  m[n].body = b;
  m[n].time = 640;
  n++;

  HeadAng (b,   -0.75,  -1.4,  -0.3);
  LegAng  (b,0,-0.926, 0.506,  2.55);
  LegAng  (b,1,-0.926, 0.156,  2.55);
  LegAng  (b,2,-0.562, 0.496, 1.584);
  LegAng  (b,3,-0.662, 0.456, 1.784);
  m[n].body = b;
  m[n].time = 0;
  n++;

  out = fopen("rightHeadKick.mot","wb");
  fwrite(&n,sizeof(n),1,out);
  fwrite(m,sizeof(Motion::BodyStateMotion),n,out);
  fclose(out);


  //==== rightKick ====//
  // RightKick: Schuss nach rechts mit dem Kopf, Ball muss mit Catchball gehalten werden

  mzero(b);

  n = 0;
  m[n].body = b;
  m[n].time = 160;
  n++;

  HeadAng (b,   -0.15,     0,     0);
  MouthAng(b,   -0.3);
  LegAng  (b,0,   1.5,-0.025,   0.3);
  LegAng  (b,1,   1.5,-0.025,   0.3);
  LegAng  (b,2,  -1.4,  0.66,   1.9);
  LegAng  (b,3,  -1.4,  0.66,   1.9);
  m[n].body = b;
  m[n].time = 240;
  n++;

  HeadAng (b,    0.75,     0,     0);
  LegAng  (b,0,   1.4,-0.025,   0.3);
  LegAng  (b,1,   1.4,     0,   0.3);
  LegAng  (b,2,  -1.4,  0.66,   1.9);
  LegAng  (b,3,  -1.4,  0.66,   1.9);
  m[n].body = b;
  m[n].time = 80;
  n++;

  HeadAng (b,     0.5,   1.4,     0);
  LegAng  (b,0,   1.4,-0.025,   0.3);
  LegAng  (b,1,   1.4,     0,   0.3);
  LegAng  (b,2,  -1.4,  0.66,   1.9);
  LegAng  (b,3,  -1.4,  0.66,   1.9);
  m[n].body = b;
  m[n].time = 240;
  n++;

  HeadAng (b,   -0.45,   1.4,     0);
  LegAng  (b,0,   1.4,-0.025,   0.3);
  LegAng  (b,1,   1.4,     0,   0.3);
  LegAng  (b,2,  -1.4,  0.66,   1.9);
  LegAng  (b,3,  -1.4,  0.66,   1.9);
  m[n].body = b;
  m[n].time = 240;
  n++;

  HeadAng (b,   -0.45,   1.4,     0);
  LegAng  (b,0,   1.4, -0.15,   0.3);
  LegAng  (b,1,     2,  1.57,   0.3);
  LegAng  (b,2,  -1.4,  0.66,   1.9);
  LegAng  (b,3,  -1.4,  0.66,   1.9);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,   -0.45,  -1.4,     0);
  LegAng  (b,0,   1.4,   0.5,   0.3);
  LegAng  (b,1,     2,  1.57,   0.3);
  LegAng  (b,2,  -1.1,  0.66,   1.9);
  LegAng  (b,3,  -1.5,  0.66,   1.9);
  m[n].body = b;
  m[n].time = 640;
  n++;

  // unhandled transition in motion rightKick, 'transition rightKick rightKick start'
  HeadAng (b,   -0.45,  -1.4,     0);
  LegAng  (b,0,   1.4,   0.5,   0.3);
  LegAng  (b,1,     2,  1.57,   0.3);
  LegAng  (b,2,  -1.1,  0.66,   1.9);
  LegAng  (b,3,  -1.5,  0.66,   1.9);
  m[n].body = b;
  m[n].time = 0;
  n++;

  out = fopen("rightKick.mot","wb");
  fwrite(&n,sizeof(n),1,out);
  fwrite(m,sizeof(Motion::BodyStateMotion),n,out);
  fclose(out);


  //==== scratchHead ====//
  // Kratz: Hund kratzt sich mit Hinterbein am Ohr
  // Parameter: keine
  // Sinn: keiner 

  mzero(b);

  n = 0;
  m[n].body = b;
  m[n].time = 200;
  n++;

  HeadAng (b,       0,     0,     0);
  LegAng  (b,0, -0.35, -0.19,  1.75);
  LegAng  (b,1, -0.35, -0.19,  1.75);
  LegAng  (b,2, -1.84,   0.8,   2.5);
  LegAng  (b,3, -1.84, -0.04,   2.5);
  m[n].body = b;
  m[n].time = 200;
  n++;

  HeadAng (b,    0.75,     0,-0.506);
  LegAng  (b,0, -0.35, -0.19,  1.75);
  LegAng  (b,1, -0.35, -0.19,  1.75);
  LegAng  (b,2, -1.84,   0.8,     0);
  LegAng  (b,3, -1.84, -0.04,   2.5);
  m[n].body = b;
  m[n].time = 200;
  n++;

  HeadAng (b,    0.75,     0,-0.506);
  LegAng  (b,0, -0.35, -0.19,  1.75);
  LegAng  (b,1, -0.35, -0.19,  1.75);
  LegAng  (b,2,  -2.1,  -0.2,  -0.3);
  LegAng  (b,3, -1.84, -0.04,   2.5);
  m[n].body = b;
  m[n].time = 200;
  n++;

  // unhandled transition in motion scratchHead, 'transition scratchHead scratchHead scratch'
  HeadAng (b,    0.75,     0,-0.506);
  LegAng  (b,0, -0.35, -0.19,  1.75);
  LegAng  (b,1, -0.35, -0.19,  1.75);
  LegAng  (b,2,  -2.1,  -0.2,   0.1);
  LegAng  (b,3, -1.84, -0.04,   2.5);
  m[n].body = b;
  m[n].time = 200;
  n++;

  HeadAng (b,    0.75,     0,-0.506);
  LegAng  (b,0, -0.35, -0.19,  1.75);
  LegAng  (b,1, -0.35, -0.19,  1.75);
  LegAng  (b,2, -1.84,   0.8,     0);
  LegAng  (b,3, -1.84, -0.04,   2.5);
  m[n].body = b;
  m[n].time = 200;
  n++;

  // unhandled transition in motion scratchHead, 'transition allMotions sit start'
  HeadAng (b,       0,     0,     0);
  LegAng  (b,0, -0.35, -0.19,  1.75);
  LegAng  (b,1, -0.35, -0.19,  1.75);
  LegAng  (b,2, -1.84,   0.8,   2.5);
  LegAng  (b,3, -1.84, -0.04,   2.5);
  m[n].body = b;
  m[n].time = 0;
  n++;

  out = fopen("scratchHead.mot","wb");
  fwrite(&n,sizeof(n),1,out);
  fwrite(m,sizeof(Motion::BodyStateMotion),n,out);
  fclose(out);


  //==== sit ====//
  // Sit: Hund sitzt auf Hinterbeinen
  // Parameter: keine

  mzero(b);

  n = 0;
  m[n].body = b;
  m[n].time = 200;
  n++;

  // unhandled transition in motion sit, 'transition scratchHead scratchHead start'
  // unhandled transition in motion sit, 'transition sit sit start'
  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0, -0.35, -0.19,  1.75);
  LegAng  (b,1, -0.35, -0.19,  1.75);
  LegAng  (b,2, -1.84, -0.04,   2.5);
  LegAng  (b,3, -1.84, -0.04,   2.5);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0, -0.35, -0.19,  1.75);
  LegAng  (b,1, -0.35, -0.19,  1.75);
  LegAng  (b,2, -0.04, -0.04,   2.5);
  LegAng  (b,3, -0.04, -0.04,   2.5);
  m[n].body = b;
  m[n].time = 320;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0, -0.35, -0.19,  1.75);
  LegAng  (b,1, -0.35, -0.19,  1.75);
  LegAng  (b,2, -0.04, -0.04,   2.5);
  LegAng  (b,3, -0.04, -0.04,   2.5);
  m[n].body = b;
  m[n].time = 0;
  n++;

  out = fopen("sit.mot","wb");
  fwrite(&n,sizeof(n),1,out);
  fwrite(m,sizeof(Motion::BodyStateMotion),n,out);
  fclose(out);


  //==== swing ====//
  // old "dancing" version
  // 0:20.5, Körperwackeln rlrlrlrl:
  // ~ ~ ~ ~ ~ ~   -400 0 800     0 0 0         -400 0 800     0 0 0            1 62
  // ~ ~ ~ ~ ~ ~  0 0 0          -600 0 1200   0 0 0          -600 0 1200      1 100
  // ~ ~ ~ ~ ~ ~  -600 0 1200    0 0 0         -600 0 1200    0 0 0            1 100
  // ~ ~ ~ ~ ~ ~  0 0 0          -600 0 1200   0 0 0          -600 0 1200      1 100
  // label loop
  // ~ ~ ~ ~ ~ ~   -600 0 1200    0 0 0         -600 0 1200    0 0 0            1 100
  // ~ ~ ~ ~ ~ ~   0 0 0          -600 0 1200   0 0 0          -600 0 1200      1 100
  // transition swing swing loop
  // new swing, lower, adjusted to unsw style stand

  mzero(b);

  n = 0;
  m[n].body = b;
  m[n].time = 512;
  n++;

  HeadAng (b,       0,   0.2,     0);
  LegAng  (b,0,  -0.1, 0.175,   1.9);
  LegAng  (b,1,  -0.1, 0.375,   1.9);
  LegAng  (b,2,  -0.6,  0.07,   1.4);
  LegAng  (b,3,  -0.6,  0.27,   1.4);
  m[n].body = b;
  m[n].time = 512;
  n++;

  // unhandled transition in motion swing, 'transition swing swing start'
  HeadAng (b,       0,  -0.2,     0);
  LegAng  (b,0,  -0.1, 0.375,   1.9);
  LegAng  (b,1,  -0.1, 0.175,   1.9);
  LegAng  (b,2,  -0.6,  0.27,   1.4);
  LegAng  (b,3,  -0.6,  0.07,   1.4);
  m[n].body = b;
  m[n].time = 0;
  n++;

  out = fopen("swing.mot","wb");
  fwrite(&n,sizeof(n),1,out);
  fwrite(m,sizeof(Motion::BodyStateMotion),n,out);
  fclose(out);


  //==== unswBash ====//
  // unswBash: Ball wird eingeklemmt und mit beiden Vorderpfoten nach vorne geschlagen
  // Schnell und effektiv
  // 400 0 ~   ~ ~ ~   1034 0 1000  1034 0 1000   -500 2500 3500  -500 2500 3500   1 25
  // -1000 0 ~   ~ ~ ~   3000 0 3000  3000 0 3000   -500 2500 3500  -500 2500 3500   1 25
  // -1000 0 ~   ~ ~ ~   1034 -300 1000  1034 -300 1000   -500 2500 3500  -500 2500 3500   1 25
  // 400 0 ~   ~ ~ ~   1034 0 1000  1034 0 1000   -500 2500 3500  -500 2500 3500   1 25
  // klemm

  mzero(b);

  n = 0;
  m[n].body = b;
  m[n].time = 100;
  n++;

  HeadAng (b,       0,     0,     0);
  LegAng  (b,0, 1.034,   0.3,     1);
  LegAng  (b,1, 1.034,   0.3,     1);
  LegAng  (b,2,  -0.5,   2.5,   3.5);
  LegAng  (b,3,  -0.5,   2.5,   3.5);
  m[n].body = b;
  m[n].time = 200;
  n++;

  HeadAng (b,       0,     0,     0);
  LegAng  (b,0, 1.034,   0.3,     1);
  LegAng  (b,1, 1.034,   0.3,     1);
  LegAng  (b,2,  -0.5,   2.5,   3.5);
  LegAng  (b,3,  -0.5,   2.5,   3.5);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,       0,     0,     0);
  LegAng  (b,0, 1.034,   0.8,     1);
  LegAng  (b,1, 1.034,   0.8,     1);
  LegAng  (b,2,  -0.5,   2.5,   3.5);
  LegAng  (b,3,  -0.5,   2.5,   3.5);
  m[n].body = b;
  m[n].time = 480;
  n++;

  HeadAng (b,       0,     0,     0);
  LegAng  (b,0, 1.034,   0.8,     1);
  LegAng  (b,1, 1.034,   0.8,     1);
  LegAng  (b,2,  -0.5,   2.5,   3.5);
  LegAng  (b,3,  -0.5,   2.5,   3.5);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,    -0.3,     0,     0);
  LegAng  (b,0, 1.034,  -0.7,   0.5);
  LegAng  (b,1, 1.034,  -0.7,   0.5);
  LegAng  (b,2,  -0.5,   2.5,   3.5);
  LegAng  (b,3,  -0.5,   2.5,   3.5);
  m[n].body = b;
  m[n].time = 480;
  n++;

  // kick
  HeadAng (b,    -0.3,     0,     0);
  LegAng  (b,0, 1.034,  -0.7,   0.5);
  LegAng  (b,1, 1.034,  -0.7,   0.5);
  LegAng  (b,2,  -0.5,   2.5,   3.5);
  LegAng  (b,3,  -0.5,   2.5,   3.5);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,       0,     0,     0);
  LegAng  (b,0,     3,     0,     2);
  LegAng  (b,1,     3,     0,     2);
  LegAng  (b,2,  -0.5,   2.5,   3.5);
  LegAng  (b,3,  -0.5,   2.5,   3.5);
  m[n].body = b;
  m[n].time = 200;
  n++;

  HeadAng (b,       0,     0,     0);
  LegAng  (b,0,     3,     0,     2);
  LegAng  (b,1,     3,     0,     2);
  LegAng  (b,2,  -0.5,   2.5,   3.5);
  LegAng  (b,3,  -0.5,   2.5,   3.5);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,    -0.8,     0,     0);
  LegAng  (b,0, 1.034,  -0.3,   0.5);
  LegAng  (b,1, 1.034,  -0.3,   0.5);
  LegAng  (b,2,  -0.5,   2.5,   3.5);
  LegAng  (b,3,  -0.5,   2.5,   3.5);
  m[n].body = b;
  m[n].time = 200;
  n++;

  // stand
  HeadAng (b,    -0.8,     0,     0);
  LegAng  (b,0, 1.034,  -0.3,   0.5);
  LegAng  (b,1, 1.034,  -0.3,   0.5);
  LegAng  (b,2,  -0.5,   2.5,   3.5);
  LegAng  (b,3,  -0.5,   2.5,   3.5);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,       0,     0,     0);
  LegAng  (b,0,  -0.1,   0.2,   2.1);
  LegAng  (b,1,  -0.1,   0.2,   2.1);
  LegAng  (b,2,  -0.7,  0.25,   1.5);
  LegAng  (b,3,  -0.7,  0.25,   1.5);
  m[n].body = b;
  m[n].time = 200;
  n++;

  HeadAng (b,       0,     0,     0);
  LegAng  (b,0,  -0.1,   0.2,   2.1);
  LegAng  (b,1,  -0.1,   0.2,   2.1);
  LegAng  (b,2,  -0.7,  0.25,   1.5);
  LegAng  (b,3,  -0.7,  0.25,   1.5);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,       0,     0,     0);
  LegAng  (b,0, -0.07, 0.256, 1.924);
  LegAng  (b,1,-0.115, 0.262, 1.913);
  LegAng  (b,2,-0.547, 0.188, 1.384);
  LegAng  (b,3,-0.579, 0.222, 1.382);
  m[n].body = b;
  m[n].time = 200;
  n++;

  HeadAng (b,       0,     0,     0);
  LegAng  (b,0, -0.07, 0.256, 1.924);
  LegAng  (b,1,-0.115, 0.262, 1.913);
  LegAng  (b,2,-0.547, 0.188, 1.384);
  LegAng  (b,3,-0.579, 0.222, 1.382);
  m[n].body = b;
  m[n].time = 0;
  n++;

  out = fopen("unswBash.mot","wb");
  fwrite(&n,sizeof(n),1,out);
  fwrite(m,sizeof(Motion::BodyStateMotion),n,out);
  fclose(out);


  //==== unswBashOptimized ====//
  // unswBash: Ball wird eingeklemmt und mit beiden Vorderpfoten nach vorne geschlagen
  // Schnell und effektiv
  // optimized (jan)
  // stand

  mzero(b);

  n = 0;
  m[n].body = b;
  m[n].time = 100;
  n++;

  HeadAng (b,       0,     0,     0);
  LegAng  (b,0,-0.062, 0.273, 1.902);
  LegAng  (b,1,-0.062, 0.273, 1.902);
  LegAng  (b,2,-0.581, 0.171, 1.378);
  LegAng  (b,3,-0.589, 0.216, 1.385);
  m[n].body = b;
  m[n].time = 200;
  n++;

  HeadAng (b,       0,     0,     0);
  LegAng  (b,0,-0.062, 0.273, 1.902);
  LegAng  (b,1,-0.062, 0.273, 1.902);
  LegAng  (b,2,-0.581, 0.171, 1.378);
  LegAng  (b,3,-0.589, 0.216, 1.385);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,       0,     0,     0);
  LegAng  (b,0,-0.062, 0.273, 1.902);
  LegAng  (b,1,-0.062, 0.273, 1.902);
  LegAng  (b,2,-1.335, 0.598, 1.627);
  LegAng  (b,3,-1.335, 0.598, 1.627);
  m[n].body = b;
  m[n].time = 200;
  n++;

  // catch
  HeadAng (b,       0,     0,     0);
  LegAng  (b,0,-0.062, 0.273, 1.902);
  LegAng  (b,1,-0.062, 0.273, 1.902);
  LegAng  (b,2,-1.335, 0.598, 1.627);
  LegAng  (b,3,-1.335, 0.598, 1.627);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,   0.733,     0,     0);
  LegAng  (b,0, 0.447, 0.279, 0.964);
  LegAng  (b,1, 0.433, 0.279,  1.02);
  LegAng  (b,2,-0.461, 1.584, 2.495);
  LegAng  (b,3,-0.455, 1.601, 2.559);
  m[n].body = b;
  m[n].time = 200;
  n++;

  HeadAng (b,   0.733,     0,     0);
  LegAng  (b,0, 0.447, 0.279, 0.964);
  LegAng  (b,1, 0.433, 0.279,  1.02);
  LegAng  (b,2,-0.461, 1.584, 2.495);
  LegAng  (b,3,-0.455, 1.601, 2.559);
  m[n].body = b;
  m[n].time = 320;
  n++;

  // kick
  HeadAng (b,    -0.3,     0,     0);
  LegAng  (b,0, 1.034,  -0.7,   0.5);
  LegAng  (b,1, 1.034,  -0.7,   0.5);
  LegAng  (b,2,  -0.5,   2.5,   3.5);
  LegAng  (b,3,  -0.5,   2.5,   3.5);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,       0,     0,     0);
  LegAng  (b,0,     3,     0,     2);
  LegAng  (b,1,     3,     0,     2);
  LegAng  (b,2,  -0.5,   2.5,   3.5);
  LegAng  (b,3,  -0.5,   2.5,   3.5);
  m[n].body = b;
  m[n].time = 200;
  n++;

  HeadAng (b,       0,     0,     0);
  LegAng  (b,0,     3,     0,     2);
  LegAng  (b,1,     3,     0,     2);
  LegAng  (b,2,  -0.5,   2.5,   3.5);
  LegAng  (b,3,  -0.5,   2.5,   3.5);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,    -0.8,     0,     0);
  LegAng  (b,0, 1.034,  -0.3,   0.5);
  LegAng  (b,1, 1.034,  -0.3,   0.5);
  LegAng  (b,2,  -0.5,   2.5,   3.5);
  LegAng  (b,3,  -0.5,   2.5,   3.5);
  m[n].body = b;
  m[n].time = 200;
  n++;

  // stand
  // ~ 0 0  ~ ~ ~  -62 273 1902  -62 273 1902  -589 216 1385 -581 171 1378  1 50
  HeadAng (b,    -0.8,     0,     0);
  LegAng  (b,0, 1.034,  -0.3,   0.5);
  LegAng  (b,1, 1.034,  -0.3,   0.5);
  LegAng  (b,2,  -0.5,   2.5,   3.5);
  LegAng  (b,3,  -0.5,   2.5,   3.5);
  m[n].body = b;
  m[n].time = 0;
  n++;

  out = fopen("unswBashOptimized.mot","wb");
  fwrite(&n,sizeof(n),1,out);
  fwrite(m,sizeof(Motion::BodyStateMotion),n,out);
  fclose(out);


  //==== unswChestKick ====//
  // unswChest: Ball wird mit der Brust gespielt.
  //  Schneller, aber relativ schwacher Schupser nach vorne.
  // ~ ~ ~   ~ ~ ~   34 0 2000  34 0 2000   -750 250 970  -750 250 970   1 25
  // ~ ~ ~   ~ ~ ~   -1000 300 2500  -1000 300 2500  -500 250 1500  -500 250 1500   1 25
  // ~ ~ ~   ~ ~ ~   -1000 300 2000  -1000 300 2000  -500 250 1500  -500 250 1500   1 25
  // ~ ~ ~   ~ ~ ~   34 0 2000  34 0 2000   -750 250 970  -750 250 970   1 25

  mzero(b);

  n = 0;
  m[n].body = b;
  m[n].time = 100;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,  -0.1,   0.2,   2.1);
  LegAng  (b,1,  -0.1,   0.2,   2.1);
  LegAng  (b,2,  -0.7,  0.25,   1.5);
  LegAng  (b,3,  -0.7,  0.25,   1.5);
  m[n].body = b;
  m[n].time = 200;
  n++;

  HeadAng (b,     0.5,   1.5,     0);
  LegAng  (b,0,  -0.1,   0.2,   2.1);
  LegAng  (b,1,  -0.1,   0.2,   2.1);
  LegAng  (b,2,  -0.7,  0.25,   1.5);
  LegAng  (b,3,  -0.7,  0.25,   1.5);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,     0.5,     0,     0);
  LegAng  (b,0,    -1,   0.3,   2.1);
  LegAng  (b,1,    -1,   0.3,   2.1);
  LegAng  (b,2,  -0.4,  0.25,   1.5);
  LegAng  (b,3,  -0.4,  0.25,   1.5);
  m[n].body = b;
  m[n].time = 200;
  n++;

  HeadAng (b,     0.5,     0,     0);
  LegAng  (b,0,    -1,   0.3,   2.1);
  LegAng  (b,1,    -1,   0.3,   2.1);
  LegAng  (b,2,  -0.4,  0.25,   1.5);
  LegAng  (b,3,  -0.4,  0.25,   1.5);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,     0.5,     0,     0);
  LegAng  (b,0,    -1,   0.3,   2.1);
  LegAng  (b,1,    -1,   0.3,   2.1);
  LegAng  (b,2,  -0.4,  0.25,   1.5);
  LegAng  (b,3,  -0.4,  0.25,   1.5);
  m[n].body = b;
  m[n].time = 200;
  n++;

  HeadAng (b,     0.5,     0,     0);
  LegAng  (b,0,    -1,   0.3,   2.1);
  LegAng  (b,1,    -1,   0.3,   2.1);
  LegAng  (b,2,  -0.4,  0.25,   1.5);
  LegAng  (b,3,  -0.4,  0.25,   1.5);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,     0.5,     0,     0);
  LegAng  (b,0,  -0.1,   0.2,   2.1);
  LegAng  (b,1,  -0.1,   0.2,   2.1);
  LegAng  (b,2,  -0.7,  0.25,   1.5);
  LegAng  (b,3,  -0.7,  0.25,   1.5);
  m[n].body = b;
  m[n].time = 200;
  n++;

  HeadAng (b,     0.5,     0,     0);
  LegAng  (b,0,  -0.1,   0.2,   2.1);
  LegAng  (b,1,  -0.1,   0.2,   2.1);
  LegAng  (b,2,  -0.7,  0.25,   1.5);
  LegAng  (b,3,  -0.7,  0.25,   1.5);
  m[n].body = b;
  m[n].time = 0;
  n++;

  HeadAng (b,       0,     0,     0);
  LegAng  (b,0,  -0.1,  0.28,   1.9);
  LegAng  (b,1,  -0.1,  0.28,   1.9);
  LegAng  (b,2, -0.57,  0.18,   1.4);
  LegAng  (b,3, -0.57,  0.18,   1.4);
  m[n].body = b;
  m[n].time = 200;
  n++;

  HeadAng (b,       0,     0,     0);
  LegAng  (b,0,  -0.1,  0.28,   1.9);
  LegAng  (b,1,  -0.1,  0.28,   1.9);
  LegAng  (b,2, -0.57,  0.18,   1.4);
  LegAng  (b,3, -0.57,  0.18,   1.4);
  m[n].body = b;
  m[n].time = 0;
  n++;

  out = fopen("unswChestKick.mot","wb");
  fwrite(&n,sizeof(n),1,out);
  fwrite(m,sizeof(Motion::BodyStateMotion),n,out);
  fclose(out);


}
