; assembly | /* r2dec pseudo code output */ | /* balcl_option.t/assume @ 0x410bd0 */ | #include | ; (fcn) sym._anonymous_namespace_::u::createTypeInfo_BloombergLP::balcl::OptionType::Enum__void__void_ () | uint64_t anonymous_namespace_::u::createTypeInfo_BloombergLP::balcl::OptionType::Enum_void_void_ (int64_t arg4, int64_t arg3, int64_t arg2, int64_t arg1) { | rcx = arg4; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* (anonymous namespace)::u::createTypeInfo(BloombergLP::balcl::OptionType::Enum, void*, void*) */ 0x00410bd0 push r15 | 0x00410bd2 push r14 | 0x00410bd4 push r13 | 0x00410bd6 push r12 | 0x00410bd8 push rbx | 0x00410bd9 mov r14, rcx | r14 = rcx; 0x00410bdc mov r12, rdx | r12 = rdx; 0x00410bdf mov ebx, esi | ebx = esi; 0x00410be1 mov r15, rdi | r15 = rdi; 0x00410be4 call 0x41f350 | BloombergLP::balcl::TypeInfo::TypeInfo() (rdi); 0x00410be9 mov esi, 0x45c23d | esi = "typeInfo"; 0x00410bee xor edi, edi | edi = 0; 0x00410bf0 mov edx, 0x4c7 | edx = 0x4c7; 0x00410bf5 call 0x410ae0 | (anonymousnamespace)::aSsErT(bool,char const*,int) (); 0x00410bfa mov r13d, ebx | r13d = ebx; 0x00410bfd cmp ebx, 1 | | if (ebx != 1) { 0x00410c00 jne 0x410c73 | goto label_1; | } 0x00410c02 xor edi, edi | edi = 0; 0x00410c04 test r14, r14 | 0x00410c07 setne dil | dil = (r14 != 0) ? 1 : 0; 0x00410c0b mov esi, 0x45c246 | esi = "0 == constraint"; 0x00410c10 mov edx, 0x4ca | edx = 0x4ca; 0x00410c15 call 0x410ae0 | (anonymousnamespace)::aSsErT(bool,char const*,int) (); 0x00410c1a mov esi, 0x45c23d | esi = "typeInfo"; 0x00410c1f xor edi, edi | edi = 0; 0x00410c21 mov edx, 0x492 | edx = 0x492; 0x00410c26 call 0x410ae0 | (anonymousnamespace)::aSsErT(bool,char const*,int) (); 0x00410c2b mov rsi, qword [rip + 0x4c8ae] | 0x00410c32 mov rdi, r15 | 0x00410c35 call 0x423160 | BloombergLP::balcl::TypeInfo::setLinkedVariable(bool*) (r15, *(obj.BloombergLP::balcl::OptionType::k_BOOL)); | do { | label_0: 0x00410c3a test r12, r12 | | if (r12 == 0) { 0x00410c3d je 0x410da4 | goto label_2; | } 0x00410c43 mov esi, 0x45c23d | esi = "typeInfo"; 0x00410c48 xor edi, edi | edi = 0; 0x00410c4a mov edx, 0x466 | edx = 0x466; 0x00410c4f call 0x410ae0 | (anonymousnamespace)::aSsErT(bool,char const*,int) (); 0x00410c54 lea eax, [rbx - 1] | eax = rbx - 1; 0x00410c57 cmp eax, 0x10 | | if (eax > 0x10) { 0x00410c5a ja 0x410cab | goto label_3; | } | /* switch table (17 cases) at 0x45a268 */ 0x00410c5c jmp qword [rax*8 + 0x45a268] | 0x00410c63 mov rdi, r15 | 0x00410c66 mov rsi, r12 | 0x00410c69 call 0x423160 | BloombergLP::balcl::TypeInfo::setLinkedVariable(bool*) (r15, r12); 0x00410c6e jmp 0x410da4 | goto label_2; | label_1: 0x00410c73 mov esi, 0x45c23d | esi = "typeInfo"; 0x00410c78 xor edi, edi | edi = 0; 0x00410c7a mov edx, 0x492 | edx = 0x492; 0x00410c7f call 0x410ae0 | (anonymousnamespace)::aSsErT(bool,char const*,int) (); 0x00410c84 cmp ebx, 0x11 | | if (ebx > 0x11) { 0x00410c87 ja 0x410e97 | goto label_4; | } | /* switch table (18 cases) at 0x45a1d8 */ 0x00410c8d jmp qword [r13*8 + 0x45a1d8] | 0x00410c95 mov esi, 0x45c256 | esi = "!\"Reached.\"; 0x00410c9a mov edi, 1 | edi = 1; 0x00410c9f mov edx, 0x49b | edx = 0x49b; 0x00410ca4 call 0x410ae0 | (anonymousnamespace)::aSsErT(bool,char const*,int) (); 0x00410ca9 jmp 0x410c3a | | } while (1); | label_3: 0x00410cab mov esi, 0x45c262 | esi = "!\"Reached\"; 0x00410cb0 mov edi, 1 | edi = 1; 0x00410cb5 mov edx, 0x481 | edx = 0x481; 0x00410cba call 0x410ae0 | (anonymousnamespace)::aSsErT(bool,char const*,int) (); 0x00410cbf jmp 0x410da4 | goto label_2; 0x00410cc4 mov rdi, r15 | 0x00410cc7 mov rsi, r12 | 0x00410cca call 0x423170 | BloombergLP::balcl::TypeInfo::setLinkedVariable(char*) (r15, r12); 0x00410ccf jmp 0x410da4 | goto label_2; 0x00410cd4 mov rdi, r15 | 0x00410cd7 mov rsi, r12 | 0x00410cda call 0x423180 | BloombergLP::balcl::TypeInfo::setLinkedVariable(int*) (r15, r12); 0x00410cdf jmp 0x410da4 | goto label_2; 0x00410ce4 mov rdi, r15 | 0x00410ce7 mov rsi, r12 | 0x00410cea call 0x423190 | BloombergLP::balcl::TypeInfo::setLinkedVariable(long long*) (r15, r12); 0x00410cef jmp 0x410da4 | goto label_2; 0x00410cf4 mov rdi, r15 | 0x00410cf7 mov rsi, r12 | 0x00410cfa call 0x4231a0 | BloombergLP::balcl::TypeInfo::setLinkedVariable(double*) (r15, r12); 0x00410cff jmp 0x410da4 | goto label_2; 0x00410d04 mov rdi, r15 | 0x00410d07 mov rsi, r12 | 0x00410d0a call 0x4231b0 | BloombergLP::balcl::TypeInfo::setLinkedVariable(bsl::basic_string,bsl::allocator>*) (r15, r12); 0x00410d0f jmp 0x410da4 | goto label_2; 0x00410d14 mov rdi, r15 | 0x00410d17 mov rsi, r12 | 0x00410d1a call 0x4231c0 | BloombergLP::balcl::TypeInfo::setLinkedVariable(BloombergLP::bdlt::Datetime*) (r15, r12); 0x00410d1f jmp 0x410da4 | goto label_2; 0x00410d24 mov rdi, r15 | 0x00410d27 mov rsi, r12 | 0x00410d2a call 0x4231d0 | BloombergLP::balcl::TypeInfo::setLinkedVariable(BloombergLP::bdlt::Date*) (r15, r12); 0x00410d2f jmp 0x410da4 | goto label_2; 0x00410d31 mov rdi, r15 | 0x00410d34 mov rsi, r12 | 0x00410d37 call 0x4231e0 | BloombergLP::balcl::TypeInfo::setLinkedVariable(BloombergLP::bdlt::Time*) (r15, r12); 0x00410d3c jmp 0x410da4 | goto label_2; 0x00410d3e mov rdi, r15 | 0x00410d41 mov rsi, r12 | 0x00410d44 call 0x4231f0 | BloombergLP::balcl::TypeInfo::setLinkedVariable(bsl::vector>*) (r15, r12); 0x00410d49 jmp 0x410da4 | goto label_2; 0x00410d4b mov rdi, r15 | 0x00410d4e mov rsi, r12 | 0x00410d51 call 0x423200 | BloombergLP::balcl::TypeInfo::setLinkedVariable(bsl::vector>*) (r15, r12); 0x00410d56 jmp 0x410da4 | goto label_2; 0x00410d58 mov rdi, r15 | 0x00410d5b mov rsi, r12 | 0x00410d5e call 0x423210 | BloombergLP::balcl::TypeInfo::setLinkedVariable(bsl::vector>*) (r15, r12); 0x00410d63 jmp 0x410da4 | goto label_2; 0x00410d65 mov rdi, r15 | 0x00410d68 mov rsi, r12 | 0x00410d6b call 0x423220 | BloombergLP::balcl::TypeInfo::setLinkedVariable(bsl::vector>*) (r15, r12); 0x00410d70 jmp 0x410da4 | goto label_2; 0x00410d72 mov rdi, r15 | 0x00410d75 mov rsi, r12 | 0x00410d78 call 0x423230 | BloombergLP::balcl::TypeInfo::setLinkedVariable(bsl::vector,bsl::allocator>,bsl::allocator,bsl::allocator>>>*) (r15, r12); 0x00410d7d jmp 0x410da4 | goto label_2; 0x00410d7f mov rdi, r15 | 0x00410d82 mov rsi, r12 | 0x00410d85 call 0x423240 | BloombergLP::balcl::TypeInfo::setLinkedVariable(bsl::vector>*) (r15, r12); 0x00410d8a jmp 0x410da4 | goto label_2; 0x00410d8c mov rdi, r15 | 0x00410d8f mov rsi, r12 | 0x00410d92 call 0x423250 | BloombergLP::balcl::TypeInfo::setLinkedVariable(bsl::vector>*) (r15, r12); 0x00410d97 jmp 0x410da4 | goto label_2; 0x00410d99 mov rdi, r15 | 0x00410d9c mov rsi, r12 | 0x00410d9f call 0x423260 | BloombergLP::balcl::TypeInfo::setLinkedVariable(bsl::vector>*) (r15, r12); | label_2: 0x00410da4 test r14, r14 | | if (r14 != 0) { 0x00410da7 je 0x410e8a | 0x00410dad mov esi, 0x45c23d | esi = "typeInfo"; 0x00410db2 xor edi, edi | edi = 0; 0x00410db4 mov edx, 0x436 | edx = 0x436; 0x00410db9 call 0x410ae0 | (anonymousnamespace)::aSsErT(bool,char const*,int) (); 0x00410dbe xor edi, edi | edi = 0; 0x00410dc0 test ebx, ebx | 0x00410dc2 sete dil | dil = (ebx == 0) ? 1 : 0; 0x00410dc6 mov esi, 0x45c26d | esi = "Ot::e_VOID != type"; 0x00410dcb mov edx, 0x437 | edx = 0x437; 0x00410dd0 call 0x410ae0 | (anonymousnamespace)::aSsErT(bool,char const*,int) (); 0x00410dd5 xor edi, edi | edi = 0; 0x00410dd7 cmp ebx, 1 | 0x00410dda sete dil | dil = (ebx == 1) ? 1 : 0; 0x00410dde mov esi, 0x45c280 | esi = "Ot::e_BOOL != type"; 0x00410de3 mov edx, 0x438 | edx = 0x438; 0x00410de8 call 0x410ae0 | (anonymousnamespace)::aSsErT(bool,char const*,int) (); 0x00410ded jmp qword [r13*8 + 0x45a2f0] | | } 0x00410e8a mov rax, r15 | rax = r15; 0x00410e8d pop rbx | 0x00410e8e pop r12 | 0x00410e90 pop r13 | 0x00410e92 pop r14 | 0x00410e94 pop r15 | 0x00410e96 ret | return rax; | label_4: 0x00410e97 mov esi, 0x45c262 | esi = "!\"Reached\"; 0x00410e9c mov edi, 1 | edi = 1; 0x00410ea1 mov edx, 0x4b0 | edx = 0x4b0; 0x00410ea6 call 0x410ae0 | (anonymousnamespace)::aSsErT(bool,char const*,int) (); 0x00410eab jmp 0x410c3a | goto label_0; 0x00410eb0 mov rsi, qword [rip + 0x4c631] | 0x00410eb7 mov rdi, r15 | 0x00410eba call 0x423170 | BloombergLP::balcl::TypeInfo::setLinkedVariable(char*) (r15, *(obj.BloombergLP::balcl::OptionType::k_CHAR)); 0x00410ebf jmp 0x410c3a | goto label_0; 0x00410ec4 mov rsi, qword [rip + 0x4c625] | 0x00410ecb mov rdi, r15 | 0x00410ece call 0x423180 | BloombergLP::balcl::TypeInfo::setLinkedVariable(int*) (r15, *(obj.BloombergLP::balcl::OptionType::k_INT)); 0x00410ed3 jmp 0x410c3a | goto label_0; 0x00410ed8 mov rsi, qword [rip + 0x4c619] | 0x00410edf mov rdi, r15 | 0x00410ee2 call 0x423190 | BloombergLP::balcl::TypeInfo::setLinkedVariable(long long*) (r15, *(obj.BloombergLP::balcl::OptionType::k_INT64)); 0x00410ee7 jmp 0x410c3a | goto label_0; 0x00410eec mov rsi, qword [rip + 0x4c60d] | 0x00410ef3 mov rdi, r15 | 0x00410ef6 call 0x4231a0 | BloombergLP::balcl::TypeInfo::setLinkedVariable(double*) (r15, *(obj.BloombergLP::balcl::OptionType::k_DOUBLE)); 0x00410efb jmp 0x410c3a | goto label_0; 0x00410f00 mov rsi, qword [rip + 0x4c601] | 0x00410f07 mov rdi, r15 | 0x00410f0a call 0x4231b0 | BloombergLP::balcl::TypeInfo::setLinkedVariable(bsl::basic_string,bsl::allocator>*) (r15, *(obj.BloombergLP::balcl::OptionType::k_STRING)); 0x00410f0f jmp 0x410c3a | goto label_0; 0x00410f14 mov rsi, qword [rip + 0x4c5f5] | 0x00410f1b mov rdi, r15 | 0x00410f1e call 0x4231c0 | BloombergLP::balcl::TypeInfo::setLinkedVariable(BloombergLP::bdlt::Datetime*) (r15, *(obj.BloombergLP::balcl::OptionType::k_DATETIME)); 0x00410f23 jmp 0x410c3a | goto label_0; 0x00410f28 mov rsi, qword [rip + 0x4c5e9] | 0x00410f2f mov rdi, r15 | 0x00410f32 call 0x4231d0 | BloombergLP::balcl::TypeInfo::setLinkedVariable(BloombergLP::bdlt::Date*) (r15, *(obj.BloombergLP::balcl::OptionType::k_DATE)); 0x00410f37 jmp 0x410c3a | goto label_0; 0x00410f3c mov rsi, qword [rip + 0x4c5dd] | 0x00410f43 mov rdi, r15 | 0x00410f46 call 0x4231e0 | BloombergLP::balcl::TypeInfo::setLinkedVariable(BloombergLP::bdlt::Time*) (r15, *(obj.BloombergLP::balcl::OptionType::k_TIME)); 0x00410f4b jmp 0x410c3a | goto label_0; 0x00410f50 mov rsi, qword [rip + 0x4c5d1] | 0x00410f57 mov rdi, r15 | 0x00410f5a call 0x4231f0 | BloombergLP::balcl::TypeInfo::setLinkedVariable(bsl::vector>*) (r15, *(obj.BloombergLP::balcl::OptionType::k_CHAR_ARRAY)); 0x00410f5f jmp 0x410c3a | goto label_0; 0x00410f64 mov rsi, qword [rip + 0x4c5c5] | 0x00410f6b mov rdi, r15 | 0x00410f6e call 0x423200 | BloombergLP::balcl::TypeInfo::setLinkedVariable(bsl::vector>*) (r15, *(obj.BloombergLP::balcl::OptionType::k_INT_ARRAY)); 0x00410f73 jmp 0x410c3a | goto label_0; 0x00410f78 mov rsi, qword [rip + 0x4c5b9] | 0x00410f7f mov rdi, r15 | 0x00410f82 call 0x423210 | BloombergLP::balcl::TypeInfo::setLinkedVariable(bsl::vector>*) (r15, *(obj.BloombergLP::balcl::OptionType::k_INT64_ARRAY)); 0x00410f87 jmp 0x410c3a | goto label_0; 0x00410f8c mov rsi, qword [rip + 0x4c5ad] | 0x00410f93 mov rdi, r15 | 0x00410f96 call 0x423220 | BloombergLP::balcl::TypeInfo::setLinkedVariable(bsl::vector>*) (r15, *(obj.BloombergLP::balcl::OptionType::k_DOUBLE_ARRAY)); 0x00410f9b jmp 0x410c3a | goto label_0; 0x00410fa0 mov rsi, qword [rip + 0x4c5a1] | 0x00410fa7 mov rdi, r15 | 0x00410faa call 0x423230 | BloombergLP::balcl::TypeInfo::setLinkedVariable(bsl::vector,bsl::allocator>,bsl::allocator,bsl::allocator>>>*) (r15, *(obj.BloombergLP::balcl::OptionType::k_STRING_ARRAY)); 0x00410faf jmp 0x410c3a | goto label_0; 0x00410fb4 mov rsi, qword [rip + 0x4c595] | 0x00410fbb mov rdi, r15 | 0x00410fbe call 0x423240 | BloombergLP::balcl::TypeInfo::setLinkedVariable(bsl::vector>*) (r15, *(obj.BloombergLP::balcl::OptionType::k_DATETIME_ARRAY)); 0x00410fc3 jmp 0x410c3a | goto label_0; 0x00410fc8 mov rsi, qword [rip + 0x4c589] | 0x00410fcf mov rdi, r15 | 0x00410fd2 call 0x423250 | BloombergLP::balcl::TypeInfo::setLinkedVariable(bsl::vector>*) (r15, *(obj.BloombergLP::balcl::OptionType::k_DATE_ARRAY)); 0x00410fd7 jmp 0x410c3a | goto label_0; 0x00410fdc mov rsi, qword [rip + 0x4c57d] | 0x00410fe3 mov rdi, r15 | 0x00410fe6 call 0x423260 | BloombergLP::balcl::TypeInfo::setLinkedVariable(bsl::vector>*) (r15, *(obj.BloombergLP::balcl::OptionType::k_TIME_ARRAY)); 0x00410feb jmp 0x410c3a | goto label_0; | }