-(void)[PieAppDelegate verifySerial:andName:] +0 000026ad 55 pushl %ebp +1 000026ae 89e5 movl %esp,%ebp +3 000026b0 81ec88000000 subl $0x00000088,%esp +9 000026b6 895df4 movl %ebx,0xf4(%ebp) +12 000026b9 8975f8 movl %esi,0xf8(%ebp) +15 000026bc 897dfc movl %edi,0xfc(%ebp) +18 000026bf 8b4508 movl 0x08(%ebp),%eax +21 000026c2 8945cc movl %eax,0xcc(%ebp) +24 000026c5 8b7d10 movl 0x10(%ebp),%edi +27 000026c8 8b5514 movl 0x14(%ebp),%edx +30 000026cb 8955c8 movl %edx,0xc8(%ebp) +33 000026ce c744240804000000 movl $0x00000004,0x08(%esp) +41 000026d6 a138400000 movl 0x00004038,%eax dataUsingEncoding: +46 000026db 89442404 movl %eax,0x04(%esp) +50 000026df a1ec300000 movl 0x000030ec,%eax BC +55 000026e4 890424 movl %eax,(%esp) +58 000026e7 e85a080000 calll 0x00002f46 -[(%esp,1) dataUsingEncoding:] +63 000026ec 8945e4 movl %eax,0xe4(%ebp) +66 000026ef 8b1534400000 movl 0x00004034,%edx length +72 000026f5 89542404 movl %edx,0x04(%esp) +76 000026f9 893c24 movl %edi,(%esp) <- edi holds our serial number +79 000026fc e845080000 calll 0x00002f46 -[(%esp,1) length] +84 00002701 83f810 cmpl $0x10,%eax <- good length equal to 0x10 (16 digits) +87 00002704 0f850d030000 jnel 0x00002a17 +93 0000270a c744240806000000 movl $0x00000006,0x08(%esp) +101 00002712 a130400000 movl 0x00004030,%eax substringToIndex: +106 00002717 89442404 movl %eax,0x04(%esp) +110 0000271b 893c24 movl %edi,(%esp) <- our serial number +113 0000271e e823080000 calll 0x00002f46 -[(%esp,1) substringToIndex:] <- extract first 6 digits from the serial number +118 00002723 c744240804000000 movl $0x00000004,0x08(%esp) +126 0000272b 8b1538400000 movl 0x00004038,%edx dataUsingEncoding: +132 00002731 89542404 movl %edx,0x04(%esp) +136 00002735 890424 movl %eax,(%esp) +139 00002738 e809080000 calll 0x00002f46 -[(%esp,1) dataUsingEncoding:] <- convert our serial to hex digits : <363534333231> +144 0000273d 89c3 movl %eax,%ebx <- store the converted serial into ebx +146 0000273f a134400000 movl 0x00004034,%eax length +151 00002744 89442404 movl %eax,0x04(%esp) +155 00002748 891c24 movl %ebx,(%esp) +158 0000274b e8f6070000 calll 0x00002f46 -[(%esp,1) length] <- compute the length of the converted serial, result is 0x6 +163 00002750 89c6 movl %eax,%esi <- store length in esi +165 00002752 8b152c400000 movl 0x0000402c,%edx bytes +171 00002758 89542404 movl %edx,0x04(%esp) +175 0000275c 891c24 movl %ebx,(%esp) +178 0000275f e8e2070000 calll 0x00002f46 -[(%esp,1) bytes] <- result is 0x235b30: "654321#" (forget the last digit) http://gdataonline.com/makehash.php +183 00002764 c744240800000000 movl $0x00000000,0x08(%esp) +191 0000276c 89742404 movl %esi,0x04(%esp) <- length +195 00002770 890424 movl %eax,(%esp) <- the serial +198 00002773 e8bc070000 calll 0x00002f34 _MD5 <- get the MD5 hash of our serial number +203 00002778 0fb6500f movzbl 0x0f(%eax),%edx +207 0000277c 89542448 movl %edx,0x48(%esp) +211 00002780 0fb6500e movzbl 0x0e(%eax),%edx +215 00002784 89542444 movl %edx,0x44(%esp) +219 00002788 0fb6500d movzbl 0x0d(%eax),%edx +223 0000278c 89542440 movl %edx,0x40(%esp) +227 00002790 0fb6500c movzbl 0x0c(%eax),%edx +231 00002794 8954243c movl %edx,0x3c(%esp) +235 00002798 0fb6500b movzbl 0x0b(%eax),%edx +239 0000279c 89542438 movl %edx,0x38(%esp) +243 000027a0 0fb6500a movzbl 0x0a(%eax),%edx +247 000027a4 89542434 movl %edx,0x34(%esp) +251 000027a8 0fb65009 movzbl 0x09(%eax),%edx +255 000027ac 89542430 movl %edx,0x30(%esp) +259 000027b0 0fb65008 movzbl 0x08(%eax),%edx +263 000027b4 8954242c movl %edx,0x2c(%esp) +267 000027b8 0fb65007 movzbl 0x07(%eax),%edx +271 000027bc 89542428 movl %edx,0x28(%esp) +275 000027c0 0fb65006 movzbl 0x06(%eax),%edx +279 000027c4 89542424 movl %edx,0x24(%esp) +283 000027c8 0fb65005 movzbl 0x05(%eax),%edx +287 000027cc 89542420 movl %edx,0x20(%esp) +291 000027d0 0fb65004 movzbl 0x04(%eax),%edx +295 000027d4 8954241c movl %edx,0x1c(%esp) +299 000027d8 0fb65003 movzbl 0x03(%eax),%edx +303 000027dc 89542418 movl %edx,0x18(%esp) +307 000027e0 0fb65002 movzbl 0x02(%eax),%edx +311 000027e4 89542414 movl %edx,0x14(%esp) +315 000027e8 0fb65001 movzbl 0x01(%eax),%edx +319 000027ec 89542410 movl %edx,0x10(%esp) +323 000027f0 0fb600 movzbl (%eax),%eax +326 000027f3 8944240c movl %eax,0x0c(%esp) +330 000027f7 c744240898300000 movl $0x00003098,0x08(%esp) %02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X +338 000027ff a128400000 movl 0x00004028,%eax stringWithFormat: +343 00002804 89442404 movl %eax,0x04(%esp) +347 00002808 8b1584400000 movl 0x00004084,%edx NSString +353 0000280e 891424 movl %edx,(%esp) +356 00002811 e830070000 calll 0x00002f46 +[NSString stringWithFormat:] <- format the md5 hash +361 00002816 8b15f0300000 movl 0x000030f0,%edx 66EAD6FE7CBE7987B7C4B1A1EED0E5A5 <- THE GOOD HASH +367 0000281c 89542408 movl %edx,0x08(%esp) +371 00002820 8b1524400000 movl 0x00004024,%edx isEqualToString: +377 00002826 89542404 movl %edx,0x04(%esp) +381 0000282a 890424 movl %eax,(%esp) +384 0000282d e814070000 calll 0x00002f46 -[(%esp,1) isEqualToString:] <- compare if both hashes are equal +389 00002832 84c0 testb %al,%al +391 00002834 0f84dd010000 jel 0x00002a17 return; <- if not equal then bye bye +397 0000283a c74424080d000000 movl $0x0000000d,0x08(%esp) <- 14th character from our serial number (6543217890abcdef) +405 00002842 a120400000 movl 0x00004020,%eax characterAtIndex: +410 00002847 89442404 movl %eax,0x04(%esp) +414 0000284b 893c24 movl %edi,(%esp) <- edi holds our serial number +417 0000284e e8f3060000 calll 0x00002f46 -[(%esp,1) characterAtIndex:] +422 00002853 6683f846 cmpw $0x46,%ax <- compare it with F (0x46) +426 00002857 0f85ba010000 jnel 0x00002a17 <- if not equal then bye bye +432 0000285d c744240804000000 movl $0x00000004,0x08(%esp) +440 00002865 a138400000 movl 0x00004038,%eax dataUsingEncoding: +445 0000286a 89442404 movl %eax,0x04(%esp) +449 0000286e 8b55c8 movl 0xc8(%ebp),%edx <- move our Name into edx +452 00002871 891424 movl %edx,(%esp) +455 00002874 e8cd060000 calll 0x00002f46 -[(%esp,1) dataUsingEncoding:] +460 00002879 89c3 movl %eax,%ebx +462 0000287b a134400000 movl 0x00004034,%eax length +467 00002880 89442404 movl %eax,0x04(%esp) +471 00002884 891c24 movl %ebx,(%esp) +474 00002887 e8ba060000 calll 0x00002f46 -[(%esp,1) length] <- get the size of our Name +479 0000288c 89c6 movl %eax,%esi <- store name length +481 0000288e 8b152c400000 movl 0x0000402c,%edx bytes +487 00002894 89542404 movl %edx,0x04(%esp) +491 00002898 891c24 movl %ebx,(%esp) <- our name +494 0000289b e8a6060000 calll 0x00002f46 -[(%esp,1) bytes] <- our name +499 000028a0 c744240800000000 movl $0x00000000,0x08(%esp) +507 000028a8 89742404 movl %esi,0x04(%esp) +511 000028ac 890424 movl %eax,(%esp) +514 000028af e880060000 calll 0x00002f34 _MD5 <- MD5 our name +519 000028b4 0fb65007 movzbl 0x07(%eax),%edx +523 000028b8 89542428 movl %edx,0x28(%esp) +527 000028bc 0fb65006 movzbl 0x06(%eax),%edx +531 000028c0 89542424 movl %edx,0x24(%esp) +535 000028c4 0fb65005 movzbl 0x05(%eax),%edx +539 000028c8 89542420 movl %edx,0x20(%esp) +543 000028cc 0fb65004 movzbl 0x04(%eax),%edx +547 000028d0 8954241c movl %edx,0x1c(%esp) +551 000028d4 0fb65003 movzbl 0x03(%eax),%edx +555 000028d8 89542418 movl %edx,0x18(%esp) +559 000028dc 0fb65002 movzbl 0x02(%eax),%edx +563 000028e0 89542414 movl %edx,0x14(%esp) +567 000028e4 0fb65001 movzbl 0x01(%eax),%edx +571 000028e8 89542410 movl %edx,0x10(%esp) +575 000028ec 0fb600 movzbl (%eax),%eax +578 000028ef 8944240c movl %eax,0x0c(%esp) +582 000028f3 c7442408a8300000 movl $0x000030a8,0x08(%esp) %02X%02X%02X%02X%02X%02X%02X +590 000028fb a128400000 movl 0x00004028,%eax stringWithFormat: +595 00002900 89442404 movl %eax,0x04(%esp) +599 00002904 8b1584400000 movl 0x00004084,%edx NSString +605 0000290a 891424 movl %edx,(%esp) +608 0000290d e834060000 calll 0x00002f46 +[NSString stringWithFormat:] <- 1D2BFC10679506 result for fG +613 00002912 c744240807000000 movl $0x00000007,0x08(%esp) +621 0000291a 8b1530400000 movl 0x00004030,%edx substringToIndex: +627 00002920 89542404 movl %edx,0x04(%esp) +631 00002924 890424 movl %eax,(%esp) +634 00002927 e81a060000 calll 0x00002f46 -[(%esp,1) substringToIndex:] <- result 1D2BFC1 +639 0000292c 89c3 movl %eax,%ebx <- store result in EBX +641 0000292e c745d407000000 movl $0x00000007,0xd4(%ebp) +648 00002935 c745d006000000 movl $0x00000006,0xd0(%ebp) +655 0000293c 8b351c400000 movl 0x0000401c,%esi substringWithRange: +661 00002942 8b45d0 movl 0xd0(%ebp),%eax +664 00002945 8b55d4 movl 0xd4(%ebp),%edx +667 00002948 89442408 movl %eax,0x08(%esp) +671 0000294c 8954240c movl %edx,0x0c(%esp) +675 00002950 89742404 movl %esi,0x04(%esp) +679 00002954 893c24 movl %edi,(%esp) <- edi holds our serial number +682 00002957 e8ea050000 calll 0x00002f46 -[(%esp,1) substringWithRange:] <- result 7890abc +687 0000295c 895c2408 movl %ebx,0x08(%esp) <- ebx = 1D2BFC1 +691 00002960 8b1524400000 movl 0x00004024,%edx isEqualToString: +697 00002966 89542404 movl %edx,0x04(%esp) +701 0000296a 890424 movl %eax,(%esp) <- eax = 7890abc +704 0000296d e8d4050000 calll 0x00002f46 -[(%esp,1) isEqualToString:] <- compare our serial middle with part of the MD5 from our name +709 00002972 84c0 testb %al,%al +711 00002974 0f849d000000 jel 0x00002a17 return; <- if not equal then bye bye +717 0000297a c745dc02000000 movl $0x00000002,0xdc(%ebp) +724 00002981 c745d80e000000 movl $0x0000000e,0xd8(%ebp) +731 00002988 8b45d8 movl 0xd8(%ebp),%eax +734 0000298b 8b55dc movl 0xdc(%ebp),%edx +737 0000298e 89442408 movl %eax,0x08(%esp) <- eax = 0xE +741 00002992 8954240c movl %edx,0x0c(%esp) <- edx = 0x2 +745 00002996 89742404 movl %esi,0x04(%esp) +749 0000299a 893c24 movl %edi,(%esp) <- edi = 6543217890abcdef +752 0000299d e8a4050000 calll 0x00002f46 -[(%esp,1) substringWithRange:] <- result is ef (last two digits of our serial number) +757 000029a2 c744240804000000 movl $0x00000004,0x08(%esp) +765 000029aa 8b1538400000 movl 0x00004038,%edx dataUsingEncoding: +771 000029b0 89542404 movl %edx,0x04(%esp) +775 000029b4 890424 movl %eax,(%esp) +778 000029b7 e88a050000 calll 0x00002f46 -[(%esp,1) dataUsingEncoding:] +783 000029bc 8b55e4 movl 0xe4(%ebp),%edx +786 000029bf 89542408 movl %edx,0x08(%esp) <- edx = 4243 (BC) +790 000029c3 8b1518400000 movl 0x00004018,%edx isEqualToData: +796 000029c9 89542404 movl %edx,0x04(%esp) <- our "ef" +800 000029cd 890424 movl %eax,(%esp) +803 000029d0 e871050000 calll 0x00002f46 -[(%esp,1) isEqualToData:] +808 000029d5 84c0 testb %al,%al +810 000029d7 743e je 0x00002a17 return; <- if not equal then bye bye +812 000029d9 a160400000 movl 0x00004060,%eax defaultCenter +817 000029de 89442404 movl %eax,0x04(%esp) +821 000029e2 a180400000 movl 0x00004080,%eax NSNotificationCenter +826 000029e7 890424 movl %eax,(%esp) +829 000029ea e857050000 calll 0x00002f46 +[NSNotificationCenter defaultCenter] +834 000029ef 8b55cc movl 0xcc(%ebp),%edx +837 000029f2 895514 movl %edx,0x14(%ebp) +840 000029f5 c7451088300000 movl $0x00003088,0x10(%ebp) Registered +847 000029fc 8b1514400000 movl 0x00004014,%edx postNotificationName:object: +853 00002a02 89550c movl %edx,0x0c(%ebp) +856 00002a05 894508 movl %eax,0x08(%ebp) +859 00002a08 8b5df4 movl 0xf4(%ebp),%ebx +862 00002a0b 8b75f8 movl 0xf8(%ebp),%esi +865 00002a0e 8b7dfc movl 0xfc(%ebp),%edi +868 00002a11 c9 leave +869 00002a12 e92f050000 jmpl 0x00002f46 +874 00002a17 8b5df4 movl 0xf4(%ebp),%ebx +877 00002a1a 8b75f8 movl 0xf8(%ebp),%esi +880 00002a1d 8b7dfc movl 0xfc(%ebp),%edi +883 00002a20 c9 leave +884 00002a21 c3 ret