// File: /workspace/github_c_makefile_star2_O0/yangtau[P]hedgehog/src/test/hashset_test.c
// Function: test_hashset
void test_hashset() {
    struct hg_hashset set;
    hg_hashset_init(&set, 2, hash_int, eq_int);

    const size_t N = 192 * 1024;

    // put and contains
    duration_t start = now();
    for (size_t i = 0; i < N; i++) {
        hg_hashset_put(&set, (void*)(uint64_t)i);
    }
    duration_t elapsed = since(start);
    test_println("hashset put: %zu items in %s", N, duration2str(elapsed, MACROSEC));
    test_println("hashset put %zu ns/op", (elapsed / MACROSEC * 1000) / N);
    test_println("hashset load factor: %f", (float)set.len / set.capacity);
    test_println("hashset cap: %zu", set.capacity);

    test_assert(hg_hashset_len(&set) == N);

    // get
    start = now();
    for (size_t i = 0; i < N; i++) {
        test_assert(hg_hashset_get(&set, (void*)(uint64_t)i) == (void*)(uint64_t)i);
    }
    elapsed = since(start);
    test_println("hashset get %zu ns/op", (elapsed / MACROSEC * 1000) / N);

    // contains
    start = now();
    for (size_t i = 0; i < N; i++) {
        test_assert(hg_hashset_contains(&set, (void*)(uint64_t)i));
    }
    elapsed = since(start);
    test_println("hashset contains %zu ns/op", (elapsed / MACROSEC * 1000) / N);

    // remove
    start = now();
    for (size_t i = 0; i < N; i++) {
        test_assert(hg_hashset_remove(&set, (void*)(uint64_t)i) == (void*)(uint64_t)i);
    }
    elapsed = since(start);
    test_println("hashset remove %zu ns/op", (elapsed / MACROSEC * 1000) / N);

    test_assert(hg_hashset_len(&set) == 0);

    // put again
    for (size_t i = 0; i < N; i++) {
        test_assert(!hg_hashset_contains(&set, (void*)(uint64_t)i));
        hg_hashset_put(&set, (void*)(uint64_t)i);
        test_assert(hg_hashset_contains(&set, (void*)(uint64_t)i));
    }
    test_assert(hg_hashset_len(&set) == N);

    // remove even numbers
    for (size_t i = 0; i < N; i += 2) {
        test_assert(hg_hashset_remove(&set, (void*)(uint64_t)i) == (void*)(uint64_t)i);
        test_assert(!hg_hashset_contains(&set, (void*)(uint64_t)i));
    }
    test_assert(hg_hashset_len(&set) == N / 2);

    // remove odd numbers
    for (size_t i = 1; i < N; i += 2) {
        test_assert(hg_hashset_remove(&set, (void*)(uint64_t)i) == (void*)(uint64_t)i);
        test_assert(!hg_hashset_contains(&set, (void*)(uint64_t)i));
    }
    test_assert(hg_hashset_len(&set) == 0);

    // clear
    hg_hashset_clear(&set);
    test_assert(hg_hashset_len(&set) == 0);

    // get again (expect NULL)
    for (size_t i = 0; i < N; i++) {
        test_assert(hg_hashset_get(&set, (void*)(uint64_t)i) == NULL);
    }
    test_assert(hg_hashset_len(&set) == 0);

    // destroy & init again
    hg_hashset_destroy(&set);
    hg_hashset_init(&set, 16, hash_int, eq_int);

    // put 0 ~ N-1
    for (size_t i = 0; i < N; i++) {
        hg_hashset_put(&set, (void*)(uint64_t)i);
    }
    test_assert(hg_hashset_len(&set) == N);

    // put N~2N-1, remove 0~N-1
    for (size_t i = 0; i < N; i++) {
        uint64_t x = i + N;
        test_assert(hg_hashset_remove(&set, (void*)(uint64_t)i) == (void*)(uint64_t)i);
        hg_hashset_put(&set, (void*)x);

        test_assert(hg_hashset_contains(&set, (void*)x));
        test_assert(!hg_hashset_contains(&set, (void*)(uint64_t)i));
    }
    test_assert(hg_hashset_len(&set) == N);

    // put 0~N-1, remove N~2N-1
    for (size_t i = 0; i < N; i++) {
        uint64_t x = i + N;
        hg_hashset_put(&set, (void*)(uint64_t)i);
        test_assert(hg_hashset_remove(&set, (void*)x) == (void*)x);

        test_assert(hg_hashset_contains(&set, (void*)(uint64_t)i));
        test_assert(!hg_hashset_contains(&set, (void*)x));
    }
    test_assert(hg_hashset_len(&set) == N);

    // put N~2N-1
    for (size_t i = 0; i < N; i++) {
        uint64_t x = i + N;
        hg_hashset_put(&set, (void*)x);
        test_assert(hg_hashset_contains(&set, (void*)x));
    }
    test_assert(hg_hashset_len(&set) == 2 * N);

    hg_hashset_destroy(&set);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xe0, %rsp
leaq -0x30(%rbp), %rdi
movl $0x2, %esi
leaq -0xab(%rip), %rdx       # 0x18b0
leaq -0x82(%rip), %rcx       # 0x18e0
callq 0x11f0
movq $0x30000, -0x38(%rbp)   # imm = 0x30000
callq 0x2990
movq %rax, -0x40(%rbp)
movq $0x0, -0x48(%rbp)
cmpq $0x30000, -0x48(%rbp)   # imm = 0x30000
jae 0x19a5
movq -0x48(%rbp), %rsi
leaq -0x30(%rbp), %rdi
callq 0x12e0
movq -0x48(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x48(%rbp)
jmp 0x1980
movq -0x40(%rbp), %rdi
callq 0x2650
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rdi
movl $0x1, %esi
callq 0x2670
movq %rax, %rdx
leaq 0x168a(%rip), %rdi      # 0x3054
xorl %eax, %eax
movb %al, -0xd1(%rbp)
movl $0x30000, %esi          # imm = 0x30000
callq 0x1070
movq -0x50(%rbp), %rax
imulq $0x3e8, %rax, %rax      # imm = 0x3E8
movabsq $-0x5555555555555555, %rcx # imm = 0xAAAAAAAAAAAAAAAB
mulq %rcx
movb -0xd1(%rbp), %al
movq %rdx, %rsi
shrq $0x11, %rsi
leaq 0x1678(%rip), %rdi      # 0x3080
callq 0x1070
movq -0x30(%rbp), %rax
movq %rax, -0xd0(%rbp)
movq -0x28(%rbp), %rax
movq %rax, %rdx
shrq %rdx
movl %eax, %ecx
andl $0x1, %ecx
orq %rdx, %rcx
cvtsi2ss %rcx, %xmm0
addss %xmm0, %xmm0
cvtsi2ss %rax, %xmm1
movss %xmm1, -0xc8(%rbp)
testq %rax, %rax
movss %xmm0, -0xc4(%rbp)
js 0x1a5d
movss -0xc8(%rbp), %xmm0
movss %xmm0, -0xc4(%rbp)
movq -0xd0(%rbp), %rax
movss -0xc4(%rbp), %xmm0
movss %xmm0, -0xe0(%rbp)
movq %rax, %rdx
shrq %rdx
movl %eax, %ecx
andl $0x1, %ecx
orq %rdx, %rcx
cvtsi2ss %rcx, %xmm0
addss %xmm0, %xmm0
cvtsi2ss %rax, %xmm1
movss %xmm1, -0xdc(%rbp)
testq %rax, %rax
movss %xmm0, -0xd8(%rbp)
js 0x1ab5
movss -0xdc(%rbp), %xmm0
movss %xmm0, -0xd8(%rbp)
movss -0xe0(%rbp), %xmm0
movss -0xd8(%rbp), %xmm1
divss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
leaq 0x15d1(%rip), %rdi      # 0x30a5
movb $0x1, %al
callq 0x1070
movq -0x30(%rbp), %rsi
leaq 0x15e6(%rip), %rdi      # 0x30cc
movb $0x0, %al
callq 0x1070
leaq -0x30(%rbp), %rdi
callq 0x2710
cmpq $0x30000, %rax          # imm = 0x30000
jne 0x1b00
jmp 0x1b32
movq 0x34f1(%rip), %rax      # 0x4ff8
movq (%rax), %rdi
leaq 0x15db(%rip), %rsi      # 0x30ec
leaq 0x1600(%rip), %rdx      # 0x3118
movl $0x26, %ecx
leaq 0x1603(%rip), %r8       # 0x3127
leaq 0x1609(%rip), %r9       # 0x3134
movb $0x0, %al
callq 0x10a0
callq 0x2990
movq %rax, -0x40(%rbp)
movq $0x0, -0x58(%rbp)
cmpq $0x30000, -0x58(%rbp)   # imm = 0x30000
jae 0x1ba9
jmp 0x1b4f
movq -0x58(%rbp), %rsi
leaq -0x30(%rbp), %rdi
callq 0x15d0
movq -0x58(%rbp), %rcx
cmpq %rcx, %rax
jne 0x1b67
jmp 0x1b99
movq 0x348a(%rip), %rax      # 0x4ff8
movq (%rax), %rdi
leaq 0x1574(%rip), %rsi      # 0x30ec
leaq 0x1599(%rip), %rdx      # 0x3118
movl $0x2b, %ecx
leaq 0x159c(%rip), %r8       # 0x3127
leaq 0x15bc(%rip), %r9       # 0x314e
movb $0x0, %al
callq 0x10a0
jmp 0x1b9b
movq -0x58(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x58(%rbp)
jmp 0x1b43
movq -0x40(%rbp), %rdi
callq 0x2650
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
shrq $0x0, %rax
imulq $0x3e8, %rax, %rax      # imm = 0x3E8
movl $0x30000, %ecx          # imm = 0x30000
xorl %edx, %edx
divq %rcx
movq %rax, %rsi
leaq 0x15b4(%rip), %rdi      # 0x318d
movb $0x0, %al
callq 0x1070
callq 0x2990
movq %rax, -0x40(%rbp)
movq $0x0, -0x60(%rbp)
cmpq $0x30000, -0x60(%rbp)   # imm = 0x30000
jae 0x1c54
jmp 0x1bfd
movq -0x60(%rbp), %rsi
leaq -0x30(%rbp), %rdi
callq 0x1620
testb $0x1, %al
jne 0x1c10
jmp 0x1c12
jmp 0x1c44
movq 0x33df(%rip), %rax      # 0x4ff8
movq (%rax), %rdi
leaq 0x14c9(%rip), %rsi      # 0x30ec
leaq 0x14ee(%rip), %rdx      # 0x3118
movl $0x33, %ecx
leaq 0x14f1(%rip), %r8       # 0x3127
leaq 0x1624(%rip), %r9       # 0x3261
movb $0x0, %al
callq 0x10a0
jmp 0x1c46
movq -0x60(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x60(%rbp)
jmp 0x1bf1
movq -0x40(%rbp), %rdi
callq 0x2650
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
shrq $0x0, %rax
imulq $0x3e8, %rax, %rax      # imm = 0x3E8
movl $0x30000, %ecx          # imm = 0x30000
xorl %edx, %edx
divq %rcx
movq %rax, %rsi
leaq 0x152e(%rip), %rdi      # 0x31b2
movb $0x0, %al
callq 0x1070
callq 0x2990
movq %rax, -0x40(%rbp)
movq $0x0, -0x68(%rbp)
cmpq $0x30000, -0x68(%rbp)   # imm = 0x30000
jae 0x1d02
jmp 0x1ca8
movq -0x68(%rbp), %rsi
leaq -0x30(%rbp), %rdi
callq 0x1650
movq -0x68(%rbp), %rcx
cmpq %rcx, %rax
jne 0x1cc0
jmp 0x1cf2
movq 0x3331(%rip), %rax      # 0x4ff8
movq (%rax), %rdi
leaq 0x141b(%rip), %rsi      # 0x30ec
leaq 0x1440(%rip), %rdx      # 0x3118
movl $0x3b, %ecx
leaq 0x1443(%rip), %r8       # 0x3127
leaq 0x14f1(%rip), %r9       # 0x31dc
movb $0x0, %al
callq 0x10a0
jmp 0x1cf4
movq -0x68(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x68(%rbp)
jmp 0x1c9c
movq -0x40(%rbp), %rdi
callq 0x2650
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
shrq $0x0, %rax
imulq $0x3e8, %rax, %rax      # imm = 0x3E8
movl $0x30000, %ecx          # imm = 0x30000
xorl %edx, %edx
divq %rcx
movq %rax, %rsi
leaq 0x14ec(%rip), %rdi      # 0x321e
movb $0x0, %al
callq 0x1070
leaq -0x30(%rbp), %rdi
callq 0x2710
cmpq $0x0, %rax
jne 0x1d4a
jmp 0x1d7c
movq 0x32a7(%rip), %rax      # 0x4ff8
movq (%rax), %rdi
leaq 0x1391(%rip), %rsi      # 0x30ec
leaq 0x13b6(%rip), %rdx      # 0x3118
movl $0x40, %ecx
leaq 0x13b9(%rip), %r8       # 0x3127
leaq 0x14d1(%rip), %r9       # 0x3246
movb $0x0, %al
callq 0x10a0
movq $0x0, -0x70(%rbp)
cmpq $0x30000, -0x70(%rbp)   # imm = 0x30000
jae 0x1e40
jmp 0x1d94
movq -0x70(%rbp), %rsi
leaq -0x30(%rbp), %rdi
callq 0x1620
testb $0x1, %al
jne 0x1da7
jmp 0x1dd9
movq 0x324a(%rip), %rax      # 0x4ff8
movq (%rax), %rdi
leaq 0x1334(%rip), %rsi      # 0x30ec
leaq 0x1359(%rip), %rdx      # 0x3118
movl $0x44, %ecx
leaq 0x135c(%rip), %r8       # 0x3127
leaq 0x148e(%rip), %r9       # 0x3260
movb $0x0, %al
callq 0x10a0
movq -0x70(%rbp), %rsi
leaq -0x30(%rbp), %rdi
callq 0x12e0
movq -0x70(%rbp), %rsi
leaq -0x30(%rbp), %rdi
callq 0x1620
testb $0x1, %al
jne 0x1df9
jmp 0x1dfb
jmp 0x1e2d
movq 0x31f6(%rip), %rax      # 0x4ff8
movq (%rax), %rdi
leaq 0x12e0(%rip), %rsi      # 0x30ec
leaq 0x1305(%rip), %rdx      # 0x3118
movl $0x46, %ecx
leaq 0x1308(%rip), %r8       # 0x3127
leaq 0x143b(%rip), %r9       # 0x3261
movb $0x0, %al
callq 0x10a0
jmp 0x1e2f
movq -0x70(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x70(%rbp)
jmp 0x1d84
jmp 0x1e42
leaq -0x30(%rbp), %rdi
callq 0x2710
cmpq $0x30000, %rax          # imm = 0x30000
jne 0x1e55
jmp 0x1e87
movq 0x319c(%rip), %rax      # 0x4ff8
movq (%rax), %rdi
leaq 0x1286(%rip), %rsi      # 0x30ec
leaq 0x12ab(%rip), %rdx      # 0x3118
movl $0x48, %ecx
leaq 0x12ae(%rip), %r8       # 0x3127
leaq 0x12b4(%rip), %r9       # 0x3134
movb $0x0, %al
callq 0x10a0
movq $0x0, -0x78(%rbp)
cmpq $0x30000, -0x78(%rbp)   # imm = 0x30000
jae 0x1f43
jmp 0x1e9f
movq -0x78(%rbp), %rsi
leaq -0x30(%rbp), %rdi
callq 0x1650
movq -0x78(%rbp), %rcx
cmpq %rcx, %rax
jne 0x1eb7
jmp 0x1ee9
movq 0x313a(%rip), %rax      # 0x4ff8
movq (%rax), %rdi
leaq 0x1224(%rip), %rsi      # 0x30ec
leaq 0x1249(%rip), %rdx      # 0x3118
movl $0x4c, %ecx
leaq 0x124c(%rip), %r8       # 0x3127
leaq 0x12fa(%rip), %r9       # 0x31dc
movb $0x0, %al
callq 0x10a0
jmp 0x1eeb
movq -0x78(%rbp), %rsi
leaq -0x30(%rbp), %rdi
callq 0x1620
testb $0x1, %al
jne 0x1efe
jmp 0x1f30
movq 0x30f3(%rip), %rax      # 0x4ff8
movq (%rax), %rdi
leaq 0x11dd(%rip), %rsi      # 0x30ec
leaq 0x1202(%rip), %rdx      # 0x3118
movl $0x4d, %ecx
leaq 0x1205(%rip), %r8       # 0x3127
leaq 0x1337(%rip), %r9       # 0x3260
movb $0x0, %al
callq 0x10a0
jmp 0x1f32
movq -0x78(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x78(%rbp)
jmp 0x1e8f
jmp 0x1f45
leaq -0x30(%rbp), %rdi
callq 0x2710
cmpq $0x18000, %rax          # imm = 0x18000
jne 0x1f58
jmp 0x1f8a
movq 0x3099(%rip), %rax      # 0x4ff8
movq (%rax), %rdi
leaq 0x1183(%rip), %rsi      # 0x30ec
leaq 0x11a8(%rip), %rdx      # 0x3118
movl $0x4f, %ecx
leaq 0x11ab(%rip), %r8       # 0x3127
leaq 0x130c(%rip), %r9       # 0x328f
movb $0x0, %al
callq 0x10a0
movq $0x1, -0x80(%rbp)
cmpq $0x30000, -0x80(%rbp)   # imm = 0x30000
jae 0x2046
jmp 0x1fa2
movq -0x80(%rbp), %rsi
leaq -0x30(%rbp), %rdi
callq 0x1650
movq -0x80(%rbp), %rcx
cmpq %rcx, %rax
jne 0x1fba
jmp 0x1fec
movq 0x3037(%rip), %rax      # 0x4ff8
movq (%rax), %rdi
leaq 0x1121(%rip), %rsi      # 0x30ec
leaq 0x1146(%rip), %rdx      # 0x3118
movl $0x53, %ecx
leaq 0x1149(%rip), %r8       # 0x3127
leaq 0x11f7(%rip), %r9       # 0x31dc
movb $0x0, %al
callq 0x10a0
jmp 0x1fee
movq -0x80(%rbp), %rsi
leaq -0x30(%rbp), %rdi
callq 0x1620
testb $0x1, %al
jne 0x2001
jmp 0x2033
movq 0x2ff0(%rip), %rax      # 0x4ff8
movq (%rax), %rdi
leaq 0x10da(%rip), %rsi      # 0x30ec
leaq 0x10ff(%rip), %rdx      # 0x3118
movl $0x54, %ecx
leaq 0x1102(%rip), %r8       # 0x3127
leaq 0x1234(%rip), %r9       # 0x3260
movb $0x0, %al
callq 0x10a0
jmp 0x2035
movq -0x80(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x80(%rbp)
jmp 0x1f92
jmp 0x2048
leaq -0x30(%rbp), %rdi
callq 0x2710
cmpq $0x0, %rax
jne 0x2059
jmp 0x208b
movq 0x2f98(%rip), %rax      # 0x4ff8
movq (%rax), %rdi
leaq 0x1082(%rip), %rsi      # 0x30ec
leaq 0x10a7(%rip), %rdx      # 0x3118
movl $0x56, %ecx
leaq 0x10aa(%rip), %r8       # 0x3127
leaq 0x11c2(%rip), %r9       # 0x3246
movb $0x0, %al
callq 0x10a0
leaq -0x30(%rbp), %rdi
callq 0x16c0
leaq -0x30(%rbp), %rdi
callq 0x2710
cmpq $0x0, %rax
jne 0x20a5
jmp 0x20d7
movq 0x2f4c(%rip), %rax      # 0x4ff8
movq (%rax), %rdi
leaq 0x1036(%rip), %rsi      # 0x30ec
leaq 0x105b(%rip), %rdx      # 0x3118
movl $0x5a, %ecx
leaq 0x105e(%rip), %r8       # 0x3127
leaq 0x1176(%rip), %r9       # 0x3246
movb $0x0, %al
callq 0x10a0
movq $0x0, -0x88(%rbp)
cmpq $0x30000, -0x88(%rbp) # imm = 0x30000
jae 0x2151
jmp 0x20f1
movq -0x88(%rbp), %rsi
leaq -0x30(%rbp), %rdi
callq 0x15d0
cmpq $0x0, %rax
jne 0x2109
jmp 0x213b
movq 0x2ee8(%rip), %rax      # 0x4ff8
movq (%rax), %rdi
leaq 0xfd2(%rip), %rsi       # 0x30ec
leaq 0xff7(%rip), %rdx       # 0x3118
movl $0x5e, %ecx
leaq 0xffa(%rip), %r8        # 0x3127
leaq 0x1179(%rip), %r9       # 0x32ad
movb $0x0, %al
callq 0x10a0
jmp 0x213d
movq -0x88(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x88(%rbp)
jmp 0x20e2
jmp 0x2153
leaq -0x30(%rbp), %rdi
callq 0x2710
cmpq $0x0, %rax
jne 0x2164
jmp 0x2196
movq 0x2e8d(%rip), %rax      # 0x4ff8
movq (%rax), %rdi
leaq 0xf77(%rip), %rsi       # 0x30ec
leaq 0xf9c(%rip), %rdx       # 0x3118
movl $0x60, %ecx
leaq 0xf9f(%rip), %r8        # 0x3127
leaq 0x10b7(%rip), %r9       # 0x3246
movb $0x0, %al
callq 0x10a0
leaq -0x30(%rbp), %rdi
callq 0x1290
leaq -0x30(%rbp), %rdi
movl $0x10, %esi
leaq -0x8ff(%rip), %rdx      # 0x18b0
leaq -0x8d6(%rip), %rcx      # 0x18e0
callq 0x11f0
movq $0x0, -0x90(%rbp)
cmpq $0x30000, -0x90(%rbp) # imm = 0x30000
jae 0x21f7
movq -0x90(%rbp), %rsi
leaq -0x30(%rbp), %rdi
callq 0x12e0
movq -0x90(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x90(%rbp)
jmp 0x21c6
jmp 0x21f9
leaq -0x30(%rbp), %rdi
callq 0x2710
cmpq $0x30000, %rax          # imm = 0x30000
jne 0x220c
jmp 0x223e
movq 0x2de5(%rip), %rax      # 0x4ff8
movq (%rax), %rdi
leaq 0xecf(%rip), %rsi       # 0x30ec
leaq 0xef4(%rip), %rdx       # 0x3118
movl $0x6a, %ecx
leaq 0xef7(%rip), %r8        # 0x3127
leaq 0xefd(%rip), %r9        # 0x3134
movb $0x0, %al
callq 0x10a0
movq $0x0, -0x98(%rbp)
cmpq $0x30000, -0x98(%rbp) # imm = 0x30000
jae 0x237b
movq -0x98(%rbp), %rax
addq $0x30000, %rax          # imm = 0x30000
movq %rax, -0xa0(%rbp)
movq -0x98(%rbp), %rsi
leaq -0x30(%rbp), %rdi
callq 0x1650
movq -0x98(%rbp), %rcx
cmpq %rcx, %rax
jne 0x228c
jmp 0x22be
movq 0x2d65(%rip), %rax      # 0x4ff8
movq (%rax), %rdi
leaq 0xe4f(%rip), %rsi       # 0x30ec
leaq 0xe74(%rip), %rdx       # 0x3118
movl $0x6f, %ecx
leaq 0xe77(%rip), %r8        # 0x3127
leaq 0xf25(%rip), %r9        # 0x31dc
movb $0x0, %al
callq 0x10a0
movq -0xa0(%rbp), %rsi
leaq -0x30(%rbp), %rdi
callq 0x12e0
movq -0xa0(%rbp), %rsi
leaq -0x30(%rbp), %rdi
callq 0x1620
testb $0x1, %al
jne 0x22e4
jmp 0x22e6
jmp 0x2318
movq 0x2d0b(%rip), %rax      # 0x4ff8
movq (%rax), %rdi
leaq 0xdf5(%rip), %rsi       # 0x30ec
leaq 0xe1a(%rip), %rdx       # 0x3118
movl $0x72, %ecx
leaq 0xe1d(%rip), %r8        # 0x3127
leaq 0xffc(%rip), %r9        # 0x330d
movb $0x0, %al
callq 0x10a0
jmp 0x231a
movq -0x98(%rbp), %rsi
leaq -0x30(%rbp), %rdi
callq 0x1620
testb $0x1, %al
jne 0x2330
jmp 0x2362
movq 0x2cc1(%rip), %rax      # 0x4ff8
movq (%rax), %rdi
leaq 0xdab(%rip), %rsi       # 0x30ec
leaq 0xdd0(%rip), %rdx       # 0x3118
movl $0x73, %ecx
leaq 0xdd3(%rip), %r8        # 0x3127
leaq 0xf05(%rip), %r9        # 0x3260
movb $0x0, %al
callq 0x10a0
jmp 0x2364
movq -0x98(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x98(%rbp)
jmp 0x2249
jmp 0x237d
leaq -0x30(%rbp), %rdi
callq 0x2710
cmpq $0x30000, %rax          # imm = 0x30000
jne 0x2390
jmp 0x23c2
movq 0x2c61(%rip), %rax      # 0x4ff8
movq (%rax), %rdi
leaq 0xd4b(%rip), %rsi       # 0x30ec
leaq 0xd70(%rip), %rdx       # 0x3118
movl $0x75, %ecx
leaq 0xd73(%rip), %r8        # 0x3127
leaq 0xd79(%rip), %r9        # 0x3134
movb $0x0, %al
callq 0x10a0
movq $0x0, -0xa8(%rbp)
cmpq $0x30000, -0xa8(%rbp) # imm = 0x30000
jae 0x2501
movq -0xa8(%rbp), %rax
addq $0x30000, %rax          # imm = 0x30000
movq %rax, -0xb0(%rbp)
movq -0xa8(%rbp), %rsi
leaq -0x30(%rbp), %rdi
callq 0x12e0
movq -0xb0(%rbp), %rsi
leaq -0x30(%rbp), %rdi
callq 0x1650
movq -0xb0(%rbp), %rcx
cmpq %rcx, %rax
jne 0x2420
jmp 0x2452
movq 0x2bd1(%rip), %rax      # 0x4ff8
movq (%rax), %rdi
leaq 0xcbb(%rip), %rsi       # 0x30ec
leaq 0xce0(%rip), %rdx       # 0x3118
movl $0x7b, %ecx
leaq 0xce3(%rip), %r8        # 0x3127
leaq 0xe93(%rip), %r9        # 0x32de
movb $0x0, %al
callq 0x10a0
jmp 0x2454
movq -0xa8(%rbp), %rsi
leaq -0x30(%rbp), %rdi
callq 0x1620
testb $0x1, %al
jne 0x246a
jmp 0x246c
jmp 0x249e
movq 0x2b85(%rip), %rax      # 0x4ff8
movq (%rax), %rdi
leaq 0xc6f(%rip), %rsi       # 0x30ec
leaq 0xc94(%rip), %rdx       # 0x3118
movl $0x7d, %ecx
leaq 0xc97(%rip), %r8        # 0x3127
leaq 0xdca(%rip), %r9        # 0x3261
movb $0x0, %al
callq 0x10a0
jmp 0x24a0
movq -0xb0(%rbp), %rsi
leaq -0x30(%rbp), %rdi
callq 0x1620
testb $0x1, %al
jne 0x24b6
jmp 0x24e8
movq 0x2b3b(%rip), %rax      # 0x4ff8
movq (%rax), %rdi
leaq 0xc25(%rip), %rsi       # 0x30ec
leaq 0xc4a(%rip), %rdx       # 0x3118
movl $0x7e, %ecx
leaq 0xc4d(%rip), %r8        # 0x3127
leaq 0xe2b(%rip), %r9        # 0x330c
movb $0x0, %al
callq 0x10a0
jmp 0x24ea
movq -0xa8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xa8(%rbp)
jmp 0x23cd
jmp 0x2503
leaq -0x30(%rbp), %rdi
callq 0x2710
cmpq $0x30000, %rax          # imm = 0x30000
jne 0x2516
jmp 0x2548
movq 0x2adb(%rip), %rax      # 0x4ff8
movq (%rax), %rdi
leaq 0xbc5(%rip), %rsi       # 0x30ec
leaq 0xbea(%rip), %rdx       # 0x3118
movl $0x80, %ecx
leaq 0xbed(%rip), %r8        # 0x3127
leaq 0xbf3(%rip), %r9        # 0x3134
movb $0x0, %al
callq 0x10a0
movq $0x0, -0xb8(%rbp)
cmpq $0x30000, -0xb8(%rbp) # imm = 0x30000
jae 0x25eb
movq -0xb8(%rbp), %rax
addq $0x30000, %rax          # imm = 0x30000
movq %rax, -0xc0(%rbp)
movq -0xc0(%rbp), %rsi
leaq -0x30(%rbp), %rdi
callq 0x12e0
movq -0xc0(%rbp), %rsi
leaq -0x30(%rbp), %rdi
callq 0x1620
testb $0x1, %al
jne 0x259e
jmp 0x25a0
jmp 0x25d2
movq 0x2a51(%rip), %rax      # 0x4ff8
movq (%rax), %rdi
leaq 0xb3b(%rip), %rsi       # 0x30ec
leaq 0xb60(%rip), %rdx       # 0x3118
movl $0x86, %ecx
leaq 0xb63(%rip), %r8        # 0x3127
leaq 0xd42(%rip), %r9        # 0x330d
movb $0x0, %al
callq 0x10a0
jmp 0x25d4
movq -0xb8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xb8(%rbp)
jmp 0x2553
jmp 0x25ed
leaq -0x30(%rbp), %rdi
callq 0x2710
cmpq $0x60000, %rax          # imm = 0x60000
jne 0x2600
jmp 0x2632
movq 0x29f1(%rip), %rax      # 0x4ff8
movq (%rax), %rdi
leaq 0xadb(%rip), %rsi       # 0x30ec
leaq 0xb00(%rip), %rdx       # 0x3118
movl $0x88, %ecx
leaq 0xb03(%rip), %r8        # 0x3127
leaq 0xd06(%rip), %r9        # 0x3331
movb $0x0, %al
callq 0x10a0
leaq -0x30(%rbp), %rdi
callq 0x1290
addq $0xe0, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)