// File: disjukr[P]Tetris/./Randomizer.hh
// Function: Lfsr113::Set(int)
void Set(int seed) {
        int e;
        if (seed <= 0) seed = 1;
        e = seed / IQ;
        seed = IA * (seed - e * IQ) - IR * e;
        if (seed < 0) seed += IM;
        if (seed < 2) a = seed + 2; else a = seed;
        e = seed / IQ;
        seed = IA * (seed - e * IQ) - IR * e;
        if (seed < 0) seed += IM;
        if (seed < 8) b = seed + 8; else b = seed;
        e = seed / IQ;
        seed = IA * (seed - e * IQ) - IR * e;
        if (seed < 0) seed += IM;
        if (seed < 16) c = seed + 16; else c = seed;
        e = seed / IQ;
        seed = IA * (seed - e * IQ) - IR * e;
        if (seed < 0) seed += IM;
        if (seed < 128) d = seed + 128; else d = seed;
        this -> Get(); // mix
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x18(%rbp)
cmpl $0x0, -0xc(%rbp)
jg 0x7614
movl $0x1, -0xc(%rbp)
movl -0xc(%rbp), %eax
movl $0x1f31d, %ecx          # imm = 0x1F31D
cltd
idivl %ecx
movl %eax, -0x10(%rbp)
movl -0xc(%rbp), %eax
imull $0x1f31d, -0x10(%rbp), %ecx # imm = 0x1F31D
subl %ecx, %eax
imull $0x41a7, %eax, %eax     # imm = 0x41A7
imull $0xb14, -0x10(%rbp), %ecx # imm = 0xB14
subl %ecx, %eax
movl %eax, -0xc(%rbp)
cmpl $0x0, -0xc(%rbp)
jge 0x7651
movl -0xc(%rbp), %eax
addl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movl %eax, -0xc(%rbp)
cmpl $0x2, -0xc(%rbp)
jge 0x7666
movq -0x18(%rbp), %rax
movl -0xc(%rbp), %ecx
addl $0x2, %ecx
movl %ecx, 0x8(%rax)
jmp 0x7670
movq -0x18(%rbp), %rax
movl -0xc(%rbp), %ecx
movl %ecx, 0x8(%rax)
movl -0xc(%rbp), %eax
movl $0x1f31d, %ecx          # imm = 0x1F31D
cltd
idivl %ecx
movl %eax, -0x10(%rbp)
movl -0xc(%rbp), %eax
imull $0x1f31d, -0x10(%rbp), %ecx # imm = 0x1F31D
subl %ecx, %eax
imull $0x41a7, %eax, %eax     # imm = 0x41A7
imull $0xb14, -0x10(%rbp), %ecx # imm = 0xB14
subl %ecx, %eax
movl %eax, -0xc(%rbp)
cmpl $0x0, -0xc(%rbp)
jge 0x76ad
movl -0xc(%rbp), %eax
addl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movl %eax, -0xc(%rbp)
cmpl $0x8, -0xc(%rbp)
jge 0x76c2
movq -0x18(%rbp), %rax
movl -0xc(%rbp), %ecx
addl $0x8, %ecx
movl %ecx, 0xc(%rax)
jmp 0x76cc
movq -0x18(%rbp), %rax
movl -0xc(%rbp), %ecx
movl %ecx, 0xc(%rax)
movl -0xc(%rbp), %eax
movl $0x1f31d, %ecx          # imm = 0x1F31D
cltd
idivl %ecx
movl %eax, -0x10(%rbp)
movl -0xc(%rbp), %eax
imull $0x1f31d, -0x10(%rbp), %ecx # imm = 0x1F31D
subl %ecx, %eax
imull $0x41a7, %eax, %eax     # imm = 0x41A7
imull $0xb14, -0x10(%rbp), %ecx # imm = 0xB14
subl %ecx, %eax
movl %eax, -0xc(%rbp)
cmpl $0x0, -0xc(%rbp)
jge 0x7709
movl -0xc(%rbp), %eax
addl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movl %eax, -0xc(%rbp)
cmpl $0x10, -0xc(%rbp)
jge 0x771e
movq -0x18(%rbp), %rax
movl -0xc(%rbp), %ecx
addl $0x10, %ecx
movl %ecx, 0x10(%rax)
jmp 0x7728
movq -0x18(%rbp), %rax
movl -0xc(%rbp), %ecx
movl %ecx, 0x10(%rax)
movl -0xc(%rbp), %eax
movl $0x1f31d, %ecx          # imm = 0x1F31D
cltd
idivl %ecx
movl %eax, -0x10(%rbp)
movl -0xc(%rbp), %eax
imull $0x1f31d, -0x10(%rbp), %ecx # imm = 0x1F31D
subl %ecx, %eax
imull $0x41a7, %eax, %eax     # imm = 0x41A7
imull $0xb14, -0x10(%rbp), %ecx # imm = 0xB14
subl %ecx, %eax
movl %eax, -0xc(%rbp)
cmpl $0x0, -0xc(%rbp)
jge 0x7765
movl -0xc(%rbp), %eax
addl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movl %eax, -0xc(%rbp)
cmpl $0x80, -0xc(%rbp)
jge 0x7780
movq -0x18(%rbp), %rax
movl -0xc(%rbp), %ecx
addl $0x80, %ecx
movl %ecx, 0x14(%rax)
jmp 0x778a
movq -0x18(%rbp), %rax
movl -0xc(%rbp), %ecx
movl %ecx, 0x14(%rax)
movq -0x18(%rbp), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
addq $0x20, %rsp
popq %rbp
retq
nopw (%rax,%rax)