; assembly | /* r2dec pseudo code output */ | /* ball_administration.t/none @ 0x412d40 */ | #include | ; (fcn) method.BloombergLP::ball::Record.Record__ () | int64_t method_BloombergLP::ball::Record_Record_ (int64_t arg1) { | rdi = arg1; | /* BloombergLP::ball::Record::~Record() */ 0x00412d40 push r15 | 0x00412d42 push r14 | 0x00412d44 push rbx | 0x00412d45 mov r14, rdi | r14 = rdi; 0x00412d48 mov rbx, qword [rdi + 0x108] | rbx = *((rdi + 0x108)); 0x00412d4f test rbx, rbx | | if (rbx == 0) { 0x00412d52 je 0x412dde | goto label_3; | } 0x00412d58 mov r15, qword [r14 + 0x110] | r15 = *((r14 + 0x110)); 0x00412d5f cmp rbx, r15 | | if (rbx != r15) { 0x00412d62 jne 0x412d81 | goto label_4; | } 0x00412d64 jmp 0x412dce | goto label_5; | do { | label_0: 0x00412d70 mov qword [rbx + 0x18], 0xffffffffffffffff | *((rbx + 0x18)) = 0xffffffffffffffff; 0x00412d78 sub rbx, 0xffffffffffffff80 | rbx -= 0xffffffffffffff80; 0x00412d7c cmp r15, rbx | | if (r15 == rbx) { 0x00412d7f je 0x412dc7 | goto label_6; | } | label_4: 0x00412d81 mov eax, dword [rbx + 0x68] | eax = *((rbx + 0x68)); 0x00412d84 test eax, eax | | if (eax != 0) { 0x00412d86 je 0x412db1 | 0x00412d88 cmp eax, 3 | | if (eax == 3) { 0x00412d8b jne 0x412daa | 0x00412d8d cmp qword [rbx + 0x58], 0x17 | | if (*((rbx + 0x58)) != 0x17) { 0x00412d92 je 0x412da2 | 0x00412d94 mov rsi, qword [rbx + 0x38] | rsi = *((rbx + 0x38)); 0x00412d98 mov rdi, qword [rbx + 0x60] | rdi = *((rbx + 0x60)); 0x00412d9c mov rax, qword [rdi] | rax = *(rdi); 0x00412d9f call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x00412da2 mov qword [rbx + 0x50], 0xffffffffffffffff | *((rbx + 0x50)) = 0xffffffffffffffff; | } 0x00412daa mov dword [rbx + 0x68], 0 | *((rbx + 0x68)) = 0; | } 0x00412db1 cmp qword [rbx + 0x20], 0x17 | 0x00412db6 je 0x412d70 | | } while (*((rbx + 0x20)) == 0x17); 0x00412db8 mov rsi, qword [rbx] | rsi = *(rbx); 0x00412dbb mov rdi, qword [rbx + 0x28] | rdi = *((rbx + 0x28)); 0x00412dbf mov rax, qword [rdi] | rax = *(rdi); 0x00412dc2 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x00412dc5 jmp 0x412d70 | goto label_0; | label_6: 0x00412dc7 mov rbx, qword [r14 + 0x108] | rbx = *((r14 + 0x108)); | label_5: 0x00412dce mov rdi, qword [r14 + 0x120] | rdi = *((r14 + 0x120)); 0x00412dd5 mov rax, qword [rdi] | rax = *(rdi); 0x00412dd8 mov rsi, rbx | rsi = rbx; 0x00412ddb call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | label_3: 0x00412dde mov rbx, qword [r14 + 0xe8] | rbx = *((r14 + 0xe8)); 0x00412de5 test rbx, rbx | | if (rbx == 0) { 0x00412de8 je 0x412e6b | goto label_7; | } 0x00412dee mov r15, qword [r14 + 0xf0] | r15 = *((r14 + 0xf0)); 0x00412df5 cmp rbx, r15 | | if (rbx != r15) { 0x00412df8 jne 0x412e18 | goto label_8; | } 0x00412dfa jmp 0x412e5b | goto label_9; | label_2: 0x00412e00 mov qword [rbx + 0x18], 0xffffffffffffffff | *((rbx + 0x18)) = 0xffffffffffffffff; | label_1: 0x00412e08 mov dword [rbx + 0x30], 0 | *((rbx + 0x30)) = 0; | do { 0x00412e0f add rbx, 0x40 | rbx += 0x40; 0x00412e13 cmp r15, rbx | | if (r15 == rbx) { 0x00412e16 je 0x412e54 | goto label_10; | } | label_8: 0x00412e18 mov eax, dword [rbx + 0x30] | eax = *((rbx + 0x30)); 0x00412e1b test eax, eax | 0x00412e1d je 0x412e0f | | } while (eax == 0); 0x00412e1f cmp eax, 5 | | if (eax == 5) { 0x00412e22 je 0x412e40 | goto label_11; | } 0x00412e24 cmp eax, 3 | | if (eax != 3) { 0x00412e27 jne 0x412e08 | goto label_1; | } 0x00412e29 cmp qword [rbx + 0x20], 0x17 | | if (*((rbx + 0x20)) == 0x17) { 0x00412e2e je 0x412e00 | goto label_2; | } 0x00412e30 mov rsi, qword [rbx] | rsi = *(rbx); 0x00412e33 mov rdi, qword [rbx + 0x28] | rdi = *((rbx + 0x28)); 0x00412e37 mov rax, qword [rdi] | rax = *(rdi); 0x00412e3a call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x00412e3d jmp 0x412e00 | goto label_2; | label_11: 0x00412e40 mov rsi, qword [rbx] | rsi = *(rbx); 0x00412e43 test rsi, rsi | | if (rsi == 0) { 0x00412e46 je 0x412e08 | goto label_1; | } 0x00412e48 mov rdi, qword [rbx + 0x18] | rdi = *((rbx + 0x18)); 0x00412e4c mov rax, qword [rdi] | rax = *(rdi); 0x00412e4f call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x00412e52 jmp 0x412e08 | goto label_1; | label_10: 0x00412e54 mov rbx, qword [r14 + 0xe8] | rbx = *((r14 + 0xe8)); | label_9: 0x00412e5b mov rdi, qword [r14 + 0x100] | rdi = *((r14 + 0x100)); 0x00412e62 mov rax, qword [rdi] | rax = *(rdi); 0x00412e65 mov rsi, rbx | rsi = rbx; 0x00412e68 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | label_7: 0x00412e6b lea rbx, [r14 + 0xa0] | rbx = r14 + 0xa0; 0x00412e72 mov qword [r14 + 0xa0], 0x45caf0 | *((r14 + 0xa0)) = vtable.BloombergLP::bdlsb::MemOutStreamBuf.0; 0x00412e7d mov rsi, qword [r14 + 0xc8] | rsi = *((r14 + 0xc8)); 0x00412e84 mov rdi, qword [r14 + 0xe0] | rdi = *((r14 + 0xe0)); 0x00412e8b mov rax, qword [rdi] | rax = *(rdi); 0x00412e8e call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x00412e91 mov rdi, rbx | rdi = rbx; 0x00412e94 call 0x404ed0 | std::_1::basic_streambuf>::~basic_streambuf() (); 0x00412e99 cmp qword [r14 + 0x88], 0x17 | | if (*((r14 + 0x88)) != 0x17) { 0x00412ea1 je 0x412eb4 | 0x00412ea3 mov rsi, qword [r14 + 0x68] | rsi = *((r14 + 0x68)); 0x00412ea7 mov rdi, qword [r14 + 0x90] | rdi = *((r14 + 0x90)); 0x00412eae mov rax, qword [rdi] | rax = *(rdi); 0x00412eb1 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x00412eb4 mov qword [r14 + 0x80], 0xffffffffffffffff | *((r14 + 0x80)) = 0xffffffffffffffff; 0x00412ebf cmp qword [r14 + 0x50], 0x17 | | if (*((r14 + 0x50)) != 0x17) { 0x00412ec4 je 0x412ed4 | 0x00412ec6 mov rsi, qword [r14 + 0x30] | rsi = *((r14 + 0x30)); 0x00412eca mov rdi, qword [r14 + 0x58] | rdi = *((r14 + 0x58)); 0x00412ece mov rax, qword [rdi] | rax = *(rdi); 0x00412ed1 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x00412ed4 mov qword [r14 + 0x48], 0xffffffffffffffff | *((r14 + 0x48)) = 0xffffffffffffffff; 0x00412edc mov rdi, r14 | rdi = r14; 0x00412edf pop rbx | 0x00412ee0 pop r14 | 0x00412ee2 pop r15 | 0x00412ee4 jmp 0x41aba0 | return void (*0x41aba0)() (); | }