// File: /workspace/github_cpp_makefile_star2_O1/aayush-jaiswal[P]covid-in/src/main.cpp
// Function: main
int main(int argc, char *argv[]) {
    std::string app_name = argv[0];
    
    try {
        cxxopts::Options options(app_name, "A command line app to get covid-19 update.");
        options.add_options()
            ("h, help", "Print help/usage")
            ("s, state", "Choose state(s) to display stats", cxxopts::value<std::vector<std::string>>(), "statecode")
            ("t, tested", "Show tested data")
            ("a, all", "Show data of all states in tabular form")
            ("statecodes", "Display state codes");

        auto result = options.parse(argc, argv);

        if (result.count("help")) {
            std::cout << options.help() << '\n';
            exit(0);
        }

        if (result.count("statecodes")) {
            std::cout << "The state codes are: \n\n";
            for (auto &s : abbr::india_states) {
                std::cout << s.second << ": " << s.first << '\n';
            } 
            exit(0);
        }

        std::cout << "Fetching data...\n\n";
        const char *covid_india_api = "https://api.covid19india.org/data.json";
        json all_data = json::parse(get_api_data(covid_india_api));
        
        if (result.count("all")) {
            print_formatted_all(all_data["statewise"]);
        }

        if (result.count("state")) {
            auto states = result["state"].as<std::vector<std::string>>();
            for (auto &s :  states) {
                std::transform(s.begin(), s.end(), s.begin(), ::toupper);
                for (auto &x : all_data["statewise"]) {
                    if (x["statecode"] == s) {
                        print_formatted_output(x);
                    }
                }
            }
        }

        if (result.count("all") == 0) {
            print_formatted_output(all_data["statewise"][0]);
        }
        
        if (result.count("tested")) {
            print_formatted_tested(all_data["tested"].back());
        }
    }

    catch (const cxxopts::OptionException& e) {
        std::cerr << "Error parsing options! Try again with valid options.\n";
        std::cerr << "Use " << app_name << " -h for help\n"; 
        return 1;
    }

    return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x568, %rsp            # imm = 0x568
movl %edi, 0x74(%rsp)
movq %rsi, 0x278(%rsp)
movq (%rsi), %rsi
leaq 0x208(%rsp), %rdi
leaq 0x448(%rsp), %rdx
callq 0xc6d6
leaq 0x350(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x208(%rsp), %rsi
movq 0x210(%rsp), %rdx
addq %rsi, %rdx
leaq 0x340(%rsp), %rdi
callq 0x8eda
leaq 0x330(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x24224(%rip), %rsi     # 0x2f2f4
leaq 0x24247(%rip), %rdx     # 0x2f31e
leaq 0x320(%rsp), %rdi
callq 0x8f6a
leaq 0x448(%rsp), %rbx
leaq 0x340(%rsp), %rsi
leaq 0x320(%rsp), %rdx
movq %rbx, %rdi
callq 0xcfbc
movq 0x320(%rsp), %rdi
cmpq %r15, %rdi
je 0xb121
movq 0x330(%rsp), %rsi
incq %rsi
callq 0x60b0
movq 0x340(%rsp), %rdi
cmpq %r14, %rdi
je 0xb13e
movq 0x350(%rsp), %rsi
incq %rsi
callq 0x60b0
leaq 0xa8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2429b(%rip), %rdx     # 0x2f3ec
leaq 0x98(%rsp), %rdi
movq %rdx, %rsi
callq 0x8f6a
leaq 0x20(%rsp), %rdx
movq %rdx, -0x10(%rdx)
movq 0x98(%rsp), %rax
cmpq %r14, %rax
je 0xb18b
movq %rax, 0x10(%rsp)
movq 0xa8(%rsp), %rax
movq %rax, 0x20(%rsp)
jmp 0xb192
movups (%r14), %xmm0
movups %xmm0, (%rdx)
movq 0xa0(%rsp), %rax
movq %rax, 0x18(%rsp)
movq %r14, 0x98(%rsp)
movq $0x0, 0xa0(%rsp)
movb $0x0, 0xa8(%rsp)
leaq 0x3a0(%rsp), %rsi
movq %rbx, -0x18(%rsi)
movq %rsi, -0x10(%rsi)
movq 0x10(%rsp), %rcx
cmpq %rdx, %rcx
je 0xb1ec
movq %rcx, 0x390(%rsp)
movq 0x20(%rsp), %rcx
movq %rcx, 0x3a0(%rsp)
jmp 0xb1f2
movups (%rdx), %xmm0
movups %xmm0, (%rsi)
movq %rax, 0x398(%rsp)
leaq 0x10(%rsp), %rdi
movq %rdx, (%rdi)
leaq 0x24116(%rip), %rsi     # 0x2f31f
leaq 0x24116(%rip), %rdx     # 0x2f326
callq 0x8f6a
leaq 0x40(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x24102(%rip), %rsi     # 0x2f327
leaq 0x2410b(%rip), %rdx     # 0x2f337
leaq 0x30(%rsp), %rdi
callq 0x8f6a
leaq 0x158(%rsp), %rdi
callq 0xd595
movups 0x158(%rsp), %xmm0
movups %xmm0, 0x268(%rsp)
xorps %xmm0, %xmm0
movups %xmm0, 0x158(%rsp)
leaq 0x1f8(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2417b(%rip), %rdx     # 0x2f3ec
leaq 0x1e8(%rsp), %rdi
movq %rdx, %rsi
callq 0x8f6a
leaq 0x388(%rsp), %rdi
leaq 0x10(%rsp), %rsi
leaq 0x30(%rsp), %rdx
leaq 0x268(%rsp), %rcx
leaq 0x1e8(%rsp), %r8
callq 0xd204
movq %rax, %rbx
leaq 0x88(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2407a(%rip), %rsi     # 0x2f338
leaq 0x2407b(%rip), %rdx     # 0x2f340
leaq 0x78(%rsp), %rdi
callq 0x8f6a
leaq 0x60(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x24062(%rip), %rsi     # 0x2f341
leaq 0x2407b(%rip), %rdx     # 0x2f361
leaq 0x50(%rsp), %rdi
callq 0x8f6a
leaq 0x148(%rsp), %rdi
callq 0xd5ed
movups 0x148(%rsp), %xmm0
movups %xmm0, 0x258(%rsp)
xorps %xmm0, %xmm0
movups %xmm0, 0x148(%rsp)
leaq 0x1d8(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x24037(%rip), %rsi     # 0x2f362
leaq 0x24039(%rip), %rdx     # 0x2f36b
leaq 0x1c8(%rsp), %rdi
callq 0x8f6a
leaq 0x78(%rsp), %rsi
leaq 0x50(%rsp), %rdx
leaq 0x258(%rsp), %rcx
leaq 0x1c8(%rsp), %r8
movq %rbx, %rdi
callq 0xd204
movq %rax, %rbx
leaq 0xc8(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x23ff5(%rip), %rsi     # 0x2f36c
leaq 0x23ff7(%rip), %rdx     # 0x2f375
leaq 0xb8(%rsp), %rdi
callq 0x8f6a
leaq 0x1b8(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x23fd8(%rip), %rsi     # 0x2f376
leaq 0x23fe1(%rip), %rdx     # 0x2f386
leaq 0x1a8(%rsp), %rdi
callq 0x8f6a
leaq 0x138(%rsp), %rdi
callq 0xd595
movups 0x138(%rsp), %xmm0
movups %xmm0, 0x248(%rsp)
xorps %xmm0, %xmm0
movups %xmm0, 0x138(%rsp)
leaq 0x198(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x23fff(%rip), %rdx     # 0x2f3ec
leaq 0x188(%rsp), %rdi
movq %rdx, %rsi
callq 0x8f6a
leaq 0xb8(%rsp), %rsi
leaq 0x1a8(%rsp), %rdx
leaq 0x248(%rsp), %rcx
leaq 0x188(%rsp), %r8
movq %rbx, %rdi
callq 0xd204
movq %rax, %rbx
leaq 0x310(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x23f4c(%rip), %rsi     # 0x2f387
leaq 0x23f4b(%rip), %rdx     # 0x2f38d
leaq 0x300(%rsp), %rdi
callq 0x8f6a
leaq 0x178(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x23f2c(%rip), %rsi     # 0x2f38e
leaq 0x23f4c(%rip), %rdx     # 0x2f3b5
leaq 0x168(%rsp), %rdi
callq 0x8f6a
leaq 0x128(%rsp), %rdi
callq 0xd595
movups 0x128(%rsp), %xmm0
movups %xmm0, 0x238(%rsp)
xorps %xmm0, %xmm0
movups %xmm0, 0x128(%rsp)
leaq 0x2f0(%rsp), %r13
movq %r13, -0x10(%r13)
leaq 0x23f3b(%rip), %rdx     # 0x2f3ec
leaq 0x2e0(%rsp), %rdi
movq %rdx, %rsi
callq 0x8f6a
leaq 0x300(%rsp), %rsi
leaq 0x168(%rsp), %rdx
leaq 0x238(%rsp), %rcx
leaq 0x2e0(%rsp), %r8
movq %rbx, %rdi
callq 0xd204
movq %rax, %rbx
leaq 0x2d0(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x23eb6(%rip), %rsi     # 0x2f3b6
leaq 0x23eb9(%rip), %rdx     # 0x2f3c0
leaq 0x2c0(%rsp), %rdi
callq 0x8f6a
leaq 0x2b0(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x23e9a(%rip), %rsi     # 0x2f3c1
leaq 0x23ea6(%rip), %rdx     # 0x2f3d4
leaq 0x2a0(%rsp), %rdi
callq 0x8f6a
leaq 0x118(%rsp), %rdi
callq 0xd595
movups 0x118(%rsp), %xmm0
movups %xmm0, 0x228(%rsp)
xorps %xmm0, %xmm0
movups %xmm0, 0x118(%rsp)
leaq 0x290(%rsp), %rbp
movq %rbp, -0x10(%rbp)
leaq 0x23e76(%rip), %rdx     # 0x2f3ec
leaq 0x280(%rsp), %rdi
movq %rdx, %rsi
callq 0x8f6a
leaq 0x2c0(%rsp), %rsi
leaq 0x2a0(%rsp), %rdx
leaq 0x228(%rsp), %rcx
leaq 0x280(%rsp), %r8
movq %rbx, %rdi
callq 0xd204
movq 0x280(%rsp), %rdi
cmpq %rbp, %rdi
je 0xb5cb
movq 0x290(%rsp), %rsi
incq %rsi
callq 0x60b0
movq 0x230(%rsp), %rdi
testq %rdi, %rdi
leaq 0x20(%rsp), %rbp
je 0xb5e2
callq 0xe1e8
movq 0x120(%rsp), %rdi
testq %rdi, %rdi
je 0xb5f4
callq 0xe1e8
movq 0x2a0(%rsp), %rdi
cmpq %r15, %rdi
je 0xb611
movq 0x2b0(%rsp), %rsi
incq %rsi
callq 0x60b0
movq 0x2c0(%rsp), %rdi
cmpq %r12, %rdi
je 0xb62e
movq 0x2d0(%rsp), %rsi
incq %rsi
callq 0x60b0
movq 0x2e0(%rsp), %rdi
cmpq %r13, %rdi
je 0xb64b
movq 0x2f0(%rsp), %rsi
incq %rsi
callq 0x60b0
movq 0x240(%rsp), %rdi
testq %rdi, %rdi
je 0xb65d
callq 0xe1e8
movq 0x130(%rsp), %rdi
testq %rdi, %rdi
je 0xb66f
callq 0xe1e8
movq 0x168(%rsp), %rdi
leaq 0x178(%rsp), %rax
cmpq %rax, %rdi
je 0xb694
movq 0x178(%rsp), %rsi
incq %rsi
callq 0x60b0
movq 0x300(%rsp), %rdi
cmpq %r14, %rdi
je 0xb6b1
movq 0x310(%rsp), %rsi
incq %rsi
callq 0x60b0
movq 0x188(%rsp), %rdi
leaq 0x198(%rsp), %rax
cmpq %rax, %rdi
je 0xb6d6
movq 0x198(%rsp), %rsi
incq %rsi
callq 0x60b0
movq 0x250(%rsp), %rdi
testq %rdi, %rdi
je 0xb6e8
callq 0xe1e8
movq 0x140(%rsp), %rdi
testq %rdi, %rdi
je 0xb6fa
callq 0xe1e8
movq 0x1a8(%rsp), %rdi
leaq 0x1b8(%rsp), %rax
cmpq %rax, %rdi
je 0xb71f
movq 0x1b8(%rsp), %rsi
incq %rsi
callq 0x60b0
movq 0xb8(%rsp), %rdi
leaq 0xc8(%rsp), %rax
cmpq %rax, %rdi
je 0xb744
movq 0xc8(%rsp), %rsi
incq %rsi
callq 0x60b0
movq 0x1c8(%rsp), %rdi
leaq 0x1d8(%rsp), %rax
cmpq %rax, %rdi
je 0xb769
movq 0x1d8(%rsp), %rsi
incq %rsi
callq 0x60b0
movq 0x260(%rsp), %rdi
testq %rdi, %rdi
je 0xb77b
callq 0xe1e8
movq 0x150(%rsp), %rdi
testq %rdi, %rdi
je 0xb78d
callq 0xe1e8
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0xb7a9
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x60b0
movq 0x78(%rsp), %rdi
leaq 0x88(%rsp), %rax
cmpq %rax, %rdi
je 0xb7cb
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x60b0
movq 0x1e8(%rsp), %rdi
leaq 0x1f8(%rsp), %rax
cmpq %rax, %rdi
je 0xb7f0
movq 0x1f8(%rsp), %rsi
incq %rsi
callq 0x60b0
movq 0x270(%rsp), %rdi
testq %rdi, %rdi
je 0xb802
callq 0xe1e8
movq 0x160(%rsp), %rdi
testq %rdi, %rdi
je 0xb814
callq 0xe1e8
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0xb830
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x60b0
movq 0x10(%rsp), %rdi
cmpq %rbp, %rdi
je 0xb847
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x60b0
movq 0x390(%rsp), %rdi
leaq 0x3a0(%rsp), %rax
cmpq %rax, %rdi
je 0xb86c
movq 0x3a0(%rsp), %rsi
incq %rsi
callq 0x60b0
movq 0x98(%rsp), %rdi
leaq 0xa8(%rsp), %rax
cmpq %rax, %rdi
je 0xb891
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x60b0
movq 0x4d0(%rsp), %rcx
movq 0x4d8(%rsp), %rax
movq %rcx, 0x30(%rsp)
movq %rax, 0x38(%rsp)
testq %rax, %rax
je 0xb8c5
movq 0x376e9(%rip), %rcx     # 0x42fa0
cmpb $0x0, (%rcx)
je 0xb8c1
incl 0x8(%rax)
jmp 0xb8c5
lock
incl 0x8(%rax)
leaq 0x4e0(%rsp), %rsi
leaq 0x10(%rsp), %rdi
callq 0xdc5c
movzbl 0x4c9(%rsp), %ecx
leaq 0x388(%rsp), %rdi
leaq 0x30(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0x74(%rsp), %r8
leaq 0x278(%rsp), %r9
callq 0x1206e
leaq 0x10(%rsp), %rdi
callq 0xd99e
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0xb91c
callq 0xe1e8
leaq 0x10(%rsp), %rdi
movq %rbp, (%rdi)
leaq 0x239f7(%rip), %rsi     # 0x2f322
leaq 0x239f4(%rip), %rdx     # 0x2f326
callq 0x8f6a
leaq 0x388(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xd646
movq %rax, %rbx
movq 0x10(%rsp), %rdi
cmpq %rbp, %rdi
je 0xb963
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x60b0
testq %rbx, %rbx
jne 0xbede
leaq 0x10(%rsp), %rdi
movq %rbp, (%rdi)
leaq 0x23a3b(%rip), %rsi     # 0x2f3b6
leaq 0x23a3e(%rip), %rdx     # 0x2f3c0
callq 0x8f6a
leaq 0x388(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xd646
movq %rax, %rbx
movq 0x10(%rsp), %rdi
cmpq %rbp, %rdi
je 0xb9b3
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x60b0
testq %rbx, %rbx
jne 0xbf3c
movq 0x375b5(%rip), %rdi     # 0x42f78
leaq 0x23a23(%rip), %rsi     # 0x2f3ed
movl $0x12, %edx
callq 0x64f0
leaq 0x23a25(%rip), %rsi     # 0x2f400
leaq 0x10(%rsp), %rdi
callq 0x717a
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
addq %rsi, %rdx
leaq 0x30(%rsp), %rdi
callq 0x2d2c0
xorps %xmm0, %xmm0
leaq 0x360(%rsp), %rdx
movaps %xmm0, 0x10(%rdx)
movaps %xmm0, (%rdx)
leaq 0x50(%rsp), %rdi
leaq 0x30(%rsp), %rsi
movl $0x1, %ecx
callq 0xd9fa
movq 0x370(%rsp), %rax
testq %rax, %rax
je 0xba41
leaq 0x360(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0xba50
callq 0xe1e8
movq 0x10(%rsp), %rdi
cmpq %rbp, %rdi
je 0xba67
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x60b0
leaq 0x10(%rsp), %rdi
movq %rbp, (%rdi)
leaq 0x23914(%rip), %rsi     # 0x2f38a
leaq 0x23910(%rip), %rdx     # 0x2f38d
callq 0x8f6a
leaq 0x388(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xd646
movq %rax, %rbx
movq 0x10(%rsp), %rdi
cmpq %rbp, %rdi
je 0xbaae
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x60b0
testq %rbx, %rbx
je 0xbaff
leaq 0x2396d(%rip), %rsi     # 0x2f427
leaq 0x50(%rsp), %rdi
callq 0x8882
leaq 0x108(%rsp), %rdi
movq %rax, %rsi
callq 0xaa18
leaq 0x108(%rsp), %rdi
callq 0x7f26
leaq 0x108(%rsp), %rdi
callq 0x8ffa
leaq 0x110(%rsp), %rdi
movzbl -0x8(%rdi), %esi
callq 0x9b44
leaq 0x10(%rsp), %rdi
movq %rbp, (%rdi)
leaq 0x2382d(%rip), %rsi     # 0x2f33b
leaq 0x2382b(%rip), %rdx     # 0x2f340
callq 0x8f6a
leaq 0x388(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xd646
movq %rax, %rbx
movq 0x10(%rsp), %rdi
cmpq %rbp, %rdi
je 0xbb46
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x60b0
testq %rbx, %rbx
je 0xbcfb
leaq 0x10(%rsp), %rdi
movq %rbp, (%rdi)
leaq 0x237dd(%rip), %rsi     # 0x2f33b
leaq 0x237db(%rip), %rdx     # 0x2f340
callq 0x8f6a
leaq 0x388(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xdb46
movq %rax, %rdi
callq 0xdbd4
leaq 0x78(%rsp), %rdi
movq %rax, %rsi
callq 0xdc5c
movq 0x10(%rsp), %rdi
cmpq %rbp, %rdi
je 0xbba8
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x60b0
movq 0x78(%rsp), %rbx
movq 0x80(%rsp), %rax
movq %rax, 0x8(%rsp)
cmpq %rax, %rbx
je 0xbcec
leaq 0x10(%rsp), %rbp
leaq 0xb8(%rsp), %r15
movq 0x8(%rbx), %r12
testq %r12, %r12
je 0xbbf7
movq (%rbx), %r13
xorl %r14d, %r14d
movsbl (%r13,%r14), %edi
callq 0x6110
movb %al, (%r13,%r14)
incq %r14
cmpq %r14, %r12
jne 0xbbdf
leaq 0x50(%rsp), %rdi
leaq 0x23824(%rip), %rsi     # 0x2f427
callq 0x8882
movq %rax, %r12
movq %rbp, %rdi
movq %rax, %rsi
callq 0x8a40
leaq 0x30(%rsp), %rdi
movq %r12, %rsi
callq 0x8a92
leaq 0xc0(%rsp), %r14
movq %rbp, %rdi
leaq 0x30(%rsp), %rsi
callq 0xa448
testb %al, %al
jne 0xbcdd
movq %rbp, %rdi
callq 0x8ae4
movq %rax, %r13
movq %rax, %rdi
leaq 0x2370d(%rip), %rsi     # 0x2f362
callq 0x8882
movq %rax, %r12
movq %r15, %rdi
movq %rbx, %rsi
callq 0xdef0
movq %r12, %rdi
movq %r15, %rsi
callq 0xdce6
movl %eax, %r12d
movq %r15, %rdi
callq 0x8ffa
movzbl 0xb8(%rsp), %esi
movq %r14, %rdi
callq 0x9b44
testb %r12b, %r12b
je 0xbcd0
leaq 0xf8(%rsp), %rdi
movq %r13, %rsi
callq 0xaa18
leaq 0xf8(%rsp), %r12
movq %r12, %rdi
callq 0x726c
movq %r12, %rdi
callq 0x8ffa
movzbl 0xf8(%rsp), %esi
leaq 0x100(%rsp), %rdi
callq 0x9b44
movq %rbp, %rdi
callq 0x8ca4
jmp 0xbc2b
addq $0x20, %rbx
cmpq 0x8(%rsp), %rbx
jne 0xbbd0
leaq 0x78(%rsp), %rdi
callq 0xd99e
leaq 0x20(%rsp), %rbp
leaq 0x10(%rsp), %rdi
movq %rbp, (%rdi)
leaq 0x23680(%rip), %rsi     # 0x2f38a
leaq 0x2367c(%rip), %rdx     # 0x2f38d
callq 0x8f6a
leaq 0x388(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xd646
movq %rax, %rbx
movq 0x10(%rsp), %rdi
cmpq %rbp, %rdi
je 0xbd42
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x60b0
testq %rbx, %rbx
jne 0xbd9d
leaq 0x236d9(%rip), %rsi     # 0x2f427
leaq 0x50(%rsp), %rdi
callq 0x8882
movq %rax, %rdi
xorl %esi, %esi
callq 0x8cfc
leaq 0xe8(%rsp), %rdi
movq %rax, %rsi
callq 0xaa18
leaq 0xe8(%rsp), %rdi
callq 0x726c
leaq 0xe8(%rsp), %rdi
callq 0x8ffa
leaq 0xf0(%rsp), %rdi
movzbl -0x8(%rdi), %esi
callq 0x9b44
leaq 0x10(%rsp), %rdi
movq %rbp, (%rdi)
leaq 0x235c3(%rip), %rsi     # 0x2f36f
leaq 0x235c2(%rip), %rdx     # 0x2f375
callq 0x8f6a
leaq 0x388(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xd646
movq %rax, %rbx
movq 0x10(%rsp), %rdi
cmpq %rbp, %rdi
je 0xbde4
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x60b0
testq %rbx, %rbx
je 0xbe3d
leaq 0x2357f(%rip), %rsi     # 0x2f36f
leaq 0x50(%rsp), %rdi
callq 0x8882
movq %rax, %rdi
callq 0xdf1c
leaq 0xd8(%rsp), %rdi
movq %rax, %rsi
callq 0xaa18
leaq 0xd8(%rsp), %rdi
callq 0x7af6
leaq 0xd8(%rsp), %rdi
callq 0x8ffa
leaq 0xe0(%rsp), %rdi
movzbl -0x8(%rdi), %esi
callq 0x9b44
leaq 0x50(%rsp), %rdi
callq 0x8ffa
leaq 0x58(%rsp), %rdi
movzbl -0x8(%rdi), %esi
callq 0x9b44
leaq 0x430(%rsp), %rdi
callq 0x12eb8
leaq 0x3f0(%rsp), %rdi
callq 0x1489c
leaq 0x3b8(%rsp), %rdi
callq 0x1493a
leaq 0x398(%rsp), %rbx
movq %rbx, %rdi
callq 0xd99e
movq -0x8(%rbx), %rdi
testq %rdi, %rdi
je 0xbe9a
callq 0xe1e8
leaq 0x448(%rsp), %rdi
callq 0xdf82
xorl %ebx, %ebx
leaq 0x218(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xbeca
movq 0x218(%rsp), %rsi
incq %rsi
callq 0x60b0
movl %ebx, %eax
addq $0x568, %rsp            # imm = 0x568
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
xorps %xmm0, %xmm0
leaq 0x30(%rsp), %rdx
movaps %xmm0, (%rdx)
movq $0x0, 0x10(%rdx)
leaq 0x10(%rsp), %rdi
leaq 0x448(%rsp), %rsi
callq 0xd68a
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movq 0x37064(%rip), %rdi     # 0x42f78
callq 0x64f0
movq %rax, %rdi
movl $0xa, %esi
callq 0x6320
leaq 0x10(%rsp), %rdi
callq 0x6618
leaq 0x30(%rsp), %rdi
callq 0xd99e
jmp 0xbf67
movq 0x37035(%rip), %rdi     # 0x42f78
leaq 0x2348b(%rip), %rsi     # 0x2f3d5
movl $0x17, %edx
callq 0x64f0
movq 0x378e5(%rip), %rbx     # 0x43840
leaq 0x378ce(%rip), %rbp     # 0x43830
cmpq %rbp, %rbx
jne 0xbf6e
xorl %edi, %edi
callq 0x6340
movq 0x37003(%rip), %r14     # 0x42f78
leaq 0x22127(%rip), %r15     # 0x2e0a3
leaq 0x10(%rsp), %r12
movq 0x40(%rbx), %rsi
movq 0x48(%rbx), %rdx
movq %r14, %rdi
callq 0x64f0
movq %rax, %r13
movl $0x2, %edx
movq %rax, %rdi
movq %r15, %rsi
callq 0x64f0
movq 0x20(%rbx), %rsi
movq 0x28(%rbx), %rdx
movq %r13, %rdi
callq 0x64f0
movb $0xa, 0x10(%rsp)
movl $0x1, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x64f0
movq %rbx, %rdi
callq 0x64e0
movq %rax, %rbx
cmpq %rbp, %rax
jne 0xbf81
jmp 0xbf67
jmp 0xc59b
movq %rdx, %r14
movq %rax, %rbx
leaq 0xe8(%rsp), %rdi
jmp 0xc04c
movq %rdx, %r14
movq %rax, %rbx
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0xc01a
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x60b0
jmp 0xc01a
movq %rdx, %r14
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0xd99e
jmp 0xc5ff
movq %rdx, %r14
movq %rax, %rbx
leaq 0xd8(%rsp), %rdi
jmp 0xc04c
jmp 0xc5c2
movq %rdx, %r14
movq %rax, %rbx
leaq 0x108(%rsp), %rdi
callq 0x9b2a
jmp 0xc5f5
movq %rax, %rdi
callq 0x8ece
jmp 0xc5a3
jmp 0xc5c2
jmp 0xc5a3
jmp 0xc5c2
jmp 0xc5a3
jmp 0xc5c2
jmp 0xc5a3
jmp 0xc5c2
movq %rdx, %r14
movq %rax, %rbx
movq 0x370(%rsp), %rax
testq %rax, %rax
je 0xc0ab
leaq 0x360(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0xc0c4
callq 0xe1e8
jmp 0xc0c4
jmp 0xc056
movq %rdx, %r14
movq %rax, %rbx
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
jne 0xc0f8
jmp 0xc5ff
jmp 0xc59b
jmp 0xc0e4
jmp 0xc59b
movq %rdx, %r14
movq %rax, %rbx
movq 0x10(%rsp), %rdi
cmpq %rbp, %rdi
je 0xc5ff
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x60b0
jmp 0xc5ff
jmp 0xc59b
movq %rdx, %r14
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0xd99e
jmp 0xc127
movq %rdx, %r14
movq %rax, %rbx
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0xc60c
callq 0xe1e8
jmp 0xc60c
movq %rdx, 0x8(%rsp)
movq %rax, %rbx
movq 0x280(%rsp), %rdi
cmpq %rbp, %rdi
je 0xc16e
movq 0x290(%rsp), %rsi
incq %rsi
callq 0x60b0
jmp 0xc16e
movq %rdx, 0x8(%rsp)
movq %rax, %rbx
movq 0x230(%rsp), %rdi
testq %rdi, %rdi
je 0xc180
callq 0xe1e8
movq 0x120(%rsp), %rdi
testq %rdi, %rdi
je 0xc19c
callq 0xe1e8
jmp 0xc19c
movq %rdx, 0x8(%rsp)
movq %rax, %rbx
movq 0x2a0(%rsp), %rdi
cmpq %r15, %rdi
je 0xc1c3
movq 0x2b0(%rsp), %rsi
incq %rsi
callq 0x60b0
jmp 0xc1c3
movq %rdx, 0x8(%rsp)
movq %rax, %rbx
movq 0x2c0(%rsp), %rdi
cmpq %r12, %rdi
je 0xc1ec
movq 0x2d0(%rsp), %rsi
incq %rsi
callq 0x60b0
jmp 0xc1ec
jmp 0xc1e4
movq %rdx, 0x8(%rsp)
movq %rax, %rbx
movq 0x2e0(%rsp), %rdi
cmpq %r13, %rdi
je 0xc213
movq 0x2f0(%rsp), %rsi
incq %rsi
callq 0x60b0
jmp 0xc213
movq %rdx, 0x8(%rsp)
movq %rax, %rbx
movq 0x240(%rsp), %rdi
testq %rdi, %rdi
je 0xc225
callq 0xe1e8
movq 0x130(%rsp), %rdi
testq %rdi, %rdi
je 0xc237
callq 0xe1e8
movq 0x168(%rsp), %rdi
leaq 0x178(%rsp), %rax
cmpq %rax, %rdi
je 0xc25c
movq 0x178(%rsp), %rsi
incq %rsi
callq 0x60b0
movq 0x300(%rsp), %rdi
cmpq %r14, %rdi
je 0xc299
movq 0x310(%rsp), %rsi
incq %rsi
callq 0x60b0
jmp 0xc299
movq %rdx, 0x8(%rsp)
movq %rax, %rbx
jmp 0xc237
movq %rdx, 0x8(%rsp)
movq %rax, %rbx
jmp 0xc25c
jmp 0xc291
movq %rdx, 0x8(%rsp)
movq %rax, %rbx
movq 0x188(%rsp), %rdi
leaq 0x198(%rsp), %rax
cmpq %rax, %rdi
je 0xc2be
movq 0x198(%rsp), %rsi
incq %rsi
callq 0x60b0
movq 0x250(%rsp), %rdi
testq %rdi, %rdi
je 0xc2d0
callq 0xe1e8
movq 0x140(%rsp), %rdi
testq %rdi, %rdi
je 0xc2e2
callq 0xe1e8
movq 0x1a8(%rsp), %rdi
leaq 0x1b8(%rsp), %rax
cmpq %rax, %rdi
je 0xc307
movq 0x1b8(%rsp), %rsi
incq %rsi
callq 0x60b0
movq 0xb8(%rsp), %rdi
leaq 0xc8(%rsp), %rax
cmpq %rax, %rdi
je 0xc32c
movq 0xc8(%rsp), %rsi
incq %rsi
callq 0x60b0
movq 0x1c8(%rsp), %rdi
leaq 0x1d8(%rsp), %rax
cmpq %rax, %rdi
je 0xc351
movq 0x1d8(%rsp), %rsi
incq %rsi
callq 0x60b0
movq 0x260(%rsp), %rdi
testq %rdi, %rdi
je 0xc363
callq 0xe1e8
movq 0x150(%rsp), %rdi
testq %rdi, %rdi
je 0xc375
callq 0xe1e8
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0xc391
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x60b0
movq 0x78(%rsp), %rdi
leaq 0x88(%rsp), %rax
cmpq %rax, %rdi
je 0xc3b3
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x60b0
movq 0x1e8(%rsp), %rdi
leaq 0x1f8(%rsp), %rax
cmpq %rax, %rdi
je 0xc3d8
movq 0x1f8(%rsp), %rsi
incq %rsi
callq 0x60b0
movq 0x270(%rsp), %rdi
testq %rdi, %rdi
je 0xc3ea
callq 0xe1e8
movq 0x160(%rsp), %rdi
testq %rdi, %rdi
je 0xc3fc
callq 0xe1e8
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0xc418
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x60b0
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0xc434
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x60b0
movq 0x390(%rsp), %rdi
leaq 0x3a0(%rsp), %rax
cmpq %rax, %rdi
je 0xc459
movq 0x3a0(%rsp), %rsi
incq %rsi
callq 0x60b0
movq 0x98(%rsp), %rdi
leaq 0xa8(%rsp), %rax
cmpq %rax, %rdi
je 0xc47e
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x60b0
movq 0x8(%rsp), %r14
jmp 0xc60c
movq %rdx, 0x8(%rsp)
movq %rax, %rbx
jmp 0xc2be
movq %rdx, 0x8(%rsp)
movq %rax, %rbx
jmp 0xc2e2
movq %rdx, 0x8(%rsp)
movq %rax, %rbx
jmp 0xc307
jmp 0xc4b1
movq %rdx, 0x8(%rsp)
movq %rax, %rbx
jmp 0xc32c
movq %rdx, 0x8(%rsp)
movq %rax, %rbx
jmp 0xc351
movq %rdx, 0x8(%rsp)
movq %rax, %rbx
jmp 0xc375
movq %rdx, 0x8(%rsp)
movq %rax, %rbx
jmp 0xc391
jmp 0xc4e7
movq %rdx, 0x8(%rsp)
movq %rax, %rbx
jmp 0xc3b3
movq %rdx, 0x8(%rsp)
movq %rax, %rbx
jmp 0xc3d8
movq %rdx, 0x8(%rsp)
movq %rax, %rbx
jmp 0xc3fc
movq %rdx, 0x8(%rsp)
movq %rax, %rbx
jmp 0xc418
movq %rdx, 0x8(%rsp)
movq %rax, %rbx
jmp 0xc434
movq %rdx, 0x8(%rsp)
movq %rax, %rbx
jmp 0xc47e
movq %rdx, %r12
movq %rax, %rbx
movq 0x320(%rsp), %rdi
cmpq %r15, %rdi
je 0xc560
movq 0x330(%rsp), %rsi
incq %rsi
callq 0x60b0
jmp 0xc560
movq %rdx, %r12
movq %rax, %rbx
movq 0x340(%rsp), %rdi
cmpq %r14, %rdi
je 0xc57d
movq 0x350(%rsp), %rsi
incq %rsi
callq 0x60b0
movq %r12, %r14
jmp 0xc619
movq %rdx, %r14
movq %rax, %rbx
jmp 0xc619
movq %rax, %rbx
movq %rbx, %rdi
callq 0x6310
movq %rdx, %r14
movq %rax, %rbx
jmp 0xc5ff
movq %rdx, %r14
movq %rax, %rbx
movq 0x10(%rsp), %rdi
cmpq %rbp, %rdi
je 0xc5f5
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x60b0
jmp 0xc5f5
movq %rdx, %r14
movq %rax, %rbx
jmp 0xc5f5
jmp 0xc5e5
movq %rdx, %r14
movq %rax, %rbx
leaq 0xf8(%rsp), %rdi
callq 0x9b2a
jmp 0xc5eb
jmp 0xc5e5
jmp 0xc5e5
movq %rdx, %r14
movq %rax, %rbx
leaq 0x78(%rsp), %rdi
callq 0xd99e
leaq 0x50(%rsp), %rdi
callq 0x9b2a
leaq 0x388(%rsp), %rdi
callq 0xdf46
leaq 0x448(%rsp), %rdi
callq 0xdf82
cmpl $0x1, %r14d
jne 0xc6a7
movq %rbx, %rdi
callq 0x6050
movq 0x3699e(%rip), %rdi     # 0x42fd0
leaq 0x22df8(%rip), %rsi     # 0x2f431
movl $0x35, %edx
callq 0x64f0
movq 0x36986(%rip), %rdi     # 0x42fd0
leaq 0x22e16(%rip), %rsi     # 0x2f467
movl $0x4, %edx
callq 0x64f0
movq 0x208(%rsp), %rsi
movq 0x210(%rsp), %rdx
movq 0x3695e(%rip), %rdi     # 0x42fd0
callq 0x64f0
leaq 0x22dee(%rip), %rsi     # 0x2f46c
movl $0xd, %edx
movq %rax, %rdi
callq 0x64f0
movl $0x1, %ebx
callq 0x63e0
jmp 0xbea9
movq %rax, %rbx
jmp 0xc6a7
movq %rax, %rbx
callq 0x63e0
leaq 0x218(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xc593
movq 0x218(%rsp), %rsi
incq %rsi
callq 0x60b0
jmp 0xc593
jmp 0xc056