// File: /workspace/github_c_makefile_star2_O0/stetre[P]moonnuklear/src/./nuklear/nuklear.h
// Function: nk_font_atlas_add
NK_API struct nk_font*
nk_font_atlas_add(struct nk_font_atlas *atlas, const struct nk_font_config *config)
{
    struct nk_font *font = 0;
    struct nk_font_config *cfg;

    NK_ASSERT(atlas);
    NK_ASSERT(atlas->permanent.alloc);
    NK_ASSERT(atlas->permanent.free);
    NK_ASSERT(atlas->temporary.alloc);
    NK_ASSERT(atlas->temporary.free);

    NK_ASSERT(config);
    NK_ASSERT(config->ttf_blob);
    NK_ASSERT(config->ttf_size);
    NK_ASSERT(config->size > 0.0f);

    if (!atlas || !config || !config->ttf_blob || !config->ttf_size || config->size <= 0.0f||
        !atlas->permanent.alloc || !atlas->permanent.free ||
        !atlas->temporary.alloc || !atlas->temporary.free)
        return 0;

    /* allocate font config  */
    cfg = (struct nk_font_config*)
        atlas->permanent.alloc(atlas->permanent.userdata,0, sizeof(struct nk_font_config));
    NK_MEMCPY(cfg, config, sizeof(*config));
    cfg->n = cfg;
    cfg->p = cfg;

    if (!config->merge_mode) {
        /* insert font config into list */
        if (!atlas->config) {
            atlas->config = cfg;
            cfg->next = 0;
        } else {
            struct nk_font_config *i = atlas->config;
            while (i->next) i = i->next;
            i->next = cfg;
            cfg->next = 0;
        }
        /* allocate new font */
        font = (struct nk_font*)
            atlas->permanent.alloc(atlas->permanent.userdata,0, sizeof(struct nk_font));
        NK_ASSERT(font);
        nk_zero(font, sizeof(*font));
        if (!font) return 0;
        font->config = cfg;

        /* insert font into list */
        if (!atlas->fonts) {
            atlas->fonts = font;
            font->next = 0;
        } else {
            struct nk_font *i = atlas->fonts;
            while (i->next) i = i->next;
            i->next = font;
            font->next = 0;
        }
        cfg->font = &font->info;
    } else {
        /* extend previously added font */
        struct nk_font *f = 0;
        struct nk_font_config *c = 0;
        NK_ASSERT(atlas->font_num);
        f = atlas->fonts;
        c = f->config;
        cfg->font = &f->info;

        cfg->n = c;
        cfg->p = c->p;
        c->p->n = cfg;
        c->p = cfg;
    }
    /* create own copy of .TTF font blob */
    if (!config->ttf_data_owned_by_atlas) {
        cfg->ttf_blob = atlas->permanent.alloc(atlas->permanent.userdata,0, cfg->ttf_size);
        NK_ASSERT(cfg->ttf_blob);
        if (!cfg->ttf_blob) {
            atlas->font_num++;
            return 0;
        }
        NK_MEMCPY(cfg->ttf_blob, config->ttf_blob, cfg->ttf_size);
        cfg->ttf_data_owned_by_atlas = 1;
    }
    atlas->font_num++;
    return font;
}

