// File: /workspace/github_c_makefile_star2_O0/j-hoppe[P]tu58fs/xxdp.c
// Function: xxdp_filesystem_render_volumeinfo
static void xxdp_filesystem_render_volumeinfo(xxdp_filesystem_t *_this, xxdp_file_t *f) {
	// static stream instance as buffer for name=value text
	static char text_buffer[4096 + XXDP_MAX_FILES_PER_IMAGE * 80]; // listing for all files
	char line[1024];
	int file_idx;
	time_t t = time(NULL);
	struct tm tm = *localtime(&t);

	text_buffer[0] = 0;
	sprintf(line, "# %s.%s - info about XXDP volume on %s device.\n", f->filnam, f->ext,
			_this->device_info->device_name);
	strcat(text_buffer, line);
	sprintf(line, "# Produced by TU58FS at %d-%d-%d %d:%d:%d\n", tm.tm_year + 1900,
			tm.tm_mon + 1, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec);
	strcat(text_buffer, line);

	sprintf(line, "\n# Blocks on device\nblockcount=%d\n", _this->blockcount);
	strcat(text_buffer, line);
	sprintf(line, "# But XXDP doc says %d\n", _this->radi.blocks_num);
	strcat(text_buffer, line);

	sprintf(line, "prealloc_blocks_num=%d\n", _this->radi.prealloc_blocks_num);
	strcat(text_buffer, line);
	sprintf(line, "interleave=%d\n", _this->radi.interleave);
	strcat(text_buffer, line);
	sprintf(line, "boot_block=%d\n", _this->radi.boot_block);
	strcat(text_buffer, line);
	sprintf(line, "monitor_block=%d\n", _this->radi.monitor_block);
	strcat(text_buffer, line);

	sprintf(line, "\n# Master File Directory %s\n",
			_this->radi.mfd2 < 0 ? "Var2: MFD1/2" : "Var1: MFD1+MFD2");
	strcat(text_buffer, line);
	sprintf(line, "mfd1=%d\n", _this->radi.mfd1);
	strcat(text_buffer, line);
	if (_this->radi.mfd2 > 0) {
		sprintf(line, "mfd2=%d\n", _this->radi.mfd2);
		strcat(text_buffer, line);
	}
	sprintf(line, "\n# Bitmap of used blocks:\nbitmap_block_1=%d\n",
			_this->radi.bitmap_block_1);
	strcat(text_buffer, line);
	sprintf(line, "bitmaps_num=%d\n", _this->radi.bitmaps_num);
	strcat(text_buffer, line);

	sprintf(line, "\n# User File Directory:\nufd_block_1=%d\n", _this->radi.ufd_block_1);
	strcat(text_buffer, line);
	sprintf(line, "ufd_blocks_num=%d\n", _this->radi.ufd_blocks_num);
	strcat(text_buffer, line);

	for (file_idx = 0; file_idx < _this->file_count; file_idx++) {
		xxdp_file_t *f = _this->file[file_idx];
		sprintf(line, "\n# File %2d \"%s.%s\".", file_idx, f->filnam, f->ext);
		strcat(text_buffer, line);
		sprintf(line, " Data %d = 0x%X bytes, start block %d @ 0x%X.", f->data_size,
				f->data_size, f->blocklist.blocknr[0],
				f->blocklist.blocknr[0] * XXDP_BLOCKSIZE);
		strcat(text_buffer, line);
	}
	strcat(text_buffer, "\n");

	f->data = (uint8_t *)text_buffer;
	f->data_size = strlen(text_buffer);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x470, %rsp            # imm = 0x470
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
xorl %eax, %eax
movl %eax, %edi
callq 0x3350
movq %rax, -0x420(%rbp)
leaq -0x420(%rbp), %rdi
callq 0x3060
movq %rax, %rsi
leaq -0x458(%rbp), %rdi
movl $0x38, %edx
callq 0x3330
movb $0x0, 0x15fe6(%rip)     # 0x28690
leaq -0x410(%rbp), %rdi
movq -0x10(%rbp), %rdx
addq $0x808, %rdx            # imm = 0x808
movq -0x10(%rbp), %rcx
addq $0x858, %rcx            # imm = 0x858
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movq 0x8(%rax), %r8
leaq 0xac92(%rip), %rsi      # 0x1d36c
movb $0x0, %al
callq 0x3520
leaq -0x410(%rbp), %rsi
leaq 0x15fa1(%rip), %rdi     # 0x28690
callq 0x3500
leaq -0x410(%rbp), %rdi
movl -0x444(%rbp), %edx
addl $0x76c, %edx            # imm = 0x76C
movl -0x448(%rbp), %ecx
addl $0x1, %ecx
movl -0x44c(%rbp), %r8d
movl -0x450(%rbp), %r9d
movl -0x454(%rbp), %r10d
movl -0x458(%rbp), %eax
leaq 0xac6a(%rip), %rsi      # 0x1d39c
movl %r10d, (%rsp)
movl %eax, 0x8(%rsp)
movb $0x0, %al
callq 0x3520
leaq -0x410(%rbp), %rsi
leaq 0x15f41(%rip), %rdi     # 0x28690
callq 0x3500
leaq -0x410(%rbp), %rdi
movq -0x8(%rbp), %rax
movl 0x4c(%rax), %edx
leaq 0xac5e(%rip), %rsi      # 0x1d3c7
movb $0x0, %al
callq 0x3520
leaq -0x410(%rbp), %rsi
leaq 0x15f12(%rip), %rdi     # 0x28690
callq 0x3500
leaq -0x410(%rbp), %rdi
movq -0x8(%rbp), %rax
movl 0x3c(%rax), %edx
leaq 0xac52(%rip), %rsi      # 0x1d3ea
movb $0x0, %al
callq 0x3520
leaq -0x410(%rbp), %rsi
leaq 0x15ee3(%rip), %rdi     # 0x28690
callq 0x3500
leaq -0x410(%rbp), %rdi
movq -0x8(%rbp), %rax
movzwl 0x40(%rax), %edx
leaq 0xac3a(%rip), %rsi      # 0x1d402
movb $0x0, %al
callq 0x3520
leaq -0x410(%rbp), %rsi
leaq 0x15eb3(%rip), %rdi     # 0x28690
callq 0x3500
leaq -0x410(%rbp), %rdi
movq -0x8(%rbp), %rax
movl 0x44(%rax), %edx
leaq 0xac23(%rip), %rsi      # 0x1d41a
movb $0x0, %al
callq 0x3520
leaq -0x410(%rbp), %rsi
leaq 0x15e84(%rip), %rdi     # 0x28690
callq 0x3500
leaq -0x410(%rbp), %rdi
movq -0x8(%rbp), %rax
movzwl 0x48(%rax), %edx
leaq 0xac02(%rip), %rsi      # 0x1d429
movb $0x0, %al
callq 0x3520
leaq -0x410(%rbp), %rsi
leaq 0x15e54(%rip), %rdi     # 0x28690
callq 0x3500
leaq -0x410(%rbp), %rdi
movq -0x8(%rbp), %rax
movzwl 0x4a(%rax), %edx
leaq 0xabe1(%rip), %rsi      # 0x1d438
movb $0x0, %al
callq 0x3520
leaq -0x410(%rbp), %rsi
leaq 0x15e24(%rip), %rdi     # 0x28690
callq 0x3500
leaq -0x410(%rbp), %rdi
movq -0x8(%rbp), %rax
movl 0x38(%rax), %ecx
leaq 0xabee(%rip), %rdx      # 0x1d474
leaq 0xabda(%rip), %rax      # 0x1d467
cmpl $0x0, %ecx
cmovlq %rax, %rdx
leaq 0xabaf(%rip), %rsi      # 0x1d44a
movb $0x0, %al
callq 0x3520
leaq -0x410(%rbp), %rsi
leaq 0x15de0(%rip), %rdi     # 0x28690
callq 0x3500
leaq -0x410(%rbp), %rdi
movq -0x8(%rbp), %rax
movl 0x34(%rax), %edx
leaq 0xabba(%rip), %rsi      # 0x1d484
movb $0x0, %al
callq 0x3520
leaq -0x410(%rbp), %rsi
leaq 0x15db1(%rip), %rdi     # 0x28690
callq 0x3500
movq -0x8(%rbp), %rax
cmpl $0x0, 0x38(%rax)
jle 0x1291d
leaq -0x410(%rbp), %rdi
movq -0x8(%rbp), %rax
movl 0x38(%rax), %edx
leaq 0xab8a(%rip), %rsi      # 0x1d48d
movb $0x0, %al
callq 0x3520
leaq -0x410(%rbp), %rsi
leaq 0x15d78(%rip), %rdi     # 0x28690
callq 0x3500
leaq -0x410(%rbp), %rdi
movq -0x8(%rbp), %rax
movzwl 0x30(%rax), %edx
leaq 0xab63(%rip), %rsi      # 0x1d496
movb $0x0, %al
callq 0x3520
leaq -0x410(%rbp), %rsi
leaq 0x15d48(%rip), %rdi     # 0x28690
callq 0x3500
leaq -0x410(%rbp), %rdi
movq -0x8(%rbp), %rax
movzwl 0x32(%rax), %edx
leaq 0xab60(%rip), %rsi      # 0x1d4c3
movb $0x0, %al
callq 0x3520
leaq -0x410(%rbp), %rsi
leaq 0x15d18(%rip), %rdi     # 0x28690
callq 0x3500
leaq -0x410(%rbp), %rdi
movq -0x8(%rbp), %rax
movzwl 0x2c(%rax), %edx
leaq 0xab40(%rip), %rsi      # 0x1d4d3
movb $0x0, %al
callq 0x3520
leaq -0x410(%rbp), %rsi
leaq 0x15ce8(%rip), %rdi     # 0x28690
callq 0x3500
leaq -0x410(%rbp), %rdi
movq -0x8(%rbp), %rax
movzwl 0x2e(%rax), %edx
leaq 0xab38(%rip), %rsi      # 0x1d4fb
movb $0x0, %al
callq 0x3520
leaq -0x410(%rbp), %rsi
leaq 0x15cb8(%rip), %rdi     # 0x28690
callq 0x3500
movl $0x0, -0x414(%rbp)
movl -0x414(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0xa8(%rcx), %eax
jge 0x12ad3
movq -0x8(%rbp), %rax
movslq -0x414(%rbp), %rcx
movq 0xb0(%rax,%rcx,8), %rax
movq %rax, -0x460(%rbp)
leaq -0x410(%rbp), %rdi
movl -0x414(%rbp), %edx
movq -0x460(%rbp), %rcx
addq $0x808, %rcx            # imm = 0x808
movq -0x460(%rbp), %r8
addq $0x858, %r8             # imm = 0x858
leaq 0xaac7(%rip), %rsi      # 0x1d50e
movb $0x0, %al
callq 0x3520
leaq -0x410(%rbp), %rsi
leaq 0x15c34(%rip), %rdi     # 0x28690
callq 0x3500
leaq -0x410(%rbp), %rdi
movq -0x460(%rbp), %rax
movl 0x884(%rax), %edx
movq -0x460(%rbp), %rax
movl 0x884(%rax), %ecx
movq -0x460(%rbp), %rax
movzwl 0x4(%rax), %r8d
movq -0x460(%rbp), %rax
movzwl 0x4(%rax), %r9d
shll $0x9, %r9d
leaq 0xaa7e(%rip), %rsi      # 0x1d523
movb $0x0, %al
callq 0x3520
leaq -0x410(%rbp), %rsi
leaq 0x15bd6(%rip), %rdi     # 0x28690
callq 0x3500
movl -0x414(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x414(%rbp)
jmp 0x129e7
leaq 0x15bb6(%rip), %rdi     # 0x28690
leaq 0x9be2(%rip), %rsi      # 0x1c6c3
callq 0x3500
movq -0x10(%rbp), %rax
leaq 0x15b9f(%rip), %rcx     # 0x28690
movq %rcx, 0x888(%rax)
leaq 0x15b91(%rip), %rdi     # 0x28690
callq 0x3190
movl %eax, %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x884(%rax)
addq $0x470, %rsp            # imm = 0x470
popq %rbp
retq
nopl (%rax)