// File: /workspace/github_cpp_makefile_star2_O2/DoubleString[P]RtConverter/src/Rnxobs/Com.cpp
// Function: bamboo::getbdsiode(bamboo::GPSEPH&)
unsigned int getbdsiode(GPSEPH& bdseph) {
	unsigned char buffer[80];
	int size = 0;
	int numbits = 0;
	long long bitbuffer = 0;
	unsigned char *startbuffer = buffer;

	BDSADDBITSFLOAT(14, bdseph.idot, M_PI/(double)(1<<30)/(double)(1<<13));
	BDSADDBITSFLOAT(11, bdseph.a2,
			1.0 / (double )(1 << 30) / (double )(1 << 30) / (double )(1 << 6));
	BDSADDBITSFLOAT(22, bdseph.a1,
			1.0 / (double )(1 << 30) / (double )(1 << 20));
	BDSADDBITSFLOAT(24, bdseph.a0, 1.0 / (double )(1 << 30) / (double )(1 << 3));
	BDSADDBITSFLOAT(18, bdseph.crs, 1.0 / (double )(1 << 6));
	BDSADDBITSFLOAT(16, bdseph.dn, M_PI/(double)(1<<30)/(double)(1<<13));
	BDSADDBITSFLOAT(32, bdseph.m0, M_PI/(double)(1<<30)/(double)(1<<1));
	BDSADDBITSFLOAT(18, bdseph.cuc,
			1.0 / (double )(1 << 30) / (double )(1 << 1));
	BDSADDBITSFLOAT(32, bdseph.e, 1.0 / (double )(1 << 30) / (double )(1 << 3));
	BDSADDBITSFLOAT(18, bdseph.cus,
			1.0 / (double )(1 << 30) / (double )(1 << 1));
	BDSADDBITSFLOAT(32, bdseph.roota, 1.0 / (double )(1 << 19));
	BDSADDBITSFLOAT(18, bdseph.cic,
			1.0 / (double )(1 << 30) / (double )(1 << 1));
	BDSADDBITSFLOAT(32, bdseph.omega0, M_PI/(double)(1<<30)/(double)(1<<1));
	BDSADDBITSFLOAT(18, bdseph.cis,
			1.0 / (double )(1 << 30) / (double )(1 << 1));
	BDSADDBITSFLOAT(32, bdseph.i0, M_PI/(double)(1<<30)/(double)(1<<1));
	BDSADDBITSFLOAT(18, bdseph.crc, 1.0 / (double )(1 << 6));
	BDSADDBITSFLOAT(32, bdseph.omega, M_PI/(double)(1<<30)/(double)(1<<1));
	BDSADDBITSFLOAT(24, bdseph.omegadot, M_PI/(double)(1<<30)/(double)(1<<13));
	BDSADDBITS(5, 0); // the last byte is filled by 0-bits to obtain a length of an integer multiple of 8

	return CRC24(size, startbuffer);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x50, %rsp
movq %rdi, %rbx
movsd 0xa8(%rdi), %xmm0
divsd 0x43e74(%rip), %xmm0    # 0x60a60
callq 0x8280
cvttsd2si %xmm0, %r12
movl %r12d, %eax
shrl $0x6, %eax
leaq -0x6b(%rbp), %r14
movb %al, -0x5(%r14)
movsd 0x20(%rbx), %xmm0
mulsd 0x43e57(%rip), %xmm0    # 0x60a68
callq 0x8280
cvttsd2si %xmm0, %rax
shll $0xb, %r12d
andl $0x1fff800, %r12d       # imm = 0x1FFF800
movl %eax, %r15d
andl $0x7ff, %r15d           # imm = 0x7FF
orq %r12, %r15
movl %r15d, %ecx
shrl $0x9, %ecx
movb %cl, -0x4(%r14)
shrl %eax
movb %al, -0x3(%r14)
movsd 0x18(%rbx), %xmm0
mulsd 0x43e20(%rip), %xmm0    # 0x60a70
callq 0x8280
cvttsd2si %xmm0, %rax
shlq $0x16, %r15
movl %eax, %r12d
andl $0x3fffff, %r12d        # imm = 0x3FFFFF
orq %r15, %r12
movl %r12d, %ecx
shrl $0xf, %ecx
movb %cl, -0x2(%r14)
shrl $0x7, %eax
movb %al, -0x1(%r14)
movsd 0x10(%rbx), %xmm0
mulsd 0x43def(%rip), %xmm0    # 0x60a78
callq 0x8280
cvttsd2si %xmm0, %r15
shlq $0x18, %r12
andl $0xffffff, %r15d        # imm = 0xFFFFFF
orq %r12, %r15
pushq $0x17
popq %rcx
cmpq $-0x1, %rcx
je 0x1ccbc
movq %r15, %rax
sarq %cl, %rax
movb %al, (%r14)
addq $-0x8, %rcx
incq %r14
jmp 0x1cca4
movsd 0x30(%rbx), %xmm0
mulsd 0x43db7(%rip), %xmm0    # 0x60a80
callq 0x8280
cvttsd2si %xmm0, %r14
shlq $0x12, %r15
andl $0x3ffff, %r14d         # imm = 0x3FFFF
orq %r15, %r14
pushq $0x11
popq %rcx
leaq -0x68(%rbp), %rax
cmpq $-0x7, %rcx
je 0x1ccff
movq %r14, %rdx
sarq %cl, %rdx
movb %dl, (%rax)
addq $-0x8, %rcx
incq %rax
jmp 0x1cce8
movsd 0x38(%rbx), %xmm0
divsd 0x43d54(%rip), %xmm0    # 0x60a60
callq 0x8280
cvttsd2si %xmm0, %rax
shlq $0x10, %r14
movzwl %ax, %r12d
orq %r14, %r12
movl %r12d, %ecx
shrl $0x9, %ecx
leaq -0x63(%rbp), %r14
movb %cl, -0x2(%r14)
shrl %eax
movb %al, -0x1(%r14)
movsd 0x40(%rbx), %xmm0
divsd 0x43d46(%rip), %xmm0    # 0x60a88
callq 0x8280
cvttsd2si %xmm0, %rax
shlq $0x20, %r12
movl %eax, %r15d
orq %r12, %r15
pushq $0x19
popq %rcx
cmpq $-0x7, %rcx
je 0x1cd71
movq %r15, %rax
sarq %cl, %rax
movb %al, (%r14)
addq $-0x8, %rcx
incq %r14
jmp 0x1cd59
movsd 0x48(%rbx), %xmm0
mulsd 0x43d12(%rip), %xmm0    # 0x60a90
callq 0x8280
cvttsd2si %xmm0, %rax
shlq $0x12, %r15
movl %eax, %r12d
andl $0x3ffff, %r12d         # imm = 0x3FFFF
orq %r15, %r12
movl %r12d, %ecx
shrl $0xb, %ecx
leaq -0x5d(%rbp), %r14
movb %cl, -0x2(%r14)
shrl $0x3, %eax
movb %al, -0x1(%r14)
movsd 0x50(%rbx), %xmm0
mulsd 0x43cbd(%rip), %xmm0    # 0x60a78
callq 0x8280
cvttsd2si %xmm0, %rax
shlq $0x20, %r12
movl %eax, %r15d
orq %r12, %r15
pushq $0x1b
popq %rcx
cmpq $-0x5, %rcx
je 0x1cdea
movq %r15, %rax
sarq %cl, %rax
movb %al, (%r14)
addq $-0x8, %rcx
incq %r14
jmp 0x1cdd2
movsd 0x58(%rbx), %xmm0
mulsd 0x43c99(%rip), %xmm0    # 0x60a90
callq 0x8280
cvttsd2si %xmm0, %rax
shlq $0x12, %r15
movl %eax, %r12d
andl $0x3ffff, %r12d         # imm = 0x3FFFF
orq %r15, %r12
movl %r12d, %ecx
shrl $0xd, %ecx
leaq -0x57(%rbp), %r14
movb %cl, -0x2(%r14)
shrl $0x5, %eax
movb %al, -0x1(%r14)
movsd 0x60(%rbx), %xmm0
mulsd 0x43c64(%rip), %xmm0    # 0x60a98
callq 0x8280
cvttsd2si %xmm0, %rax
shlq $0x20, %r12
movl %eax, %r15d
orq %r12, %r15
pushq $0x1d
popq %rcx
cmpq $-0x3, %rcx
je 0x1ce63
movq %r15, %rax
sarq %cl, %rax
movb %al, (%r14)
addq $-0x8, %rcx
incq %r14
jmp 0x1ce4b
movsd 0x70(%rbx), %xmm0
mulsd 0x43c20(%rip), %xmm0    # 0x60a90
callq 0x8280
cvttsd2si %xmm0, %rax
shlq $0x12, %r15
movl %eax, %r12d
andl $0x3ffff, %r12d         # imm = 0x3FFFF
orq %r15, %r12
movl %r12d, %ecx
shrl $0xf, %ecx
leaq -0x51(%rbp), %r14
movb %cl, -0x2(%r14)
shrl $0x7, %eax
movb %al, -0x1(%r14)
movsd 0x78(%rbx), %xmm0
divsd 0x43bdb(%rip), %xmm0    # 0x60a88
callq 0x8280
cvttsd2si %xmm0, %rax
shlq $0x20, %r12
movl %eax, %r15d
orq %r12, %r15
pushq $0x1f
popq %rcx
cmpq $-0x1, %rcx
je 0x1cedc
movq %r15, %rax
sarq %cl, %rax
movb %al, (%r14)
addq $-0x8, %rcx
incq %r14
jmp 0x1cec4
movsd 0x80(%rbx), %xmm0
mulsd 0x43ba4(%rip), %xmm0    # 0x60a90
callq 0x8280
cvttsd2si %xmm0, %r14
shlq $0x12, %r15
andl $0x3ffff, %r14d         # imm = 0x3FFFF
orq %r15, %r14
pushq $0x11
popq %rcx
leaq -0x4d(%rbp), %rax
cmpq $-0x7, %rcx
je 0x1cf22
movq %r14, %rdx
sarq %cl, %rdx
movb %dl, (%rax)
addq $-0x8, %rcx
incq %rax
jmp 0x1cf0b
movsd 0x88(%rbx), %xmm0
divsd 0x43b56(%rip), %xmm0    # 0x60a88
callq 0x8280
cvttsd2si %xmm0, %rax
shlq $0x20, %r14
movl %eax, %r15d
orq %r14, %r15
pushq $0x19
popq %rcx
leaq -0x4a(%rbp), %rax
cmpq $-0x7, %rcx
je 0x1cf64
movq %r15, %rdx
sarq %cl, %rdx
movb %dl, (%rax)
addq $-0x8, %rcx
incq %rax
jmp 0x1cf4d
movsd 0x90(%rbx), %xmm0
mulsd 0x43b0c(%rip), %xmm0    # 0x60a80
callq 0x8280
cvttsd2si %xmm0, %rax
shlq $0x12, %r15
movl %eax, %r12d
andl $0x3ffff, %r12d         # imm = 0x3FFFF
orq %r15, %r12
movl %r12d, %ecx
shrl $0xb, %ecx
leaq -0x44(%rbp), %r14
movb %cl, -0x2(%r14)
shrl $0x3, %eax
movb %al, -0x1(%r14)
movsd 0x98(%rbx), %xmm0
divsd 0x43ad4(%rip), %xmm0    # 0x60a88
callq 0x8280
cvttsd2si %xmm0, %rax
shlq $0x20, %r12
movl %eax, %r15d
orq %r12, %r15
pushq $0x1b
popq %rcx
cmpq $-0x5, %rcx
je 0x1cfe3
movq %r15, %rax
sarq %cl, %rax
movb %al, (%r14)
addq $-0x8, %rcx
incq %r14
jmp 0x1cfcb
movsd 0xa0(%rbx), %xmm0
divsd 0x43a6d(%rip), %xmm0    # 0x60a60
callq 0x8280
cvttsd2si %xmm0, %rax
shlq $0x18, %r15
movl %eax, %edx
andl $0xffffff, %edx         # imm = 0xFFFFFF
orq %r15, %rdx
pushq $0x13
popq %rcx
leaq -0x40(%rbp), %rsi
cmpq $-0x5, %rcx
je 0x1d02b
movq %rdx, %rdi
sarq %cl, %rdi
movb %dil, (%rsi)
addq $-0x8, %rcx
incq %rsi
jmp 0x1d013
shlb $0x5, %al
leaq -0x70(%rbp), %rsi
movb %al, 0x33(%rsi)
pushq $0x34
popq %rdi
callq 0x1cb87
addq $0x50, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq