// File: fondoger[P]C0-Compiler/src/error.cpp
// Function: expectMul(int, ...)
void expectMul(int num, ...) 
{
    va_list valist;
    va_start(valist, num);
    for (int i = 0; i < num; i++) {
        Symbol sym = (Symbol)va_arg(valist, int);
        if (g_sym == sym) {
            va_end(valist);
            return;
        }
    }
    va_end(valist);
    std::cout << "Error: expect ";
    va_start(valist, num);
    for (int i = 0; i < num; i++) {
        if (i != 0)
            std::cout << "|";
        std::cout << sym2str[va_arg(valist, int)];
    }
    va_end(valist);
    std::cout << ", but got " << sym2str[g_sym] << std::endl;
    std::exit(1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x110, %rsp            # imm = 0x110
testb %al, %al
je 0x18798
movaps %xmm0, -0xb0(%rbp)
movaps %xmm1, -0xa0(%rbp)
movaps %xmm2, -0x90(%rbp)
movaps %xmm3, -0x80(%rbp)
movaps %xmm4, -0x70(%rbp)
movaps %xmm5, -0x60(%rbp)
movaps %xmm6, -0x50(%rbp)
movaps %xmm7, -0x40(%rbp)
movq %r9, -0xb8(%rbp)
movq %r8, -0xc0(%rbp)
movq %rcx, -0xc8(%rbp)
movq %rdx, -0xd0(%rbp)
movq %rsi, -0xd8(%rbp)
movl %edi, -0x4(%rbp)
leaq -0x20(%rbp), %rax
leaq -0xe0(%rbp), %rcx
movq %rcx, 0x10(%rax)
leaq 0x10(%rbp), %rcx
movq %rcx, 0x8(%rax)
movl $0x30, 0x4(%rax)
movl $0x8, (%rax)
movl $0x0, -0x24(%rbp)
movl -0x24(%rbp), %eax
cmpl -0x4(%rbp), %eax
jge 0x18880
leaq -0x20(%rbp), %rax
movq %rax, -0xf0(%rbp)
movl -0x20(%rbp), %eax
movl %eax, -0xe4(%rbp)
cmpl $0x28, %eax
ja 0x18830
movq -0xf0(%rbp), %rcx
movl -0xe4(%rbp), %edx
movslq %edx, %rax
addq 0x10(%rcx), %rax
addl $0x8, %edx
movl %edx, (%rcx)
movq %rax, -0xf8(%rbp)
jmp 0x1884d
movq -0xf0(%rbp), %rcx
movq 0x8(%rcx), %rax
movq %rax, %rdx
addq $0x8, %rdx
movq %rdx, 0x8(%rcx)
movq %rax, -0xf8(%rbp)
movq -0xf8(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x28(%rbp)
leaq 0x32e50(%rip), %rax     # 0x4b6b0
movl (%rax), %eax
cmpl -0x28(%rbp), %eax
jne 0x18870
addq $0x110, %rsp            # imm = 0x110
popq %rbp
retq
jmp 0x18872
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
jmp 0x187e9
leaq -0x20(%rbp), %rax
movq 0x2c73d(%rip), %rdi     # 0x44fc8
leaq 0x1c9c5(%rip), %rsi     # 0x35257
callq 0x3300
leaq -0x20(%rbp), %rax
leaq -0xe0(%rbp), %rcx
movq %rcx, 0x10(%rax)
leaq 0x10(%rbp), %rcx
movq %rcx, 0x8(%rax)
movl $0x30, 0x4(%rax)
movl $0x8, (%rax)
movl $0x0, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
cmpl -0x4(%rbp), %eax
jge 0x18971
cmpl $0x0, -0x2c(%rbp)
je 0x188e7
movq 0x2c6ed(%rip), %rdi     # 0x44fc8
leaq 0x1c962(%rip), %rsi     # 0x35244
callq 0x3300
leaq -0x20(%rbp), %rax
movq %rax, -0x108(%rbp)
movl -0x20(%rbp), %eax
movl %eax, -0xfc(%rbp)
cmpl $0x28, %eax
ja 0x18922
movq -0x108(%rbp), %rcx
movl -0xfc(%rbp), %edx
movslq %edx, %rax
addq 0x10(%rcx), %rax
addl $0x8, %edx
movl %edx, (%rcx)
movq %rax, -0x110(%rbp)
jmp 0x1893f
movq -0x108(%rbp), %rcx
movq 0x8(%rcx), %rax
movq %rax, %rdx
addq $0x8, %rdx
movq %rdx, 0x8(%rcx)
movq %rax, -0x110(%rbp)
movq -0x110(%rbp), %rax
movslq (%rax), %rax
leaq 0x2cec0(%rip), %rsi     # 0x45810
shlq $0x5, %rax
addq %rax, %rsi
movq 0x2c66a(%rip), %rdi     # 0x44fc8
callq 0x32c0
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x188c2
leaq -0x20(%rbp), %rax
movq 0x2c64c(%rip), %rdi     # 0x44fc8
leaq 0x1c8e7(%rip), %rsi     # 0x3526a
callq 0x3300
movq %rax, %rdi
leaq 0x32d1e(%rip), %rax     # 0x4b6b0
movl (%rax), %eax
leaq 0x2ce75(%rip), %rsi     # 0x45810
shlq $0x5, %rax
addq %rax, %rsi
callq 0x32c0
movq %rax, %rdi
movq 0x2c5f7(%rip), %rsi     # 0x44fa8
callq 0x3360
movl $0x1, %edi
callq 0x33c0