// File: /workspace/github_c_makefile_star2_O0/BernardTatin[P]s7sh/s7.c
// Function: init_chars
static void init_chars(void)
    {
        s7_cell *cells;
        int32_t i;

        chars = (s7_pointer *)malloc((NUM_CHARS + 1) * sizeof(s7_pointer)); /* chars is declared far above */
        cells = (s7_cell *)calloc(NUM_CHARS + 1, sizeof(s7_cell));

        chars[0] = &cells[0];
        eof_object = chars[0];
        set_type(eof_object, T_EOF_OBJECT | T_IMMUTABLE | T_UNHEAP);
        unique_name_length(eof_object) = 6;
        unique_name(eof_object) = "#<eof>";
        chars++;                    /* now chars[EOF] == chars[-1] == eof_object */
        cells++;

        for (i = 0; i < NUM_CHARS; i++)
        {
            s7_pointer cp;
            uint8_t c;

            c = (uint8_t)i;
            cp = &cells[i];
            set_type_bit(cp, T_IMMUTABLE | T_CHARACTER | T_UNHEAP);
            character(cp) = c;
            upper_character(cp) = (uint8_t)toupper(i);
            is_char_alphabetic(cp) = (bool)isalpha(i);
            is_char_numeric(cp) = (bool)isdigit(i);
            is_char_whitespace(cp) = white_space[i];
            is_char_uppercase(cp) = (((bool)isupper(i)) || ((i >= 192) && (i < 208)));
            is_char_lowercase(cp) = (bool)islower(i);
            chars[i] = cp;

#define make_character_name(S) memcpy((void *)(&(character_name(cp))), (const void *)(S), character_name_length(cp) = strlen(S))
            switch (c)
            {
                case ' ':	 make_character_name("#\\space");     break;
                case '\n':       make_character_name("#\\newline");   break;
                case '\r':       make_character_name("#\\return");    break;
                case '\t':       make_character_name("#\\tab");       break;
                case '\0':       make_character_name("#\\null");      break;
                case (char)0x1b: make_character_name("#\\escape");    break;
                case (char)0x7f: make_character_name("#\\delete");    break;
                case (char)7:    make_character_name("#\\alarm");     break;
                case (char)8:    make_character_name("#\\backspace"); break;
                default:
                                 {
#define P_SIZE 12
                                     int32_t len;
                                     if ((c < 32) || (c >= 127))
                                         len = snprintf((char *)(&(character_name(cp))), P_SIZE, "#\\x%x", c);
                                     else len = snprintf((char *)(&(character_name(cp))), P_SIZE, "#\\%c", c);
                                     character_name_length(cp) = len;
                                     break;
                                 }}}
    }

// Assembly:
subq $0x28, %rsp
movl $0x808, %edi            # imm = 0x808
callq 0x9480
movq %rax, 0x1bae23(%rip)    # 0x21a588
movl $0x101, %edi            # imm = 0x101
movl $0x30, %esi
callq 0x9360
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rcx
movq 0x1bae03(%rip), %rax    # 0x21a588
movq %rcx, (%rax)
movq 0x1badf9(%rip), %rax    # 0x21a588
movq (%rax), %rax
movq %rax, 0x1b6af7(%rip)    # 0x216290
movq 0x1b6af0(%rip), %rax    # 0x216290
movabsq $0x4000000001000006, %rcx # imm = 0x4000000001000006
movq %rcx, (%rax)
movq 0x1b6adc(%rip), %rax    # 0x216290
movq $0x6, 0x28(%rax)
movq 0x1b6acd(%rip), %rax    # 0x216290
leaq 0x18230f(%rip), %rcx    # 0x1e1ad9
movq %rcx, 0x20(%rax)
movq 0x1badb3(%rip), %rax    # 0x21a588
addq $0x8, %rax
movq %rax, 0x1bada8(%rip)    # 0x21a588
movq 0x20(%rsp), %rax
addq $0x30, %rax
movq %rax, 0x20(%rsp)
movl $0x0, 0x1c(%rsp)
cmpl $0x100, 0x1c(%rsp)      # imm = 0x100
jge 0x5fbc6
movl 0x1c(%rsp), %eax
movb %al, 0xf(%rsp)
movq 0x20(%rsp), %rax
movslq 0x1c(%rsp), %rcx
imulq $0x30, %rcx, %rcx
addq %rcx, %rax
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rax
movabsq $0x4000000001000008, %rcx # imm = 0x4000000001000008
orq (%rax), %rcx
movq %rcx, (%rax)
movb 0xf(%rsp), %cl
movq 0x10(%rsp), %rax
movb %cl, 0x8(%rax)
movl 0x1c(%rsp), %edi
callq 0x90f0
movb %al, %cl
movq 0x10(%rsp), %rax
movb %cl, 0x9(%rax)
callq 0x9730
movq (%rax), %rax
movslq 0x1c(%rsp), %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x400, %eax            # imm = 0x400
cmpl $0x0, %eax
setne %cl
movq 0x10(%rsp), %rax
andb $0x1, %cl
movb %cl, 0x10(%rax)
callq 0x9730
movq (%rax), %rax
movslq 0x1c(%rsp), %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x800, %eax            # imm = 0x800
cmpl $0x0, %eax
setne %cl
movq 0x10(%rsp), %rax
andb $0x1, %cl
movb %cl, 0x11(%rax)
movq 0x1c256d(%rip), %rax    # 0x221e18
movslq 0x1c(%rsp), %rcx
movb (%rax,%rcx), %cl
movq 0x10(%rsp), %rax
andb $0x1, %cl
movb %cl, 0x12(%rax)
callq 0x9730
movq (%rax), %rax
movslq 0x1c(%rsp), %rcx
movzwl (%rax,%rcx,2), %ecx
andl $0x100, %ecx            # imm = 0x100
movb $0x1, %al
cmpl $0x0, %ecx
movb %al, 0x7(%rsp)
jne 0x5f907
xorl %eax, %eax
cmpl $0xc0, 0x1c(%rsp)
movb %al, 0x6(%rsp)
jl 0x5f8ff
cmpl $0xd0, 0x1c(%rsp)
setl %al
movb %al, 0x6(%rsp)
movb 0x6(%rsp), %al
movb %al, 0x7(%rsp)
movb 0x7(%rsp), %cl
movq 0x10(%rsp), %rax
andb $0x1, %cl
movb %cl, 0x13(%rax)
callq 0x9730
movq (%rax), %rax
movslq 0x1c(%rsp), %rcx
movzwl (%rax,%rcx,2), %eax
shrl $0x9, %eax
andl $0x1, %eax
movb %al, %cl
movq 0x10(%rsp), %rax
movb %cl, 0x14(%rax)
movq 0x10(%rsp), %rdx
movq 0x1bac45(%rip), %rax    # 0x21a588
movslq 0x1c(%rsp), %rcx
movq %rdx, (%rax,%rcx,8)
movzbl 0xf(%rsp), %eax
movl %eax, (%rsp)
testl %eax, %eax
je 0x5fa6f
jmp 0x5f95e
movl (%rsp), %eax
subl $0x7, %eax
je 0x5fadb
jmp 0x5f96c
movl (%rsp), %eax
subl $0x8, %eax
je 0x5fb0e
jmp 0x5f97a
movl (%rsp), %eax
subl $0x9, %eax
je 0x5fa47
jmp 0x5f988
movl (%rsp), %eax
subl $0xa, %eax
je 0x5f9fc
jmp 0x5f992
movl (%rsp), %eax
subl $0xd, %eax
je 0x5fa26
jmp 0x5f9a0
movl (%rsp), %eax
subl $0x1b, %eax
je 0x5fa99
jmp 0x5f9ae
movl (%rsp), %eax
subl $0x20, %eax
je 0x5f9c9
jmp 0x5f9b8
movl (%rsp), %eax
subl $0x7f, %eax
je 0x5faba
jmp 0x5fb40
movq 0x10(%rsp), %rax
movq 0x10(%rsp), %rcx
movl $0x7, 0xc(%rcx)
movl 0x193190(%rip), %ecx    # 0x1f2b70
movl %ecx, 0x15(%rax)
movw 0x19318a(%rip), %cx     # 0x1f2b74
movw %cx, 0x19(%rax)
movb 0x193182(%rip), %cl     # 0x1f2b76
movb %cl, 0x1b(%rax)
jmp 0x5fbb4
movq 0x10(%rsp), %rax
movq 0x10(%rsp), %rcx
movl $0x9, 0xc(%rcx)
movq 0x193164(%rip), %rcx    # 0x1f2b78
movq %rcx, 0x15(%rax)
movb 0x193162(%rip), %cl     # 0x1f2b80
movb %cl, 0x1d(%rax)
jmp 0x5fbb4
movq 0x10(%rsp), %rax
movq 0x10(%rsp), %rcx
movl $0x8, 0xc(%rcx)
movq 0x193144(%rip), %rcx    # 0x1f2b82
movq %rcx, 0x15(%rax)
jmp 0x5fbb4
movq 0x10(%rsp), %rax
movq 0x10(%rsp), %rcx
movl $0x5, 0xc(%rcx)
movl 0x19312d(%rip), %ecx    # 0x1f2b8b
movl %ecx, 0x15(%rax)
movb 0x193128(%rip), %cl     # 0x1f2b8f
movb %cl, 0x19(%rax)
jmp 0x5fbb4
movq 0x10(%rsp), %rax
movq 0x10(%rsp), %rcx
movl $0x6, 0xc(%rcx)
movl 0x19310b(%rip), %ecx    # 0x1f2b91
movl %ecx, 0x15(%rax)
movw 0x193105(%rip), %cx     # 0x1f2b95
movw %cx, 0x19(%rax)
jmp 0x5fbb4
movq 0x10(%rsp), %rax
movq 0x10(%rsp), %rcx
movl $0x8, 0xc(%rcx)
movq 0x1930e7(%rip), %rcx    # 0x1f2b98
movq %rcx, 0x15(%rax)
jmp 0x5fbb4
movq 0x10(%rsp), %rax
movq 0x10(%rsp), %rcx
movl $0x8, 0xc(%rcx)
movq 0x1930cf(%rip), %rcx    # 0x1f2ba1
movq %rcx, 0x15(%rax)
jmp 0x5fbb4
movq 0x10(%rsp), %rax
movq 0x10(%rsp), %rcx
movl $0x7, 0xc(%rcx)
movl 0x1930b8(%rip), %ecx    # 0x1f2baa
movl %ecx, 0x15(%rax)
movw 0x1930b2(%rip), %cx     # 0x1f2bae
movw %cx, 0x19(%rax)
movb 0x1930aa(%rip), %cl     # 0x1f2bb0
movb %cl, 0x1b(%rax)
jmp 0x5fbb4
movq 0x10(%rsp), %rax
movq 0x10(%rsp), %rcx
movl $0xb, 0xc(%rcx)
movq 0x19308c(%rip), %rcx    # 0x1f2bb2
movq %rcx, 0x15(%rax)
movw 0x193089(%rip), %cx     # 0x1f2bba
movw %cx, 0x1d(%rax)
movb 0x193081(%rip), %cl     # 0x1f2bbc
movb %cl, 0x1f(%rax)
jmp 0x5fbb4
movzbl 0xf(%rsp), %eax
cmpl $0x20, %eax
jl 0x5fb54
movzbl 0xf(%rsp), %eax
cmpl $0x7f, %eax
jl 0x5fb7f
movq 0x10(%rsp), %rdi
addq $0x8, %rdi
addq $0xd, %rdi
movzbl 0xf(%rsp), %ecx
movl $0xc, %esi
leaq 0x19304c(%rip), %rdx    # 0x1f2bbe
movb $0x0, %al
callq 0x9210
movl %eax, 0x8(%rsp)
jmp 0x5fba8
movq 0x10(%rsp), %rdi
addq $0x8, %rdi
addq $0xd, %rdi
movzbl 0xf(%rsp), %ecx
movl $0xc, %esi
leaq 0x193027(%rip), %rdx    # 0x1f2bc4
movb $0x0, %al
callq 0x9210
movl %eax, 0x8(%rsp)
movl 0x8(%rsp), %ecx
movq 0x10(%rsp), %rax
movl %ecx, 0xc(%rax)
jmp 0x5fbb6
movl 0x1c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x1c(%rsp)
jmp 0x5f7f6
addq $0x28, %rsp
retq
nopl (%rax,%rax)