// File: /workspace/github_c_makefile_star2_O0/dolphinking[P]slimox/src/slimox-ppm.h
// Function: ppm_model_new
static inline ppm_model_t* ppm_model_new() {
    static const int see_init[128][2] = {
        {200, 200}, {173, 200}, {200, 200}, {200, 200}, {200, 200}, {200, 103}, {197, 200}, {200, 200},
        {200, 200}, {200,  51}, {200, 102}, {200, 173}, {200, 200}, {200,  25}, {200,  47}, {200,  96},
        {200, 200}, {200,  18}, {200,  24}, {200,  49}, {200, 200}, {200,  11}, {200,  13}, {200,  24},
        {200, 200}, {200,  17}, {200,   8}, {200,  12}, {200, 200}, {200, 194}, {200,  15}, {200,   7},
        {200, 200}, {200, 169}, {200, 200}, {200, 200}, {200, 200}, {200,  73}, {200, 148}, {200, 200},
        {200, 200}, {200,  33}, {200,  68}, {200, 135}, {200, 200}, {200,  13}, {200,  32}, {200,  59},
        {200, 200}, {200,   7}, {200,  14}, {200,  29}, {200, 200}, {200,   3}, {200,   4}, {200,  12},
        {200, 200}, {200,   3}, {200,   3}, {200,   5}, {200, 200}, {200,  55}, {200,   3}, {200,   3},

        {200, 200}, {164, 200}, {121, 200}, { 73, 200}, {200,  90}, {200,  96}, {200, 136}, {200, 171},
        {200,  23}, {200,  29}, {200,  76}, {200, 102}, {200,  37}, {200,  17}, {200,  50}, {200,  61},
        {200,  62}, {200,  15}, {200,  38}, {200,  42}, {200,  99}, {200,  22}, {200,  48}, {200,  45},
        {200, 142}, {200,  26}, {200,  67}, {200,  58}, {200, 194}, {200,  77}, {200, 138}, {200,  82},
        {200, 200}, {200, 168}, {200, 193}, {132, 200}, {200,  57}, {200,  61}, {200,  98}, {200, 119},
        {200,  18}, {200,  25}, {200,  48}, {200,  59}, {200,  14}, {200,  17}, {200,  26}, {200,  30},
        {200,  15}, {200,  11}, {200,  15}, {200,  17}, {200,  15}, {200,   9}, {200,  11}, {200,  11},
        {200,  18}, {200,   6}, {200,   8}, {200,   6}, {200,  32}, {200,   8}, {200,   7}, {200,   6},
    };
    int context_hi;
    int context_lo;
    ppm_model_t* model = (ppm_model_t*)malloc(sizeof(ppm_model_t));

    model->m_o2_counts = 0;
    model->m_o4_counts = 0;
    model->m_context = 0;
    memset(model->m_o4_buckets, 0, sizeof(model->m_o4_buckets));
    memset(model->m_o2, 0, sizeof(model->m_o2));
    memset(model->m_o1, 0, sizeof(model->m_o1));
    memset(model->m_o0, 0, sizeof(model->m_o0));
    model->m_o4_allocator = allocator_new();
    model->m_o2_allocator = allocator_new();
    model->m_sse_ch_context = 0;
    for(context_hi = 0; context_hi < 128; context_hi++) {
        for(context_lo = 0; context_lo < 1024; context_lo++) {
            model->m_see[context_hi << 10 | context_lo].m_c[0] = see_init[context_hi][0];
            model->m_see[context_hi << 10 | context_lo].m_c[1] = see_init[context_hi][1];
        }
    }
    model->m_see_01.m_c[0] = 0;
    model->m_see_01.m_c[1] = 1;
    model->m_see_10.m_c[0] = 1;
    model->m_see_10.m_c[1] = 0;
    return model;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movl $0x320838, %edi         # imm = 0x320838
callq 0x1190
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movl $0x0, 0x4(%rax)
movq -0x10(%rbp), %rax
movl $0x0, 0x8(%rax)
movq -0x10(%rbp), %rax
movl $0x0, (%rax)
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
xorl %esi, %esi
movl $0x200000, %edx         # imm = 0x200000
callq 0x10e0
movq -0x10(%rbp), %rdi
addq $0x200010, %rdi         # imm = 0x200010
xorl %esi, %esi
movl $0x80000, %edx          # imm = 0x80000
callq 0x10e0
movq -0x10(%rbp), %rdi
addq $0x280010, %rdi         # imm = 0x280010
xorl %esi, %esi
movl $0x20600, %edx          # imm = 0x20600
callq 0x10e0
movq -0x10(%rbp), %rdi
addq $0x2a0610, %rdi         # imm = 0x2A0610
xorl %esi, %esi
movl $0x206, %edx            # imm = 0x206
callq 0x10e0
callq 0x15d10
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x2a0820(%rax)
callq 0x15d10
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x2a0818(%rax)
movq -0x10(%rbp), %rax
movb $0x0, 0x2a0828(%rax)
movl $0x0, -0x4(%rbp)
cmpl $0x80, -0x4(%rbp)
jge 0x15cce
movl $0x0, -0x8(%rbp)
cmpl $0x400, -0x8(%rbp)      # imm = 0x400
jge 0x15cbe
movslq -0x4(%rbp), %rcx
leaq 0x2605(%rip), %rax      # 0x18270
movl (%rax,%rcx,8), %eax
movw %ax, %dx
movq -0x10(%rbp), %rax
movl -0x4(%rbp), %ecx
shll $0xa, %ecx
orl -0x8(%rbp), %ecx
movslq %ecx, %rcx
movw %dx, 0x2a082a(%rax,%rcx,4)
movslq -0x4(%rbp), %rcx
leaq 0x25dc(%rip), %rax      # 0x18270
movl 0x4(%rax,%rcx,8), %eax
movw %ax, %dx
movq -0x10(%rbp), %rax
movl -0x4(%rbp), %ecx
shll $0xa, %ecx
orl -0x8(%rbp), %ecx
movslq %ecx, %rcx
movw %dx, 0x2a082c(%rax,%rcx,4)
movl -0x8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x8(%rbp)
jmp 0x15c57
jmp 0x15cc0
movl -0x4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4(%rbp)
jmp 0x15c47
movq -0x10(%rbp), %rax
movw $0x0, 0x32082a(%rax)
movq -0x10(%rbp), %rax
movw $0x1, 0x32082c(%rax)
movq -0x10(%rbp), %rax
movw $0x1, 0x32082e(%rax)
movq -0x10(%rbp), %rax
movw $0x0, 0x320830(%rax)
movq -0x10(%rbp), %rax
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax)