cnl icon indicating copy to clipboard operation
cnl copied to clipboard

Extremely big binary output when compiling with -fsanitize

Open elcojacobs opened this issue 5 years ago • 22 comments

I'm trying the latest version of cnl and get an extremely large binary when compiled with address sanitizer.

Edit: I seem to be able to easily show a minimal example on godbolt: https://godbolt.org/z/K2WUNC

Here is an example function that became really big and the output of objdump. I had many sanitizer and coverage options enabled in the compile below. The result is 15kb for just 1 function. With just -fsanitize=address the function is 3254 bytes. Without -fsanitize, the size is 535 bytes.

How could I use cnl with an fsanitize and fundefined?

The function in question:


    void update()
    {
        uint8_t numActuators = requesters.size();
        if (numActuators == 0) {
            return;
        }

        auto requestedTotal = value_t(0);
        for (const auto& a : requesters) {
            requestedTotal += a.requested;
        }
        auto budgetLeft = value_t(0);
        if (available > requestedTotal) {
            budgetLeft = available - requestedTotal;
            requestedTotal = available;
        }
        auto budgetLeftPerActuator = cnl::quotient(budgetLeft, numActuators);

        safe_elastic_fixed_point<31, -21> scale = cnl::quotient(available, requestedTotal);

        for (auto& a : requesters) {
            a.granted = a.requested * scale;
            a.granted += budgetLeftPerActuator;
        }
    }

value_t is an alias of fp12_t:

#pragma once

#include "../cnl/include/cnl/num_traits.h"
#include "../cnl/include/cnl/static_number.h"
#include <cstdint>

template <
    int Digits,
    int Exponent,
    typename Narrowest = signed>
using safe_elastic_fixed_point = cnl::static_number<Digits, Exponent, cnl::native_rounding_tag, cnl::saturated_overflow_tag, Narrowest>;

using fp12_t = safe_elastic_fixed_point<23, -12>;

std::string
to_string_dec(const fp12_t& t, uint8_t decimals);

Full code here: https://github.com/elcojacobs/brewblox-firmware/blob/feature/cnl-updates/lib/inc/Balancer.h

I'm using gcc (Ubuntu 8.3.0-6ubuntu1) 8.3.0. Just run make in lib/test.

Here is the objdump of that function:

Disassembly of section .text._ZN8BalancerILh2EE6updateEv:

0000000000000000 <_ZN8BalancerILh2EE6updateEv>: void update() 0: 55 push %rbp 1: 48 89 e5 mov %rsp,%rbp 4: 41 57 push %r15 6: 41 56 push %r14 8: 48 8d 85 f0 e5 ff ff lea -0x1a10(%rbp),%rax f: 41 55 push %r13 11: 41 54 push %r12 13: 53 push %rbx 14: 48 81 ec 38 1a 00 00 sub $0x1a38,%rsp 1b: 83 3d 00 00 00 00 00 cmpl $0x0,0x0(%rip) # 22 <_ZN8BalancerILh2EE6updateEv+0x22> 22: 48 89 bd e0 e5 ff ff mov %rdi,-0x1a20(%rbp) 29: 48 89 85 d8 e5 ff ff mov %rax,-0x1a28(%rbp) 30: 48 89 85 b8 e5 ff ff mov %rax,-0x1a48(%rbp) 37: 74 1c je 55 <_ZN8BalancerILh2EE6updateEv+0x55> 39: bf c0 19 00 00 mov $0x19c0,%edi 3e: e8 00 00 00 00 callq 43 <_ZN8BalancerILh2EE6updateEv+0x43> 43: 48 85 c0 test %rax,%rax 46: 48 0f 44 85 d8 e5 ff cmove -0x1a28(%rbp),%rax 4d: ff 4e: 48 89 85 d8 e5 ff ff mov %rax,-0x1a28(%rbp) 55: 48 8b 85 d8 e5 ff ff mov -0x1a28(%rbp),%rax 5c: 48 8d 0d 00 00 00 00 lea 0x0(%rip),%rcx # 63 <_ZN8BalancerILh2EE6updateEv+0x63> 63: 48 c7 00 b3 8a b5 41 movq $0x41b58ab3,(%rax) 6a: 48 8d 98 e0 19 00 00 lea 0x19e0(%rax),%rbx 71: 48 8b 85 d8 e5 ff ff mov -0x1a28(%rbp),%rax 78: 48 89 48 08 mov %rcx,0x8(%rax) 7c: 48 8b 85 d8 e5 ff ff mov -0x1a28(%rbp),%rax 83: 48 8d 0d 76 ff ff ff lea -0x8a(%rip),%rcx # 0 <_ZN8BalancerILh2EE6updateEv> 8a: 48 89 48 10 mov %rcx,0x10(%rax) 8e: 4c 8b bd d8 e5 ff ff mov -0x1a28(%rbp),%r15 95: 49 c1 ef 03 shr $0x3,%r15 99: 41 c7 87 00 80 ff 7f movl $0xf1f1f1f1,0x7fff8000(%r15) a0: f1 f1 f1 f1 a4: 41 c7 87 04 80 ff 7f movl $0xf2f2f201,0x7fff8004(%r15) ab: 01 f2 f2 f2 af: 41 c7 87 08 80 ff 7f movl $0xf2f2f2f2,0x7fff8008(%r15) b6: f2 f2 f2 f2 ba: 41 c7 87 0c 80 ff 7f movl $0xf2f2f201,0x7fff800c(%r15) c1: 01 f2 f2 f2 c5: 41 c7 87 10 80 ff 7f movl $0xf2f2f2f2,0x7fff8010(%r15) cc: f2 f2 f2 f2 d0: 41 c7 87 14 80 ff 7f movl $0xf2f2f201,0x7fff8014(%r15) d7: 01 f2 f2 f2 db: 41 c7 87 18 80 ff 7f movl $0xf2f2f2f2,0x7fff8018(%r15) e2: f2 f2 f2 f2 e6: 41 c7 87 1c 80 ff 7f movl $0xf2f2f201,0x7fff801c(%r15) ed: 01 f2 f2 f2 f1: 41 c7 87 20 80 ff 7f movl $0xf2f2f2f2,0x7fff8020(%r15) f8: f2 f2 f2 f2 fc: 41 c7 87 24 80 ff 7f movl $0xf2f2f201,0x7fff8024(%r15) 103: 01 f2 f2 f2 107: 41 c7 87 28 80 ff 7f movl $0xf2f2f2f2,0x7fff8028(%r15) 10e: f2 f2 f2 f2 112: 41 c7 87 2c 80 ff 7f movl $0xf2f2f201,0x7fff802c(%r15) 119: 01 f2 f2 f2 11d: 41 c7 87 30 80 ff 7f movl $0xf2f2f2f2,0x7fff8030(%r15) 124: f2 f2 f2 f2 128: 41 c7 87 34 80 ff 7f movl $0xf2f2f201,0x7fff8034(%r15) 12f: 01 f2 f2 f2 133: 41 c7 87 38 80 ff 7f movl $0xf2f2f2f2,0x7fff8038(%r15) 13a: f2 f2 f2 f2 13e: 41 c7 87 3c 80 ff 7f movl $0xf2f2f201,0x7fff803c(%r15) 145: 01 f2 f2 f2 149: 41 c7 87 40 80 ff 7f movl $0xf2f2f2f2,0x7fff8040(%r15) 150: f2 f2 f2 f2 154: 41 c7 87 44 80 ff 7f movl $0xf2f2f201,0x7fff8044(%r15) 15b: 01 f2 f2 f2 15f: 41 c7 87 48 80 ff 7f movl $0xf2f2f2f2,0x7fff8048(%r15) 166: f2 f2 f2 f2 16a: 41 c7 87 4c 80 ff 7f movl $0xf2f2f201,0x7fff804c(%r15) 171: 01 f2 f2 f2 175: 41 c7 87 50 80 ff 7f movl $0xf2f2f2f2,0x7fff8050(%r15) 17c: f2 f2 f2 f2 180: 41 c7 87 54 80 ff 7f movl $0xf2f2f201,0x7fff8054(%r15) 187: 01 f2 f2 f2 18b: 41 c7 87 58 80 ff 7f movl $0xf2f2f2f2,0x7fff8058(%r15) 192: f2 f2 f2 f2 196: 41 c7 87 5c 80 ff 7f movl $0xf2f2f201,0x7fff805c(%r15) 19d: 01 f2 f2 f2 1a1: 41 c7 87 60 80 ff 7f movl $0xf2f2f2f2,0x7fff8060(%r15) 1a8: f2 f2 f2 f2 1ac: 41 c7 87 64 80 ff 7f movl $0xf2f2f201,0x7fff8064(%r15) 1b3: 01 f2 f2 f2 1b7: 41 c7 87 68 80 ff 7f movl $0xf2f2f2f2,0x7fff8068(%r15) 1be: f2 f2 f2 f2 1c2: 41 c7 87 6c 80 ff 7f movl $0xf2f2f201,0x7fff806c(%r15) 1c9: 01 f2 f2 f2 1cd: 41 c7 87 70 80 ff 7f movl $0xf2f2f2f2,0x7fff8070(%r15) 1d4: f2 f2 f2 f2 1d8: 41 c7 87 74 80 ff 7f movl $0xf2f2f201,0x7fff8074(%r15) 1df: 01 f2 f2 f2 1e3: 41 c7 87 78 80 ff 7f movl $0xf2f2f2f2,0x7fff8078(%r15) 1ea: f2 f2 f2 f2 1ee: 41 c7 87 7c 80 ff 7f movl $0xf2f2f201,0x7fff807c(%r15) 1f5: 01 f2 f2 f2 1f9: 41 c7 87 80 80 ff 7f movl $0xf2f2f2f2,0x7fff8080(%r15) 200: f2 f2 f2 f2 204: 41 c7 87 84 80 ff 7f movl $0xf2f2f201,0x7fff8084(%r15) 20b: 01 f2 f2 f2 20f: 41 c7 87 88 80 ff 7f movl $0xf2f2f2f2,0x7fff8088(%r15) 216: f2 f2 f2 f2 21a: 41 c7 87 8c 80 ff 7f movl $0xf2f2f201,0x7fff808c(%r15) 221: 01 f2 f2 f2 225: 41 c7 87 90 80 ff 7f movl $0xf2f2f2f2,0x7fff8090(%r15) 22c: f2 f2 f2 f2 230: 41 c7 87 94 80 ff 7f movl $0xf2f2f201,0x7fff8094(%r15) 237: 01 f2 f2 f2 23b: 41 c7 87 98 80 ff 7f movl $0xf2f2f2f2,0x7fff8098(%r15) 242: f2 f2 f2 f2 246: 41 c7 87 9c 80 ff 7f movl $0xf2f2f201,0x7fff809c(%r15) 24d: 01 f2 f2 f2 251: 41 c7 87 a0 80 ff 7f movl $0xf2f2f2f2,0x7fff80a0(%r15) 258: f2 f2 f2 f2 25c: 41 c7 87 a4 80 ff 7f movl $0xf2f2f201,0x7fff80a4(%r15) 263: 01 f2 f2 f2 267: 41 c7 87 a8 80 ff 7f movl $0xf2f2f2f2,0x7fff80a8(%r15) 26e: f2 f2 f2 f2 272: 41 c7 87 ac 80 ff 7f movl $0xf2f2f201,0x7fff80ac(%r15) 279: 01 f2 f2 f2 27d: 41 c7 87 b0 80 ff 7f movl $0xf2f2f2f2,0x7fff80b0(%r15) 284: f2 f2 f2 f2 288: 41 c7 87 b4 80 ff 7f movl $0xf2f2f201,0x7fff80b4(%r15) 28f: 01 f2 f2 f2 293: 41 c7 87 b8 80 ff 7f movl $0xf2f2f2f2,0x7fff80b8(%r15) 29a: f2 f2 f2 f2 29e: 41 c7 87 bc 80 ff 7f movl $0xf2f2f201,0x7fff80bc(%r15) 2a5: 01 f2 f2 f2 2a9: 41 c7 87 c0 80 ff 7f movl $0xf2f2f2f2,0x7fff80c0(%r15) 2b0: f2 f2 f2 f2 2b4: 41 c7 87 c4 80 ff 7f movl $0xf2f2f201,0x7fff80c4(%r15) 2bb: 01 f2 f2 f2 2bf: 41 c7 87 c8 80 ff 7f movl $0xf2f2f2f2,0x7fff80c8(%r15) 2c6: f2 f2 f2 f2 2ca: 41 c7 87 cc 80 ff 7f movl $0xf2f2f201,0x7fff80cc(%r15) 2d1: 01 f2 f2 f2 2d5: 41 c7 87 d0 80 ff 7f movl $0xf2f2f2f2,0x7fff80d0(%r15) 2dc: f2 f2 f2 f2 2e0: 41 c7 87 d4 80 ff 7f movl $0xf2f2f201,0x7fff80d4(%r15) 2e7: 01 f2 f2 f2 2eb: 41 c7 87 d8 80 ff 7f movl $0xf2f2f2f2,0x7fff80d8(%r15) 2f2: f2 f2 f2 f2 2f6: 41 c7 87 dc 80 ff 7f movl $0xf2f2f201,0x7fff80dc(%r15) 2fd: 01 f2 f2 f2 301: 41 c7 87 e0 80 ff 7f movl $0xf2f2f2f2,0x7fff80e0(%r15) 308: f2 f2 f2 f2 30c: 41 c7 87 e4 80 ff 7f movl $0xf2f2f201,0x7fff80e4(%r15) 313: 01 f2 f2 f2 317: 41 c7 87 e8 80 ff 7f movl $0xf2f2f2f2,0x7fff80e8(%r15) 31e: f2 f2 f2 f2 322: 41 c7 87 ec 80 ff 7f movl $0xf2f2f201,0x7fff80ec(%r15) 329: 01 f2 f2 f2 32d: 41 c7 87 f0 80 ff 7f movl $0xf2f2f2f2,0x7fff80f0(%r15) 334: f2 f2 f2 f2 338: 41 c7 87 f4 80 ff 7f movl $0xf2f2f201,0x7fff80f4(%r15) 33f: 01 f2 f2 f2 343: 41 c7 87 f8 80 ff 7f movl $0xf2f2f2f2,0x7fff80f8(%r15) 34a: f2 f2 f2 f2 34e: 41 c7 87 fc 80 ff 7f movl $0xf2f2f201,0x7fff80fc(%r15) 355: 01 f2 f2 f2 359: 41 c7 87 00 81 ff 7f movl $0xf2f2f2f2,0x7fff8100(%r15) 360: f2 f2 f2 f2 364: 41 c7 87 04 81 ff 7f movl $0xf2f2f201,0x7fff8104(%r15) 36b: 01 f2 f2 f2 36f: 41 c7 87 08 81 ff 7f movl $0xf2f2f2f2,0x7fff8108(%r15) 376: f2 f2 f2 f2 37a: 41 c7 87 0c 81 ff 7f movl $0xf2f2f201,0x7fff810c(%r15) 381: 01 f2 f2 f2 385: 41 c7 87 10 81 ff 7f movl $0xf2f2f2f2,0x7fff8110(%r15) 38c: f2 f2 f2 f2 390: 41 c7 87 14 81 ff 7f movl $0xf2f2f201,0x7fff8114(%r15) 397: 01 f2 f2 f2 39b: 41 c7 87 18 81 ff 7f movl $0xf2f2f2f2,0x7fff8118(%r15) 3a2: f2 f2 f2 f2 3a6: 41 c7 87 1c 81 ff 7f movl $0xf2f2f201,0x7fff811c(%r15) 3ad: 01 f2 f2 f2 3b1: 41 c7 87 20 81 ff 7f movl $0xf2f2f2f2,0x7fff8120(%r15) 3b8: f2 f2 f2 f2 3bc: 41 c7 87 24 81 ff 7f movl $0xf2f2f201,0x7fff8124(%r15) 3c3: 01 f2 f2 f2 3c7: 41 c7 87 28 81 ff 7f movl $0xf2f2f2f2,0x7fff8128(%r15) 3ce: f2 f2 f2 f2 3d2: 41 c7 87 2c 81 ff 7f movl $0xf2f2f201,0x7fff812c(%r15) 3d9: 01 f2 f2 f2 3dd: 41 c7 87 30 81 ff 7f movl $0xf2f2f2f2,0x7fff8130(%r15) 3e4: f2 f2 f2 f2 3e8: 41 c7 87 34 81 ff 7f movl $0xf2f2f201,0x7fff8134(%r15) 3ef: 01 f2 f2 f2 3f3: 41 c7 87 38 81 ff 7f movl $0xf2f2f2f2,0x7fff8138(%r15) 3fa: f2 f2 f2 f2 3fe: 41 c7 87 3c 81 ff 7f movl $0xf2f2f201,0x7fff813c(%r15) 405: 01 f2 f2 f2 409: 41 c7 87 40 81 ff 7f movl $0xf2f2f2f2,0x7fff8140(%r15) 410: f2 f2 f2 f2 414: 41 c7 87 44 81 ff 7f movl $0xf2f2f201,0x7fff8144(%r15) 41b: 01 f2 f2 f2 41f: 41 c7 87 48 81 ff 7f movl $0xf2f2f2f2,0x7fff8148(%r15) 426: f2 f2 f2 f2 42a: 41 c7 87 4c 81 ff 7f movl $0xf2f2f201,0x7fff814c(%r15) 431: 01 f2 f2 f2 435: 41 c7 87 50 81 ff 7f movl $0xf2f2f2f2,0x7fff8150(%r15) 43c: f2 f2 f2 f2 440: 41 c7 87 54 81 ff 7f movl $0xf2f2f201,0x7fff8154(%r15) 447: 01 f2 f2 f2 44b: 41 c7 87 58 81 ff 7f movl $0xf2f2f2f2,0x7fff8158(%r15) 452: f2 f2 f2 f2 456: 41 c7 87 5c 81 ff 7f movl $0xf2f2f201,0x7fff815c(%r15) 45d: 01 f2 f2 f2 461: 41 c7 87 60 81 ff 7f movl $0xf2f2f2f2,0x7fff8160(%r15) 468: f2 f2 f2 f2 46c: 41 c7 87 64 81 ff 7f movl $0xf2f2f201,0x7fff8164(%r15) 473: 01 f2 f2 f2 477: 41 c7 87 68 81 ff 7f movl $0xf2f2f2f2,0x7fff8168(%r15) 47e: f2 f2 f2 f2 482: 41 c7 87 6c 81 ff 7f movl $0xf2f2f201,0x7fff816c(%r15) 489: 01 f2 f2 f2 48d: 41 c7 87 70 81 ff 7f movl $0xf2f2f2f2,0x7fff8170(%r15) 494: f2 f2 f2 f2 498: 41 c7 87 74 81 ff 7f movl $0xf2f2f201,0x7fff8174(%r15) 49f: 01 f2 f2 f2 4a3: 41 c7 87 78 81 ff 7f movl $0xf2f2f2f2,0x7fff8178(%r15) 4aa: f2 f2 f2 f2 4ae: 41 c7 87 7c 81 ff 7f movl $0xf2f2f201,0x7fff817c(%r15) 4b5: 01 f2 f2 f2 4b9: 41 c7 87 80 81 ff 7f movl $0xf2f2f2f2,0x7fff8180(%r15) 4c0: f2 f2 f2 f2 4c4: 41 c7 87 84 81 ff 7f movl $0xf2f2f201,0x7fff8184(%r15) 4cb: 01 f2 f2 f2 4cf: 41 c7 87 88 81 ff 7f movl $0xf2f2f2f2,0x7fff8188(%r15) 4d6: f2 f2 f2 f2 4da: 41 c7 87 8c 81 ff 7f movl $0xf2f2f201,0x7fff818c(%r15) 4e1: 01 f2 f2 f2 4e5: 41 c7 87 90 81 ff 7f movl $0xf2f2f2f2,0x7fff8190(%r15) 4ec: f2 f2 f2 f2 4f0: 41 c7 87 94 81 ff 7f movl $0xf2f2f201,0x7fff8194(%r15) 4f7: 01 f2 f2 f2 4fb: 41 c7 87 98 81 ff 7f movl $0xf2f2f2f2,0x7fff8198(%r15) 502: f2 f2 f2 f2 506: 41 c7 87 9c 81 ff 7f movl $0xf2f2f201,0x7fff819c(%r15) 50d: 01 f2 f2 f2 511: 41 c7 87 a0 81 ff 7f movl $0xf2f2f2f2,0x7fff81a0(%r15) 518: f2 f2 f2 f2 51c: 41 c7 87 a4 81 ff 7f movl $0xf2f2f201,0x7fff81a4(%r15) 523: 01 f2 f2 f2 527: 41 c7 87 a8 81 ff 7f movl $0xf2f2f2f2,0x7fff81a8(%r15) 52e: f2 f2 f2 f2 532: 41 c7 87 ac 81 ff 7f movl $0xf2f2f201,0x7fff81ac(%r15) 539: 01 f2 f2 f2 53d: 41 c7 87 b0 81 ff 7f movl $0xf2f2f2f2,0x7fff81b0(%r15) 544: f2 f2 f2 f2 548: 41 c7 87 b4 81 ff 7f movl $0xf2f2f201,0x7fff81b4(%r15) 54f: 01 f2 f2 f2 553: 41 c7 87 b8 81 ff 7f movl $0xf2f2f2f2,0x7fff81b8(%r15) 55a: f2 f2 f2 f2 55e: 41 c7 87 bc 81 ff 7f movl $0xf2f2f201,0x7fff81bc(%r15) 565: 01 f2 f2 f2 569: 41 c7 87 c0 81 ff 7f movl $0xf2f2f2f2,0x7fff81c0(%r15) 570: f2 f2 f2 f2 574: 41 c7 87 c4 81 ff 7f movl $0xf2f2f201,0x7fff81c4(%r15) 57b: 01 f2 f2 f2 57f: 41 c7 87 c8 81 ff 7f movl $0xf2f2f2f2,0x7fff81c8(%r15) 586: f2 f2 f2 f2 58a: 41 c7 87 cc 81 ff 7f movl $0xf2f2f201,0x7fff81cc(%r15) 591: 01 f2 f2 f2 595: 41 c7 87 d0 81 ff 7f movl $0xf2f2f2f2,0x7fff81d0(%r15) 59c: f2 f2 f2 f2 5a0: 41 c7 87 d4 81 ff 7f movl $0xf2f2f201,0x7fff81d4(%r15) 5a7: 01 f2 f2 f2 5ab: 41 c7 87 d8 81 ff 7f movl $0xf2f2f2f2,0x7fff81d8(%r15) 5b2: f2 f2 f2 f2 5b6: 41 c7 87 dc 81 ff 7f movl $0xf2f2f201,0x7fff81dc(%r15) 5bd: 01 f2 f2 f2 5c1: 41 c7 87 e0 81 ff 7f movl $0xf2f2f2f2,0x7fff81e0(%r15) 5c8: f2 f2 f2 f2 5cc: 41 c7 87 e4 81 ff 7f movl $0xf2f2f201,0x7fff81e4(%r15) 5d3: 01 f2 f2 f2 5d7: 41 c7 87 e8 81 ff 7f movl $0xf2f2f2f2,0x7fff81e8(%r15) 5de: f2 f2 f2 f2 5e2: 41 c7 87 ec 81 ff 7f movl $0xf2f2f201,0x7fff81ec(%r15) 5e9: 01 f2 f2 f2 5ed: 41 c7 87 f0 81 ff 7f movl $0xf2f2f2f2,0x7fff81f0(%r15) 5f4: f2 f2 f2 f2 5f8: 41 c7 87 f4 81 ff 7f movl $0xf2f2f201,0x7fff81f4(%r15) 5ff: 01 f2 f2 f2 603: 41 c7 87 f8 81 ff 7f movl $0xf2f2f2f2,0x7fff81f8(%r15) 60a: f2 f2 f2 f2 60e: 41 c7 87 fc 81 ff 7f movl $0xf2f2f201,0x7fff81fc(%r15) 615: 01 f2 f2 f2 619: 41 c7 87 00 82 ff 7f movl $0xf2f2f2f2,0x7fff8200(%r15) 620: f2 f2 f2 f2 624: 41 c7 87 04 82 ff 7f movl $0xf2f2f201,0x7fff8204(%r15) 62b: 01 f2 f2 f2 62f: 41 c7 87 08 82 ff 7f movl $0xf2f2f2f2,0x7fff8208(%r15) 636: f2 f2 f2 f2 63a: 41 c7 87 0c 82 ff 7f movl $0xf2f2f201,0x7fff820c(%r15) 641: 01 f2 f2 f2 645: 41 c7 87 10 82 ff 7f movl $0xf2f2f2f2,0x7fff8210(%r15) 64c: f2 f2 f2 f2 650: 41 c7 87 14 82 ff 7f movl $0xf2f2f201,0x7fff8214(%r15) 657: 01 f2 f2 f2 65b: 41 c7 87 18 82 ff 7f movl $0xf2f2f2f2,0x7fff8218(%r15) 662: f2 f2 f2 f2 666: 41 c7 87 1c 82 ff 7f movl $0xf2f2f201,0x7fff821c(%r15) 66d: 01 f2 f2 f2 671: 41 c7 87 20 82 ff 7f movl $0xf2f2f2f2,0x7fff8220(%r15) 678: f2 f2 f2 f2 67c: 41 c7 87 24 82 ff 7f movl $0xf2f2f201,0x7fff8224(%r15) 683: 01 f2 f2 f2 687: 41 c7 87 28 82 ff 7f movl $0xf2f2f2f2,0x7fff8228(%r15) 68e: f2 f2 f2 f2 692: 41 c7 87 2c 82 ff 7f movl $0xf2f2f204,0x7fff822c(%r15) 699: 04 f2 f2 f2 69d: 41 c7 87 30 82 ff 7f movl $0xf2f2f2f2,0x7fff8230(%r15) 6a4: f2 f2 f2 f2 6a8: 41 c7 87 34 82 ff 7f movl $0xf2f2f204,0x7fff8234(%r15) 6af: 04 f2 f2 f2 6b3: 41 c7 87 38 82 ff 7f movl $0xf2f2f2f2,0x7fff8238(%r15) 6ba: f2 f2 f2 f2 6be: 41 c7 87 3c 82 ff 7f movl $0xf2f2f204,0x7fff823c(%r15) 6c5: 04 f2 f2 f2 6c9: 41 c7 87 40 82 ff 7f movl $0xf2f2f2f2,0x7fff8240(%r15) 6d0: f2 f2 f2 f2 6d4: 41 c7 87 44 82 ff 7f movl $0xf2f2f204,0x7fff8244(%r15) 6db: 04 f2 f2 f2 6df: 41 c7 87 48 82 ff 7f movl $0xf2f2f2f2,0x7fff8248(%r15) 6e6: f2 f2 f2 f2 6ea: 41 c7 87 4c 82 ff 7f movl $0xf2f2f204,0x7fff824c(%r15) 6f1: 04 f2 f2 f2 6f5: 41 c7 87 50 82 ff 7f movl $0xf2f2f2f2,0x7fff8250(%r15) 6fc: f2 f2 f2 f2 700: 41 c7 87 54 82 ff 7f movl $0xf2f2f204,0x7fff8254(%r15) 707: 04 f2 f2 f2 70b: 41 c7 87 58 82 ff 7f movl $0xf2f2f2f2,0x7fff8258(%r15) 712: f2 f2 f2 f2 716: 41 c7 87 5c 82 ff 7f movl $0xf2f2f204,0x7fff825c(%r15) 71d: 04 f2 f2 f2 721: 41 c7 87 60 82 ff 7f movl $0xf2f2f2f2,0x7fff8260(%r15) 728: f2 f2 f2 f2 72c: 41 c7 87 64 82 ff 7f movl $0xf2f2f204,0x7fff8264(%r15) 733: 04 f2 f2 f2 737: 41 c7 87 68 82 ff 7f movl $0xf2f2f2f2,0x7fff8268(%r15) 73e: f2 f2 f2 f2 742: 41 c7 87 6c 82 ff 7f movl $0xf2f2f204,0x7fff826c(%r15) 749: 04 f2 f2 f2 74d: 41 c7 87 70 82 ff 7f movl $0xf2f2f2f2,0x7fff8270(%r15) 754: f2 f2 f2 f2 758: 41 c7 87 74 82 ff 7f movl $0xf2f2f204,0x7fff8274(%r15) 75f: 04 f2 f2 f2 763: 41 c7 87 78 82 ff 7f movl $0xf2f2f2f2,0x7fff8278(%r15) 76a: f2 f2 f2 f2 76e: 41 c7 87 7c 82 ff 7f movl $0xf2f2f204,0x7fff827c(%r15) 775: 04 f2 f2 f2 779: 41 c7 87 80 82 ff 7f movl $0xf2f2f2f2,0x7fff8280(%r15) 780: f2 f2 f2 f2 784: 41 c7 87 84 82 ff 7f movl $0xf2f2f204,0x7fff8284(%r15) 78b: 04 f2 f2 f2 78f: 41 c7 87 88 82 ff 7f movl $0xf2f2f2f2,0x7fff8288(%r15) 796: f2 f2 f2 f2 79a: 41 c7 87 8c 82 ff 7f movl $0xf2f2f204,0x7fff828c(%r15) 7a1: 04 f2 f2 f2 7a5: 41 c7 87 90 82 ff 7f movl $0xf2f2f2f2,0x7fff8290(%r15) 7ac: f2 f2 f2 f2 7b0: 41 c7 87 94 82 ff 7f movl $0xf2f2f204,0x7fff8294(%r15) 7b7: 04 f2 f2 f2 7bb: 41 c7 87 98 82 ff 7f movl $0xf2f2f2f2,0x7fff8298(%r15) 7c2: f2 f2 f2 f2 7c6: 41 c7 87 9c 82 ff 7f movl $0xf2f2f204,0x7fff829c(%r15) 7cd: 04 f2 f2 f2 7d1: 41 c7 87 a0 82 ff 7f movl $0xf2f2f2f2,0x7fff82a0(%r15) 7d8: f2 f2 f2 f2 7dc: 41 c7 87 a4 82 ff 7f movl $0xf2f2f204,0x7fff82a4(%r15) 7e3: 04 f2 f2 f2 7e7: 41 c7 87 a8 82 ff 7f movl $0xf2f2f2f2,0x7fff82a8(%r15) 7ee: f2 f2 f2 f2 7f2: 41 c7 87 ac 82 ff 7f movl $0xf2f2f204,0x7fff82ac(%r15) 7f9: 04 f2 f2 f2 7fd: 41 c7 87 b0 82 ff 7f movl $0xf2f2f2f2,0x7fff82b0(%r15) 804: f2 f2 f2 f2 808: 41 c7 87 b4 82 ff 7f movl $0xf2f2f204,0x7fff82b4(%r15) 80f: 04 f2 f2 f2 813: 41 c7 87 b8 82 ff 7f movl $0xf2f2f2f2,0x7fff82b8(%r15) 81a: f2 f2 f2 f2 81e: 41 c7 87 bc 82 ff 7f movl $0xf2f2f204,0x7fff82bc(%r15) 825: 04 f2 f2 f2 829: 41 c7 87 c0 82 ff 7f movl $0xf2f2f2f2,0x7fff82c0(%r15) 830: f2 f2 f2 f2 834: 41 c7 87 c4 82 ff 7f movl $0xf2f2f204,0x7fff82c4(%r15) 83b: 04 f2 f2 f2 83f: 41 c7 87 c8 82 ff 7f movl $0xf2f2f2f2,0x7fff82c8(%r15) 846: f2 f2 f2 f2 84a: 41 c7 87 cc 82 ff 7f movl $0xf2f2f204,0x7fff82cc(%r15) 851: 04 f2 f2 f2 855: 41 c7 87 d0 82 ff 7f movl $0xf2f2f2f2,0x7fff82d0(%r15) 85c: f2 f2 f2 f2 860: 41 c7 87 d4 82 ff 7f movl $0xf2f2f204,0x7fff82d4(%r15) 867: 04 f2 f2 f2 86b: 41 c7 87 d8 82 ff 7f movl $0xf2f2f2f2,0x7fff82d8(%r15) 872: f2 f2 f2 f2 876: 41 c7 87 dc 82 ff 7f movl $0xf2f2f204,0x7fff82dc(%r15) 87d: 04 f2 f2 f2 881: 41 c7 87 e0 82 ff 7f movl $0xf2f2f2f2,0x7fff82e0(%r15) 888: f2 f2 f2 f2 88c: 41 c7 87 e4 82 ff 7f movl $0xf2f2f204,0x7fff82e4(%r15) 893: 04 f2 f2 f2 897: 41 c7 87 e8 82 ff 7f movl $0xf2f2f2f2,0x7fff82e8(%r15) 89e: f2 f2 f2 f2 8a2: 41 c7 87 ec 82 ff 7f movl $0xf2f2f204,0x7fff82ec(%r15) 8a9: 04 f2 f2 f2 8ad: 41 c7 87 f0 82 ff 7f movl $0xf2f2f2f2,0x7fff82f0(%r15) 8b4: f2 f2 f2 f2 8b8: 41 c7 87 f4 82 ff 7f movl $0xf2f2f200,0x7fff82f4(%r15) 8bf: 00 f2 f2 f2 8c3: 41 c7 87 f8 82 ff 7f movl $0xf2f2f2f2,0x7fff82f8(%r15) 8ca: f2 f2 f2 f2 8ce: 41 c7 87 fc 82 ff 7f movl $0xf2f2f200,0x7fff82fc(%r15) 8d5: 00 f2 f2 f2 8d9: 41 c7 87 00 83 ff 7f movl $0xf2f2f2f2,0x7fff8300(%r15) 8e0: f2 f2 f2 f2 8e4: 41 c7 87 04 83 ff 7f movl $0xf2f2f200,0x7fff8304(%r15) 8eb: 00 f2 f2 f2 8ef: 41 c7 87 08 83 ff 7f movl $0xf2f2f2f2,0x7fff8308(%r15) 8f6: f2 f2 f2 f2 8fa: 41 c7 87 0c 83 ff 7f movl $0xf2f2f200,0x7fff830c(%r15) 901: 00 f2 f2 f2 905: 41 c7 87 10 83 ff 7f movl $0xf2f2f2f2,0x7fff8310(%r15) 90c: f2 f2 f2 f2 910: 41 c7 87 14 83 ff 7f movl $0xf2f2f200,0x7fff8314(%r15) 917: 00 f2 f2 f2 91b: 41 c7 87 18 83 ff 7f movl $0xf2f2f2f2,0x7fff8318(%r15) 922: f2 f2 f2 f2 926: 41 c7 87 1c 83 ff 7f movl $0xf2f2f200,0x7fff831c(%r15) 92d: 00 f2 f2 f2 931: 41 c7 87 20 83 ff 7f movl $0xf2f2f2f2,0x7fff8320(%r15) 938: f2 f2 f2 f2 93c: 41 c7 87 24 83 ff 7f movl $0xf2f2f200,0x7fff8324(%r15) 943: 00 f2 f2 f2 947: 41 c7 87 28 83 ff 7f movl $0xf2f2f2f2,0x7fff8328(%r15) 94e: f2 f2 f2 f2 952: 41 c7 87 2c 83 ff 7f movl $0xf2f2f200,0x7fff832c(%r15) 959: 00 f2 f2 f2 95d: 41 c7 87 30 83 ff 7f movl $0xf2f2f2f2,0x7fff8330(%r15) 964: f2 f2 f2 f2 968: 41 c7 87 34 83 ff 7f movl $0xf2f2f200,0x7fff8334(%r15) 96f: 00 f2 f2 f2 973: 64 48 8b 04 25 28 00 mov %fs:0x28,%rax 97a: 00 00 97c: 48 89 45 c8 mov %rax,-0x38(%rbp) 980: 31 c0 xor %eax,%eax 982: f0 48 ff 05 00 00 00 lock incq 0x0(%rip) # 98a <_ZN8BalancerILh2EE6updateEv+0x98a> 989: 00 98a: f0 48 ff 05 00 00 00 lock incq 0x0(%rip) # 992 <_ZN8BalancerILh2EE6updateEv+0x992> 991: 00 uint8_t numActuators = requesters.size(); 992: 48 83 bd e0 e5 ff ff cmpq $0x0,-0x1a20(%rbp) 999: 00 99a: 74 09 je 9a5 <_ZN8BalancerILh2EE6updateEv+0x9a5> 99c: f6 85 e0 e5 ff ff 07 testb $0x7,-0x1a20(%rbp) 9a3: 74 13 je 9b8 <_ZN8BalancerILh2EE6updateEv+0x9b8> 9a5: 48 8b b5 e0 e5 ff ff mov -0x1a20(%rbp),%rsi 9ac: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 9b3 <_ZN8BalancerILh2EE6updateEv+0x9b3> 9b3: e8 00 00 00 00 callq 9b8 <_ZN8BalancerILh2EE6updateEv+0x9b8> 9b8: f0 48 ff 05 00 00 00 lock incq 0x0(%rip) # 9c0 <_ZN8BalancerILh2EE6updateEv+0x9c0> 9bf: 00 9c0: 48 8b 85 e0 e5 ff ff mov -0x1a20(%rbp),%rax 9c7: 48 83 c0 10 add $0x10,%rax 9cb: 48 83 bd e0 e5 ff ff cmpq $0xfffffffffffffff0,-0x1a20(%rbp) 9d2: f0 9d3: 48 89 85 e8 e5 ff ff mov %rax,-0x1a18(%rbp) 9da: 72 16 jb 9f2 <_ZN8BalancerILh2EE6updateEv+0x9f2> 9dc: 48 8b b5 e0 e5 ff ff mov -0x1a20(%rbp),%rsi 9e3: 48 89 c2 mov %rax,%rdx 9e6: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # 9ed <_ZN8BalancerILh2EE6updateEv+0x9ed> 9ed: e8 00 00 00 00 callq 9f2 <_ZN8BalancerILh2EE6updateEv+0x9f2> 9f2: f0 48 ff 05 00 00 00 lock incq 0x0(%rip) # 9fa <_ZN8BalancerILh2EE6updateEv+0x9fa> 9f9: 00 9fa: 48 83 bd e8 e5 ff ff cmpq $0x0,-0x1a18(%rbp) a01: 00 a02: 74 09 je a0d <_ZN8BalancerILh2EE6updateEv+0xa0d> a04: f6 85 e8 e5 ff ff 07 testb $0x7,-0x1a18(%rbp) a0b: 74 13 je a20 <_ZN8BalancerILh2EE6updateEv+0xa20> a0d: 48 8b b5 e8 e5 ff ff mov -0x1a18(%rbp),%rsi a14: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # a1b <_ZN8BalancerILh2EE6updateEv+0xa1b> a1b: e8 00 00 00 00 callq a20 <_ZN8BalancerILh2EE6updateEv+0xa20> a20: f0 48 ff 05 00 00 00 lock incq 0x0(%rip) # a28 <_ZN8BalancerILh2EE6updateEv+0xa28> a27: 00 { return size_type(this->_M_impl._M_finish - this->_M_impl._M_start); } a28: 48 83 bd e8 e5 ff ff cmpq $0x0,-0x1a18(%rbp) a2f: 00 a30: 74 09 je a3b <_ZN8BalancerILh2EE6updateEv+0xa3b> a32: f6 85 e8 e5 ff ff 07 testb $0x7,-0x1a18(%rbp) a39: 74 13 je a4e <_ZN8BalancerILh2EE6updateEv+0xa4e> a3b: 48 8b b5 e8 e5 ff ff mov -0x1a18(%rbp),%rsi a42: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # a49 <_ZN8BalancerILh2EE6updateEv+0xa49> a49: e8 00 00 00 00 callq a4e <_ZN8BalancerILh2EE6updateEv+0xa4e> a4e: f0 48 ff 05 00 00 00 lock incq 0x0(%rip) # a56 <_ZN8BalancerILh2EE6updateEv+0xa56> a55: 00 a56: f0 48 ff 05 00 00 00 lock incq 0x0(%rip) # a5e <_ZN8BalancerILh2EE6updateEv+0xa5e> a5d: 00 a5e: 48 8b 85 e8 e5 ff ff mov -0x1a18(%rbp),%rax a65: 48 8d 50 08 lea 0x8(%rax),%rdx a69: 48 83 f8 f8 cmp $0xfffffffffffffff8,%rax a6d: 72 0f jb a7e <_ZN8BalancerILh2EE6updateEv+0xa7e> a6f: 48 89 c6 mov %rax,%rsi a72: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # a79 <_ZN8BalancerILh2EE6updateEv+0xa79> a79: e8 00 00 00 00 callq a7e <_ZN8BalancerILh2EE6updateEv+0xa7e> a7e: f0 48 ff 05 00 00 00 lock incq 0x0(%rip) # a86 <_ZN8BalancerILh2EE6updateEv+0xa86> a85: 00 a86: 48 8b 85 e0 e5 ff ff mov -0x1a20(%rbp),%rax a8d: 48 8d 78 18 lea 0x18(%rax),%rdi a91: 48 89 f8 mov %rdi,%rax a94: 48 c1 e8 03 shr $0x3,%rax a98: 80 b8 00 80 ff 7f 00 cmpb $0x0,0x7fff8000(%rax) a9f: 74 05 je aa6 <_ZN8BalancerILh2EE6updateEv+0xaa6> aa1: e8 00 00 00 00 callq aa6 <_ZN8BalancerILh2EE6updateEv+0xaa6> aa6: 48 8b 85 e0 e5 ff ff mov -0x1a20(%rbp),%rax aad: 48 83 bd e8 e5 ff ff cmpq $0x0,-0x1a18(%rbp) ab4: 00 ab5: 4c 8b 60 18 mov 0x18(%rax),%r12 ab9: 74 09 je ac4 <_ZN8BalancerILh2EE6updateEv+0xac4> abb: f6 85 e8 e5 ff ff 07 testb $0x7,-0x1a18(%rbp) ac2: 74 13 je ad7 <_ZN8BalancerILh2EE6updateEv+0xad7> ac4: 48 8b b5 e8 e5 ff ff mov -0x1a18(%rbp),%rsi acb: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # ad2 <_ZN8BalancerILh2EE6updateEv+0xad2> ad2: e8 00 00 00 00 callq ad7 <_ZN8BalancerILh2EE6updateEv+0xad7> ad7: f0 48 ff 05 00 00 00 lock incq 0x0(%rip) # adf <_ZN8BalancerILh2EE6updateEv+0xadf> ade: 00 adf: 48 8b 85 e8 e5 ff ff mov -0x1a18(%rbp),%rax ae6: 48 c1 e8 03 shr $0x3,%rax aea: 80 b8 00 80 ff 7f 00 cmpb $0x0,0x7fff8000(%rax) af1: 74 0c je aff <_ZN8BalancerILh2EE6updateEv+0xaff> af3: 48 8b bd e8 e5 ff ff mov -0x1a18(%rbp),%rdi afa: e8 00 00 00 00 callq aff <_ZN8BalancerILh2EE6updateEv+0xaff> aff: 48 8b 8d e0 e5 ff ff mov -0x1a20(%rbp),%rcx b06: 4c 89 e0 mov %r12,%rax b09: 48 ba ab aa aa aa aa movabs $0xaaaaaaaaaaaaaaab,%rdx b10: aa aa aa b13: 48 8d bb 40 e6 ff ff lea -0x19c0(%rbx),%rdi b1a: 48 2b 41 10 sub 0x10(%rcx),%rax b1e: 48 c1 f8 02 sar $0x2,%rax b22: 48 0f af c2 imul %rdx,%rax b26: 48 89 fa mov %rdi,%rdx b29: 48 c1 ea 03 shr $0x3,%rdx b2d: 8a 92 00 80 ff 7f mov 0x7fff8000(%rdx),%dl b33: 84 d2 test %dl,%dl b35: 74 07 je b3e <_ZN8BalancerILh2EE6updateEv+0xb3e> b37: 7f 05 jg b3e <_ZN8BalancerILh2EE6updateEv+0xb3e> b39: e8 00 00 00 00 callq b3e <_ZN8BalancerILh2EE6updateEv+0xb3e> if (numActuators == 0) { b3e: 84 c0 test %al,%al uint8_t numActuators = requesters.size(); b40: 88 83 40 e6 ff ff mov %al,-0x19c0(%rbx) b46: 48 8d 83 80 f7 ff ff lea -0x880(%rbx),%rax if (numActuators == 0) { b4d: 0f 85 81 00 00 00 jne bd4 <_ZN8BalancerILh2EE6updateEv+0xbd4> b53: f0 48 ff 05 00 00 00 lock incq 0x0(%rip) # b5b <_ZN8BalancerILh2EE6updateEv+0xb5b> b5a: 00 return; b5b: 48 c1 ef 03 shr $0x3,%rdi b5f: c6 87 00 80 ff 7f f8 movb $0xf8,0x7fff8000(%rdi) b66: f0 48 ff 05 00 00 00 lock incq 0x0(%rip) # b6e <_ZN8BalancerILh2EE6updateEv+0xb6e> b6d: 00 b6e: 48 c1 e8 03 shr $0x3,%rax b72: c6 80 00 80 ff 7f f8 movb $0xf8,0x7fff8000(%rax) b79: f0 48 ff 05 00 00 00 lock incq 0x0(%rip) # b81 <_ZN8BalancerILh2EE6updateEv+0xb81> b80: 00 b81: 48 8d 83 c0 f7 ff ff lea -0x840(%rbx),%rax b88: 48 c1 e8 03 shr $0x3,%rax b8c: c6 80 00 80 ff 7f f8 movb $0xf8,0x7fff8000(%rax) b93: f0 48 ff 05 00 00 00 lock incq 0x0(%rip) # b9b <_ZN8BalancerILh2EE6updateEv+0xb9b> b9a: 00 b9b: 48 8d 83 40 f8 ff ff lea -0x7c0(%rbx),%rax ba2: 48 c1 e8 03 shr $0x3,%rax ba6: c6 80 00 80 ff 7f f8 movb $0xf8,0x7fff8000(%rax) bad: f0 48 ff 05 00 00 00 lock incq 0x0(%rip) # bb5 <_ZN8BalancerILh2EE6updateEv+0xbb5> bb4: 00 bb5: 48 81 eb 80 07 00 00 sub $0x780,%rbx bbc: 48 c1 eb 03 shr $0x3,%rbx bc0: c6 83 00 80 ff 7f f8 movb $0xf8,0x7fff8000(%rbx) bc7: f0 48 ff 05 00 00 00 lock incq 0x0(%rip) # bcf <_ZN8BalancerILh2EE6updateEv+0xbcf> bce: 00 bcf: e9 9c 31 00 00 jmpq 3d70 <_ZN8BalancerILh2EE6updateEv+0x3d70> bd4: f0 48 ff 05 00 00 00 lock incq 0x0(%rip) # bdc <_ZN8BalancerILh2EE6updateEv+0xbdc> bdb: 00 bdc: f0 48 ff 05 00 00 00 lock incq 0x0(%rip) # be4 <_ZN8BalancerILh2EE6updateEv+0xbe4> be3: 00 auto requestedTotal = value_t(0); be4: 48 89 c2 mov %rax,%rdx be7: 48 c1 ea 03 shr $0x3,%rdx beb: 8a 92 00 80 ff 7f mov 0x7fff8000(%rdx),%dl bf1: 84 d2 test %dl,%dl bf3: 74 0d je c02 <_ZN8BalancerILh2EE6updateEv+0xc02> bf5: 80 fa 03 cmp $0x3,%dl bf8: 7f 08 jg c02 <_ZN8BalancerILh2EE6updateEv+0xc02> bfa: 48 89 c7 mov %rax,%rdi bfd: e8 00 00 00 00 callq c02 <_ZN8BalancerILh2EE6updateEv+0xc02> for (const auto& a : requesters) { c02: 48 83 bd e0 e5 ff ff cmpq $0x0,-0x1a20(%rbp) c09: 00 auto requestedTotal = value_t(0); c0a: c7 83 80 f7 ff ff 00 movl $0x0,-0x880(%rbx) c11: 00 00 00 for (const auto& a : requesters) { c14: 74 09 je c1f <_ZN8BalancerILh2EE6updateEv+0xc1f> c16: f6 85 e0 e5 ff ff 07 testb $0x7,-0x1a20(%rbp) c1d: 74 13 je c32 <_ZN8BalancerILh2EE6updateEv+0xc32> c1f: 48 8b b5 e0 e5 ff ff mov -0x1a20(%rbp),%rsi c26: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # c2d <_ZN8BalancerILh2EE6updateEv+0xc2d> c2d: e8 00 00 00 00 callq c32 <_ZN8BalancerILh2EE6updateEv+0xc32> c32: f0 48 ff 05 00 00 00 lock incq 0x0(%rip) # c3a <_ZN8BalancerILh2EE6updateEv+0xc3a> c39: 00 c3a: f0 48 ff 05 00 00 00 lock incq 0x0(%rip) # c42 <_ZN8BalancerILh2EE6updateEv+0xc42> c41: 00 c42: 48 83 bd e8 e5 ff ff cmpq $0x0,-0x1a18(%rbp) c49: 00 c4a: 74 09 je c55 <_ZN8BalancerILh2EE6updateEv+0xc55> c4c: f6 85 e8 e5 ff ff 07 testb $0x7,-0x1a18(%rbp) c53: 74 13 je c68 <_ZN8BalancerILh2EE6updateEv+0xc68> c55: 48 8b b5 e8 e5 ff ff mov -0x1a18(%rbp),%rsi c5c: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # c63 <_ZN8BalancerILh2EE6updateEv+0xc63> c63: e8 00 00 00 00 callq c68 <_ZN8BalancerILh2EE6updateEv+0xc68> c68: f0 48 ff 05 00 00 00 lock incq 0x0(%rip) # c70 <_ZN8BalancerILh2EE6updateEv+0xc70> c6f: 00 c70: f0 48 ff 05 00 00 00 lock incq 0x0(%rip) # c78 <_ZN8BalancerILh2EE6updateEv+0xc78> c77: 00 c78: 48 83 bd e8 e5 ff ff cmpq $0x0,-0x1a18(%rbp) c7f: 00 c80: 74 09 je c8b <_ZN8BalancerILh2EE6updateEv+0xc8b> c82: f6 85 e8 e5 ff ff 07 testb $0x7,-0x1a18(%rbp) c89: 74 13 je c9e <_ZN8BalancerILh2EE6updateEv+0xc9e> c8b: 48 8b b5 e8 e5 ff ff mov -0x1a18(%rbp),%rsi c92: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # c99 <_ZN8BalancerILh2EE6updateEv+0xc99> c99: e8 00 00 00 00 callq c9e <_ZN8BalancerILh2EE6updateEv+0xc9e> c9e: f0 48 ff 05 00 00 00 lock incq 0x0(%rip) # ca6 <_ZN8BalancerILh2EE6updateEv+0xca6> ca5: 00 ca6: 48 8d 83 c0 fd ff ff lea -0x240(%rbx),%rax cad: 49 89 c4 mov %rax,%r12 cb0: 48 89 85 c0 e5 ff ff mov %rax,-0x1a40(%rbp) cb7: 49 c1 ec 03 shr $0x3,%r12 cbb: 41 80 bc 24 00 80 ff cmpb $0x0,0x7fff8000(%r12) cc2: 7f 00 cc4: 74 08 je cce <_ZN8BalancerILh2EE6updateEv+0xcce> cc6: 48 89 c7 mov %rax,%rdi cc9: e8 00 00 00 00 callq cce <_ZN8BalancerILh2EE6updateEv+0xcce> cce: 48 8b bd e8 e5 ff ff mov -0x1a18(%rbp),%rdi cd5: e8 00 00 00 00 callq cda <_ZN8BalancerILh2EE6updateEv+0xcda> cda: 48 89 83 c0 fd ff ff mov %rax,-0x240(%rbx) ce1: f0 48 ff 05 00 00 00 lock incq 0x0(%rip) # ce9 <_ZN8BalancerILh2EE6updateEv+0xce9> ce8: 00 ce9: f0 48 ff 05 00 00 00 lock incq 0x0(%rip) # cf1 <_ZN8BalancerILh2EE6updateEv+0xcf1> cf0: 00 cf1: f0 48 ff 05 00 00 00 lock incq 0x0(%rip) # cf9 <_ZN8BalancerILh2EE6updateEv+0xcf9> cf8: 00 cf9: 48 8d 83 00 fe ff ff lea -0x200(%rbx),%rax d00: 48 89 85 d0 e5 ff ff mov %rax,-0x1a30(%rbp) d07: 48 c1 e8 03 shr $0x3,%rax d0b: 80 b8 00 80 ff 7f 00 cmpb $0x0,0x7fff8000(%rax) d12: 74 0c je d20 <_ZN8BalancerILh2EE6updateEv+0xd20> d14: 48 8b bd d0 e5 ff ff mov -0x1a30(%rbp),%rdi d1b: e8 00 00 00 00 callq d20 <_ZN8BalancerILh2EE6updateEv+0xd20> d20: 48 8b bd e8 e5 ff ff mov -0x1a18(%rbp),%rdi d27: e8 00 00 00 00 callq d2c <_ZN8BalancerILh2EE6updateEv+0xd2c> d2c: 48 89 83 00 fe ff ff mov %rax,-0x200(%rbx) d33: f0 48 ff 05 00 00 00 lock incq 0x0(%rip) # d3b <_ZN8BalancerILh2EE6updateEv+0xd3b> d3a: 00 { return __lhs.base() != __rhs.base(); } d3b: 4c 89 a5 b0 e5 ff ff mov %r12,-0x1a50(%rbp) operator!=(const __normal_iterator<_Iterator, _Container>& __lhs, d42: f0 48 ff 05 00 00 00 lock incq 0x0(%rip) # d4a <_ZN8BalancerILh2EE6updateEv+0xd4a> d49: 00 d4a: f0 48 ff 05 00 00 00 lock incq 0x0(%rip) # d52 <_ZN8BalancerILh2EE6updateEv+0xd52> d51: 00 d52: f0 48 ff 05 00 00 00 lock incq 0x0(%rip) # d5a <_ZN8BalancerILh2EE6updateEv+0xd5a> d59: 00 d5a: f0 48 ff 05 00 00 00 lock incq 0x0(%rip) # d62 <_ZN8BalancerILh2EE6updateEv+0xd62> d61: 00 d62: f0 48 ff 05 00 00 00 lock incq 0x0(%rip) # d6a <_ZN8BalancerILh2EE6updateEv+0xd6a> d69: 00 { return __lhs.base() != __rhs.base(); } d6a: 48 8b 85 b0 e5 ff ff mov -0x1a50(%rbp),%rax d71: 80 b8 00 80 ff 7f 00 cmpb $0x0,0x7fff8000(%rax) d78: 74 0c je d86 <_ZN8BalancerILh2EE6updateEv+0xd86> d7a: 48 8b bd c0 e5 ff ff mov -0x1a40(%rbp),%rdi d81: e8 00 00 00 00 callq d86 <_ZN8BalancerILh2EE6updateEv+0xd86> d86: 4c 8b ab c0 fd ff ff mov -0x240(%rbx),%r13 d8d: f0 48 ff 05 00 00 00 lock incq 0x0(%rip) # d95 <_ZN8BalancerILh2EE6updateEv+0xd95> d94: 00 d95: f0 48 ff 05 00 00 00 lock incq 0x0(%rip) # d9d <_ZN8BalancerILh2EE6updateEv+0xd9d> d9c: 00 d9d: f0 48 ff 05 00 00 00 lock incq 0x0(%rip) # da5 <_ZN8BalancerILh2EE6updateEv+0xda5> da4: 00 da5: f0 48 ff 05 00 00 00 lock incq 0x0(%rip) # dad <_ZN8BalancerILh2EE6updateEv+0xdad> dac: 00 dad: 48 8b 85 d0 e5 ff ff mov -0x1a30(%rbp),%rax db4: 48 c1 e8 03 shr $0x3,%rax db8: 80 b8 00 80 ff 7f 00 cmpb $0x0,0x7fff8000(%rax) dbf: 74 0c je dcd <_ZN8BalancerILh2EE6updateEv+0xdcd> dc1: 48 8b bd d0 e5 ff ff mov -0x1a30(%rbp),%rdi dc8: e8 00 00 00 00 callq dcd <_ZN8BalancerILh2EE6updateEv+0xdcd> dcd: 48 8d 8b 80 f7 ff ff lea -0x880(%rbx),%rcx dd4: 4c 3b ab 00 fe ff ff cmp -0x200(%rbx),%r13 ddb: 48 89 8d c8 e5 ff ff mov %rcx,-0x1a38(%rbp) de2: 0f 84 a5 10 00 00 je 1e8d <_ZN8BalancerILh2EE6updateEv+0x1e8d> de8: f0 48 ff 05 00 00 00 lock incq 0x0(%rip) # df0 <_ZN8BalancerILh2EE6updateEv+0xdf0> def: 00 operator*() const _GLIBCXX_NOEXCEPT df0: f0 48 ff 05 00 00 00 lock incq 0x0(%rip) # df8 <_ZN8BalancerILh2EE6updateEv+0xdf8> df7: 00 { return *_M_current; } df8: 4d 85 ed test %r13,%r13 dfb: 74 06 je e03 <_ZN8BalancerILh2EE6updateEv+0xe03> dfd: 41 f6 c5 03 test $0x3,%r13b e01: 74 0f je e12 <_ZN8BalancerILh2EE6updateEv+0xe12> e03: 4c 89 ee mov %r13,%rsi e06: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # e0d <_ZN8BalancerILh2EE6updateEv+0xe0d> e0d: e8 00 00 00 00 callq e12 <_ZN8BalancerILh2EE6updateEv+0xe12> e12: f0 48 ff 05 00 00 00 lock incq 0x0(%rip) # e1a <_ZN8BalancerILh2EE6updateEv+0xe1a> e19: 00 e1a: f0 48 ff 05 00 00 00 lock incq 0x0(%rip) # e22 <_ZN8BalancerILh2EE6updateEv+0xe22> e21: 00 e22: 4d 85 ed test %r13,%r13 e25: 74 06 je e2d <_ZN8BalancerILh2EE6updateEv+0xe2d> e27: 41 f6 c5 03 test $0x3,%r13b e2b: 74 0f je e3c <_ZN8BalancerILh2EE6updateEv+0xe3c> e2d: 4c 89 ee mov %r13,%rsi e30: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # e37 <_ZN8BalancerILh2EE6updateEv+0xe37> e37: e8 00 00 00 00 callq e3c <_ZN8BalancerILh2EE6updateEv+0xe3c> e3c: f0 48 ff 05 00 00 00 lock incq 0x0(%rip) # e44 <_ZN8BalancerILh2EE6updateEv+0xe44> e43: 00 requestedTotal += a.requested; e44: 4d 85 ed test %r13,%r13 e47: 74 06 je e4f <_ZN8BalancerILh2EE6updateEv+0xe4f> e49: 41 f6 c5 03 test $0x3,%r13b e4d: 74 0f je e5e <_ZN8BalancerILh2EE6updateEv+0xe5e> e4f: 4c 89 ee mov %r13,%rsi e52: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # e59 <_ZN8BalancerILh2EE6updateEv+0xe59> e59: e8 00 00 00 00 callq e5e <_ZN8BalancerILh2EE6updateEv+0xe5e> e5e: f0 48 ff 05 00 00 00 lock incq 0x0(%rip) # e66 <_ZN8BalancerILh2EE6updateEv+0xe66> e65: 00 e66: 4d 8d 75 04 lea 0x4(%r13),%r14 e6a: 49 83 fd fc cmp $0xfffffffffffffffc,%r13 e6e: 72 12 jb e82 <_ZN8BalancerILh2EE6updateEv+0xe82> e70: 4c 89 f2 mov %r14,%rdx e73: 4c 89 ee mov %r13,%rsi e76: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # e7d <_ZN8BalancerILh2EE6updateEv+0xe7d> e7d: e8 00 00 00 00 callq e82 <_ZN8BalancerILh2EE6updateEv+0xe82> e82: f0 48 ff 05 00 00 00 lock incq 0x0(%rip) # e8a <_ZN8BalancerILh2EE6updateEv+0xe8a> e89: 00 e8a: 4d 85 f6 test %r14,%r14 e8d: 74 06 je e95 <_ZN8BalancerILh2EE6updateEv+0xe95> e8f: 41 f6 c6 03 test $0x3,%r14b e93: 74 0f je ea4 <_ZN8BalancerILh2EE6updateEv+0xea4> e95: 4c 89 f6 mov %r14,%rsi e98: 48 8d 3d 00 00 00 00 lea 0x0(%rip),%rdi # e9f <_ZN8BalancerILh2EE6updateEv+0xe9f> e9f: e8 00 00 00 00 callq ea4 <_ZN8BalancerILh2EE6updateEv+0xea4> ea4: f0 48 ff 05 00 00 00 lock incq 0x0(%rip) # eac <_ZN8BalancerILh2EE6updateEv+0xeac> eab: 00 eac: f0 48 ff 05 00 00 00 lock incq 0x0(%rip) # eb4 <_ZN8BalancerILh2EE6updateEv+0xeb4> eb3: 00 eb4: f0 48 ff 05 00 00 00 lock incq 0x0(%rip) # ebc <_ZN8BalancerILh2EE6updateEv+0xebc> ebb: 00 cnl::compound_assignment_operator<native_tag, NAME, LhsOperand, RhsOperand>()(lhs, rhs))>
{
return cnl::compound_assignment_operator<native_tag, NAME, LhsOperand, RhsOperand>()(lhs, rhs);
}

    CNL_DEFINE_COMPOUND_ASSIGNMENT_OPERATOR(+=, assign_add_op)
 ebc:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # ec4 <_ZN8BalancerILh2EE6updateEv+0xec4>
 ec3:	00 
 ec4:	48 8d 83 00 ec ff ff 	lea    -0x1400(%rbx),%rax
 ecb:	48 89 c2             	mov    %rax,%rdx
 ece:	48 89 85 a8 e5 ff ff 	mov    %rax,-0x1a58(%rbp)
 ed5:	48 c1 ea 03          	shr    $0x3,%rdx
 ed9:	c6 82 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rdx)
 ee0:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # ee8 <_ZN8BalancerILh2EE6updateEv+0xee8>
 ee7:	00 
