// File: zgimbutas[P]mwrap/src/mwrap-ast.cc
// Function: id_string[abi:cxx11](Var*)
string id_string(Var* v)
{
    if (!v)
        return "";

    string name;
    if (v->devicespec == 'c')
        name += "c ";
    else if (v->devicespec == 'g')
        name += "g ";

    if (v->iospec == 'i')
        name += "i ";
    else if (v->iospec == 'o')
        name += "o ";
    else
        name += "io ";
    name += promote_int(v->basetype);
    name += id_string(v->qual);
    if (v->tinfo == VT_const) {
        name += " ";
        name += v->name;
    }
    if (v->next) {
        name += ", ";
        name += id_string(v->next);
    }
    return name;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movq %rdi, -0x78(%rbp)
movq %rdi, %rax
movq %rax, -0x70(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x8960
leaq -0x11(%rbp), %rdi
movq %rdi, -0x80(%rbp)
callq 0x3420
movq -0x78(%rbp), %rdi
movq -0x80(%rbp), %rdx
leaq 0x12832(%rip), %rsi     # 0x1b163
callq 0x9150
jmp 0x8938
leaq -0x11(%rbp), %rdi
callq 0x32a0
jmp 0x8b29
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x11(%rbp), %rdi
callq 0x32a0
jmp 0x8b36
movq -0x78(%rbp), %rdi
movb $0x0, -0x25(%rbp)
callq 0x3380
movq -0x10(%rbp), %rax
movsbl 0x9(%rax), %eax
cmpl $0x63, %eax
jne 0x899f
movq -0x78(%rbp), %rdi
leaq 0xc207(%rip), %rsi      # 0x14b8c
callq 0x3210
jmp 0x898c
jmp 0x89c2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x8b1e
movq -0x10(%rbp), %rax
movsbl 0x9(%rax), %eax
cmpl $0x67, %eax
jne 0x89c0
movq -0x78(%rbp), %rdi
leaq 0xc1d8(%rip), %rsi      # 0x14b8f
callq 0x3210
jmp 0x89be
jmp 0x89c0
jmp 0x89c2
movq -0x10(%rbp), %rax
movsbl 0x8(%rax), %eax
cmpl $0x69, %eax
jne 0x89e3
movq -0x78(%rbp), %rdi
leaq 0xc1b8(%rip), %rsi      # 0x14b92
callq 0x3210
jmp 0x89e1
jmp 0x8a1a
movq -0x10(%rbp), %rax
movsbl 0x8(%rax), %eax
cmpl $0x6f, %eax
jne 0x8a04
movq -0x78(%rbp), %rdi
leaq 0xc19b(%rip), %rsi      # 0x14b96
callq 0x3210
jmp 0x8a02
jmp 0x8a18
movq -0x78(%rbp), %rdi
leaq 0xc186(%rip), %rsi      # 0x14b95
callq 0x3210
jmp 0x8a16
jmp 0x8a18
jmp 0x8a1a
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x78e0
movq -0x78(%rbp), %rdi
movq %rax, %rsi
callq 0x3210
jmp 0x8a35
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rsi
leaq -0x48(%rbp), %rdi
callq 0x8760
jmp 0x8a48
movq -0x78(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x3340
jmp 0x8a57
leaq -0x48(%rbp), %rdi
callq 0x34c8
movq -0x10(%rbp), %rax
cmpl $0x13, 0x20(%rax)
jne 0x8aa8
movq -0x78(%rbp), %rdi
leaq 0x13e0d(%rip), %rsi     # 0x1c882
callq 0x3210
jmp 0x8a7c
movq -0x78(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rsi
callq 0x3210
jmp 0x8a8f
jmp 0x8aa8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x34c8
jmp 0x8b1e
movq -0x10(%rbp), %rax
cmpq $0x0, 0x30(%rax)
je 0x8b09
movq -0x78(%rbp), %rdi
leaq 0x14004(%rip), %rsi     # 0x1cac2
callq 0x3210
jmp 0x8ac5
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rsi
leaq -0x68(%rbp), %rdi
callq 0x88f0
jmp 0x8ad8
movq -0x78(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x3340
jmp 0x8ae7
leaq -0x68(%rbp), %rdi
callq 0x34c8
jmp 0x8b09
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x34c8
jmp 0x8b1e
movb $0x1, -0x25(%rbp)
testb $0x1, -0x25(%rbp)
jne 0x8b1c
movq -0x78(%rbp), %rdi
callq 0x34c8
jmp 0x8b29
movq -0x78(%rbp), %rdi
callq 0x34c8
jmp 0x8b36
movq -0x70(%rbp), %rax
addq $0x80, %rsp
popq %rbp
retq
movq -0x20(%rbp), %rdi
callq 0x3410
nop