// File: /workspace/github_c_makefile_star2_O2/stetre[P]moonfreetype/src/outline.c
// Function: moonfreetype_pushoutlinedata
int pushoutlinedata(lua_State *L, FT_Outline outline)
    {
    short i;
    lua_newtable(L);
#if 0
    lua_pushinteger(L, outline.n_contours); // #contours
    lua_setfield(L, -2, "n_contours");
    lua_pushinteger(L, outline.n_points); // #points
    lua_setfield(L, -2, "n_points");
#endif
    /* points */
    lua_newtable(L);
    for(i = 0; i < outline.n_points; i++)
        {
        pushvector(L, outline.points[i]);
        lua_seti(L, -2, i+1);
        }
    lua_setfield(L, -2, "points");
    /* tags */
    lua_newtable(L);
    for(i = 0; i < outline.n_points; i++)
        {
        lua_pushinteger(L, outline.tags[i]);
        lua_seti(L, -2, i+1);
        }
    lua_setfield(L, -2, "tags");
    lua_newtable(L);
    for(i = 0; i < outline.n_points; i++)
        {
        pushpointtype(L,  outline.tags[i]);
        lua_seti(L, -2, i+1);
        }
    lua_setfield(L, -2, "type");
    lua_newtable(L);
    for(i = 0; i < outline.n_points; i++)
        {
        pushscanmode(L,  outline.tags[i]);
        lua_seti(L, -2, i+1);
        }
    lua_setfield(L, -2, "scanmode");
    /* contours */
    lua_newtable(L);
    for(i = 0; i < outline.n_contours; i++)
        {
        pushindex(L, outline.contours[i]);
        lua_seti(L, -2, i+1);
        }
    lua_setfield(L, -2, "contours");
    pushflags(L, outline.flags); // outlineflags
    lua_setfield(L, -2, "flags");
    return 1;   
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
leaq 0x40(%rsp), %r13
xorl %ebp, %ebp
xorl %esi, %esi
xorl %edx, %edx
callq 0x73d0
movq %rbx, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x73d0
movzwl 0x2(%r13), %eax
movq 0x8(%r13), %r15
testw %ax, %ax
cmovgl %eax, %ebp
movzwl %bp, %r12d
negq %r12
addq $0x8, %r15
pushq $0x1
popq %r14
pushq $-0x2
popq %rbp
leaq (%r12,%r14), %rax
cmpq $0x1, %rax
je 0xe2e5
movq -0x8(%r15), %rsi
movq (%r15), %rdx
movq %rbx, %rdi
callq 0x7bb0
movq %rbx, %rdi
movl %ebp, %esi
movq %r14, %rdx
callq 0x76b0
incq %r14
addq $0x10, %r15
jmp 0xe2b6
leaq 0x5065(%rip), %rdx      # 0x13351
pushq $-0x2
popq %rbp
movq %rbx, %rdi
movl %ebp, %esi
callq 0x74f0
movq %rbx, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x73d0
movq 0x10(%r13), %r13
pushq $0x1
popq %r14
leaq (%r12,%r14), %rax
cmpq $0x1, %rax
je 0xe337
movsbq -0x1(%r13,%r14), %rsi
movq %rbx, %rdi
callq 0x7540
movq %rbx, %rdi
movl %ebp, %esi
movq %r14, %rdx
callq 0x76b0
incq %r14
jmp 0xe30d
leaq 0x501a(%rip), %rdx      # 0x13358
pushq $-0x2
popq %rsi
movq %rbx, %rdi
callq 0x74f0
movq %rbx, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x73d0
pushq $0x1
popq %r14
leaq 0x502a(%rip), %r15      # 0x1338a
leaq 0x4c38(%rip), %rbp      # 0x12f9f
leaq (%r12,%r14), %rax
cmpq $0x1, %rax
je 0xe3a6
movzbl -0x1(%r13,%r14), %eax
movq %r15, %rsi
testb $0x2, %al
je 0xe385
leaq 0x4fff(%rip), %rsi      # 0x13384
testb $0x1, %al
cmovneq %rbp, %rsi
movq %rbx, %rdi
callq 0x7cb0
movq %rbx, %rdi
pushq $-0x2
popq %rsi
movq %r14, %rdx
callq 0x76b0
incq %r14
jmp 0xe367
leaq 0x5596(%rip), %rdx      # 0x13943
pushq $-0x2
popq %rbp
movq %rbx, %rdi
movl %ebp, %esi
callq 0x74f0
movq %rbx, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x73d0
pushq $0x1
popq %r14
leaq 0x3275(%rip), %r15      # 0x11646
leaq (%r12,%r14), %rax
cmpq $0x1, %rax
je 0xe426
movzbl -0x1(%r13,%r14), %eax
movq %r15, %rsi
testb $0x4, %al
je 0xe40c
andl $0x18, %eax
leaq 0x4fa6(%rip), %rsi      # 0x13398
cmpl $0x10, %eax
je 0xe3fe
leaq 0x4fa2(%rip), %rsi      # 0x133a0
cmpl $0x8, %eax
leaq 0x4f88(%rip), %rax      # 0x13390
cmoveq %rax, %rsi
movq %rbx, %rdi
callq 0x7cb0
movq %rbx, %rdi
movl %ebp, %esi
movq %r14, %rdx
callq 0x76b0
incq %r14
jmp 0xe3d1
leaq 0x4f30(%rip), %rdx      # 0x1335d
pushq $-0x2
popq %rbp
movq %rbx, %rdi
movl %ebp, %esi
callq 0x74f0
xorl %r14d, %r14d
movq %rbx, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x73d0
leaq 0x40(%rsp), %r13
movl (%r13), %eax
testw %ax, %ax
cmovgl %eax, %r14d
movq 0x18(%r13), %r15
movzwl %r14w, %r12d
negq %r12
pushq $0x1
popq %r14
leaq (%r12,%r14), %rax
cmpq $0x1, %rax
je 0xe492
movswl -0x2(%r15,%r14,2), %esi
movq %rbx, %rdi
callq 0x7ce0
movq %rbx, %rdi
movl %ebp, %esi
movq %r14, %rdx
callq 0x76b0
incq %r14
jmp 0xe468
leaq 0x4ecd(%rip), %rdx      # 0x13366
pushq $-0x2
popq %rbp
movq %rbx, %rdi
movl %ebp, %esi
callq 0x74f0
movslq 0x20(%r13), %rsi
movq %rbx, %rdi
callq 0x7540
leaq 0x43a8(%rip), %rdx      # 0x12861
movq %rbx, %rdi
movl %ebp, %esi
callq 0x74f0
pushq $0x1
popq %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq