; assembly | /* r2dec pseudo code output */ | /* bblb_schedulegenerationutil.t/none @ 0x41eb00 */ | #include | ; (fcn) method.BloombergLP::bdlc::PackedIntArrayImp_BloombergLP::bdlc::PackedIntArrayImp_Unsigned_.isEqualImp_BloombergLP::bdlc::PackedIntArrayImp_BloombergLP::bdlc::PackedIntArrayImp_Unsigned__const__const () | uint32_t method_BloombergLP::bdlc::PackedIntArrayImp_BloombergLP::bdlc::PackedIntArrayImp_Unsigned_isEqualImp_BloombergLP::bdlc::PackedIntArrayImp_BloombergLP::bdlc::PackedIntArrayImp_Unsigned_const_const (uint32_t arg2, int64_t arg1) { | rsi = arg2; | rdi = arg1; | /* BloombergLP::bdlc::PackedIntArrayImp::isEqualImp(BloombergLP::bdlc::PackedIntArrayImp const&) const */ 0x0041eb00 mov ecx, dword [rdi + 0x10] | ecx = *((rdi + 0x10)); 0x0041eb03 mov al, 1 | al = 1; 0x0041eb05 dec ecx | ecx--; 0x0041eb07 cmp ecx, 7 | | if (ecx > 7) { 0x0041eb0a ja 0x41ee6b | goto label_0; | } | /* switch table (8 cases) at 0x460570 */ 0x0041eb10 jmp qword [rcx*8 + 0x460570] | 0x0041eb17 mov rcx, qword [rdi] | rcx = *(rdi); 0x0041eb1a mov edx, dword [rsi + 0x10] | edx = *((rsi + 0x10)); 0x0041eb1d cmp edx, 8 | | if (edx == 8) { 0x0041eb20 je 0x41ec94 | goto label_1; | } 0x0041eb26 cmp edx, 4 | | if (edx == 4) { 0x0041eb29 je 0x41ecd4 | goto label_2; | } 0x0041eb2f cmp edx, 2 | | if (edx != 2) { 0x0041eb32 jne 0x41ee6b | goto label_0; | } 0x0041eb38 mov r8, qword [rdi + 8] | r8 = *((rdi + 8)); 0x0041eb3c test r8, r8 | | if (r8 == 0) { 0x0041eb3f je 0x41ee6b | goto label_0; | } 0x0041eb45 mov rsi, qword [rsi] | rsi = *(rsi); 0x0041eb48 mov edi, 1 | edi = 1; 0x0041eb4d nop dword [rax] | | do { 0x0041eb50 movzx eax, byte [rcx + rdi - 1] | eax = *((rcx + rdi - 1)); 0x0041eb55 cmp word [rsi + rdi*2 - 2], ax | 0x0041eb5a sete al | al = (*((rsi + rdi*2 - 2)) == ax) ? 1 : 0; | if (*((rsi + rdi*2 - 2)) != ax) { 0x0041eb5d jne 0x41ee6b | goto label_0; | } 0x0041eb63 lea rdx, [rdi + 1] | rdx = rdi + 1; 0x0041eb67 cmp rdi, r8 | 0x0041eb6a mov rdi, rdx | rdi = rdx; 0x0041eb6d jb 0x41eb50 | | } while (rdi < r8); 0x0041eb6f jmp 0x41ee6b | goto label_0; 0x0041eb74 mov rcx, qword [rdi] | rcx = *(rdi); 0x0041eb77 mov edx, dword [rsi + 0x10] | edx = *((rsi + 0x10)); 0x0041eb7a cmp edx, 8 | | if (edx == 8) { 0x0041eb7d je 0x41ed13 | goto label_3; | } 0x0041eb83 cmp edx, 4 | | if (edx == 4) { 0x0041eb86 je 0x41ed54 | goto label_4; | } 0x0041eb8c cmp edx, 1 | | if (edx != 1) { 0x0041eb8f jne 0x41ee6b | goto label_0; | } 0x0041eb95 mov r8, qword [rdi + 8] | r8 = *((rdi + 8)); 0x0041eb99 test r8, r8 | | if (r8 == 0) { 0x0041eb9c je 0x41ee6b | goto label_0; | } 0x0041eba2 mov rsi, qword [rsi] | rsi = *(rsi); 0x0041eba5 mov edi, 1 | edi = 1; 0x0041ebaa nop word [rax + rax] | | do { 0x0041ebb0 movzx eax, byte [rsi + rdi - 1] | eax = *((rsi + rdi - 1)); 0x0041ebb5 cmp word [rcx + rdi*2 - 2], ax | 0x0041ebba sete al | al = (*((rcx + rdi*2 - 2)) == ax) ? 1 : 0; | if (*((rcx + rdi*2 - 2)) != ax) { 0x0041ebbd jne 0x41ee6b | goto label_0; | } 0x0041ebc3 lea rdx, [rdi + 1] | rdx = rdi + 1; 0x0041ebc7 cmp rdi, r8 | 0x0041ebca mov rdi, rdx | rdi = rdx; 0x0041ebcd jb 0x41ebb0 | | } while (rdi < r8); 0x0041ebcf jmp 0x41ee6b | goto label_0; 0x0041ebd4 mov rcx, qword [rdi] | rcx = *(rdi); 0x0041ebd7 mov edx, dword [rsi + 0x10] | edx = *((rsi + 0x10)); 0x0041ebda cmp edx, 8 | | if (edx == 8) { 0x0041ebdd je 0x41ed93 | goto label_5; | } 0x0041ebe3 cmp edx, 2 | | if (edx == 2) { 0x0041ebe6 je 0x41edd3 | goto label_6; | } 0x0041ebec cmp edx, 1 | | if (edx != 1) { 0x0041ebef jne 0x41ee6b | goto label_0; | } 0x0041ebf5 mov r8, qword [rdi + 8] | r8 = *((rdi + 8)); 0x0041ebf9 test r8, r8 | | if (r8 == 0) { 0x0041ebfc je 0x41ee6b | goto label_0; | } 0x0041ec02 mov rsi, qword [rsi] | rsi = *(rsi); 0x0041ec05 mov edi, 1 | edi = 1; 0x0041ec0a nop word [rax + rax] | | do { 0x0041ec10 movzx eax, byte [rsi + rdi - 1] | eax = *((rsi + rdi - 1)); 0x0041ec15 cmp dword [rcx + rdi*4 - 4], eax | 0x0041ec19 sete al | al = (*((rcx + rdi*4 - 4)) == eax) ? 1 : 0; | if (*((rcx + rdi*4 - 4)) != eax) { 0x0041ec1c jne 0x41ee6b | goto label_0; | } 0x0041ec22 lea rdx, [rdi + 1] | rdx = rdi + 1; 0x0041ec26 cmp rdi, r8 | 0x0041ec29 mov rdi, rdx | rdi = rdx; 0x0041ec2c jb 0x41ec10 | | } while (rdi < r8); 0x0041ec2e jmp 0x41ee6b | goto label_0; 0x0041ec33 mov rcx, qword [rdi] | rcx = *(rdi); 0x0041ec36 mov edx, dword [rsi + 0x10] | edx = *((rsi + 0x10)); 0x0041ec39 cmp edx, 4 | | if (edx == 4) { 0x0041ec3c je 0x41ee0c | goto label_7; | } 0x0041ec42 cmp edx, 2 | | if (edx == 2) { 0x0041ec45 je 0x41ee3c | goto label_8; | } 0x0041ec4b cmp edx, 1 | | if (edx != 1) { 0x0041ec4e jne 0x41ee6b | goto label_0; | } 0x0041ec54 mov r8, qword [rdi + 8] | r8 = *((rdi + 8)); 0x0041ec58 test r8, r8 | | if (r8 == 0) { 0x0041ec5b je 0x41ee6b | goto label_0; | } 0x0041ec61 mov rsi, qword [rsi] | rsi = *(rsi); 0x0041ec64 mov edi, 1 | edi = 1; 0x0041ec69 nop dword [rax] | | do { 0x0041ec70 movzx eax, byte [rsi + rdi - 1] | eax = *((rsi + rdi - 1)); 0x0041ec75 cmp qword [rcx + rdi*8 - 8], rax | 0x0041ec7a sete al | al = (*((rcx + rdi*8 - 8)) == rax) ? 1 : 0; | if (*((rcx + rdi*8 - 8)) != rax) { 0x0041ec7d jne 0x41ee6b | goto label_0; | } 0x0041ec83 lea rdx, [rdi + 1] | rdx = rdi + 1; 0x0041ec87 cmp rdi, r8 | 0x0041ec8a mov rdi, rdx | rdi = rdx; 0x0041ec8d jb 0x41ec70 | | } while (rdi < r8); 0x0041ec8f jmp 0x41ee6b | goto label_0; | label_1: 0x0041ec94 mov r8, qword [rdi + 8] | r8 = *((rdi + 8)); 0x0041ec98 test r8, r8 | | if (r8 == 0) { 0x0041ec9b je 0x41ee6b | goto label_0; | } 0x0041eca1 mov rsi, qword [rsi] | rsi = *(rsi); 0x0041eca4 mov edi, 1 | edi = 1; 0x0041eca9 nop dword [rax] | | do { 0x0041ecb0 movzx eax, byte [rcx + rdi - 1] | eax = *((rcx + rdi - 1)); 0x0041ecb5 cmp qword [rsi + rdi*8 - 8], rax | 0x0041ecba sete al | al = (*((rsi + rdi*8 - 8)) == rax) ? 1 : 0; | if (*((rsi + rdi*8 - 8)) != rax) { 0x0041ecbd jne 0x41ee6b | goto label_0; | } 0x0041ecc3 lea rdx, [rdi + 1] | rdx = rdi + 1; 0x0041ecc7 cmp rdi, r8 | 0x0041ecca mov rdi, rdx | rdi = rdx; 0x0041eccd jb 0x41ecb0 | | } while (rdi < r8); 0x0041eccf jmp 0x41ee6b | goto label_0; | label_2: 0x0041ecd4 mov r8, qword [rdi + 8] | r8 = *((rdi + 8)); 0x0041ecd8 test r8, r8 | | if (r8 == 0) { 0x0041ecdb je 0x41ee6b | goto label_0; | } 0x0041ece1 mov rsi, qword [rsi] | rsi = *(rsi); 0x0041ece4 mov edi, 1 | edi = 1; 0x0041ece9 nop dword [rax] | | do { 0x0041ecf0 movzx eax, byte [rcx + rdi - 1] | eax = *((rcx + rdi - 1)); 0x0041ecf5 cmp dword [rsi + rdi*4 - 4], eax | 0x0041ecf9 sete al | al = (*((rsi + rdi*4 - 4)) == eax) ? 1 : 0; | if (*((rsi + rdi*4 - 4)) != eax) { 0x0041ecfc jne 0x41ee6b | goto label_0; | } 0x0041ed02 lea rdx, [rdi + 1] | rdx = rdi + 1; 0x0041ed06 cmp rdi, r8 | 0x0041ed09 mov rdi, rdx | rdi = rdx; 0x0041ed0c jb 0x41ecf0 | | } while (rdi < r8); 0x0041ed0e jmp 0x41ee6b | goto label_0; | label_3: 0x0041ed13 mov r8, qword [rdi + 8] | r8 = *((rdi + 8)); 0x0041ed17 test r8, r8 | | if (r8 == 0) { 0x0041ed1a je 0x41ee6b | goto label_0; | } 0x0041ed20 mov rsi, qword [rsi] | rsi = *(rsi); 0x0041ed23 mov edi, 1 | edi = 1; 0x0041ed28 nop dword [rax + rax] | | do { 0x0041ed30 movzx eax, word [rcx + rdi*2 - 2] | eax = *((rcx + rdi*2 - 2)); 0x0041ed35 cmp qword [rsi + rdi*8 - 8], rax | 0x0041ed3a sete al | al = (*((rsi + rdi*8 - 8)) == rax) ? 1 : 0; | if (*((rsi + rdi*8 - 8)) != rax) { 0x0041ed3d jne 0x41ee6b | goto label_0; | } 0x0041ed43 lea rdx, [rdi + 1] | rdx = rdi + 1; 0x0041ed47 cmp rdi, r8 | 0x0041ed4a mov rdi, rdx | rdi = rdx; 0x0041ed4d jb 0x41ed30 | | } while (rdi < r8); 0x0041ed4f jmp 0x41ee6b | goto label_0; | label_4: 0x0041ed54 mov r8, qword [rdi + 8] | r8 = *((rdi + 8)); 0x0041ed58 test r8, r8 | | if (r8 == 0) { 0x0041ed5b je 0x41ee6b | goto label_0; | } 0x0041ed61 mov rsi, qword [rsi] | rsi = *(rsi); 0x0041ed64 mov edi, 1 | edi = 1; 0x0041ed69 nop dword [rax] | | do { 0x0041ed70 movzx eax, word [rcx + rdi*2 - 2] | eax = *((rcx + rdi*2 - 2)); 0x0041ed75 cmp dword [rsi + rdi*4 - 4], eax | 0x0041ed79 sete al | al = (*((rsi + rdi*4 - 4)) == eax) ? 1 : 0; | if (*((rsi + rdi*4 - 4)) != eax) { 0x0041ed7c jne 0x41ee6b | goto label_0; | } 0x0041ed82 lea rdx, [rdi + 1] | rdx = rdi + 1; 0x0041ed86 cmp rdi, r8 | 0x0041ed89 mov rdi, rdx | rdi = rdx; 0x0041ed8c jb 0x41ed70 | | } while (rdi < r8); 0x0041ed8e jmp 0x41ee6b | goto label_0; | label_5: 0x0041ed93 mov r8, qword [rdi + 8] | r8 = *((rdi + 8)); 0x0041ed97 test r8, r8 | | if (r8 == 0) { 0x0041ed9a je 0x41ee6b | goto label_0; | } 0x0041eda0 mov rsi, qword [rsi] | rsi = *(rsi); 0x0041eda3 mov edi, 1 | edi = 1; 0x0041eda8 nop dword [rax + rax] | | do { 0x0041edb0 mov eax, dword [rcx + rdi*4 - 4] | eax = *((rcx + rdi*4 - 4)); 0x0041edb4 cmp qword [rsi + rdi*8 - 8], rax | 0x0041edb9 sete al | al = (*((rsi + rdi*8 - 8)) == rax) ? 1 : 0; | if (*((rsi + rdi*8 - 8)) != rax) { 0x0041edbc jne 0x41ee6b | goto label_0; | } 0x0041edc2 lea rdx, [rdi + 1] | rdx = rdi + 1; 0x0041edc6 cmp rdi, r8 | 0x0041edc9 mov rdi, rdx | rdi = rdx; 0x0041edcc jb 0x41edb0 | | } while (rdi < r8); 0x0041edce jmp 0x41ee6b | goto label_0; | label_6: 0x0041edd3 mov r8, qword [rdi + 8] | r8 = *((rdi + 8)); 0x0041edd7 test r8, r8 | | if (r8 == 0) { 0x0041edda je 0x41ee6b | goto label_0; | } 0x0041ede0 mov rsi, qword [rsi] | rsi = *(rsi); 0x0041ede3 mov edi, 1 | edi = 1; 0x0041ede8 nop dword [rax + rax] | | do { 0x0041edf0 movzx eax, word [rsi + rdi*2 - 2] | eax = *((rsi + rdi*2 - 2)); 0x0041edf5 cmp dword [rcx + rdi*4 - 4], eax | 0x0041edf9 sete al | al = (*((rcx + rdi*4 - 4)) == eax) ? 1 : 0; | if (*((rcx + rdi*4 - 4)) != eax) { 0x0041edfc jne 0x41ee6b | goto label_0; | } 0x0041edfe lea rdx, [rdi + 1] | rdx = rdi + 1; 0x0041ee02 cmp rdi, r8 | 0x0041ee05 mov rdi, rdx | rdi = rdx; 0x0041ee08 jb 0x41edf0 | | } while (rdi < r8); 0x0041ee0a jmp 0x41ee6b | goto label_0; | label_7: 0x0041ee0c mov r8, qword [rdi + 8] | r8 = *((rdi + 8)); 0x0041ee10 test r8, r8 | | if (r8 == 0) { 0x0041ee13 je 0x41ee6b | goto label_0; | } 0x0041ee15 mov rsi, qword [rsi] | rsi = *(rsi); 0x0041ee18 mov edi, 1 | edi = 1; 0x0041ee1d nop dword [rax] | | do { 0x0041ee20 mov eax, dword [rsi + rdi*4 - 4] | eax = *((rsi + rdi*4 - 4)); 0x0041ee24 cmp qword [rcx + rdi*8 - 8], rax | 0x0041ee29 sete al | al = (*((rcx + rdi*8 - 8)) == rax) ? 1 : 0; | if (*((rcx + rdi*8 - 8)) != rax) { 0x0041ee2c jne 0x41ee6b | goto label_0; | } 0x0041ee2e lea rdx, [rdi + 1] | rdx = rdi + 1; 0x0041ee32 cmp rdi, r8 | 0x0041ee35 mov rdi, rdx | rdi = rdx; 0x0041ee38 jb 0x41ee20 | | } while (rdi < r8); 0x0041ee3a jmp 0x41ee6b | goto label_0; | label_8: 0x0041ee3c mov r8, qword [rdi + 8] | r8 = *((rdi + 8)); 0x0041ee40 test r8, r8 | | if (r8 == 0) { 0x0041ee43 je 0x41ee6b | goto label_0; | } 0x0041ee45 mov rsi, qword [rsi] | rsi = *(rsi); 0x0041ee48 mov edi, 1 | edi = 1; 0x0041ee4d nop dword [rax] | | do { 0x0041ee50 movzx eax, word [rsi + rdi*2 - 2] | eax = *((rsi + rdi*2 - 2)); 0x0041ee55 cmp qword [rcx + rdi*8 - 8], rax | 0x0041ee5a sete al | al = (*((rcx + rdi*8 - 8)) == rax) ? 1 : 0; | if (*((rcx + rdi*8 - 8)) != rax) { 0x0041ee5d jne 0x41ee6b | goto label_0; | } 0x0041ee5f lea rdx, [rdi + 1] | rdx = rdi + 1; 0x0041ee63 cmp rdi, r8 | 0x0041ee66 mov rdi, rdx | rdi = rdx; 0x0041ee69 jb 0x41ee50 | | } while (rdi < r8); | label_0: 0x0041ee6b ret | return eax; | }