; assembly | /* r2dec pseudo code output */ | /* bdlb_bitstringimputil.t/none @ 0x4018e0 */ | #include | ; (fcn) sym.find1AtMaxOracle_unsigned_long_ () | int64_t find1AtMaxOracle_unsigned_long_ (uint32_t arg1) { | rdi = arg1; | /* find1AtMaxOracle(unsigned long) */ 0x004018e0 mov eax, 0x3d | eax = 0x3d; 0x004018e5 nop word cs:[rax + rax] | 0x004018ef nop | | do { 0x004018f0 lea ecx, [rax + 2] | ecx = rax + 2; 0x004018f3 movzx ecx, cl | ecx = (int32_t) cl; 0x004018f6 bt rdi, rcx | | if (((rdi >> rcx) & 1) < 0) { 0x004018fa jb 0x401942 | goto label_0; | } 0x004018fc lea ecx, [rax + 1] | ecx = rax + 1; 0x004018ff movzx ecx, cl | ecx = (int32_t) cl; 0x00401902 bt rdi, rcx | | if (((rdi >> rcx) & 1) < 0) { 0x00401906 jb 0x401946 | goto label_1; | } 0x00401908 bt rdi, rax | | if (((rdi >> rax) & 1) < 0) { 0x0040190c jb 0x401945 | goto label_2; | } 0x0040190e lea ecx, [rax - 1] | ecx = rax - 1; 0x00401911 movzx ecx, cl | ecx = (int32_t) cl; 0x00401914 bt rdi, rcx | | if (((rdi >> rcx) & 1) < 0) { 0x00401918 jb 0x401949 | goto label_3; | } 0x0040191a add rax, 0xfffffffffffffffc | rax += 0xfffffffffffffffc; 0x0040191e cmp eax, 0xfffffffd | 0x00401921 jne 0x4018f0 | | } while (eax != 0xfffffffd); 0x00401923 push rax | 0x00401924 mov esi, 0x435070 | esi = "0 && \"0 passed to find1AtMaxOracle\"; 0x00401929 mov edi, 1 | edi = 1; 0x0040192e mov edx, 0x1a2 | edx = 0x1a2; 0x00401933 call 0x401950 | (anonymousnamespace)::aSsErT(bool,char const*,int) (); 0x00401938 mov eax, 0xffffffff | eax = 0xffffffff; 0x0040193d add rsp, 8 | 0x00401941 ret | return rax; | label_0: 0x00401942 add eax, 2 | eax += 2; | label_2: 0x00401945 ret | return rax; | label_1: 0x00401946 inc eax | eax++; 0x00401948 ret | return rax; | label_3: 0x00401949 dec eax | eax--; 0x0040194b ret | return rax; | }