// File: tomfunkhouser[P]gaps/pkgs/png/trees.c
// Function: send_tree
local void send_tree (s, tree, max_code)
    deflate_state *s;
    ct_data *tree; /* the tree to be scanned */
    int max_code;       /* and its largest code of non zero frequency */
{
    int n;                     /* iterates over all tree elements */
    int prevlen = -1;          /* last emitted length */
    int curlen;                /* length of current code */
    int nextlen = tree[0].Len; /* length of next code */
    int count = 0;             /* repeat count of the current code */
    int max_count = 7;         /* max repeat count */
    int min_count = 4;         /* min repeat count */

    /* tree[max_code+1].Len = -1; */  /* guard already set */
    if (nextlen == 0) max_count = 138, min_count = 3;

    for (n = 0; n <= max_code; n++) {
        curlen = nextlen; nextlen = tree[n+1].Len;
        if (++count < max_count && curlen == nextlen) {
            continue;
        } else if (count < min_count) {
            do { send_code(s, curlen, s->bl_tree); } while (--count != 0);

        } else if (curlen != 0) {
            if (curlen != prevlen) {
                send_code(s, curlen, s->bl_tree); count--;
            }
            Assert(count >= 3 && count <= 6, " 3_6?");
            send_code(s, REP_3_6, s->bl_tree); send_bits(s, count-3, 2);

        } else if (count <= 10) {
            send_code(s, REPZ_3_10, s->bl_tree); send_bits(s, count-3, 3);

        } else {
            send_code(s, REPZ_11_138, s->bl_tree); send_bits(s, count-11, 7);
        }
        count = 0; prevlen = curlen;
        if (nextlen == 0) {
            max_count = 138, min_count = 3;
        } else if (curlen == nextlen) {
            max_count = 6, min_count = 3;
        } else {
            max_count = 7, min_count = 4;
        }
    }
}

