// File: /workspace/github_c_makefile_star2_O0/coyove[P]chann/./lib/unqlite/unqlite.c
// Function: csv_write_callback
static int csv_write_callback(jx9_value *pKey, jx9_value *pValue, void *pUserData)
{
	struct csv_data *pData = (struct csv_data *)pUserData;
	const char *zData;
	int nLen, c2;
	sxu32 n;
	/* Point to the raw data */
	zData = jx9_value_to_string(pValue, &nLen);
	if( nLen < 1 ){
		/* Nothing to write */
		return JX9_OK;
	}
	if( pData->iCount > 0 ){
		/* Write the delimiter */
		pData->pDev->pStream->xWrite(pData->pDev->pHandle, (const void *)&pData->delimiter, sizeof(char));
	}
	n = 1;
	c2 = 0;
	if( SyByteFind(zData, (sxu32)nLen, pData->delimiter, 0) == SXRET_OK || 
		SyByteFind(zData, (sxu32)nLen, pData->enclosure, &n) == SXRET_OK ){
			c2 = 1;
			if( n == 0 ){
				c2 = 2;
			}
			/* Write the enclosure */
			pData->pDev->pStream->xWrite(pData->pDev->pHandle, (const void *)&pData->enclosure, sizeof(char));
			if( c2 > 1 ){
				pData->pDev->pStream->xWrite(pData->pDev->pHandle, (const void *)&pData->enclosure, sizeof(char));
			}
	}
	/* Write the data */
	if( pData->pDev->pStream->xWrite(pData->pDev->pHandle, (const void *)zData, (jx9_int64)nLen) < 1 ){
		SXUNUSED(pKey); /* cc warning */
		return JX9_ABORT;
	}
	if( c2 > 0 ){
		/* Write the enclosure */
		pData->pDev->pStream->xWrite(pData->pDev->pHandle, (const void *)&pData->enclosure, sizeof(char));
		if( c2 > 1 ){
			pData->pDev->pStream->xWrite(pData->pDev->pHandle, (const void *)&pData->enclosure, sizeof(char));
		}
	}
	pData->iCount++;
	return JX9_OK;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x18(%rbp), %rdi
leaq -0x34(%rbp), %rsi
callq 0x56e20
movq %rax, -0x30(%rbp)
cmpl $0x1, -0x34(%rbp)
jge 0xab3bf
movl $0x0, -0x4(%rbp)
jmp 0xab556
movq -0x28(%rbp), %rax
cmpl $0x0, 0x10(%rax)
jle 0xab3ef
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
movq 0x40(%rax), %rax
movq -0x28(%rbp), %rcx
movq 0x8(%rcx), %rcx
movq 0x8(%rcx), %rdi
movq -0x28(%rbp), %rsi
movl $0x1, %edx
callq *%rax
movl $0x1, -0x3c(%rbp)
movl $0x0, -0x38(%rbp)
movq -0x30(%rbp), %rdi
movl -0x34(%rbp), %esi
movq -0x28(%rbp), %rax
movl (%rax), %edx
xorl %eax, %eax
movl %eax, %ecx
callq 0x7d040
cmpl $0x0, %eax
je 0xab434
movq -0x30(%rbp), %rdi
movl -0x34(%rbp), %esi
movq -0x28(%rbp), %rax
movl 0x4(%rax), %edx
leaq -0x3c(%rbp), %rcx
callq 0x7d040
cmpl $0x0, %eax
jne 0xab4a4
movl $0x1, -0x38(%rbp)
cmpl $0x0, -0x3c(%rbp)
jne 0xab448
movl $0x2, -0x38(%rbp)
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
movq 0x40(%rax), %rax
movq -0x28(%rbp), %rcx
movq 0x8(%rcx), %rcx
movq 0x8(%rcx), %rdi
movq -0x28(%rbp), %rsi
addq $0x4, %rsi
movl $0x1, %edx
callq *%rax
cmpl $0x1, -0x38(%rbp)
jle 0xab4a2
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
movq 0x40(%rax), %rax
movq -0x28(%rbp), %rcx
movq 0x8(%rcx), %rcx
movq 0x8(%rcx), %rdi
movq -0x28(%rbp), %rsi
addq $0x4, %rsi
movl $0x1, %edx
callq *%rax
jmp 0xab4a4
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
movq 0x40(%rax), %rax
movq -0x28(%rbp), %rcx
movq 0x8(%rcx), %rcx
movq 0x8(%rcx), %rdi
movq -0x30(%rbp), %rsi
movslq -0x34(%rbp), %rdx
callq *%rax
cmpq $0x1, %rax
jge 0xab4e0
movq $0x0, -0x10(%rbp)
movl $0xfffffff6, -0x4(%rbp) # imm = 0xFFFFFFF6
jmp 0xab556
cmpl $0x0, -0x38(%rbp)
jle 0xab542
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
movq 0x40(%rax), %rax
movq -0x28(%rbp), %rcx
movq 0x8(%rcx), %rcx
movq 0x8(%rcx), %rdi
movq -0x28(%rbp), %rsi
addq $0x4, %rsi
movl $0x1, %edx
callq *%rax
cmpl $0x1, -0x38(%rbp)
jle 0xab540
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
movq 0x40(%rax), %rax
movq -0x28(%rbp), %rcx
movq 0x8(%rcx), %rcx
movq 0x8(%rcx), %rdi
movq -0x28(%rbp), %rsi
addq $0x4, %rsi
movl $0x1, %edx
callq *%rax
jmp 0xab542
movq -0x28(%rbp), %rax
movl 0x10(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x10(%rax)
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x40, %rsp
popq %rbp
retq
nop