; assembly | /* r2dec pseudo code output */ | /* ball_fileobserver2.t/none @ 0x426aa0 */ | #include | ; (fcn) sym._anonymous_namespace_::publishRecord_BloombergLP::ball::FileObserver2__char_const_ () | uint64_t anonymous_namespace_::publishRecord_BloombergLP::ball::FileObserver2_char_const_ (char * arg2, char * arg1) { | int64_t var_8h; | int64_t var_10h; | int64_t var_18h; | int64_t var_28h; | int64_t var_40h; | uint32_t var_60h; | int64_t var_68h; | int64_t var_78h; | int64_t var_90h; | uint32_t var_98h; | int64_t var_a0h; | int64_t var_b0h; | int64_t var_d8h; | int64_t var_f0h; | char * var_f8h; | char * var_100h; | int64_t var_108h; | char * var_110h; | int64_t var_118h; | rsi = arg2; | rdi = arg1; | /* (anonymous namespace)::publishRecord(BloombergLP::ball::FileObserver2*, char const*) */ 0x00426aa0 push rbp | 0x00426aa1 push r15 | 0x00426aa3 push r14 | 0x00426aa5 push r13 | 0x00426aa7 push r12 | 0x00426aa9 push rbx | 0x00426aaa sub rsp, 0x228 | 0x00426ab1 mov r15, rsi | r15 = rsi; 0x00426ab4 mov r14, rdi | r14 = rdi; 0x00426ab7 movabs r13, 0x8000000000000000 | r13 = 0x8000000000000000; 0x00426ac1 call 0x45cf50 | rax = BloombergLP::bdlt::DatetimeImpUtil::epoch_1970_01_01() (); 0x00426ac6 mov rbx, rax | rbx = rax; 0x00426ac9 mov rax, qword [rip + 0x2b4a58] | rax = BloombergLP::bdlt::CurrentTime::s_currenttimeCallback_p; 0x00426ad0 call rax | rax = void (*rax)() (); 0x00426ad2 mov r12, rax | r12 = rax; 0x00426ad5 mov ebp, edx | 0x00426ad7 mov rbx, qword [rbx] | rbx = *(rbx); 0x00426ada test rbx, rbx | | if (rbx >= 0) { 0x00426add jns 0x426d3d | goto label_3; | } | label_2: 0x00426ae3 movabs rax, 0x1ffffffc00 | rax = 0x1ffffffc00; 0x00426aed mov rcx, rbx | rcx = rbx; 0x00426af0 and rcx, rax | rcx &= rax; 0x00426af3 movabs rdx, 0xffffffebe228a000 | rdx = 0xffffffebe228a000; 0x00426afd add rdx, rcx | rdx += rcx; 0x00426b00 shr rdx, 0xa | rdx >>= 0xa; 0x00426b04 mov rcx, rbx | rcx = rbx; 0x00426b07 shr rcx, 0x25 | rcx >>= 0x25; 0x00426b0b and ecx, 0x3ffffff | ecx &= 0x3ffffff; 0x00426b11 movabs rsi, 0x141dd76000 | rsi = 0x141dd76000; 0x00426b1b imul rcx, rsi | rcx *= rsi; 0x00426b1f or rax, 0x3ff | rax |= 0x3ff; 0x00426b25 and rax, rbx | rax &= rbx; 0x00426b28 xor edi, edi | edi = 0; 0x00426b2a cmp rdx, 0x35a4e9 | | if (rdx >= 0x35a4e9) { 0x00426b31 cmovae rdi, rax | rdi = rax; | } 0x00426b35 add rdi, rcx | rdi += rcx; 0x00426b38 imul rax, r12, 0xf4240 | rax = r12 * 0xf4240; 0x00426b3f movsxd rcx, ebp | rcx = (int64_t) ebp; 0x00426b42 imul rcx, rcx, 0x10624dd3 | rcx *= 0x10624dd3; 0x00426b49 mov rdx, rcx | rdx = rcx; 0x00426b4c shr rdx, 0x3f | rdx >>= 0x3f; 0x00426b50 sar rcx, 0x26 | rcx >>= 0x26; 0x00426b54 add ecx, edx | ecx += edx; 0x00426b56 movsxd rcx, ecx | rcx = (int64_t) ecx; 0x00426b59 add rcx, rax | rcx += rax; 0x00426b5c add rcx, rdi | rcx += rdi; 0x00426b5f movabs rdx, 0x32e73fb956a1b897 | rdx = 0x32e73fb956a1b897; 0x00426b69 mov rax, rcx | rax = rcx; 0x00426b6c mul rdx | rdx:rax = rax * rdx; 0x00426b6f shr rdx, 0x22 | rdx >>= 0x22; 0x00426b73 mov rax, rdx | rax = rdx; 0x00426b76 shl rax, 0x25 | rax <<= 0x25; 0x00426b7a imul rdx, rsi | rdx *= rsi; 0x00426b7e sub rcx, rdx | rcx -= rdx; 0x00426b81 or rcx, rax | rcx |= rax; 0x00426b84 or rcx, r13 | rcx |= r13; 0x00426b87 mov qword [rsp + 0xf8], rcx | *((rsp + 0xf8)) = rcx; 0x00426b8f lea rdi, [rsp + 0x28] | 0x00426b94 lea rsi, [rsp + 0xf8] | 0x00426b9c mov ecx, 2 | 0x00426ba1 mov r8d, 0x48fcbd | 0x00426ba7 mov edx, 1 | 0x00426bac mov r9d, 3 | 0x00426bb2 push 0 | 0x00426bb4 push r15 | 0x00426bb6 push 0x20 | 0x00426bb8 push 0x491114 | 0x00426bbd call 0x43aef0 | BloombergLP::ball::RecordAttributes::RecordAttributes(BloombergLP::bdlt::Datetimeconst&,int,unsigned long long,char const*,int,char const*,int,char const*,BloombergLP::bslma::Allocator*) (rsp + 0x28, rsp + 0xf8, 1, 2, 0x48fcbd, 3); 0x00426bc2 add rsp, 0x20 | 0x00426bc6 mov rax, qword [rip + 0x2b745b] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00426bcd test rax, rax | | if (rax == 0) { 0x00426bd0 jne 0x426bd7 | 0x00426bd2 call 0x4668f0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } 0x00426bd7 xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x00426bda movaps xmmword [rsp], xmm0 | *(rsp) = xmm0; 0x00426bde mov qword [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00426be7 mov qword [rsp + 0x18], rax | *((rsp + 0x18)) = rax; 0x00426bec lea rdi, [rsp + 0xf8] | 0x00426bf4 lea rsi, [rsp + 0x28] | 0x00426bf9 mov rdx, rsp | 0x00426bfc xor ecx, ecx | 0x00426bfe call 0x4290f0 | BloombergLP::ball::Record::Record(BloombergLP::ball::RecordAttributesconst&,BloombergLP::ball::UserFieldsconst&,BloombergLP::bslma::Allocator*) (rsp + 0xf8, rsp + 0x28, rsp, 0); 0x00426c03 mov rbx, qword [rsp] | rbx = *(rsp); 0x00426c07 test rbx, rbx | | if (rbx == 0) { 0x00426c0a je 0x426c86 | goto label_4; | } 0x00426c0c mov rbp, qword [rsp + 8] | rbp = *((rsp + 8)); 0x00426c11 cmp rbx, rbp | | if (rbx != rbp) { 0x00426c14 jne 0x426c38 | goto label_5; | } 0x00426c16 jmp 0x426c78 | goto label_6; | label_1: 0x00426c20 mov qword [rbx + 0x18], 0xffffffffffffffff | *((rbx + 0x18)) = 0xffffffffffffffff; | label_0: 0x00426c28 mov dword [rbx + 0x30], 0 | *((rbx + 0x30)) = 0; | do { 0x00426c2f add rbx, 0x40 | rbx += 0x40; 0x00426c33 cmp rbp, rbx | | if (rbp == rbx) { 0x00426c36 je 0x426c74 | goto label_7; | } | label_5: 0x00426c38 mov eax, dword [rbx + 0x30] | eax = *((rbx + 0x30)); 0x00426c3b test eax, eax | 0x00426c3d je 0x426c2f | | } while (eax == 0); 0x00426c3f cmp eax, 5 | | if (eax == 5) { 0x00426c42 je 0x426c60 | goto label_8; | } 0x00426c44 cmp eax, 3 | | if (eax != 3) { 0x00426c47 jne 0x426c28 | goto label_0; | } 0x00426c49 cmp qword [rbx + 0x20], 0x17 | | if (*((rbx + 0x20)) == 0x17) { 0x00426c4e je 0x426c20 | goto label_1; | } 0x00426c50 mov rsi, qword [rbx] | rsi = *(rbx); 0x00426c53 mov rdi, qword [rbx + 0x28] | rdi = *((rbx + 0x28)); 0x00426c57 mov rax, qword [rdi] | rax = *(rdi); 0x00426c5a call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x00426c5d jmp 0x426c20 | goto label_1; | label_8: 0x00426c60 mov rsi, qword [rbx] | rsi = *(rbx); 0x00426c63 test rsi, rsi | | if (rsi == 0) { 0x00426c66 je 0x426c28 | goto label_0; | } 0x00426c68 mov rdi, qword [rbx + 0x18] | rdi = *((rbx + 0x18)); 0x00426c6c mov rax, qword [rdi] | rax = *(rdi); 0x00426c6f call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x00426c72 jmp 0x426c28 | goto label_0; | label_7: 0x00426c74 mov rbx, qword [rsp] | rbx = *(rsp); | label_6: 0x00426c78 mov rdi, qword [rsp + 0x18] | rdi = *((rsp + 0x18)); 0x00426c7d mov rax, qword [rdi] | rax = *(rdi); 0x00426c80 mov rsi, rbx | rsi = rbx; 0x00426c83 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | label_4: 0x00426c86 mov qword [rsp], 0 | 0x00426c8e mov dword [rsp + 8], 1 | *((rsp + 8)) = 1; 0x00426c96 mov rax, qword [r14] | rax = *(r14); 0x00426c99 lea rsi, [rsp + 0xf8] | rsi = rsp + 0xf8; 0x00426ca1 mov rdx, rsp | rdx = rsp; 0x00426ca4 mov rdi, r14 | rdi = r14; 0x00426ca7 call qword [rax + 0x10] | uint64_t (*rax + 0x10)(void) (0); 0x00426caa lea rdi, [rsp + 0xf8] | 0x00426cb2 call 0x4293c0 | BloombergLP::ball::Record::~Record() (rsp + 0xf8); 0x00426cb7 lea rbx, [rsp + 0xb0] | rbx = rsp + 0xb0; 0x00426cbf mov qword [rsp + 0xb0], 0x496ce0 | *((rsp + 0xb0)) = vtable.BloombergLP::bdlsb::MemOutStreamBuf.0; 0x00426ccb mov rsi, qword [rsp + 0xd8] | rsi = *((rsp + 0xd8)); 0x00426cd3 mov rdi, qword [rsp + 0xf0] | rdi = *((rsp + 0xf0)); 0x00426cdb mov rax, qword [rdi] | rax = *(rdi); 0x00426cde call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x00426ce1 mov rdi, rbx | rdi = rbx; 0x00426ce4 call 0x406e00 | std::_1::basic_streambuf>::~basic_streambuf() (); 0x00426ce9 cmp qword [rsp + 0x98], 0x17 | | if (*((rsp + 0x98)) != 0x17) { 0x00426cf2 je 0x426d07 | 0x00426cf4 mov rsi, qword [rsp + 0x78] | rsi = *((rsp + 0x78)); 0x00426cf9 mov rdi, qword [rsp + 0xa0] | rdi = *((rsp + 0xa0)); 0x00426d01 mov rax, qword [rdi] | rax = *(rdi); 0x00426d04 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x00426d07 mov qword [rsp + 0x90], 0xffffffffffffffff | *((rsp + 0x90)) = 0xffffffffffffffff; 0x00426d13 cmp qword [rsp + 0x60], 0x17 | | if (*((rsp + 0x60)) != 0x17) { 0x00426d19 je 0x426d2b | 0x00426d1b mov rsi, qword [rsp + 0x40] | rsi = *((rsp + 0x40)); 0x00426d20 mov rdi, qword [rsp + 0x68] | rdi = *((rsp + 0x68)); 0x00426d25 mov rax, qword [rdi] | rax = *(rdi); 0x00426d28 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x00426d2b add rsp, 0x228 | 0x00426d32 pop rbx | 0x00426d33 pop r12 | 0x00426d35 pop r13 | 0x00426d37 pop r14 | 0x00426d39 pop r15 | 0x00426d3b pop rbp | 0x00426d3c ret | return rax; | label_3: 0x00426d3d mov edi, 0x6dbed4 | 0x00426d42 call 0x469aa0 | eax = BloombergLP::bsls::Review::updateCount(BloombergLP::bsls::Atomic_TypeTraits::Int*) (method.BloombergLP::bdlt::Datetime.validateAndTraceLogRepresentation___const::lambda__1::operator_____const::count); 0x00426d47 mov qword [rsp + 0xf8], 0x490e53 | *((rsp + 0xf8)) = "detected invalid 'bdlt::Datetime'; see TEAM 579660115"; 0x00426d53 mov qword [rsp + 0x100], 0x490e89 | *((rsp + 0x100)) = "/home/parsa/experiments/assumptions/crush/ccm-none/groups/bdl/bdlt/bdlt_datetime.h"; 0x00426d5f mov dword [rsp + 0x108], 0x466 | *((rsp + 0x108)) = 0x466; 0x00426d6a mov qword [rsp + 0x110], 0x4aeaea | *((rsp + 0x110)) = "R-INV"; 0x00426d76 mov dword [rsp + 0x118], eax | *((rsp + 0x118)) = eax; 0x00426d7d lea rdi, [rsp + 0xf8] | rdi = rsp + 0xf8; 0x00426d85 call 0x469ac0 | BloombergLP::bsls::Review::invokeHandler(BloombergLP::bsls::ReviewViolationconst&) (); 0x00426d8a mov rax, rbx | rax = rbx; 0x00426d8d shr rax, 0x20 | rax >>= 0x20; 0x00426d91 shl rbx, 0x25 | rbx <<= 0x25; 0x00426d95 movabs rcx, 0x7fffffe000000000 | rcx = 0x7fffffe000000000; 0x00426d9f add rcx, rbx | rcx += rbx; 0x00426da2 imul rbx, rax, 0x3e8 | rbx = rax * 0x3e8; 0x00426da9 or rbx, rcx | rbx |= rcx; 0x00426dac or rbx, r13 | rbx |= r13; 0x00426daf jmp 0x426ae3 | goto label_2; | }