// Assembly:
subq $0x48, %rsp
movq %rdi, 0x38(%rsp)
movq %rsi, 0x30(%rsp)
movq $0x0, 0x28(%rsp)
cmpq $0x0, 0x38(%rsp)
jne 0x475a2
movq 0x7da7a(%rip), %rax     # 0xc4ff0
movq (%rax), %rdi
leaq 0x69e20(%rip), %rsi     # 0xb13a0
leaq 0x69e37(%rip), %rdx     # 0xb13be
movl $0x4443, %ecx           # imm = 0x4443
movb $0x0, %al
callq 0x13ec0
movq 0x7da56(%rip), %rax     # 0xc4ff0
movq (%rax), %rdi
callq 0x149a0
jmp 0x475a4
jmp 0x475a6
movq 0x38(%rsp), %rax
cmpq $0x0, 0x18(%rax)
jne 0x475e5
movq 0x7da37(%rip), %rax     # 0xc4ff0
movq (%rax), %rdi
leaq 0x69ddd(%rip), %rsi     # 0xb13a0
leaq 0x69df4(%rip), %rdx     # 0xb13be
movl $0x4444, %ecx           # imm = 0x4444
movb $0x0, %al
callq 0x13ec0
movq 0x7da13(%rip), %rax     # 0xc4ff0
movq (%rax), %rdi
callq 0x149a0
jmp 0x475e7
jmp 0x475e9
movq 0x38(%rsp), %rax
cmpq $0x0, 0x20(%rax)
jne 0x47628
movq 0x7d9f4(%rip), %rax     # 0xc4ff0
movq (%rax), %rdi
leaq 0x69d9a(%rip), %rsi     # 0xb13a0
leaq 0x69db1(%rip), %rdx     # 0xb13be
movl $0x4445, %ecx           # imm = 0x4445
movb $0x0, %al
callq 0x13ec0
movq 0x7d9d0(%rip), %rax     # 0xc4ff0
movq (%rax), %rdi
callq 0x149a0
jmp 0x4762a
jmp 0x4762c
movq 0x38(%rsp), %rax
cmpq $0x0, 0x30(%rax)
jne 0x4766b
movq 0x7d9b1(%rip), %rax     # 0xc4ff0
movq (%rax), %rdi
leaq 0x69d57(%rip), %rsi     # 0xb13a0
leaq 0x69d6e(%rip), %rdx     # 0xb13be
movl $0x4446, %ecx           # imm = 0x4446
movb $0x0, %al
callq 0x13ec0
movq 0x7d98d(%rip), %rax     # 0xc4ff0
movq (%rax), %rdi
callq 0x149a0
jmp 0x4766d
jmp 0x4766f
movq 0x38(%rsp), %rax
cmpq $0x0, 0x38(%rax)
jne 0x476ae
movq 0x7d96e(%rip), %rax     # 0xc4ff0
movq (%rax), %rdi
leaq 0x69d14(%rip), %rsi     # 0xb13a0
leaq 0x69d2b(%rip), %rdx     # 0xb13be
movl $0x4447, %ecx           # imm = 0x4447
movb $0x0, %al
callq 0x13ec0
movq 0x7d94a(%rip), %rax     # 0xc4ff0
movq (%rax), %rdi
callq 0x149a0
jmp 0x476b0
jmp 0x476b2
cmpq $0x0, 0x30(%rsp)
jne 0x476ed
movq 0x7d92f(%rip), %rax     # 0xc4ff0
movq (%rax), %rdi
leaq 0x69cd5(%rip), %rsi     # 0xb13a0
leaq 0x69cec(%rip), %rdx     # 0xb13be
movl $0x4449, %ecx           # imm = 0x4449
movb $0x0, %al
callq 0x13ec0
movq 0x7d90b(%rip), %rax     # 0xc4ff0
movq (%rax), %rdi
callq 0x149a0
jmp 0x476ef
jmp 0x476f1
movq 0x30(%rsp), %rax
cmpq $0x0, 0x8(%rax)
jne 0x47730
movq 0x7d8ec(%rip), %rax     # 0xc4ff0
movq (%rax), %rdi
leaq 0x69c92(%rip), %rsi     # 0xb13a0
leaq 0x69ca9(%rip), %rdx     # 0xb13be
movl $0x444a, %ecx           # imm = 0x444A
movb $0x0, %al
callq 0x13ec0
movq 0x7d8c8(%rip), %rax     # 0xc4ff0
movq (%rax), %rdi
callq 0x149a0
jmp 0x47732
jmp 0x47734
movq 0x30(%rsp), %rax
cmpq $0x0, 0x10(%rax)
jne 0x47773
movq 0x7d8a9(%rip), %rax     # 0xc4ff0
movq (%rax), %rdi
leaq 0x69c4f(%rip), %rsi     # 0xb13a0
leaq 0x69c66(%rip), %rdx     # 0xb13be
movl $0x444b, %ecx           # imm = 0x444B
movb $0x0, %al
callq 0x13ec0
movq 0x7d885(%rip), %rax     # 0xc4ff0
movq (%rax), %rdi
callq 0x149a0
jmp 0x47775
jmp 0x47777
movq 0x30(%rsp), %rax
movss 0x20(%rax), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
ja 0x477bc
movq 0x7d860(%rip), %rax     # 0xc4ff0
movq (%rax), %rdi
leaq 0x69c06(%rip), %rsi     # 0xb13a0
leaq 0x69c1d(%rip), %rdx     # 0xb13be
movl $0x444c, %ecx           # imm = 0x444C
movb $0x0, %al
callq 0x13ec0
movq 0x7d83c(%rip), %rax     # 0xc4ff0
movq (%rax), %rdi
callq 0x149a0
jmp 0x477be
cmpq $0x0, 0x38(%rsp)
je 0x47824
cmpq $0x0, 0x30(%rsp)
je 0x47824
movq 0x30(%rsp), %rax
cmpq $0x0, 0x8(%rax)
je 0x47824
movq 0x30(%rsp), %rax
cmpq $0x0, 0x10(%rax)
je 0x47824
movq 0x30(%rsp), %rax
xorps %xmm0, %xmm0
ucomiss 0x20(%rax), %xmm0
jae 0x47824
movq 0x38(%rsp), %rax
cmpq $0x0, 0x18(%rax)
je 0x47824
movq 0x38(%rsp), %rax
cmpq $0x0, 0x20(%rax)
je 0x47824
movq 0x38(%rsp), %rax
cmpq $0x0, 0x30(%rax)
je 0x47824
movq 0x38(%rsp), %rax
cmpq $0x0, 0x38(%rax)
jne 0x47832
movq $0x0, 0x40(%rsp)
jmp 0x47bcf
movq 0x38(%rsp), %rax
movq 0x18(%rax), %rax
movq 0x38(%rsp), %rcx
movq 0x10(%rcx), %rdi
xorl %ecx, %ecx
movl %ecx, %esi
movl $0x58, %edx
callq *%rax
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rdi
movq 0x30(%rsp), %rsi
movl $0x58, %edx
callq 0x2f750
movq 0x20(%rsp), %rcx
movq 0x20(%rsp), %rax
movq %rcx, 0x48(%rax)
movq 0x20(%rsp), %rcx
movq 0x20(%rsp), %rax
movq %rcx, 0x50(%rax)
movq 0x30(%rsp), %rax
cmpb $0x0, 0x19(%rax)
jne 0x47a20
movq 0x38(%rsp), %rax
cmpq $0x0, 0x180(%rax)
jne 0x478c1
movq 0x20(%rsp), %rcx
movq 0x38(%rsp), %rax
movq %rcx, 0x180(%rax)
movq 0x20(%rsp), %rax
movq $0x0, (%rax)
jmp 0x47905
movq 0x38(%rsp), %rax
movq 0x180(%rax), %rax
movq %rax, 0x18(%rsp)
movq 0x18(%rsp), %rax
cmpq $0x0, (%rax)
je 0x478ec
movq 0x18(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x18(%rsp)
jmp 0x478d2
movq 0x20(%rsp), %rcx
movq 0x18(%rsp), %rax
movq %rcx, (%rax)
movq 0x20(%rsp), %rax
movq $0x0, (%rax)
movq 0x38(%rsp), %rax
movq 0x18(%rax), %rax
movq 0x38(%rsp), %rcx
movq 0x10(%rcx), %rdi
xorl %ecx, %ecx
movl %ecx, %esi
movl $0x80, %edx
callq *%rax
movq %rax, 0x28(%rsp)
cmpq $0x0, 0x28(%rsp)
jne 0x47962
movq 0x7d6ba(%rip), %rax     # 0xc4ff0
movq (%rax), %rdi
leaq 0x69a60(%rip), %rsi     # 0xb13a0
leaq 0x69a77(%rip), %rdx     # 0xb13be
movl $0x4468, %ecx           # imm = 0x4468
movb $0x0, %al
callq 0x13ec0
movq 0x7d696(%rip), %rax     # 0xc4ff0
movq (%rax), %rdi
callq 0x149a0
jmp 0x47964
movq 0x28(%rsp), %rdi
movl $0x80, %esi
callq 0x2f0e0
cmpq $0x0, 0x28(%rsp)
jne 0x47989
movq $0x0, 0x40(%rsp)
jmp 0x47bcf
movq 0x20(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x78(%rax)
movq 0x38(%rsp), %rax
cmpq $0x0, 0x178(%rax)
jne 0x479c5
movq 0x28(%rsp), %rcx
movq 0x38(%rsp), %rax
movq %rcx, 0x178(%rax)
movq 0x28(%rsp), %rax
movq $0x0, (%rax)
jmp 0x47a09
movq 0x38(%rsp), %rax
movq 0x178(%rax), %rax
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rax
cmpq $0x0, (%rax)
je 0x479f0
movq 0x10(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x10(%rsp)
jmp 0x479d6
movq 0x28(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, (%rax)
movq 0x28(%rsp), %rax
movq $0x0, (%rax)
movq 0x28(%rsp), %rcx
addq $0x30, %rcx
movq 0x20(%rsp), %rax
movq %rcx, 0x38(%rax)
jmp 0x47ae0
movq $0x0, 0x8(%rsp)
movq $0x0, (%rsp)
movq 0x38(%rsp), %rax
cmpl $0x0, 0x188(%rax)
jne 0x47a72
movq 0x7d5aa(%rip), %rax     # 0xc4ff0
movq (%rax), %rdi
leaq 0x69950(%rip), %rsi     # 0xb13a0
leaq 0x69967(%rip), %rdx     # 0xb13be
movl $0x447c, %ecx           # imm = 0x447C
movb $0x0, %al
callq 0x13ec0
movq 0x7d586(%rip), %rax     # 0xc4ff0
movq (%rax), %rdi
callq 0x149a0
jmp 0x47a74
movq 0x38(%rsp), %rax
movq 0x178(%rax), %rax
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
movq 0x78(%rax), %rax
movq %rax, (%rsp)
movq 0x8(%rsp), %rcx
addq $0x30, %rcx
movq 0x20(%rsp), %rax
movq %rcx, 0x38(%rax)
movq (%rsp), %rcx
movq 0x20(%rsp), %rax
movq %rcx, 0x48(%rax)
movq (%rsp), %rax
movq 0x50(%rax), %rcx
movq 0x20(%rsp), %rax
movq %rcx, 0x50(%rax)
movq 0x20(%rsp), %rcx
movq (%rsp), %rax
movq 0x50(%rax), %rax
movq %rcx, 0x48(%rax)
movq 0x20(%rsp), %rcx
movq (%rsp), %rax
movq %rcx, 0x50(%rax)
movq 0x30(%rsp), %rax
cmpb $0x0, 0x18(%rax)
jne 0x47bb1
movq 0x38(%rsp), %rax
movq 0x18(%rax), %rax
movq 0x38(%rsp), %rcx
movq 0x20(%rsp), %rdx
movq 0x10(%rdx), %rdx
movq 0x10(%rcx), %rdi
xorl %ecx, %ecx
movl %ecx, %esi
callq *%rax
movq %rax, %rcx
movq 0x20(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x20(%rsp), %rax
cmpq $0x0, 0x8(%rax)
jne 0x47b5b
movq 0x7d4c1(%rip), %rax     # 0xc4ff0
movq (%rax), %rdi
leaq 0x69867(%rip), %rsi     # 0xb13a0
leaq 0x6987e(%rip), %rdx     # 0xb13be
movl $0x4489, %ecx           # imm = 0x4489
movb $0x0, %al
callq 0x13ec0
movq 0x7d49d(%rip), %rax     # 0xc4ff0
movq (%rax), %rdi
callq 0x149a0
jmp 0x47b5d
movq 0x20(%rsp), %rax
cmpq $0x0, 0x8(%rax)
jne 0x47b88
movq 0x38(%rsp), %rax
movl 0x188(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x188(%rax)
movq $0x0, 0x40(%rsp)
jmp 0x47bcf
movq 0x20(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rax
movq 0x8(%rax), %rsi
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rdx
callq 0x2f750
movq 0x20(%rsp), %rax
movb $0x1, 0x18(%rax)
movq 0x38(%rsp), %rax
movl 0x188(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x188(%rax)
movq 0x28(%rsp), %rax
movq %rax, 0x40(%rsp)
movq 0x40(%rsp), %rax
addq $0x48, %rsp
retq
nopl (%rax)