// File: alex-courtis[P]xlayoutdisplay/src/calculations.cpp
// Function: renderUserInfo(std::__cxx11::list<std::shared_ptr<Output>, std::allocator<std::shared_ptr<Output>>> const&)
const string renderUserInfo(const list<shared_ptr<Output>> &outputs) {
    stringstream ss;
    for (const auto &output : outputs) {
        ss << output->name;
        switch (output->state) {
            case Output::active:
                ss << " active";
                break;
            case Output::connected:
                ss << " connected";
                break;
            case Output::disconnected:
                ss << " disconnected";
                break;
        }
        if (output->edid) {
            ss << ' ' << output->edid->maxCmHoriz() << "cm/" << output->edid->maxCmVert() << "cm";
        }
        if (output->currentMode && output->currentPos) {
            ss << ' ' << output->currentMode->width << 'x' << output->currentMode->height;
            ss << '+' << output->currentPos->x << '+' << output->currentPos->y;
            ss << ' ' << output->currentMode->refresh << "Hz";
        }
        ss << endl;
        for (const auto &mode : output->modes) {
            ss << (mode == output->currentMode ? '*' : ' ');
            ss << (mode == output->preferredMode ? '+' : ' ');
            ss << (mode == output->optimalMode ? '!' : ' ');
            ss << mode->width << 'x' << mode->height << ' ' << mode->refresh << "Hz";
            ss << endl;
        }
    }
    ss << "*current +preferred !optimal";
    return ss.str();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2e0, %rsp            # imm = 0x2E0
movq %rdi, -0x1f8(%rbp)
movq %rdi, %rax
movq %rax, -0x1f0(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
leaq -0x198(%rbp), %rdi
callq 0x73a0
movq -0x10(%rbp), %rax
movq %rax, -0x1a0(%rbp)
movq -0x1a0(%rbp), %rdi
callq 0xbf80
movq %rax, -0x1a8(%rbp)
movq -0x1a0(%rbp), %rdi
callq 0xbfb0
movq %rax, -0x1b0(%rbp)
leaq -0x1a8(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
callq 0xbfe0
testb $0x1, %al
jne 0xb24d
jmp 0xb861
leaq -0x1a8(%rbp), %rdi
callq 0xc010
movq %rax, -0x1b8(%rbp)
leaq -0x188(%rbp), %rax
movq %rax, -0x200(%rbp)
movq -0x1b8(%rbp), %rdi
callq 0xc040
movq -0x200(%rbp), %rdi
movq %rax, %rsi
callq 0x7460
jmp 0xb28b
movq -0x1b8(%rbp), %rdi
callq 0xc040
movl 0x20(%rax), %eax
movl %eax, -0x204(%rbp)
testl %eax, %eax
je 0xb2e3
jmp 0xb2a6
movl -0x204(%rbp), %eax
subl $0x1, %eax
je 0xb2fa
jmp 0xb2b3
movl -0x204(%rbp), %eax
subl $0x2, %eax
je 0xb311
jmp 0xb328
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c0(%rbp)
movl %eax, -0x1c4(%rbp)
leaq -0x198(%rbp), %rdi
callq 0x73d0
jmp 0xb8a7
leaq -0x188(%rbp), %rdi
leaq 0x3503a(%rip), %rsi     # 0x4032b
callq 0x74a0
jmp 0xb2f8
jmp 0xb328
leaq -0x188(%rbp), %rdi
leaq 0x3502b(%rip), %rsi     # 0x40333
callq 0x74a0
jmp 0xb30f
jmp 0xb328
leaq -0x188(%rbp), %rdi
leaq 0x3501f(%rip), %rsi     # 0x4033e
callq 0x74a0
jmp 0xb326
jmp 0xb328
movq -0x1b8(%rbp), %rdi
callq 0xc040
movq %rax, %rdi
addq $0x80, %rdi
callq 0xc560
testb $0x1, %al
jne 0xb34c
jmp 0xb427
leaq -0x188(%rbp), %rdi
movl $0x20, %esi
callq 0x7600
movq %rax, -0x210(%rbp)
jmp 0xb366
movq -0x1b8(%rbp), %rdi
callq 0xc040
movq %rax, %rdi
subq $-0x80, %rdi
callq 0xc580
movq %rax, %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movl %eax, -0x214(%rbp)
jmp 0xb392
movl -0x214(%rbp), %esi
movq -0x210(%rbp), %rdi
callq 0x7710
movq %rax, -0x220(%rbp)
jmp 0xb3ad
movq -0x220(%rbp), %rdi
leaq 0x34f91(%rip), %rsi     # 0x4034c
callq 0x74a0
movq %rax, -0x228(%rbp)
jmp 0xb3c9
movq -0x1b8(%rbp), %rdi
callq 0xc040
movq %rax, %rdi
subq $-0x80, %rdi
callq 0xc580
movq %rax, %rdi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movl %eax, -0x22c(%rbp)
jmp 0xb3f5
movl -0x22c(%rbp), %esi
movq -0x228(%rbp), %rdi
callq 0x7710
movq %rax, -0x238(%rbp)
jmp 0xb410
movq -0x238(%rbp), %rdi
leaq 0x34f32(%rip), %rsi     # 0x40350
callq 0x74a0
jmp 0xb425
jmp 0xb427
movq -0x1b8(%rbp), %rdi
callq 0xc040
movq %rax, %rdi
addq $0x40, %rdi
callq 0x95b0
testb $0x1, %al
jne 0xb448
jmp 0xb5e3
movq -0x1b8(%rbp), %rdi
callq 0xc040
movq %rax, %rdi
addq $0x70, %rdi
callq 0x96e0
testb $0x1, %al
jne 0xb469
jmp 0xb5e3
leaq -0x188(%rbp), %rdi
movl $0x20, %esi
callq 0x7600
movq %rax, -0x240(%rbp)
jmp 0xb483
movq -0x1b8(%rbp), %rdi
callq 0xc040
movq %rax, %rdi
addq $0x40, %rdi
callq 0x8400
movq -0x240(%rbp), %rdi
movl 0x8(%rax), %esi
callq 0x7710
movq %rax, -0x248(%rbp)
jmp 0xb4b3
movq -0x248(%rbp), %rdi
movl $0x78, %esi
callq 0x7600
movq %rax, -0x250(%rbp)
jmp 0xb4cd
movq -0x1b8(%rbp), %rdi
callq 0xc040
movq %rax, %rdi
addq $0x40, %rdi
callq 0x8400
movq -0x250(%rbp), %rdi
movl 0xc(%rax), %esi
callq 0x7710
jmp 0xb4f6
leaq -0x188(%rbp), %rdi
movl $0x2b, %esi
callq 0x7600
movq %rax, -0x258(%rbp)
jmp 0xb510
movq -0x1b8(%rbp), %rdi
callq 0xc040
movq %rax, %rdi
addq $0x70, %rdi
callq 0xc5a0
movq -0x258(%rbp), %rdi
movl (%rax), %esi
callq 0x78f0
movq %rax, -0x260(%rbp)
jmp 0xb53f
movq -0x260(%rbp), %rdi
movl $0x2b, %esi
callq 0x7600
movq %rax, -0x268(%rbp)
jmp 0xb559
movq -0x1b8(%rbp), %rdi
callq 0xc040
movq %rax, %rdi
addq $0x70, %rdi
callq 0xc5a0
movq -0x268(%rbp), %rdi
movl 0x4(%rax), %esi
callq 0x78f0
jmp 0xb582
leaq -0x188(%rbp), %rdi
movl $0x20, %esi
callq 0x7600
movq %rax, -0x270(%rbp)
jmp 0xb59c
movq -0x1b8(%rbp), %rdi
callq 0xc040
movq %rax, %rdi
addq $0x40, %rdi
callq 0x8400
movq -0x270(%rbp), %rdi
movl 0x10(%rax), %esi
callq 0x7710
movq %rax, -0x278(%rbp)
jmp 0xb5cc
movq -0x278(%rbp), %rdi
leaq 0x34d79(%rip), %rsi     # 0x40353
callq 0x74a0
jmp 0xb5e1
jmp 0xb5e3
leaq -0x188(%rbp), %rdi
movq 0x5295f(%rip), %rsi     # 0x5df50
callq 0x7510
jmp 0xb5f8
movq -0x1b8(%rbp), %rdi
callq 0xc040
addq $0x28, %rax
movq %rax, -0x1d0(%rbp)
movq -0x1d0(%rbp), %rdi
callq 0x97a0
movq %rax, -0x1d8(%rbp)
movq -0x1d0(%rbp), %rdi
callq 0x97d0
movq %rax, -0x1e0(%rbp)
leaq -0x1d8(%rbp), %rdi
leaq -0x1e0(%rbp), %rsi
callq 0xa070
testb $0x1, %al
jne 0xb651
jmp 0xb84e
leaq -0x1d8(%rbp), %rdi
callq 0xa0f0
movq %rax, -0x1e8(%rbp)
leaq -0x188(%rbp), %rax
movq %rax, -0x280(%rbp)
movq -0x1e8(%rbp), %rax
movq %rax, -0x288(%rbp)
movq -0x1b8(%rbp), %rdi
callq 0xc040
movq -0x288(%rbp), %rdi
movq %rax, %rsi
addq $0x40, %rsi
callq 0xa700
movq -0x280(%rbp), %rdi
testb %al, %al
movl $0x2a, %eax
movl $0x20, %esi
cmovnel %eax, %esi
callq 0x7600
jmp 0xb6bc
leaq -0x188(%rbp), %rax
movq %rax, -0x290(%rbp)
movq -0x1e8(%rbp), %rax
movq %rax, -0x298(%rbp)
movq -0x1b8(%rbp), %rdi
callq 0xc040
movq -0x298(%rbp), %rdi
movq %rax, %rsi
addq $0x50, %rsi
callq 0xa700
movq -0x290(%rbp), %rdi
testb %al, %al
movl $0x2b, %eax
movl $0x20, %esi
cmovnel %eax, %esi
callq 0x7600
jmp 0xb714
leaq -0x188(%rbp), %rax
movq %rax, -0x2a0(%rbp)
movq -0x1e8(%rbp), %rax
movq %rax, -0x2a8(%rbp)
movq -0x1b8(%rbp), %rdi
callq 0xc040
movq -0x2a8(%rbp), %rdi
movq %rax, %rsi
addq $0x60, %rsi
callq 0xa700
movq -0x2a0(%rbp), %rdi
movzbl %al, %esi
orl $0x20, %esi
callq 0x7600
jmp 0xb763
leaq -0x188(%rbp), %rax
movq %rax, -0x2b8(%rbp)
movq -0x1e8(%rbp), %rdi
callq 0x8400
movq -0x2b8(%rbp), %rdi
movl 0x8(%rax), %esi
callq 0x7710
movq %rax, -0x2b0(%rbp)
jmp 0xb795
movq -0x2b0(%rbp), %rdi
movl $0x78, %esi
callq 0x7600
movq %rax, -0x2c0(%rbp)
jmp 0xb7af
movq -0x1e8(%rbp), %rdi
callq 0x8400
movq -0x2c0(%rbp), %rdi
movl 0xc(%rax), %esi
callq 0x7710
movq %rax, -0x2c8(%rbp)
jmp 0xb7d3
movq -0x2c8(%rbp), %rdi
movl $0x20, %esi
callq 0x7600
movq %rax, -0x2d0(%rbp)
jmp 0xb7ed
movq -0x1e8(%rbp), %rdi
callq 0x8400
movq -0x2d0(%rbp), %rdi
movl 0x10(%rax), %esi
callq 0x7710
movq %rax, -0x2d8(%rbp)
jmp 0xb811
movq -0x2d8(%rbp), %rdi
leaq 0x34b34(%rip), %rsi     # 0x40353
callq 0x74a0
jmp 0xb826
leaq -0x188(%rbp), %rdi
movq 0x5271c(%rip), %rsi     # 0x5df50
callq 0x7510
jmp 0xb83b
jmp 0xb83d
leaq -0x1d8(%rbp), %rdi
callq 0xa120
jmp 0xb635
jmp 0xb850
leaq -0x1a8(%rbp), %rdi
callq 0xc090
jmp 0xb231
leaq -0x188(%rbp), %rdi
leaq 0x34ae7(%rip), %rsi     # 0x40356
callq 0x74a0
jmp 0xb876
movq -0x1f8(%rbp), %rdi
leaq -0x198(%rbp), %rsi
callq 0x7490
jmp 0xb88b
leaq -0x198(%rbp), %rdi
callq 0x73d0
movq -0x1f0(%rbp), %rax
addq $0x2e0, %rsp            # imm = 0x2E0
popq %rbp
retq
movq -0x1c0(%rbp), %rdi
callq 0x7930
nopw %cs:(%rax,%rax)