// File: Joke-Shi[P]astrunc/sample/../include/astrunc.h
// Function: astrunc::access::split(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, astrunc::access::lang_t, unsigned long)
int astrunc::access::split( std::vector< std::string > &__vs, const std::string &__seg, astrunc::access::lang_t __lang, std::size_t __nchars)
{
    int rc = 0;
    if ( 0 >= __nchars) { __nchars = 256; }

    if ( !__seg.empty()) {
        if ( ( astrunc::access::JA == __lang ) ||
             ( astrunc::access::TW == __lang ) ||
             ( astrunc::access::ZH == __lang )
           ) {
            /** West language */
            rc = astrunc::access::split_west( __vs, __seg, __nchars);

        } else if ( (astrunc::access::EN  == __lang) ||
                    (astrunc::access::AF  == __lang) ||
                    (astrunc::access::AZ  == __lang) ||
                    (astrunc::access::BE  == __lang) ||
                    (astrunc::access::BG  == __lang) ||
                    (astrunc::access::CA  == __lang) ||
                    (astrunc::access::CS  == __lang) ||
                    (astrunc::access::DA  == __lang) ||
                    (astrunc::access::DE  == __lang) ||
                    (astrunc::access::DIV == __lang) ||
                    (astrunc::access::EE  == __lang) ||
                    (astrunc::access::EL  == __lang) ||
                    (astrunc::access::ES  == __lang) ||
                    (astrunc::access::ET  == __lang) ||
                    (astrunc::access::EU  == __lang) ||
                    (astrunc::access::FO  == __lang) ||
                    (astrunc::access::FI  == __lang) ||
                    (astrunc::access::FR  == __lang) ||
                    (astrunc::access::GL  == __lang) ||
                    (astrunc::access::GU  == __lang) ||
                    (astrunc::access::HE  == __lang) ||
                    (astrunc::access::HR  == __lang) ||
                    (astrunc::access::HU  == __lang) ||
                    (astrunc::access::ID  == __lang) ||
                    (astrunc::access::IS  == __lang) ||
                    (astrunc::access::IT  == __lang) ||
                    (astrunc::access::KA  == __lang) ||
                    (astrunc::access::KN  == __lang) ||
                    (astrunc::access::KK  == __lang) ||
                    (astrunc::access::KO  == __lang) ||
                    (astrunc::access::KY  == __lang) ||
                    (astrunc::access::LA  == __lang) ||
                    (astrunc::access::LV  == __lang) ||
                    (astrunc::access::MK  == __lang) ||
                    (astrunc::access::MS  == __lang) ||
                    (astrunc::access::MR  == __lang) ||
                    (astrunc::access::NL  == __lang) ||
                    (astrunc::access::NO  == __lang) ||
                    (astrunc::access::PL  == __lang) ||
                    (astrunc::access::PT  == __lang) ||
                    (astrunc::access::RO  == __lang) ||
                    (astrunc::access::RU  == __lang) ||
                    (astrunc::access::RZ  == __lang) ||
                    (astrunc::access::SA  == __lang) ||
                    (astrunc::access::SK  == __lang) ||
                    (astrunc::access::SL  == __lang) ||
                    (astrunc::access::SR  == __lang) ||
                    (astrunc::access::SW  == __lang) ||
                    (astrunc::access::SV  == __lang) ||
                    (astrunc::access::SY  == __lang) ||
                    (astrunc::access::TA  == __lang) ||
                    (astrunc::access::TE  == __lang) ||
                    (astrunc::access::TR  == __lang) ||
                    (astrunc::access::TT  == __lang) ||
                    (astrunc::access::UK  == __lang) ||
                    (astrunc::access::VI  == __lang)
                  ) {
            /** East language */
            rc = astrunc::access::split_east( __vs, __seg, __nchars);

        } else if ( astrunc::access::BO == __lang) {
            /** Tibetan - 藏语 */

        } else if ( (astrunc::access::AR == __lang) ||
                    (astrunc::access::FA == __lang) ||
                    (astrunc::access::UG == __lang) ||
                    (astrunc::access::UR == __lang)
                  ) {
            /** Arab - 阿拉伯, Persia - 波斯语，Uygur - 维语，Urdu - 乌尔都 */
            rc = astrunc::access::split_east( __vs, __seg, __nchars);

        } else if ( (astrunc::access::HI == __lang) ||
                    (astrunc::access::PA == __lang) ||
                    (astrunc::access::SA == __lang)
                  ) {
            /** North india - 北印度，India - 印度，Sanskrit - 梵文 */
            rc = astrunc::access::split_india( __vs, __seg, __nchars);

        } else if ( astrunc::access::HY == __lang) {
            /** Armenia - 亚美尼亚 */
            rc = astrunc::access::split_armenia( __vs, __seg, __nchars);

        } else if ( astrunc::access::TH == __lang) {
            /** Thai - 泰语 */
            rc = astrunc::access::split_east( __vs, __seg, __nchars);

        } else {
            /** Default west langauge split */
            rc = astrunc::access::split_west( __vs, __seg, __nchars);
        }
    }


    return rc;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movq %rcx, -0x20(%rbp)
movl $0x0, -0x24(%rbp)
xorl %eax, %eax
cmpq -0x20(%rbp), %rax
jb 0x49fe
movq $0x100, -0x20(%rbp)     # imm = 0x100
movq -0x10(%rbp), %rdi
callq 0x2290
testb $0x1, %al
jne 0x4e21
movl $0x20, %eax
cmpl -0x14(%rbp), %eax
je 0x4a2d
movl $0x41, %eax
cmpl -0x14(%rbp), %eax
je 0x4a2d
movl $0x46, %eax
cmpl -0x14(%rbp), %eax
jne 0x4a46
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x4e30
movl %eax, -0x24(%rbp)
jmp 0x4e1f
movl $0xe, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x1, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x3, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x4, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x5, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x7, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x8, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x9, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0xa, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0xb, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0xc, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0xd, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0xf, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x10, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x11, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x13, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x14, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x15, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x16, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x17, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x18, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x1b, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x1c, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x1d, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x1e, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x1f, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x21, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x22, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x23, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x24, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x25, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x26, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x27, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x28, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x29, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x2a, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x2c, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x2d, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x2e, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x2f, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x31, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x32, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x33, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x34, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x36, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x37, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x38, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x39, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x3a, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x3b, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x3c, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x3d, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x3f, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x40, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x42, %eax
cmpl -0x14(%rbp), %eax
je 0x4d22
movl $0x45, %eax
cmpl -0x14(%rbp), %eax
jne 0x4d3b
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x5ed0
movl %eax, -0x24(%rbp)
jmp 0x4e1d
movl $0x6, %eax
cmpl -0x14(%rbp), %eax
jne 0x4d4a
jmp 0x4e1b
movl $0x2, %eax
cmpl -0x14(%rbp), %eax
je 0x4d72
movl $0x12, %eax
cmpl -0x14(%rbp), %eax
je 0x4d72
movl $0x43, %eax
cmpl -0x14(%rbp), %eax
je 0x4d72
movl $0x44, %eax
cmpl -0x14(%rbp), %eax
jne 0x4d8b
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x5ed0
movl %eax, -0x24(%rbp)
jmp 0x4e19
movl $0x19, %eax
cmpl -0x14(%rbp), %eax
je 0x4da9
movl $0x30, %eax
cmpl -0x14(%rbp), %eax
je 0x4da9
movl $0x34, %eax
cmpl -0x14(%rbp), %eax
jne 0x4dbf
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x6d50
movl %eax, -0x24(%rbp)
jmp 0x4e17
movl $0x1a, %eax
cmpl -0x14(%rbp), %eax
jne 0x4ddf
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x7a50
movl %eax, -0x24(%rbp)
jmp 0x4e15
movl $0x3e, %eax
cmpl -0x14(%rbp), %eax
jne 0x4dff
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x5ed0
movl %eax, -0x24(%rbp)
jmp 0x4e13
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x4e30
movl %eax, -0x24(%rbp)
jmp 0x4e15
jmp 0x4e17
jmp 0x4e19
jmp 0x4e1b
jmp 0x4e1d
jmp 0x4e1f
jmp 0x4e21
movl -0x24(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nopw (%rax,%rax)