// File: /workspace/github_c_makefile_star2_O0/halcy[P]quasi_crystals_bot/Quasi.c
// Function: quasi
float quasi(vec2_t pos, const float phase) {
    float theta = atan2(-pos.y,pos.x);
    float r = log(vec2abs(pos));
    float C=0.0f;
    float lin = params[0];
    float pol = params[1];
    float outflow_lin = params[2];
    float outflow_pol = params[3];
    
    float planewaves = params[4];
    float stripes = params[5];
    float phasespeed = params[6];
    //printf("pol pw %f / str %f / ps %f\n", planewaves, stripes, phasespeed);
    if(pol != 0.0) {
        for(float t=0.0f; t<planewaves; t++) {
            C += pol * cos((theta * cos(t * (M_PI / planewaves)) - r * sin(t * (M_PI / planewaves))) * stripes + phase * phasespeed);
        }
    }
    
    planewaves = params[7];
    stripes = params[8];
    phasespeed = params[9];
    //printf("lin pw %f / str %f / ps %f\n", planewaves, stripes, phasespeed);
    if(lin != 0.0) {
        for(float t=0.0f; t<planewaves; t++) {        
            C += lin * cos((pos.x * cos(t * (M_PI / planewaves)) + pos.y * sin(t * (M_PI / planewaves))) * 2.0f * M_PI * stripes + phase * phasespeed);
        }
    }
    
    planewaves = params[10];
    stripes = params[11];
    phasespeed = params[12];
    //printf("of pol pw %f / str %f / ps %f\n", planewaves, stripes, phasespeed);
    if(outflow_pol != 0.0) {
        for(float t=0.0f; t<planewaves; t++) {
            C += outflow_pol * cos(fabs(theta * cos(t * (M_PI / planewaves)) - r * sin(t * (M_PI / planewaves))) * stripes + phase * phasespeed);
        }
    }
    
    planewaves = params[13];
    stripes = params[14];
    phasespeed = params[15];
    //printf("of lin pw %f / str %f / ps %f\n", planewaves, stripes, phasespeed);
    if(outflow_lin != 0.0) {
        for(float t=0.0f; t<planewaves; t++) {        
            C += outflow_lin * cos(fabs(pos.x * cos(t * (M_PI / planewaves)) + pos.y * sin(t * (M_PI / planewaves))) * 2.0f * M_PI * stripes + phase * phasespeed);
        }
    }
    float c=((C+planewaves)/(planewaves*2.0f));
    return c;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
leaq -0xd0(%rsp), %rsp
movlpd %xmm0, -0x8(%rbp)
movss %xmm1, -0xc(%rbp)
movaps 0x159c3(%rip), %xmm1    # 0x17020
movss -0x4(%rbp), %xmm0
pxor %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
movss -0x8(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
callq 0x1180
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x10(%rbp)
movsd -0x8(%rbp), %xmm0
callq 0x1ce0
cvtss2sd %xmm0, %xmm0
callq 0x1100
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x14(%rbp)
xorps %xmm0, %xmm0
movss %xmm0, -0x18(%rbp)
movss 0x1bea3(%rip), %xmm0    # 0x1d550
movss %xmm0, -0x1c(%rbp)
movss 0x1be9a(%rip), %xmm0    # 0x1d554
movss %xmm0, -0x20(%rbp)
movss 0x1be91(%rip), %xmm0    # 0x1d558
movss %xmm0, -0x24(%rbp)
movss 0x1be88(%rip), %xmm0    # 0x1d55c
movss %xmm0, -0x28(%rbp)
movss 0x1be7f(%rip), %xmm0    # 0x1d560
movss %xmm0, -0x2c(%rbp)
movss 0x1be76(%rip), %xmm0    # 0x1d564
movss %xmm0, -0x30(%rbp)
movss 0x1be6d(%rip), %xmm0    # 0x1d568
movss %xmm0, -0x34(%rbp)
movss -0x20(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x1719
jp 0x1719
jmp 0x182e
xorps %xmm0, %xmm0
movss %xmm0, -0x38(%rbp)
movss -0x38(%rbp), %xmm1
movss -0x2c(%rbp), %xmm0
ucomiss %xmm1, %xmm0
jbe 0x182c
movss -0x20(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x50(%rbp)
movss -0x10(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x68(%rbp)
movss -0x38(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movss -0x2c(%rbp), %xmm1
cvtss2sd %xmm1, %xmm2
movsd 0x158d6(%rip), %xmm1    # 0x17040
divsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
callq 0x1110
movaps %xmm0, %xmm1
movsd -0x68(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x58(%rbp)
movss -0x14(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x60(%rbp)
movss -0x38(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movss -0x2c(%rbp), %xmm1
cvtss2sd %xmm1, %xmm2
movsd 0x15890(%rip), %xmm1    # 0x17040
divsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
callq 0x11d0
movsd -0x60(%rbp), %xmm1
movaps %xmm0, %xmm2
movsd -0x58(%rbp), %xmm0
mulsd %xmm2, %xmm1
subsd %xmm1, %xmm0
movss -0x30(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
mulsd %xmm1, %xmm0
movss -0xc(%rbp), %xmm1
mulss -0x34(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
addsd %xmm1, %xmm0
callq 0x1110
movsd -0x50(%rbp), %xmm1
mulsd %xmm0, %xmm1
movss -0x18(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
addsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x18(%rbp)
movss 0x157e7(%rip), %xmm0    # 0x17004
addss -0x38(%rbp), %xmm0
movss %xmm0, -0x38(%rbp)
jmp 0x1721
jmp 0x182e
movss 0x1bd36(%rip), %xmm0    # 0x1d56c
movss %xmm0, -0x2c(%rbp)
movss 0x1bd2d(%rip), %xmm0    # 0x1d570
movss %xmm0, -0x30(%rbp)
movss 0x1bd24(%rip), %xmm0    # 0x1d574
movss %xmm0, -0x34(%rbp)
movss -0x1c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x186e
jp 0x186e
jmp 0x19a1
xorps %xmm0, %xmm0
movss %xmm0, -0x3c(%rbp)
movss -0x3c(%rbp), %xmm1
movss -0x2c(%rbp), %xmm0
ucomiss %xmm1, %xmm0
jbe 0x199f
movss -0x1c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x70(%rbp)
movss -0x8(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x88(%rbp)
movss -0x3c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movss -0x2c(%rbp), %xmm1
cvtss2sd %xmm1, %xmm2
movsd 0x1577e(%rip), %xmm1    # 0x17040
divsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
callq 0x1110
movaps %xmm0, %xmm1
movsd -0x88(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x78(%rbp)
movss -0x4(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x80(%rbp)
movss -0x3c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movss -0x2c(%rbp), %xmm1
cvtss2sd %xmm1, %xmm2
movsd 0x15735(%rip), %xmm1    # 0x17040
divsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
callq 0x11d0
movsd -0x80(%rbp), %xmm1
movaps %xmm0, %xmm2
movsd -0x78(%rbp), %xmm0
mulsd %xmm2, %xmm1
addsd %xmm1, %xmm0
movsd 0x15713(%rip), %xmm1    # 0x17048
mulsd %xmm1, %xmm0
movsd 0x156ff(%rip), %xmm1    # 0x17040
mulsd %xmm1, %xmm0
movss -0x30(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
mulsd %xmm1, %xmm0
movss -0xc(%rbp), %xmm1
mulss -0x34(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
addsd %xmm1, %xmm0
callq 0x1110
movsd -0x70(%rbp), %xmm1
mulsd %xmm0, %xmm1
movss -0x18(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
addsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x18(%rbp)
movss 0x15674(%rip), %xmm0    # 0x17004
addss -0x3c(%rbp), %xmm0
movss %xmm0, -0x3c(%rbp)
jmp 0x1876
jmp 0x19a1
movss 0x1bbcf(%rip), %xmm0    # 0x1d578
movss %xmm0, -0x2c(%rbp)
movss 0x1bbc6(%rip), %xmm0    # 0x1d57c
movss %xmm0, -0x30(%rbp)
movss 0x1bbbd(%rip), %xmm0    # 0x1d580
movss %xmm0, -0x34(%rbp)
movss -0x28(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x19e1
jp 0x19e1
jmp 0x1b19
xorps %xmm0, %xmm0
movss %xmm0, -0x40(%rbp)
movss -0x40(%rbp), %xmm1
movss -0x2c(%rbp), %xmm0
ucomiss %xmm1, %xmm0
jbe 0x1b17
movss -0x28(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x90(%rbp)
movss -0x10(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0xa8(%rbp)
movss -0x40(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movss -0x2c(%rbp), %xmm1
cvtss2sd %xmm1, %xmm2
movsd 0x15608(%rip), %xmm1    # 0x17040
divsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
callq 0x1110
movaps %xmm0, %xmm1
movsd -0xa8(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x98(%rbp)
movss -0x14(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0xa0(%rbp)
movss -0x40(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movss -0x2c(%rbp), %xmm1
cvtss2sd %xmm1, %xmm2
movsd 0x155b9(%rip), %xmm1    # 0x17040
divsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
callq 0x11d0
movsd -0xa0(%rbp), %xmm1
movaps %xmm0, %xmm2
movsd -0x98(%rbp), %xmm0
mulsd %xmm2, %xmm1
subsd %xmm1, %xmm0
movaps 0x1557a(%rip), %xmm1    # 0x17030
pand %xmm1, %xmm0
movss -0x30(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
mulsd %xmm1, %xmm0
movss -0xc(%rbp), %xmm1
mulss -0x34(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
addsd %xmm1, %xmm0
callq 0x1110
movsd -0x90(%rbp), %xmm1
mulsd %xmm0, %xmm1
movss -0x18(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
addsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x18(%rbp)
movss 0x154fc(%rip), %xmm0    # 0x17004
addss -0x40(%rbp), %xmm0
movss %xmm0, -0x40(%rbp)
jmp 0x19e9
jmp 0x1b19
movss 0x1ba63(%rip), %xmm0    # 0x1d584
movss %xmm0, -0x2c(%rbp)
movss 0x1ba5a(%rip), %xmm0    # 0x1d588
movss %xmm0, -0x30(%rbp)
movss 0x1ba51(%rip), %xmm0    # 0x1d58c
movss %xmm0, -0x34(%rbp)
movss -0x24(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x1b59
jp 0x1b59
jmp 0x1ca9
xorps %xmm0, %xmm0
movss %xmm0, -0x44(%rbp)
movss -0x44(%rbp), %xmm1
movss -0x2c(%rbp), %xmm0
ucomiss %xmm1, %xmm0
jbe 0x1ca7
movss -0x24(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0xb0(%rbp)
movss -0x8(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0xc8(%rbp)
movss -0x44(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movss -0x2c(%rbp), %xmm1
cvtss2sd %xmm1, %xmm2
movsd 0x15490(%rip), %xmm1    # 0x17040
divsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
callq 0x1110
movaps %xmm0, %xmm1
movsd -0xc8(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0xb8(%rbp)
movss -0x4(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0xc0(%rbp)
movss -0x44(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movss -0x2c(%rbp), %xmm1
cvtss2sd %xmm1, %xmm2
movsd 0x15441(%rip), %xmm1    # 0x17040
divsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
callq 0x11d0
movsd -0xc0(%rbp), %xmm1
movaps %xmm0, %xmm2
movsd -0xb8(%rbp), %xmm0
mulsd %xmm2, %xmm1
addsd %xmm1, %xmm0
movaps 0x15402(%rip), %xmm1    # 0x17030
pand %xmm1, %xmm0
movsd 0x1540e(%rip), %xmm1    # 0x17048
mulsd %xmm1, %xmm0
movsd 0x153fa(%rip), %xmm1    # 0x17040
mulsd %xmm1, %xmm0
movss -0x30(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
mulsd %xmm1, %xmm0
movss -0xc(%rbp), %xmm1
mulss -0x34(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
addsd %xmm1, %xmm0
callq 0x1110
movsd -0xb0(%rbp), %xmm1
mulsd %xmm0, %xmm1
movss -0x18(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
addsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x18(%rbp)
movss 0x1536c(%rip), %xmm0    # 0x17004
addss -0x44(%rbp), %xmm0
movss %xmm0, -0x44(%rbp)
jmp 0x1b61
jmp 0x1ca9
movss -0x18(%rbp), %xmm0
addss -0x2c(%rbp), %xmm0
movss 0x15355(%rip), %xmm1    # 0x17010
mulss -0x2c(%rbp), %xmm1
divss %xmm1, %xmm0
movss %xmm0, -0x48(%rbp)
movss -0x48(%rbp), %xmm0
leaq 0xd0(%rsp), %rsp
popq %rbp
retq
nopl (%rax,%rax)