// File: /workspace/github_c_makefile_star2_O0/ffoissey[P]push_swap_42/srcs_push_swap/ft_algo.c
// Function: ft_divide_b_stack
static void	ft_divide_b_stack(t_stack *s, int *ret_a, int *ret_b)
{
	long	pivot;

	if (s->size_b < 4)
		ft_three_b(s);
	ft_reposition(s, ret_a, ret_b, 0);
	if (s->size_b < 4 || *ret_b)
		return ;
	pivot = ft_third(s->b, s->size_b);
	while (s->size_b > 3 && ft_over_pivot(s->b, s->size_b, pivot, 1)
			&& !ft_is_good(s->b, s->size_b, 1))
	{
		if (s->b[s->size_b - 1] >= pivot)
			ft_cmd(ft_exec_push, s, "pa");
		else
		{
			ft_cmd(ft_exec_rotate, s, "rb");
			if (s->size_a
					&& ft_is_the_biggest(s->a, s->size_a, s->a[s->size_a - 1]))
				ft_cmd(ft_exec_rotate, s, "ra");
		}
		ft_reposition(s, ret_a, ret_b, 1);
	}
	while (!ft_is_the_biggest(s->b, s->size_b, s->b[s->size_b - 1]))
		ft_cmd(ft_exec_rotate, s, "rb");
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rax
cmpq $0x4, 0x28(%rax)
jae 0x1c58
movq -0x8(%rbp), %rdi
callq 0x38f0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
xorl %ecx, %ecx
callq 0x2a70
movq -0x8(%rbp), %rax
cmpq $0x4, 0x28(%rax)
jb 0x1c7f
movq -0x18(%rbp), %rax
cmpl $0x0, (%rax)
je 0x1c84
jmp 0x1e1f
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x8(%rbp), %rax
movq 0x28(%rax), %rax
movl %eax, %esi
callq 0x2d30
cltq
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rcx
xorl %eax, %eax
cmpq $0x3, 0x28(%rcx)
movb %al, -0x21(%rbp)
jbe 0x1d00
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x8(%rbp), %rax
movq 0x28(%rax), %rsi
movq -0x20(%rbp), %rdx
movl $0x1, %ecx
callq 0x3590
movl %eax, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x21(%rbp)
je 0x1d00
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x8(%rbp), %rax
movq 0x28(%rax), %rsi
movl $0x1, %edx
callq 0x27c0
cmpl $0x0, %eax
setne %al
xorb $-0x1, %al
movb %al, -0x21(%rbp)
movb -0x21(%rbp), %al
testb $0x1, %al
jne 0x1d0c
jmp 0x1dc9
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq -0x8(%rbp), %rcx
movq 0x28(%rcx), %rcx
subq $0x1, %rcx
movq (%rax,%rcx,8), %rax
cmpq -0x20(%rbp), %rax
jl 0x1d43
movq -0x8(%rbp), %rsi
leaq 0x229b(%rip), %rdi      # 0x3fd0
leaq 0x42ec(%rip), %rdx      # 0x6028
callq 0x2f20
jmp 0x1dae
movq -0x8(%rbp), %rsi
leaq 0x2392(%rip), %rdi      # 0x40e0
leaq 0x42c4(%rip), %rdx      # 0x6019
callq 0x2f20
movq -0x8(%rbp), %rax
cmpq $0x0, 0x20(%rax)
je 0x1dac
movq -0x8(%rbp), %rax
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rsi
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rbp), %rcx
movq 0x20(%rcx), %rcx
subq $0x1, %rcx
movq (%rax,%rcx,8), %rdx
callq 0x2c50
cmpl $0x0, %eax
je 0x1dac
movq -0x8(%rbp), %rsi
leaq 0x2340(%rip), %rdi      # 0x40e0
leaq 0x426e(%rip), %rdx      # 0x6015
callq 0x2f20
jmp 0x1dae
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movl $0x1, %ecx
callq 0x2a70
jmp 0x1ca1
jmp 0x1dcb
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x8(%rbp), %rax
movq 0x28(%rax), %rsi
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq -0x8(%rbp), %rcx
movq 0x28(%rcx), %rcx
subq $0x1, %rcx
movq (%rax,%rcx,8), %rdx
callq 0x2c50
cmpl $0x0, %eax
setne %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x1e06
jmp 0x1e1f
movq -0x8(%rbp), %rsi
leaq 0x22cf(%rip), %rdi      # 0x40e0
leaq 0x4201(%rip), %rdx      # 0x6019
callq 0x2f20
jmp 0x1dcb
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)