// File: sharmaeklavya2[P]ddos-on-anycast/src/lib/network.cpp
// Function: Network::long_sanity_check() const
bool Network::long_sanity_check() const {
    if(!basic_sanity_check()) {
        return false;
    }
    int s = 0;

    typedef const nbrs_list_t* pnbrs_list_t;
    pnbrs_list_t nbrs_ptrs[] = {&in_nbrs, &side_nbrs, &up_nbrs, &down_nbrs};
    const char* nbrs_names[] = {"in_nbrs", "side_nbrs", "up_nbrs", "down_nbrs"};

    // consistency of nid and netsize
    ivec netsize2(size(), 0);
    for(int vnode: nid) {
        if(vnode >= 0) {
            netsize2[vnode]++;
        }
    }

    int height2 = 0;
    for(int u=0; u<size(); ++u) {
        if(netsize[u] == 0 && depth[u] > height2) {
            height2 = depth[u];
        }
    }
    if(height2 != height()) {
        fprintf(stderr, "height should be %d instead of %d\n", height2, height());
        return false;
    }

    for(int i=0; i<=height(); ++i) {
        for(int u: depthwise[i]) {
            if(depth[u] != i) {
                fprintf(stderr, "%d is in depthwise[%d] but has depth %d\n", u, i, depth[u]);
            }
        }
    }

    for(int u=0; u<size(); ++u) {

        // consistency of nid and netsize
        if(netsize[u] != netsize2[u]) {
            fprintf(stderr, "netsize[%d] is %d instead of %d\n", u, netsize[u], netsize2[u]);
            return false;
        }

        // no self-loops are allowed
        for(int i=0; i<4; ++i) {
            for(int v: (*(nbrs_ptrs[i]))[u]) {
                if(v == u) {
                    fprintf(stderr, "%s[%d] contains itself\n", nbrs_names[i], u);
                    return false;
                }
            }
        }

        if(is_virtual(u)) {
            // virtual node shouldn't have any in_nbrs
            if(in_nbrs[u].size() > 0) {
                fprintf(stderr, "virtual node %d has in_nbrs ", u);
                cerr << in_nbrs[u] << endl;
                return false;
            }
            /*
            else if(down_nbrs[u].size() > 0) {
                fprintf(stderr, "virtual node %d has down_nbrs ", u);
                cerr << down_nbrs[u] << endl;
                return false;
            }
            */
        }
        else {
            s += degree(u);
            // Network should be symmetric because it is undirected
            for(int v: in_nbrs[u]) {
                if(find(in_nbrs[v], u) == in_nbrs[v].end()) {
                    fprintf(stderr, "in_nbrs[%d] has %d but in_nbrs[%d] doesn't have %d\n", u, v, v, u);
                    return false;
                }
                if(is_virtual(v)) {
                    fprintf(stderr, "in_nbrs[%d] has virtual node %d\n", u, v);
                    return false;
                }
            }
            for(int v: side_nbrs[u]) {
                if(find(side_nbrs[v], u) == side_nbrs[v].end()) {
                    fprintf(stderr, "side_nbrs[%d] has %d but side_nbrs[%d] doesn't have %d\n", u, v, v, u);
                    return false;
                }
                if(is_virtual(v)) {
                    fprintf(stderr, "side_nbrs[%d] has virtual node %d\n", u, v);
                    return false;
                }
                /*
                int nid_u = nid[u];
                if(nid_u >= 0) {
                    if(find(side_nbrs[nid_u], v) == side_nbrs[nid_u].end()) {
                        fprintf(stderr, "%d has a side_nbr %d but %d's nid doesn't\n", u, v, u);
                        return false;
                    }
                }
                */
            }
            for(int v: up_nbrs[u]) {
                if(find(down_nbrs[v], u) == down_nbrs[v].end()) {
                    fprintf(stderr, "up_nbrs[%d] has %d but down_nbrs[%d] doesn't have %d\n", u, v, v, u);
                    return false;
                }
                if(is_virtual(v)) {
                    fprintf(stderr, "up_nbrs[%d] has virtual node %d\n", u, v);
                    return false;
                }
                /*
                int nid_u = nid[u];
                if(nid_u >= 0) {
                    if(find(up_nbrs[nid_u], v) == up_nbrs[nid_u].end()) {
                        fprintf(stderr, "%d has a up_nbr %d but %d's nid doesn't\n", u, v, u);
                        return false;
                    }
                }
                */
            }
            for(int v: down_nbrs[u]) {
                if(find(up_nbrs[v], u) == up_nbrs[v].end()) {
                    fprintf(stderr, "down_nbrs[%d] has %d but up_nbrs[%d] doesn't have %d\n", u, v, v, u);
                    return false;
                }
                if(is_virtual(v)) {
                    fprintf(stderr, "down_nbrs[%d] has virtual node %d\n", u, v);
                    return false;
                }
            }
        }
    }
    if(s % 2 != 0) {
        fprintf(stderr, "Degree sum is odd.\n");
        return false;
    }
    return true;
}

