// File: 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
movq %rsp, %rbp
subq $0xa70, %rsp            # imm = 0xA70
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x8b0(%rbp)
leaq -0x31(%rbp), %rdi
movq %rdi, -0x8a8(%rbp)
callq 0x8720
movq -0x8b0(%rbp), %rsi
movq -0x8a8(%rbp), %rdx
leaq -0x30(%rbp), %rdi
callq 0xad30
jmp 0x14f10
leaq -0x31(%rbp), %rdi
callq 0x88f0
leaq -0x188(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x8130
jmp 0x14f2b
leaq -0x1a9(%rbp), %rdi
movq %rdi, -0x8b8(%rbp)
callq 0x8720
movq -0x8b8(%rbp), %rdx
leaq 0x5b278(%rip), %rsi     # 0x701c4
leaq -0x1a8(%rbp), %rdi
callq 0xad30
jmp 0x14f5a
leaq -0x168(%rbp), %rdi
leaq -0x188(%rbp), %rsi
leaq -0x1a8(%rbp), %rdx
callq 0x180e0
jmp 0x14f76
leaq -0x1a8(%rbp), %rdi
callq 0x8908
leaq -0x1a9(%rbp), %rdi
callq 0x88f0
leaq -0x188(%rbp), %rdi
callq 0x8908
leaq -0x1f9(%rbp), %rdi
movq %rdi, -0x8c0(%rbp)
callq 0x8720
movq -0x8c0(%rbp), %rdx
leaq 0x5b301(%rip), %rsi     # 0x702bc
leaq -0x1f8(%rbp), %rdi
callq 0xad30
jmp 0x14fc9
leaq -0x1d8(%rbp), %rdi
leaq -0x168(%rbp), %rsi
leaq -0x1f8(%rbp), %rdx
callq 0x18280
jmp 0x14fe5
leaq -0x221(%rbp), %rdi
movq %rdi, -0x8c8(%rbp)
callq 0x8720
movq -0x8c8(%rbp), %rdx
leaq 0x5b1e9(%rip), %rsi     # 0x701ef
leaq -0x220(%rbp), %rdi
callq 0xad30
jmp 0x15014
leaq -0x249(%rbp), %rdi
movq %rdi, -0x8d0(%rbp)
callq 0x8720
movq -0x8d0(%rbp), %rdx
leaq 0x5b1c2(%rip), %rsi     # 0x701f7
leaq -0x248(%rbp), %rdi
callq 0xad30
jmp 0x15043
leaq -0x270(%rbp), %rdi
callq 0x186d0
jmp 0x15051
leaq -0x260(%rbp), %rdi
leaq -0x270(%rbp), %rsi
callq 0x18710
leaq -0x291(%rbp), %rdi
movq %rdi, -0x8d8(%rbp)
callq 0x8720
movq -0x8d8(%rbp), %rdx
leaq 0x5b237(%rip), %rsi     # 0x702bc
leaq -0x290(%rbp), %rdi
callq 0xad30
jmp 0x15093
leaq -0x1d8(%rbp), %rdi
leaq -0x220(%rbp), %rsi
leaq -0x248(%rbp), %rdx
leaq -0x260(%rbp), %rcx
leaq -0x290(%rbp), %r8
callq 0x18310
movq %rax, -0x8e0(%rbp)
jmp 0x150c4
leaq -0x2b9(%rbp), %rdi
movq %rdi, -0x8e8(%rbp)
callq 0x8720
movq -0x8e8(%rbp), %rdx
leaq 0x5b123(%rip), %rsi     # 0x70208
leaq -0x2b8(%rbp), %rdi
callq 0xad30
jmp 0x150f3
leaq -0x2e1(%rbp), %rdi
movq %rdi, -0x8f0(%rbp)
callq 0x8720
movq -0x8f0(%rbp), %rdx
leaq 0x5b0fd(%rip), %rsi     # 0x70211
leaq -0x2e0(%rbp), %rdi
callq 0xad30
jmp 0x15122
leaq -0x308(%rbp), %rdi
callq 0x18740
jmp 0x15130
leaq -0x2f8(%rbp), %rdi
leaq -0x308(%rbp), %rsi
callq 0x18710
leaq -0x329(%rbp), %rdi
movq %rdi, -0x8f8(%rbp)
callq 0x8720
movq -0x8f8(%rbp), %rdx
leaq 0x5b0ce(%rip), %rsi     # 0x70232
leaq -0x328(%rbp), %rdi
callq 0xad30
jmp 0x15172
movq -0x8e0(%rbp), %rdi
leaq -0x2b8(%rbp), %rsi
leaq -0x2e0(%rbp), %rdx
leaq -0x2f8(%rbp), %rcx
leaq -0x328(%rbp), %r8
callq 0x18310
movq %rax, -0x900(%rbp)
jmp 0x151a3
leaq -0x351(%rbp), %rdi
movq %rdi, -0x908(%rbp)
callq 0x8720
movq -0x908(%rbp), %rdx
leaq 0x5b078(%rip), %rsi     # 0x7023c
leaq -0x350(%rbp), %rdi
callq 0xad30
jmp 0x151d2
leaq -0x379(%rbp), %rdi
movq %rdi, -0x910(%rbp)
callq 0x8720
movq -0x910(%rbp), %rdx
leaq 0x5b053(%rip), %rsi     # 0x70246
leaq -0x378(%rbp), %rdi
callq 0xad30
jmp 0x15201
leaq -0x3a0(%rbp), %rdi
callq 0x186d0
jmp 0x1520f
leaq -0x390(%rbp), %rdi
leaq -0x3a0(%rbp), %rsi
callq 0x18710
leaq -0x3c1(%rbp), %rdi
movq %rdi, -0x918(%rbp)
callq 0x8720
movq -0x918(%rbp), %rdx
leaq 0x5b079(%rip), %rsi     # 0x702bc
leaq -0x3c0(%rbp), %rdi
callq 0xad30
jmp 0x15251
movq -0x900(%rbp), %rdi
leaq -0x350(%rbp), %rsi
leaq -0x378(%rbp), %rdx
leaq -0x390(%rbp), %rcx
leaq -0x3c0(%rbp), %r8
callq 0x18310
movq %rax, -0x920(%rbp)
jmp 0x15282
leaq -0x3e9(%rbp), %rdi
movq %rdi, -0x928(%rbp)
callq 0x8720
movq -0x928(%rbp), %rdx
leaq 0x5afb4(%rip), %rsi     # 0x70257
leaq -0x3e8(%rbp), %rdi
callq 0xad30
jmp 0x152b1
leaq -0x411(%rbp), %rdi
movq %rdi, -0x930(%rbp)
callq 0x8720
movq -0x930(%rbp), %rdx
leaq 0x5af8c(%rip), %rsi     # 0x7025e
leaq -0x410(%rbp), %rdi
callq 0xad30
jmp 0x152e0
leaq -0x438(%rbp), %rdi
callq 0x186d0
jmp 0x152ee
leaq -0x428(%rbp), %rdi
leaq -0x438(%rbp), %rsi
callq 0x18710
leaq -0x459(%rbp), %rdi
movq %rdi, -0x938(%rbp)
callq 0x8720
movq -0x938(%rbp), %rdx
leaq 0x5af9a(%rip), %rsi     # 0x702bc
leaq -0x458(%rbp), %rdi
callq 0xad30
jmp 0x15330
movq -0x920(%rbp), %rdi
leaq -0x3e8(%rbp), %rsi
leaq -0x410(%rbp), %rdx
leaq -0x428(%rbp), %rcx
leaq -0x458(%rbp), %r8
callq 0x18310
movq %rax, -0x940(%rbp)
jmp 0x15361
leaq -0x481(%rbp), %rdi
movq %rdi, -0x948(%rbp)
callq 0x8720
movq -0x948(%rbp), %rdx
leaq 0x5af04(%rip), %rsi     # 0x70286
leaq -0x480(%rbp), %rdi
callq 0xad30
jmp 0x15390
leaq -0x4a9(%rbp), %rdi
movq %rdi, -0x950(%rbp)
callq 0x8720
movq -0x950(%rbp), %rdx
leaq 0x5aee0(%rip), %rsi     # 0x70291
leaq -0x4a8(%rbp), %rdi
callq 0xad30
jmp 0x153bf
leaq -0x4d0(%rbp), %rdi
callq 0x186d0
jmp 0x153cd
leaq -0x4c0(%rbp), %rdi
leaq -0x4d0(%rbp), %rsi
callq 0x18710
leaq -0x4f1(%rbp), %rdi
movq %rdi, -0x958(%rbp)
callq 0x8720
movq -0x958(%rbp), %rdx
leaq 0x5aebb(%rip), %rsi     # 0x702bc
leaq -0x4f0(%rbp), %rdi
callq 0xad30
jmp 0x1540f
movq -0x940(%rbp), %rdi
leaq -0x480(%rbp), %rsi
leaq -0x4a8(%rbp), %rdx
leaq -0x4c0(%rbp), %rcx
leaq -0x4f0(%rbp), %r8
callq 0x18310
jmp 0x15439
leaq -0x4f0(%rbp), %rdi
callq 0x8908
leaq -0x4f1(%rbp), %rdi
callq 0x88f0
leaq -0x4c0(%rbp), %rdi
callq 0x18780
leaq -0x4d0(%rbp), %rdi
callq 0x187a0
leaq -0x4a8(%rbp), %rdi
callq 0x8908
leaq -0x4a9(%rbp), %rdi
callq 0x88f0
leaq -0x480(%rbp), %rdi
callq 0x8908
leaq -0x481(%rbp), %rdi
callq 0x88f0
leaq -0x458(%rbp), %rdi
callq 0x8908
leaq -0x459(%rbp), %rdi
callq 0x88f0
leaq -0x428(%rbp), %rdi
callq 0x18780
leaq -0x438(%rbp), %rdi
callq 0x187a0
leaq -0x410(%rbp), %rdi
callq 0x8908
leaq -0x411(%rbp), %rdi
callq 0x88f0
leaq -0x3e8(%rbp), %rdi
callq 0x8908
leaq -0x3e9(%rbp), %rdi
callq 0x88f0
leaq -0x3c0(%rbp), %rdi
callq 0x8908
leaq -0x3c1(%rbp), %rdi
callq 0x88f0
leaq -0x390(%rbp), %rdi
callq 0x18780
leaq -0x3a0(%rbp), %rdi
callq 0x187a0
leaq -0x378(%rbp), %rdi
callq 0x8908
leaq -0x379(%rbp), %rdi
callq 0x88f0
leaq -0x350(%rbp), %rdi
callq 0x8908
leaq -0x351(%rbp), %rdi
callq 0x88f0
leaq -0x328(%rbp), %rdi
callq 0x8908
leaq -0x329(%rbp), %rdi
callq 0x88f0
leaq -0x2f8(%rbp), %rdi
callq 0x18780
leaq -0x308(%rbp), %rdi
callq 0x187a0
leaq -0x2e0(%rbp), %rdi
callq 0x8908
leaq -0x2e1(%rbp), %rdi
callq 0x88f0
leaq -0x2b8(%rbp), %rdi
callq 0x8908
leaq -0x2b9(%rbp), %rdi
callq 0x88f0
leaq -0x290(%rbp), %rdi
callq 0x8908
leaq -0x291(%rbp), %rdi
callq 0x88f0
leaq -0x260(%rbp), %rdi
callq 0x18780
leaq -0x270(%rbp), %rdi
callq 0x187a0
leaq -0x248(%rbp), %rdi
callq 0x8908
leaq -0x249(%rbp), %rdi
callq 0x88f0
leaq -0x220(%rbp), %rdi
callq 0x8908
leaq -0x221(%rbp), %rdi
callq 0x88f0
leaq -0x1d8(%rbp), %rdi
callq 0x187c0
leaq -0x1f8(%rbp), %rdi
callq 0x8908
leaq -0x1f9(%rbp), %rdi
callq 0x88f0
leaq -0x5b8(%rbp), %rdi
leaq -0x168(%rbp), %rsi
leaq -0x8(%rbp), %rdx
leaq -0x10(%rbp), %rcx
callq 0x187e0
jmp 0x1565a
leaq -0x5d9(%rbp), %rdi
movq %rdi, -0x960(%rbp)
callq 0x8720
movq -0x960(%rbp), %rdx
leaq 0x5ab77(%rip), %rsi     # 0x701f2
leaq -0x5d8(%rbp), %rdi
callq 0xad30
jmp 0x15689
leaq -0x5b8(%rbp), %rdi
leaq -0x5d8(%rbp), %rsi
callq 0x188d0
movq %rax, -0x968(%rbp)
jmp 0x156a5
leaq -0x5d8(%rbp), %rdi
callq 0x8908
leaq -0x5d9(%rbp), %rdi
callq 0x88f0
movq -0x968(%rbp), %rax
cmpq $0x0, %rax
je 0x15c13
xorps %xmm0, %xmm0
movaps %xmm0, -0x620(%rbp)
movq $0x0, -0x610(%rbp)
leaq -0x620(%rbp), %rdi
movq %rdi, -0x970(%rbp)
callq 0x18c10
movq -0x970(%rbp), %rdx
leaq -0x600(%rbp), %rdi
leaq -0x168(%rbp), %rsi
callq 0x18980
jmp 0x15712
movq 0x8f86f(%rip), %rdi     # 0xa4f88
leaq -0x600(%rbp), %rsi
callq 0x8260
movq %rax, -0x978(%rbp)
jmp 0x1572e
movq -0x978(%rbp), %rdi
movl $0xa, %esi
callq 0x8510
jmp 0x15741
leaq -0x600(%rbp), %rdi
callq 0x8908
leaq -0x620(%rbp), %rdi
callq 0x18c30
xorl %edi, %edi
callq 0x8530
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x31(%rbp), %rdi
callq 0x88f0
jmp 0x16753
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x16668
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x157b1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0x8908
leaq -0x1a9(%rbp), %rdi
callq 0x88f0
leaq -0x188(%rbp), %rdi
callq 0x8908
jmp 0x16668
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x15b83
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x15b77
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x15b5f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x15b47
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x15b3b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x15b17
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x15b0b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x15aff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x15ae7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x15adb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x15ab7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x15aab
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x15a9f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x15a87
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x15a7b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x15a57
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x15a4b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x15a3f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x15a27
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x15a1b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x159f7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x159eb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x159df
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x159c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x159bb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x15997
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x4f0(%rbp), %rdi
callq 0x8908
leaq -0x4f1(%rbp), %rdi
callq 0x88f0
leaq -0x4c0(%rbp), %rdi
callq 0x18780
leaq -0x4d0(%rbp), %rdi
callq 0x187a0
leaq -0x4a8(%rbp), %rdi
callq 0x8908
leaq -0x4a9(%rbp), %rdi
callq 0x88f0
leaq -0x480(%rbp), %rdi
callq 0x8908
leaq -0x481(%rbp), %rdi
callq 0x88f0
leaq -0x458(%rbp), %rdi
callq 0x8908
leaq -0x459(%rbp), %rdi
callq 0x88f0
leaq -0x428(%rbp), %rdi
callq 0x18780
leaq -0x438(%rbp), %rdi
callq 0x187a0
leaq -0x410(%rbp), %rdi
callq 0x8908
leaq -0x411(%rbp), %rdi
callq 0x88f0
leaq -0x3e8(%rbp), %rdi
callq 0x8908
leaq -0x3e9(%rbp), %rdi
callq 0x88f0
leaq -0x3c0(%rbp), %rdi
callq 0x8908
leaq -0x3c1(%rbp), %rdi
callq 0x88f0
leaq -0x390(%rbp), %rdi
callq 0x18780
leaq -0x3a0(%rbp), %rdi
callq 0x187a0
leaq -0x378(%rbp), %rdi
callq 0x8908
leaq -0x379(%rbp), %rdi
callq 0x88f0
leaq -0x350(%rbp), %rdi
callq 0x8908
leaq -0x351(%rbp), %rdi
callq 0x88f0
leaq -0x328(%rbp), %rdi
callq 0x8908
leaq -0x329(%rbp), %rdi
callq 0x88f0
leaq -0x2f8(%rbp), %rdi
callq 0x18780
leaq -0x308(%rbp), %rdi
callq 0x187a0
leaq -0x2e0(%rbp), %rdi
callq 0x8908
leaq -0x2e1(%rbp), %rdi
callq 0x88f0
leaq -0x2b8(%rbp), %rdi
callq 0x8908
leaq -0x2b9(%rbp), %rdi
callq 0x88f0
leaq -0x290(%rbp), %rdi
callq 0x8908
leaq -0x291(%rbp), %rdi
callq 0x88f0
leaq -0x260(%rbp), %rdi
callq 0x18780
leaq -0x270(%rbp), %rdi
callq 0x187a0
leaq -0x248(%rbp), %rdi
callq 0x8908
leaq -0x249(%rbp), %rdi
callq 0x88f0
leaq -0x220(%rbp), %rdi
callq 0x8908
leaq -0x221(%rbp), %rdi
callq 0x88f0
leaq -0x1d8(%rbp), %rdi
callq 0x187c0
leaq -0x1f8(%rbp), %rdi
callq 0x8908
leaq -0x1f9(%rbp), %rdi
callq 0x88f0
jmp 0x1665c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1665c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x15bcb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x5d8(%rbp), %rdi
callq 0x8908
leaq -0x5d9(%rbp), %rdi
callq 0x88f0
jmp 0x16650
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x15c02
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x600(%rbp), %rdi
callq 0x8908
leaq -0x620(%rbp), %rdi
callq 0x18c30
jmp 0x16650
leaq -0x641(%rbp), %rdi
movq %rdi, -0x980(%rbp)
callq 0x8720
movq -0x980(%rbp), %rdx
leaq 0x5a652(%rip), %rsi     # 0x70286
leaq -0x640(%rbp), %rdi
callq 0xad30
jmp 0x15c42
leaq -0x5b8(%rbp), %rdi
leaq -0x640(%rbp), %rsi
callq 0x188d0
movq %rax, -0x988(%rbp)
jmp 0x15c5e
leaq -0x640(%rbp), %rdi
callq 0x8908
leaq -0x641(%rbp), %rdi
callq 0x88f0
movq -0x988(%rbp), %rax
cmpq $0x0, %rax
je 0x15dcc
movq 0x8f2fa(%rip), %rdi     # 0xa4f88
leaq 0x5a610(%rip), %rsi     # 0x702a5
callq 0x8490
jmp 0x15c9c
leaq 0x8fcf5(%rip), %rax     # 0xa5998
movq %rax, -0x650(%rbp)
leaq 0x8fce7(%rip), %rdi     # 0xa5998
callq 0x18c90
movq %rax, -0x658(%rbp)
leaq 0x8fcd4(%rip), %rdi     # 0xa5998
callq 0x18cc0
movq %rax, -0x660(%rbp)
leaq -0x658(%rbp), %rdi
leaq -0x660(%rbp), %rsi
callq 0x18cf0
testb $0x1, %al
jne 0x15cec
jmp 0x15dc5
leaq -0x658(%rbp), %rdi
callq 0x18d20
movq %rax, -0x668(%rbp)
movq -0x668(%rbp), %rsi
addq $0x20, %rsi
movq 0x8f277(%rip), %rdi     # 0xa4f88
callq 0x8260
movq %rax, -0x990(%rbp)
jmp 0x15d1f
movq -0x990(%rbp), %rdi
leaq 0x583a6(%rip), %rsi     # 0x6e0d3
callq 0x8490
movq %rax, -0x998(%rbp)
jmp 0x15d3b
movq -0x998(%rbp), %rdi
movq -0x668(%rbp), %rsi
callq 0x8260
movq %rax, -0x9a0(%rbp)
jmp 0x15d57
movq -0x9a0(%rbp), %rdi
movl $0xa, %esi
callq 0x8510
jmp 0x15d6a
jmp 0x15d6c
leaq -0x658(%rbp), %rdi
callq 0x18d40
jmp 0x15cd0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x15da3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x640(%rbp), %rdi
callq 0x8908
leaq -0x641(%rbp), %rdi
callq 0x88f0
jmp 0x16650
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x16650
xorl %edi, %edi
callq 0x8530
movq 0x8f1b5(%rip), %rdi     # 0xa4f88
leaq 0x5a4e3(%rip), %rsi     # 0x702bd
callq 0x8490
jmp 0x15de1
leaq 0x5a4e8(%rip), %rax     # 0x702d0
movq %rax, -0x670(%rbp)
movq -0x670(%rbp), %rsi
leaq -0x6b0(%rbp), %rdi
callq 0x9430
jmp 0x15e04
leaq -0x690(%rbp), %rdi
leaq -0x6b0(%rbp), %rsi
callq 0x18f00
jmp 0x15e19
xorl %eax, %eax
movl %eax, %esi
leaq -0x6d0(%rbp), %rdi
movq %rdi, -0x9a8(%rbp)
callq 0x18f50
movq -0x9a8(%rbp), %rdx
leaq -0x680(%rbp), %rdi
leaq -0x690(%rbp), %rsi
movl $0x1, %ecx
callq 0x18d70
jmp 0x15e51
leaq -0x6d0(%rbp), %rdi
callq 0x18f90
leaq -0x690(%rbp), %rdi
callq 0x18fb0
leaq -0x6b0(%rbp), %rdi
callq 0x8908
leaq -0x6f1(%rbp), %rdi
movq %rdi, -0x9b0(%rbp)
callq 0x8720
movq -0x9b0(%rbp), %rdx
leaq 0x5a3c4(%rip), %rsi     # 0x7025a
leaq -0x6f0(%rbp), %rdi
callq 0xad30
jmp 0x15ea4
leaq -0x5b8(%rbp), %rdi
leaq -0x6f0(%rbp), %rsi
callq 0x188d0
movq %rax, -0x9b8(%rbp)
jmp 0x15ec0
leaq -0x6f0(%rbp), %rdi
callq 0x8908
leaq -0x6f1(%rbp), %rdi
callq 0x88f0
movq -0x9b8(%rbp), %rax
cmpq $0x0, %rax
je 0x15fe1
leaq 0x5a407(%rip), %rsi     # 0x702f7
leaq -0x680(%rbp), %rdi
callq 0xaa50
movq %rax, -0x9c0(%rbp)
jmp 0x15f05
movq -0x9c0(%rbp), %rsi
leaq -0x708(%rbp), %rdi
callq 0x126a0
jmp 0x15f1a
leaq -0x708(%rbp), %rdi
callq 0xa0f0
jmp 0x15f28
leaq -0x708(%rbp), %rdi
callq 0xf600
jmp 0x15fe1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x15f6b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x6d0(%rbp), %rdi
callq 0x18f90
leaq -0x690(%rbp), %rdi
callq 0x18fb0
leaq -0x6b0(%rbp), %rdi
callq 0x8908
jmp 0x16650
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x15fa2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x6f0(%rbp), %rdi
callq 0x8908
leaq -0x6f1(%rbp), %rdi
callq 0x88f0
jmp 0x16644
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x16644
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x708(%rbp), %rdi
callq 0xf600
jmp 0x16644
leaq -0x729(%rbp), %rdi
movq %rdi, -0x9c8(%rbp)
callq 0x8720
movq -0x9c8(%rbp), %rdx
leaq 0x5a209(%rip), %rsi     # 0x7020b
leaq -0x728(%rbp), %rdi
callq 0xad30
jmp 0x16010
leaq -0x5b8(%rbp), %rdi
leaq -0x728(%rbp), %rsi
callq 0x188d0
movq %rax, -0x9d0(%rbp)
jmp 0x1602c
leaq -0x728(%rbp), %rdi
callq 0x8908
leaq -0x729(%rbp), %rdi
callq 0x88f0
movq -0x9d0(%rbp), %rax
cmpq $0x0, %rax
je 0x163c9
leaq -0x769(%rbp), %rdi
movq %rdi, -0x9d8(%rbp)
callq 0x8720
movq -0x9d8(%rbp), %rdx
leaq 0x5a195(%rip), %rsi     # 0x7020b
leaq -0x768(%rbp), %rdi
callq 0xad30
jmp 0x16084
leaq -0x5b8(%rbp), %rdi
leaq -0x768(%rbp), %rsi
callq 0x18fd0
movq %rax, -0x9e0(%rbp)
jmp 0x160a0
movq -0x9e0(%rbp), %rdi
callq 0x190c0
movq %rax, -0x9e8(%rbp)
jmp 0x160b5
movq -0x9e8(%rbp), %rsi
leaq -0x748(%rbp), %rdi
callq 0x19180
jmp 0x160ca
leaq -0x768(%rbp), %rdi
callq 0x8908
leaq -0x769(%rbp), %rdi
callq 0x88f0
leaq -0x748(%rbp), %rax
movq %rax, -0x778(%rbp)
movq -0x778(%rbp), %rdi
callq 0x19270
movq %rax, -0x780(%rbp)
movq -0x778(%rbp), %rdi
callq 0x192a0
movq %rax, -0x788(%rbp)
leaq -0x780(%rbp), %rdi
leaq -0x788(%rbp), %rsi
callq 0x192d0
testb $0x1, %al
jne 0x16132
jmp 0x163aa
leaq -0x780(%rbp), %rdi
callq 0x19310
movq %rax, -0x790(%rbp)
movq -0x790(%rbp), %rdi
callq 0x83c0
movq %rax, -0x798(%rbp)
movq -0x790(%rbp), %rdi
callq 0x8430
movq %rax, -0x7a0(%rbp)
movq -0x790(%rbp), %rdi
callq 0x83c0
movq %rax, -0x7a8(%rbp)
movq -0x798(%rbp), %rdi
movq -0x7a0(%rbp), %rsi
movq -0x7a8(%rbp), %rdx
movq 0x8edb6(%rip), %rcx     # 0xa4f50
callq 0x19330
movq %rax, -0x9f0(%rbp)
jmp 0x161a8
movq -0x9f0(%rbp), %rax
movq %rax, -0x7b0(%rbp)
leaq 0x5a13a(%rip), %rsi     # 0x702f7
leaq -0x680(%rbp), %rdi
callq 0xaa50
movq %rax, -0x9f8(%rbp)
jmp 0x161d2
movq -0x9f8(%rbp), %rax
movq %rax, -0x7b8(%rbp)
movq -0x7b8(%rbp), %rsi
leaq -0x7d8(%rbp), %rdi
callq 0xae10
movq -0x7b8(%rbp), %rsi
leaq -0x7f8(%rbp), %rdi
callq 0xae50
leaq -0x7d8(%rbp), %rdi
leaq -0x7f8(%rbp), %rsi
callq 0xae90
movb %al, -0x9f9(%rbp)
jmp 0x16221
movb -0x9f9(%rbp), %al
testb $0x1, %al
jne 0x16230
jmp 0x16397
leaq -0x7d8(%rbp), %rdi
callq 0xaec0
movq %rax, -0xa08(%rbp)
jmp 0x16245
movq -0xa08(%rbp), %rax
movq %rax, -0x800(%rbp)
movq -0x800(%rbp), %rdi
leaq 0x59fd1(%rip), %rsi     # 0x70232
callq 0xaa50
movq %rax, -0xa10(%rbp)
jmp 0x1626f
movq -0x790(%rbp), %rsi
leaq -0x810(%rbp), %rdi
callq 0x19690
jmp 0x16284
movq -0xa10(%rbp), %rdi
leaq -0x810(%rbp), %rsi
callq 0x193b0
movb %al, -0xa11(%rbp)
leaq -0x810(%rbp), %rdi
callq 0xf600
movb -0xa11(%rbp), %al
testb $0x1, %al
jne 0x162b8
jmp 0x16382
movq -0x800(%rbp), %rsi
leaq -0x820(%rbp), %rdi
callq 0x126a0
jmp 0x162cd
leaq -0x820(%rbp), %rdi
callq 0x95a0
jmp 0x162db
leaq -0x820(%rbp), %rdi
callq 0xf600
jmp 0x16382
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x16312
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x728(%rbp), %rdi
callq 0x8908
leaq -0x729(%rbp), %rdi
callq 0x88f0
jmp 0x16644
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x16349
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x768(%rbp), %rdi
callq 0x8908
leaq -0x769(%rbp), %rdi
callq 0x88f0
jmp 0x16644
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x163b8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x820(%rbp), %rdi
callq 0xf600
jmp 0x163b8
jmp 0x16384
leaq -0x7d8(%rbp), %rdi
callq 0xb1f0
jmp 0x16392
jmp 0x16206
jmp 0x16399
leaq -0x780(%rbp), %rdi
callq 0x196e0
jmp 0x16116
leaq -0x748(%rbp), %rdi
callq 0x18c30
jmp 0x163c9
leaq -0x748(%rbp), %rdi
callq 0x18c30
jmp 0x16644
leaq -0x841(%rbp), %rdi
movq %rdi, -0xa20(%rbp)
callq 0x8720
movq -0xa20(%rbp), %rdx
leaq 0x59e70(%rip), %rsi     # 0x7025a
leaq -0x840(%rbp), %rdi
callq 0xad30
jmp 0x163f8
leaq -0x5b8(%rbp), %rdi
leaq -0x840(%rbp), %rsi
callq 0x188d0
movq %rax, -0xa28(%rbp)
jmp 0x16414
leaq -0x840(%rbp), %rdi
callq 0x8908
leaq -0x841(%rbp), %rdi
callq 0x88f0
movq -0xa28(%rbp), %rax
cmpq $0x0, %rax
jne 0x164f7
leaq 0x59eb3(%rip), %rsi     # 0x702f7
leaq -0x680(%rbp), %rdi
callq 0xaa50
movq %rax, -0xa30(%rbp)
jmp 0x16459
movq -0xa30(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xb290
movq %rax, -0xa38(%rbp)
jmp 0x16472
movq -0xa38(%rbp), %rsi
leaq -0x858(%rbp), %rdi
callq 0x126a0
jmp 0x16487
leaq -0x858(%rbp), %rdi
callq 0x95a0
jmp 0x16495
leaq -0x858(%rbp), %rdi
callq 0xf600
jmp 0x164f7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x164c9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x840(%rbp), %rdi
callq 0x8908
leaq -0x841(%rbp), %rdi
callq 0x88f0
jmp 0x16644
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x858(%rbp), %rdi
callq 0xf600
jmp 0x16644
leaq -0x879(%rbp), %rdi
movq %rdi, -0xa40(%rbp)
callq 0x8720
movq -0xa40(%rbp), %rdx
leaq 0x59d27(%rip), %rsi     # 0x7023f
leaq -0x878(%rbp), %rdi
callq 0xad30
jmp 0x16526
leaq -0x5b8(%rbp), %rdi
leaq -0x878(%rbp), %rsi
callq 0x188d0
movq %rax, -0xa48(%rbp)
jmp 0x16542
leaq -0x878(%rbp), %rdi
callq 0x8908
leaq -0x879(%rbp), %rdi
callq 0x88f0
movq -0xa48(%rbp), %rax
cmpq $0x0, %rax
je 0x1661b
leaq 0x59ccd(%rip), %rsi     # 0x7023f
leaq -0x680(%rbp), %rdi
callq 0xaa50
movq %rax, -0xa50(%rbp)
jmp 0x16587
movq -0xa50(%rbp), %rdi
callq 0x19700
movq %rax, -0xa58(%rbp)
jmp 0x1659c
movq -0xa58(%rbp), %rsi
leaq -0x890(%rbp), %rdi
callq 0x126a0
jmp 0x165b1
leaq -0x890(%rbp), %rdi
callq 0x9d40
jmp 0x165bf
leaq -0x890(%rbp), %rdi
callq 0xf600
jmp 0x1661b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x165f3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x878(%rbp), %rdi
callq 0x8908
leaq -0x879(%rbp), %rdi
callq 0x88f0
jmp 0x16644
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x890(%rbp), %rdi
callq 0xf600
jmp 0x16644
leaq -0x680(%rbp), %rdi
callq 0xf600
leaq -0x5b8(%rbp), %rdi
callq 0x19740
leaq -0x168(%rbp), %rdi
callq 0x197a0
jmp 0x16724
leaq -0x680(%rbp), %rdi
callq 0xf600
leaq -0x5b8(%rbp), %rdi
callq 0x19740
leaq -0x168(%rbp), %rdi
callq 0x197a0
movl -0x44(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0x1674a
movq -0x40(%rbp), %rdi
callq 0x8070
movq %rax, -0x898(%rbp)
movq 0x8e941(%rip), %rdi     # 0xa4fd0
leaq 0x59c6b(%rip), %rsi     # 0x70301
callq 0x8490
jmp 0x1669d
movq 0x8e92c(%rip), %rdi     # 0xa4fd0
leaq 0x59c8c(%rip), %rsi     # 0x70337
callq 0x8490
movq %rax, -0xa60(%rbp)
jmp 0x166b9
movq -0xa60(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x8260
movq %rax, -0xa68(%rbp)
jmp 0x166d2
movq -0xa68(%rbp), %rdi
leaq 0x59c5c(%rip), %rsi     # 0x7033c
callq 0x8490
jmp 0x166e7
movl $0x1, -0x4(%rbp)
movl $0x1, -0x89c(%rbp)
callq 0x85b0
jmp 0x16712
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
callq 0x85b0
jmp 0x16722
jmp 0x16735
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1674a
jmp 0x1674a
movl $0x0, -0x4(%rbp)
movl $0x1, -0x89c(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x8908
movl -0x4(%rbp), %eax
addq $0xa70, %rsp            # imm = 0xA70
popq %rbp
retq
leaq -0x30(%rbp), %rdi
callq 0x8908
movq -0x40(%rbp), %rdi
callq 0x8500
movq %rax, %rdi
callq 0xb890
nopw %cs:(%rax,%rax)