// File: /workspace/github_c_makefile_star2_O0/randyrossi[P]fisher-modem/mkfilter/src/gencode.C
// Function: compilefifi()
static void compilefifi() {
  bool mvavg = false;
  if (npoles == nzeros) {
    int n = 0;
    while (n < npoles && ycoeffs[n] == 0.0 && xcoeffs[n] == 1.0)
      n++;
    if (n >= npoles)
      mvavg = true;
  }
  margin = 11;
  printf("static float _fstepf_$(filter *fi, float x)\n");
  printf("  { /* %s */\n", cmdline);
  printf("    float *v = fi -> v;\n");
  if (mvavg) {
    printf("    float &sum = fi -> sum; int &ptr = fi -> ptr;\n");
    printf("    sum += (x - v[ptr]);\n");
    printf("    v[ptr] = x;\n");
    printf("    if (++ptr == %d) ptr = 0;\n", npoles + 1);
    printf("    return %18.10e * sum;\n", 1.0 / pbgain);
  } else {
    prshift("v", npoles);
    printf("    v[%d] =    (%18.10e * x)", npoles, 1.0 / pbgain);
    pr_ypart("v");
    printf(";\n");
    printf("    return ");
    pr_xpart("v");
    printf(";\n");
  }
  printf("  }\n\n");
  printf("static fspec _fspecs_$ = { %d, %d, _fstepf_$ };\n\n", nzeros, npoles);
}

// Assembly:
subq $0x18, %rsp
movb $0x0, 0x17(%rsp)
movl 0x4e09(%rip), %eax      # 0x61f8
cmpl 0x3deb(%rip), %eax      # 0x51e0
jne 0x148a
movl $0x0, 0x10(%rsp)
movl 0x10(%rsp), %ecx
xorl %eax, %eax
cmpl 0x4de9(%rip), %ecx      # 0x61f8
movb %al, 0xf(%rsp)
jge 0x1460
movslq 0x10(%rsp), %rcx
leaq 0x4ddf(%rip), %rax      # 0x6200
movsd (%rax,%rcx,8), %xmm0
xorl %eax, %eax
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
movb %al, 0xf(%rsp)
jne 0x1460
jp 0x1460
movslq 0x10(%rsp), %rcx
leaq 0x3dad(%rip), %rax      # 0x51f0
movsd (%rax,%rcx,8), %xmm0
movsd 0x1bb8(%rip), %xmm1     # 0x3008
ucomisd %xmm1, %xmm0
sete %al
setnp %cl
andb %cl, %al
movb %al, 0xf(%rsp)
movb 0xf(%rsp), %al
testb $0x1, %al
jne 0x146a
jmp 0x1477
movl 0x10(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x10(%rsp)
jmp 0x1403
movl 0x10(%rsp), %eax
cmpl 0x4d77(%rip), %eax      # 0x61f8
jl 0x1488
movb $0x1, 0x17(%rsp)
jmp 0x148a
movl $0xb, 0x5d78(%rip)      # 0x720c
leaq 0x1bf6(%rip), %rdi      # 0x3091
movb $0x0, %al
callq 0x1030
leaq 0x1c15(%rip), %rdi      # 0x30be
leaq 0x3c20(%rip), %rsi      # 0x50d0
movb $0x0, %al
callq 0x1030
leaq 0x1c0e(%rip), %rdi      # 0x30cc
movb $0x0, %al
callq 0x1030
testb $0x1, 0x17(%rsp)
je 0x152d
leaq 0x1c12(%rip), %rdi      # 0x30e5
movb $0x0, %al
callq 0x1030
leaq 0x1c37(%rip), %rdi      # 0x3118
movb $0x0, %al
callq 0x1030
leaq 0x1c43(%rip), %rdi      # 0x3132
movb $0x0, %al
callq 0x1030
movl 0x4cfc(%rip), %esi      # 0x61f8
addl $0x1, %esi
leaq 0x1c3d(%rip), %rdi      # 0x3143
movb $0x0, %al
callq 0x1030
movsd 0x1af3(%rip), %xmm0     # 0x3008
divsd 0x3cbb(%rip), %xmm0     # 0x51d8
leaq 0x1c3e(%rip), %rdi      # 0x3162
movb $0x1, %al
callq 0x1030
jmp 0x15a5
movl 0x4cc5(%rip), %esi      # 0x61f8
leaq 0x1f69(%rip), %rdi      # 0x34a3
callq 0x1780
movl 0x4cb3(%rip), %esi      # 0x61f8
movsd 0x1abb(%rip), %xmm0     # 0x3008
divsd 0x3c83(%rip), %xmm0     # 0x51d8
leaq 0x1c21(%rip), %rdi      # 0x317d
movb $0x1, %al
callq 0x1030
leaq 0x1f39(%rip), %rdi      # 0x34a3
callq 0x1840
leaq 0x1e81(%rip), %rdi      # 0x33f7
movb $0x0, %al
callq 0x1030
leaq 0x1c16(%rip), %rdi      # 0x319a
movb $0x0, %al
callq 0x1030
leaq 0x1f11(%rip), %rdi      # 0x34a3
callq 0x18b0
leaq 0x1e59(%rip), %rdi      # 0x33f7
movb $0x0, %al
callq 0x1030
leaq 0x1bfa(%rip), %rdi      # 0x31a6
movb $0x0, %al
callq 0x1030
movl 0x3c27(%rip), %esi      # 0x51e0
movl 0x4c39(%rip), %edx      # 0x61f8
leaq 0x1be6(%rip), %rdi      # 0x31ac
movb $0x0, %al
callq 0x1030
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)