; assembly | /* r2dec pseudo code output */ | /* balb_testmessages.t/none @ 0x41c840 */ | #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_ch; | 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; | int64_t var_d0h; | int64_t var_d8h; | char * s; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::bdlb::Print::hexDump(std::__1::basic_ostream >&, char const*, int) */ 0x0041c840 push rbp | 0x0041c841 push r15 | 0x0041c843 push r14 | 0x0041c845 push r13 | 0x0041c847 push r12 | 0x0041c849 push rbx | 0x0041c84a sub rsp, 0x128 | 0x0041c851 mov qword [rsp + 0x10], rsi | *((rsp + 0x10)) = rsi; 0x0041c856 mov r12, rdi | r12 = rdi; 0x0041c859 test edx, edx | | if (edx <= 0) { 0x0041c85b jle 0x41cc42 | goto label_4; | } 0x0041c861 mov r14d, edx | r14d = edx; 0x0041c864 mov r13d, edx | r13d = edx; 0x0041c867 mov r15, qword [rsp + 0x10] | r15 = *((rsp + 0x10)); 0x0041c86c xor ebp, ebp | ebp = 0; 0x0041c86e mov dword [rsp + 0xc], edx | *((rsp + 0xc)) = edx; 0x0041c872 jmp 0x41c8ac | goto label_5; | label_2: 0x0041c880 mov esi, 0x447f5e | esi = 0x447f5e; 0x0041c885 mov edx, 2 | edx = 2; 0x0041c88a mov rdi, r12 | rdi = r12; 0x0041c88d call 0x403600 | std::_1::basic_ostream>::write(char const*,long) (); 0x0041c892 mov r14d, dword [rsp + 0xc] | r14d = *((rsp + 0xc)); | label_1: 0x0041c897 mov rax, qword [rsp + 0x40] | rax = *((rsp + 0x40)); 0x0041c89c add r15, 0x10 | r15 += 0x10; 0x0041c8a0 mov rbp, rax | 0x0041c8a3 cmp eax, r14d | | if (eax >= r14d) { 0x0041c8a6 jge 0x41cc42 | goto label_4; | } | label_5: 0x0041c8ac mov esi, 0x447ee2 | 0x0041c8b1 lea rbx, [rsp + 0xe0] | rbx = rsp + 0xe0; 0x0041c8b9 mov rdi, rbx | 0x0041c8bc mov edx, ebp | 0x0041c8be xor eax, eax | eax = 0; 0x0041c8c0 call 0x4036b0 | eax = sprintf (rbx, "%6d: ", ebp); 0x0041c8c5 movsxd rdx, eax | rdx = (int64_t) eax; 0x0041c8c8 mov rdi, r12 | rdi = r12; 0x0041c8cb mov rsi, rbx | rsi = rbx; 0x0041c8ce call 0x403600 | std::_1::basic_ostream>::write(char const*,long) (); 0x0041c8d3 lea rax, [rbp + 0x10] | rax = rbp + 0x10; 0x0041c8d7 cmp eax, r14d | 0x0041c8da mov qword [rsp + 0x40], rax | *((rsp + 0x40)) = rax; | if (eax <= r14d) { 0x0041c8df jle 0x41c970 | goto label_6; | } 0x0041c8e5 xor r14d, r14d | r14d = 0; 0x0041c8e8 lea rbx, [rsp + 0xe0] | rbx = rsp + 0xe0; 0x0041c8f0 jmp 0x41c90d | | while (eax != 3) { | label_0: 0x0041c900 inc r14 | r14++; 0x0041c903 cmp r14, 0x10 | | if (r14 == 0x10) { 0x0041c907 je 0x41cbf0 | goto label_7; | } 0x0041c90d lea rax, [rbp + r14] | rax = rbp + r14; 0x0041c912 cmp rax, r13 | | if (rax < r13) { 0x0041c915 jge 0x41c940 | 0x0041c917 movzx edx, byte [r15 + r14] | edx = *((r15 + r14)); 0x0041c91c mov esi, 0x447eea | 0x0041c921 mov rdi, rbx | 0x0041c924 xor eax, eax | eax = 0; 0x0041c926 call 0x4036b0 | eax = sprintf (rbx, "%.2X", rdx); 0x0041c92b movsxd rdx, eax | rdx = (int64_t) eax; 0x0041c92e mov rdi, r12 | rdi = r12; 0x0041c931 mov rsi, rbx | rsi = rbx; 0x0041c934 jmp 0x41c94d | | } else { 0x0041c940 mov esi, 0x447ee7 | esi = 0x447ee7; 0x0041c945 mov edx, 2 | edx = 2; 0x0041c94a mov rdi, r12 | rdi = r12; | } 0x0041c94d call 0x403600 | std::_1::basic_ostream>::write(char const*,long) (); 0x0041c952 mov eax, r14d | eax = r14d; 0x0041c955 and eax, 3 | eax &= 3; 0x0041c958 cmp eax, 3 | 0x0041c95b jne 0x41c900 | | } 0x0041c95d mov rdi, r12 | rdi = r12; 0x0041c960 mov esi, 0x20 | esi = 0x20; 0x0041c965 call 0x4036c0 | std::_1::basic_ostream>::put(char) (); 0x0041c96a jmp 0x41c900 | goto label_0; | label_6: 0x0041c970 mov rax, qword [rsp + 0x10] | rax = *((rsp + 0x10)); 0x0041c975 movzx edx, byte [rax + rbp] | edx = *((rax + rbp)); 0x0041c979 movzx r8d, byte [rax + rbp + 1] | r8d = *((rax + rbp + 1)); 0x0041c97f movzx r9d, byte [rax + rbp + 2] | r9d = *((rax + rbp + 2)); 0x0041c985 movzx r10d, byte [rax + rbp + 3] | r10d = *((rax + rbp + 3)); 0x0041c98b movzx ecx, byte [rax + rbp + 4] | ecx = *((rax + rbp + 4)); 0x0041c990 mov qword [rsp + 0x38], rcx | *((rsp + 0x38)) = rcx; 0x0041c995 movzx ecx, byte [rax + rbp + 5] | ecx = *((rax + rbp + 5)); 0x0041c99a mov qword [rsp + 0x30], rcx | *((rsp + 0x30)) = rcx; 0x0041c99f movzx ecx, byte [rax + rbp + 6] | ecx = *((rax + rbp + 6)); 0x0041c9a4 mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x0041c9a9 movzx ecx, byte [rax + rbp + 7] | ecx = *((rax + rbp + 7)); 0x0041c9ae mov qword [rsp + 0x20], rcx | *((rsp + 0x20)) = rcx; 0x0041c9b3 movzx ecx, byte [rax + rbp + 8] | ecx = *((rax + rbp + 8)); 0x0041c9b8 mov qword [rsp + 0x18], rcx | *((rsp + 0x18)) = rcx; 0x0041c9bd movzx r14d, byte [rax + rbp + 9] | r14d = *((rax + rbp + 9)); 0x0041c9c3 mov qword [rsp + 0xd8], r14 | *((rsp + 0xd8)) = r14; 0x0041c9cb movzx ebx, byte [rax + rbp + 0xa] | ebx = *((rax + rbp + 0xa)); 0x0041c9d0 mov qword [rsp + 0xd0], rbx | *((rsp + 0xd0)) = rbx; 0x0041c9d8 movzx r11d, byte [rax + rbp + 0xb] | r11d = *((rax + rbp + 0xb)); 0x0041c9de mov qword [rsp + 0xc8], r11 | *((rsp + 0xc8)) = r11; 0x0041c9e6 movzx edi, byte [rax + rbp + 0xc] | edi = *((rax + rbp + 0xc)); 0x0041c9eb mov qword [rsp + 0xb8], rdi | *((rsp + 0xb8)) = rdi; 0x0041c9f3 movzx esi, byte [rax + rbp + 0xd] | esi = *((rax + rbp + 0xd)); 0x0041c9f8 mov qword [rsp + 0xa8], rsi | *((rsp + 0xa8)) = rsi; 0x0041ca00 movzx ecx, byte [rax + rbp + 0xe] | ecx = *((rax + rbp + 0xe)); 0x0041ca05 mov qword [rsp + 0x98], rcx | *((rsp + 0x98)) = rcx; 0x0041ca0d movzx ebp, byte [rax + rbp + 0xf] | ebp = *((rax + rbp + 0xf)); 0x0041ca12 movsx eax, byte [rdx + 0x447f90] | eax = *((rdx + obj.BloombergLP::hexDumpChars)); 0x0041ca19 mov qword [rsp + 0xc0], rax | *((rsp + 0xc0)) = rax; 0x0041ca21 movsx eax, byte [r8 + 0x447f90] | eax = *((r8 + obj.BloombergLP::hexDumpChars)); 0x0041ca29 mov qword [rsp + 0xb0], rax | *((rsp + 0xb0)) = rax; 0x0041ca31 movsx eax, byte [r9 + 0x447f90] | eax = *((r9 + obj.BloombergLP::hexDumpChars)); 0x0041ca39 mov qword [rsp + 0xa0], rax | *((rsp + 0xa0)) = rax; 0x0041ca41 movsx eax, byte [r10 + 0x447f90] | eax = *((r10 + obj.BloombergLP::hexDumpChars)); 0x0041ca49 mov qword [rsp + 0x90], rax | *((rsp + 0x90)) = rax; 0x0041ca51 mov rax, qword [rsp + 0x38] | rax = *((rsp + 0x38)); 0x0041ca56 movsx eax, byte [rax + 0x447f90] | eax = *((rax + obj.BloombergLP::hexDumpChars)); 0x0041ca5d mov qword [rsp + 0x88], rax | *((rsp + 0x88)) = rax; 0x0041ca65 mov rax, qword [rsp + 0x30] | rax = *((rsp + 0x30)); 0x0041ca6a movsx eax, byte [rax + 0x447f90] | eax = *((rax + obj.BloombergLP::hexDumpChars)); 0x0041ca71 mov qword [rsp + 0x80], rax | *((rsp + 0x80)) = rax; 0x0041ca79 mov rax, qword [rsp + 0x28] | rax = *((rsp + 0x28)); 0x0041ca7e movsx eax, byte [rax + 0x447f90] | eax = *((rax + obj.BloombergLP::hexDumpChars)); 0x0041ca85 mov qword [rsp + 0x78], rax | *((rsp + 0x78)) = rax; 0x0041ca8a mov rax, qword [rsp + 0x20] | rax = *((rsp + 0x20)); 0x0041ca8f movsx eax, byte [rax + 0x447f90] | eax = *((rax + obj.BloombergLP::hexDumpChars)); 0x0041ca96 mov qword [rsp + 0x70], rax | *((rsp + 0x70)) = rax; 0x0041ca9b mov rax, qword [rsp + 0x18] | rax = *((rsp + 0x18)); 0x0041caa0 movsx eax, byte [rax + 0x447f90] | eax = *((rax + obj.BloombergLP::hexDumpChars)); 0x0041caa7 mov qword [rsp + 0x68], rax | *((rsp + 0x68)) = rax; 0x0041caac movsx eax, byte [r14 + 0x447f90] | eax = *((r14 + obj.BloombergLP::hexDumpChars)); 0x0041cab4 mov qword [rsp + 0x60], rax | *((rsp + 0x60)) = rax; 0x0041cab9 movsx eax, byte [rbx + 0x447f90] | eax = *((rbx + obj.BloombergLP::hexDumpChars)); 0x0041cac0 mov qword [rsp + 0x58], rax | *((rsp + 0x58)) = rax; 0x0041cac5 lea rax, [rsp + 0xe0] | rax = rsp + 0xe0; 0x0041cacd movsx ebx, byte [r11 + 0x447f90] | ebx = *((r11 + obj.BloombergLP::hexDumpChars)); 0x0041cad5 mov qword [rsp + 0x50], rbx | *((rsp + 0x50)) = rbx; 0x0041cada movsx edi, byte [rdi + 0x447f90] | edi = *((rdi + obj.BloombergLP::hexDumpChars)); 0x0041cae1 mov qword [rsp + 0x48], rdi | *((rsp + 0x48)) = rdi; 0x0041cae6 movsx r14d, byte [rsi + 0x447f90] | r14d = *((rsi + obj.BloombergLP::hexDumpChars)); 0x0041caee movsx r11d, byte [rcx + 0x447f90] | r11d = *((rcx + obj.BloombergLP::hexDumpChars)); 0x0041caf6 movsx ebx, byte [rbp + 0x447f90] | ebx = *((rbp + obj.BloombergLP::hexDumpChars)); 0x0041cafd mov esi, 0x447ef5 | 0x0041cb02 mov rdi, rax | 0x0041cb05 mov ecx, r8d | ecx = r8d; 0x0041cb08 mov r8d, r9d | r8d = r9d; 0x0041cb0b mov r9d, r10d | r9d = r10d; 0x0041cb0e xor eax, eax | eax = 0; 0x0041cb10 push rbx | 0x0041cb11 mov ebx, dword [rsp + 0x14] | ebx = *((rsp + 0x14)); 0x0041cb15 push r11 | 0x0041cb17 push r14 | 0x0041cb19 push qword [rsp + 0x60] | 0x0041cb1d push qword [rsp + 0x70] | 0x0041cb21 mov r14d, ebx | r14d = ebx; 0x0041cb24 push qword [rsp + 0x80] | 0x0041cb2b push qword [rsp + 0x90] | 0x0041cb32 push qword [rsp + 0xa0] | 0x0041cb39 push qword [rsp + 0xb0] | 0x0041cb40 push qword [rsp + 0xc0] | 0x0041cb47 push qword [rsp + 0xd0] | 0x0041cb4e push qword [rsp + 0xe0] | 0x0041cb55 push qword [rsp + 0xf0] | 0x0041cb5c push qword [rsp + 0x108] | 0x0041cb63 push qword [rsp + 0x120] | 0x0041cb6a push qword [rsp + 0x138] | 0x0041cb71 push rbp | 0x0041cb72 push qword [rsp + 0x120] | 0x0041cb79 push qword [rsp + 0x138] | 0x0041cb80 push qword [rsp + 0x150] | 0x0041cb87 push qword [rsp + 0x168] | 0x0041cb8e push qword [rsp + 0x178] | 0x0041cb95 push qword [rsp + 0x188] | 0x0041cb9c push qword [rsp + 0xd0] | 0x0041cba3 push qword [rsp + 0xe0] | 0x0041cbaa push qword [rsp + 0xf0] | 0x0041cbb1 push qword [rsp + 0x100] | 0x0041cbb8 push qword [rsp + 0x110] | 0x0041cbbf call 0x4036b0 | sprintf (rax, "%.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); 0x0041cbc4 add rsp, 0xe0 | 0x0041cbcb mov edx, 0x3b | edx = 0x3b; 0x0041cbd0 mov rdi, r12 | rdi = r12; 0x0041cbd3 lea rsi, [rsp + 0xe0] | rsi = rsp + 0xe0; 0x0041cbdb call 0x403600 | std::_1::basic_ostream>::write(char const*,long) (); 0x0041cbe0 jmp 0x41c897 | goto label_1; | label_7: 0x0041cbf0 mov esi, 0x447eef | 0x0041cbf5 mov edx, 5 | 0x0041cbfa mov rdi, r12 | 0x0041cbfd call 0x4043d0 | al = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (r12, " |", 5); 0x0041cc02 xor ebx, ebx | ebx = 0; 0x0041cc04 jmp 0x41cc28 | goto label_8; | label_3: 0x0041cc10 movsx esi, al | esi = (int32_t) al; 0x0041cc13 mov rdi, r12 | rdi = r12; 0x0041cc16 call 0x4036c0 | std::_1::basic_ostream>::put(char) (); 0x0041cc1b inc rbx | rbx++; 0x0041cc1e cmp rbx, 0x10 | | if (rbx == 0x10) { 0x0041cc22 je 0x41c880 | goto label_2; | } | label_8: 0x0041cc28 lea rcx, [rbp + rbx] | rcx = rbp + rbx; 0x0041cc2d mov al, 0x20 | al = 0x20; 0x0041cc2f cmp rcx, r13 | | if (rcx >= r13) { 0x0041cc32 jge 0x41cc10 | goto label_3; | } 0x0041cc34 movzx eax, byte [r15 + rbx] | eax = *((r15 + rbx)); 0x0041cc39 movzx eax, byte [rax + 0x447f90] | eax = *((rax + obj.BloombergLP::hexDumpChars)); 0x0041cc40 jmp 0x41cc10 | goto label_3; | label_4: 0x0041cc42 mov rax, r12 | rax = r12; 0x0041cc45 add rsp, 0x128 | 0x0041cc4c pop rbx | 0x0041cc4d pop r12 | 0x0041cc4f pop r13 | 0x0041cc51 pop r14 | 0x0041cc53 pop r15 | 0x0041cc55 pop rbp | 0x0041cc56 ret | return rax; | }