// File: /workspace/github_c_makefile_star2_O0/Ihsoh[P]ilang/compiler/frontend/irgen_llvmir.c
// Function: ir_expr_logic
static bool _ir_expr_logic(
	IRGeneratorLlvmirContext *ctx,
	ResizableString *rstr,
	_ExprResult *expr_result,
	ParserASTNode *node
) {
	assert(ctx);
	assert(rstr);
	assert(expr_result);
	assert(node);

	switch (node->type) {
		case FE_NODE_EXPR_AND:
		case FE_NODE_EXPR_OR: {
			assert(node->nchilds == 2);

			ParserASTNode *node_type = FE_EXPR_AST_NODE_GET_TYPE_NODE(node);
			
			ResizableString rstr_type;
			rstr_init(&rstr_type);
			_ir_type(ctx, &rstr_type, node_type);

			_TMP_LABEL_DEF(ctx, lhs)
			_TMP_LABEL_DEF(ctx, rhs)
			_TMP_LABEL_DEF(ctx, rhs1)
			_TMP_LABEL_DEF(ctx, end)
			_TMP_LABEL_DEF(ctx, result)
			_TMP_LABEL_DEF(ctx, result_casted)

			ParserASTNode *node_lhs = node->childs[0];
			ParserASTNode *node_rhs = node->childs[1];

			_ExprResult result_lhs;
			_expr_result_init(&result_lhs);

			_ExprResult result_rhs;
			_expr_result_init(&result_rhs);

			_ir_expr(ctx, rstr, &result_lhs, node_lhs);
			rstr_append_with_rstr(rstr, &(result_lhs.rstr_for_result_ptr));
			rstr_append_with_rstr(rstr, &(result_lhs.rstr_for_result));

			ResizableString rstr_lhs_cond;
			rstr_init(&rstr_lhs_cond);
			_ir_cond_expr_with_rstr(ctx, rstr, &rstr_lhs_cond, &result_lhs, node_lhs);

			// 左表达式的Basic Block的标号。
			rstr_appendf(
				rstr,
				"br label %s\n%s:\n",
				_TMP_LABEL_CSTR(lhs),
				_TMP_LABEL_NAME_CSTR(lhs)
			);

			if (node->type == FE_NODE_EXPR_AND) {
				rstr_appendf(
					rstr,
					"br i1 %s, label %s, label %s\n",
					RSTR_CSTR(&rstr_lhs_cond),
					_TMP_LABEL_CSTR(rhs),
					_TMP_LABEL_CSTR(end)
				);
			} else if (node->type == FE_NODE_EXPR_OR) {
				rstr_appendf(
					rstr,
					"br i1 %s, label %s, label %s\n",
					RSTR_CSTR(&rstr_lhs_cond),
					_TMP_LABEL_CSTR(end),
					_TMP_LABEL_CSTR(rhs)
				);
			} else {
				assert(0);
			}

			// 右表达式的Basic Block的标号。
			rstr_appendf(
				rstr,
				"br label %s\n%s:\n",
				_TMP_LABEL_CSTR(rhs),
				_TMP_LABEL_NAME_CSTR(rhs)
			);

			_ir_expr(ctx, rstr, &result_rhs, node_rhs);
			rstr_append_with_rstr(rstr, &(result_rhs.rstr_for_result_ptr));
			rstr_append_with_rstr(rstr, &(result_rhs.rstr_for_result));

			ResizableString rstr_rhs_cond;
			rstr_init(&rstr_rhs_cond);
			_ir_cond_expr_with_rstr(ctx, rstr, &rstr_rhs_cond, &result_rhs, node_rhs);

			rstr_appendf(
				rstr,
				"br label %s\n%s:\n",
				_TMP_LABEL_CSTR(rhs1),
				_TMP_LABEL_NAME_CSTR(rhs1)
			);

			// 结束的Basic Block的标号。
			rstr_appendf(
				rstr,
				"br label %s\n%s:\n",
				_TMP_LABEL_CSTR(end),
				_TMP_LABEL_NAME_CSTR(end)
			);

			if (node->type == FE_NODE_EXPR_AND) {
				rstr_appendf(
					&(expr_result->rstr_for_result),
					"%s = phi i1 [ false, %s ], [ %s, %s ]\n",
					_TMP_LABEL_CSTR(result),
					_TMP_LABEL_CSTR(lhs),
					RSTR_CSTR(&rstr_rhs_cond),
					_TMP_LABEL_CSTR(rhs1)
				);
			} else if (node->type == FE_NODE_EXPR_OR) {
				rstr_appendf(
					&(expr_result->rstr_for_result),
					"%s = phi i1 [ true, %s ], [ %s, %s ]\n",
					_TMP_LABEL_CSTR(result),
					_TMP_LABEL_CSTR(lhs),
					RSTR_CSTR(&rstr_rhs_cond),
					_TMP_LABEL_CSTR(rhs1)
				);
			} else {
				assert(0);
			}

			rstr_appendf(
				&(expr_result->rstr_for_result),
				"%s = zext i1 %s to %s\n",
				_TMP_LABEL_CSTR(result_casted),
				_TMP_LABEL_CSTR(result),
				RSTR_CSTR(&rstr_type)
			);
			_expr_result_set_result(
				expr_result,
				RSTR_CSTR(&rstr_type),
				_TMP_LABEL_CSTR(result_casted)
			);

			rstr_free(&rstr_type);

			_TMP_LABEL_FREE(lhs)
			_TMP_LABEL_FREE(rhs)
			_TMP_LABEL_FREE(rhs1)
			_TMP_LABEL_FREE(end)
			_TMP_LABEL_FREE(result)
			_TMP_LABEL_FREE(result_casted)

			_expr_result_free(&result_lhs);
			_expr_result_free(&result_rhs);

			rstr_free(&rstr_lhs_cond);

			return true;
		}
		default: {
			return false;
		}
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x380, %rsp            # imm = 0x380
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0x32f94
jmp 0x32fb3
leaq 0x495bb(%rip), %rdi     # 0x7c556
leaq 0x4512e(%rip), %rsi     # 0x780d0
movl $0x1070, %edx           # imm = 0x1070
leaq 0x4663e(%rip), %rcx     # 0x795ec
callq 0x30a0
cmpq $0x0, -0x18(%rbp)
je 0x32fbc
jmp 0x32fdb
leaq 0x3fb4b(%rip), %rdi     # 0x72b0e
leaq 0x45106(%rip), %rsi     # 0x780d0
movl $0x1071, %edx           # imm = 0x1071
leaq 0x46616(%rip), %rcx     # 0x795ec
callq 0x30a0
cmpq $0x0, -0x20(%rbp)
je 0x32fe4
jmp 0x33003
leaq 0x41c28(%rip), %rdi     # 0x74c13
leaq 0x450de(%rip), %rsi     # 0x780d0
movl $0x1072, %edx           # imm = 0x1072
leaq 0x465ee(%rip), %rcx     # 0x795ec
callq 0x30a0
cmpq $0x0, -0x28(%rbp)
je 0x3300c
jmp 0x3302b
leaq 0x42fc0(%rip), %rdi     # 0x75fd3
leaq 0x450b6(%rip), %rsi     # 0x780d0
movl $0x1073, %edx           # imm = 0x1073
leaq 0x465c6(%rip), %rcx     # 0x795ec
callq 0x30a0
movq -0x28(%rbp), %rax
movl (%rax), %eax
orl $0x10, %eax
subl $0xe30, %eax            # imm = 0xE30
je 0x33040
jmp 0x33a25
movq -0x28(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x3304c
jmp 0x3306b
leaq 0x4b621(%rip), %rdi     # 0x7e674
leaq 0x45076(%rip), %rsi     # 0x780d0
movl $0x1078, %edx           # imm = 0x1078
leaq 0x46586(%rip), %rcx     # 0x795ec
callq 0x30a0
movq -0x28(%rbp), %rax
movq 0x68(%rax), %rax
movq %rax, -0x30(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x8c90
movq -0x10(%rbp), %rdi
movq -0x30(%rbp), %rdx
leaq -0x40(%rbp), %rsi
callq 0x299e0
leaq -0x50(%rbp), %rdi
callq 0x8c90
movq -0x10(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rsi
leaq -0x50(%rbp), %rdx
callq 0x35980
leaq -0x60(%rbp), %rdi
callq 0x8c90
movq -0x10(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rsi
leaq -0x60(%rbp), %rdx
callq 0x35980
leaq -0x70(%rbp), %rdi
callq 0x8c90
movq -0x10(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rsi
leaq -0x70(%rbp), %rdx
callq 0x35980
leaq -0x80(%rbp), %rdi
callq 0x8c90
movq -0x10(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rsi
leaq -0x80(%rbp), %rdx
callq 0x35980
leaq -0x90(%rbp), %rdi
callq 0x8c90
movq -0x10(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rsi
leaq -0x90(%rbp), %rdx
callq 0x35980
leaq -0xa0(%rbp), %rdi
callq 0x8c90
movq -0x10(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rsi
leaq -0xa0(%rbp), %rdx
callq 0x35980
movq -0x28(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rax
movq %rax, -0xa8(%rbp)
movq -0x28(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rax
movq %rax, -0xb0(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x2a260
leaq -0x1b0(%rbp), %rdi
callq 0x2a260
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0xa8(%rbp), %rcx
leaq -0x130(%rbp), %rdx
callq 0x2d590
movq -0x18(%rbp), %rdi
leaq -0x130(%rbp), %rsi
addq $0x10, %rsi
callq 0x9100
movq -0x18(%rbp), %rdi
leaq -0x130(%rbp), %rsi
callq 0x9100
leaq -0x1c0(%rbp), %rdi
callq 0x8c90
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0xa8(%rbp), %r8
leaq -0x1c0(%rbp), %rdx
leaq -0x130(%rbp), %rcx
callq 0x39580
movq -0x18(%rbp), %rax
movq %rax, -0x1d8(%rbp)
cmpq $0x0, -0x48(%rbp)
jne 0x3321d
leaq 0x446a1(%rip), %rax     # 0x778b5
movq %rax, -0x1e0(%rbp)
jmp 0x33228
movq -0x48(%rbp), %rax
movq %rax, -0x1e0(%rbp)
movq -0x1e0(%rbp), %rax
movq %rax, -0x1e8(%rbp)
cmpq $0x0, -0x48(%rbp)
jne 0x3324d
leaq 0x44671(%rip), %rax     # 0x778b5
movq %rax, -0x1f0(%rbp)
jmp 0x33258
movq -0x48(%rbp), %rax
movq %rax, -0x1f0(%rbp)
movq -0x1e8(%rbp), %rdx
movq -0x1d8(%rbp), %rdi
movq -0x1f0(%rbp), %rcx
addq $0x1, %rcx
leaq 0x463d8(%rip), %rsi     # 0x79650
movb $0x0, %al
callq 0x94d0
movq -0x28(%rbp), %rax
cmpl $0xe30, (%rax)          # imm = 0xE30
jne 0x33351
movq -0x18(%rbp), %rax
movq %rax, -0x1f8(%rbp)
cmpq $0x0, -0x1b8(%rbp)
jne 0x332b4
leaq 0x4460a(%rip), %rax     # 0x778b5
movq %rax, -0x200(%rbp)
jmp 0x332c2
movq -0x1b8(%rbp), %rax
movq %rax, -0x200(%rbp)
movq -0x200(%rbp), %rax
movq %rax, -0x208(%rbp)
cmpq $0x0, -0x58(%rbp)
jne 0x332e7
leaq 0x445d7(%rip), %rax     # 0x778b5
movq %rax, -0x210(%rbp)
jmp 0x332f2
movq -0x58(%rbp), %rax
movq %rax, -0x210(%rbp)
movq -0x210(%rbp), %rax
movq %rax, -0x218(%rbp)
cmpq $0x0, -0x78(%rbp)
jne 0x33317
leaq 0x445a7(%rip), %rax     # 0x778b5
movq %rax, -0x220(%rbp)
jmp 0x33322
movq -0x78(%rbp), %rax
movq %rax, -0x220(%rbp)
movq -0x218(%rbp), %rcx
movq -0x208(%rbp), %rdx
movq -0x1f8(%rbp), %rdi
movq -0x220(%rbp), %r8
leaq 0x4631c(%rip), %rsi     # 0x79661
movb $0x0, %al
callq 0x94d0
jmp 0x33441
movq -0x28(%rbp), %rax
cmpl $0xe20, (%rax)          # imm = 0xE20
jne 0x33420
movq -0x18(%rbp), %rax
movq %rax, -0x228(%rbp)
cmpq $0x0, -0x1b8(%rbp)
jne 0x33386
leaq 0x44538(%rip), %rax     # 0x778b5
movq %rax, -0x230(%rbp)
jmp 0x33394
movq -0x1b8(%rbp), %rax
movq %rax, -0x230(%rbp)
movq -0x230(%rbp), %rax
movq %rax, -0x238(%rbp)
cmpq $0x0, -0x78(%rbp)
jne 0x333b9
leaq 0x44505(%rip), %rax     # 0x778b5
movq %rax, -0x240(%rbp)
jmp 0x333c4
movq -0x78(%rbp), %rax
movq %rax, -0x240(%rbp)
movq -0x240(%rbp), %rax
movq %rax, -0x248(%rbp)
cmpq $0x0, -0x58(%rbp)
jne 0x333e9
leaq 0x444d5(%rip), %rax     # 0x778b5
movq %rax, -0x250(%rbp)
jmp 0x333f4
movq -0x58(%rbp), %rax
movq %rax, -0x250(%rbp)
movq -0x248(%rbp), %rcx
movq -0x238(%rbp), %rdx
movq -0x228(%rbp), %rdi
movq -0x250(%rbp), %r8
leaq 0x4624a(%rip), %rsi     # 0x79661
movb $0x0, %al
callq 0x94d0
jmp 0x3343f
leaq 0x3f034(%rip), %rdi     # 0x7245b
leaq 0x44ca2(%rip), %rsi     # 0x780d0
movl $0x10b1, %edx           # imm = 0x10B1
leaq 0x461b2(%rip), %rcx     # 0x795ec
callq 0x30a0
jmp 0x33441
movq -0x18(%rbp), %rax
movq %rax, -0x258(%rbp)
cmpq $0x0, -0x58(%rbp)
jne 0x33463
leaq 0x4445b(%rip), %rax     # 0x778b5
movq %rax, -0x260(%rbp)
jmp 0x3346e
movq -0x58(%rbp), %rax
movq %rax, -0x260(%rbp)
movq -0x260(%rbp), %rax
movq %rax, -0x268(%rbp)
cmpq $0x0, -0x58(%rbp)
jne 0x33493
leaq 0x4442b(%rip), %rax     # 0x778b5
movq %rax, -0x270(%rbp)
jmp 0x3349e
movq -0x58(%rbp), %rax
movq %rax, -0x270(%rbp)
movq -0x268(%rbp), %rdx
movq -0x258(%rbp), %rdi
movq -0x270(%rbp), %rcx
addq $0x1, %rcx
leaq 0x46192(%rip), %rsi     # 0x79650
movb $0x0, %al
callq 0x94d0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0xb0(%rbp), %rcx
leaq -0x1b0(%rbp), %rdx
callq 0x2d590
movq -0x18(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
addq $0x10, %rsi
callq 0x9100
movq -0x18(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
callq 0x9100
leaq -0x1d0(%rbp), %rdi
callq 0x8c90
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0xb0(%rbp), %r8
leaq -0x1d0(%rbp), %rdx
leaq -0x1b0(%rbp), %rcx
callq 0x39580
movq -0x18(%rbp), %rax
movq %rax, -0x278(%rbp)
cmpq $0x0, -0x68(%rbp)
jne 0x33554
leaq 0x4436a(%rip), %rax     # 0x778b5
movq %rax, -0x280(%rbp)
jmp 0x3355f
movq -0x68(%rbp), %rax
movq %rax, -0x280(%rbp)
movq -0x280(%rbp), %rax
movq %rax, -0x288(%rbp)
cmpq $0x0, -0x68(%rbp)
jne 0x33584
leaq 0x4433a(%rip), %rax     # 0x778b5
movq %rax, -0x290(%rbp)
jmp 0x3358f
movq -0x68(%rbp), %rax
movq %rax, -0x290(%rbp)
movq -0x288(%rbp), %rdx
movq -0x278(%rbp), %rdi
movq -0x290(%rbp), %rcx
addq $0x1, %rcx
leaq 0x460a1(%rip), %rsi     # 0x79650
movb $0x0, %al
callq 0x94d0
movq -0x18(%rbp), %rax
movq %rax, -0x298(%rbp)
cmpq $0x0, -0x78(%rbp)
jne 0x335d8
leaq 0x442e6(%rip), %rax     # 0x778b5
movq %rax, -0x2a0(%rbp)
jmp 0x335e3
movq -0x78(%rbp), %rax
movq %rax, -0x2a0(%rbp)
movq -0x2a0(%rbp), %rax
movq %rax, -0x2a8(%rbp)
cmpq $0x0, -0x78(%rbp)
jne 0x33608
leaq 0x442b6(%rip), %rax     # 0x778b5
movq %rax, -0x2b0(%rbp)
jmp 0x33613
movq -0x78(%rbp), %rax
movq %rax, -0x2b0(%rbp)
movq -0x2a8(%rbp), %rdx
movq -0x298(%rbp), %rdi
movq -0x2b0(%rbp), %rcx
addq $0x1, %rcx
leaq 0x4601d(%rip), %rsi     # 0x79650
movb $0x0, %al
callq 0x94d0
movq -0x28(%rbp), %rax
cmpl $0xe30, (%rax)          # imm = 0xE30
jne 0x33749
movq -0x20(%rbp), %rax
movq %rax, -0x2b8(%rbp)
cmpq $0x0, -0x88(%rbp)
jne 0x3366f
leaq 0x4424f(%rip), %rax     # 0x778b5
movq %rax, -0x2c0(%rbp)
jmp 0x3367d
movq -0x88(%rbp), %rax
movq %rax, -0x2c0(%rbp)
movq -0x2c0(%rbp), %rax
movq %rax, -0x2c8(%rbp)
cmpq $0x0, -0x48(%rbp)
jne 0x336a2
leaq 0x4421c(%rip), %rax     # 0x778b5
movq %rax, -0x2d0(%rbp)
jmp 0x336ad
movq -0x48(%rbp), %rax
movq %rax, -0x2d0(%rbp)
movq -0x2d0(%rbp), %rax
movq %rax, -0x2d8(%rbp)
cmpq $0x0, -0x1c8(%rbp)
jne 0x336d5
leaq 0x441e9(%rip), %rax     # 0x778b5
movq %rax, -0x2e0(%rbp)
jmp 0x336e3
movq -0x1c8(%rbp), %rax
movq %rax, -0x2e0(%rbp)
movq -0x2e0(%rbp), %rax
movq %rax, -0x2e8(%rbp)
cmpq $0x0, -0x68(%rbp)
jne 0x33708
leaq 0x441b6(%rip), %rax     # 0x778b5
movq %rax, -0x2f0(%rbp)
jmp 0x33713
movq -0x68(%rbp), %rax
movq %rax, -0x2f0(%rbp)
movq -0x2e8(%rbp), %r8
movq -0x2d8(%rbp), %rcx
movq -0x2c8(%rbp), %rdx
movq -0x2b8(%rbp), %rdi
movq -0x2f0(%rbp), %r9
leaq 0x45f42(%rip), %rsi     # 0x7967f
movb $0x0, %al
callq 0x94d0
jmp 0x33876
movq -0x28(%rbp), %rax
cmpl $0xe20, (%rax)          # imm = 0xE20
jne 0x33855
movq -0x20(%rbp), %rax
movq %rax, -0x2f8(%rbp)
cmpq $0x0, -0x88(%rbp)
jne 0x3377e
leaq 0x44140(%rip), %rax     # 0x778b5
movq %rax, -0x300(%rbp)
jmp 0x3378c
movq -0x88(%rbp), %rax
movq %rax, -0x300(%rbp)
movq -0x300(%rbp), %rax
movq %rax, -0x308(%rbp)
cmpq $0x0, -0x48(%rbp)
jne 0x337b1
leaq 0x4410d(%rip), %rax     # 0x778b5
movq %rax, -0x310(%rbp)
jmp 0x337bc
movq -0x48(%rbp), %rax
movq %rax, -0x310(%rbp)
movq -0x310(%rbp), %rax
movq %rax, -0x318(%rbp)
cmpq $0x0, -0x1c8(%rbp)
jne 0x337e4
leaq 0x440da(%rip), %rax     # 0x778b5
movq %rax, -0x320(%rbp)
jmp 0x337f2
movq -0x1c8(%rbp), %rax
movq %rax, -0x320(%rbp)
movq -0x320(%rbp), %rax
movq %rax, -0x328(%rbp)
cmpq $0x0, -0x68(%rbp)
jne 0x33817
leaq 0x440a7(%rip), %rax     # 0x778b5
movq %rax, -0x330(%rbp)
jmp 0x33822
movq -0x68(%rbp), %rax
movq %rax, -0x330(%rbp)
movq -0x328(%rbp), %r8
movq -0x318(%rbp), %rcx
movq -0x308(%rbp), %rdx
movq -0x2f8(%rbp), %rdi
movq -0x330(%rbp), %r9
leaq 0x45e5a(%rip), %rsi     # 0x796a6
movb $0x0, %al
callq 0x94d0
jmp 0x33874
leaq 0x3ebff(%rip), %rdi     # 0x7245b
leaq 0x4486d(%rip), %rsi     # 0x780d0
movl $0x10e6, %edx           # imm = 0x10E6
leaq 0x45d7d(%rip), %rcx     # 0x795ec
callq 0x30a0
jmp 0x33876
movq -0x20(%rbp), %rax
movq %rax, -0x338(%rbp)
cmpq $0x0, -0x98(%rbp)
jne 0x3389b
leaq 0x44023(%rip), %rax     # 0x778b5
movq %rax, -0x340(%rbp)
jmp 0x338a9
movq -0x98(%rbp), %rax
movq %rax, -0x340(%rbp)
movq -0x340(%rbp), %rax
movq %rax, -0x348(%rbp)
cmpq $0x0, -0x88(%rbp)
jne 0x338d1
leaq 0x43fed(%rip), %rax     # 0x778b5
movq %rax, -0x350(%rbp)
jmp 0x338df
movq -0x88(%rbp), %rax
movq %rax, -0x350(%rbp)
movq -0x350(%rbp), %rax
movq %rax, -0x358(%rbp)
cmpq $0x0, -0x38(%rbp)
jne 0x33904
leaq 0x43fba(%rip), %rax     # 0x778b5
movq %rax, -0x360(%rbp)
jmp 0x3390f
movq -0x38(%rbp), %rax
movq %rax, -0x360(%rbp)
movq -0x358(%rbp), %rcx
movq -0x348(%rbp), %rdx
movq -0x338(%rbp), %rdi
movq -0x360(%rbp), %r8
leaq 0x452de(%rip), %rsi     # 0x78c10
movb $0x0, %al
callq 0x94d0
movq -0x20(%rbp), %rax
movq %rax, -0x368(%rbp)
cmpq $0x0, -0x38(%rbp)
jne 0x3395b
leaq 0x43f63(%rip), %rax     # 0x778b5
movq %rax, -0x370(%rbp)
jmp 0x33966
movq -0x38(%rbp), %rax
movq %rax, -0x370(%rbp)
movq -0x370(%rbp), %rax
movq %rax, -0x378(%rbp)
cmpq $0x0, -0x98(%rbp)
jne 0x3398e
leaq 0x43f30(%rip), %rax     # 0x778b5
movq %rax, -0x380(%rbp)
jmp 0x3399c
movq -0x98(%rbp), %rax
movq %rax, -0x380(%rbp)
movq -0x378(%rbp), %rsi
movq -0x368(%rbp), %rdi
movq -0x380(%rbp), %rdx
callq 0x358a0
leaq -0x40(%rbp), %rdi
callq 0x9310
leaq -0x50(%rbp), %rdi
callq 0x9310
leaq -0x60(%rbp), %rdi
callq 0x9310
leaq -0x70(%rbp), %rdi
callq 0x9310
leaq -0x80(%rbp), %rdi
callq 0x9310
leaq -0x90(%rbp), %rdi
callq 0x9310
leaq -0xa0(%rbp), %rdi
callq 0x9310
leaq -0x130(%rbp), %rdi
callq 0x2c6a0
leaq -0x1b0(%rbp), %rdi
callq 0x2c6a0
leaq -0x1c0(%rbp), %rdi
callq 0x9310
movb $0x1, -0x1(%rbp)
jmp 0x33a29
movb $0x0, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x380, %rsp            # imm = 0x380
popq %rbp
retq
nopw (%rax,%rax)