; assembly | /* r2dec pseudo code output */ | /* bdlt_fixutil.t/none @ 0x43b270 */ | #include | ; (fcn) method.BloombergLP::bdlt::FixUtil.generateRaw_char__BloombergLP::bdlt::DatetimeTz_const__BloombergLP::bdlt::FixUtilConfiguration_const_ () | uint64_t method_BloombergLP::bdlt::FixUtil_generateRaw_char_BloombergLP::bdlt::DatetimeTz_const_BloombergLP::bdlt::FixUtilConfiguration_const_ (char * arg3, char * arg2, char * arg1) { | char * var_8h; | int64_t var_10h; | char * var_18h; | int64_t var_20h; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::bdlt::FixUtil::generateRaw(char*, BloombergLP::bdlt::DatetimeTz const&, BloombergLP::bdlt::FixUtilConfiguration const&) */ 0x0043b270 push r15 | 0x0043b272 push r14 | 0x0043b274 push r12 | 0x0043b276 push rbx | 0x0043b277 sub rsp, 0x28 | 0x0043b27b mov r14, rdx | r14 = rdx; 0x0043b27e mov r15, rsi | r15 = rsi; 0x0043b281 mov r12, rdi | r12 = rdi; 0x0043b284 mov rbx, qword [rsi] | rbx = *(rsi); 0x0043b287 test rbx, rbx | | if (rbx >= 0) { 0x0043b28a jns 0x43b364 | goto label_1; | } | label_0: 0x0043b290 mov qword [rsp], rbx | *(rsp) = rbx; 0x0043b294 mov rsi, rsp | 0x0043b297 mov rdi, r12 | 0x0043b29a mov rdx, r14 | 0x0043b29d call 0x43a260 | eax = BloombergLP::bdlt::FixUtil::generateRaw(char*,BloombergLP::bdlt::Datetimeconst&,BloombergLP::bdlt::FixUtilConfigurationconst&) (r12, rsp, r14); 0x0043b2a2 movsxd rcx, eax | rcx = (int64_t) eax; 0x0043b2a5 add rcx, r12 | rcx += r12; 0x0043b2a8 mov esi, dword [r15 + 8] | esi = *((r15 + 8)); 0x0043b2ac test esi, esi | | if (esi == 0) { 0x0043b2ae jne 0x43b2ba | 0x0043b2b0 test byte [r14], 8 | | if ((*(r14) & 8) != 0) { 0x0043b2b4 jne 0x43b35b | goto label_2; | } | } 0x0043b2ba mov edx, esi | edx = esi; 0x0043b2bc neg edx | edx = -edx; | if ((*(r14) & 8) < 0) { 0x0043b2be cmovl edx, esi | edx = esi; | } 0x0043b2c1 shr esi, 0x1f | esi >>= 0x1f; 0x0043b2c4 add sil, sil | sil += sil; 0x0043b2c7 add sil, 0x2b | sil += 0x2b; 0x0043b2cb mov byte [rcx], sil | *(rcx) = sil; 0x0043b2ce mov edi, 0x88888889 | edi = 0x88888889; 0x0043b2d3 imul rdi, rdx | rdi *= rdx; 0x0043b2d7 shr rdi, 0x25 | rdi >>= 0x25; 0x0043b2db mov r8d, 0xcccccccd | r8d = 0xcccccccd; 0x0043b2e1 mov ebx, edi | ebx = edi; 0x0043b2e3 imul esi, edi, 0x3c | esi = edi * 0x3c; 0x0043b2e6 imul rdi, r8 | rdi *= r8; 0x0043b2ea shr rdi, 0x23 | rdi >>= 0x23; 0x0043b2ee add edi, edi | edi += edi; 0x0043b2f0 lea edi, [rdi + rdi*4] | edi = rdi * 5; 0x0043b2f3 sub ebx, edi | ebx -= edi; 0x0043b2f5 or bl, 0x30 | bl |= 0x30; 0x0043b2f8 mov byte [rcx + 2], bl | *((rcx + 2)) = bl; 0x0043b2fb imul rbx, rdx, 0x1b4e81b5 | rbx = rdx * 0x1b4e81b5; 0x0043b302 shr rbx, 0x26 | rbx >>= 0x26; 0x0043b306 mov rdi, rbx | rdi = rbx; 0x0043b309 imul rdi, r8 | rdi *= r8; 0x0043b30d shr rdi, 0x23 | rdi >>= 0x23; 0x0043b311 add edi, edi | edi += edi; 0x0043b313 lea edi, [rdi + rdi*4] | edi = rdi * 5; 0x0043b316 sub ebx, edi | ebx -= edi; 0x0043b318 or bl, 0x30 | bl |= 0x30; 0x0043b31b mov byte [rcx + 1], bl | *((rcx + 1)) = bl; 0x0043b31e mov byte [rcx + 3], 0x3a | *((rcx + 3)) = 0x3a; 0x0043b322 sub edx, esi | edx -= esi; 0x0043b324 imul esi, edx, 0xcd | esi = edx * 0xcd; 0x0043b32a movzx esi, si | esi = (int32_t) si; 0x0043b32d shr esi, 0xb | esi >>= 0xb; 0x0043b330 lea edi, [rsi + rsi] | edi = rsi + rsi; 0x0043b333 lea edi, [rdi + rdi*4] | edi = rdi * 5; 0x0043b336 sub dl, dil | dl -= dil; 0x0043b339 or dl, 0x30 | dl |= 0x30; 0x0043b33c mov byte [rcx + 5], dl | *((rcx + 5)) = dl; 0x0043b33f or sil, 0x30 | sil |= 0x30; 0x0043b343 mov byte [rcx + 4], sil | *((rcx + 4)) = sil; 0x0043b347 lea rdx, [rcx + 6] | rdx = rcx + 6; | do { 0x0043b34b sub edx, ecx | edx -= ecx; 0x0043b34d add eax, edx | eax += edx; 0x0043b34f add rsp, 0x28 | 0x0043b353 pop rbx | 0x0043b354 pop r12 | 0x0043b356 pop r14 | 0x0043b358 pop r15 | 0x0043b35a ret | return eax; | label_2: 0x0043b35b lea rdx, [rcx + 1] | rdx = rcx + 1; 0x0043b35f mov byte [rcx], 0x5a | *(rcx) = 0x5a; 0x0043b362 jmp 0x43b34b | | } while (1); | label_1: 0x0043b364 mov edi, 0x678b18 | 0x0043b369 call 0x440a10 | eax = BloombergLP::bsls::Review::updateCount(BloombergLP::bsls::Atomic_TypeTraits::Int*) (method.BloombergLP::bdlt::Datetime.validateAndTraceLogRepresentation___const::lambda__1::operator_____const::count); 0x0043b36e mov qword [rsp], 0x451e0c | *(rsp) = "detected invalid 'bdlt::Datetime'; see TEAM 579660115"; 0x0043b376 mov qword [rsp + 8], 0x451e42 | *((rsp + 8)) = "/home/parsa/experiments/assumptions/crush/ccm-none/groups/bdl/bdlt/bdlt_datetime.h"; 0x0043b37f mov dword [rsp + 0x10], 0x466 | *((rsp + 0x10)) = 0x466; 0x0043b387 mov qword [rsp + 0x18], 0x46a13a | *((rsp + 0x18)) = "R-INV"; 0x0043b390 mov dword [rsp + 0x20], eax | *((rsp + 0x20)) = eax; 0x0043b394 mov rdi, rsp | rdi = rsp; 0x0043b397 call 0x440a30 | BloombergLP::bsls::Review::invokeHandler(BloombergLP::bsls::ReviewViolationconst&) (); 0x0043b39c mov rax, rbx | rax = rbx; 0x0043b39f shr rax, 0x20 | rax >>= 0x20; 0x0043b3a3 shl rbx, 0x25 | rbx <<= 0x25; 0x0043b3a7 movabs rcx, 0x7fffffe000000000 | rcx = 0x7fffffe000000000; 0x0043b3b1 add rcx, rbx | rcx += rbx; 0x0043b3b4 imul rax, rax, 0x3e8 | rax *= 0x3e8; 0x0043b3bb movabs rbx, 0x8000000000000000 | rbx = 0x8000000000000000; 0x0043b3c5 or rbx, rcx | rbx |= rcx; 0x0043b3c8 or rbx, rax | rbx |= rax; 0x0043b3cb jmp 0x43b290 | goto label_0; | }