// File: /workspace/github_c_makefile_star2_O0/mohuangrui[P]ArtraCFD/initialization.c
// Function: InitializeGeometryData
static void InitializeGeometryData(Geometry *const geo)
{
    FILE *fp = Fopen("artracfd.geo", "r");
    const char *fmtI = ParseFormat("%lg, %lg, %lg, %lg, %lg, %lg, %lg, %lg, %lg");
    /* read and process file line by line */
    String str = {'\0'}; /* store the current read line */
    String fname = {'\0'}; /* store the file name */
    while (NULL != fgets(str, sizeof str, fp)) {
        ParseCommand(str);
        if (0 == strncmp(str, "sphere state begin", sizeof str)) {
            ReadPolyStateData(0, geo->sphN, fp, geo);
            continue;
        }
        if (0 == strncmp(str, "polyhedron geometry begin", sizeof str)) {
            for (int n = geo->sphN; n < geo->totN; ++n) {
                Sread(fp, 1, "%s", fname);
                ReadStlFile(fname, geo->poly + n);
                ConvertPolyhedron(geo->poly + n);
            }
            continue;
        }
        if (0 == strncmp(str, "polyhedron state begin", sizeof str)) {
            ReadPolyStateData(geo->sphN, geo->totN, fp, geo);
            continue;
        }
        if (0 == strncmp(str, "polyhedron transform begin", sizeof str)) {
            const Real one = 1.0;
            const Real zero = 0.0;
            RealVec scale = {zero};
            RealVec angle = {zero};
            RealVec offset = {zero};
            for (int n = geo->sphN; n < geo->totN; ++n) {
                Sread(fp, 9, fmtI, scale + X, scale + Y, scale + Z,
                        angle + X, angle + Y, angle + Z, offset + X, offset + Y, offset + Z);
                if ((one == scale[X]) && (one == scale[Y]) && (one == scale[Z]) &&
                        (zero == angle[X]) && (zero == angle[Y]) && (zero == angle[Z]) &&
                        (zero == offset[X]) && (zero == offset[Y]) && (zero == offset[Z])) {
                    continue;
                }
                TransformPolyhedron(geo->poly[n].O, scale, angle, offset, geo->poly + n);
            }
            continue;
        }
    }
    fclose(fp);
    return;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x268, %rsp            # imm = 0x268
movq %rdi, -0x20(%rbp)
leaq 0xadfa(%rip), %rdi      # 0x26175
leaq 0xc441(%rip), %rsi      # 0x277c3
callq 0xbf90
movq %rax, -0x28(%rbp)
leaq 0xc81c(%rip), %rdi      # 0x27bae
callq 0xbbc0
movq %rax, -0x30(%rbp)
leaq -0x100(%rbp), %rdi
xorl %esi, %esi
movl $0xc8, %edx
callq 0x20d0
leaq -0x1d0(%rbp), %rdi
xorl %esi, %esi
movl $0xc8, %edx
callq 0x20d0
leaq -0x100(%rbp), %rdi
movq -0x28(%rbp), %rdx
movl $0xc8, %esi
callq 0x2110
movq %rax, %rcx
xorl %eax, %eax
cmpq %rcx, %rax
je 0x1b74a
leaq -0x100(%rbp), %rdi
callq 0xb940
leaq -0x100(%rbp), %rdi
leaq 0xdb5e(%rip), %rsi      # 0x28f5c
movl $0xc8, %edx
callq 0x2050
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jne 0x1b428
movq -0x20(%rbp), %rax
movl 0x4(%rax), %esi
movq -0x28(%rbp), %rdx
movq -0x20(%rbp), %rcx
xorl %edi, %edi
callq 0x123f0
jmp 0x1b3c1
leaq -0x100(%rbp), %rdi
leaq 0xdb39(%rip), %rsi      # 0x28f6f
movl $0xc8, %edx
callq 0x2050
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jne 0x1b4de
movq -0x20(%rbp), %rax
movl 0x4(%rax), %eax
movl %eax, -0x1d4(%rbp)
movl -0x1d4(%rbp), %eax
movq -0x20(%rbp), %rcx
cmpl (%rcx), %eax
jge 0x1b4d9
movq -0x28(%rbp), %rdi
leaq -0x1d0(%rbp), %rcx
movl $0x1, %esi
leaq 0xc3d0(%rip), %rdx      # 0x2784e
movb $0x0, %al
callq 0xc1e0
leaq -0x1d0(%rbp), %rdi
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rsi
movslq -0x1d4(%rbp), %rax
imulq $0x238, %rax, %rax      # imm = 0x238
addq %rax, %rsi
callq 0x22c70
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rdi
movslq -0x1d4(%rbp), %rax
imulq $0x238, %rax, %rax      # imm = 0x238
addq %rax, %rdi
callq 0xc320
movl -0x1d4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1d4(%rbp)
jmp 0x1b459
jmp 0x1b3c1
leaq -0x100(%rbp), %rdi
leaq 0xda9d(%rip), %rsi      # 0x28f89
movl $0xc8, %edx
callq 0x2050
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jne 0x1b51d
movq -0x20(%rbp), %rax
movl 0x4(%rax), %edi
movq -0x20(%rbp), %rax
movl (%rax), %esi
movq -0x28(%rbp), %rdx
movq -0x20(%rbp), %rcx
callq 0x123f0
jmp 0x1b3c1
leaq -0x100(%rbp), %rdi
leaq 0xda75(%rip), %rsi      # 0x28fa0
movl $0xc8, %edx
callq 0x2050
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jne 0x1b745
movsd 0xc1c7(%rip), %xmm0     # 0x27710
movsd %xmm0, -0x1e0(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x1e8(%rbp)
leaq -0x200(%rbp), %rdi
xorl %esi, %esi
movl $0x18, %edx
callq 0x20d0
leaq -0x220(%rbp), %rdi
xorl %esi, %esi
movl $0x18, %edx
callq 0x20d0
leaq -0x240(%rbp), %rdi
xorl %esi, %esi
movl $0x18, %edx
callq 0x20d0
movq -0x20(%rbp), %rax
movl 0x4(%rax), %eax
movl %eax, -0x244(%rbp)
movl -0x244(%rbp), %eax
movq -0x20(%rbp), %rcx
cmpl (%rcx), %eax
jge 0x1b740
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rdx
leaq -0x200(%rbp), %rcx
leaq -0x200(%rbp), %r8
addq $0x8, %r8
leaq -0x200(%rbp), %r9
addq $0x10, %r9
leaq -0x220(%rbp), %r15
leaq -0x220(%rbp), %r14
addq $0x8, %r14
leaq -0x220(%rbp), %rbx
addq $0x10, %rbx
leaq -0x240(%rbp), %r11
leaq -0x240(%rbp), %r10
addq $0x8, %r10
leaq -0x240(%rbp), %rax
addq $0x10, %rax
movl $0x9, %esi
movq %r15, (%rsp)
movq %r14, 0x8(%rsp)
movq %rbx, 0x10(%rsp)
movq %r11, 0x18(%rsp)
movq %r10, 0x20(%rsp)
movq %rax, 0x28(%rsp)
movb $0x0, %al
callq 0xc1e0
movsd 0xc0cc(%rip), %xmm0     # 0x27710
ucomisd -0x200(%rbp), %xmm0
jne 0x1b6dc
jp 0x1b6dc
movsd 0xc0b0(%rip), %xmm0     # 0x27710
ucomisd -0x1f8(%rbp), %xmm0
jne 0x1b6dc
jp 0x1b6dc
movsd 0xc09c(%rip), %xmm0     # 0x27710
ucomisd -0x1f0(%rbp), %xmm0
jne 0x1b6dc
jp 0x1b6dc
xorps %xmm0, %xmm0
ucomisd -0x220(%rbp), %xmm0
jne 0x1b6dc
jp 0x1b6dc
xorps %xmm0, %xmm0
ucomisd -0x218(%rbp), %xmm0
jne 0x1b6dc
jp 0x1b6dc
xorps %xmm0, %xmm0
ucomisd -0x210(%rbp), %xmm0
jne 0x1b6dc
jp 0x1b6dc
xorps %xmm0, %xmm0
ucomisd -0x240(%rbp), %xmm0
jne 0x1b6dc
jp 0x1b6dc
xorps %xmm0, %xmm0
ucomisd -0x238(%rbp), %xmm0
jne 0x1b6dc
jp 0x1b6dc
xorps %xmm0, %xmm0
ucomisd -0x230(%rbp), %xmm0
jne 0x1b6dc
jp 0x1b6dc
jmp 0x1b72c
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rdi
movslq -0x244(%rbp), %rax
imulq $0x238, %rax, %rax      # imm = 0x238
addq %rax, %rdi
addq $0x20, %rdi
leaq -0x200(%rbp), %rsi
leaq -0x220(%rbp), %rdx
leaq -0x240(%rbp), %rcx
movq -0x20(%rbp), %rax
movq 0x10(%rax), %r8
movslq -0x244(%rbp), %rax
imulq $0x238, %rax, %rax      # imm = 0x238
addq %rax, %r8
callq 0xcb60
movl -0x244(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x244(%rbp)
jmp 0x1b5a2
jmp 0x1b3c1
jmp 0x1b3c1
movq -0x28(%rbp), %rdi
callq 0x2080
addq $0x268, %rsp            # imm = 0x268
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
nopw %cs:(%rax,%rax)