// File: CobaltXII[P]cxcc/./compiler/compiler.hpp
// Function: compiler_t::pack_strings(statement_t*)
void pack_strings(statement_t* statement) {
		if (statement->type == st_compound) {
			compound_statement_t stmt = statement->compound_stmt;
			for (int i = 0; i < stmt.statements.size(); i++) {
				pack_strings(stmt.statements[i]);
			}
		} else if (statement->type == st_conditional) {
			pack_strings(statement->conditional_stmt.condition);
			pack_strings(statement->conditional_stmt.body);
		} else if (statement->type == st_while) {
			pack_strings(statement->while_stmt.condition);
			pack_strings(statement->while_stmt.body);
		} else if (statement->type == st_return) {
			pack_strings(statement->return_stmt.value);
		} else if (statement->type == st_variable_declaration) {
			variable_declaration_statement_t stmt = statement->variable_declaration_stmt;
			if (stmt.initializer) {
				pack_strings(stmt.initializer);
			}
		} else if (statement->type == st_expression) {
			pack_strings(statement->expression_stmt.expression);
		}
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x10(%rbp), %rax
cmpl $0x0, (%rax)
jne 0x242fd
movq -0x10(%rbp), %rsi
addq $0x8, %rsi
leaq -0x28(%rbp), %rdi
callq 0x1d5f0
movl $0x0, -0x2c(%rbp)
movslq -0x2c(%rbp), %rax
movq %rax, -0x80(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x10c30
movq %rax, %rcx
movq -0x80(%rbp), %rax
cmpq %rcx, %rax
jae 0x242ef
movslq -0x2c(%rbp), %rsi
leaq -0x28(%rbp), %rdi
callq 0x1c130
movq -0x78(%rbp), %rdi
movq (%rax), %rsi
callq 0x24250
jmp 0x242c8
jmp 0x242ca
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x24290
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x110f0
jmp 0x243fa
leaq -0x28(%rbp), %rdi
callq 0x110f0
jmp 0x243f1
movq -0x10(%rbp), %rax
cmpl $0x1, (%rax)
jne 0x2432d
movq -0x78(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rsi
callq 0x24410
movq -0x78(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rsi
callq 0x24250
jmp 0x243ef
movq -0x10(%rbp), %rax
cmpl $0x2, (%rax)
jne 0x2435d
movq -0x78(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rsi
callq 0x24410
movq -0x78(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rsi
callq 0x24250
jmp 0x243ed
movq -0x10(%rbp), %rax
cmpl $0x3, (%rax)
jne 0x24379
movq -0x78(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rsi
callq 0x24410
jmp 0x243eb
movq -0x10(%rbp), %rax
cmpl $0x4, (%rax)
jne 0x243cd
movq -0x10(%rbp), %rsi
addq $0x48, %rsi
leaq -0x70(%rbp), %rdi
callq 0x209e0
cmpq $0x0, -0x48(%rbp)
je 0x243c2
movq -0x78(%rbp), %rdi
movq -0x48(%rbp), %rsi
callq 0x24410
jmp 0x243a9
jmp 0x243c2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x70(%rbp), %rdi
callq 0x112c0
jmp 0x243fa
leaq -0x70(%rbp), %rdi
callq 0x112c0
jmp 0x243e9
movq -0x10(%rbp), %rax
cmpl $0x6, (%rax)
jne 0x243e7
movq -0x78(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x78(%rax), %rsi
callq 0x24410
jmp 0x243e9
jmp 0x243eb
jmp 0x243ed
jmp 0x243ef
jmp 0x243f1
addq $0x80, %rsp
popq %rbp
retq
movq -0x38(%rbp), %rdi
callq 0x34c0
nopw %cs:(%rax,%rax)
nopl (%rax)