// File: /workspace/github_c_makefile_star2_O1/genevalab[P]msmove/rand2t.c
// Function: genrand_int32
unsigned long genrand_int32(void)
{
    unsigned long y;
    static unsigned long mag01[2] = {0x0UL, MATRIX_A};
    /* mag01[x] = x * MATRIX_A  for x=0,1 */

    if (mti >= N) 
	{ 
		/* generate N words at one time */
        int kk;

		if (mti == N + 1)         /* if init_genrand() has not been called, */
            init_genrand(5489UL); /* a default initial seed is used */

        for (kk = 0; kk < N - M; kk++) 
		{
            y = (mt[kk] & UPPER_MASK)|(mt[kk + 1] & LOWER_MASK);
            mt[kk] = mt[kk + M] ^ (y >> 1) ^ mag01[y & 0x1UL];
        }
        for (; kk < N - 1; kk++) 
		{
            y = (mt[kk] & UPPER_MASK)|(mt[kk + 1] & LOWER_MASK);
            mt[kk] = mt[kk + (M - N)] ^ (y >> 1) ^ mag01[y & 0x1UL];
        }
        y = (mt[N - 1] & UPPER_MASK)|(mt[0] & LOWER_MASK);
        mt[N - 1] = mt[M - 1] ^ (y >> 1) ^ mag01[y & 0x1UL];
        mti = 0;
    }
  
    y = mt[mti++];

    /* Tempering */
    y ^= (y >> 11);
    y ^= (y << 7) & 0x9d2c5680UL;
    y ^= (y << 15) & 0xefc60000UL;
    y ^= (y >> 18);

    return y;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movl 0x5e5c(%rip), %eax      # 0xa0fc
cmpl $0x270, %eax            # imm = 0x270
jl 0x43d8
cmpl $0x271, %eax            # imm = 0x271
jne 0x42f8
movq $0x1571, 0x5ef3(%rip) # imm = 0x1571
movl $0x1, %eax
movl $0x1571, %edx           # imm = 0x1571
leaq 0x5ee2(%rip), %rcx      # 0xa1b0
movq %rdx, %rsi
shrq $0x1e, %rsi
xorl %edx, %esi
imull $0x6c078965, %esi, %edx # imm = 0x6C078965
addl %eax, %edx
movq %rdx, (%rcx,%rax,8)
incq %rax
cmpq $0x270, %rax            # imm = 0x270
jne 0x42ce
movl $0x270, 0x5e04(%rip)    # imm = 0x270
xorl %edx, %edx
leaq 0x5eaf(%rip), %rcx      # 0xa1b0
movl $0x80000000, %esi       # imm = 0x80000000
leaq 0x39d3(%rip), %rax      # 0x7ce0
movl (%rcx,%rdx,8), %edi
andl %esi, %edi
movl 0x8(%rcx,%rdx,8), %r8d
movl %r8d, %r9d
andl $0x7ffffffe, %r9d       # imm = 0x7FFFFFFE
orl %edi, %r9d
shrl %r9d
andl $0x1, %r8d
movq (%rax,%r8,8), %rdi
xorq 0xc68(%rcx,%rdx,8), %rdi
xorq %r9, %rdi
movq %rdi, (%rcx,%rdx,8)
leaq 0x1(%rdx), %rdi
movq %rdi, %rdx
cmpq $0xe3, %rdi
jne 0x430d
xorl %edx, %edx
movl $0x80000000, %esi       # imm = 0x80000000
movl 0x718(%rcx,%rdx,8), %edi
andl %esi, %edi
movl 0x720(%rcx,%rdx,8), %r8d
movl %r8d, %r9d
andl $0x7ffffffe, %r9d       # imm = 0x7FFFFFFE
orl %edi, %r9d
shrl %r9d
andl $0x1, %r8d
movq (%rax,%r8,8), %rdi
xorq (%rcx,%rdx,8), %rdi
xorq %r9, %rdi
movq %rdi, 0x718(%rcx,%rdx,8)
incq %rdx
cmpq $0x18c, %rdx            # imm = 0x18C
jne 0x4355
movl $0x80000000, %ecx       # imm = 0x80000000
andl 0x7184(%rip), %ecx      # 0xb528
movl 0x5e06(%rip), %edx      # 0xa1b0
movl %edx, %esi
andl $0x7ffffffe, %esi       # imm = 0x7FFFFFFE
orl %ecx, %esi
andl $0x1, %edx
movq (%rax,%rdx,8), %rax
xorq 0x6a4e(%rip), %rax      # 0xae10
shrl %esi
xorq %rsi, %rax
movq %rax, 0x715a(%rip)      # 0xb528
movl $0x0, 0x5d24(%rip)      # 0xa0fc
movslq 0x5d1d(%rip), %rax      # 0xa0fc
leal 0x1(%rax), %ecx
movl %ecx, 0x5d14(%rip)      # 0xa0fc
leaq 0x5dc1(%rip), %rcx      # 0xa1b0
movq (%rcx,%rax,8), %rax
movq %rax, %rcx
shrq $0xb, %rcx
xorq %rax, %rcx
movl %ecx, %eax
shll $0x7, %eax
andl $0x9d2c5680, %eax       # imm = 0x9D2C5680
xorq %rcx, %rax
movl %eax, %ecx
shll $0xf, %ecx
andl $0xefc60000, %ecx       # imm = 0xEFC60000
xorq %rax, %rcx
movq %rcx, %rax
shrq $0x12, %rax
xorq %rcx, %rax
popq %rbp
retq