// File: ksherlock[P]wdc-utils/afp/src/finder_info.cpp
// Function: (anonymous namespace)::file_type_to_finder_info(unsigned char*, unsigned short, unsigned int)
bool file_type_to_finder_info(uint8_t *buffer, uint16_t file_type, uint32_t aux_type) {
		if (file_type > 0xff || aux_type > 0xffff) return false;

		if (!file_type && aux_type == 0x0000) {
			memcpy(buffer, "BINApdos", 8);
			return true;
		}

		if (file_type == 0x04 && aux_type == 0x0000) {
			memcpy(buffer, "TEXTpdos", 8);
			return true;
		}

		if (file_type == 0xff && aux_type == 0x0000) {
			memcpy(buffer, "PSYSpdos", 8);
			return true;
		}

		if (file_type == 0xb3 && aux_type == 0x0000) {
			memcpy(buffer, "PS16pdos", 8);
			return true;
		}

		if (file_type == 0xd7 && aux_type == 0x0000) {
			memcpy(buffer, "MIDIpdos", 8);
			return true;
		}
		if (file_type == 0xd8 && aux_type == 0x0000) {
			memcpy(buffer, "AIFFpdos", 8);
			return true;
		}
		if (file_type == 0xd8 && aux_type == 0x0001) {
			memcpy(buffer, "AIFCpdos", 8);
			return true;
		}
		if (file_type == 0xe0 && aux_type == 0x0005) {
			memcpy(buffer, "dImgdCpy", 8);
			return true;
		}


		memcpy(buffer, "p   pdos", 8);
		buffer[1] = (file_type) & 0xff;
		buffer[2] = (aux_type >> 8) & 0xff;
		buffer[3] = (aux_type) & 0xff;
		return true;
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movw %si, %ax
movq %rdi, -0x10(%rbp)
movw %ax, -0x12(%rbp)
movl %edx, -0x18(%rbp)
movzwl -0x12(%rbp), %eax
cmpl $0xff, %eax
jg 0x298d6
cmpl $0xffff, -0x18(%rbp)    # imm = 0xFFFF
jbe 0x298df
movb $0x0, -0x1(%rbp)
jmp 0x29a5c
cmpw $0x0, -0x12(%rbp)
jne 0x29903
cmpl $0x0, -0x18(%rbp)
jne 0x29903
movq -0x10(%rbp), %rax
movq 0x2304(%rip), %rcx      # 0x2bbfb
movq %rcx, (%rax)
movb $0x1, -0x1(%rbp)
jmp 0x29a5c
movzwl -0x12(%rbp), %eax
cmpl $0x4, %eax
jne 0x29929
cmpl $0x0, -0x18(%rbp)
jne 0x29929
movq -0x10(%rbp), %rax
movq 0x22e7(%rip), %rcx      # 0x2bc04
movq %rcx, (%rax)
movb $0x1, -0x1(%rbp)
jmp 0x29a5c
movzwl -0x12(%rbp), %eax
cmpl $0xff, %eax
jne 0x29951
cmpl $0x0, -0x18(%rbp)
jne 0x29951
movq -0x10(%rbp), %rax
movq 0x22c8(%rip), %rcx      # 0x2bc0d
movq %rcx, (%rax)
movb $0x1, -0x1(%rbp)
jmp 0x29a5c
movzwl -0x12(%rbp), %eax
cmpl $0xb3, %eax
jne 0x29979
cmpl $0x0, -0x18(%rbp)
jne 0x29979
movq -0x10(%rbp), %rax
movq 0x22a9(%rip), %rcx      # 0x2bc16
movq %rcx, (%rax)
movb $0x1, -0x1(%rbp)
jmp 0x29a5c
movzwl -0x12(%rbp), %eax
cmpl $0xd7, %eax
jne 0x299a1
cmpl $0x0, -0x18(%rbp)
jne 0x299a1
movq -0x10(%rbp), %rax
movq 0x228a(%rip), %rcx      # 0x2bc1f
movq %rcx, (%rax)
movb $0x1, -0x1(%rbp)
jmp 0x29a5c
movzwl -0x12(%rbp), %eax
cmpl $0xd8, %eax
jne 0x299c9
cmpl $0x0, -0x18(%rbp)
jne 0x299c9
movq -0x10(%rbp), %rax
movq 0x226b(%rip), %rcx      # 0x2bc28
movq %rcx, (%rax)
movb $0x1, -0x1(%rbp)
jmp 0x29a5c
movzwl -0x12(%rbp), %eax
cmpl $0xd8, %eax
jne 0x299ee
cmpl $0x1, -0x18(%rbp)
jne 0x299ee
movq -0x10(%rbp), %rax
movq 0x224c(%rip), %rcx      # 0x2bc31
movq %rcx, (%rax)
movb $0x1, -0x1(%rbp)
jmp 0x29a5c
movzwl -0x12(%rbp), %eax
cmpl $0xe0, %eax
jne 0x29a13
cmpl $0x5, -0x18(%rbp)
jne 0x29a13
movq -0x10(%rbp), %rax
movq 0x21d9(%rip), %rcx      # 0x2bbe3
movq %rcx, (%rax)
movb $0x1, -0x1(%rbp)
jmp 0x29a5c
movq -0x10(%rbp), %rax
movq 0x221c(%rip), %rcx      # 0x2bc3a
movq %rcx, (%rax)
movzwl -0x12(%rbp), %eax
andl $0xff, %eax
movb %al, %cl
movq -0x10(%rbp), %rax
movb %cl, 0x1(%rax)
movl -0x18(%rbp), %eax
shrl $0x8, %eax
andl $0xff, %eax
movb %al, %cl
movq -0x10(%rbp), %rax
movb %cl, 0x2(%rax)
movl -0x18(%rbp), %eax
andl $0xff, %eax
movb %al, %cl
movq -0x10(%rbp), %rax
movb %cl, 0x3(%rax)
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
popq %rbp
retq
nopw %cs:(%rax,%rax)