template<class Tag, class Operator, class LhsOperand, class Enable = void>
struct post_operator;

template<class Tag, class Operator, class LhsOperand, class RhsOperand, class Enable = void>
struct compound_assignment_operator {
    constexpr LhsOperand& operator()(LhsOperand& lhs, RhsOperand const& rhs) const
 ee8:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # ef0 <_ZN8BalancerILh2EE6updateEv+0xef0>
 eef:	00 
    {
        return lhs = static_cast<LhsOperand>(
                binary_operator<Tag, typename Operator::binary, LhsOperand, RhsOperand>{}(lhs, rhs));
 ef0:	48 8d 83 c0 f8 ff ff 	lea    -0x740(%rbx),%rax
 ef7:	48 89 c2             	mov    %rax,%rdx
 efa:	48 89 85 a8 e5 ff ff 	mov    %rax,-0x1a58(%rbp)
 f01:	48 c1 ea 03          	shr    $0x3,%rdx
 f05:	c6 82 00 80 ff 7f 04 	movb   $0x4,0x7fff8000(%rdx)
 f0c:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # f14 <_ZN8BalancerILh2EE6updateEv+0xf14>
 f13:	00 
 f14:	48 8d 93 00 f9 ff ff 	lea    -0x700(%rbx),%rdx
 f1b:	48 c1 ea 03          	shr    $0x3,%rdx
 f1f:	c6 82 00 80 ff 7f 04 	movb   $0x4,0x7fff8000(%rdx)
 f26:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # f2e <_ZN8BalancerILh2EE6updateEv+0xf2e>
 f2d:	00 
 f2e:	48 8d 93 40 ec ff ff 	lea    -0x13c0(%rbx),%rdx
 f35:	48 c1 ea 03          	shr    $0x3,%rdx
 f39:	c6 82 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rdx)
 f40:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # f48 <_ZN8BalancerILh2EE6updateEv+0xf48>
 f47:	00 
 f48:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # f50 <_ZN8BalancerILh2EE6updateEv+0xf50>
 f4f:	00 
    CNL_NODISCARD constexpr auto operator()(
 f50:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # f58 <_ZN8BalancerILh2EE6updateEv+0xf58>
 f57:	00 
                power<Exponent, Radix>>>(Operator()(_impl::to_rep(lhs), _impl::to_rep(rhs)));
 f58:	48 8d 93 40 f9 ff ff 	lea    -0x6c0(%rbx),%rdx
 f5f:	48 c1 ea 03          	shr    $0x3,%rdx
 f63:	c6 82 00 80 ff 7f 04 	movb   $0x4,0x7fff8000(%rdx)
 f6a:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # f72 <_ZN8BalancerILh2EE6updateEv+0xf72>
 f71:	00 
 f72:	48 8d 93 80 ec ff ff 	lea    -0x1380(%rbx),%rdx
 f79:	48 c1 ea 03          	shr    $0x3,%rdx
 f7d:	c6 82 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rdx)
 f84:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # f8c <_ZN8BalancerILh2EE6updateEv+0xf8c>
 f8b:	00 
 f8c:	4c 8d a3 40 ed ff ff 	lea    -0x12c0(%rbx),%r12
 f93:	4c 89 e2             	mov    %r12,%rdx
 f96:	48 c1 ea 03          	shr    $0x3,%rdx
 f9a:	c6 82 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rdx)
 fa1:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # fa9 <_ZN8BalancerILh2EE6updateEv+0xfa9>
 fa8:	00 
 fa9:	4d 85 f6             	test   %r14,%r14
 fac:	74 06                	je     fb4 <_ZN8BalancerILh2EE6updateEv+0xfb4>
 fae:	41 f6 c6 03          	test   $0x3,%r14b
 fb2:	74 0f                	je     fc3 <_ZN8BalancerILh2EE6updateEv+0xfc3>
 fb4:	4c 89 f6             	mov    %r14,%rsi
 fb7:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # fbe <_ZN8BalancerILh2EE6updateEv+0xfbe>
 fbe:	e8 00 00 00 00       	callq  fc3 <_ZN8BalancerILh2EE6updateEv+0xfc3>
 fc3:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # fcb <_ZN8BalancerILh2EE6updateEv+0xfcb>
 fca:	00 
{ return static_cast<_Tp&&>(__t); }
 fcb:	4d 85 f6             	test   %r14,%r14
 fce:	74 06                	je     fd6 <_ZN8BalancerILh2EE6updateEv+0xfd6>
 fd0:	41 f6 c6 03          	test   $0x3,%r14b
 fd4:	74 0f                	je     fe5 <_ZN8BalancerILh2EE6updateEv+0xfe5>
 fd6:	4c 89 f6             	mov    %r14,%rsi
 fd9:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # fe0 <_ZN8BalancerILh2EE6updateEv+0xfe0>
 fe0:	e8 00 00 00 00       	callq  fe5 <_ZN8BalancerILh2EE6updateEv+0xfe5>
 fe5:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # fed <_ZN8BalancerILh2EE6updateEv+0xfed>
 fec:	00 
        return number._rep;
 fed:	4d 85 f6             	test   %r14,%r14
 ff0:	74 06                	je     ff8 <_ZN8BalancerILh2EE6updateEv+0xff8>
 ff2:	41 f6 c6 03          	test   $0x3,%r14b
 ff6:	74 0f                	je     1007 <_ZN8BalancerILh2EE6updateEv+0x1007>
 ff8:	4c 89 f6             	mov    %r14,%rsi
 ffb:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 1002 <_ZN8BalancerILh2EE6updateEv+0x1002>
1002:	e8 00 00 00 00       	callq  1007 <_ZN8BalancerILh2EE6updateEv+0x1007>
1007:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 100f <_ZN8BalancerILh2EE6updateEv+0x100f>
100e:	00 
100f:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1017 <_ZN8BalancerILh2EE6updateEv+0x1017>
1016:	00 
1017:	4d 85 f6             	test   %r14,%r14
101a:	74 06                	je     1022 <_ZN8BalancerILh2EE6updateEv+0x1022>
101c:	41 f6 c6 03          	test   $0x3,%r14b
1020:	74 0f                	je     1031 <_ZN8BalancerILh2EE6updateEv+0x1031>
1022:	4c 89 f6             	mov    %r14,%rsi
1025:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 102c <_ZN8BalancerILh2EE6updateEv+0x102c>
102c:	e8 00 00 00 00       	callq  1031 <_ZN8BalancerILh2EE6updateEv+0x1031>
1031:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1039 <_ZN8BalancerILh2EE6updateEv+0x1039>
1038:	00 
1039:	49 c1 ec 03          	shr    $0x3,%r12
103d:	41 c6 84 24 00 80 ff 	movb   $0xf8,0x7fff8000(%r12)
1044:	7f f8 
1046:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 104e <_ZN8BalancerILh2EE6updateEv+0x104e>
104d:	00 
104e:	48 8d 93 00 ed ff ff 	lea    -0x1300(%rbx),%rdx
1055:	48 c1 ea 03          	shr    $0x3,%rdx
1059:	c6 82 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rdx)
1060:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1068 <_ZN8BalancerILh2EE6updateEv+0x1068>
1067:	00 
1068:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1070 <_ZN8BalancerILh2EE6updateEv+0x1070>
106f:	00 
1070:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1078 <_ZN8BalancerILh2EE6updateEv+0x1078>
1077:	00 
1078:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1080 <_ZN8BalancerILh2EE6updateEv+0x1080>
107f:	00 
1080:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1088 <_ZN8BalancerILh2EE6updateEv+0x1088>
1087:	00 
1088:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1090 <_ZN8BalancerILh2EE6updateEv+0x1090>
108f:	00 
1090:	c6 82 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rdx)
1097:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 109f <_ZN8BalancerILh2EE6updateEv+0x109f>
109e:	00 
        CNL_NODISCARD constexpr auto operator()(Lhs const& lhs, Rhs const& rhs) const -> decltype(lhs+rhs)
109f:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 10a7 <_ZN8BalancerILh2EE6updateEv+0x10a7>
10a6:	00 
    CNL_DEFINE_BINARY_OPERATOR(+, add_op)
