// File: /workspace/github_c_makefile_star2_O3/pyk[P]simple-nn/deps/pcg/test-high/./check-base.c
// Function: main
XX_PREDECLS

int main(int argc, char** argv)
{
    // Read command-line options
     
    int rounds = 5;
    bool nondeterministic_seed = false;
    
    ++argv; --argc;
    if (argc > 0 && strcmp(argv[0], "-r") == 0) {
         nondeterministic_seed = true;
         ++argv; --argc;
    }
    if (argc > 0) {
         rounds = atoi(argv[0]);
    }
    
    // In this version of the code, we'll use a local rng, rather than the
    // global one.
    
    XX_RAND_DECL
    
    // You should *always* seed the RNG.  The usual time to do it is the
    // point in time when you create RNG (typically at the beginning of the
    // program).
    //
    // XX_SRANDOM_R takes two YY-bit constants (the initial state, and the
    // rng sequence selector; rngs with different sequence selectors will
    // *never* have random sequences that coincide, at all) - the code below 
    // shows three possible ways to do so.

    if (nondeterministic_seed) {
        // Seed with external entropy
        
        XX_SEEDSDECL(seeds)
        entropy_getbytes((void*) seeds, sizeof(seeds)); 
        XX_SRANDOM(XX_SRANDOM_SEEDARGS(seeds));
    } else {
        // Seed with a fixed constant
        
        XX_SRANDOM(XX_SRANDOM_SEEDCONSTS);
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x68, %rsp
cmpl $0x1, %edi
jle 0x11fb
movq 0x8(%rsi), %rax
cmpb $0x2d, (%rax)
jne 0x11c8
cmpb $0x72, 0x1(%rax)
jne 0x11c8
cmpb $0x0, 0x2(%rax)
je 0x1585
movq %rax, %rdi
callq 0x1090
movl %eax, %r14d
movl $0x4a649c30, %r15d      # imm = 0x4A649C30
movl $0x6d, %ebp
leaq 0xe6b(%rip), %rdi       # 0x2050
movl $0x8, %esi
xorl %eax, %eax
callq 0x1040
testl %r14d, %r14d
jg 0x121f
jmp 0x1574
leaq 0xe4e(%rip), %rdi       # 0x2050
movl $0x8, %esi
xorl %eax, %eax
callq 0x1040
movl $0x5, %r14d
movl $0x6d, %ebp
movl $0x4a649c30, %r15d      # imm = 0x4A649C30
movl $0x1, %esi
leaq 0xf03(%rip), %r13       # 0x212e
movl $0xaaaaaaab, %r12d      # imm = 0xAAAAAAAB
pshufd $0xf5, 0xdf6(%rip), %xmm0 # xmm0 = mem[1,1,3,3]
movdqa %xmm0, 0x50(%rsp)
movl %r14d, 0x4(%rsp)
leaq 0xecb(%rip), %rdi       # 0x2117
movq %rsi, 0x8(%rsp)
xorl %eax, %eax
callq 0x1040
leaq 0xec3(%rip), %rdi       # 0x2122
xorl %eax, %eax
callq 0x1040
movl $0x6, %ebx
movl %r15d, %ecx
shrl $0x1c, %ecx
addb $0x4, %cl
movl %r15d, %eax
shrl %cl, %eax
xorl %r15d, %eax
imull $0x2c9277b5, %r15d, %r15d # imm = 0x2C9277B5
addl %ebp, %r15d
imull $0x108ef2d9, %eax, %eax # imm = 0x108EF2D9
movl %eax, %esi
shrl $0x16, %esi
xorl %eax, %esi
movq %r13, %rdi
xorl %eax, %eax
callq 0x1040
decl %ebx
jne 0x126b
movl $0xa, %edi
callq 0x1030
leaq 0xe84(%rip), %rdi       # 0x2136
xorl %eax, %eax
callq 0x1040
movl %r15d, %edi
movl $0xfffffffa, %esi       # imm = 0xFFFFFFFA
movl $0x2c9277b5, %edx       # imm = 0x2C9277B5
movl %ebp, %ecx
callq 0x16f8
movl %eax, %r15d
movl $0x6, %ebx
movl %r15d, %ecx
shrl $0x1c, %ecx
addb $0x4, %cl
movl %r15d, %eax
shrl %cl, %eax
xorl %r15d, %eax
imull $0x2c9277b5, %r15d, %r15d # imm = 0x2C9277B5
addl %ebp, %r15d
imull $0x108ef2d9, %eax, %eax # imm = 0x108EF2D9
movl %eax, %esi
shrl $0x16, %esi
xorl %eax, %esi
movq %r13, %rdi
xorl %eax, %eax
callq 0x1040
decl %ebx
jne 0x12d5
movl $0xa, %edi
callq 0x1030
leaq 0xe23(%rip), %rdi       # 0x213f
xorl %eax, %eax
callq 0x1040
movl $0x41, %ebx
movl %r15d, %ecx
shrl $0x1c, %ecx
addb $0x4, %cl
movl %r15d, %eax
shrl %cl, %eax
xorl %r15d, %eax
imull $0x108ef2d9, %eax, %eax # imm = 0x108EF2D9
movl %eax, %ecx
shrl $0x16, %ecx
xorl %eax, %ecx
movl $0x54, %edi
testb $0x1, %cl
je 0x1355
movl $0x48, %edi
imull $0x2c9277b5, %r15d, %r15d # imm = 0x2C9277B5
addl %ebp, %r15d
callq 0x1030
decl %ebx
jne 0x1328
movl $0xa, %edi
callq 0x1030
xorl %ebx, %ebx
leaq 0xdce(%rip), %rdi       # 0x2149
xorl %eax, %eax
callq 0x1040
movl %r15d, %ecx
shrl $0x1c, %ecx
addb $0x4, %cl
movl %r15d, %eax
shrl %cl, %eax
xorl %r15d, %eax
imull $0x2c9277b5, %r15d, %r15d # imm = 0x2C9277B5
addl %ebp, %r15d
imull $0x108ef2d9, %eax, %ecx # imm = 0x108EF2D9
movl %ecx, %eax
shrl $0x16, %eax
xorl %ecx, %eax
cmpl $0x4, %eax
jb 0x1382
movl %eax, %ecx
imulq %r12, %rcx
shrq $0x22, %rcx
addl %ecx, %ecx
leal (%rcx,%rcx,2), %ecx
negl %ecx
leal (%rax,%rcx), %esi
incl %esi
leaq 0xd86(%rip), %rdi       # 0x2152
xorl %eax, %eax
callq 0x1040
incl %ebx
cmpl $0x21, %ebx
jne 0x1382
movl $0xa, %edi
callq 0x1030
xorl %eax, %eax
movdqa 0xc22(%rip), %xmm0      # 0x2010
movdqa 0xc2a(%rip), %xmm3      # 0x2020
movdqa 0xc32(%rip), %xmm4      # 0x2030
movdqa 0x50(%rsp), %xmm5
movdqa 0xc34(%rip), %xmm6      # 0x2040
movdqa %xmm0, %xmm1
pxor %xmm3, %xmm1
movdqa %xmm4, %xmm2
pcmpgtd %xmm1, %xmm2
pshufd $0xf5, %xmm1, %xmm1     # xmm1 = xmm1[1,1,3,3]
pcmpeqd %xmm5, %xmm1
pand %xmm2, %xmm1
movd %xmm1, %ecx
testb $0x1, %cl
je 0x1436
movb %al, 0x10(%rsp,%rax)
pextrw $0x4, %xmm1, %ecx
testb $0x1, %cl
je 0x1447
leal 0x1(%rax), %ecx
movb %cl, 0x11(%rsp,%rax)
addq $0x2, %rax
paddq %xmm6, %xmm0
cmpq $0x34, %rax
jne 0x140c
movl $0x34, %esi
movl %esi, %eax
negl %eax
xorl %edx, %edx
divl %esi
movl %r15d, %ecx
shrl $0x1c, %ecx
addb $0x4, %cl
movl %r15d, %eax
shrl %cl, %eax
xorl %r15d, %eax
imull $0x2c9277b5, %r15d, %r15d # imm = 0x2C9277B5
addl %ebp, %r15d
imull $0x108ef2d9, %eax, %ecx # imm = 0x108EF2D9
movl %ecx, %eax
shrl $0x16, %eax
xorl %ecx, %eax
cmpl %edx, %eax
jb 0x1462
xorl %edx, %edx
divl %esi
movb 0x10(%rsp,%rdx), %al
movb 0xf(%rsp,%rsi), %cl
movb %cl, 0x10(%rsp,%rdx)
movb %al, 0xf(%rsp,%rsi)
leaq -0x1(%rsi), %rax
cmpq $0x2, %rsi
movq %rax, %rsi
ja 0x145a
leaq 0xca0(%rip), %rdi       # 0x2156
xorl %eax, %eax
callq 0x1040
movb $0x1, %bl
xorl %r12d, %r12d
movl %ebx, %eax
shrb %al
movzbl %al, %eax
imull $0xbb, %eax, %eax
shrl $0xb, %eax
leal (%rax,%rax,4), %ecx
leal (%rax,%rcx,4), %r14d
addl %eax, %r14d
movb 0x10(%rsp,%r12), %al
movl %eax, %ecx
sarb $0x7, %cl
shrb $0x6, %cl
addb %al, %cl
movl %ecx, %edx
sarb $0x2, %dl
movsbq %dl, %rdx
leaq 0xc6a(%rip), %rsi       # 0x2165
movsbl (%rdx,%rsi), %esi
andb $-0x4, %cl
subb %cl, %al
movsbq %al, %rax
leaq 0xc63(%rip), %rcx       # 0x2172
movsbl (%rax,%rcx), %edx
leaq 0xc45(%rip), %rdi       # 0x215f
xorl %eax, %eax
callq 0x1040
decb %r14b
cmpb %r12b, %r14b
jne 0x1537
leaq 0xbfb(%rip), %rdi       # 0x212b
xorl %eax, %eax
callq 0x1040
incq %r12
incb %bl
cmpq $0x34, %r12
jne 0x14c2
movl $0xa, %edi
callq 0x1030
movl $0xa, %edi
callq 0x1030
movq 0x8(%rsp), %rcx
leal 0x1(%rcx), %eax
movl 0x4(%rsp), %r14d
cmpl %r14d, %ecx
movl %eax, %esi
movl $0xaaaaaaab, %r12d      # imm = 0xAAAAAAAB
jne 0x1245
xorl %eax, %eax
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl $0x5, %r14d
cmpl $0x2, %edi
je 0x159c
movq 0x10(%rsi), %rdi
callq 0x1090
movl %eax, %r14d
leaq 0x10(%rsp), %rbx
movl $0x8, %esi
movq %rbx, %rdi
callq 0x15d0
movl 0x4(%rbx), %eax
leal 0x1(,%rax,2), %ebp
movl (%rbx), %ecx
addl %ebp, %ecx
imull $0x2c9277b5, %ecx, %ecx # imm = 0x2C9277B5
leal (%rcx,%rax,2), %r15d
incl %r15d
jmp 0x11de
nop