Last active
August 28, 2021 17:17
-
-
Save msmuenchen/bbc7252138201ce72938f9af657807ed to your computer and use it in GitHub Desktop.
earthsiege2_es.exe_FUN_00401074
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
************************************************************** | |
* FUNCTION * | |
************************************************************** | |
char * __cdecl FUN_00401074(char * input, char * param_2) | |
char * EAX:4 <RETURN> XREF[1]: 00401091(RW) | |
char * Stack[0x4]:4 input | |
char * Stack[0x8]:4 param_2 XREF[1]: 0040108e(R) | |
FUN_00401074 | |
00401074 55 PUSH EBP | |
00401075 8b ec MOV EBP,ESP | |
00401077 53 PUSH EBX | |
00401078 56 PUSH ESI | |
00401079 57 PUSH EDI | |
0040107a 8b 5d 08 MOV EBX,dword ptr [EBP + 0x8] | |
startPos=(inputPtr[1]!=':')? 0 : 2 | |
0040107d be 02 00 MOV ESI,0x2 | |
00 00 | |
00401082 0f be 43 01 MOVSX EAX,byte ptr [EBX + 0x1] | |
00401086 83 f8 3a CMP EAX,0x3a | |
00401089 74 03 JZ LAB_0040108e | |
0040108b 83 c6 fe ADD ESI,-0x2 | |
LAB_0040108e XREF[1]: 00401089(j) | |
0040108e 8b 55 0c MOV EDX,dword ptr [EBP + param_2] | |
searchByte=0 | |
00401091 33 c0 XOR EAX,EAX | |
get startPos away, retrieved later 004010b6 | |
00401093 56 PUSH ESI | |
search beginning at param2 | |
00401094 8b fa MOV EDI,EDX | |
ECX= -1 | |
00401096 83 c9 ff OR ECX,-1 | |
get this one out of the way | |
00401099 be d0 36 MOV ESI,CHAR_ARRAY_004036d0 = ?? | |
40 00 | |
0040109e f2 ae SCASB.REPNE ES:EDI | |
004010a0 f7 d1 NOT ECX | |
after this, ECX should contain the string length of param2 | |
004010a2 2b f9 SUB EDI,ECX | |
004010a4 8b d1 MOV EDX,ECX | |
004010a6 87 f7 XCHG EDI,ESI | |
004010a8 c1 e9 02 SHR ECX,0x2 | |
004010ab 8b c7 MOV EAX,EDI | |
004010ad f3 a5 MOVSD.REP ES:EDI=>CHAR_ARRAY_004036d0,ESI = ?? | |
004010af 8b ca MOV ECX,EDX | |
004010b1 83 e1 03 AND ECX,0x3 | |
004010b4 f3 a4 MOVSB.REP ES:EDI=>CHAR_ARRAY_004036d0,ESI = ?? | |
004010b6 5e POP ESI | |
004010b7 03 f3 ADD ESI,EBX | |
004010b9 56 PUSH ESI | |
004010ba 68 d0 36 PUSH CHAR_ARRAY_004036d0 = ?? | |
40 00 | |
004010bf e8 a6 13 CALL CW3220.DLL::_strcat char * _strcat(char * _Dest, cha | |
00 00 | |
004010c4 83 c4 08 ADD ESP,0x8 | |
004010c7 b8 d0 36 MOV EAX=>CHAR_ARRAY_004036d0,CHAR_ARRAY_004036d0 = ?? | |
40 00 | |
004010cc 5f POP EDI | |
004010cd 5e POP ESI | |
004010ce 5b POP EBX | |
004010cf 5d POP EBP | |
004010d0 c3 RET |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
char * __cdecl FUN_00401074(char *input,char *param_2) | |
{ | |
char cVar1; | |
int uVar2; | |
uint uVar3; | |
uint uVar4; | |
int startPos; | |
char *puVar6; | |
char *pcVar5; | |
char *puVar7; | |
startPos = 2; | |
if (input[1] != ':') { | |
startPos = 0; | |
} | |
uVar2 = -1; | |
do { | |
pcVar5 = param_2; | |
if (uVar2 == 0) break; | |
uVar2 = uVar2 - 1; | |
pcVar5 = param_2 + 1; | |
cVar1 = *param_2; | |
param_2 = pcVar5; | |
} while (cVar1 != '\0'); | |
uVar3 = ~uVar2; | |
puVar6 = pcVar5 + -uVar3; | |
puVar7 = CHAR_ARRAY_004036d0; | |
for (uVar4 = uVar3 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { | |
*(undefined4 *)puVar7 = *(undefined4 *)puVar6; | |
puVar6 = (char *)((int)puVar6 + 4); | |
puVar7 = (char *)((int)puVar7 + 4); | |
} | |
for (uVar3 = uVar3 & 3; uVar3 != 0; uVar3 = uVar3 - 1) { | |
*puVar7 = *puVar6; | |
puVar6 = puVar6 + 1; | |
puVar7 = puVar7 + 1; | |
} | |
_strcat(CHAR_ARRAY_004036d0,input + startPos); | |
return CHAR_ARRAY_004036d0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment