; assembly | /* r2dec pseudo code output */ | /* balcl_commandline.t/none @ 0x45ce20 */ | #include | ; (fcn) method.BloombergLP::balcl::CommandLine.theBool_bsl::basic_string_char__std::__1::char_traits_char___bsl::allocator_char____const__const () | int64_t method_BloombergLP::balcl::CommandLine_theBool_bsl::basic_string_char_std::_1::char_traits_char_bsl::allocator_char_const_const (int32_t arg2, char * arg1) { | rsi = arg2; | rdi = arg1; | /* BloombergLP::balcl::CommandLine::theBool(bsl::basic_string, bsl::allocator > const&) const */ 0x0045ce20 push rbp | 0x0045ce21 push r15 | 0x0045ce23 push r14 | 0x0045ce25 push r13 | 0x0045ce27 push r12 | 0x0045ce29 push rbx | 0x0045ce2a push rax | 0x0045ce2b mov r13, rsi | r13 = rsi; 0x0045ce2e mov r14, rdi | r14 = rdi; 0x0045ce31 mov rax, qword [rdi] | rax = *(rdi); 0x0045ce34 cmp qword [rdi + 8], rax | | if (*((rdi + 8)) == rax) { 0x0045ce38 je 0x45ceaf | goto label_1; | } 0x0045ce3a mov ebp, 1 | 0x0045ce3f xor ecx, ecx | ecx = 0; 0x0045ce41 movabs r15, 0xaf8af8af8af8af8b | r15 = 0xaf8af8af8af8af8b; 0x0045ce4b jmp 0x45ce77 | goto label_2; | label_0: 0x0045ce50 mov rdi, rax | rdi = rax; 0x0045ce53 call 0x404840 | eax = bcmp (); 0x0045ce58 test eax, eax | | if (eax == 0) { 0x0045ce5a je 0x45ceaf | goto label_1; | } | do { 0x0045ce5c mov ecx, ebp | ecx = ebp; 0x0045ce5e mov rax, qword [r14] | rax = *(r14); 0x0045ce61 mov rdx, qword [r14 + 8] | rdx = *((r14 + 8)); 0x0045ce65 sub rdx, rax | rdx -= rax; 0x0045ce68 sar rdx, 3 | rdx >>= 3; 0x0045ce6c imul rdx, r15 | rdx *= r15; 0x0045ce70 inc ebp | ebp++; 0x0045ce72 cmp rdx, rcx | | if (rdx <= rcx) { 0x0045ce75 jbe 0x45ceaf | goto label_1; | } | label_2: 0x0045ce77 imul rdi, rcx, 0x118 | rdi = rcx * 0x118; 0x0045ce7e add rdi, rax | rdi += rax; 0x0045ce81 call 0x464990 | rax = BloombergLP::balcl::Option::name()const (rdi); 0x0045ce86 mov rdx, qword [rax + 0x18] | rdx = *((rax + 0x18)); 0x0045ce8a cmp rdx, qword [r13 + 0x18] | 0x0045ce8e jne 0x45ce5c | | } while (rdx != *((r13 + 0x18))); 0x0045ce90 test rdx, rdx | | if (rdx == 0) { 0x0045ce93 je 0x45ceaf | goto label_1; | } 0x0045ce95 cmp qword [r13 + 0x20], 0x17 | 0x0045ce9a mov rsi, r13 | rsi = r13; | if (*((r13 + 0x20)) != 0x17) { 0x0045ce9d je 0x45cea3 | 0x0045ce9f mov rsi, qword [r13] | rsi = *(r13); | } 0x0045cea3 cmp qword [rax + 0x20], 0x17 | | if (*((rax + 0x20)) == 0x17) { 0x0045cea8 je 0x45ce50 | goto label_0; | } 0x0045ceaa mov rax, qword [rax] | rax = *(rax); 0x0045cead jmp 0x45ce50 | goto label_0; | label_1: 0x0045ceaf cmp qword [r13 + 0x20], 0x17 | | if (*((r13 + 0x20)) != 0x17) { 0x0045ceb4 je 0x45ceba | 0x0045ceb6 mov r13, qword [r13] | r13 = *(r13); | } 0x0045ceba mov r12, qword [r14 + 0x88] | r12 = *((r14 + 0x88)); 0x0045cec1 mov rbp, qword [r14 + 0x90] | rbp = *((r14 + 0x90)); 0x0045cec8 mov r15, 0xffffffffffffffff | r15 = 0xffffffffffffffff; 0x0045cecf sub rbp, r12 | rbp -= r12; | if (rbp == 0) { 0x0045ced2 je 0x45cf03 | goto label_3; | } 0x0045ced4 xor ebx, ebx | ebx = 0; 0x0045ced6 nop word cs:[rax + rax] | | do { 0x0045cee0 mov rdi, qword [r12 + rbx + 8] | 0x0045cee5 mov rsi, r13 | 0x0045cee8 call 0x4049e0 | eax = strcmp (*((r12 + rbx + 8)), r13); 0x0045ceed test eax, eax | | if (eax == 0) { 0x0045ceef je 0x45cefc | goto label_4; | } 0x0045cef1 add rbx, 0x10 | rbx += 0x10; 0x0045cef5 cmp rbp, rbx | 0x0045cef8 jne 0x45cee0 | | } while (rbp != rbx); 0x0045cefa jmp 0x45cf03 | goto label_3; | label_4: 0x0045cefc sar rbx, 4 | rbx >>= 4; 0x0045cf00 mov r15, rbx | r15 = rbx; | label_3: 0x0045cf03 mov rax, qword [r14 + 0xc8] | rax = *((r14 + 0xc8)); 0x0045cf0a lea rcx, [r15 + r15*4] | rcx = r15 * 5; 0x0045cf0e shl rcx, 4 | rcx <<= 4; 0x0045cf12 mov al, byte [rax + rcx] | al = *((rax + rcx)); 0x0045cf15 add rsp, 8 | 0x0045cf19 pop rbx | 0x0045cf1a pop r12 | 0x0045cf1c pop r13 | 0x0045cf1e pop r14 | 0x0045cf20 pop r15 | 0x0045cf22 pop rbp | 0x0045cf23 ret | return rax; | }