// File: /workspace/github_c_makefile_star2_O3/mirth-lang[P]mirth/bin/mirth1.c
// Function: mw_mirth_lexer_zaLexer_intzesuffixzy
static struct std_maybe_Maybe_1 mw_mirth_lexer_zaLexer_intzesuffixzy (STR* in_zaStr_1, struct mirth_lexer_zaLexer* in_zaLexer_2, INT in_Offset_3, STR* *out_zaStr_4, struct mirth_lexer_zaLexer* *out_zaLexer_5) {
	STR* v7;
	STR* v8 = mw_std_str_zaStr_dropzeslice(in_zaStr_1, in_Offset_3, &v7);
	struct std_maybe_Maybe_1 v9 = { .tag=std_maybe_Maybe_1_None };
	STR* branch_Str_10;
	struct std_maybe_Maybe_1 branch_Maybe_11;
	switch ((v9).tag) {
		case std_maybe_Maybe_1_None: {
			incref(MKSTR(v8));
			STR* v12;
			STRLIT(v12, "", 0);
			bool v13 = (str_cmp(v8, v12) == 0);
			struct std_maybe_Maybe_1 branch_Maybe_14;
			if (v13) {
				enum mirth_lexer_IntSuffix v15 = mirth_lexer_IntSuffix_Int;
				struct std_maybe_Maybe_1 v16 = mtw_std_maybe_Maybe_1_Some(MK_mirth_lexer_IntSuffix(v15));
				branch_Maybe_14 = v16;
			} else {
				struct std_maybe_Maybe_1 v17 = { .tag=std_maybe_Maybe_1_None };
				branch_Maybe_14 = v17;
			}
			branch_Maybe_11 = branch_Maybe_14;
			branch_Str_10 = v8;
		} break;
		default: {
			branch_Maybe_11 = v9;
			branch_Str_10 = v8;
		} break;
	}
	STR* branch_Str_18;
	struct std_maybe_Maybe_1 branch_Maybe_19;
	switch ((branch_Maybe_11).tag) {
		case std_maybe_Maybe_1_None: {
			incref(MKSTR(branch_Str_10));
			STR* v20;
			STRLIT(v20, "u", 1);
			bool v21 = (str_cmp(branch_Str_10, v20) == 0);
			struct std_maybe_Maybe_1 branch_Maybe_22;
			if (v21) {
				enum mirth_lexer_IntSuffix v23 = mirth_lexer_IntSuffix_Nat;
				struct std_maybe_Maybe_1 v24 = mtw_std_maybe_Maybe_1_Some(MK_mirth_lexer_IntSuffix(v23));
				branch_Maybe_22 = v24;
			} else {
				struct std_maybe_Maybe_1 v25 = { .tag=std_maybe_Maybe_1_None };
				branch_Maybe_22 = v25;
			}
			branch_Maybe_19 = branch_Maybe_22;
			branch_Str_18 = branch_Str_10;
		} break;
		default: {
			branch_Maybe_19 = branch_Maybe_11;
			branch_Str_18 = branch_Str_10;
		} break;
	}
	STR* branch_Str_26;
	struct std_maybe_Maybe_1 branch_Maybe_27;
	switch ((branch_Maybe_19).tag) {
		case std_maybe_Maybe_1_None: {
			incref(MKSTR(branch_Str_18));
			STR* v28;
			STRLIT(v28, "u8", 2);
			bool v29 = (str_cmp(branch_Str_18, v28) == 0);
			struct std_maybe_Maybe_1 branch_Maybe_30;
			if (v29) {
				enum mirth_lexer_IntSuffix v31 = mirth_lexer_IntSuffix_U8;
				struct std_maybe_Maybe_1 v32 = mtw_std_maybe_Maybe_1_Some(MK_mirth_lexer_IntSuffix(v31));
				branch_Maybe_30 = v32;
			} else {
				struct std_maybe_Maybe_1 v33 = { .tag=std_maybe_Maybe_1_None };
				branch_Maybe_30 = v33;
			}
			branch_Maybe_27 = branch_Maybe_30;
			branch_Str_26 = branch_Str_18;
		} break;
		default: {
			branch_Maybe_27 = branch_Maybe_19;
			branch_Str_26 = branch_Str_18;
		} break;
	}
	STR* branch_Str_34;
	struct std_maybe_Maybe_1 branch_Maybe_35;
	switch ((branch_Maybe_27).tag) {
		case std_maybe_Maybe_1_None: {
			incref(MKSTR(branch_Str_26));
			STR* v36;
			STRLIT(v36, "u16", 3);
			bool v37 = (str_cmp(branch_Str_26, v36) == 0);
			struct std_maybe_Maybe_1 branch_Maybe_38;
			if (v37) {
				enum mirth_lexer_IntSuffix v39 = mirth_lexer_IntSuffix_U16;
				struct std_maybe_Maybe_1 v40 = mtw_std_maybe_Maybe_1_Some(MK_mirth_lexer_IntSuffix(v39));
				branch_Maybe_38 = v40;
			} else {
				struct std_maybe_Maybe_1 v41 = { .tag=std_maybe_Maybe_1_None };
				branch_Maybe_38 = v41;
			}
			branch_Maybe_35 = branch_Maybe_38;
			branch_Str_34 = branch_Str_26;
		} break;
		default: {
			branch_Maybe_35 = branch_Maybe_27;
			branch_Str_34 = branch_Str_26;
		} break;
	}
	STR* branch_Str_42;
	struct std_maybe_Maybe_1 branch_Maybe_43;
	switch ((branch_Maybe_35).tag) {
		case std_maybe_Maybe_1_None: {
			incref(MKSTR(branch_Str_34));
			STR* v44;
			STRLIT(v44, "u32", 3);
			bool v45 = (str_cmp(branch_Str_34, v44) == 0);
			struct std_maybe_Maybe_1 branch_Maybe_46;
			if (v45) {
				enum mirth_lexer_IntSuffix v47 = mirth_lexer_IntSuffix_U32;
				struct std_maybe_Maybe_1 v48 = mtw_std_maybe_Maybe_1_Some(MK_mirth_lexer_IntSuffix(v47));
				branch_Maybe_46 = v48;
			} else {
				struct std_maybe_Maybe_1 v49 = { .tag=std_maybe_Maybe_1_None };
				branch_Maybe_46 = v49;
			}
			branch_Maybe_43 = branch_Maybe_46;
			branch_Str_42 = branch_Str_34;
		} break;
		default: {
			branch_Maybe_43 = branch_Maybe_35;
			branch_Str_42 = branch_Str_34;
		} break;
	}
	STR* branch_Str_50;
	struct std_maybe_Maybe_1 branch_Maybe_51;
	switch ((branch_Maybe_43).tag) {
		case std_maybe_Maybe_1_None: {
			incref(MKSTR(branch_Str_42));
			STR* v52;
			STRLIT(v52, "u64", 3);
			bool v53 = (str_cmp(branch_Str_42, v52) == 0);
			struct std_maybe_Maybe_1 branch_Maybe_54;
			if (v53) {
				enum mirth_lexer_IntSuffix v55 = mirth_lexer_IntSuffix_U64;
				struct std_maybe_Maybe_1 v56 = mtw_std_maybe_Maybe_1_Some(MK_mirth_lexer_IntSuffix(v55));
				branch_Maybe_54 = v56;
			} else {
				struct std_maybe_Maybe_1 v57 = { .tag=std_maybe_Maybe_1_None };
				branch_Maybe_54 = v57;
			}
			branch_Maybe_51 = branch_Maybe_54;
			branch_Str_50 = branch_Str_42;
		} break;
		default: {
			branch_Maybe_51 = branch_Maybe_43;
			branch_Str_50 = branch_Str_42;
		} break;
	}
	STR* branch_Str_58;
	struct std_maybe_Maybe_1 branch_Maybe_59;
	switch ((branch_Maybe_51).tag) {
		case std_maybe_Maybe_1_None: {
			incref(MKSTR(branch_Str_50));
			STR* v60;
			STRLIT(v60, "i8", 2);
			bool v61 = (str_cmp(branch_Str_50, v60) == 0);
			struct std_maybe_Maybe_1 branch_Maybe_62;
			if (v61) {
				enum mirth_lexer_IntSuffix v63 = mirth_lexer_IntSuffix_I8;
				struct std_maybe_Maybe_1 v64 = mtw_std_maybe_Maybe_1_Some(MK_mirth_lexer_IntSuffix(v63));
				branch_Maybe_62 = v64;
			} else {
				struct std_maybe_Maybe_1 v65 = { .tag=std_maybe_Maybe_1_None };
				branch_Maybe_62 = v65;
			}
			branch_Maybe_59 = branch_Maybe_62;
			branch_Str_58 = branch_Str_50;
		} break;
		default: {
			branch_Maybe_59 = branch_Maybe_51;
			branch_Str_58 = branch_Str_50;
		} break;
	}
	STR* branch_Str_66;
	struct std_maybe_Maybe_1 branch_Maybe_67;
	switch ((branch_Maybe_59).tag) {
		case std_maybe_Maybe_1_None: {
			incref(MKSTR(branch_Str_58));
			STR* v68;
			STRLIT(v68, "i16", 3);
			bool v69 = (str_cmp(branch_Str_58, v68) == 0);
			struct std_maybe_Maybe_1 branch_Maybe_70;
			if (v69) {
				enum mirth_lexer_IntSuffix v71 = mirth_lexer_IntSuffix_I16;
				struct std_maybe_Maybe_1 v72 = mtw_std_maybe_Maybe_1_Some(MK_mirth_lexer_IntSuffix(v71));
				branch_Maybe_70 = v72;
			} else {
				struct std_maybe_Maybe_1 v73 = { .tag=std_maybe_Maybe_1_None };
				branch_Maybe_70 = v73;
			}
			branch_Maybe_67 = branch_Maybe_70;
			branch_Str_66 = branch_Str_58;
		} break;
		default: {
			branch_Maybe_67 = branch_Maybe_59;
			branch_Str_66 = branch_Str_58;
		} break;
	}
	STR* branch_Str_74;
	struct std_maybe_Maybe_1 branch_Maybe_75;
	switch ((branch_Maybe_67).tag) {
		case std_maybe_Maybe_1_None: {
			incref(MKSTR(branch_Str_66));
			STR* v76;
			STRLIT(v76, "i32", 3);
			bool v77 = (str_cmp(branch_Str_66, v76) == 0);
			struct std_maybe_Maybe_1 branch_Maybe_78;
			if (v77) {
				enum mirth_lexer_IntSuffix v79 = mirth_lexer_IntSuffix_I32;
				struct std_maybe_Maybe_1 v80 = mtw_std_maybe_Maybe_1_Some(MK_mirth_lexer_IntSuffix(v79));
				branch_Maybe_78 = v80;
			} else {
				struct std_maybe_Maybe_1 v81 = { .tag=std_maybe_Maybe_1_None };
				branch_Maybe_78 = v81;
			}
			branch_Maybe_75 = branch_Maybe_78;
			branch_Str_74 = branch_Str_66;
		} break;
		default: {
			branch_Maybe_75 = branch_Maybe_67;
			branch_Str_74 = branch_Str_66;
		} break;
	}
	STR* branch_Str_82;
	struct std_maybe_Maybe_1 branch_Maybe_83;
	switch ((branch_Maybe_75).tag) {
		case std_maybe_Maybe_1_None: {
			incref(MKSTR(branch_Str_74));
			STR* v84;
			STRLIT(v84, "i64", 3);
			bool v85 = (str_cmp(branch_Str_74, v84) == 0);
			struct std_maybe_Maybe_1 branch_Maybe_86;
			if (v85) {
				enum mirth_lexer_IntSuffix v87 = mirth_lexer_IntSuffix_I64;
				struct std_maybe_Maybe_1 v88 = mtw_std_maybe_Maybe_1_Some(MK_mirth_lexer_IntSuffix(v87));
				branch_Maybe_86 = v88;
			} else {
				struct std_maybe_Maybe_1 v89 = { .tag=std_maybe_Maybe_1_None };
				branch_Maybe_86 = v89;
			}
			branch_Maybe_83 = branch_Maybe_86;
			branch_Str_82 = branch_Str_74;
		} break;
		default: {
			branch_Maybe_83 = branch_Maybe_75;
			branch_Str_82 = branch_Str_74;
		} break;
	}
	decref(MKSTR(branch_Str_82));
	*out_zaLexer_5 = in_zaLexer_2;
	*out_zaStr_4 = v7;
	return branch_Maybe_83;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %r8, -0x38(%rbp)
movq %rcx, -0x40(%rbp)
movq %rsi, -0x30(%rbp)
movabsq $0xfffffffffffc, %rbx   # imm = 0xFFFFFFFFFFFC
leaq -0x48(%rbp), %rax
movq %rdx, %rsi
movq %rax, %rdx
callq 0x87456
movq %rax, %r12
movq %rax, %r14
andq %rbx, %r14
setne %al
testb $0x3, %r12b
sete %r15b
andb %al, %r15b
cmpb $0x1, %r15b
jne 0x8701f
incl (%r14)
movq 0x108f5ca(%rip), %rsi   # 0x11165f0
testq %rsi, %rsi
jne 0x87044
xorl %edi, %edi
callq 0xf5e4
movq %rax, %rsi
movq $0x0, 0x10(%rax)
movq %rax, 0x108f5ac(%rip)   # 0x11165f0
movq %rsi, %rax
andq %rbx, %rax
sete %cl
testb $0x3, %sil
setne %dl
orb %cl, %dl
jne 0x8705a
incl (%rax)
movq %r12, %rdi
callq 0xdf18
testl %eax, %eax
je 0x873bc
testb %r15b, %r15b
je 0x87072
incl (%r14)
movq 0x108f57f(%rip), %rsi   # 0x11165f8
testq %rsi, %rsi
jne 0x8709e
movl $0x1, %edi
callq 0xf5e4
movq %rax, %rsi
movq $0x1, 0x10(%rax)
movb $0x75, 0x18(%rax)
movq %rax, 0x108f55a(%rip)   # 0x11165f8
movq %rsi, %rax
andq %rbx, %rax
sete %cl
testb $0x3, %sil
setne %dl
orb %cl, %dl
jne 0x870b4
incl (%rax)
movq %r12, %rdi
callq 0xdf18
testl %eax, %eax
je 0x873c0
testb %r15b, %r15b
je 0x870cc
incl (%r14)
movq 0x108f52d(%rip), %rsi   # 0x1116600
testq %rsi, %rsi
jne 0x870fa
movl $0x2, %edi
callq 0xf5e4
movq %rax, %rsi
movq $0x2, 0x10(%rax)
movw $0x3875, 0x18(%rax)     # imm = 0x3875
movq %rax, 0x108f506(%rip)   # 0x1116600
movq %rsi, %rax
andq %rbx, %rax
sete %cl
testb $0x3, %sil
setne %dl
orb %cl, %dl
jne 0x87110
incl (%rax)
movq %r12, %rdi
callq 0xdf18
testl %eax, %eax
je 0x873c7
testb %r15b, %r15b
je 0x87128
incl (%r14)
movq 0x108f4d9(%rip), %rsi   # 0x1116608
testq %rsi, %rsi
jne 0x8715a
movl $0x3, %edi
callq 0xf5e4
movq %rax, %rsi
movq $0x3, 0x10(%rax)
movw $0x3175, 0x18(%rax)     # imm = 0x3175
movb $0x36, 0x1a(%rax)
movq %rax, 0x108f4ae(%rip)   # 0x1116608
movq %rsi, %rax
andq %rbx, %rax
sete %cl
testb $0x3, %sil
setne %dl
orb %cl, %dl
jne 0x87170
incl (%rax)
movq %r12, %rdi
callq 0xdf18
testl %eax, %eax
je 0x873ce
testb %r15b, %r15b
je 0x87188
incl (%r14)
movq 0x108f481(%rip), %rsi   # 0x1116610
testq %rsi, %rsi
jne 0x871ba
movl $0x3, %edi
callq 0xf5e4
movq %rax, %rsi
movq $0x3, 0x10(%rax)
movw $0x3375, 0x18(%rax)     # imm = 0x3375
movb $0x32, 0x1a(%rax)
movq %rax, 0x108f456(%rip)   # 0x1116610
movq %rsi, %rax
andq %rbx, %rax
sete %cl
testb $0x3, %sil
setne %dl
orb %cl, %dl
jne 0x871d0
incl (%rax)
movq %r12, %rdi
callq 0xdf18
testl %eax, %eax
je 0x873d5
testb %r15b, %r15b
je 0x871e8
incl (%r14)
movq 0x108f429(%rip), %rsi   # 0x1116618
testq %rsi, %rsi
jne 0x8721a
movl $0x3, %edi
callq 0xf5e4
movq %rax, %rsi
movq $0x3, 0x10(%rax)
movw $0x3675, 0x18(%rax)     # imm = 0x3675
movb $0x34, 0x1a(%rax)
movq %rax, 0x108f3fe(%rip)   # 0x1116618
movq %rsi, %rax
andq %rbx, %rax
sete %cl
testb $0x3, %sil
setne %dl
orb %cl, %dl
jne 0x87230
incl (%rax)
movq %r12, %rdi
callq 0xdf18
testl %eax, %eax
je 0x873dc
testb %r15b, %r15b
je 0x87248
incl (%r14)
movq 0x108f3d1(%rip), %rsi   # 0x1116620
testq %rsi, %rsi
jne 0x87276
movl $0x2, %edi
callq 0xf5e4
movq %rax, %rsi
movq $0x2, 0x10(%rax)
movw $0x3869, 0x18(%rax)     # imm = 0x3869
movq %rax, 0x108f3aa(%rip)   # 0x1116620
movq %rsi, %rax
andq %rbx, %rax
sete %cl
testb $0x3, %sil
setne %dl
orb %cl, %dl
jne 0x8728c
incl (%rax)
movq %r12, %rdi
callq 0xdf18
testl %eax, %eax
je 0x873e3
testb %r15b, %r15b
je 0x872a4
incl (%r14)
movq 0x108f37d(%rip), %rsi   # 0x1116628
testq %rsi, %rsi
jne 0x872d6
movl $0x3, %edi
callq 0xf5e4
movq %rax, %rsi
movq $0x3, 0x10(%rax)
movw $0x3169, 0x18(%rax)     # imm = 0x3169
movb $0x36, 0x1a(%rax)
movq %rax, 0x108f352(%rip)   # 0x1116628
movq %rsi, %rax
andq %rbx, %rax
sete %cl
testb $0x3, %sil
setne %dl
orb %cl, %dl
jne 0x872ec
incl (%rax)
movq %r12, %rdi
callq 0xdf18
testl %eax, %eax
je 0x873ea
testb %r15b, %r15b
je 0x87304
incl (%r14)
movq 0x108f325(%rip), %rsi   # 0x1116630
testq %rsi, %rsi
jne 0x87336
movl $0x3, %edi
callq 0xf5e4
movq %rax, %rsi
movq $0x3, 0x10(%rax)
movw $0x3369, 0x18(%rax)     # imm = 0x3369
movb $0x32, 0x1a(%rax)
movq %rax, 0x108f2fa(%rip)   # 0x1116630
movq %rsi, %rax
andq %rbx, %rax
sete %cl
testb $0x3, %sil
setne %dl
orb %cl, %dl
jne 0x8734c
incl (%rax)
movq %r12, %rdi
callq 0xdf18
testl %eax, %eax
je 0x873f1
testb %r15b, %r15b
je 0x87364
incl (%r14)
movq 0x108f2cd(%rip), %rsi   # 0x1116638
testq %rsi, %rsi
jne 0x87396
movl $0x3, %edi
callq 0xf5e4
movq %rax, %rsi
movq $0x3, 0x10(%rax)
movw $0x3669, 0x18(%rax)     # imm = 0x3669
movb $0x34, 0x1a(%rax)
movq %rax, 0x108f2a2(%rip)   # 0x1116638
andq %rsi, %rbx
sete %al
testb $0x3, %sil
setne %cl
orb %al, %cl
jne 0x873a9
incl (%rbx)
movq %r12, %rdi
callq 0xdf18
testl %eax, %eax
je 0x873f8
xorl %r13d, %r13d
xorl %ebx, %ebx
jmp 0x87412
xorl %edi, %edi
jmp 0x873fd
movl $0x1, %edi
jmp 0x873fd
movl $0x2, %edi
jmp 0x873fd
movl $0x3, %edi
jmp 0x873fd
movl $0x4, %edi
jmp 0x873fd
movl $0x5, %edi
jmp 0x873fd
movl $0x6, %edi
jmp 0x873fd
movl $0x7, %edi
jmp 0x873fd
movl $0x8, %edi
jmp 0x873fd
movl $0x9, %edi
leaq 0x8b89c(%rip), %rsi     # 0x112ca0
callq 0x9353
movq %rdx, %rbx
movl $0x1, %r13d
testb %r15b, %r15b
je 0x8742b
decl (%r14)
jne 0x8742b
leaq 0x89d36(%rip), %rsi     # 0x111159
movq %r12, %rdi
callq 0xd13d
movq -0x38(%rbp), %rax
movq -0x30(%rbp), %rcx
movq %rcx, (%rax)
movq -0x48(%rbp), %rax
movq -0x40(%rbp), %rcx
movq %rax, (%rcx)
movl %r13d, %eax
movq %rbx, %rdx
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq