// File: /workspace/github_c_makefile_star2_O0/Ziddykins[P]Dawn/src/util.c
// Function: noise
float noise(float x, float y, float z) {
    int X = (int) (floor(x)) & 255,                  // FIND UNIT CUBE THAT
            Y = (int) (floor(y)) & 255,                  // CONTAINS POINT.
            Z = (int) (floor(z)) & 255;
    x -= floor(x);                                // FIND RELATIVE X,Y,Z
    y -= floor(y);                                // OF POINT IN CUBE.
    z -= floor(z);
    float u = fade(x),                                // COMPUTE FADE CURVES
            v = fade(y),                                // FOR EACH OF X,Y,Z.
            w = fade(z);
    int A = p_noise_arr[X] + Y;
    int AA = p_noise_arr[A] + Z;
    int AB = p_noise_arr[A + 1] + Z; // HASH COORDINATES OF
    int B = p_noise_arr[X + 1] + Y;
    int BA = p_noise_arr[B] + Z;
    int BB = p_noise_arr[B + 1] + Z; // THE 8 CUBE CORNERS,

    return lerp(w, lerp(v, lerp(u, grad(p_noise_arr[AA], x, y, z),  // AND ADD
                                grad(p_noise_arr[BA], x - 1, y, z)), // BLENDED
                        lerp(u, grad(p_noise_arr[AB], x, y - 1, z),  // RESULTS
                             grad(p_noise_arr[BB], x - 1, y - 1, z))),// FROM  8
                lerp(v, lerp(u, grad(p_noise_arr[AA + 1], x, y, z - 1),  // CORNERS
                             grad(p_noise_arr[BA + 1], x - 1, y, z - 1)), // OF CUBE
                     lerp(u, grad(p_noise_arr[AB + 1], x, y - 1, z - 1),
                          grad(p_noise_arr[BB + 1], x - 1, y - 1, z - 1))));
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movss %xmm0, -0x4(%rbp)
movss %xmm1, -0x8(%rbp)
movss %xmm2, -0xc(%rbp)
movss -0x4(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
callq 0x23e0
cvttsd2si %xmm0, %eax
andl $0xff, %eax
movl %eax, -0x10(%rbp)
movss -0x8(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
callq 0x23e0
cvttsd2si %xmm0, %eax
andl $0xff, %eax
movl %eax, -0x14(%rbp)
movss -0xc(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
callq 0x23e0
cvttsd2si %xmm0, %eax
andl $0xff, %eax
movl %eax, -0x18(%rbp)
movss -0x4(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
callq 0x23e0
movaps %xmm0, %xmm1
movss -0x4(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
subsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x4(%rbp)
movss -0x8(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
callq 0x23e0
movaps %xmm0, %xmm1
movss -0x8(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
subsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x8(%rbp)
movss -0xc(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
callq 0x23e0
movaps %xmm0, %xmm1
movss -0xc(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
subsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0xc(%rbp)
movss -0x4(%rbp), %xmm0
callq 0x18b40
movss %xmm0, -0x1c(%rbp)
movss -0x8(%rbp), %xmm0
callq 0x18b40
movss %xmm0, -0x20(%rbp)
movss -0xc(%rbp), %xmm0
callq 0x18b40
movss %xmm0, -0x24(%rbp)
movq 0x10297(%rip), %rax     # 0x28aa8
movslq -0x10(%rbp), %rcx
movl (%rax,%rcx,4), %eax
addl -0x14(%rbp), %eax
movl %eax, -0x28(%rbp)
movq 0x10283(%rip), %rax     # 0x28aa8
movslq -0x28(%rbp), %rcx
movl (%rax,%rcx,4), %eax
addl -0x18(%rbp), %eax
movl %eax, -0x2c(%rbp)
movq 0x1026f(%rip), %rax     # 0x28aa8
movl -0x28(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movl (%rax,%rcx,4), %eax
addl -0x18(%rbp), %eax
movl %eax, -0x30(%rbp)
movq 0x10256(%rip), %rax     # 0x28aa8
movl -0x10(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movl (%rax,%rcx,4), %eax
addl -0x14(%rbp), %eax
movl %eax, -0x34(%rbp)
movq 0x1023d(%rip), %rax     # 0x28aa8
movslq -0x34(%rbp), %rcx
movl (%rax,%rcx,4), %eax
addl -0x18(%rbp), %eax
movl %eax, -0x38(%rbp)
movq 0x10229(%rip), %rax     # 0x28aa8
movl -0x34(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movl (%rax,%rcx,4), %eax
addl -0x18(%rbp), %eax
movl %eax, -0x3c(%rbp)
movss -0x24(%rbp), %xmm0
movss %xmm0, -0x40(%rbp)
movss -0x20(%rbp), %xmm0
movss %xmm0, -0x60(%rbp)
movss -0x1c(%rbp), %xmm0
movss %xmm0, -0x70(%rbp)
movq 0x101f2(%rip), %rax     # 0x28aa8
movslq -0x2c(%rbp), %rcx
movl (%rax,%rcx,4), %edi
movss -0x4(%rbp), %xmm0
movss -0x8(%rbp), %xmm1
movss -0xc(%rbp), %xmm2
callq 0x18bd0
movss %xmm0, -0x74(%rbp)
movq 0x101cb(%rip), %rax     # 0x28aa8
movslq -0x38(%rbp), %rcx
movl (%rax,%rcx,4), %edi
movss -0x4(%rbp), %xmm0
movss 0x576f(%rip), %xmm1     # 0x1e060
subss %xmm1, %xmm0
movss -0x8(%rbp), %xmm1
movss -0xc(%rbp), %xmm2
callq 0x18bd0
movss -0x74(%rbp), %xmm1
movaps %xmm0, %xmm2
movss -0x70(%rbp), %xmm0
callq 0x18b90
movss %xmm0, -0x64(%rbp)
movss -0x1c(%rbp), %xmm0
movss %xmm0, -0x68(%rbp)
movq 0x1017c(%rip), %rax     # 0x28aa8
movslq -0x30(%rbp), %rcx
movl (%rax,%rcx,4), %edi
movss -0x4(%rbp), %xmm0
movss -0x8(%rbp), %xmm1
movss 0x571b(%rip), %xmm2     # 0x1e060
subss %xmm2, %xmm1
movss -0xc(%rbp), %xmm2
callq 0x18bd0
movss %xmm0, -0x6c(%rbp)
movq 0x10149(%rip), %rax     # 0x28aa8
movslq -0x3c(%rbp), %rcx
movl (%rax,%rcx,4), %edi
movss -0x4(%rbp), %xmm0
movss 0x56ed(%rip), %xmm1     # 0x1e060
subss %xmm1, %xmm0
movss -0x8(%rbp), %xmm1
movss 0x56dc(%rip), %xmm2     # 0x1e060
subss %xmm2, %xmm1
movss -0xc(%rbp), %xmm2
callq 0x18bd0
movss -0x6c(%rbp), %xmm1
movaps %xmm0, %xmm2
movss -0x68(%rbp), %xmm0
callq 0x18b90
movss -0x64(%rbp), %xmm1
movaps %xmm0, %xmm2
movss -0x60(%rbp), %xmm0
callq 0x18b90
movss %xmm0, -0x44(%rbp)
movss -0x20(%rbp), %xmm0
movss %xmm0, -0x48(%rbp)
movss -0x1c(%rbp), %xmm0
movss %xmm0, -0x58(%rbp)
movq 0x100d2(%rip), %rax     # 0x28aa8
movl -0x2c(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movl (%rax,%rcx,4), %edi
movss -0x4(%rbp), %xmm0
movss -0x8(%rbp), %xmm1
movss -0xc(%rbp), %xmm2
movss 0x5667(%rip), %xmm3     # 0x1e060
subss %xmm3, %xmm2
callq 0x18bd0
movss %xmm0, -0x5c(%rbp)
movq 0x1009a(%rip), %rax     # 0x28aa8
movl -0x38(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movl (%rax,%rcx,4), %edi
movss -0x4(%rbp), %xmm0
movss 0x5639(%rip), %xmm1     # 0x1e060
subss %xmm1, %xmm0
movss -0x8(%rbp), %xmm1
movss -0xc(%rbp), %xmm2
movss 0x5623(%rip), %xmm3     # 0x1e060
subss %xmm3, %xmm2
callq 0x18bd0
movss -0x5c(%rbp), %xmm1
movaps %xmm0, %xmm2
movss -0x58(%rbp), %xmm0
callq 0x18b90
movss %xmm0, -0x4c(%rbp)
movss -0x1c(%rbp), %xmm0
movss %xmm0, -0x50(%rbp)
movq 0x1003a(%rip), %rax     # 0x28aa8
movl -0x30(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movl (%rax,%rcx,4), %edi
movss -0x4(%rbp), %xmm0
movss -0x8(%rbp), %xmm1
movss 0x55d4(%rip), %xmm2     # 0x1e060
subss %xmm2, %xmm1
movss -0xc(%rbp), %xmm2
movss 0x55c3(%rip), %xmm3     # 0x1e060
subss %xmm3, %xmm2
callq 0x18bd0
movss %xmm0, -0x54(%rbp)
movq 0xfff6(%rip), %rax      # 0x28aa8
movl -0x3c(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movl (%rax,%rcx,4), %edi
movss -0x4(%rbp), %xmm0
movss 0x5595(%rip), %xmm1     # 0x1e060
subss %xmm1, %xmm0
movss -0x8(%rbp), %xmm1
movss 0x5584(%rip), %xmm2     # 0x1e060
subss %xmm2, %xmm1
movss -0xc(%rbp), %xmm2
movss 0x5573(%rip), %xmm3     # 0x1e060
subss %xmm3, %xmm2
callq 0x18bd0
movss -0x54(%rbp), %xmm1
movaps %xmm0, %xmm2
movss -0x50(%rbp), %xmm0
callq 0x18b90
movss -0x4c(%rbp), %xmm1
movaps %xmm0, %xmm2
movss -0x48(%rbp), %xmm0
callq 0x18b90
movss -0x44(%rbp), %xmm1
movaps %xmm0, %xmm2
movss -0x40(%rbp), %xmm0
callq 0x18b90
addq $0x80, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)