// File: ctSkennerton[P]fxtract/util/uri_t.c
// Function: main
int
main(void)
{
    plan_tests(13/*tests*/ * 7/*parts*/);

    MEMREF x = NILREF;
    MEMREF s = strref("http");
    MEMREF a = strref("user:pass");
    MEMREF h = strref("sophos.com");
    MEMREF n = strref("443");
    MEMREF p = strref("home/depot");
    MEMREF q = strref("NaN:=0/0");
    MEMREF f = strref("top");

#   undef  TRY
#   define TRY(a1,a2,a3,a4,a5,a6,a7,a8) try(__LINE__,a1,a2,a3,a4,a5,a6,a7,a8)
    TRY("http://sophos.com:443/home/depot?NaN:=0/0#top"         ,s,x,h,n,p,q,f);
    TRY("//user:pass@sophos.com:443/home/depot?NaN:=0/0#top"    ,x,a,h,n,p,q,f);
    TRY("//sophos.com:443/home/depot?NaN:=0/0#top"              ,x,x,h,n,p,q,f);
    TRY(":443/home/depot?NaN:=0/0#top"                          ,x,x,x,n,p,q,f);
    TRY("/home/depot?NaN:=0/0#top"                              ,x,x,x,x,p,q,f);
    TRY("?NaN:=0/0#top"                                         ,x,x,x,x,x,q,f);
    TRY("/home/depot?NaN:=0/0"                                  ,x,x,x,x,p,q,x);
    TRY("/home/depot#top"                                       ,x,x,x,x,p,x,f);
    TRY("/home/depot"                                           ,x,x,x,x,p,x,x);
    TRY("sophos.com"                                            ,x,x,h,x,x,x,x);
    TRY("sophos.com:443"                                        ,x,x,h,n,x,x,x);
    TRY("sophos.com/home/depot"                                 ,x,x,h,x,p,x,x);
    TRY("sophos.com:443/home/depot"                             ,x,x,h,n,p,x,x);

    return exit_status();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0xd8, %rsp
movl $0x0, -0x1c(%rbp)
movl $0x5b, %edi
callq 0x7470
leaq -0x30(%rbp), %rdi
xorl %esi, %esi
movl $0x10, %edx
callq 0x30e0
leaq 0x4b6c(%rip), %rdi      # 0x8004
callq 0x3c20
movq %rax, -0x40(%rbp)
movq %rdx, -0x38(%rbp)
leaq 0x4b5d(%rip), %rdi      # 0x8009
callq 0x3c20
movq %rax, -0x50(%rbp)
movq %rdx, -0x48(%rbp)
leaq 0x4b53(%rip), %rdi      # 0x8013
callq 0x3c20
movq %rax, -0x60(%rbp)
movq %rdx, -0x58(%rbp)
leaq 0x4bdb(%rip), %rdi      # 0x80af
callq 0x3c20
movq %rax, -0x70(%rbp)
movq %rdx, -0x68(%rbp)
leaq 0x4bf0(%rip), %rdi      # 0x80d8
callq 0x3c20
movq %rax, -0x80(%rbp)
movq %rdx, -0x78(%rbp)
leaq 0x4b8f(%rip), %rdi      # 0x808b
callq 0x3c20
movq %rax, -0x90(%rbp)
movq %rdx, -0x88(%rbp)
leaq 0x4b32(%rip), %rdi      # 0x8048
callq 0x3c20
movq %rax, -0xa0(%rbp)
movq %rdx, -0x98(%rbp)
movq -0x40(%rbp), %rdx
movq -0x38(%rbp), %rcx
movq -0x30(%rbp), %r8
movq -0x28(%rbp), %r9
movl $0x2a, %edi
leaq 0x4ad9(%rip), %rsi      # 0x801e
leaq -0x60(%rbp), %r14
leaq -0x70(%rbp), %rbx
leaq -0x80(%rbp), %r11
leaq -0x90(%rbp), %r10
leaq -0xa0(%rbp), %rax
movq (%r14), %r15
movq %r15, (%rsp)
movq 0x8(%r14), %r14
movq %r14, 0x8(%rsp)
movq (%rbx), %r14
movq %r14, 0x10(%rsp)
movq 0x8(%rbx), %rbx
movq %rbx, 0x18(%rsp)
movq (%r11), %rbx
movq %rbx, 0x20(%rsp)
movq 0x8(%r11), %r11
movq %r11, 0x28(%rsp)
movq (%r10), %r11
movq %r11, 0x30(%rsp)
movq 0x8(%r10), %r10
movq %r10, 0x38(%rsp)
movq (%rax), %r10
movq %r10, 0x40(%rsp)
movq 0x8(%rax), %rax
movq %rax, 0x48(%rsp)
callq 0x3c70
movq -0x30(%rbp), %rdx
movq -0x28(%rbp), %rcx
movq -0x50(%rbp), %r8
movq -0x48(%rbp), %r9
movl $0x2b, %edi
leaq 0x4a78(%rip), %rsi      # 0x804c
leaq -0x60(%rbp), %r14
leaq -0x70(%rbp), %rbx
leaq -0x80(%rbp), %r11
leaq -0x90(%rbp), %r10
leaq -0xa0(%rbp), %rax
movq (%r14), %r15
movq %r15, (%rsp)
movq 0x8(%r14), %r14
movq %r14, 0x8(%rsp)
movq (%rbx), %r14
movq %r14, 0x10(%rsp)
movq 0x8(%rbx), %rbx
movq %rbx, 0x18(%rsp)
movq (%r11), %rbx
movq %rbx, 0x20(%rsp)
movq 0x8(%r11), %r11
movq %r11, 0x28(%rsp)
movq (%r10), %r11
movq %r11, 0x30(%rsp)
movq 0x8(%r10), %r10
movq %r10, 0x38(%rsp)
movq (%rax), %r10
movq %r10, 0x40(%rsp)
movq 0x8(%rax), %rax
movq %rax, 0x48(%rsp)
callq 0x3c70
movq -0x30(%rbp), %rdx
movq -0x28(%rbp), %rcx
movq -0x30(%rbp), %r8
movq -0x28(%rbp), %r9
movl $0x2c, %edi
leaq 0x49c0(%rip), %rsi      # 0x8023
leaq -0x60(%rbp), %r14
leaq -0x70(%rbp), %rbx
leaq -0x80(%rbp), %r11
leaq -0x90(%rbp), %r10
leaq -0xa0(%rbp), %rax
movq (%r14), %r15
movq %r15, (%rsp)
movq 0x8(%r14), %r14
movq %r14, 0x8(%rsp)
movq (%rbx), %r14
movq %r14, 0x10(%rsp)
movq 0x8(%rbx), %rbx
movq %rbx, 0x18(%rsp)
movq (%r11), %rbx
movq %rbx, 0x20(%rsp)
movq 0x8(%r11), %r11
movq %r11, 0x28(%rsp)
movq (%r10), %r11
movq %r11, 0x30(%rsp)
movq 0x8(%r10), %r10
movq %r10, 0x38(%rsp)
movq (%rax), %r10
movq %r10, 0x40(%rsp)
movq 0x8(%rax), %rax
movq %rax, 0x48(%rsp)
callq 0x3c70
movq -0x30(%rbp), %rdx
movq -0x28(%rbp), %rcx
movq -0x30(%rbp), %r8
movq -0x28(%rbp), %r9
movl $0x2d, %edi
leaq 0x493d(%rip), %rsi      # 0x802f
leaq -0x30(%rbp), %r14
leaq -0x70(%rbp), %rbx
leaq -0x80(%rbp), %r11
leaq -0x90(%rbp), %r10
leaq -0xa0(%rbp), %rax
movq (%r14), %r15
movq %r15, (%rsp)
movq 0x8(%r14), %r14
movq %r14, 0x8(%rsp)
movq (%rbx), %r14
movq %r14, 0x10(%rsp)
movq 0x8(%rbx), %rbx
movq %rbx, 0x18(%rsp)
movq (%r11), %rbx
movq %rbx, 0x20(%rsp)
movq 0x8(%r11), %r11
movq %r11, 0x28(%rsp)
movq (%r10), %r11
movq %r11, 0x30(%rsp)
movq 0x8(%r10), %r10
movq %r10, 0x38(%rsp)
movq (%rax), %r10
movq %r10, 0x40(%rsp)
movq 0x8(%rax), %rax
movq %rax, 0x48(%rsp)
callq 0x3c70
movq -0x30(%rbp), %rdx
movq -0x28(%rbp), %rcx
movq -0x30(%rbp), %r8
movq -0x28(%rbp), %r9
movl $0x2e, %edi
leaq 0x48b2(%rip), %rsi      # 0x8033
leaq -0x30(%rbp), %rbx
leaq -0x80(%rbp), %r11
leaq -0x90(%rbp), %r10
leaq -0xa0(%rbp), %rax
movq (%rbx), %r14
movq %r14, (%rsp)
movq 0x8(%rbx), %r14
movq %r14, 0x8(%rsp)
movq (%rbx), %r14
movq %r14, 0x10(%rsp)
movq 0x8(%rbx), %rbx
movq %rbx, 0x18(%rsp)
movq (%r11), %rbx
movq %rbx, 0x20(%rsp)
movq 0x8(%r11), %r11
movq %r11, 0x28(%rsp)
movq (%r10), %r11
movq %r11, 0x30(%rsp)
movq 0x8(%r10), %r10
movq %r10, 0x38(%rsp)
movq (%rax), %r10
movq %r10, 0x40(%rsp)
movq 0x8(%rax), %rax
movq %rax, 0x48(%rsp)
callq 0x3c70
movq -0x30(%rbp), %rdx
movq -0x28(%rbp), %rcx
movq -0x30(%rbp), %r8
movq -0x28(%rbp), %r9
movl $0x2f, %edi
leaq 0x4832(%rip), %rsi      # 0x803e
leaq -0x30(%rbp), %r11
leaq -0x90(%rbp), %r10
leaq -0xa0(%rbp), %rax
movq (%r11), %rbx
movq %rbx, (%rsp)
movq 0x8(%r11), %rbx
movq %rbx, 0x8(%rsp)
movq (%r11), %rbx
movq %rbx, 0x10(%rsp)
movq 0x8(%r11), %rbx
movq %rbx, 0x18(%rsp)
movq (%r11), %rbx
movq %rbx, 0x20(%rsp)
movq 0x8(%r11), %r11
movq %r11, 0x28(%rsp)
movq (%r10), %r11
movq %r11, 0x30(%rsp)
movq 0x8(%r10), %r10
movq %r10, 0x38(%rsp)
movq (%rax), %r10
movq %r10, 0x40(%rsp)
movq 0x8(%rax), %rax
movq %rax, 0x48(%rsp)
callq 0x3c70
movq -0x30(%rbp), %rdx
movq -0x28(%rbp), %rcx
movq -0x30(%rbp), %r8
movq -0x28(%rbp), %r9
movl $0x30, %edi
leaq 0x47ec(%rip), %rsi      # 0x807f
leaq -0x30(%rbp), %rax
leaq -0x80(%rbp), %r11
leaq -0x90(%rbp), %r10
movq (%rax), %rbx
movq %rbx, (%rsp)
movq 0x8(%rax), %rbx
movq %rbx, 0x8(%rsp)
movq (%rax), %rbx
movq %rbx, 0x10(%rsp)
movq 0x8(%rax), %rbx
movq %rbx, 0x18(%rsp)
movq (%r11), %rbx
movq %rbx, 0x20(%rsp)
movq 0x8(%r11), %r11
movq %r11, 0x28(%rsp)
movq (%r10), %r11
movq %r11, 0x30(%rsp)
movq 0x8(%r10), %r10
movq %r10, 0x38(%rsp)
movq (%rax), %r10
movq %r10, 0x40(%rsp)
movq 0x8(%rax), %rax
movq %rax, 0x48(%rsp)
callq 0x3c70
movq -0x30(%rbp), %rdx
movq -0x28(%rbp), %rcx
movq -0x30(%rbp), %r8
movq -0x28(%rbp), %r9
movl $0x31, %edi
leaq 0x477d(%rip), %rsi      # 0x8094
leaq -0x30(%rbp), %r10
leaq -0x80(%rbp), %r11
leaq -0xa0(%rbp), %rax
movq (%r10), %rbx
movq %rbx, (%rsp)
movq 0x8(%r10), %rbx
movq %rbx, 0x8(%rsp)
movq (%r10), %rbx
movq %rbx, 0x10(%rsp)
movq 0x8(%r10), %rbx
movq %rbx, 0x18(%rsp)
movq (%r11), %rbx
movq %rbx, 0x20(%rsp)
movq 0x8(%r11), %r11
movq %r11, 0x28(%rsp)
movq (%r10), %r11
movq %r11, 0x30(%rsp)
movq 0x8(%r10), %r10
movq %r10, 0x38(%rsp)
movq (%rax), %r10
movq %r10, 0x40(%rsp)
movq 0x8(%rax), %rax
movq %rax, 0x48(%rsp)
callq 0x3c70
movq -0x30(%rbp), %rdx
movq -0x28(%rbp), %rcx
movq -0x30(%rbp), %r8
movq -0x28(%rbp), %r9
movl $0x32, %edi
leaq 0x473c(%rip), %rsi      # 0x80d7
leaq -0x30(%rbp), %rax
leaq -0x80(%rbp), %r10
movq (%rax), %r11
movq %r11, (%rsp)
movq 0x8(%rax), %r11
movq %r11, 0x8(%rsp)
movq (%rax), %r11
movq %r11, 0x10(%rsp)
movq 0x8(%rax), %r11
movq %r11, 0x18(%rsp)
movq (%r10), %r11
movq %r11, 0x20(%rsp)
movq 0x8(%r10), %r10
movq %r10, 0x28(%rsp)
movq (%rax), %r10
movq %r10, 0x30(%rsp)
movq 0x8(%rax), %r10
movq %r10, 0x38(%rsp)
movq (%rax), %r10
movq %r10, 0x40(%rsp)
movq 0x8(%rax), %rax
movq %rax, 0x48(%rsp)
callq 0x3c70
movq -0x30(%rbp), %rdx
movq -0x28(%rbp), %rcx
movq -0x30(%rbp), %r8
movq -0x28(%rbp), %r9
movl $0x33, %edi
leaq 0x45fb(%rip), %rsi      # 0x8013
leaq -0x60(%rbp), %r10
leaq -0x30(%rbp), %rax
movq (%r10), %r11
movq %r11, (%rsp)
movq 0x8(%r10), %r10
movq %r10, 0x8(%rsp)
movq (%rax), %r10
movq %r10, 0x10(%rsp)
movq 0x8(%rax), %r10
movq %r10, 0x18(%rsp)
movq (%rax), %r10
movq %r10, 0x20(%rsp)
movq 0x8(%rax), %r10
movq %r10, 0x28(%rsp)
movq (%rax), %r10
movq %r10, 0x30(%rsp)
movq 0x8(%rax), %r10
movq %r10, 0x38(%rsp)
movq (%rax), %r10
movq %r10, 0x40(%rsp)
movq 0x8(%rax), %rax
movq %rax, 0x48(%rsp)
callq 0x3c70
movq -0x30(%rbp), %rdx
movq -0x28(%rbp), %rcx
movq -0x30(%rbp), %r8
movq -0x28(%rbp), %r9
movl $0x34, %edi
leaq 0x460f(%rip), %rsi      # 0x80a4
leaq -0x60(%rbp), %r11
leaq -0x70(%rbp), %r10
leaq -0x30(%rbp), %rax
movq (%r11), %rbx
movq %rbx, (%rsp)
movq 0x8(%r11), %r11
movq %r11, 0x8(%rsp)
movq (%r10), %r11
movq %r11, 0x10(%rsp)
movq 0x8(%r10), %r10
movq %r10, 0x18(%rsp)
movq (%rax), %r10
movq %r10, 0x20(%rsp)
movq 0x8(%rax), %r10
movq %r10, 0x28(%rsp)
movq (%rax), %r10
movq %r10, 0x30(%rsp)
movq 0x8(%rax), %r10
movq %r10, 0x38(%rsp)
movq (%rax), %r10
movq %r10, 0x40(%rsp)
movq 0x8(%rax), %rax
movq %rax, 0x48(%rsp)
callq 0x3c70
movq -0x30(%rbp), %rdx
movq -0x28(%rbp), %rcx
movq -0x30(%rbp), %r8
movq -0x28(%rbp), %r9
movl $0x35, %edi
leaq 0x459d(%rip), %rsi      # 0x80b3
leaq -0x60(%rbp), %r11
leaq -0x30(%rbp), %rax
leaq -0x80(%rbp), %r10
movq (%r11), %rbx
movq %rbx, (%rsp)
movq 0x8(%r11), %r11
movq %r11, 0x8(%rsp)
movq (%rax), %r11
movq %r11, 0x10(%rsp)
movq 0x8(%rax), %r11
movq %r11, 0x18(%rsp)
movq (%r10), %r11
movq %r11, 0x20(%rsp)
movq 0x8(%r10), %r10
movq %r10, 0x28(%rsp)
movq (%rax), %r10
movq %r10, 0x30(%rsp)
movq 0x8(%rax), %r10
movq %r10, 0x38(%rsp)
movq (%rax), %r10
movq %r10, 0x40(%rsp)
movq 0x8(%rax), %rax
movq %rax, 0x48(%rsp)
callq 0x3c70
movq -0x30(%rbp), %rdx
movq -0x28(%rbp), %rcx
movq -0x30(%rbp), %r8
movq -0x28(%rbp), %r9
movl $0x36, %edi
leaq 0x4532(%rip), %rsi      # 0x80c9
leaq -0x60(%rbp), %rbx
leaq -0x70(%rbp), %r11
leaq -0x80(%rbp), %r10
leaq -0x30(%rbp), %rax
movq (%rbx), %r14
movq %r14, (%rsp)
movq 0x8(%rbx), %rbx
movq %rbx, 0x8(%rsp)
movq (%r11), %rbx
movq %rbx, 0x10(%rsp)
movq 0x8(%r11), %r11
movq %r11, 0x18(%rsp)
movq (%r10), %r11
movq %r11, 0x20(%rsp)
movq 0x8(%r10), %r10
movq %r10, 0x28(%rsp)
movq (%rax), %r10
movq %r10, 0x30(%rsp)
movq 0x8(%rax), %r10
movq %r10, 0x38(%rsp)
movq (%rax), %r10
movq %r10, 0x40(%rsp)
movq 0x8(%rax), %rax
movq %rax, 0x48(%rsp)
callq 0x3c70
callq 0x77c0
addq $0xd8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
nopw %cs:(%rax,%rax)