// File: /workspace/github_cpp_makefile_star2_O1/Ciaxur[P]yagb-emu/include/imgui/imgui_draw.cpp
// Function: ImFontAtlas::AddFontFromMemoryCompressedTTF(void const*, int, float, ImFontConfig const*, unsigned short const*)
ImFont* ImFontAtlas::AddFontFromMemoryCompressedTTF(const void* compressed_ttf_data, int compressed_ttf_size, float size_pixels, const ImFontConfig* font_cfg_template, const ImWchar* glyph_ranges)
{
    const unsigned int buf_decompressed_size = stb_decompress_length((const unsigned char*)compressed_ttf_data);
    unsigned char* buf_decompressed_data = (unsigned char*)IM_ALLOC(buf_decompressed_size);
    stb_decompress(buf_decompressed_data, (const unsigned char*)compressed_ttf_data, (unsigned int)compressed_ttf_size);

    ImFontConfig font_cfg = font_cfg_template ? *font_cfg_template : ImFontConfig();
    IM_ASSERT(font_cfg.FontData == NULL);
    font_cfg.FontDataOwnedByAtlas = true;
    return AddFontFromMemoryTTF(buf_decompressed_data, (int)buf_decompressed_size, size_pixels, &font_cfg, glyph_ranges);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xa8, %rsp
movq %r8, -0x40(%rbp)
movq %rcx, %r13
movss %xmm0, -0x2c(%rbp)
movq %rsi, %rbx
movq %rdi, -0x38(%rbp)
movl 0x8(%rsi), %r14d
bswapl %r14d
movq %r14, %rdi
callq 0x424fb
movq %rax, %r15
movl (%rbx), %eax
bswapl %eax
cmpl $0x57bc0000, %eax       # imm = 0x57BC0000
jne 0x7d54f
movl 0x4(%rbx), %eax
bswapl %eax
testl %eax, %eax
je 0x7d624
testq %r13, %r13
je 0x7d56a
leaq -0xc8(%rbp), %rdi
movl $0x88, %edx
movq %r13, %rsi
callq 0xc080
jmp 0x7d5e1
xorl %eax, %eax
movq %rax, -0xc8(%rbp)
movl $0x0, -0xc0(%rbp)
xorps %xmm0, %xmm0
movups %xmm0, -0xa4(%rbp)
movb $0x1, -0xbc(%rbp)
movaps 0x4b3bb(%rip), %xmm1    # 0xc8950
movups %xmm1, -0xb8(%rbp)
movb %al, -0xa8(%rbp)
movq %rax, -0x90(%rbp)
movabsq $0x7f7fffff00000000, %rcx # imm = 0x7F7FFFFF00000000
movq %rcx, -0x88(%rbp)
movb %al, -0x80(%rbp)
movabsq $0x3f80000000000000, %rcx # imm = 0x3F80000000000000
movq %rcx, -0x7c(%rbp)
movw $0xffff, -0x74(%rbp)    # imm = 0xFFFF
movups %xmm0, -0x72(%rbp)
movups %xmm0, -0x62(%rbp)
movq %rax, -0x52(%rbp)
movq %rax, -0x48(%rbp)
cmpq $0x0, -0xc8(%rbp)
jne 0x7d8ba
leaq -0xc8(%rbp), %rcx
movb $0x1, 0xc(%rcx)
movq -0x38(%rbp), %rdi
movq %r15, %rsi
movl %r14d, %edx
movss -0x2c(%rbp), %xmm0
movq -0x40(%rbp), %r8
callq 0x7d3ba
addq $0xa8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl 0x8(%rbx), %eax
bswapl %eax
movq %rbx, 0x87180(%rip)     # 0x1047b0
movq %r15, %r12
addq %rax, %r12
movq %r12, 0x8717b(%rip)     # 0x1047b8
movq %r15, 0x8717c(%rip)     # 0x1047c0
addq $0x10, %rbx
movq %r15, 0x87179(%rip)     # 0x1047c8
movzbl (%rbx), %esi
cmpl $0x20, %esi
jb 0x7d696
testb %sil, %sil
js 0x7d710
cmpb $0x40, %sil
jb 0x7d72c
movq 0x87157(%rip), %rdi     # 0x1047c8
shll $0x8, %esi
movzbl 0x1(%rbx), %eax
addl %esi, %eax
addl $0xffffc001, %eax       # imm = 0xFFFFC001
subq %rax, %rdi
movzbl 0x2(%rbx), %esi
incl %esi
callq 0x87b29
leaq 0x3(%rbx), %rax
jmp 0x7d775
cmpb $0x18, %sil
jb 0x7d6d1
movq 0x87125(%rip), %rdi     # 0x1047c8
shll $0x10, %esi
movzbl 0x1(%rbx), %eax
shll $0x8, %eax
movzbl 0x2(%rbx), %ecx
orl %esi, %ecx
addl %ecx, %eax
addl $0xffe80001, %eax       # imm = 0xFFE80001
subq %rax, %rdi
movzbl 0x3(%rbx), %esi
incl %esi
callq 0x87b29
leaq 0x4(%rbx), %rax
jmp 0x7d775
cmpb $0x10, %sil
jb 0x7d744
movq 0x870ea(%rip), %rdi     # 0x1047c8
shll $0x10, %esi
movzbl 0x1(%rbx), %eax
shll $0x8, %eax
movzbl 0x2(%rbx), %ecx
orl %esi, %ecx
addl %ecx, %eax
addl $0xfff00001, %eax       # imm = 0xFFF00001
subq %rax, %rdi
movzwl 0x3(%rbx), %eax
rolw $0x8, %ax
movzwl %ax, %esi
incl %esi
callq 0x87b29
leaq 0x5(%rbx), %rax
jmp 0x7d775
movzbl 0x1(%rbx), %edi
notq %rdi
addq 0x870aa(%rip), %rdi     # 0x1047c8
addl $-0x7f, %esi
callq 0x87b29
leaq 0x2(%rbx), %rax
jmp 0x7d775
leaq 0x1(%rbx), %rdi
addl $-0x1f, %esi
callq 0x87b9a
movzbl (%rbx), %eax
addq %rbx, %rax
addq $-0x1e, %rax
jmp 0x7d775
cmpb $0x8, %sil
jb 0x7d7b9
leaq 0x2(%rbx), %rdi
shll $0x8, %esi
movzbl 0x1(%rbx), %eax
addl %eax, %esi
addl $0xfffff801, %esi       # imm = 0xFFFFF801
callq 0x87b9a
movzwl (%rbx), %eax
rolw $0x8, %ax
movzwl %ax, %eax
addq %rbx, %rax
addq $-0x7fd, %rax           # imm = 0xF803
cmpq %rbx, %rax
je 0x7d788
cmpq %r12, 0x87047(%rip)     # 0x1047c8
jbe 0x7d7a8
jmp 0x7d87c
cmpb $0x5, (%rax)
jne 0x7d85d
cmpb $-0x6, 0x1(%rax)
jne 0x7d85d
cmpq %r12, 0x87026(%rip)     # 0x1047c8
jne 0x7d89b
cmpq %rbx, %rax
movq %rax, %rbx
jne 0x7d64f
jmp 0x7d54f
cmpl $0x4, %esi
je 0x7d820
cmpl $0x6, %esi
je 0x7d7f5
movq %rbx, %rax
cmpl $0x7, %esi
jne 0x7d775
leaq 0x3(%rbx), %rdi
movzwl 0x1(%rbx), %eax
rolw $0x8, %ax
movzwl %ax, %esi
incl %esi
callq 0x87b9a
movzwl 0x1(%rbx), %eax
rolw $0x8, %ax
movzwl %ax, %eax
addq %rbx, %rax
addq $0x4, %rax
jmp 0x7d775
movzbl 0x1(%rbx), %eax
shll $0x10, %eax
movzbl 0x2(%rbx), %ecx
shll $0x8, %ecx
movzbl 0x3(%rbx), %edi
orq %rax, %rdi
orq %rcx, %rdi
notq %rdi
addq 0x86fb1(%rip), %rdi     # 0x1047c8
movzbl 0x4(%rbx), %esi
jmp 0x7d703
movzbl 0x1(%rbx), %eax
shll $0x10, %eax
movzbl 0x2(%rbx), %ecx
shll $0x8, %ecx
movzbl 0x3(%rbx), %edi
orq %rax, %rdi
orq %rcx, %rdi
notq %rdi
addq 0x86f86(%rip), %rdi     # 0x1047c8
movzwl 0x4(%rbx), %eax
rolw $0x8, %ax
movzwl %ax, %esi
incl %esi
callq 0x87b29
leaq 0x6(%rbx), %rax
jmp 0x7d775
leaq 0x3c888(%rip), %rdi     # 0xba0ec
leaq 0x5196b(%rip), %rsi     # 0xcf1d6
leaq 0x53038(%rip), %rcx     # 0xd08aa
movl $0xec8, %edx            # imm = 0xEC8
callq 0xc140
leaq 0x53079(%rip), %rdi     # 0xd08fc
leaq 0x5194c(%rip), %rsi     # 0xcf1d6
leaq 0x53019(%rip), %rcx     # 0xd08aa
movl $0xecc, %edx            # imm = 0xECC
callq 0xc140
leaq 0x52fed(%rip), %rdi     # 0xd088f
leaq 0x5192d(%rip), %rsi     # 0xcf1d6
leaq 0x52ffa(%rip), %rcx     # 0xd08aa
movl $0xec2, %edx            # imm = 0xEC2
callq 0xc140
leaq 0x51e7f(%rip), %rdi     # 0xcf740
leaq 0x5190e(%rip), %rsi     # 0xcf1d6
leaq 0x51e8d(%rip), %rcx     # 0xcf75c
movl $0x7d7, %edx            # imm = 0x7D7
callq 0xc140
nop