// File: /workspace/github_cpp_makefile_star2_O2/DoubleString[P]eph_converter/src/Com.cpp
// Function: getbdsiode(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 0x221c(%rip), %xmm0     # 0xd2c0
callq 0x3130
cvttsd2si %xmm0, %r12
movl %r12d, %eax
shrl $0x6, %eax
leaq -0x6b(%rbp), %r14
movb %al, -0x5(%r14)
movsd 0x20(%rbx), %xmm0
mulsd 0x21ff(%rip), %xmm0     # 0xd2c8
callq 0x3130
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 0x21c8(%rip), %xmm0     # 0xd2d0
callq 0x3130
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 0x2197(%rip), %xmm0     # 0xd2d8
callq 0x3130
cvttsd2si %xmm0, %r15
shlq $0x18, %r12
andl $0xffffff, %r15d        # imm = 0xFFFFFF
orq %r12, %r15
pushq $0x17
popq %rcx
cmpq $-0x1, %rcx
je 0xb174
movq %r15, %rax
sarq %cl, %rax
movb %al, (%r14)
addq $-0x8, %rcx
incq %r14
jmp 0xb15c
movsd 0x30(%rbx), %xmm0
mulsd 0x215f(%rip), %xmm0     # 0xd2e0
callq 0x3130
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 0xb1b7
movq %r14, %rdx
sarq %cl, %rdx
movb %dl, (%rax)
addq $-0x8, %rcx
incq %rax
jmp 0xb1a0
movsd 0x38(%rbx), %xmm0
divsd 0x20fc(%rip), %xmm0     # 0xd2c0
callq 0x3130
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 0x20ee(%rip), %xmm0     # 0xd2e8
callq 0x3130
cvttsd2si %xmm0, %rax
shlq $0x20, %r12
movl %eax, %r15d
orq %r12, %r15
pushq $0x19
popq %rcx
cmpq $-0x7, %rcx
je 0xb229
movq %r15, %rax
sarq %cl, %rax
movb %al, (%r14)
addq $-0x8, %rcx
incq %r14
jmp 0xb211
movsd 0x48(%rbx), %xmm0
mulsd 0x20ba(%rip), %xmm0     # 0xd2f0
callq 0x3130
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 0x2065(%rip), %xmm0     # 0xd2d8
callq 0x3130
cvttsd2si %xmm0, %rax
shlq $0x20, %r12
movl %eax, %r15d
orq %r12, %r15
pushq $0x1b
popq %rcx
cmpq $-0x5, %rcx
je 0xb2a2
movq %r15, %rax
sarq %cl, %rax
movb %al, (%r14)
addq $-0x8, %rcx
incq %r14
jmp 0xb28a
movsd 0x58(%rbx), %xmm0
mulsd 0x2041(%rip), %xmm0     # 0xd2f0
callq 0x3130
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 0x200c(%rip), %xmm0     # 0xd2f8
callq 0x3130
cvttsd2si %xmm0, %rax
shlq $0x20, %r12
movl %eax, %r15d
orq %r12, %r15
pushq $0x1d
popq %rcx
cmpq $-0x3, %rcx
je 0xb31b
movq %r15, %rax
sarq %cl, %rax
movb %al, (%r14)
addq $-0x8, %rcx
incq %r14
jmp 0xb303
movsd 0x70(%rbx), %xmm0
mulsd 0x1fc8(%rip), %xmm0     # 0xd2f0
callq 0x3130
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 0x1f83(%rip), %xmm0     # 0xd2e8
callq 0x3130
cvttsd2si %xmm0, %rax
shlq $0x20, %r12
movl %eax, %r15d
orq %r12, %r15
pushq $0x1f
popq %rcx
cmpq $-0x1, %rcx
je 0xb394
movq %r15, %rax
sarq %cl, %rax
movb %al, (%r14)
addq $-0x8, %rcx
incq %r14
jmp 0xb37c
movsd 0x80(%rbx), %xmm0
mulsd 0x1f4c(%rip), %xmm0     # 0xd2f0
callq 0x3130
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 0xb3da
movq %r14, %rdx
sarq %cl, %rdx
movb %dl, (%rax)
addq $-0x8, %rcx
incq %rax
jmp 0xb3c3
movsd 0x88(%rbx), %xmm0
divsd 0x1efe(%rip), %xmm0     # 0xd2e8
callq 0x3130
cvttsd2si %xmm0, %rax
shlq $0x20, %r14
movl %eax, %r15d
orq %r14, %r15
pushq $0x19
popq %rcx
leaq -0x4a(%rbp), %rax
cmpq $-0x7, %rcx
je 0xb41c
movq %r15, %rdx
sarq %cl, %rdx
movb %dl, (%rax)
addq $-0x8, %rcx
incq %rax
jmp 0xb405
movsd 0x90(%rbx), %xmm0
mulsd 0x1eb4(%rip), %xmm0     # 0xd2e0
callq 0x3130
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 0x1e7c(%rip), %xmm0     # 0xd2e8
callq 0x3130
cvttsd2si %xmm0, %rax
shlq $0x20, %r12
movl %eax, %r15d
orq %r12, %r15
pushq $0x1b
popq %rcx
cmpq $-0x5, %rcx
je 0xb49b
movq %r15, %rax
sarq %cl, %rax
movb %al, (%r14)
addq $-0x8, %rcx
incq %r14
jmp 0xb483
movsd 0xa0(%rbx), %xmm0
divsd 0x1e15(%rip), %xmm0     # 0xd2c0
callq 0x3130
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 0xb4e3
movq %rdx, %rdi
sarq %cl, %rdi
movb %dil, (%rsi)
addq $-0x8, %rcx
incq %rsi
jmp 0xb4cb
shlb $0x5, %al
leaq -0x70(%rbp), %rsi
movb %al, 0x33(%rsi)
pushq $0x34
popq %rdi
callq 0xb502
addq $0x50, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq