// File: /workspace/github_cpp_makefile_star2_O1/donfreiday[P]gb/./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((unsigned char*)compressed_ttf_data);
    unsigned char* buf_decompressed_data = (unsigned char *)ImGui::MemAlloc(buf_decompressed_size);
    stb_decompress(buf_decompressed_data, (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_template, glyph_ranges);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %r8, -0x40(%rbp)
movq %rcx, %r14
movss %xmm0, -0x2c(%rbp)
movl %edx, %r12d
movq %rsi, %rbx
movq %rdi, -0x38(%rbp)
movl 0x8(%rsi), %r15d
bswapl %r15d
movq %r15, %rdi
callq 0x85d9
movq %rax, %r13
movl (%rbx), %eax
bswapl %eax
cmpl $0x57bc0000, %eax       # imm = 0x57BC0000
jne 0x34b05
movl 0x4(%rbx), %eax
bswapl %eax
testl %eax, %eax
je 0x34b3d
testq %r14, %r14
je 0x34b14
cmpq $0x0, (%r14)
jne 0x34de0
movq -0x38(%rbp), %rdi
movq %r13, %rsi
movl %r15d, %edx
movss -0x2c(%rbp), %xmm0
movq %r14, %rcx
movq -0x40(%rbp), %r8
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x34a0e
movl 0x8(%rbx), %eax
bswapl %eax
movq %rbx, 0x2b247(%rip)     # 0x5fd90
movl %r12d, %ecx
addq %rbx, %rcx
movq %rcx, 0x2b242(%rip)     # 0x5fd98
movq %r13, %r12
addq %rax, %r12
movq %r12, 0x2b23d(%rip)     # 0x5fda0
movq %r13, 0x2b23e(%rip)     # 0x5fda8
addq $0x10, %rbx
movq %r13, 0x2b23b(%rip)     # 0x5fdb0
movzbl (%rbx), %esi
cmpl $0x20, %esi
jb 0x34bbc
testb %sil, %sil
js 0x34c36
cmpb $0x40, %sil
jb 0x34c52
movq 0x2b219(%rip), %rdi     # 0x5fdb0
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 0x37466
leaq 0x3(%rbx), %rax
jmp 0x34c9b
cmpb $0x18, %sil
jb 0x34bf7
movq 0x2b1e7(%rip), %rdi     # 0x5fdb0
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 0x37466
leaq 0x4(%rbx), %rax
jmp 0x34c9b
cmpb $0x10, %sil
jb 0x34c6a
movq 0x2b1ac(%rip), %rdi     # 0x5fdb0
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 0x37466
leaq 0x5(%rbx), %rax
jmp 0x34c9b
movzbl 0x1(%rbx), %edi
notq %rdi
addq 0x2b16c(%rip), %rdi     # 0x5fdb0
addl $-0x7f, %esi
callq 0x37466
leaq 0x2(%rbx), %rax
jmp 0x34c9b
leaq 0x1(%rbx), %rdi
addl $-0x1f, %esi
callq 0x374d7
movzbl (%rbx), %eax
addq %rbx, %rax
addq $-0x1e, %rax
jmp 0x34c9b
cmpb $0x8, %sil
jb 0x34cdf
leaq 0x2(%rbx), %rdi
shll $0x8, %esi
movzbl 0x1(%rbx), %eax
addl %eax, %esi
addl $0xfffff801, %esi       # imm = 0xFFFFF801
callq 0x374d7
movzwl (%rbx), %eax
rolw $0x8, %ax
movzwl %ax, %eax
addq %rbx, %rax
addq $-0x7fd, %rax           # imm = 0xF803
cmpq %rbx, %rax
je 0x34cae
cmpq %r12, 0x2b109(%rip)     # 0x5fdb0
jbe 0x34cce
jmp 0x34da2
cmpb $0x5, (%rax)
jne 0x34d83
cmpb $-0x6, 0x1(%rax)
jne 0x34d83
cmpq %r12, 0x2b0e8(%rip)     # 0x5fdb0
jne 0x34dc1
cmpq %rbx, %rax
movq %rax, %rbx
jne 0x34b75
jmp 0x34b05
cmpl $0x4, %esi
je 0x34d46
cmpl $0x6, %esi
je 0x34d1b
movq %rbx, %rax
cmpl $0x7, %esi
jne 0x34c9b
leaq 0x3(%rbx), %rdi
movzwl 0x1(%rbx), %eax
rolw $0x8, %ax
movzwl %ax, %esi
incl %esi
callq 0x374d7
movzwl 0x1(%rbx), %eax
rolw $0x8, %ax
movzwl %ax, %eax
addq %rbx, %rax
addq $0x4, %rax
jmp 0x34c9b
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 0x2b073(%rip), %rdi     # 0x5fdb0
movzbl 0x4(%rbx), %esi
jmp 0x34c29
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 0x2b048(%rip), %rdi     # 0x5fdb0
movzwl 0x4(%rbx), %eax
rolw $0x8, %ax
movzwl %ax, %esi
incl %esi
callq 0x37466
leaq 0x6(%rbx), %rax
jmp 0x34c9b
leaq 0x9e88(%rip), %rdi      # 0x3ec12
leaq 0x11a85(%rip), %rsi     # 0x46816
leaq 0x124b0(%rip), %rcx     # 0x47248
movl $0x83e, %edx            # imm = 0x83E
callq 0x7140
leaq 0x124eb(%rip), %rdi     # 0x47294
leaq 0x11a66(%rip), %rsi     # 0x46816
leaq 0x12491(%rip), %rcx     # 0x47248
movl $0x842, %edx            # imm = 0x842
callq 0x7140
leaq 0x12465(%rip), %rdi     # 0x4722d
leaq 0x11a47(%rip), %rsi     # 0x46816
leaq 0x12472(%rip), %rcx     # 0x47248
movl $0x838, %edx            # imm = 0x838
callq 0x7140
leaq 0x11ccd(%rip), %rdi     # 0x46ab4
leaq 0x11a28(%rip), %rsi     # 0x46816
leaq 0x11d40(%rip), %rcx     # 0x46b35
movl $0x474, %edx            # imm = 0x474
callq 0x7140
nop