// File: /workspace/github_c_makefile_star2_O2/mirth-lang[P]mirth/bin/mirth1.c
// Function: mw_mirth_token_Token_argsze2
static uint64_t mw_mirth_token_Token_argsze2 (struct mirth_mirth_zaMirth* in_zaMirth_1, uint64_t in_Token_2, struct mirth_mirth_zaMirth* *out_zaMirth_3, uint64_t *out_Token_5) {
	struct mirth_mirth_zaMirth* v6;
	INT v7 = mw_mirth_token_Token_numzeargs(in_zaMirth_1, in_Token_2, &v6);
	INT v8 = WRAP_I63(2LL);
	INT v9 = v8;
	INT v10 = v7;
	bool v11 = int_eq(v10, v9);
	uint64_t branch_Token_12;
	struct mirth_mirth_zaMirth* branch_zaMirth_13;
	uint64_t branch_Token_14;
	if (v11) {
		struct mirth_mirth_zaMirth* v15;
		uint64_t v16 = mw_mirth_token_Token_argszestart(v6, in_Token_2, &v15);
		struct mirth_mirth_zaMirth* v17;
		uint64_t v18 = mw_mirth_token_Token_succ(v15, v16, &v17);
		struct mirth_mirth_zaMirth* v19;
		uint64_t v20 = mw_mirth_token_Token_nextzeargzeend(v17, v18, &v19);
		struct mirth_mirth_zaMirth* v21;
		uint64_t v22 = mw_mirth_token_Token_succ(v19, v20, &v21);
		branch_Token_14 = v22;
		branch_zaMirth_13 = v21;
		branch_Token_12 = v18;
	} else {
		struct mirth_mirth_zaMirth* v23;
		INT v24 = mw_mirth_token_Token_numzeargs(v6, in_Token_2, &v23);
		INT v25 = WRAP_I63(2LL);
		INT v26 = v25;
		INT v27 = v24;
		bool v28 = int_lt(v27, v26);
		uint64_t branch_Token_29;
		struct mirth_mirth_zaMirth* branch_zaMirth_30;
		uint64_t branch_Token_31;
		if (v28) {
			STR* v32;
			STRLIT(v32, "expected 2 args, got too few", 28);
			mw_mirth_mirth_zaMirth_emitzefatalzeerrorzx(v23, in_Token_2, v32);
		} else {
			STR* v36;
			STRLIT(v36, "expected 2 args, got too many", 29);
			mw_mirth_mirth_zaMirth_emitzefatalzeerrorzx(v23, in_Token_2, v36);
		}
	}
	*out_Token_5 = branch_Token_14;
	*out_zaMirth_3 = branch_zaMirth_13;
	return branch_Token_12;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rcx, %r15
movq %rdx, %r14
movq %rsi, %rbx
leaq -0x38(%rbp), %rdx
callq 0x24ee3
pushq $0x5
popq %rsi
movq %rax, %rdi
callq 0xd759
testb %al, %al
je 0x2ed9c
movq -0x38(%rbp), %rdi
leaq -0x30(%rbp), %r12
movq %rbx, %rsi
movq %r12, %rdx
callq 0x24fac
movq (%r12), %rdi
xorl %r13d, %r13d
cmpq %rax, 0x10dd69e(%rip)   # 0x110c3f8
leaq 0x1(%rax), %rbx
cmovbeq %r13, %rbx
leaq -0x40(%rbp), %r12
movq %rbx, %rsi
movq %r12, %rdx
callq 0x251cf
cmpq %rax, 0x10dd680(%rip)   # 0x110c3f8
leaq 0x1(%rax), %rax
cmovbeq %r13, %rax
movq (%r12), %rcx
movq %rax, (%r15)
movq %rcx, (%r14)
movq %rbx, %rax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movabsq $0xfffffffffffc, %r14   # imm = 0xFFFFFFFFFFFC
movq -0x38(%rbp), %rdi
leaq -0x30(%rbp), %rdx
movq %rbx, %rsi
callq 0x24ee3
pushq $0x5
popq %rsi
movq %rax, %rdi
callq 0x89cc
testb %al, %al
je 0x2edec
movq 0x10dd83c(%rip), %rdx   # 0x110c608
testq %rdx, %rdx
jne 0x2ee11
leaq 0xa9bfc(%rip), %rdi     # 0xd89d4
pushq $0x1c
popq %rsi
callq 0x8a21
movq %rax, %rdx
movq %rax, 0x10dd81e(%rip)   # 0x110c608
jmp 0x2ee11
movq 0x10dd81d(%rip), %rdx   # 0x110c610
testq %rdx, %rdx
jne 0x2ee11
leaq 0xa9bf2(%rip), %rdi     # 0xd89f1
pushq $0x1d
popq %rsi
callq 0x8a21
movq %rax, %rdx
movq %rax, 0x10dd7ff(%rip)   # 0x110c610
andq %rdx, %r14
sete %al
testb $0x3, %dl
setne %cl
orb %al, %cl
jne 0x2ee24
incl (%r14)
movq -0x30(%rbp), %rdi
movq %rbx, %rsi
callq 0x246fe