10a7:	48 8d 93 80 ed ff ff 	lea    -0x1280(%rbx),%rdx
10ae:	48 c1 ea 03          	shr    $0x3,%rdx
10b2:	c6 82 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rdx)
10b9:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 10c1 <_ZN8BalancerILh2EE6updateEv+0x10c1>
10c0:	00 
10c1:	4d 85 f6             	test   %r14,%r14
10c4:	74 06                	je     10cc <_ZN8BalancerILh2EE6updateEv+0x10cc>
10c6:	41 f6 c6 03          	test   $0x3,%r14b
10ca:	74 0f                	je     10db <_ZN8BalancerILh2EE6updateEv+0x10db>
10cc:	4c 89 f6             	mov    %r14,%rsi
10cf:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 10d6 <_ZN8BalancerILh2EE6updateEv+0x10d6>
10d6:	e8 00 00 00 00       	callq  10db <_ZN8BalancerILh2EE6updateEv+0x10db>
10db:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 10e3 <_ZN8BalancerILh2EE6updateEv+0x10e3>
10e2:	00 
10e3:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 10eb <_ZN8BalancerILh2EE6updateEv+0x10eb>
10ea:	00 
    CNL_NODISCARD constexpr auto operator()(lhs_type const& lhs, rhs_type const& rhs) const
10eb:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 10f3 <_ZN8BalancerILh2EE6updateEv+0x10f3>
10f2:	00 
                cnl::binary_operator<OverflowTag, Operator, LhsRep, RhsRep>{}(
10f3:	48 8d 93 80 f9 ff ff 	lea    -0x680(%rbx),%rdx
10fa:	48 c1 ea 03          	shr    $0x3,%rdx
10fe:	c6 82 00 80 ff 7f 04 	movb   $0x4,0x7fff8000(%rdx)
1105:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 110d <_ZN8BalancerILh2EE6updateEv+0x110d>
110c:	00 
110d:	48 8d 93 c0 ed ff ff 	lea    -0x1240(%rbx),%rdx
1114:	48 c1 ea 03          	shr    $0x3,%rdx
1118:	c6 82 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rdx)
111f:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1127 <_ZN8BalancerILh2EE6updateEv+0x1127>
1126:	00 
1127:	4d 85 f6             	test   %r14,%r14
112a:	74 06                	je     1132 <_ZN8BalancerILh2EE6updateEv+0x1132>
112c:	41 f6 c6 03          	test   $0x3,%r14b
1130:	74 0f                	je     1141 <_ZN8BalancerILh2EE6updateEv+0x1141>
1132:	4c 89 f6             	mov    %r14,%rsi
1135:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 113c <_ZN8BalancerILh2EE6updateEv+0x113c>
113c:	e8 00 00 00 00       	callq  1141 <_ZN8BalancerILh2EE6updateEv+0x1141>
1141:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1149 <_ZN8BalancerILh2EE6updateEv+0x1149>
1148:	00 
1149:	4c 8d a3 c0 ee ff ff 	lea    -0x1140(%rbx),%r12
1150:	4c 89 e2             	mov    %r12,%rdx
1153:	48 c1 ea 03          	shr    $0x3,%rdx
1157:	c6 82 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rdx)
115e:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1166 <_ZN8BalancerILh2EE6updateEv+0x1166>
1165:	00 
1166:	4d 85 f6             	test   %r14,%r14
1169:	74 06                	je     1171 <_ZN8BalancerILh2EE6updateEv+0x1171>
116b:	41 f6 c6 03          	test   $0x3,%r14b
116f:	74 0f                	je     1180 <_ZN8BalancerILh2EE6updateEv+0x1180>
1171:	4c 89 f6             	mov    %r14,%rsi
1174:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 117b <_ZN8BalancerILh2EE6updateEv+0x117b>
117b:	e8 00 00 00 00       	callq  1180 <_ZN8BalancerILh2EE6updateEv+0x1180>
1180:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1188 <_ZN8BalancerILh2EE6updateEv+0x1188>
1187:	00 
1188:	4d 85 f6             	test   %r14,%r14
118b:	74 06                	je     1193 <_ZN8BalancerILh2EE6updateEv+0x1193>
118d:	41 f6 c6 03          	test   $0x3,%r14b
1191:	74 0f                	je     11a2 <_ZN8BalancerILh2EE6updateEv+0x11a2>
1193:	4c 89 f6             	mov    %r14,%rsi
1196:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 119d <_ZN8BalancerILh2EE6updateEv+0x119d>
119d:	e8 00 00 00 00       	callq  11a2 <_ZN8BalancerILh2EE6updateEv+0x11a2>
11a2:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 11aa <_ZN8BalancerILh2EE6updateEv+0x11aa>
11a9:	00 
11aa:	4d 85 f6             	test   %r14,%r14
11ad:	74 06                	je     11b5 <_ZN8BalancerILh2EE6updateEv+0x11b5>
11af:	41 f6 c6 03          	test   $0x3,%r14b
11b3:	74 0f                	je     11c4 <_ZN8BalancerILh2EE6updateEv+0x11c4>
11b5:	4c 89 f6             	mov    %r14,%rsi
11b8:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 11bf <_ZN8BalancerILh2EE6updateEv+0x11bf>
11bf:	e8 00 00 00 00       	callq  11c4 <_ZN8BalancerILh2EE6updateEv+0x11c4>
11c4:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 11cc <_ZN8BalancerILh2EE6updateEv+0x11cc>
11cb:	00 
11cc:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 11d4 <_ZN8BalancerILh2EE6updateEv+0x11d4>
11d3:	00 
11d4:	4d 85 f6             	test   %r14,%r14
11d7:	74 06                	je     11df <_ZN8BalancerILh2EE6updateEv+0x11df>
11d9:	41 f6 c6 03          	test   $0x3,%r14b
11dd:	74 0f                	je     11ee <_ZN8BalancerILh2EE6updateEv+0x11ee>
11df:	4c 89 f6             	mov    %r14,%rsi
11e2:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 11e9 <_ZN8BalancerILh2EE6updateEv+0x11e9>
11e9:	e8 00 00 00 00       	callq  11ee <_ZN8BalancerILh2EE6updateEv+0x11ee>
11ee:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 11f6 <_ZN8BalancerILh2EE6updateEv+0x11f6>
11f5:	00 
11f6:	49 c1 ec 03          	shr    $0x3,%r12
11fa:	41 c6 84 24 00 80 ff 	movb   $0xf8,0x7fff8000(%r12)
1201:	7f f8 
1203:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 120b <_ZN8BalancerILh2EE6updateEv+0x120b>
120a:	00 
120b:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1213 <_ZN8BalancerILh2EE6updateEv+0x1213>
1212:	00 
1213:	48 8d 93 80 ee ff ff 	lea    -0x1180(%rbx),%rdx
121a:	48 c1 ea 03          	shr    $0x3,%rdx
121e:	c6 82 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rdx)
1225:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 122d <_ZN8BalancerILh2EE6updateEv+0x122d>
122c:	00 
122d:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1235 <_ZN8BalancerILh2EE6updateEv+0x1235>
1234:	00 
1235:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 123d <_ZN8BalancerILh2EE6updateEv+0x123d>
123c:	00 
123d:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1245 <_ZN8BalancerILh2EE6updateEv+0x1245>
1244:	00 
1245:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 124d <_ZN8BalancerILh2EE6updateEv+0x124d>
124c:	00 
124d:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1255 <_ZN8BalancerILh2EE6updateEv+0x1255>
1254:	00 
1255:	c6 82 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rdx)
125c:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1264 <_ZN8BalancerILh2EE6updateEv+0x1264>
1263:	00 
1264:	48 8d 93 40 ee ff ff 	lea    -0x11c0(%rbx),%rdx
126b:	48 c1 ea 03          	shr    $0x3,%rdx
126f:	c6 82 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rdx)
1276:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 127e <_ZN8BalancerILh2EE6updateEv+0x127e>
127d:	00 
127e:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1286 <_ZN8BalancerILh2EE6updateEv+0x1286>
1285:	00 
1286:	48 8d 93 00 ef ff ff 	lea    -0x1100(%rbx),%rdx
128d:	48 c1 ea 03          	shr    $0x3,%rdx
1291:	c6 82 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rdx)
1298:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 12a0 <_ZN8BalancerILh2EE6updateEv+0x12a0>
129f:	00 
    CNL_NODISCARD constexpr auto operator()(
12a0:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 12a8 <_ZN8BalancerILh2EE6updateEv+0x12a8>
12a7:	00 
                static_cast<typename result_type::rep>(Operator()(
12a8:	48 8d 93 c0 f9 ff ff 	lea    -0x640(%rbx),%rdx
12af:	48 c1 ea 03          	shr    $0x3,%rdx
12b3:	c6 82 00 80 ff 7f 04 	movb   $0x4,0x7fff8000(%rdx)
12ba:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 12c2 <_ZN8BalancerILh2EE6updateEv+0x12c2>
12c1:	00 
12c2:	48 8d 93 40 ef ff ff 	lea    -0x10c0(%rbx),%rdx
12c9:	48 c1 ea 03          	shr    $0x3,%rdx
12cd:	c6 82 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rdx)
12d4:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 12dc <_ZN8BalancerILh2EE6updateEv+0x12dc>
12db:	00 
                        _impl::to_rep(static_cast<result_type>(rhs)))));
12dc:	48 8d 93 00 fa ff ff 	lea    -0x600(%rbx),%rdx
12e3:	48 c1 ea 03          	shr    $0x3,%rdx
12e7:	c6 82 00 80 ff 7f 04 	movb   $0x4,0x7fff8000(%rdx)
12ee:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 12f6 <_ZN8BalancerILh2EE6updateEv+0x12f6>
12f5:	00 
    explicit constexpr elastic_integer(elastic_integer<FromWidth, FromNarrowest> const& rhs)
12f6:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 12fe <_ZN8BalancerILh2EE6updateEv+0x12fe>
12fd:	00 
12fe:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1306 <_ZN8BalancerILh2EE6updateEv+0x1306>
1305:	00 
1306:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 130e <_ZN8BalancerILh2EE6updateEv+0x130e>
130d:	00 
130e:	4c 8d a3 80 f0 ff ff 	lea    -0xf80(%rbx),%r12
1315:	4c 89 e2             	mov    %r12,%rdx
1318:	48 c1 ea 03          	shr    $0x3,%rdx
131c:	c6 82 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rdx)
1323:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 132b <_ZN8BalancerILh2EE6updateEv+0x132b>
132a:	00 
132b:	4d 85 f6             	test   %r14,%r14
132e:	74 06                	je     1336 <_ZN8BalancerILh2EE6updateEv+0x1336>
1330:	41 f6 c6 03          	test   $0x3,%r14b
1334:	74 0f                	je     1345 <_ZN8BalancerILh2EE6updateEv+0x1345>
1336:	4c 89 f6             	mov    %r14,%rsi
1339:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 1340 <_ZN8BalancerILh2EE6updateEv+0x1340>
1340:	e8 00 00 00 00       	callq  1345 <_ZN8BalancerILh2EE6updateEv+0x1345>
1345:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 134d <_ZN8BalancerILh2EE6updateEv+0x134d>
134c:	00 
134d:	4d 85 f6             	test   %r14,%r14
1350:	74 06                	je     1358 <_ZN8BalancerILh2EE6updateEv+0x1358>
1352:	41 f6 c6 03          	test   $0x3,%r14b
1356:	74 0f                	je     1367 <_ZN8BalancerILh2EE6updateEv+0x1367>
1358:	4c 89 f6             	mov    %r14,%rsi
135b:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 1362 <_ZN8BalancerILh2EE6updateEv+0x1362>
1362:	e8 00 00 00 00       	callq  1367 <_ZN8BalancerILh2EE6updateEv+0x1367>
1367:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 136f <_ZN8BalancerILh2EE6updateEv+0x136f>
136e:	00 
136f:	4d 85 f6             	test   %r14,%r14
1372:	74 06                	je     137a <_ZN8BalancerILh2EE6updateEv+0x137a>
1374:	41 f6 c6 03          	test   $0x3,%r14b
1378:	74 0f                	je     1389 <_ZN8BalancerILh2EE6updateEv+0x1389>
137a:	4c 89 f6             	mov    %r14,%rsi
137d:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 1384 <_ZN8BalancerILh2EE6updateEv+0x1384>
1384:	e8 00 00 00 00       	callq  1389 <_ZN8BalancerILh2EE6updateEv+0x1389>
1389:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1391 <_ZN8BalancerILh2EE6updateEv+0x1391>
1390:	00 
1391:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1399 <_ZN8BalancerILh2EE6updateEv+0x1399>
1398:	00 
1399:	4d 85 f6             	test   %r14,%r14
139c:	74 06                	je     13a4 <_ZN8BalancerILh2EE6updateEv+0x13a4>
139e:	41 f6 c6 03          	test   $0x3,%r14b
13a2:	74 0f                	je     13b3 <_ZN8BalancerILh2EE6updateEv+0x13b3>
13a4:	4c 89 f6             	mov    %r14,%rsi
13a7:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 13ae <_ZN8BalancerILh2EE6updateEv+0x13ae>
13ae:	e8 00 00 00 00       	callq  13b3 <_ZN8BalancerILh2EE6updateEv+0x13b3>
13b3:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 13bb <_ZN8BalancerILh2EE6updateEv+0x13bb>
13ba:	00 
13bb:	49 c1 ec 03          	shr    $0x3,%r12
13bf:	41 c6 84 24 00 80 ff 	movb   $0xf8,0x7fff8000(%r12)
13c6:	7f f8 
13c8:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 13d0 <_ZN8BalancerILh2EE6updateEv+0x13d0>
13cf:	00 
            :_base(static_cast<rep>(_impl::to_rep(rhs)))
13d0:	4d 85 f6             	test   %r14,%r14
13d3:	74 06                	je     13db <_ZN8BalancerILh2EE6updateEv+0x13db>
13d5:	41 f6 c6 03          	test   $0x3,%r14b
13d9:	74 0f                	je     13ea <_ZN8BalancerILh2EE6updateEv+0x13ea>
13db:	4c 89 f6             	mov    %r14,%rsi
13de:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 13e5 <_ZN8BalancerILh2EE6updateEv+0x13e5>
13e5:	e8 00 00 00 00       	callq  13ea <_ZN8BalancerILh2EE6updateEv+0x13ea>
13ea:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 13f2 <_ZN8BalancerILh2EE6updateEv+0x13f2>
13f1:	00 
13f2:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 13fa <_ZN8BalancerILh2EE6updateEv+0x13fa>
13f9:	00 
13fa:	4c 89 f2             	mov    %r14,%rdx
13fd:	48 c1 ea 03          	shr    $0x3,%rdx
1401:	8a 8a 00 80 ff 7f    	mov    0x7fff8000(%rdx),%cl
1407:	4c 89 f2             	mov    %r14,%rdx
140a:	83 e2 07             	and    $0x7,%edx
140d:	83 c2 03             	add    $0x3,%edx
1410:	38 ca                	cmp    %cl,%dl
1412:	7c 0c                	jl     1420 <_ZN8BalancerILh2EE6updateEv+0x1420>
1414:	84 c9                	test   %cl,%cl
1416:	74 08                	je     1420 <_ZN8BalancerILh2EE6updateEv+0x1420>
1418:	4c 89 f7             	mov    %r14,%rdi
141b:	e8 00 00 00 00       	callq  1420 <_ZN8BalancerILh2EE6updateEv+0x1420>
1420:	4c 8d a3 00 fa ff ff 	lea    -0x600(%rbx),%r12
1427:	41 8b 75 04          	mov    0x4(%r13),%esi
142b:	4c 89 e7             	mov    %r12,%rdi
142e:	e8 00 00 00 00       	callq  1433 <_ZN8BalancerILh2EE6updateEv+0x1433>
1433:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 143b <_ZN8BalancerILh2EE6updateEv+0x143b>
143a:	00 
143b:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1443 <_ZN8BalancerILh2EE6updateEv+0x1443>
1442:	00 
1443:	48 8d 83 40 f0 ff ff 	lea    -0xfc0(%rbx),%rax
144a:	48 c1 e8 03          	shr    $0x3,%rax
144e:	c6 80 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rax)
1455:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 145d <_ZN8BalancerILh2EE6updateEv+0x145d>
145c:	00 
145d:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1465 <_ZN8BalancerILh2EE6updateEv+0x1465>
1464:	00 
1465:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 146d <_ZN8BalancerILh2EE6updateEv+0x146d>
146c:	00 
146d:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1475 <_ZN8BalancerILh2EE6updateEv+0x1475>
1474:	00 
1475:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 147d <_ZN8BalancerILh2EE6updateEv+0x147d>
147c:	00 
147d:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1485 <_ZN8BalancerILh2EE6updateEv+0x1485>
1484:	00 
1485:	c6 80 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rax)
148c:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1494 <_ZN8BalancerILh2EE6updateEv+0x1494>
1493:	00 
1494:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 149c <_ZN8BalancerILh2EE6updateEv+0x149c>
149b:	00 
                        _impl::to_rep(static_cast<result_type>(lhs)),
149c:	4c 8d ab 40 fa ff ff 	lea    -0x5c0(%rbx),%r13
14a3:	4c 89 e8             	mov    %r13,%rax
14a6:	48 c1 e8 03          	shr    $0x3,%rax
14aa:	c6 80 00 80 ff 7f 04 	movb   $0x4,0x7fff8000(%rax)
14b1:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 14b9 <_ZN8BalancerILh2EE6updateEv+0x14b9>
14b8:	00 
    explicit constexpr elastic_integer(elastic_integer<FromWidth, FromNarrowest> const& rhs)
14b9:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 14c1 <_ZN8BalancerILh2EE6updateEv+0x14c1>
14c0:	00 
14c1:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 14c9 <_ZN8BalancerILh2EE6updateEv+0x14c9>
14c8:	00 
14c9:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 14d1 <_ZN8BalancerILh2EE6updateEv+0x14d1>
14d0:	00 
14d1:	48 8d 83 00 f0 ff ff 	lea    -0x1000(%rbx),%rax
14d8:	48 c1 e8 03          	shr    $0x3,%rax
14dc:	c6 80 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rax)
14e3:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 14eb <_ZN8BalancerILh2EE6updateEv+0x14eb>
14ea:	00 
14eb:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 14f3 <_ZN8BalancerILh2EE6updateEv+0x14f3>
14f2:	00 
14f3:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 14fb <_ZN8BalancerILh2EE6updateEv+0x14fb>
14fa:	00 
14fb:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1503 <_ZN8BalancerILh2EE6updateEv+0x1503>
1502:	00 
1503:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 150b <_ZN8BalancerILh2EE6updateEv+0x150b>
150a:	00 
150b:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1513 <_ZN8BalancerILh2EE6updateEv+0x1513>
1512:	00 
1513:	c6 80 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rax)
151a:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1522 <_ZN8BalancerILh2EE6updateEv+0x1522>
1521:	00 
1522:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 152a <_ZN8BalancerILh2EE6updateEv+0x152a>
1529:	00 
152a:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1532 <_ZN8BalancerILh2EE6updateEv+0x1532>
1531:	00 
            :_base(static_cast<rep>(_impl::to_rep(rhs)))
1532:	48 8b 85 c8 e5 ff ff 	mov    -0x1a38(%rbp),%rax
1539:	48 c1 e8 03          	shr    $0x3,%rax
153d:	8a 80 00 80 ff 7f    	mov    0x7fff8000(%rax),%al
1543:	84 c0                	test   %al,%al
1545:	74 10                	je     1557 <_ZN8BalancerILh2EE6updateEv+0x1557>
1547:	3c 03                	cmp    $0x3,%al
1549:	7f 0c                	jg     1557 <_ZN8BalancerILh2EE6updateEv+0x1557>
154b:	48 8b bd c8 e5 ff ff 	mov    -0x1a38(%rbp),%rdi
1552:	e8 00 00 00 00       	callq  1557 <_ZN8BalancerILh2EE6updateEv+0x1557>
1557:	8b b3 80 f7 ff ff    	mov    -0x880(%rbx),%esi
155d:	4c 89 ef             	mov    %r13,%rdi
1560:	e8 00 00 00 00       	callq  1565 <_ZN8BalancerILh2EE6updateEv+0x1565>
1565:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 156d <_ZN8BalancerILh2EE6updateEv+0x156d>
156c:	00 
156d:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1575 <_ZN8BalancerILh2EE6updateEv+0x1575>
1574:	00 
1575:	48 8d 83 c0 ef ff ff 	lea    -0x1040(%rbx),%rax
157c:	48 c1 e8 03          	shr    $0x3,%rax
1580:	c6 80 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rax)
1587:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 158f <_ZN8BalancerILh2EE6updateEv+0x158f>
158e:	00 
158f:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1597 <_ZN8BalancerILh2EE6updateEv+0x1597>
1596:	00 
1597:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 159f <_ZN8BalancerILh2EE6updateEv+0x159f>
159e:	00 
159f:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 15a7 <_ZN8BalancerILh2EE6updateEv+0x15a7>
15a6:	00 
15a7:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 15af <_ZN8BalancerILh2EE6updateEv+0x15af>
15ae:	00 
15af:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 15b7 <_ZN8BalancerILh2EE6updateEv+0x15b7>
15b6:	00 
15b7:	c6 80 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rax)
15be:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 15c6 <_ZN8BalancerILh2EE6updateEv+0x15c6>
15c5:	00 
15c6:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 15ce <_ZN8BalancerILh2EE6updateEv+0x15ce>
15cd:	00 
15ce:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 15d6 <_ZN8BalancerILh2EE6updateEv+0x15d6>
15d5:	00 
15d6:	48 8d 83 c0 f0 ff ff 	lea    -0xf40(%rbx),%rax
15dd:	48 c1 e8 03          	shr    $0x3,%rax
15e1:	c6 80 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rax)
15e8:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 15f0 <_ZN8BalancerILh2EE6updateEv+0x15f0>
15ef:	00 
    CNL_NODISCARD constexpr auto operator()(
15f0:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 15f8 <_ZN8BalancerILh2EE6updateEv+0x15f8>
15f7:	00 
                cnl::binary_operator<RoundingTag, Operator, LhsRep, RhsRep>()(
15f8:	48 8d 83 80 fa ff ff 	lea    -0x580(%rbx),%rax
15ff:	48 c1 e8 03          	shr    $0x3,%rax
1603:	c6 80 00 80 ff 7f 04 	movb   $0x4,0x7fff8000(%rax)
160a:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1612 <_ZN8BalancerILh2EE6updateEv+0x1612>
1611:	00 
1612:	48 8d 83 00 f1 ff ff 	lea    -0xf00(%rbx),%rax
1619:	48 c1 e8 03          	shr    $0x3,%rax
161d:	c6 80 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rax)
1624:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 162c <_ZN8BalancerILh2EE6updateEv+0x162c>
162b:	00 
162c:	48 8d 83 c0 f1 ff ff 	lea    -0xe40(%rbx),%rax
1633:	48 c1 e8 03          	shr    $0x3,%rax
1637:	c6 80 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rax)
163e:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1646 <_ZN8BalancerILh2EE6updateEv+0x1646>
1645:	00 
1646:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 164e <_ZN8BalancerILh2EE6updateEv+0x164e>
164d:	00 
164e:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1656 <_ZN8BalancerILh2EE6updateEv+0x1656>
1655:	00 
1656:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 165e <_ZN8BalancerILh2EE6updateEv+0x165e>
165d:	00 
165e:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1666 <_ZN8BalancerILh2EE6updateEv+0x1666>
1665:	00 
1666:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 166e <_ZN8BalancerILh2EE6updateEv+0x166e>
166d:	00 
166e:	c6 80 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rax)
1675:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 167d <_ZN8BalancerILh2EE6updateEv+0x167d>
167c:	00 
167d:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1685 <_ZN8BalancerILh2EE6updateEv+0x1685>
1684:	00 
1685:	48 8d 83 80 f1 ff ff 	lea    -0xe80(%rbx),%rax
168c:	48 c1 e8 03          	shr    $0x3,%rax
1690:	c6 80 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rax)
1697:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 169f <_ZN8BalancerILh2EE6updateEv+0x169f>
169e:	00 
169f:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 16a7 <_ZN8BalancerILh2EE6updateEv+0x16a7>
16a6:	00 
16a7:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 16af <_ZN8BalancerILh2EE6updateEv+0x16af>
16ae:	00 
16af:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 16b7 <_ZN8BalancerILh2EE6updateEv+0x16b7>
16b6:	00 
16b7:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 16bf <_ZN8BalancerILh2EE6updateEv+0x16bf>
16be:	00 
16bf:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 16c7 <_ZN8BalancerILh2EE6updateEv+0x16c7>
16c6:	00 
16c7:	c6 80 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rax)
16ce:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 16d6 <_ZN8BalancerILh2EE6updateEv+0x16d6>
16d5:	00 
16d6:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 16de <_ZN8BalancerILh2EE6updateEv+0x16de>
16dd:	00 
    CNL_NODISCARD constexpr auto operator()(_lhs const& lhs, _rhs const& rhs) const -> _result
16de:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 16e6 <_ZN8BalancerILh2EE6updateEv+0x16e6>
16e5:	00 
        return Operator{}(_impl::to_rep(lhs), _impl::to_rep(rhs));
16e6:	48 8d 83 c0 fa ff ff 	lea    -0x540(%rbx),%rax
16ed:	48 c1 e8 03          	shr    $0x3,%rax
16f1:	c6 80 00 80 ff 7f 04 	movb   $0x4,0x7fff8000(%rax)
16f8:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1700 <_ZN8BalancerILh2EE6updateEv+0x1700>
16ff:	00 
1700:	48 8d 83 00 fb ff ff 	lea    -0x500(%rbx),%rax
1707:	48 c1 e8 03          	shr    $0x3,%rax
170b:	c6 80 00 80 ff 7f 04 	movb   $0x4,0x7fff8000(%rax)
1712:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 171a <_ZN8BalancerILh2EE6updateEv+0x171a>
1719:	00 
171a:	48 8d 83 00 f2 ff ff 	lea    -0xe00(%rbx),%rax
1721:	48 c1 e8 03          	shr    $0x3,%rax
1725:	c6 80 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rax)
172c:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1734 <_ZN8BalancerILh2EE6updateEv+0x1734>
1733:	00 
1734:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 173c <_ZN8BalancerILh2EE6updateEv+0x173c>
173b:	00 
173c:	48 8d 83 80 f2 ff ff 	lea    -0xd80(%rbx),%rax
1743:	48 c1 e8 03          	shr    $0x3,%rax
1747:	c6 80 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rax)
174e:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1756 <_ZN8BalancerILh2EE6updateEv+0x1756>
1755:	00 
1756:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 175e <_ZN8BalancerILh2EE6updateEv+0x175e>
175d:	00 
175e:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1766 <_ZN8BalancerILh2EE6updateEv+0x1766>
1765:	00 
1766:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 176e <_ZN8BalancerILh2EE6updateEv+0x176e>
176d:	00 
176e:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1776 <_ZN8BalancerILh2EE6updateEv+0x1776>
1775:	00 
1776:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 177e <_ZN8BalancerILh2EE6updateEv+0x177e>
177d:	00 
177e:	c6 80 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rax)
1785:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 178d <_ZN8BalancerILh2EE6updateEv+0x178d>
178c:	00 
178d:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1795 <_ZN8BalancerILh2EE6updateEv+0x1795>
1794:	00 
1795:	48 8d 83 40 f2 ff ff 	lea    -0xdc0(%rbx),%rax
179c:	48 c1 e8 03          	shr    $0x3,%rax
17a0:	c6 80 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rax)
17a7:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 17af <_ZN8BalancerILh2EE6updateEv+0x17af>
17ae:	00 
17af:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 17b7 <_ZN8BalancerILh2EE6updateEv+0x17b7>
17b6:	00 
17b7:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 17bf <_ZN8BalancerILh2EE6updateEv+0x17bf>
17be:	00 
17bf:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 17c7 <_ZN8BalancerILh2EE6updateEv+0x17c7>
17c6:	00 
17c7:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 17cf <_ZN8BalancerILh2EE6updateEv+0x17cf>
17ce:	00 
17cf:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 17d7 <_ZN8BalancerILh2EE6updateEv+0x17d7>
17d6:	00 
17d7:	c6 80 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rax)
17de:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 17e6 <_ZN8BalancerILh2EE6updateEv+0x17e6>
17e5:	00 
17e6:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 17ee <_ZN8BalancerILh2EE6updateEv+0x17ee>
17ed:	00 
17ee:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 17f6 <_ZN8BalancerILh2EE6updateEv+0x17f6>
17f5:	00 
            return lhs+rhs;
17f6:	4c 89 e8             	mov    %r13,%rax
17f9:	48 c1 e8 03          	shr    $0x3,%rax
17fd:	8a 80 00 80 ff 7f    	mov    0x7fff8000(%rax),%al
1803:	84 c0                	test   %al,%al
1805:	74 0c                	je     1813 <_ZN8BalancerILh2EE6updateEv+0x1813>
1807:	3c 03                	cmp    $0x3,%al
1809:	7f 08                	jg     1813 <_ZN8BalancerILh2EE6updateEv+0x1813>
180b:	4c 89 ef             	mov    %r13,%rdi
180e:	e8 00 00 00 00       	callq  1813 <_ZN8BalancerILh2EE6updateEv+0x1813>
1813:	48 63 b3 40 fa ff ff 	movslq -0x5c0(%rbx),%rsi
181a:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1822 <_ZN8BalancerILh2EE6updateEv+0x1822>
1821:	00 
1822:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 182a <_ZN8BalancerILh2EE6updateEv+0x182a>
1829:	00 
182a:	4c 89 e0             	mov    %r12,%rax
182d:	48 c1 e8 03          	shr    $0x3,%rax
1831:	8a 80 00 80 ff 7f    	mov    0x7fff8000(%rax),%al
1837:	84 c0                	test   %al,%al
1839:	74 0c                	je     1847 <_ZN8BalancerILh2EE6updateEv+0x1847>
183b:	3c 03                	cmp    $0x3,%al
183d:	7f 08                	jg     1847 <_ZN8BalancerILh2EE6updateEv+0x1847>
183f:	4c 89 e7             	mov    %r12,%rdi
1842:	e8 00 00 00 00       	callq  1847 <_ZN8BalancerILh2EE6updateEv+0x1847>
1847:	48 63 93 00 fa ff ff 	movslq -0x600(%rbx),%rdx
184e:	41 89 f4             	mov    %esi,%r12d
1851:	41 01 d4             	add    %edx,%r12d
1854:	71 0c                	jno    1862 <_ZN8BalancerILh2EE6updateEv+0x1862>
1856:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 185d <_ZN8BalancerILh2EE6updateEv+0x185d>
185d:	e8 00 00 00 00       	callq  1862 <_ZN8BalancerILh2EE6updateEv+0x1862>
1862:	48 8d bb 00 fb ff ff 	lea    -0x500(%rbx),%rdi
1869:	48 89 f8             	mov    %rdi,%rax
186c:	48 c1 e8 03          	shr    $0x3,%rax
1870:	8a 80 00 80 ff 7f    	mov    0x7fff8000(%rax),%al
1876:	84 c0                	test   %al,%al
1878:	74 09                	je     1883 <_ZN8BalancerILh2EE6updateEv+0x1883>
187a:	3c 03                	cmp    $0x3,%al
187c:	7f 05                	jg     1883 <_ZN8BalancerILh2EE6updateEv+0x1883>
187e:	e8 00 00 00 00       	callq  1883 <_ZN8BalancerILh2EE6updateEv+0x1883>
1883:	44 89 a3 00 fb ff ff 	mov    %r12d,-0x500(%rbx)
188a:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1892 <_ZN8BalancerILh2EE6updateEv+0x1892>
1891:	00 
        constexpr wide_integer(T const& value)  // NOLINT(hicpp-explicit-conversions, google-explicit-constructor)
1892:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 189a <_ZN8BalancerILh2EE6updateEv+0x189a>
1899:	00 
189a:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 18a2 <_ZN8BalancerILh2EE6updateEv+0x18a2>
18a1:	00 
18a2:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 18aa <_ZN8BalancerILh2EE6updateEv+0x18aa>
18a9:	00 
18aa:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 18b2 <_ZN8BalancerILh2EE6updateEv+0x18b2>
18b1:	00 
        explicit constexpr number_base(rep r)
18b2:	48 8d bb 40 fd ff ff 	lea    -0x2c0(%rbx),%rdi
18b9:	48 89 f8             	mov    %rdi,%rax
18bc:	48 c1 e8 03          	shr    $0x3,%rax
18c0:	8a 90 00 80 ff 7f    	mov    0x7fff8000(%rax),%dl
18c6:	48 89 f8             	mov    %rdi,%rax
18c9:	83 e0 07             	and    $0x7,%eax
18cc:	83 c0 03             	add    $0x3,%eax
18cf:	38 d0                	cmp    %dl,%al
18d1:	7c 09                	jl     18dc <_ZN8BalancerILh2EE6updateEv+0x18dc>
18d3:	84 d2                	test   %dl,%dl
18d5:	74 05                	je     18dc <_ZN8BalancerILh2EE6updateEv+0x18dc>
18d7:	e8 00 00 00 00       	callq  18dc <_ZN8BalancerILh2EE6updateEv+0x18dc>
18dc:	44 89 a3 40 fd ff ff 	mov    %r12d,-0x2c0(%rbx)
18e3:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 18eb <_ZN8BalancerILh2EE6updateEv+0x18eb>
18ea:	00 
move(_Tp&& __t) noexcept
18eb:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 18f3 <_ZN8BalancerILh2EE6updateEv+0x18f3>
18f2:	00 
18f3:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 18fb <_ZN8BalancerILh2EE6updateEv+0x18fb>
18fa:	00 
18fb:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1903 <_ZN8BalancerILh2EE6updateEv+0x1903>
1902:	00 
            : _rep(std::move(r)) { }
1903:	48 8d bb c0 fa ff ff 	lea    -0x540(%rbx),%rdi
190a:	48 89 f8             	mov    %rdi,%rax
190d:	48 c1 e8 03          	shr    $0x3,%rax
1911:	8a 80 00 80 ff 7f    	mov    0x7fff8000(%rax),%al
1917:	84 c0                	test   %al,%al
1919:	74 09                	je     1924 <_ZN8BalancerILh2EE6updateEv+0x1924>
191b:	3c 03                	cmp    $0x3,%al
191d:	7f 05                	jg     1924 <_ZN8BalancerILh2EE6updateEv+0x1924>
191f:	e8 00 00 00 00       	callq  1924 <_ZN8BalancerILh2EE6updateEv+0x1924>
1924:	48 c1 ef 03          	shr    $0x3,%rdi
1928:	44 89 a3 c0 fa ff ff 	mov    %r12d,-0x540(%rbx)
192f:	c6 87 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rdi)
1936:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 193e <_ZN8BalancerILh2EE6updateEv+0x193e>
193d:	00 
193e:	48 8d 83 00 fb ff ff 	lea    -0x500(%rbx),%rax
1945:	48 c1 e8 03          	shr    $0x3,%rax
1949:	c6 80 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rax)
1950:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1958 <_ZN8BalancerILh2EE6updateEv+0x1958>
1957:	00 
1958:	48 8d 83 00 f2 ff ff 	lea    -0xe00(%rbx),%rax
195f:	48 c1 e8 03          	shr    $0x3,%rax
1963:	c6 80 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rax)
196a:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1972 <_ZN8BalancerILh2EE6updateEv+0x1972>
1971:	00 
1972:	48 8d bb 80 fa ff ff 	lea    -0x580(%rbx),%rdi
1979:	48 89 f8             	mov    %rdi,%rax
197c:	48 c1 e8 03          	shr    $0x3,%rax
1980:	8a 80 00 80 ff 7f    	mov    0x7fff8000(%rax),%al
1986:	84 c0                	test   %al,%al
1988:	74 09                	je     1993 <_ZN8BalancerILh2EE6updateEv+0x1993>
198a:	3c 03                	cmp    $0x3,%al
198c:	7f 05                	jg     1993 <_ZN8BalancerILh2EE6updateEv+0x1993>
198e:	e8 00 00 00 00       	callq  1993 <_ZN8BalancerILh2EE6updateEv+0x1993>
1993:	44 89 a3 80 fa ff ff 	mov    %r12d,-0x580(%rbx)
199a:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 19a2 <_ZN8BalancerILh2EE6updateEv+0x19a2>
19a1:	00 
19a2:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 19aa <_ZN8BalancerILh2EE6updateEv+0x19aa>
19a9:	00 
19aa:	4c 8d ab 40 f1 ff ff 	lea    -0xec0(%rbx),%r13
19b1:	49 c1 ed 03          	shr    $0x3,%r13
19b5:	41 c6 85 00 80 ff 7f 	movb   $0x1,0x7fff8000(%r13)
19bc:	01 
19bd:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 19c5 <_ZN8BalancerILh2EE6updateEv+0x19c5>
19c4:	00 
19c5:	4c 8d a3 80 fa ff ff 	lea    -0x580(%rbx),%r12
19cc:	4c 89 e7             	mov    %r12,%rdi
19cf:	e8 00 00 00 00       	callq  19d4 <_ZN8BalancerILh2EE6updateEv+0x19d4>
19d4:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 19dc <_ZN8BalancerILh2EE6updateEv+0x19dc>
19db:	00 
19dc:	41 c6 85 00 80 ff 7f 	movb   $0xf8,0x7fff8000(%r13)
19e3:	f8 
19e4:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 19ec <_ZN8BalancerILh2EE6updateEv+0x19ec>
19eb:	00 
19ec:	49 c1 ec 03          	shr    $0x3,%r12
19f0:	41 c6 84 24 00 80 ff 	movb   $0xf8,0x7fff8000(%r12)
19f7:	7f f8 
19f9:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1a01 <_ZN8BalancerILh2EE6updateEv+0x1a01>
1a00:	00 
1a01:	48 8d 93 00 f1 ff ff 	lea    -0xf00(%rbx),%rdx
1a08:	48 c1 ea 03          	shr    $0x3,%rdx
1a0c:	c6 82 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rdx)
1a13:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1a1b <_ZN8BalancerILh2EE6updateEv+0x1a1b>
1a1a:	00 
1a1b:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1a23 <_ZN8BalancerILh2EE6updateEv+0x1a23>
1a22:	00 
1a23:	48 8d 93 c0 f0 ff ff 	lea    -0xf40(%rbx),%rdx
1a2a:	48 c1 ea 03          	shr    $0x3,%rdx
1a2e:	c6 82 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rdx)
1a35:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1a3d <_ZN8BalancerILh2EE6updateEv+0x1a3d>
1a3c:	00 
                static_cast<typename result_type::rep>(Operator()(
1a3d:	48 8d bb c0 f9 ff ff 	lea    -0x640(%rbx),%rdi
1a44:	48 89 fa             	mov    %rdi,%rdx
1a47:	48 c1 ea 03          	shr    $0x3,%rdx
1a4b:	8a 92 00 80 ff 7f    	mov    0x7fff8000(%rdx),%dl
1a51:	84 d2                	test   %dl,%dl
1a53:	74 0a                	je     1a5f <_ZN8BalancerILh2EE6updateEv+0x1a5f>
1a55:	80 fa 03             	cmp    $0x3,%dl
1a58:	7f 05                	jg     1a5f <_ZN8BalancerILh2EE6updateEv+0x1a5f>
1a5a:	e8 00 00 00 00       	callq  1a5f <_ZN8BalancerILh2EE6updateEv+0x1a5f>
1a5f:	89 83 c0 f9 ff ff    	mov    %eax,-0x640(%rbx)
1a65:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1a6d <_ZN8BalancerILh2EE6updateEv+0x1a6d>
1a6c:	00 
1a6d:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1a75 <_ZN8BalancerILh2EE6updateEv+0x1a75>
1a74:	00 
1a75:	4c 8d ab 80 ef ff ff 	lea    -0x1080(%rbx),%r13
1a7c:	49 c1 ed 03          	shr    $0x3,%r13
1a80:	41 c6 85 00 80 ff 7f 	movb   $0x1,0x7fff8000(%r13)
1a87:	01 
1a88:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1a90 <_ZN8BalancerILh2EE6updateEv+0x1a90>
1a8f:	00 
1a90:	4c 8d a3 c0 f9 ff ff 	lea    -0x640(%rbx),%r12
1a97:	4c 89 e7             	mov    %r12,%rdi
1a9a:	e8 00 00 00 00       	callq  1a9f <_ZN8BalancerILh2EE6updateEv+0x1a9f>
1a9f:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1aa7 <_ZN8BalancerILh2EE6updateEv+0x1aa7>
1aa6:	00 
1aa7:	41 c6 85 00 80 ff 7f 	movb   $0xf8,0x7fff8000(%r13)
1aae:	f8 
1aaf:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1ab7 <_ZN8BalancerILh2EE6updateEv+0x1ab7>
1ab6:	00 
1ab7:	49 c1 ec 03          	shr    $0x3,%r12
1abb:	41 c6 84 24 00 80 ff 	movb   $0xf8,0x7fff8000(%r12)
1ac2:	7f f8 
1ac4:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1acc <_ZN8BalancerILh2EE6updateEv+0x1acc>
1acb:	00 
                        _impl::to_rep(static_cast<result_type>(lhs)),
1acc:	48 8d 93 40 fa ff ff 	lea    -0x5c0(%rbx),%rdx
1ad3:	48 c1 ea 03          	shr    $0x3,%rdx
1ad7:	c6 82 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rdx)
1ade:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1ae6 <_ZN8BalancerILh2EE6updateEv+0x1ae6>
1ae5:	00 
                        _impl::to_rep(static_cast<result_type>(rhs)))));
1ae6:	48 8d 93 00 fa ff ff 	lea    -0x600(%rbx),%rdx
1aed:	48 c1 ea 03          	shr    $0x3,%rdx
1af1:	c6 82 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rdx)
1af8:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1b00 <_ZN8BalancerILh2EE6updateEv+0x1b00>
1aff:	00 
                static_cast<typename result_type::rep>(Operator()(
1b00:	48 8d 93 40 ef ff ff 	lea    -0x10c0(%rbx),%rdx
1b07:	48 c1 ea 03          	shr    $0x3,%rdx
1b0b:	c6 82 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rdx)
1b12:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1b1a <_ZN8BalancerILh2EE6updateEv+0x1b1a>
1b19:	00 
1b1a:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1b22 <_ZN8BalancerILh2EE6updateEv+0x1b22>
1b21:	00 
1b22:	48 8d 93 00 ef ff ff 	lea    -0x1100(%rbx),%rdx
1b29:	48 c1 ea 03          	shr    $0x3,%rdx
1b2d:	c6 82 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rdx)
1b34:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1b3c <_ZN8BalancerILh2EE6updateEv+0x1b3c>
1b3b:	00 
1b3c:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1b44 <_ZN8BalancerILh2EE6updateEv+0x1b44>
1b43:	00 
1b44:	48 8d 93 40 ee ff ff 	lea    -0x11c0(%rbx),%rdx
1b4b:	48 c1 ea 03          	shr    $0x3,%rdx
1b4f:	c6 82 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rdx)
1b56:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1b5e <_ZN8BalancerILh2EE6updateEv+0x1b5e>
1b5d:	00 
1b5e:	48 8d bb 80 f9 ff ff 	lea    -0x680(%rbx),%rdi
1b65:	48 89 fa             	mov    %rdi,%rdx
1b68:	48 c1 ea 03          	shr    $0x3,%rdx
1b6c:	8a 92 00 80 ff 7f    	mov    0x7fff8000(%rdx),%dl
1b72:	84 d2                	test   %dl,%dl
1b74:	74 0a                	je     1b80 <_ZN8BalancerILh2EE6updateEv+0x1b80>
1b76:	80 fa 03             	cmp    $0x3,%dl
1b79:	7f 05                	jg     1b80 <_ZN8BalancerILh2EE6updateEv+0x1b80>
1b7b:	e8 00 00 00 00       	callq  1b80 <_ZN8BalancerILh2EE6updateEv+0x1b80>
1b80:	89 83 80 f9 ff ff    	mov    %eax,-0x680(%rbx)
1b86:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1b8e <_ZN8BalancerILh2EE6updateEv+0x1b8e>
1b8d:	00 
1b8e:	4c 8d ab 00 ee ff ff 	lea    -0x1200(%rbx),%r13
1b95:	49 c1 ed 03          	shr    $0x3,%r13
1b99:	41 c6 85 00 80 ff 7f 	movb   $0x1,0x7fff8000(%r13)
1ba0:	01 
1ba1:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1ba9 <_ZN8BalancerILh2EE6updateEv+0x1ba9>
1ba8:	00 
1ba9:	4c 8d a3 80 f9 ff ff 	lea    -0x680(%rbx),%r12
1bb0:	4c 89 e7             	mov    %r12,%rdi
1bb3:	e8 00 00 00 00       	callq  1bb8 <_ZN8BalancerILh2EE6updateEv+0x1bb8>
1bb8:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1bc0 <_ZN8BalancerILh2EE6updateEv+0x1bc0>
1bbf:	00 
1bc0:	41 c6 85 00 80 ff 7f 	movb   $0xf8,0x7fff8000(%r13)
1bc7:	f8 
1bc8:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1bd0 <_ZN8BalancerILh2EE6updateEv+0x1bd0>
1bcf:	00 
1bd0:	49 c1 ec 03          	shr    $0x3,%r12
1bd4:	41 c6 84 24 00 80 ff 	movb   $0xf8,0x7fff8000(%r12)
1bdb:	7f f8 
1bdd:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1be5 <_ZN8BalancerILh2EE6updateEv+0x1be5>
1be4:	00 
1be5:	48 8d 93 c0 ed ff ff 	lea    -0x1240(%rbx),%rdx
1bec:	48 c1 ea 03          	shr    $0x3,%rdx
1bf0:	c6 82 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rdx)
1bf7:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1bff <_ZN8BalancerILh2EE6updateEv+0x1bff>
1bfe:	00 
1bff:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1c07 <_ZN8BalancerILh2EE6updateEv+0x1c07>
1c06:	00 
1c07:	48 8d 93 80 ed ff ff 	lea    -0x1280(%rbx),%rdx
1c0e:	48 c1 ea 03          	shr    $0x3,%rdx
1c12:	c6 82 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rdx)
1c19:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1c21 <_ZN8BalancerILh2EE6updateEv+0x1c21>
1c20:	00 
1c21:	48 8d bb 40 f9 ff ff 	lea    -0x6c0(%rbx),%rdi
1c28:	48 89 fa             	mov    %rdi,%rdx
1c2b:	48 c1 ea 03          	shr    $0x3,%rdx
1c2f:	8a 92 00 80 ff 7f    	mov    0x7fff8000(%rdx),%dl
1c35:	84 d2                	test   %dl,%dl
1c37:	74 0a                	je     1c43 <_ZN8BalancerILh2EE6updateEv+0x1c43>
1c39:	80 fa 03             	cmp    $0x3,%dl
1c3c:	7f 05                	jg     1c43 <_ZN8BalancerILh2EE6updateEv+0x1c43>
1c3e:	e8 00 00 00 00       	callq  1c43 <_ZN8BalancerILh2EE6updateEv+0x1c43>
1c43:	89 83 40 f9 ff ff    	mov    %eax,-0x6c0(%rbx)
1c49:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1c51 <_ZN8BalancerILh2EE6updateEv+0x1c51>
1c50:	00 
1c51:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1c59 <_ZN8BalancerILh2EE6updateEv+0x1c59>
1c58:	00 
1c59:	4c 8d ab c0 ec ff ff 	lea    -0x1340(%rbx),%r13
1c60:	49 c1 ed 03          	shr    $0x3,%r13
1c64:	41 c6 85 00 80 ff 7f 	movb   $0x1,0x7fff8000(%r13)
1c6b:	01 
1c6c:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1c74 <_ZN8BalancerILh2EE6updateEv+0x1c74>
1c73:	00 
1c74:	4c 8d a3 40 f9 ff ff 	lea    -0x6c0(%rbx),%r12
1c7b:	4c 89 e7             	mov    %r12,%rdi
1c7e:	e8 00 00 00 00       	callq  1c83 <_ZN8BalancerILh2EE6updateEv+0x1c83>
1c83:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1c8b <_ZN8BalancerILh2EE6updateEv+0x1c8b>
1c8a:	00 
1c8b:	41 c6 85 00 80 ff 7f 	movb   $0xf8,0x7fff8000(%r13)
1c92:	f8 
1c93:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1c9b <_ZN8BalancerILh2EE6updateEv+0x1c9b>
1c9a:	00 
1c9b:	49 c1 ec 03          	shr    $0x3,%r12
1c9f:	41 c6 84 24 00 80 ff 	movb   $0xf8,0x7fff8000(%r12)
1ca6:	7f f8 
1ca8:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1cb0 <_ZN8BalancerILh2EE6updateEv+0x1cb0>
1caf:	00 
1cb0:	48 8d 93 80 ec ff ff 	lea    -0x1380(%rbx),%rdx
1cb7:	48 c1 ea 03          	shr    $0x3,%rdx
1cbb:	c6 82 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rdx)
1cc2:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1cca <_ZN8BalancerILh2EE6updateEv+0x1cca>
1cc9:	00 
1cca:	4c 8d a3 00 f9 ff ff 	lea    -0x700(%rbx),%r12
1cd1:	4c 89 e2             	mov    %r12,%rdx
1cd4:	48 c1 ea 03          	shr    $0x3,%rdx
1cd8:	8a 92 00 80 ff 7f    	mov    0x7fff8000(%rdx),%dl
1cde:	84 d2                	test   %dl,%dl
1ce0:	74 0d                	je     1cef <_ZN8BalancerILh2EE6updateEv+0x1cef>
1ce2:	80 fa 03             	cmp    $0x3,%dl
1ce5:	7f 08                	jg     1cef <_ZN8BalancerILh2EE6updateEv+0x1cef>
1ce7:	4c 89 e7             	mov    %r12,%rdi
1cea:	e8 00 00 00 00       	callq  1cef <_ZN8BalancerILh2EE6updateEv+0x1cef>
1cef:	89 83 00 f9 ff ff    	mov    %eax,-0x700(%rbx)
1cf5:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1cfd <_ZN8BalancerILh2EE6updateEv+0x1cfd>
1cfc:	00 
1cfd:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1d05 <_ZN8BalancerILh2EE6updateEv+0x1d05>
1d04:	00 
1d05:	4c 89 e6             	mov    %r12,%rsi
1d08:	48 8d bb c0 f8 ff ff 	lea    -0x740(%rbx),%rdi
1d0f:	e8 00 00 00 00       	callq  1d14 <_ZN8BalancerILh2EE6updateEv+0x1d14>
1d14:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1d1c <_ZN8BalancerILh2EE6updateEv+0x1d1c>
1d1b:	00 
1d1c:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1d24 <_ZN8BalancerILh2EE6updateEv+0x1d24>
1d23:	00 
1d24:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1d2c <_ZN8BalancerILh2EE6updateEv+0x1d2c>
1d2b:	00 
1d2c:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1d34 <_ZN8BalancerILh2EE6updateEv+0x1d34>
1d33:	00 
1d34:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1d3c <_ZN8BalancerILh2EE6updateEv+0x1d3c>
1d3b:	00 
1d3c:	48 8d bb 80 f7 ff ff 	lea    -0x880(%rbx),%rdi
1d43:	48 89 f8             	mov    %rdi,%rax
1d46:	48 c1 e8 03          	shr    $0x3,%rax
1d4a:	8a 80 00 80 ff 7f    	mov    0x7fff8000(%rax),%al
1d50:	84 c0                	test   %al,%al
1d52:	74 09                	je     1d5d <_ZN8BalancerILh2EE6updateEv+0x1d5d>
1d54:	3c 03                	cmp    $0x3,%al
1d56:	7f 05                	jg     1d5d <_ZN8BalancerILh2EE6updateEv+0x1d5d>
1d58:	e8 00 00 00 00       	callq  1d5d <_ZN8BalancerILh2EE6updateEv+0x1d5d>
1d5d:	48 8d 83 c0 f8 ff ff 	lea    -0x740(%rbx),%rax
1d64:	48 c1 e8 03          	shr    $0x3,%rax
1d68:	8a 80 00 80 ff 7f    	mov    0x7fff8000(%rax),%al
1d6e:	84 c0                	test   %al,%al
1d70:	74 10                	je     1d82 <_ZN8BalancerILh2EE6updateEv+0x1d82>
1d72:	3c 03                	cmp    $0x3,%al
1d74:	7f 0c                	jg     1d82 <_ZN8BalancerILh2EE6updateEv+0x1d82>
1d76:	48 8b bd a8 e5 ff ff 	mov    -0x1a58(%rbp),%rdi
1d7d:	e8 00 00 00 00       	callq  1d82 <_ZN8BalancerILh2EE6updateEv+0x1d82>
1d82:	8b 83 c0 f8 ff ff    	mov    -0x740(%rbx),%eax
1d88:	4c 8d b3 c0 f8 ff ff 	lea    -0x740(%rbx),%r14
1d8f:	49 c1 ee 03          	shr    $0x3,%r14
1d93:	89 83 80 f7 ff ff    	mov    %eax,-0x880(%rbx)
1d99:	41 c6 86 00 80 ff 7f 	movb   $0xf8,0x7fff8000(%r14)
1da0:	f8 
1da1:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1da9 <_ZN8BalancerILh2EE6updateEv+0x1da9>
1da8:	00 
1da9:	49 c1 ec 03          	shr    $0x3,%r12
1dad:	41 c6 84 24 00 80 ff 	movb   $0xf8,0x7fff8000(%r12)
1db4:	7f f8 
1db6:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1dbe <_ZN8BalancerILh2EE6updateEv+0x1dbe>
1dbd:	00 
1dbe:	48 8d 83 40 ec ff ff 	lea    -0x13c0(%rbx),%rax
1dc5:	48 c1 e8 03          	shr    $0x3,%rax
1dc9:	c6 80 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rax)
1dd0:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1dd8 <_ZN8BalancerILh2EE6updateEv+0x1dd8>
1dd7:	00 
1dd8:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1de0 <_ZN8BalancerILh2EE6updateEv+0x1de0>
1ddf:	00 
1de0:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1de8 <_ZN8BalancerILh2EE6updateEv+0x1de8>
1de7:	00 
    CNL_DEFINE_COMPOUND_ASSIGNMENT_OPERATOR(+=, assign_add_op)
1de8:	48 8d 83 00 ec ff ff 	lea    -0x1400(%rbx),%rax
1def:	48 c1 e8 03          	shr    $0x3,%rax
1df3:	c6 80 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rax)
1dfa:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1e02 <_ZN8BalancerILh2EE6updateEv+0x1e02>
1e01:	00 
1e02:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1e0a <_ZN8BalancerILh2EE6updateEv+0x1e0a>
1e09:	00 
  operator++() _GLIBCXX_NOEXCEPT
1e0a:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1e12 <_ZN8BalancerILh2EE6updateEv+0x1e12>
1e11:	00 
++_M_current;
1e12:	4c 8d a3 c0 fd ff ff 	lea    -0x240(%rbx),%r12
1e19:	4c 89 e0             	mov    %r12,%rax
1e1c:	48 c1 e8 03          	shr    $0x3,%rax
1e20:	80 b8 00 80 ff 7f 00 	cmpb   $0x0,0x7fff8000(%rax)
1e27:	74 08                	je     1e31 <_ZN8BalancerILh2EE6updateEv+0x1e31>
1e29:	4c 89 e7             	mov    %r12,%rdi
1e2c:	e8 00 00 00 00       	callq  1e31 <_ZN8BalancerILh2EE6updateEv+0x1e31>
1e31:	48 8b b3 c0 fd ff ff 	mov    -0x240(%rbx),%rsi
1e38:	4c 8d 6e 0c          	lea    0xc(%rsi),%r13
1e3c:	48 83 fe f4          	cmp    $0xfffffffffffffff4,%rsi
1e40:	72 0f                	jb     1e51 <_ZN8BalancerILh2EE6updateEv+0x1e51>
1e42:	4c 89 ea             	mov    %r13,%rdx
1e45:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 1e4c <_ZN8BalancerILh2EE6updateEv+0x1e4c>
1e4c:	e8 00 00 00 00       	callq  1e51 <_ZN8BalancerILh2EE6updateEv+0x1e51>
1e51:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1e59 <_ZN8BalancerILh2EE6updateEv+0x1e59>
1e58:	00 
1e59:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1e61 <_ZN8BalancerILh2EE6updateEv+0x1e61>
1e60:	00 
1e61:	4c 89 e0             	mov    %r12,%rax
1e64:	48 c1 e8 03          	shr    $0x3,%rax
1e68:	80 b8 00 80 ff 7f 00 	cmpb   $0x0,0x7fff8000(%rax)
1e6f:	74 08                	je     1e79 <_ZN8BalancerILh2EE6updateEv+0x1e79>
1e71:	4c 89 e7             	mov    %r12,%rdi
1e74:	e8 00 00 00 00       	callq  1e79 <_ZN8BalancerILh2EE6updateEv+0x1e79>
1e79:	4c 89 ab c0 fd ff ff 	mov    %r13,-0x240(%rbx)
1e80:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1e88 <_ZN8BalancerILh2EE6updateEv+0x1e88>
1e87:	00 
1e88:	e9 b5 ee ff ff       	jmpq   d42 <_ZN8BalancerILh2EE6updateEv+0xd42>
1e8d:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1e95 <_ZN8BalancerILh2EE6updateEv+0x1e95>
1e94:	00 
1e95:	48 8b 8d b0 e5 ff ff 	mov    -0x1a50(%rbp),%rcx
1e9c:	c6 81 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rcx)
1ea3:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1eab <_ZN8BalancerILh2EE6updateEv+0x1eab>
1eaa:	00 
1eab:	c6 80 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rax)
1eb2:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1eba <_ZN8BalancerILh2EE6updateEv+0x1eba>
1eb9:	00 
    auto budgetLeft = value_t(0);
1eba:	4c 8d ab c0 f7 ff ff 	lea    -0x840(%rbx),%r13
1ec1:	4c 89 e8             	mov    %r13,%rax
1ec4:	48 c1 e8 03          	shr    $0x3,%rax
1ec8:	c6 80 00 80 ff 7f 04 	movb   $0x4,0x7fff8000(%rax)
1ecf:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1ed7 <_ZN8BalancerILh2EE6updateEv+0x1ed7>
1ed6:	00 
1ed7:	8a 80 00 80 ff 7f    	mov    0x7fff8000(%rax),%al
1edd:	84 c0                	test   %al,%al
1edf:	74 0c                	je     1eed <_ZN8BalancerILh2EE6updateEv+0x1eed>
1ee1:	3c 03                	cmp    $0x3,%al
1ee3:	7f 08                	jg     1eed <_ZN8BalancerILh2EE6updateEv+0x1eed>
1ee5:	4c 89 ef             	mov    %r13,%rdi
1ee8:	e8 00 00 00 00       	callq  1eed <_ZN8BalancerILh2EE6updateEv+0x1eed>
    if (available > requestedTotal) {
1eed:	48 83 bd e0 e5 ff ff 	cmpq   $0x0,-0x1a20(%rbp)
1ef4:	00 
    auto budgetLeft = value_t(0);
1ef5:	c7 83 c0 f7 ff ff 00 	movl   $0x0,-0x840(%rbx)
1efc:	00 00 00 
    if (available > requestedTotal) {
1eff:	74 09                	je     1f0a <_ZN8BalancerILh2EE6updateEv+0x1f0a>
1f01:	f6 85 e0 e5 ff ff 07 	testb  $0x7,-0x1a20(%rbp)
1f08:	74 13                	je     1f1d <_ZN8BalancerILh2EE6updateEv+0x1f1d>
1f0a:	48 8b b5 e0 e5 ff ff 	mov    -0x1a20(%rbp),%rsi
1f11:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 1f18 <_ZN8BalancerILh2EE6updateEv+0x1f18>
1f18:	e8 00 00 00 00       	callq  1f1d <_ZN8BalancerILh2EE6updateEv+0x1f1d>
1f1d:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1f25 <_ZN8BalancerILh2EE6updateEv+0x1f25>
1f24:	00 
1f25:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1f2d <_ZN8BalancerILh2EE6updateEv+0x1f2d>
1f2c:	00 
1f2d:	4c 8b a5 e0 e5 ff ff 	mov    -0x1a20(%rbp),%r12
1f34:	49 83 c4 08          	add    $0x8,%r12
1f38:	74 06                	je     1f40 <_ZN8BalancerILh2EE6updateEv+0x1f40>
1f3a:	41 f6 c4 03          	test   $0x3,%r12b
1f3e:	74 0f                	je     1f4f <_ZN8BalancerILh2EE6updateEv+0x1f4f>
1f40:	4c 89 e6             	mov    %r12,%rsi
1f43:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 1f4a <_ZN8BalancerILh2EE6updateEv+0x1f4a>
1f4a:	e8 00 00 00 00       	callq  1f4f <_ZN8BalancerILh2EE6updateEv+0x1f4f>
1f4f:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1f57 <_ZN8BalancerILh2EE6updateEv+0x1f57>
1f56:	00 
1f57:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1f5f <_ZN8BalancerILh2EE6updateEv+0x1f5f>
1f5e:	00 
1f5f:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1f67 <_ZN8BalancerILh2EE6updateEv+0x1f67>
1f66:	00 
    CNL_DEFINE_COMPARISON_OPERATOR(>, greater_than_op)
1f67:	4c 8d b3 40 eb ff ff 	lea    -0x14c0(%rbx),%r14
1f6e:	4c 89 f0             	mov    %r14,%rax
1f71:	48 c1 e8 03          	shr    $0x3,%rax
1f75:	c6 80 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rax)
1f7c:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1f84 <_ZN8BalancerILh2EE6updateEv+0x1f84>
1f83:	00 
        return Operator{}(_impl::to_rep(lhs), _impl::to_rep(rhs));
1f84:	48 8d 83 00 eb ff ff 	lea    -0x1500(%rbx),%rax
1f8b:	48 c1 e8 03          	shr    $0x3,%rax
1f8f:	c6 80 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rax)
1f96:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1f9e <_ZN8BalancerILh2EE6updateEv+0x1f9e>
1f9d:	00 
1f9e:	48 8d 83 80 e6 ff ff 	lea    -0x1980(%rbx),%rax
1fa5:	48 c1 e8 03          	shr    $0x3,%rax
1fa9:	c6 80 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rax)
1fb0:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1fb8 <_ZN8BalancerILh2EE6updateEv+0x1fb8>
1fb7:	00 
1fb8:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1fc0 <_ZN8BalancerILh2EE6updateEv+0x1fc0>
1fbf:	00 
1fc0:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1fc8 <_ZN8BalancerILh2EE6updateEv+0x1fc8>
1fc7:	00 
1fc8:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1fd0 <_ZN8BalancerILh2EE6updateEv+0x1fd0>
1fcf:	00 
1fd0:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1fd8 <_ZN8BalancerILh2EE6updateEv+0x1fd8>
1fd7:	00 
1fd8:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1fe0 <_ZN8BalancerILh2EE6updateEv+0x1fe0>
1fdf:	00 
1fe0:	c6 80 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rax)
1fe7:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 1fef <_ZN8BalancerILh2EE6updateEv+0x1fef>
1fee:	00 
1fef:	48 8d 83 c0 e6 ff ff 	lea    -0x1940(%rbx),%rax
1ff6:	48 89 85 d0 e5 ff ff 	mov    %rax,-0x1a30(%rbp)
1ffd:	48 c1 e8 03          	shr    $0x3,%rax
2001:	c6 80 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rax)
2008:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2010 <_ZN8BalancerILh2EE6updateEv+0x2010>
200f:	00 
2010:	4d 85 e4             	test   %r12,%r12
2013:	74 06                	je     201b <_ZN8BalancerILh2EE6updateEv+0x201b>
2015:	41 f6 c4 03          	test   $0x3,%r12b
2019:	74 0f                	je     202a <_ZN8BalancerILh2EE6updateEv+0x202a>
201b:	4c 89 e6             	mov    %r12,%rsi
201e:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 2025 <_ZN8BalancerILh2EE6updateEv+0x2025>
2025:	e8 00 00 00 00       	callq  202a <_ZN8BalancerILh2EE6updateEv+0x202a>
202a:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2032 <_ZN8BalancerILh2EE6updateEv+0x2032>
2031:	00 
{ return static_cast<_Tp&&>(__t); }
2032:	4d 85 e4             	test   %r12,%r12
2035:	74 06                	je     203d <_ZN8BalancerILh2EE6updateEv+0x203d>
2037:	41 f6 c4 03          	test   $0x3,%r12b
203b:	74 0f                	je     204c <_ZN8BalancerILh2EE6updateEv+0x204c>
203d:	4c 89 e6             	mov    %r12,%rsi
2040:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 2047 <_ZN8BalancerILh2EE6updateEv+0x2047>
2047:	e8 00 00 00 00       	callq  204c <_ZN8BalancerILh2EE6updateEv+0x204c>
204c:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2054 <_ZN8BalancerILh2EE6updateEv+0x2054>
2053:	00 
2054:	4d 85 e4             	test   %r12,%r12
2057:	74 06                	je     205f <_ZN8BalancerILh2EE6updateEv+0x205f>
2059:	41 f6 c4 03          	test   $0x3,%r12b
205d:	74 0f                	je     206e <_ZN8BalancerILh2EE6updateEv+0x206e>
205f:	4c 89 e6             	mov    %r12,%rsi
2062:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 2069 <_ZN8BalancerILh2EE6updateEv+0x2069>
2069:	e8 00 00 00 00       	callq  206e <_ZN8BalancerILh2EE6updateEv+0x206e>
206e:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2076 <_ZN8BalancerILh2EE6updateEv+0x2076>
2075:	00 
2076:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 207e <_ZN8BalancerILh2EE6updateEv+0x207e>
207d:	00 
207e:	4d 85 e4             	test   %r12,%r12
2081:	74 06                	je     2089 <_ZN8BalancerILh2EE6updateEv+0x2089>
2083:	41 f6 c4 03          	test   $0x3,%r12b
2087:	74 0f                	je     2098 <_ZN8BalancerILh2EE6updateEv+0x2098>
2089:	4c 89 e6             	mov    %r12,%rsi
208c:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 2093 <_ZN8BalancerILh2EE6updateEv+0x2093>
2093:	e8 00 00 00 00       	callq  2098 <_ZN8BalancerILh2EE6updateEv+0x2098>
2098:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 20a0 <_ZN8BalancerILh2EE6updateEv+0x20a0>
209f:	00 
20a0:	48 8d 83 c0 e6 ff ff 	lea    -0x1940(%rbx),%rax
20a7:	48 c1 e8 03          	shr    $0x3,%rax
20ab:	c6 80 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rax)
20b2:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 20ba <_ZN8BalancerILh2EE6updateEv+0x20ba>
20b9:	00 
20ba:	48 8d 83 00 e7 ff ff 	lea    -0x1900(%rbx),%rax
20c1:	48 c1 e8 03          	shr    $0x3,%rax
20c5:	c6 80 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rax)
20cc:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 20d4 <_ZN8BalancerILh2EE6updateEv+0x20d4>
20d3:	00 
        return Operator()(_impl::to_rep(lhs), _impl::to_rep(rhs));
20d4:	48 8d 83 40 e7 ff ff 	lea    -0x18c0(%rbx),%rax
20db:	48 c1 e8 03          	shr    $0x3,%rax
20df:	c6 80 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rax)
20e6:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 20ee <_ZN8BalancerILh2EE6updateEv+0x20ee>
20ed:	00 
20ee:	48 8d 83 c0 ea ff ff 	lea    -0x1540(%rbx),%rax
20f5:	48 c1 e8 03          	shr    $0x3,%rax
20f9:	c6 80 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rax)
2100:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2108 <_ZN8BalancerILh2EE6updateEv+0x2108>
2107:	00 
2108:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2110 <_ZN8BalancerILh2EE6updateEv+0x2110>
210f:	00 
2110:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2118 <_ZN8BalancerILh2EE6updateEv+0x2118>
2117:	00 
2118:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2120 <_ZN8BalancerILh2EE6updateEv+0x2120>
211f:	00 
2120:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2128 <_ZN8BalancerILh2EE6updateEv+0x2128>
2127:	00 
2128:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2130 <_ZN8BalancerILh2EE6updateEv+0x2130>
212f:	00 
2130:	c6 80 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rax)
2137:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 213f <_ZN8BalancerILh2EE6updateEv+0x213f>
213e:	00 
213f:	48 8d 83 80 ea ff ff 	lea    -0x1580(%rbx),%rax
2146:	48 89 85 d0 e5 ff ff 	mov    %rax,-0x1a30(%rbp)
214d:	48 c1 e8 03          	shr    $0x3,%rax
2151:	c6 80 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rax)
2158:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2160 <_ZN8BalancerILh2EE6updateEv+0x2160>
215f:	00 
2160:	4d 85 e4             	test   %r12,%r12
2163:	74 06                	je     216b <_ZN8BalancerILh2EE6updateEv+0x216b>
2165:	41 f6 c4 03          	test   $0x3,%r12b
2169:	74 0f                	je     217a <_ZN8BalancerILh2EE6updateEv+0x217a>
216b:	4c 89 e6             	mov    %r12,%rsi
216e:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 2175 <_ZN8BalancerILh2EE6updateEv+0x2175>
2175:	e8 00 00 00 00       	callq  217a <_ZN8BalancerILh2EE6updateEv+0x217a>
217a:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2182 <_ZN8BalancerILh2EE6updateEv+0x2182>
2181:	00 
2182:	4d 85 e4             	test   %r12,%r12
2185:	74 06                	je     218d <_ZN8BalancerILh2EE6updateEv+0x218d>
2187:	41 f6 c4 03          	test   $0x3,%r12b
218b:	74 0f                	je     219c <_ZN8BalancerILh2EE6updateEv+0x219c>
218d:	4c 89 e6             	mov    %r12,%rsi
2190:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 2197 <_ZN8BalancerILh2EE6updateEv+0x2197>
2197:	e8 00 00 00 00       	callq  219c <_ZN8BalancerILh2EE6updateEv+0x219c>
219c:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 21a4 <_ZN8BalancerILh2EE6updateEv+0x21a4>
21a3:	00 
21a4:	4d 85 e4             	test   %r12,%r12
21a7:	74 06                	je     21af <_ZN8BalancerILh2EE6updateEv+0x21af>
21a9:	41 f6 c4 03          	test   $0x3,%r12b
21ad:	74 0f                	je     21be <_ZN8BalancerILh2EE6updateEv+0x21be>
21af:	4c 89 e6             	mov    %r12,%rsi
21b2:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 21b9 <_ZN8BalancerILh2EE6updateEv+0x21b9>
21b9:	e8 00 00 00 00       	callq  21be <_ZN8BalancerILh2EE6updateEv+0x21be>
21be:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 21c6 <_ZN8BalancerILh2EE6updateEv+0x21c6>
21c5:	00 
21c6:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 21ce <_ZN8BalancerILh2EE6updateEv+0x21ce>
21cd:	00 
21ce:	4d 85 e4             	test   %r12,%r12
21d1:	74 06                	je     21d9 <_ZN8BalancerILh2EE6updateEv+0x21d9>
21d3:	41 f6 c4 03          	test   $0x3,%r12b
21d7:	74 0f                	je     21e8 <_ZN8BalancerILh2EE6updateEv+0x21e8>
21d9:	4c 89 e6             	mov    %r12,%rsi
21dc:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 21e3 <_ZN8BalancerILh2EE6updateEv+0x21e3>
21e3:	e8 00 00 00 00       	callq  21e8 <_ZN8BalancerILh2EE6updateEv+0x21e8>
21e8:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 21f0 <_ZN8BalancerILh2EE6updateEv+0x21f0>
21ef:	00 
21f0:	48 8d 83 80 ea ff ff 	lea    -0x1580(%rbx),%rax
21f7:	48 c1 e8 03          	shr    $0x3,%rax
21fb:	c6 80 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rax)
2202:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 220a <_ZN8BalancerILh2EE6updateEv+0x220a>
2209:	00 
220a:	48 8d 83 40 ea ff ff 	lea    -0x15c0(%rbx),%rax
2211:	48 c1 e8 03          	shr    $0x3,%rax
2215:	c6 80 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rax)
221c:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2224 <_ZN8BalancerILh2EE6updateEv+0x2224>
2223:	00 
        return Operator()(_impl::to_rep(lhs), _impl::to_rep(rhs));
