// File: yayuntian[P]user_agent/browser.cpp
// Function: detectBrowser(UserAgent&, std::vector<Section, std::allocator<Section>>&, int)
void detectBrowser(UserAgent& p, vector<Section>& sections, int slen) {

    if (sections[0].name == "Opera") {
        p.browser.Name = "Opera";
        p.browser.Version = sections[0].version;
        p.browser.Engine = "Presto";
        if (slen > 1) {
            p.browser.EngineVersion = sections[1].version;
        }
    } else if (sections[0].name == "Dalvik") {
        p.mozilla = "5.0";
    } else if (slen > 1) {
        Section engine = sections[1];
        p.browser.Engine = engine.name;
        p.browser.EngineVersion = engine.version;
        if (slen > 2) {
            int sectionIndex = 2;
            if (sections[2].version == "" && slen > 3) {
                sectionIndex = 3;
            }
            p.browser.Version = sections[sectionIndex].version;
            if (engine.name == "AppleWebKit") {
                string name = sections[slen - 1].name;
                if (name == "Edge") {
                    p.browser.Name = "Edge";
                    p.browser.Version = sections[slen - 1].version;
                    p.browser.Engine = "EdgeHTML";
                    p.browser.EngineVersion = "";
                } else if (name == "OPR") {
                    p.browser.Name = "Opera";
                    p.browser.Version = sections[slen - 1].version;
                } else if (name == "QQBrowser") {
                    p.browser.Name = name;
                    p.browser.Version = sections[slen - 1].version;
                } else if (name == "360SE") {
                    p.browser.Name = name;
//                    p.browser.Version = sections[slen - 1].version;
                } else if (name == "LBBROWSER") {
                    p.browser.Name = name;
//                    p.browser.Version = sections[slen - 1].version;
                } else {
                    if (sections[sectionIndex].name == "Chrome") {
                        p.browser.Name = "Chrome";
                    } else if (sections[sectionIndex].name == "Chromium") {
                        p.browser.Name = "Chromium";
                    } else {
                        p.browser.Name = "Safari";
                    }
                }
            } else if (engine.name == "Gecko") {
                string name = sections[2].name;
                if (name == "MRA" && slen > 4) {
                    name = sections[4].name;
                    p.browser.Version = sections[4].version;
                }
                p.browser.Name = name;
            } else if (engine.name == "like" && sections[2].name == "Gecko") {
                p.browser.Engine = "Trident";
                p.browser.Name = "Internet Explorer";
                for (auto s : sections[0].comment) {
                    boost::smatch what;
                    if (boost::regex_search(s, what, ie11Regexp)) {
                        p.browser.Version = what[1];
                        return;
                    }
                }
                p.browser.Version = "";
            }
        }
    } else if (slen == 1 && sections[0].comment.size() > 1) {
        vector<string> comment = sections[0].comment;
        if (comment[0] == "compatible" && starts_with(comment[1], "MSIE")) {
            p.browser.Name = "Internet Explorer";
            p.browser.Engine = "Trident";

            if (starts_with(comment[comment.size() - 1], "360SE")) {
                p.browser.Name = "360SE";
            }

            size_t len = comment.size();
            for (size_t i = 0; i < len; i++) {
                if (starts_with(comment[i], "Trident")) {
                    switch (my_atoi(comment[i].c_str())) {
                        case 4:
                            p.browser.Version = "8.0";
                            break;
                        case 5:
                            p.browser.Version = "9.0";
                            break;
                        case 6:
                            p.browser.Version = "10.0";
                            break;
                        default:
                            break;
                    }
                    break;
                }
            }
            if (p.browser.Version == "") {
                string ver;
                ver.assign(comment[1], 4, string::npos);
                p.browser.Version = trim_copy(ver);
            }
        }
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x260, %rsp            # imm = 0x260
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x15670
movq %rax, %rdi
leaq 0x9c3a(%rip), %rsi      # 0x6e6a7
callq 0x155a0
testb $0x1, %al
jne 0x64a7b
jmp 0x64b09
movq -0x8(%rbp), %rdi
addq $0xa0, %rdi
addq $0x40, %rdi
leaq 0x9c16(%rip), %rsi      # 0x6e6a7
callq 0x8670
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x15670
movq %rax, %rsi
addq $0x20, %rsi
movq -0x8(%rbp), %rdi
addq $0xa0, %rdi
addq $0x60, %rdi
callq 0x8060
movq -0x8(%rbp), %rdi
addq $0xa0, %rdi
leaq 0xb9aa(%rip), %rsi      # 0x7047a
callq 0x8670
cmpl $0x1, -0x14(%rbp)
jle 0x64b04
movq -0x10(%rbp), %rdi
movl $0x1, %esi
callq 0x15670
movq %rax, %rsi
addq $0x20, %rsi
movq -0x8(%rbp), %rdi
addq $0xa0, %rdi
addq $0x20, %rdi
callq 0x8060
jmp 0x656fd
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x15670
movq %rax, %rdi
leaq 0x9b8d(%rip), %rsi      # 0x6e6ad
callq 0x155a0
testb $0x1, %al
jne 0x64b2b
jmp 0x64b44
movq -0x8(%rbp), %rdi
addq $0x20, %rdi
leaq 0x3b31(%rip), %rsi      # 0x6866b
callq 0x8670
jmp 0x656fb
cmpl $0x1, -0x14(%rbp)
jle 0x6532a
movq -0x10(%rbp), %rdi
movl $0x1, %esi
callq 0x15670
movq %rax, %rsi
leaq -0x70(%rbp), %rdi
movq %rdi, -0x1f0(%rbp)
callq 0x4cb40
movq -0x1f0(%rbp), %rsi
movq -0x8(%rbp), %rdi
addq $0xa0, %rdi
callq 0x8060
jmp 0x64b88
leaq -0x50(%rbp), %rsi
movq -0x8(%rbp), %rdi
addq $0xc0, %rdi
callq 0x8060
jmp 0x64b9e
cmpl $0x2, -0x14(%rbp)
jle 0x652f3
movl $0x2, -0x80(%rbp)
movq -0x10(%rbp), %rdi
movl $0x2, %esi
callq 0x15670
movq %rax, %rdi
addq $0x20, %rdi
leaq 0x5841(%rip), %rsi      # 0x6a40c
callq 0x155a0
movb %al, -0x1f1(%rbp)
jmp 0x64bd8
movb -0x1f1(%rbp), %al
testb $0x1, %al
jne 0x64be4
jmp 0x64c04
cmpl $0x3, -0x14(%rbp)
jle 0x64c04
movl $0x3, -0x80(%rbp)
jmp 0x64c04
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x6531c
movq -0x10(%rbp), %rdi
movslq -0x80(%rbp), %rsi
callq 0x15670
movq %rax, %rsi
addq $0x20, %rsi
movq -0x8(%rbp), %rdi
addq $0x100, %rdi            # imm = 0x100
callq 0x8060
jmp 0x64c2a
leaq 0x9a62(%rip), %rsi      # 0x6e693
leaq -0x70(%rbp), %rdi
callq 0x155a0
movb %al, -0x1f2(%rbp)
jmp 0x64c42
movb -0x1f2(%rbp), %al
testb $0x1, %al
jne 0x64c51
jmp 0x64f6a
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %eax
decl %eax
movslq %eax, %rsi
callq 0x15670
movq %rax, %rsi
leaq -0xa0(%rbp), %rdi
callq 0x81c0
jmp 0x64c73
leaq 0xb807(%rip), %rsi      # 0x70481
leaq -0xa0(%rbp), %rdi
callq 0x155a0
movb %al, -0x1f3(%rbp)
jmp 0x64c8e
movb -0x1f3(%rbp), %al
testb $0x1, %al
jne 0x64c9d
jmp 0x64d34
movq -0x8(%rbp), %rdi
addq $0xe0, %rdi
leaq 0xb7d2(%rip), %rsi      # 0x70481
callq 0x8670
jmp 0x64cb6
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %eax
decl %eax
movslq %eax, %rsi
callq 0x15670
movq %rax, %rsi
addq $0x20, %rsi
movq -0x8(%rbp), %rdi
addq $0x100, %rdi            # imm = 0x100
callq 0x8060
jmp 0x64ce0
movq -0x8(%rbp), %rdi
addq $0xa0, %rdi
leaq 0xb794(%rip), %rsi      # 0x70486
callq 0x8670
jmp 0x64cf9
movq -0x8(%rbp), %rdi
addq $0xc0, %rdi
leaq 0x5701(%rip), %rsi      # 0x6a40c
callq 0x8670
jmp 0x64d12
jmp 0x64f59
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0x89e8
jmp 0x6531c
leaq 0xb754(%rip), %rsi      # 0x7048f
leaq -0xa0(%rbp), %rdi
callq 0x155a0
movb %al, -0x1f4(%rbp)
jmp 0x64d4f
movb -0x1f4(%rbp), %al
testb $0x1, %al
jne 0x64d5b
jmp 0x64da3
movq -0x8(%rbp), %rdi
addq $0xe0, %rdi
leaq 0x993a(%rip), %rsi      # 0x6e6a7
callq 0x8670
jmp 0x64d74
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %eax
decl %eax
movslq %eax, %rsi
callq 0x15670
movq %rax, %rsi
addq $0x20, %rsi
movq -0x8(%rbp), %rdi
addq $0x100, %rdi            # imm = 0x100
callq 0x8060
jmp 0x64d9e
jmp 0x64f57
leaq 0xb6e9(%rip), %rsi      # 0x70493
leaq -0xa0(%rbp), %rdi
callq 0x155a0
movb %al, -0x1f5(%rbp)
jmp 0x64dbe
movb -0x1f5(%rbp), %al
testb $0x1, %al
jne 0x64dca
jmp 0x64e12
movq -0x8(%rbp), %rdi
addq $0xe0, %rdi
leaq -0xa0(%rbp), %rsi
callq 0x8060
jmp 0x64de3
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %eax
decl %eax
movslq %eax, %rsi
callq 0x15670
movq %rax, %rsi
addq $0x20, %rsi
movq -0x8(%rbp), %rdi
addq $0x100, %rdi            # imm = 0x100
callq 0x8060
jmp 0x64e0d
jmp 0x64f55
leaq 0xb684(%rip), %rsi      # 0x7049d
leaq -0xa0(%rbp), %rdi
callq 0x155a0
movb %al, -0x1f6(%rbp)
jmp 0x64e2d
movb -0x1f6(%rbp), %al
testb $0x1, %al
jne 0x64e39
jmp 0x64e57
movq -0x8(%rbp), %rdi
addq $0xe0, %rdi
leaq -0xa0(%rbp), %rsi
callq 0x8060
jmp 0x64e52
jmp 0x64f53
leaq 0xb645(%rip), %rsi      # 0x704a3
leaq -0xa0(%rbp), %rdi
callq 0x155a0
movb %al, -0x1f7(%rbp)
jmp 0x64e72
movb -0x1f7(%rbp), %al
testb $0x1, %al
jne 0x64e7e
jmp 0x64e9c
movq -0x8(%rbp), %rdi
addq $0xe0, %rdi
leaq -0xa0(%rbp), %rsi
callq 0x8060
jmp 0x64e97
jmp 0x64f51
movq -0x10(%rbp), %rdi
movslq -0x80(%rbp), %rsi
callq 0x15670
movq %rax, %rdi
leaq 0xb5fa(%rip), %rsi      # 0x704ad
callq 0x155a0
movb %al, -0x1f8(%rbp)
jmp 0x64ec0
movb -0x1f8(%rbp), %al
testb $0x1, %al
jne 0x64ecc
jmp 0x64ee7
movq -0x8(%rbp), %rdi
addq $0xe0, %rdi
leaq 0xb5cf(%rip), %rsi      # 0x704ad
callq 0x8670
jmp 0x64ee5
jmp 0x64f4f
movq -0x10(%rbp), %rdi
movslq -0x80(%rbp), %rsi
callq 0x15670
movq %rax, %rdi
leaq 0xb5b6(%rip), %rsi      # 0x704b4
callq 0x155a0
movb %al, -0x1f9(%rbp)
jmp 0x64f0b
movb -0x1f9(%rbp), %al
testb $0x1, %al
jne 0x64f17
jmp 0x64f32
movq -0x8(%rbp), %rdi
addq $0xe0, %rdi
leaq 0xb58b(%rip), %rsi      # 0x704b4
callq 0x8670
jmp 0x64f30
jmp 0x64f4d
movq -0x8(%rbp), %rdi
addq $0xe0, %rdi
leaq 0x96f7(%rip), %rsi      # 0x6e63b
callq 0x8670
jmp 0x64f4b
jmp 0x64f4d
jmp 0x64f4f
jmp 0x64f51
jmp 0x64f53
jmp 0x64f55
jmp 0x64f57
jmp 0x64f59
leaq -0xa0(%rbp), %rdi
callq 0x89e8
jmp 0x652f1
leaq 0x1ebd(%rip), %rsi      # 0x66e2e
leaq -0x70(%rbp), %rdi
callq 0x155a0
movb %al, -0x1fa(%rbp)
jmp 0x64f82
movb -0x1fa(%rbp), %al
testb $0x1, %al
jne 0x64f91
jmp 0x6506c
movq -0x10(%rbp), %rdi
movl $0x2, %esi
callq 0x15670
movq %rax, %rsi
leaq -0xc0(%rbp), %rdi
callq 0x81c0
jmp 0x64fb0
leaq 0x355c(%rip), %rsi      # 0x68513
leaq -0xc0(%rbp), %rdi
callq 0x155a0
movb %al, -0x1fb(%rbp)
jmp 0x64fcb
movb -0x1fb(%rbp), %al
testb $0x1, %al
jne 0x64fd7
jmp 0x65042
cmpl $0x4, -0x14(%rbp)
jle 0x65042
movq -0x10(%rbp), %rdi
movl $0x4, %esi
callq 0x15670
movq %rax, %rsi
leaq -0xc0(%rbp), %rdi
callq 0x8060
jmp 0x64ffc
movq -0x10(%rbp), %rdi
movl $0x4, %esi
callq 0x15670
movq %rax, %rsi
addq $0x20, %rsi
movq -0x8(%rbp), %rdi
addq $0x100, %rdi            # imm = 0x100
callq 0x8060
jmp 0x65023
jmp 0x65042
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0xc0(%rbp), %rdi
callq 0x89e8
jmp 0x6531c
movq -0x8(%rbp), %rdi
addq $0xe0, %rdi
leaq -0xc0(%rbp), %rsi
callq 0x8060
jmp 0x6505b
leaq -0xc0(%rbp), %rdi
callq 0x89e8
jmp 0x652ef
leaq 0xb44a(%rip), %rsi      # 0x704bd
leaq -0x70(%rbp), %rdi
callq 0x155a0
movb %al, -0x1fc(%rbp)
jmp 0x65084
movb -0x1fc(%rbp), %al
testb $0x1, %al
jne 0x65093
jmp 0x652ed
movq -0x10(%rbp), %rdi
movl $0x2, %esi
callq 0x15670
movq %rax, %rdi
leaq 0x1d83(%rip), %rsi      # 0x66e2e
callq 0x155a0
movb %al, -0x1fd(%rbp)
jmp 0x650b8
movb -0x1fd(%rbp), %al
testb $0x1, %al
jne 0x650c7
jmp 0x652ed
movq -0x8(%rbp), %rdi
addq $0xa0, %rdi
leaq 0x95c6(%rip), %rsi      # 0x6e69f
callq 0x8670
jmp 0x650e0
movq -0x8(%rbp), %rdi
addq $0xe0, %rdi
leaq 0xb3d0(%rip), %rsi      # 0x704c2
callq 0x8670
jmp 0x650f9
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x15670
addq $0x40, %rax
movq %rax, -0xc8(%rbp)
movq -0xc8(%rbp), %rdi
callq 0x4bd90
movq %rax, -0xd0(%rbp)
movq -0xc8(%rbp), %rdi
callq 0x4bbd0
movq %rax, -0xd8(%rbp)
leaq -0xd0(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x65770
testb $0x1, %al
jne 0x65153
jmp 0x652d2
leaq -0xd0(%rbp), %rdi
callq 0x4c1d0
movq %rax, %rsi
leaq -0xf8(%rbp), %rdi
callq 0x81c0
jmp 0x65170
leaq -0x149(%rbp), %rdi
movq %rdi, -0x208(%rbp)
callq 0x56e80
movq -0x208(%rbp), %rsi
leaq -0x148(%rbp), %rdi
callq 0x56ea0
jmp 0x65198
leaq -0x149(%rbp), %rdi
callq 0x56f30
leaq 0x2d4b5(%rip), %rdx     # 0x92660
leaq -0xf8(%rbp), %rdi
leaq -0x148(%rbp), %rsi
xorl %ecx, %ecx
callq 0x657b0
movb %al, -0x209(%rbp)
jmp 0x651c8
movb -0x209(%rbp), %al
testb $0x1, %al
jne 0x651d7
jmp 0x6526d
leaq -0x148(%rbp), %rdi
movl $0x1, %esi
callq 0x56fb0
movq %rax, -0x218(%rbp)
jmp 0x651f1
movq -0x218(%rbp), %rsi
leaq -0x170(%rbp), %rdi
callq 0x57040
jmp 0x65206
movq -0x8(%rbp), %rdi
addq $0xa0, %rdi
addq $0x60, %rdi
leaq -0x170(%rbp), %rsi
callq 0x85b0
leaq -0x170(%rbp), %rdi
callq 0x89e8
movl $0x1, -0x174(%rbp)
jmp 0x65277
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x149(%rbp), %rdi
callq 0x56f30
jmp 0x652c4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x148(%rbp), %rdi
callq 0x57180
jmp 0x652c4
movl $0x0, -0x174(%rbp)
leaq -0x148(%rbp), %rdi
callq 0x57180
movl -0x174(%rbp), %eax
testl %eax, %eax
jne 0x65299
jmp 0x6528f
movl $0x0, -0x174(%rbp)
leaq -0xf8(%rbp), %rdi
callq 0x89e8
movl -0x174(%rbp), %eax
testl %eax, %eax
jne 0x652fd
jmp 0x652b1
jmp 0x652b3
leaq -0xd0(%rbp), %rdi
callq 0x65810
jmp 0x65137
leaq -0xf8(%rbp), %rdi
callq 0x89e8
jmp 0x6531c
movq -0x8(%rbp), %rdi
addq $0x100, %rdi            # imm = 0x100
leaq 0x5128(%rip), %rsi      # 0x6a40c
callq 0x8670
jmp 0x652eb
jmp 0x652ed
jmp 0x652ef
jmp 0x652f1
jmp 0x652f3
movl $0x0, -0x174(%rbp)
leaq -0x70(%rbp), %rdi
callq 0x15540
movl -0x174(%rbp), %eax
testl %eax, %eax
je 0x65317
jmp 0x65312
jmp 0x656fd
jmp 0x656f9
leaq -0x70(%rbp), %rdi
callq 0x15540
jmp 0x65706
cmpl $0x1, -0x14(%rbp)
jne 0x656f7
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x15670
movq %rax, %rdi
addq $0x40, %rdi
callq 0x15690
cmpq $0x1, %rax
jbe 0x656f7
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
movq %rsi, -0x228(%rbp)
callq 0x15670
movq %rax, %rsi
addq $0x40, %rsi
leaq -0x190(%rbp), %rdi
movq %rdi, -0x230(%rbp)
callq 0x4cbe0
movq -0x230(%rbp), %rdi
movq -0x228(%rbp), %rsi
callq 0x4f7a0
movq %rax, %rdi
leaq 0x91f6(%rip), %rsi      # 0x6e598
callq 0x155a0
movb %al, -0x219(%rbp)
jmp 0x653af
movb -0x219(%rbp), %al
testb $0x1, %al
jne 0x653be
jmp 0x656db
leaq -0x190(%rbp), %rdi
movl $0x1, %esi
callq 0x4f7a0
movq %rax, %rdi
leaq 0xb0fb(%rip), %rsi      # 0x704d4
callq 0x65830
movb %al, -0x231(%rbp)
jmp 0x653e6
movb -0x231(%rbp), %al
testb $0x1, %al
jne 0x653f5
jmp 0x656db
movq -0x8(%rbp), %rdi
addq $0xe0, %rdi
leaq 0xb0bb(%rip), %rsi      # 0x704c2
callq 0x8670
jmp 0x6540e
movq -0x8(%rbp), %rdi
addq $0xa0, %rdi
leaq 0x927f(%rip), %rsi      # 0x6e69f
callq 0x8670
jmp 0x65427
leaq -0x190(%rbp), %rdi
movq %rdi, -0x240(%rbp)
callq 0x15690
movq -0x240(%rbp), %rdi
movq %rax, %rsi
decq %rsi
callq 0x4f7a0
movq %rax, %rdi
leaq 0xb047(%rip), %rsi      # 0x7049d
callq 0x4f7f0
movb %al, -0x232(%rbp)
jmp 0x65463
movb -0x232(%rbp), %al
testb $0x1, %al
jne 0x6546f
jmp 0x6549b
movq -0x8(%rbp), %rdi
addq $0xe0, %rdi
leaq 0xb01c(%rip), %rsi      # 0x7049d
callq 0x8670
jmp 0x65488
jmp 0x6549b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x656e9
leaq -0x190(%rbp), %rdi
callq 0x15690
movq %rax, -0x198(%rbp)
movq $0x0, -0x1a0(%rbp)
movq -0x1a0(%rbp), %rax
cmpq -0x198(%rbp), %rax
jae 0x655c6
movq -0x1a0(%rbp), %rsi
leaq -0x190(%rbp), %rdi
callq 0x4f7a0
movq %rax, %rdi
leaq 0x91b5(%rip), %rsi      # 0x6e69f
callq 0x4f7c0
movb %al, -0x241(%rbp)
jmp 0x654f7
movb -0x241(%rbp), %al
testb $0x1, %al
jne 0x65506
jmp 0x655ad
movq -0x1a0(%rbp), %rsi
leaq -0x190(%rbp), %rdi
callq 0x4f7a0
movq %rax, %rdi
callq 0x81a0
movq %rax, %rdi
callq 0x65710
movl %eax, -0x248(%rbp)
jmp 0x65531
movl -0x248(%rbp), %eax
subl $0x4, %eax
je 0x65558
jmp 0x6553e
movl -0x248(%rbp), %eax
subl $0x5, %eax
je 0x65573
jmp 0x6554b
movl -0x248(%rbp), %eax
subl $0x6, %eax
je 0x6558e
jmp 0x655a9
movq -0x8(%rbp), %rdi
addq $0x100, %rdi            # imm = 0x100
leaq 0xaf6f(%rip), %rsi      # 0x704d9
callq 0x8670
jmp 0x65571
jmp 0x655ab
movq -0x8(%rbp), %rdi
addq $0x100, %rdi            # imm = 0x100
leaq 0x213f(%rip), %rsi      # 0x676c4
callq 0x8670
jmp 0x6558c
jmp 0x655ab
movq -0x8(%rbp), %rdi
addq $0x100, %rdi            # imm = 0x100
leaq 0xaf3d(%rip), %rsi      # 0x704dd
callq 0x8670
jmp 0x655a7
jmp 0x655ab
jmp 0x655ab
jmp 0x655c6
jmp 0x655af
movq -0x1a0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1a0(%rbp)
jmp 0x654b9
movq -0x8(%rbp), %rdi
addq $0x100, %rdi            # imm = 0x100
leaq 0x4e34(%rip), %rsi      # 0x6a40c
callq 0x155a0
movb %al, -0x249(%rbp)
jmp 0x655e5
movb -0x249(%rbp), %al
testb $0x1, %al
jne 0x655f4
jmp 0x656d9
leaq -0x1c0(%rbp), %rdi
movq %rdi, -0x258(%rbp)
callq 0x8680
leaq -0x190(%rbp), %rdi
movl $0x1, %esi
callq 0x4f7a0
movq -0x258(%rbp), %rdi
movq %rax, %rsi
movl $0x4, %edx
movq $-0x1, %rcx
callq 0x8230
jmp 0x65635
leaq -0x1e8(%rbp), %rdi
movq %rdi, -0x260(%rbp)
callq 0x89c0
movq -0x260(%rbp), %rdx
leaq -0x1e0(%rbp), %rdi
leaq -0x1c0(%rbp), %rsi
callq 0x57100
jmp 0x65664
movq -0x8(%rbp), %rdi
addq $0xa0, %rdi
addq $0x60, %rdi
leaq -0x1e0(%rbp), %rsi
callq 0x85b0
leaq -0x1e0(%rbp), %rdi
callq 0x89e8
leaq -0x1e8(%rbp), %rdi
callq 0x86a0
leaq -0x1c0(%rbp), %rdi
callq 0x89e8
jmp 0x656d9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x656cb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x1e8(%rbp), %rdi
callq 0x86a0
leaq -0x1c0(%rbp), %rdi
callq 0x89e8
jmp 0x656e9
jmp 0x656db
leaq -0x190(%rbp), %rdi
callq 0x15790
jmp 0x656f7
leaq -0x190(%rbp), %rdi
callq 0x15790
jmp 0x65706
jmp 0x656f9
jmp 0x656fb
jmp 0x656fd
addq $0x260, %rsp            # imm = 0x260
popq %rbp
retq
movq -0x78(%rbp), %rdi
callq 0x88a0
nop