// File: /workspace/github_c_makefile_star2_O1/Ihsoh[P]ilang/compiler/backend/asmgen_gas32.c
// Function: be_asmgen_gas32_generate
void be_asmgen_gas32_generate(
	ASMGeneratorGas32Context *ctx
) {
	assert(ctx);
	assert(ctx->psrctx);
	assert(ctx->psrctx->ast);
	assert(ctx->psrctx->ast->type == BE_NODE_MODULE);
	assert(ctx->out);

	_asm_module(ctx, ctx->psrctx->ast);

	_OUT_CSTR(ctx, RSTR_CSTR(ctx->head));
	_OUT_CSTR(ctx, RSTR_CSTR(ctx->body));
	_OUT_CSTR(ctx, RSTR_CSTR(ctx->foot));
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x38, %rsp
testq %rdi, %rdi
je 0xc088
movq %rdi, %rbx
movq (%rdi), %rax
testq %rax, %rax
je 0xc0a7
movq 0x8(%rax), %r13
testq %r13, %r13
je 0xc0c6
cmpl $0x100, (%r13)          # imm = 0x100
jne 0xc0e5
cmpq $0x0, 0x8(%rbx)
je 0xc104
movq 0x10(%rbx), %rax
movq 0x8(%rax), %r14
testq %r14, %r14
leaq 0x36fde(%rip), %r12     # 0x42a5b
cmoveq %r12, %r14
cmpb $0x0, (%r14)
je 0xbab7
xorl %r15d, %r15d
movsbl (%r14,%r15), %edi
movq 0x8(%rbx), %rsi
callq 0x30c0
incq %r15
movq 0x10(%rbx), %rax
movq 0x8(%rax), %r14
testq %r14, %r14
cmoveq %r12, %r14
movq %r14, %rdi
callq 0x3080
cmpq %r15, %rax
ja 0xba8a
cmpl $0x0, 0x44(%r13)
jle 0xbeb2
xorl %edx, %edx
movq %rbx, -0x40(%rbp)
movq %r13, -0x48(%rbp)
movq 0x48(%r13), %rax
movq (%rax,%rdx,8), %rsi
testq %rsi, %rsi
je 0xbf90
movq $0x0, 0x58(%rbx)
movl (%rsi), %eax
cmpl $0xa00, %eax            # imm = 0xA00
je 0xbb17
cmpl $0xd00, %eax            # imm = 0xD00
je 0xbea2
cmpl $0xc00, %eax            # imm = 0xC00
jne 0xbfaf
movq %rdx, %r14
movq %rbx, %rdi
callq 0xc3c8
movq %r14, %rdx
jmp 0xbea2
movq 0x60(%rsi), %rax
movq %rax, 0x58(%rbx)
testq %rax, %rax
je 0xbfed
movl 0x44(%rsi), %ecx
movl $0x10, %eax
cmpl $0x3, %ecx
je 0xbb43
cmpl $0x4, %ecx
jne 0xc069
movl $0x18, %eax
movq 0x48(%rsi), %rcx
movq (%rcx), %r14
cmpl $0x200, (%r14)          # imm = 0x200
jne 0xc00c
movq 0x8(%rcx), %r15
cmpl $0xa01, (%r15)          # imm = 0xA01
jne 0xbfce
movq %rdx, -0x38(%rbp)
movq (%rcx,%rax), %rax
movq %rax, -0x30(%rbp)
cmpl $0x0, 0x44(%r15)
jle 0xbb8e
movq 0x48(%r15), %rax
movq (%rax), %rax
cmpl $0xa02, (%rax)          # imm = 0xA02
jne 0xc02b
movq 0x20(%rbx), %rdi
movl $0xa, %esi
callq 0x768b
movq -0x30(%rbp), %rax
movl (%rax), %eax
cmpl $0x900, %eax            # imm = 0x900
movq -0x38(%rbp), %rdx
je 0xbea2
cmpl $0xb00, %eax            # imm = 0xB00
jne 0xc04a
movq 0x10(%r14), %rax
movq 0x8(%rax), %rsi
movl 0x4(%rax), %edx
leaq -0x60(%rbp), %rdi
callq 0x76ad
movq 0x20(%rbx), %rdi
leaq 0x36e5c(%rip), %rsi     # 0x42a37
callq 0x758f
movq 0x20(%rbx), %rdi
leaq 0x36bbe(%rip), %rsi     # 0x427a9
callq 0x758f
movq 0x20(%rbx), %rdi
movq 0x10(%r14), %rax
movq 0x8(%rax), %rsi
movl 0x4(%rax), %edx
callq 0x7728
movq 0x20(%rbx), %rdi
movl $0xa, %esi
callq 0x768b
movq 0x20(%rbx), %rdi
movq 0x10(%r14), %rax
movq 0x8(%rax), %rsi
movl 0x4(%rax), %edx
callq 0x7728
movq 0x20(%rbx), %rdi
movl $0x3a, %esi
callq 0x768b
movq 0x20(%rbx), %rdi
movl $0xa, %esi
callq 0x768b
movq 0x20(%rbx), %rdi
leaq 0x36f2e(%rip), %rsi     # 0x42b7b
callq 0x758f
movl $0x4, %eax
movq %rax, 0x38(%rbx)
movq %rax, 0x40(%rbx)
movq $0x1, 0x48(%rbx)
cmpl $0x0, 0x44(%r15)
jle 0xbd47
movl $0x8, %r13d
xorl %r14d, %r14d
movq %r15, -0x50(%rbp)
movq 0x48(%r15), %rax
movq (%rax,%r14,8), %rax
cmpl $0xa03, (%rax)          # imm = 0xA03
je 0xbd33
movq 0x48(%rax), %rcx
movq 0x60(%rax), %rbx
movq (%rcx), %r12
movb $0x1, 0x48(%rbx)
leaq 0x50(%rbx), %r15
movq %r15, %rdi
callq 0x7508
movq %r15, %rdi
leaq 0x36ee0(%rip), %rsi     # 0x42b98
movl %r13d, %edx
xorl %eax, %eax
callq 0x7af1
movq -0x40(%rbp), %r15
movq 0x48(%r15), %rdx
movq 0x20(%r15), %rdi
movq 0x38(%r15), %rcx
movq 0x58(%rbx), %r10
testq %r10, %r10
leaq 0x36d7b(%rip), %rax     # 0x42a5b
cmoveq %rax, %r10
subq $0x8, %rsp
movl $0x8, %r9d
leaq 0x36ead(%rip), %rsi     # 0x42ba2
movl $0x8, %r8d
xorl %eax, %eax
pushq %r10
callq 0x7af1
addq $0x10, %rsp
movq 0x20(%r15), %rdi
movq 0x10(%r12), %rax
movq 0x8(%rax), %rsi
movl 0x4(%rax), %edx
callq 0x7728
movq 0x20(%r15), %rdi
movl $0xa, %esi
callq 0x768b
incq 0x48(%r15)
movq -0x50(%rbp), %r15
incq %r14
movslq 0x44(%r15), %rax
addl $0x8, %r13d
cmpq %rax, %r14
jl 0xbc7f
movq -0x40(%rbp), %rbx
movq 0x20(%rbx), %r13
callq 0x78ea
movq %rax, 0x20(%rbx)
callq 0x78ea
movq %rax, 0x30(%rbx)
movq %rbx, %rdi
movq -0x30(%rbp), %rsi
callq 0xcc7b
movq 0x30(%rbx), %rdi
movq 0x40(%rbx), %rdx
leaq 0x36e7b(%rip), %rsi     # 0x42bf7
xorl %eax, %eax
callq 0x7af1
movq 0x30(%rbx), %rdi
movq 0x40(%rbx), %rdx
leaq 0x36e88(%rip), %rsi     # 0x42c1a
xorl %eax, %eax
callq 0x7af1
movq 0x30(%rbx), %rsi
movq %r13, %rdi
callq 0x784c
movq -0x58(%rbp), %rcx
testq %rcx, %rcx
leaq 0x36ca8(%rip), %r12     # 0x42a5b
cmoveq %r12, %rcx
subq $0x8, %rsp
movq %r13, %rdi
leaq 0x36e68(%rip), %rsi     # 0x42c2d
leaq 0x36e8f(%rip), %rdx     # 0x42c5b
movq %rdx, %r8
movq %rcx, %r9
xorl %eax, %eax
pushq $-0x4
leaq 0x36e88(%rip), %r10     # 0x42c65
pushq %r10
pushq %r10
callq 0x7af1
addq $0x20, %rsp
movq %r13, %rdi
leaq 0x36e76(%rip), %rsi     # 0x42c6a
callq 0x758f
movq 0x20(%rbx), %rsi
movq %r13, %rdi
callq 0x784c
movq 0x20(%rbx), %rdi
callq 0x79f8
movq %r13, 0x20(%rbx)
movq 0x30(%rbx), %rdi
callq 0x79f8
movq $0x0, 0x30(%rbx)
movq 0x20(%rbx), %rdi
leaq 0x36c2c(%rip), %rsi     # 0x42a5a
callq 0x758f
movq 0x20(%rbx), %rsi
movq %rbx, %rdi
leaq 0x36e33(%rip), %rdx     # 0x42c74
leaq 0x36e31(%rip), %rcx     # 0x42c79
callq 0x1444d
movq 0x20(%rbx), %rdi
leaq 0x36e19(%rip), %rsi     # 0x42c71
callq 0x758f
movq 0x20(%rbx), %rdi
movq 0x40(%rbx), %rdx
leaq 0x36e11(%rip), %rsi     # 0x42c7d
xorl %eax, %eax
callq 0x7af1
movq 0x20(%rbx), %rdi
leaq 0x36e13(%rip), %rsi     # 0x42c91
callq 0x758f
movq 0x20(%rbx), %rdi
movl $0xa, %esi
callq 0x768b
leaq -0x60(%rbp), %rdi
callq 0x79f8
movq -0x48(%rbp), %r13
movq -0x38(%rbp), %rdx
incq %rdx
movslq 0x44(%r13), %rax
cmpq %rax, %rdx
jl 0xbacc
movq 0x18(%rbx), %rax
movq 0x8(%rax), %r14
testq %r14, %r14
cmoveq %r12, %r14
cmpb $0x0, (%r14)
je 0xbef7
xorl %r15d, %r15d
movsbl (%r14,%r15), %edi
movq 0x8(%rbx), %rsi
callq 0x30c0
incq %r15
movq 0x18(%rbx), %rax
movq 0x8(%rax), %r14
testq %r14, %r14
cmoveq %r12, %r14
movq %r14, %rdi
callq 0x3080
cmpq %r15, %rax
ja 0xbeca
movq 0x20(%rbx), %rax
movq 0x8(%rax), %r14
testq %r14, %r14
cmoveq %r12, %r14
cmpb $0x0, (%r14)
je 0xbf3c
xorl %r15d, %r15d
movsbl (%r14,%r15), %edi
movq 0x8(%rbx), %rsi
callq 0x30c0
incq %r15
movq 0x20(%rbx), %rax
movq 0x8(%rax), %r14
testq %r14, %r14
cmoveq %r12, %r14
movq %r14, %rdi
callq 0x3080
cmpq %r15, %rax
ja 0xbf0f
movq 0x28(%rbx), %rax
movq 0x8(%rax), %r14
testq %r14, %r14
cmoveq %r12, %r14
cmpb $0x0, (%r14)
je 0xbf81
xorl %r15d, %r15d
movsbl (%r14,%r15), %edi
movq 0x8(%rbx), %rsi
callq 0x30c0
incq %r15
movq 0x28(%rbx), %rax
movq 0x8(%rax), %r14
testq %r14, %r14
cmoveq %r12, %r14
movq %r14, %rdi
callq 0x3080
cmpq %r15, %rax
ja 0xbf54
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x36fb4(%rip), %rdi     # 0x42f4b
leaq 0x364da(%rip), %rsi     # 0x42478
leaq 0x366de(%rip), %rcx     # 0x42683
movl $0x2c8d, %edx           # imm = 0x2C8D
callq 0x30a0
leaq 0x343d7(%rip), %rdi     # 0x4038d
leaq 0x364bb(%rip), %rsi     # 0x42478
leaq 0x366bf(%rip), %rcx     # 0x42683
movl $0x2c9f, %edx           # imm = 0x2C9F
callq 0x30a0
leaq 0x36b3a(%rip), %rdi     # 0x42b0f
leaq 0x3649c(%rip), %rsi     # 0x42478
leaq 0x36adf(%rip), %rcx     # 0x42ac2
movl $0x2bc9, %edx           # imm = 0x2BC9
callq 0x30a0
leaq 0x36b0a(%rip), %rdi     # 0x42afe
leaq 0x3647d(%rip), %rsi     # 0x42478
leaq 0x36ac0(%rip), %rcx     # 0x42ac2
movl $0x2bb4, %edx           # imm = 0x2BB4
callq 0x30a0
leaq 0x36763(%rip), %rdi     # 0x42776
leaq 0x3645e(%rip), %rsi     # 0x42478
leaq 0x36aa1(%rip), %rcx     # 0x42ac2
movl $0x2bc8, %edx           # imm = 0x2BC8
callq 0x30a0
leaq 0x36b0b(%rip), %rdi     # 0x42b3d
leaq 0x3643f(%rip), %rsi     # 0x42478
leaq 0x36a82(%rip), %rcx     # 0x42ac2
movl $0x2bcb, %edx           # imm = 0x2BCB
callq 0x30a0
leaq 0x3433c(%rip), %rdi     # 0x4038d
leaq 0x36420(%rip), %rsi     # 0x42478
leaq 0x36a63(%rip), %rcx     # 0x42ac2
movl $0x2c7f, %edx           # imm = 0x2C7F
callq 0x30a0
leaq 0x3431d(%rip), %rdi     # 0x4038d
leaq 0x36401(%rip), %rsi     # 0x42478
leaq 0x36a44(%rip), %rcx     # 0x42ac2
movl $0x2bc6, %edx           # imm = 0x2BC6
callq 0x30a0
leaq 0x45247(%rip), %rdi     # 0x512d6
leaq 0x363e2(%rip), %rsi     # 0x42478
leaq 0x363fb(%rip), %rcx     # 0x42498
movl $0x2cb8, %edx           # imm = 0x2CB8
callq 0x30a0
leaq 0x36424(%rip), %rdi     # 0x424d2
leaq 0x363c3(%rip), %rsi     # 0x42478
leaq 0x363dc(%rip), %rcx     # 0x42498
movl $0x2cb9, %edx           # imm = 0x2CB9
callq 0x30a0
leaq 0x36411(%rip), %rdi     # 0x424de
leaq 0x363a4(%rip), %rsi     # 0x42478
leaq 0x363bd(%rip), %rcx     # 0x42498
movl $0x2cba, %edx           # imm = 0x2CBA
callq 0x30a0
leaq 0x36403(%rip), %rdi     # 0x424ef
leaq 0x36385(%rip), %rsi     # 0x42478
leaq 0x3639e(%rip), %rcx     # 0x42498
movl $0x2cbb, %edx           # imm = 0x2CBB
callq 0x30a0
leaq 0x3640d(%rip), %rdi     # 0x42518
leaq 0x36366(%rip), %rsi     # 0x42478
leaq 0x3637f(%rip), %rcx     # 0x42498
movl $0x2cbc, %edx           # imm = 0x2CBC
callq 0x30a0