// File: /workspace/github_c_makefile_star2_O0/BernardTatin[P]s7sh/s7.c
// Function: type_name
static const char *type_name(s7_scheme *sc, s7_pointer arg, article_t article)
                {
                    switch (unchecked_type(arg))
                    {
                        case T_C_OBJECT:
                            return(make_type_name(sc, string_value(c_object_scheme_name(sc, arg)), article));

                        case T_INPUT_PORT:
                            return(make_type_name(sc, (is_file_port(arg)) ? "input file port" : ((is_string_port(arg)) ? "input string port" : "input port"), article));

                        case T_OUTPUT_PORT:
                            return(make_type_name(sc, (is_file_port(arg)) ? "output file port" : ((is_string_port(arg)) ? "output string port" : "output port"), article));

                        case T_LET:
                            if (has_active_methods(sc, arg))
                            {
                                s7_pointer class_name;
                                class_name = find_method(sc, arg, sc->class_name_symbol);
                                if (is_symbol(class_name))
                                    return(make_type_name(sc, symbol_name(class_name), article));
                            }

                        default:
                            {
                                const char *str;
                                str = type_name_from_type(unchecked_type(arg), article);
                                if (str) return(str);
                            }
                    }
                    return("messed up object");
                }

// Assembly:
subq $0x58, %rsp
movq %rdi, 0x48(%rsp)
movq %rsi, 0x40(%rsp)
movl %edx, 0x3c(%rsp)
movq 0x40(%rsp), %rax
movzbl (%rax), %eax
addl $-0x14, %eax
movl %eax, %ecx
movq %rcx, 0x20(%rsp)
subl $0xf, %eax
ja 0xde651
movq 0x20(%rsp), %rax
leaq 0x1015e3(%rip), %rcx    # 0x1dfaac
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x48(%rsp), %rdi
movq 0x48(%rsp), %rax
movq 0x8d8(%rax), %rax
movq 0x40(%rsp), %rcx
movq 0x8(%rcx), %rcx
movq (%rax,%rcx,8), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rsi
movl 0x3c(%rsp), %edx
callq 0xd8890
movq %rax, 0x50(%rsp)
jmp 0xde689
movq 0x48(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x40(%rsp), %rax
movq 0x8(%rax), %rax
cmpl $0x0, 0x4(%rax)
jne 0xde532
leaq 0x114931(%rip), %rax    # 0x1f2e5c
movq %rax, 0x10(%rsp)
jmp 0xde558
movq 0x40(%rsp), %rax
movq 0x8(%rax), %rax
movl 0x4(%rax), %edx
leaq 0x106a11(%rip), %rax    # 0x1e4f56
leaq 0x1148fb(%rip), %rcx    # 0x1f2e47
cmpl $0x1, %edx
cmoveq %rcx, %rax
movq %rax, 0x10(%rsp)
movq 0x18(%rsp), %rdi
movq 0x10(%rsp), %rsi
movl 0x3c(%rsp), %edx
callq 0xd8890
movq %rax, 0x50(%rsp)
jmp 0xde689
movq 0x48(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x40(%rsp), %rax
movq 0x8(%rax), %rax
cmpl $0x0, 0x4(%rax)
jne 0xde59b
leaq 0x1148da(%rip), %rax    # 0x1f2e6f
movq %rax, (%rsp)
jmp 0xde5c0
movq 0x40(%rsp), %rax
movq 0x8(%rax), %rax
movl 0x4(%rax), %edx
leaq 0x106a35(%rip), %rax    # 0x1e4fe3
leaq 0x106ca1(%rip), %rcx    # 0x1e5256
cmpl $0x1, %edx
cmoveq %rcx, %rax
movq %rax, (%rsp)
movq 0x8(%rsp), %rdi
movq (%rsp), %rsi
movl 0x3c(%rsp), %edx
callq 0xd8890
movq %rax, 0x50(%rsp)
jmp 0xde689
movq 0x40(%rsp), %rax
movq (%rax), %rax
andq $0x40000000, %rax       # imm = 0x40000000
cmpq $0x0, %rax
je 0xde64f
movq 0x48(%rsp), %rax
testb $0x1, 0x24c(%rax)
je 0xde64f
movq 0x48(%rsp), %rdi
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rax
movq 0x18e8(%rax), %rdx
callq 0x98d0
movq %rax, 0x30(%rsp)
movq 0x30(%rsp), %rax
movzbl (%rax), %eax
cmpl $0xa, %eax
jne 0xde64d
movq 0x48(%rsp), %rdi
movq 0x30(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rsi
movl 0x3c(%rsp), %edx
callq 0xd8890
movq %rax, 0x50(%rsp)
jmp 0xde689
jmp 0xde64f
jmp 0xde651
movq 0x40(%rsp), %rax
movzbl (%rax), %edi
movl 0x3c(%rsp), %esi
callq 0x60c60
movq %rax, 0x28(%rsp)
cmpq $0x0, 0x28(%rsp)
je 0xde67b
movq 0x28(%rsp), %rax
movq %rax, 0x50(%rsp)
jmp 0xde689
jmp 0xde67d
leaq 0x1109f2(%rip), %rax    # 0x1ef076
movq %rax, 0x50(%rsp)
movq 0x50(%rsp), %rax
addq $0x58, %rsp
retq
nopw %cs:(%rax,%rax)