// File: /workspace/github_cpp_makefile_star2_O1/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 0x1f51f(%rip), %xmm0    # 0x74ce8
ucomisd %xmm2, %xmm0
ja 0x55ae7
ucomisd 0x1f61d(%rip), %xmm2    # 0x74df8
ja 0x55ae7
movsd 0x8(%rdx), %xmm3
xorpd %xmm0, %xmm0
ucomisd %xmm3, %xmm0
jae 0x55aeb
movsd %xmm2, -0x38(%rbp)
movsd (%rsi), %xmm0
mulsd 0x19633(%rip), %xmm0    # 0x6ee38
movapd %xmm0, -0x20(%rbp)
movapd %xmm1, %xmm0
movsd %xmm3, -0x10(%rbp)
callq 0x507a0
addsd 0x1f5e0(%rip), %xmm0    # 0x74e00
divsd 0x1f5e0(%rip), %xmm0    # 0x74e08
xorpd %xmm1, %xmm1
movapd -0x20(%rbp), %xmm2
cmpltsd %xmm1, %xmm2
movsd 0x1643a(%rip), %xmm1    # 0x6bc78
andpd %xmm2, %xmm1
addsd %xmm1, %xmm0
mulsd 0x150ca(%rip), %xmm0    # 0x6a918
callq 0x8c00
movapd -0x20(%rbp), %xmm6
movsd -0x10(%rbp), %xmm5
andpd 0x140cb(%rip), %xmm6    # 0x69930
divsd 0x1f533(%rip), %xmm6    # 0x74da0
cvttsd2si %xmm6, %eax
movsd 0x140a7(%rip), %xmm1    # 0x69920
subsd %xmm6, %xmm1
cvttpd2dq %xmm6, %xmm2
cvtdq2pd %xmm2, %xmm2
addsd %xmm2, %xmm1
subsd %xmm2, %xmm6
leaq 0x1f20c(%rip), %rcx     # 0x74aa0
xorl %edx, %edx
testl %eax, %eax
jle 0x558a9
cmpl $0x5, %eax
jl 0x558b3
movsd -0xd0(%rcx), %xmm2
jmp 0x558d1
movsd -0xf0(%rcx), %xmm2
jmp 0x558d1
movsd -0xf0(%rcx,%rax,8), %xmm3
mulsd %xmm6, %xmm3
movsd -0xf8(%rcx,%rax,8), %xmm2
mulsd %xmm1, %xmm2
addsd %xmm3, %xmm2
testl %eax, %eax
jle 0x558e1
cmpl $0x5, %eax
jl 0x558e8
movsd -0x58(%rcx), %xmm3
jmp 0x55900
movsd -0x78(%rcx), %xmm3
jmp 0x55900
movsd -0x78(%rcx,%rax,8), %xmm4
mulsd %xmm6, %xmm4
movsd -0x80(%rcx,%rax,8), %xmm3
mulsd %xmm1, %xmm3
addsd %xmm4, %xmm3
mulsd %xmm0, %xmm3
subsd %xmm3, %xmm2
movsd %xmm2, -0x70(%rbp,%rdx,8)
testl %eax, %eax
jle 0x5591e
cmpl $0x5, %eax
jl 0x55924
movsd 0x20(%rcx), %xmm2
jmp 0x5593b
movsd (%rcx), %xmm2
jmp 0x5593b
movsd (%rcx,%rax,8), %xmm3
mulsd %xmm6, %xmm3
movsd -0x8(%rcx,%rax,8), %xmm2
mulsd %xmm1, %xmm2
addsd %xmm3, %xmm2
movsd %xmm2, -0x50(%rbp,%rdx,8)
incq %rdx
addq $0x28, %rcx
cmpq $0x3, %rdx
jne 0x55896
movapd %xmm5, %xmm0
callq 0x8150
movsd 0x13fbd(%rip), %xmm1    # 0x69920
divsd %xmm0, %xmm1
movsd %xmm1, -0x20(%rbp)
movsd -0x10(%rbp), %xmm0
callq 0x8150
movsd 0x1f492(%rip), %xmm1    # 0x74e10
addsd %xmm0, %xmm1
movsd 0x1f48e(%rip), %xmm2    # 0x74e18
divsd %xmm1, %xmm2
addsd %xmm0, %xmm2
movsd 0x1f486(%rip), %xmm1    # 0x74e20
divsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd 0x1f47e(%rip), %xmm0    # 0x74e28
divsd %xmm1, %xmm0
addsd -0x20(%rbp), %xmm0
movsd -0x38(%rbp), %xmm1
mulsd %xmm0, %xmm1
divsd 0x15ab4(%rip), %xmm1    # 0x6b478
movsd %xmm1, -0x38(%rbp)
testq %rbx, %rbx
je 0x55a59
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 0x13f15(%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 -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 0x13e8e(%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 0x55af7
xorpd %xmm0, %xmm0
testq %rbx, %rbx
je 0x55af7
movq $0x0, (%rbx)
addq $0x68, %rsp
popq %rbx
popq %rbp
retq