; assembly | /* r2dec pseudo code output */ | /* balb_filecleanerutil.t/none @ 0x40ca50 */ | #include | ; (fcn) method.BloombergLP::bdls::FilesystemUtil.open_char_const__BloombergLP::bdls::FilesystemUtil::FileOpenPolicy__BloombergLP::bdls::FilesystemUtil::FileIOPolicy__BloombergLP::bdls::FilesystemUtil::FileTruncatePolicy_ () | int32_t method_BloombergLP::bdls::FilesystemUtil_open_char_const_BloombergLP::bdls::FilesystemUtil::FileOpenPolicy_BloombergLP::bdls::FilesystemUtil::FileIOPolicy_BloombergLP::bdls::FilesystemUtil::FileTruncatePolicy_ (int64_t arg4, uint32_t arg3, int64_t arg2) { | rcx = arg4; | rdx = arg3; | rsi = arg2; | /* BloombergLP::bdls::FilesystemUtil::open(char const*, BloombergLP::bdls::FilesystemUtil::FileOpenPolicy, BloombergLP::bdls::FilesystemUtil::FileIOPolicy, BloombergLP::bdls::FilesystemUtil::FileTruncatePolicy) */ 0x0040ca50 mov eax, esi | eax = esi; 0x0040ca52 mov esi, ecx | esi = ecx; 0x0040ca54 or esi, eax | esi |= eax; | if (esi == 0) { 0x0040ca56 je 0x40ca97 | goto label_1; | } 0x0040ca58 dec edx | edx--; 0x0040ca5a xor esi, esi | esi = 0; 0x0040ca5c cmp edx, 4 | | if (edx >= 4) { 0x0040ca5f jae 0x40ca6b | goto label_0; | } 0x0040ca61 movsxd rdx, edx | rdx = (int64_t) edx; 0x0040ca64 mov esi, dword [rdx*4 + 0x43d090] | esi = *((rdx*4 + 0x43d090)); | do { | label_0: 0x0040ca6b cmp eax, 3 | | if (eax <= 3) { 0x0040ca6e ja 0x40ca90 | 0x0040ca70 mov edx, 0x1b6 | edx = 0x1b6; 0x0040ca75 mov r8d, 0xc0 | r8d = 0xc0; 0x0040ca7b mov eax, eax | | /* switch table (4 cases) at 0x43cfa8 */ 0x0040ca7d jmp qword [rax*8 + 0x43cfa8] | 0x0040ca84 mov eax, esi | eax = esi; 0x0040ca86 or eax, 0x200 | eax |= 0x200; 0x0040ca8b test ecx, ecx | | if (ecx != 0) { 0x0040ca8d cmove esi, eax | esi = eax; | goto label_2; | } | } | label_2: 0x0040ca90 xor eax, eax | eax = 0; 0x0040ca92 jmp 0x405050 | void (*0x405050)() (); | label_1: 0x0040ca97 cmp edx, 4 | | if (edx <= 4) { 0x0040ca9a ja 0x40cacd | 0x0040ca9c mov edx, edx | | /* switch table (5 cases) at 0x43cf80 */ 0x0040ca9e jmp qword [rdx*8 + 0x43cf80] | 0x0040caa5 mov eax, 0xffffffff | eax = 0xffffffff; 0x0040caaa ret | return eax; 0x0040caab mov edx, 0x180 | edx = 0x180; 0x0040cab0 jmp 0x40cac3 | goto label_3; 0x0040cab2 xor r8d, r8d | r8d = 0; 0x0040cab5 test ecx, ecx | 0x0040cab7 sete r8b | r8b = (ecx == 0) ? 1 : 0; 0x0040cabb shl r8d, 9 | r8d <<= 9; 0x0040cabf or r8d, 0x40 | r8d |= 0x40; | label_3: 0x0040cac3 or esi, r8d | esi |= r8d; 0x0040cac6 xor eax, eax | eax = 0; 0x0040cac8 jmp 0x405050 | void (*0x405050)() (); | } 0x0040cacd xor esi, esi | esi = 0; 0x0040cacf jmp 0x40ca6b | | } while (1); 0x0040cad1 mov esi, 1 | esi = 1; 0x0040cad6 jmp 0x40ca6b | goto label_0; 0x0040cad8 mov esi, 2 | esi = 2; 0x0040cadd jmp 0x40ca6b | goto label_0; | }