// File: /workspace/github_cpp_makefile_star2_O3/DoubleString[P]RtConverter/src/Rtklib/rtkcmn.cpp
// Function: bamboo::tropmapf(bamboo::gtime_t, double const*, double const*, double*)
extern double tropmapf(gtime_t time, const double pos[], const double azel[],
                       double *mapfw)
{
#ifdef IERS_MODEL
    const double ep[]={2000,1,1,12,0,0};
    double mjd,lat,lon,hgt,zd,gmfh,gmfw;
#endif
    trace(4,"tropmapf: pos=%10.6f %11.6f %6.1f azel=%5.1f %4.1f\n",
          pos[0]*R2D,pos[1]*R2D,pos[2],azel[0]*R2D,azel[1]*R2D);
    
    if (pos[2]<-1000.0||pos[2]>20000.0) {
        if (mapfw) *mapfw=0.0;
        return 0.0;
    }
#ifdef IERS_MODEL
    mjd=51544.5+(timediff(time,epoch2time(ep)))/86400.0;
    lat=pos[0];
    lon=pos[1];
    hgt=pos[2]-geoidh(pos); /* height in m (mean sea level) */
    zd =pi/2.0-azel[1];
    
    /* call GMF */
    gmf_(&mjd,&lat,&lon,&hgt,&zd,&gmfh,&gmfw);
    
    if (mapfw) *mapfw=gmfw;
    return gmfh;
#else
    return nmf(time,pos,azel,mapfw); /* NMF */
#endif
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %rbx
subq $0x68, %rsp
movq %rcx, %rbx
movapd %xmm0, %xmm1
movsd 0x10(%rsi), %xmm2
movsd 0x1ff9f(%rip), %xmm0    # 0x74cc8
ucomisd %xmm2, %xmm0
ja 0x55043
ucomisd 0x2009d(%rip), %xmm2    # 0x74dd8
ja 0x55043
movsd 0x8(%rdx), %xmm3
xorpd %xmm0, %xmm0
ucomisd %xmm3, %xmm0
jae 0x55047
movsd %xmm2, -0x38(%rbp)
movsd (%rsi), %xmm0
mulsd 0x1a0d3(%rip), %xmm0    # 0x6ee38
movapd %xmm0, -0x20(%rbp)
movapd %xmm1, %xmm0
movsd %xmm3, -0x10(%rbp)
callq 0x4fddf
addsd 0x20060(%rip), %xmm0    # 0x74de0
divsd 0x20060(%rip), %xmm0    # 0x74de8
xorpd %xmm1, %xmm1
movapd -0x20(%rbp), %xmm2
cmpltsd %xmm1, %xmm2
movsd 0x16eda(%rip), %xmm1    # 0x6bc78
andpd %xmm2, %xmm1
addsd %xmm1, %xmm0
mulsd 0x15b6a(%rip), %xmm0    # 0x6a918
callq 0x8bf0
movapd -0x20(%rbp), %xmm6
movsd -0x10(%rbp), %xmm5
andpd 0x14b6b(%rip), %xmm6    # 0x69930
divsd 0x1ffb3(%rip), %xmm6    # 0x74d80
cvttsd2si %xmm6, %eax
movsd 0x14b47(%rip), %xmm1    # 0x69920
subsd %xmm6, %xmm1
cvttpd2dq %xmm6, %xmm2
cvtdq2pd %xmm2, %xmm2
addsd %xmm2, %xmm1
subsd %xmm2, %xmm6
leaq 0x1fc8c(%rip), %rcx     # 0x74a80
xorl %edx, %edx
testl %eax, %eax
jle 0x54e1b
cmpl $0x4, %eax
jbe 0x54e3c
movsd -0x58(%rcx), %xmm2
mulsd %xmm0, %xmm2
movsd -0xd0(%rcx), %xmm3
subsd %xmm2, %xmm3
movsd 0x20(%rcx), %xmm2
jmp 0x54e34
movsd -0x78(%rcx), %xmm2
mulsd %xmm0, %xmm2
movsd -0xf0(%rcx), %xmm3
subsd %xmm2, %xmm3
movsd (%rcx), %xmm2
movsd %xmm3, -0x50(%rbp,%rdx,8)
jmp 0x54e97
movsd -0xf0(%rcx,%rax,8), %xmm2
mulsd %xmm6, %xmm2
movsd -0xf8(%rcx,%rax,8), %xmm3
mulsd %xmm1, %xmm3
addsd %xmm2, %xmm3
movsd -0x78(%rcx,%rax,8), %xmm2
mulsd %xmm6, %xmm2
movsd -0x80(%rcx,%rax,8), %xmm4
mulsd %xmm1, %xmm4
addsd %xmm2, %xmm4
mulsd %xmm0, %xmm4
subsd %xmm4, %xmm3
movsd %xmm3, -0x50(%rbp,%rdx,8)
movsd (%rcx,%rax,8), %xmm3
mulsd %xmm6, %xmm3
movsd -0x8(%rcx,%rax,8), %xmm2
mulsd %xmm1, %xmm2
addsd %xmm3, %xmm2
movsd %xmm2, -0x70(%rbp,%rdx,8)
incq %rdx
addq $0x28, %rcx
cmpq $0x3, %rdx
jne 0x54df6
movapd %xmm5, %xmm0
callq 0x8150
movsd 0x14a61(%rip), %xmm1    # 0x69920
divsd %xmm0, %xmm1
movsd %xmm1, -0x20(%rbp)
movsd -0x10(%rbp), %xmm0
callq 0x8150
movsd 0x1ff16(%rip), %xmm1    # 0x74df0
addsd %xmm0, %xmm1
movsd 0x1ff12(%rip), %xmm2    # 0x74df8
divsd %xmm1, %xmm2
addsd %xmm0, %xmm2
movsd 0x1ff0a(%rip), %xmm1    # 0x74e00
divsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd 0x1ff02(%rip), %xmm0    # 0x74e08
divsd %xmm1, %xmm0
addsd -0x20(%rbp), %xmm0
movsd -0x38(%rbp), %xmm1
mulsd %xmm0, %xmm1
divsd 0x16558(%rip), %xmm1    # 0x6b478
movsd %xmm1, -0x38(%rbp)
testq %rbx, %rbx
je 0x54fb5
movsd -0x70(%rbp), %xmm0
movsd %xmm0, -0x20(%rbp)
movsd -0x68(%rbp), %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x28(%rbp)
movsd -0x10(%rbp), %xmm0
callq 0x8150
movsd -0x28(%rbp), %xmm6
movapd %xmm6, %xmm1
movsd 0x149b9(%rip), %xmm3    # 0x69920
addsd %xmm3, %xmm1
movsd -0x30(%rbp), %xmm5
movapd %xmm5, %xmm2
divsd %xmm1, %xmm2
addsd %xmm3, %xmm2
movsd -0x20(%rbp), %xmm4
movapd %xmm4, %xmm1
divsd %xmm2, %xmm1
addsd %xmm3, %xmm1
addsd %xmm0, %xmm6
movapd %xmm5, %xmm2
divsd %xmm6, %xmm2
addsd %xmm0, %xmm2
movapd %xmm2, %xmm3
movapd %xmm4, %xmm2
divsd %xmm3, %xmm2
addsd %xmm0, %xmm2
divsd %xmm2, %xmm1
movsd %xmm1, (%rbx)
movsd -0x50(%rbp), %xmm0
movsd %xmm0, -0x20(%rbp)
movsd -0x48(%rbp), %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x40(%rbp), %xmm0
movsd %xmm0, -0x28(%rbp)
movsd -0x10(%rbp), %xmm0
callq 0x8150
movsd -0x28(%rbp), %xmm6
movapd %xmm6, %xmm1
movsd 0x14932(%rip), %xmm3    # 0x69920
addsd %xmm3, %xmm1
movsd -0x30(%rbp), %xmm5
movapd %xmm5, %xmm2
divsd %xmm1, %xmm2
addsd %xmm3, %xmm2
movsd -0x20(%rbp), %xmm4
movapd %xmm4, %xmm1
divsd %xmm2, %xmm1
addsd %xmm3, %xmm1
addsd %xmm0, %xmm6
movapd %xmm5, %xmm2
divsd %xmm6, %xmm2
addsd %xmm0, %xmm2
movapd %xmm2, %xmm3
movapd %xmm4, %xmm2
divsd %xmm3, %xmm2
addsd %xmm0, %xmm2
divsd %xmm2, %xmm1
movsd -0x38(%rbp), %xmm0
addsd %xmm1, %xmm0
jmp 0x55053
xorpd %xmm0, %xmm0
testq %rbx, %rbx
je 0x55053
movq $0x0, (%rbx)
addq $0x68, %rsp
popq %rbx
popq %rbp
retq