// File: /workspace/github_c_makefile_star2_O0/janet-lang[P]janet/src/core/compile.c
// Function: janetc_pop_funcdef
JanetFuncDef *janetc_pop_funcdef(JanetCompiler *c) {
    JanetScope *scope = c->scope;
    JanetFuncDef *def = janet_funcdef_alloc();
    def->slotcount = scope->ra.max + 1;

    janet_assert(scope->flags & JANET_SCOPE_FUNCTION, "expected function scope");

    /* Copy envs */
    def->environments_length = janet_v_count(scope->envs);
    def->environments = janet_malloc(sizeof(int32_t) * def->environments_length);
    for (int32_t i = 0; i < def->environments_length; i++) {
        def->environments[i] = scope->envs[i].envindex;
    }

    def->constants_length = janet_v_count(scope->consts);
    def->constants = janet_v_flatten(scope->consts);

    def->defs_length = janet_v_count(scope->defs);
    def->defs = janet_v_flatten(scope->defs);

    /* Copy bytecode (only last chunk) */
    def->bytecode_length = janet_v_count(c->buffer) - scope->bytecode_start;
    if (def->bytecode_length) {
        size_t s = sizeof(int32_t) * (size_t) def->bytecode_length;
        def->bytecode = janet_malloc(s);
        if (NULL == def->bytecode) {
            JANET_OUT_OF_MEMORY;
        }
        safe_memcpy(def->bytecode, c->buffer + scope->bytecode_start, s);
        janet_v__cnt(c->buffer) = scope->bytecode_start;
        if (NULL != c->mapbuffer && c->source) {
            size_t s = sizeof(JanetSourceMapping) * (size_t) def->bytecode_length;
            def->sourcemap = janet_malloc(s);
            if (NULL == def->sourcemap) {
                JANET_OUT_OF_MEMORY;
            }
            safe_memcpy(def->sourcemap, c->mapbuffer + scope->bytecode_start, s);
            janet_v__cnt(c->mapbuffer) = scope->bytecode_start;
        }
    }

    /* Get source from parser */
    def->source = c->source;

    def->arity = 0;
    def->min_arity = 0;
    def->flags = 0;
    if (scope->flags & JANET_SCOPE_ENV) {
        def->flags |= JANET_FUNCDEF_FLAG_NEEDSENV;
    }

    /* Copy upvalue bitset */
    if (scope->ua.count) {
        /* Number of u32s we need to create a bitmask for all slots */
        int32_t slotchunks = (def->slotcount + 31) >> 5;
        /* numchunks is min of slotchunks and scope->ua.count */
        int32_t numchunks = slotchunks > scope->ua.count ? scope->ua.count : slotchunks;
        uint32_t *chunks = janet_calloc(slotchunks, sizeof(uint32_t));
        if (NULL == chunks) {
            JANET_OUT_OF_MEMORY;
        }
        memcpy(chunks, scope->ua.chunks, sizeof(uint32_t) * numchunks);
        /* Register allocator preallocates some registers [240-255, high 16 bits of chunk index 7], we can ignore those. */
        if (scope->ua.count > 7) chunks[7] &= 0xFFFFU;
        def->closure_bitset = chunks;
    }

    /* Capture symbol to local mapping */
    JanetSymbolMap *locals = NULL;

    /* Symbol -> upvalue mapping */
    JanetScope *top = c->scope;
    while (top->parent) top = top->parent;
    for (JanetScope *s = top; s != NULL; s = s->child) {
        for (int32_t j = 0; j < janet_v_count(scope->envs); j++) {
            JanetEnvRef ref = scope->envs[j];
            JanetScope *upscope = ref.scope;
            if (upscope != s) continue;
            for (int32_t i = 0; i < janet_v_count(upscope->syms); i++) {
                SymPair pair = upscope->syms[i];
                if (pair.sym2) {
                    JanetSymbolMap jsm;
                    jsm.birth_pc = UINT32_MAX;
                    jsm.death_pc = j;
                    jsm.slot_index = pair.slot.index;
                    jsm.symbol = pair.sym2;
                    janet_v_push(locals, jsm);
                }
            }
        }
    }

    /* Symbol -> slot mapping */
    for (int32_t i = 0; i < janet_v_count(scope->syms); i++) {
        SymPair pair = scope->syms[i];
        if (pair.sym2) {
            JanetSymbolMap jsm;
            if (pair.death_pc == UINT32_MAX) {
                jsm.death_pc = def->bytecode_length;
            } else {
                jsm.death_pc = pair.death_pc - scope->bytecode_start;
            }
            /* Handle birth_pc == 0 correctly */
            if ((uint32_t) scope->bytecode_start > pair.birth_pc) {
                jsm.birth_pc = 0;
            } else {
                jsm.birth_pc = pair.birth_pc - scope->bytecode_start;
            }
            janet_assert(jsm.birth_pc <= jsm.death_pc, "birth pc after death pc");
            janet_assert(jsm.birth_pc < (uint32_t) def->bytecode_length, "bad birth pc");
            janet_assert(jsm.death_pc <= (uint32_t) def->bytecode_length, "bad death pc");
            jsm.slot_index = pair.slot.index;
            jsm.symbol = pair.sym2;
            janet_v_push(locals, jsm);
        }
    }
    def->symbolmap_length = janet_v_count(locals);
    def->symbolmap = janet_v_flatten(locals);
    if (def->symbolmap_length) def->flags |= JANET_FUNCDEF_FLAG_HASSYMBOLMAP;

    /* Pop the scope */
    janetc_popscope(c);

    /* Do basic optimization */
    janet_bytecode_movopt(def);
    janet_bytecode_remove_noops(def);

    return def;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x160, %rsp            # imm = 0x160
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x10(%rbp)
callq 0x1a900
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rax
movl 0x40(%rax), %ecx
addl $0x1, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x5c(%rax)
movq -0x10(%rbp), %rax
movl 0x6c(%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
jne 0x233b5
jmp 0x23385
movq 0x8cc64(%rip), %rax     # 0xafff0
movq (%rax), %rdi
leaq 0x5dc7e(%rip), %rsi     # 0x81014
movl $0x375, %edx            # imm = 0x375
leaq 0x5e214(%rip), %rcx     # 0x815b6
leaq 0x5e280(%rip), %r8      # 0x81629
movb $0x0, %al
callq 0x125f0
callq 0x12100
jmp 0x233b7
movq -0x10(%rbp), %rax
cmpq $0x0, 0x60(%rax)
je 0x233d5
movq -0x10(%rbp), %rax
movq 0x60(%rax), %rax
movl -0x4(%rax), %eax
movl %eax, -0x12c(%rbp)
jmp 0x233df
xorl %eax, %eax
movl %eax, -0x12c(%rbp)
jmp 0x233df
movl -0x12c(%rbp), %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x74(%rax)
movq -0x18(%rbp), %rax
movslq 0x74(%rax), %rdi
shlq $0x2, %rdi
callq 0x12770
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x10(%rax)
movl $0x0, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
movq -0x18(%rbp), %rcx
cmpl 0x74(%rcx), %eax
jge 0x2344a
movq -0x10(%rbp), %rax
movq 0x60(%rax), %rax
movslq -0x1c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movl (%rax), %edx
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0x1c(%rbp), %rcx
movl %edx, (%rax,%rcx,4)
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x2340f
movq -0x10(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0x23468
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movl -0x4(%rax), %eax
movl %eax, -0x130(%rbp)
jmp 0x23472
xorl %eax, %eax
movl %eax, -0x130(%rbp)
jmp 0x23472
movl -0x130(%rbp), %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x6c(%rax)
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
movl $0x8, %esi
callq 0x70840
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x10(%rbp), %rax
cmpq $0x0, 0x28(%rax)
je 0x234ba
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movl -0x4(%rax), %eax
movl %eax, -0x134(%rbp)
jmp 0x234c4
xorl %eax, %eax
movl %eax, -0x134(%rbp)
jmp 0x234c4
movl -0x134(%rbp), %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x78(%rax)
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rdi
movl $0x8, %esi
callq 0x70840
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x8(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x2350c
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movl -0x4(%rax), %eax
movl %eax, -0x138(%rbp)
jmp 0x23516
xorl %eax, %eax
movl %eax, -0x138(%rbp)
jmp 0x23516
movl -0x138(%rbp), %ecx
movq -0x10(%rbp), %rax
subl 0x68(%rax), %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x70(%rax)
movq -0x18(%rbp), %rax
cmpl $0x0, 0x70(%rax)
je 0x2368d
movq -0x18(%rbp), %rax
movslq 0x70(%rax), %rax
shlq $0x2, %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdi
callq 0x12770
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x28(%rax)
movq -0x18(%rbp), %rcx
xorl %eax, %eax
cmpq 0x28(%rcx), %rax
jne 0x23598
jmp 0x2356a
movq 0x8ca7f(%rip), %rax     # 0xafff0
movq (%rax), %rdi
leaq 0x5aa89(%rip), %rsi     # 0x7e004
leaq 0x5e034(%rip), %rdx     # 0x815b6
movl $0x38a, %ecx            # imm = 0x38A
movb $0x0, %al
callq 0x125f0
movl $0x1, %edi
callq 0x12a70
movq -0x18(%rbp), %rax
movq 0x28(%rax), %rdi
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rsi
movq -0x10(%rbp), %rax
movslq 0x68(%rax), %rax
shlq $0x2, %rax
addq %rax, %rsi
movq -0x28(%rbp), %rdx
callq 0x6ae40
movq -0x10(%rbp), %rax
movl 0x68(%rax), %ecx
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movl %ecx, -0x4(%rax)
movq -0x8(%rbp), %rcx
xorl %eax, %eax
cmpq 0x10(%rcx), %rax
je 0x2368b
movq -0x8(%rbp), %rax
cmpq $0x0, 0x20(%rax)
je 0x2368b
movq -0x18(%rbp), %rax
movslq 0x70(%rax), %rax
shlq $0x3, %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rdi
callq 0x12770
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x38(%rax)
movq -0x18(%rbp), %rcx
xorl %eax, %eax
cmpq 0x38(%rcx), %rax
jne 0x23651
jmp 0x23623
movq 0x8c9c6(%rip), %rax     # 0xafff0
movq (%rax), %rdi
leaq 0x5a9d0(%rip), %rsi     # 0x7e004
leaq 0x5df7b(%rip), %rdx     # 0x815b6
movl $0x392, %ecx            # imm = 0x392
movb $0x0, %al
callq 0x125f0
movl $0x1, %edi
callq 0x12a70
movq -0x18(%rbp), %rax
movq 0x38(%rax), %rdi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rsi
movq -0x10(%rbp), %rax
movslq 0x68(%rax), %rax
shlq $0x3, %rax
addq %rax, %rsi
movq -0x30(%rbp), %rdx
callq 0x6ae40
movq -0x10(%rbp), %rax
movl 0x68(%rax), %ecx
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movl %ecx, -0x4(%rax)
jmp 0x2368d
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x40(%rax)
movq -0x18(%rbp), %rax
movl $0x0, 0x60(%rax)
movq -0x18(%rbp), %rax
movl $0x0, 0x64(%rax)
movq -0x18(%rbp), %rax
movl $0x0, 0x58(%rax)
movq -0x10(%rbp), %rax
movl 0x6c(%rax), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0x236dd
movq -0x18(%rbp), %rax
movl 0x58(%rax), %ecx
orl $0x20000, %ecx          # imm = 0x20000
movl %ecx, 0x58(%rax)
movq -0x10(%rbp), %rax
cmpl $0x0, 0x50(%rax)
je 0x237b1
movq -0x18(%rbp), %rax
movl 0x5c(%rax), %eax
addl $0x1f, %eax
sarl $0x5, %eax
movl %eax, -0x34(%rbp)
movl -0x34(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x50(%rcx), %eax
jle 0x23716
movq -0x10(%rbp), %rax
movl 0x50(%rax), %eax
movl %eax, -0x13c(%rbp)
jmp 0x2371f
movl -0x34(%rbp), %eax
movl %eax, -0x13c(%rbp)
movl -0x13c(%rbp), %eax
movl %eax, -0x38(%rbp)
movslq -0x34(%rbp), %rdi
movl $0x4, %esi
callq 0x125a0
movq %rax, -0x40(%rbp)
xorl %eax, %eax
cmpq -0x40(%rbp), %rax
jne 0x23772
jmp 0x23744
movq 0x8c8a5(%rip), %rax     # 0xafff0
movq (%rax), %rdi
leaq 0x5a8af(%rip), %rsi     # 0x7e004
leaq 0x5de5a(%rip), %rdx     # 0x815b6
movl $0x3ab, %ecx            # imm = 0x3AB
movb $0x0, %al
callq 0x125f0
movl $0x1, %edi
callq 0x12a70
movq -0x40(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rsi
movslq -0x38(%rbp), %rdx
shlq $0x2, %rdx
callq 0x12680
movq -0x10(%rbp), %rax
cmpl $0x7, 0x50(%rax)
jle 0x237a5
movq -0x40(%rbp), %rax
movl 0x1c(%rax), %ecx
andl $0xffff, %ecx           # imm = 0xFFFF
movl %ecx, 0x1c(%rax)
movq -0x40(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x30(%rax)
movq $0x0, -0x48(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x237dd
movq -0x50(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x50(%rbp)
jmp 0x237c4
movq -0x50(%rbp), %rax
movq %rax, -0x58(%rbp)
cmpq $0x0, -0x58(%rbp)
je 0x239c5
movl $0x0, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
movl %eax, -0x140(%rbp)
movq -0x10(%rbp), %rax
cmpq $0x0, 0x60(%rax)
je 0x2381e
movq -0x10(%rbp), %rax
movq 0x60(%rax), %rax
movl -0x4(%rax), %eax
movl %eax, -0x144(%rbp)
jmp 0x23828
xorl %eax, %eax
movl %eax, -0x144(%rbp)
jmp 0x23828
movl -0x140(%rbp), %eax
movl -0x144(%rbp), %ecx
cmpl %ecx, %eax
jge 0x239b2
movq -0x10(%rbp), %rax
movq 0x60(%rax), %rax
movslq -0x5c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rcx
movq %rcx, -0x70(%rbp)
movq 0x8(%rax), %rax
movq %rax, -0x68(%rbp)
movq -0x68(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x78(%rbp), %rax
cmpq -0x58(%rbp), %rax
je 0x23875
jmp 0x239a4
movl $0x0, -0x7c(%rbp)
movl -0x7c(%rbp), %eax
movl %eax, -0x148(%rbp)
movq -0x78(%rbp), %rax
cmpq $0x0, 0x20(%rax)
je 0x238a3
movq -0x78(%rbp), %rax
movq 0x20(%rax), %rax
movl -0x4(%rax), %eax
movl %eax, -0x14c(%rbp)
jmp 0x238ad
xorl %eax, %eax
movl %eax, -0x14c(%rbp)
jmp 0x238ad
movl -0x148(%rbp), %eax
movl -0x14c(%rbp), %ecx
cmpl %ecx, %eax
jge 0x239a2
movq -0x78(%rbp), %rax
movq 0x20(%rax), %rsi
movslq -0x7c(%rbp), %rax
imulq $0x38, %rax, %rax
addq %rax, %rsi
leaq -0xb8(%rbp), %rdi
movl $0x38, %edx
callq 0x12680
cmpq $0x0, -0x98(%rbp)
je 0x23992
movl $0xffffffff, -0xd0(%rbp) # imm = 0xFFFFFFFF
movl -0x5c(%rbp), %eax
movl %eax, -0xcc(%rbp)
movl -0xb0(%rbp), %eax
movl %eax, -0xc8(%rbp)
movq -0x98(%rbp), %rax
movq %rax, -0xc0(%rbp)
cmpq $0x0, -0x48(%rbp)
je 0x2393a
movq -0x48(%rbp), %rax
movl -0x4(%rax), %eax
addl $0x1, %eax
movq -0x48(%rbp), %rcx
cmpl -0x8(%rcx), %eax
jl 0x23953
movq -0x48(%rbp), %rdi
movl $0x1, %esi
movl $0x18, %edx
callq 0x70760
movq %rax, -0x48(%rbp)
jmp 0x23955
jmp 0x23955
movq -0x48(%rbp), %rax
movq -0x48(%rbp), %rdx
movl -0x4(%rdx), %ecx
movl %ecx, %esi
addl $0x1, %esi
movl %esi, -0x4(%rdx)
movslq %ecx, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq -0xd0(%rbp), %rcx
movq %rcx, (%rax)
movq -0xc8(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0xc0(%rbp), %rcx
movq %rcx, 0x10(%rax)
jmp 0x23994
movl -0x7c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7c(%rbp)
jmp 0x2387c
jmp 0x239a4
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x237f7
jmp 0x239b4
movq -0x58(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x58(%rbp)
jmp 0x237e5
movl $0x0, -0xd4(%rbp)
movl -0xd4(%rbp), %eax
movl %eax, -0x150(%rbp)
movq -0x10(%rbp), %rax
cmpq $0x0, 0x20(%rax)
je 0x239f9
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rax
movl -0x4(%rax), %eax
movl %eax, -0x154(%rbp)
jmp 0x23a03
xorl %eax, %eax
movl %eax, -0x154(%rbp)
jmp 0x23a03
movl -0x150(%rbp), %eax
movl -0x154(%rbp), %ecx
cmpl %ecx, %eax
jge 0x23c15
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rsi
movslq -0xd4(%rbp), %rax
imulq $0x38, %rax, %rax
addq %rax, %rsi
leaq -0x110(%rbp), %rdi
movl $0x38, %edx
callq 0x12680
cmpq $0x0, -0xf0(%rbp)
je 0x23bff
cmpl $-0x1, -0xe0(%rbp)
jne 0x23a64
movq -0x18(%rbp), %rax
movl 0x70(%rax), %eax
movl %eax, -0x124(%rbp)
jmp 0x23a77
movl -0xe0(%rbp), %eax
movq -0x10(%rbp), %rcx
subl 0x68(%rcx), %eax
movl %eax, -0x124(%rbp)
movq -0x10(%rbp), %rax
movl 0x68(%rax), %eax
cmpl -0xe4(%rbp), %eax
jbe 0x23a92
movl $0x0, -0x128(%rbp)
jmp 0x23aa5
movl -0xe4(%rbp), %eax
movq -0x10(%rbp), %rcx
subl 0x68(%rcx), %eax
movl %eax, -0x128(%rbp)
jmp 0x23aa7
movl -0x128(%rbp), %eax
cmpl -0x124(%rbp), %eax
jbe 0x23ae7
jmp 0x23ab7
movq 0x8c532(%rip), %rax     # 0xafff0
movq (%rax), %rdi
leaq 0x5d54c(%rip), %rsi     # 0x81014
movl $0x3dc, %edx            # imm = 0x3DC
leaq 0x5dae2(%rip), %rcx     # 0x815b6
leaq 0x5db66(%rip), %r8      # 0x81641
movb $0x0, %al
callq 0x125f0
callq 0x12100
jmp 0x23ae9
jmp 0x23aeb
movl -0x128(%rbp), %eax
movq -0x18(%rbp), %rcx
cmpl 0x70(%rcx), %eax
jb 0x23b2c
jmp 0x23afc
movq 0x8c4ed(%rip), %rax     # 0xafff0
movq (%rax), %rdi
leaq 0x5d507(%rip), %rsi     # 0x81014
movl $0x3dd, %edx            # imm = 0x3DD
leaq 0x5da9d(%rip), %rcx     # 0x815b6
leaq 0x5db39(%rip), %r8      # 0x81659
movb $0x0, %al
callq 0x125f0
callq 0x12100
jmp 0x23b2e
jmp 0x23b30
movl -0x124(%rbp), %eax
movq -0x18(%rbp), %rcx
cmpl 0x70(%rcx), %eax
jbe 0x23b71
jmp 0x23b41
movq 0x8c4a8(%rip), %rax     # 0xafff0
movq (%rax), %rdi
leaq 0x5d4c2(%rip), %rsi     # 0x81014
movl $0x3de, %edx            # imm = 0x3DE
leaq 0x5da58(%rip), %rcx     # 0x815b6
leaq 0x5db01(%rip), %r8      # 0x81666
movb $0x0, %al
callq 0x125f0
callq 0x12100
jmp 0x23b73
movl -0x108(%rbp), %eax
movl %eax, -0x120(%rbp)
movq -0xf0(%rbp), %rax
movq %rax, -0x118(%rbp)
cmpq $0x0, -0x48(%rbp)
je 0x23ba7
movq -0x48(%rbp), %rax
movl -0x4(%rax), %eax
addl $0x1, %eax
movq -0x48(%rbp), %rcx
cmpl -0x8(%rcx), %eax
jl 0x23bc0
movq -0x48(%rbp), %rdi
movl $0x1, %esi
movl $0x18, %edx
callq 0x70760
movq %rax, -0x48(%rbp)
jmp 0x23bc2
jmp 0x23bc2
movq -0x48(%rbp), %rax
movq -0x48(%rbp), %rdx
movl -0x4(%rdx), %ecx
movl %ecx, %esi
addl $0x1, %esi
movl %esi, -0x4(%rdx)
movslq %ecx, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq -0x128(%rbp), %rcx
movq %rcx, (%rax)
movq -0x120(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0x118(%rbp), %rcx
movq %rcx, 0x10(%rax)
jmp 0x23c01
movl -0xd4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xd4(%rbp)
jmp 0x239cf
cmpq $0x0, -0x48(%rbp)
je 0x23c2b
movq -0x48(%rbp), %rax
movl -0x4(%rax), %eax
movl %eax, -0x158(%rbp)
jmp 0x23c35
xorl %eax, %eax
movl %eax, -0x158(%rbp)
jmp 0x23c35
movl -0x158(%rbp), %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x7c(%rax)
movq -0x48(%rbp), %rdi
movl $0x18, %esi
callq 0x70840
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x50(%rax)
movq -0x18(%rbp), %rax
cmpl $0x0, 0x7c(%rax)
je 0x23c75
movq -0x18(%rbp), %rax
movl 0x58(%rax), %ecx
orl $0x40000, %ecx          # imm = 0x40000
movl %ecx, 0x58(%rax)
movq -0x8(%rbp), %rdi
callq 0x20600
movq -0x18(%rbp), %rdi
callq 0x1a1e0
movq -0x18(%rbp), %rdi
callq 0x19f70
movq -0x18(%rbp), %rax
addq $0x160, %rsp            # imm = 0x160
popq %rbp
retq
nopl (%rax)