// File: /workspace/github_c_makefile_star2_O0/derhass[P]glx_hook/glx_hook.c
// Function: parse_name
static void
parse_name(char *buf, size_t size, const char *name_template, unsigned int ctx_num)
{
	struct timespec ts_now;
	int in_escape=0;
	size_t pos=0;
	char c;

	buf[--size]=0; /* resverve space for final NUL terminator */
	while ( (pos < size) && (c=*(name_template++)) ) {
		if (in_escape) {
			switch(c) {
				case '%':
					buf[pos++]=c;
					break;
				case 'c':
					pos=buf_printf(buf,pos,size,"%u",ctx_num);
					break;
				case 'p':
					pos=buf_printf(buf,pos,size,"%u",(unsigned)getpid());
					break;
				case 't':
					clock_gettime(CLOCK_REALTIME, &ts_now);
					pos=buf_printf(buf,pos,size,"%09lld.%ld",
							(long long)ts_now.tv_sec,
							ts_now.tv_nsec);
					break;
				default:
					pos=buf_printf(buf,pos,size,"%%%c",c);
			}
			in_escape=0;
		} else {
			switch(c) {
				case '%':
					in_escape=1;
					break;
				default:
					buf[pos++]=c;
			}
		}
	}
	buf[pos]=0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movl %ecx, -0x1c(%rbp)
movl $0x0, -0x34(%rbp)
movq $0x0, -0x40(%rbp)
movq -0x8(%rbp), %rax
movq -0x10(%rbp), %rcx
movq %rcx, %rdx
addq $-0x1, %rdx
movq %rdx, -0x10(%rbp)
movb $0x0, -0x1(%rax,%rcx)
movq -0x40(%rbp), %rcx
xorl %eax, %eax
cmpq -0x10(%rbp), %rcx
movb %al, -0x42(%rbp)
jae 0x201d
movq -0x18(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x18(%rbp)
movb (%rax), %al
movb %al, -0x41(%rbp)
movsbl %al, %eax
cmpl $0x0, %eax
setne %al
movb %al, -0x42(%rbp)
movb -0x42(%rbp), %al
testb $0x1, %al
jne 0x2029
jmp 0x217c
cmpl $0x0, -0x34(%rbp)
je 0x214a
movsbl -0x41(%rbp), %eax
movl %eax, -0x48(%rbp)
subl $0x25, %eax
je 0x2066
jmp 0x2041
movl -0x48(%rbp), %eax
subl $0x63, %eax
je 0x2084
jmp 0x204b
movl -0x48(%rbp), %eax
subl $0x70, %eax
je 0x20ab
jmp 0x2055
movl -0x48(%rbp), %eax
subl $0x74, %eax
je 0x20eb
jmp 0x211e
movb -0x41(%rbp), %dl
movq -0x8(%rbp), %rax
movq -0x40(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x40(%rbp)
movb %dl, (%rax,%rcx)
jmp 0x2141
movq -0x8(%rbp), %rdi
movq -0x40(%rbp), %rsi
movq -0x10(%rbp), %rdx
movl -0x1c(%rbp), %r8d
leaq 0x1226(%rip), %rcx      # 0x32c1
movb $0x0, %al
callq 0x2190
movq %rax, -0x40(%rbp)
jmp 0x2141
movq -0x8(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x40(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x50(%rbp)
callq 0x1070
movq -0x60(%rbp), %rdi
movq -0x58(%rbp), %rsi
movq -0x50(%rbp), %rdx
movl %eax, %r8d
leaq 0x11e3(%rip), %rcx      # 0x32c1
movb $0x0, %al
callq 0x2190
movq %rax, -0x40(%rbp)
jmp 0x2141
xorl %edi, %edi
leaq -0x30(%rbp), %rsi
callq 0x1060
movq -0x8(%rbp), %rdi
movq -0x40(%rbp), %rsi
movq -0x10(%rbp), %rdx
movq -0x30(%rbp), %r8
movq -0x28(%rbp), %r9
leaq 0x11b3(%rip), %rcx      # 0x32c4
movb $0x0, %al
callq 0x2190
movq %rax, -0x40(%rbp)
jmp 0x2141
movq -0x8(%rbp), %rdi
movq -0x40(%rbp), %rsi
movq -0x10(%rbp), %rdx
movsbl -0x41(%rbp), %r8d
leaq 0x1199(%rip), %rcx      # 0x32cf
movb $0x0, %al
callq 0x2190
movq %rax, -0x40(%rbp)
movl $0x0, -0x34(%rbp)
jmp 0x2177
movb -0x41(%rbp), %al
subb $0x25, %al
jne 0x215c
jmp 0x2153
movl $0x1, -0x34(%rbp)
jmp 0x2175
movb -0x41(%rbp), %dl
movq -0x8(%rbp), %rax
movq -0x40(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x40(%rbp)
movb %dl, (%rax,%rcx)
jmp 0x2177
jmp 0x1fee
movq -0x8(%rbp), %rax
movq -0x40(%rbp), %rcx
movb $0x0, (%rax,%rcx)
addq $0x60, %rsp
popq %rbp
retq
nop