; assembly | /* r2dec pseudo code output */ | /* bdlcc_skiplist.t/none @ 0x64a590 */ | #include | ; (fcn) method.BloombergLP::bdlcc::SkipList_Control.incrementRefCount__ () | int32_t method_BloombergLP::bdlcc::SkipList_Control_incrementRefCount_ (int64_t arg1) { | rdi = arg1; | /* BloombergLP::bdlcc::SkipList_Control::incrementRefCount() */ 0x0064a590 mov ecx, dword [rdi] | ecx = *(rdi); 0x0064a592 nop word cs:[rax + rax] | 0x0064a59c nop dword [rax] | | do { 0x0064a5a0 lea edx, [rcx + 1] | edx = rcx + 1; 0x0064a5a3 mov eax, ecx | eax = ecx; 0x0064a5a5 lock cmpxchg dword [rdi], edx | __asm ("lock cmpxchg dword [rdi], edx"); 0x0064a5a9 cmp ecx, eax | 0x0064a5ab mov ecx, eax | ecx = eax; 0x0064a5ad jne 0x64a5a0 | | } while (ecx != eax); 0x0064a5af and edx, 0xfffff | edx &= 0xfffff; 0x0064a5b5 mov eax, edx | eax = edx; 0x0064a5b7 ret | return eax; | }