#define setPBlockStart(qwer) asm("subb $0x20,l_"#qwer"SC1\n"\
"l_"#qwer"SC1:	.byte 0x80\n"\
"		addb $0x20,l_"#qwer"SC1\n"\
" jmp l_"#qwer"Decryptor\n\t"\
 ".string \"m_TCodeStart\"\n\t"\
  "    l_"#qwer"TCodeStart: nop\n\t")


#define setPBlockEnd(qwer) asm("		jmp l_"#qwer"Cryptor\n"\
"		.string \"m_TCodeEnd\"\n"\
"		nop\n"\
"		nop\n"\
"		nop\n"\
"		nop\n"\
"	.string \"m_PCodeEP\"\n"\
"l_"#qwer"Cryptor: 	movl d_"#qwer"Length,%edx\n"\
"		subl $4,%edx \n"\
"l_"#qwer"Cryptor_l1:  movl $28,%eax\n"\
"l_"#qwer"Cryptor_l2:  movl $d_"#qwer"Password,%ebx\n"\
"		movl (%eax,%ebx),%ecx\n"\
"		movl d_"#qwer"Start_Adr,%ebx\n"\
"		xorl %ecx,(%ebx,%edx)\n"\
"		rorl %cl,(%ebx,%edx)\n"\
"		subl $4,%edx\n"\
"		js   l_"#qwer"Cryptor_ex1\n"\
"		subl $4,%eax\n"\
"		js   l_"#qwer"Cryptor_l1\n"\
"		jmp l_"#qwer"Cryptor_l2\n"\
"l_"#qwer"Cryptor_ex1: jmp l_"#qwer"Exit\n"\
"l_"#qwer"Decryptor:   movl d_"#qwer"Length,%edx\n"\
"		subl $4,%edx \n"\
"l_"#qwer"Decryptor_l1:movl $28,%eax\n"\
"l_"#qwer"Decryptor_l2:movl $d_"#qwer"Password,%ebx\n"\
"		movl (%eax,%ebx),%ecx\n"\
"		movl d_"#qwer"Start_Adr,%ebx\n"\
"		roll %cl,(%ebx,%edx)\n"\
"		xorl %ecx,(%ebx,%edx)\n"\
"		subl $4,%edx\n"\
"		js l_"#qwer"Decryptor_ex1\n"\
"		subl $4,%eax\n"\
"		js l_"#qwer"Decryptor_l1\n"\
"		jmp l_"#qwer"Decryptor_l2\n"\
"l_"#qwer"Decryptor_ex1:jmp l_"#qwer"TCodeStart\n"\
"d_"#qwer"Start_Adr:	.string \"m_TCodeStartAdr\"\n"\
"d_"#qwer"Length:	.string \"m_TCodeLength\"\n"\
"d_"#qwer"Password:.string \"m_TCodePass\"\n"\
"           .string  \"_trfgfgfgfdfgfdfgfdfg\"\n"\
"	.string \"m_PCodeRet\"\n"\
"l_"#qwer"Exit:	addb $0x19,l_"#qwer"SC2\n"\
"l_"#qwer"SC2: 	.byte 0x48\n"\
"		subb $0x19,l_"#qwer"SC2\n")

#define DecryptROData \
asm(\
"			.string \"m_ROEP\"\n"\
"			subb $0x20,l_ro_SC1\n"\
"l_ro_SC1:		.byte 0x80\n"\
"			addb $0x20,l_ro_SC1\n"\
"l_ro_Decryptor:   	movl d_ro_Length,%edx\n"\
"			subl $4,%edx \n"\
"l_ro_Decryptor_l1:	movl $28,%eax\n"\
"l_ro_Decryptor_l2:	movl $d_ro_Password,%ebx\n"\
"			movl (%eax,%ebx),%ecx\n"\
"			movl d_ro_Start_Adr,%ebx\n"\
"			roll %cl,(%ebx,%edx)\n"\
"			subl $4,%edx\n"\
"			js l_ro_Exit\n"\
"			subl $4,%eax\n"\
"			js l_ro_Decryptor_l1\n"\
"			jmp l_ro_Decryptor_l2\n"\
"d_ro_Start_Adr:	.string \"m_ROStartAdr\"\n"\
"d_ro_Length:		.string \"m_ROLength\"\n"\
"d_ro_ExitAdr:		.string \"m_ROExitAdr\"\n"\
"d_ro_Password:		.string \"m_ROPass\"\n"\
"           		.string  \"_trfgfgfgfdfgfdfgfdfg____\"\n"\
"l_ro_Exit:		.byte 0x61\n"\
"			push d_ro_ExitAdr\n"\
"			ret\n")