// File: /workspace/github_c_makefile_star2_O0/gplessis[P]dotdeb-redis/src/rand.c
// Function: next
static void next(void) {
    uint32_t p[2], q[2], r[2], carry0, carry1;

    MUL(a[0], x[0], p);
    ADDEQU(p[0], c, carry0);
    ADDEQU(p[1], carry0, carry1);
    MUL(a[0], x[1], q);
    ADDEQU(p[1], q[0], carry0);
    MUL(a[1], x[0], r);
    x[2] = LOW(carry0 + carry1 + CARRY(p[1], r[0]) + q[1] + r[1] +
            a[0] * x[2] + a[1] * x[1] + a[2] * x[0]);
    x[1] = LOW(p[1] + r[0]);
    x[0] = LOW(p[0]);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movl 0xe8272(%rip), %eax     # 0x17732c
movl 0xe8260(%rip), %ecx     # 0x177320
imulq %rcx, %rax
movl %eax, -0x24(%rbp)
movl -0x24(%rbp), %eax
andl $0xffff, %eax           # imm = 0xFFFF
movl %eax, -0x8(%rbp)
movl -0x24(%rbp), %eax
sarl $0x10, %eax
andl $0xffff, %eax           # imm = 0xFFFF
movl %eax, -0x4(%rbp)
movslq -0x8(%rbp), %rax
movl 0xe824e(%rip), %ecx     # 0x177338
addq %rcx, %rax
cmpq $0xffff, %rax           # imm = 0xFFFF
setg %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x1c(%rbp)
movl -0x8(%rbp), %eax
addl 0xe8231(%rip), %eax     # 0x177338
andl $0xffff, %eax           # imm = 0xFFFF
movl %eax, -0x8(%rbp)
movslq -0x4(%rbp), %rax
movl -0x1c(%rbp), %ecx
addq %rcx, %rax
cmpq $0xffff, %rax           # imm = 0xFFFF
setg %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x20(%rbp)
movl -0x4(%rbp), %eax
addl -0x1c(%rbp), %eax
andl $0xffff, %eax           # imm = 0xFFFF
movl %eax, -0x4(%rbp)
movl 0xe81ee(%rip), %eax     # 0x17732c
movl 0xe81e0(%rip), %ecx     # 0x177324
imulq %rcx, %rax
movl %eax, -0x28(%rbp)
movl -0x28(%rbp), %eax
andl $0xffff, %eax           # imm = 0xFFFF
movl %eax, -0x10(%rbp)
movl -0x28(%rbp), %eax
sarl $0x10, %eax
andl $0xffff, %eax           # imm = 0xFFFF
movl %eax, -0xc(%rbp)
movslq -0x4(%rbp), %rax
movl -0x10(%rbp), %ecx
addq %rcx, %rax
cmpq $0xffff, %rax           # imm = 0xFFFF
setg %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x1c(%rbp)
movl -0x4(%rbp), %eax
addl -0x10(%rbp), %eax
andl $0xffff, %eax           # imm = 0xFFFF
movl %eax, -0x4(%rbp)
movl 0xe819d(%rip), %eax     # 0x177330
movl 0xe8187(%rip), %ecx     # 0x177320
imulq %rcx, %rax
movl %eax, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
andl $0xffff, %eax           # imm = 0xFFFF
movl %eax, -0x18(%rbp)
movl -0x2c(%rbp), %eax
sarl $0x10, %eax
andl $0xffff, %eax           # imm = 0xFFFF
movl %eax, -0x14(%rbp)
movl -0x1c(%rbp), %eax
addl -0x20(%rbp), %eax
movslq -0x4(%rbp), %rcx
movl -0x18(%rbp), %edx
addq %rdx, %rcx
cmpq $0xffff, %rcx           # imm = 0xFFFF
setg %cl
andb $0x1, %cl
movzbl %cl, %ecx
addl %ecx, %eax
addl -0xc(%rbp), %eax
addl -0x14(%rbp), %eax
movl 0xe8145(%rip), %ecx     # 0x17732c
imull 0xe813a(%rip), %ecx     # 0x177328
addl %ecx, %eax
movl 0xe813a(%rip), %ecx     # 0x177330
imull 0xe8127(%rip), %ecx     # 0x177324
addl %ecx, %eax
movl 0xe812f(%rip), %ecx     # 0x177334
imull 0xe8114(%rip), %ecx     # 0x177320
addl %ecx, %eax
andl $0xffff, %eax           # imm = 0xFFFF
movl %eax, 0xe810f(%rip)     # 0x177328
movl -0x4(%rbp), %eax
addl -0x18(%rbp), %eax
andl $0xffff, %eax           # imm = 0xFFFF
movl %eax, 0xe80fa(%rip)     # 0x177324
movl -0x8(%rbp), %eax
andl $0xffff, %eax           # imm = 0xFFFF
movl %eax, 0xe80e8(%rip)     # 0x177320
popq %rbp
retq
nopw (%rax,%rax)