// File: /workspace/github_c_makefile_star2_O0/Mikejmoffitt[P]romtools/bsplit/bsplit.c
// Function: main
int main(int argc, char **argv)
{
	if (argc < 2)
	{
		usage(argv[0]);
		return 0;
	}

	int bytes = 1;

	if (argc > 5)
	{
		bytes = atoi(argv[5]);
		printf("Using %d bytes interleave cadence\n", bytes);
	}

	if (argv[1][0] == 's')
	{
		if (argc < 5)
		{
			usage(argv[0]);
			return 0;
		}
		printf("Splitting\n");
		split(argv[2], argv[3], argv[4], bytes);
	}
	else if (argv[1][0] == 'c')
	{
		if (argc < 5)
		{
			usage(argv[0]);
			return 0;
		}
		printf("Combining\n");
		combine(argv[2], argv[3], argv[4], bytes);
	}
	else if (argv[1][0] == 'x')
	{
		if (argc < 4)
		{
			usage(argv[0]);
			return 0;
		}
		printf("Exchanging bytes\n");
		exchange(argv[2], argv[3]);
	}
	else if (argv[1][0] == 'n')
	{
		if (argc < 4)
		{
			usage(argv[0]);
			return 0;
		}
		printf("Exchanging nybbles\n");
		exchange_nybbles(argv[2], argv[3]);
	}
	else if (argv[1][0] == 'z')
	{
		if (argc < 4)
		{
			usage(argv[0]);
			return 0;
		}
		printf("Exchanging half-nybbles\n");
		exchange_halfnybbles(argv[2], argv[3]);
	}

	return 0;
}

// Assembly:
subq $0x18, %rsp
movl $0x0, 0x14(%rsp)
movl %edi, 0x10(%rsp)
movq %rsi, 0x8(%rsp)
cmpl $0x2, 0x10(%rsp)
jge 0x18e6
movq 0x8(%rsp), %rax
movq (%rax), %rdi
callq 0x1850
movl $0x0, 0x14(%rsp)
jmp 0x1b04
movl $0x1, 0x4(%rsp)
cmpl $0x5, 0x10(%rsp)
jle 0x1919
movq 0x8(%rsp), %rax
movq 0x28(%rax), %rdi
callq 0x10a0
movl %eax, 0x4(%rsp)
movl 0x4(%rsp), %esi
leaq 0x7b5(%rip), %rdi       # 0x20c7
movb $0x0, %al
callq 0x1040
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rax
movsbl (%rax), %eax
cmpl $0x73, %eax
jne 0x1982
cmpl $0x5, 0x10(%rsp)
jge 0x194b
movq 0x8(%rsp), %rax
movq (%rax), %rdi
callq 0x1850
movl $0x0, 0x14(%rsp)
jmp 0x1b04
leaq 0x798(%rip), %rdi       # 0x20ea
movb $0x0, %al
callq 0x1040
movq 0x8(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x8(%rsp), %rax
movq 0x18(%rax), %rsi
movq 0x8(%rsp), %rax
movq 0x20(%rax), %rdx
movl 0x4(%rsp), %ecx
callq 0x11b0
jmp 0x1afc
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rax
movsbl (%rax), %eax
cmpl $0x63, %eax
jne 0x19eb
cmpl $0x5, 0x10(%rsp)
jge 0x19b4
movq 0x8(%rsp), %rax
movq (%rax), %rdi
callq 0x1850
movl $0x0, 0x14(%rsp)
jmp 0x1b04
leaq 0x73a(%rip), %rdi       # 0x20f5
movb $0x0, %al
callq 0x1040
movq 0x8(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x8(%rsp), %rax
movq 0x18(%rax), %rsi
movq 0x8(%rsp), %rax
movq 0x20(%rax), %rdx
movl 0x4(%rsp), %ecx
callq 0x1380
jmp 0x1afa
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rax
movsbl (%rax), %eax
cmpl $0x78, %eax
jne 0x1a47
cmpl $0x4, 0x10(%rsp)
jge 0x1a1d
movq 0x8(%rsp), %rax
movq (%rax), %rdi
callq 0x1850
movl $0x0, 0x14(%rsp)
jmp 0x1b04
leaq 0x6dc(%rip), %rdi       # 0x2100
movb $0x0, %al
callq 0x1040
movq 0x8(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x8(%rsp), %rax
movq 0x18(%rax), %rsi
callq 0x1530
jmp 0x1af8
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rax
movsbl (%rax), %eax
cmpl $0x6e, %eax
jne 0x1aa0
cmpl $0x4, 0x10(%rsp)
jge 0x1a79
movq 0x8(%rsp), %rax
movq (%rax), %rdi
callq 0x1850
movl $0x0, 0x14(%rsp)
jmp 0x1b04
leaq 0x692(%rip), %rdi       # 0x2112
movb $0x0, %al
callq 0x1040
movq 0x8(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x8(%rsp), %rax
movq 0x18(%rax), %rsi
callq 0x1640
jmp 0x1af6
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rax
movsbl (%rax), %eax
cmpl $0x7a, %eax
jne 0x1af4
cmpl $0x4, 0x10(%rsp)
jge 0x1acf
movq 0x8(%rsp), %rax
movq (%rax), %rdi
callq 0x1850
movl $0x0, 0x14(%rsp)
jmp 0x1b04
leaq 0x650(%rip), %rdi       # 0x2126
movb $0x0, %al
callq 0x1040
movq 0x8(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x8(%rsp), %rax
movq 0x18(%rax), %rsi
callq 0x1730
jmp 0x1af6
jmp 0x1af8
jmp 0x1afa
jmp 0x1afc
movl $0x0, 0x14(%rsp)
movl 0x14(%rsp), %eax
addq $0x18, %rsp
retq