; assembly | /* r2dec pseudo code output */ | /* ball_userfieldvalue.t/assume @ 0x404980 */ | #include | ; (fcn) sym.verifyFieldTypeAndValue_BloombergLP::ball::UserFieldValue_const__char__char_ () | uint32_t verifyFieldTypeAndValue_BloombergLP::ball::UserFieldValue_const_char_char_ (size_t arg3, int64_t arg2, int64_t arg1) { | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* verifyFieldTypeAndValue(BloombergLP::ball::UserFieldValue const&, char, char) */ 0x00404980 push r15 | 0x00404982 push r14 | 0x00404984 push rbx | 0x00404985 sub rsp, 0x30 | 0x00404989 mov r15d, edx | r15d = edx; 0x0040498c mov ebx, esi | ebx = esi; 0x0040498e mov r14, rdi | r14 = rdi; 0x00404991 lea eax, [rbx - 0x41] | eax = rbx - 0x41; 0x00404994 xor edi, edi | edi = 0; 0x00404996 cmp al, 4 | 0x00404998 seta dil | dil = (al > 4) ? 1 : 0; 0x0040499c mov esi, 0x44c4ae | esi = "type >= 'A' && type <= 'E'; 0x004049a1 mov edx, 0x13f | edx = 0x13f; 0x004049a6 call 0x404dd0 | (anonymousnamespace)::aSsErT(bool,char const*,int) (); 0x004049ab lea eax, [r15 - 0x31] | eax = r15 - 0x31; 0x004049af xor edi, edi | edi = 0; 0x004049b1 cmp al, 1 | 0x004049b3 seta dil | dil = (al > 1) ? 1 : 0; 0x004049b7 mov esi, 0x44c4c9 | esi = '1' == value || '2' == value"; 0x004049bc mov edx, 0x140 | edx = 0x140; 0x004049c1 call 0x404dd0 | (anonymousnamespace)::aSsErT(bool,char const*,int) (); 0x004049c6 add ebx, 0xffffffbf | ebx += 0xffffffbf; 0x004049c9 jmp qword [rbx*8 + 0x44ba10] | | }