Function at 0x100392b0
Capabilities:
Check if file exists
Get file attributes
Query environment variable
Query or enumerate registry value
Read .ini file
Set environment variable

Disassembly:
mov eax, dword [esp + 8]
sub esp, 0x818
test eax, eax
push ebx
push ebp
push esi
push edi
je case.0x10039604.26
mov eax, dword [esp + 0x834]
test eax, eax
je case.0x10039604.26
mov edi, str.SCVSys.ini
or ecx, 0xffffffff
xor eax, eax
mov ebp, 0x103
repne scasb al, byte es:[edi]
not ecx
dec ecx
lea eax, [esp + 0x620]
sub ebp, ecx
test eax, eax
je 0x1003961c
test ebp, ebp
je 0x1003961c
lea ecx, [esp + 0x620]
push ebp
push ecx
push str.SKYSEA_INSTDIR
call dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableA]
mov ebx, dword [sym.imp.MSVCRT.dll__mbsrchr]
test eax, eax
jne 0x10039574
lea edx, [esp + 0x11c]
push 0x104
push edx
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
test eax, eax
jne 0x1003936e
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edi, 0x100a2820
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x11c]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp 0x10039385
lea ecx, [esp + 0x11c]
push 0x5c
push ecx
call ebx
add esp, 8
test eax, eax
je 0x10039385
mov byte [eax + 1], 0
lea edx, [esp + 0x11c]
push edx
call dword [sym.imp.SHLWAPI.dll_PathIsNetworkPathA]
test eax, eax
jne 0x10039461
lea edi, [esp + 0x11c]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x724]
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x724]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, str.SCVSys.ini
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea eax, [esp + 0x724]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x10039461
lea edi, [esp + 0x11c]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
cmp ecx, ebp
jg 0x1003961c
lea edi, [esp + 0x11c]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x620]
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x620]
push ecx
push str.SKYSEA_INSTDIR
call dword [sym.imp.KERNEL32.dll_SetEnvironmentVariableA]
jmp 0x10039574
mov dl, byte [0x100aba18]
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x19]
mov byte [esp + 0x18], dl
lea edx, [esp + 0x18]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
or ecx, 0xffffffff
mov edi, str.SOFTWARESky_ProductSKYSEAClientView
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
shr ecx, 2
mov edi, edx
lea edx, [esp + 0x18]
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
mov dword [esp + 0x10], eax
rep movsb byte es:[edi], byte [esi]
mov edi, 0x100a27e8
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea edx, [esp + 0x18]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, str.ScvInst
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea eax, [esp + 0x10]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
push 1
lea ecx, [esp + 0x20]
push 0
push ecx
push reloc.WS2_32.dll_bind
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
mov esi, eax
test esi, esi
jne 0x1003955d
mov ecx, dword [esp + 0x10]
lea edx, [esp + 0x14]
lea eax, [esp + 0x620]
push edx
push eax
push esi
push esi
push str.SCVDIR
push ecx
mov dword [esp + 0x2c], ebp
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
mov esi, eax
test esi, esi
jne 0x1003955d
lea edi, [esp + 0x620]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
jne 0x1003955d
mov esi, 0xd
mov eax, dword [esp + 0x10]
test eax, eax
je 0x1003956c
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test esi, esi
jne 0x1003961c
lea edx, [esp + 0x620]
push 0x5c
push edx
call ebx
add esp, 8
test eax, eax
je 0x1003961c
mov cl, byte [eax + 1]
test cl, cl
je 0x100395c3
mov edi, 0x100a27e8
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x620]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebx, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, str.SCVSys.ini
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x620]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebx, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
mov ebx, dword [esp + 0x82c]
and ecx, 3
cmp ebx, 0x2c
rep movsb byte es:[edi], byte [esi]
ja case.0x10039604.26
jmp dword [ebx*4 + 0x10039e48]
lea edx, [esp + 0x220]
mov edi, str.DBRootLog
jmp 0x10039914
pop edi
pop esi
pop ebp
mov eax, 3
pop ebx
add esp, 0x818
ret 0x10
lea edx, [esp + 0x220]
mov edi, str.DBRoot
jmp 0x10039914
lea edx, [esp + 0x220]
mov edi, str.DBRootHoData
jmp 0x10039914
lea edx, [esp + 0x220]
mov edi, str.DBRootHoIndex
jmp 0x10039914
lea edx, [esp + 0x220]
mov edi, str.DBRootAsData
jmp 0x10039914
lea edx, [esp + 0x220]
mov edi, str.MasterDB
jmp 0x10039914
lea edx, [esp + 0x220]
mov edi, str.CabData
jmp 0x10039914
lea edx, [esp + 0x220]
mov edi, str.AnalysisDB
jmp 0x10039914
lea edx, [esp + 0x220]
mov edi, str.LogAgrtDB
jmp 0x10039914
lea edx, [esp + 0x220]
mov edi, str.LogDB
jmp 0x10039914
lea edx, [esp + 0x220]
mov edi, str.LogCache
jmp 0x10039914
lea edx, [esp + 0x220]
mov edi, str.RecData
jmp 0x10039914
mov ecx, dword [esp + 0x838]
lea edx, [esp + 0x220]
push ecx
push str.HSSSvrDB
push str._s__d
push edx
call dword [sym.imp.MSVCRT.dll_sprintf]
add esp, 0x10
jmp 0x10039931
lea eax, [esp + 0x220]
push str.HssData
push eax
call dword [sym.imp.MSVCRT.dll_sprintf]
add esp, 8
jmp 0x10039931
lea ecx, [esp + 0x220]
push str.HssIndex
push ecx
call dword [sym.imp.MSVCRT.dll_sprintf]
add esp, 8
jmp 0x10039931
lea edx, [esp + 0x220]
mov edi, str.LayoutCache
jmp 0x10039914
lea edx, [esp + 0x220]
mov edi, str.LOGDIR
jmp 0x10039914
lea edx, [esp + 0x220]
mov edi, str.REPORTDIR
jmp 0x10039914
lea edx, [esp + 0x220]
mov edi, str.TMPDIR
jmp 0x10039914
lea edx, [esp + 0x220]
mov edi, str.AstExDB
jmp 0x10039914
lea edx, [esp + 0x220]
mov edi, str.AstExTmp
jmp 0x10039914
lea edx, [esp + 0x220]
mov edi, str.SQLMasterDB
jmp 0x10039914
lea edx, [esp + 0x220]
mov edi, str.SQLAstExDB
jmp 0x10039914
lea edx, [esp + 0x220]
mov edi, str.SQLSamDB
jmp 0x10039914
lea edx, [esp + 0x220]
mov edi, str.SQLIncidentDB
jmp 0x10039914
lea edx, [esp + 0x220]
mov edi, str.SQLIdAuditDB
jmp 0x10039914
lea edx, [esp + 0x220]
mov edi, str.SQLIPMngDB
jmp 0x10039914
lea edx, [esp + 0x220]
mov edi, str.EvtLogDB
jmp 0x10039914
lea edx, [esp + 0x220]
mov edi, str.EvtLogDB_upd
jmp 0x10039914
lea edx, [esp + 0x220]
mov edi, str.Coordination
jmp 0x10039914
lea edx, [esp + 0x220]
mov edi, str.DevSet
jmp 0x10039914
lea edx, [esp + 0x220]
mov edi, str.ScvLogAltDB
jmp 0x10039914
lea edx, [esp + 0x220]
mov edi, str.RepGenData
jmp 0x10039914
lea edx, [esp + 0x220]
mov edi, str.AstSnpDB
jmp 0x10039914
lea edx, [esp + 0x220]
mov edi, str.SubLogDB
jmp 0x10039914
lea edx, [esp + 0x220]
mov edi, str.UsrOprTrendDB
jmp 0x10039914
lea edx, [esp + 0x220]
mov edi, str.DiskMntData
jmp 0x10039914
lea edx, [esp + 0x220]
mov edi, str.SQLAgentGroupDB
jmp 0x10039914
lea edx, [esp + 0x220]
mov edi, str.SQLGtoGDB
jmp 0x10039914
lea edx, [esp + 0x220]
mov edi, str.ProductUpdate
jmp 0x10039914
lea edx, [esp + 0x220]
mov edi, str.SQLCPEDB
jmp 0x10039914
lea edx, [esp + 0x220]
mov edi, str.SQLSWTDB
jmp 0x10039914
lea edx, [esp + 0x220]
mov edi, str.SQLEnqueteDB
jmp 0x10039914
lea edx, [esp + 0x220]
mov edi, str.SQLAssetsHistoryDB
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edx, dword [esp + 0x834]
mov eax, dword [esp + 0x830]
lea ecx, [esp + 0x620]
push ecx
push edx
push eax
lea ecx, [esp + 0x22c]
push 0x100aba18
push ecx
push str.PATH
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
test eax, eax
ja 0x10039e24
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ebp, eax
test ebp, ebp
jne 0x1003997a
mov ebp, 0x10d2
cmp ebx, 0xa
je 0x100399ad
test ebx, ebx
je 0x100399ad
cmp ebx, 0xb
je 0x10039996
cmp ebx, 0xc
je 0x10039996
cmp ebx, 0x10
jne 0x10039b53
test ebx, ebx
je 0x100399ad
cmp ebx, 0xb
je 0x100399ad
cmp ebx, 0xc
je 0x100399ad
cmp ebx, 0x10
jne 0x10039b4c
mov eax, dword [esp + 0x834]
test eax, eax
jle 0x10039b4c
mov dl, byte [0x100aba18]
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x19]
mov byte [esp + 0x18], dl
lea edx, [esp + 0x18]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
or ecx, 0xffffffff
mov edi, str.SOFTWARESky_ProductSKYSEAClientView
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
shr ecx, 2
mov edi, edx
lea edx, [esp + 0x18]
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
mov dword [esp + 0x14], eax
rep movsb byte es:[edi], byte [esi]
mov edi, 0x100a27e8
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebp, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebp
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebp
lea edx, [esp + 0x18]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, str.ScvInst
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebp, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebp
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebp
lea eax, [esp + 0x14]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
push 1
lea ecx, [esp + 0x20]
push 0
push ecx
push reloc.WS2_32.dll_bind
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
mov esi, eax
test esi, esi
jne 0x10039b51
mov edx, dword [esp + 0x834]
cmp ebx, 0xa
mov dword [esp + 0x10], edx
jne 0x10039aa3
mov ecx, dword [esp + 0x830]
lea eax, [esp + 0x10]
push eax
push ecx
push esi
push esi
push str.ScvDBRootLog
jmp 0x10039b12
test ebx, ebx
jne 0x10039abd
mov ecx, dword [esp + 0x830]
lea eax, [esp + 0x10]
push eax
push ecx
push ebx
push ebx
push str.ScvDBRoot
jmp 0x10039b12
cmp ebx, 0xb
jne 0x10039ada
mov ecx, dword [esp + 0x830]
lea eax, [esp + 0x10]
push eax
push ecx
push 0
push 0
push str.ScvDBRootHoData
jmp 0x10039b12
cmp ebx, 0xc
jne 0x10039af7
mov ecx, dword [esp + 0x830]
lea eax, [esp + 0x10]
push eax
push ecx
push 0
push 0
push str.ScvDBRootHoIndex
jmp 0x10039b12
cmp ebx, 0x10
jne 0x10039b23
mov ecx, dword [esp + 0x830]
lea eax, [esp + 0x10]
push eax
push ecx
push 0
push 0
push str.ScvDBRootAsData
mov edx, dword [esp + 0x28]
push edx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
mov esi, eax
test esi, esi
jne 0x10039b3b
mov edi, dword [esp + 0x830]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
jne 0x10039b3b
mov esi, 0xd
mov eax, dword [esp + 0x14]
test eax, eax
je 0x10039b51
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x10039b51
mov esi, 0x57
mov ebp, esi
cmp ebx, 9
jne 0x10039e26
mov eax, dword [esp + 0x834]
mov ecx, dword [esp + 0x830]
push eax
push ecx
push str.SKYSEA_INSTDIR
call dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableA]
test eax, eax
je 0x10039b82
xor esi, esi
jmp 0x10039dd7
lea edx, [esp + 0x11c]
push 0x104
push edx
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
test eax, eax
jne 0x10039bcc
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edi, 0x100a2820
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x11c]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp 0x10039be7
lea ecx, [esp + 0x11c]
push 0x5c
push ecx
call dword [sym.imp.MSVCRT.dll__mbsrchr]
add esp, 8
test eax, eax
je 0x10039be7
mov byte [eax + 1], 0
lea edx, [esp + 0x11c]
push edx
call dword [sym.imp.SHLWAPI.dll_PathIsNetworkPathA]
test eax, eax
jne 0x10039ccd
lea edi, [esp + 0x11c]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x724]
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x724]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, str.SCVSys.ini
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebx, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
lea eax, [esp + 0x724]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x10039ccd
lea edi, [esp + 0x11c]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
mov eax, dword [esp + 0x834]
not ecx
cmp ecx, eax
jle 0x10039c8f
mov esi, 0xea
jmp 0x10039dd7
lea edi, [esp + 0x11c]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
mov eax, dword [esp + 0x830]
not ecx
sub edi, ecx
push eax
mov edx, ecx
mov esi, edi
mov edi, eax
push str.SKYSEA_INSTDIR
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
call dword [sym.imp.KERNEL32.dll_SetEnvironmentVariableA]
xor esi, esi
jmp 0x10039dd7
mov al, byte [0x100aba18]
mov ecx, 0x40
mov byte [esp + 0x18], al
xor eax, eax
lea edi, [esp + 0x19]
lea edx, [esp + 0x18]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
or ecx, 0xffffffff
mov edi, str.SOFTWARESky_ProductSKYSEAClientView
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
shr ecx, 2
mov edi, edx
lea edx, [esp + 0x18]
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
mov dword [esp + 0x10], eax
rep movsb byte es:[edi], byte [esi]
mov edi, 0x100a27e8
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebx, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
lea edx, [esp + 0x18]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, str.ScvInst
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebx, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
lea eax, [esp + 0x10]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
push 1
lea ecx, [esp + 0x20]
push 0
push ecx
push reloc.WS2_32.dll_bind
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
mov esi, eax
test esi, esi
jne 0x10039dc8
mov edi, dword [esp + 0x830]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x834]
lea eax, [esp + 0x14]
push eax
push edi
push esi
push esi
push str.SCVDIR
push ecx
mov dword [esp + 0x2c], edx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
mov esi, eax
test esi, esi
jne 0x10039dc8
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
jne 0x10039dc8
mov esi, 0xd
mov eax, dword [esp + 0x10]
test eax, eax
je 0x10039dd7
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test esi, esi
mov ebp, esi
jne 0x10039e26
mov ebx, dword [esp + 0x830]
push ebx
call dword [sym.imp.SHLWAPI.dll_PathAddBackslashA]
mov edi, 0x100a821c
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edx, ecx
mov edi, ebx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
mov eax, ebp
and ecx, 3
rep movsb byte es:[edi], byte [esi]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x818
ret 0x10
xor ebp, ebp
pop edi
mov eax, ebp
pop esi
pop ebp
pop ebx
add esp, 0x818
ret 0x10
pop edi
pop esi
pop ebp
mov eax, 0x57
pop ebx
add esp, 0x818
ret 0x10