2224:	48 8d 83 00 ea ff ff 	lea    -0x1600(%rbx),%rax
222b:	48 c1 e8 03          	shr    $0x3,%rax
222f:	c6 80 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rax)
2236:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 223e <_ZN8BalancerILh2EE6updateEv+0x223e>
223d:	00 
223e:	48 8d 83 80 e7 ff ff 	lea    -0x1880(%rbx),%rax
2245:	48 c1 e8 03          	shr    $0x3,%rax
2249:	c6 80 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rax)
2250:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2258 <_ZN8BalancerILh2EE6updateEv+0x2258>
2257:	00 
2258:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2260 <_ZN8BalancerILh2EE6updateEv+0x2260>
225f:	00 
2260:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2268 <_ZN8BalancerILh2EE6updateEv+0x2268>
2267:	00 
2268:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2270 <_ZN8BalancerILh2EE6updateEv+0x2270>
226f:	00 
2270:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2278 <_ZN8BalancerILh2EE6updateEv+0x2278>
2277:	00 
2278:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2280 <_ZN8BalancerILh2EE6updateEv+0x2280>
227f:	00 
2280:	c6 80 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rax)
2287:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 228f <_ZN8BalancerILh2EE6updateEv+0x228f>
228e:	00 
228f:	48 8d 83 c0 e7 ff ff 	lea    -0x1840(%rbx),%rax
2296:	48 89 85 d0 e5 ff ff 	mov    %rax,-0x1a30(%rbp)
229d:	48 c1 e8 03          	shr    $0x3,%rax
22a1:	c6 80 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rax)
22a8:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 22b0 <_ZN8BalancerILh2EE6updateEv+0x22b0>
22af:	00 
22b0:	4d 85 e4             	test   %r12,%r12
22b3:	74 06                	je     22bb <_ZN8BalancerILh2EE6updateEv+0x22bb>
22b5:	41 f6 c4 03          	test   $0x3,%r12b
22b9:	74 0f                	je     22ca <_ZN8BalancerILh2EE6updateEv+0x22ca>
22bb:	4c 89 e6             	mov    %r12,%rsi
22be:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 22c5 <_ZN8BalancerILh2EE6updateEv+0x22c5>
22c5:	e8 00 00 00 00       	callq  22ca <_ZN8BalancerILh2EE6updateEv+0x22ca>
22ca:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 22d2 <_ZN8BalancerILh2EE6updateEv+0x22d2>
22d1:	00 
22d2:	4d 85 e4             	test   %r12,%r12
22d5:	74 06                	je     22dd <_ZN8BalancerILh2EE6updateEv+0x22dd>
22d7:	41 f6 c4 03          	test   $0x3,%r12b
22db:	74 0f                	je     22ec <_ZN8BalancerILh2EE6updateEv+0x22ec>
22dd:	4c 89 e6             	mov    %r12,%rsi
22e0:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 22e7 <_ZN8BalancerILh2EE6updateEv+0x22e7>
22e7:	e8 00 00 00 00       	callq  22ec <_ZN8BalancerILh2EE6updateEv+0x22ec>
22ec:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 22f4 <_ZN8BalancerILh2EE6updateEv+0x22f4>
22f3:	00 
22f4:	4d 85 e4             	test   %r12,%r12
22f7:	74 06                	je     22ff <_ZN8BalancerILh2EE6updateEv+0x22ff>
22f9:	41 f6 c4 03          	test   $0x3,%r12b
22fd:	74 0f                	je     230e <_ZN8BalancerILh2EE6updateEv+0x230e>
22ff:	4c 89 e6             	mov    %r12,%rsi
2302:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 2309 <_ZN8BalancerILh2EE6updateEv+0x2309>
2309:	e8 00 00 00 00       	callq  230e <_ZN8BalancerILh2EE6updateEv+0x230e>
230e:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2316 <_ZN8BalancerILh2EE6updateEv+0x2316>
2315:	00 
2316:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 231e <_ZN8BalancerILh2EE6updateEv+0x231e>
231d:	00 
231e:	4d 85 e4             	test   %r12,%r12
2321:	74 06                	je     2329 <_ZN8BalancerILh2EE6updateEv+0x2329>
2323:	41 f6 c4 03          	test   $0x3,%r12b
2327:	74 0f                	je     2338 <_ZN8BalancerILh2EE6updateEv+0x2338>
2329:	4c 89 e6             	mov    %r12,%rsi
232c:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 2333 <_ZN8BalancerILh2EE6updateEv+0x2333>
2333:	e8 00 00 00 00       	callq  2338 <_ZN8BalancerILh2EE6updateEv+0x2338>
2338:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2340 <_ZN8BalancerILh2EE6updateEv+0x2340>
233f:	00 
2340:	48 8d 83 c0 e7 ff ff 	lea    -0x1840(%rbx),%rax
2347:	48 c1 e8 03          	shr    $0x3,%rax
234b:	c6 80 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rax)
2352:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 235a <_ZN8BalancerILh2EE6updateEv+0x235a>
2359:	00 
235a:	48 8d 83 00 e8 ff ff 	lea    -0x1800(%rbx),%rax
2361:	48 c1 e8 03          	shr    $0x3,%rax
2365:	c6 80 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rax)
236c:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2374 <_ZN8BalancerILh2EE6updateEv+0x2374>
2373:	00 
        return Operator()(_impl::to_rep(lhs), _impl::to_rep(rhs));
2374:	48 8d 83 40 e8 ff ff 	lea    -0x17c0(%rbx),%rax
237b:	48 c1 e8 03          	shr    $0x3,%rax
237f:	c6 80 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rax)
2386:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 238e <_ZN8BalancerILh2EE6updateEv+0x238e>
238d:	00 
238e:	48 8d 83 c0 e9 ff ff 	lea    -0x1640(%rbx),%rax
2395:	48 c1 e8 03          	shr    $0x3,%rax
2399:	c6 80 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rax)
23a0:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 23a8 <_ZN8BalancerILh2EE6updateEv+0x23a8>
23a7:	00 
23a8:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 23b0 <_ZN8BalancerILh2EE6updateEv+0x23b0>
23af:	00 
23b0:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 23b8 <_ZN8BalancerILh2EE6updateEv+0x23b8>
23b7:	00 
23b8:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 23c0 <_ZN8BalancerILh2EE6updateEv+0x23c0>
23bf:	00 
23c0:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 23c8 <_ZN8BalancerILh2EE6updateEv+0x23c8>
23c7:	00 
23c8:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 23d0 <_ZN8BalancerILh2EE6updateEv+0x23d0>
23cf:	00 
23d0:	c6 80 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rax)
23d7:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 23df <_ZN8BalancerILh2EE6updateEv+0x23df>
23de:	00 
23df:	48 8d 83 80 e9 ff ff 	lea    -0x1680(%rbx),%rax
23e6:	48 89 85 d0 e5 ff ff 	mov    %rax,-0x1a30(%rbp)
23ed:	48 c1 e8 03          	shr    $0x3,%rax
23f1:	c6 80 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rax)
23f8:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2400 <_ZN8BalancerILh2EE6updateEv+0x2400>
23ff:	00 
2400:	4d 85 e4             	test   %r12,%r12
2403:	74 06                	je     240b <_ZN8BalancerILh2EE6updateEv+0x240b>
2405:	41 f6 c4 03          	test   $0x3,%r12b
2409:	74 0f                	je     241a <_ZN8BalancerILh2EE6updateEv+0x241a>
240b:	4c 89 e6             	mov    %r12,%rsi
240e:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 2415 <_ZN8BalancerILh2EE6updateEv+0x2415>
2415:	e8 00 00 00 00       	callq  241a <_ZN8BalancerILh2EE6updateEv+0x241a>
241a:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2422 <_ZN8BalancerILh2EE6updateEv+0x2422>
2421:	00 
2422:	4d 85 e4             	test   %r12,%r12
2425:	74 06                	je     242d <_ZN8BalancerILh2EE6updateEv+0x242d>
2427:	41 f6 c4 03          	test   $0x3,%r12b
242b:	74 0f                	je     243c <_ZN8BalancerILh2EE6updateEv+0x243c>
242d:	4c 89 e6             	mov    %r12,%rsi
2430:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 2437 <_ZN8BalancerILh2EE6updateEv+0x2437>
2437:	e8 00 00 00 00       	callq  243c <_ZN8BalancerILh2EE6updateEv+0x243c>
243c:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2444 <_ZN8BalancerILh2EE6updateEv+0x2444>
2443:	00 
2444:	4d 85 e4             	test   %r12,%r12
2447:	74 06                	je     244f <_ZN8BalancerILh2EE6updateEv+0x244f>
2449:	41 f6 c4 03          	test   $0x3,%r12b
244d:	74 0f                	je     245e <_ZN8BalancerILh2EE6updateEv+0x245e>
244f:	4c 89 e6             	mov    %r12,%rsi
2452:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 2459 <_ZN8BalancerILh2EE6updateEv+0x2459>
2459:	e8 00 00 00 00       	callq  245e <_ZN8BalancerILh2EE6updateEv+0x245e>
245e:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2466 <_ZN8BalancerILh2EE6updateEv+0x2466>
2465:	00 
2466:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 246e <_ZN8BalancerILh2EE6updateEv+0x246e>
246d:	00 
246e:	4d 85 e4             	test   %r12,%r12
2471:	74 06                	je     2479 <_ZN8BalancerILh2EE6updateEv+0x2479>
2473:	41 f6 c4 03          	test   $0x3,%r12b
2477:	74 0f                	je     2488 <_ZN8BalancerILh2EE6updateEv+0x2488>
2479:	4c 89 e6             	mov    %r12,%rsi
247c:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 2483 <_ZN8BalancerILh2EE6updateEv+0x2483>
2483:	e8 00 00 00 00       	callq  2488 <_ZN8BalancerILh2EE6updateEv+0x2488>
2488:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2490 <_ZN8BalancerILh2EE6updateEv+0x2490>
248f:	00 
2490:	48 8d 83 80 e9 ff ff 	lea    -0x1680(%rbx),%rax
2497:	48 c1 e8 03          	shr    $0x3,%rax
249b:	c6 80 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rax)
24a2:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 24aa <_ZN8BalancerILh2EE6updateEv+0x24aa>
24a9:	00 
24aa:	48 8d 83 40 e9 ff ff 	lea    -0x16c0(%rbx),%rax
24b1:	48 c1 e8 03          	shr    $0x3,%rax
24b5:	c6 80 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rax)
24bc:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 24c4 <_ZN8BalancerILh2EE6updateEv+0x24c4>
24c3:	00 
        return Operator()(_impl::to_rep(lhs), _impl::to_rep(rhs));
24c4:	48 8d 83 00 e9 ff ff 	lea    -0x1700(%rbx),%rax
24cb:	48 c1 e8 03          	shr    $0x3,%rax
24cf:	c6 80 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rax)
24d6:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 24de <_ZN8BalancerILh2EE6updateEv+0x24de>
24dd:	00 
24de:	48 8d 83 80 e8 ff ff 	lea    -0x1780(%rbx),%rax
24e5:	48 c1 e8 03          	shr    $0x3,%rax
24e9:	c6 80 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rax)
24f0:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 24f8 <_ZN8BalancerILh2EE6updateEv+0x24f8>
24f7:	00 
24f8:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2500 <_ZN8BalancerILh2EE6updateEv+0x2500>
24ff:	00 
2500:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2508 <_ZN8BalancerILh2EE6updateEv+0x2508>
2507:	00 
2508:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2510 <_ZN8BalancerILh2EE6updateEv+0x2510>
250f:	00 
2510:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2518 <_ZN8BalancerILh2EE6updateEv+0x2518>
2517:	00 
2518:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2520 <_ZN8BalancerILh2EE6updateEv+0x2520>
251f:	00 
2520:	c6 80 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rax)
2527:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 252f <_ZN8BalancerILh2EE6updateEv+0x252f>
252e:	00 
252f:	48 8d 83 c0 e8 ff ff 	lea    -0x1740(%rbx),%rax
2536:	48 89 85 d0 e5 ff ff 	mov    %rax,-0x1a30(%rbp)
253d:	48 c1 e8 03          	shr    $0x3,%rax
2541:	c6 80 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rax)
2548:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2550 <_ZN8BalancerILh2EE6updateEv+0x2550>
254f:	00 
2550:	4d 85 e4             	test   %r12,%r12
2553:	74 06                	je     255b <_ZN8BalancerILh2EE6updateEv+0x255b>
2555:	41 f6 c4 03          	test   $0x3,%r12b
2559:	74 0f                	je     256a <_ZN8BalancerILh2EE6updateEv+0x256a>
255b:	4c 89 e6             	mov    %r12,%rsi
255e:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 2565 <_ZN8BalancerILh2EE6updateEv+0x2565>
2565:	e8 00 00 00 00       	callq  256a <_ZN8BalancerILh2EE6updateEv+0x256a>
256a:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2572 <_ZN8BalancerILh2EE6updateEv+0x2572>
2571:	00 
2572:	4d 85 e4             	test   %r12,%r12
2575:	74 06                	je     257d <_ZN8BalancerILh2EE6updateEv+0x257d>
2577:	41 f6 c4 03          	test   $0x3,%r12b
257b:	74 0f                	je     258c <_ZN8BalancerILh2EE6updateEv+0x258c>
257d:	4c 89 e6             	mov    %r12,%rsi
2580:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 2587 <_ZN8BalancerILh2EE6updateEv+0x2587>
2587:	e8 00 00 00 00       	callq  258c <_ZN8BalancerILh2EE6updateEv+0x258c>
258c:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2594 <_ZN8BalancerILh2EE6updateEv+0x2594>
2593:	00 
2594:	4d 85 e4             	test   %r12,%r12
2597:	74 06                	je     259f <_ZN8BalancerILh2EE6updateEv+0x259f>
2599:	41 f6 c4 03          	test   $0x3,%r12b
259d:	74 0f                	je     25ae <_ZN8BalancerILh2EE6updateEv+0x25ae>
259f:	4c 89 e6             	mov    %r12,%rsi
25a2:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 25a9 <_ZN8BalancerILh2EE6updateEv+0x25a9>
25a9:	e8 00 00 00 00       	callq  25ae <_ZN8BalancerILh2EE6updateEv+0x25ae>
25ae:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 25b6 <_ZN8BalancerILh2EE6updateEv+0x25b6>
25b5:	00 
25b6:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 25be <_ZN8BalancerILh2EE6updateEv+0x25be>
25bd:	00 
25be:	4d 85 e4             	test   %r12,%r12
25c1:	74 06                	je     25c9 <_ZN8BalancerILh2EE6updateEv+0x25c9>
25c3:	41 f6 c4 03          	test   $0x3,%r12b
25c7:	74 0f                	je     25d8 <_ZN8BalancerILh2EE6updateEv+0x25d8>
25c9:	4c 89 e6             	mov    %r12,%rsi
25cc:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 25d3 <_ZN8BalancerILh2EE6updateEv+0x25d3>
25d3:	e8 00 00 00 00       	callq  25d8 <_ZN8BalancerILh2EE6updateEv+0x25d8>
25d8:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 25e0 <_ZN8BalancerILh2EE6updateEv+0x25e0>
25df:	00 
25e0:	48 8d 83 c0 e8 ff ff 	lea    -0x1740(%rbx),%rax
25e7:	48 c1 e8 03          	shr    $0x3,%rax
25eb:	c6 80 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rax)
25f2:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 25fa <_ZN8BalancerILh2EE6updateEv+0x25fa>
25f9:	00 
            return lhs>rhs;
25fa:	4d 85 e4             	test   %r12,%r12
25fd:	74 06                	je     2605 <_ZN8BalancerILh2EE6updateEv+0x2605>
25ff:	41 f6 c4 03          	test   $0x3,%r12b
2603:	74 0f                	je     2614 <_ZN8BalancerILh2EE6updateEv+0x2614>
2605:	4c 89 e6             	mov    %r12,%rsi
2608:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 260f <_ZN8BalancerILh2EE6updateEv+0x260f>
260f:	e8 00 00 00 00       	callq  2614 <_ZN8BalancerILh2EE6updateEv+0x2614>
2614:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 261c <_ZN8BalancerILh2EE6updateEv+0x261c>
261b:	00 
261c:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2624 <_ZN8BalancerILh2EE6updateEv+0x2624>
2623:	00 
2624:	4c 89 e0             	mov    %r12,%rax
2627:	48 c1 e8 03          	shr    $0x3,%rax
262b:	8a 90 00 80 ff 7f    	mov    0x7fff8000(%rax),%dl
2631:	4c 89 e0             	mov    %r12,%rax
2634:	83 e0 07             	and    $0x7,%eax
2637:	83 c0 03             	add    $0x3,%eax
263a:	38 d0                	cmp    %dl,%al
263c:	7c 0c                	jl     264a <_ZN8BalancerILh2EE6updateEv+0x264a>
263e:	84 d2                	test   %dl,%dl
2640:	74 08                	je     264a <_ZN8BalancerILh2EE6updateEv+0x264a>
2642:	4c 89 e7             	mov    %r12,%rdi
2645:	e8 00 00 00 00       	callq  264a <_ZN8BalancerILh2EE6updateEv+0x264a>
264a:	48 8b 85 e0 e5 ff ff 	mov    -0x1a20(%rbp),%rax
2651:	8b 48 08             	mov    0x8(%rax),%ecx
2654:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 265c <_ZN8BalancerILh2EE6updateEv+0x265c>
265b:	00 
265c:	48 8d 83 80 f7 ff ff 	lea    -0x880(%rbx),%rax
2663:	48 c1 e8 03          	shr    $0x3,%rax
2667:	8a 80 00 80 ff 7f    	mov    0x7fff8000(%rax),%al
266d:	84 c0                	test   %al,%al
266f:	74 10                	je     2681 <_ZN8BalancerILh2EE6updateEv+0x2681>
2671:	3c 03                	cmp    $0x3,%al
2673:	7f 0c                	jg     2681 <_ZN8BalancerILh2EE6updateEv+0x2681>
2675:	48 8b bd c8 e5 ff ff 	mov    -0x1a38(%rbp),%rdi
267c:	e8 00 00 00 00       	callq  2681 <_ZN8BalancerILh2EE6updateEv+0x2681>
2681:	8b 93 80 f7 ff ff    	mov    -0x880(%rbx),%edx
2687:	48 8d 83 00 e9 ff ff 	lea    -0x1700(%rbx),%rax
268e:	48 c1 e8 03          	shr    $0x3,%rax
2692:	c6 80 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rax)
2699:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 26a1 <_ZN8BalancerILh2EE6updateEv+0x26a1>
26a0:	00 
26a1:	48 8d 83 40 e9 ff ff 	lea    -0x16c0(%rbx),%rax
26a8:	48 c1 e8 03          	shr    $0x3,%rax
26ac:	c6 80 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rax)
26b3:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 26bb <_ZN8BalancerILh2EE6updateEv+0x26bb>
26ba:	00 
26bb:	48 8d 83 40 e8 ff ff 	lea    -0x17c0(%rbx),%rax
26c2:	48 c1 e8 03          	shr    $0x3,%rax
26c6:	c6 80 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rax)
26cd:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 26d5 <_ZN8BalancerILh2EE6updateEv+0x26d5>
26d4:	00 
26d5:	48 8d 83 00 e8 ff ff 	lea    -0x1800(%rbx),%rax
26dc:	48 c1 e8 03          	shr    $0x3,%rax
26e0:	c6 80 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rax)
26e7:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 26ef <_ZN8BalancerILh2EE6updateEv+0x26ef>
26ee:	00 
26ef:	48 8d 83 00 ea ff ff 	lea    -0x1600(%rbx),%rax
26f6:	48 c1 e8 03          	shr    $0x3,%rax
26fa:	c6 80 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rax)
2701:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2709 <_ZN8BalancerILh2EE6updateEv+0x2709>
2708:	00 
2709:	48 8d 83 40 ea ff ff 	lea    -0x15c0(%rbx),%rax
2710:	48 c1 e8 03          	shr    $0x3,%rax
2714:	c6 80 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rax)
271b:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2723 <_ZN8BalancerILh2EE6updateEv+0x2723>
2722:	00 
2723:	48 8d 83 40 e7 ff ff 	lea    -0x18c0(%rbx),%rax
272a:	48 c1 e8 03          	shr    $0x3,%rax
272e:	c6 80 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rax)
2735:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 273d <_ZN8BalancerILh2EE6updateEv+0x273d>
273c:	00 
273d:	48 8d 83 00 e7 ff ff 	lea    -0x1900(%rbx),%rax
2744:	48 c1 e8 03          	shr    $0x3,%rax
2748:	c6 80 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rax)
274f:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2757 <_ZN8BalancerILh2EE6updateEv+0x2757>
2756:	00 
2757:	48 8d 83 00 eb ff ff 	lea    -0x1500(%rbx),%rax
275e:	48 c1 e8 03          	shr    $0x3,%rax
2762:	c6 80 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rax)
2769:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2771 <_ZN8BalancerILh2EE6updateEv+0x2771>
2770:	00 
2771:	49 c1 ee 03          	shr    $0x3,%r14
2775:	41 c6 86 00 80 ff 7f 	movb   $0xf8,0x7fff8000(%r14)
277c:	f8 
277d:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2785 <_ZN8BalancerILh2EE6updateEv+0x2785>
2784:	00 
2785:	39 d1                	cmp    %edx,%ecx
2787:	0f 8e 0f 02 00 00    	jle    299c <_ZN8BalancerILh2EE6updateEv+0x299c>
278d:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2795 <_ZN8BalancerILh2EE6updateEv+0x2795>
2794:	00 
        budgetLeft = available - requestedTotal;
2795:	48 8d 83 00 f8 ff ff 	lea    -0x800(%rbx),%rax
279c:	48 c1 e8 03          	shr    $0x3,%rax
27a0:	c6 80 00 80 ff 7f 04 	movb   $0x4,0x7fff8000(%rax)
27a7:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 27af <_ZN8BalancerILh2EE6updateEv+0x27af>
27ae:	00 
27af:	48 83 bd e0 e5 ff ff 	cmpq   $0x0,-0x1a20(%rbp)
27b6:	00 
27b7:	74 09                	je     27c2 <_ZN8BalancerILh2EE6updateEv+0x27c2>
27b9:	f6 85 e0 e5 ff ff 07 	testb  $0x7,-0x1a20(%rbp)
27c0:	74 13                	je     27d5 <_ZN8BalancerILh2EE6updateEv+0x27d5>
27c2:	48 8b b5 e0 e5 ff ff 	mov    -0x1a20(%rbp),%rsi
27c9:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 27d0 <_ZN8BalancerILh2EE6updateEv+0x27d0>
27d0:	e8 00 00 00 00       	callq  27d5 <_ZN8BalancerILh2EE6updateEv+0x27d5>
27d5:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 27dd <_ZN8BalancerILh2EE6updateEv+0x27dd>
27dc:	00 
27dd:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 27e5 <_ZN8BalancerILh2EE6updateEv+0x27e5>
27e4:	00 
27e5:	4d 85 e4             	test   %r12,%r12
27e8:	74 06                	je     27f0 <_ZN8BalancerILh2EE6updateEv+0x27f0>
27ea:	41 f6 c4 03          	test   $0x3,%r12b
27ee:	74 0f                	je     27ff <_ZN8BalancerILh2EE6updateEv+0x27ff>
27f0:	4c 89 e6             	mov    %r12,%rsi
27f3:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 27fa <_ZN8BalancerILh2EE6updateEv+0x27fa>
27fa:	e8 00 00 00 00       	callq  27ff <_ZN8BalancerILh2EE6updateEv+0x27ff>
27ff:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2807 <_ZN8BalancerILh2EE6updateEv+0x2807>
2806:	00 
2807:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 280f <_ZN8BalancerILh2EE6updateEv+0x280f>
280e:	00 
280f:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2817 <_ZN8BalancerILh2EE6updateEv+0x2817>
2816:	00 
    CNL_DEFINE_BINARY_OPERATOR(-, subtract_op)
2817:	4c 8d b3 80 eb ff ff 	lea    -0x1480(%rbx),%r14
281e:	49 c1 ee 03          	shr    $0x3,%r14
2822:	41 c6 86 00 80 ff 7f 	movb   $0x1,0x7fff8000(%r14)
2829:	01 
282a:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2832 <_ZN8BalancerILh2EE6updateEv+0x2832>
2831:	00 
2832:	48 8d b3 80 f7 ff ff 	lea    -0x880(%rbx),%rsi
2839:	4c 89 e7             	mov    %r12,%rdi
283c:	e8 00 00 00 00       	callq  2841 <_ZN8BalancerILh2EE6updateEv+0x2841>
2841:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2849 <_ZN8BalancerILh2EE6updateEv+0x2849>
2848:	00 
2849:	41 c6 86 00 80 ff 7f 	movb   $0xf8,0x7fff8000(%r14)
2850:	f8 
2851:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2859 <_ZN8BalancerILh2EE6updateEv+0x2859>
2858:	00 
2859:	4c 8d b3 00 f8 ff ff 	lea    -0x800(%rbx),%r14
2860:	4c 89 f2             	mov    %r14,%rdx
2863:	48 c1 ea 03          	shr    $0x3,%rdx
2867:	8a 92 00 80 ff 7f    	mov    0x7fff8000(%rdx),%dl
286d:	84 d2                	test   %dl,%dl
286f:	74 0d                	je     287e <_ZN8BalancerILh2EE6updateEv+0x287e>
2871:	80 fa 03             	cmp    $0x3,%dl
2874:	7f 08                	jg     287e <_ZN8BalancerILh2EE6updateEv+0x287e>
2876:	4c 89 f7             	mov    %r14,%rdi
2879:	e8 00 00 00 00       	callq  287e <_ZN8BalancerILh2EE6updateEv+0x287e>
287e:	89 83 00 f8 ff ff    	mov    %eax,-0x800(%rbx)
2884:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 288c <_ZN8BalancerILh2EE6updateEv+0x288c>
288b:	00 
288c:	4c 89 f6             	mov    %r14,%rsi
288f:	4c 89 ef             	mov    %r13,%rdi
2892:	e8 00 00 00 00       	callq  2897 <_ZN8BalancerILh2EE6updateEv+0x2897>
2897:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 289f <_ZN8BalancerILh2EE6updateEv+0x289f>
289e:	00 
289f:	49 c1 ee 03          	shr    $0x3,%r14
28a3:	41 c6 86 00 80 ff 7f 	movb   $0xf8,0x7fff8000(%r14)
28aa:	f8 
28ab:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 28b3 <_ZN8BalancerILh2EE6updateEv+0x28b3>
28b2:	00 
        requestedTotal = available;
28b3:	48 83 bd e0 e5 ff ff 	cmpq   $0x0,-0x1a20(%rbp)
28ba:	00 
28bb:	74 09                	je     28c6 <_ZN8BalancerILh2EE6updateEv+0x28c6>
28bd:	f6 85 e0 e5 ff ff 07 	testb  $0x7,-0x1a20(%rbp)
28c4:	74 13                	je     28d9 <_ZN8BalancerILh2EE6updateEv+0x28d9>
28c6:	48 8b b5 e0 e5 ff ff 	mov    -0x1a20(%rbp),%rsi
28cd:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 28d4 <_ZN8BalancerILh2EE6updateEv+0x28d4>
28d4:	e8 00 00 00 00       	callq  28d9 <_ZN8BalancerILh2EE6updateEv+0x28d9>
28d9:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 28e1 <_ZN8BalancerILh2EE6updateEv+0x28e1>
28e0:	00 
28e1:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 28e9 <_ZN8BalancerILh2EE6updateEv+0x28e9>
28e8:	00 
28e9:	4d 85 e4             	test   %r12,%r12
28ec:	74 06                	je     28f4 <_ZN8BalancerILh2EE6updateEv+0x28f4>
28ee:	41 f6 c4 03          	test   $0x3,%r12b
28f2:	74 0f                	je     2903 <_ZN8BalancerILh2EE6updateEv+0x2903>
28f4:	4c 89 e6             	mov    %r12,%rsi
28f7:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 28fe <_ZN8BalancerILh2EE6updateEv+0x28fe>
28fe:	e8 00 00 00 00       	callq  2903 <_ZN8BalancerILh2EE6updateEv+0x2903>
2903:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 290b <_ZN8BalancerILh2EE6updateEv+0x290b>
290a:	00 
290b:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2913 <_ZN8BalancerILh2EE6updateEv+0x2913>
2912:	00 
2913:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 291b <_ZN8BalancerILh2EE6updateEv+0x291b>
291a:	00 
291b:	4d 85 e4             	test   %r12,%r12
291e:	74 06                	je     2926 <_ZN8BalancerILh2EE6updateEv+0x2926>
2920:	41 f6 c4 03          	test   $0x3,%r12b
2924:	74 0f                	je     2935 <_ZN8BalancerILh2EE6updateEv+0x2935>
2926:	4c 89 e6             	mov    %r12,%rsi
2929:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 2930 <_ZN8BalancerILh2EE6updateEv+0x2930>
2930:	e8 00 00 00 00       	callq  2935 <_ZN8BalancerILh2EE6updateEv+0x2935>
2935:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 293d <_ZN8BalancerILh2EE6updateEv+0x293d>
293c:	00 
293d:	48 8d bb 80 f7 ff ff 	lea    -0x880(%rbx),%rdi
2944:	48 89 f8             	mov    %rdi,%rax
2947:	48 c1 e8 03          	shr    $0x3,%rax
294b:	8a 80 00 80 ff 7f    	mov    0x7fff8000(%rax),%al
2951:	84 c0                	test   %al,%al
2953:	74 09                	je     295e <_ZN8BalancerILh2EE6updateEv+0x295e>
2955:	3c 03                	cmp    $0x3,%al
2957:	7f 05                	jg     295e <_ZN8BalancerILh2EE6updateEv+0x295e>
2959:	e8 00 00 00 00       	callq  295e <_ZN8BalancerILh2EE6updateEv+0x295e>
295e:	4c 89 e0             	mov    %r12,%rax
2961:	48 c1 e8 03          	shr    $0x3,%rax
2965:	8a 90 00 80 ff 7f    	mov    0x7fff8000(%rax),%dl
296b:	4c 89 e0             	mov    %r12,%rax
296e:	83 e0 07             	and    $0x7,%eax
2971:	83 c0 03             	add    $0x3,%eax
2974:	38 d0                	cmp    %dl,%al
2976:	7c 0c                	jl     2984 <_ZN8BalancerILh2EE6updateEv+0x2984>
2978:	84 d2                	test   %dl,%dl
297a:	74 08                	je     2984 <_ZN8BalancerILh2EE6updateEv+0x2984>
297c:	4c 89 e7             	mov    %r12,%rdi
297f:	e8 00 00 00 00       	callq  2984 <_ZN8BalancerILh2EE6updateEv+0x2984>
2984:	48 8b 85 e0 e5 ff ff 	mov    -0x1a20(%rbp),%rax
298b:	8b 40 08             	mov    0x8(%rax),%eax
298e:	89 83 80 f7 ff ff    	mov    %eax,-0x880(%rbx)
2994:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 299c <_ZN8BalancerILh2EE6updateEv+0x299c>
299b:	00 
    auto budgetLeftPerActuator = cnl::quotient(budgetLeft, numActuators);
299c:	48 8d 83 40 f8 ff ff 	lea    -0x7c0(%rbx),%rax
29a3:	48 89 85 d0 e5 ff ff 	mov    %rax,-0x1a30(%rbp)
29aa:	48 c1 e8 03          	shr    $0x3,%rax
29ae:	c6 80 00 80 ff 7f 04 	movb   $0x4,0x7fff8000(%rax)
29b5:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 29bd <_ZN8BalancerILh2EE6updateEv+0x29bd>
29bc:	00 
29bd:	8a 80 00 80 ff 7f    	mov    0x7fff8000(%rax),%al
29c3:	84 c0                	test   %al,%al
29c5:	74 10                	je     29d7 <_ZN8BalancerILh2EE6updateEv+0x29d7>
29c7:	3c 03                	cmp    $0x3,%al
29c9:	7f 0c                	jg     29d7 <_ZN8BalancerILh2EE6updateEv+0x29d7>
29cb:	48 8b bd d0 e5 ff ff 	mov    -0x1a30(%rbp),%rdi
29d2:	e8 00 00 00 00       	callq  29d7 <_ZN8BalancerILh2EE6updateEv+0x29d7>
29d7:	48 8d 83 40 e6 ff ff 	lea    -0x19c0(%rbx),%rax
29de:	4c 89 ef             	mov    %r13,%rdi
29e1:	48 89 c6             	mov    %rax,%rsi
29e4:	48 89 85 b0 e5 ff ff 	mov    %rax,-0x1a50(%rbp)
29eb:	e8 00 00 00 00       	callq  29f0 <_ZN8BalancerILh2EE6updateEv+0x29f0>
29f0:	89 83 40 f8 ff ff    	mov    %eax,-0x7c0(%rbx)
29f6:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 29fe <_ZN8BalancerILh2EE6updateEv+0x29fe>
29fd:	00 
    safe_elastic_fixed_point<31, -21> scale = cnl::quotient(available, requestedTotal);
