; assembly | /* r2dec pseudo code output */ | /* balber_berdecoder.t/assume @ 0x467980 */ | #include | ; (fcn) method.BloombergLP::bdlt::Iso8601Util.generate_char__int__BloombergLP::bdlt::DatetimeTz_const__BloombergLP::bdlt::Iso8601UtilConfiguration_const_ () | int64_t method_BloombergLP::bdlt::Iso8601Util_generate_char_int_BloombergLP::bdlt::DatetimeTz_const_BloombergLP::bdlt::Iso8601UtilConfiguration_const_ (int64_t arg4, int64_t arg3, uint32_t arg2, int64_t arg1) { | rcx = arg4; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::bdlt::Iso8601Util::generate(char*, int, BloombergLP::bdlt::DatetimeTz const&, BloombergLP::bdlt::Iso8601UtilConfiguration const&) */ 0x00467980 push rbp | 0x00467981 push r15 | 0x00467983 push r14 | 0x00467985 push rbx | 0x00467986 sub rsp, 0x28 | 0x0046798a mov ebp, esi | 0x0046798c mov r14, rdi | r14 = rdi; 0x0046798f cmp esi, 0x20 | | if (esi >= 0x20) { 0x00467992 jb 0x4679aa | 0x00467994 mov rdi, r14 | 0x00467997 mov rsi, rdx | 0x0046799a mov rdx, rcx | 0x0046799d call 0x467a00 | eax = BloombergLP::bdlt::Iso8601Util::generateRaw(char*,BloombergLP::bdlt::DatetimeTzconst&,BloombergLP::bdlt::Iso8601UtilConfigurationconst&) (r14, rdx, rcx); 0x004679a2 mov ebx, eax | ebx = eax; 0x004679a4 cmp ebx, ebp | | if (ebx >= ebp) { 0x004679a6 jl 0x4679eb | 0x004679a8 jmp 0x4679f3 | | } else { 0x004679aa mov rdi, rsp | 0x004679ad mov rsi, rdx | 0x004679b0 mov rdx, rcx | 0x004679b3 call 0x467a00 | eax = BloombergLP::bdlt::Iso8601Util::generateRaw(char*,BloombergLP::bdlt::DatetimeTzconst&,BloombergLP::bdlt::Iso8601UtilConfigurationconst&) (rsp, rdx, rcx); 0x004679b8 mov ebx, eax | ebx = eax; 0x004679ba cmp eax, ebp | | if (eax < ebp) { 0x004679bc jae 0x4679da | 0x004679be mov r15d, ebx | r15d = ebx; 0x004679c1 mov rsi, rsp | 0x004679c4 mov rdi, r14 | 0x004679c7 mov rdx, r15 | 0x004679ca call 0x404980 | memcpy (r14, rsp, r15); 0x004679cf mov byte [r14 + r15], 0 | *((r14 + r15)) = 0; 0x004679d4 cmp ebx, ebp | | if (ebx < ebp) { 0x004679d6 jl 0x4679eb | goto label_0; | } 0x004679d8 jmp 0x4679f3 | goto label_1; | } 0x004679da mov edx, ebp | 0x004679dc mov rsi, rsp | 0x004679df mov rdi, r14 | 0x004679e2 call 0x404980 | memcpy (r14, rsp, ebp); 0x004679e7 cmp ebx, ebp | | if (ebx >= ebp) { 0x004679e9 jge 0x4679f3 | goto label_1; | } | } | label_0: 0x004679eb movsxd rax, ebx | rax = (int64_t) ebx; 0x004679ee mov byte [r14 + rax], 0 | *((r14 + rax)) = 0; | } | label_1: 0x004679f3 mov eax, ebx | eax = ebx; 0x004679f5 add rsp, 0x28 | 0x004679f9 pop rbx | 0x004679fa pop r14 | 0x004679fc pop r15 | 0x004679fe pop rbp | 0x004679ff ret | return rax; | }