// File: /workspace/github_c_makefile_star2_O0/OstCollector[P]config2c/config2c.c
// Function: helper_free_array
static void helper_free_array(const struct node_vec_def *vec,
		const struct type_decl *decl,
		const struct string_list *vars, int l)
{
	string free_func;
	const struct string_list *var;

	if (vec->type == NODE_TYPE_FIX_INT) {
		osi(l, "for (i = 0; i < %ld; ++i) {\n",
				vec->len_int);
	} else if (vec->type == NODE_TYPE_FIX_STR) {
		osi(l, "for (i = 0; i < %s; ++i) {\n",
				vec->len_str);
	} else {
		osi(l, "for (i = 0; i < value->%s; ++i) {\n",
				vec->len_str);
	}

	switch (decl->type) {
	case TYPE_DECL_PRIM:
		free_func = lookup_map(decl->type_name)->free_func;
		osi(l + 1, "%s(", free_func);
		out_str_list(0, "&value->", "[i]", vars);
		out_src(");\n");
		break;
	case TYPE_DECL_ENUM:
		break;
	case TYPE_DECL_STRUCT:
		osi(l + 1, "free__struct_%s(&value->%s[i]);\n",
				decl->type_name, vars->str);
		break;
	case TYPE_DECL_UNION:
		osi(l + 1, "free__union_%s(", decl->type_name);
		out_str_list(0, "&value->", "[i]", vars);
		out_src(");\n");
		break;
	}

	osi(l, "}\n"); /* for */

	if (vec->type == NODE_TYPE_VAR_ARR) {
		for (var = vars; var; var = var->next) {
			osi(l, "free(value->%s);\n", var->str);
		}
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movl %ecx, -0x1c(%rbp)
movq -0x8(%rbp), %rax
cmpl $0x1, (%rax)
jne 0xbec1
jmp 0xbe62
movl -0x1c(%rbp), %edi
callq 0x6fd0
movq 0xf42f(%rip), %rdi      # 0x1b2a0
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdx
leaq 0xb2e4(%rip), %rsi      # 0x17164
movb $0x0, %al
callq 0x2100
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jle 0xbeb8
movq 0xf15a(%rip), %rax      # 0x1aff0
movq (%rax), %rdi
leaq 0x9ab4(%rip), %rsi      # 0x15954
leaq 0x9ac5(%rip), %rdx      # 0x1596c
movb $0x0, %al
callq 0x2100
movl $0x1, %edi
callq 0x2180
jmp 0xbeba
jmp 0xbebc
jmp 0xbf88
movq -0x8(%rbp), %rax
cmpl $0x2, (%rax)
jne 0xbf28
jmp 0xbecc
movl -0x1c(%rbp), %edi
callq 0x6fd0
movq 0xf3c5(%rip), %rdi      # 0x1b2a0
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdx
leaq 0xb297(%rip), %rsi      # 0x17181
movb $0x0, %al
callq 0x2100
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jle 0xbf22
movq 0xf0f0(%rip), %rax      # 0x1aff0
movq (%rax), %rdi
leaq 0x9a4a(%rip), %rsi      # 0x15954
leaq 0x9a5b(%rip), %rdx      # 0x1596c
movb $0x0, %al
callq 0x2100
movl $0x1, %edi
callq 0x2180
jmp 0xbf24
jmp 0xbf26
jmp 0xbf86
jmp 0xbf2a
movl -0x1c(%rbp), %edi
callq 0x6fd0
movq 0xf367(%rip), %rdi      # 0x1b2a0
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdx
leaq 0xb255(%rip), %rsi      # 0x1719d
movb $0x0, %al
callq 0x2100
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jle 0xbf80
movq 0xf092(%rip), %rax      # 0x1aff0
movq (%rax), %rdi
leaq 0x99ec(%rip), %rsi      # 0x15954
leaq 0x99fd(%rip), %rdx      # 0x1596c
movb $0x0, %al
callq 0x2100
movl $0x1, %edi
callq 0x2180
jmp 0xbf82
jmp 0xbf84
jmp 0xbf86
jmp 0xbf88
movq -0x10(%rbp), %rax
movl (%rax), %eax
movq %rax, -0x38(%rbp)
subq $0x3, %rax
ja 0xc1b6
movq -0x38(%rbp), %rax
leaq 0x9165(%rip), %rcx      # 0x1510c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x8960
movq 0x10(%rax), %rax
movq %rax, -0x28(%rbp)
movl -0x1c(%rbp), %edi
addl $0x1, %edi
callq 0x6fd0
movq 0xf2c9(%rip), %rdi      # 0x1b2a0
movq -0x28(%rbp), %rdx
leaq 0xb144(%rip), %rsi      # 0x17126
movb $0x0, %al
callq 0x2100
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jle 0xc01a
movq 0xeff8(%rip), %rax      # 0x1aff0
movq (%rax), %rdi
leaq 0x9952(%rip), %rsi      # 0x15954
leaq 0x9963(%rip), %rdx      # 0x1596c
movb $0x0, %al
callq 0x2100
movl $0x1, %edi
callq 0x2180
jmp 0xc01c
jmp 0xc01e
movq -0x18(%rbp), %rcx
xorl %edi, %edi
leaq 0xac74(%rip), %rsi      # 0x16c9f
leaq 0xb015(%rip), %rdx      # 0x17047
callq 0xba30
movq 0xf262(%rip), %rdi      # 0x1b2a0
leaq 0xb293(%rip), %rsi      # 0x172d8
movb $0x0, %al
callq 0x2100
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jle 0xc07d
movq 0xef95(%rip), %rax      # 0x1aff0
movq (%rax), %rdi
leaq 0x98ef(%rip), %rsi      # 0x15954
leaq 0x9900(%rip), %rdx      # 0x1596c
movb $0x0, %al
callq 0x2100
movl $0x1, %edi
callq 0x2180
jmp 0xc07f
jmp 0xc1b6
jmp 0xc1b6
jmp 0xc08b
movl -0x1c(%rbp), %edi
addl $0x1, %edi
callq 0x6fd0
movq 0xf203(%rip), %rdi      # 0x1b2a0
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdx
movq -0x18(%rbp), %rax
movq (%rax), %rcx
leaq 0xb046(%rip), %rsi      # 0x170f9
movb $0x0, %al
callq 0x2100
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jle 0xc0eb
movq 0xef27(%rip), %rax      # 0x1aff0
movq (%rax), %rdi
leaq 0x9881(%rip), %rsi      # 0x15954
leaq 0x9892(%rip), %rdx      # 0x1596c
movb $0x0, %al
callq 0x2100
movl $0x1, %edi
callq 0x2180
jmp 0xc0ed
jmp 0xc0ef
jmp 0xc1b6
jmp 0xc0f6
movl -0x1c(%rbp), %edi
addl $0x1, %edi
callq 0x6fd0
movq 0xf198(%rip), %rdi      # 0x1b2a0
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdx
leaq 0xb003(%rip), %rsi      # 0x1711a
movb $0x0, %al
callq 0x2100
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jle 0xc14f
movq 0xeec3(%rip), %rax      # 0x1aff0
movq (%rax), %rdi
leaq 0x981d(%rip), %rsi      # 0x15954
leaq 0x982e(%rip), %rdx      # 0x1596c
movb $0x0, %al
callq 0x2100
movl $0x1, %edi
callq 0x2180
jmp 0xc151
jmp 0xc153
movq -0x18(%rbp), %rcx
xorl %edi, %edi
leaq 0xab3f(%rip), %rsi      # 0x16c9f
leaq 0xaee0(%rip), %rdx      # 0x17047
callq 0xba30
movq 0xf12d(%rip), %rdi      # 0x1b2a0
leaq 0xb15e(%rip), %rsi      # 0x172d8
movb $0x0, %al
callq 0x2100
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jle 0xc1b2
movq 0xee60(%rip), %rax      # 0x1aff0
movq (%rax), %rdi
leaq 0x97ba(%rip), %rsi      # 0x15954
leaq 0x97cb(%rip), %rdx      # 0x1596c
movb $0x0, %al
callq 0x2100
movl $0x1, %edi
callq 0x2180
jmp 0xc1b4
jmp 0xc1b6
jmp 0xc1b8
movl -0x1c(%rbp), %edi
callq 0x6fd0
movq 0xf0d9(%rip), %rdi      # 0x1b2a0
leaq 0x9c8f(%rip), %rsi      # 0x15e5d
movb $0x0, %al
callq 0x2100
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jle 0xc206
movq 0xee0c(%rip), %rax      # 0x1aff0
movq (%rax), %rdi
leaq 0x9766(%rip), %rsi      # 0x15954
leaq 0x9777(%rip), %rdx      # 0x1596c
movb $0x0, %al
callq 0x2100
movl $0x1, %edi
callq 0x2180
jmp 0xc208
jmp 0xc20a
movq -0x8(%rbp), %rax
cmpl $0x3, (%rax)
jne 0xc28f
movq -0x18(%rbp), %rax
movq %rax, -0x30(%rbp)
cmpq $0x0, -0x30(%rbp)
je 0xc28d
jmp 0xc224
movl -0x1c(%rbp), %edi
callq 0x6fd0
movq 0xf06d(%rip), %rdi      # 0x1b2a0
movq -0x30(%rbp), %rax
movq (%rax), %rdx
leaq 0xaee9(%rip), %rsi      # 0x1712a
movb $0x0, %al
callq 0x2100
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jle 0xc279
movq 0xed99(%rip), %rax      # 0x1aff0
movq (%rax), %rdi
leaq 0x96f3(%rip), %rsi      # 0x15954
leaq 0x9704(%rip), %rdx      # 0x1596c
movb $0x0, %al
callq 0x2100
movl $0x1, %edi
callq 0x2180
jmp 0xc27b
jmp 0xc27d
jmp 0xc27f
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x30(%rbp)
jmp 0xc21b
jmp 0xc28f
addq $0x40, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)