29fe:	48 8d 83 80 f8 ff ff 	lea    -0x780(%rbx),%rax
2a05:	48 89 85 c0 e5 ff ff 	mov    %rax,-0x1a40(%rbp)
2a0c:	48 c1 e8 03          	shr    $0x3,%rax
2a10:	c6 80 00 80 ff 7f 04 	movb   $0x4,0x7fff8000(%rax)
2a17:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2a1f <_ZN8BalancerILh2EE6updateEv+0x2a1f>
2a1e:	00 
2a1f:	4c 8d ab 40 fe ff ff 	lea    -0x1c0(%rbx),%r13
2a26:	4c 89 e8             	mov    %r13,%rax
2a29:	48 c1 e8 03          	shr    $0x3,%rax
2a2d:	c6 80 00 80 ff 7f 00 	movb   $0x0,0x7fff8000(%rax)
2a34:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2a3c <_ZN8BalancerILh2EE6updateEv+0x2a3c>
2a3b:	00 
2a3c:	48 83 bd e0 e5 ff ff 	cmpq   $0x0,-0x1a20(%rbp)
2a43:	00 
2a44:	74 09                	je     2a4f <_ZN8BalancerILh2EE6updateEv+0x2a4f>
2a46:	f6 85 e0 e5 ff ff 07 	testb  $0x7,-0x1a20(%rbp)
2a4d:	74 13                	je     2a62 <_ZN8BalancerILh2EE6updateEv+0x2a62>
2a4f:	48 8b b5 e0 e5 ff ff 	mov    -0x1a20(%rbp),%rsi
2a56:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 2a5d <_ZN8BalancerILh2EE6updateEv+0x2a5d>
2a5d:	e8 00 00 00 00       	callq  2a62 <_ZN8BalancerILh2EE6updateEv+0x2a62>
2a62:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2a6a <_ZN8BalancerILh2EE6updateEv+0x2a6a>
2a69:	00 
2a6a:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2a72 <_ZN8BalancerILh2EE6updateEv+0x2a72>
2a71:	00 
2a72:	4d 85 e4             	test   %r12,%r12
2a75:	74 06                	je     2a7d <_ZN8BalancerILh2EE6updateEv+0x2a7d>
2a77:	41 f6 c4 03          	test   $0x3,%r12b
2a7b:	74 0f                	je     2a8c <_ZN8BalancerILh2EE6updateEv+0x2a8c>
2a7d:	4c 89 e6             	mov    %r12,%rsi
2a80:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 2a87 <_ZN8BalancerILh2EE6updateEv+0x2a87>
2a87:	e8 00 00 00 00       	callq  2a8c <_ZN8BalancerILh2EE6updateEv+0x2a8c>
2a8c:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2a94 <_ZN8BalancerILh2EE6updateEv+0x2a94>
2a93:	00 
2a94:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2a9c <_ZN8BalancerILh2EE6updateEv+0x2a9c>
2a9b:	00 
2a9c:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2aa4 <_ZN8BalancerILh2EE6updateEv+0x2aa4>
2aa3:	00 
2aa4:	4d 89 ee             	mov    %r13,%r14
2aa7:	49 c1 ee 03          	shr    $0x3,%r14
2aab:	41 80 be 00 80 ff 7f 	cmpb   $0x0,0x7fff8000(%r14)
2ab2:	00 
2ab3:	74 08                	je     2abd <_ZN8BalancerILh2EE6updateEv+0x2abd>
2ab5:	4c 89 ef             	mov    %r13,%rdi
2ab8:	e8 00 00 00 00       	callq  2abd <_ZN8BalancerILh2EE6updateEv+0x2abd>
2abd:	48 8d b3 80 f7 ff ff 	lea    -0x880(%rbx),%rsi
2ac4:	4c 89 e7             	mov    %r12,%rdi
2ac7:	e8 00 00 00 00       	callq  2acc <_ZN8BalancerILh2EE6updateEv+0x2acc>
2acc:	48 89 83 40 fe ff ff 	mov    %rax,-0x1c0(%rbx)
2ad3:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2adb <_ZN8BalancerILh2EE6updateEv+0x2adb>
2ada:	00 
2adb:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2ae3 <_ZN8BalancerILh2EE6updateEv+0x2ae3>
2ae2:	00 
2ae3:	4c 89 ee             	mov    %r13,%rsi
2ae6:	48 8d bb 80 f8 ff ff 	lea    -0x780(%rbx),%rdi
2aed:	e8 00 00 00 00       	callq  2af2 <_ZN8BalancerILh2EE6updateEv+0x2af2>
2af2:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2afa <_ZN8BalancerILh2EE6updateEv+0x2afa>
2af9:	00 
2afa:	41 c6 86 00 80 ff 7f 	movb   $0xf8,0x7fff8000(%r14)
2b01:	f8 
2b02:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2b0a <_ZN8BalancerILh2EE6updateEv+0x2b0a>
2b09:	00 
    for (auto& a : requesters) {
2b0a:	48 83 bd e0 e5 ff ff 	cmpq   $0x0,-0x1a20(%rbp)
2b11:	00 
2b12:	74 09                	je     2b1d <_ZN8BalancerILh2EE6updateEv+0x2b1d>
2b14:	f6 85 e0 e5 ff ff 07 	testb  $0x7,-0x1a20(%rbp)
2b1b:	74 13                	je     2b30 <_ZN8BalancerILh2EE6updateEv+0x2b30>
2b1d:	48 8b b5 e0 e5 ff ff 	mov    -0x1a20(%rbp),%rsi
2b24:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 2b2b <_ZN8BalancerILh2EE6updateEv+0x2b2b>
2b2b:	e8 00 00 00 00       	callq  2b30 <_ZN8BalancerILh2EE6updateEv+0x2b30>
2b30:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2b38 <_ZN8BalancerILh2EE6updateEv+0x2b38>
2b37:	00 
2b38:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2b40 <_ZN8BalancerILh2EE6updateEv+0x2b40>
2b3f:	00 
2b40:	48 83 bd e8 e5 ff ff 	cmpq   $0x0,-0x1a18(%rbp)
2b47:	00 
2b48:	74 09                	je     2b53 <_ZN8BalancerILh2EE6updateEv+0x2b53>
2b4a:	f6 85 e8 e5 ff ff 07 	testb  $0x7,-0x1a18(%rbp)
2b51:	74 13                	je     2b66 <_ZN8BalancerILh2EE6updateEv+0x2b66>
2b53:	48 8b b5 e8 e5 ff ff 	mov    -0x1a18(%rbp),%rsi
2b5a:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 2b61 <_ZN8BalancerILh2EE6updateEv+0x2b61>
2b61:	e8 00 00 00 00       	callq  2b66 <_ZN8BalancerILh2EE6updateEv+0x2b66>
2b66:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2b6e <_ZN8BalancerILh2EE6updateEv+0x2b6e>
2b6d:	00 
2b6e:	4c 8d a3 80 fe ff ff 	lea    -0x180(%rbx),%r12
2b75:	4c 89 e0             	mov    %r12,%rax
2b78:	48 c1 e8 03          	shr    $0x3,%rax
2b7c:	c6 80 00 80 ff 7f 00 	movb   $0x0,0x7fff8000(%rax)
2b83:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2b8b <_ZN8BalancerILh2EE6updateEv+0x2b8b>
2b8a:	00 
2b8b:	48 83 bd e8 e5 ff ff 	cmpq   $0x0,-0x1a18(%rbp)
2b92:	00 
2b93:	74 09                	je     2b9e <_ZN8BalancerILh2EE6updateEv+0x2b9e>
2b95:	f6 85 e8 e5 ff ff 07 	testb  $0x7,-0x1a18(%rbp)
2b9c:	74 13                	je     2bb1 <_ZN8BalancerILh2EE6updateEv+0x2bb1>
2b9e:	48 8b b5 e8 e5 ff ff 	mov    -0x1a18(%rbp),%rsi
2ba5:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 2bac <_ZN8BalancerILh2EE6updateEv+0x2bac>
2bac:	e8 00 00 00 00       	callq  2bb1 <_ZN8BalancerILh2EE6updateEv+0x2bb1>
2bb1:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2bb9 <_ZN8BalancerILh2EE6updateEv+0x2bb9>
2bb8:	00 
2bb9:	4c 89 e0             	mov    %r12,%rax
2bbc:	48 c1 e8 03          	shr    $0x3,%rax
2bc0:	80 b8 00 80 ff 7f 00 	cmpb   $0x0,0x7fff8000(%rax)
2bc7:	74 08                	je     2bd1 <_ZN8BalancerILh2EE6updateEv+0x2bd1>
2bc9:	4c 89 e7             	mov    %r12,%rdi
2bcc:	e8 00 00 00 00       	callq  2bd1 <_ZN8BalancerILh2EE6updateEv+0x2bd1>
2bd1:	48 8b bd e8 e5 ff ff 	mov    -0x1a18(%rbp),%rdi
2bd8:	e8 00 00 00 00       	callq  2bdd <_ZN8BalancerILh2EE6updateEv+0x2bdd>
2bdd:	48 89 83 80 fe ff ff 	mov    %rax,-0x180(%rbx)
2be4:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2bec <_ZN8BalancerILh2EE6updateEv+0x2bec>
2beb:	00 
2bec:	48 8d bb c0 fe ff ff 	lea    -0x140(%rbx),%rdi
2bf3:	48 89 f8             	mov    %rdi,%rax
2bf6:	48 c1 e8 03          	shr    $0x3,%rax
2bfa:	c6 80 00 80 ff 7f 00 	movb   $0x0,0x7fff8000(%rax)
2c01:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2c09 <_ZN8BalancerILh2EE6updateEv+0x2c09>
2c08:	00 
2c09:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2c11 <_ZN8BalancerILh2EE6updateEv+0x2c11>
2c10:	00 
2c11:	80 b8 00 80 ff 7f 00 	cmpb   $0x0,0x7fff8000(%rax)
2c18:	74 05                	je     2c1f <_ZN8BalancerILh2EE6updateEv+0x2c1f>
2c1a:	e8 00 00 00 00       	callq  2c1f <_ZN8BalancerILh2EE6updateEv+0x2c1f>
2c1f:	48 8b bd e8 e5 ff ff 	mov    -0x1a18(%rbp),%rdi
2c26:	e8 00 00 00 00       	callq  2c2b <_ZN8BalancerILh2EE6updateEv+0x2c2b>
2c2b:	48 89 83 c0 fe ff ff 	mov    %rax,-0x140(%rbx)
2c32:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2c3a <_ZN8BalancerILh2EE6updateEv+0x2c3a>
2c39:	00 
{ return __lhs.base() != __rhs.base(); }
2c3a:	48 8d 83 80 fe ff ff 	lea    -0x180(%rbx),%rax
2c41:	48 89 85 e0 e5 ff ff 	mov    %rax,-0x1a20(%rbp)
2c48:	48 c1 e8 03          	shr    $0x3,%rax
2c4c:	48 89 85 c8 e5 ff ff 	mov    %rax,-0x1a38(%rbp)
operator!=(const __normal_iterator<_Iterator, _Container>& __lhs,
2c53:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2c5b <_ZN8BalancerILh2EE6updateEv+0x2c5b>
2c5a:	00 
2c5b:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2c63 <_ZN8BalancerILh2EE6updateEv+0x2c63>
2c62:	00 
2c63:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2c6b <_ZN8BalancerILh2EE6updateEv+0x2c6b>
2c6a:	00 
2c6b:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2c73 <_ZN8BalancerILh2EE6updateEv+0x2c73>
2c72:	00 
2c73:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2c7b <_ZN8BalancerILh2EE6updateEv+0x2c7b>
2c7a:	00 
{ return __lhs.base() != __rhs.base(); }
2c7b:	48 8b 85 c8 e5 ff ff 	mov    -0x1a38(%rbp),%rax
2c82:	80 b8 00 80 ff 7f 00 	cmpb   $0x0,0x7fff8000(%rax)
2c89:	74 0c                	je     2c97 <_ZN8BalancerILh2EE6updateEv+0x2c97>
2c8b:	48 8b bd e0 e5 ff ff 	mov    -0x1a20(%rbp),%rdi
2c92:	e8 00 00 00 00       	callq  2c97 <_ZN8BalancerILh2EE6updateEv+0x2c97>
2c97:	48 8b 83 80 fe ff ff 	mov    -0x180(%rbx),%rax
2c9e:	48 89 85 e8 e5 ff ff 	mov    %rax,-0x1a18(%rbp)
2ca5:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2cad <_ZN8BalancerILh2EE6updateEv+0x2cad>
2cac:	00 
2cad:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2cb5 <_ZN8BalancerILh2EE6updateEv+0x2cb5>
2cb4:	00 
2cb5:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2cbd <_ZN8BalancerILh2EE6updateEv+0x2cbd>
2cbc:	00 
2cbd:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2cc5 <_ZN8BalancerILh2EE6updateEv+0x2cc5>
2cc4:	00 
2cc5:	48 8d bb c0 fe ff ff 	lea    -0x140(%rbx),%rdi
2ccc:	48 89 f8             	mov    %rdi,%rax
2ccf:	48 c1 e8 03          	shr    $0x3,%rax
2cd3:	80 b8 00 80 ff 7f 00 	cmpb   $0x0,0x7fff8000(%rax)
2cda:	74 05                	je     2ce1 <_ZN8BalancerILh2EE6updateEv+0x2ce1>
2cdc:	e8 00 00 00 00       	callq  2ce1 <_ZN8BalancerILh2EE6updateEv+0x2ce1>
2ce1:	48 8b 8d e8 e5 ff ff 	mov    -0x1a18(%rbp),%rcx
2ce8:	48 3b 8b c0 fe ff ff 	cmp    -0x140(%rbx),%rcx
2cef:	0f 84 cc 0f 00 00    	je     3cc1 <_ZN8BalancerILh2EE6updateEv+0x3cc1>
2cf5:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2cfd <_ZN8BalancerILh2EE6updateEv+0x2cfd>
2cfc:	00 
  operator*() const _GLIBCXX_NOEXCEPT
2cfd:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2d05 <_ZN8BalancerILh2EE6updateEv+0x2d05>
2d04:	00 
  { return *_M_current; }
2d05:	48 83 bd e8 e5 ff ff 	cmpq   $0x0,-0x1a18(%rbp)
2d0c:	00 
2d0d:	74 09                	je     2d18 <_ZN8BalancerILh2EE6updateEv+0x2d18>
2d0f:	f6 85 e8 e5 ff ff 03 	testb  $0x3,-0x1a18(%rbp)
2d16:	74 13                	je     2d2b <_ZN8BalancerILh2EE6updateEv+0x2d2b>
2d18:	48 8b b5 e8 e5 ff ff 	mov    -0x1a18(%rbp),%rsi
2d1f:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 2d26 <_ZN8BalancerILh2EE6updateEv+0x2d26>
2d26:	e8 00 00 00 00       	callq  2d2b <_ZN8BalancerILh2EE6updateEv+0x2d2b>
2d2b:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2d33 <_ZN8BalancerILh2EE6updateEv+0x2d33>
2d32:	00 
2d33:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2d3b <_ZN8BalancerILh2EE6updateEv+0x2d3b>
2d3a:	00 
2d3b:	48 83 bd e8 e5 ff ff 	cmpq   $0x0,-0x1a18(%rbp)
2d42:	00 
2d43:	74 09                	je     2d4e <_ZN8BalancerILh2EE6updateEv+0x2d4e>
2d45:	f6 85 e8 e5 ff ff 03 	testb  $0x3,-0x1a18(%rbp)
2d4c:	74 13                	je     2d61 <_ZN8BalancerILh2EE6updateEv+0x2d61>
2d4e:	48 8b b5 e8 e5 ff ff 	mov    -0x1a18(%rbp),%rsi
2d55:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 2d5c <_ZN8BalancerILh2EE6updateEv+0x2d5c>
2d5c:	e8 00 00 00 00       	callq  2d61 <_ZN8BalancerILh2EE6updateEv+0x2d61>
2d61:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2d69 <_ZN8BalancerILh2EE6updateEv+0x2d69>
2d68:	00 
        a.granted = a.requested * scale;
2d69:	4c 8d ab 00 ff ff ff 	lea    -0x100(%rbx),%r13
2d70:	4c 89 e8             	mov    %r13,%rax
2d73:	48 c1 e8 03          	shr    $0x3,%rax
2d77:	c6 80 00 80 ff 7f 00 	movb   $0x0,0x7fff8000(%rax)
2d7e:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2d86 <_ZN8BalancerILh2EE6updateEv+0x2d86>
2d85:	00 
2d86:	48 83 bd e8 e5 ff ff 	cmpq   $0x0,-0x1a18(%rbp)
2d8d:	00 
2d8e:	74 09                	je     2d99 <_ZN8BalancerILh2EE6updateEv+0x2d99>
2d90:	f6 85 e8 e5 ff ff 03 	testb  $0x3,-0x1a18(%rbp)
2d97:	74 13                	je     2dac <_ZN8BalancerILh2EE6updateEv+0x2dac>
2d99:	48 8b b5 e8 e5 ff ff 	mov    -0x1a18(%rbp),%rsi
2da0:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 2da7 <_ZN8BalancerILh2EE6updateEv+0x2da7>
2da7:	e8 00 00 00 00       	callq  2dac <_ZN8BalancerILh2EE6updateEv+0x2dac>
2dac:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2db4 <_ZN8BalancerILh2EE6updateEv+0x2db4>
2db3:	00 
2db4:	48 8b 85 e8 e5 ff ff 	mov    -0x1a18(%rbp),%rax
2dbb:	4c 8d 60 04          	lea    0x4(%rax),%r12
2dbf:	48 83 f8 fc          	cmp    $0xfffffffffffffffc,%rax
2dc3:	72 12                	jb     2dd7 <_ZN8BalancerILh2EE6updateEv+0x2dd7>
2dc5:	4c 89 e2             	mov    %r12,%rdx
2dc8:	48 89 c6             	mov    %rax,%rsi
2dcb:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 2dd2 <_ZN8BalancerILh2EE6updateEv+0x2dd2>
2dd2:	e8 00 00 00 00       	callq  2dd7 <_ZN8BalancerILh2EE6updateEv+0x2dd7>
2dd7:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2ddf <_ZN8BalancerILh2EE6updateEv+0x2ddf>
2dde:	00 
2ddf:	4d 85 e4             	test   %r12,%r12
2de2:	74 06                	je     2dea <_ZN8BalancerILh2EE6updateEv+0x2dea>
2de4:	41 f6 c4 03          	test   $0x3,%r12b
2de8:	74 0f                	je     2df9 <_ZN8BalancerILh2EE6updateEv+0x2df9>
2dea:	4c 89 e6             	mov    %r12,%rsi
2ded:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 2df4 <_ZN8BalancerILh2EE6updateEv+0x2df4>
2df4:	e8 00 00 00 00       	callq  2df9 <_ZN8BalancerILh2EE6updateEv+0x2df9>
2df9:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2e01 <_ZN8BalancerILh2EE6updateEv+0x2e01>
2e00:	00 
    CNL_DEFINE_BINARY_OPERATOR(*, multiply_op)
2e01:	4c 8d b3 c0 eb ff ff 	lea    -0x1440(%rbx),%r14
2e08:	49 c1 ee 03          	shr    $0x3,%r14
2e0c:	41 c6 86 00 80 ff 7f 	movb   $0x1,0x7fff8000(%r14)
2e13:	01 
2e14:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2e1c <_ZN8BalancerILh2EE6updateEv+0x2e1c>
2e1b:	00 
2e1c:	48 8b b5 c0 e5 ff ff 	mov    -0x1a40(%rbp),%rsi
2e23:	4c 89 e7             	mov    %r12,%rdi
2e26:	e8 00 00 00 00       	callq  2e2b <_ZN8BalancerILh2EE6updateEv+0x2e2b>
2e2b:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2e33 <_ZN8BalancerILh2EE6updateEv+0x2e33>
2e32:	00 
2e33:	41 c6 86 00 80 ff 7f 	movb   $0xf8,0x7fff8000(%r14)
2e3a:	f8 
2e3b:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2e43 <_ZN8BalancerILh2EE6updateEv+0x2e43>
2e42:	00 
2e43:	4c 89 ea             	mov    %r13,%rdx
2e46:	48 c1 ea 03          	shr    $0x3,%rdx
2e4a:	80 ba 00 80 ff 7f 00 	cmpb   $0x0,0x7fff8000(%rdx)
2e51:	74 08                	je     2e5b <_ZN8BalancerILh2EE6updateEv+0x2e5b>
2e53:	4c 89 ef             	mov    %r13,%rdi
2e56:	e8 00 00 00 00       	callq  2e5b <_ZN8BalancerILh2EE6updateEv+0x2e5b>
2e5b:	48 89 83 00 ff ff ff 	mov    %rax,-0x100(%rbx)
2e62:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2e6a <_ZN8BalancerILh2EE6updateEv+0x2e6a>
2e69:	00 
2e6a:	48 83 bd e8 e5 ff ff 	cmpq   $0x0,-0x1a18(%rbp)
2e71:	00 
2e72:	74 09                	je     2e7d <_ZN8BalancerILh2EE6updateEv+0x2e7d>
2e74:	f6 85 e8 e5 ff ff 03 	testb  $0x3,-0x1a18(%rbp)
2e7b:	74 13                	je     2e90 <_ZN8BalancerILh2EE6updateEv+0x2e90>
2e7d:	48 8b b5 e8 e5 ff ff 	mov    -0x1a18(%rbp),%rsi
2e84:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 2e8b <_ZN8BalancerILh2EE6updateEv+0x2e8b>
2e8b:	e8 00 00 00 00       	callq  2e90 <_ZN8BalancerILh2EE6updateEv+0x2e90>
2e90:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2e98 <_ZN8BalancerILh2EE6updateEv+0x2e98>
2e97:	00 
2e98:	48 8b 85 e8 e5 ff ff 	mov    -0x1a18(%rbp),%rax
2e9f:	4c 8d 60 08          	lea    0x8(%rax),%r12
2ea3:	48 83 f8 f8          	cmp    $0xfffffffffffffff8,%rax
2ea7:	72 12                	jb     2ebb <_ZN8BalancerILh2EE6updateEv+0x2ebb>
2ea9:	4c 89 e2             	mov    %r12,%rdx
2eac:	48 89 c6             	mov    %rax,%rsi
2eaf:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 2eb6 <_ZN8BalancerILh2EE6updateEv+0x2eb6>
2eb6:	e8 00 00 00 00       	callq  2ebb <_ZN8BalancerILh2EE6updateEv+0x2ebb>
2ebb:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2ec3 <_ZN8BalancerILh2EE6updateEv+0x2ec3>
2ec2:	00 
2ec3:	4d 85 e4             	test   %r12,%r12
2ec6:	74 06                	je     2ece <_ZN8BalancerILh2EE6updateEv+0x2ece>
2ec8:	41 f6 c4 03          	test   $0x3,%r12b
2ecc:	74 0f                	je     2edd <_ZN8BalancerILh2EE6updateEv+0x2edd>
2ece:	4c 89 e6             	mov    %r12,%rsi
2ed1:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 2ed8 <_ZN8BalancerILh2EE6updateEv+0x2ed8>
2ed8:	e8 00 00 00 00       	callq  2edd <_ZN8BalancerILh2EE6updateEv+0x2edd>
2edd:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2ee5 <_ZN8BalancerILh2EE6updateEv+0x2ee5>
2ee4:	00 
2ee5:	4c 89 ee             	mov    %r13,%rsi
2ee8:	4c 89 e7             	mov    %r12,%rdi
2eeb:	e8 00 00 00 00       	callq  2ef0 <_ZN8BalancerILh2EE6updateEv+0x2ef0>
2ef0:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2ef8 <_ZN8BalancerILh2EE6updateEv+0x2ef8>
2ef7:	00 
2ef8:	49 c1 ed 03          	shr    $0x3,%r13
2efc:	41 c6 85 00 80 ff 7f 	movb   $0xf8,0x7fff8000(%r13)
2f03:	f8 
2f04:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2f0c <_ZN8BalancerILh2EE6updateEv+0x2f0c>
2f0b:	00 
        a.granted += budgetLeftPerActuator;
2f0c:	48 83 bd e8 e5 ff ff 	cmpq   $0x0,-0x1a18(%rbp)
2f13:	00 
2f14:	74 09                	je     2f1f <_ZN8BalancerILh2EE6updateEv+0x2f1f>
2f16:	f6 85 e8 e5 ff ff 03 	testb  $0x3,-0x1a18(%rbp)
2f1d:	74 13                	je     2f32 <_ZN8BalancerILh2EE6updateEv+0x2f32>
2f1f:	48 8b b5 e8 e5 ff ff 	mov    -0x1a18(%rbp),%rsi
2f26:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 2f2d <_ZN8BalancerILh2EE6updateEv+0x2f2d>
2f2d:	e8 00 00 00 00       	callq  2f32 <_ZN8BalancerILh2EE6updateEv+0x2f32>
2f32:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2f3a <_ZN8BalancerILh2EE6updateEv+0x2f3a>
2f39:	00 
2f3a:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2f42 <_ZN8BalancerILh2EE6updateEv+0x2f42>
2f41:	00 
2f42:	4d 85 e4             	test   %r12,%r12
2f45:	74 06                	je     2f4d <_ZN8BalancerILh2EE6updateEv+0x2f4d>
2f47:	41 f6 c4 03          	test   $0x3,%r12b
2f4b:	74 0f                	je     2f5c <_ZN8BalancerILh2EE6updateEv+0x2f5c>
2f4d:	4c 89 e6             	mov    %r12,%rsi
2f50:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 2f57 <_ZN8BalancerILh2EE6updateEv+0x2f57>
2f57:	e8 00 00 00 00       	callq  2f5c <_ZN8BalancerILh2EE6updateEv+0x2f5c>
2f5c:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2f64 <_ZN8BalancerILh2EE6updateEv+0x2f64>
2f63:	00 
    CNL_DEFINE_COMPOUND_ASSIGNMENT_OPERATOR(+=, assign_add_op)
2f64:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2f6c <_ZN8BalancerILh2EE6updateEv+0x2f6c>
2f6b:	00 
2f6c:	48 8d 83 c0 f2 ff ff 	lea    -0xd40(%rbx),%rax
2f73:	48 c1 e8 03          	shr    $0x3,%rax
2f77:	c6 80 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rax)
2f7e:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2f86 <_ZN8BalancerILh2EE6updateEv+0x2f86>
2f85:	00 
    constexpr LhsOperand& operator()(LhsOperand& lhs, RhsOperand const& rhs) const
2f86:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2f8e <_ZN8BalancerILh2EE6updateEv+0x2f8e>
2f8d:	00 
                binary_operator<Tag, typename Operator::binary, LhsOperand, RhsOperand>{}(lhs, rhs));
2f8e:	48 8d 83 40 fb ff ff 	lea    -0x4c0(%rbx),%rax
2f95:	48 c1 e8 03          	shr    $0x3,%rax
2f99:	c6 80 00 80 ff 7f 04 	movb   $0x4,0x7fff8000(%rax)
2fa0:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2fa8 <_ZN8BalancerILh2EE6updateEv+0x2fa8>
2fa7:	00 
2fa8:	48 8d 83 40 ff ff ff 	lea    -0xc0(%rbx),%rax
2faf:	48 c1 e8 03          	shr    $0x3,%rax
2fb3:	c6 80 00 80 ff 7f 00 	movb   $0x0,0x7fff8000(%rax)
2fba:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2fc2 <_ZN8BalancerILh2EE6updateEv+0x2fc2>
2fc1:	00 
2fc2:	48 8d 83 00 f3 ff ff 	lea    -0xd00(%rbx),%rax
2fc9:	48 c1 e8 03          	shr    $0x3,%rax
2fcd:	c6 80 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rax)
2fd4:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2fdc <_ZN8BalancerILh2EE6updateEv+0x2fdc>
2fdb:	00 
2fdc:	4d 85 e4             	test   %r12,%r12
2fdf:	74 06                	je     2fe7 <_ZN8BalancerILh2EE6updateEv+0x2fe7>
2fe1:	41 f6 c4 03          	test   $0x3,%r12b
2fe5:	74 0f                	je     2ff6 <_ZN8BalancerILh2EE6updateEv+0x2ff6>
2fe7:	4c 89 e6             	mov    %r12,%rsi
2fea:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 2ff1 <_ZN8BalancerILh2EE6updateEv+0x2ff1>
2ff1:	e8 00 00 00 00       	callq  2ff6 <_ZN8BalancerILh2EE6updateEv+0x2ff6>
2ff6:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 2ffe <_ZN8BalancerILh2EE6updateEv+0x2ffe>
2ffd:	00 
private:
    static constexpr int _common_exponent = _impl::min(LhsExponent, RhsExponent);
    static constexpr int _lhs_left_shift = LhsExponent-_common_exponent;
    static constexpr int _rhs_left_shift = RhsExponent-_common_exponent;
public:
    CNL_NODISCARD constexpr auto operator()(
2ffe:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3006 <_ZN8BalancerILh2EE6updateEv+0x3006>
3005:	00 
    {
        return Operator{}(
                _impl::from_rep<scaled_integer<LhsRep, power<_common_exponent, Radix>>>(
                        _impl::scale<_lhs_left_shift, Radix>(_impl::to_rep(lhs))),
                _impl::from_rep<scaled_integer<RhsRep, power<_common_exponent, Radix>>>(
                        _impl::scale<_rhs_left_shift, Radix>(_impl::to_rep(rhs))));
3006:	48 8d 83 40 f3 ff ff 	lea    -0xcc0(%rbx),%rax
300d:	48 c1 e8 03          	shr    $0x3,%rax
3011:	c6 80 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rax)
3018:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3020 <_ZN8BalancerILh2EE6updateEv+0x3020>
301f:	00 
                _impl::from_rep<scaled_integer<RhsRep, power<_common_exponent, Radix>>>(
3020:	4c 8d ab 80 fb ff ff 	lea    -0x480(%rbx),%r13
3027:	4c 89 e8             	mov    %r13,%rax
302a:	48 c1 e8 03          	shr    $0x3,%rax
302e:	c6 80 00 80 ff 7f 04 	movb   $0x4,0x7fff8000(%rax)
3035:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 303d <_ZN8BalancerILh2EE6updateEv+0x303d>
303c:	00 
                        _impl::scale<_rhs_left_shift, Radix>(_impl::to_rep(rhs))));
303d:	48 8d 93 c0 fb ff ff 	lea    -0x440(%rbx),%rdx
3044:	48 89 d1             	mov    %rdx,%rcx
3047:	48 89 95 a0 e5 ff ff 	mov    %rdx,-0x1a60(%rbp)
304e:	48 c1 e9 03          	shr    $0x3,%rcx
3052:	c6 81 00 80 ff 7f 04 	movb   $0x4,0x7fff8000(%rcx)
3059:	48 89 8d a8 e5 ff ff 	mov    %rcx,-0x1a58(%rbp)
3060:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3068 <_ZN8BalancerILh2EE6updateEv+0x3068>
3067:	00 
3068:	48 8d 83 c0 f4 ff ff 	lea    -0xb40(%rbx),%rax
306f:	48 c1 e8 03          	shr    $0x3,%rax
3073:	c6 80 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rax)
307a:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3082 <_ZN8BalancerILh2EE6updateEv+0x3082>
3081:	00 
3082:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 308a <_ZN8BalancerILh2EE6updateEv+0x308a>
3089:	00 
308a:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3092 <_ZN8BalancerILh2EE6updateEv+0x3092>
3091:	00 
    CNL_NODISCARD constexpr Rep const& operator()(Derived const& number) const {
3092:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 309a <_ZN8BalancerILh2EE6updateEv+0x309a>
3099:	00 
309a:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 30a2 <_ZN8BalancerILh2EE6updateEv+0x30a2>
30a1:	00 
30a2:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 30aa <_ZN8BalancerILh2EE6updateEv+0x30aa>
30a9:	00 
30aa:	c6 80 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rax)
30b1:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 30b9 <_ZN8BalancerILh2EE6updateEv+0x30b9>
30b8:	00 
30b9:	4c 8d b3 80 f4 ff ff 	lea    -0xb80(%rbx),%r14
30c0:	49 c1 ee 03          	shr    $0x3,%r14
30c4:	41 c6 86 00 80 ff 7f 	movb   $0x1,0x7fff8000(%r14)
30cb:	01 
30cc:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 30d4 <_ZN8BalancerILh2EE6updateEv+0x30d4>
30d3:	00 
30d4:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 30dc <_ZN8BalancerILh2EE6updateEv+0x30dc>
30db:	00 
30dc:	48 8b bd d0 e5 ff ff 	mov    -0x1a30(%rbp),%rdi
30e3:	e8 00 00 00 00       	callq  30e8 <_ZN8BalancerILh2EE6updateEv+0x30e8>
30e8:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 30f0 <_ZN8BalancerILh2EE6updateEv+0x30f0>
30ef:	00 
30f0:	41 c6 86 00 80 ff 7f 	movb   $0xf8,0x7fff8000(%r14)
30f7:	f8 
30f8:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3100 <_ZN8BalancerILh2EE6updateEv+0x3100>
30ff:	00 
3100:	48 8b 8d a8 e5 ff ff 	mov    -0x1a58(%rbp),%rcx
3107:	8a 89 00 80 ff 7f    	mov    0x7fff8000(%rcx),%cl
310d:	84 c9                	test   %cl,%cl
310f:	74 14                	je     3125 <_ZN8BalancerILh2EE6updateEv+0x3125>
3111:	80 f9 03             	cmp    $0x3,%cl
3114:	48 8b 95 a0 e5 ff ff 	mov    -0x1a60(%rbp),%rdx
311b:	7f 08                	jg     3125 <_ZN8BalancerILh2EE6updateEv+0x3125>
311d:	48 89 d7             	mov    %rdx,%rdi
3120:	e8 00 00 00 00       	callq  3125 <_ZN8BalancerILh2EE6updateEv+0x3125>
3125:	89 83 c0 fb ff ff    	mov    %eax,-0x440(%rbx)
312b:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3133 <_ZN8BalancerILh2EE6updateEv+0x3133>
3132:	00 
3133:	4c 8d b3 40 f4 ff ff 	lea    -0xbc0(%rbx),%r14
313a:	49 c1 ee 03          	shr    $0x3,%r14
313e:	41 c6 86 00 80 ff 7f 	movb   $0x1,0x7fff8000(%r14)
3145:	01 
3146:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 314e <_ZN8BalancerILh2EE6updateEv+0x314e>
314d:	00 
314e:	48 8d bb c0 fb ff ff 	lea    -0x440(%rbx),%rdi
3155:	e8 00 00 00 00       	callq  315a <_ZN8BalancerILh2EE6updateEv+0x315a>
315a:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3162 <_ZN8BalancerILh2EE6updateEv+0x3162>
3161:	00 
3162:	41 c6 86 00 80 ff 7f 	movb   $0xf8,0x7fff8000(%r14)
3169:	f8 
316a:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3172 <_ZN8BalancerILh2EE6updateEv+0x3172>
3171:	00 
                _impl::from_rep<scaled_integer<RhsRep, power<_common_exponent, Radix>>>(
3172:	4c 89 ea             	mov    %r13,%rdx
3175:	48 c1 ea 03          	shr    $0x3,%rdx
3179:	8a 92 00 80 ff 7f    	mov    0x7fff8000(%rdx),%dl
317f:	84 d2                	test   %dl,%dl
3181:	74 0d                	je     3190 <_ZN8BalancerILh2EE6updateEv+0x3190>
3183:	80 fa 03             	cmp    $0x3,%dl
3186:	7f 08                	jg     3190 <_ZN8BalancerILh2EE6updateEv+0x3190>
3188:	4c 89 ef             	mov    %r13,%rdi
318b:	e8 00 00 00 00       	callq  3190 <_ZN8BalancerILh2EE6updateEv+0x3190>
3190:	89 83 80 fb ff ff    	mov    %eax,-0x480(%rbx)
3196:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 319e <_ZN8BalancerILh2EE6updateEv+0x319e>
319d:	00 
                _impl::from_rep<scaled_integer<LhsRep, power<_common_exponent, Radix>>>(
319e:	48 8d 83 00 fc ff ff 	lea    -0x400(%rbx),%rax
31a5:	48 c1 e8 03          	shr    $0x3,%rax
31a9:	c6 80 00 80 ff 7f 04 	movb   $0x4,0x7fff8000(%rax)
31b0:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 31b8 <_ZN8BalancerILh2EE6updateEv+0x31b8>
31b7:	00 
                        _impl::scale<_lhs_left_shift, Radix>(_impl::to_rep(lhs))),
31b8:	48 8d 83 40 fc ff ff 	lea    -0x3c0(%rbx),%rax
31bf:	48 c1 e8 03          	shr    $0x3,%rax
31c3:	c6 80 00 80 ff 7f 04 	movb   $0x4,0x7fff8000(%rax)
31ca:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 31d2 <_ZN8BalancerILh2EE6updateEv+0x31d2>
31d1:	00 
31d2:	4c 8d ab 00 f4 ff ff 	lea    -0xc00(%rbx),%r13
31d9:	4c 89 e8             	mov    %r13,%rax
31dc:	48 c1 e8 03          	shr    $0x3,%rax
31e0:	c6 80 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rax)
31e7:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 31ef <_ZN8BalancerILh2EE6updateEv+0x31ef>
31ee:	00 
31ef:	4d 85 e4             	test   %r12,%r12
31f2:	74 06                	je     31fa <_ZN8BalancerILh2EE6updateEv+0x31fa>
31f4:	41 f6 c4 03          	test   $0x3,%r12b
31f8:	74 0f                	je     3209 <_ZN8BalancerILh2EE6updateEv+0x3209>
31fa:	4c 89 e6             	mov    %r12,%rsi
31fd:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 3204 <_ZN8BalancerILh2EE6updateEv+0x3204>
3204:	e8 00 00 00 00       	callq  3209 <_ZN8BalancerILh2EE6updateEv+0x3209>
3209:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3211 <_ZN8BalancerILh2EE6updateEv+0x3211>
3210:	00 
3211:	4d 85 e4             	test   %r12,%r12
3214:	74 06                	je     321c <_ZN8BalancerILh2EE6updateEv+0x321c>
3216:	41 f6 c4 03          	test   $0x3,%r12b
321a:	74 0f                	je     322b <_ZN8BalancerILh2EE6updateEv+0x322b>
321c:	4c 89 e6             	mov    %r12,%rsi
321f:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 3226 <_ZN8BalancerILh2EE6updateEv+0x3226>
3226:	e8 00 00 00 00       	callq  322b <_ZN8BalancerILh2EE6updateEv+0x322b>
322b:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3233 <_ZN8BalancerILh2EE6updateEv+0x3233>
3232:	00 
        return number._rep;
