// File: /workspace/github_c_makefile_star2_O0/wahern[P]cqueues/src/lib/dns.c
// Function: dns_txt_push
int dns_txt_push(struct dns_packet *P, struct dns_txt *txt) {
	struct { unsigned char *b; size_t p, end; } dst, src;
	unsigned n;

	dst.b	= P->data;
	dst.p	= P->end;
	dst.end	= P->size;

	src.b	= txt->data;
	src.p	= 0;
	src.end	= txt->len;

	if (dst.end - dst.p < 2)
		return DNS_ENOBUFS;

	n	= txt->len + ((txt->len + 254) / 255);

	dst.b[dst.p++]	= 0xff & (n >> 8);
	dst.b[dst.p++]	= 0xff & (n >> 0);

	while (src.p < src.end) {
		n	= DNS_PP_MIN(255, src.end - src.p);

		if (dst.p >= dst.end)
			return DNS_ENOBUFS;

		dst.b[dst.p++]	= n;

		if (dst.end - dst.p < n)
			return DNS_ENOBUFS;

		memcpy(&dst.b[dst.p], &src.b[src.p], n);

		dst.p	+= n;
		src.p	+= n;
	}

	P->end	= dst.p;

	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
addq $0x5c, %rax
movq %rax, -0x30(%rbp)
movq -0x10(%rbp), %rax
movq 0x50(%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x48(%rbp)
movq $0x0, -0x40(%rbp)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x38(%rbp)
movq -0x20(%rbp), %rax
subq -0x28(%rbp), %rax
cmpq $0x2, %rax
jae 0x388be
movl $0x9b918cc0, -0x4(%rbp) # imm = 0x9B918CC0
jmp 0x38a02
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x58(%rbp)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
addq $0xfe, %rax
movl $0xff, %ecx
xorl %edx, %edx
divq %rcx
movq %rax, %rcx
movq -0x58(%rbp), %rax
addq %rcx, %rax
movl %eax, -0x4c(%rbp)
movl -0x4c(%rbp), %eax
shrl $0x8, %eax
andl $0xff, %eax
movb %al, %dl
movq -0x30(%rbp), %rax
movq -0x28(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x28(%rbp)
movb %dl, (%rax,%rcx)
movl -0x4c(%rbp), %eax
shrl $0x0, %eax
andl $0xff, %eax
movb %al, %dl
movq -0x30(%rbp), %rax
movq -0x28(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x28(%rbp)
movb %dl, (%rax,%rcx)
movq -0x40(%rbp), %rax
cmpq -0x38(%rbp), %rax
jae 0x389ef
movq -0x38(%rbp), %rcx
subq -0x40(%rbp), %rcx
movl $0xff, %eax
cmpq %rcx, %rax
jae 0x38960
movl $0xff, %eax
movq %rax, -0x60(%rbp)
jmp 0x3896c
movq -0x38(%rbp), %rax
subq -0x40(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rax
movl %eax, -0x4c(%rbp)
movq -0x28(%rbp), %rax
cmpq -0x20(%rbp), %rax
jb 0x38986
movl $0x9b918cc0, -0x4(%rbp) # imm = 0x9B918CC0
jmp 0x38a02
movl -0x4c(%rbp), %eax
movb %al, %dl
movq -0x30(%rbp), %rax
movq -0x28(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x28(%rbp)
movb %dl, (%rax,%rcx)
movq -0x20(%rbp), %rax
subq -0x28(%rbp), %rax
movl -0x4c(%rbp), %ecx
cmpq %rcx, %rax
jae 0x389ba
movl $0x9b918cc0, -0x4(%rbp) # imm = 0x9B918CC0
jmp 0x38a02
movq -0x30(%rbp), %rdi
addq -0x28(%rbp), %rdi
movq -0x48(%rbp), %rsi
addq -0x40(%rbp), %rsi
movl -0x4c(%rbp), %eax
movl %eax, %edx
callq 0xfb40
movl -0x4c(%rbp), %eax
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
movl -0x4c(%rbp), %eax
addq -0x40(%rbp), %rax
movq %rax, -0x40(%rbp)
jmp 0x38935
movq -0x28(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x50(%rax)
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x60, %rsp
popq %rbp
retq
nopl (%rax,%rax)