// File: DoubleString[P]RtConverter/src/Rtklib/stream.cpp
// Function: bamboo::decodetcppath(char const*, char*, char*, char*, char*, char*, char*)
void decodetcppath(const char *path, char *addr, char *port, char *user,
		char *passwd, char *mntpnt, char *str)
	{
		char buff[MAXSTRPATH], *p, *q;

		tracet(4, "decodetcpepath: path=%s\n", path);

		if (port) *port = '\0';
		if (user) *user = '\0';
		if (passwd) *passwd = '\0';
		if (mntpnt) *mntpnt = '\0';
		if (str) *str = '\0';

		strcpy(buff, path);

		if (!(p = strrchr(buff, '@'))) p = buff;

		if ((p = strchr(p, '/'))) {
			if ((q = strchr(p + 1, ':'))) {
				*q = '\0'; if (str) strcpy(str, q + 1);
			}
			*p = '\0'; if (mntpnt) strcpy(mntpnt, p + 1);
		}
		if ((p = strrchr(buff, '@'))) {
			*p++ = '\0';
			if ((q = strchr(buff, ':'))) {
				*q = '\0'; if (passwd) strcpy(passwd, q + 1);
			}
			if (user) strcpy(user, buff);
		}
		else p = buff;

		if ((q = strchr(p, ':'))) {
			*q = '\0'; if (port) strcpy(port, q + 1);
		}
		if (addr) strcpy(addr, p);
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x440, %rsp            # imm = 0x440
movq 0x10(%rbp), %rax
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movq %r9, -0x30(%rbp)
movq -0x8(%rbp), %rdx
movl $0x4, %edi
leaq 0x2ba61(%rip), %rsi     # 0xc8b28
movb $0x0, %al
callq 0x95890
cmpq $0x0, -0x18(%rbp)
je 0x9d0dc
movq -0x18(%rbp), %rax
movb $0x0, (%rax)
cmpq $0x0, -0x20(%rbp)
je 0x9d0ea
movq -0x20(%rbp), %rax
movb $0x0, (%rax)
cmpq $0x0, -0x28(%rbp)
je 0x9d0f8
movq -0x28(%rbp), %rax
movb $0x0, (%rax)
cmpq $0x0, -0x30(%rbp)
je 0x9d106
movq -0x30(%rbp), %rax
movb $0x0, (%rax)
cmpq $0x0, 0x10(%rbp)
je 0x9d114
movq 0x10(%rbp), %rax
movb $0x0, (%rax)
leaq -0x430(%rbp), %rdi
movq -0x8(%rbp), %rsi
callq 0x96f0
leaq -0x430(%rbp), %rdi
movl $0x40, %esi
callq 0x9820
movq %rax, -0x438(%rbp)
cmpq $0x0, %rax
jne 0x9d150
leaq -0x430(%rbp), %rax
movq %rax, -0x438(%rbp)
movq -0x438(%rbp), %rdi
movl $0x2f, %esi
callq 0x9280
movq %rax, -0x438(%rbp)
cmpq $0x0, %rax
je 0x9d1de
movq -0x438(%rbp), %rdi
addq $0x1, %rdi
movl $0x3a, %esi
callq 0x9280
movq %rax, -0x440(%rbp)
cmpq $0x0, %rax
je 0x9d1b7
movq -0x440(%rbp), %rax
movb $0x0, (%rax)
cmpq $0x0, 0x10(%rbp)
je 0x9d1b5
movq 0x10(%rbp), %rdi
movq -0x440(%rbp), %rsi
addq $0x1, %rsi
callq 0x96f0
jmp 0x9d1b7
movq -0x438(%rbp), %rax
movb $0x0, (%rax)
cmpq $0x0, -0x30(%rbp)
je 0x9d1dc
movq -0x30(%rbp), %rdi
movq -0x438(%rbp), %rsi
addq $0x1, %rsi
callq 0x96f0
jmp 0x9d1de
leaq -0x430(%rbp), %rdi
movl $0x40, %esi
callq 0x9820
movq %rax, -0x438(%rbp)
cmpq $0x0, %rax
je 0x9d272
movq -0x438(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x438(%rbp)
movb $0x0, (%rax)
leaq -0x430(%rbp), %rdi
movl $0x3a, %esi
callq 0x9280
movq %rax, -0x440(%rbp)
cmpq $0x0, %rax
je 0x9d259
movq -0x440(%rbp), %rax
movb $0x0, (%rax)
cmpq $0x0, -0x28(%rbp)
je 0x9d257
movq -0x28(%rbp), %rdi
movq -0x440(%rbp), %rsi
addq $0x1, %rsi
callq 0x96f0
jmp 0x9d259
cmpq $0x0, -0x20(%rbp)
je 0x9d270
movq -0x20(%rbp), %rdi
leaq -0x430(%rbp), %rsi
callq 0x96f0
jmp 0x9d280
leaq -0x430(%rbp), %rax
movq %rax, -0x438(%rbp)
movq -0x438(%rbp), %rdi
movl $0x3a, %esi
callq 0x9280
movq %rax, -0x440(%rbp)
cmpq $0x0, %rax
je 0x9d2c5
movq -0x440(%rbp), %rax
movb $0x0, (%rax)
cmpq $0x0, -0x18(%rbp)
je 0x9d2c3
movq -0x18(%rbp), %rdi
movq -0x440(%rbp), %rsi
addq $0x1, %rsi
callq 0x96f0
jmp 0x9d2c5
cmpq $0x0, -0x10(%rbp)
je 0x9d2dc
movq -0x10(%rbp), %rdi
movq -0x438(%rbp), %rsi
callq 0x96f0
addq $0x440, %rsp            # imm = 0x440
popq %rbp
retq
nopw %cs:(%rax,%rax)