3233:	4d 85 e4             	test   %r12,%r12
3236:	74 06                	je     323e <_ZN8BalancerILh2EE6updateEv+0x323e>
3238:	41 f6 c4 03          	test   $0x3,%r12b
323c:	74 0f                	je     324d <_ZN8BalancerILh2EE6updateEv+0x324d>
323e:	4c 89 e6             	mov    %r12,%rsi
3241:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 3248 <_ZN8BalancerILh2EE6updateEv+0x3248>
3248:	e8 00 00 00 00       	callq  324d <_ZN8BalancerILh2EE6updateEv+0x324d>
324d:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3255 <_ZN8BalancerILh2EE6updateEv+0x3255>
3254:	00 
3255:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 325d <_ZN8BalancerILh2EE6updateEv+0x325d>
325c:	00 
325d:	4d 85 e4             	test   %r12,%r12
3260:	74 06                	je     3268 <_ZN8BalancerILh2EE6updateEv+0x3268>
3262:	41 f6 c4 03          	test   $0x3,%r12b
3266:	74 0f                	je     3277 <_ZN8BalancerILh2EE6updateEv+0x3277>
3268:	4c 89 e6             	mov    %r12,%rsi
326b:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 3272 <_ZN8BalancerILh2EE6updateEv+0x3272>
3272:	e8 00 00 00 00       	callq  3277 <_ZN8BalancerILh2EE6updateEv+0x3277>
3277:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 327f <_ZN8BalancerILh2EE6updateEv+0x327f>
327e:	00 
327f:	49 c1 ed 03          	shr    $0x3,%r13
3283:	41 c6 85 00 80 ff 7f 	movb   $0xf8,0x7fff8000(%r13)
328a:	f8 
328b:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3293 <_ZN8BalancerILh2EE6updateEv+0x3293>
3292:	00 
3293:	48 8d 83 c0 f3 ff ff 	lea    -0xc40(%rbx),%rax
329a:	48 c1 e8 03          	shr    $0x3,%rax
329e:	c6 80 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rax)
32a5:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 32ad <_ZN8BalancerILh2EE6updateEv+0x32ad>
32ac:	00 
32ad:	4d 85 e4             	test   %r12,%r12
32b0:	74 06                	je     32b8 <_ZN8BalancerILh2EE6updateEv+0x32b8>
32b2:	41 f6 c4 03          	test   $0x3,%r12b
32b6:	74 0f                	je     32c7 <_ZN8BalancerILh2EE6updateEv+0x32c7>
32b8:	4c 89 e6             	mov    %r12,%rsi
32bb:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 32c2 <_ZN8BalancerILh2EE6updateEv+0x32c2>
32c2:	e8 00 00 00 00       	callq  32c7 <_ZN8BalancerILh2EE6updateEv+0x32c7>
32c7:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 32cf <_ZN8BalancerILh2EE6updateEv+0x32cf>
32ce:	00 
    CNL_NODISCARD constexpr auto operator()(_value_type const& s) const
32cf:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 32d7 <_ZN8BalancerILh2EE6updateEv+0x32d7>
32d6:	00 
        return _impl::default_scale<Digits, Radix, _value_type>{}(s);
32d7:	4c 8d b3 c0 fc ff ff 	lea    -0x340(%rbx),%r14
32de:	4c 89 f0             	mov    %r14,%rax
32e1:	48 c1 e8 03          	shr    $0x3,%rax
32e5:	c6 80 00 80 ff 7f 04 	movb   $0x4,0x7fff8000(%rax)
32ec:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 32f4 <_ZN8BalancerILh2EE6updateEv+0x32f4>
32f3:	00 
32f4:	48 8d 43 80          	lea    -0x80(%rbx),%rax
32f8:	48 c1 e8 03          	shr    $0x3,%rax
32fc:	c6 80 00 80 ff 7f 00 	movb   $0x0,0x7fff8000(%rax)
3303:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 330b <_ZN8BalancerILh2EE6updateEv+0x330b>
330a:	00 
330b:	48 8d 83 40 f5 ff ff 	lea    -0xac0(%rbx),%rax
3312:	48 c1 e8 03          	shr    $0x3,%rax
3316:	c6 80 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rax)
331d:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3325 <_ZN8BalancerILh2EE6updateEv+0x3325>
3324:	00 
3325:	4d 85 e4             	test   %r12,%r12
3328:	74 06                	je     3330 <_ZN8BalancerILh2EE6updateEv+0x3330>
332a:	41 f6 c4 03          	test   $0x3,%r12b
332e:	74 0f                	je     333f <_ZN8BalancerILh2EE6updateEv+0x333f>
3330:	4c 89 e6             	mov    %r12,%rsi
3333:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 333a <_ZN8BalancerILh2EE6updateEv+0x333a>
333a:	e8 00 00 00 00       	callq  333f <_ZN8BalancerILh2EE6updateEv+0x333f>
333f:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3347 <_ZN8BalancerILh2EE6updateEv+0x3347>
3346:	00 
        CNL_NODISCARD constexpr auto operator()(S const& s) const
3347:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 334f <_ZN8BalancerILh2EE6updateEv+0x334f>
334e:	00 
            return s*power_value<S, Digits, Radix>();
334f:	48 8d bb 00 fd ff ff 	lea    -0x300(%rbx),%rdi
3356:	48 89 f8             	mov    %rdi,%rax
3359:	48 c1 e8 03          	shr    $0x3,%rax
335d:	c6 80 00 80 ff 7f 04 	movb   $0x4,0x7fff8000(%rax)
3364:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 336c <_ZN8BalancerILh2EE6updateEv+0x336c>
336b:	00 
336c:	8a 80 00 80 ff 7f    	mov    0x7fff8000(%rax),%al
3372:	84 c0                	test   %al,%al
3374:	74 09                	je     337f <_ZN8BalancerILh2EE6updateEv+0x337f>
3376:	3c 03                	cmp    $0x3,%al
3378:	7f 05                	jg     337f <_ZN8BalancerILh2EE6updateEv+0x337f>
337a:	e8 00 00 00 00       	callq  337f <_ZN8BalancerILh2EE6updateEv+0x337f>
337f:	c7 83 00 fd ff ff 00 	movl   $0x100,-0x300(%rbx)
3386:	01 00 00 
3389:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3391 <_ZN8BalancerILh2EE6updateEv+0x3391>
3390:	00 
    CNL_DEFINE_BINARY_OPERATOR(*, multiply_op)
3391:	48 8d 83 c0 f5 ff ff 	lea    -0xa40(%rbx),%rax
3398:	48 c1 e8 03          	shr    $0x3,%rax
339c:	c6 80 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rax)
33a3:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 33ab <_ZN8BalancerILh2EE6updateEv+0x33ab>
33aa:	00 
33ab:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 33b3 <_ZN8BalancerILh2EE6updateEv+0x33b3>
33b2:	00 
33b3:	4d 85 e4             	test   %r12,%r12
33b6:	74 06                	je     33be <_ZN8BalancerILh2EE6updateEv+0x33be>
33b8:	41 f6 c4 03          	test   $0x3,%r12b
33bc:	74 0f                	je     33cd <_ZN8BalancerILh2EE6updateEv+0x33cd>
33be:	4c 89 e6             	mov    %r12,%rsi
33c1:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 33c8 <_ZN8BalancerILh2EE6updateEv+0x33c8>
33c8:	e8 00 00 00 00       	callq  33cd <_ZN8BalancerILh2EE6updateEv+0x33cd>
33cd:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 33d5 <_ZN8BalancerILh2EE6updateEv+0x33d5>
33d4:	00 
    CNL_NODISCARD constexpr auto operator()(lhs_type const& lhs, rhs_type const& rhs) const
33d5:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 33dd <_ZN8BalancerILh2EE6updateEv+0x33dd>
33dc:	00 
                cnl::binary_operator<OverflowTag, Operator, LhsRep, RhsRep>{}(
33dd:	48 8d 43 c0          	lea    -0x40(%rbx),%rax
33e1:	48 c1 e8 03          	shr    $0x3,%rax
33e5:	c6 80 00 80 ff 7f 00 	movb   $0x0,0x7fff8000(%rax)
33ec:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 33f4 <_ZN8BalancerILh2EE6updateEv+0x33f4>
33f3:	00 
33f4:	48 8d 83 00 f6 ff ff 	lea    -0xa00(%rbx),%rax
33fb:	48 c1 e8 03          	shr    $0x3,%rax
33ff:	c6 80 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rax)
3406:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 340e <_ZN8BalancerILh2EE6updateEv+0x340e>
340d:	00 
340e:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3416 <_ZN8BalancerILh2EE6updateEv+0x3416>
3415:	00 
3416:	48 8d 83 00 f7 ff ff 	lea    -0x900(%rbx),%rax
341d:	48 c1 e8 03          	shr    $0x3,%rax
3421:	c6 80 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rax)
3428:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3430 <_ZN8BalancerILh2EE6updateEv+0x3430>
342f:	00 
3430:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3438 <_ZN8BalancerILh2EE6updateEv+0x3438>
3437:	00 
3438:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3440 <_ZN8BalancerILh2EE6updateEv+0x3440>
343f:	00 
    CNL_NODISCARD constexpr Rep const& operator()(Derived const& number) const {
3440:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3448 <_ZN8BalancerILh2EE6updateEv+0x3448>
3447:	00 
3448:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3450 <_ZN8BalancerILh2EE6updateEv+0x3450>
344f:	00 
3450:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3458 <_ZN8BalancerILh2EE6updateEv+0x3458>
3457:	00 
3458:	c6 80 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rax)
345f:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3467 <_ZN8BalancerILh2EE6updateEv+0x3467>
3466:	00 
3467:	4d 85 e4             	test   %r12,%r12
346a:	74 06                	je     3472 <_ZN8BalancerILh2EE6updateEv+0x3472>
346c:	41 f6 c4 03          	test   $0x3,%r12b
3470:	74 0f                	je     3481 <_ZN8BalancerILh2EE6updateEv+0x3481>
3472:	4c 89 e6             	mov    %r12,%rsi
3475:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 347c <_ZN8BalancerILh2EE6updateEv+0x347c>
347c:	e8 00 00 00 00       	callq  3481 <_ZN8BalancerILh2EE6updateEv+0x3481>
3481:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3489 <_ZN8BalancerILh2EE6updateEv+0x3489>
3488:	00 
3489:	4c 8d ab c0 f6 ff ff 	lea    -0x940(%rbx),%r13
3490:	4c 89 e8             	mov    %r13,%rax
3493:	48 c1 e8 03          	shr    $0x3,%rax
3497:	c6 80 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rax)
349e:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 34a6 <_ZN8BalancerILh2EE6updateEv+0x34a6>
34a5:	00 
34a6:	4d 85 e4             	test   %r12,%r12
34a9:	74 06                	je     34b1 <_ZN8BalancerILh2EE6updateEv+0x34b1>
34ab:	41 f6 c4 03          	test   $0x3,%r12b
34af:	74 0f                	je     34c0 <_ZN8BalancerILh2EE6updateEv+0x34c0>
34b1:	4c 89 e6             	mov    %r12,%rsi
34b4:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 34bb <_ZN8BalancerILh2EE6updateEv+0x34bb>
34bb:	e8 00 00 00 00       	callq  34c0 <_ZN8BalancerILh2EE6updateEv+0x34c0>
34c0:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 34c8 <_ZN8BalancerILh2EE6updateEv+0x34c8>
34c7:	00 
34c8:	4d 85 e4             	test   %r12,%r12
34cb:	74 06                	je     34d3 <_ZN8BalancerILh2EE6updateEv+0x34d3>
34cd:	41 f6 c4 03          	test   $0x3,%r12b
34d1:	74 0f                	je     34e2 <_ZN8BalancerILh2EE6updateEv+0x34e2>
34d3:	4c 89 e6             	mov    %r12,%rsi
34d6:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 34dd <_ZN8BalancerILh2EE6updateEv+0x34dd>
34dd:	e8 00 00 00 00       	callq  34e2 <_ZN8BalancerILh2EE6updateEv+0x34e2>
34e2:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 34ea <_ZN8BalancerILh2EE6updateEv+0x34ea>
34e9:	00 
        return number._rep;
34ea:	4d 85 e4             	test   %r12,%r12
34ed:	74 06                	je     34f5 <_ZN8BalancerILh2EE6updateEv+0x34f5>
34ef:	41 f6 c4 03          	test   $0x3,%r12b
34f3:	74 0f                	je     3504 <_ZN8BalancerILh2EE6updateEv+0x3504>
34f5:	4c 89 e6             	mov    %r12,%rsi
34f8:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 34ff <_ZN8BalancerILh2EE6updateEv+0x34ff>
34ff:	e8 00 00 00 00       	callq  3504 <_ZN8BalancerILh2EE6updateEv+0x3504>
3504:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 350c <_ZN8BalancerILh2EE6updateEv+0x350c>
350b:	00 
350c:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3514 <_ZN8BalancerILh2EE6updateEv+0x3514>
3513:	00 
3514:	4d 85 e4             	test   %r12,%r12
3517:	74 06                	je     351f <_ZN8BalancerILh2EE6updateEv+0x351f>
3519:	41 f6 c4 03          	test   $0x3,%r12b
351d:	74 0f                	je     352e <_ZN8BalancerILh2EE6updateEv+0x352e>
351f:	4c 89 e6             	mov    %r12,%rsi
3522:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 3529 <_ZN8BalancerILh2EE6updateEv+0x3529>
3529:	e8 00 00 00 00       	callq  352e <_ZN8BalancerILh2EE6updateEv+0x352e>
352e:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3536 <_ZN8BalancerILh2EE6updateEv+0x3536>
3535:	00 
3536:	49 c1 ed 03          	shr    $0x3,%r13
353a:	41 c6 85 00 80 ff 7f 	movb   $0xf8,0x7fff8000(%r13)
3541:	f8 
3542:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 354a <_ZN8BalancerILh2EE6updateEv+0x354a>
3549:	00 
354a:	48 8d 93 80 f6 ff ff 	lea    -0x980(%rbx),%rdx
3551:	48 c1 ea 03          	shr    $0x3,%rdx
3555:	c6 82 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rdx)
355c:	48 89 95 a0 e5 ff ff 	mov    %rdx,-0x1a60(%rbp)
3563:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 356b <_ZN8BalancerILh2EE6updateEv+0x356b>
356a:	00 
        CNL_NODISCARD constexpr auto operator()(Lhs const& lhs, Rhs const& rhs) const -> decltype(lhs*rhs)
356b:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3573 <_ZN8BalancerILh2EE6updateEv+0x3573>
3572:	00 
3573:	48 8d 8b 40 f7 ff ff 	lea    -0x8c0(%rbx),%rcx
357a:	48 c1 e9 03          	shr    $0x3,%rcx
357e:	c6 81 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rcx)
3585:	48 89 8d a8 e5 ff ff 	mov    %rcx,-0x1a58(%rbp)
358c:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3594 <_ZN8BalancerILh2EE6updateEv+0x3594>
3593:	00 
3594:	4c 8d ab 00 fd ff ff 	lea    -0x300(%rbx),%r13
359b:	4c 89 e7             	mov    %r12,%rdi
359e:	4c 89 ee             	mov    %r13,%rsi
35a1:	e8 00 00 00 00       	callq  35a6 <_ZN8BalancerILh2EE6updateEv+0x35a6>
35a6:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 35ae <_ZN8BalancerILh2EE6updateEv+0x35ae>
35ad:	00 
35ae:	48 8b 8d a8 e5 ff ff 	mov    -0x1a58(%rbp),%rcx
35b5:	c6 81 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rcx)
35bc:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 35c4 <_ZN8BalancerILh2EE6updateEv+0x35c4>
35c3:	00 
35c4:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 35cc <_ZN8BalancerILh2EE6updateEv+0x35cc>
35cb:	00 
35cc:	48 8b 95 a0 e5 ff ff 	mov    -0x1a60(%rbp),%rdx
35d3:	c6 82 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rdx)
35da:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 35e2 <_ZN8BalancerILh2EE6updateEv+0x35e2>
35e1:	00 
35e2:	48 8d 7b c0          	lea    -0x40(%rbx),%rdi
35e6:	48 89 f9             	mov    %rdi,%rcx
35e9:	48 c1 e9 03          	shr    $0x3,%rcx
35ed:	80 b9 00 80 ff 7f 00 	cmpb   $0x0,0x7fff8000(%rcx)
35f4:	74 05                	je     35fb <_ZN8BalancerILh2EE6updateEv+0x35fb>
35f6:	e8 00 00 00 00       	callq  35fb <_ZN8BalancerILh2EE6updateEv+0x35fb>
35fb:	48 89 8d a0 e5 ff ff 	mov    %rcx,-0x1a60(%rbp)
3602:	48 89 43 c0          	mov    %rax,-0x40(%rbx)
3606:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 360e <_ZN8BalancerILh2EE6updateEv+0x360e>
360d:	00 
360e:	48 8d 93 40 f6 ff ff 	lea    -0x9c0(%rbx),%rdx
3615:	48 c1 ea 03          	shr    $0x3,%rdx
3619:	c6 82 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rdx)
3620:	48 89 95 a8 e5 ff ff 	mov    %rdx,-0x1a58(%rbp)
3627:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 362f <_ZN8BalancerILh2EE6updateEv+0x362f>
362e:	00 
362f:	e8 00 00 00 00       	callq  3634 <_ZN8BalancerILh2EE6updateEv+0x3634>
3634:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 363c <_ZN8BalancerILh2EE6updateEv+0x363c>
363b:	00 
363c:	48 8b 95 a8 e5 ff ff 	mov    -0x1a58(%rbp),%rdx
3643:	c6 82 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rdx)
364a:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3652 <_ZN8BalancerILh2EE6updateEv+0x3652>
3651:	00 
3652:	48 8b 8d a0 e5 ff ff 	mov    -0x1a60(%rbp),%rcx
3659:	c6 81 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rcx)
3660:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3668 <_ZN8BalancerILh2EE6updateEv+0x3668>
3667:	00 
3668:	48 8d 93 00 f6 ff ff 	lea    -0xa00(%rbx),%rdx
366f:	48 c1 ea 03          	shr    $0x3,%rdx
3673:	c6 82 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rdx)
367a:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3682 <_ZN8BalancerILh2EE6updateEv+0x3682>
3681:	00 
3682:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 368a <_ZN8BalancerILh2EE6updateEv+0x368a>
3689:	00 
368a:	48 8d 93 c0 f5 ff ff 	lea    -0xa40(%rbx),%rdx
3691:	48 c1 ea 03          	shr    $0x3,%rdx
3695:	c6 82 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rdx)
369c:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 36a4 <_ZN8BalancerILh2EE6updateEv+0x36a4>
36a3:	00 
36a4:	49 c1 ed 03          	shr    $0x3,%r13
36a8:	41 c6 85 00 80 ff 7f 	movb   $0xf8,0x7fff8000(%r13)
36af:	f8 
36b0:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 36b8 <_ZN8BalancerILh2EE6updateEv+0x36b8>
36b7:	00 
        return _impl::default_scale<Digits, Radix, _value_type>{}(s);
36b8:	4c 8d 6b 80          	lea    -0x80(%rbx),%r13
36bc:	4c 89 ea             	mov    %r13,%rdx
36bf:	48 c1 ea 03          	shr    $0x3,%rdx
36c3:	80 ba 00 80 ff 7f 00 	cmpb   $0x0,0x7fff8000(%rdx)
36ca:	74 08                	je     36d4 <_ZN8BalancerILh2EE6updateEv+0x36d4>
36cc:	4c 89 ef             	mov    %r13,%rdi
36cf:	e8 00 00 00 00       	callq  36d4 <_ZN8BalancerILh2EE6updateEv+0x36d4>
36d4:	48 89 43 80          	mov    %rax,-0x80(%rbx)
36d8:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 36e0 <_ZN8BalancerILh2EE6updateEv+0x36e0>
36df:	00 
36e0:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 36e8 <_ZN8BalancerILh2EE6updateEv+0x36e8>
36e7:	00 
    constexpr overflow_integer(overflow_integer<RhsRep, RhsOverflowTag> const& rhs)
36e8:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 36f0 <_ZN8BalancerILh2EE6updateEv+0x36f0>
36ef:	00 
36f0:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 36f8 <_ZN8BalancerILh2EE6updateEv+0x36f8>
36f7:	00 
36f8:	48 8d 83 80 f5 ff ff 	lea    -0xa80(%rbx),%rax
36ff:	48 c1 e8 03          	shr    $0x3,%rax
3703:	c6 80 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rax)
370a:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3712 <_ZN8BalancerILh2EE6updateEv+0x3712>
3711:	00 
3712:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 371a <_ZN8BalancerILh2EE6updateEv+0x371a>
3719:	00 
371a:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3722 <_ZN8BalancerILh2EE6updateEv+0x3722>
3721:	00 
3722:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 372a <_ZN8BalancerILh2EE6updateEv+0x372a>
3729:	00 
372a:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3732 <_ZN8BalancerILh2EE6updateEv+0x3732>
3731:	00 
3732:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 373a <_ZN8BalancerILh2EE6updateEv+0x373a>
3739:	00 
373a:	c6 80 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rax)
3741:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3749 <_ZN8BalancerILh2EE6updateEv+0x3749>
3748:	00 
            :overflow_integer(_impl::to_rep(rhs))
3749:	48 8d 83 c0 fc ff ff 	lea    -0x340(%rbx),%rax
3750:	4c 89 ee             	mov    %r13,%rsi
3753:	48 89 c7             	mov    %rax,%rdi
3756:	48 89 85 a8 e5 ff ff 	mov    %rax,-0x1a58(%rbp)
375d:	e8 00 00 00 00       	callq  3762 <_ZN8BalancerILh2EE6updateEv+0x3762>
3762:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 376a <_ZN8BalancerILh2EE6updateEv+0x376a>
3769:	00 
        return _impl::default_scale<Digits, Radix, _value_type>{}(s);
376a:	48 8b 85 a8 e5 ff ff 	mov    -0x1a58(%rbp),%rax
3771:	48 89 c2             	mov    %rax,%rdx
3774:	48 c1 ea 03          	shr    $0x3,%rdx
3778:	8a 92 00 80 ff 7f    	mov    0x7fff8000(%rdx),%dl
377e:	84 d2                	test   %dl,%dl
3780:	74 0d                	je     378f <_ZN8BalancerILh2EE6updateEv+0x378f>
3782:	80 fa 03             	cmp    $0x3,%dl
3785:	7f 08                	jg     378f <_ZN8BalancerILh2EE6updateEv+0x378f>
3787:	48 89 c7             	mov    %rax,%rdi
378a:	e8 00 00 00 00       	callq  378f <_ZN8BalancerILh2EE6updateEv+0x378f>
378f:	8b 93 c0 fc ff ff    	mov    -0x340(%rbx),%edx
3795:	49 c1 ee 03          	shr    $0x3,%r14
3799:	41 c6 86 00 80 ff 7f 	movb   $0xf8,0x7fff8000(%r14)
37a0:	f8 
37a1:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 37a9 <_ZN8BalancerILh2EE6updateEv+0x37a9>
37a8:	00 
37a9:	49 c1 ed 03          	shr    $0x3,%r13
37ad:	41 c6 85 00 80 ff 7f 	movb   $0xf8,0x7fff8000(%r13)
37b4:	f8 
37b5:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 37bd <_ZN8BalancerILh2EE6updateEv+0x37bd>
37bc:	00 
37bd:	48 8d 83 40 f5 ff ff 	lea    -0xac0(%rbx),%rax
37c4:	48 c1 e8 03          	shr    $0x3,%rax
37c8:	c6 80 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rax)
37cf:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 37d7 <_ZN8BalancerILh2EE6updateEv+0x37d7>
37d6:	00 
37d7:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 37df <_ZN8BalancerILh2EE6updateEv+0x37df>
37de:	00 
        return cnl::scale<Digits, Radix, S>{}(s);
37df:	48 8d 83 c0 f3 ff ff 	lea    -0xc40(%rbx),%rax
37e6:	48 c1 e8 03          	shr    $0x3,%rax
37ea:	c6 80 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rax)
37f1:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 37f9 <_ZN8BalancerILh2EE6updateEv+0x37f9>
37f8:	00 
37f9:	48 8d bb 40 fc ff ff 	lea    -0x3c0(%rbx),%rdi
3800:	48 89 f8             	mov    %rdi,%rax
3803:	48 c1 e8 03          	shr    $0x3,%rax
3807:	8a 80 00 80 ff 7f    	mov    0x7fff8000(%rax),%al
380d:	84 c0                	test   %al,%al
380f:	74 09                	je     381a <_ZN8BalancerILh2EE6updateEv+0x381a>
3811:	3c 03                	cmp    $0x3,%al
3813:	7f 05                	jg     381a <_ZN8BalancerILh2EE6updateEv+0x381a>
3815:	e8 00 00 00 00       	callq  381a <_ZN8BalancerILh2EE6updateEv+0x381a>
381a:	89 93 40 fc ff ff    	mov    %edx,-0x3c0(%rbx)
3820:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3828 <_ZN8BalancerILh2EE6updateEv+0x3828>
3827:	00 
3828:	48 8d 93 80 f3 ff ff 	lea    -0xc80(%rbx),%rdx
382f:	48 89 d0             	mov    %rdx,%rax
3832:	48 c1 e8 03          	shr    $0x3,%rax
3836:	c6 80 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rax)
383d:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3845 <_ZN8BalancerILh2EE6updateEv+0x3845>
3844:	00 
    CNL_NODISCARD constexpr auto operator()(Rep const& r) const
3845:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 384d <_ZN8BalancerILh2EE6updateEv+0x384d>
384c:	00 
        return scaled_integer<Rep, power<Exponent, Radix>>(r, 0);
384d:	48 8d 83 80 fc ff ff 	lea    -0x380(%rbx),%rax
3854:	48 c1 e8 03          	shr    $0x3,%rax
3858:	c6 80 00 80 ff 7f 04 	movb   $0x4,0x7fff8000(%rax)
385f:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3867 <_ZN8BalancerILh2EE6updateEv+0x3867>
3866:	00 
3867:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 386f <_ZN8BalancerILh2EE6updateEv+0x386f>
386e:	00 
386f:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3877 <_ZN8BalancerILh2EE6updateEv+0x3877>
3876:	00 
3877:	48 89 f8             	mov    %rdi,%rax
387a:	48 c1 e8 03          	shr    $0x3,%rax
387e:	8a 80 00 80 ff 7f    	mov    0x7fff8000(%rax),%al
3884:	84 c0                	test   %al,%al
3886:	74 09                	je     3891 <_ZN8BalancerILh2EE6updateEv+0x3891>
3888:	3c 03                	cmp    $0x3,%al
388a:	7f 05                	jg     3891 <_ZN8BalancerILh2EE6updateEv+0x3891>
388c:	e8 00 00 00 00       	callq  3891 <_ZN8BalancerILh2EE6updateEv+0x3891>
3891:	8b bb 40 fc ff ff    	mov    -0x3c0(%rbx),%edi
    constexpr scaled_integer(rep r, int)
3897:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 389f <_ZN8BalancerILh2EE6updateEv+0x389f>
389e:	00 
389f:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 38a7 <_ZN8BalancerILh2EE6updateEv+0x38a7>
38a6:	00 
38a7:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 38af <_ZN8BalancerILh2EE6updateEv+0x38af>
38ae:	00 
38af:	48 8d 83 80 fd ff ff 	lea    -0x280(%rbx),%rax
38b6:	48 89 c1             	mov    %rax,%rcx
38b9:	48 c1 e9 03          	shr    $0x3,%rcx
38bd:	40 8a b1 00 80 ff 7f 	mov    0x7fff8000(%rcx),%sil
38c4:	48 89 c1             	mov    %rax,%rcx
38c7:	83 e1 07             	and    $0x7,%ecx
38ca:	83 c1 03             	add    $0x3,%ecx
38cd:	40 38 f1             	cmp    %sil,%cl
38d0:	7c 0d                	jl     38df <_ZN8BalancerILh2EE6updateEv+0x38df>
38d2:	40 84 f6             	test   %sil,%sil
38d5:	74 08                	je     38df <_ZN8BalancerILh2EE6updateEv+0x38df>
38d7:	48 89 c7             	mov    %rax,%rdi
38da:	e8 00 00 00 00       	callq  38df <_ZN8BalancerILh2EE6updateEv+0x38df>
38df:	89 bb 80 fd ff ff    	mov    %edi,-0x280(%rbx)
        explicit constexpr number_base(rep r)
38e5:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 38ed <_ZN8BalancerILh2EE6updateEv+0x38ed>
38ec:	00 
move(_Tp&& __t) noexcept
38ed:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 38f5 <_ZN8BalancerILh2EE6updateEv+0x38f5>
38f4:	00 
38f5:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 38fd <_ZN8BalancerILh2EE6updateEv+0x38fd>
38fc:	00 
38fd:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3905 <_ZN8BalancerILh2EE6updateEv+0x3905>
3904:	00 
3905:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 390d <_ZN8BalancerILh2EE6updateEv+0x390d>
390c:	00 
            : _rep(std::move(r)) { }
390d:	48 8d bb 80 fc ff ff 	lea    -0x380(%rbx),%rdi
3914:	48 89 f9             	mov    %rdi,%rcx
3917:	48 c1 e9 03          	shr    $0x3,%rcx
391b:	8a 89 00 80 ff 7f    	mov    0x7fff8000(%rcx),%cl
3921:	84 c9                	test   %cl,%cl
3923:	74 0a                	je     392f <_ZN8BalancerILh2EE6updateEv+0x392f>
3925:	80 f9 03             	cmp    $0x3,%cl
3928:	7f 05                	jg     392f <_ZN8BalancerILh2EE6updateEv+0x392f>
392a:	e8 00 00 00 00       	callq  392f <_ZN8BalancerILh2EE6updateEv+0x392f>
392f:	48 89 c1             	mov    %rax,%rcx
3932:	48 c1 e9 03          	shr    $0x3,%rcx
3936:	40 8a b1 00 80 ff 7f 	mov    0x7fff8000(%rcx),%sil
393d:	48 89 c1             	mov    %rax,%rcx
3940:	83 e1 07             	and    $0x7,%ecx
3943:	83 c1 03             	add    $0x3,%ecx
3946:	40 38 f1             	cmp    %sil,%cl
3949:	7c 0d                	jl     3958 <_ZN8BalancerILh2EE6updateEv+0x3958>
394b:	40 84 f6             	test   %sil,%sil
394e:	74 08                	je     3958 <_ZN8BalancerILh2EE6updateEv+0x3958>
3950:	48 89 c7             	mov    %rax,%rdi
3953:	e8 00 00 00 00       	callq  3958 <_ZN8BalancerILh2EE6updateEv+0x3958>
3958:	8b 83 80 fd ff ff    	mov    -0x280(%rbx),%eax
395e:	89 83 80 fc ff ff    	mov    %eax,-0x380(%rbx)
3964:	48 89 f8             	mov    %rdi,%rax
3967:	48 c1 e8 03          	shr    $0x3,%rax
396b:	8a 80 00 80 ff 7f    	mov    0x7fff8000(%rax),%al
3971:	84 c0                	test   %al,%al
3973:	74 09                	je     397e <_ZN8BalancerILh2EE6updateEv+0x397e>
3975:	3c 03                	cmp    $0x3,%al
3977:	7f 05                	jg     397e <_ZN8BalancerILh2EE6updateEv+0x397e>
3979:	e8 00 00 00 00       	callq  397e <_ZN8BalancerILh2EE6updateEv+0x397e>
397e:	8b 8b 80 fc ff ff    	mov    -0x380(%rbx),%ecx
3984:	48 8d 83 80 fc ff ff 	lea    -0x380(%rbx),%rax
398b:	48 c1 e8 03          	shr    $0x3,%rax
398f:	c6 80 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rax)
3996:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 399e <_ZN8BalancerILh2EE6updateEv+0x399e>
399d:	00 
399e:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 39a6 <_ZN8BalancerILh2EE6updateEv+0x39a6>
39a5:	00 
39a6:	48 c1 ea 03          	shr    $0x3,%rdx
39aa:	c6 82 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rdx)
39b1:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 39b9 <_ZN8BalancerILh2EE6updateEv+0x39b9>
39b8:	00 
                _impl::from_rep<scaled_integer<LhsRep, power<_common_exponent, Radix>>>(
39b9:	48 8d bb 00 fc ff ff 	lea    -0x400(%rbx),%rdi
39c0:	48 89 f8             	mov    %rdi,%rax
39c3:	48 c1 e8 03          	shr    $0x3,%rax
39c7:	8a 80 00 80 ff 7f    	mov    0x7fff8000(%rax),%al
39cd:	84 c0                	test   %al,%al
39cf:	74 09                	je     39da <_ZN8BalancerILh2EE6updateEv+0x39da>
39d1:	3c 03                	cmp    $0x3,%al
39d3:	7f 05                	jg     39da <_ZN8BalancerILh2EE6updateEv+0x39da>
39d5:	e8 00 00 00 00       	callq  39da <_ZN8BalancerILh2EE6updateEv+0x39da>
39da:	89 8b 00 fc ff ff    	mov    %ecx,-0x400(%rbx)
39e0:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 39e8 <_ZN8BalancerILh2EE6updateEv+0x39e8>
39e7:	00 
        CNL_NODISCARD constexpr auto operator()(Lhs const& lhs, Rhs const& rhs) const -> decltype(lhs+rhs)
39e8:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 39f0 <_ZN8BalancerILh2EE6updateEv+0x39f0>
39ef:	00 
    CNL_DEFINE_BINARY_OPERATOR(+, add_op)
39f0:	48 8d 93 00 f5 ff ff 	lea    -0xb00(%rbx),%rdx
39f7:	48 c1 ea 03          	shr    $0x3,%rdx
39fb:	c6 82 00 80 ff 7f 01 	movb   $0x1,0x7fff8000(%rdx)
3a02:	48 89 95 a8 e5 ff ff 	mov    %rdx,-0x1a58(%rbp)
3a09:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3a11 <_ZN8BalancerILh2EE6updateEv+0x3a11>
3a10:	00 
3a11:	4c 8d ab 80 fb ff ff 	lea    -0x480(%rbx),%r13
3a18:	4c 8d b3 00 fc ff ff 	lea    -0x400(%rbx),%r14
3a1f:	4c 89 ee             	mov    %r13,%rsi
3a22:	4c 89 f7             	mov    %r14,%rdi
3a25:	e8 00 00 00 00       	callq  3a2a <_ZN8BalancerILh2EE6updateEv+0x3a2a>
3a2a:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3a32 <_ZN8BalancerILh2EE6updateEv+0x3a32>
3a31:	00 
3a32:	48 8b 95 a8 e5 ff ff 	mov    -0x1a58(%rbp),%rdx
3a39:	c6 82 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rdx)
3a40:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3a48 <_ZN8BalancerILh2EE6updateEv+0x3a48>
3a47:	00 
3a48:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3a50 <_ZN8BalancerILh2EE6updateEv+0x3a50>
3a4f:	00 
3a50:	49 c1 ee 03          	shr    $0x3,%r14
3a54:	41 c6 86 00 80 ff 7f 	movb   $0xf8,0x7fff8000(%r14)
3a5b:	f8 
3a5c:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3a64 <_ZN8BalancerILh2EE6updateEv+0x3a64>
3a63:	00 
                        _impl::scale<_lhs_left_shift, Radix>(_impl::to_rep(lhs))),
