// File: /workspace/github_cpp_makefile_star2_O1/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 -0xf8(%rbp), %rcx
movq %rcx, -0x10(%rcx)
xorl %eax, %eax
movq %rax, -0x8(%rcx)
movb $0x0, (%rcx)
movq %rax, -0x60(%rbp)
xorps %xmm0, %xmm0
movaps %xmm0, -0x70(%rbp)
leaq 0x16452(%rip), %rax     # 0x29630
cmpl $0x1d, (%rax)
jne 0x13597
movq %rdi, %rbx
callq 0x19e44
xorl %r13d, %r13d
leaq -0x80(%rbp), %r12
leaq -0x108(%rbp), %rdi
leaq -0x2c(%rbp), %rsi
callq 0x11d47
leal 0x1(%r13), %r15d
movq (%rbx), %rax
movq 0x8(%rbx), %rcx
subq %rax, %rcx
sarq $0x2, %rcx
cmpq %r15, %rcx
jb 0x13415
movl %r13d, %edx
movl -0x2c(%rbp), %ecx
cmpl %ecx, (%rax,%rdx,4)
jne 0x1347a
xorl %eax, %eax
cmpl $0x1, %ecx
leaq 0x90f4(%rip), %rsi      # 0x1c330
leaq 0x93fc(%rip), %rcx      # 0x1c63f
cmoveq %rcx, %rsi
sete %al
leaq -0x40(%rbp), %rcx
movq %rcx, -0x50(%rbp)
negq %rax
leaq (%rsi,%rax), %rdx
addq $0x4, %rdx
leaq -0x50(%rbp), %rdi
callq 0x14454
callq 0x15b90
leaq -0xa0(%rbp), %r14
movl $0x9, -0xd8(%rbp)
leaq -0xc0(%rbp), %rax
movq %rax, -0xd0(%rbp)
movq -0x50(%rbp), %rsi
movq -0x48(%rbp), %rdx
addq %rsi, %rdx
leaq -0xd0(%rbp), %rdi
callq 0xe4c0
movq %r14, -0xb0(%rbp)
movq -0x108(%rbp), %rsi
movq -0x100(%rbp), %rdx
addq %rsi, %rdx
leaq -0xb0(%rbp), %rdi
callq 0xe4c0
movq %r12, -0x90(%rbp)
movq 0x11cad(%rip), %rsi     # 0x24f80
movq 0x11cae(%rip), %rdx     # 0x24f88
addq %rsi, %rdx
leaq -0x90(%rbp), %rdi
callq 0xe4c0
leaq -0x70(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x14090
movq -0x90(%rbp), %rdi
cmpq %r12, %rdi
je 0x1330a
callq 0x32a0
movq -0xb0(%rbp), %rdi
cmpq %r14, %rdi
je 0x1331b
callq 0x32a0
movq -0xd0(%rbp), %rdi
leaq -0xc0(%rbp), %rax
cmpq %rax, %rdi
je 0x13333
callq 0x32a0
callq 0x15b9c
leaq 0x162f1(%rip), %rax     # 0x29630
movl (%rax), %r14d
cmpl $0x24, %r14d
jne 0x1334d
callq 0x19e44
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x1335f
callq 0x32a0
movl %r15d, %r13d
cmpl $0x24, %r14d
je 0x131f6
movq -0x70(%rbp), %rdi
movq -0x68(%rbp), %r12
cmpq %r12, %rdi
je 0x13399
leaq 0x8(%rdi), %rsi
leaq 0x28(%rdi), %rdx
leaq 0x48(%rdi), %r14
movq %r14, %rcx
callq 0x151b0
addq $0x20, %r14
movq %r14, %rdi
cmpq %r12, %r14
jne 0x13379
movq 0x8(%rbx), %rax
subq (%rbx), %rax
sarq $0x2, %rax
cmpq %r15, %rax
jbe 0x134f1
leaq -0x118(%rbp), %r14
movq %r14, -0x10(%r14)
leaq -0xd8(%rbp), %rsi
movq $0x12, (%rsi)
leaq -0x128(%rbp), %rdi
xorl %edx, %edx
callq 0x3490
leaq -0x128(%rbp), %rdi
movq %rax, (%rdi)
movq -0xd8(%rbp), %rcx
movq %rcx, 0x10(%rdi)
movups 0x91fb(%rip), %xmm0     # 0x1c5eb
movups %xmm0, (%rax)
movw $0x7373, 0x10(%rax)     # imm = 0x7373
movq %rcx, 0x8(%rdi)
movq (%rdi), %rax
movb $0x0, (%rax,%rcx)
callq 0xdcc8
movq -0x128(%rbp), %rdi
jmp 0x134e5
leaq -0x158(%rbp), %r14
movq %r14, -0x10(%r14)
leaq -0xd8(%rbp), %rsi
movq $0x12, (%rsi)
leaq -0x168(%rbp), %rdi
xorl %edx, %edx
callq 0x3490
leaq -0x168(%rbp), %rdi
movq %rax, (%rdi)
movq -0xd8(%rbp), %rcx
movq %rcx, 0x10(%rdi)
movups 0x9169(%rip), %xmm0     # 0x1c5c1
movups %xmm0, (%rax)
movw $0x6572, 0x10(%rax)     # imm = 0x6572
movq %rcx, 0x8(%rdi)
movq (%rdi), %rax
movb $0x0, (%rax,%rcx)
callq 0xdcc8
movq -0x168(%rbp), %rdi
jmp 0x134e5
leaq -0x138(%rbp), %r14
movq %r14, -0x10(%r14)
leaq -0xd8(%rbp), %rsi
movq $0x16, (%rsi)
leaq -0x148(%rbp), %rdi
xorl %edx, %edx
callq 0x3490
leaq -0x148(%rbp), %rdi
movq %rax, (%rdi)
movq -0xd8(%rbp), %rcx
movq %rcx, 0x10(%rdi)
movups 0x9117(%rip), %xmm0     # 0x1c5d4
movups %xmm0, (%rax)
movabsq $0x746e656d75677261, %rdx # imm = 0x746E656D75677261
movq %rdx, 0xe(%rax)
movq %rcx, 0x8(%rdi)
movq (%rdi), %rax
movb $0x0, (%rax,%rcx)
callq 0xdcc8
movq -0x148(%rbp), %rdi
cmpq %r14, %rdi
je 0x13564
callq 0x32a0
jmp 0x13564
leaq -0x50(%rbp), %rsi
movl $0x1e, (%rsi)
leaq -0xe8(%rbp), %rdi
movl $0x1, %edx
callq 0x13eac
movabsq $0x2600000022, %rax     # imm = 0x2600000022
leaq -0xd8(%rbp), %rsi
movq %rax, (%rsi)
leaq -0xe0(%rbp), %rdi
movl $0x2, %edx
callq 0x13eac
movq -0xe8(%rbp), %rdi
movq -0xe0(%rbp), %rsi
callq 0xd8a2
leaq -0x50(%rbp), %rsi
movl $0x1e, (%rsi)
leaq -0xd8(%rbp), %rdi
movl $0x1, %edx
callq 0x13eac
callq 0x19e44
leaq -0x70(%rbp), %rdi
callq 0x1405c
movq -0x108(%rbp), %rdi
leaq -0xf8(%rbp), %rax
cmpq %rax, %rdi
je 0x13585
callq 0x32a0
addq $0x148, %rsp            # imm = 0x148
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x8dda(%rip), %rdi      # 0x1c378
leaq 0x8de4(%rip), %rsi      # 0x1c389
leaq 0x8fe2(%rip), %rcx      # 0x1c58e
movl $0x27d, %edx            # imm = 0x27D
callq 0x31b0
jmp 0x13637
movq %rax, %rbx
movq -0x128(%rbp), %rdi
jmp 0x135e2
jmp 0x13637
jmp 0x13637
jmp 0x13637
movq %rax, %rbx
movq -0x148(%rbp), %rdi
jmp 0x135e2
jmp 0x13637
movq %rax, %rbx
movq -0x168(%rbp), %rdi
cmpq %r14, %rdi
jne 0x1364c
jmp 0x13651
jmp 0x13637
jmp 0x13637
jmp 0x13637
jmp 0x1363c
movq %rax, %rbx
movq -0xb0(%rbp), %rdi
cmpq %r14, %rdi
je 0x1360c
callq 0x32a0
jmp 0x1360c
jmp 0x13637
movq %rax, %rbx
movq -0xd0(%rbp), %rdi
leaq -0xc0(%rbp), %rax
cmpq %rax, %rdi
je 0x1363f
callq 0x32a0
jmp 0x1363f
movq %rax, %rbx
leaq -0xd8(%rbp), %rdi
callq 0x14014
jmp 0x1363f
movq %rax, %rbx
jmp 0x13651
movq %rax, %rbx
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x13651
callq 0x32a0
leaq -0x70(%rbp), %rdi
callq 0x1405c
movq -0x108(%rbp), %rdi
leaq -0xf8(%rbp), %rax
cmpq %rax, %rdi
je 0x13672
callq 0x32a0
movq %rbx, %rdi
callq 0x3480