; assembly | /* r2dec pseudo code output */ | /* balber_berdecoder.t/none @ 0x468c00 */ | #include | ; (fcn) method.BloombergLP::bdlt::Iso8601Util.parse_BloombergLP::bdlt::Time__char_const__int_ () | int64_t method_BloombergLP::bdlt::Iso8601Util_parse_BloombergLP::bdlt::Time_char_const_int_ (signed int64_t arg3, uint32_t arg2, int64_t arg1) { | uint32_t var_fh; | int64_t var_8h; | int64_t var_14h; | uint32_t var_18h; | int64_t var_28h; | int64_t var_2ch; | int64_t var_30h; | int64_t var_34h; | int64_t var_38h; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::bdlt::Iso8601Util::parse(BloombergLP::bdlt::Time*, char const*, int) */ 0x00468c00 mov eax, 0xffffffff | eax = 0xffffffff; 0x00468c05 cmp edx, 8 | | if (edx < 8) { 0x00468c08 jl 0x468c83 | goto label_1; | } 0x00468c0a push rbp | 0x00468c0b push r15 | 0x00468c0d push r14 | 0x00468c0f push r13 | 0x00468c11 push r12 | 0x00468c13 push rbx | 0x00468c14 sub rsp, 0x38 | 0x00468c18 mov rbp, rsi | 0x00468c1b mov r14, rdi | r14 = rdi; 0x00468c1e mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x00468c23 mov ebx, edx | ebx = edx; 0x00468c25 add rbx, rsi | rbx += rsi; 0x00468c28 movabs rax, 0x541dd76000 | rax = 0x541dd76000; 0x00468c32 mov qword [rsp + 8], rax | *((rsp + 8)) = rax; 0x00468c37 sub rsp, 8 | 0x00468c3b lea rax, [rsp + 0xf] | rax = rsp + 0xf; 0x00468c40 lea rdi, [rsp + 0x20] | rdi = rsp + 0x20; 0x00468c45 lea rsi, [rsp + 0x34] | rsi = rsp + 0x34; 0x00468c4a lea rdx, [rsp + 0x30] | rdx = rsp + 0x30; 0x00468c4f lea rcx, [rsp + 0x2c] | rcx = rsp + 0x2c; 0x00468c54 lea r8, [rsp + 0x28] | r8 = rsp + 0x28; 0x00468c59 lea r9, [rsp + 0x38] | r9 = rsp + 0x38; 0x00468c5e push rbx | 0x00468c5f push rbp | 0x00468c60 push rax | 0x00468c61 call 0x468dc0 | eax = (anonymousnamespace)::u::parseTime(char const**,int*,int*,int*,int*,long long*,bool*,char const*,char const*,int) (); 0x00468c66 add rsp, 0x20 | 0x00468c6a mov ecx, eax | ecx = eax; 0x00468c6c mov eax, 0xffffffff | eax = 0xffffffff; 0x00468c71 test ecx, ecx | 0x00468c73 je 0x468c84 | | while (r12d != 0x18) { | label_0: 0x00468c75 add rsp, 0x38 | 0x00468c79 pop rbx | 0x00468c7a pop r12 | 0x00468c7c pop r13 | 0x00468c7e pop r14 | 0x00468c80 pop r15 | 0x00468c82 pop rbp | | label_1: 0x00468c83 ret | return rax; 0x00468c84 mov r12d, dword [rsp + 0x2c] | r12d = *((rsp + 0x2c)); 0x00468c89 mov edx, dword [rsp + 0x28] | edx = *((rsp + 0x28)); 0x00468c8d mov ecx, dword [rsp + 0x24] | ecx = *((rsp + 0x24)); 0x00468c91 cmp ecx, 0x3b | | if (ecx <= 0x3b) { 0x00468c94 ja 0x468ca1 | 0x00468c96 cmp r12d, 0x17 | | if (r12d > 0x17) { 0x00468c9a ja 0x468ca1 | goto label_2; | } 0x00468c9c cmp edx, 0x3c | | if (edx < 0x3c) { 0x00468c9f jb 0x468cad | goto label_3; | } | } | label_2: 0x00468ca1 cmp r12d, 0x18 | 0x00468ca5 jne 0x468c75 | | } 0x00468ca7 mov esi, ecx | esi = ecx; 0x00468ca9 or esi, edx | esi |= edx; | if (esi != 0) { 0x00468cab jne 0x468c75 | goto label_0; | } | label_3: 0x00468cad lea rdi, [rsp + 8] | 0x00468cb2 mov esi, r12d | 0x00468cb5 xor r8d, r8d | 0x00468cb8 xor r9d, r9d | 0x00468cbb call 0x46c020 | BloombergLP::bdlt::Time::setTime(int,int,int,int,int) (rsp + 8, r12d, rdx, rcx, 0, 0); 0x00468cc0 cmp byte [rsp + 7], 0 | | if (*((rsp + 7)) != 0) { 0x00468cc5 je 0x468cd6 | 0x00468cc7 lea rdi, [rsp + 8] | 0x00468ccc mov esi, 1 | 0x00468cd1 call 0x46b510 | BloombergLP::bdlt::Time::addSeconds(int) (rsp + 8, 1); | } 0x00468cd6 mov r15d, dword [rsp + 0x20] | r15d = *((rsp + 0x20)); 0x00468cdb test r15d, r15d | | if (r15d != 0) { 0x00468cde je 0x468ced | 0x00468ce0 lea rdi, [rsp + 8] | 0x00468ce5 mov esi, r15d | 0x00468ce8 call 0x46b630 | BloombergLP::bdlt::Time::addMilliseconds(int) (rsp + 8, r15d); | } 0x00468ced mov rbp, qword [rsp + 0x30] | rbp = *((rsp + 0x30)); 0x00468cf2 test rbp, rbp | | if (rbp != 0) { 0x00468cf5 je 0x468d04 | 0x00468cf7 lea rdi, [rsp + 8] | 0x00468cfc mov rsi, rbp | 0x00468cff call 0x46b750 | BloombergLP::bdlt::Time::addMicroseconds(long long) (rsp + 8, rbp); | } 0x00468d04 mov dword [rsp + 0x14], 0 | *((rsp + 0x14)) = 0; 0x00468d0c mov rdx, qword [rsp + 0x18] | rdx = *((rsp + 0x18)); 0x00468d11 xor r13d, r13d | r13d = 0; 0x00468d14 cmp rdx, rbx | | if (rdx == rbx) { 0x00468d17 je 0x468d5e | goto label_4; | } 0x00468d19 lea rdi, [rsp + 0x18] | rdi = rsp + 0x18; 0x00468d1e lea rsi, [rsp + 0x14] | rsi = rsp + 0x14; 0x00468d23 mov rcx, rbx | rcx = rbx; 0x00468d26 call 0x468ae0 | eax = (anonymousnamespace)::u::parseZoneDesignator(char const**,int*,char const*,char const*) (); 0x00468d2b mov ecx, eax | ecx = eax; 0x00468d2d mov eax, 0xffffffff | eax = 0xffffffff; 0x00468d32 test ecx, ecx | | if (ecx != 0) { 0x00468d34 jne 0x468c75 | goto label_0; | } 0x00468d3a cmp qword [rsp + 0x18], rbx | | if (*((rsp + 0x18)) != rbx) { 0x00468d3f jne 0x468c75 | goto label_0; | } 0x00468d45 mov ebx, dword [rsp + 0x14] | ebx = *((rsp + 0x14)); 0x00468d49 test ebx, ebx | | if (ebx != 0) { 0x00468d4b je 0x468d5e | 0x00468d4d mov esi, ebx | 0x00468d4f neg esi | esi = -esi; 0x00468d51 lea rdi, [rsp + 8] | 0x00468d56 call 0x46b3f0 | BloombergLP::bdlt::Time::addMinutes(int) (rsp + 8, ebx); 0x00468d5b mov r13d, ebx | r13d = ebx; | } | label_4: 0x00468d5e cmp r12d, 0x18 | | if (r12d != 0x18) { 0x00468d62 jne 0x468d7b | goto label_5; | } 0x00468d64 mov eax, 0xffffffff | eax = 0xffffffff; 0x00468d69 test rbp, rbp | | if (rbp != 0) { 0x00468d6c jne 0x468c75 | goto label_0; | } 0x00468d72 or r13d, r15d | r13d |= r15d; | if (r13d != 0) { 0x00468d75 jne 0x468c75 | goto label_0; | } | label_5: 0x00468d7b movabs rbx, 0x4000000000 | rbx = 0x4000000000; 0x00468d85 mov rax, qword [rsp + 8] | rax = *((rsp + 8)); 0x00468d8a mov qword [r14], rax | *(r14) = rax; 0x00468d8d cmp rax, rbx | | if (rax < rbx) { 0x00468d90 jl 0x468dac | goto label_6; | } 0x00468d92 movabs rcx, 0xffffffbfffffffff | rcx = 0xffffffbfffffffff; 0x00468d9c and rax, rcx | rax &= rcx; | do { 0x00468d9f or rax, rbx | rax |= rbx; 0x00468da2 mov qword [r14], rax | *(r14) = rax; 0x00468da5 xor eax, eax | eax = 0; 0x00468da7 jmp 0x468c75 | goto label_0; | label_6: 0x00468dac mov rdi, r14 | 0x00468daf call 0x46b280 | BloombergLP::bdlt::Time::invalidMicrosecondsFromMidnight()const (r14); 0x00468db4 jmp 0x468d9f | | } while (1); | }