; assembly | /* r2dec pseudo code output */ | /* ball_administration.t/assume @ 0x412ca0 */ | #include | ; (fcn) method.BloombergLP::ball::Record.Record__ () | int64_t method_BloombergLP::ball::Record_Record_ (int64_t arg3, int64_t arg2, int64_t arg1) { | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::ball::Record::~Record() */ 0x00412ca0 push r15 | 0x00412ca2 push r14 | 0x00412ca4 push rbx | 0x00412ca5 mov r14, rdi | r14 = rdi; 0x00412ca8 mov rbx, qword [rdi + 0x108] | rbx = *((rdi + 0x108)); 0x00412caf test rbx, rbx | | if (rbx == 0) { 0x00412cb2 je 0x412d3e | goto label_1; | } 0x00412cb8 mov r15, qword [r14 + 0x110] | r15 = *((r14 + 0x110)); 0x00412cbf cmp rbx, r15 | | if (rbx != r15) { 0x00412cc2 jne 0x412ce1 | goto label_2; | } 0x00412cc4 jmp 0x412d2e | goto label_3; | do { | label_0: 0x00412cd0 mov qword [rbx + 0x18], 0xffffffffffffffff | *((rbx + 0x18)) = 0xffffffffffffffff; 0x00412cd8 sub rbx, 0xffffffffffffff80 | rbx -= 0xffffffffffffff80; 0x00412cdc cmp r15, rbx | | if (r15 == rbx) { 0x00412cdf je 0x412d27 | goto label_4; | } | label_2: 0x00412ce1 mov eax, dword [rbx + 0x68] | eax = *((rbx + 0x68)); 0x00412ce4 test eax, eax | | if (eax != 0) { 0x00412ce6 je 0x412d11 | 0x00412ce8 cmp eax, 3 | | if (eax == 3) { 0x00412ceb jne 0x412d0a | 0x00412ced cmp qword [rbx + 0x58], 0x17 | | if (*((rbx + 0x58)) != 0x17) { 0x00412cf2 je 0x412d02 | 0x00412cf4 mov rsi, qword [rbx + 0x38] | rsi = *((rbx + 0x38)); 0x00412cf8 mov rdi, qword [rbx + 0x60] | rdi = *((rbx + 0x60)); 0x00412cfc mov rax, qword [rdi] | rax = *(rdi); 0x00412cff call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x00412d02 mov qword [rbx + 0x50], 0xffffffffffffffff | *((rbx + 0x50)) = 0xffffffffffffffff; | } 0x00412d0a mov dword [rbx + 0x68], 0 | *((rbx + 0x68)) = 0; | } 0x00412d11 cmp qword [rbx + 0x20], 0x17 | 0x00412d16 je 0x412cd0 | | } while (*((rbx + 0x20)) == 0x17); 0x00412d18 mov rsi, qword [rbx] | rsi = *(rbx); 0x00412d1b mov rdi, qword [rbx + 0x28] | rdi = *((rbx + 0x28)); 0x00412d1f mov rax, qword [rdi] | rax = *(rdi); 0x00412d22 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x00412d25 jmp 0x412cd0 | goto label_0; | label_4: 0x00412d27 mov rbx, qword [r14 + 0x108] | rbx = *((r14 + 0x108)); | label_3: 0x00412d2e mov rdi, qword [r14 + 0x120] | rdi = *((r14 + 0x120)); 0x00412d35 mov rax, qword [rdi] | rax = *(rdi); 0x00412d38 mov rsi, rbx | rsi = rbx; 0x00412d3b call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | label_1: 0x00412d3e mov rbx, qword [r14 + 0xe8] | rbx = *((r14 + 0xe8)); 0x00412d45 test rbx, rbx | | if (rbx == 0) { 0x00412d48 je 0x412d88 | goto label_5; | } 0x00412d4a mov r15, qword [r14 + 0xf0] | r15 = *((r14 + 0xf0)); 0x00412d51 cmp rbx, r15 | | if (rbx == r15) { 0x00412d54 je 0x412d78 | goto label_6; | } 0x00412d56 nop word cs:[rax + rax] | | do { 0x00412d60 mov rdi, rbx | 0x00412d63 call 0x412c30 | BloombergLP::bdlb::VariantImp,bsl::allocator>,BloombergLP::bdlt::DatetimeTz,bsl::vector>>>::reset() (rbx, rsi, rdx); 0x00412d68 add rbx, 0x40 | rbx += 0x40; 0x00412d6c cmp r15, rbx | 0x00412d6f jne 0x412d60 | | } while (r15 != rbx); 0x00412d71 mov rbx, qword [r14 + 0xe8] | rbx = *((r14 + 0xe8)); | label_6: 0x00412d78 mov rdi, qword [r14 + 0x100] | rdi = *((r14 + 0x100)); 0x00412d7f mov rax, qword [rdi] | rax = *(rdi); 0x00412d82 mov rsi, rbx | rsi = rbx; 0x00412d85 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | label_5: 0x00412d88 lea rbx, [r14 + 0xa0] | rbx = r14 + 0xa0; 0x00412d8f mov qword [r14 + 0xa0], 0x45c3b8 | *((r14 + 0xa0)) = vtable.BloombergLP::bdlsb::MemOutStreamBuf.0; 0x00412d9a mov rsi, qword [r14 + 0xc8] | rsi = *((r14 + 0xc8)); 0x00412da1 mov rdi, qword [r14 + 0xe0] | rdi = *((r14 + 0xe0)); 0x00412da8 mov rax, qword [rdi] | rax = *(rdi); 0x00412dab call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x00412dae mov rdi, rbx | rdi = rbx; 0x00412db1 call 0x404e80 | std::_1::basic_streambuf>::~basic_streambuf() (); 0x00412db6 cmp qword [r14 + 0x88], 0x17 | | if (*((r14 + 0x88)) != 0x17) { 0x00412dbe je 0x412dd1 | 0x00412dc0 mov rsi, qword [r14 + 0x68] | rsi = *((r14 + 0x68)); 0x00412dc4 mov rdi, qword [r14 + 0x90] | rdi = *((r14 + 0x90)); 0x00412dcb mov rax, qword [rdi] | rax = *(rdi); 0x00412dce call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x00412dd1 mov qword [r14 + 0x80], 0xffffffffffffffff | *((r14 + 0x80)) = 0xffffffffffffffff; 0x00412ddc cmp qword [r14 + 0x50], 0x17 | | if (*((r14 + 0x50)) != 0x17) { 0x00412de1 je 0x412df1 | 0x00412de3 mov rsi, qword [r14 + 0x30] | rsi = *((r14 + 0x30)); 0x00412de7 mov rdi, qword [r14 + 0x58] | rdi = *((r14 + 0x58)); 0x00412deb mov rax, qword [rdi] | rax = *(rdi); 0x00412dee call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x00412df1 mov qword [r14 + 0x48], 0xffffffffffffffff | *((r14 + 0x48)) = 0xffffffffffffffff; 0x00412df9 mov rdi, r14 | rdi = r14; 0x00412dfc pop rbx | 0x00412dfd pop r14 | 0x00412dff pop r15 | 0x00412e01 jmp 0x41aa60 | return void (*0x41aa60)() (); | }