// File: /workspace/github_c_makefile_star2_O3/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 0x68a5
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
movq $0x0, 0x10(%rax)
leaq 0x443(%rip), %rcx       # 0x68d8
movq %rcx, 0x18(%rax)
leaq 0x43d(%rip), %rcx       # 0x68dd
movq %rcx, 0x20(%rax)
leaq 0x4af(%rip), %rcx       # 0x695a
movq %rcx, 0x38(%rax)
leaq 0x4cc(%rip), %rcx       # 0x6982
movq %rcx, 0x50(%rax)
leaq 0x57a(%rip), %rcx       # 0x6a3b
movq %rcx, 0x40(%rax)
leaq 0x5ed(%rip), %rcx       # 0x6ab9
movq %rcx, 0x48(%rax)
leaq 0x641(%rip), %rcx       # 0x6b18
movq %rcx, 0x28(%rax)
leaq 0x63a(%rip), %rcx       # 0x6b1c
movq %rcx, 0x30(%rax)
leaq 0x6d9(%rip), %rcx       # 0x6bc6
movq %rcx, 0x58(%rax)
leaq 0x7ab(%rip), %rcx       # 0x6ca3
movq %rcx, 0x60(%rax)
leaq 0x810(%rip), %rcx       # 0x6d13
movq %rcx, 0x68(%rax)
leaq 0x888(%rip), %rcx       # 0x6d96
movq %rcx, 0x70(%rax)
leaq 0x8dc(%rip), %rcx       # 0x6df5
movq %rcx, 0x78(%rax)
leaq 0x90b(%rip), %rcx       # 0x6e2f
movq %rcx, 0x80(%rax)
leaq 0x90a(%rip), %rcx       # 0x6e3c
movq %rcx, 0x88(%rax)
leaq 0x9e4(%rip), %rcx       # 0x6f24
movq %rcx, 0x90(%rax)
leaq 0xa84(%rip), %rcx       # 0x6fd2
movq %rcx, 0x98(%rax)
leaq 0xad9(%rip), %rcx       # 0x7035
movq %rcx, 0x1f0(%rax)
leaq 0xba2(%rip), %rcx       # 0x710c
movq %rcx, 0x1f8(%rax)
leaq 0xbf8(%rip), %rcx       # 0x7170
movq %rcx, 0xa8(%rax)
leaq 0xc23(%rip), %rcx       # 0x71a9
movq %rcx, 0xa0(%rax)
leaq 0xc25(%rip), %rcx       # 0x71b9
movq %rcx, 0xb0(%rax)
leaq 0xc40(%rip), %rcx       # 0x71e2
movq %rcx, 0xb8(%rax)
leaq 0xc74(%rip), %rcx       # 0x7224
movq %rcx, 0xc0(%rax)
movq %rcx, 0xc8(%rax)
leaq 0xc64(%rip), %rcx       # 0x7229
movq %rcx, 0xe0(%rax)
leaq 0xd60(%rip), %rcx       # 0x7333
movq %rcx, 0xe8(%rax)
leaq 0xdfa(%rip), %rcx       # 0x73db
movq %rcx, 0xf0(%rax)
leaq 0x107b(%rip), %rcx      # 0x766a
movq %rcx, 0xf8(%rax)
leaq 0x1288(%rip), %rcx      # 0x7885
movq %rcx, 0x100(%rax)
leaq 0x1405(%rip), %rcx      # 0x7a10
movq %rcx, 0x108(%rax)
leaq 0x158f(%rip), %rcx      # 0x7ba8
movq %rcx, 0x110(%rax)
leaq 0x16d9(%rip), %rcx      # 0x7d00
movq %rcx, 0xd0(%rax)
leaq 0x175f(%rip), %rcx      # 0x7d94
movq %rcx, 0xd8(%rax)
leaq 0x17e0(%rip), %rcx      # 0x7e23
movq %rcx, 0x118(%rax)
leaq 0x184c(%rip), %rcx      # 0x7e9d
movq %rcx, 0x120(%rax)
leaq 0x18ae(%rip), %rcx      # 0x7f0d
movq %rcx, 0x128(%rax)
leaq 0x1969(%rip), %rcx      # 0x7fd6
movq %rcx, 0x130(%rax)
leaq 0x1a0d(%rip), %rcx      # 0x8088
movq %rcx, 0x138(%rax)
leaq 0x1ae2(%rip), %rcx      # 0x816b
movq %rcx, 0x140(%rax)
leaq 0x1ba3(%rip), %rcx      # 0x823a
movq %rcx, 0x148(%rax)
leaq 0x1c15(%rip), %rcx      # 0x82ba
movq %rcx, 0x150(%rax)
leaq 0x1cb0(%rip), %rcx      # 0x8363
movq %rcx, 0x158(%rax)
leaq 0x1d27(%rip), %rcx      # 0x83e8
movq %rcx, 0x160(%rax)
leaq 0x1e08(%rip), %rcx      # 0x84d7
movq %rcx, 0x168(%rax)
leaq 0x1ea8(%rip), %rcx      # 0x8585
movq %rcx, 0x170(%rax)
leaq 0x1fc1(%rip), %rcx      # 0x86ac
movq %rcx, 0x178(%rax)
leaq 0x20b1(%rip), %rcx      # 0x87aa
movq %rcx, 0x180(%rax)
leaq 0x218c(%rip), %rcx      # 0x8893
movq %rcx, 0x188(%rax)
leaq 0x22e1(%rip), %rcx      # 0x89f6
movq %rcx, 0x190(%rax)
leaq 0x2355(%rip), %rcx      # 0x8a78
movq %rcx, 0x1a0(%rax)
leaq 0x23d9(%rip), %rcx      # 0x8b0a
movq %rcx, 0x198(%rax)
leaq 0x244d(%rip), %rcx      # 0x8b8c
movq %rcx, 0x1a8(%rax)
leaq 0x24af(%rip), %rcx      # 0x8bfc
movq %rcx, 0x1b0(%rax)
leaq 0x2557(%rip), %rcx      # 0x8cb2
movq %rcx, 0x1b8(%rax)
leaq 0x2634(%rip), %rcx      # 0x8d9d
movq %rcx, 0x1c0(%rax)
leaq 0x270f(%rip), %rcx      # 0x8e86
movq %rcx, 0x1c8(%rax)
leaq 0x27fe(%rip), %rcx      # 0x8f83
movq %rcx, 0x1d0(%rax)
leaq 0x2926(%rip), %rcx      # 0x90b9
movq %rcx, 0x1d8(%rax)
leaq 0x2a2f(%rip), %rcx      # 0x91d0
movq %rcx, 0x1e0(%rax)
leaq 0x2ad7(%rip), %rcx      # 0x9286
movq %rcx, 0x1e8(%rax)
leaq 0x2b70(%rip), %rcx      # 0x932d
movq %rcx, 0x200(%rax)
leaq 0x2bbb(%rip), %rcx      # 0x9386
movq %rcx, 0x208(%rax)
leaq 0x2c0a(%rip), %rcx      # 0x93e3
movq %rcx, 0x210(%rax)
leaq 0x2c38(%rip), %rcx      # 0x941f
movq %rcx, 0x218(%rax)
leaq 0x2d4e(%rip), %rcx      # 0x9543
movq %rcx, 0x220(%rax)
leaq 0x2d8f(%rip), %rcx      # 0x9592
movq %rcx, 0x228(%rax)
leaq 0x2deb(%rip), %rcx      # 0x95fc
movq %rcx, 0x230(%rax)
leaq 0x2e7e(%rip), %rcx      # 0x969d
movq %rcx, 0x238(%rax)
leaq 0x2ece(%rip), %rcx      # 0x96fb
movq %rcx, 0x240(%rax)
leaq 0x2f79(%rip), %rcx      # 0x97b4
movq %rcx, 0x248(%rax)
leaq 0x3024(%rip), %rcx      # 0x986d
movq %rcx, 0x250(%rax)
leaq 0x3071(%rip), %rcx      # 0x98c8
movq %rcx, 0x258(%rax)
leaq 0x30d7(%rip), %rcx      # 0x993c
movq %rcx, 0x260(%rax)
leaq 0x30f4(%rip), %rcx      # 0x9967
movq %rcx, 0x268(%rax)
leaq 0x3107(%rip), %rcx      # 0x9988
movq %rcx, 0x270(%rax)
testq %rbx, %rbx
je 0x689e
leaq 0x8(%rsp), %rdi
movq %rbx, %rsi
callq 0x6bc6
testl %eax, %eax
js 0x68ba
movq 0x8(%rsp), %rax
jmp 0x68b4
leaq 0xa9cc(%rip), %rax      # 0x11278
movl $0xfffffffd, (%rax)     # imm = 0xFFFFFFFD
xorl %eax, %eax
addq $0x10, %rsp
popq %rbx
retq
movq 0x8(%rsp), %rdi
leaq 0xa9b2(%rip), %rax      # 0x11278
movl $0xfffffffd, (%rax)     # imm = 0xFFFFFFFD
testq %rdi, %rdi
je 0x68b2
callq 0x21a0
jmp 0x68b2