0047BA9E
/TEST
EAX,EAX
0047BAA0 |JNZ SHORT
test
.0047BAC1
0047BAA2 |MOV EAX,DWORD PTR SS:[EBP-4]
0047BAA5 |INC DWORD PTR SS:[EBP-4]
0047BAA8 |MOV EDX,DWORD PTR SS:[EBP+8]
0047BAAB |MOV CL,BYTE PTR DS:[EDX+EAX] ;依次取序列号每个字符
0047BAAE |PUSH ECX
0047BAAF |CALL
test
.0047BA00 ;返回每个字符在base64码表中的位置
0047BAB4 |MOVSX ESI,BYTE PTR DS:[EAX+755D40] ;取各个字符的对应的码值
0047BABB |MOV EAX,6 ;设定循环6次,每次取最低一位值
0047BAC0 |POP ECX
0047BAC1 |MOV ECX,EBX
0047BAC3 |MOV EDX,ESI
0047BAC5 |AND DL,1 ;取码值的最第一位值
0047BAC8 |AND ECX,7 ;判断循环是否够8位,够就组下一个8位
0047BACB |SHL DL,CL ;设定位置
0047BACD |MOV ECX,EBX
0047BACF |MOV EDI,DWORD PTR SS:[EBP+10]
0047BAD2 |SHR ECX,3
0047BAD5 |INC EBX
0047BAD6 |SHR ESI,1 ;码值向右移动一位,
0047BAD8 |DEC EAX
0047BAD9 |OR BYTE PTR DS:[EDI+ECX],DL ;依次向内存中写入处理好的每一位的值
0047BADC |CMP EBX,DWORD PTR SS:[EBP-8]
0047BADF \JB SHORT
test
.0047BA9E