// File: /workspace/github_c_makefile_star2_O0/MartinNovotny25[P]VUT-FIT-IFJ2020/semantics.c
// Function: insertBuiltInFunction
void insertBuiltInFunction() {
    functionData inputs;
    inputs.numOfParams = 0;
    inputs.numOfReturns = 2;
    inputs.returns[0] = t_STRING_ID;
    inputs.returns[1] = t_INT_ID;
    
    functionData inputi;
    inputi.numOfParams = 0;
    inputi.numOfReturns = 2;
    inputi.returns[0] = t_INT_ID;
    inputi.returns[1] = t_INT_ID;
    
    functionData inputf;
    inputf.numOfParams = 0;
    inputf.numOfReturns = 2;
    inputf.returns[0] = t_FLOAT64;
    inputf.returns[1] = t_INT_ID;
    
    functionData int2float;
    int2float.numOfParams = 1;
    int2float.numOfReturns = 1;
    int2float.returns[0] = t_FLOAT64;
    int2float.paramsType[0] = t_INT_ID;
    int2float.params[0] = "i";
    
    functionData float2int;
    float2int.numOfParams = 1;
    float2int.numOfReturns = 1;
    float2int.returns[0] = t_INT_ID;
    float2int.paramsType[0] = t_FLOAT64;
    float2int.params[0] = "f";
    
    functionData len;
    len.numOfParams = 1;
    len.numOfReturns = 1;
    len.returns[0] = t_INT_ID;
    len.paramsType[0] = t_STRING_ID;
    len.params[0] = "s";
    
    functionData substr;
    substr.numOfParams = 3;
    substr.numOfReturns =2;
    substr.returns[0] = t_STRING_ID;
    substr.returns[1] = t_INT_ID;
    substr.paramsType[0] = t_STRING_ID;
    substr.paramsType[1] = t_INT_ID;
    substr.paramsType[2] = t_INT_ID;
    substr.params[0] = "s";
    substr.params[1] = "i";
    substr.params[2] = "n";
    
    functionData ord;
    ord.numOfParams = 2;
    ord.numOfReturns =2;
    ord.returns[0] = t_INT_ID;
    ord.returns[1] = t_INT_ID;
    ord.paramsType[0] = t_STRING_ID;
    ord.paramsType[1] = t_INT_ID;
    ord.params[0] = "s";
    ord.params[0] = "i";
    
    functionData chr;
    chr.numOfParams = 1;
    chr.numOfReturns = 2;
    chr.returns[0] = t_STRING_ID;
    chr.returns[1] = t_INT_ID;
    chr.paramsType[0] = t_INT_ID;
    chr.params[0] = "i";
    
    functionData print;
    print.numOfParams = MAXPARAMS;
    print.numOfReturns = 0;
    
    BSTInsertGlobal(&functions, "inputs", inputs);
    BSTInsertGlobal(&functions, "inputi", inputi);
    BSTInsertGlobal(&functions, "inputf", inputf);
    BSTInsertGlobal(&functions, "int2float", int2float);
    BSTInsertGlobal(&functions, "float2int", float2int);
    BSTInsertGlobal(&functions, "len", len);
    BSTInsertGlobal(&functions, "substr", substr);
    BSTInsertGlobal(&functions, "ord", ord);
    BSTInsertGlobal(&functions, "chr", chr);
    BSTInsertGlobal(&functions, "print", print);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xb060, %rsp           # imm = 0xB060
movl $0x0, -0x1008(%rbp)
movl $0x2, -0x1004(%rbp)
movl $0x14, -0x400(%rbp)
movl $0x18, -0x3fc(%rbp)
movl $0x0, -0x2010(%rbp)
movl $0x2, -0x200c(%rbp)
movl $0x18, -0x1408(%rbp)
movl $0x18, -0x1404(%rbp)
movl $0x0, -0x3018(%rbp)
movl $0x2, -0x3014(%rbp)
movl $0x17, -0x2410(%rbp)
movl $0x18, -0x240c(%rbp)
movl $0x1, -0x4020(%rbp)
movl $0x1, -0x401c(%rbp)
movl $0x17, -0x3418(%rbp)
movl $0x18, -0x3818(%rbp)
leaq 0x1c40(%rip), %rax      # 0xd5f2
movq %rax, -0x4018(%rbp)
movl $0x1, -0x5028(%rbp)
movl $0x1, -0x5024(%rbp)
movl $0x18, -0x4420(%rbp)
movl $0x17, -0x4820(%rbp)
leaq 0x18ce(%rip), %rax      # 0xd2b6
movq %rax, -0x5020(%rbp)
movl $0x1, -0x6030(%rbp)
movl $0x1, -0x602c(%rbp)
movl $0x18, -0x5428(%rbp)
movl $0x14, -0x5828(%rbp)
leaq 0x1bcd(%rip), %rax      # 0xd5eb
movq %rax, -0x6028(%rbp)
movl $0x3, -0x7038(%rbp)
movl $0x2, -0x7034(%rbp)
movl $0x14, -0x6430(%rbp)
movl $0x18, -0x642c(%rbp)
movl $0x14, -0x6830(%rbp)
movl $0x18, -0x682c(%rbp)
movl $0x18, -0x6828(%rbp)
leaq 0x1b79(%rip), %rax      # 0xd5eb
movq %rax, -0x7030(%rbp)
leaq 0x1b72(%rip), %rax      # 0xd5f2
movq %rax, -0x7028(%rbp)
leaq 0x1b83(%rip), %rax      # 0xd611
movq %rax, -0x7020(%rbp)
movl $0x2, -0x8040(%rbp)
movl $0x2, -0x803c(%rbp)
movl $0x18, -0x7438(%rbp)
movl $0x18, -0x7434(%rbp)
movl $0x14, -0x7838(%rbp)
movl $0x18, -0x7834(%rbp)
leaq 0x1b13(%rip), %rax      # 0xd5eb
movq %rax, -0x8038(%rbp)
leaq 0x1b0c(%rip), %rax      # 0xd5f2
movq %rax, -0x8038(%rbp)
movl $0x1, -0x9048(%rbp)
movl $0x2, -0x9044(%rbp)
movl $0x14, -0x8440(%rbp)
movl $0x18, -0x843c(%rbp)
movl $0x18, -0x8840(%rbp)
leaq 0x1acc(%rip), %rax      # 0xd5f2
movq %rax, -0x9040(%rbp)
movl $0x100, -0xa050(%rbp)   # imm = 0x100
movl $0x0, -0xa04c(%rbp)
movq %rsp, %rdi
movl $0x201, %ecx            # imm = 0x201
leaq -0x1008(%rbp), %rsi
rep  movsq (%rsi), %es:(%rdi)
leaq 0x6876(%rip), %rdi      # 0x123d0
leaq 0x1a85(%rip), %rsi      # 0xd5e6
callq 0x67b0
movq %rsp, %rdi
movl $0x201, %ecx            # imm = 0x201
leaq -0x2010(%rbp), %rsi
rep  movsq (%rsi), %es:(%rdi)
leaq 0x6851(%rip), %rdi      # 0x123d0
leaq 0x1a67(%rip), %rsi      # 0xd5ed
callq 0x67b0
movq %rsp, %rdi
movl $0x201, %ecx            # imm = 0x201
leaq -0x3018(%rbp), %rsi
rep  movsq (%rsi), %es:(%rdi)
leaq 0x682c(%rip), %rdi      # 0x123d0
leaq 0x1a49(%rip), %rsi      # 0xd5f4
callq 0x67b0
movq %rsp, %rdi
movl $0x201, %ecx            # imm = 0x201
leaq -0x4020(%rbp), %rsi
rep  movsq (%rsi), %es:(%rdi)
leaq 0x6807(%rip), %rdi      # 0x123d0
leaq 0x1a2b(%rip), %rsi      # 0xd5fb
callq 0x67b0
movq %rsp, %rdi
movl $0x201, %ecx            # imm = 0x201
leaq -0x5028(%rbp), %rsi
rep  movsq (%rsi), %es:(%rdi)
leaq 0x67e2(%rip), %rdi      # 0x123d0
leaq 0x1a10(%rip), %rsi      # 0xd605
callq 0x67b0
movq %rsp, %rdi
movl $0x201, %ecx            # imm = 0x201
leaq -0x6030(%rbp), %rsi
rep  movsq (%rsi), %es:(%rdi)
leaq 0x67bd(%rip), %rdi      # 0x123d0
leaq 0x19f5(%rip), %rsi      # 0xd60f
callq 0x67b0
movq %rsp, %rdi
movl $0x201, %ecx            # imm = 0x201
leaq -0x7038(%rbp), %rsi
rep  movsq (%rsi), %es:(%rdi)
leaq 0x6798(%rip), %rdi      # 0x123d0
leaq 0x19d4(%rip), %rsi      # 0xd613
callq 0x67b0
movq %rsp, %rdi
movl $0x201, %ecx            # imm = 0x201
leaq -0x8040(%rbp), %rsi
rep  movsq (%rsi), %es:(%rdi)
leaq 0x6773(%rip), %rdi      # 0x123d0
leaq 0x19b6(%rip), %rsi      # 0xd61a
callq 0x67b0
movq %rsp, %rdi
movl $0x201, %ecx            # imm = 0x201
leaq -0x9048(%rbp), %rsi
rep  movsq (%rsi), %es:(%rdi)
leaq 0x674e(%rip), %rdi      # 0x123d0
leaq 0x1995(%rip), %rsi      # 0xd61e
callq 0x67b0
movq %rsp, %rdi
movl $0x201, %ecx            # imm = 0x201
leaq -0xa050(%rbp), %rsi
rep  movsq (%rsi), %es:(%rdi)
leaq 0x6729(%rip), %rdi      # 0x123d0
leaq 0x191e(%rip), %rsi      # 0xd5cc
callq 0x67b0
addq $0xb060, %rsp           # imm = 0xB060
popq %rbp
retq
nopl (%rax)