// Assembly:
movq %rdi, -0x8(%rsp)
movq %rsi, -0x10(%rsp)
movl %edx, -0x14(%rsp)
movl $0xffffffff, -0x1c(%rsp) # imm = 0xFFFFFFFF
movq -0x10(%rsp), %rax
movzwl 0x2(%rax), %eax
movl %eax, -0x24(%rsp)
movl $0x0, -0x28(%rsp)
movl $0x7, -0x2c(%rsp)
movl $0x4, -0x30(%rsp)
cmpl $0x0, -0x24(%rsp)
jne 0x121c42
movl $0x8a, -0x2c(%rsp)
movl $0x3, -0x30(%rsp)
movl $0x0, -0x18(%rsp)
movl -0x18(%rsp), %eax
cmpl -0x14(%rsp), %eax
jg 0x122804
movl -0x24(%rsp), %eax
movl %eax, -0x20(%rsp)
movq -0x10(%rsp), %rax
movl -0x18(%rsp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movzwl 0x2(%rax,%rcx,4), %eax
movl %eax, -0x24(%rsp)
movl -0x28(%rsp), %eax
addl $0x1, %eax
movl %eax, -0x28(%rsp)
cmpl -0x2c(%rsp), %eax
jge 0x121c98
movl -0x20(%rsp), %eax
cmpl -0x24(%rsp), %eax
jne 0x121c98
jmp 0x1227f4
movl -0x28(%rsp), %eax
cmpl -0x30(%rsp), %eax
jge 0x121e29
jmp 0x121ca8
movq -0x8(%rsp), %rax
movslq -0x20(%rsp), %rcx
movzwl 0xaae(%rax,%rcx,4), %eax
movl %eax, -0x34(%rsp)
movq -0x8(%rsp), %rax
movl 0x1724(%rax), %eax
movl $0x10, %ecx
subl -0x34(%rsp), %ecx
cmpl %ecx, %eax
jle 0x121dc5
movq -0x8(%rsp), %rax
movslq -0x20(%rsp), %rcx
movzwl 0xaac(%rax,%rcx,4), %eax
movl %eax, -0x38(%rsp)
movl -0x38(%rsp), %eax
movzwl %ax, %edx
movq -0x8(%rsp), %rax
movl 0x1724(%rax), %ecx
shll %cl, %edx
movq -0x8(%rsp), %rax
movzwl 0x1720(%rax), %ecx
orl %edx, %ecx
movw %cx, 0x1720(%rax)
movq -0x8(%rsp), %rax
movzwl 0x1720(%rax), %eax
andl $0xff, %eax
movb %al, %dl
movq -0x8(%rsp), %rax
movq 0x10(%rax), %rax
movq -0x8(%rsp), %rsi
movl 0x28(%rsi), %ecx
movl %ecx, %edi
addl $0x1, %edi
movl %edi, 0x28(%rsi)
movl %ecx, %ecx
movb %dl, (%rax,%rcx)
movq -0x8(%rsp), %rax
movzwl 0x1720(%rax), %eax
sarl $0x8, %eax
movb %al, %dl
movq -0x8(%rsp), %rax
movq 0x10(%rax), %rax
movq -0x8(%rsp), %rsi
movl 0x28(%rsi), %ecx
movl %ecx, %edi
addl $0x1, %edi
movl %edi, 0x28(%rsi)
movl %ecx, %ecx
movb %dl, (%rax,%rcx)
movl -0x38(%rsp), %eax
movzwl %ax, %eax
movq -0x8(%rsp), %rcx
movslq 0x1724(%rcx), %rdx
movl $0x10, %ecx
subq %rdx, %rcx
sarl %cl, %eax
movw %ax, %cx
movq -0x8(%rsp), %rax
movw %cx, 0x1720(%rax)
movslq -0x34(%rsp), %rdx
subq $0x10, %rdx
movq -0x8(%rsp), %rax
movslq 0x1724(%rax), %rcx
addq %rdx, %rcx
movl %ecx, 0x1724(%rax)
jmp 0x121e0e
movq -0x8(%rsp), %rax
movslq -0x20(%rsp), %rcx
movzwl 0xaac(%rax,%rcx,4), %edx
movq -0x8(%rsp), %rax
movl 0x1724(%rax), %ecx
shll %cl, %edx
movq -0x8(%rsp), %rax
movzwl 0x1720(%rax), %ecx
orl %edx, %ecx
movw %cx, 0x1720(%rax)
movl -0x34(%rsp), %ecx
movq -0x8(%rsp), %rax
addl 0x1724(%rax), %ecx
movl %ecx, 0x1724(%rax)
jmp 0x121e10
movl -0x28(%rsp), %eax
addl $-0x1, %eax
movl %eax, -0x28(%rsp)
cmpl $0x0, %eax
jne 0x121ca8
jmp 0x122799
cmpl $0x0, -0x20(%rsp)
je 0x122251
movl -0x20(%rsp), %eax
cmpl -0x1c(%rsp), %eax
je 0x121fb3
movq -0x8(%rsp), %rax
movslq -0x20(%rsp), %rcx
movzwl 0xaae(%rax,%rcx,4), %eax
movl %eax, -0x3c(%rsp)
movq -0x8(%rsp), %rax
movl 0x1724(%rax), %eax
movl $0x10, %ecx
subl -0x3c(%rsp), %ecx
cmpl %ecx, %eax
jle 0x121f5f
movq -0x8(%rsp), %rax
movslq -0x20(%rsp), %rcx
movzwl 0xaac(%rax,%rcx,4), %eax
movl %eax, -0x40(%rsp)
movl -0x40(%rsp), %eax
movzwl %ax, %edx
movq -0x8(%rsp), %rax
movl 0x1724(%rax), %ecx
shll %cl, %edx
movq -0x8(%rsp), %rax
movzwl 0x1720(%rax), %ecx
orl %edx, %ecx
movw %cx, 0x1720(%rax)
movq -0x8(%rsp), %rax
movzwl 0x1720(%rax), %eax
andl $0xff, %eax
movb %al, %dl
movq -0x8(%rsp), %rax
movq 0x10(%rax), %rax
movq -0x8(%rsp), %rsi
movl 0x28(%rsi), %ecx
movl %ecx, %edi
addl $0x1, %edi
movl %edi, 0x28(%rsi)
movl %ecx, %ecx
movb %dl, (%rax,%rcx)
movq -0x8(%rsp), %rax
movzwl 0x1720(%rax), %eax
sarl $0x8, %eax
movb %al, %dl
movq -0x8(%rsp), %rax
movq 0x10(%rax), %rax
movq -0x8(%rsp), %rsi
movl 0x28(%rsi), %ecx
movl %ecx, %edi
addl $0x1, %edi
movl %edi, 0x28(%rsi)
movl %ecx, %ecx
movb %dl, (%rax,%rcx)
movl -0x40(%rsp), %eax
movzwl %ax, %eax
movq -0x8(%rsp), %rcx
movslq 0x1724(%rcx), %rdx
movl $0x10, %ecx
subq %rdx, %rcx
sarl %cl, %eax
movw %ax, %cx
movq -0x8(%rsp), %rax
movw %cx, 0x1720(%rax)
movslq -0x3c(%rsp), %rdx
subq $0x10, %rdx
movq -0x8(%rsp), %rax
movslq 0x1724(%rax), %rcx
addq %rdx, %rcx
movl %ecx, 0x1724(%rax)
jmp 0x121fa8
movq -0x8(%rsp), %rax
movslq -0x20(%rsp), %rcx
movzwl 0xaac(%rax,%rcx,4), %edx
movq -0x8(%rsp), %rax
movl 0x1724(%rax), %ecx
shll %cl, %edx
movq -0x8(%rsp), %rax
movzwl 0x1720(%rax), %ecx
orl %edx, %ecx
movw %cx, 0x1720(%rax)
movl -0x3c(%rsp), %ecx
movq -0x8(%rsp), %rax
addl 0x1724(%rax), %ecx
movl %ecx, 0x1724(%rax)
movl -0x28(%rsp), %eax
addl $-0x1, %eax
movl %eax, -0x28(%rsp)
movq -0x8(%rsp), %rax
movzwl 0xaee(%rax), %eax
movl %eax, -0x44(%rsp)
movq -0x8(%rsp), %rax
movl 0x1724(%rax), %eax
movl $0x10, %ecx
subl -0x44(%rsp), %ecx
cmpl %ecx, %eax
jle 0x1220c4
movq -0x8(%rsp), %rax
movzwl 0xaec(%rax), %eax
movl %eax, -0x48(%rsp)
movl -0x48(%rsp), %eax
movzwl %ax, %edx
movq -0x8(%rsp), %rax
movl 0x1724(%rax), %ecx
shll %cl, %edx
movq -0x8(%rsp), %rax
movzwl 0x1720(%rax), %ecx
orl %edx, %ecx
movw %cx, 0x1720(%rax)
movq -0x8(%rsp), %rax
movzwl 0x1720(%rax), %eax
andl $0xff, %eax
movb %al, %dl
movq -0x8(%rsp), %rax
movq 0x10(%rax), %rax
movq -0x8(%rsp), %rsi
movl 0x28(%rsi), %ecx
movl %ecx, %edi
addl $0x1, %edi
movl %edi, 0x28(%rsi)
movl %ecx, %ecx
movb %dl, (%rax,%rcx)
movq -0x8(%rsp), %rax
movzwl 0x1720(%rax), %eax
sarl $0x8, %eax
movb %al, %dl
movq -0x8(%rsp), %rax
movq 0x10(%rax), %rax
movq -0x8(%rsp), %rsi
movl 0x28(%rsi), %ecx
movl %ecx, %edi
addl $0x1, %edi
movl %edi, 0x28(%rsi)
movl %ecx, %ecx
movb %dl, (%rax,%rcx)
movl -0x48(%rsp), %eax
movzwl %ax, %eax
movq -0x8(%rsp), %rcx
movslq 0x1724(%rcx), %rdx
movl $0x10, %ecx
subq %rdx, %rcx
sarl %cl, %eax
movw %ax, %cx
movq -0x8(%rsp), %rax
movw %cx, 0x1720(%rax)
movslq -0x44(%rsp), %rdx
subq $0x10, %rdx
movq -0x8(%rsp), %rax
movslq 0x1724(%rax), %rcx
addq %rdx, %rcx
movl %ecx, 0x1724(%rax)
jmp 0x122107
movq -0x8(%rsp), %rax
movzwl 0xaec(%rax), %edx
movq -0x8(%rsp), %rax
movl 0x1724(%rax), %ecx
shll %cl, %edx
movq -0x8(%rsp), %rax
movzwl 0x1720(%rax), %ecx
orl %edx, %ecx
movw %cx, 0x1720(%rax)
movl -0x44(%rsp), %ecx
movq -0x8(%rsp), %rax
addl 0x1724(%rax), %ecx
movl %ecx, 0x1724(%rax)
movl $0x2, -0x4c(%rsp)
movq -0x8(%rsp), %rax
movl 0x1724(%rax), %eax
movl $0x10, %ecx
subl -0x4c(%rsp), %ecx
cmpl %ecx, %eax
jle 0x12220b
movl -0x28(%rsp), %eax
subl $0x3, %eax
movl %eax, -0x50(%rsp)
movl -0x50(%rsp), %eax
movzwl %ax, %edx
movq -0x8(%rsp), %rax
movl 0x1724(%rax), %ecx
shll %cl, %edx
movq -0x8(%rsp), %rax
movzwl 0x1720(%rax), %ecx
orl %edx, %ecx
movw %cx, 0x1720(%rax)
movq -0x8(%rsp), %rax
movzwl 0x1720(%rax), %eax
andl $0xff, %eax
movb %al, %dl
movq -0x8(%rsp), %rax
movq 0x10(%rax), %rax
movq -0x8(%rsp), %rsi
movl 0x28(%rsi), %ecx
movl %ecx, %edi
addl $0x1, %edi
movl %edi, 0x28(%rsi)
movl %ecx, %ecx
movb %dl, (%rax,%rcx)
movq -0x8(%rsp), %rax
movzwl 0x1720(%rax), %eax
sarl $0x8, %eax
movb %al, %dl
movq -0x8(%rsp), %rax
movq 0x10(%rax), %rax
movq -0x8(%rsp), %rsi
movl 0x28(%rsi), %ecx
movl %ecx, %edi
addl $0x1, %edi
movl %edi, 0x28(%rsi)
movl %ecx, %ecx
movb %dl, (%rax,%rcx)
movl -0x50(%rsp), %eax
movzwl %ax, %eax
movq -0x8(%rsp), %rcx
movslq 0x1724(%rcx), %rdx
movl $0x10, %ecx
subq %rdx, %rcx
sarl %cl, %eax
movw %ax, %cx
movq -0x8(%rsp), %rax
movw %cx, 0x1720(%rax)
movslq -0x4c(%rsp), %rdx
subq $0x10, %rdx
movq -0x8(%rsp), %rax
movslq 0x1724(%rax), %rcx
addq %rdx, %rcx
movl %ecx, 0x1724(%rax)
jmp 0x12224c
movl -0x28(%rsp), %eax
subl $0x3, %eax
movzwl %ax, %edx
movq -0x8(%rsp), %rax
movl 0x1724(%rax), %ecx
shll %cl, %edx
movq -0x8(%rsp), %rax
movzwl 0x1720(%rax), %ecx
orl %edx, %ecx
movw %cx, 0x1720(%rax)
movl -0x4c(%rsp), %ecx
movq -0x8(%rsp), %rax
addl 0x1724(%rax), %ecx
movl %ecx, 0x1724(%rax)
jmp 0x122797
cmpl $0xa, -0x28(%rsp)
jg 0x1224fa
movq -0x8(%rsp), %rax
movzwl 0xaf2(%rax), %eax
movl %eax, -0x54(%rsp)
movq -0x8(%rsp), %rax
movl 0x1724(%rax), %eax
movl $0x10, %ecx
subl -0x54(%rsp), %ecx
cmpl %ecx, %eax
jle 0x12236d
movq -0x8(%rsp), %rax
movzwl 0xaf0(%rax), %eax
movl %eax, -0x58(%rsp)
movl -0x58(%rsp), %eax
movzwl %ax, %edx
movq -0x8(%rsp), %rax
movl 0x1724(%rax), %ecx
shll %cl, %edx
movq -0x8(%rsp), %rax
movzwl 0x1720(%rax), %ecx
orl %edx, %ecx
movw %cx, 0x1720(%rax)
movq -0x8(%rsp), %rax
movzwl 0x1720(%rax), %eax
andl $0xff, %eax
movb %al, %dl
movq -0x8(%rsp), %rax
movq 0x10(%rax), %rax
movq -0x8(%rsp), %rsi
movl 0x28(%rsi), %ecx
movl %ecx, %edi
addl $0x1, %edi
movl %edi, 0x28(%rsi)
movl %ecx, %ecx
movb %dl, (%rax,%rcx)
movq -0x8(%rsp), %rax
movzwl 0x1720(%rax), %eax
sarl $0x8, %eax
movb %al, %dl
movq -0x8(%rsp), %rax
movq 0x10(%rax), %rax
movq -0x8(%rsp), %rsi
movl 0x28(%rsi), %ecx
movl %ecx, %edi
addl $0x1, %edi
movl %edi, 0x28(%rsi)
movl %ecx, %ecx
movb %dl, (%rax,%rcx)
movl -0x58(%rsp), %eax
movzwl %ax, %eax
movq -0x8(%rsp), %rcx
movslq 0x1724(%rcx), %rdx
movl $0x10, %ecx
subq %rdx, %rcx
sarl %cl, %eax
movw %ax, %cx
movq -0x8(%rsp), %rax
movw %cx, 0x1720(%rax)
movslq -0x54(%rsp), %rdx
subq $0x10, %rdx
movq -0x8(%rsp), %rax
movslq 0x1724(%rax), %rcx
addq %rdx, %rcx
movl %ecx, 0x1724(%rax)
jmp 0x1223b0
movq -0x8(%rsp), %rax
movzwl 0xaf0(%rax), %edx
movq -0x8(%rsp), %rax
movl 0x1724(%rax), %ecx
shll %cl, %edx
movq -0x8(%rsp), %rax
movzwl 0x1720(%rax), %ecx
orl %edx, %ecx
movw %cx, 0x1720(%rax)
movl -0x54(%rsp), %ecx
movq -0x8(%rsp), %rax
addl 0x1724(%rax), %ecx
movl %ecx, 0x1724(%rax)
movl $0x3, -0x5c(%rsp)
movq -0x8(%rsp), %rax
movl 0x1724(%rax), %eax
movl $0x10, %ecx
subl -0x5c(%rsp), %ecx
cmpl %ecx, %eax
jle 0x1224b4
movl -0x28(%rsp), %eax
subl $0x3, %eax
movl %eax, -0x60(%rsp)
movl -0x60(%rsp), %eax
movzwl %ax, %edx
movq -0x8(%rsp), %rax
movl 0x1724(%rax), %ecx
shll %cl, %edx
movq -0x8(%rsp), %rax
movzwl 0x1720(%rax), %ecx
orl %edx, %ecx
movw %cx, 0x1720(%rax)
movq -0x8(%rsp), %rax
movzwl 0x1720(%rax), %eax
andl $0xff, %eax
movb %al, %dl
movq -0x8(%rsp), %rax
movq 0x10(%rax), %rax
movq -0x8(%rsp), %rsi
movl 0x28(%rsi), %ecx
movl %ecx, %edi
addl $0x1, %edi
movl %edi, 0x28(%rsi)
movl %ecx, %ecx
movb %dl, (%rax,%rcx)
movq -0x8(%rsp), %rax
movzwl 0x1720(%rax), %eax
sarl $0x8, %eax
movb %al, %dl
movq -0x8(%rsp), %rax
movq 0x10(%rax), %rax
movq -0x8(%rsp), %rsi
movl 0x28(%rsi), %ecx
movl %ecx, %edi
addl $0x1, %edi
movl %edi, 0x28(%rsi)
movl %ecx, %ecx
movb %dl, (%rax,%rcx)
movl -0x60(%rsp), %eax
movzwl %ax, %eax
movq -0x8(%rsp), %rcx
movslq 0x1724(%rcx), %rdx
movl $0x10, %ecx
subq %rdx, %rcx
sarl %cl, %eax
movw %ax, %cx
movq -0x8(%rsp), %rax
movw %cx, 0x1720(%rax)
movslq -0x5c(%rsp), %rdx
subq $0x10, %rdx
movq -0x8(%rsp), %rax
movslq 0x1724(%rax), %rcx
addq %rdx, %rcx
movl %ecx, 0x1724(%rax)
jmp 0x1224f5
movl -0x28(%rsp), %eax
subl $0x3, %eax
movzwl %ax, %edx
movq -0x8(%rsp), %rax
movl 0x1724(%rax), %ecx
shll %cl, %edx
movq -0x8(%rsp), %rax
movzwl 0x1720(%rax), %ecx
orl %edx, %ecx
movw %cx, 0x1720(%rax)
movl -0x5c(%rsp), %ecx
movq -0x8(%rsp), %rax
addl 0x1724(%rax), %ecx
movl %ecx, 0x1724(%rax)
jmp 0x122795
movq -0x8(%rsp), %rax
movzwl 0xaf6(%rax), %eax
movl %eax, -0x64(%rsp)
movq -0x8(%rsp), %rax
movl 0x1724(%rax), %eax
movl $0x10, %ecx
subl -0x64(%rsp), %ecx
cmpl %ecx, %eax
jle 0x12260b
movq -0x8(%rsp), %rax
movzwl 0xaf4(%rax), %eax
movl %eax, -0x68(%rsp)
movl -0x68(%rsp), %eax
movzwl %ax, %edx
movq -0x8(%rsp), %rax
movl 0x1724(%rax), %ecx
shll %cl, %edx
movq -0x8(%rsp), %rax
movzwl 0x1720(%rax), %ecx
orl %edx, %ecx
movw %cx, 0x1720(%rax)
movq -0x8(%rsp), %rax
movzwl 0x1720(%rax), %eax
andl $0xff, %eax
movb %al, %dl
movq -0x8(%rsp), %rax
movq 0x10(%rax), %rax
movq -0x8(%rsp), %rsi
movl 0x28(%rsi), %ecx
movl %ecx, %edi
addl $0x1, %edi
movl %edi, 0x28(%rsi)
movl %ecx, %ecx
movb %dl, (%rax,%rcx)
movq -0x8(%rsp), %rax
movzwl 0x1720(%rax), %eax
sarl $0x8, %eax
movb %al, %dl
movq -0x8(%rsp), %rax
movq 0x10(%rax), %rax
movq -0x8(%rsp), %rsi
movl 0x28(%rsi), %ecx
movl %ecx, %edi
addl $0x1, %edi
movl %edi, 0x28(%rsi)
movl %ecx, %ecx
movb %dl, (%rax,%rcx)
movl -0x68(%rsp), %eax
movzwl %ax, %eax
movq -0x8(%rsp), %rcx
movslq 0x1724(%rcx), %rdx
movl $0x10, %ecx
subq %rdx, %rcx
sarl %cl, %eax
movw %ax, %cx
movq -0x8(%rsp), %rax
movw %cx, 0x1720(%rax)
movslq -0x64(%rsp), %rdx
subq $0x10, %rdx
movq -0x8(%rsp), %rax
movslq 0x1724(%rax), %rcx
addq %rdx, %rcx
movl %ecx, 0x1724(%rax)
jmp 0x12264e
movq -0x8(%rsp), %rax
movzwl 0xaf4(%rax), %edx
movq -0x8(%rsp), %rax
movl 0x1724(%rax), %ecx
shll %cl, %edx
movq -0x8(%rsp), %rax
movzwl 0x1720(%rax), %ecx
orl %edx, %ecx
movw %cx, 0x1720(%rax)
movl -0x64(%rsp), %ecx
movq -0x8(%rsp), %rax
addl 0x1724(%rax), %ecx
movl %ecx, 0x1724(%rax)
movl $0x7, -0x6c(%rsp)
movq -0x8(%rsp), %rax
movl 0x1724(%rax), %eax
movl $0x10, %ecx
subl -0x6c(%rsp), %ecx
cmpl %ecx, %eax
jle 0x122752
movl -0x28(%rsp), %eax
subl $0xb, %eax
movl %eax, -0x70(%rsp)
movl -0x70(%rsp), %eax
movzwl %ax, %edx
movq -0x8(%rsp), %rax
movl 0x1724(%rax), %ecx
shll %cl, %edx
movq -0x8(%rsp), %rax
movzwl 0x1720(%rax), %ecx
orl %edx, %ecx
movw %cx, 0x1720(%rax)
movq -0x8(%rsp), %rax
movzwl 0x1720(%rax), %eax
andl $0xff, %eax
movb %al, %dl
movq -0x8(%rsp), %rax
movq 0x10(%rax), %rax
movq -0x8(%rsp), %rsi
movl 0x28(%rsi), %ecx
movl %ecx, %edi
addl $0x1, %edi
movl %edi, 0x28(%rsi)
movl %ecx, %ecx
movb %dl, (%rax,%rcx)
movq -0x8(%rsp), %rax
movzwl 0x1720(%rax), %eax
sarl $0x8, %eax
movb %al, %dl
movq -0x8(%rsp), %rax
movq 0x10(%rax), %rax
movq -0x8(%rsp), %rsi
movl 0x28(%rsi), %ecx
movl %ecx, %edi
addl $0x1, %edi
movl %edi, 0x28(%rsi)
movl %ecx, %ecx
movb %dl, (%rax,%rcx)
movl -0x70(%rsp), %eax
movzwl %ax, %eax
movq -0x8(%rsp), %rcx
movslq 0x1724(%rcx), %rdx
movl $0x10, %ecx
subq %rdx, %rcx
sarl %cl, %eax
movw %ax, %cx
movq -0x8(%rsp), %rax
movw %cx, 0x1720(%rax)
movslq -0x6c(%rsp), %rdx
subq $0x10, %rdx
movq -0x8(%rsp), %rax
movslq 0x1724(%rax), %rcx
addq %rdx, %rcx
movl %ecx, 0x1724(%rax)
jmp 0x122793
movl -0x28(%rsp), %eax
subl $0xb, %eax
movzwl %ax, %edx
movq -0x8(%rsp), %rax
movl 0x1724(%rax), %ecx
shll %cl, %edx
movq -0x8(%rsp), %rax
movzwl 0x1720(%rax), %ecx
orl %edx, %ecx
movw %cx, 0x1720(%rax)
movl -0x6c(%rsp), %ecx
movq -0x8(%rsp), %rax
addl 0x1724(%rax), %ecx
movl %ecx, 0x1724(%rax)
jmp 0x122795
jmp 0x122797
jmp 0x122799
jmp 0x12279b
movl $0x0, -0x28(%rsp)
movl -0x20(%rsp), %eax
movl %eax, -0x1c(%rsp)
cmpl $0x0, -0x24(%rsp)
jne 0x1227c4
movl $0x8a, -0x2c(%rsp)
movl $0x3, -0x30(%rsp)
jmp 0x1227f2
movl -0x20(%rsp), %eax
cmpl -0x24(%rsp), %eax
jne 0x1227e0
movl $0x6, -0x2c(%rsp)
movl $0x3, -0x30(%rsp)
jmp 0x1227f0
movl $0x7, -0x2c(%rsp)
movl $0x4, -0x30(%rsp)
jmp 0x1227f2
jmp 0x1227f4
movl -0x18(%rsp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rsp)
jmp 0x121c4a
retq
nopw %cs:(%rax,%rax)
nop