// File: /workspace/github_c_makefile_star2_O1/ccxvii[P]mujs/./jsfunction.c
// Function: jsB_Function
static void jsB_Function(js_State *J)
{
	int i, top = js_gettop(J);
	js_Buffer *sb = NULL;
	const char *body;
	js_Ast *parse;
	js_Function *fun;

	if (js_try(J)) {
		js_free(J, sb);
		jsP_freeparse(J);
		js_throw(J);
	}

	/* p1, p2, ..., pn */
	if (top > 2) {
		for (i = 1; i < top - 1; ++i) {
			if (i > 1)
				js_putc(J, &sb, ',');
			js_puts(J, &sb, js_tostring(J, i));
		}
		js_putc(J, &sb, ')');
		js_putc(J, &sb, 0);
	}

	/* body */
	body = js_isdefined(J, top - 1) ? js_tostring(J, top - 1) : "";

	parse = jsP_parsefunction(J, "[string]", sb ? sb->s : NULL, body);
	fun = jsC_compilefunction(J, parse);

	js_endtry(J);
	js_free(J, sb);
	jsP_freeparse(J);

	js_newfunction(J, fun, J->GE);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rdi, %rbx
movl 0x140(%rdi), %r12d
subl 0x144(%rdi), %r12d
movq $0x0, 0x8(%rsp)
callq 0x13fbb
movq %rax, %rdi
callq 0x3100
testl %eax, %eax
jne 0xd78c
leaq 0x140(%rbx), %rdx
leaq 0x144(%rbx), %rcx
cmpl $0x3, %r12d
jl 0xd6b5
movq %rcx, 0x18(%rsp)
movq %rdx, 0x20(%rsp)
movl %r12d, 0x14(%rsp)
movl %r12d, %eax
leal -0x2(%rax), %r13d
movl $0x1, %eax
leaq 0x8(%rsp), %r14
movl $0x2c, %r12d
movl %eax, %r15d
cmpl $0x2, %eax
jb 0xd649
movq %rbx, %rdi
movq %r14, %rsi
movl %r12d, %edx
callq 0xe0bc
movq %rbx, %rdi
movl %r15d, %esi
callq 0x14963
movb (%rax), %cl
testb %cl, %cl
je 0xd67a
movq %rax, %rbp
incq %rbp
movsbl %cl, %edx
movq %rbx, %rdi
movq %r14, %rsi
callq 0xe0bc
movb (%rbp), %dl
incq %rbp
movl %edx, %ecx
testb %dl, %dl
jne 0xd660
movl %r15d, %eax
incl %eax
cmpl %r13d, %r15d
jne 0xd633
leaq 0x8(%rsp), %r14
movq %rbx, %rdi
movq %r14, %rsi
movl $0x29, %edx
callq 0xe0bc
movq %rbx, %rdi
movq %r14, %rsi
xorl %edx, %edx
callq 0xe0bc
movl 0x14(%rsp), %r12d
movq 0x20(%rsp), %rdx
movq 0x18(%rsp), %rcx
movl %r12d, %eax
leal -0x1(%rax), %esi
testl %r12d, %r12d
movq %rcx, %rax
cmovleq %rdx, %rax
movl (%rax), %eax
addl %esi, %eax
leaq 0x32d28(%rip), %rcx     # 0x403f8
js 0xd6e6
cmpl (%rdx), %eax
jge 0xd6e6
movl %eax, %eax
shlq $0x4, %rax
addq 0x148(%rbx), %rax
movq %rax, %rcx
cmpb $0x1, 0xf(%rcx)
jne 0xd6f5
leaq 0x26c93(%rip), %rcx     # 0x34386
jmp 0xd700
movq %rbx, %rdi
callq 0x14963
movq %rax, %rcx
movq 0x8(%rsp), %r14
leaq 0x8(%r14), %rdx
testq %r14, %r14
cmoveq %r14, %rdx
leaq 0x1da19(%rip), %rsi     # 0x2b130
movq %rbx, %rdi
callq 0x12452
movl 0x4(%rax), %esi
movq 0x10(%rax), %rdx
movq 0x18(%rax), %rcx
movq 0x20(%rax), %r8
movl 0x30(%rbx), %eax
movq %rbx, %rdi
xorl %r9d, %r9d
pushq $0x1
pushq %rax
callq 0x8fb5
addq $0x10, %rsp
movl 0x8198(%rbx), %ecx
testl %ecx, %ecx
je 0xd7a6
movq %rax, %r15
decl %ecx
movl %ecx, 0x8198(%rbx)
movq (%rbx), %rdi
movq %r14, %rsi
xorl %edx, %edx
callq *0x10(%rbx)
movq %rbx, %rdi
callq 0x12096
movq 0x138(%rbx), %rdx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x1a654
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq (%rbx), %rdi
xorl %edx, %edx
movl %edx, %esi
callq *0x10(%rbx)
movq %rbx, %rdi
callq 0x12096
movq %rbx, %rdi
callq 0x8ec6
leaq 0x2605c(%rip), %rsi     # 0x33809
xorl %eax, %eax
movq %rbx, %rdi
callq 0xc939