// File: /workspace/github_c_makefile_star2_O0/vlenhart[P]q3bsp/q3bsp.cpp
// Function: Quake3BSP::Quake3BSP(StringRef const&, StringRef const&)
Quake3BSP::Quake3BSP(const StringRef &fname,
                     const StringRef &code)
{
  mMesh = 0;

  mOk = false;
  mName     = fname;
  mCodeName = code;

  mUsePng = true; // hg 

  String ifoo = fname;
  String str = ifoo+".bsp";

  // hg prefix for light map files 
  const char * del = strrchr(fname,'\\');
  if (del) mLmPrefix = (del+1); // use file name part only
  else mLmPrefix=fname.Get();

  Fload data(str);

  void *mem = data.GetData();
  int   len = data.GetLen();
  if ( mem )
  {

    mOk = mHeader.SetHeader(mem);

    if ( mOk )
    {
      ReadFaces(mem);
      ReadElements(mem);
      ReadVertices(mem);
      ReadLightmaps(mem);
      ReadShaders(mem);
      BuildVertexBuffers();

	  ReadPlanes(mem);
	  ReadLeaves(mem);
	  ReadLeafSurfaces(mem);

	  ReadNodes(mem);
	  // brushes 
	  ReadEntities(mem);
    }
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x140, %rsp            # imm = 0x140
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0xc0(%rbp)
addq $0x8, %rdi
callq 0x9750
movq -0xc0(%rbp), %rdi
addq $0x10, %rdi
callq 0x9750
movq -0xc0(%rbp), %rdi
addq $0xa8, %rdi
movq %rdi, -0xe0(%rbp)
callq 0x11c50
movq -0xc0(%rbp), %rdi
addq $0xc0, %rdi
movq %rdi, -0xd8(%rbp)
callq 0x11c70
movq -0xc0(%rbp), %rdi
addq $0xd8, %rdi
movq %rdi, -0xd0(%rbp)
callq 0x11c90
movq -0xc0(%rbp), %rdi
addq $0xf0, %rdi
movq %rdi, -0xc8(%rbp)
callq 0x11cb0
movq -0xc0(%rbp), %rdi
addq $0x108, %rdi            # imm = 0x108
callq 0x11cd0
jmp 0xebf8
movq -0xc0(%rbp), %rdi
addq $0x128, %rdi            # imm = 0x128
movq %rdi, -0x120(%rbp)
callq 0x11d30
movq -0xc0(%rbp), %rdi
addq $0x140, %rdi            # imm = 0x140
movq %rdi, -0x118(%rbp)
callq 0x11d50
movq -0xc0(%rbp), %rdi
addq $0x158, %rdi            # imm = 0x158
movq %rdi, -0x110(%rbp)
callq 0x11d70
movq -0xc0(%rbp), %rdi
addq $0x170, %rdi            # imm = 0x170
movq %rdi, -0x108(%rbp)
callq 0x11d70
movq -0xc0(%rbp), %rdi
addq $0x188, %rdi            # imm = 0x188
movq %rdi, -0x100(%rbp)
callq 0x11d90
movq -0xc0(%rbp), %rdi
addq $0x1a0, %rdi            # imm = 0x1A0
movq %rdi, -0xf8(%rbp)
callq 0x11db0
movq -0xc0(%rbp), %rdi
addq $0x1b8, %rdi            # imm = 0x1B8
movq %rdi, -0xf0(%rbp)
callq 0x11dd0
movq -0xc0(%rbp), %rdi
addq $0x1d0, %rdi            # imm = 0x1D0
movq %rdi, -0xe8(%rbp)
callq 0x11df0
movq -0xc0(%rbp), %rdi
addq $0x1f0, %rdi            # imm = 0x1F0
callq 0x9750
jmp 0xecdd
movq -0xc0(%rbp), %rdi
movq $0x0, 0x120(%rdi)
movb $0x0, (%rdi)
movq -0x10(%rbp), %rsi
addq $0x8, %rdi
callq 0xdca0
jmp 0xed01
movq -0xc0(%rbp), %rdi
movq -0x18(%rbp), %rsi
addq $0x10, %rdi
callq 0xdca0
jmp 0xed17
movq -0xc0(%rbp), %rax
movb $0x1, 0x1e8(%rax)
movq -0x10(%rbp), %rsi
leaq -0x48(%rbp), %rdi
callq 0x11e10
jmp 0xed34
leaq 0x1aee9(%rip), %rdx     # 0x29c24
leaq -0x68(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x9360
jmp 0xed4a
movq -0x10(%rbp), %rdi
callq 0xdce0
movq %rax, -0x128(%rbp)
jmp 0xed5c
movq -0x128(%rbp), %rdi
movl $0x5c, %esi
callq 0x3330
movq %rax, -0x70(%rbp)
cmpq $0x0, -0x70(%rbp)
je 0xedec
movq -0x70(%rbp), %rsi
incq %rsi
leaq -0x78(%rbp), %rdi
callq 0x11e90
jmp 0xed8a
movq -0xc0(%rbp), %rdi
addq $0x1f0, %rdi            # imm = 0x1F0
leaq -0x78(%rbp), %rsi
callq 0xdca0
jmp 0xeda3
jmp 0xee2b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xf05f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xefff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xeff6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xefed
movq -0x10(%rbp), %rdi
callq 0xdd00
movq %rax, -0x130(%rbp)
jmp 0xedfe
movq -0x130(%rbp), %rsi
leaq -0x80(%rbp), %rdi
callq 0x11e90
jmp 0xee10
movq -0xc0(%rbp), %rdi
addq $0x1f0, %rdi            # imm = 0x1F0
leaq -0x80(%rbp), %rsi
callq 0xdca0
jmp 0xee29
jmp 0xee2b
leaq -0xa8(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0xd8d0
jmp 0xee3d
leaq -0xa8(%rbp), %rdi
callq 0x93e0
movq %rax, -0x138(%rbp)
jmp 0xee52
movq -0x138(%rbp), %rax
movq %rax, -0xb0(%rbp)
leaq -0xa8(%rbp), %rdi
callq 0x11ed0
movl %eax, -0x13c(%rbp)
jmp 0xee74
movl -0x13c(%rbp), %eax
movl %eax, -0xb4(%rbp)
cmpq $0x0, -0xb0(%rbp)
je 0xefc6
movq -0xc0(%rbp), %rdi
addq $0x18, %rdi
movq -0xb0(%rbp), %rsi
callq 0xf0a0
movb %al, -0x13d(%rbp)
jmp 0xeead
movq -0xc0(%rbp), %rax
movb -0x13d(%rbp), %cl
andb $0x1, %cl
movb %cl, (%rax)
testb $0x1, (%rax)
je 0xefc4
movq -0xc0(%rbp), %rdi
movq -0xb0(%rbp), %rsi
callq 0xf150
jmp 0xeedd
movq -0xc0(%rbp), %rdi
movq -0xb0(%rbp), %rsi
callq 0xf2b0
jmp 0xeef2
movq -0xc0(%rbp), %rdi
movq -0xb0(%rbp), %rsi
callq 0xf3b0
jmp 0xef07
movq -0xc0(%rbp), %rdi
movq -0xb0(%rbp), %rsi
callq 0xf510
jmp 0xef1c
movq -0xc0(%rbp), %rdi
movq -0xb0(%rbp), %rsi
callq 0xf830
jmp 0xef31
movq -0xc0(%rbp), %rdi
callq 0xf910
jmp 0xef3f
movq -0xc0(%rbp), %rdi
movq -0xb0(%rbp), %rsi
callq 0xfa40
jmp 0xef54
movq -0xc0(%rbp), %rdi
movq -0xb0(%rbp), %rsi
callq 0xfad0
jmp 0xef69
movq -0xc0(%rbp), %rdi
movq -0xb0(%rbp), %rsi
callq 0xfba0
jmp 0xef7e
movq -0xc0(%rbp), %rdi
movq -0xb0(%rbp), %rsi
callq 0xfc30
jmp 0xef93
movq -0xc0(%rbp), %rdi
movq -0xb0(%rbp), %rsi
callq 0xfcc0
jmp 0xefa8
jmp 0xefc4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0xa8(%rbp), %rdi
callq 0xda80
jmp 0xefed
jmp 0xefc6
leaq -0xa8(%rbp), %rdi
callq 0xda80
leaq -0x68(%rbp), %rdi
callq 0x3180
leaq -0x48(%rbp), %rdi
callq 0x3180
addq $0x140, %rsp            # imm = 0x140
popq %rbp
retq
leaq -0x68(%rbp), %rdi
callq 0x3180
leaq -0x48(%rbp), %rdi
callq 0x3180
movq -0xe8(%rbp), %rdi
callq 0x11ef0
movq -0xf0(%rbp), %rdi
callq 0x11f50
movq -0xf8(%rbp), %rdi
callq 0x11fb0
movq -0x100(%rbp), %rdi
callq 0x12010
movq -0x108(%rbp), %rdi
callq 0x12070
movq -0x110(%rbp), %rdi
callq 0x12070
movq -0x118(%rbp), %rdi
callq 0x120d0
movq -0x120(%rbp), %rdi
callq 0x12130
movq -0xc8(%rbp), %rdi
callq 0x12190
movq -0xd0(%rbp), %rdi
callq 0x121f0
movq -0xd8(%rbp), %rdi
callq 0x12250
movq -0xe0(%rbp), %rdi
callq 0x122b0
movq -0x20(%rbp), %rdi
callq 0x34f0
nopl (%rax,%rax)