// File: /workspace/github_c_makefile_star2_O0/mohuangrui[P]ArtraCFD/paraview_writer.c
// Function: WritePolygonPolyData
static void WritePolygonPolyData(const int pm, const int pn, const Geometry *const geo, PvSet *pvSet)
{
    snprintf(pvSet->fname, sizeof(PvStr), "%s%s", pvSet->bname, pvSet->fext);
    FILE *fp = Fopen(pvSet->fname, "w");
    PvReal Vec[3] = {0.0}; /* paraview vector data */
    const Polyhedron *poly = NULL;
    fprintf(fp, "<?xml version=\"1.0\"?>\n");
    fprintf(fp, "<VTKFile type=\"PolyData\" version=\"1.0\" byte_order=\"%s\">\n", pvSet->byteOrder);
    fprintf(fp, "  <PolyData>\n");
    for (int m = pm; m < pn; ++m) {
        poly = geo->poly + m;
        fprintf(fp, "    <Piece NumberOfPoints=\"%d\" NumberOfVerts=\"0\" NumberOfPolys=\"%d\">\n", poly->vertN, poly->faceN);
        fprintf(fp, "      <!--\n");
        fprintf(fp, "        vertN = %d\n", poly->vertN);
        fprintf(fp, "        edgeN = %d\n", poly->edgeN);
        fprintf(fp, "        faceN = %d\n", poly->faceN);
        fprintf(fp, "      -->\n");
        fprintf(fp, "      <PointData>\n");
        fprintf(fp, "      </PointData>\n");
        fprintf(fp, "      <CellData>\n");
        fprintf(fp, "      </CellData>\n");
        fprintf(fp, "      <Points>\n");
        fprintf(fp, "        <DataArray type=\"%s\" Name=\"points\" NumberOfComponents=\"3\" format=\"ascii\">\n", pvSet->floatType);
        fprintf(fp, "          ");
        for (int n = 0; n < poly->vertN; ++n) {
            Vec[X] = poly->v[n][X];
            Vec[Y] = poly->v[n][Y];
            Vec[Z] = poly->v[n][Z];
            fprintf(fp, "%.6g %.6g %.6g ", Vec[X], Vec[Y], Vec[Z]);
        }
        fprintf(fp, "\n        </DataArray>\n");
        fprintf(fp, "      </Points>\n");
        fprintf(fp, "      <Verts>\n");
        fprintf(fp, "      </Verts>\n");
        fprintf(fp, "      <Polys>\n");
        fprintf(fp, "        <DataArray type=\"%s\" Name=\"connectivity\" format=\"ascii\">\n", pvSet->intType);
        fprintf(fp, "          ");
        for (int n = 0; n < poly->faceN; ++n) {
            fprintf(fp, "%d %d %d ", poly->f[n][0], poly->f[n][1], poly->f[n][2]);
        }
        fprintf(fp, "\n        </DataArray>\n");
        fprintf(fp, "        <DataArray type=\"%s\" Name=\"offsets\" format=\"ascii\">\n", pvSet->intType);
        fprintf(fp, "          ");
        for (int n = 0; n < poly->faceN; ++n) {
            fprintf(fp, "%d ", 3 * (n + 1));
        }
        fprintf(fp, "\n        </DataArray>\n");
        fprintf(fp, "      </Polys>\n");
        fprintf(fp, "    </Piece>\n");
    }
    fprintf(fp, "  </PolyData>\n");
    fprintf(fp, "</VTKFile>\n");
    fprintf(fp, "<!--\n");
    WritePolyStateData(pm, pn, fp, geo);
    fprintf(fp, "-->\n");
    fclose(fp);
    return;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movl %edi, -0x4(%rbp)
movl %esi, -0x8(%rbp)
movq %rdx, -0x10(%rbp)
movq %rcx, -0x18(%rbp)
movq -0x18(%rbp), %rdi
addq $0xa0, %rdi
movq -0x18(%rbp), %rcx
addq $0x50, %rcx
movq -0x18(%rbp), %r8
addq $0xf0, %r8
movl $0x50, %esi
leaq 0xabe4(%rip), %rdx      # 0x29ad4
movb $0x0, %al
callq 0x20b0
movq -0x18(%rbp), %rdi
addq $0xa0, %rdi
leaq 0x7f73(%rip), %rsi      # 0x26e7c
callq 0xbf90
movq %rax, -0x20(%rbp)
leaq -0x40(%rbp), %rdi
xorl %esi, %esi
movl $0x18, %edx
callq 0x20d0
movq $0x0, -0x48(%rbp)
movq -0x20(%rbp), %rdi
leaq 0xb4e3(%rip), %rsi      # 0x2a418
movb $0x0, %al
callq 0x2140
movq -0x20(%rbp), %rdi
movq -0x18(%rbp), %rdx
addq $0x230, %rdx            # imm = 0x230
leaq 0xb7ee(%rip), %rsi      # 0x2a740
movb $0x0, %al
callq 0x2140
movq -0x20(%rbp), %rdi
leaq 0xb815(%rip), %rsi      # 0x2a779
movb $0x0, %al
callq 0x2140
movl -0x4(%rbp), %eax
movl %eax, -0x4c(%rbp)
movl -0x4c(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0x1f312
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0x4c(%rbp), %rcx
imulq $0x238, %rcx, %rcx      # imm = 0x238
addq %rcx, %rax
movq %rax, -0x48(%rbp)
movq -0x20(%rbp), %rdi
movq -0x48(%rbp), %rax
movl 0x8(%rax), %edx
movq -0x48(%rbp), %rax
movl (%rax), %ecx
leaq 0xb8e9(%rip), %rsi      # 0x2a898
movb $0x0, %al
callq 0x2140
movq -0x20(%rbp), %rdi
leaq 0xb91d(%rip), %rsi      # 0x2a8de
movb $0x0, %al
callq 0x2140
movq -0x20(%rbp), %rdi
movq -0x48(%rbp), %rax
movl 0x8(%rax), %edx
leaq 0xb910(%rip), %rsi      # 0x2a8ea
movb $0x0, %al
callq 0x2140
movq -0x20(%rbp), %rdi
movq -0x48(%rbp), %rax
movl 0x4(%rax), %edx
leaq 0xb90b(%rip), %rsi      # 0x2a8fe
movb $0x0, %al
callq 0x2140
movq -0x20(%rbp), %rdi
movq -0x48(%rbp), %rax
movl (%rax), %edx
leaq 0xb907(%rip), %rsi      # 0x2a912
movb $0x0, %al
callq 0x2140
movq -0x20(%rbp), %rdi
leaq 0xb909(%rip), %rsi      # 0x2a926
movb $0x0, %al
callq 0x2140
movq -0x20(%rbp), %rdi
leaq 0xb575(%rip), %rsi      # 0x2a5a4
movb $0x0, %al
callq 0x2140
movq -0x20(%rbp), %rdi
leaq 0xb62f(%rip), %rsi      # 0x2a670
movb $0x0, %al
callq 0x2140
movq -0x20(%rbp), %rdi
leaq 0xb631(%rip), %rsi      # 0x2a684
movb $0x0, %al
callq 0x2140
movq -0x20(%rbp), %rdi
leaq 0xb631(%rip), %rsi      # 0x2a696
movb $0x0, %al
callq 0x2140
movq -0x20(%rbp), %rdi
leaq 0xb632(%rip), %rsi      # 0x2a6a9
movb $0x0, %al
callq 0x2140
movq -0x20(%rbp), %rdi
movq -0x18(%rbp), %rdx
addq $0x1e0, %rdx            # imm = 0x1E0
leaq 0xb625(%rip), %rsi      # 0x2a6b9
movb $0x0, %al
callq 0x2140
movq -0x20(%rbp), %rdi
leaq 0xb549(%rip), %rsi      # 0x2a5ef
movb $0x0, %al
callq 0x2140
movl $0x0, -0x50(%rbp)
movl -0x50(%rbp), %eax
movq -0x48(%rbp), %rcx
cmpl 0x8(%rcx), %eax
jge 0x1f152
movq -0x48(%rbp), %rax
movq 0x220(%rax), %rax
movslq -0x50(%rbp), %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x40(%rbp)
movq -0x48(%rbp), %rax
movq 0x220(%rax), %rax
movslq -0x50(%rbp), %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movsd 0x8(%rax), %xmm0
movsd %xmm0, -0x38(%rbp)
movq -0x48(%rbp), %rax
movq 0x220(%rax), %rax
movslq -0x50(%rbp), %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movsd 0x10(%rax), %xmm0
movsd %xmm0, -0x30(%rbp)
movq -0x20(%rbp), %rdi
movsd -0x40(%rbp), %xmm0
movsd -0x38(%rbp), %xmm1
movsd -0x30(%rbp), %xmm2
leaq 0xb523(%rip), %rsi      # 0x2a660
movb $0x3, %al
callq 0x2140
movl -0x50(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x50(%rbp)
jmp 0x1f0b4
movq -0x20(%rbp), %rdi
leaq 0xb49d(%rip), %rsi      # 0x2a5fa
movb $0x0, %al
callq 0x2140
movq -0x20(%rbp), %rdi
leaq 0xb59d(%rip), %rsi      # 0x2a70c
movb $0x0, %al
callq 0x2140
movq -0x20(%rbp), %rdi
leaq 0xb64b(%rip), %rsi      # 0x2a7cc
movb $0x0, %al
callq 0x2140
movq -0x20(%rbp), %rdi
leaq 0xb6c7(%rip), %rsi      # 0x2a85a
movb $0x0, %al
callq 0x2140
movq -0x20(%rbp), %rdi
leaq 0xb6c5(%rip), %rsi      # 0x2a86a
movb $0x0, %al
callq 0x2140
movq -0x20(%rbp), %rdi
movq -0x18(%rbp), %rdx
addq $0x190, %rdx            # imm = 0x190
leaq 0xb619(%rip), %rsi      # 0x2a7db
movb $0x0, %al
callq 0x2140
movq -0x20(%rbp), %rdi
leaq 0xb41b(%rip), %rsi      # 0x2a5ef
movb $0x0, %al
callq 0x2140
movl $0x0, -0x54(%rbp)
movl -0x54(%rbp), %eax
movq -0x48(%rbp), %rcx
cmpl (%rcx), %eax
jge 0x1f255
movq -0x20(%rbp), %rdi
movq -0x48(%rbp), %rax
movq 0x200(%rax), %rax
movslq -0x54(%rbp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movl (%rax), %edx
movq -0x48(%rbp), %rax
movq 0x200(%rax), %rax
movslq -0x54(%rbp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movl 0x4(%rax), %ecx
movq -0x48(%rbp), %rax
movq 0x200(%rax), %rax
movslq -0x54(%rbp), %rsi
imulq $0xc, %rsi, %rsi
addq %rsi, %rax
movl 0x8(%rax), %r8d
leaq 0xb6ee(%rip), %rsi      # 0x2a931
movb $0x0, %al
callq 0x2140
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
jmp 0x1f1e2
movq -0x20(%rbp), %rdi
leaq 0xb39a(%rip), %rsi      # 0x2a5fa
movb $0x0, %al
callq 0x2140
movq -0x20(%rbp), %rdi
movq -0x18(%rbp), %rdx
addq $0x190, %rdx            # imm = 0x190
leaq 0xb5a0(%rip), %rsi      # 0x2a81d
movb $0x0, %al
callq 0x2140
movq -0x20(%rbp), %rdi
leaq 0xb360(%rip), %rsi      # 0x2a5ef
movb $0x0, %al
callq 0x2140
movl $0x0, -0x58(%rbp)
movl -0x58(%rbp), %eax
movq -0x48(%rbp), %rcx
cmpl (%rcx), %eax
jge 0x1f2ce
movq -0x20(%rbp), %rdi
movl -0x58(%rbp), %eax
addl $0x1, %eax
imull $0x3, %eax, %edx
leaq 0xb67b(%rip), %rsi      # 0x2a937
movb $0x0, %al
callq 0x2140
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
jmp 0x1f29d
movq -0x20(%rbp), %rdi
leaq 0xb321(%rip), %rsi      # 0x2a5fa
movb $0x0, %al
callq 0x2140
movq -0x20(%rbp), %rdi
leaq 0xb58e(%rip), %rsi      # 0x2a879
movb $0x0, %al
callq 0x2140
movq -0x20(%rbp), %rdi
leaq 0xb420(%rip), %rsi      # 0x2a71d
movb $0x0, %al
callq 0x2140
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
jmp 0x1ef71
movq -0x20(%rbp), %rdi
leaq 0xb56c(%rip), %rsi      # 0x2a889
movb $0x0, %al
callq 0x2140
movq -0x20(%rbp), %rdi
leaq 0xb15c(%rip), %rsi      # 0x2a48b
movb $0x0, %al
callq 0x2140
movq -0x20(%rbp), %rdi
leaq 0xb5a3(%rip), %rsi      # 0x2a8e4
movb $0x0, %al
callq 0x2140
movl -0x4(%rbp), %edi
movl -0x8(%rbp), %esi
movq -0x20(%rbp), %rdx
movq -0x10(%rbp), %rcx
callq 0x12170
movq -0x20(%rbp), %rdi
leaq 0xb5c6(%rip), %rsi      # 0x2a92c
movb $0x0, %al
callq 0x2140
movq -0x20(%rbp), %rdi
callq 0x2080
addq $0x60, %rsp
popq %rbp
retq
nopl (%rax)