; assembly | /* r2dec pseudo code output */ | /* bblb_schedulegenerationutil.t/none @ 0x41b590 */ | #include | ; (fcn) method.BloombergLP::bdlc::PackedIntArrayImp_BloombergLP::bdlc::PackedIntArrayImp_Signed_.isEqualImp_BloombergLP::bdlc::PackedIntArrayImp_BloombergLP::bdlc::PackedIntArrayImp_Signed__const__const () | int64_t method_BloombergLP::bdlc::PackedIntArrayImp_BloombergLP::bdlc::PackedIntArrayImp_Signed_isEqualImp_BloombergLP::bdlc::PackedIntArrayImp_BloombergLP::bdlc::PackedIntArrayImp_Signed_const_const (uint32_t arg2, int64_t arg1) { | rsi = arg2; | rdi = arg1; | /* BloombergLP::bdlc::PackedIntArrayImp::isEqualImp(BloombergLP::bdlc::PackedIntArrayImp const&) const */ 0x0041b590 mov ecx, dword [rdi + 0x10] | ecx = *((rdi + 0x10)); 0x0041b593 mov al, 1 | al = 1; 0x0041b595 dec ecx | ecx--; 0x0041b597 cmp ecx, 7 | | if (ecx > 7) { 0x0041b59a ja 0x41b8fc | goto label_0; | } | /* switch table (8 cases) at 0x460330 */ 0x0041b5a0 jmp qword [rcx*8 + 0x460330] | 0x0041b5a7 mov rcx, qword [rdi] | rcx = *(rdi); 0x0041b5aa mov edx, dword [rsi + 0x10] | edx = *((rsi + 0x10)); 0x0041b5ad cmp edx, 8 | | if (edx == 8) { 0x0041b5b0 je 0x41b725 | goto label_1; | } 0x0041b5b6 cmp edx, 4 | | if (edx == 4) { 0x0041b5b9 je 0x41b765 | goto label_2; | } 0x0041b5bf cmp edx, 2 | | if (edx != 2) { 0x0041b5c2 jne 0x41b8fc | goto label_0; | } 0x0041b5c8 mov r8, qword [rdi + 8] | r8 = *((rdi + 8)); 0x0041b5cc test r8, r8 | | if (r8 == 0) { 0x0041b5cf je 0x41b8fc | goto label_0; | } 0x0041b5d5 mov rsi, qword [rsi] | rsi = *(rsi); 0x0041b5d8 mov edi, 1 | edi = 1; 0x0041b5dd nop dword [rax] | | do { 0x0041b5e0 movsx eax, byte [rcx + rdi - 1] | eax = *((rcx + rdi - 1)); 0x0041b5e5 cmp word [rsi + rdi*2 - 2], ax | 0x0041b5ea sete al | al = (*((rsi + rdi*2 - 2)) == ax) ? 1 : 0; | if (*((rsi + rdi*2 - 2)) != ax) { 0x0041b5ed jne 0x41b8fc | goto label_0; | } 0x0041b5f3 lea rdx, [rdi + 1] | rdx = rdi + 1; 0x0041b5f7 cmp rdi, r8 | 0x0041b5fa mov rdi, rdx | rdi = rdx; 0x0041b5fd jb 0x41b5e0 | | } while (rdi < r8); 0x0041b5ff jmp 0x41b8fc | goto label_0; 0x0041b604 mov rcx, qword [rdi] | rcx = *(rdi); 0x0041b607 mov edx, dword [rsi + 0x10] | edx = *((rsi + 0x10)); 0x0041b60a cmp edx, 8 | | if (edx == 8) { 0x0041b60d je 0x41b7a3 | goto label_3; | } 0x0041b613 cmp edx, 4 | | if (edx == 4) { 0x0041b616 je 0x41b7e5 | goto label_4; | } 0x0041b61c cmp edx, 1 | | if (edx != 1) { 0x0041b61f jne 0x41b8fc | goto label_0; | } 0x0041b625 mov r8, qword [rdi + 8] | r8 = *((rdi + 8)); 0x0041b629 test r8, r8 | | if (r8 == 0) { 0x0041b62c je 0x41b8fc | goto label_0; | } 0x0041b632 mov rsi, qword [rsi] | rsi = *(rsi); 0x0041b635 mov edi, 1 | edi = 1; 0x0041b63a nop word [rax + rax] | | do { 0x0041b640 movsx eax, byte [rsi + rdi - 1] | eax = *((rsi + rdi - 1)); 0x0041b645 cmp word [rcx + rdi*2 - 2], ax | 0x0041b64a sete al | al = (*((rcx + rdi*2 - 2)) == ax) ? 1 : 0; | if (*((rcx + rdi*2 - 2)) != ax) { 0x0041b64d jne 0x41b8fc | goto label_0; | } 0x0041b653 lea rdx, [rdi + 1] | rdx = rdi + 1; 0x0041b657 cmp rdi, r8 | 0x0041b65a mov rdi, rdx | rdi = rdx; 0x0041b65d jb 0x41b640 | | } while (rdi < r8); 0x0041b65f jmp 0x41b8fc | goto label_0; 0x0041b664 mov rcx, qword [rdi] | rcx = *(rdi); 0x0041b667 mov edx, dword [rsi + 0x10] | edx = *((rsi + 0x10)); 0x0041b66a cmp edx, 8 | | if (edx == 8) { 0x0041b66d je 0x41b823 | goto label_5; | } 0x0041b673 cmp edx, 2 | | if (edx == 2) { 0x0041b676 je 0x41b864 | goto label_6; | } 0x0041b67c cmp edx, 1 | | if (edx != 1) { 0x0041b67f jne 0x41b8fc | goto label_0; | } 0x0041b685 mov r8, qword [rdi + 8] | r8 = *((rdi + 8)); 0x0041b689 test r8, r8 | | if (r8 == 0) { 0x0041b68c je 0x41b8fc | goto label_0; | } 0x0041b692 mov rsi, qword [rsi] | rsi = *(rsi); 0x0041b695 mov edi, 1 | edi = 1; 0x0041b69a nop word [rax + rax] | | do { 0x0041b6a0 movsx eax, byte [rsi + rdi - 1] | eax = *((rsi + rdi - 1)); 0x0041b6a5 cmp dword [rcx + rdi*4 - 4], eax | 0x0041b6a9 sete al | al = (*((rcx + rdi*4 - 4)) == eax) ? 1 : 0; | if (*((rcx + rdi*4 - 4)) != eax) { 0x0041b6ac jne 0x41b8fc | goto label_0; | } 0x0041b6b2 lea rdx, [rdi + 1] | rdx = rdi + 1; 0x0041b6b6 cmp rdi, r8 | 0x0041b6b9 mov rdi, rdx | rdi = rdx; 0x0041b6bc jb 0x41b6a0 | | } while (rdi < r8); 0x0041b6be jmp 0x41b8fc | goto label_0; 0x0041b6c3 mov rcx, qword [rdi] | rcx = *(rdi); 0x0041b6c6 mov edx, dword [rsi + 0x10] | edx = *((rsi + 0x10)); 0x0041b6c9 cmp edx, 4 | | if (edx == 4) { 0x0041b6cc je 0x41b89c | goto label_7; | } 0x0041b6d2 cmp edx, 2 | | if (edx == 2) { 0x0041b6d5 je 0x41b8cd | goto label_8; | } 0x0041b6db cmp edx, 1 | | if (edx != 1) { 0x0041b6de jne 0x41b8fc | goto label_0; | } 0x0041b6e4 mov r8, qword [rdi + 8] | r8 = *((rdi + 8)); 0x0041b6e8 test r8, r8 | | if (r8 == 0) { 0x0041b6eb je 0x41b8fc | goto label_0; | } 0x0041b6f1 mov rsi, qword [rsi] | rsi = *(rsi); 0x0041b6f4 mov edi, 1 | edi = 1; 0x0041b6f9 nop dword [rax] | | do { 0x0041b700 movsx rax, byte [rsi + rdi - 1] | rax = *((rsi + rdi - 1)); 0x0041b706 cmp qword [rcx + rdi*8 - 8], rax | 0x0041b70b sete al | al = (*((rcx + rdi*8 - 8)) == rax) ? 1 : 0; | if (*((rcx + rdi*8 - 8)) != rax) { 0x0041b70e jne 0x41b8fc | goto label_0; | } 0x0041b714 lea rdx, [rdi + 1] | rdx = rdi + 1; 0x0041b718 cmp rdi, r8 | 0x0041b71b mov rdi, rdx | rdi = rdx; 0x0041b71e jb 0x41b700 | | } while (rdi < r8); 0x0041b720 jmp 0x41b8fc | goto label_0; | label_1: 0x0041b725 mov r8, qword [rdi + 8] | r8 = *((rdi + 8)); 0x0041b729 test r8, r8 | | if (r8 == 0) { 0x0041b72c je 0x41b8fc | goto label_0; | } 0x0041b732 mov rsi, qword [rsi] | rsi = *(rsi); 0x0041b735 mov edi, 1 | edi = 1; 0x0041b73a nop word [rax + rax] | | do { 0x0041b740 movsx rax, byte [rcx + rdi - 1] | rax = *((rcx + rdi - 1)); 0x0041b746 cmp qword [rsi + rdi*8 - 8], rax | 0x0041b74b sete al | al = (*((rsi + rdi*8 - 8)) == rax) ? 1 : 0; | if (*((rsi + rdi*8 - 8)) != rax) { 0x0041b74e jne 0x41b8fc | goto label_0; | } 0x0041b754 lea rdx, [rdi + 1] | rdx = rdi + 1; 0x0041b758 cmp rdi, r8 | 0x0041b75b mov rdi, rdx | rdi = rdx; 0x0041b75e jb 0x41b740 | | } while (rdi < r8); 0x0041b760 jmp 0x41b8fc | goto label_0; | label_2: 0x0041b765 mov r8, qword [rdi + 8] | r8 = *((rdi + 8)); 0x0041b769 test r8, r8 | | if (r8 == 0) { 0x0041b76c je 0x41b8fc | goto label_0; | } 0x0041b772 mov rsi, qword [rsi] | rsi = *(rsi); 0x0041b775 mov edi, 1 | edi = 1; 0x0041b77a nop word [rax + rax] | | do { 0x0041b780 movsx eax, byte [rcx + rdi - 1] | eax = *((rcx + rdi - 1)); 0x0041b785 cmp dword [rsi + rdi*4 - 4], eax | 0x0041b789 sete al | al = (*((rsi + rdi*4 - 4)) == eax) ? 1 : 0; | if (*((rsi + rdi*4 - 4)) != eax) { 0x0041b78c jne 0x41b8fc | goto label_0; | } 0x0041b792 lea rdx, [rdi + 1] | rdx = rdi + 1; 0x0041b796 cmp rdi, r8 | 0x0041b799 mov rdi, rdx | rdi = rdx; 0x0041b79c jb 0x41b780 | | } while (rdi < r8); 0x0041b79e jmp 0x41b8fc | goto label_0; | label_3: 0x0041b7a3 mov r8, qword [rdi + 8] | r8 = *((rdi + 8)); 0x0041b7a7 test r8, r8 | | if (r8 == 0) { 0x0041b7aa je 0x41b8fc | goto label_0; | } 0x0041b7b0 mov rsi, qword [rsi] | rsi = *(rsi); 0x0041b7b3 mov edi, 1 | edi = 1; 0x0041b7b8 nop dword [rax + rax] | | do { 0x0041b7c0 movsx rax, word [rcx + rdi*2 - 2] | rax = *((rcx + rdi*2 - 2)); 0x0041b7c6 cmp qword [rsi + rdi*8 - 8], rax | 0x0041b7cb sete al | al = (*((rsi + rdi*8 - 8)) == rax) ? 1 : 0; | if (*((rsi + rdi*8 - 8)) != rax) { 0x0041b7ce jne 0x41b8fc | goto label_0; | } 0x0041b7d4 lea rdx, [rdi + 1] | rdx = rdi + 1; 0x0041b7d8 cmp rdi, r8 | 0x0041b7db mov rdi, rdx | rdi = rdx; 0x0041b7de jb 0x41b7c0 | | } while (rdi < r8); 0x0041b7e0 jmp 0x41b8fc | goto label_0; | label_4: 0x0041b7e5 mov r8, qword [rdi + 8] | r8 = *((rdi + 8)); 0x0041b7e9 test r8, r8 | | if (r8 == 0) { 0x0041b7ec je 0x41b8fc | goto label_0; | } 0x0041b7f2 mov rsi, qword [rsi] | rsi = *(rsi); 0x0041b7f5 mov edi, 1 | edi = 1; 0x0041b7fa nop word [rax + rax] | | do { 0x0041b800 movsx eax, word [rcx + rdi*2 - 2] | eax = *((rcx + rdi*2 - 2)); 0x0041b805 cmp dword [rsi + rdi*4 - 4], eax | 0x0041b809 sete al | al = (*((rsi + rdi*4 - 4)) == eax) ? 1 : 0; | if (*((rsi + rdi*4 - 4)) != eax) { 0x0041b80c jne 0x41b8fc | goto label_0; | } 0x0041b812 lea rdx, [rdi + 1] | rdx = rdi + 1; 0x0041b816 cmp rdi, r8 | 0x0041b819 mov rdi, rdx | rdi = rdx; 0x0041b81c jb 0x41b800 | | } while (rdi < r8); 0x0041b81e jmp 0x41b8fc | goto label_0; | label_5: 0x0041b823 mov r8, qword [rdi + 8] | r8 = *((rdi + 8)); 0x0041b827 test r8, r8 | | if (r8 == 0) { 0x0041b82a je 0x41b8fc | goto label_0; | } 0x0041b830 mov rsi, qword [rsi] | rsi = *(rsi); 0x0041b833 mov edi, 1 | edi = 1; 0x0041b838 nop dword [rax + rax] | | do { 0x0041b840 movsxd rax, dword [rcx + rdi*4 - 4] | rax = *((rcx + rdi*4 - 4)); 0x0041b845 cmp qword [rsi + rdi*8 - 8], rax | 0x0041b84a sete al | al = (*((rsi + rdi*8 - 8)) == rax) ? 1 : 0; | if (*((rsi + rdi*8 - 8)) != rax) { 0x0041b84d jne 0x41b8fc | goto label_0; | } 0x0041b853 lea rdx, [rdi + 1] | rdx = rdi + 1; 0x0041b857 cmp rdi, r8 | 0x0041b85a mov rdi, rdx | rdi = rdx; 0x0041b85d jb 0x41b840 | | } while (rdi < r8); 0x0041b85f jmp 0x41b8fc | goto label_0; | label_6: 0x0041b864 mov r8, qword [rdi + 8] | r8 = *((rdi + 8)); 0x0041b868 test r8, r8 | | if (r8 == 0) { 0x0041b86b je 0x41b8fc | goto label_0; | } 0x0041b871 mov rsi, qword [rsi] | rsi = *(rsi); 0x0041b874 mov edi, 1 | edi = 1; 0x0041b879 nop dword [rax] | | do { 0x0041b880 movsx eax, word [rsi + rdi*2 - 2] | eax = *((rsi + rdi*2 - 2)); 0x0041b885 cmp dword [rcx + rdi*4 - 4], eax | 0x0041b889 sete al | al = (*((rcx + rdi*4 - 4)) == eax) ? 1 : 0; | if (*((rcx + rdi*4 - 4)) != eax) { 0x0041b88c jne 0x41b8fc | goto label_0; | } 0x0041b88e lea rdx, [rdi + 1] | rdx = rdi + 1; 0x0041b892 cmp rdi, r8 | 0x0041b895 mov rdi, rdx | rdi = rdx; 0x0041b898 jb 0x41b880 | | } while (rdi < r8); 0x0041b89a jmp 0x41b8fc | goto label_0; | label_7: 0x0041b89c mov r8, qword [rdi + 8] | r8 = *((rdi + 8)); 0x0041b8a0 test r8, r8 | | if (r8 == 0) { 0x0041b8a3 je 0x41b8fc | goto label_0; | } 0x0041b8a5 mov rsi, qword [rsi] | rsi = *(rsi); 0x0041b8a8 mov edi, 1 | edi = 1; 0x0041b8ad nop dword [rax] | | do { 0x0041b8b0 movsxd rax, dword [rsi + rdi*4 - 4] | rax = *((rsi + rdi*4 - 4)); 0x0041b8b5 cmp qword [rcx + rdi*8 - 8], rax | 0x0041b8ba sete al | al = (*((rcx + rdi*8 - 8)) == rax) ? 1 : 0; | if (*((rcx + rdi*8 - 8)) != rax) { 0x0041b8bd jne 0x41b8fc | goto label_0; | } 0x0041b8bf lea rdx, [rdi + 1] | rdx = rdi + 1; 0x0041b8c3 cmp rdi, r8 | 0x0041b8c6 mov rdi, rdx | rdi = rdx; 0x0041b8c9 jb 0x41b8b0 | | } while (rdi < r8); 0x0041b8cb jmp 0x41b8fc | goto label_0; | label_8: 0x0041b8cd mov r8, qword [rdi + 8] | r8 = *((rdi + 8)); 0x0041b8d1 test r8, r8 | | if (r8 == 0) { 0x0041b8d4 je 0x41b8fc | goto label_0; | } 0x0041b8d6 mov rsi, qword [rsi] | rsi = *(rsi); 0x0041b8d9 mov edi, 1 | edi = 1; 0x0041b8de nop | | do { 0x0041b8e0 movsx rax, word [rsi + rdi*2 - 2] | rax = *((rsi + rdi*2 - 2)); 0x0041b8e6 cmp qword [rcx + rdi*8 - 8], rax | 0x0041b8eb sete al | al = (*((rcx + rdi*8 - 8)) == rax) ? 1 : 0; | if (*((rcx + rdi*8 - 8)) != rax) { 0x0041b8ee jne 0x41b8fc | goto label_0; | } 0x0041b8f0 lea rdx, [rdi + 1] | rdx = rdi + 1; 0x0041b8f4 cmp rdi, r8 | 0x0041b8f7 mov rdi, rdx | rdi = rdx; 0x0041b8fa jb 0x41b8e0 | | } while (rdi < r8); | label_0: 0x0041b8fc ret | return rax; | }