// File: /workspace/github_c_makefile_star2_O2/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 $0x48, %rsp
cmpl $0x1, %edi
jle 0x1208
movl %edi, %eax
movq 0x8(%rsi), %rdi
cmpb $0x2d, (%rdi)
jne 0x11ca
cmpb $0x72, 0x1(%rdi)
jne 0x11ca
cmpb $0x0, 0x2(%rdi)
je 0x1437
xorl %ebx, %ebx
callq 0x1090
movl %eax, %ebp
testb %bl, %bl
je 0x120b
leaq 0x10(%rsp), %rbx
pushq $0x8
popq %rsi
movq %rbx, %rdi
callq 0x1450
movl 0x4(%rbx), %eax
leal 0x1(,%rax,2), %ecx
movl %ecx, 0xc(%rsp)
addl (%rbx), %ecx
imull $0x2c9277b5, %ecx, %ecx # imm = 0x2C9277B5
leal (%rcx,%rax,2), %eax
incl %eax
movl %eax, 0x8(%rsp)
jmp 0x121a
pushq $0x5
popq %rbp
movabsq $0x6d4a649c30, %rax     # imm = 0x6D4A649C30
movq %rax, 0x8(%rsp)
leaq 0x1de3(%rip), %rdi      # 0x3004
xorl %ebx, %ebx
pushq $0x8
popq %rsi
xorl %eax, %eax
callq 0x1040
testl %ebp, %ebp
cmovlel %ebx, %ebp
incl %ebp
movl %ebp, (%rsp)
pushq $0x1
popq %rsi
leaq 0x8(%rsp), %r15
leaq 0x1ec0(%rip), %rbx      # 0x3106
pushq $0x2
popq %r13
pushq $0x48
popq %r12
leaq 0x1e8d(%rip), %rbp      # 0x30e2
cmpl (%rsp), %esi
je 0x1426
leaq 0x1e66(%rip), %rdi      # 0x30cb
movl %esi, 0x4(%rsp)
xorl %eax, %eax
callq 0x1040
leaq 0x1e5f(%rip), %rdi      # 0x30d6
xorl %eax, %eax
callq 0x1040
pushq $0x6
popq %r14
subl $0x1, %r14d
jb 0x129e
movq %r15, %rdi
callq 0x1909
movq %rbp, %rdi
movl %eax, %esi
xorl %eax, %eax
callq 0x1040
jmp 0x1282
pushq $0xa
popq %rdi
callq 0x1030
leaq 0x1e3d(%rip), %rdi      # 0x30ea
xorl %eax, %eax
callq 0x1040
movq %r15, %rdi
pushq $-0x6
popq %rsi
callq 0x15cb
pushq $0x6
popq %r14
subl $0x1, %r14d
jb 0x12df
movq %r15, %rdi
callq 0x1909
movq %rbp, %rdi
movl %eax, %esi
xorl %eax, %eax
callq 0x1040
jmp 0x12c3
pushq $0xa
popq %rdi
callq 0x1030
leaq 0x1e05(%rip), %rdi      # 0x30f3
xorl %eax, %eax
callq 0x1040
pushq $0x41
popq %r14
subl $0x1, %r14d
jb 0x131c
movq %r15, %rdi
movl %r13d, %esi
callq 0x1932
testl %eax, %eax
movl %r12d, %edi
pushq $0x54
popq %rax
cmovel %eax, %edi
callq 0x1030
jmp 0x12f9
pushq $0xa
popq %rdi
callq 0x1030
leaq 0x1dd2(%rip), %rdi      # 0x30fd
xorl %eax, %eax
callq 0x1040
pushq $0x21
popq %r14
subl $0x1, %r14d
jb 0x1356
movq %r15, %rdi
pushq $0x6
popq %rsi
callq 0x1932
leal 0x1(%rax), %esi
movq %rbx, %rdi
xorl %eax, %eax
callq 0x1040
jmp 0x1336
pushq $0xa
popq %rdi
callq 0x1030
xorl %eax, %eax
cmpq $0x34, %rax
je 0x136f
movb %al, 0x10(%rsp,%rax)
incq %rax
jmp 0x1360
pushq $0x34
popq %r14
cmpq $0x1, %r14
jbe 0x139d
movq %r15, %rdi
movl %r14d, %esi
callq 0x1932
cltq
movb 0x10(%rsp,%rax), %cl
movb 0xf(%rsp,%r14), %dl
movb %dl, 0x10(%rsp,%rax)
movb %cl, 0xf(%rsp,%r14)
decq %r14
jmp 0x1373
leaq 0x1d66(%rip), %rdi      # 0x310a
xorl %r14d, %r14d
xorl %eax, %eax
callq 0x1040
cmpq $0x34, %r14
je 0x1407
movsbl 0x10(%rsp,%r14), %eax
movb $0x4, %cl
idivb %cl
movsbl %ah, %ecx
movsbq %al, %rax
leaq 0x1d4d(%rip), %rdx      # 0x3119
movsbl (%rax,%rdx), %esi
movslq %ecx, %rax
leaq 0x1d4c(%rip), %rcx      # 0x3126
movsbl (%rax,%rcx), %edx
leaq 0x1d2e(%rip), %rdi      # 0x3113
xorl %eax, %eax
callq 0x1040
incq %r14
movzbl %r14b, %eax
movb $0x16, %cl
divb %cl
movzbl %ah, %eax
testb %al, %al
jne 0x13ae
leaq 0x1cda(%rip), %rdi      # 0x30df
jmp 0x13a7
pushq $0xa
popq %r14
movl %r14d, %edi
callq 0x1030
movl %r14d, %edi
callq 0x1030
movl 0x4(%rsp), %esi
incl %esi
jmp 0x1255
xorl %eax, %eax
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
cmpl $0x2, %eax
jne 0x1444
pushq $0x5
popq %rbp
jmp 0x11d7
movq 0x10(%rsi), %rdi
movb $0x1, %bl
jmp 0x11cc
nop