// File: /workspace/github_c_makefile_star2_O1/sasairc[P]clangsay/src/libbenly/src/typestring.c
// Function: new_string
STRING* new_string(char* const str)
{
    STRING* string  = NULL;

    if ((string = (STRING*)
                malloc(sizeof(STRING))) == NULL) {
#ifdef  LIBRARY_VERBOSE
        print_error();
/* LIBRARY_VERBOSE */
#endif
        status = EMEMORYALLOC; goto ERR;
    } else {
        string->alloc_size      = 0;
        string->length          = 0;
        string->string          = NULL;
        string->size            = size;
        string->mblen           = ts_mblen;
        string->reconf          = reconf;
        string->resize          = resize;
        string->reserve         = reserve;
        string->shrink_to_fit   = shrink_to_fit;
        string->capacity        = capacity;
        string->count           = count;
        string->assign          = assign;
        string->prepend         = prepend;
        string->append          = append;
        string->push_back       = push_back;
        string->pop_back        = pop_back;
        string->swap            = swap;
        string->insert          = insert;
        string->erase           = erase;
        string->replace         = replace;
        string->sub             = sub;
        string->gsub            = gsub;
        string->at              = at;
        string->empty           = empty;
        string->front           = front;
        string->back            = back;
        string->data            = c_str;
        string->c_str           = c_str;
        string->substr          = substr;
        string->c_substr        = c_substr;
        string->partition       = partition;
        string->c_partition     = c_partition;
        string->split           = split;
        string->c_split         = c_split;
        string->to_char_arr     = to_char_arr;
        string->copy            = copy;
        string->c_copy          = c_copy;
        string->compare         = compare;
        string->c_compare       = c_compare;
        string->casecmp         = casecmp;
        string->c_casecmp       = c_casecmp;
        string->concat          = concat;
        string->c_concat        = c_concat;
        string->chomp           = chomp;
        string->lstrip          = lstrip;
        string->rstrip          = rstrip;
        string->rjust           = rjust;
        string->ljust           = ljust;
        string->center          = center;
        string->mbrjust         = mbrjust;
        string->mbljust         = mbljust;
        string->mbcenter        = mbcenter;
        string->downcase        = downcase;
        string->swapcase        = swapcase;
        string->upcase          = upcase;
        string->capitalize      = capitalize;
        string->include         = include;
        string->index           = ts_index;
        string->rindex          = ts_rindex;
        string->mbindex         = mbindex;
        string->mbrindex        = mbrindex;
        string->slice           = slice;
        string->delete_prefix   = delete_prefix;
        string->delete_suffix   = delete_suffix;
        string->to_i            = to_i;
        string->to_l            = to_l;
        string->to_f            = to_f;
        string->reverse         = reverse;
        string->ascii_only      = ascii_only;
        string->digit_only      = digit_only;
        string->each_line       = each_line;
        string->each_byte       = each_byte;
        string->each_char       = each_char;
#ifdef  WITH_GLIB
        string->each_codepoint  = each_codepoint;
#else
        string->each_codepoint  = NULL;
/* WITH_GLIB */
#endif
        string->crypt           = ts_crypt;
        string->crypt2          = ts_crypt2;
        string->clear           = clear;
        string->release         = release;

        /*
         * おまけ
         */
        string->mbstrlen        = mbstrlen;
    }
    if (str != NULL) {
        if (string->assign(&string, str) < 0) {
            status = EMEMORYALLOC; goto ERR;
        }
    }

    return string;

ERR:
    switch (status) {
        case    EMEMORYALLOC:
            if (string != NULL) {
                free(string);
                string = NULL;
            }
        break;
    }

    return NULL;
}

