; assembly | /* r2dec pseudo code output */ | /* balb_testmessages.t/assume @ 0x41c7f0 */ | #include | ; (fcn) method.BloombergLP::bdlb::Print.hexDump_std::__1::basic_ostream_char__std::__1::char_traits_char_____char_const__int_ () | int64_t method_BloombergLP::bdlb::Print_hexDump_std::_1::basic_ostream_char_std::_1::char_traits_char_char_const_int_ (int64_t arg3, int64_t arg2, int64_t arg1) { | int64_t var_c0h_2; | int64_t var_8h; | int64_t var_10h; | int64_t var_18h; | int64_t var_20h; | int64_t var_28h; | int64_t var_30h; | int64_t var_38h; | int64_t var_40h; | int64_t var_48h; | int64_t var_50h; | int64_t var_58h; | int64_t var_60h; | int64_t var_68h; | int64_t var_70h; | int64_t var_78h; | int64_t var_80h; | int64_t var_88h; | int64_t var_90h; | int64_t var_98h; | int64_t var_a0h; | int64_t var_a8h; | int64_t var_b0h; | int64_t var_b8h; | int64_t var_c0h; | int64_t var_c8h; | char * s; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::bdlb::Print::hexDump(std::__1::basic_ostream >&, char const*, int) */ 0x0041c7f0 push rbp | 0x0041c7f1 push r15 | 0x0041c7f3 push r14 | 0x0041c7f5 push r13 | 0x0041c7f7 push r12 | 0x0041c7f9 push rbx | 0x0041c7fa sub rsp, 0x118 | 0x0041c801 mov qword [rsp], rsi | *(rsp) = rsi; 0x0041c805 mov r12, rdi | r12 = rdi; 0x0041c808 test edx, edx | | if (edx == 0) { 0x0041c80a je 0x41cbd1 | goto label_4; | } 0x0041c810 mov r13d, edx | r13d = edx; 0x0041c813 lea rbp, [rsp + 0xd0] | rbp = rsp + 0xd0; 0x0041c81b mov r15, qword [rsp] | r15 = *(rsp); 0x0041c81f xor ebx, ebx | ebx = 0; 0x0041c821 jmp 0x41c85f | goto label_5; | label_2: 0x0041c830 mov esi, 0x4486f0 | esi = 0x4486f0; 0x0041c835 mov edx, 2 | edx = 2; 0x0041c83a mov rdi, r12 | rdi = r12; 0x0041c83d call 0x403600 | std::_1::basic_ostream>::write(char const*,long) (); 0x0041c842 lea rbp, [rsp + 0xd0] | rbp = rsp + 0xd0; | label_1: 0x0041c84a mov rax, qword [rsp + 0x30] | rax = *((rsp + 0x30)); 0x0041c84f add r15, 0x10 | r15 += 0x10; 0x0041c853 mov rbx, rax | rbx = rax; 0x0041c856 cmp rax, r13 | | if (rax >= r13) { 0x0041c859 jae 0x41cbd1 | goto label_4; | } | label_5: 0x0041c85f mov esi, 0x448674 | 0x0041c864 mov rdi, rbp | 0x0041c867 mov edx, ebx | 0x0041c869 xor eax, eax | eax = 0; 0x0041c86b call 0x4036b0 | eax = sprintf (rbp, "%6d: ", ebx); 0x0041c870 movsxd rdx, eax | rdx = (int64_t) eax; 0x0041c873 mov rdi, r12 | rdi = r12; 0x0041c876 mov rsi, rbp | rsi = rbp; 0x0041c879 call 0x403600 | std::_1::basic_ostream>::write(char const*,long) (); 0x0041c87e lea rax, [rbx + 0x10] | rax = rbx + 0x10; 0x0041c882 cmp rax, r13 | 0x0041c885 mov qword [rsp + 0x30], rax | *((rsp + 0x30)) = rax; | if (rax <= r13) { 0x0041c88a jbe 0x41c910 | goto label_6; | } 0x0041c890 xor r14d, r14d | r14d = 0; 0x0041c893 jmp 0x41c8ad | | while (eax != 3) { | label_0: 0x0041c8a0 inc r14 | r14++; 0x0041c8a3 cmp r14, 0x10 | | if (r14 == 0x10) { 0x0041c8a7 je 0x41cb80 | goto label_7; | } 0x0041c8ad lea rax, [rbx + r14] | rax = rbx + r14; 0x0041c8b1 cmp rax, r13 | | if (rax < r13) { 0x0041c8b4 jae 0x41c8e0 | 0x0041c8b6 movzx edx, byte [r15 + r14] | edx = *((r15 + r14)); 0x0041c8bb mov esi, 0x44867c | 0x0041c8c0 mov rdi, rbp | 0x0041c8c3 xor eax, eax | eax = 0; 0x0041c8c5 call 0x4036b0 | eax = sprintf (rbp, "%.2X", rdx); 0x0041c8ca movsxd rdx, eax | rdx = (int64_t) eax; 0x0041c8cd mov rdi, r12 | rdi = r12; 0x0041c8d0 mov rsi, rbp | rsi = rbp; 0x0041c8d3 jmp 0x41c8ed | | } else { 0x0041c8e0 mov esi, 0x448679 | esi = 0x448679; 0x0041c8e5 mov edx, 2 | edx = 2; 0x0041c8ea mov rdi, r12 | rdi = r12; | } 0x0041c8ed call 0x403600 | std::_1::basic_ostream>::write(char const*,long) (); 0x0041c8f2 mov eax, r14d | eax = r14d; 0x0041c8f5 and eax, 3 | eax &= 3; 0x0041c8f8 cmp eax, 3 | 0x0041c8fb jne 0x41c8a0 | | } 0x0041c8fd mov rdi, r12 | rdi = r12; 0x0041c900 mov esi, 0x20 | esi = 0x20; 0x0041c905 call 0x4036c0 | std::_1::basic_ostream>::put(char) (); 0x0041c90a jmp 0x41c8a0 | goto label_0; | label_6: 0x0041c910 mov rax, qword [rsp] | rax = *(rsp); 0x0041c914 movzx edx, byte [rax + rbx] | edx = *((rax + rbx)); 0x0041c918 movzx r8d, byte [rax + rbx + 1] | r8d = *((rax + rbx + 1)); 0x0041c91e movzx r9d, byte [rax + rbx + 2] | r9d = *((rax + rbx + 2)); 0x0041c924 movzx r10d, byte [rax + rbx + 3] | r10d = *((rax + rbx + 3)); 0x0041c92a movzx ecx, byte [rax + rbx + 4] | ecx = *((rax + rbx + 4)); 0x0041c92f mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x0041c934 movzx ecx, byte [rax + rbx + 5] | ecx = *((rax + rbx + 5)); 0x0041c939 mov qword [rsp + 0x20], rcx | *((rsp + 0x20)) = rcx; 0x0041c93e movzx ecx, byte [rax + rbx + 6] | ecx = *((rax + rbx + 6)); 0x0041c943 mov qword [rsp + 0x18], rcx | *((rsp + 0x18)) = rcx; 0x0041c948 movzx ecx, byte [rax + rbx + 7] | ecx = *((rax + rbx + 7)); 0x0041c94d mov qword [rsp + 0x10], rcx | *((rsp + 0x10)) = rcx; 0x0041c952 movzx ecx, byte [rax + rbx + 8] | ecx = *((rax + rbx + 8)); 0x0041c957 mov qword [rsp + 8], rcx | *((rsp + 8)) = rcx; 0x0041c95c movzx r14d, byte [rax + rbx + 9] | r14d = *((rax + rbx + 9)); 0x0041c962 mov qword [rsp + 0xc8], r14 | *((rsp + 0xc8)) = r14; 0x0041c96a movzx ebp, byte [rax + rbx + 0xa] | ebp = *((rax + rbx + 0xa)); 0x0041c96f mov qword [rsp + 0xc0], rbp | *((rsp + 0xc0)) = rbp; 0x0041c977 movzx r11d, byte [rax + rbx + 0xb] | r11d = *((rax + rbx + 0xb)); 0x0041c97d mov qword [rsp + 0xb8], r11 | *((rsp + 0xb8)) = r11; 0x0041c985 movzx edi, byte [rax + rbx + 0xc] | edi = *((rax + rbx + 0xc)); 0x0041c98a mov qword [rsp + 0xa8], rdi | *((rsp + 0xa8)) = rdi; 0x0041c992 movzx esi, byte [rax + rbx + 0xd] | esi = *((rax + rbx + 0xd)); 0x0041c997 mov qword [rsp + 0x98], rsi | *((rsp + 0x98)) = rsi; 0x0041c99f movzx ecx, byte [rax + rbx + 0xe] | ecx = *((rax + rbx + 0xe)); 0x0041c9a4 mov qword [rsp + 0x88], rcx | *((rsp + 0x88)) = rcx; 0x0041c9ac movzx ebx, byte [rax + rbx + 0xf] | ebx = *((rax + rbx + 0xf)); 0x0041c9b1 movsx eax, byte [rdx + 0x448720] | eax = *((rdx + obj.BloombergLP::hexDumpChars)); 0x0041c9b8 mov qword [rsp + 0xb0], rax | *((rsp + 0xb0)) = rax; 0x0041c9c0 movsx eax, byte [r8 + 0x448720] | eax = *((r8 + obj.BloombergLP::hexDumpChars)); 0x0041c9c8 mov qword [rsp + 0xa0], rax | *((rsp + 0xa0)) = rax; 0x0041c9d0 movsx eax, byte [r9 + 0x448720] | eax = *((r9 + obj.BloombergLP::hexDumpChars)); 0x0041c9d8 mov qword [rsp + 0x90], rax | *((rsp + 0x90)) = rax; 0x0041c9e0 movsx eax, byte [r10 + 0x448720] | eax = *((r10 + obj.BloombergLP::hexDumpChars)); 0x0041c9e8 mov qword [rsp + 0x80], rax | *((rsp + 0x80)) = rax; 0x0041c9f0 mov rax, qword [rsp + 0x28] | rax = *((rsp + 0x28)); 0x0041c9f5 movsx eax, byte [rax + 0x448720] | eax = *((rax + obj.BloombergLP::hexDumpChars)); 0x0041c9fc mov qword [rsp + 0x78], rax | *((rsp + 0x78)) = rax; 0x0041ca01 mov rax, qword [rsp + 0x20] | rax = *((rsp + 0x20)); 0x0041ca06 movsx eax, byte [rax + 0x448720] | eax = *((rax + obj.BloombergLP::hexDumpChars)); 0x0041ca0d mov qword [rsp + 0x70], rax | *((rsp + 0x70)) = rax; 0x0041ca12 mov rax, qword [rsp + 0x18] | rax = *((rsp + 0x18)); 0x0041ca17 movsx eax, byte [rax + 0x448720] | eax = *((rax + obj.BloombergLP::hexDumpChars)); 0x0041ca1e mov qword [rsp + 0x68], rax | *((rsp + 0x68)) = rax; 0x0041ca23 mov rax, qword [rsp + 0x10] | rax = *((rsp + 0x10)); 0x0041ca28 movsx eax, byte [rax + 0x448720] | eax = *((rax + obj.BloombergLP::hexDumpChars)); 0x0041ca2f mov qword [rsp + 0x60], rax | *((rsp + 0x60)) = rax; 0x0041ca34 mov rax, qword [rsp + 8] | rax = *((rsp + 8)); 0x0041ca39 movsx eax, byte [rax + 0x448720] | eax = *((rax + obj.BloombergLP::hexDumpChars)); 0x0041ca40 mov qword [rsp + 0x58], rax | *((rsp + 0x58)) = rax; 0x0041ca45 movsx eax, byte [r14 + 0x448720] | eax = *((r14 + obj.BloombergLP::hexDumpChars)); 0x0041ca4d mov qword [rsp + 0x50], rax | *((rsp + 0x50)) = rax; 0x0041ca52 movsx eax, byte [rbp + 0x448720] | eax = *((rbp + obj.BloombergLP::hexDumpChars)); 0x0041ca59 mov qword [rsp + 0x48], rax | *((rsp + 0x48)) = rax; 0x0041ca5e movsx eax, byte [r11 + 0x448720] | eax = *((r11 + obj.BloombergLP::hexDumpChars)); 0x0041ca66 mov qword [rsp + 0x40], rax | *((rsp + 0x40)) = rax; 0x0041ca6b movsx eax, byte [rdi + 0x448720] | eax = *((rdi + obj.BloombergLP::hexDumpChars)); 0x0041ca72 mov qword [rsp + 0x38], rax | *((rsp + 0x38)) = rax; 0x0041ca77 movsx r14d, byte [rsi + 0x448720] | r14d = *((rsi + obj.BloombergLP::hexDumpChars)); 0x0041ca7f movsx r11d, byte [rcx + 0x448720] | r11d = *((rcx + obj.BloombergLP::hexDumpChars)); 0x0041ca87 movsx ebp, byte [rbx + 0x448720] | ebp = *((rbx + obj.BloombergLP::hexDumpChars)); 0x0041ca8e mov esi, 0x448687 | 0x0041ca93 lea rdi, [rsp + 0xd0] | 0x0041ca9b mov ecx, r8d | ecx = r8d; 0x0041ca9e mov r8d, r9d | r8d = r9d; 0x0041caa1 mov r9d, r10d | r9d = r10d; 0x0041caa4 xor eax, eax | eax = 0; 0x0041caa6 push rbp | 0x0041caa7 lea rbp, [rsp + 0xd8] | rbp = rsp + 0xd8; 0x0041caaf push r11 | 0x0041cab1 push r14 | 0x0041cab3 push qword [rsp + 0x50] | 0x0041cab7 push qword [rsp + 0x60] | 0x0041cabb push qword [rsp + 0x70] | 0x0041cabf push qword [rsp + 0x80] | 0x0041cac6 push qword [rsp + 0x90] | 0x0041cacd push qword [rsp + 0xa0] | 0x0041cad4 push qword [rsp + 0xb0] | 0x0041cadb push qword [rsp + 0xc0] | 0x0041cae2 push qword [rsp + 0xd0] | 0x0041cae9 push qword [rsp + 0xe0] | 0x0041caf0 push qword [rsp + 0xf8] | 0x0041caf7 push qword [rsp + 0x110] | 0x0041cafe push qword [rsp + 0x128] | 0x0041cb05 push rbx | 0x0041cb06 push qword [rsp + 0x110] | 0x0041cb0d push qword [rsp + 0x128] | 0x0041cb14 push qword [rsp + 0x140] | 0x0041cb1b push qword [rsp + 0x158] | 0x0041cb22 push qword [rsp + 0x168] | 0x0041cb29 push qword [rsp + 0x178] | 0x0041cb30 push qword [rsp + 0xc0] | 0x0041cb37 push qword [rsp + 0xd0] | 0x0041cb3e push qword [rsp + 0xe0] | 0x0041cb45 push qword [rsp + 0xf0] | 0x0041cb4c push qword [rsp + 0x100] | 0x0041cb53 call 0x4036b0 | sprintf (rsp + 0xd0, "%.2X%.2X%.2X%.2X %.2X%.2X%.2X%.2X %.2X%.2X%.2X%.2X %.2X%.2X%.2X%.2X |%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c|\n", rdx); 0x0041cb58 add rsp, 0xe0 | 0x0041cb5f mov edx, 0x3b | edx = 0x3b; 0x0041cb64 mov rdi, r12 | rdi = r12; 0x0041cb67 mov rsi, rbp | rsi = rbp; 0x0041cb6a call 0x403600 | std::_1::basic_ostream>::write(char const*,long) (); 0x0041cb6f jmp 0x41c84a | goto label_1; | label_7: 0x0041cb80 mov esi, 0x448681 | 0x0041cb85 mov edx, 5 | 0x0041cb8a mov rdi, r12 | 0x0041cb8d call 0x4043d0 | al = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (r12, " |", 5); 0x0041cb92 xor ebp, ebp | ebp = 0; 0x0041cb94 jmp 0x41cbb8 | goto label_8; | label_3: 0x0041cba0 movsx esi, al | esi = (int32_t) al; 0x0041cba3 mov rdi, r12 | rdi = r12; 0x0041cba6 call 0x4036c0 | std::_1::basic_ostream>::put(char) (); 0x0041cbab inc rbp | rbp++; 0x0041cbae cmp rbp, 0x10 | | if (rbp == 0x10) { 0x0041cbb2 je 0x41c830 | goto label_2; | } | label_8: 0x0041cbb8 lea rcx, [rbx + rbp] | rcx = rbx + rbp; 0x0041cbbc mov al, 0x20 | al = 0x20; 0x0041cbbe cmp rcx, r13 | | if (rcx >= r13) { 0x0041cbc1 jae 0x41cba0 | goto label_3; | } 0x0041cbc3 movzx eax, byte [r15 + rbp] | eax = *((r15 + rbp)); 0x0041cbc8 movzx eax, byte [rax + 0x448720] | eax = *((rax + obj.BloombergLP::hexDumpChars)); 0x0041cbcf jmp 0x41cba0 | goto label_3; | label_4: 0x0041cbd1 mov rax, r12 | rax = r12; 0x0041cbd4 add rsp, 0x118 | 0x0041cbdb pop rbx | 0x0041cbdc pop r12 | 0x0041cbde pop r13 | 0x0041cbe0 pop r14 | 0x0041cbe2 pop r15 | 0x0041cbe4 pop rbp | 0x0041cbe5 ret | return rax; | }