// File: /workspace/github_cpp_makefile_star2_O1/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 %r13
pushq %r12
pushq %rbx
subq $0x58, %rsp
movq %rdi, %r14
movsd 0xa8(%rdi), %xmm0
divsd 0x2ba4(%rip), %xmm0     # 0xe2f0
callq 0x3140
cvttsd2si %xmm0, %r15
movl %r15d, %eax
shrl $0x6, %eax
leaq -0x7f(%rbp), %rbx
movb %al, -0x1(%rbx)
movq %r14, -0x30(%rbp)
movsd 0x20(%r14), %xmm0
mulsd 0x2b83(%rip), %xmm0     # 0xe2f8
callq 0x3140
cvttsd2si %xmm0, %r14
shll $0xb, %r15d
andl $0x1fff800, %r15d       # imm = 0x1FFF800
andl $0x7ff, %r14d           # imm = 0x7FF
orq %r15, %r14
movl $0x9, %ecx
movq %r14, %rax
shrq %cl, %rax
movb %al, (%rbx)
addq $-0x8, %rcx
incq %rbx
cmpq $-0x7, %rcx
jne 0xb799
movq -0x30(%rbp), %rax
movsd 0x18(%rax), %xmm0
mulsd 0x2b41(%rip), %xmm0     # 0xe300
callq 0x3140
cvttsd2si %xmm0, %rbx
shlq $0x16, %r14
andl $0x3fffff, %ebx         # imm = 0x3FFFFF
orq %r14, %rbx
movl $0x2f, %r14d
movl $0x1f, %r12d
leaq -0x7d(%rbp), %rax
leal -0x10(%r12), %ecx
movq %rbx, %rdx
shrq %cl, %rdx
movb %dl, (%rax)
addl $-0x8, %r14d
addq $-0x8, %r12
incq %rax
cmpq $0xf, %r12
jne 0xb7e6
movq -0x30(%rbp), %rax
movsd 0x10(%rax), %xmm0
mulsd 0x2af3(%rip), %xmm0     # 0xe308
callq 0x3140
cvttsd2si %xmm0, %r13
shlq $0x18, %rbx
andl $0xffffff, %r13d        # imm = 0xFFFFFF
orq %rbx, %r13
movl $0x5, %r15d
cmpq $-0x8, %r12
jl 0xb864
addq $0x18, %r12
movl $0x5, %r15d
leal -0x10(%r12), %ecx
movq %r13, %rax
sarq %cl, %rax
movb %al, -0x80(%rbp,%r15)
incq %r15
addq $-0x8, %r12
addl $-0x8, %r14d
cmpq $0xf, %r12
jg 0xb843
movq -0x30(%rbp), %rax
movsd 0x30(%rax), %xmm0
mulsd 0x2a9b(%rip), %xmm0     # 0xe310
callq 0x3140
cvttsd2si %xmm0, %r12
shlq $0x12, %r13
andl $0x3ffff, %r12d         # imm = 0x3FFFF
orq %r13, %r12
cmpl $-0xa, %r14d
jl 0xb8c1
movl %r15d, %r15d
movl %r14d, %r14d
addq $0xa, %r14
movq %r12, %rax
movl %r14d, %ecx
sarq %cl, %rax
movb %al, -0x80(%rbp,%r15)
incq %r15
addq $-0x8, %r14
leal 0x10(%r14), %eax
cmpl $0xf, %eax
jg 0xb89d
addl $0x8, %r14d
jmp 0xb8c5
addl $0x12, %r14d
movq -0x30(%rbp), %rax
movsd 0x38(%rax), %xmm0
divsd 0x2a1a(%rip), %xmm0     # 0xe2f0
callq 0x3140
cvttsd2si %xmm0, %rax
shlq $0x10, %r12
movzwl %ax, %ebx
orq %r12, %rbx
leal 0x10(%r14), %r13d
cmpl $-0x8, %r14d
jl 0xb925
movl %r15d, %r15d
movl %r13d, %ecx
addl $0x18, %r14d
addq $-0x8, %rcx
movq %rbx, %rax
sarq %cl, %rax
movb %al, -0x80(%rbp,%r15)
incq %r15
addl $-0x8, %r14d
addq $-0x8, %rcx
cmpl $0xf, %r14d
jg 0xb902
addl $-0x8, %r14d
movl %r14d, %r13d
movq -0x30(%rbp), %rax
movsd 0x40(%rax), %xmm0
divsd 0x29e2(%rip), %xmm0     # 0xe318
callq 0x3140
cvttsd2si %xmm0, %rax
shlq $0x20, %rbx
movl %eax, %eax
orq %rbx, %rax
movq %rax, %rbx
leal 0x20(%r13), %r12d
cmpl $-0x18, %r13d
jl 0xb987
movl %r15d, %r15d
movl %r12d, %ecx
addl $0x28, %r13d
addq $-0x8, %rcx
movq %rbx, %rax
sarq %cl, %rax
movb %al, -0x80(%rbp,%r15)
incq %r15
addl $-0x8, %r13d
addq $-0x8, %rcx
cmpl $0xf, %r13d
jg 0xb964
addl $-0x8, %r13d
movl %r13d, %r12d
movq -0x30(%rbp), %rax
movsd 0x48(%rax), %xmm0
mulsd 0x2988(%rip), %xmm0     # 0xe320
callq 0x3140
cvttsd2si %xmm0, %r14
shlq $0x12, %rbx
andl $0x3ffff, %r14d         # imm = 0x3FFFF
orq %rbx, %r14
leal 0x12(%r12), %r13d
cmpl $-0xa, %r12d
jl 0xb9ec
movl %r15d, %r15d
movl %r13d, %ecx
addl $0x1a, %r12d
addq $-0x8, %rcx
movq %r14, %rax
sarq %cl, %rax
movb %al, -0x80(%rbp,%r15)
incq %r15
addl $-0x8, %r12d
addq $-0x8, %rcx
cmpl $0xf, %r12d
jg 0xb9c9
addl $-0x8, %r12d
movl %r12d, %r13d
movq -0x30(%rbp), %rax
movsd 0x50(%rax), %xmm0
mulsd 0x290b(%rip), %xmm0     # 0xe308
callq 0x3140
cvttsd2si %xmm0, %rax
shlq $0x20, %r14
movl %eax, %ebx
orq %r14, %rbx
leal 0x20(%r13), %r12d
cmpl $-0x18, %r13d
jl 0xba4b
movl %r15d, %r15d
movl %r12d, %ecx
addl $0x28, %r13d
addq $-0x8, %rcx
movq %rbx, %rax
sarq %cl, %rax
movb %al, -0x80(%rbp,%r15)
incq %r15
addl $-0x8, %r13d
addq $-0x8, %rcx
cmpl $0xf, %r13d
jg 0xba28
addl $-0x8, %r13d
movl %r13d, %r12d
movq -0x30(%rbp), %rax
movsd 0x58(%rax), %xmm0
mulsd 0x28c4(%rip), %xmm0     # 0xe320
callq 0x3140
cvttsd2si %xmm0, %r14
shlq $0x12, %rbx
andl $0x3ffff, %r14d         # imm = 0x3FFFF
orq %rbx, %r14
leal 0x12(%r12), %r13d
cmpl $-0xa, %r12d
jl 0xbab0
movl %r15d, %r15d
movl %r13d, %ecx
addl $0x1a, %r12d
addq $-0x8, %rcx
movq %r14, %rax
sarq %cl, %rax
movb %al, -0x80(%rbp,%r15)
incq %r15
addl $-0x8, %r12d
addq $-0x8, %rcx
cmpl $0xf, %r12d
jg 0xba8d
addl $-0x8, %r12d
movl %r12d, %r13d
movq -0x30(%rbp), %rax
movsd 0x60(%rax), %xmm0
mulsd 0x2867(%rip), %xmm0     # 0xe328
callq 0x3140
cvttsd2si %xmm0, %rax
shlq $0x20, %r14
movl %eax, %ebx
orq %r14, %rbx
leal 0x20(%r13), %r12d
cmpl $-0x18, %r13d
jl 0xbb0f
movl %r15d, %r15d
movl %r12d, %ecx
addl $0x28, %r13d
addq $-0x8, %rcx
movq %rbx, %rax
sarq %cl, %rax
movb %al, -0x80(%rbp,%r15)
incq %r15
addl $-0x8, %r13d
addq $-0x8, %rcx
cmpl $0xf, %r13d
jg 0xbaec
addl $-0x8, %r13d
movl %r13d, %r12d
movq -0x30(%rbp), %rax
movsd 0x70(%rax), %xmm0
mulsd 0x2800(%rip), %xmm0     # 0xe320
callq 0x3140
cvttsd2si %xmm0, %r14
shlq $0x12, %rbx
andl $0x3ffff, %r14d         # imm = 0x3FFFF
orq %rbx, %r14
leal 0x12(%r12), %r13d
cmpl $-0xa, %r12d
jl 0xbb74
movl %r15d, %r15d
movl %r13d, %ecx
addl $0x1a, %r12d
addq $-0x8, %rcx
movq %r14, %rax
sarq %cl, %rax
movb %al, -0x80(%rbp,%r15)
incq %r15
addl $-0x8, %r12d
addq $-0x8, %rcx
cmpl $0xf, %r12d
jg 0xbb51
addl $-0x8, %r12d
movl %r12d, %r13d
movq -0x30(%rbp), %rax
movsd 0x78(%rax), %xmm0
divsd 0x2793(%rip), %xmm0     # 0xe318
callq 0x3140
cvttsd2si %xmm0, %rax
shlq $0x20, %r14
movl %eax, %ebx
orq %r14, %rbx
leal 0x20(%r13), %r12d
cmpl $-0x18, %r13d
jl 0xbbd3
movl %r15d, %r15d
movl %r12d, %ecx
addl $0x28, %r13d
addq $-0x8, %rcx
movq %rbx, %rax
sarq %cl, %rax
movb %al, -0x80(%rbp,%r15)
incq %r15
addl $-0x8, %r13d
addq $-0x8, %rcx
cmpl $0xf, %r13d
jg 0xbbb0
addl $-0x8, %r13d
movl %r13d, %r12d
movq -0x30(%rbp), %rax
movsd 0x80(%rax), %xmm0
mulsd 0x2739(%rip), %xmm0     # 0xe320
callq 0x3140
cvttsd2si %xmm0, %r14
shlq $0x12, %rbx
andl $0x3ffff, %r14d         # imm = 0x3FFFF
orq %rbx, %r14
leal 0x12(%r12), %r13d
cmpl $-0xa, %r12d
jl 0xbc3b
movl %r15d, %r15d
movl %r13d, %ecx
addl $0x1a, %r12d
addq $-0x8, %rcx
movq %r14, %rax
sarq %cl, %rax
movb %al, -0x80(%rbp,%r15)
incq %r15
addl $-0x8, %r12d
addq $-0x8, %rcx
cmpl $0xf, %r12d
jg 0xbc18
addl $-0x8, %r12d
movl %r12d, %r13d
movq -0x30(%rbp), %rax
movsd 0x88(%rax), %xmm0
divsd 0x26c9(%rip), %xmm0     # 0xe318
callq 0x3140
cvttsd2si %xmm0, %rax
shlq $0x20, %r14
movl %eax, %ebx
orq %r14, %rbx
leal 0x20(%r13), %r12d
cmpl $-0x18, %r13d
jl 0xbc9d
movl %r15d, %r15d
movl %r12d, %ecx
addl $0x28, %r13d
addq $-0x8, %rcx
movq %rbx, %rax
sarq %cl, %rax
movb %al, -0x80(%rbp,%r15)
incq %r15
addl $-0x8, %r13d
addq $-0x8, %rcx
cmpl $0xf, %r13d
jg 0xbc7a
addl $-0x8, %r13d
movl %r13d, %r12d
movq -0x30(%rbp), %rax
movsd 0x90(%rax), %xmm0
mulsd 0x265f(%rip), %xmm0     # 0xe310
callq 0x3140
cvttsd2si %xmm0, %r14
shlq $0x12, %rbx
andl $0x3ffff, %r14d         # imm = 0x3FFFF
orq %rbx, %r14
leal 0x12(%r12), %r13d
cmpl $-0xa, %r12d
jl 0xbd05
movl %r15d, %r15d
movl %r13d, %ecx
addl $0x1a, %r12d
addq $-0x8, %rcx
movq %r14, %rax
sarq %cl, %rax
movb %al, -0x80(%rbp,%r15)
incq %r15
addl $-0x8, %r12d
addq $-0x8, %rcx
cmpl $0xf, %r12d
jg 0xbce2
addl $-0x8, %r12d
movl %r12d, %r13d
movq -0x30(%rbp), %rax
movsd 0x98(%rax), %xmm0
divsd 0x25ff(%rip), %xmm0     # 0xe318
callq 0x3140
cvttsd2si %xmm0, %rax
shlq $0x20, %r14
movl %eax, %ebx
orq %r14, %rbx
leal 0x20(%r13), %r14d
cmpl $-0x18, %r13d
jl 0xbd67
movl %r15d, %r15d
movl %r14d, %ecx
addl $0x28, %r13d
addq $-0x8, %rcx
movq %rbx, %rax
sarq %cl, %rax
movb %al, -0x80(%rbp,%r15)
incq %r15
addl $-0x8, %r13d
addq $-0x8, %rcx
cmpl $0xf, %r13d
jg 0xbd44
addl $-0x8, %r13d
movl %r13d, %r14d
movq -0x30(%rbp), %rax
movsd 0xa0(%rax), %xmm0
divsd 0x2575(%rip), %xmm0     # 0xe2f0
callq 0x3140
cvttsd2si %xmm0, %rax
shlq $0x18, %rbx
andl $0xffffff, %eax         # imm = 0xFFFFFF
orq %rbx, %rax
leal 0x18(%r14), %ecx
cmpl $-0x10, %r14d
jl 0xbdcb
movl %r15d, %r15d
movl %ecx, %ecx
addl $0x20, %r14d
addq $-0x8, %rcx
movq %rax, %rdx
sarq %cl, %rdx
movb %dl, -0x80(%rbp,%r15)
incq %r15
addl $-0x8, %r14d
addq $-0x8, %rcx
cmpl $0xf, %r14d
jg 0xbda8
addl $-0x8, %r14d
movl %r14d, %ecx
cmpl $0x3, %ecx
jl 0xbdf8
shlq $0x5, %rax
movl %r15d, %r15d
movl %ecx, %edx
addq $0xd, %rdx
leal -0x10(%rdx), %ecx
movq %rax, %rsi
sarq %cl, %rsi
movb %sil, -0x80(%rbp,%r15)
incq %r15
addq $-0x8, %rdx
cmpq $0xf, %rdx
jg 0xbddd
testl %r15d, %r15d
je 0xbe3b
movslq %r15d, %rcx
leaq -0x80(%rbp), %rdx
xorl %eax, %eax
movzbl (%rdx), %esi
shll $0x10, %esi
xorq %rsi, %rax
movl $0x8, %esi
leaq (%rax,%rax), %rdi
movq %rdi, %r8
xorq $0x1864cfb, %r8         # imm = 0x1864CFB
btl $0x17, %eax
movq %r8, %rax
cmovaeq %rdi, %rax
decl %esi
jne 0xbe14
incq %rdx
decq %rcx
jne 0xbe06
jmp 0xbe3d
xorl %eax, %eax
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq