// File: yayuntian[P]user_agent/operatingSystem.cpp
// Function: opera(UserAgent&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>&, int)
void opera(UserAgent& p, vector<string>& comment, int slen) {
    if (starts_with(comment[0], "Windows")) {
        p.platform = "Windows";
        p.os = normalizeOS(comment[0]);
        if (slen > 2) {
            if (slen > 3 && starts_with(comment[2], "MRA")) {
                p.localization = comment[3];
            } else {
                p.localization = comment[2];
            }
        }
    } else {
        if (starts_with(comment[0], "Android")) {
            p.mobile = true;
        }
        p.platform = comment[0];
        if (slen > 1) {
            p.os = comment[1];
            if (slen > 3) {
                p.localization = comment[3];
            }
        } else {
            p.os = comment[0];
        }
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x4f7a0
movq %rax, %rdi
leaq 0x1fc79(%rip), %rsi     # 0x6e5a3
callq 0x4f7c0
testb $0x1, %al
jne 0x4e938
jmp 0x4ea33
movq -0x8(%rbp), %rdi
addq $0x40, %rdi
leaq 0x1fc5c(%rip), %rsi     # 0x6e5a3
callq 0x8670
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x4f7a0
movq %rax, %rsi
leaq -0x58(%rbp), %rdi
movq %rdi, -0x70(%rbp)
callq 0x81c0
movq -0x70(%rbp), %rsi
leaq -0x38(%rbp), %rdi
callq 0x4da10
jmp 0x4e978
movq -0x8(%rbp), %rdi
addq $0x60, %rdi
leaq -0x38(%rbp), %rsi
callq 0x85b0
leaq -0x38(%rbp), %rdi
callq 0x89e8
leaq -0x58(%rbp), %rdi
callq 0x89e8
cmpl $0x2, -0x14(%rbp)
jle 0x4ea2e
cmpl $0x3, -0x14(%rbp)
jle 0x4ea0b
movq -0x10(%rbp), %rdi
movl $0x2, %esi
callq 0x4f7a0
movq %rax, %rdi
leaq 0x19b50(%rip), %rsi     # 0x68513
callq 0x4fa50
testb $0x1, %al
jne 0x4e9ce
jmp 0x4ea0b
movq -0x10(%rbp), %rdi
movl $0x3, %esi
callq 0x4f7a0
movq %rax, %rsi
movq -0x8(%rbp), %rdi
addq $0x80, %rdi
callq 0x8060
jmp 0x4ea2c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x89e8
jmp 0x4eaef
movq -0x10(%rbp), %rdi
movl $0x2, %esi
callq 0x4f7a0
movq %rax, %rsi
movq -0x8(%rbp), %rdi
addq $0x80, %rdi
callq 0x8060
jmp 0x4ea2e
jmp 0x4eae9
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x4f7a0
movq %rax, %rdi
leaq 0x199a5(%rip), %rsi     # 0x683ef
callq 0x4f7c0
testb $0x1, %al
jne 0x4ea55
jmp 0x4ea60
movq -0x8(%rbp), %rax
movb $0x1, 0x121(%rax)
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x4f7a0
movq %rax, %rsi
movq -0x8(%rbp), %rdi
addq $0x40, %rdi
callq 0x8060
cmpl $0x1, -0x14(%rbp)
jle 0x4eaca
movq -0x10(%rbp), %rdi
movl $0x1, %esi
callq 0x4f7a0
movq %rax, %rsi
movq -0x8(%rbp), %rdi
addq $0x60, %rdi
callq 0x8060
cmpl $0x3, -0x14(%rbp)
jle 0x4eac8
movq -0x10(%rbp), %rdi
movl $0x3, %esi
callq 0x4f7a0
movq %rax, %rsi
movq -0x8(%rbp), %rdi
addq $0x80, %rdi
callq 0x8060
jmp 0x4eae7
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x4f7a0
movq %rax, %rsi
movq -0x8(%rbp), %rdi
addq $0x60, %rdi
callq 0x8060
jmp 0x4eae9
addq $0x70, %rsp
popq %rbp
retq
movq -0x60(%rbp), %rdi
callq 0x88a0
nopl (%rax,%rax)