3a64:	48 8d 93 40 fc ff ff 	lea    -0x3c0(%rbx),%rdx
3a6b:	48 c1 ea 03          	shr    $0x3,%rdx
3a6f:	c6 82 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rdx)
3a76:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3a7e <_ZN8BalancerILh2EE6updateEv+0x3a7e>
3a7d:	00 
                _impl::from_rep<scaled_integer<RhsRep, power<_common_exponent, Radix>>>(
3a7e:	49 c1 ed 03          	shr    $0x3,%r13
3a82:	41 c6 85 00 80 ff 7f 	movb   $0xf8,0x7fff8000(%r13)
3a89:	f8 
3a8a:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3a92 <_ZN8BalancerILh2EE6updateEv+0x3a92>
3a91:	00 
                        _impl::scale<_rhs_left_shift, Radix>(_impl::to_rep(rhs))));
3a92:	48 8d 93 c0 fb ff ff 	lea    -0x440(%rbx),%rdx
3a99:	48 c1 ea 03          	shr    $0x3,%rdx
3a9d:	c6 82 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rdx)
3aa4:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3aac <_ZN8BalancerILh2EE6updateEv+0x3aac>
3aab:	00 
        return Operator{}(
3aac:	48 8d 93 40 f3 ff ff 	lea    -0xcc0(%rbx),%rdx
3ab3:	48 c1 ea 03          	shr    $0x3,%rdx
3ab7:	c6 82 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rdx)
3abe:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3ac6 <_ZN8BalancerILh2EE6updateEv+0x3ac6>
3ac5:	00 
3ac6:	4c 8d ab 40 ff ff ff 	lea    -0xc0(%rbx),%r13
3acd:	4c 89 ea             	mov    %r13,%rdx
3ad0:	48 c1 ea 03          	shr    $0x3,%rdx
3ad4:	80 ba 00 80 ff 7f 00 	cmpb   $0x0,0x7fff8000(%rdx)
3adb:	74 08                	je     3ae5 <_ZN8BalancerILh2EE6updateEv+0x3ae5>
3add:	4c 89 ef             	mov    %r13,%rdi
3ae0:	e8 00 00 00 00       	callq  3ae5 <_ZN8BalancerILh2EE6updateEv+0x3ae5>
3ae5:	48 89 83 40 ff ff ff 	mov    %rax,-0xc0(%rbx)
3aec:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3af4 <_ZN8BalancerILh2EE6updateEv+0x3af4>
3af3:	00 
3af4:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3afc <_ZN8BalancerILh2EE6updateEv+0x3afc>
3afb:	00 
3afc:	4c 8d b3 40 fb ff ff 	lea    -0x4c0(%rbx),%r14
3b03:	4c 89 ee             	mov    %r13,%rsi
3b06:	4c 89 f7             	mov    %r14,%rdi
3b09:	e8 00 00 00 00       	callq  3b0e <_ZN8BalancerILh2EE6updateEv+0x3b0e>
3b0e:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3b16 <_ZN8BalancerILh2EE6updateEv+0x3b16>
3b15:	00 
3b16:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3b1e <_ZN8BalancerILh2EE6updateEv+0x3b1e>
3b1d:	00 
3b1e:	4d 85 e4             	test   %r12,%r12
3b21:	74 06                	je     3b29 <_ZN8BalancerILh2EE6updateEv+0x3b29>
3b23:	41 f6 c4 03          	test   $0x3,%r12b
3b27:	74 0f                	je     3b38 <_ZN8BalancerILh2EE6updateEv+0x3b38>
3b29:	4c 89 e6             	mov    %r12,%rsi
3b2c:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 3b33 <_ZN8BalancerILh2EE6updateEv+0x3b33>
3b33:	e8 00 00 00 00       	callq  3b38 <_ZN8BalancerILh2EE6updateEv+0x3b38>
3b38:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3b40 <_ZN8BalancerILh2EE6updateEv+0x3b40>
3b3f:	00 
3b40:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3b48 <_ZN8BalancerILh2EE6updateEv+0x3b48>
3b47:	00 
3b48:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3b50 <_ZN8BalancerILh2EE6updateEv+0x3b50>
3b4f:	00 
3b50:	48 8b 85 e8 e5 ff ff 	mov    -0x1a18(%rbp),%rax
3b57:	48 8d 78 08          	lea    0x8(%rax),%rdi
3b5b:	48 89 f8             	mov    %rdi,%rax
3b5e:	48 c1 e8 03          	shr    $0x3,%rax
3b62:	8a 90 00 80 ff 7f    	mov    0x7fff8000(%rax),%dl
3b68:	48 89 f8             	mov    %rdi,%rax
3b6b:	83 e0 07             	and    $0x7,%eax
3b6e:	83 c0 03             	add    $0x3,%eax
3b71:	38 d0                	cmp    %dl,%al
3b73:	7c 09                	jl     3b7e <_ZN8BalancerILh2EE6updateEv+0x3b7e>
3b75:	84 d2                	test   %dl,%dl
3b77:	74 05                	je     3b7e <_ZN8BalancerILh2EE6updateEv+0x3b7e>
3b79:	e8 00 00 00 00       	callq  3b7e <_ZN8BalancerILh2EE6updateEv+0x3b7e>
3b7e:	4c 89 f0             	mov    %r14,%rax
3b81:	48 c1 e8 03          	shr    $0x3,%rax
3b85:	8a 80 00 80 ff 7f    	mov    0x7fff8000(%rax),%al
3b8b:	84 c0                	test   %al,%al
3b8d:	74 0c                	je     3b9b <_ZN8BalancerILh2EE6updateEv+0x3b9b>
3b8f:	3c 03                	cmp    $0x3,%al
3b91:	7f 08                	jg     3b9b <_ZN8BalancerILh2EE6updateEv+0x3b9b>
3b93:	4c 89 f7             	mov    %r14,%rdi
3b96:	e8 00 00 00 00       	callq  3b9b <_ZN8BalancerILh2EE6updateEv+0x3b9b>
3b9b:	8b 83 40 fb ff ff    	mov    -0x4c0(%rbx),%eax
3ba1:	48 8b 8d e8 e5 ff ff 	mov    -0x1a18(%rbp),%rcx
3ba8:	49 c1 ee 03          	shr    $0x3,%r14
3bac:	89 41 08             	mov    %eax,0x8(%rcx)
3baf:	41 c6 86 00 80 ff 7f 	movb   $0xf8,0x7fff8000(%r14)
3bb6:	f8 
3bb7:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3bbf <_ZN8BalancerILh2EE6updateEv+0x3bbf>
3bbe:	00 
3bbf:	49 c1 ed 03          	shr    $0x3,%r13
3bc3:	41 c6 85 00 80 ff 7f 	movb   $0xf8,0x7fff8000(%r13)
3bca:	f8 
3bcb:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3bd3 <_ZN8BalancerILh2EE6updateEv+0x3bd3>
3bd2:	00 
3bd3:	48 8d 83 00 f3 ff ff 	lea    -0xd00(%rbx),%rax
3bda:	48 c1 e8 03          	shr    $0x3,%rax
3bde:	c6 80 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rax)
3be5:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3bed <_ZN8BalancerILh2EE6updateEv+0x3bed>
3bec:	00 
3bed:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3bf5 <_ZN8BalancerILh2EE6updateEv+0x3bf5>
3bf4:	00 
    CNL_DEFINE_COMPOUND_ASSIGNMENT_OPERATOR(+=, assign_add_op)
3bf5:	4d 85 e4             	test   %r12,%r12
3bf8:	74 06                	je     3c00 <_ZN8BalancerILh2EE6updateEv+0x3c00>
3bfa:	41 f6 c4 03          	test   $0x3,%r12b
3bfe:	74 0f                	je     3c0f <_ZN8BalancerILh2EE6updateEv+0x3c0f>
3c00:	4c 89 e6             	mov    %r12,%rsi
3c03:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 3c0a <_ZN8BalancerILh2EE6updateEv+0x3c0a>
3c0a:	e8 00 00 00 00       	callq  3c0f <_ZN8BalancerILh2EE6updateEv+0x3c0f>
3c0f:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3c17 <_ZN8BalancerILh2EE6updateEv+0x3c17>
3c16:	00 
3c17:	48 8d 83 c0 f2 ff ff 	lea    -0xd40(%rbx),%rax
3c1e:	48 c1 e8 03          	shr    $0x3,%rax
3c22:	c6 80 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rax)
3c29:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3c31 <_ZN8BalancerILh2EE6updateEv+0x3c31>
3c30:	00 
3c31:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3c39 <_ZN8BalancerILh2EE6updateEv+0x3c39>
3c38:	00 
  operator++() _GLIBCXX_NOEXCEPT
3c39:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3c41 <_ZN8BalancerILh2EE6updateEv+0x3c41>
3c40:	00 
++_M_current;
3c41:	48 8b 85 c8 e5 ff ff 	mov    -0x1a38(%rbp),%rax
3c48:	80 b8 00 80 ff 7f 00 	cmpb   $0x0,0x7fff8000(%rax)
3c4f:	74 0c                	je     3c5d <_ZN8BalancerILh2EE6updateEv+0x3c5d>
3c51:	48 8b bd e0 e5 ff ff 	mov    -0x1a20(%rbp),%rdi
3c58:	e8 00 00 00 00       	callq  3c5d <_ZN8BalancerILh2EE6updateEv+0x3c5d>
3c5d:	48 8b b3 80 fe ff ff 	mov    -0x180(%rbx),%rsi
3c64:	4c 8d 66 0c          	lea    0xc(%rsi),%r12
3c68:	48 83 fe f4          	cmp    $0xfffffffffffffff4,%rsi
3c6c:	72 0f                	jb     3c7d <_ZN8BalancerILh2EE6updateEv+0x3c7d>
3c6e:	4c 89 e2             	mov    %r12,%rdx
3c71:	48 8d 3d 00 00 00 00 	lea    0x0(%rip),%rdi        # 3c78 <_ZN8BalancerILh2EE6updateEv+0x3c78>
3c78:	e8 00 00 00 00       	callq  3c7d <_ZN8BalancerILh2EE6updateEv+0x3c7d>
3c7d:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3c85 <_ZN8BalancerILh2EE6updateEv+0x3c85>
3c84:	00 
3c85:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3c8d <_ZN8BalancerILh2EE6updateEv+0x3c8d>
3c8c:	00 
3c8d:	48 8b 85 e0 e5 ff ff 	mov    -0x1a20(%rbp),%rax
3c94:	48 c1 e8 03          	shr    $0x3,%rax
3c98:	80 b8 00 80 ff 7f 00 	cmpb   $0x0,0x7fff8000(%rax)
3c9f:	74 0c                	je     3cad <_ZN8BalancerILh2EE6updateEv+0x3cad>
3ca1:	48 8b bd e0 e5 ff ff 	mov    -0x1a20(%rbp),%rdi
3ca8:	e8 00 00 00 00       	callq  3cad <_ZN8BalancerILh2EE6updateEv+0x3cad>
3cad:	4c 89 a3 80 fe ff ff 	mov    %r12,-0x180(%rbx)
3cb4:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3cbc <_ZN8BalancerILh2EE6updateEv+0x3cbc>
3cbb:	00 
3cbc:	e9 92 ef ff ff       	jmpq   2c53 <_ZN8BalancerILh2EE6updateEv+0x2c53>
3cc1:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3cc9 <_ZN8BalancerILh2EE6updateEv+0x3cc9>
3cc8:	00 
3cc9:	48 8b 8d c8 e5 ff ff 	mov    -0x1a38(%rbp),%rcx
3cd0:	c6 81 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rcx)
3cd7:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3cdf <_ZN8BalancerILh2EE6updateEv+0x3cdf>
3cde:	00 
3cdf:	c6 80 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rax)
3ce6:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3cee <_ZN8BalancerILh2EE6updateEv+0x3cee>
3ced:	00 
3cee:	48 8b 85 b0 e5 ff ff 	mov    -0x1a50(%rbp),%rax
3cf5:	48 c1 e8 03          	shr    $0x3,%rax
3cf9:	c6 80 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rax)
3d00:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3d08 <_ZN8BalancerILh2EE6updateEv+0x3d08>
3d07:	00 
3d08:	48 8d 83 80 f7 ff ff 	lea    -0x880(%rbx),%rax
3d0f:	48 c1 e8 03          	shr    $0x3,%rax
3d13:	c6 80 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rax)
3d1a:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3d22 <_ZN8BalancerILh2EE6updateEv+0x3d22>
3d21:	00 
3d22:	48 81 eb 40 08 00 00 	sub    $0x840,%rbx
3d29:	48 c1 eb 03          	shr    $0x3,%rbx
3d2d:	c6 83 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rbx)
3d34:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3d3c <_ZN8BalancerILh2EE6updateEv+0x3d3c>
3d3b:	00 
3d3c:	48 8b 85 d0 e5 ff ff 	mov    -0x1a30(%rbp),%rax
3d43:	48 c1 e8 03          	shr    $0x3,%rax
3d47:	c6 80 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rax)
3d4e:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3d56 <_ZN8BalancerILh2EE6updateEv+0x3d56>
3d55:	00 
3d56:	48 8b 85 c0 e5 ff ff 	mov    -0x1a40(%rbp),%rax
3d5d:	48 c1 e8 03          	shr    $0x3,%rax
3d61:	c6 80 00 80 ff 7f f8 	movb   $0xf8,0x7fff8000(%rax)
3d68:	f0 48 ff 05 00 00 00 	lock incq 0x0(%rip)        # 3d70 <_ZN8BalancerILh2EE6updateEv+0x3d70>
3d6f:	00 
void update()
3d70:	48 8b 8d d8 e5 ff ff 	mov    -0x1a28(%rbp),%rcx
3d77:	48 39 8d b8 e5 ff ff 	cmp    %rcx,-0x1a48(%rbp)
3d7e:	74 21                	je     3da1 <_ZN8BalancerILh2EE6updateEv+0x3da1>
3d80:	48 c7 01 0e 36 e0 45 	movq   $0x45e0360e,(%rcx)
3d87:	48 8b 95 b8 e5 ff ff 	mov    -0x1a48(%rbp),%rdx
3d8e:	be c0 19 00 00       	mov    $0x19c0,%esi
3d93:	48 8b bd d8 e5 ff ff 	mov    -0x1a28(%rbp),%rdi
3d9a:	e8 00 00 00 00       	callq  3d9f <_ZN8BalancerILh2EE6updateEv+0x3d9f>
3d9f:	eb 10                	jmp    3db1 <_ZN8BalancerILh2EE6updateEv+0x3db1>
3da1:	49 8d bf 00 80 ff 7f 	lea    0x7fff8000(%r15),%rdi
3da8:	b9 ce 00 00 00       	mov    $0xce,%ecx
3dad:	31 c0                	xor    %eax,%eax
3daf:	f3 ab                	rep stos %eax,%es:(%rdi)
}
3db1:	48 8b 45 c8          	mov    -0x38(%rbp),%rax
3db5:	64 48 33 04 25 28 00 	xor    %fs:0x28,%rax
3dbc:	00 00 
3dbe:	74 05                	je     3dc5 <_ZN8BalancerILh2EE6updateEv+0x3dc5>
3dc0:	e8 00 00 00 00       	callq  3dc5 <_ZN8BalancerILh2EE6updateEv+0x3dc5>
3dc5:	48 81 c4 38 1a 00 00 	add    $0x1a38,%rsp
3dcc:	5b                   	pop    %rbx
3dcd:	41 5c                	pop    %r12
3dcf:	41 5d                	pop    %r13
3dd1:	41 5e                	pop    %r14
3dd3:	41 5f                	pop    %r15
3dd5:	5d                   	pop    %rbp
3dd6:	c3                   	retq   

elcojacobs avatar Nov 15 '19 15:11 elcojacobs

Another issue I noticed: Why do the commented lines result in an overflow exception? https://godbolt.org/z/fv5NKk

Same program with fsanitize doesn't even work: https://godbolt.org/z/MtmYsW

elcojacobs avatar Nov 15 '19 15:11 elcojacobs

Thanks for the feedback.

You've identified two issues so I'm going to break the second out into #522. (You're welcome to submit multiple issues where there are different things going on.)

Regarding the ASan bloat, this appears to affect GCC worse than Clang and is less pronounced in GCC 9. Much of the increase appears to be due to line number data. Likely this improves diagnostics for lines where an address-related error occurs. I've no idea whether ASan really thinks that address-related errors could happen at each of those points in the CNL code. However, I would expect this to be an overhead which is less prominent in a larger program.

It's entirely expected for sanitizer instrumentation to add to binary size but it's certainly a surprise to see this. I'd like to re-visit this at a later date and/or keep an eye out for similar levels of bloat in other libraries that rely heavily on inlining. Also, this may be of interest to P1832 which is concerned with the cost of such library abstractions.

Here is a reduction of the issue without the for loop. (Smaller examples like this are generaly better.)

@elcojacobs what are you expectations for using ASan? I don't think it's optimized for producing production code and I think this kind of binary size increase might actually be expected.

johnmcfarlane avatar Nov 17 '19 15:11 johnmcfarlane

Thanks for looking into it John. I added the for loop to prevent the compiler from optimizing the calculations away.

I absolutely expect the sanitizer to insert some extra code to check memory access. But even in your extremely minimal example, the disassembly is over 3000 lines. I am not using ASAN in my production builds, but as you can imagine, having 3000 extra lines makes the unit tests run very, very slow.

But even without ASAN, the test runner is 39 MB with this version of CNL. With the previous version, it was 27 MB and it compiled and ran much quicker.

These are the changes, nothing noteworthy except for the CNL update I think: https://github.com/BrewBlox/brewblox-firmware/compare/edge...elcojacobs:feature/cnl-updates

CNL version was updated from 2508fdf020e4332563d8365320ca0bb931d7be61 to c92bb6e7fb30d0190a185e9a7fbdbba51e7cf213

There is a huge difference in test durations. Total test duration went from 80 seconds to 685 seconds. https://docs.google.com/spreadsheets/d/1znhdH8NkQ8I3tQjc_BVFrxrp8AER7dm78YNCMqTEn5M/edit?usp=sharing

This is without ASAN. I do have some custom to_string handling. I'll check whether it gets better when I revert that to the updated CNL to_chars. Edit: custom to_string function seems not to be the cause.

elcojacobs avatar Nov 17 '19 23:11 elcojacobs

Can you confirm that this doesn't affect optimised builds? Also, if you are using a Debug configuration, have you tried -Og?

CNL -- like many C++ libraries that rely heavily on inlining -- doesn't perform well in non-optimised builds. There's a chance that I've increased the typical call graph depth in the areas of the library you are using. But that's probably best treated in separation from the sanitizer question.

This general problem is the main topic of the WG21 paper http://wg21.link/p1832 I mentioned and I am trying to improve the situation by engaging tooling experts and raising awareness within the committee.

Any data you can offer on the subject will be helpful. However, unless this affects optimised builds, I cannot promise that I'll prioritise it.

On Sun 17 Nov 2019, 23:24 Elco Jacobs, [email protected] wrote:

Thanks for looking into it John. I added the for loop to prevent the compiler from optimizing the calculations away.

I absolutely expect the sanitizer to insert some extra code to check memory access. But even in your extremely minimal example, the disassembly is over 3000 lines. I am not using ASAN in my production builds, but as you can imagine, having 3000 extra lines makes the unit tests run very, very slow.

But even without ASAN, the test runner is 39 MB with this version of CNL. With the previous version, it was 27 MB and it compiled and ran much quicker.

These are the changes, nothing noteworthy except for the CNL update I think: BrewBlox/[email protected]:feature/cnl-updates https://github.com/BrewBlox/brewblox-firmware/compare/edge...elcojacobs:feature/cnl-updates

CNL version was updated from 2508fdf https://github.com/johnmcfarlane/cnl/commit/2508fdf020e4332563d8365320ca0bb931d7be61 to c92bb6e https://github.com/johnmcfarlane/cnl/commit/c92bb6e7fb30d0190a185e9a7fbdbba51e7cf213

There is a huge difference in test durations:

https://docs.google.com/spreadsheets/d/1znhdH8NkQ8I3tQjc_BVFrxrp8AER7dm78YNCMqTEn5M/edit?usp=sharing

This is without ASAN. I do have some custom to_string handling. I'll check whether it gets better when I revert that to the updated CNL to_chars.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/johnmcfarlane/cnl/issues/521?email_source=notifications&email_token=AAFTGNZRJWWFZJFKB6WUT6TQUHHDHA5CNFSM4JN4EVJKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEEIZGQQ#issuecomment-554799938, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAFTGN6GQSCYPN4JX6SYO3LQUHHDHANCNFSM4JN4EVJA .

johnmcfarlane avatar Nov 18 '19 11:11 johnmcfarlane

I was compiling with -Og. I have even tried compiling with -Os and -O3. I'll try to profile the code with callgrind, see if I can find the performance bottlenecks and isolate a minimal unit test exposing it.

elcojacobs avatar Nov 18 '19 12:11 elcojacobs

I isolated some tests in a separate build:

https://github.com/elcojacobs/brewblox-firmware/tree/feature/cnl-updates/lib/cnltest

In the profiler, I saw that almost all execution time was spent in to_chars, which is understandably a heavy function that also pollutes the cache. It turns out that the catch test function INFO(...) caused the issue. This will do a string conversion on every loop.

With INFO() calls:

3.981 s: Fixedpoint calculations
0.505 s: Equivalent integer calculations
===============================================================================
All tests passed (5956582 assertions in 2 test cases)

Without:

0.252 s: Fixedpoint calculations
0.222 s: Equivalent integer calculations
===============================================================================
All tests passed (5956582 assertions in 2 test cases)

So the performance issue can be closed. To_chars probably became a bit heavier compared to an earlier release, but it was my fault having it included in critical loops. Contrary to checks, INFO(...) calls seem to always do the string conversion.

elcojacobs avatar Nov 18 '19 16:11 elcojacobs

That was not the entire story!

cnl::convert_operator was not optimizing away and accounted for a huge chunk of the execution time. I could be using the library incorrectly, but perhaps it is valid data point for you.

I'm not opening a new issue yet, because I am still unsure where the problem is. Feel free to create one.

Before this commit https://github.com/elcojacobs/brewblox-firmware/commit/fcecbd123cd6a74ab9b3d1c64eb0b1d89049e115:

Execution time: time build/lib_test_runner [pid] -> 22 seconds

After that commit:

Execution time: time build/lib_test_runner [pid] -> 12.5 seconds

Callgrind visualization: image

Callgrind visualization: image

As you can see, the call to ActuatorPwm::setting completely disappeared. I believe the other bottlenecks are similar issues.

Note that this does not compile:

        uint64_t unScaledTime = m_dutySetting * m_period;
        m_dutyTime = unScaledTime / 100;

But this does:

auto unScaledTime = m_dutySetting * m_period;
m_dutyTime = uint64_t(unScaledTime) / 100;

Error:

/home/elco/repos/firmware/lib/src/ActuatorPwm.cpp:29:49: error: cannot convert ‘cnl::scaled_integer<cnl::overflow_integer<cnl::elastic_integer<55, cnl::rounding_integer<cnl::_impl::wide_integer<31, int>, cnl::native_rounding_tag> >, cnl::saturated_overflow_tag>, cnl::power<-12, 2> >’ to ‘uint64_t’ {aka ‘long unsigned int’} in initialization
         uint64_t unScaledTime = m_dutySetting * m_period;
                                                 ^~~~~~~~

My previous version did compile, but did not inline properly. I think instead of the error above it somehow created a deeply nested template call to work around it.

elcojacobs avatar Nov 18 '19 18:11 elcojacobs

Profiling screenshot with template arguments:

image

It looks like my tests are spending most of the time in this conversion. With native rounding, it shouldn't be more than a binary shift, right?

elcojacobs avatar Nov 19 '19 19:11 elcojacobs

With these changes https://github.com/elcojacobs/brewblox-firmware/commit/065caeced992997cbdad8a19e56ec8689fa991bf , the time spent in PID::update() is reduced to 10%. But it does make the tests fail.

The error seems to be here:

out_t excess = (pidResult - outputSetting) / m_kp;

pidResult, outputSetting and m_kp are all of type cnl::static_number<Digits, Exponent, cnl::native_rounding_tag, cnl::saturated_overflow_tag, Narrowest>;

The debugger shows that integer values of the variables are: (211476 - 163840) / -40960 = -1.16. The value of excess after the calculation is -4096.

So the value is rounded during the calculation and 1 << 12 is returned.

Reproduced on Godbolt: https://godbolt.org/z/XDuNFk

I'll create an issue for this too.

elcojacobs avatar Nov 19 '19 21:11 elcojacobs

Thanks for all the info, here is status update from my side:

With these changes: https://github.com/BrewBlox/brewblox-firmware/compare/fcecbd123cd6a74ab9b3d1c64eb0b1d89049e115...elcojacobs:feature/cnl-updates

The total runtime of the tests (without sanitizer) is reduced to 4.7 seconds!

With sanitizer enabled, 2 minutes. Typical slowdown introduced by AddressSanitizer is 2x, so this is a bit excessive.

CLANG supports -fsanitize-blacklist, but gcc does not unfortunately. Because my code needs to compile for arm, I am stuck with gcc. https://clang.llvm.org/docs/AddressSanitizer.html#suppressing-errors-in-recompiled-code-blacklist

GCC does support an attribute to disable sanitizer for certain functions, but I would have to be able to inject this before CNL function declarations https://clang.llvm.org/docs/AddressSanitizer.html#disabling-instrumentation-with-attribute-no-sanitize-address It also does not seem to work when I try it like this: https://godbolt.org/z/RWCMcn

When the declaration is made a constexpr, asan still generates an error, but not a bloated binary.

#include <cnl/static_number.h>

int foo(){
    constexpr auto a = cnl::static_number<1, 0>{};
    return static_cast<int>(a);
}

int main() {    
    return foo(); 
}

https://godbolt.org/z/p9YrjR

elcojacobs avatar Nov 21 '19 15:11 elcojacobs

I now have test passing and binary size not increased much with the latest version: https://github.com/BrewBlox/brewblox-firmware/pull/158/files

It required quite a few changes, mainly casting the result returned by cnl::quotient to constrain the number of bits. I used the map file (with http://www.sikorskiy.net/prj/amap/) to see which places still included cnl namespace functions and tweaked the call sites until they were mostly optimized away. I also used callgrind + kcachegrind to assess performance and find these places were optimization failed.

Looks like I can switch to the recent version now. I postponed updating since March because of the code bloat issues, but now I much better understand them and can work around them. If it interests you, these are the changes that were required (compared the the version from March):

https://github.com/BrewBlox/brewblox-firmware/pull/158/files

elcojacobs avatar Nov 21 '19 23:11 elcojacobs

Rather than casting the result of quotient, consider specifying the desired type as the template parameter. Alternatively, consider using fraction in the constructor as demonstrated in this example from #524. This technique may produce different results -- at least when non-native rounding is used -- and may reduce the necessary width.

johnmcfarlane avatar Nov 25 '19 00:11 johnmcfarlane

I am casting the result, because specifying the desired type as a template parameter gives unexpected results when the precision is increased. Is this a bug or am I doing it wrong?

There is no test code in CNL that uses cnl::quotient with a desired type.

https://godbolt.org/z/gjnSDm

Converting fraction to a higher precision also gives the same unexpected result. https://godbolt.org/z/DuuFTB

Does fraction require C++17? Embedded I'm stuck in C++14 land. make_fraction seem to work on C++14 though.

elcojacobs avatar Nov 26 '19 17:11 elcojacobs

No, that's definitely not desired behavior. Thanks for pointing it out.

On Tue, 26 Nov 2019 at 17:47, Elco Jacobs [email protected] wrote:

I am casting the result, because specifying the desired type as a template parameter gives unexpected results when the precision is increased. Is this a bug or am I doing it wrong?

There is no test code in CNL that uses cnl::quotient with a desired type.

https://godbolt.org/z/gjnSDm

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/johnmcfarlane/cnl/issues/521?email_source=notifications&email_token=AAFTGN64Q63DWGT5KTIZNY3QVVOMJA5CNFSM4JN4EVJKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEFG4BYQ#issuecomment-558743778, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAFTGN4MRZVTMPKSLXR4BP3QVVOMJANCNFSM4JN4EVJA .

johnmcfarlane avatar Nov 27 '19 00:11 johnmcfarlane

And yes, initialising a class template without the <> like that is class template argument deduction, a C++17 feature. The best alternative is the make_ functions in C++14.

johnmcfarlane avatar Nov 27 '19 00:11 johnmcfarlane

Updated repros:

  • https://godbolt.org/z/Mo91EaqTe
  • https://godbolt.org/z/o4MdGc1ja I had to comment out some of the second on because it was timing out. Once these produce sensible results, I'll close this issue.

johnmcfarlane avatar Mar 27 '21 21:03 johnmcfarlane

Hi John, I can finally use C++20 and upgrade cnl! It seems to be a drop-in replacement. All tests are still passing. I'm now looking at which new features I can use to improve and which old workarounds I can skip.

Looking at the the old issues I created, I see that the 2 links above still produce incorrect results for the call with the template specifier.

elcojacobs avatar Mar 17 '23 14:03 elcojacobs

Hi Elco. Glad to hear it. Be warned that the 2.0 API is not at all stable and that I've not been actively working on CNL recently.

On Fri, 17 Mar 2023 at 14:11, Elco Jacobs @.***> wrote:

Hi John, I can finally use C++20 and upgrade cnl! It seems to be a drop-in replacement. All tests are still passing. I'm now looking at which new features I can use to improve and which old workarounds I can skip.

Looking at the the old issues I created, I see that the 2 links above still produce incorrect results for the call with the template specifier.

— Reply to this email directly, view it on GitHub https://github.com/johnmcfarlane/cnl/issues/521#issuecomment-1473905436, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAFTGN54EQT7TIB3Z446NU3W4RWJPANCNFSM4JN4EVJA . You are receiving this because you commented.Message ID: @.***>

johnmcfarlane avatar Mar 20 '23 15:03 johnmcfarlane

It passed all my unit tests. I'm fine with the api not being stable as long as the code is correct. It looks like it's at least as good as the 1.x version I was on. Would you recommend staying on 1.x instead?

Do you plan to continue development in the future? I don't think anything comes close.

elcojacobs avatar Mar 20 '23 23:03 elcojacobs

Thanks. I'm honestly not sure at the moment. Certainly if I do, I'll likely continue with 2.x.

I have also thought about starting a 3.x branch some time in the future, dropping C++20. The main reasons to move to C++23 would be if deducing this reduced the headache of operator overloads significantly, or if it made modules much easier to support.

However, I'm interested in making 2.x stable first as C++20 is a sweet spot for arithmetic types. And I've no immediate plans to do that either.

On Mon, 20 Mar 2023 at 23:16, Elco Jacobs @.***> wrote:

It passed all my unit tests. I'm fine with the api not being stable as long as the code is correct. It looks like it's at least as good as the 1.x version I was on. Would you recommend staying on 1.x instead?

Do you plan to continue development in the future? I don't think anything comes close.

— Reply to this email directly, view it on GitHub https://github.com/johnmcfarlane/cnl/issues/521#issuecomment-1477075583, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAFTGNYWDQC4YYNNLDRHQSLW5DQOJANCNFSM4JN4EVJA . You are receiving this because you commented.Message ID: @.***>

johnmcfarlane avatar Mar 21 '23 10:03 johnmcfarlane

Yeah I bet concepts will make the code much easier to write and maintain.

I couldn't find a comparison of 2.x and 1.x. Is there a functional difference?

If you would like to discuss any plans with a daily user of your library, I would be happy to chat on Skype, discord or similar. It has served me well.

elcojacobs avatar Mar 21 '23 12:03 elcojacobs

Feedback is always welcome, but as I am not concentrating on CNL currently, issues might be the best medium for recording potential improvements. It could be some other developer who shares the same perspective and takes on future changes.

The main difference between 2.x and 1.x currently is reduction of boilerplate around type deduction (C++14 and above), and concepts replacing SFINAE.

On Tue, 21 Mar 2023 at 12:15, Elco Jacobs @.***> wrote:

Yeah I bet concepts will make the code much easier to write and maintain.

I couldn't find a comparison of 2.x and 1.x. Is there a functional difference?

If you would like to discuss any plans with a daily user of your library, I would be happy to chat on Skype, discord or similar. It has served me well.

— Reply to this email directly, view it on GitHub https://github.com/johnmcfarlane/cnl/issues/521#issuecomment-1477736375, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAFTGN4X5EQ3YSR2RGBS6XTW5GLVZANCNFSM4JN4EVJA . You are receiving this because you commented.Message ID: @.***>

johnmcfarlane avatar Mar 22 '23 15:03 johnmcfarlane