// Assembly:
pushq %rbx
subq $0x10, %rsp
movq %rdi, %rbx
movq $0x0, 0x8(%rsp)
movl $0x278, %edi            # imm = 0x278
callq 0x20e0
movq %rax, 0x8(%rsp)
testq %rax, %rax
je 0x69f2
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
movq $0x0, 0x10(%rax)
leaq 0x43d(%rip), %rcx       # 0x6a1f
movq %rcx, 0x18(%rax)
leaq 0x437(%rip), %rcx       # 0x6a24
movq %rcx, 0x20(%rax)
leaq 0x4a9(%rip), %rcx       # 0x6aa1
movq %rcx, 0x38(%rax)
leaq 0x4c9(%rip), %rcx       # 0x6acc
movq %rcx, 0x50(%rax)
leaq 0x577(%rip), %rcx       # 0x6b85
movq %rcx, 0x40(%rax)
leaq 0x5ea(%rip), %rcx       # 0x6c03
movq %rcx, 0x48(%rax)
leaq 0x63e(%rip), %rcx       # 0x6c62
movq %rcx, 0x28(%rax)
leaq 0x637(%rip), %rcx       # 0x6c66
movq %rcx, 0x30(%rax)
leaq 0x6d6(%rip), %rcx       # 0x6d10
movq %rcx, 0x58(%rax)
leaq 0x7c3(%rip), %rcx       # 0x6e08
movq %rcx, 0x60(%rax)
leaq 0x828(%rip), %rcx       # 0x6e78
movq %rcx, 0x68(%rax)
leaq 0x8a0(%rip), %rcx       # 0x6efb
movq %rcx, 0x70(%rax)
leaq 0x8f4(%rip), %rcx       # 0x6f5a
movq %rcx, 0x78(%rax)
leaq 0x923(%rip), %rcx       # 0x6f94
movq %rcx, 0x80(%rax)
leaq 0x922(%rip), %rcx       # 0x6fa1
movq %rcx, 0x88(%rax)
leaq 0x9e1(%rip), %rcx       # 0x706e
movq %rcx, 0x90(%rax)
leaq 0xa81(%rip), %rcx       # 0x711c
movq %rcx, 0x98(%rax)
leaq 0xad6(%rip), %rcx       # 0x717f
movq %rcx, 0x1f0(%rax)
leaq 0xbce(%rip), %rcx       # 0x7285
movq %rcx, 0x1f8(%rax)
leaq 0xc21(%rip), %rcx       # 0x72e6
movq %rcx, 0xa8(%rax)
leaq 0xc4c(%rip), %rcx       # 0x731f
movq %rcx, 0xa0(%rax)
leaq 0xc4e(%rip), %rcx       # 0x732f
movq %rcx, 0xb0(%rax)
leaq 0xc69(%rip), %rcx       # 0x7358
movq %rcx, 0xb8(%rax)
leaq 0xc9d(%rip), %rcx       # 0x739a
movq %rcx, 0xc0(%rax)
movq %rcx, 0xc8(%rax)
leaq 0xc8d(%rip), %rcx       # 0x739f
movq %rcx, 0xe0(%rax)
leaq 0xd76(%rip), %rcx       # 0x7496
movq %rcx, 0xe8(%rax)
leaq 0xe10(%rip), %rcx       # 0x753e
movq %rcx, 0xf0(%rax)
leaq 0x1091(%rip), %rcx      # 0x77cd
movq %rcx, 0xf8(%rax)
leaq 0x128b(%rip), %rcx      # 0x79d5
movq %rcx, 0x100(%rax)
leaq 0x1404(%rip), %rcx      # 0x7b5c
movq %rcx, 0x108(%rax)
leaq 0x1582(%rip), %rcx      # 0x7ce8
movq %rcx, 0x110(%rax)
leaq 0x16bc(%rip), %rcx      # 0x7e30
movq %rcx, 0xd0(%rax)
leaq 0x1740(%rip), %rcx      # 0x7ec2
movq %rcx, 0xd8(%rax)
leaq 0x17c1(%rip), %rcx      # 0x7f51
movq %rcx, 0x118(%rax)
leaq 0x182d(%rip), %rcx      # 0x7fcb
movq %rcx, 0x120(%rax)
leaq 0x188f(%rip), %rcx      # 0x803b
movq %rcx, 0x128(%rax)
leaq 0x194a(%rip), %rcx      # 0x8104
movq %rcx, 0x130(%rax)
leaq 0x1a06(%rip), %rcx      # 0x81ce
movq %rcx, 0x138(%rax)
leaq 0x1adb(%rip), %rcx      # 0x82b1
movq %rcx, 0x140(%rax)
leaq 0x1b9c(%rip), %rcx      # 0x8380
movq %rcx, 0x148(%rax)
leaq 0x1c0e(%rip), %rcx      # 0x8400
movq %rcx, 0x150(%rax)
leaq 0x1ca9(%rip), %rcx      # 0x84a9
movq %rcx, 0x158(%rax)
leaq 0x1d20(%rip), %rcx      # 0x852e
movq %rcx, 0x160(%rax)
leaq 0x1e01(%rip), %rcx      # 0x861d
movq %rcx, 0x168(%rax)
leaq 0x1ea1(%rip), %rcx      # 0x86cb
movq %rcx, 0x170(%rax)
leaq 0x1fba(%rip), %rcx      # 0x87f2
movq %rcx, 0x178(%rax)
leaq 0x20ae(%rip), %rcx      # 0x88f4
movq %rcx, 0x180(%rax)
leaq 0x218e(%rip), %rcx      # 0x89e2
movq %rcx, 0x188(%rax)
leaq 0x22e8(%rip), %rcx      # 0x8b4a
movq %rcx, 0x190(%rax)
leaq 0x235c(%rip), %rcx      # 0x8bcc
movq %rcx, 0x1a0(%rax)
leaq 0x23e0(%rip), %rcx      # 0x8c5e
movq %rcx, 0x198(%rax)
leaq 0x2454(%rip), %rcx      # 0x8ce0
movq %rcx, 0x1a8(%rax)
leaq 0x24b6(%rip), %rcx      # 0x8d50
movq %rcx, 0x1b0(%rax)
leaq 0x255e(%rip), %rcx      # 0x8e06
movq %rcx, 0x1b8(%rax)
leaq 0x2638(%rip), %rcx      # 0x8eee
movq %rcx, 0x1c0(%rax)
leaq 0x2713(%rip), %rcx      # 0x8fd7
movq %rcx, 0x1c8(%rax)
leaq 0x2802(%rip), %rcx      # 0x90d4
movq %rcx, 0x1d0(%rax)
leaq 0x292a(%rip), %rcx      # 0x920a
movq %rcx, 0x1d8(%rax)
leaq 0x2a33(%rip), %rcx      # 0x9321
movq %rcx, 0x1e0(%rax)
leaq 0x2adb(%rip), %rcx      # 0x93d7
movq %rcx, 0x1e8(%rax)
leaq 0x2b74(%rip), %rcx      # 0x947e
movq %rcx, 0x200(%rax)
leaq 0x2bbf(%rip), %rcx      # 0x94d7
movq %rcx, 0x208(%rax)
leaq 0x2c0e(%rip), %rcx      # 0x9534
movq %rcx, 0x210(%rax)
leaq 0x2c3c(%rip), %rcx      # 0x9570
movq %rcx, 0x218(%rax)
leaq 0x2d45(%rip), %rcx      # 0x9687
movq %rcx, 0x220(%rax)
leaq 0x2d86(%rip), %rcx      # 0x96d6
movq %rcx, 0x228(%rax)
leaq 0x2de2(%rip), %rcx      # 0x9740
movq %rcx, 0x230(%rax)
leaq 0x2e75(%rip), %rcx      # 0x97e1
movq %rcx, 0x238(%rax)
leaq 0x2ec5(%rip), %rcx      # 0x983f
movq %rcx, 0x240(%rax)
leaq 0x2f70(%rip), %rcx      # 0x98f8
movq %rcx, 0x248(%rax)
leaq 0x301b(%rip), %rcx      # 0x99b1
movq %rcx, 0x250(%rax)
leaq 0x3068(%rip), %rcx      # 0x9a0c
movq %rcx, 0x258(%rax)
leaq 0x30ce(%rip), %rcx      # 0x9a80
movq %rcx, 0x260(%rax)
leaq 0x30eb(%rip), %rcx      # 0x9aab
movq %rcx, 0x268(%rax)
leaq 0x3106(%rip), %rcx      # 0x9ad4
movq %rcx, 0x270(%rax)
testq %rbx, %rbx
je 0x69eb
leaq 0x8(%rsp), %rdi
movq %rbx, %rsi
callq 0x6d10
testl %eax, %eax
js 0x69f2
movq 0x8(%rsp), %rax
jmp 0x6a19
leaq 0xa877(%rip), %rax      # 0x11270
movl $0xfffffffd, (%rax)     # imm = 0xFFFFFFFD
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x6a17
callq 0x21a0
movq $0x0, 0x8(%rsp)
xorl %eax, %eax
addq $0x10, %rsp
popq %rbx
retq