Program: 8637
Project: 8637
Buggy source:
public Body createBody(World world,PhysicsBodyComponent physicsComponent,Vector2[][] minPolygonData,Vector2 mulVec,float rotationRad){
  FixtureDef fixtureDef=new FixtureDef();
  if (physicsComponent != null) {
    fixtureDef.density=physicsComponent.density;
    fixtureDef.friction=physicsComponent.friction;
    fixtureDef.restitution=physicsComponent.restitution;
    fixtureDef.isSensor=physicsComponent.sensor;
  }
  BodyDef bodyDef=new BodyDef();
  bodyDef.position.set(0,0);
  bodyDef.awake=physicsComponent.awake;
  bodyDef.allowSleep=physicsComponent.allowSleep;
  bodyDef.bullet=physicsComponent.bullet;
  if (physicsComponent.bodyType == 0) {
    bodyDef.type=BodyDef.BodyType.StaticBody;
  }
 else   if (physicsComponent.bodyType == 1) {
    bodyDef.type=BodyDef.BodyType.KinematicBody;
  }
 else {
    bodyDef.type=BodyDef.BodyType.DynamicBody;
  }
  Body body=world.createBody(bodyDef);
  PolygonShape polygonShape=new PolygonShape();
  for (int i=0; i < minPolygonData.length; i++) {
    float[] verts=new float[minPolygonData[i].length * 2];
    for (int j=0; j < verts.length; j+=2) {
      minPolygonData[i][j / 2].x-=physicsComponent.centerX;
      minPolygonData[i][j / 2].y-=physicsComponent.centerY;
      verts[j]=(minPolygonData[i][j / 2].x * (float)Math.cos(rotationRad) - minPolygonData[i][j / 2].y * (float)Math.sin(rotationRad)) * mulVec.x * scale;
      verts[j + 1]=(minPolygonData[i][j / 2].x * (float)Math.sin(rotationRad) + minPolygonData[i][j / 2].y * (float)Math.cos(rotationRad)) * mulVec.y * scale;
      verts[j]+=physicsComponent.centerX;
      verts[j + 1]+=physicsComponent.centerY;
    }
    polygonShape.set(verts);
    fixtureDef.shape=polygonShape;
    body.createFixture(fixtureDef);
  }
  return body;
}

Fixed version (ground truth):
public Body createBody(World world,PhysicsBodyComponent physicsComponent,Vector2[][] minPolygonData,Vector2 mulVec,float rotationRad){
  FixtureDef fixtureDef=new FixtureDef();
  if (physicsComponent != null) {
    fixtureDef.density=physicsComponent.density;
    fixtureDef.friction=physicsComponent.friction;
    fixtureDef.restitution=physicsComponent.restitution;
    fixtureDef.isSensor=physicsComponent.sensor;
  }
  BodyDef bodyDef=new BodyDef();
  bodyDef.position.set(0,0);
  bodyDef.awake=physicsComponent.awake;
  bodyDef.allowSleep=physicsComponent.allowSleep;
  bodyDef.bullet=physicsComponent.bullet;
  if (physicsComponent.bodyType == 0) {
    bodyDef.type=BodyDef.BodyType.StaticBody;
  }
 else   if (physicsComponent.bodyType == 1) {
    bodyDef.type=BodyDef.BodyType.KinematicBody;
  }
 else {
    bodyDef.type=BodyDef.BodyType.DynamicBody;
  }
  Body body=world.createBody(bodyDef);
  PolygonShape polygonShape=new PolygonShape();
  for (int i=0; i < minPolygonData.length; i++) {
    float[] verts=new float[minPolygonData[i].length * 2];
    for (int j=0; j < verts.length; j+=2) {
      minPolygonData[i][j / 2].x-=physicsComponent.centerX;
      minPolygonData[i][j / 2].y-=physicsComponent.centerY;
      minPolygonData[i][j / 2].x*=mulVec.x;
      minPolygonData[i][j / 2].y*=mulVec.y;
      verts[j]=(minPolygonData[i][j / 2].x * (float)Math.cos(rotationRad) - minPolygonData[i][j / 2].y * (float)Math.sin(rotationRad)) * scale;
      verts[j + 1]=(minPolygonData[i][j / 2].x * (float)Math.sin(rotationRad) + minPolygonData[i][j / 2].y * (float)Math.cos(rotationRad)) * scale;
      verts[j]+=physicsComponent.centerX;
      verts[j + 1]+=physicsComponent.centerY;
    }
    polygonShape.set(verts);
    fixtureDef.shape=polygonShape;
    body.createFixture(fixtureDef);
  }
  return body;
}