// File: /workspace/github_c_makefile_star2_O0/gplessis[P]dotdeb-redis/src/setproctitle.c
// Function: spt_init
void spt_init(int argc, char *argv[]) {
        char **envp = environ;
	char *base, *end, *nul, *tmp;
	int i, error;

	if (!(base = argv[0]))
		return;

	nul = &base[strlen(base)];
	end = nul + 1;

	for (i = 0; i < argc || (i >= argc && argv[i]); i++) {
		if (!argv[i] || argv[i] < end)
			continue;

		end = argv[i] + strlen(argv[i]) + 1;
	}

	for (i = 0; envp[i]; i++) {
		if (envp[i] < end)
			continue;

		end = envp[i] + strlen(envp[i]) + 1;
	}

	if (!(SPT.arg0 = strdup(argv[0])))
		goto syerr;

#if __GLIBC__
	if (!(tmp = strdup(program_invocation_name)))
		goto syerr;

	program_invocation_name = tmp;

	if (!(tmp = strdup(program_invocation_short_name)))
		goto syerr;

	program_invocation_short_name = tmp;
#elif __APPLE__
	if (!(tmp = strdup(getprogname())))
		goto syerr;

	setprogname(tmp);
#endif


	if ((error = spt_copyenv(envp)))
		goto error;

	if ((error = spt_copyargs(argc, argv)))
		goto error;

	SPT.nul  = nul;
	SPT.base = base;
	SPT.end  = end;

	return;
syerr:
	error = errno;
error:
	SPT.error = error;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movl %edi, -0x4(%rbp)
movq %rsi, -0x10(%rbp)
movq 0xd5fa2(%rip), %rax     # 0x172fa8
movq (%rax), %rax
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x20(%rbp)
cmpq $0x0, %rax
jne 0x9d023
jmp 0x9d22f
movq -0x20(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x20(%rbp), %rdi
callq 0x264f0
movq %rax, %rcx
movq -0x48(%rbp), %rax
addq %rcx, %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x28(%rbp)
movl $0x0, -0x3c(%rbp)
movl -0x3c(%rbp), %ecx
movb $0x1, %al
cmpl -0x4(%rbp), %ecx
movb %al, -0x49(%rbp)
jl 0x9d088
movl -0x3c(%rbp), %ecx
xorl %eax, %eax
cmpl -0x4(%rbp), %ecx
movb %al, -0x4a(%rbp)
jl 0x9d082
movq -0x10(%rbp), %rax
movslq -0x3c(%rbp), %rcx
cmpq $0x0, (%rax,%rcx,8)
setne %al
movb %al, -0x4a(%rbp)
movb -0x4a(%rbp), %al
movb %al, -0x49(%rbp)
movb -0x49(%rbp), %al
testb $0x1, %al
jne 0x9d091
jmp 0x9d0f5
movq -0x10(%rbp), %rax
movslq -0x3c(%rbp), %rcx
cmpq $0x0, (%rax,%rcx,8)
je 0x9d0b2
movq -0x10(%rbp), %rax
movslq -0x3c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
cmpq -0x28(%rbp), %rax
jae 0x9d0b4
jmp 0x9d0e7
movq -0x10(%rbp), %rax
movslq -0x3c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x58(%rbp)
movq -0x10(%rbp), %rax
movslq -0x3c(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x264f0
movq %rax, %rcx
movq -0x58(%rbp), %rax
addq %rcx, %rax
addq $0x1, %rax
movq %rax, -0x28(%rbp)
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x9d055
movl $0x0, -0x3c(%rbp)
movq -0x18(%rbp), %rax
movslq -0x3c(%rbp), %rcx
cmpq $0x0, (%rax,%rcx,8)
je 0x9d15d
movq -0x18(%rbp), %rax
movslq -0x3c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
cmpq -0x28(%rbp), %rax
jae 0x9d11f
jmp 0x9d152
movq -0x18(%rbp), %rax
movslq -0x3c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x60(%rbp)
movq -0x18(%rbp), %rax
movslq -0x3c(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x264f0
movq %rax, %rcx
movq -0x60(%rbp), %rax
addq %rcx, %rax
addq $0x1, %rax
movq %rax, -0x28(%rbp)
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x9d0fc
movq -0x10(%rbp), %rax
movq (%rax), %rdi
callq 0x268b0
movq %rax, 0xeff10(%rip)     # 0x18d080
cmpq $0x0, %rax
jne 0x9d17b
jmp 0x9d21c
movq 0xd5e5e(%rip), %rax     # 0x172fe0
movq (%rax), %rdi
callq 0x268b0
movq %rax, -0x38(%rbp)
cmpq $0x0, %rax
jne 0x9d199
jmp 0x9d21c
movq -0x38(%rbp), %rcx
movq 0xd5e3c(%rip), %rax     # 0x172fe0
movq %rcx, (%rax)
movq 0xd5e0a(%rip), %rax     # 0x172fb8
movq (%rax), %rdi
callq 0x268b0
movq %rax, -0x38(%rbp)
cmpq $0x0, %rax
jne 0x9d1c2
jmp 0x9d21c
movq -0x38(%rbp), %rcx
movq 0xd5deb(%rip), %rax     # 0x172fb8
movq %rcx, (%rax)
movq -0x18(%rbp), %rdi
callq 0x9d240
movl %eax, -0x40(%rbp)
cmpl $0x0, %eax
je 0x9d1e3
jmp 0x9d226
movl -0x4(%rbp), %edi
movq -0x10(%rbp), %rsi
callq 0x9d350
movl %eax, -0x40(%rbp)
cmpl $0x0, %eax
je 0x9d1f9
jmp 0x9d226
movq -0x30(%rbp), %rax
movq %rax, 0xefe94(%rip)     # 0x18d098
movq -0x20(%rbp), %rax
movq %rax, 0xefe79(%rip)     # 0x18d088
movq -0x28(%rbp), %rax
movq %rax, 0xefe76(%rip)     # 0x18d090
jmp 0x9d22f
callq 0x26880
movl (%rax), %eax
movl %eax, -0x40(%rbp)
movl -0x40(%rbp), %eax
movl %eax, 0xefe75(%rip)     # 0x18d0a4
addq $0x60, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)