// File: /workspace/github_c_makefile_star2_O1/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
movl %edi, %ebx
leaq 0x8(%rsi), %r15
leal -0x1(%rbx), %r12d
cmpl $0x2, %edi
jl 0x11e3
movq %rsi, %r14
movq (%r15), %rdi
leaq 0xe2e(%rip), %rsi       # 0x2004
callq 0x1070
testl %eax, %eax
je 0x156b
xorl %ebp, %ebp
testl %r12d, %r12d
jle 0x11f8
movq (%r15), %rdi
callq 0x10a0
movl %eax, 0x4(%rsp)
jmp 0x1200
movl $0x5, 0x4(%rsp)
testb %bpl, %bpl
je 0x1234
leaq 0x10(%rsp), %rbx
movl $0x8, %esi
movq %rbx, %rdi
callq 0x1580
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 0x123f
movl $0x4a649c30, %r15d      # imm = 0x4A649C30
movl $0x6d, %ebp
leaq 0xdc1(%rip), %rdi       # 0x2007
movl $0x8, %esi
xorl %eax, %eax
callq 0x1040
cmpl $0x0, 0x4(%rsp)
jle 0x155a
movl $0x1, %esi
leaq 0xe7c(%rip), %r12       # 0x20e5
movl $0xaaaaaaab, %ebx       # imm = 0xAAAAAAAB
leaq 0xe94(%rip), %r13       # 0x2109
leaq 0xe52(%rip), %rdi       # 0x20ce
movq %rsi, 0x8(%rsp)
xorl %eax, %eax
callq 0x1040
leaq 0xe4a(%rip), %rdi       # 0x20d9
xorl %eax, %eax
callq 0x1040
movl $0x6, %r14d
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 %r12, %rdi
xorl %eax, %eax
callq 0x1040
decl %r14d
jne 0x129c
movl $0xa, %edi
callq 0x1030
leaq 0xe09(%rip), %rdi       # 0x20ed
xorl %eax, %eax
callq 0x1040
movl %r15d, %edi
movl $0xfffffffa, %esi       # imm = 0xFFFFFFFA
movl $0x2c9277b5, %edx       # imm = 0x2C9277B5
movl %ebp, %ecx
callq 0x16a8
movl %eax, %r15d
movl $0x6, %r14d
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 %r12, %rdi
xorl %eax, %eax
callq 0x1040
decl %r14d
jne 0x1308
movl $0xa, %edi
callq 0x1030
leaq 0xda6(%rip), %rdi       # 0x20f6
xorl %eax, %eax
callq 0x1040
movl $0x41, %r14d
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 0x138a
movl $0x48, %edi
imull $0x2c9277b5, %r15d, %r15d # imm = 0x2C9277B5
addl %ebp, %r15d
callq 0x1030
decl %r14d
jne 0x135d
movl $0xa, %edi
callq 0x1030
xorl %r12d, %r12d
leaq 0xd4e(%rip), %rdi       # 0x2100
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, %eax # imm = 0x108EF2D9
movl %eax, %ecx
shrl $0x16, %ecx
xorl %eax, %ecx
movq %rcx, %rax
imulq %rbx, %rax
shrq $0x22, %rax
addl %eax, %eax
leal (%rax,%rax,2), %eax
movl %ecx, %edx
subl %eax, %edx
cmpl $0x4, %ecx
cmovael %edx, %esi
jb 0x13b9
incl %esi
movq %r13, %rdi
xorl %eax, %eax
callq 0x1040
incl %r12d
cmpl $0x21, %r12d
jne 0x13b9
movl $0xa, %edi
callq 0x1030
xorl %eax, %eax
movb %al, 0x10(%rsp,%rax)
incq %rax
cmpq $0x34, %rax
jne 0x141e
movl $0x34, %edi
movl %edi, %eax
negl %eax
xorl %edx, %edx
divl %edi
movl %edx, %esi
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
cmpl %esi, %ecx
jb 0x1462
movl %ecx, %eax
xorl %edx, %edx
divl %edi
imull $0x2c9277b5, %r15d, %r15d # imm = 0x2C9277B5
addl %ebp, %r15d
cmpl %esi, %ecx
jb 0x143a
movslq %edx, %rax
movb 0x10(%rsp,%rax), %cl
movb 0xf(%rsp,%rdi), %dl
movb %dl, 0x10(%rsp,%rax)
movb %cl, 0xf(%rsp,%rdi)
leaq -0x1(%rdi), %rax
cmpq $0x2, %rdi
movq %rax, %rdi
ja 0x1430
leaq 0xc76(%rip), %rdi       # 0x210d
xorl %eax, %eax
callq 0x1040
movl $0x1, %r12d
xorl %r14d, %r14d
movl %r12d, %eax
movl $0xba2e8ba3, %ecx       # imm = 0xBA2E8BA3
imulq %rcx, %rax
shrq $0x24, %rax
leal (%rax,%rax,4), %ecx
leal (%rax,%rcx,4), %ecx
leal (%rax,%rcx), %r13d
decl %r13d
movsbl 0x10(%rsp,%r14), %eax
leal 0x3(%rax), %ecx
testl %eax, %eax
cmovnsl %eax, %ecx
movl %ecx, %edx
sarl $0x2, %edx
movslq %edx, %rdx
leaq 0xc3b(%rip), %rsi       # 0x211c
movsbl (%rdx,%rsi), %esi
andl $-0x4, %ecx
subl %ecx, %eax
cltq
leaq 0xc36(%rip), %rcx       # 0x2129
movsbl (%rax,%rcx), %edx
leaq 0xc18(%rip), %rdi       # 0x2116
xorl %eax, %eax
callq 0x1040
cmpl %r14d, %r13d
jne 0x1518
leaq 0xbd1(%rip), %rdi       # 0x20e2
xorl %eax, %eax
callq 0x1040
incq %r14
incl %r12d
cmpq $0x34, %r14
jne 0x14a7
movl $0xa, %edi
callq 0x1030
movl $0xa, %edi
callq 0x1030
movq 0x8(%rsp), %rcx
leal 0x1(%rcx), %eax
cmpl 0x4(%rsp), %ecx
movl %eax, %esi
leaq 0xb98(%rip), %r12       # 0x20e5
leaq 0xbb5(%rip), %r13       # 0x2109
jne 0x1275
xorl %eax, %eax
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
addq $0x10, %r14
addl $-0x2, %ebx
movb $0x1, %bpl
movq %r14, %r15
movl %ebx, %r12d
jmp 0x11e5