// File: /workspace/github_c_makefile_star2_O0/robertdavidgraham[P]wc2/wc2.c
// Function: build_unicode
void build_unicode(unsigned char default_state, unsigned ubase)
{
    size_t i;

    build_basic(table[ubase + ILLEGAL], default_state, ubase);

    /*
     * Two byte
     */
    build_urow(ubase, DUO2_xx, 0);
    build_urow(ubase, DUO2_C2, 0);

    /*
     * Three byte
     */
    build_urow(ubase, TRI2_E0, TRI3_E0_xx);
    build_urow(ubase, TRI2_E1, TRI3_E1_xx);
    build_urow(ubase, TRI2_E2, TRI3_E2_xx);
    build_urow(ubase, TRI2_E3, TRI3_E3_xx);
    build_urow(ubase, TRI2_ED, TRI3_Ed_xx);
    build_urow(ubase, TRI2_EE, TRI3_Ee_xx);
    build_urow(ubase, TRI2_xx, TRI3_xx_xx);

    build_urow(ubase, TRI3_E0_xx, 0);
    build_urow(ubase, TRI3_E1_xx, 0);
    build_urow(ubase, TRI3_E1_9a, 0);
    build_urow(ubase, TRI3_E2_80, 0);
    build_urow(ubase, TRI3_E2_81, 0);
    build_urow(ubase, TRI3_E2_xx, 0);
    build_urow(ubase, TRI3_E3_80, 0);
    build_urow(ubase, TRI3_E3_81, 0);
    build_urow(ubase, TRI3_E3_xx, 0);
    build_urow(ubase, TRI3_Ed_xx, 0);
    build_urow(ubase, TRI3_Ee_xx, 0);
    build_urow(ubase, TRI3_xx_xx, 0);

    table[ubase + TRI2_E1][0x9a] = ubase + TRI3_E1_9a;
    table[ubase + TRI2_E2][0x80] = ubase + TRI3_E2_80;
    table[ubase + TRI2_E2][0x81] = ubase + TRI3_E2_81;
    table[ubase + TRI2_E3][0x80] = ubase + TRI3_E3_80;
    table[ubase + TRI2_E3][0x81] = ubase + TRI3_E3_81;


    /*
     * Four byte
     */
    build_urow(ubase, QUAD2_xx, QUAD3_xx_xx);
    build_urow(ubase, QUAD2_F0, QUAD3_F0_xx);
    build_urow(ubase, QUAD2_F4, QUAD3_F4_xx);

    build_urow(ubase, QUAD3_xx_xx, QUAD4_xx_xx_xx);
    build_urow(ubase, QUAD3_F0_xx, QUAD4_F0_xx_xx);
    build_urow(ubase, QUAD3_F4_xx, QUAD4_F4_xx_xx);

    build_urow(ubase, QUAD4_xx_xx_xx, 0);
    build_urow(ubase, QUAD4_F0_xx_xx, 0);
    build_urow(ubase, QUAD4_F4_xx_xx, 0);

    /*
     * Mark Unicode spaces
     */
    if (iswspace(0x0085))
        table[ubase + DUO2_C2][0x85] = WASSPACE;
    if (iswspace(0x00A0))
        table[ubase + DUO2_C2][0xA0] = WASSPACE;
    if (iswspace(0x1680)) /* 0x1680 = 0xe1 0x9a 0x80 = OGHAM SPACE MARK*/
        table[ubase + TRI3_E1_9a][0x80] = WASSPACE;
    for (i=0x2000; i<0x200b+1; i++) {
        if (iswspace(i))
            table[ubase + TRI3_E2_80][0x80 + (i&0x6F)] = WASSPACE;
    }
    if (iswspace(0x2028))
        table[ubase + TRI3_E2_80][0xA8] = WASSPACE;
    if (iswspace(0x2029))
        table[ubase + TRI3_E2_80][0xA9] = WASSPACE;
    if (iswspace(0x202F))
        table[ubase + TRI3_E2_80][0xAF] = WASSPACE;
    if (iswspace(0x205F))
        table[ubase + TRI3_E2_81][0x9F] = WASSPACE;
    if (iswspace(0x3000))
        table[ubase + TRI3_E3_80][0x80] = WASSPACE;


    /*
     * Mark illegal sequences
     *
     * The following need to be marked as illegal because they can
     * be represented with a shorter string. In other words,
     * 0xC0 0x81 is the same as 0x01, so needs to be marked as an
     * illegal sequence.
     */
    for (i=0x80; i<0xA0; i++) {
        table[ubase + TRI2_E0][i] = ubase + ILLEGAL;
    }
    for (i=0x80; i<0x90; i++) {
        table[ubase + QUAD2_F0][i] = ubase + ILLEGAL;
    }
    /* Exceeds max possible size of unicode character */
    for (i=0x90; i<0xC0; i++) {
        table[ubase + QUAD2_F4][i] = ubase + ILLEGAL;
    }
    /* Surrogate space */
    for (i=0xA0; i<0xC0; i++) {
        table[ubase + TRI2_ED][i] = ubase + ILLEGAL;
    }

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movb %dil, %al
movb %al, -0x1(%rbp)
movl %esi, -0x8(%rbp)
movl -0x8(%rbp), %eax
addl $0x1e, %eax
movl %eax, %eax
leaq 0x3a40(%rip), %rdi      # 0x50f0
shlq $0x8, %rax
addq %rax, %rdi
movb -0x1(%rbp), %cl
movl -0x8(%rbp), %eax
movzbl %cl, %esi
movzbl %al, %edx
callq 0x12d0
movl -0x8(%rbp), %edi
xorl %edx, %edx
movl %edx, %esi
callq 0x1580
movl -0x8(%rbp), %edi
movl $0x1, %esi
xorl %edx, %edx
callq 0x1580
movl -0x8(%rbp), %edi
movl $0x2, %esi
movl $0x9, %edx
callq 0x1580
movl -0x8(%rbp), %edi
movl $0x3, %esi
movl $0xa, %edx
callq 0x1580
movl -0x8(%rbp), %edi
movl $0x4, %esi
movl $0xe, %edx
callq 0x1580
movl -0x8(%rbp), %edi
movl $0x5, %esi
movl $0x11, %edx
callq 0x1580
movl -0x8(%rbp), %edi
movl $0x6, %esi
movl $0x12, %edx
callq 0x1580
movl -0x8(%rbp), %edi
movl $0x7, %esi
movl $0x13, %edx
callq 0x1580
movl -0x8(%rbp), %edi
movl $0x8, %esi
movl $0x14, %edx
callq 0x1580
movl -0x8(%rbp), %edi
movl $0x9, %esi
xorl %edx, %edx
callq 0x1580
movl -0x8(%rbp), %edi
movl $0xa, %esi
xorl %edx, %edx
callq 0x1580
movl -0x8(%rbp), %edi
movl $0xb, %esi
xorl %edx, %edx
callq 0x1580
movl -0x8(%rbp), %edi
movl $0xc, %esi
xorl %edx, %edx
callq 0x1580
movl -0x8(%rbp), %edi
movl $0xd, %esi
xorl %edx, %edx
callq 0x1580
movl -0x8(%rbp), %edi
movl $0xe, %esi
xorl %edx, %edx
callq 0x1580
movl -0x8(%rbp), %edi
movl $0xf, %esi
xorl %edx, %edx
callq 0x1580
movl -0x8(%rbp), %edi
movl $0x10, %esi
xorl %edx, %edx
callq 0x1580
movl -0x8(%rbp), %edi
movl $0x11, %esi
xorl %edx, %edx
callq 0x1580
movl -0x8(%rbp), %edi
movl $0x12, %esi
xorl %edx, %edx
callq 0x1580
movl -0x8(%rbp), %edi
movl $0x13, %esi
xorl %edx, %edx
callq 0x1580
movl -0x8(%rbp), %edi
movl $0x14, %esi
xorl %edx, %edx
callq 0x1580
movl -0x8(%rbp), %eax
addl $0xb, %eax
movb %al, %cl
movl -0x8(%rbp), %eax
addl $0x3, %eax
movl %eax, %eax
movl %eax, %edx
leaq 0x38c2(%rip), %rax      # 0x50f0
shlq $0x8, %rdx
addq %rdx, %rax
movb %cl, 0x9a(%rax)
movl -0x8(%rbp), %eax
addl $0xc, %eax
movb %al, %cl
movl -0x8(%rbp), %eax
addl $0x4, %eax
movl %eax, %eax
movl %eax, %edx
leaq 0x389c(%rip), %rax      # 0x50f0
shlq $0x8, %rdx
addq %rdx, %rax
movb %cl, 0x80(%rax)
movl -0x8(%rbp), %eax
addl $0xd, %eax
movb %al, %cl
movl -0x8(%rbp), %eax
addl $0x4, %eax
movl %eax, %eax
movl %eax, %edx
leaq 0x3876(%rip), %rax      # 0x50f0
shlq $0x8, %rdx
addq %rdx, %rax
movb %cl, 0x81(%rax)
movl -0x8(%rbp), %eax
addl $0xf, %eax
movb %al, %cl
movl -0x8(%rbp), %eax
addl $0x5, %eax
movl %eax, %eax
movl %eax, %edx
leaq 0x3850(%rip), %rax      # 0x50f0
shlq $0x8, %rdx
addq %rdx, %rax
movb %cl, 0x80(%rax)
movl -0x8(%rbp), %eax
addl $0x10, %eax
movb %al, %cl
movl -0x8(%rbp), %eax
addl $0x5, %eax
movl %eax, %eax
movl %eax, %edx
leaq 0x382a(%rip), %rax      # 0x50f0
shlq $0x8, %rdx
addq %rdx, %rax
movb %cl, 0x81(%rax)
movl -0x8(%rbp), %edi
movl $0x15, %esi
movl $0x18, %edx
callq 0x1580
movl -0x8(%rbp), %edi
movl $0x16, %esi
movl $0x19, %edx
callq 0x1580
movl -0x8(%rbp), %edi
movl $0x17, %esi
movl $0x1a, %edx
callq 0x1580
movl -0x8(%rbp), %edi
movl $0x18, %esi
movl $0x1b, %edx
callq 0x1580
movl -0x8(%rbp), %edi
movl $0x19, %esi
movl $0x1c, %edx
callq 0x1580
movl -0x8(%rbp), %edi
movl $0x1a, %esi
movl $0x1d, %edx
callq 0x1580
movl -0x8(%rbp), %edi
movl $0x1b, %esi
xorl %edx, %edx
callq 0x1580
movl -0x8(%rbp), %edi
movl $0x1c, %esi
xorl %edx, %edx
callq 0x1580
movl -0x8(%rbp), %edi
movl $0x1d, %esi
xorl %edx, %edx
callq 0x1580
movl $0x85, %edi
callq 0x1150
cmpl $0x0, %eax
je 0x199a
movl -0x8(%rbp), %eax
addl $0x1, %eax
movl %eax, %eax
movl %eax, %ecx
leaq 0x3764(%rip), %rax      # 0x50f0
shlq $0x8, %rcx
addq %rcx, %rax
movb $0x0, 0x85(%rax)
movl $0xa0, %edi
callq 0x1150
cmpl $0x0, %eax
je 0x19c8
movl -0x8(%rbp), %eax
addl $0x1, %eax
movl %eax, %eax
movl %eax, %ecx
leaq 0x3736(%rip), %rax      # 0x50f0
shlq $0x8, %rcx
addq %rcx, %rax
movb $0x0, 0xa0(%rax)
movl $0x1680, %edi           # imm = 0x1680
callq 0x1150
cmpl $0x0, %eax
je 0x19f6
movl -0x8(%rbp), %eax
addl $0xb, %eax
movl %eax, %eax
movl %eax, %ecx
leaq 0x3708(%rip), %rax      # 0x50f0
shlq $0x8, %rcx
addq %rcx, %rax
movb $0x0, 0x80(%rax)
movq $0x2000, -0x10(%rbp)    # imm = 0x2000
cmpq $0x200c, -0x10(%rbp)    # imm = 0x200C
jae 0x1a53
movq -0x10(%rbp), %rax
movl %eax, %edi
callq 0x1150
cmpl $0x0, %eax
je 0x1a43
movl -0x8(%rbp), %eax
addl $0xc, %eax
movl %eax, %eax
movl %eax, %ecx
leaq 0x36c7(%rip), %rax      # 0x50f0
shlq $0x8, %rcx
addq %rcx, %rax
movq -0x10(%rbp), %rcx
andq $0x6f, %rcx
addq $0x80, %rcx
movb $0x0, (%rax,%rcx)
jmp 0x1a45
movq -0x10(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x10(%rbp)
jmp 0x19fe
movl $0x2028, %edi           # imm = 0x2028
callq 0x1150
cmpl $0x0, %eax
je 0x1a81
movl -0x8(%rbp), %eax
addl $0xc, %eax
movl %eax, %eax
movl %eax, %ecx
leaq 0x367d(%rip), %rax      # 0x50f0
shlq $0x8, %rcx
addq %rcx, %rax
movb $0x0, 0xa8(%rax)
movl $0x2029, %edi           # imm = 0x2029
callq 0x1150
cmpl $0x0, %eax
je 0x1aaf
movl -0x8(%rbp), %eax
addl $0xc, %eax
movl %eax, %eax
movl %eax, %ecx
leaq 0x364f(%rip), %rax      # 0x50f0
shlq $0x8, %rcx
addq %rcx, %rax
movb $0x0, 0xa9(%rax)
movl $0x202f, %edi           # imm = 0x202F
callq 0x1150
cmpl $0x0, %eax
je 0x1add
movl -0x8(%rbp), %eax
addl $0xc, %eax
movl %eax, %eax
movl %eax, %ecx
leaq 0x3621(%rip), %rax      # 0x50f0
shlq $0x8, %rcx
addq %rcx, %rax
movb $0x0, 0xaf(%rax)
movl $0x205f, %edi           # imm = 0x205F
callq 0x1150
cmpl $0x0, %eax
je 0x1b0b
movl -0x8(%rbp), %eax
addl $0xd, %eax
movl %eax, %eax
movl %eax, %ecx
leaq 0x35f3(%rip), %rax      # 0x50f0
shlq $0x8, %rcx
addq %rcx, %rax
movb $0x0, 0x9f(%rax)
movl $0x3000, %edi           # imm = 0x3000
callq 0x1150
cmpl $0x0, %eax
je 0x1b39
movl -0x8(%rbp), %eax
addl $0xf, %eax
movl %eax, %eax
movl %eax, %ecx
leaq 0x35c5(%rip), %rax      # 0x50f0
shlq $0x8, %rcx
addq %rcx, %rax
movb $0x0, 0x80(%rax)
movq $0x80, -0x10(%rbp)
cmpq $0xa0, -0x10(%rbp)
jae 0x1b80
movl -0x8(%rbp), %eax
addl $0x1e, %eax
movb %al, %dl
movl -0x8(%rbp), %eax
addl $0x2, %eax
movl %eax, %eax
movl %eax, %ecx
leaq 0x358c(%rip), %rax      # 0x50f0
shlq $0x8, %rcx
addq %rcx, %rax
movq -0x10(%rbp), %rcx
movb %dl, (%rax,%rcx)
movq -0x10(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x10(%rbp)
jmp 0x1b41
movq $0x80, -0x10(%rbp)
cmpq $0x90, -0x10(%rbp)
jae 0x1bc7
movl -0x8(%rbp), %eax
addl $0x1e, %eax
movb %al, %dl
movl -0x8(%rbp), %eax
addl $0x16, %eax
movl %eax, %eax
movl %eax, %ecx
leaq 0x3545(%rip), %rax      # 0x50f0
shlq $0x8, %rcx
addq %rcx, %rax
movq -0x10(%rbp), %rcx
movb %dl, (%rax,%rcx)
movq -0x10(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x10(%rbp)
jmp 0x1b88
movq $0x90, -0x10(%rbp)
cmpq $0xc0, -0x10(%rbp)
jae 0x1c0e
movl -0x8(%rbp), %eax
addl $0x1e, %eax
movb %al, %dl
movl -0x8(%rbp), %eax
addl $0x17, %eax
movl %eax, %eax
movl %eax, %ecx
leaq 0x34fe(%rip), %rax      # 0x50f0
shlq $0x8, %rcx
addq %rcx, %rax
movq -0x10(%rbp), %rcx
movb %dl, (%rax,%rcx)
movq -0x10(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x10(%rbp)
jmp 0x1bcf
movq $0xa0, -0x10(%rbp)
cmpq $0xc0, -0x10(%rbp)
jae 0x1c55
movl -0x8(%rbp), %eax
addl $0x1e, %eax
movb %al, %dl
movl -0x8(%rbp), %eax
addl $0x6, %eax
movl %eax, %eax
movl %eax, %ecx
leaq 0x34b7(%rip), %rax      # 0x50f0
shlq $0x8, %rcx
addq %rcx, %rax
movq -0x10(%rbp), %rcx
movb %dl, (%rax,%rcx)
movq -0x10(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x10(%rbp)
jmp 0x1c16
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax,%rax)