// File: /workspace/github_c_makefile_star2_O1/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, -0x40(%rbp)
movq %rcx, -0x48(%rbp)
movq %rsi, -0x38(%rbp)
movabsq $0xfffffffffffc, %r14   # imm = 0xFFFFFFFFFFFC
leaq -0x50(%rbp), %rax
movq %rdx, %rsi
movq %rax, %rdx
callq 0x898a8
movq %rax, %r12
movq %rax, %rbx
andq %r14, %rbx
setne %al
testb $0x3, %r12b
sete %r15b
andb %al, %r15b
cmpb $0x1, %r15b
jne 0x89384
incl (%rbx)
cmpq $0x0, 0x1091264(%rip)   # 0x111a5f0
jne 0x893a4
xorl %edi, %edi
callq 0xf9f7
movq $0x0, 0x10(%rax)
movq %rax, 0x109124c(%rip)   # 0x111a5f0
movq %rbx, -0x30(%rbp)
movq 0x1091241(%rip), %rsi   # 0x111a5f0
movq %rsi, %rax
andq %r14, %rax
sete %cl
testb $0x3, %sil
setne %dl
orb %cl, %dl
jne 0x893c5
incl (%rax)
movq %r12, %rdi
callq 0xe2eb
movl %eax, %ebx
testl %eax, %eax
je 0x893d8
xorl %r13d, %r13d
jmp 0x893e9
leaq 0x8d8c1(%rip), %rsi     # 0x116ca0
xorl %edi, %edi
callq 0x95f6
movq %rdx, %r13
testl %ebx, %ebx
je 0x89450
testb %r15b, %r15b
movq -0x30(%rbp), %rbx
je 0x893f8
incl (%rbx)
cmpq $0x0, 0x10911f8(%rip)   # 0x111a5f8
jne 0x8941f
movl $0x1, %edi
callq 0xf9f7
movq $0x1, 0x10(%rax)
movb $0x75, 0x18(%rax)
movq %rax, 0x10911d9(%rip)   # 0x111a5f8
movq 0x10911d2(%rip), %rsi   # 0x111a5f8
movq %rsi, %rax
andq %r14, %rax
sete %cl
testb $0x3, %sil
setne %dl
orb %cl, %dl
jne 0x8943c
incl (%rax)
movq %r12, %rdi
callq 0xe2eb
testl %eax, %eax
setne %al
je 0x89458
xorl %r13d, %r13d
jmp 0x8946e
xorl %eax, %eax
movq -0x30(%rbp), %rbx
jmp 0x8946e
leaq 0x8d841(%rip), %rsi     # 0x116ca0
movl $0x1, %edi
callq 0x95f6
movq %rdx, %r13
xorl %eax, %eax
testb %al, %al
je 0x894e7
testb %r15b, %r15b
je 0x89479
incl (%rbx)
cmpq $0x0, 0x109117f(%rip)   # 0x111a600
jne 0x894a2
movl $0x2, %edi
callq 0xf9f7
movq $0x2, 0x10(%rax)
movw $0x3875, 0x18(%rax)     # imm = 0x3875
movq %rax, 0x109115e(%rip)   # 0x111a600
movq 0x1091157(%rip), %rsi   # 0x111a600
movq %rsi, %rax
andq %r14, %rax
sete %cl
testb $0x3, %sil
setne %dl
orb %cl, %dl
jne 0x894bf
incl (%rax)
movq %r12, %rdi
callq 0xe2eb
testl %eax, %eax
setne %al
je 0x894d3
xorl %r13d, %r13d
jmp 0x894e9
leaq 0x8d7c6(%rip), %rsi     # 0x116ca0
movl $0x2, %edi
callq 0x95f6
movq %rdx, %r13
xorl %eax, %eax
testb %al, %al
je 0x89566
testb %r15b, %r15b
je 0x894f4
incl (%rbx)
cmpq $0x0, 0x109110c(%rip)   # 0x111a608
jne 0x89521
movl $0x3, %edi
callq 0xf9f7
movq $0x3, 0x10(%rax)
movw $0x3175, 0x18(%rax)     # imm = 0x3175
movb $0x36, 0x1a(%rax)
movq %rax, 0x10910e7(%rip)   # 0x111a608
movq 0x10910e0(%rip), %rsi   # 0x111a608
movq %rsi, %rax
andq %r14, %rax
sete %cl
testb $0x3, %sil
setne %dl
orb %cl, %dl
jne 0x8953e
incl (%rax)
movq %r12, %rdi
callq 0xe2eb
testl %eax, %eax
setne %al
je 0x89552
xorl %r13d, %r13d
jmp 0x89568
leaq 0x8d747(%rip), %rsi     # 0x116ca0
movl $0x3, %edi
callq 0x95f6
movq %rdx, %r13
xorl %eax, %eax
testb %al, %al
je 0x895e5
testb %r15b, %r15b
je 0x89573
incl (%rbx)
cmpq $0x0, 0x1091095(%rip)   # 0x111a610
jne 0x895a0
movl $0x3, %edi
callq 0xf9f7
movq $0x3, 0x10(%rax)
movw $0x3375, 0x18(%rax)     # imm = 0x3375
movb $0x32, 0x1a(%rax)
movq %rax, 0x1091070(%rip)   # 0x111a610
movq 0x1091069(%rip), %rsi   # 0x111a610
movq %rsi, %rax
andq %r14, %rax
sete %cl
testb $0x3, %sil
setne %dl
orb %cl, %dl
jne 0x895bd
incl (%rax)
movq %r12, %rdi
callq 0xe2eb
testl %eax, %eax
setne %al
je 0x895d1
xorl %r13d, %r13d
jmp 0x895e7
leaq 0x8d6c8(%rip), %rsi     # 0x116ca0
movl $0x4, %edi
callq 0x95f6
movq %rdx, %r13
xorl %eax, %eax
testb %al, %al
je 0x89664
testb %r15b, %r15b
je 0x895f2
incl (%rbx)
cmpq $0x0, 0x109101e(%rip)   # 0x111a618
jne 0x8961f
movl $0x3, %edi
callq 0xf9f7
movq $0x3, 0x10(%rax)
movw $0x3675, 0x18(%rax)     # imm = 0x3675
movb $0x34, 0x1a(%rax)
movq %rax, 0x1090ff9(%rip)   # 0x111a618
movq 0x1090ff2(%rip), %rsi   # 0x111a618
movq %rsi, %rax
andq %r14, %rax
sete %cl
testb $0x3, %sil
setne %dl
orb %cl, %dl
jne 0x8963c
incl (%rax)
movq %r12, %rdi
callq 0xe2eb
testl %eax, %eax
setne %al
je 0x89650
xorl %r13d, %r13d
jmp 0x89666
leaq 0x8d649(%rip), %rsi     # 0x116ca0
movl $0x5, %edi
callq 0x95f6
movq %rdx, %r13
xorl %eax, %eax
testb %al, %al
je 0x896df
testb %r15b, %r15b
je 0x89671
incl (%rbx)
cmpq $0x0, 0x1090fa7(%rip)   # 0x111a620
jne 0x8969a
movl $0x2, %edi
callq 0xf9f7
movq $0x2, 0x10(%rax)
movw $0x3869, 0x18(%rax)     # imm = 0x3869
movq %rax, 0x1090f86(%rip)   # 0x111a620
movq 0x1090f7f(%rip), %rsi   # 0x111a620
movq %rsi, %rax
andq %r14, %rax
sete %cl
testb $0x3, %sil
setne %dl
orb %cl, %dl
jne 0x896b7
incl (%rax)
movq %r12, %rdi
callq 0xe2eb
testl %eax, %eax
setne %al
je 0x896cb
xorl %r13d, %r13d
jmp 0x896e1
leaq 0x8d5ce(%rip), %rsi     # 0x116ca0
movl $0x6, %edi
callq 0x95f6
movq %rdx, %r13
xorl %eax, %eax
testb %al, %al
je 0x8975e
testb %r15b, %r15b
je 0x896ec
incl (%rbx)
cmpq $0x0, 0x1090f34(%rip)   # 0x111a628
jne 0x89719
movl $0x3, %edi
callq 0xf9f7
movq $0x3, 0x10(%rax)
movw $0x3169, 0x18(%rax)     # imm = 0x3169
movb $0x36, 0x1a(%rax)
movq %rax, 0x1090f0f(%rip)   # 0x111a628
movq 0x1090f08(%rip), %rsi   # 0x111a628
movq %rsi, %rax
andq %r14, %rax
sete %cl
testb $0x3, %sil
setne %dl
orb %cl, %dl
jne 0x89736
incl (%rax)
movq %r12, %rdi
callq 0xe2eb
testl %eax, %eax
setne %al
je 0x8974a
xorl %r13d, %r13d
jmp 0x89760
leaq 0x8d54f(%rip), %rsi     # 0x116ca0
movl $0x7, %edi
callq 0x95f6
movq %rdx, %r13
xorl %eax, %eax
testb %al, %al
je 0x897dd
testb %r15b, %r15b
je 0x8976b
incl (%rbx)
cmpq $0x0, 0x1090ebd(%rip)   # 0x111a630
jne 0x89798
movl $0x3, %edi
callq 0xf9f7
movq $0x3, 0x10(%rax)
movw $0x3369, 0x18(%rax)     # imm = 0x3369
movb $0x32, 0x1a(%rax)
movq %rax, 0x1090e98(%rip)   # 0x111a630
movq 0x1090e91(%rip), %rsi   # 0x111a630
movq %rsi, %rax
andq %r14, %rax
sete %cl
testb $0x3, %sil
setne %dl
orb %cl, %dl
jne 0x897b5
incl (%rax)
movq %r12, %rdi
callq 0xe2eb
testl %eax, %eax
setne %al
je 0x897c9
xorl %r13d, %r13d
jmp 0x897df
leaq 0x8d4d0(%rip), %rsi     # 0x116ca0
movl $0x8, %edi
callq 0x95f6
movq %rdx, %r13
xorl %eax, %eax
movl $0x1, %ebx
testb %al, %al
je 0x89862
testb %r15b, %r15b
je 0x897f3
movq -0x30(%rbp), %rax
incl (%rax)
cmpq $0x0, 0x1090e3d(%rip)   # 0x111a638
jne 0x89820
movl $0x3, %edi
callq 0xf9f7
movq $0x3, 0x10(%rax)
movw $0x3669, 0x18(%rax)     # imm = 0x3669
movb $0x34, 0x1a(%rax)
movq %rax, 0x1090e18(%rip)   # 0x111a638
movq 0x1090e11(%rip), %rsi   # 0x111a638
andq %rsi, %r14
sete %al
testb $0x3, %sil
setne %cl
orb %al, %cl
jne 0x8983b
incl (%r14)
movq %r12, %rdi
callq 0xe2eb
testl %eax, %eax
je 0x8984e
xorl %ebx, %ebx
xorl %r13d, %r13d
jmp 0x89862
leaq 0x8d44b(%rip), %rsi     # 0x116ca0
movl $0x9, %edi
callq 0x95f6
movq %rdx, %r13
testb %r15b, %r15b
je 0x8987e
movq -0x30(%rbp), %rax
decl (%rax)
jne 0x8987e
leaq 0x8b8e3(%rip), %rsi     # 0x115159
movq %r12, %rdi
callq 0xd4e3
movq -0x40(%rbp), %rax
movq -0x38(%rbp), %rcx
movq %rcx, (%rax)
movq -0x50(%rbp), %rax
movq -0x48(%rbp), %rcx
movq %rax, (%rcx)
movl %ebx, %eax
movq %r13, %rdx
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq