; assembly | /* r2dec pseudo code output */ | /* ball_administration.t/assume @ 0x4131c0 */ | #include | ; (fcn) method.BloombergLP::ball::Record.clear__ () | int64_t method_BloombergLP::ball::Record_clear_ (int64_t arg3, int64_t arg1) { | rdx = arg3; | rdi = arg1; | /* BloombergLP::ball::Record::clear() */ 0x004131c0 push r15 | 0x004131c2 push r14 | 0x004131c4 push rbx | 0x004131c5 mov r14, rdi | r14 = rdi; 0x004131c8 mov rsi, qword [rdi + 0xc8] | rsi = *((rdi + 0xc8)); 0x004131cf mov rax, qword [rdi + 0xd8] | rax = *((rdi + 0xd8)); 0x004131d6 sub rax, rsi | rax -= rsi; 0x004131d9 cmp rax, 0x101 | | if (rax >= 0x101) { 0x004131df jae 0x4132bb | goto label_2; | } 0x004131e5 lea rdi, [r14 + 0xa0] | rdi = r14 + 0xa0; 0x004131ec mov rax, qword [rdi] | rax = *(rdi); 0x004131ef xor esi, esi | esi = 0; 0x004131f1 xor edx, edx | edx = 0; 0x004131f3 mov ecx, 0x18 | ecx = 0x18; 0x004131f8 call qword [rax + 0x28] | uint64_t (*rax + 0x28)() (); | label_1: 0x004131fb mov rbx, qword [r14 + 0xe8] | rbx = *((r14 + 0xe8)); 0x00413202 mov r15, qword [r14 + 0xf0] | r15 = *((r14 + 0xf0)); 0x00413209 cmp r15, rbx | | if (r15 == rbx) { 0x0041320c je 0x41322f | goto label_3; | } 0x0041320e nop | | do { 0x00413210 mov rdi, rbx | 0x00413213 call 0x412c30 | BloombergLP::bdlb::VariantImp,bsl::allocator>,BloombergLP::bdlt::DatetimeTz,bsl::vector>>>::reset() (rbx, rsi, rdx); 0x00413218 add rbx, 0x40 | rbx += 0x40; 0x0041321c cmp r15, rbx | 0x0041321f jne 0x413210 | | } while (r15 != rbx); 0x00413221 mov rax, qword [r14 + 0xe8] | rax = *((r14 + 0xe8)); 0x00413228 mov qword [r14 + 0xf0], rax | *((r14 + 0xf0)) = rax; | label_3: 0x0041322f mov rbx, qword [r14 + 0x108] | rbx = *((r14 + 0x108)); 0x00413236 mov r15, qword [r14 + 0x110] | r15 = *((r14 + 0x110)); 0x0041323d cmp r15, rbx | | if (r15 != rbx) { 0x00413240 jne 0x413261 | goto label_4; | } 0x00413242 jmp 0x4132b5 | goto label_5; | do { | label_0: 0x00413250 mov qword [rbx + 0x18], 0xffffffffffffffff | *((rbx + 0x18)) = 0xffffffffffffffff; 0x00413258 sub rbx, 0xffffffffffffff80 | rbx -= 0xffffffffffffff80; 0x0041325c cmp r15, rbx | | if (r15 == rbx) { 0x0041325f je 0x4132a7 | goto label_6; | } | label_4: 0x00413261 mov eax, dword [rbx + 0x68] | eax = *((rbx + 0x68)); 0x00413264 test eax, eax | | if (eax != 0) { 0x00413266 je 0x413291 | 0x00413268 cmp eax, 3 | | if (eax == 3) { 0x0041326b jne 0x41328a | 0x0041326d cmp qword [rbx + 0x58], 0x17 | | if (*((rbx + 0x58)) != 0x17) { 0x00413272 je 0x413282 | 0x00413274 mov rsi, qword [rbx + 0x38] | rsi = *((rbx + 0x38)); 0x00413278 mov rdi, qword [rbx + 0x60] | rdi = *((rbx + 0x60)); 0x0041327c mov rax, qword [rdi] | rax = *(rdi); 0x0041327f call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x00413282 mov qword [rbx + 0x50], 0xffffffffffffffff | *((rbx + 0x50)) = 0xffffffffffffffff; | } 0x0041328a mov dword [rbx + 0x68], 0 | *((rbx + 0x68)) = 0; | } 0x00413291 cmp qword [rbx + 0x20], 0x17 | 0x00413296 je 0x413250 | | } while (*((rbx + 0x20)) == 0x17); 0x00413298 mov rsi, qword [rbx] | rsi = *(rbx); 0x0041329b mov rdi, qword [rbx + 0x28] | rdi = *((rbx + 0x28)); 0x0041329f mov rax, qword [rdi] | rax = *(rdi); 0x004132a2 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x004132a5 jmp 0x413250 | goto label_0; | label_6: 0x004132a7 mov rax, qword [r14 + 0x108] | rax = *((r14 + 0x108)); 0x004132ae mov qword [r14 + 0x110], rax | *((r14 + 0x110)) = rax; | label_5: 0x004132b5 pop rbx | 0x004132b6 pop r14 | 0x004132b8 pop r15 | 0x004132ba ret | return rax; | label_2: 0x004132bb lea rbx, [r14 + 0xc8] | rbx = r14 + 0xc8; 0x004132c2 mov rdi, qword [r14 + 0xe0] | rdi = *((r14 + 0xe0)); 0x004132c9 mov rax, qword [rdi] | rax = *(rdi); 0x004132cc call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x004132cf xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x004132d2 movups xmmword [rbx], xmm0 | __asm ("movups xmmword [rbx], xmm0"); 0x004132d5 mov qword [rbx + 0x10], 0 | *((rbx + 0x10)) = 0; 0x004132dd jmp 0x4131fb | goto label_1; | }