このページはEtoJ逐語翻訳フィルタによって翻訳生成されました。 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | 調印するd int __stdcall Dns_Ip6ReverseNameToAddress_A(char *a_out, const char *a_src) { unsigned int v_srclen; // esi@1 size_t v_srclen_minus9; // esi@6 unsigned int v_out_idx; // edi@7 調印するd int v_flag; // ebx@7 char *v_ptr; // esi@7 unsigned __int32 v_octet; // eax@12 char v_high_nibble; // [sp+8h] [bp-58h]@0 char v_buf[76]; // [sp+10h] [bp-50h]@7 unsigned int v_cookie; // [sp+5Ch] [bp-4h]@1 char v_dunno[4]; // [sp+60h] [bp+0h]@1 v_cookie = (unsigned int)v_dunno ^ __security_cookie; v_srclen = strlen(a_src); if ( v_srclen > 0x4B ) return 0; if ( a_src[v_srclen - 1] == '.' ) --v_srclen; if ( v_srclen <= 9 || (v_srclen_minus9 = v_srclen - 9, __strnicmp(".ip6.arpa", &a_src[v_srclen_minus9], 9u)) ) return 0; memcpy(v_buf, a_src, v_srclen_minus9); v_out_idx = 0; v_buf[v_srclen_minus9] = 0; v_flag = 0; v_ptr = &v_buf[v_srclen_minus9]; while ( 1 ) { --v_ptr; if ( *v_ptr == '.' ) break; if ( v_ptr == v_buf ) goto LABEL_11; LABEL_20: if ( v_out_idx > 0xF ) return 0; } *v_ptr++ = 0; LABEL_11: if ( *v_ptr == '0' ) { LOBYTE(v_octet) = 0; } else { v_octet = _strtoul(v_ptr, 0, 16); if ( !v_octet || v_octet > 0xF ) return 0; } if ( v_flag ) { a_out[v_out_idx++] = v_octet | 0x10 * v_high_nibble; v_flag = 0; } else { v_high_nibble = v_octet; v_flag = 1; } if ( v_ptr != v_buf ) { --v_ptr; goto LABEL_20; } return 1; } |