// Assembly:
subq $0x288, %rsp            # imm = 0x288
movq %rdi, 0x278(%rsp)
movq 0x278(%rsp), %rdi
movq %rdi, 0xc0(%rsp)
callq 0x3440
testb $0x1, %al
jne 0x3625
movb $0x0, 0x287(%rsp)
jmp 0x4586
movq 0xc0(%rsp), %rdi
movl $0x0, 0x274(%rsp)
movq %rdi, %rax
addq $0x48, %rax
movq %rax, 0x250(%rsp)
movq %rdi, %rax
addq $0x60, %rax
movq %rax, 0x258(%rsp)
movq %rdi, %rax
addq $0x78, %rax
movq %rax, 0x260(%rsp)
movq %rdi, %rax
addq $0x90, %rax
movq %rax, 0x268(%rsp)
movaps 0x29713(%rip), %xmm0    # 0x2cd90
movaps %xmm0, 0x240(%rsp)
movaps 0x296f4(%rip), %xmm0    # 0x2cd80
movaps %xmm0, 0x230(%rsp)
callq 0x4950
cltq
movq %rax, 0xb0(%rsp)
movl $0x0, 0x214(%rsp)
leaq 0x213(%rsp), %rdi
movq %rdi, 0xb8(%rsp)
callq 0x4f40
movq 0xb0(%rsp), %rsi
movq 0xb8(%rsp), %rcx
leaq 0x218(%rsp), %rdi
leaq 0x214(%rsp), %rdx
callq 0x4f50
jmp 0x36ea
leaq 0x213(%rsp), %rdi
callq 0x4fd0
movq 0xc0(%rsp), %rax
movq %rax, 0x1f8(%rsp)
movq 0x1f8(%rsp), %rdi
callq 0x4880
movq %rax, 0x1f0(%rsp)
movq 0x1f8(%rsp), %rdi
callq 0x48b0
movq %rax, 0x1e8(%rsp)
leaq 0x1f0(%rsp), %rdi
leaq 0x1e8(%rsp), %rsi
callq 0x48e0
testb $0x1, %al
jne 0x374c
jmp 0x37c4
leaq 0x1f0(%rsp), %rdi
callq 0x4920
movl (%rax), %eax
movl %eax, 0x1e4(%rsp)
cmpl $0x0, 0x1e4(%rsp)
jl 0x37b0
movslq 0x1e4(%rsp), %rsi
leaq 0x218(%rsp), %rdi
callq 0x4860
movl (%rax), %ecx
addl $0x1, %ecx
movl %ecx, (%rax)
jmp 0x37b0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x208(%rsp)
movl %eax, 0x204(%rsp)
leaq 0x213(%rsp), %rdi
callq 0x4fd0
jmp 0x4597
jmp 0x37b2
leaq 0x1f0(%rsp), %rdi
callq 0x4930
jmp 0x3731
movl $0x0, 0x1e0(%rsp)
movl $0x0, 0x1dc(%rsp)
movq 0xc0(%rsp), %rdi
movl 0x1dc(%rsp), %eax
movl %eax, 0xa8(%rsp)
callq 0x4950
movl %eax, 0xac(%rsp)
jmp 0x37fe
movl 0xa8(%rsp), %eax
movl 0xac(%rsp), %ecx
cmpl %ecx, %eax
jge 0x38b8
movq 0xc0(%rsp), %rdi
addq $0x18, %rdi
movslq 0x1dc(%rsp), %rsi
callq 0x4970
cmpl $0x0, (%rax)
jne 0x38a0
movq 0xc0(%rsp), %rdi
addq $0x30, %rdi
movslq 0x1dc(%rsp), %rsi
callq 0x4970
movl (%rax), %eax
cmpl 0x1e0(%rsp), %eax
jle 0x38a0
movq 0xc0(%rsp), %rdi
addq $0x30, %rdi
movslq 0x1dc(%rsp), %rsi
callq 0x4970
movl (%rax), %eax
movl %eax, 0x1e0(%rsp)
jmp 0x38a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x208(%rsp)
movl %eax, 0x204(%rsp)
leaq 0x218(%rsp), %rdi
callq 0x5020
jmp 0x4597
jmp 0x38a2
movl 0x1dc(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x1dc(%rsp)
jmp 0x37da
movq 0xc0(%rsp), %rdi
movl 0x1e0(%rsp), %eax
movl %eax, 0xa0(%rsp)
callq 0x4f20
movl %eax, 0xa4(%rsp)
jmp 0x38dc
movl 0xa0(%rsp), %eax
movl 0xa4(%rsp), %ecx
cmpl %ecx, %eax
je 0x3960
movq 0xc0(%rsp), %rdi
movq 0x296cb(%rip), %rax     # 0x2cfc8
movq (%rax), %rax
movq %rax, 0x90(%rsp)
movl 0x1e0(%rsp), %eax
movl %eax, 0x98(%rsp)
callq 0x4f20
movl %eax, 0x9c(%rsp)
jmp 0x3924
movl 0x9c(%rsp), %ecx
movl 0x98(%rsp), %edx
movq 0x90(%rsp), %rdi
leaq 0x1d8be(%rip), %rsi     # 0x211ff
movb $0x0, %al
callq 0x2180
movb $0x0, 0x287(%rsp)
movl $0x1, 0x1d8(%rsp)
jmp 0x4579
movl $0x0, 0x1d4(%rsp)
movq 0xc0(%rsp), %rdi
movl 0x1d4(%rsp), %eax
movl %eax, 0x88(%rsp)
callq 0x4f20
movl %eax, 0x8c(%rsp)
jmp 0x398f
movl 0x88(%rsp), %eax
movl 0x8c(%rsp), %ecx
cmpl %ecx, %eax
jg 0x3adf
movq 0xc0(%rsp), %rdi
addq $0xa8, %rdi
movslq 0x1d4(%rsp), %rsi
callq 0x4a60
movq %rax, 0x1c8(%rsp)
movq 0x1c8(%rsp), %rdi
callq 0x4880
movq %rax, 0x1c0(%rsp)
movq 0x1c8(%rsp), %rdi
callq 0x48b0
movq %rax, 0x1b8(%rsp)
leaq 0x1c0(%rsp), %rdi
leaq 0x1b8(%rsp), %rsi
callq 0x48e0
testb $0x1, %al
jne 0x3a11
jmp 0x3ac7
leaq 0x1c0(%rsp), %rdi
callq 0x4920
movq 0xc0(%rsp), %rdi
movl (%rax), %eax
movl %eax, 0x1b4(%rsp)
addq $0x30, %rdi
movslq 0x1b4(%rsp), %rsi
callq 0x4970
movl (%rax), %eax
cmpl 0x1d4(%rsp), %eax
je 0x3ab3
movq 0xc0(%rsp), %rdi
movq 0x2956e(%rip), %rax     # 0x2cfc8
movq (%rax), %rax
movq %rax, 0x78(%rsp)
movl 0x1b4(%rsp), %eax
movl %eax, 0x80(%rsp)
movl 0x1d4(%rsp), %eax
movl %eax, 0x84(%rsp)
addq $0x30, %rdi
movslq 0x1b4(%rsp), %rsi
callq 0x4970
movq 0x78(%rsp), %rdi
movl 0x80(%rsp), %edx
movl 0x84(%rsp), %ecx
movl (%rax), %r8d
leaq 0x1d776(%rip), %rsi     # 0x21222
movb $0x0, %al
callq 0x2180
jmp 0x3ab5
leaq 0x1c0(%rsp), %rdi
callq 0x4930
jmp 0x39f3
jmp 0x3ac9
movl 0x1d4(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x1d4(%rsp)
jmp 0x396b
movl $0x0, 0x1b0(%rsp)
movq 0xc0(%rsp), %rdi
movl 0x1b0(%rsp), %eax
movl %eax, 0x70(%rsp)
callq 0x4950
movl %eax, 0x74(%rsp)
jmp 0x3b08
movl 0x70(%rsp), %eax
movl 0x74(%rsp), %ecx
cmpl %ecx, %eax
jge 0x4525
movq 0xc0(%rsp), %rdi
addq $0x18, %rdi
movslq 0x1b0(%rsp), %rsi
callq 0x4970
movl (%rax), %eax
movl %eax, 0x6c(%rsp)
movslq 0x1b0(%rsp), %rsi
leaq 0x218(%rsp), %rdi
callq 0x4860
movq %rax, %rcx
movl 0x6c(%rsp), %eax
cmpl (%rcx), %eax
je 0x3bdf
movq 0xc0(%rsp), %rdi
movq 0x2945e(%rip), %rax     # 0x2cfc8
movq (%rax), %rax
movq %rax, 0x58(%rsp)
movl 0x1b0(%rsp), %eax
movl %eax, 0x64(%rsp)
addq $0x18, %rdi
movslq 0x1b0(%rsp), %rsi
callq 0x4970
movl (%rax), %eax
movl %eax, 0x68(%rsp)
movslq 0x1b0(%rsp), %rsi
leaq 0x218(%rsp), %rdi
callq 0x4860
movq 0x58(%rsp), %rdi
movl 0x64(%rsp), %edx
movl 0x68(%rsp), %ecx
movl (%rax), %r8d
leaq 0x1d68b(%rip), %rsi     # 0x2124b
movb $0x0, %al
callq 0x2180
movb $0x0, 0x287(%rsp)
movl $0x1, 0x1d8(%rsp)
jmp 0x4579
movl $0x0, 0x1ac(%rsp)
cmpl $0x4, 0x1ac(%rsp)
jge 0x3cfe
movslq 0x1ac(%rsp), %rax
movq 0x250(%rsp,%rax,8), %rdi
movslq 0x1b0(%rsp), %rsi
callq 0x4a60
movq %rax, 0x1a0(%rsp)
movq 0x1a0(%rsp), %rdi
callq 0x4880
movq %rax, 0x198(%rsp)
movq 0x1a0(%rsp), %rdi
callq 0x48b0
movq %rax, 0x190(%rsp)
leaq 0x198(%rsp), %rdi
leaq 0x190(%rsp), %rsi
callq 0x48e0
testb $0x1, %al
jne 0x3c65
jmp 0x3ce6
leaq 0x198(%rsp), %rdi
callq 0x4920
movl (%rax), %eax
movl %eax, 0x18c(%rsp)
movl 0x18c(%rsp), %eax
cmpl 0x1b0(%rsp), %eax
jne 0x3cd2
movq 0x29336(%rip), %rax     # 0x2cfc8
movq (%rax), %rdi
movslq 0x1ac(%rsp), %rax
movq 0x230(%rsp,%rax,8), %rdx
movl 0x1b0(%rsp), %ecx
leaq 0x1d5b9(%rip), %rsi     # 0x2126c
movb $0x0, %al
callq 0x2180
movb $0x0, 0x287(%rsp)
movl $0x1, 0x1d8(%rsp)
jmp 0x4579
jmp 0x3cd4
leaq 0x198(%rsp), %rdi
callq 0x4930
jmp 0x3c47
jmp 0x3ce8
movl 0x1ac(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x1ac(%rsp)
jmp 0x3bea
movq 0xc0(%rsp), %rdi
movl 0x1b0(%rsp), %esi
callq 0x4830
movb %al, 0x57(%rsp)
jmp 0x3d18
movb 0x57(%rsp), %al
testb $0x1, %al
jne 0x3d25
jmp 0x3dca
movq 0xc0(%rsp), %rdi
addq $0x48, %rdi
movslq 0x1b0(%rsp), %rsi
callq 0x4a60
movq %rax, %rdi
callq 0x4f00
cmpq $0x0, %rax
jbe 0x3dc5
movq 0x29275(%rip), %rax     # 0x2cfc8
movq (%rax), %rdi
movl 0x1b0(%rsp), %edx
leaq 0x1d520(%rip), %rsi     # 0x21284
xorl %eax, %eax
callq 0x2180
movq 0xc0(%rsp), %rdi
addq $0x48, %rdi
movslq 0x1b0(%rsp), %rsi
callq 0x4a60
movq %rax, %rsi
movq 0x2925a(%rip), %rdi     # 0x2cfe8
callq 0x4ce0
movq %rax, 0x48(%rsp)
jmp 0x3d9a
movq 0x48(%rsp), %rdi
movq 0x29212(%rip), %rsi     # 0x2cfb8
callq 0x2170
jmp 0x3dad
movb $0x0, 0x287(%rsp)
movl $0x1, 0x1d8(%rsp)
jmp 0x4579
jmp 0x450d
movq 0xc0(%rsp), %rdi
movl 0x1b0(%rsp), %esi
callq 0x4990
movl %eax, 0x44(%rsp)
jmp 0x3de4
movq 0xc0(%rsp), %rdi
movl 0x44(%rsp), %eax
addl 0x274(%rsp), %eax
movl %eax, 0x274(%rsp)
addq $0x48, %rdi
movslq 0x1b0(%rsp), %rsi
callq 0x4a60
movq %rax, 0x180(%rsp)
movq 0x180(%rsp), %rdi
callq 0x4880
movq %rax, 0x178(%rsp)
movq 0x180(%rsp), %rdi
callq 0x48b0
movq %rax, 0x170(%rsp)
leaq 0x178(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x48e0
testb $0x1, %al
jne 0x3e5f
jmp 0x3fb9
leaq 0x178(%rsp), %rdi
callq 0x4920
movq 0xc0(%rsp), %rdi
movl (%rax), %eax
movl %eax, 0x16c(%rsp)
addq $0x48, %rdi
movslq 0x16c(%rsp), %rsi
callq 0x4a60
movq %rax, %rdi
movl 0x1b0(%rsp), %esi
callq 0x45b0
movq %rax, 0x38(%rsp)
jmp 0x3ea4
movq 0xc0(%rsp), %rdi
movq 0x38(%rsp), %rax
movq %rax, 0x160(%rsp)
addq $0x48, %rdi
movslq 0x16c(%rsp), %rsi
callq 0x4a60
movq %rax, %rdi
callq 0x48b0
movq %rax, 0x158(%rsp)
leaq 0x160(%rsp), %rdi
leaq 0x158(%rsp), %rsi
callq 0x4fe0
testb $0x1, %al
jne 0x3ef5
jmp 0x3f43
movq 0x290cc(%rip), %rax     # 0x2cfc8
movq (%rax), %rdi
movl 0x1b0(%rsp), %edx
movl 0x16c(%rsp), %ecx
movl 0x16c(%rsp), %r8d
movl 0x1b0(%rsp), %r9d
leaq 0x1d37d(%rip), %rsi     # 0x212a1
movb $0x0, %al
callq 0x2180
movb $0x0, 0x287(%rsp)
movl $0x1, 0x1d8(%rsp)
jmp 0x4579
movq 0xc0(%rsp), %rdi
movl 0x16c(%rsp), %esi
callq 0x4830
movb %al, 0x37(%rsp)
jmp 0x3f5d
movb 0x37(%rsp), %al
testb $0x1, %al
jne 0x3f67
jmp 0x3fa5
movq 0x2905a(%rip), %rax     # 0x2cfc8
movq (%rax), %rdi
movl 0x1b0(%rsp), %edx
movl 0x16c(%rsp), %ecx
leaq 0x1d34f(%rip), %rsi     # 0x212d5
movb $0x0, %al
callq 0x2180
movb $0x0, 0x287(%rsp)
movl $0x1, 0x1d8(%rsp)
jmp 0x4579
jmp 0x3fa7
leaq 0x178(%rsp), %rdi
callq 0x4930
jmp 0x3e41
movq 0xc0(%rsp), %rdi
addq $0x60, %rdi
movslq 0x1b0(%rsp), %rsi
callq 0x4a60
movq %rax, 0x150(%rsp)
movq 0x150(%rsp), %rdi
callq 0x4880
movq %rax, 0x148(%rsp)
movq 0x150(%rsp), %rdi
callq 0x48b0
movq %rax, 0x140(%rsp)
leaq 0x148(%rsp), %rdi
leaq 0x140(%rsp), %rsi
callq 0x48e0
testb $0x1, %al
jne 0x4022
jmp 0x417c
leaq 0x148(%rsp), %rdi
callq 0x4920
movq 0xc0(%rsp), %rdi
movl (%rax), %eax
movl %eax, 0x13c(%rsp)
addq $0x60, %rdi
movslq 0x13c(%rsp), %rsi
callq 0x4a60
movq %rax, %rdi
movl 0x1b0(%rsp), %esi
callq 0x45b0
movq %rax, 0x28(%rsp)
jmp 0x4067
movq 0xc0(%rsp), %rdi
movq 0x28(%rsp), %rax
movq %rax, 0x130(%rsp)
addq $0x60, %rdi
movslq 0x13c(%rsp), %rsi
callq 0x4a60
movq %rax, %rdi
callq 0x48b0
movq %rax, 0x128(%rsp)
leaq 0x130(%rsp), %rdi
leaq 0x128(%rsp), %rsi
callq 0x4fe0
testb $0x1, %al
jne 0x40b8
jmp 0x4106
movq 0x28f09(%rip), %rax     # 0x2cfc8
movq (%rax), %rdi
movl 0x1b0(%rsp), %edx
movl 0x13c(%rsp), %ecx
movl 0x13c(%rsp), %r8d
movl 0x1b0(%rsp), %r9d
leaq 0x1d20f(%rip), %rsi     # 0x212f6
movb $0x0, %al
callq 0x2180
movb $0x0, 0x287(%rsp)
movl $0x1, 0x1d8(%rsp)
jmp 0x4579
movq 0xc0(%rsp), %rdi
movl 0x13c(%rsp), %esi
callq 0x4830
movb %al, 0x27(%rsp)
jmp 0x4120
movb 0x27(%rsp), %al
testb $0x1, %al
jne 0x412a
jmp 0x4168
movq 0x28e97(%rip), %rax     # 0x2cfc8
movq (%rax), %rdi
movl 0x1b0(%rsp), %edx
movl 0x13c(%rsp), %ecx
leaq 0x1d1e5(%rip), %rsi     # 0x2132e
movb $0x0, %al
callq 0x2180
movb $0x0, 0x287(%rsp)
movl $0x1, 0x1d8(%rsp)
jmp 0x4579
jmp 0x416a
leaq 0x148(%rsp), %rdi
callq 0x4930
jmp 0x4004
movq 0xc0(%rsp), %rdi
addq $0x78, %rdi
movslq 0x1b0(%rsp), %rsi
callq 0x4a60
movq %rax, 0x120(%rsp)
movq 0x120(%rsp), %rdi
callq 0x4880
movq %rax, 0x118(%rsp)
movq 0x120(%rsp), %rdi
callq 0x48b0
movq %rax, 0x110(%rsp)
leaq 0x118(%rsp), %rdi
leaq 0x110(%rsp), %rsi
callq 0x48e0
testb $0x1, %al
jne 0x41e5
jmp 0x4345
leaq 0x118(%rsp), %rdi
callq 0x4920
movq 0xc0(%rsp), %rdi
movl (%rax), %eax
movl %eax, 0x10c(%rsp)
addq $0x90, %rdi
movslq 0x10c(%rsp), %rsi
callq 0x4a60
movq %rax, %rdi
movl 0x1b0(%rsp), %esi
callq 0x45b0
movq %rax, 0x18(%rsp)
jmp 0x422d
movq 0xc0(%rsp), %rdi
movq 0x18(%rsp), %rax
movq %rax, 0x100(%rsp)
addq $0x90, %rdi
movslq 0x10c(%rsp), %rsi
callq 0x4a60
movq %rax, %rdi
callq 0x48b0
movq %rax, 0xf8(%rsp)
leaq 0x100(%rsp), %rdi
leaq 0xf8(%rsp), %rsi
callq 0x4fe0
testb $0x1, %al
jne 0x4281
jmp 0x42cf
movq 0x28d40(%rip), %rax     # 0x2cfc8
movq (%rax), %rdi
movl 0x1b0(%rsp), %edx
movl 0x10c(%rsp), %ecx
movl 0x10c(%rsp), %r8d
movl 0x1b0(%rsp), %r9d
leaq 0x1d0a1(%rip), %rsi     # 0x21351
movb $0x0, %al
callq 0x2180
movb $0x0, 0x287(%rsp)
movl $0x1, 0x1d8(%rsp)
jmp 0x4579
movq 0xc0(%rsp), %rdi
movl 0x10c(%rsp), %esi
callq 0x4830
movb %al, 0x17(%rsp)
jmp 0x42e9
movb 0x17(%rsp), %al
testb $0x1, %al
jne 0x42f3
jmp 0x4331
movq 0x28cce(%rip), %rax     # 0x2cfc8
movq (%rax), %rdi
movl 0x1b0(%rsp), %edx
movl 0x10c(%rsp), %ecx
leaq 0x1d075(%rip), %rsi     # 0x21387
movb $0x0, %al
callq 0x2180
movb $0x0, 0x287(%rsp)
movl $0x1, 0x1d8(%rsp)
jmp 0x4579
jmp 0x4333
leaq 0x118(%rsp), %rdi
callq 0x4930
jmp 0x41c7
movq 0xc0(%rsp), %rdi
addq $0x90, %rdi
movslq 0x1b0(%rsp), %rsi
callq 0x4a60
movq %rax, 0xf0(%rsp)
movq 0xf0(%rsp), %rdi
callq 0x4880
movq %rax, 0xe8(%rsp)
movq 0xf0(%rsp), %rdi
callq 0x48b0
movq %rax, 0xe0(%rsp)
leaq 0xe8(%rsp), %rdi
leaq 0xe0(%rsp), %rsi
callq 0x48e0
testb $0x1, %al
jne 0x43b1
jmp 0x450b
leaq 0xe8(%rsp), %rdi
callq 0x4920
movq 0xc0(%rsp), %rdi
movl (%rax), %eax
movl %eax, 0xdc(%rsp)
addq $0x78, %rdi
movslq 0xdc(%rsp), %rsi
callq 0x4a60
movq %rax, %rdi
movl 0x1b0(%rsp), %esi
callq 0x45b0
movq %rax, 0x8(%rsp)
jmp 0x43f6
movq 0xc0(%rsp), %rdi
movq 0x8(%rsp), %rax
movq %rax, 0xd0(%rsp)
addq $0x78, %rdi
movslq 0xdc(%rsp), %rsi
callq 0x4a60
movq %rax, %rdi
callq 0x48b0
movq %rax, 0xc8(%rsp)
leaq 0xd0(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x4fe0
testb $0x1, %al
jne 0x4447
jmp 0x4495
movq 0x28b7a(%rip), %rax     # 0x2cfc8
movq (%rax), %rdi
movl 0x1b0(%rsp), %edx
movl 0xdc(%rsp), %ecx
movl 0xdc(%rsp), %r8d
movl 0x1b0(%rsp), %r9d
leaq 0x1cf32(%rip), %rsi     # 0x213a8
movb $0x0, %al
callq 0x2180
movb $0x0, 0x287(%rsp)
movl $0x1, 0x1d8(%rsp)
jmp 0x4579
movq 0xc0(%rsp), %rdi
movl 0xdc(%rsp), %esi
callq 0x4830
movb %al, 0x7(%rsp)
jmp 0x44af
movb 0x7(%rsp), %al
testb $0x1, %al
jne 0x44b9
jmp 0x44f7
movq 0x28b08(%rip), %rax     # 0x2cfc8
movq (%rax), %rdi
movl 0x1b0(%rsp), %edx
movl 0xdc(%rsp), %ecx
leaq 0x1cf06(%rip), %rsi     # 0x213de
movb $0x0, %al
callq 0x2180
movb $0x0, 0x287(%rsp)
movl $0x1, 0x1d8(%rsp)
jmp 0x4579
jmp 0x44f9
leaq 0xe8(%rsp), %rdi
callq 0x4930
jmp 0x4393
jmp 0x450d
jmp 0x450f
movl 0x1b0(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x1b0(%rsp)
jmp 0x3aea
movl 0x274(%rsp), %eax
movl $0x2, %ecx
cltd
idivl %ecx
cmpl $0x0, %edx
je 0x4566
movq 0x28a88(%rip), %rax     # 0x2cfc8
movq (%rax), %rdi
leaq 0x1cb26(%rip), %rsi     # 0x21070
movb $0x0, %al
callq 0x2180
movb $0x0, 0x287(%rsp)
movl $0x1, 0x1d8(%rsp)
jmp 0x4579
movb $0x1, 0x287(%rsp)
movl $0x1, 0x1d8(%rsp)
leaq 0x218(%rsp), %rdi
callq 0x5020
movb 0x287(%rsp), %al
andb $0x1, %al
addq $0x288, %rsp            # imm = 0x288
retq
movq 0x208(%rsp), %rdi
callq 0x21f0
nopw %cs:(%rax,%rax)