// File: /workspace/github_c_makefile_star2_O2/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
movl $0x278, %edi            # imm = 0x278
callq 0x20e0
movq %rax, 0x8(%rsp)
testq %rax, %rax
je 0x5de6
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
andq $0x0, 0x10(%rax)
leaq 0x43e(%rip), %rcx       # 0x5e14
movq %rcx, 0x18(%rax)
leaq 0x438(%rip), %rcx       # 0x5e19
movq %rcx, 0x20(%rax)
leaq 0x497(%rip), %rcx       # 0x5e83
movq %rcx, 0x38(%rax)
leaq 0x4b4(%rip), %rcx       # 0x5eab
movq %rcx, 0x50(%rax)
leaq 0x560(%rip), %rcx       # 0x5f62
movq %rcx, 0x40(%rax)
leaq 0x5ce(%rip), %rcx       # 0x5fdb
movq %rcx, 0x48(%rax)
leaq 0x61b(%rip), %rcx       # 0x6033
movq %rcx, 0x28(%rax)
leaq 0x614(%rip), %rcx       # 0x6037
movq %rcx, 0x30(%rax)
leaq 0x6ab(%rip), %rcx       # 0x60d9
movq %rcx, 0x58(%rax)
leaq 0x757(%rip), %rcx       # 0x6190
movq %rcx, 0x60(%rax)
leaq 0x7b7(%rip), %rcx       # 0x61fb
movq %rcx, 0x68(%rax)
leaq 0x82a(%rip), %rcx       # 0x6279
movq %rcx, 0x70(%rax)
leaq 0x87a(%rip), %rcx       # 0x62d4
movq %rcx, 0x78(%rax)
leaq 0x8a9(%rip), %rcx       # 0x630e
movq %rcx, 0x80(%rax)
leaq 0x8a8(%rip), %rcx       # 0x631b
movq %rcx, 0x88(%rax)
leaq 0x977(%rip), %rcx       # 0x63f8
movq %rcx, 0x90(%rax)
leaq 0xa12(%rip), %rcx       # 0x64a1
movq %rcx, 0x98(%rax)
leaq 0xa65(%rip), %rcx       # 0x6502
movq %rcx, 0x1f0(%rax)
leaq 0xb23(%rip), %rcx       # 0x65ce
movq %rcx, 0x1f8(%rax)
leaq 0xb74(%rip), %rcx       # 0x662d
movq %rcx, 0xa8(%rax)
leaq 0xb9c(%rip), %rcx       # 0x6663
movq %rcx, 0xa0(%rax)
leaq 0xb9e(%rip), %rcx       # 0x6673
movq %rcx, 0xb0(%rax)
leaq 0xbb9(%rip), %rcx       # 0x669c
movq %rcx, 0xb8(%rax)
leaq 0xbed(%rip), %rcx       # 0x66de
movq %rcx, 0xc0(%rax)
movq %rcx, 0xc8(%rax)
leaq 0xbdd(%rip), %rcx       # 0x66e3
movq %rcx, 0xe0(%rax)
leaq 0xcce(%rip), %rcx       # 0x67e2
movq %rcx, 0xe8(%rax)
leaq 0xd64(%rip), %rcx       # 0x6886
movq %rcx, 0xf0(%rax)
leaq 0xfcc(%rip), %rcx       # 0x6afc
movq %rcx, 0xf8(%rax)
leaq 0x11bb(%rip), %rcx      # 0x6cf9
movq %rcx, 0x100(%rax)
leaq 0x1319(%rip), %rcx      # 0x6e65
movq %rcx, 0x108(%rax)
leaq 0x1482(%rip), %rcx      # 0x6fdc
movq %rcx, 0x110(%rax)
leaq 0x15a5(%rip), %rcx      # 0x710d
movq %rcx, 0xd0(%rax)
leaq 0x1628(%rip), %rcx      # 0x719e
movq %rcx, 0xd8(%rax)
leaq 0x16a3(%rip), %rcx      # 0x7227
movq %rcx, 0x118(%rax)
leaq 0x1709(%rip), %rcx      # 0x729b
movq %rcx, 0x120(%rax)
leaq 0x1765(%rip), %rcx      # 0x7305
movq %rcx, 0x128(%rax)
leaq 0x181e(%rip), %rcx      # 0x73cc
movq %rcx, 0x130(%rax)
leaq 0x18bd(%rip), %rcx      # 0x7479
movq %rcx, 0x138(%rax)
leaq 0x1992(%rip), %rcx      # 0x755c
movq %rcx, 0x140(%rax)
leaq 0x1a53(%rip), %rcx      # 0x762b
movq %rcx, 0x148(%rax)
leaq 0x1abf(%rip), %rcx      # 0x76a5
movq %rcx, 0x150(%rax)
leaq 0x1b63(%rip), %rcx      # 0x7757
movq %rcx, 0x158(%rax)
leaq 0x1be4(%rip), %rcx      # 0x77e6
movq %rcx, 0x160(%rax)
leaq 0x1cbe(%rip), %rcx      # 0x78ce
movq %rcx, 0x168(%rax)
leaq 0x1d57(%rip), %rcx      # 0x7975
movq %rcx, 0x170(%rax)
leaq 0x1e69(%rip), %rcx      # 0x7a95
movq %rcx, 0x178(%rax)
leaq 0x1f4f(%rip), %rcx      # 0x7b89
movq %rcx, 0x180(%rax)
leaq 0x201e(%rip), %rcx      # 0x7c66
movq %rcx, 0x188(%rax)
leaq 0x2167(%rip), %rcx      # 0x7dbd
movq %rcx, 0x190(%rax)
leaq 0x21c1(%rip), %rcx      # 0x7e25
movq %rcx, 0x1a0(%rax)
leaq 0x222b(%rip), %rcx      # 0x7e9d
movq %rcx, 0x198(%rax)
leaq 0x2285(%rip), %rcx      # 0x7f05
movq %rcx, 0x1a8(%rax)
leaq 0x22d9(%rip), %rcx      # 0x7f67
movq %rcx, 0x1b0(%rax)
leaq 0x2372(%rip), %rcx      # 0x800e
movq %rcx, 0x1b8(%rax)
leaq 0x243e(%rip), %rcx      # 0x80e8
movq %rcx, 0x1c0(%rax)
leaq 0x24f5(%rip), %rcx      # 0x81ad
movq %rcx, 0x1c8(%rax)
leaq 0x25cf(%rip), %rcx      # 0x8295
movq %rcx, 0x1d0(%rax)
leaq 0x26ed(%rip), %rcx      # 0x83c1
movq %rcx, 0x1d8(%rax)
leaq 0x27db(%rip), %rcx      # 0x84bd
movq %rcx, 0x1e0(%rax)
leaq 0x2883(%rip), %rcx      # 0x8573
movq %rcx, 0x1e8(%rax)
leaq 0x2919(%rip), %rcx      # 0x8617
movq %rcx, 0x200(%rax)
leaq 0x295d(%rip), %rcx      # 0x8669
movq %rcx, 0x208(%rax)
leaq 0x29a3(%rip), %rcx      # 0x86bd
movq %rcx, 0x210(%rax)
leaq 0x29d1(%rip), %rcx      # 0x86f9
movq %rcx, 0x218(%rax)
leaq 0x2ab2(%rip), %rcx      # 0x87e8
movq %rcx, 0x220(%rax)
leaq 0x2ae4(%rip), %rcx      # 0x8828
movq %rcx, 0x228(%rax)
leaq 0x2b2f(%rip), %rcx      # 0x8881
movq %rcx, 0x230(%rax)
leaq 0x2bb2(%rip), %rcx      # 0x8912
movq %rcx, 0x238(%rax)
leaq 0x2bf7(%rip), %rcx      # 0x8965
movq %rcx, 0x240(%rax)
leaq 0x2c8f(%rip), %rcx      # 0x8a0b
movq %rcx, 0x248(%rax)
leaq 0x2d31(%rip), %rcx      # 0x8abb
movq %rcx, 0x250(%rax)
leaq 0x2d7e(%rip), %rcx      # 0x8b16
movq %rcx, 0x258(%rax)
leaq 0x2ddf(%rip), %rcx      # 0x8b85
movq %rcx, 0x260(%rax)
leaq 0x2df9(%rip), %rcx      # 0x8bad
movq %rcx, 0x268(%rax)
leaq 0x2e07(%rip), %rcx      # 0x8bc9
movq %rcx, 0x270(%rax)
testq %rbx, %rbx
je 0x5ddf
leaq 0x8(%rsp), %rdi
movq %rbx, %rsi
callq 0x60d9
testl %eax, %eax
js 0x5df5
movq 0x8(%rsp), %rax
jmp 0x5e0e
leaq 0xb48b(%rip), %rax      # 0x11278
movl $0xfffffffd, (%rax)     # imm = 0xFFFFFFFD
jmp 0x5e0c
movq 0x8(%rsp), %rdi
leaq 0xb477(%rip), %rax      # 0x11278
movl $0xfffffffd, (%rax)     # imm = 0xFFFFFFFD
callq 0x21a0
xorl %eax, %eax
addq $0x10, %rsp
popq %rbx
retq