// File: /workspace/github_cpp_makefile_star2_O1/Ciaxur[P]yagb-emu/include/imgui/imgui_draw.cpp
// Function: ImFontGlyphRangesBuilder::BuildRanges(ImVector<unsigned short>*)
void ImFontGlyphRangesBuilder::BuildRanges(ImVector<ImWchar>* out_ranges)
{
    const int max_codepoint = IM_UNICODE_CODEPOINT_MAX;
    for (int n = 0; n <= max_codepoint; n++)
        if (GetBit(n))
        {
            out_ranges->push_back((ImWchar)n);
            while (n < max_codepoint && GetBit(n + 1))
                n++;
            out_ranges->push_back((ImWchar)n);
        }
    out_ranges->push_back(0);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rsi, %rbx
xorl %r13d, %r13d
movabsq $0x1fffffffc, %r12      # imm = 0x1FFFFFFFC
movq %rdi, -0x30(%rbp)
movl %r13d, %eax
sarl $0x5, %eax
js 0x83020
cmpl %eax, (%rdi)
jle 0x83020
movslq %r13d, %r15
movq 0x8(%rdi), %rax
movq %r15, %rcx
shrq $0x3, %rcx
andq %r12, %rcx
movl (%rax,%rcx), %eax
btl %r13d, %eax
jae 0x82f88
movl (%rbx), %r14d
movl 0x4(%rbx), %eax
cmpl %eax, %r14d
jne 0x82e9e
testl %eax, %eax
je 0x82e4b
movl %eax, %ecx
shrl $0x1f, %ecx
addl %eax, %ecx
sarl %ecx
addl %eax, %ecx
jmp 0x82e50
movl $0x8, %ecx
incl %r14d
cmpl %r14d, %ecx
cmovgl %ecx, %r14d
cmpl %r14d, %eax
jge 0x82e9e
movslq %r14d, %rdi
addq %rdi, %rdi
callq 0x424fb
movq 0x8(%rbx), %rsi
testq %rsi, %rsi
je 0x82e92
movslq (%rbx), %rdx
addq %rdx, %rdx
movq %rax, %rdi
movq %rax, -0x38(%rbp)
callq 0xc080
movq 0x8(%rbx), %rdi
callq 0x425d4
movq -0x38(%rbp), %rax
movq %rax, 0x8(%rbx)
movl %r14d, 0x4(%rbx)
movq -0x30(%rbp), %rdi
movq 0x8(%rbx), %rax
movslq (%rbx), %rcx
movw %r13w, (%rax,%rcx,2)
movl (%rbx), %r14d
leal 0x1(%r14), %eax
movl %eax, (%rbx)
movl (%rdi), %ecx
movq 0x8(%rdi), %rdx
cmpl $0x10000, %r13d         # imm = 0x10000
movl $0xffff, %esi           # imm = 0xFFFF
cmovgel %r13d, %esi
decl %r13d
cmpq $0xfffe, %r15           # imm = 0xFFFE
jg 0x82f10
leal 0x2(%r13), %r8d
sarl $0x5, %r8d
js 0x83020
cmpl %r8d, %ecx
jle 0x83020
incq %r15
leal 0x2(%r13), %r9d
movq %r15, %r8
shrq $0x3, %r8
andq %r12, %r8
movl (%rdx,%r8), %r8d
movzbl %r9b, %r9d
incl %r13d
btl %r9d, %r8d
jb 0x82ecc
jmp 0x82f13
movl %esi, %r13d
movl 0x4(%rbx), %ecx
cmpl %ecx, %eax
jne 0x82f7a
testl %ecx, %ecx
je 0x82f2b
movl %ecx, %eax
shrl $0x1f, %eax
addl %ecx, %eax
sarl %eax
addl %ecx, %eax
jmp 0x82f30
movl $0x8, %eax
addl $0x2, %r14d
cmpl %r14d, %eax
cmovgl %eax, %r14d
cmpl %r14d, %ecx
jge 0x82f7a
movslq %r14d, %rdi
addq %rdi, %rdi
callq 0x424fb
movq %rax, %r15
movq 0x8(%rbx), %rsi
testq %rsi, %rsi
je 0x82f6e
movslq (%rbx), %rdx
addq %rdx, %rdx
movq %r15, %rdi
callq 0xc080
movq 0x8(%rbx), %rdi
callq 0x425d4
movq %r15, 0x8(%rbx)
movl %r14d, 0x4(%rbx)
movq -0x30(%rbp), %rdi
movq 0x8(%rbx), %rax
movslq (%rbx), %rcx
movw %r13w, (%rax,%rcx,2)
incl (%rbx)
leal 0x1(%r13), %eax
cmpl $0xffff, %r13d          # imm = 0xFFFF
movl %eax, %r13d
jl 0x82dfd
movl (%rbx), %r15d
movl 0x4(%rbx), %eax
cmpl %eax, %r15d
jne 0x83002
incl %r15d
testl %eax, %eax
je 0x82fbb
movl %eax, %ecx
shrl $0x1f, %ecx
addl %eax, %ecx
sarl %ecx
addl %eax, %ecx
jmp 0x82fc0
movl $0x8, %ecx
cmpl %r15d, %ecx
cmovgl %ecx, %r15d
cmpl %r15d, %eax
jge 0x83002
movslq %r15d, %rdi
addq %rdi, %rdi
callq 0x424fb
movq %rax, %r14
movq 0x8(%rbx), %rsi
testq %rsi, %rsi
je 0x82ffa
movslq (%rbx), %rdx
addq %rdx, %rdx
movq %r14, %rdi
callq 0xc080
movq 0x8(%rbx), %rdi
callq 0x425d4
movq %r14, 0x8(%rbx)
movl %r15d, 0x4(%rbx)
movq 0x8(%rbx), %rax
movslq (%rbx), %rcx
movw $0x0, (%rax,%rcx,2)
incl (%rbx)
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x38651(%rip), %rdi     # 0xbb678
leaq 0x3865d(%rip), %rsi     # 0xbb68b
leaq 0x4d810(%rip), %rcx     # 0xd0845
movl $0x65d, %edx            # imm = 0x65D
callq 0xc140
nop