// File: /workspace/github_c_makefile_star2_O0/vtereshkov[P]umka-lang/src/umka_compiler.c
// Function: compilerDeclareExternalFuncs
static void compilerDeclareExternalFuncs(Compiler *comp, bool fileSystemEnabled)
{
    externalAdd(&comp->externals, "rtlmemcpy",      &rtlmemcpy,                                           true);
    externalAdd(&comp->externals, "rtlstdin",       &rtlstdin,                                            true);
    externalAdd(&comp->externals, "rtlstdout",      &rtlstdout,                                           true);
    externalAdd(&comp->externals, "rtlstderr",      &rtlstderr,                                           true);
    externalAdd(&comp->externals, "rtlfopen",       fileSystemEnabled ? &rtlfopen  : &rtlfopenSandbox,    true);
    externalAdd(&comp->externals, "rtlfclose",      fileSystemEnabled ? &rtlfclose : &rtlfcloseSandbox,   true);
    externalAdd(&comp->externals, "rtlfread",       fileSystemEnabled ? &rtlfread  : &rtlfreadSandbox,    true);
    externalAdd(&comp->externals, "rtlfwrite",      fileSystemEnabled ? &rtlfwrite : &rtlfwriteSandbox,   true);
    externalAdd(&comp->externals, "rtlfseek",       fileSystemEnabled ? &rtlfseek  : &rtlfseekSandbox,    true);
    externalAdd(&comp->externals, "rtlftell",       fileSystemEnabled ? &rtlftell  : &rtlftellSandbox,    true);
    externalAdd(&comp->externals, "rtlremove",      fileSystemEnabled ? &rtlremove : &rtlremoveSandbox,   true);
    externalAdd(&comp->externals, "rtlfeof",        fileSystemEnabled ? &rtlfeof   : &rtlfeofSandbox,     true);
    externalAdd(&comp->externals, "rtlfflush",      &rtlfflush,                                           true);
    externalAdd(&comp->externals, "rtltime",        &rtltime,                                             true);
    externalAdd(&comp->externals, "rtlclock",       &rtlclock,                                            true);
    externalAdd(&comp->externals, "rtllocaltime",   &rtllocaltime,                                        true);
    externalAdd(&comp->externals, "rtlgmtime",      &rtlgmtime,                                           true);
    externalAdd(&comp->externals, "rtlmktime",      &rtlmktime,                                           true);
    externalAdd(&comp->externals, "rtlgetenv",      fileSystemEnabled ? &rtlgetenv : &rtlgetenvSandbox,   true);
    externalAdd(&comp->externals, "rtlsystem",      fileSystemEnabled ? &rtlsystem : &rtlsystemSandbox,   true);
    externalAdd(&comp->externals, "rtltrace",       &rtltrace,                                            true);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movb %sil, %al
movq %rdi, -0x8(%rbp)
andb $0x1, %al
movb %al, -0x9(%rbp)
movq -0x8(%rbp), %rdi
addq $0x4b98, %rdi           # imm = 0x4B98
leaq 0x1cc793(%rip), %rsi    # 0x1d4529
leaq 0x149c3(%rip), %rdx     # 0x1c760
movl $0x1, %ecx
callq 0x6100
movq -0x8(%rbp), %rdi
addq $0x4b98, %rdi           # imm = 0x4B98
leaq 0x1cc77a(%rip), %rsi    # 0x1d4533
leaq 0x14a10(%rip), %rdx     # 0x1c7d0
movl $0x1, %ecx
callq 0x6100
movq -0x8(%rbp), %rdi
addq $0x4b98, %rdi           # imm = 0x4B98
leaq 0x1cc760(%rip), %rsi    # 0x1d453c
leaq 0x14a2d(%rip), %rdx     # 0x1c810
movl $0x1, %ecx
callq 0x6100
movq -0x8(%rbp), %rdi
addq $0x4b98, %rdi           # imm = 0x4B98
leaq 0x1cc747(%rip), %rsi    # 0x1d4546
leaq 0x14a4a(%rip), %rdx     # 0x1c850
movl $0x1, %ecx
callq 0x6100
movq -0x8(%rbp), %rdi
addq $0x4b98, %rdi           # imm = 0x4B98
movb -0x9(%rbp), %cl
leaq 0x14adb(%rip), %rdx     # 0x1c900
leaq 0x14a64(%rip), %rax     # 0x1c890
testb $0x1, %cl
cmovneq %rax, %rdx
leaq 0x1cc716(%rip), %rsi    # 0x1d4550
movl $0x1, %ecx
callq 0x6100
movq -0x8(%rbp), %rdi
addq $0x4b98, %rdi           # imm = 0x4B98
movb -0x9(%rbp), %cl
leaq 0x14b27(%rip), %rdx     # 0x1c980
leaq 0x14ad0(%rip), %rax     # 0x1c930
testb $0x1, %cl
cmovneq %rax, %rdx
leaq 0x1cc6eb(%rip), %rsi    # 0x1d4559
movl $0x1, %ecx
callq 0x6100
movq -0x8(%rbp), %rdi
addq $0x4b98, %rdi           # imm = 0x4B98
movb -0x9(%rbp), %cl
leaq 0x14bc3(%rip), %rdx     # 0x1ca50
leaq 0x14b1c(%rip), %rax     # 0x1c9b0
testb $0x1, %cl
cmovneq %rax, %rdx
leaq 0x1cc6c1(%rip), %rsi    # 0x1d4563
movl $0x1, %ecx
callq 0x6100
movq -0x8(%rbp), %rdi
addq $0x4b98, %rdi           # imm = 0x4B98
movb -0x9(%rbp), %cl
leaq 0x14c5f(%rip), %rdx     # 0x1cb20
leaq 0x14bb8(%rip), %rax     # 0x1ca80
testb $0x1, %cl
cmovneq %rax, %rdx
leaq 0x1cc696(%rip), %rsi    # 0x1d456c
movl $0x1, %ecx
callq 0x6100
movq -0x8(%rbp), %rdi
addq $0x4b98, %rdi           # imm = 0x4B98
movb -0x9(%rbp), %cl
leaq 0x14d0b(%rip), %rdx     # 0x1cc00
leaq 0x14c54(%rip), %rax     # 0x1cb50
testb $0x1, %cl
cmovneq %rax, %rdx
leaq 0x1cc66c(%rip), %rsi    # 0x1d4576
movl $0x1, %ecx
callq 0x6100
movq -0x8(%rbp), %rdi
addq $0x4b98, %rdi           # imm = 0x4B98
movb -0x9(%rbp), %cl
leaq 0x14d57(%rip), %rdx     # 0x1cc80
leaq 0x14d00(%rip), %rax     # 0x1cc30
testb $0x1, %cl
cmovneq %rax, %rdx
leaq 0x1cc641(%rip), %rsi    # 0x1d457f
movl $0x1, %ecx
callq 0x6100
movq -0x8(%rbp), %rdi
addq $0x4b98, %rdi           # imm = 0x4B98
movb -0x9(%rbp), %cl
leaq 0x14da3(%rip), %rdx     # 0x1cd00
leaq 0x14d4c(%rip), %rax     # 0x1ccb0
testb $0x1, %cl
cmovneq %rax, %rdx
leaq 0x1cc616(%rip), %rsi    # 0x1d4588
movl $0x1, %ecx
callq 0x6100
movq -0x8(%rbp), %rdi
addq $0x4b98, %rdi           # imm = 0x4B98
movb -0x9(%rbp), %cl
leaq 0x14def(%rip), %rdx     # 0x1cd80
leaq 0x14d98(%rip), %rax     # 0x1cd30
testb $0x1, %cl
cmovneq %rax, %rdx
leaq 0x1cc5ec(%rip), %rsi    # 0x1d4592
movl $0x1, %ecx
callq 0x6100
movq -0x8(%rbp), %rdi
addq $0x4b98, %rdi           # imm = 0x4B98
leaq 0x1cc5d8(%rip), %rsi    # 0x1d459a
leaq 0x14de7(%rip), %rdx     # 0x1cdb0
movl $0x1, %ecx
callq 0x6100
movq -0x8(%rbp), %rdi
addq $0x4b98, %rdi           # imm = 0x4B98
leaq 0x1cc5bf(%rip), %rsi    # 0x1d45a4
leaq 0x14e14(%rip), %rdx     # 0x1ce00
movl $0x1, %ecx
callq 0x6100
movq -0x8(%rbp), %rdi
addq $0x4b98, %rdi           # imm = 0x4B98
leaq 0x1cc5a4(%rip), %rsi    # 0x1d45ac
leaq 0x14e31(%rip), %rdx     # 0x1ce40
movl $0x1, %ecx
callq 0x6100
movq -0x8(%rbp), %rdi
addq $0x4b98, %rdi           # imm = 0x4B98
leaq 0x1cc58a(%rip), %rsi    # 0x1d45b5
leaq 0x14e6e(%rip), %rdx     # 0x1cea0
movl $0x1, %ecx
callq 0x6100
movq -0x8(%rbp), %rdi
addq $0x4b98, %rdi           # imm = 0x4B98
leaq 0x1cc574(%rip), %rsi    # 0x1d45c2
leaq 0x14f6b(%rip), %rdx     # 0x1cfc0
movl $0x1, %ecx
callq 0x6100
movq -0x8(%rbp), %rdi
addq $0x4b98, %rdi           # imm = 0x4B98
leaq 0x1cc55b(%rip), %rsi    # 0x1d45cc
leaq 0x14fa8(%rip), %rdx     # 0x1d020
movl $0x1, %ecx
callq 0x6100
movq -0x8(%rbp), %rdi
addq $0x4b98, %rdi           # imm = 0x4B98
movb -0x9(%rbp), %cl
leaq 0x15139(%rip), %rdx     # 0x1d1d0
leaq 0x150a2(%rip), %rax     # 0x1d140
testb $0x1, %cl
cmovneq %rax, %rdx
leaq 0x1cc52a(%rip), %rsi    # 0x1d45d6
movl $0x1, %ecx
callq 0x6100
movq -0x8(%rbp), %rdi
addq $0x4b98, %rdi           # imm = 0x4B98
movb -0x9(%rbp), %cl
leaq 0x15185(%rip), %rdx     # 0x1d250
leaq 0x1512e(%rip), %rax     # 0x1d200
testb $0x1, %cl
cmovneq %rax, %rdx
leaq 0x1cc500(%rip), %rsi    # 0x1d45e0
movl $0x1, %ecx
callq 0x6100
movq -0x8(%rbp), %rdi
addq $0x4b98, %rdi           # imm = 0x4B98
leaq 0x1cc4ee(%rip), %rsi    # 0x1d45ea
leaq 0x1517d(%rip), %rdx     # 0x1d280
movl $0x1, %ecx
callq 0x6100
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)