// File: /workspace/github_c_makefile_star2_O0/vlenhart[P]q3bsp/vformat.cpp
// Function: VertexPool::SaveVRML2(_IO_FILE*, int, VFormatOptions&)
void VertexPool::SaveVRML2(FILE *fph, int lightMapStage, VFormatOptions &options)
{
  
  if ( 1 )
  {
    fprintf(fph,"coord Coordinate {\npoint [\n\t");
    int count = mVtxs.size();
    for (int i=0; i<count; i++)
    {
      const LightMapVertex &vtx = mVtxs[i];
	  
	  if (i>0) { 
			fprintf(fph,",\n\t");
	  }		
	   
      if (options.yzFlip)
		  fprintf(fph,options.VFORMAT,vtx.mPos.x,vtx.mPos.z,vtx.mPos.y);
      else fprintf(fph,options.VFORMAT,vtx.mPos.x,vtx.mPos.y,vtx.mPos.z);

    }
    fprintf(fph,"\n]\n}\n");
  }

  if (options.useMultiTexturing) { // PROPOSAL MultiTextureCoodinate 
    fprintf(fph,"texCoord  MultiTextureCoordinate {\ncoord [\n\t");
    int count = mVtxs.size();

	// channel 0
    fprintf(fph,"\tTextureCoordinate {\npoint [\n\t");


    for (int i=0; i<count; i++)
    {
      const LightMapVertex &vtx = mVtxs[i];

	  if (i>0) { 
			if ( (i%4) == 0) fprintf(fph,",\n\t");
			else fprintf(fph,",");
	  }		
      if (lightMapStage == 0)
		  fprintf(fph,options.TFORMAT,vtx.mTexel2.x,1.0f-vtx.mTexel2.y);
      else fprintf(fph,options.TFORMAT,vtx.mTexel1.x,1.0f-vtx.mTexel1.y);

    }
    fprintf(fph,"\n]\n}\n");
	
	//if (lightMapStage == 1) 
	{

	// channel 1
	fprintf(fph,"\tTextureCoordinate {\npoint [\n\t");

    for (int i=0; i<count; i++)
    {
      const LightMapVertex &vtx = mVtxs[i];

	  if (i>0) { 
			if ( (i%4) == 0) fprintf(fph,",\n\t");
			else fprintf(fph,",");
	  }		
      if (lightMapStage == 1)
		  fprintf(fph,options.TFORMAT,vtx.mTexel2.x,1.0f-vtx.mTexel2.y);
      else fprintf(fph,options.TFORMAT,vtx.mTexel1.x,1.0f-vtx.mTexel1.y);
	}
    fprintf(fph,"\n\t]\n}\n");
	
	}
    fprintf(fph,"\n]\n}\n");


  } else	
  if ( options.noTextureCoordinates )
  {
    fprintf(fph,"texCoord  TextureCoordinate {\npoint [\n\t");
    int count = mVtxs.size();

    for (int i=0; i<count; i++)
    {
      const LightMapVertex &vtx = mVtxs[i];

	  if (i>0) {
			if ( (i%4) == 0) fprintf(fph,",\n\t");
			else fprintf(fph,",");
	  }		


      if ( !options.tex1 ) // if saving second U/V channel.
      {
         fprintf(fph,options.TFORMAT,vtx.mTexel2.x,1.0f-vtx.mTexel2.y);
      }
      else
      {
          fprintf(fph,options.TFORMAT,vtx.mTexel1.x,1.0f-vtx.mTexel1.y);
      }
    }
    fprintf(fph,"\n]\n}\n");

  }

   //if (options.useVertexColor) 
   {
    int count = mVtxs.size();
	// channel 0
    fprintf(fph,"\tcolor Color {\ncolor [\n\t");


    for (int i=0; i<count; i++)
    {
      const LightMapVertex &vtx = mVtxs[i];

	  if (i>0) { 
			if ( (i%4) == 0) fprintf(fph,",\n\t");
			else fprintf(fph,",");
	  }		
      fprintf(fph,options.CFORMAT,vtx.mColor.x,vtx.mColor.y,vtx.mColor.z);

    }
    fprintf(fph,"\n]\n}\n");
   }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movq %rcx, -0x20(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x10(%rbp), %rdi
leaq 0x68e9(%rip), %rsi      # 0x2ad86
movb $0x0, %al
callq 0x3430
movq -0x78(%rbp), %rdi
addq $0x30, %rdi
callq 0x25090
movl %eax, -0x24(%rbp)
movl $0x0, -0x28(%rbp)
movl -0x28(%rbp), %eax
cmpl -0x24(%rbp), %eax
jge 0x24588
movq -0x78(%rbp), %rdi
addq $0x30, %rdi
movslq -0x28(%rbp), %rsi
callq 0x250c0
movq %rax, -0x30(%rbp)
cmpl $0x0, -0x28(%rbp)
jle 0x244f4
movq -0x10(%rbp), %rdi
leaq 0x68b6(%rip), %rsi      # 0x2ada3
movb $0x0, %al
callq 0x3430
movq -0x20(%rbp), %rax
testb $0x1, 0x78(%rax)
je 0x2453c
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rax
movq 0x80(%rax), %rsi
movq -0x30(%rbp), %rax
movss (%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movq -0x30(%rbp), %rax
movss 0x8(%rax), %xmm1
cvtss2sd %xmm1, %xmm1
movq -0x30(%rbp), %rax
movss 0x4(%rax), %xmm2
cvtss2sd %xmm2, %xmm2
movb $0x3, %al
callq 0x3430
jmp 0x24578
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rax
movq 0x80(%rax), %rsi
movq -0x30(%rbp), %rax
movss (%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movq -0x30(%rbp), %rax
movss 0x4(%rax), %xmm1
cvtss2sd %xmm1, %xmm1
movq -0x30(%rbp), %rax
movss 0x8(%rax), %xmm2
cvtss2sd %xmm2, %xmm2
movb $0x3, %al
callq 0x3430
jmp 0x2457a
movl -0x28(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0x244bb
movq -0x10(%rbp), %rdi
leaq 0x62ca(%rip), %rsi      # 0x2a85d
movb $0x0, %al
callq 0x3430
movq -0x20(%rbp), %rax
testb $0x1, 0x6a(%rax)
je 0x24805
movq -0x10(%rbp), %rdi
leaq 0x67f4(%rip), %rsi      # 0x2ada7
movb $0x0, %al
callq 0x3430
movq -0x78(%rbp), %rdi
addq $0x30, %rdi
callq 0x25090
movl %eax, -0x34(%rbp)
movq -0x10(%rbp), %rdi
leaq 0x67ff(%rip), %rsi      # 0x2add4
movb $0x0, %al
callq 0x3430
movl $0x0, -0x38(%rbp)
movl -0x38(%rbp), %eax
cmpl -0x34(%rbp), %eax
jge 0x246ca
movq -0x78(%rbp), %rdi
addq $0x30, %rdi
movslq -0x38(%rbp), %rsi
callq 0x250c0
movq %rax, -0x40(%rbp)
cmpl $0x0, -0x38(%rbp)
jle 0x24642
movl -0x38(%rbp), %eax
movl $0x4, %ecx
cltd
idivl %ecx
cmpl $0x0, %edx
jne 0x2462e
movq -0x10(%rbp), %rdi
leaq 0x677e(%rip), %rsi      # 0x2ada3
movb $0x0, %al
callq 0x3430
jmp 0x24640
movq -0x10(%rbp), %rdi
leaq 0x67ba(%rip), %rsi      # 0x2adf3
movb $0x0, %al
callq 0x3430
jmp 0x24642
cmpl $0x0, -0x14(%rbp)
jne 0x24682
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rax
movq 0x88(%rax), %rsi
movq -0x40(%rbp), %rax
movss 0x14(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movq -0x40(%rbp), %rax
movss 0x4994(%rip), %xmm1     # 0x29004
subss 0x18(%rax), %xmm1
cvtss2sd %xmm1, %xmm1
movb $0x2, %al
callq 0x3430
jmp 0x246ba
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rax
movq 0x88(%rax), %rsi
movq -0x40(%rbp), %rax
movss 0xc(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movq -0x40(%rbp), %rax
movss 0x495a(%rip), %xmm1     # 0x29004
subss 0x10(%rax), %xmm1
cvtss2sd %xmm1, %xmm1
movb $0x2, %al
callq 0x3430
jmp 0x246bc
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x245e3
movq -0x10(%rbp), %rdi
leaq 0x6188(%rip), %rsi      # 0x2a85d
movb $0x0, %al
callq 0x3430
movq -0x10(%rbp), %rdi
leaq 0x66ed(%rip), %rsi      # 0x2add4
movb $0x0, %al
callq 0x3430
movl $0x0, -0x44(%rbp)
movl -0x44(%rbp), %eax
cmpl -0x34(%rbp), %eax
jge 0x247dc
movq -0x78(%rbp), %rdi
addq $0x30, %rdi
movslq -0x44(%rbp), %rsi
callq 0x250c0
movq %rax, -0x50(%rbp)
cmpl $0x0, -0x44(%rbp)
jle 0x24754
movl -0x44(%rbp), %eax
movl $0x4, %ecx
cltd
idivl %ecx
cmpl $0x0, %edx
jne 0x24740
movq -0x10(%rbp), %rdi
leaq 0x666c(%rip), %rsi      # 0x2ada3
movb $0x0, %al
callq 0x3430
jmp 0x24752
movq -0x10(%rbp), %rdi
leaq 0x66a8(%rip), %rsi      # 0x2adf3
movb $0x0, %al
callq 0x3430
jmp 0x24754
cmpl $0x1, -0x14(%rbp)
jne 0x24794
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rax
movq 0x88(%rax), %rsi
movq -0x50(%rbp), %rax
movss 0x14(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movq -0x50(%rbp), %rax
movss 0x4882(%rip), %xmm1     # 0x29004
subss 0x18(%rax), %xmm1
cvtss2sd %xmm1, %xmm1
movb $0x2, %al
callq 0x3430
jmp 0x247cc
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rax
movq 0x88(%rax), %rsi
movq -0x50(%rbp), %rax
movss 0xc(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movq -0x50(%rbp), %rax
movss 0x4848(%rip), %xmm1     # 0x29004
subss 0x10(%rax), %xmm1
cvtss2sd %xmm1, %xmm1
movb $0x2, %al
callq 0x3430
jmp 0x247ce
movl -0x44(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x44(%rbp)
jmp 0x246f5
movq -0x10(%rbp), %rdi
leaq 0x660e(%rip), %rsi      # 0x2adf5
movb $0x0, %al
callq 0x3430
movq -0x10(%rbp), %rdi
leaq 0x6064(%rip), %rsi      # 0x2a85d
movb $0x0, %al
callq 0x3430
jmp 0x2493b
movq -0x20(%rbp), %rax
testb $0x1, 0x79(%rax)
je 0x24939
movq -0x10(%rbp), %rdi
leaq 0x65de(%rip), %rsi      # 0x2adfc
movb $0x0, %al
callq 0x3430
movq -0x78(%rbp), %rdi
addq $0x30, %rdi
callq 0x25090
movl %eax, -0x54(%rbp)
movl $0x0, -0x58(%rbp)
movl -0x58(%rbp), %eax
cmpl -0x54(%rbp), %eax
jge 0x24927
movq -0x78(%rbp), %rdi
addq $0x30, %rdi
movslq -0x58(%rbp), %rsi
callq 0x250c0
movq %rax, -0x60(%rbp)
cmpl $0x0, -0x58(%rbp)
jle 0x2489b
movl -0x58(%rbp), %eax
movl $0x4, %ecx
cltd
idivl %ecx
cmpl $0x0, %edx
jne 0x24887
movq -0x10(%rbp), %rdi
leaq 0x6525(%rip), %rsi      # 0x2ada3
movb $0x0, %al
callq 0x3430
jmp 0x24899
movq -0x10(%rbp), %rdi
leaq 0x6561(%rip), %rsi      # 0x2adf3
movb $0x0, %al
callq 0x3430
jmp 0x2489b
movq -0x20(%rbp), %rax
testb $0x1, 0x6c(%rax)
jne 0x248df
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rax
movq 0x88(%rax), %rsi
movq -0x60(%rbp), %rax
movss 0x14(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movq -0x60(%rbp), %rax
movss 0x4737(%rip), %xmm1     # 0x29004
subss 0x18(%rax), %xmm1
cvtss2sd %xmm1, %xmm1
movb $0x2, %al
callq 0x3430
jmp 0x24917
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rax
movq 0x88(%rax), %rsi
movq -0x60(%rbp), %rax
movss 0xc(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movq -0x60(%rbp), %rax
movss 0x46fd(%rip), %xmm1     # 0x29004
subss 0x10(%rax), %xmm1
cvtss2sd %xmm1, %xmm1
movb $0x2, %al
callq 0x3430
jmp 0x24919
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
jmp 0x2483c
movq -0x10(%rbp), %rdi
leaq 0x5f2b(%rip), %rsi      # 0x2a85d
movb $0x0, %al
callq 0x3430
jmp 0x2493b
movq -0x78(%rbp), %rdi
addq $0x30, %rdi
callq 0x25090
movl %eax, -0x64(%rbp)
movq -0x10(%rbp), %rdi
leaq 0x64ce(%rip), %rsi      # 0x2ae24
movb $0x0, %al
callq 0x3430
movl $0x0, -0x68(%rbp)
movl -0x68(%rbp), %eax
cmpl -0x64(%rbp), %eax
jge 0x24a0e
movq -0x78(%rbp), %rdi
addq $0x30, %rdi
movslq -0x68(%rbp), %rsi
callq 0x250c0
movq %rax, -0x70(%rbp)
cmpl $0x0, -0x68(%rbp)
jle 0x249c3
movl -0x68(%rbp), %eax
movl $0x4, %ecx
cltd
idivl %ecx
cmpl $0x0, %edx
jne 0x249af
movq -0x10(%rbp), %rdi
leaq 0x63fd(%rip), %rsi      # 0x2ada3
movb $0x0, %al
callq 0x3430
jmp 0x249c1
movq -0x10(%rbp), %rdi
leaq 0x6439(%rip), %rsi      # 0x2adf3
movb $0x0, %al
callq 0x3430
jmp 0x249c3
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rax
movq 0x90(%rax), %rsi
movq -0x70(%rbp), %rax
movss 0x1c(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movq -0x70(%rbp), %rax
movss 0x20(%rax), %xmm1
cvtss2sd %xmm1, %xmm1
movq -0x70(%rbp), %rax
movss 0x24(%rax), %xmm2
cvtss2sd %xmm2, %xmm2
movb $0x3, %al
callq 0x3430
movl -0x68(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x68(%rbp)
jmp 0x24964
movq -0x10(%rbp), %rdi
leaq 0x5e44(%rip), %rsi      # 0x2a85d
movb $0x0, %al
callq 0x3430
addq $0x80, %rsp
popq %rbp
retq
nopl (%rax)