Thanks to Tom (AntiRush) for a lot of help on this one. 004C7FE0 /$ 66:8B4424 08 MOV AX,WORD PTR SS:[ESP+8] 004C7FE5 |. 53 PUSH EBX ; Preserves EBX 004C7FE6 |. 33DB XOR EBX,EBX 004C7FE8 |. 885E 02 MOV BYTE PTR DS:[ESI+2],BL 004C7FEB |. 885E 03 MOV BYTE PTR DS:[ESI+3],BL 004C7FEE |. 895E 04 MOV DWORD PTR DS:[ESI+4],EBX ; Empty? 004C7FF1 |. 66:895E 08 MOV WORD PTR DS:[ESI+8],BX 004C7FF5 |. 66:C746 0A 010>MOV WORD PTR DS:[ESI+A],1 ; Set to a constant, can I assume it's a flag of some kind? 004C7FFB |. 66:891E MOV WORD PTR DS:[ESI],BX 004C7FFE |. 66:8946 50 MOV WORD PTR DS:[ESI+50],AX struct UNKNOWN { UNKNOWN Member1; UNKNOWN Member2; UNKNOWN Member3; UNKNOWN Member4; UNKNOWN Member5; UNKNOWN Member6; UNKNOWN Member7; } 004C8002 |. 55 PUSH EBP 004C8003 |. 8B6C24 0C MOV EBP,DWORD PTR SS:[ESP+C] 004C8007 |. 895E 0C MOV DWORD PTR DS:[ESI+C],EBX 004C800A |. 895E 54 MOV DWORD PTR DS:[ESI+54],EBX 004C800D |. 885E 58 MOV BYTE PTR DS:[ESI+58],BL 004C8010 |. 8A11 MOV DL,BYTE PTR DS:[ECX] 004C8012 |. 80FA 01 CMP DL,1 004C8015 |. 8D46 10 LEA EAX,DWORD PTR DS:[ESI+10] 004C8018 |. 57 PUSH EDI 004C8019 |. 8D78 1E LEA EDI,DWORD PTR DS:[EAX+1E] 004C801C |. 75 0E JNZ SHORT magic1.004C802C 004C801E |. 6A 01 PUSH 1 ; /Arg3 = 00000001 004C8020 |. 57 PUSH EDI ; |Arg2 004C8021 |. 50 PUSH EAX ; |Arg1 004C8022 |. E8 D9720100 CALL magic1.004DF300 ; \magic1.004DF300 004C8027 |. 83C4 0C ADD ESP,0C 004C802A |. EB 18 JMP SHORT magic1.004C8044 004C802C |> 3AD3 CMP DL,BL 004C802E |. 74 12 JE SHORT magic1.004C8042 004C8030 |. 4F DEC EDI 004C8031 |. 2BC8 SUB ECX,EAX 004C8033 |> 3BC7 /CMP EAX,EDI 004C8035 |. 74 0B |JE SHORT magic1.004C8042 004C8037 |. 8810 |MOV BYTE PTR DS:[EAX],DL 004C8039 |. 8A5401 01 |MOV DL,BYTE PTR DS:[ECX+EAX+1] 004C803D |. 40 |INC EAX 004C803E |. 3AD3 |CMP DL,BL 004C8040 |.^75 F1 \JNZ SHORT magic1.004C8033 004C8042 |> 8818 MOV BYTE PTR DS:[EAX],BL 004C8044 |> 885E 2D MOV BYTE PTR DS:[ESI+2D],BL 004C8047 |. 8A4D 00 MOV CL,BYTE PTR SS:[EBP] 004C804A |. 80F9 01 CMP CL,1 004C804D |. 8D46 2E LEA EAX,DWORD PTR DS:[ESI+2E] 004C8050 |. 8D50 21 LEA EDX,DWORD PTR DS:[EAX+21] 004C8053 |. 75 19 JNZ SHORT magic1.004C806E 004C8055 |. 6A 01 PUSH 1 ; /Arg3 = 00000001 004C8057 |. 52 PUSH EDX ; |Arg2 004C8058 |. 50 PUSH EAX ; |Arg1 004C8059 |. 8BCD MOV ECX,EBP ; | 004C805B |. E8 A0720100 CALL magic1.004DF300 ; \magic1.004DF300 004C8060 |. 83C4 0C ADD ESP,0C 004C8063 |. 5F POP EDI 004C8064 |. 5D POP EBP 004C8065 |. 885E 4E MOV BYTE PTR DS:[ESI+4E],BL 004C8068 |. 8BC6 MOV EAX,ESI 004C806A |. 5B POP EBX 004C806B |. C2 0800 RETN 8 004C806E |> 3ACB CMP CL,BL 004C8070 |. 74 1D JE SHORT magic1.004C808F 004C8072 |. 8D7A FF LEA EDI,DWORD PTR DS:[EDX-1] 004C8075 |. 8BD5 MOV EDX,EBP 004C8077 |. 2BD0 SUB EDX,EAX 004C8079 |. 8DA424 0000000>LEA ESP,DWORD PTR SS:[ESP] 004C8080 |> 3BC7 /CMP EAX,EDI 004C8082 |. 74 0B |JE SHORT magic1.004C808F 004C8084 |. 8808 |MOV BYTE PTR DS:[EAX],CL 004C8086 |. 8A4C02 01 |MOV CL,BYTE PTR DS:[EDX+EAX+1] 004C808A |. 40 |INC EAX 004C808B |. 3ACB |CMP CL,BL 004C808D |.^75 F1 \JNZ SHORT magic1.004C8080 004C808F |> 5F POP EDI 004C8090 |. 8818 MOV BYTE PTR DS:[EAX],BL 004C8092 |. 5D POP EBP 004C8093 |. 885E 4E MOV BYTE PTR DS:[ESI+4E],BL 004C8096 |. 8BC6 MOV EAX,ESI 004C8098 |. 5B POP EBX 004C8099 \. C2 0800 RETN 8