MadHatter
October 27th, 2006, 03:50 PM
I'm trying to understand a bit of code (some psudo code would be awesome). I dont really know anything about assembler but am trying to replicate some sort of hashing algorithm being used here (and dont have the source code for this).
prior to the loop I need help with I've got a byte array that this code will manipulate stored in ebx,esi,ecx and edx.
EBX = first 8
ESI = second 8
ECX = third 8
EDX = last 8 bytes.
here's the full set of code (the section between the #-- start --# and #-- end --# is what I need help understanding).
Thanks (big thanks and points) in advance.
006E7BE9 807F 04 00 CMP BYTE PTR DS:[EDI+4],0
006E7BED 897D E8 MOV DWORD PTR SS:[EBP-18],EDI
006E7BF0 75 0C JNZ SHORT BF2142_w.006E7BFE
006E7BF2 B8 01000000 MOV EAX,1
006E7BF7 5F POP EDI
006E7BF8 8BE5 MOV ESP,EBP
006E7BFA 5D POP EBP
006E7BFB C2 0800 RETN 8
006E7BFE 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8]
006E7C01 0FB648 01 MOVZX ECX,BYTE PTR DS:[EAX+1]
006E7C05 83C0 01 ADD EAX,1
006E7C08 33D2 XOR EDX,EDX
006E7C0A 8A70 01 MOV DH,BYTE PTR DS:[EAX+1]
006E7C0D 83C0 01 ADD EAX,1
006E7C10 53 PUSH EBX
006E7C11 0FB658 FE MOVZX EBX,BYTE PTR DS:[EAX-2]
006E7C15 83C0 01 ADD EAX,1
006E7C18 C1E1 10 SHL ECX,10
006E7C1B 83C0 01 ADD EAX,1
006E7C1E 56 PUSH ESI
006E7C1F 0FB630 MOVZX ESI,BYTE PTR DS:[EAX]
006E7C22 C1E3 18 SHL EBX,18
006E7C25 0BD9 OR EBX,ECX
006E7C27 0FB648 FF MOVZX ECX,BYTE PTR DS:[EAX-1]
006E7C2B 0BDA OR EBX,EDX
006E7C2D 0FB650 01 MOVZX EDX,BYTE PTR DS:[EAX+1]
006E7C31 83C0 01 ADD EAX,1
006E7C34 0BD9 OR EBX,ECX
006E7C36 83C0 01 ADD EAX,1
006E7C39 C1E2 10 SHL EDX,10
006E7C3C 33C9 XOR ECX,ECX
006E7C3E 8A28 MOV CH,BYTE PTR DS:[EAX]
006E7C40 C1E6 18 SHL ESI,18
006E7C43 0BF2 OR ESI,EDX
006E7C45 0FB650 01 MOVZX EDX,BYTE PTR DS:[EAX+1]
006E7C49 83C0 01 ADD EAX,1
006E7C4C 0BF1 OR ESI,ECX
006E7C4E 0FB648 01 MOVZX ECX,BYTE PTR DS:[EAX+1]
006E7C52 0BF2 OR ESI,EDX
006E7C54 3377 0C XOR ESI,DWORD PTR DS:[EDI+C]
006E7C57 83C0 01 ADD EAX,1
006E7C5A 0FB650 01 MOVZX EDX,BYTE PTR DS:[EAX+1]
006E7C5E 83C0 01 ADD EAX,1
006E7C61 C1E2 10 SHL EDX,10
006E7C64 C1E1 18 SHL ECX,18
006E7C67 0BCA OR ECX,EDX
006E7C69 33D2 XOR EDX,EDX
006E7C6B 8A70 01 MOV DH,BYTE PTR DS:[EAX+1]
006E7C6E 83C0 01 ADD EAX,1
006E7C71 83C0 01 ADD EAX,1
006E7C74 83C0 01 ADD EAX,1
006E7C77 8975 FC MOV DWORD PTR SS:[EBP-4],ESI
006E7C7A 0FB630 MOVZX ESI,BYTE PTR DS:[EAX]
006E7C7D 0BCA OR ECX,EDX
006E7C7F 0FB650 FF MOVZX EDX,BYTE PTR DS:[EAX-1]
006E7C83 0BCA OR ECX,EDX
006E7C85 0FB650 01 MOVZX EDX,BYTE PTR DS:[EAX+1]
006E7C89 83C0 01 ADD EAX,1
006E7C8C 335F 08 XOR EBX,DWORD PTR DS:[EDI+8]
006E7C8F 334F 10 XOR ECX,DWORD PTR DS:[EDI+10]
006E7C92 C1E2 10 SHL EDX,10 (EDX = 00000000)
006E7C95 C1E6 18 SHL ESI,18 (ESI = 01000000)
006E7C98 0BF2 OR ESI,EDX
006E7C9A 33D2 XOR EDX,EDX
006E7C9C 8A70 01 MOV DH,BYTE PTR DS:[EAX+1]
006E7C9F 83C0 01 ADD EAX,1
006E7CA2 895D F4 MOV DWORD PTR SS:[EBP-C],EBX
006E7CA5 894D F0 MOV DWORD PTR SS:[EBP-10],ECX
006E7CA8 8A50 01 MOV DL,BYTE PTR DS:[EAX+1]
006E7CAB 0BD6 OR EDX,ESI
006E7CAD 3357 14 XOR EDX,DWORD PTR DS:[EDI+14]
006E7CB0 8BB7 D0030000 MOV ESI,DWORD PTR DS:[EDI+3D0]
006E7CB6 83FE 01 CMP ESI,1
006E7CB9 8BC2 MOV EAX,EDX
006E7CBB 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
006E7CBE 8975 EC MOV DWORD PTR SS:[EBP-14],ESI
006E7CC1 0F8E 02010000 JLE BF2142_w.006E7DC9
006E7CC7 83C7 30 ADD EDI,30
006E7CCA 83C6 FF ADD ESI,-1
006E7CCD 8975 08 MOV DWORD PTR SS:[EBP+8],ESI
#-- start of loop --#
006E7CD0 8B55 F0 MOV EDX,DWORD PTR SS:[EBP-10]
006E7CD3 C1EA 10 SHR EDX,10
006E7CD6 0FB675 F3 MOVZX ESI,BYTE PTR SS:[EBP-D]
006E7CDA 0FB6D2 MOVZX EDX,DL
006E7CDD 0FB6C4 MOVZX EAX,AH
006E7CE0 8B0485 A82F8000 MOV EAX,DWORD PTR DS:[EAX*4+802FA8]
006E7CE7 330495 A82B8000 XOR EAX,DWORD PTR DS:[EDX*4+802BA8]
006E7CEE 0FB655 FF MOVZX EDX,BYTE PTR SS:[EBP-1]
006E7CF2 330495 A8278000 XOR EAX,DWORD PTR DS:[EDX*4+8027A8]
006E7CF9 8BD3 MOV EDX,EBX
006E7CFB 81E2 FF000000 AND EDX,0FF
006E7D01 330495 A8338000 XOR EAX,DWORD PTR DS:[EDX*4+8033A8]
006E7D08 8B55 F8 MOV EDX,DWORD PTR SS:[EBP-8]
006E7D0B C1EA 10 SHR EDX,10
006E7D0E 0FB6D2 MOVZX EDX,DL
006E7D11 8B1495 A82B8000 MOV EDX,DWORD PTR DS:[EDX*4+802BA8]
006E7D18 3314B5 A8278000 XOR EDX,DWORD PTR DS:[ESI*4+8027A8]
006E7D1F 0FB6F7 MOVZX ESI,BH
006E7D22 3314B5 A82F8000 XOR EDX,DWORD PTR DS:[ESI*4+802FA8]
006E7D29 8B75 FC MOV ESI,DWORD PTR SS:[EBP-4]
006E7D2C 0FB65D FD MOVZX EBX,BYTE PTR SS:[EBP-3]
006E7D30 81E6 FF000000 AND ESI,0FF
006E7D36 3314B5 A8338000 XOR EDX,DWORD PTR DS:[ESI*4+8033A8]
006E7D3D 0FB675 FB MOVZX ESI,BYTE PTR SS:[EBP-5]
006E7D41 8B34B5 A8278000 MOV ESI,DWORD PTR DS:[ESI*4+8027A8]
006E7D48 33349D A82F8000 XOR ESI,DWORD PTR DS:[EBX*4+802FA8]
006E7D4F 0FB65D F6 MOVZX EBX,BYTE PTR SS:[EBP-A]
006E7D53 33349D A82B8000 XOR ESI,DWORD PTR DS:[EBX*4+802BA8]
006E7D5A 3347 FC XOR EAX,DWORD PTR DS:[EDI-4]
006E7D5D 3317 XOR EDX,DWORD PTR DS:[EDI]
006E7D5F 8BD9 MOV EBX,ECX
006E7D61 81E3 FF000000 AND EBX,0FF
006E7D67 33349D A8338000 XOR ESI,DWORD PTR DS:[EBX*4+8033A8]
006E7D6E 0FB65D FE MOVZX EBX,BYTE PTR SS:[EBP-2]
006E7D72 3377 04 XOR ESI,DWORD PTR DS:[EDI+4]
006E7D75 0FB6CD MOVZX ECX,CH
006E7D78 8B0C8D A82F8000 MOV ECX,DWORD PTR DS:[ECX*4+802FA8]
006E7D7F 330C9D A82B8000 XOR ECX,DWORD PTR DS:[EBX*4+802BA8]
006E7D86 0FB65D F7 MOVZX EBX,BYTE PTR SS:[EBP-9]
006E7D8A 330C9D A8278000 XOR ECX,DWORD PTR DS:[EBX*4+8027A8]
006E7D91 8B5D F8 MOV EBX,DWORD PTR SS:[EBP-8]
006E7D94 81E3 FF000000 AND EBX,0FF
006E7D9A 330C9D A8338000 XOR ECX,DWORD PTR DS:[EBX*4+8033A8]
006E7DA1 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
006E7DA4 334F F8 XOR ECX,DWORD PTR DS:[EDI-8]
006E7DA7 8BC6 MOV EAX,ESI
006E7DA9 8BD9 MOV EBX,ECX
006E7DAB 8BCA MOV ECX,EDX
006E7DAD 83C7 20 ADD EDI,20
006E7DB0 836D 08 01 SUB DWORD PTR SS:[EBP+8],1
006E7DB4 895D F4 MOV DWORD PTR SS:[EBP-C],EBX
006E7DB7 894D F0 MOV DWORD PTR SS:[EBP-10],ECX
006E7DBA 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
006E7DBD ^0F85 0DFFFFFF JNZ BF2142_w.006E7CD0
#-- end of loop --#
006E7DC3 8B75 EC MOV ESI,DWORD PTR SS:[EBP-14]
006E7DC6 8B7D E8 MOV EDI,DWORD PTR SS:[EBP-18]
006E7DC9 8B55 F4 MOV EDX,DWORD PTR SS:[EBP-C]
006E7DCC C1EA 18 SHR EDX,18
006E7DCF C1E6 05 SHL ESI,5
006E7DD2 8B5C3E 08 MOV EBX,DWORD PTR DS:[ESI+EDI+8]
006E7DD6 8BC3 MOV EAX,EBX
006E7DD8 8D743E 08 LEA ESI,DWORD PTR DS:[ESI+EDI+8]
006E7DDC C1F8 18 SAR EAX,18
006E7DDF 3282 A8258000 XOR AL,BYTE PTR DS:[EDX+8025A8]
006E7DE5 0FB67D FF MOVZX EDI,BYTE PTR SS:[EBP-1]
006E7DE9 8845 0B MOV BYTE PTR SS:[EBP+B],AL
006E7DEC 8B45 0C MOV EAX,DWORD PTR SS:[EBP+C]
006E7DEF 0FB655 0B MOVZX EDX,BYTE PTR SS:[EBP+B]
006E7DF3 895D 08 MOV DWORD PTR SS:[EBP+8],EBX
006E7DF6 8810 MOV BYTE PTR DS:[EAX],DL
006E7DF8 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]
006E7DFB C1FB 10 SAR EBX,10
006E7DFE C1EA 10 SHR EDX,10
006E7E01 0FB6D2 MOVZX EDX,DL
006E7E04 329A A8258000 XOR BL,BYTE PTR DS:[EDX+8025A8]
006E7E0A 0FB6D5 MOVZX EDX,CH
006E7E0D 8858 01 MOV BYTE PTR DS:[EAX+1],BL
006E7E10 8B5D 08 MOV EBX,DWORD PTR SS:[EBP+8]
006E7E13 894D 08 MOV DWORD PTR SS:[EBP+8],ECX
006E7E16 8BCB MOV ECX,EBX
006E7E18 C1F9 08 SAR ECX,8
006E7E1B 328A A8258000 XOR CL,BYTE PTR DS:[EDX+8025A8]
006E7E21 8B55 F8 MOV EDX,DWORD PTR SS:[EBP-8]
006E7E24 8848 02 MOV BYTE PTR DS:[EAX+2],CL
006E7E27 81E2 FF000000 AND EDX,0FF
006E7E2D 0FB692 A8258000 MOVZX EDX,BYTE PTR DS:[EDX+8025A8]
006E7E34 32D3 XOR DL,BL
006E7E36 8850 03 MOV BYTE PTR DS:[EAX+3],DL
006E7E39 8B56 04 MOV EDX,DWORD PTR DS:[ESI+4]
006E7E3C 8BDA MOV EBX,EDX
006E7E3E C1FB 18 SAR EBX,18
006E7E41 329F A8258000 XOR BL,BYTE PTR DS:[EDI+8025A8]
006E7E47 0FB67D F2 MOVZX EDI,BYTE PTR SS:[EBP-E]
006E7E4B 8858 04 MOV BYTE PTR DS:[EAX+4],BL
006E7E4E 8BDA MOV EBX,EDX
006E7E50 C1FB 10 SAR EBX,10
006E7E53 329F A8258000 XOR BL,BYTE PTR DS:[EDI+8025A8]
006E7E59 0FB67D F9 MOVZX EDI,BYTE PTR SS:[EBP-7]
006E7E5D 8858 05 MOV BYTE PTR DS:[EAX+5],BL
006E7E60 8BDA MOV EBX,EDX
006E7E62 C1FB 08 SAR EBX,8
006E7E65 329F A8258000 XOR BL,BYTE PTR DS:[EDI+8025A8]
006E7E6B 8B7D F4 MOV EDI,DWORD PTR SS:[EBP-C]
006E7E6E 8858 06 MOV BYTE PTR DS:[EAX+6],BL
006E7E71 81E7 FF000000 AND EDI,0FF
006E7E77 0FB69F A8258000 MOVZX EBX,BYTE PTR DS:[EDI+8025A8]
006E7E7E 0FB67D F3 MOVZX EDI,BYTE PTR SS:[EBP-D]
006E7E82 32DA XOR BL,DL
006E7E84 8858 07 MOV BYTE PTR DS:[EAX+7],BL
006E7E87 8B56 08 MOV EDX,DWORD PTR DS:[ESI+8]
006E7E8A 8BDA MOV EBX,EDX
006E7E8C C1FB 18 SAR EBX,18
006E7E8F 329F A8258000 XOR BL,BYTE PTR DS:[EDI+8025A8]
006E7E95 0FB67D FA MOVZX EDI,BYTE PTR SS:[EBP-6]
006E7E99 8858 08 MOV BYTE PTR DS:[EAX+8],BL
006E7E9C 8BDA MOV EBX,EDX
006E7E9E C1FB 10 SAR EBX,10
006E7EA1 329F A8258000 XOR BL,BYTE PTR DS:[EDI+8025A8]
006E7EA7 0FB67D F5 MOVZX EDI,BYTE PTR SS:[EBP-B]
006E7EAB 8858 09 MOV BYTE PTR DS:[EAX+9],BL
006E7EAE 8BDA MOV EBX,EDX
006E7EB0 C1FB 08 SAR EBX,8
006E7EB3 329F A8258000 XOR BL,BYTE PTR DS:[EDI+8025A8]
006E7EB9 8B7D FC MOV EDI,DWORD PTR SS:[EBP-4]
006E7EBC 8858 0A MOV BYTE PTR DS:[EAX+A],BL
006E7EBF 81E7 FF000000 AND EDI,0FF
006E7EC5 0FB69F A8258000 MOVZX EBX,BYTE PTR DS:[EDI+8025A8]
006E7ECC 32DA XOR BL,DL
006E7ECE 8858 0B MOV BYTE PTR DS:[EAX+B],BL
006E7ED1 8B56 0C MOV EDX,DWORD PTR DS:[ESI+C]
006E7ED4 0FB675 FB MOVZX ESI,BYTE PTR SS:[EBP-5]
006E7ED8 8BDA MOV EBX,EDX
006E7EDA C1FB 18 SAR EBX,18
006E7EDD 329E A8258000 XOR BL,BYTE PTR DS:[ESI+8025A8]
006E7EE3 0FB675 F6 MOVZX ESI,BYTE PTR SS:[EBP-A]
006E7EE7 8858 0C MOV BYTE PTR DS:[EAX+C],BL
006E7EEA 8BDA MOV EBX,EDX
006E7EEC 8B4D 08 MOV ECX,DWORD PTR SS:[EBP+8]
006E7EEF C1FB 10 SAR EBX,10
006E7EF2 329E A8258000 XOR BL,BYTE PTR DS:[ESI+8025A8]
006E7EF8 0FB675 FD MOVZX ESI,BYTE PTR SS:[EBP-3]
006E7EFC 8858 0D MOV BYTE PTR DS:[EAX+D],BL
006E7EFF 8BDA MOV EBX,EDX
006E7F01 C1FB 08 SAR EBX,8
006E7F04 329E A8258000 XOR BL,BYTE PTR DS:[ESI+8025A8]
006E7F0A 81E1 FF000000 AND ECX,0FF
006E7F10 8858 0E MOV BYTE PTR DS:[EAX+E],BL
006E7F13 8A89 A8258000 MOV CL,BYTE PTR DS:[ECX+8025A8]
006E7F19 5E POP ESI
006E7F1A 32CA XOR CL,DL
006E7F1C 5B POP EBX
006E7F1D 8848 0F MOV BYTE PTR DS:[EAX+F],CL
006E7F20 33C0 XOR EAX,EAX
006E7F22 5F POP EDI
006E7F23 8BE5 MOV ESP,EBP
006E7F25 5D POP EBP
006E7F26 C2 0800 RETN 8
prior to the loop I need help with I've got a byte array that this code will manipulate stored in ebx,esi,ecx and edx.
EBX = first 8
ESI = second 8
ECX = third 8
EDX = last 8 bytes.
here's the full set of code (the section between the #-- start --# and #-- end --# is what I need help understanding).
Thanks (big thanks and points) in advance.
006E7BE9 807F 04 00 CMP BYTE PTR DS:[EDI+4],0
006E7BED 897D E8 MOV DWORD PTR SS:[EBP-18],EDI
006E7BF0 75 0C JNZ SHORT BF2142_w.006E7BFE
006E7BF2 B8 01000000 MOV EAX,1
006E7BF7 5F POP EDI
006E7BF8 8BE5 MOV ESP,EBP
006E7BFA 5D POP EBP
006E7BFB C2 0800 RETN 8
006E7BFE 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8]
006E7C01 0FB648 01 MOVZX ECX,BYTE PTR DS:[EAX+1]
006E7C05 83C0 01 ADD EAX,1
006E7C08 33D2 XOR EDX,EDX
006E7C0A 8A70 01 MOV DH,BYTE PTR DS:[EAX+1]
006E7C0D 83C0 01 ADD EAX,1
006E7C10 53 PUSH EBX
006E7C11 0FB658 FE MOVZX EBX,BYTE PTR DS:[EAX-2]
006E7C15 83C0 01 ADD EAX,1
006E7C18 C1E1 10 SHL ECX,10
006E7C1B 83C0 01 ADD EAX,1
006E7C1E 56 PUSH ESI
006E7C1F 0FB630 MOVZX ESI,BYTE PTR DS:[EAX]
006E7C22 C1E3 18 SHL EBX,18
006E7C25 0BD9 OR EBX,ECX
006E7C27 0FB648 FF MOVZX ECX,BYTE PTR DS:[EAX-1]
006E7C2B 0BDA OR EBX,EDX
006E7C2D 0FB650 01 MOVZX EDX,BYTE PTR DS:[EAX+1]
006E7C31 83C0 01 ADD EAX,1
006E7C34 0BD9 OR EBX,ECX
006E7C36 83C0 01 ADD EAX,1
006E7C39 C1E2 10 SHL EDX,10
006E7C3C 33C9 XOR ECX,ECX
006E7C3E 8A28 MOV CH,BYTE PTR DS:[EAX]
006E7C40 C1E6 18 SHL ESI,18
006E7C43 0BF2 OR ESI,EDX
006E7C45 0FB650 01 MOVZX EDX,BYTE PTR DS:[EAX+1]
006E7C49 83C0 01 ADD EAX,1
006E7C4C 0BF1 OR ESI,ECX
006E7C4E 0FB648 01 MOVZX ECX,BYTE PTR DS:[EAX+1]
006E7C52 0BF2 OR ESI,EDX
006E7C54 3377 0C XOR ESI,DWORD PTR DS:[EDI+C]
006E7C57 83C0 01 ADD EAX,1
006E7C5A 0FB650 01 MOVZX EDX,BYTE PTR DS:[EAX+1]
006E7C5E 83C0 01 ADD EAX,1
006E7C61 C1E2 10 SHL EDX,10
006E7C64 C1E1 18 SHL ECX,18
006E7C67 0BCA OR ECX,EDX
006E7C69 33D2 XOR EDX,EDX
006E7C6B 8A70 01 MOV DH,BYTE PTR DS:[EAX+1]
006E7C6E 83C0 01 ADD EAX,1
006E7C71 83C0 01 ADD EAX,1
006E7C74 83C0 01 ADD EAX,1
006E7C77 8975 FC MOV DWORD PTR SS:[EBP-4],ESI
006E7C7A 0FB630 MOVZX ESI,BYTE PTR DS:[EAX]
006E7C7D 0BCA OR ECX,EDX
006E7C7F 0FB650 FF MOVZX EDX,BYTE PTR DS:[EAX-1]
006E7C83 0BCA OR ECX,EDX
006E7C85 0FB650 01 MOVZX EDX,BYTE PTR DS:[EAX+1]
006E7C89 83C0 01 ADD EAX,1
006E7C8C 335F 08 XOR EBX,DWORD PTR DS:[EDI+8]
006E7C8F 334F 10 XOR ECX,DWORD PTR DS:[EDI+10]
006E7C92 C1E2 10 SHL EDX,10 (EDX = 00000000)
006E7C95 C1E6 18 SHL ESI,18 (ESI = 01000000)
006E7C98 0BF2 OR ESI,EDX
006E7C9A 33D2 XOR EDX,EDX
006E7C9C 8A70 01 MOV DH,BYTE PTR DS:[EAX+1]
006E7C9F 83C0 01 ADD EAX,1
006E7CA2 895D F4 MOV DWORD PTR SS:[EBP-C],EBX
006E7CA5 894D F0 MOV DWORD PTR SS:[EBP-10],ECX
006E7CA8 8A50 01 MOV DL,BYTE PTR DS:[EAX+1]
006E7CAB 0BD6 OR EDX,ESI
006E7CAD 3357 14 XOR EDX,DWORD PTR DS:[EDI+14]
006E7CB0 8BB7 D0030000 MOV ESI,DWORD PTR DS:[EDI+3D0]
006E7CB6 83FE 01 CMP ESI,1
006E7CB9 8BC2 MOV EAX,EDX
006E7CBB 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
006E7CBE 8975 EC MOV DWORD PTR SS:[EBP-14],ESI
006E7CC1 0F8E 02010000 JLE BF2142_w.006E7DC9
006E7CC7 83C7 30 ADD EDI,30
006E7CCA 83C6 FF ADD ESI,-1
006E7CCD 8975 08 MOV DWORD PTR SS:[EBP+8],ESI
#-- start of loop --#
006E7CD0 8B55 F0 MOV EDX,DWORD PTR SS:[EBP-10]
006E7CD3 C1EA 10 SHR EDX,10
006E7CD6 0FB675 F3 MOVZX ESI,BYTE PTR SS:[EBP-D]
006E7CDA 0FB6D2 MOVZX EDX,DL
006E7CDD 0FB6C4 MOVZX EAX,AH
006E7CE0 8B0485 A82F8000 MOV EAX,DWORD PTR DS:[EAX*4+802FA8]
006E7CE7 330495 A82B8000 XOR EAX,DWORD PTR DS:[EDX*4+802BA8]
006E7CEE 0FB655 FF MOVZX EDX,BYTE PTR SS:[EBP-1]
006E7CF2 330495 A8278000 XOR EAX,DWORD PTR DS:[EDX*4+8027A8]
006E7CF9 8BD3 MOV EDX,EBX
006E7CFB 81E2 FF000000 AND EDX,0FF
006E7D01 330495 A8338000 XOR EAX,DWORD PTR DS:[EDX*4+8033A8]
006E7D08 8B55 F8 MOV EDX,DWORD PTR SS:[EBP-8]
006E7D0B C1EA 10 SHR EDX,10
006E7D0E 0FB6D2 MOVZX EDX,DL
006E7D11 8B1495 A82B8000 MOV EDX,DWORD PTR DS:[EDX*4+802BA8]
006E7D18 3314B5 A8278000 XOR EDX,DWORD PTR DS:[ESI*4+8027A8]
006E7D1F 0FB6F7 MOVZX ESI,BH
006E7D22 3314B5 A82F8000 XOR EDX,DWORD PTR DS:[ESI*4+802FA8]
006E7D29 8B75 FC MOV ESI,DWORD PTR SS:[EBP-4]
006E7D2C 0FB65D FD MOVZX EBX,BYTE PTR SS:[EBP-3]
006E7D30 81E6 FF000000 AND ESI,0FF
006E7D36 3314B5 A8338000 XOR EDX,DWORD PTR DS:[ESI*4+8033A8]
006E7D3D 0FB675 FB MOVZX ESI,BYTE PTR SS:[EBP-5]
006E7D41 8B34B5 A8278000 MOV ESI,DWORD PTR DS:[ESI*4+8027A8]
006E7D48 33349D A82F8000 XOR ESI,DWORD PTR DS:[EBX*4+802FA8]
006E7D4F 0FB65D F6 MOVZX EBX,BYTE PTR SS:[EBP-A]
006E7D53 33349D A82B8000 XOR ESI,DWORD PTR DS:[EBX*4+802BA8]
006E7D5A 3347 FC XOR EAX,DWORD PTR DS:[EDI-4]
006E7D5D 3317 XOR EDX,DWORD PTR DS:[EDI]
006E7D5F 8BD9 MOV EBX,ECX
006E7D61 81E3 FF000000 AND EBX,0FF
006E7D67 33349D A8338000 XOR ESI,DWORD PTR DS:[EBX*4+8033A8]
006E7D6E 0FB65D FE MOVZX EBX,BYTE PTR SS:[EBP-2]
006E7D72 3377 04 XOR ESI,DWORD PTR DS:[EDI+4]
006E7D75 0FB6CD MOVZX ECX,CH
006E7D78 8B0C8D A82F8000 MOV ECX,DWORD PTR DS:[ECX*4+802FA8]
006E7D7F 330C9D A82B8000 XOR ECX,DWORD PTR DS:[EBX*4+802BA8]
006E7D86 0FB65D F7 MOVZX EBX,BYTE PTR SS:[EBP-9]
006E7D8A 330C9D A8278000 XOR ECX,DWORD PTR DS:[EBX*4+8027A8]
006E7D91 8B5D F8 MOV EBX,DWORD PTR SS:[EBP-8]
006E7D94 81E3 FF000000 AND EBX,0FF
006E7D9A 330C9D A8338000 XOR ECX,DWORD PTR DS:[EBX*4+8033A8]
006E7DA1 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
006E7DA4 334F F8 XOR ECX,DWORD PTR DS:[EDI-8]
006E7DA7 8BC6 MOV EAX,ESI
006E7DA9 8BD9 MOV EBX,ECX
006E7DAB 8BCA MOV ECX,EDX
006E7DAD 83C7 20 ADD EDI,20
006E7DB0 836D 08 01 SUB DWORD PTR SS:[EBP+8],1
006E7DB4 895D F4 MOV DWORD PTR SS:[EBP-C],EBX
006E7DB7 894D F0 MOV DWORD PTR SS:[EBP-10],ECX
006E7DBA 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
006E7DBD ^0F85 0DFFFFFF JNZ BF2142_w.006E7CD0
#-- end of loop --#
006E7DC3 8B75 EC MOV ESI,DWORD PTR SS:[EBP-14]
006E7DC6 8B7D E8 MOV EDI,DWORD PTR SS:[EBP-18]
006E7DC9 8B55 F4 MOV EDX,DWORD PTR SS:[EBP-C]
006E7DCC C1EA 18 SHR EDX,18
006E7DCF C1E6 05 SHL ESI,5
006E7DD2 8B5C3E 08 MOV EBX,DWORD PTR DS:[ESI+EDI+8]
006E7DD6 8BC3 MOV EAX,EBX
006E7DD8 8D743E 08 LEA ESI,DWORD PTR DS:[ESI+EDI+8]
006E7DDC C1F8 18 SAR EAX,18
006E7DDF 3282 A8258000 XOR AL,BYTE PTR DS:[EDX+8025A8]
006E7DE5 0FB67D FF MOVZX EDI,BYTE PTR SS:[EBP-1]
006E7DE9 8845 0B MOV BYTE PTR SS:[EBP+B],AL
006E7DEC 8B45 0C MOV EAX,DWORD PTR SS:[EBP+C]
006E7DEF 0FB655 0B MOVZX EDX,BYTE PTR SS:[EBP+B]
006E7DF3 895D 08 MOV DWORD PTR SS:[EBP+8],EBX
006E7DF6 8810 MOV BYTE PTR DS:[EAX],DL
006E7DF8 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]
006E7DFB C1FB 10 SAR EBX,10
006E7DFE C1EA 10 SHR EDX,10
006E7E01 0FB6D2 MOVZX EDX,DL
006E7E04 329A A8258000 XOR BL,BYTE PTR DS:[EDX+8025A8]
006E7E0A 0FB6D5 MOVZX EDX,CH
006E7E0D 8858 01 MOV BYTE PTR DS:[EAX+1],BL
006E7E10 8B5D 08 MOV EBX,DWORD PTR SS:[EBP+8]
006E7E13 894D 08 MOV DWORD PTR SS:[EBP+8],ECX
006E7E16 8BCB MOV ECX,EBX
006E7E18 C1F9 08 SAR ECX,8
006E7E1B 328A A8258000 XOR CL,BYTE PTR DS:[EDX+8025A8]
006E7E21 8B55 F8 MOV EDX,DWORD PTR SS:[EBP-8]
006E7E24 8848 02 MOV BYTE PTR DS:[EAX+2],CL
006E7E27 81E2 FF000000 AND EDX,0FF
006E7E2D 0FB692 A8258000 MOVZX EDX,BYTE PTR DS:[EDX+8025A8]
006E7E34 32D3 XOR DL,BL
006E7E36 8850 03 MOV BYTE PTR DS:[EAX+3],DL
006E7E39 8B56 04 MOV EDX,DWORD PTR DS:[ESI+4]
006E7E3C 8BDA MOV EBX,EDX
006E7E3E C1FB 18 SAR EBX,18
006E7E41 329F A8258000 XOR BL,BYTE PTR DS:[EDI+8025A8]
006E7E47 0FB67D F2 MOVZX EDI,BYTE PTR SS:[EBP-E]
006E7E4B 8858 04 MOV BYTE PTR DS:[EAX+4],BL
006E7E4E 8BDA MOV EBX,EDX
006E7E50 C1FB 10 SAR EBX,10
006E7E53 329F A8258000 XOR BL,BYTE PTR DS:[EDI+8025A8]
006E7E59 0FB67D F9 MOVZX EDI,BYTE PTR SS:[EBP-7]
006E7E5D 8858 05 MOV BYTE PTR DS:[EAX+5],BL
006E7E60 8BDA MOV EBX,EDX
006E7E62 C1FB 08 SAR EBX,8
006E7E65 329F A8258000 XOR BL,BYTE PTR DS:[EDI+8025A8]
006E7E6B 8B7D F4 MOV EDI,DWORD PTR SS:[EBP-C]
006E7E6E 8858 06 MOV BYTE PTR DS:[EAX+6],BL
006E7E71 81E7 FF000000 AND EDI,0FF
006E7E77 0FB69F A8258000 MOVZX EBX,BYTE PTR DS:[EDI+8025A8]
006E7E7E 0FB67D F3 MOVZX EDI,BYTE PTR SS:[EBP-D]
006E7E82 32DA XOR BL,DL
006E7E84 8858 07 MOV BYTE PTR DS:[EAX+7],BL
006E7E87 8B56 08 MOV EDX,DWORD PTR DS:[ESI+8]
006E7E8A 8BDA MOV EBX,EDX
006E7E8C C1FB 18 SAR EBX,18
006E7E8F 329F A8258000 XOR BL,BYTE PTR DS:[EDI+8025A8]
006E7E95 0FB67D FA MOVZX EDI,BYTE PTR SS:[EBP-6]
006E7E99 8858 08 MOV BYTE PTR DS:[EAX+8],BL
006E7E9C 8BDA MOV EBX,EDX
006E7E9E C1FB 10 SAR EBX,10
006E7EA1 329F A8258000 XOR BL,BYTE PTR DS:[EDI+8025A8]
006E7EA7 0FB67D F5 MOVZX EDI,BYTE PTR SS:[EBP-B]
006E7EAB 8858 09 MOV BYTE PTR DS:[EAX+9],BL
006E7EAE 8BDA MOV EBX,EDX
006E7EB0 C1FB 08 SAR EBX,8
006E7EB3 329F A8258000 XOR BL,BYTE PTR DS:[EDI+8025A8]
006E7EB9 8B7D FC MOV EDI,DWORD PTR SS:[EBP-4]
006E7EBC 8858 0A MOV BYTE PTR DS:[EAX+A],BL
006E7EBF 81E7 FF000000 AND EDI,0FF
006E7EC5 0FB69F A8258000 MOVZX EBX,BYTE PTR DS:[EDI+8025A8]
006E7ECC 32DA XOR BL,DL
006E7ECE 8858 0B MOV BYTE PTR DS:[EAX+B],BL
006E7ED1 8B56 0C MOV EDX,DWORD PTR DS:[ESI+C]
006E7ED4 0FB675 FB MOVZX ESI,BYTE PTR SS:[EBP-5]
006E7ED8 8BDA MOV EBX,EDX
006E7EDA C1FB 18 SAR EBX,18
006E7EDD 329E A8258000 XOR BL,BYTE PTR DS:[ESI+8025A8]
006E7EE3 0FB675 F6 MOVZX ESI,BYTE PTR SS:[EBP-A]
006E7EE7 8858 0C MOV BYTE PTR DS:[EAX+C],BL
006E7EEA 8BDA MOV EBX,EDX
006E7EEC 8B4D 08 MOV ECX,DWORD PTR SS:[EBP+8]
006E7EEF C1FB 10 SAR EBX,10
006E7EF2 329E A8258000 XOR BL,BYTE PTR DS:[ESI+8025A8]
006E7EF8 0FB675 FD MOVZX ESI,BYTE PTR SS:[EBP-3]
006E7EFC 8858 0D MOV BYTE PTR DS:[EAX+D],BL
006E7EFF 8BDA MOV EBX,EDX
006E7F01 C1FB 08 SAR EBX,8
006E7F04 329E A8258000 XOR BL,BYTE PTR DS:[ESI+8025A8]
006E7F0A 81E1 FF000000 AND ECX,0FF
006E7F10 8858 0E MOV BYTE PTR DS:[EAX+E],BL
006E7F13 8A89 A8258000 MOV CL,BYTE PTR DS:[ECX+8025A8]
006E7F19 5E POP ESI
006E7F1A 32CA XOR CL,DL
006E7F1C 5B POP EBX
006E7F1D 8848 0F MOV BYTE PTR DS:[EAX+F],CL
006E7F20 33C0 XOR EAX,EAX
006E7F22 5F POP EDI
006E7F23 8BE5 MOV ESP,EBP
006E7F25 5D POP EBP
006E7F26 C2 0800 RETN 8