// File: /workspace/github_cpp_makefile_star2_O2/fondoger[P]C0-Compiler/src/grammar.cpp
// Function: pArgumentsList(std::vector<DataType, std::allocator<DataType>> const&)
static void pArgumentsList(const std::vector<DataType> &params)
{
    std::string temp_var;
    DataType temp_dtype;
    unsigned int args_count = 0;
    std::vector<FourTuple> to_be_pushed;

    assert(g_sym == LPARENT);
    readSymbol();
    while (true) {
        pExpression(temp_var, temp_dtype);
        if (++args_count > params.size()) {
            error(ERR_MORE_ARGUMENTS);
            return;
        }
        // check argument's data type
        if (params[args_count - 1] != temp_dtype) {
            error(ERR_WRONG_TYPE_OF_ARGUMENT);
            return;
        }
        std::string type = (temp_dtype == DT_INT ? "int" : "char");
        startCachingMidCode();
        to_be_pushed.push_back(FourTuple({PUSH, type, temp_var, NONE}));
        pauseCachingMidCode();
        if (g_sym != COMMA) {
            break;
        }
        readSymbol();
    }
    for (const auto &ft: to_be_pushed) {
        genMidCode(ft.op, ft.a, ft.b, ft.res);
    }
    if (args_count < params.size()) {
        error(ERR_LESS_ARGUMENTS);
        return;
    }
    test3(Symset({RPARENT}));
    readSymbol();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x148, %rsp            # imm = 0x148
leaq -0x90(%rbp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
xorps %xmm0, %xmm0
andq $0x0, -0x40(%rbp)
movaps %xmm0, -0x50(%rbp)
leaq 0x15fff(%rip), %rax     # 0x24610
cmpl $0x1d, (%rax)
jne 0xe86b
movq %rdi, %rbx
callq 0x13808
xorl %r13d, %r13d
leaq -0x80(%rbp), %r14
leaq -0x128(%rbp), %r12
leaq -0xa0(%rbp), %rdi
leaq -0x2c(%rbp), %rsi
callq 0xd7bf
leal 0x1(%r13), %r15d
movq (%rbx), %rax
movq 0x8(%rbx), %rcx
subq %rax, %rcx
sarq $0x2, %rcx
cmpq %r15, %rcx
jb 0xe708
movl %r13d, %ecx
movl (%rax,%rcx,4), %eax
cmpl -0x2c(%rbp), %eax
jne 0xe73a
cmpl $0x1, %eax
leaq 0x7a71(%rip), %rsi      # 0x160e5
leaq 0x7fda(%rip), %rax      # 0x16655
cmoveq %rax, %rsi
movq %r14, %rdi
movq %r12, %rdx
callq 0x30f0
callq 0x1059a
movl $0x9, -0x128(%rbp)
leaq -0x120(%rbp), %rdi
movq %r14, %rsi
callq 0x3350
leaq -0x100(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x3350
leaq -0xe0(%rbp), %rdi
leaq 0x11897(%rip), %rsi     # 0x1ff60
callq 0x3350
leaq -0x50(%rbp), %rdi
movq %r12, %rsi
callq 0xf114
movq %r12, %rdi
callq 0xf0ba
callq 0x105a6
leaq 0x15f22(%rip), %rax     # 0x24610
cmpl $0x24, (%rax)
jne 0xe769
callq 0x13808
movq %r14, %rdi
callq 0x3498
movl %r15d, %r13d
jmp 0xe630
leaq 0x7ec8(%rip), %rsi      # 0x165d7
leaq -0x168(%rbp), %rdi
leaq -0x128(%rbp), %rdx
callq 0x30f0
leaq -0x168(%rbp), %rdi
callq 0xa247
leaq -0x168(%rbp), %rdi
jmp 0xe7d9
leaq 0x7ea9(%rip), %rsi      # 0x165ea
leaq -0x148(%rbp), %rdi
leaq -0x128(%rbp), %rdx
callq 0x30f0
leaq -0x148(%rbp), %rdi
callq 0xa247
leaq -0x148(%rbp), %rdi
jmp 0xe7d9
leaq -0x80(%rbp), %rdi
callq 0x3498
movq -0x50(%rbp), %rdi
movq -0x48(%rbp), %r12
cmpq %r12, %rdi
je 0xe79c
leaq 0x8(%rdi), %rsi
leaq 0x28(%rdi), %rdx
leaq 0x48(%rdi), %r14
movq %r14, %rcx
callq 0x100d0
addq $0x20, %r14
movq %r14, %rdi
jmp 0xe77a
movq 0x8(%rbx), %rax
subq (%rbx), %rax
sarq $0x2, %rax
cmpq %r15, %rax
jbe 0xe805
leaq 0x7e4e(%rip), %rsi      # 0x16601
leaq -0xc0(%rbp), %rdi
leaq -0x128(%rbp), %rdx
callq 0x30f0
leaq -0xc0(%rbp), %rdi
callq 0xa247
leaq -0xc0(%rbp), %rdi
callq 0x3498
leaq -0x50(%rbp), %rdi
callq 0xf0e8
leaq -0xa0(%rbp), %rdi
callq 0x3498
addq $0x148, %rsp            # imm = 0x148
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq -0x80(%rbp), %rsi
movl $0x1e, (%rsi)
leaq -0x60(%rbp), %rdi
pushq $0x1
popq %rdx
callq 0xef20
movabsq $0x2600000022, %rax     # imm = 0x2600000022
leaq -0x128(%rbp), %rsi
movq %rax, (%rsi)
leaq -0x58(%rbp), %rdi
pushq $0x2
popq %rdx
callq 0xef20
movq -0x60(%rbp), %rdi
movq -0x58(%rbp), %rsi
callq 0x9f5f
leaq -0x80(%rbp), %rsi
movl $0x1e, (%rsi)
leaq -0x128(%rbp), %rdi
pushq $0x1
popq %rdx
callq 0xef20
callq 0x13808
jmp 0xe7de
leaq 0x7b61(%rip), %rdi      # 0x163d3
leaq 0x7b6b(%rip), %rsi      # 0x163e4
leaq 0x7d24(%rip), %rcx      # 0x165a4
movl $0x27d, %edx            # imm = 0x27D
callq 0x31c0
jmp 0xe8f5
movq %rax, %rbx
leaq -0xc0(%rbp), %rdi
jmp 0xe901
jmp 0xe8f5
jmp 0xe8f5
jmp 0xe8f5
movq %rax, %rbx
leaq -0x148(%rbp), %rdi
jmp 0xe901
jmp 0xe8f5
movq %rax, %rbx
leaq -0x168(%rbp), %rdi
jmp 0xe901
jmp 0xe8f5
jmp 0xe8f5
jmp 0xe8f5
jmp 0xe8f5
movq %rax, %rbx
jmp 0xe8e7
movq %rax, %rbx
leaq -0x128(%rbp), %rdi
callq 0xf0ba
jmp 0xe8fd
jmp 0xe8fa
movq %rax, %rbx
leaq -0x100(%rbp), %rdi
callq 0x3498
leaq -0x120(%rbp), %rdi
callq 0x3498
jmp 0xe8fd
movq %rax, %rbx
jmp 0xe906
movq %rax, %rbx
leaq -0x80(%rbp), %rdi
callq 0x3498
leaq -0x50(%rbp), %rdi
callq 0xf0e8
leaq -0xa0(%rbp), %rdi
callq 0x3498
movq %rbx, %rdi
callq 0x3430