// File: /workspace/github_c_makefile_star2_O0/vlenhart[P]q3bsp/q3bsp.cpp
// Function: QuakeFace::QuakeFace(int const*)
QuakeFace::QuakeFace(const int *face)
{

  const dsurface_t *n = (const dsurface_t *) face;

  mFrameNo = 0;

  const float *fface = (const float *) face;

  mShader       = face[0];
  mUnknown      = face[1];

  mType         = (FaceType)face[2];

  mFirstVertice = face[3];
  mVcount       = face[4];
  mFirstElement = face[5];
  mEcount       = face[6];
  mLightmap     = face[7];
  mOffsetX      = face[8];
  mOffsetY      = face[9];
  mSizeX        = face[10];
  mSizeY        = face[11];

  mOrig.x       = fface[12];
  mOrig.y       = fface[13];
  mOrig.z       = fface[14];

  mBound.r1.x   = fface[15];
  mBound.r1.y   = fface[16];
  mBound.r1.z   = fface[17];

  mBound.r2.x   = fface[18];
  mBound.r2.y   = fface[19];
  mBound.r2.z   = fface[20];

  mNormal.x     = fface[21];
  mNormal.y     = fface[22];
  mNormal.z     = fface[23];

  mControlX     = face[24];
  mControlY     = face[25];

  static int faceno=0;

  if ( mType == FACETYPE_TRISURF )
  {
    printf("Face: %d\n",faceno++);
    printf("Shader: %d\n",mShader);
    printf("Unknown: %d\n",mUnknown);
    printf("Type: %d\n",mType);
    printf("FirstVertice: %d\n",mFirstVertice);
    printf("Vcount: %d\n",mVcount);
    printf("FirstElement: %d\n",mFirstElement);
    printf("Ecount: %d\n",mEcount);
    printf("Lightmap: %d\n",mLightmap);
    printf("OffsetX: %d\n",mOffsetX);
    printf("OffsetY: %d\n",mOffsetY);
    printf("SizeX: %d\n",mSizeX);
    printf("SizeY: %d\n",mSizeY);
    printf("ControlX: %d\n",mControlX);
    printf("ControlY: %d\n",mControlY);
  }


}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x28(%rbp)
addq $0x34, %rdi
callq 0xe7e0
movq -0x28(%rbp), %rdi
addq $0x40, %rdi
callq 0x11cd0
movq -0x28(%rbp), %rdi
addq $0x58, %rdi
callq 0xe7e0
movq -0x28(%rbp), %rax
movq -0x10(%rbp), %rcx
movq %rcx, -0x18(%rbp)
movl $0x0, (%rax)
movq -0x10(%rbp), %rcx
movq %rcx, -0x20(%rbp)
movq -0x10(%rbp), %rcx
movl (%rcx), %ecx
movl %ecx, 0x4(%rax)
movq -0x10(%rbp), %rcx
movl 0x4(%rcx), %ecx
movl %ecx, 0x8(%rax)
movq -0x10(%rbp), %rcx
movl 0x8(%rcx), %ecx
movl %ecx, 0xc(%rax)
movq -0x10(%rbp), %rcx
movl 0xc(%rcx), %ecx
movl %ecx, 0x10(%rax)
movq -0x10(%rbp), %rcx
movl 0x10(%rcx), %ecx
movl %ecx, 0x14(%rax)
movq -0x10(%rbp), %rcx
movl 0x14(%rcx), %ecx
movl %ecx, 0x18(%rax)
movq -0x10(%rbp), %rcx
movl 0x18(%rcx), %ecx
movl %ecx, 0x1c(%rax)
movq -0x10(%rbp), %rcx
movl 0x1c(%rcx), %ecx
movl %ecx, 0x20(%rax)
movq -0x10(%rbp), %rcx
movl 0x20(%rcx), %ecx
movl %ecx, 0x24(%rax)
movq -0x10(%rbp), %rcx
movl 0x24(%rcx), %ecx
movl %ecx, 0x28(%rax)
movq -0x10(%rbp), %rcx
movl 0x28(%rcx), %ecx
movl %ecx, 0x2c(%rax)
movq -0x10(%rbp), %rcx
movl 0x2c(%rcx), %ecx
movl %ecx, 0x30(%rax)
movq -0x20(%rbp), %rcx
movss 0x30(%rcx), %xmm0
movss %xmm0, 0x34(%rax)
movq -0x20(%rbp), %rcx
movss 0x34(%rcx), %xmm0
movss %xmm0, 0x38(%rax)
movq -0x20(%rbp), %rcx
movss 0x38(%rcx), %xmm0
movss %xmm0, 0x3c(%rax)
movq -0x20(%rbp), %rcx
movss 0x3c(%rcx), %xmm0
movss %xmm0, 0x40(%rax)
movq -0x20(%rbp), %rcx
movss 0x40(%rcx), %xmm0
movss %xmm0, 0x44(%rax)
movq -0x20(%rbp), %rcx
movss 0x44(%rcx), %xmm0
movss %xmm0, 0x48(%rax)
movq -0x20(%rbp), %rcx
movss 0x48(%rcx), %xmm0
movss %xmm0, 0x4c(%rax)
movq -0x20(%rbp), %rcx
movss 0x4c(%rcx), %xmm0
movss %xmm0, 0x50(%rax)
movq -0x20(%rbp), %rcx
movss 0x50(%rcx), %xmm0
movss %xmm0, 0x54(%rax)
movq -0x20(%rbp), %rcx
movss 0x54(%rcx), %xmm0
movss %xmm0, 0x58(%rax)
movq -0x20(%rbp), %rcx
movss 0x58(%rcx), %xmm0
movss %xmm0, 0x5c(%rax)
movq -0x20(%rbp), %rcx
movss 0x5c(%rcx), %xmm0
movss %xmm0, 0x60(%rax)
movq -0x10(%rbp), %rcx
movl 0x60(%rcx), %ecx
movl %ecx, 0x64(%rax)
movq -0x10(%rbp), %rcx
movl 0x64(%rcx), %ecx
movl %ecx, 0x68(%rax)
cmpl $0x3, 0xc(%rax)
jne 0x105c7
movl 0x2d3b4(%rip), %esi     # 0x3d83c
movl %esi, %eax
addl $0x1, %eax
movl %eax, 0x2d3a9(%rip)     # 0x3d83c
leaq 0x198ef(%rip), %rdi     # 0x29d89
movb $0x0, %al
callq 0x3060
movq -0x28(%rbp), %rax
movl 0x4(%rax), %esi
leaq 0x198e4(%rip), %rdi     # 0x29d93
movb $0x0, %al
callq 0x3060
movq -0x28(%rbp), %rax
movl 0x8(%rax), %esi
leaq 0x198db(%rip), %rdi     # 0x29d9f
movb $0x0, %al
callq 0x3060
movq -0x28(%rbp), %rax
movl 0xc(%rax), %esi
leaq 0x198d3(%rip), %rdi     # 0x29dac
movb $0x0, %al
callq 0x3060
movq -0x28(%rbp), %rax
movl 0x10(%rax), %esi
leaq 0x198c8(%rip), %rdi     # 0x29db6
movb $0x0, %al
callq 0x3060
movq -0x28(%rbp), %rax
movl 0x14(%rax), %esi
leaq 0x198c5(%rip), %rdi     # 0x29dc8
movb $0x0, %al
callq 0x3060
movq -0x28(%rbp), %rax
movl 0x18(%rax), %esi
leaq 0x198bc(%rip), %rdi     # 0x29dd4
movb $0x0, %al
callq 0x3060
movq -0x28(%rbp), %rax
movl 0x1c(%rax), %esi
leaq 0x198b9(%rip), %rdi     # 0x29de6
movb $0x0, %al
callq 0x3060
movq -0x28(%rbp), %rax
movl 0x20(%rax), %esi
leaq 0x198b0(%rip), %rdi     # 0x29df2
movb $0x0, %al
callq 0x3060
movq -0x28(%rbp), %rax
movl 0x24(%rax), %esi
leaq 0x198a9(%rip), %rdi     # 0x29e00
movb $0x0, %al
callq 0x3060
movq -0x28(%rbp), %rax
movl 0x28(%rax), %esi
leaq 0x198a1(%rip), %rdi     # 0x29e0d
movb $0x0, %al
callq 0x3060
movq -0x28(%rbp), %rax
movl 0x2c(%rax), %esi
leaq 0x19899(%rip), %rdi     # 0x29e1a
movb $0x0, %al
callq 0x3060
movq -0x28(%rbp), %rax
movl 0x30(%rax), %esi
leaq 0x1988f(%rip), %rdi     # 0x29e25
movb $0x0, %al
callq 0x3060
movq -0x28(%rbp), %rax
movl 0x64(%rax), %esi
leaq 0x19885(%rip), %rdi     # 0x29e30
movb $0x0, %al
callq 0x3060
movq -0x28(%rbp), %rax
movl 0x68(%rax), %esi
leaq 0x1987e(%rip), %rdi     # 0x29e3e
movb $0x0, %al
callq 0x3060
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)