// File: /workspace/github_c_makefile_star2_O0/k0n10pl4tr[P]minimal_crafter/./stb_perlin.h
// Function: stb_perlin_noise3_wrap_nonpow2
float stb_perlin_noise3_wrap_nonpow2(float x, float y, float z, int x_wrap, int y_wrap, int z_wrap, unsigned char seed)
{
   float u,v,w;
   float n000,n001,n010,n011,n100,n101,n110,n111;
   float n00,n01,n10,n11;
   float n0,n1;

   int px = stb__perlin_fastfloor(x);
   int py = stb__perlin_fastfloor(y);
   int pz = stb__perlin_fastfloor(z);
   int x_wrap2 = (x_wrap ? x_wrap : 256);
   int y_wrap2 = (y_wrap ? y_wrap : 256);
   int z_wrap2 = (z_wrap ? z_wrap : 256);
   int x0 = px % x_wrap2, x1;
   int y0 = py % y_wrap2, y1;
   int z0 = pz % z_wrap2, z1;
   int r0,r1, r00,r01,r10,r11;

   if (x0 < 0) x0 += x_wrap2;
   if (y0 < 0) y0 += y_wrap2;
   if (z0 < 0) z0 += z_wrap2;
   x1 = (x0+1) % x_wrap2;
   y1 = (y0+1) % y_wrap2;
   z1 = (z0+1) % z_wrap2;

   #define stb__perlin_ease(a)   (((a*6-15)*a + 10) * a * a * a)

   x -= px; u = stb__perlin_ease(x);
   y -= py; v = stb__perlin_ease(y);
   z -= pz; w = stb__perlin_ease(z);

   r0 = stb__perlin_randtab[x0];
   r0 = stb__perlin_randtab[r0+seed];
   r1 = stb__perlin_randtab[x1];
   r1 = stb__perlin_randtab[r1+seed];

   r00 = stb__perlin_randtab[r0+y0];
   r01 = stb__perlin_randtab[r0+y1];
   r10 = stb__perlin_randtab[r1+y0];
   r11 = stb__perlin_randtab[r1+y1];

   n000 = stb__perlin_grad(stb__perlin_randtab_grad_idx[r00+z0], x  , y  , z   );
   n001 = stb__perlin_grad(stb__perlin_randtab_grad_idx[r00+z1], x  , y  , z-1 );
   n010 = stb__perlin_grad(stb__perlin_randtab_grad_idx[r01+z0], x  , y-1, z   );
   n011 = stb__perlin_grad(stb__perlin_randtab_grad_idx[r01+z1], x  , y-1, z-1 );
   n100 = stb__perlin_grad(stb__perlin_randtab_grad_idx[r10+z0], x-1, y  , z   );
   n101 = stb__perlin_grad(stb__perlin_randtab_grad_idx[r10+z1], x-1, y  , z-1 );
   n110 = stb__perlin_grad(stb__perlin_randtab_grad_idx[r11+z0], x-1, y-1, z   );
   n111 = stb__perlin_grad(stb__perlin_randtab_grad_idx[r11+z1], x-1, y-1, z-1 );

   n00 = stb__perlin_lerp(n000,n001,w);
   n01 = stb__perlin_lerp(n010,n011,w);
   n10 = stb__perlin_lerp(n100,n101,w);
   n11 = stb__perlin_lerp(n110,n111,w);

   n0 = stb__perlin_lerp(n00,n01,v);
   n1 = stb__perlin_lerp(n10,n11,v);

   return stb__perlin_lerp(n0,n1,u);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xc0, %rsp
movb %cl, %al
movss %xmm0, -0x4(%rbp)
movss %xmm1, -0x8(%rbp)
movss %xmm2, -0xc(%rbp)
movl %edi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movl %edx, -0x18(%rbp)
movb %al, -0x19(%rbp)
movss -0x4(%rbp), %xmm0
callq 0x7ca0
movl %eax, -0x64(%rbp)
movss -0x8(%rbp), %xmm0
callq 0x7ca0
movl %eax, -0x68(%rbp)
movss -0xc(%rbp), %xmm0
callq 0x7ca0
movl %eax, -0x6c(%rbp)
cmpl $0x0, -0x10(%rbp)
je 0x8190
movl -0x10(%rbp), %eax
movl %eax, -0xac(%rbp)
jmp 0x819d
movl $0x100, %eax            # imm = 0x100
movl %eax, -0xac(%rbp)
jmp 0x819d
movl -0xac(%rbp), %eax
movl %eax, -0x70(%rbp)
cmpl $0x0, -0x14(%rbp)
je 0x81b7
movl -0x14(%rbp), %eax
movl %eax, -0xb0(%rbp)
jmp 0x81c4
movl $0x100, %eax            # imm = 0x100
movl %eax, -0xb0(%rbp)
jmp 0x81c4
movl -0xb0(%rbp), %eax
movl %eax, -0x74(%rbp)
cmpl $0x0, -0x18(%rbp)
je 0x81de
movl -0x18(%rbp), %eax
movl %eax, -0xb4(%rbp)
jmp 0x81eb
movl $0x100, %eax            # imm = 0x100
movl %eax, -0xb4(%rbp)
jmp 0x81eb
movl -0xb4(%rbp), %eax
movl %eax, -0x78(%rbp)
movl -0x64(%rbp), %eax
cltd
idivl -0x70(%rbp)
movl %edx, -0x7c(%rbp)
movl -0x68(%rbp), %eax
cltd
idivl -0x74(%rbp)
movl %edx, -0x84(%rbp)
movl -0x6c(%rbp), %eax
cltd
idivl -0x78(%rbp)
movl %edx, -0x8c(%rbp)
cmpl $0x0, -0x7c(%rbp)
jge 0x8227
movl -0x70(%rbp), %eax
addl -0x7c(%rbp), %eax
movl %eax, -0x7c(%rbp)
cmpl $0x0, -0x84(%rbp)
jge 0x823f
movl -0x74(%rbp), %eax
addl -0x84(%rbp), %eax
movl %eax, -0x84(%rbp)
cmpl $0x0, -0x8c(%rbp)
jge 0x8257
movl -0x78(%rbp), %eax
addl -0x8c(%rbp), %eax
movl %eax, -0x8c(%rbp)
movl -0x7c(%rbp), %eax
addl $0x1, %eax
cltd
idivl -0x70(%rbp)
movl %edx, -0x80(%rbp)
movl -0x84(%rbp), %eax
addl $0x1, %eax
cltd
idivl -0x74(%rbp)
movl %edx, -0x88(%rbp)
movl -0x8c(%rbp), %eax
addl $0x1, %eax
cltd
idivl -0x78(%rbp)
movl %edx, -0x90(%rbp)
cvtsi2ssl -0x64(%rbp), %xmm1
movss -0x4(%rbp), %xmm0
subss %xmm1, %xmm0
movss %xmm0, -0x4(%rbp)
movss -0x4(%rbp), %xmm0
movss 0x2daa(%rip), %xmm1     # 0xb054
mulss %xmm1, %xmm0
movss 0x2da2(%rip), %xmm1     # 0xb058
addss %xmm1, %xmm0
movss -0x4(%rbp), %xmm1
mulss %xmm1, %xmm0
movss 0x2d85(%rip), %xmm1     # 0xb050
addss %xmm1, %xmm0
mulss -0x4(%rbp), %xmm0
mulss -0x4(%rbp), %xmm0
mulss -0x4(%rbp), %xmm0
movss %xmm0, -0x20(%rbp)
cvtsi2ssl -0x68(%rbp), %xmm1
movss -0x8(%rbp), %xmm0
subss %xmm1, %xmm0
movss %xmm0, -0x8(%rbp)
movss -0x8(%rbp), %xmm0
movss 0x2d51(%rip), %xmm1     # 0xb054
mulss %xmm1, %xmm0
movss 0x2d49(%rip), %xmm1     # 0xb058
addss %xmm1, %xmm0
movss -0x8(%rbp), %xmm1
mulss %xmm1, %xmm0
movss 0x2d2c(%rip), %xmm1     # 0xb050
addss %xmm1, %xmm0
mulss -0x8(%rbp), %xmm0
mulss -0x8(%rbp), %xmm0
mulss -0x8(%rbp), %xmm0
movss %xmm0, -0x24(%rbp)
cvtsi2ssl -0x6c(%rbp), %xmm1
movss -0xc(%rbp), %xmm0
subss %xmm1, %xmm0
movss %xmm0, -0xc(%rbp)
movss -0xc(%rbp), %xmm0
movss 0x2cf8(%rip), %xmm1     # 0xb054
mulss %xmm1, %xmm0
movss 0x2cf0(%rip), %xmm1     # 0xb058
addss %xmm1, %xmm0
movss -0xc(%rbp), %xmm1
mulss %xmm1, %xmm0
movss 0x2cd3(%rip), %xmm1     # 0xb050
addss %xmm1, %xmm0
mulss -0xc(%rbp), %xmm0
mulss -0xc(%rbp), %xmm0
mulss -0xc(%rbp), %xmm0
movss %xmm0, -0x28(%rbp)
movslq -0x7c(%rbp), %rcx
leaq 0x4e80(%rip), %rax      # 0xd220
movzbl (%rax,%rcx), %eax
movl %eax, -0x94(%rbp)
movl -0x94(%rbp), %eax
movzbl -0x19(%rbp), %ecx
addl %ecx, %eax
movslq %eax, %rcx
leaq 0x4e60(%rip), %rax      # 0xd220
movzbl (%rax,%rcx), %eax
movl %eax, -0x94(%rbp)
movslq -0x80(%rbp), %rcx
leaq 0x4e4b(%rip), %rax      # 0xd220
movzbl (%rax,%rcx), %eax
movl %eax, -0x98(%rbp)
movl -0x98(%rbp), %eax
movzbl -0x19(%rbp), %ecx
addl %ecx, %eax
movslq %eax, %rcx
leaq 0x4e2b(%rip), %rax      # 0xd220
movzbl (%rax,%rcx), %eax
movl %eax, -0x98(%rbp)
movl -0x94(%rbp), %eax
addl -0x84(%rbp), %eax
movslq %eax, %rcx
leaq 0x4e0b(%rip), %rax      # 0xd220
movzbl (%rax,%rcx), %eax
movl %eax, -0x9c(%rbp)
movl -0x94(%rbp), %eax
addl -0x88(%rbp), %eax
movslq %eax, %rcx
leaq 0x4deb(%rip), %rax      # 0xd220
movzbl (%rax,%rcx), %eax
movl %eax, -0xa0(%rbp)
movl -0x98(%rbp), %eax
addl -0x84(%rbp), %eax
movslq %eax, %rcx
leaq 0x4dcb(%rip), %rax      # 0xd220
movzbl (%rax,%rcx), %eax
movl %eax, -0xa4(%rbp)
movl -0x98(%rbp), %eax
addl -0x88(%rbp), %eax
movslq %eax, %rcx
leaq 0x4dab(%rip), %rax      # 0xd220
movzbl (%rax,%rcx), %eax
movl %eax, -0xa8(%rbp)
movl -0x9c(%rbp), %eax
addl -0x8c(%rbp), %eax
movslq %eax, %rcx
leaq 0x4f8b(%rip), %rax      # 0xd420
movzbl (%rax,%rcx), %edi
movss -0x4(%rbp), %xmm0
movss -0x8(%rbp), %xmm1
movss -0xc(%rbp), %xmm2
callq 0x7ce0
movss %xmm0, -0x2c(%rbp)
movl -0x9c(%rbp), %eax
addl -0x90(%rbp), %eax
movslq %eax, %rcx
leaq 0x4f58(%rip), %rax      # 0xd420
movzbl (%rax,%rcx), %edi
movss -0x4(%rbp), %xmm0
movss -0x8(%rbp), %xmm1
movss -0xc(%rbp), %xmm2
movss 0x27c1(%rip), %xmm3     # 0xaca4
subss %xmm3, %xmm2
callq 0x7ce0
movss %xmm0, -0x30(%rbp)
movl -0xa0(%rbp), %eax
addl -0x8c(%rbp), %eax
movslq %eax, %rcx
leaq 0x4f19(%rip), %rax      # 0xd420
movzbl (%rax,%rcx), %edi
movss -0x4(%rbp), %xmm0
movss -0x8(%rbp), %xmm1
movss 0x2787(%rip), %xmm2     # 0xaca4
subss %xmm2, %xmm1
movss -0xc(%rbp), %xmm2
callq 0x7ce0
movss %xmm0, -0x34(%rbp)
movl -0xa0(%rbp), %eax
addl -0x90(%rbp), %eax
movslq %eax, %rcx
leaq 0x4eda(%rip), %rax      # 0xd420
movzbl (%rax,%rcx), %edi
movss -0x4(%rbp), %xmm0
movss -0x8(%rbp), %xmm1
movss 0x2748(%rip), %xmm2     # 0xaca4
subss %xmm2, %xmm1
movss -0xc(%rbp), %xmm2
movss 0x2737(%rip), %xmm3     # 0xaca4
subss %xmm3, %xmm2
callq 0x7ce0
movss %xmm0, -0x38(%rbp)
movl -0xa4(%rbp), %eax
addl -0x8c(%rbp), %eax
movslq %eax, %rcx
leaq 0x4e8f(%rip), %rax      # 0xd420
movzbl (%rax,%rcx), %edi
movss -0x4(%rbp), %xmm0
movss 0x2702(%rip), %xmm1     # 0xaca4
subss %xmm1, %xmm0
movss -0x8(%rbp), %xmm1
movss -0xc(%rbp), %xmm2
callq 0x7ce0
movss %xmm0, -0x3c(%rbp)
movl -0xa4(%rbp), %eax
addl -0x90(%rbp), %eax
movslq %eax, %rcx
leaq 0x4e50(%rip), %rax      # 0xd420
movzbl (%rax,%rcx), %edi
movss -0x4(%rbp), %xmm0
movss 0x26c3(%rip), %xmm1     # 0xaca4
subss %xmm1, %xmm0
movss -0x8(%rbp), %xmm1
movss -0xc(%rbp), %xmm2
movss 0x26ad(%rip), %xmm3     # 0xaca4
subss %xmm3, %xmm2
callq 0x7ce0
movss %xmm0, -0x40(%rbp)
movl -0xa8(%rbp), %eax
addl -0x8c(%rbp), %eax
movslq %eax, %rcx
leaq 0x4e05(%rip), %rax      # 0xd420
movzbl (%rax,%rcx), %edi
movss -0x4(%rbp), %xmm0
movss 0x2678(%rip), %xmm1     # 0xaca4
subss %xmm1, %xmm0
movss -0x8(%rbp), %xmm1
movss 0x2667(%rip), %xmm2     # 0xaca4
subss %xmm2, %xmm1
movss -0xc(%rbp), %xmm2
callq 0x7ce0
movss %xmm0, -0x44(%rbp)
movl -0xa8(%rbp), %eax
addl -0x90(%rbp), %eax
movslq %eax, %rcx
leaq 0x4dba(%rip), %rax      # 0xd420
movzbl (%rax,%rcx), %edi
movss -0x4(%rbp), %xmm0
movss 0x262d(%rip), %xmm1     # 0xaca4
subss %xmm1, %xmm0
movss -0x8(%rbp), %xmm1
movss 0x261c(%rip), %xmm2     # 0xaca4
subss %xmm2, %xmm1
movss -0xc(%rbp), %xmm2
movss 0x260b(%rip), %xmm3     # 0xaca4
subss %xmm3, %xmm2
callq 0x7ce0
movss %xmm0, -0x48(%rbp)
movss -0x2c(%rbp), %xmm0
movss -0x30(%rbp), %xmm1
movss -0x28(%rbp), %xmm2
callq 0x7d50
movss %xmm0, -0x4c(%rbp)
movss -0x34(%rbp), %xmm0
movss -0x38(%rbp), %xmm1
movss -0x28(%rbp), %xmm2
callq 0x7d50
movss %xmm0, -0x50(%rbp)
movss -0x3c(%rbp), %xmm0
movss -0x40(%rbp), %xmm1
movss -0x28(%rbp), %xmm2
callq 0x7d50
movss %xmm0, -0x54(%rbp)
movss -0x44(%rbp), %xmm0
movss -0x48(%rbp), %xmm1
movss -0x28(%rbp), %xmm2
callq 0x7d50
movss %xmm0, -0x58(%rbp)
movss -0x4c(%rbp), %xmm0
movss -0x50(%rbp), %xmm1
movss -0x24(%rbp), %xmm2
callq 0x7d50
movss %xmm0, -0x5c(%rbp)
movss -0x54(%rbp), %xmm0
movss -0x58(%rbp), %xmm1
movss -0x24(%rbp), %xmm2
callq 0x7d50
movss %xmm0, -0x60(%rbp)
movss -0x5c(%rbp), %xmm0
movss -0x60(%rbp), %xmm1
movss -0x20(%rbp), %xmm2
callq 0x7d50
addq $0xc0, %rsp
popq %rbp
retq
nopw (%rax,%rax)