// File: /workspace/github_c_makefile_star2_O0/bmottershead[P]DBF2TSV/dbf.c
// Function: DBFCloneEmpty
DBFHandle  DBFCloneEmpty(DBFHandle psDBF, const char *pszFilename) {
  DBFHandle newDBF;

  newDBF = DBFCreateEx(pszFilename, psDBF->pszCodePage);
  if (newDBF == NULL)
    return (NULL);

  newDBF->nFields = psDBF->nFields;
  newDBF->nRecordLength = psDBF->nRecordLength;
  newDBF->nHeaderLength = psDBF->nHeaderLength;
  newDBF->pszHeader = (char *) malloc(newDBF->nHeaderLength);
  memcpy(newDBF->pszHeader, psDBF->pszHeader, newDBF->nHeaderLength);
  newDBF->panFieldOffset = (int *) malloc(sizeof(int) * psDBF->nFields);
  memcpy(newDBF->panFieldOffset, psDBF->panFieldOffset,  sizeof(int) * psDBF->nFields);
  newDBF->panFieldSize = (int *) malloc(sizeof(int) * psDBF->nFields);
  memcpy(newDBF->panFieldSize, psDBF->panFieldSize, sizeof(int) * psDBF->nFields);
  newDBF->panFieldDecimals = (int *) malloc(sizeof(int) * psDBF->nFields);
  memcpy(newDBF->panFieldDecimals, psDBF->panFieldDecimals, sizeof(int) * psDBF->nFields);
  newDBF->pachFieldType = (char *) malloc(sizeof(char) * psDBF->nFields);
  memcpy(newDBF->pachFieldType, psDBF->pachFieldType, sizeof(char) * psDBF->nFields);

  newDBF->bNoHeader = TRUE;
  newDBF->bUpdated = TRUE;
  DBFWriteHeader(newDBF);
  DBFClose(newDBF);
  newDBF = DBFOpen(pszFilename, "rb+");
  return (newDBF);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x18(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x78(%rax), %rsi
callq 0x2130
movq %rax, -0x20(%rbp)
cmpq $0x0, -0x20(%rbp)
jne 0x3a39
movq $0x0, -0x8(%rbp)
jmp 0x3bd0
movq -0x10(%rbp), %rax
movl 0x14(%rax), %ecx
movq -0x20(%rbp), %rax
movl %ecx, 0x14(%rax)
movq -0x10(%rbp), %rax
movl 0xc(%rax), %ecx
movq -0x20(%rbp), %rax
movl %ecx, 0xc(%rax)
movq -0x10(%rbp), %rax
movl 0x10(%rax), %ecx
movq -0x20(%rbp), %rax
movl %ecx, 0x10(%rax)
movq -0x20(%rbp), %rax
movslq 0x10(%rax), %rdi
callq 0x1140
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x38(%rax)
movq -0x20(%rbp), %rax
movq 0x38(%rax), %rdi
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rsi
movq -0x20(%rbp), %rax
movslq 0x10(%rax), %rdx
callq 0x1130
movq -0x10(%rbp), %rax
movslq 0x14(%rax), %rdi
shlq $0x2, %rdi
callq 0x1140
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x20(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rsi
movq -0x10(%rbp), %rax
movslq 0x14(%rax), %rdx
shlq $0x2, %rdx
callq 0x1130
movq -0x10(%rbp), %rax
movslq 0x14(%rax), %rdi
shlq $0x2, %rdi
callq 0x1140
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x20(%rbp), %rax
movq 0x20(%rax), %rdi
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rsi
movq -0x10(%rbp), %rax
movslq 0x14(%rax), %rdx
shlq $0x2, %rdx
callq 0x1130
movq -0x10(%rbp), %rax
movslq 0x14(%rax), %rdi
shlq $0x2, %rdi
callq 0x1140
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x28(%rax)
movq -0x20(%rbp), %rax
movq 0x28(%rax), %rdi
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rsi
movq -0x10(%rbp), %rax
movslq 0x14(%rax), %rdx
shlq $0x2, %rdx
callq 0x1130
movq -0x10(%rbp), %rax
movslq 0x14(%rax), %rdi
shlq $0x0, %rdi
callq 0x1140
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x30(%rax)
movq -0x20(%rbp), %rax
movq 0x30(%rax), %rdi
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rsi
movq -0x10(%rbp), %rax
movslq 0x14(%rax), %rdx
shlq $0x0, %rdx
callq 0x1130
movq -0x20(%rbp), %rax
movl $0x1, 0x60(%rax)
movq -0x20(%rbp), %rax
movl $0x1, 0x64(%rax)
movq -0x20(%rbp), %rdi
callq 0x1670
movq -0x20(%rbp), %rdi
callq 0x2030
movq -0x18(%rbp), %rdi
leaq 0x1522(%rip), %rsi      # 0x50e1
callq 0x18a0
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x20, %rsp
popq %rbp
retq
nopw (%rax,%rax)