// File: /workspace/github_c_makefile_star2_O2/sTeeLM[P]dwipe/isaac_rand.c
// Function: isaac
void     isaac(ctx)
randctx *ctx;
{
   register ub4 a,b,x,y,*m,*mm,*m2,*r,*mend;
   mm=ctx->randmem; r=ctx->randrsl;
   a = ctx->randa; b = ctx->randb + (++ctx->randc);
   for (m = mm, mend = m2 = m+(RANDSIZ/2); m<mend; )
   {
      rngstep( a<<13, a, b, mm, m, m2, r, x);
      rngstep( a>>6 , a, b, mm, m, m2, r, x);
      rngstep( a<<2 , a, b, mm, m, m2, r, x);
      rngstep( a>>16, a, b, mm, m, m2, r, x);
   }
   for (m2 = mm; m2<mend; )
   {
      rngstep( a<<13, a, b, mm, m, m2, r, x);
      rngstep( a>>6 , a, b, mm, m, m2, r, x);
      rngstep( a<<2 , a, b, mm, m, m2, r, x);
      rngstep( a>>16, a, b, mm, m, m2, r, x);
   }
   ctx->randb = b; ctx->randa = a;
}

// Assembly:
pushq %rbx
leaq 0x8(%rdi), %rdx
movq 0x1008(%rdi), %r10
movq 0x1018(%rdi), %rcx
incq %rcx
movq %rcx, 0x1018(%rdi)
addq 0x1010(%rdi), %rcx
leaq 0xc08(%rdi), %rsi
movl $0x808, %eax            # imm = 0x808
movl $0x3fc, %r8d            # imm = 0x3FC
movl $0x3fc, %r9d            # imm = 0x3FC
cmpq $0xc08, %rax            # imm = 0xC08
jae 0x6ecc
movq (%rdi,%rax), %r11
movq %r10, %rbx
shlq $0xd, %rbx
xorq %r10, %rbx
addq (%rsi), %rbx
movq %r11, %r10
andq %r8, %r10
addq %rbx, %rcx
addq 0x808(%rdi,%r10), %rcx
movq %rcx, (%rdi,%rax)
shrl $0x8, %ecx
andl %r9d, %ecx
addq 0x808(%rdi,%rcx), %r11
movq %r11, (%rdx)
movq %rbx, %r10
shrq $0x6, %r10
xorq %rbx, %r10
addq 0x8(%rsi), %r10
movq 0x8(%rdi,%rax), %rcx
movq %rcx, %rbx
andq %r8, %rbx
addq %r10, %r11
addq 0x808(%rdi,%rbx), %r11
movq %r11, 0x8(%rdi,%rax)
shrl $0x8, %r11d
andl %r9d, %r11d
addq 0x808(%rdi,%r11), %rcx
movq %rcx, 0x8(%rdx)
leaq (,%r10,4), %rbx
xorq %r10, %rbx
addq 0x10(%rsi), %rbx
movq 0x10(%rdi,%rax), %r11
movq %r11, %r10
andq %r8, %r10
addq %rbx, %rcx
addq 0x808(%rdi,%r10), %rcx
movq %rcx, 0x10(%rdi,%rax)
shrl $0x8, %ecx
andl %r9d, %ecx
addq 0x808(%rdi,%rcx), %r11
movq %r11, 0x10(%rdx)
movq 0x18(%rdi,%rax), %rcx
movq %rbx, %r10
shrq $0x10, %r10
xorq %rbx, %r10
addq 0x18(%rsi), %r10
addq $0x20, %rsi
movq %rcx, %rbx
andq %r8, %rbx
addq %r10, %r11
addq 0x808(%rdi,%rbx), %r11
movq %r11, 0x18(%rdi,%rax)
addq $0x20, %rax
shrl $0x8, %r11d
andl %r9d, %r11d
addq 0x808(%rdi,%r11), %rcx
movq %rcx, 0x18(%rdx)
addq $0x20, %rdx
jmp 0x6dc4
addq %rdi, %rax
movl $0x808, %r8d            # imm = 0x808
movl $0x3fc, %edx            # imm = 0x3FC
movl $0x3fc, %esi            # imm = 0x3FC
cmpq $0xc07, %r8             # imm = 0xC07
ja 0x700f
movq %r10, %r11
shlq $0xd, %r11
xorq %r10, %r11
addq (%rdi,%r8), %r11
movq -0x808(%rax,%r8), %r10
movq %r10, %r9
andq %rdx, %r9
addq %r11, %rcx
addq 0x808(%rdi,%r9), %rcx
movq -0x800(%rax,%r8), %r9
movq %rcx, -0x808(%rax,%r8)
shrl $0x8, %ecx
andl %esi, %ecx
addq 0x808(%rdi,%rcx), %r10
movq %r10, -0x1008(%rax,%r8)
movq %r11, %rcx
shrq $0x6, %rcx
xorq %r11, %rcx
addq 0x8(%rdi,%r8), %rcx
movq %r9, %r11
andq %rdx, %r11
addq %rcx, %r10
addq 0x808(%rdi,%r11), %r10
movq %r10, -0x800(%rax,%r8)
shrl $0x8, %r10d
andl %esi, %r10d
addq 0x808(%rdi,%r10), %r9
movq %r9, -0x1000(%rax,%r8)
leaq (,%rcx,4), %rbx
xorq %rcx, %rbx
addq 0x10(%rdi,%r8), %rbx
movq -0x7f8(%rax,%r8), %r11
movq %r11, %rcx
andq %rdx, %rcx
addq %rbx, %r9
addq 0x808(%rdi,%rcx), %r9
movq %r9, -0x7f8(%rax,%r8)
shrl $0x8, %r9d
andl %esi, %r9d
addq 0x808(%rdi,%r9), %r11
movq %r11, -0xff8(%rax,%r8)
movq -0x7f0(%rax,%r8), %rcx
movq %rbx, %r10
shrq $0x10, %r10
xorq %rbx, %r10
addq 0x18(%rdi,%r8), %r10
movq %rcx, %r9
andq %rdx, %r9
addq %r10, %r11
addq 0x808(%rdi,%r9), %r11
movq %r11, -0x7f0(%rax,%r8)
shrl $0x8, %r11d
andl %esi, %r11d
addq 0x808(%rdi,%r11), %rcx
movq %rcx, -0xff0(%rax,%r8)
addq $0x20, %r8
jmp 0x6edf
movq %rcx, 0x1010(%rdi)
movq %r10, 0x1008(%rdi)
popq %rbx
retq