// File: /workspace/github_c_makefile_star2_O2/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 0x80016
movq %rax, %r12
movq %rax, %r14
andq %rbx, %r14
setne %al
testb $0x3, %r12b
sete %r15b
andb %al, %r15b
cmpb $0x1, %r15b
jne 0x7fc67
incl (%r14)
movq 0x108d98a(%rip), %rsi   # 0x110d5f8
testq %rsi, %rsi
jne 0x7fc8b
leaq 0x5ca7b(%rip), %rdi     # 0xdc6f5
xorl %esi, %esi
callq 0x8a21
movq %rax, %rsi
movq %rax, 0x108d96d(%rip)   # 0x110d5f8
movq %rsi, %rax
andq %rbx, %rax
sete %cl
testb $0x3, %sil
setne %dl
orb %cl, %dl
jne 0x7fca1
incl (%rax)
movq %r12, %rdi
callq 0xd769
testl %eax, %eax
je 0x7ff98
testb %r15b, %r15b
je 0x7fcb9
incl (%r14)
movq 0x108d940(%rip), %rsi   # 0x110d600
testq %rsi, %rsi
jne 0x7fcde
leaq 0x6d14d(%rip), %rdi     # 0xece19
pushq $0x1
popq %rsi
callq 0x8a21
movq %rax, %rsi
movq %rax, 0x108d922(%rip)   # 0x110d600
movq %rsi, %rax
andq %rbx, %rax
sete %cl
testb $0x3, %sil
setne %dl
orb %cl, %dl
jne 0x7fcf4
incl (%rax)
movq %r12, %rdi
callq 0xd769
testl %eax, %eax
je 0x7ff9c
testb %r15b, %r15b
je 0x7fd0c
incl (%r14)
movq 0x108d8f5(%rip), %rsi   # 0x110d608
testq %rsi, %rsi
jne 0x7fd31
leaq 0x570d6(%rip), %rdi     # 0xd6df5
pushq $0x2
popq %rsi
callq 0x8a21
movq %rax, %rsi
movq %rax, 0x108d8d7(%rip)   # 0x110d608
movq %rsi, %rax
andq %rbx, %rax
sete %cl
testb $0x3, %sil
setne %dl
orb %cl, %dl
jne 0x7fd47
incl (%rax)
movq %r12, %rdi
callq 0xd769
testl %eax, %eax
je 0x7ffa0
testb %r15b, %r15b
je 0x7fd5f
incl (%r14)
movq 0x108d8aa(%rip), %rsi   # 0x110d610
testq %rsi, %rsi
jne 0x7fd84
leaq 0x57092(%rip), %rdi     # 0xd6e04
pushq $0x3
popq %rsi
callq 0x8a21
movq %rax, %rsi
movq %rax, 0x108d88c(%rip)   # 0x110d610
movq %rsi, %rax
andq %rbx, %rax
sete %cl
testb $0x3, %sil
setne %dl
orb %cl, %dl
jne 0x7fd9a
incl (%rax)
movq %r12, %rdi
callq 0xd769
testl %eax, %eax
je 0x7ffa4
testb %r15b, %r15b
je 0x7fdb2
incl (%r14)
movq 0x108d85f(%rip), %rsi   # 0x110d618
testq %rsi, %rsi
jne 0x7fdd7
leaq 0x5704f(%rip), %rdi     # 0xd6e14
pushq $0x3
popq %rsi
callq 0x8a21
movq %rax, %rsi
movq %rax, 0x108d841(%rip)   # 0x110d618
movq %rsi, %rax
andq %rbx, %rax
sete %cl
testb $0x3, %sil
setne %dl
orb %cl, %dl
jne 0x7fded
incl (%rax)
movq %r12, %rdi
callq 0xd769
testl %eax, %eax
je 0x7ffa8
testb %r15b, %r15b
je 0x7fe05
incl (%r14)
movq 0x108d814(%rip), %rsi   # 0x110d620
testq %rsi, %rsi
jne 0x7fe2a
leaq 0x56cfe(%rip), %rdi     # 0xd6b16
pushq $0x3
popq %rsi
callq 0x8a21
movq %rax, %rsi
movq %rax, 0x108d7f6(%rip)   # 0x110d620
movq %rsi, %rax
andq %rbx, %rax
sete %cl
testb $0x3, %sil
setne %dl
orb %cl, %dl
jne 0x7fe40
incl (%rax)
movq %r12, %rdi
callq 0xd769
testl %eax, %eax
je 0x7ffac
testb %r15b, %r15b
je 0x7fe58
incl (%r14)
movq 0x108d7c9(%rip), %rsi   # 0x110d628
testq %rsi, %rsi
jne 0x7fe7d
leaq 0x56fc9(%rip), %rdi     # 0xd6e34
pushq $0x2
popq %rsi
callq 0x8a21
movq %rax, %rsi
movq %rax, 0x108d7ab(%rip)   # 0x110d628
movq %rsi, %rax
andq %rbx, %rax
sete %cl
testb $0x3, %sil
setne %dl
orb %cl, %dl
jne 0x7fe93
incl (%rax)
movq %r12, %rdi
callq 0xd769
testl %eax, %eax
je 0x7ffb0
testb %r15b, %r15b
je 0x7feab
incl (%r14)
movq 0x108d77e(%rip), %rsi   # 0x110d630
testq %rsi, %rsi
jne 0x7fed0
leaq 0x56f85(%rip), %rdi     # 0xd6e43
pushq $0x3
popq %rsi
callq 0x8a21
movq %rax, %rsi
movq %rax, 0x108d760(%rip)   # 0x110d630
movq %rsi, %rax
andq %rbx, %rax
sete %cl
testb $0x3, %sil
setne %dl
orb %cl, %dl
jne 0x7fee6
incl (%rax)
movq %r12, %rdi
callq 0xd769
testl %eax, %eax
je 0x7ffb4
testb %r15b, %r15b
je 0x7fefe
incl (%r14)
movq 0x108d733(%rip), %rsi   # 0x110d638
testq %rsi, %rsi
jne 0x7ff23
leaq 0x56f42(%rip), %rdi     # 0xd6e53
pushq $0x3
popq %rsi
callq 0x8a21
movq %rax, %rsi
movq %rax, 0x108d715(%rip)   # 0x110d638
movq %rsi, %rax
andq %rbx, %rax
sete %cl
testb $0x3, %sil
setne %dl
orb %cl, %dl
jne 0x7ff39
incl (%rax)
movq %r12, %rdi
callq 0xd769
testl %eax, %eax
je 0x7ffb8
testb %r15b, %r15b
je 0x7ff4d
incl (%r14)
movq 0x108d6ec(%rip), %rsi   # 0x110d640
testq %rsi, %rsi
jne 0x7ff72
leaq 0x56dc2(%rip), %rdi     # 0xd6d22
pushq $0x3
popq %rsi
callq 0x8a21
movq %rax, %rsi
movq %rax, 0x108d6ce(%rip)   # 0x110d640
andq %rsi, %rbx
sete %al
testb $0x3, %sil
setne %cl
orb %al, %cl
jne 0x7ff85
incl (%rbx)
movq %r12, %rdi
callq 0xd769
testl %eax, %eax
je 0x7ffbc
xorl %r13d, %r13d
xorl %ebx, %ebx
jmp 0x7ffd2
xorl %edi, %edi
jmp 0x7ffbf
pushq $0x1
jmp 0x7ffbe
pushq $0x2
jmp 0x7ffbe
pushq $0x3
jmp 0x7ffbe
pushq $0x4
jmp 0x7ffbe
pushq $0x5
jmp 0x7ffbe
pushq $0x6
jmp 0x7ffbe
pushq $0x7
jmp 0x7ffbe
pushq $0x8
jmp 0x7ffbe
pushq $0x9
popq %rdi
leaq 0x89cda(%rip), %rsi     # 0x109ca0
callq 0x8d0c
movq %rdx, %rbx
pushq $0x1
popq %r13
testb %r15b, %r15b
je 0x7ffeb
decl (%r14)
jne 0x7ffeb
leaq 0x88176(%rip), %rsi     # 0x108159
movq %r12, %rdi
callq 0xce94
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