Results 1 to 3 of 3
  1. #1
    ash1m4's Avatar
    Join Date
    Sep 2012
    Gender
    male
    Location
    Infiltrating AERIA HQ
    Posts
    246
    Reputation
    10
    Thanks
    455
    My Mood
    Daring

    Bypass suspender

    Code:


    FUNC _MEMORYOPEN($IV_PID, $IV_DESIREDACCESS = 2035711, $IV_INHERITHANDLE = 1)
    IF NOT PROCESSEXISTS($IV_PID) THEN
    SETERROR(1)
    RETURN 0
    ENDIF
    LOCAL $AH_HANDLE[2] = [DLLOPEN("kernel32.dll")]
    IF @error THEN
    SETERROR(2)
    RETURN 0
    ENDIF
    LOCAL $AV_OPENPROCESS = DLLCALL($AH_HANDLE[0], "int", "OpenProcess", "int", $IV_DESIREDACCESS, "int", $IV_INHERITHANDLE, "int", $IV_PID)
    IF @error THEN
    DLLCLOSE($AH_HANDLE[0])
    SETERROR(3)
    RETURN 0
    ENDIF
    $AH_HANDLE[1] = $AV_OPENPROCESS[0]
    RETURN $AH_HANDLE
    ENDFUNC ;==>_MEMORYOPEN
    FUNC _MEMORYREAD($IV_ADDRESS, $AH_HANDLE, $SV_TYPE = "dword")
    IF NOT ISARRAY($AH_HANDLE) THEN
    SETERROR(1)
    RETURN 0
    ENDIF
    LOCAL $V_BUFFER = DLLSTRUCTCREATE($SV_TYPE)
    IF @error THEN
    SETERROR @error + 1)
    RETURN 0
    ENDIF
    DLLCALL($AH_HANDLE[0], "int", "ReadProcessMemory", "int", $AH_HANDLE[1], "int", $IV_ADDRESS, "ptr", DLLSTRUCTGETPTR($V_BUFFER), "int", DLLSTRUCTGETSIZE($V_BUFFER), "int", "")
    IF NOT @error THEN
    LOCAL $V_VALUE = DLLSTRUCTGETDATA($V_BUFFER, 1)
    RETURN $V_VALUE
    ELSE
    SETERROR(6)
    RETURN 0
    ENDIF
    ENDFUNC ;==>_MEMORYREAD
    FUNC _MEMORYWRITE($IV_ADDRESS, $AH_HANDLE, $V_DATA, $SV_TYPE = "dword")
    IF NOT ISARRAY($AH_HANDLE) THEN
    SETERROR(1)
    RETURN 0
    ENDIF
    LOCAL $V_BUFFER = DLLSTRUCTCREATE($SV_TYPE)
    IF @error THEN
    SETERROR @error + 1)
    RETURN 0
    ELSE
    DLLSTRUCTSETDATA($V_BUFFER, 1, $V_DATA)
    IF @error THEN
    SETERROR(6)
    RETURN 0
    ENDIF
    ENDIF
    DLLCALL($AH_HANDLE[0], "int", "WriteProcessMemory", "int", $AH_HANDLE[1], "int", $IV_ADDRESS, "ptr", DLLSTRUCTGETPTR($V_BUFFER), "int", DLLSTRUCTGETSIZE($V_BUFFER), "int", "")
    IF NOT @error THEN
    RETURN 1
    ELSE
    SETERROR(7)
    RETURN 0
    ENDIF
    ENDFUNC ;==>_MEMORYWRITE
    FUNC _MEMORYCLOSE($AH_HANDLE)
    IF NOT ISARRAY($AH_HANDLE) THEN
    SETERROR(1)
    RETURN 0
    ENDIF
    DLLCALL($AH_HANDLE[0], "int", "CloseHandle", "int", $AH_HANDLE[1])
    IF NOT @error THEN
    DLLCLOSE($AH_HANDLE[0])
    RETURN 1
    ELSE
    DLLCLOSE($AH_HANDLE[0])
    SETERROR(2)
    RETURN 0
    ENDIF
    ENDFUNC ;==>_MEMORYCLOSE
    FUNC SETPRIVILEGE($PRIVILEGE, $BENABLE)
    CONST $TOKEN_ADJUST_PRIVILEGES = 32
    CONST $TOKEN_QUERY = 8
    CONST $SE_PRIVILEGE_ENABLED = 2
    LOCAL $HTOKEN, $SP_AUXRET, $SP_RET, $HCURRPROCESS, $NTOKENS, $NTOKENINDEX, $PRIV
    $NTOKENS = 1
    $LUID = DLLSTRUCTCREATE("dword;int")
    IF ISARRAY($PRIVILEGE) THEN $NTOKENS = UBOUND($PRIVILEGE)
    $TOKEN_PRIVILEGES = DLLSTRUCTCREATE("dword;dword[" & (3 * $NTOKENS) & "]")
    $NEWTOKEN_PRIVILEGES = DLLSTRUCTCREATE("dword;dword[" & (3 * $NTOKENS) & "]")
    $HCURRPROCESS = DLLCALL("kernel32.dll", "hwnd", "GetCurrentProcess")
    $SP_AUXRET = DLLCALL("advapi32.dll", "int", "OpenProcessToken", "hwnd", $HCURRPROCESS[0], "int", BITOR($TOKEN_ADJUST_PRIVILEGES, $TOKEN_QUERY), "int*", 0)
    IF $SP_AUXRET[0] THEN
    $HTOKEN = $SP_AUXRET[3]
    DLLSTRUCTSETDATA($TOKEN_PRIVILEGES, 1, 1)
    $NTOKENINDEX = 1
    WHILE $NTOKENINDEX <= $NTOKENS
    IF ISARRAY($PRIVILEGE) THEN
    $PRIV = $PRIVILEGE[$NTOKENINDEX - 1]
    ELSE
    $PRIV = $PRIVILEGE
    ENDIF
    $RET = DLLCALL("advapi32.dll", "int", "LookupPrivilegeValue", "str", "", "str", $PRIV, "ptr", DLLSTRUCTGETPTR($LUID))
    IF $RET[0] THEN
    IF $BENABLE THEN
    DLLSTRUCTSETDATA($TOKEN_PRIVILEGES, 2, $SE_PRIVILEGE_ENABLED, (3 * $NTOKENINDEX))
    ELSE
    DLLSTRUCTSETDATA($TOKEN_PRIVILEGES, 2, 0, (3 * $NTOKENINDEX))
    ENDIF
    DLLSTRUCTSETDATA($TOKEN_PRIVILEGES, 2, DLLSTRUCTGETDATA($LUID, 1), (3 * ($NTOKENINDEX - 1)) + 1)
    DLLSTRUCTSETDATA($TOKEN_PRIVILEGES, 2, DLLSTRUCTGETDATA($LUID, 2), (3 * ($NTOKENINDEX - 1)) + 2)
    DLLSTRUCTSETDATA($LUID, 1, 0)
    DLLSTRUCTSETDATA($LUID, 2, 0)
    ENDIF
    $NTOKENINDEX += 1
    WEND
    $RET = DLLCALL("advapi32.dll", "int", "AdjustTokenPrivileges", "hwnd", $HTOKEN, "int", 0, "ptr", DLLSTRUCTGETPTR($TOKEN_PRIVILEGES), "int", DLLSTRUCTGETSIZE($NEWTOKEN_PRIVILEGES), "ptr", DLLSTRUCTGETPTR($NEWTOKEN_PRIVILEGES), "int*", 0)
    $F = DLLCALL("kernel32.dll", "int", "GetLastError")
    ENDIF
    $NEWTOKEN_PRIVILEGES = 0
    $TOKEN_PRIVILEGES = 0
    $LUID = 0
    IF $SP_AUXRET[0] = 0 THEN RETURN 0
    $SP_AUXRET = DLLCALL("kernel32.dll", "int", "CloseHandle", "hwnd", $HTOKEN)
    IF NOT $RET[0] AND NOT $SP_AUXRET[0] THEN RETURN 0
    RETURN $RET[0]
    ENDFUNC ;==>SETPRIVILEGE
    FUNC _MEMORYPOINTERREAD($IV_ADDRESS, $AH_HANDLE, $AV_OFFSET, $SV_TYPE = "dword")
    IF ISARRAY($AV_OFFSET) THEN
    IF ISARRAY($AH_HANDLE) THEN
    LOCAL $IV_POINTERCOUNT = UBOUND($AV_OFFSET) - 1
    ELSE
    SETERROR(2)
    RETURN 0
    ENDIF
    ELSE
    SETERROR(1)
    RETURN 0
    ENDIF
    LOCAL $IV_DATA[2], $I
    LOCAL $V_BUFFER = DLLSTRUCTCREATE("dword")
    FOR $I = 0 TO $IV_POINTERCOUNT
    IF $I = $IV_POINTERCOUNT THEN
    $V_BUFFER = DLLSTRUCTCREATE($SV_TYPE)
    IF @error THEN
    SETERROR @error + 2)
    RETURN 0
    ENDIF
    $IV_ADDRESS = "0x" & HEX($IV_DATA[1] + $AV_OFFSET[$I])
    DLLCALL($AH_HANDLE[0], "int", "ReadProcessMemory", "int", $AH_HANDLE[1], "int", $IV_ADDRESS, "ptr", DLLSTRUCTGETPTR($V_BUFFER), "int", DLLSTRUCTGETSIZE($V_BUFFER), "int", "")
    IF @error THEN
    SETERROR(7)
    RETURN 0
    ENDIF
    $IV_DATA[1] = DLLSTRUCTGETDATA($V_BUFFER, 1)
    ELSEIF $I = 0 THEN
    DLLCALL($AH_HANDLE[0], "int", "ReadProcessMemory", "int", $AH_HANDLE[1], "int", $IV_ADDRESS, "ptr", DLLSTRUCTGETPTR($V_BUFFER), "int", DLLSTRUCTGETSIZE($V_BUFFER), "int", "")
    IF @error THEN
    SETERROR(7)
    RETURN 0
    ENDIF
    $IV_DATA[1] = DLLSTRUCTGETDATA($V_BUFFER, 1)
    ELSE
    $IV_ADDRESS = "0x" & HEX($IV_DATA[1] + $AV_OFFSET[$I])
    DLLCALL($AH_HANDLE[0], "int", "ReadProcessMemory", "int", $AH_HANDLE[1], "int", $IV_ADDRESS, "ptr", DLLSTRUCTGETPTR($V_BUFFER), "int", DLLSTRUCTGETSIZE($V_BUFFER), "int", "")
    IF @error THEN
    SETERROR(7)
    RETURN 0
    ENDIF
    $IV_DATA[1] = DLLSTRUCTGETDATA($V_BUFFER, 1)
    ENDIF
    NEXT
    $IV_DATA[0] = $IV_ADDRESS
    RETURN $IV_DATA
    ENDFUNC ;==>_MEMORYPOINTERREAD
    FUNC _MEMORYPOINTERWRITE($IV_ADDRESS, $AH_HANDLE, $AV_OFFSET, $V_DATA, $SV_TYPE = "dword")
    IF ISARRAY($AV_OFFSET) THEN
    IF ISARRAY($AH_HANDLE) THEN
    LOCAL $IV_POINTERCOUNT = UBOUND($AV_OFFSET) - 1
    ELSE
    SETERROR(2)
    RETURN 0
    ENDIF
    ELSE
    SETERROR(1)
    RETURN 0
    ENDIF
    LOCAL $IV_STRUCTDATA, $I
    LOCAL $V_BUFFER = DLLSTRUCTCREATE("dword")
    FOR $I = 0 TO $IV_POINTERCOUNT
    IF $I = $IV_POINTERCOUNT THEN
    $V_BUFFER = DLLSTRUCTCREATE($SV_TYPE)
    IF @error THEN
    SETERROR @error + 3)
    RETURN 0
    ENDIF
    DLLSTRUCTSETDATA($V_BUFFER, 1, $V_DATA)
    IF @error THEN
    SETERROR(8)
    RETURN 0
    ENDIF
    $IV_ADDRESS = "0x" & HEX($IV_STRUCTDATA + $AV_OFFSET[$I])
    DLLCALL($AH_HANDLE[0], "int", "WriteProcessMemory", "int", $AH_HANDLE[1], "int", $IV_ADDRESS, "ptr", DLLSTRUCTGETPTR($V_BUFFER), "int", DLLSTRUCTGETSIZE($V_BUFFER), "int", "")
    IF @error THEN
    SETERROR(9)
    RETURN 0
    ELSE
    RETURN $IV_ADDRESS
    ENDIF
    ELSEIF $I = 0 THEN
    DLLCALL($AH_HANDLE[0], "int", "ReadProcessMemory", "int", $AH_HANDLE[1], "int", $IV_ADDRESS, "ptr", DLLSTRUCTGETPTR($V_BUFFER), "int", DLLSTRUCTGETSIZE($V_BUFFER), "int", "")
    IF @error THEN
    SETERROR(3)
    RETURN 0
    ENDIF
    $IV_STRUCTDATA = DLLSTRUCTGETDATA($V_BUFFER, 1)
    ELSE
    $IV_ADDRESS = "0x" & HEX($IV_STRUCTDATA + $AV_OFFSET[$I])
    DLLCALL($AH_HANDLE[0], "int", "ReadProcessMemory", "int", $AH_HANDLE[1], "int", $IV_ADDRESS, "ptr", DLLSTRUCTGETPTR($V_BUFFER), "int", DLLSTRUCTGETSIZE($V_BUFFER), "int", "")
    IF @error THEN
    SETERROR(3)
    RETURN 0
    ENDIF
    $IV_STRUCTDATA = DLLSTRUCTGETDATA($V_BUFFER, 1)
    ENDIF
    NEXT
    ENDFUNC ;==>_MEMORYPOINTERWRITE
    FUNC _MEMORYGETBASEADDRESS($AH_HANDLE, $IHEXDEC = 0)
    LOCAL $IV_ADDRESS = 1048576
    LOCAL $V_BUFFER = DLLSTRUCTCREATE("dword;dword;dword;dword;dword;dwo rd;dword")
    LOCAL $VDATA
    LOCAL $VTYPE
    IF NOT ISARRAY($AH_HANDLE) THEN
    SETERROR(1)
    RETURN 0
    ENDIF
    DLLCALL($AH_HANDLE[0], "int", "VirtualQueryEx", "int", $AH_HANDLE[1], "int", $IV_ADDRESS, "ptr", DLLSTRUCTGETPTR($V_BUFFER), "int", DLLSTRUCTGETSIZE($V_BUFFER))
    IF NOT @error THEN
    $VDATA = HEX( DLLSTRUCTGETDATA($V_BUFFER, 2))
    $VTYPE = HEX( DLLSTRUCTGETDATA($V_BUFFER, 3))
    WHILE $VTYPE <> "00000080"
    DLLCALL($AH_HANDLE[0], "int", "VirtualQueryEx", "int", $AH_HANDLE[1], "int", $IV_ADDRESS, "ptr", DLLSTRUCTGETPTR($V_BUFFER), "int", DLLSTRUCTGETSIZE($V_BUFFER))
    $VDATA = HEX( DLLSTRUCTGETDATA($V_BUFFER, 2))
    $VTYPE = HEX( DLLSTRUCTGETDATA($V_BUFFER, 3))
    IF HEX($IV_ADDRESS) = "01000000" THEN EXITLOOP
    $IV_ADDRESS += 65536
    WEND
    IF $VTYPE = "00000080" THEN
    SETERROR(0)
    IF $IHEXDEC = 1 THEN
    RETURN DEC($VDATA)
    ELSE
    RETURN $VDATA
    ENDIF
    ELSE
    SETERROR(2)
    RETURN 0
    ENDIF
    ELSE
    SETERROR(3)
    RETURN 0
    ENDIF
    ENDFUNC ;==>_MEMORYGETBASEADDRESS
    #EndRegion
    FUNC _STRINGEXPLODE($SSTRING, $SDELIMITER, $ILIMIT = 0)
    IF $ILIMIT > 0 THEN
    $SSTRING = STRINGREPLACE($SSTRING, $SDELIMITER, CHR(0), $ILIMIT)
    $SDELIMITER = CHR(0)
    ELSEIF $ILIMIT < 0 THEN
    LOCAL $IINDEX = STRINGINSTR($SSTRING, $SDELIMITER, 0, $ILIMIT)
    IF $IINDEX THEN
    $SSTRING = STRINGLEFT($SSTRING, $IINDEX - 1)
    ENDIF
    ENDIF
    RETURN STRINGSPLIT($SSTRING, $SDELIMITER, 3)
    ENDFUNC ;==>_STRINGEXPLODE
    FUNC _STRINGINSERT($S_STRING, $S_INSERTSTRING, $I_POSITION)
    LOCAL $I_LENGTH, $S_START, $S_END
    IF $S_STRING = "" OR(NOT ISSTRING($S_STRING)) THEN
    RETURN SETERROR(1, 0, $S_STRING)
    ELSEIF $S_INSERTSTRING = "" OR(NOT ISSTRING($S_STRING)) THEN
    RETURN SETERROR(2, 0, $S_STRING)
    ELSE
    $I_LENGTH = STRINGLEN($S_STRING)
    IF( ABS($I_POSITION) > $I_LENGTH) OR(NOT ISINT($I_POSITION)) THEN
    RETURN SETERROR(3, 0, $S_STRING)
    ENDIF
    ENDIF
    IF $I_POSITION = 0 THEN
    RETURN $S_INSERTSTRING & $S_STRING
    ELSEIF $I_POSITION > 0 THEN
    $S_START = STRINGLEFT($S_STRING, $I_POSITION)
    $S_END = STRINGRIGHT($S_STRING, $I_LENGTH - $I_POSITION)
    RETURN $S_START & $S_INSERTSTRING & $S_END
    ELSEIF $I_POSITION < 0 THEN
    $S_START = STRINGLEFT($S_STRING, ABS($I_LENGTH + $I_POSITION))
    $S_END = STRINGRIGHT($S_STRING, ABS($I_POSITION))
    RETURN $S_START & $S_INSERTSTRING & $S_END
    ENDIF
    ENDFUNC ;==>_STRINGINSERT
    FUNC _STRINGPROPER($S_STRING)
    LOCAL $IX = 0
    LOCAL $CAPNEXT = 1
    LOCAL $S_NSTR = ""
    LOCAL $S_CURCHAR
    FOR $IX = 1 TO STRINGLEN($S_STRING)
    $S_CURCHAR = STRINGMID($S_STRING, $IX, 1)
    SELECT
    CASE $CAPNEXT = 1
    IF STRINGREGEXP($S_CURCHAR, "[a-zA-Z¬-óŮÔ]") THEN
    $S_CURCHAR = STRINGUPPER($S_CURCHAR)
    $CAPNEXT = 0
    ENDIF
    CASE NOT STRINGREGEXP($S_CURCHAR, "[a-zA-Z¬-óŮÔ]")
    $CAPNEXT = 1
    CASE ELSE
    $S_CURCHAR = STRINGLOWER($S_CURCHAR)
    ENDSELECT
    $S_NSTR &= $S_CURCHAR
    NEXT
    RETURN $S_NSTR
    ENDFUNC ;==>_STRINGPROPER
    FUNC _STRINGREPEAT($SSTRING, $IREPEATCOUNT)
    LOCAL $SRESULT
    SELECT
    CASE NOT STRINGISINT($IREPEATCOUNT)
    SETERROR(1)
    RETURN ""
    CASE STRINGLEN($SSTRING) < 1
    SETERROR(1)
    RETURN ""
    CASE $IREPEATCOUNT <= 0
    SETERROR(1)
    RETURN ""
    CASE ELSE
    FOR $ICOUNT = 1 TO $IREPEATCOUNT
    $SRESULT &= $SSTRING
    NEXT
    RETURN $SRESULT
    ENDSELECT
    ENDFUNC ;==>_STRINGREPEAT
    FUNC _STRINGREVERSE($S_STRING)
    LOCAL $I_LEN = STRINGLEN($S_STRING)
    IF $I_LEN < 1 THEN RETURN SETERROR(1, 0, "")
    LOCAL $T_CHARS = DLLSTRUCTCREATE("char[" & $I_LEN + 1 & "]")
    DLLSTRUCTSETDATA($T_CHARS, 1, $S_STRING)
    LOCAL $A_REV = DLLCALL("msvcrt.dll", "ptr:cdecl", "_strrev", "ptr", DLLSTRUCTGETPTR($T_CHARS))
    IF @error OR $A_REV[0] = 0 THEN RETURN SETERROR(2, 0, "")
    RETURN DLLSTRUCTGETDATA($T_CHARS, 1)
    ENDFUNC ;==>_STRINGREVERSE
    FUNC _STRINGTOHEX($STRCHAR)
    RETURN HEX( STRINGTOBINARY($STRCHAR))
    ENDFUNC ;==>_STRINGTOHEX
    FUNC _ARRAYADD(BYREF $AVARRAY, $VVALUE)
    IF NOT ISARRAY($AVARRAY) THEN RETURN SETERROR(1, 0, -1)
    IF UBOUND($AVARRAY, 0) <> 1 THEN RETURN SETERROR(2, 0, -1)
    LOCAL $IUBOUND = UBOUND($AVARRAY)
    REDIM $AVARRAY[$IUBOUND + 1]
    $AVARRAY[$IUBOUND] = $VVALUE
    RETURN $IUBOUND
    ENDFUNC ;==>_ARRAYADD
    FUNC _ARRAYBINARYSEARCH(CONST BYREF $AVARRAY, $VVALUE, $ISTART = 0, $IEND = 0)
    IF NOT ISARRAY($AVARRAY) THEN RETURN SETERROR(1, 0, -1)
    IF UBOUND($AVARRAY, 0) <> 1 THEN RETURN SETERROR(5, 0, -1)
    LOCAL $IUBOUND = UBOUND($AVARRAY) - 1
    IF $IEND < 1 OR $IEND > $IUBOUND THEN $IEND = $IUBOUND
    IF $ISTART < 0 THEN $ISTART = 0
    IF $ISTART > $IEND THEN RETURN SETERROR(4, 0, -1)
    LOCAL $IMID = INT(($IEND + $ISTART) / 2)
    IF $AVARRAY[$ISTART] > $VVALUE OR $AVARRAY[$IEND] < $VVALUE THEN RETURN SETERROR(2, 0, -1)
    WHILE $ISTART <= $IMID AND $VVALUE <> $AVARRAY[$IMID]
    IF $VVALUE < $AVARRAY[$IMID] THEN
    $IEND = $IMID - 1
    ELSE
    $ISTART = $IMID + 1
    ENDIF
    $IMID = INT(($IEND + $ISTART) / 2)
    WEND
    IF $ISTART > $IEND THEN RETURN SETERROR(3, 0, -1)
    RETURN $IMID
    ENDFUNC ;==>_ARRAYBINARYSEARCH
    FUNC _ARRAYCOMBINATIONS(BYREF $AVARRAY, $ISET, $SDELIM = "")
    IF NOT ISARRAY($AVARRAY) THEN RETURN SETERROR(1, 0, 0)
    IF UBOUND($AVARRAY, 0) <> 1 THEN RETURN SETERROR(2, 0, 0)
    LOCAL $IN = UBOUND($AVARRAY)
    LOCAL $IR = $ISET
    LOCAL $AIDX[$IR]
    FOR $I = 0 TO $IR - 1
    $AIDX[$I] = $I
    NEXT
    LOCAL $ITOTAL = __ARRAY_COMBINATIONS($IN, $IR)
    LOCAL $ILEFT = $ITOTAL
    LOCAL $ARESULT[$ITOTAL + 1]
    $ARESULT[0] = $ITOTAL
    LOCAL $ICOUNT = 1
    WHILE $ILEFT > 0
    __ARRAY_GETNEXT($IN, $IR, $ILEFT, $ITOTAL, $AIDX)
    FOR $I = 0 TO $ISET - 1
    $ARESULT[$ICOUNT] &= $AVARRAY[$AIDX[$I]] & $SDELIM
    NEXT
    IF $SDELIM <> "" THEN $ARESULT[$ICOUNT] = STRINGTRIMRIGHT($ARESULT[$ICOUNT], 1)
    $ICOUNT += 1
    WEND
    RETURN $ARESULT
    ENDFUNC ;==>_ARRAYCOMBINATIONS
    FUNC _ARRAYCONCATENATE(BYREF $AVARRAYTARGET, CONST BYREF $AVARRAYSOURCE, $ISTART = 0)
    IF NOT ISARRAY($AVARRAYTARGET) THEN RETURN SETERROR(1, 0, 0)
    IF NOT ISARRAY($AVARRAYSOURCE) THEN RETURN SETERROR(2, 0, 0)
    IF UBOUND($AVARRAYTARGET, 0) <> 1 THEN
    IF UBOUND($AVARRAYSOURCE, 0) <> 1 THEN RETURN SETERROR(5, 0, 0)
    RETURN SETERROR(3, 0, 0)
    ENDIF
    IF UBOUND($AVARRAYSOURCE, 0) <> 1 THEN RETURN SETERROR(4, 0, 0)
    LOCAL $IUBOUNDTARGET = UBOUND($AVARRAYTARGET) - $ISTART, $IUBOUNDSOURCE = UBOUND($AVARRAYSOURCE)
    REDIM $AVARRAYTARGET[$IUBOUNDTARGET + $IUBOUNDSOURCE]
    FOR $I = $ISTART TO $IUBOUNDSOURCE - 1
    $AVARRAYTARGET[$IUBOUNDTARGET + $I] = $AVARRAYSOURCE[$I]
    NEXT
    RETURN $IUBOUNDTARGET + $IUBOUNDSOURCE
    ENDFUNC ;==>_ARRAYCONCATENATE
    FUNC _ARRAYCREATE($V_0, $V_1 = 0, $V_2 = 0, $V_3 = 0, $V_4 = 0, $V_5 = 0, $V_6 = 0, $V_7 = 0, $V_8 = 0, $V_9 = 0, $V_10 = 0, $V_11 = 0, $V_12 = 0, $V_13 = 0, $V_14 = 0, $V_15 = 0, $V_16 = 0, $V_17 = 0, $V_18 = 0, $V_19 = 0, $V_20 = 0)
    LOCAL $AV_ARRAY[21] = [$V_0, $V_1, $V_2, $V_3, $V_4, $V_5, $V_6, $V_7, $V_8, $V_9, $V_10, $V_11, $V_12, $V_13, $V_14, $V_15, $V_16, $V_17, $V_18, $V_19, $V_20]
    REDIM $AV_ARRAY[@NUMPARAMS]
    RETURN $AV_ARRAY
    ENDFUNC ;==>_ARRAYCREATE
    FUNC _ARRAYDELETE(BYREF $AVARRAY, $IELEMENT)
    IF NOT ISARRAY($AVARRAY) THEN RETURN SETERROR(1, 0, 0)
    LOCAL $IUBOUND = UBOUND($AVARRAY, 1) - 1
    IF NOT $IUBOUND THEN
    $AVARRAY = ""
    RETURN 0
    ENDIF
    IF $IELEMENT < 0 THEN $IELEMENT = 0
    IF $IELEMENT > $IUBOUND THEN $IELEMENT = $IUBOUND
    SWITCH UBOUND($AVARRAY, 0)
    CASE 1
    FOR $I = $IELEMENT TO $IUBOUND - 1
    $AVARRAY[$I] = $AVARRAY[$I + 1]
    NEXT
    REDIM $AVARRAY[$IUBOUND]
    CASE 2
    LOCAL $ISUBMAX = UBOUND($AVARRAY, 2) - 1
    FOR $I = $IELEMENT TO $IUBOUND - 1
    FOR $J = 0 TO $ISUBMAX
    $AVARRAY[$I][$J] = $AVARRAY[$I + 1][$J]
    NEXT
    NEXT
    REDIM $AVARRAY[$IUBOUND][$ISUBMAX + 1]
    CASE ELSE
    RETURN SETERROR(3, 0, 0)
    ENDSWITCH
    RETURN $IUBOUND
    ENDFUNC ;==>_ARRAYDELETE
    FUNC _ARRAYDISPLAY(CONST BYREF $AVARRAY, $STITLE = "Array: ListView Display", $IITEMLIMIT = -1, $ITRANSPOSE = 0, $SSEPARATOR = "", $SREPLACE = "|", $SHEADER = "")
    IF NOT ISARRAY($AVARRAY) THEN RETURN SETERROR(1, 0, 0)
    LOCAL $IDIMENSION = UBOUND($AVARRAY, 0), $IUBOUND = UBOUND($AVARRAY, 1) - 1, $ISUBMAX = UBOUND($AVARRAY, 2) - 1
    IF $IDIMENSION > 2 THEN RETURN SETERROR(2, 0, 0)
    IF $SSEPARATOR = "" THEN $SSEPARATOR = CHR(124)
    IF _ARRAYSEARCH($AVARRAY, $SSEPARATOR, 0, 0, 0, 1) <> -1 THEN
    FOR $X = 1 TO 255
    IF $X >= 32 AND $X <= 127 THEN CONTINUELOOP
    LOCAL $SFIND = _ARRAYSEARCH($AVARRAY, CHR($X), 0, 0, 0, 1)
    IF $SFIND = -1 THEN
    $SSEPARATOR = CHR($X)
    EXITLOOP
    ENDIF
    NEXT
    ENDIF
    LOCAL $VTMP, $IBUFFER = 64
    LOCAL $ICOLLIMIT = 250
    LOCAL $IONEVENTMODE = OPT("GUIOnEventMode", 0), $SDATASEPARATORCHAR = OPT("GUIDataSeparatorChar", $SSEPARATOR)
    IF $ISUBMAX < 0 THEN $ISUBMAX = 0
    IF $ITRANSPOSE THEN
    $VTMP = $IUBOUND
    $IUBOUND = $ISUBMAX
    $ISUBMAX = $VTMP
    ENDIF
    IF $ISUBMAX > $ICOLLIMIT THEN $ISUBMAX = $ICOLLIMIT
    IF $IITEMLIMIT < 1 THEN $IITEMLIMIT = $IUBOUND
    IF $IUBOUND > $IITEMLIMIT THEN $IUBOUND = $IITEMLIMIT
    IF $SHEADER = "" THEN
    $SHEADER = "Row "
    FOR $I = 0 TO $ISUBMAX
    $SHEADER &= $SSEPARATOR & "Col " & $I
    NEXT
    ENDIF
    LOCAL $AVARRAYTEXT[$IUBOUND + 1]
    FOR $I = 0 TO $IUBOUND
    $AVARRAYTEXT[$I] = "[" & $I & "]"
    FOR $J = 0 TO $ISUBMAX
    IF $IDIMENSION = 1 THEN
    IF $ITRANSPOSE THEN
    $VTMP = $AVARRAY[$J]
    ELSE
    $VTMP = $AVARRAY[$I]
    ENDIF
    ELSE
    IF $ITRANSPOSE THEN
    $VTMP = $AVARRAY[$J][$I]
    ELSE
    $VTMP = $AVARRAY[$I][$J]
    ENDIF
    ENDIF
    $VTMP = STRINGREPLACE($VTMP, $SSEPARATOR, $SREPLACE, 0, 1)
    $AVARRAYTEXT[$I] &= $SSEPARATOR & $VTMP
    $VTMP = STRINGLEN($VTMP)
    IF $VTMP > $IBUFFER THEN $IBUFFER = $VTMP
    NEXT
    NEXT
    $IBUFFER += 1
    LOCAL CONST $_ARRAYCONSTANT_GUI_DOCKBORDERS = 102
    LOCAL CONST $_ARRAYCONSTANT_GUI_DOCKBOTTOM = 64
    LOCAL CONST $_ARRAYCONSTANT_GUI_DOCKHEIGHT = 512
    LOCAL CONST $_ARRAYCONSTANT_GUI_DOCKLEFT = 2
    LOCAL CONST $_ARRAYCONSTANT_GUI_DOCKRIGHT = 4
    LOCAL CONST $_ARRAYCONSTANT_GUI_EVENT_CLOSE = -3
    LOCAL CONST $_ARRAYCONSTANT_LVIF_PARAM = 4
    LOCAL CONST $_ARRAYCONSTANT_LVIF_TEXT = 1
    LOCAL CONST $_ARRAYCONSTANT_LVM_GETCOLUMNWIDTH = (4096 + 29)
    LOCAL CONST $_ARRAYCONSTANT_LVM_GETITEMCOUNT = (4096 + 4)
    LOCAL CONST $_ARRAYCONSTANT_LVM_GETITEMSTATE = (4096 + 44)
    LOCAL CONST $_ARRAYCONSTANT_LVM_INSERTITEMW = (4096 + 77)
    LOCAL CONST $_ARRAYCONSTANT_LVM_SETEXTENDEDLISTVIEWSTYLE = (4096 + 54)
    LOCAL CONST $_ARRAYCONSTANT_LVM_SETITEMW = (4096 + 76)
    LOCAL CONST $_ARRAYCONSTANT_LVS_EX_FULLROWSELECT = 32
    LOCAL CONST $_ARRAYCONSTANT_LVS_EX_GRIDLINES = 1
    LOCAL CONST $_ARRAYCONSTANT_LVS_SHOWSELALWAYS = 8
    LOCAL CONST $_ARRAYCONSTANT_WS_EX_CLIENTEDGE = 512
    LOCAL CONST $_ARRAYCONSTANT_WS_MAXIMIZEBOX = 65536
    LOCAL CONST $_ARRAYCONSTANT_WS_MINIMIZEBOX = 131072
    LOCAL CONST $_ARRAYCONSTANT_WS_SIZEBOX = 262144
    LOCAL CONST $_ARRAYCONSTANT_TAGLVITEM = "int Mask;int Item;int SubItem;int State;int StateMask;ptr Text;int TextMax;int Image;int Param;int Indent;int GroupID;int Columns;ptr pColumns"
    LOCAL $IADDMASK = BITOR($_ARRAYCONSTANT_LVIF_TEXT, $_ARRAYCONSTANT_LVIF_PARAM)
    LOCAL $TBUFFER = DLLSTRUCTCREATE("wchar Text[" & $IBUFFER & "]"), $PBUFFER = DLLSTRUCTGETPTR($TBUFFER)
    LOCAL $TITEM = DLLSTRUCTCREATE($_ARRAYCONSTANT_TAGLVITEM), $PITEM = DLLSTRUCTGETPTR($TITEM)
    DLLSTRUCTSETDATA($TITEM, "Param", 0)
    DLLSTRUCTSETDATA($TITEM, "Text", $PBUFFER)
    DLLSTRUCTSETDATA($TITEM, "TextMax", $IBUFFER)
    LOCAL $IWIDTH = 640, $IHEIGHT = 480
    LOCAL $HGUI = GUICREATE($STITLE, $IWIDTH, $IHEIGHT, DEFAULT, DEFAULT, BITOR($_ARRAYCONSTANT_WS_SIZEBOX, $_ARRAYCONSTANT_WS_MINIMIZEBOX, $_ARRAYCONSTANT_WS_MAXIMIZEBOX))
    LOCAL $AIGUISIZE = WINGETCLIENTSIZE($HGUI)
    LOCAL $HLISTVIEW = GUICTRLCREATELISTVIEW($SHEADER, 0, 0, $AIGUISIZE[0], $AIGUISIZE[1] - 26, $_ARRAYCONSTANT_LVS_SHOWSELALWAYS)
    LOCAL $HCOPY = GUICTRLCREATEBUTTON("Copy Selected", 3, $AIGUISIZE[1] - 23, $AIGUISIZE[0] - 6, 20)
    GUICTRLSETRESIZING($HLISTVIEW, $_ARRAYCONSTANT_GUI_DOCKBORDERS)
    GUICTRLSETRESIZING($HCOPY, $_ARRAYCONSTANT_GUI_DOCKLEFT + $_ARRAYCONSTANT_GUI_DOCKRIGHT + $_ARRAYCONSTANT_GUI_DOCKBOTTOM + $_ARRAYCONSTANT_GUI_DOCKHEIGHT)
    GUICTRLSENDMSG($HLISTVIEW, $_ARRAYCONSTANT_LVM_SETEXTENDEDLISTVIEWSTYLE, $_ARRAYCONSTANT_LVS_EX_GRIDLINES, $_ARRAYCONSTANT_LVS_EX_GRIDLINES)
    GUICTRLSENDMSG($HLISTVIEW, $_ARRAYCONSTANT_LVM_SETEXTENDEDLISTVIEWSTYLE, $_ARRAYCONSTANT_LVS_EX_FULLROWSELECT, $_ARRAYCONSTANT_LVS_EX_FULLROWSELECT)
    GUICTRLSENDMSG($HLISTVIEW, $_ARRAYCONSTANT_LVM_SETEXTENDEDLISTVIEWSTYLE, $_ARRAYCONSTANT_WS_EX_CLIENTEDGE, $_ARRAYCONSTANT_WS_EX_CLIENTEDGE)
    LOCAL $AITEM
    FOR $I = 0 TO $IUBOUND
    IF GUICTRLCREATELISTVIEWITEM($AVARRAYTEXT[$I], $HLISTVIEW) = 0 THEN
    $AITEM = STRINGSPLIT($AVARRAYTEXT[$I], $SSEPARATOR)
    DLLSTRUCTSETDATA($TBUFFER, "Text", $AITEM[1])
    DLLSTRUCTSETDATA($TITEM, "Item", $I)
    DLLSTRUCTSETDATA($TITEM, "SubItem", 0)
    DLLSTRUCTSETDATA($TITEM, "Mask", $IADDMASK)
    GUICTRLSENDMSG($HLISTVIEW, $_ARRAYCONSTANT_LVM_INSERTITEMW, 0, $PITEM)
    DLLSTRUCTSETDATA($TITEM, "Mask", $_ARRAYCONSTANT_LVIF_TEXT)
    FOR $J = 2 TO $AITEM[0]
    DLLSTRUCTSETDATA($TBUFFER, "Text", $AITEM[$J])
    DLLSTRUCTSETDATA($TITEM, "SubItem", $J - 1)
    GUICTRLSENDMSG($HLISTVIEW, $_ARRAYCONSTANT_LVM_SETITEMW, 0, $PITEM)
    NEXT
    ENDIF
    NEXT
    $IWIDTH = 0
    FOR $I = 0 TO $ISUBMAX + 1
    $IWIDTH += GUICTRLSENDMSG($HLISTVIEW, $_ARRAYCONSTANT_LVM_GETCOLUMNWIDTH, $I, 0)
    NEXT
    IF $IWIDTH < 250 THEN $IWIDTH = 230
    $IWIDTH += 20
    IF $IWIDTH > @desktopWIDTH THEN $IWIDTH = @desktopWIDTH - 100
    WINMOVE($HGUI, "", @desktopWIDTH - $IWIDTH) / 2, DEFAULT, $IWIDTH)
    GUISETSTATE(@SW_SHOW, $HGUI)
    WHILE 1
    SWITCH GUIGETMSG()
    CASE $_ARRAYCONSTANT_GUI_EVENT_CLOSE
    EXITLOOP
    CASE $HCOPY
    LOCAL $SCLIP = ""
    LOCAL $AICURITEMS[1] = [0]
    FOR $I = 0 TO GUICTRLSENDMSG($HLISTVIEW, $_ARRAYCONSTANT_LVM_GETITEMCOUNT, 0, 0)
    IF GUICTRLSENDMSG($HLISTVIEW, $_ARRAYCONSTANT_LVM_GETITEMSTATE, $I, 2) THEN
    $AICURITEMS[0] += 1
    REDIM $AICURITEMS[$AICURITEMS[0] + 1]
    $AICURITEMS[$AICURITEMS[0]] = $I
    ENDIF
    NEXT
    IF NOT $AICURITEMS[0] THEN
    FOR $SITEM IN $AVARRAYTEXT
    $SCLIP &= $SITEM & @crlF
    NEXT
    ELSE
    FOR $I = 1 TO UBOUND($AICURITEMS) - 1
    $SCLIP &= $AVARRAYTEXT[$AICURITEMS[$I]] & @crlF
    NEXT
    ENDIF
    CLIPPUT($SCLIP)
    ENDSWITCH
    WEND
    GUIDELETE($HGUI)
    OPT("GUIOnEventMode", $IONEVENTMODE)
    OPT("GUIDataSeparatorChar", $SDATASEPARATORCHAR)
    RETURN 1
    ENDFUNC ;==>_ARRAYDISPLAY
    FUNC _ARRAYFINDALL(CONST BYREF $AVARRAY, $VVALUE, $ISTART = 0, $IEND = 0, $ICASE = 0, $IPARTIAL = 0, $ISUBITEM = 0)
    $ISTART = _ARRAYSEARCH($AVARRAY, $VVALUE, $ISTART, $IEND, $ICASE, $IPARTIAL, 1, $ISUBITEM)
    IF @error THEN RETURN SETERROR @error, 0, -1)
    LOCAL $IINDEX = 0, $AVRESULT[UBOUND($AVARRAY)]
    DO
    $AVRESULT[$IINDEX] = $ISTART
    $IINDEX += 1
    $ISTART = _ARRAYSEARCH($AVARRAY, $VVALUE, $ISTART + 1, $IEND, $ICASE, $IPARTIAL, 1, $ISUBITEM)
    UNTIL @error
    REDIM $AVRESULT[$IINDEX]
    RETURN $AVRESULT
    ENDFUNC ;==>_ARRAYFINDALL
    FUNC _ARRAYINSERT(BYREF $AVARRAY, $IELEMENT, $VVALUE = "")
    IF NOT ISARRAY($AVARRAY) THEN RETURN SETERROR(1, 0, 0)
    IF UBOUND($AVARRAY, 0) <> 1 THEN RETURN SETERROR(2, 0, 0)
    LOCAL $IUBOUND = UBOUND($AVARRAY) + 1
    REDIM $AVARRAY[$IUBOUND]
    FOR $I = $IUBOUND - 1 TO $IELEMENT + 1 STEP -1
    $AVARRAY[$I] = $AVARRAY[$I - 1]
    NEXT
    $AVARRAY[$IELEMENT] = $VVALUE
    RETURN $IUBOUND
    ENDFUNC ;==>_ARRAYINSERT
    FUNC _ARRAYMAX(CONST BYREF $AVARRAY, $ICOMPNUMERIC = 0, $ISTART = 0, $IEND = 0)
    LOCAL $IRESULT = _ARRAYMAXINDEX($AVARRAY, $ICOMPNUMERIC, $ISTART, $IEND)
    IF @error THEN RETURN SETERROR @error, 0, "")
    RETURN $AVARRAY[$IRESULT]
    ENDFUNC ;==>_ARRAYMAX
    FUNC _ARRAYMAXINDEX(CONST BYREF $AVARRAY, $ICOMPNUMERIC = 0, $ISTART = 0, $IEND = 0)
    IF NOT ISARRAY($AVARRAY) OR UBOUND($AVARRAY, 0) <> 1 THEN RETURN SETERROR(1, 0, -1)
    IF UBOUND($AVARRAY, 0) <> 1 THEN RETURN SETERROR(3, 0, -1)
    LOCAL $IUBOUND = UBOUND($AVARRAY) - 1
    IF $IEND < 1 OR $IEND > $IUBOUND THEN $IEND = $IUBOUND
    IF $ISTART < 0 THEN $ISTART = 0
    IF $ISTART > $IEND THEN RETURN SETERROR(2, 0, -1)
    LOCAL $IMAXINDEX = $ISTART
    IF $ICOMPNUMERIC THEN
    FOR $I = $ISTART TO $IEND
    IF NUMBER($AVARRAY[$IMAXINDEX]) < NUMBER($AVARRAY[$I]) THEN $IMAXINDEX = $I
    NEXT
    ELSE
    FOR $I = $ISTART TO $IEND
    IF $AVARRAY[$IMAXINDEX] < $AVARRAY[$I] THEN $IMAXINDEX = $I
    NEXT
    ENDIF
    RETURN $IMAXINDEX
    ENDFUNC ;==>_ARRAYMAXINDEX
    FUNC _ARRAYMIN(CONST BYREF $AVARRAY, $ICOMPNUMERIC = 0, $ISTART = 0, $IEND = 0)
    LOCAL $IRESULT = _ARRAYMININDEX($AVARRAY, $ICOMPNUMERIC, $ISTART, $IEND)
    IF @error THEN RETURN SETERROR @error, 0, "")
    RETURN $AVARRAY[$IRESULT]
    ENDFUNC ;==>_ARRAYMIN
    FUNC _ARRAYMININDEX(CONST BYREF $AVARRAY, $ICOMPNUMERIC = 0, $ISTART = 0, $IEND = 0)
    IF NOT ISARRAY($AVARRAY) THEN RETURN SETERROR(1, 0, -1)
    IF UBOUND($AVARRAY, 0) <> 1 THEN RETURN SETERROR(3, 0, -1)
    LOCAL $IUBOUND = UBOUND($AVARRAY) - 1
    IF $IEND < 1 OR $IEND > $IUBOUND THEN $IEND = $IUBOUND
    IF $ISTART < 0 THEN $ISTART = 0
    IF $ISTART > $IEND THEN RETURN SETERROR(2, 0, -1)
    LOCAL $IMININDEX = $ISTART
    IF $ICOMPNUMERIC THEN
    FOR $I = $ISTART TO $IEND
    IF NUMBER($AVARRAY[$IMININDEX]) > NUMBER($AVARRAY[$I]) THEN $IMININDEX = $I
    NEXT
    ELSE
    FOR $I = $ISTART TO $IEND
    IF $AVARRAY[$IMININDEX] > $AVARRAY[$I] THEN $IMININDEX = $I
    NEXT
    ENDIF
    RETURN $IMININDEX
    ENDFUNC ;==>_ARRAYMININDEX
    FUNC _ARRAYPERMUTE(BYREF $AVARRAY, $SDELIM = "")
    IF NOT ISARRAY($AVARRAY) THEN RETURN SETERROR(1, 0, 0)
    IF UBOUND($AVARRAY, 0) <> 1 THEN RETURN SETERROR(2, 0, 0)
    LOCAL $ISIZE = UBOUND($AVARRAY), $IFACTORIAL = 1, $AIDX[$ISIZE], $ARESULT[1], $ICOUNT = 1
    FOR $I = 0 TO $ISIZE - 1
    $AIDX[$I] = $I
    NEXT
    FOR $I = $ISIZE TO 1 STEP -1
    $IFACTORIAL *= $I
    NEXT
    REDIM $ARESULT[$IFACTORIAL + 1]
    $ARESULT[0] = $IFACTORIAL
    __ARRAY_EXETERINTERNAL($AVARRAY, 0, $ISIZE, $SDELIM, $AIDX, $ARESULT, $ICOUNT)
    RETURN $ARESULT
    ENDFUNC ;==>_ARRAYPERMUTE
    FUNC _ARRAYPOP(BYREF $AVARRAY)
    IF(NOT ISARRAY($AVARRAY)) THEN RETURN SETERROR(1, 0, "")
    IF UBOUND($AVARRAY, 0) <> 1 THEN RETURN SETERROR(2, 0, "")
    LOCAL $IUBOUND = UBOUND($AVARRAY) - 1, $SLASTVAL = $AVARRAY[$IUBOUND]
    IF NOT $IUBOUND THEN
    $AVARRAY = ""
    ELSE
    REDIM $AVARRAY[$IUBOUND]
    ENDIF
    RETURN $SLASTVAL
    ENDFUNC ;==>_ARRAYPOP
    FUNC _ARRAYPUSH(BYREF $AVARRAY, $VVALUE, $IDIRECTION = 0)
    IF(NOT ISARRAY($AVARRAY)) THEN RETURN SETERROR(1, 0, 0)
    IF UBOUND($AVARRAY, 0) <> 1 THEN RETURN SETERROR(3, 0, 0)
    LOCAL $IUBOUND = UBOUND($AVARRAY) - 1
    IF ISARRAY($VVALUE) THEN
    LOCAL $IUBOUNDS = UBOUND($VVALUE)
    IF($IUBOUNDS - 1) > $IUBOUND THEN RETURN SETERROR(2, 0, 0)
    IF $IDIRECTION THEN
    FOR $I = $IUBOUND TO $IUBOUNDS STEP -1
    $AVARRAY[$I] = $AVARRAY[$I - $IUBOUNDS]
    NEXT
    FOR $I = 0 TO $IUBOUNDS - 1
    $AVARRAY[$I] = $VVALUE[$I]
    NEXT
    ELSE
    FOR $I = 0 TO $IUBOUND - $IUBOUNDS
    $AVARRAY[$I] = $AVARRAY[$I + $IUBOUNDS]
    NEXT
    FOR $I = 0 TO $IUBOUNDS - 1
    $AVARRAY[$I + $IUBOUND - $IUBOUNDS + 1] = $VVALUE[$I]
    NEXT
    ENDIF
    ELSE
    IF $IDIRECTION THEN
    FOR $I = $IUBOUND TO 1 STEP -1
    $AVARRAY[$I] = $AVARRAY[$I - 1]
    NEXT
    $AVARRAY[0] = $VVALUE
    ELSE
    FOR $I = 0 TO $IUBOUND - 1
    $AVARRAY[$I] = $AVARRAY[$I + 1]
    NEXT
    $AVARRAY[$IUBOUND] = $VVALUE
    ENDIF
    ENDIF
    RETURN 1
    ENDFUNC ;==>_ARRAYPUSH
    FUNC _ARRAYREVERSE(BYREF $AVARRAY, $ISTART = 0, $IEND = 0)
    IF NOT ISARRAY($AVARRAY) THEN RETURN SETERROR(1, 0, 0)
    IF UBOUND($AVARRAY, 0) <> 1 THEN RETURN SETERROR(3, 0, 0)
    LOCAL $VTMP, $IUBOUND = UBOUND($AVARRAY) - 1
    IF $IEND < 1 OR $IEND > $IUBOUND THEN $IEND = $IUBOUND
    IF $ISTART < 0 THEN $ISTART = 0
    IF $ISTART > $IEND THEN RETURN SETERROR(2, 0, 0)
    FOR $I = $ISTART TO INT(($ISTART + $IEND - 1) / 2)
    $VTMP = $AVARRAY[$I]
    $AVARRAY[$I] = $AVARRAY[$IEND]
    $AVARRAY[$IEND] = $VTMP
    $IEND -= 1
    NEXT
    RETURN 1
    ENDFUNC ;==>_ARRAYREVERSE
    FUNC _ARRAYSEARCH(CONST BYREF $AVARRAY, $VVALUE, $ISTART = 0, $IEND = 0, $ICASE = 0, $IPARTIAL = 0, $IFORWARD = 1, $ISUBITEM = -1)
    IF NOT ISARRAY($AVARRAY) THEN RETURN SETERROR(1, 0, -1)
    IF UBOUND($AVARRAY, 0) > 2 OR UBOUND($AVARRAY, 0) < 1 THEN RETURN SETERROR(2, 0, -1)
    LOCAL $IUBOUND = UBOUND($AVARRAY) - 1
    IF $IEND < 1 OR $IEND > $IUBOUND THEN $IEND = $IUBOUND
    IF $ISTART < 0 THEN $ISTART = 0
    IF $ISTART > $IEND THEN RETURN SETERROR(4, 0, -1)
    LOCAL $ISTEP = 1
    IF NOT $IFORWARD THEN
    LOCAL $ITMP = $ISTART
    $ISTART = $IEND
    $IEND = $ITMP
    $ISTEP = -1
    ENDIF
    SWITCH UBOUND($AVARRAY, 0)
    CASE 1
    IF NOT $IPARTIAL THEN
    IF NOT $ICASE THEN
    FOR $I = $ISTART TO $IEND STEP $ISTEP
    IF $AVARRAY[$I] = $VVALUE THEN RETURN $I
    NEXT
    ELSE
    FOR $I = $ISTART TO $IEND STEP $ISTEP
    IF $AVARRAY[$I] == $VVALUE THEN RETURN $I
    NEXT
    ENDIF
    ELSE
    FOR $I = $ISTART TO $IEND STEP $ISTEP
    IF STRINGINSTR($AVARRAY[$I], $VVALUE, $ICASE) > 0 THEN RETURN $I
    NEXT
    ENDIF
    CASE 2
    LOCAL $IUBOUNDSUB = UBOUND($AVARRAY, 2) - 1
    IF $ISUBITEM > $IUBOUNDSUB THEN $ISUBITEM = $IUBOUNDSUB
    IF $ISUBITEM < 0 THEN
    $ISUBITEM = 0
    ELSE
    $IUBOUNDSUB = $ISUBITEM
    ENDIF
    FOR $J = $ISUBITEM TO $IUBOUNDSUB
    IF NOT $IPARTIAL THEN
    IF NOT $ICASE THEN
    FOR $I = $ISTART TO $IEND STEP $ISTEP
    IF $AVARRAY[$I][$J] = $VVALUE THEN RETURN $I
    NEXT
    ELSE
    FOR $I = $ISTART TO $IEND STEP $ISTEP
    IF $AVARRAY[$I][$J] == $VVALUE THEN RETURN $I
    NEXT
    ENDIF
    ELSE
    FOR $I = $ISTART TO $IEND STEP $ISTEP
    IF STRINGINSTR($AVARRAY[$I][$J], $VVALUE, $ICASE) > 0 THEN RETURN $I
    NEXT
    ENDIF
    NEXT
    CASE ELSE
    RETURN SETERROR(7, 0, -1)
    ENDSWITCH
    RETURN SETERROR(6, 0, -1)
    ENDFUNC ;==>_ARRAYSEARCH
    FUNC _ARRAYSORT(BYREF $AVARRAY, $IDESCENDING = 0, $ISTART = 0, $IEND = 0, $ISUBITEM = 0)
    IF NOT ISARRAY($AVARRAY) THEN RETURN SETERROR(1, 0, 0)
    LOCAL $IUBOUND = UBOUND($AVARRAY) - 1
    IF $IEND < 1 OR $IEND > $IUBOUND THEN $IEND = $IUBOUND
    IF $ISTART < 0 THEN $ISTART = 0
    IF $ISTART > $IEND THEN RETURN SETERROR(2, 0, 0)
    SWITCH UBOUND($AVARRAY, 0)
    CASE 1
    __ARRAYQUICKSORT1D($AVARRAY, $ISTART, $IEND)
    IF $IDESCENDING THEN _ARRAYREVERSE($AVARRAY, $ISTART, $IEND)
    CASE 2
    LOCAL $ISUBMAX = UBOUND($AVARRAY, 2) - 1
    IF $ISUBITEM > $ISUBMAX THEN RETURN SETERROR(3, 0, 0)
    IF $IDESCENDING THEN
    $IDESCENDING = -1
    ELSE
    $IDESCENDING = 1
    ENDIF
    __ARRAYQUICKSORT2D($AVARRAY, $IDESCENDING, $ISTART, $IEND, $ISUBITEM, $ISUBMAX)
    CASE ELSE
    RETURN SETERROR(4, 0, 0)
    ENDSWITCH
    RETURN 1
    ENDFUNC ;==>_ARRAYSORT
    FUNC __ARRAYQUICKSORT1D(BYREF $AVARRAY, BYREF $ISTART, BYREF $IEND)
    IF $IEND <= $ISTART THEN RETURN
    LOCAL $VTMP
    IF($IEND - $ISTART) < 15 THEN
    LOCAL $VCUR
    FOR $I = $ISTART + 1 TO $IEND
    $VTMP = $AVARRAY[$I]
    IF ISNUMBER($VTMP) THEN
    FOR $J = $I - 1 TO $ISTART STEP -1
    $VCUR = $AVARRAY[$J]
    IF($VTMP >= $VCUR AND ISNUMBER($VCUR)) OR(NOT ISNUMBER($VCUR) AND STRINGCOMPARE($VTMP, $VCUR) >= 0) THEN EXITLOOP
    $AVARRAY[$J + 1] = $VCUR
    NEXT
    ELSE
    FOR $J = $I - 1 TO $ISTART STEP -1
    IF( STRINGCOMPARE($VTMP, $AVARRAY[$J]) >= 0) THEN EXITLOOP
    $AVARRAY[$J + 1] = $AVARRAY[$J]
    NEXT
    ENDIF
    $AVARRAY[$J + 1] = $VTMP
    NEXT
    RETURN
    ENDIF
    LOCAL $L = $ISTART, $R = $IEND, $VPIVOT = $AVARRAY[INT(($ISTART + $IEND) / 2)], $FNUM = ISNUMBER($VPIVOT)
    DO
    IF $FNUM THEN
    WHILE($AVARRAY[$L] < $VPIVOT AND ISNUMBER($AVARRAY[$L])) OR(NOT ISNUMBER($AVARRAY[$L]) AND STRINGCOMPARE($AVARRAY[$L], $VPIVOT) < 0)
    $L += 1
    WEND
    WHILE($AVARRAY[$R] > $VPIVOT AND ISNUMBER($AVARRAY[$R])) OR(NOT ISNUMBER($AVARRAY[$R]) AND STRINGCOMPARE($AVARRAY[$R], $VPIVOT) > 0)
    $R -= 1
    WEND
    ELSE
    WHILE( STRINGCOMPARE($AVARRAY[$L], $VPIVOT) < 0)
    $L += 1
    WEND
    WHILE( STRINGCOMPARE($AVARRAY[$R], $VPIVOT) > 0)
    $R -= 1
    WEND
    ENDIF
    IF $L <= $R THEN
    $VTMP = $AVARRAY[$L]
    $AVARRAY[$L] = $AVARRAY[$R]
    $AVARRAY[$R] = $VTMP
    $L += 1
    $R -= 1
    ENDIF
    UNTIL $L > $R
    __ARRAYQUICKSORT1D($AVARRAY, $ISTART, $R)
    __ARRAYQUICKSORT1D($AVARRAY, $L, $IEND)
    ENDFUNC ;==>__ARRAYQUICKSORT1D
    FUNC __ARRAYQUICKSORT2D(BYREF $AVARRAY, BYREF $ISTEP, BYREF $ISTART, BYREF $IEND, BYREF $ISUBITEM, BYREF $ISUBMAX)
    IF $IEND <= $ISTART THEN RETURN
    LOCAL $VTMP, $L = $ISTART, $R = $IEND, $VPIVOT = $AVARRAY[INT(($ISTART + $IEND) / 2)][$ISUBITEM], $FNUM = ISNUMBER($VPIVOT)
    DO
    IF $FNUM THEN
    WHILE($ISTEP * ($AVARRAY[$L][$ISUBITEM] - $VPIVOT) < 0 AND ISNUMBER($AVARRAY[$L][$ISUBITEM])) OR(NOT ISNUMBER($AVARRAY[$L][$ISUBITEM]) AND $ISTEP * STRINGCOMPARE($AVARRAY[$L][$ISUBITEM], $VPIVOT) < 0)
    $L += 1
    WEND
    WHILE($ISTEP * ($AVARRAY[$R][$ISUBITEM] - $VPIVOT) > 0 AND ISNUMBER($AVARRAY[$R][$ISUBITEM])) OR(NOT ISNUMBER($AVARRAY[$R][$ISUBITEM]) AND $ISTEP * STRINGCOMPARE($AVARRAY[$R][$ISUBITEM], $VPIVOT) > 0)
    $R -= 1
    WEND
    ELSE
    WHILE($ISTEP * STRINGCOMPARE($AVARRAY[$L][$ISUBITEM], $VPIVOT) < 0)
    $L += 1
    WEND
    WHILE($ISTEP * STRINGCOMPARE($AVARRAY[$R][$ISUBITEM], $VPIVOT) > 0)
    $R -= 1
    WEND
    ENDIF
    IF $L <= $R THEN
    FOR $I = 0 TO $ISUBMAX
    $VTMP = $AVARRAY[$L][$I]
    $AVARRAY[$L][$I] = $AVARRAY[$R][$I]
    $AVARRAY[$R][$I] = $VTMP
    NEXT
    $L += 1
    $R -= 1
    ENDIF
    UNTIL $L > $R
    __ARRAYQUICKSORT2D($AVARRAY, $ISTEP, $ISTART, $R, $ISUBITEM, $ISUBMAX)
    __ARRAYQUICKSORT2D($AVARRAY, $ISTEP, $L, $IEND, $ISUBITEM, $ISUBMAX)
    ENDFUNC ;==>__ARRAYQUICKSORT2D
    FUNC _ARRAYSWAP(BYREF $VITEM1, BYREF $VITEM2)
    LOCAL $VTMP = $VITEM1
    $VITEM1 = $VITEM2
    $VITEM2 = $VTMP
    ENDFUNC ;==>_ARRAYSWAP
    FUNC _ARRAYTOCLIP(CONST BYREF $AVARRAY, $ISTART = 0, $IEND = 0)
    LOCAL $SRESULT = _ARRAYTOSTRING($AVARRAY, @CR, $ISTART, $IEND)
    IF @error THEN RETURN SETERROR @error, 0, 0)
    RETURN CLIPPUT($SRESULT)
    ENDFUNC ;==>_ARRAYTOCLIP
    FUNC _ARRAYTOSTRING(CONST BYREF $AVARRAY, $SDELIM = "|", $ISTART = 0, $IEND = 0)
    IF NOT ISARRAY($AVARRAY) THEN RETURN SETERROR(1, 0, "")
    IF UBOUND($AVARRAY, 0) <> 1 THEN RETURN SETERROR(3, 0, "")
    LOCAL $SRESULT, $IUBOUND = UBOUND($AVARRAY) - 1
    IF $IEND < 1 OR $IEND > $IUBOUND THEN $IEND = $IUBOUND
    IF $ISTART < 0 THEN $ISTART = 0
    IF $ISTART > $IEND THEN RETURN SETERROR(2, 0, "")
    FOR $I = $ISTART TO $IEND
    $SRESULT &= $AVARRAY[$I] & $SDELIM
    NEXT
    RETURN STRINGTRIMRIGHT($SRESULT, STRINGLEN($SDELIM))
    ENDFUNC ;==>_ARRAYTOSTRING
    FUNC _ARRAYTRIM(BYREF $AVARRAY, $ITRIMNUM, $IDIRECTION = 0, $ISTART = 0, $IEND = 0)
    IF NOT ISARRAY($AVARRAY) THEN RETURN SETERROR(1, 0, 0)
    IF UBOUND($AVARRAY, 0) <> 1 THEN RETURN SETERROR(2, 0, 0)
    LOCAL $IUBOUND = UBOUND($AVARRAY) - 1
    IF $IEND < 1 OR $IEND > $IUBOUND THEN $IEND = $IUBOUND
    IF $ISTART < 0 THEN $ISTART = 0
    IF $ISTART > $IEND THEN RETURN SETERROR(5, 0, 0)
    IF $IDIRECTION THEN
    FOR $I = $ISTART TO $IEND
    $AVARRAY[$I] = STRINGTRIMRIGHT($AVARRAY[$I], $ITRIMNUM)
    NEXT
    ELSE
    FOR $I = $ISTART TO $IEND
    $AVARRAY[$I] = STRINGTRIMLEFT($AVARRAY[$I], $ITRIMNUM)
    NEXT
    ENDIF
    RETURN 1
    ENDFUNC ;==>_ARRAYTRIM
    FUNC _ARRAYUNIQUE($AARRAY, $IDIMENSION = 1, $IBASE = 0, $ICASE = 0, $VDELIM = "|")
    LOCAL $IUBOUNDDIM
    IF $VDELIM = "|" THEN $VDELIM = CHR(1)
    IF NOT ISARRAY($AARRAY) THEN RETURN SETERROR(1, 0, 0)
    IF NOT $IDIMENSION > 0 THEN
    RETURN SETERROR(3, 0, 0)
    ELSE
    $IUBOUNDDIM = UBOUND($AARRAY, 1)
    IF @error THEN RETURN SETERROR(3, 0, 0)
    IF $IDIMENSION > 1 THEN
    LOCAL $AARRAYTMP[1]
    FOR $I = 0 TO $IUBOUNDDIM - 1
    _ARRAYADD($AARRAYTMP, $AARRAY[$I][$IDIMENSION - 1])
    NEXT
    _ARRAYDELETE($AARRAYTMP, 0)
    ELSE
    IF UBOUND($AARRAY, 0) = 1 THEN
    DIM $AARRAYTMP[1]
    FOR $I = 0 TO $IUBOUNDDIM - 1
    _ARRAYADD($AARRAYTMP, $AARRAY[$I])
    NEXT
    _ARRAYDELETE($AARRAYTMP, 0)
    ELSE
    DIM $AARRAYTMP[1]
    FOR $I = 0 TO $IUBOUNDDIM - 1
    _ARRAYADD($AARRAYTMP, $AARRAY[$I][$IDIMENSION - 1])
    NEXT
    _ARRAYDELETE($AARRAYTMP, 0)
    ENDIF
    ENDIF
    ENDIF
    LOCAL $SHOLD
    FOR $ICC = $IBASE TO UBOUND($AARRAYTMP) - 1
    IF NOT STRINGINSTR($VDELIM & $SHOLD, $VDELIM & $AARRAYTMP[$ICC] & $VDELIM, $ICASE) THEN $SHOLD &= $AARRAYTMP[$ICC] & $VDELIM
    NEXT
    IF $SHOLD THEN
    $AARRAYTMP = STRINGSPLIT( STRINGTRIMRIGHT($SHOLD, STRINGLEN($VDELIM)), $VDELIM, 1)
    RETURN $AARRAYTMP
    ENDIF
    RETURN SETERROR(2, 0, 0)
    ENDFUNC ;==>_ARRAYUNIQUE
    FUNC __ARRAY_EXETERINTERNAL(BYREF $AVARRAY, $ISTART, $ISIZE, $SDELIM, BYREF $AIDX, BYREF $ARESULT, BYREF $ICOUNT)
    IF $ISTART == $ISIZE - 1 THEN
    FOR $I = 0 TO $ISIZE - 1
    $ARESULT[$ICOUNT] &= $AVARRAY[$AIDX[$I]] & $SDELIM
    NEXT
    IF $SDELIM <> "" THEN $ARESULT[$ICOUNT] = STRINGTRIMRIGHT($ARESULT[$ICOUNT], 1)
    $ICOUNT += 1
    ELSE
    LOCAL $ITEMP
    FOR $I = $ISTART TO $ISIZE - 1
    $ITEMP = $AIDX[$I]
    $AIDX[$I] = $AIDX[$ISTART]
    $AIDX[$ISTART] = $ITEMP
    __ARRAY_EXETERINTERNAL($AVARRAY, $ISTART + 1, $ISIZE, $SDELIM, $AIDX, $ARESULT, $ICOUNT)
    $AIDX[$ISTART] = $AIDX[$I]
    $AIDX[$I] = $ITEMP
    NEXT
    ENDIF
    ENDFUNC ;==>__ARRAY_EXETERINTERNAL
    FUNC __ARRAY_COMBINATIONS($IN, $IR)
    LOCAL $I_TOTAL = 1
    FOR $I = $IR TO 1 STEP -1
    $I_TOTAL *= ($IN / $I)
    $IN -= 1
    NEXT
    RETURN ROUND($I_TOTAL)
    ENDFUNC ;==>__ARRAY_COMBINATIONS
    FUNC __ARRAY_GETNEXT($IN, $IR, BYREF $ILEFT, $ITOTAL, BYREF $AIDX)
    IF $ILEFT == $ITOTAL THEN
    $ILEFT -= 1
    RETURN
    ENDIF
    LOCAL $I = $IR - 1
    WHILE $AIDX[$I] == $IN - $IR + $I
    $I -= 1
    WEND
    $AIDX[$I] += 1
    FOR $J = $I + 1 TO $IR - 1
    $AIDX[$J] = $AIDX[$I] + $J - $I
    NEXT
    $ILEFT -= 1
    ENDFUNC ;==>__ARRAY_GETNEXT
    GLOBAL CONST $GMEM_FIXED = 0
    GLOBAL CONST $GMEM_MOVEABLE = 2
    GLOBAL CONST $GMEM_NOCOMPACT = 16
    GLOBAL CONST $GMEM_NODISCARD = 32
    GLOBAL CONST $GMEM_ZEROINIT = 64
    GLOBAL CONST $GMEM_MODIFY = 128
    GLOBAL CONST $GMEM_DISCARDABLE = 256
    GLOBAL CONST $GMEM_NOT_BANKED = 4096
    GLOBAL CONST $GMEM_SHARE = 8192
    GLOBAL CONST $GMEM_DDESHARE = 8192
    GLOBAL CONST $GMEM_NOTIFY = 16384
    GLOBAL CONST $GMEM_LOWER = 4096
    GLOBAL CONST $GMEM_VALID_FLAGS = 32626
    GLOBAL CONST $GMEM_INVALID_HANDLE = 32768
    GLOBAL CONST $GPTR = $GMEM_FIXED + $GMEM_ZEROINIT
    GLOBAL CONST $GHND = $GMEM_MOVEABLE + $GMEM_ZEROINIT
    GLOBAL CONST $MEM_COMMIT = 4096
    GLOBAL CONST $MEM_RESERVE = 8192
    GLOBAL CONST $MEM_TOP_DOWN = 1048576
    GLOBAL CONST $MEM_SHARED = 134217728
    GLOBAL CONST $PAGE_NOACCESS = 1
    GLOBAL CONST $PAGE_READONLY = 2
    GLOBAL CONST $PAGE_READWRITE = 4
    GLOBAL CONST $PAGE_EXECUTE = 16
    GLOBAL CONST $PAGE_EXECUTE_READ = 32
    GLOBAL CONST $PAGE_EXECUTE_READWRITE = 64
    GLOBAL CONST $PAGE_GUARD = 256
    GLOBAL CONST $PAGE_NOCACHE = 512
    GLOBAL CONST $MEM_DECOMMIT = 16384
    GLOBAL CONST $MEM_RELEASE = 32768
    GLOBAL CONST $TAGPOINT = "long X;long Y"
    GLOBAL CONST $TAGRECT = "long Left;long Top;long Right;long Bottom"
    GLOBAL CONST $TAGSIZE = "long X;long Y"
    GLOBAL CONST $TAGMARGINS = "int cxLeftWidth;int cxRightWidth;int cyTopHeight;int cyBottomHeight"
    GLOBAL CONST $TAGFILETIME = "dword Lo;dword Hi"
    GLOBAL CONST $TA****TEMTIME = "word Year;word Month;word Dow;word Day;word Hour;word Minute;word Second;word MSeconds"
    GLOBAL CONST $TAGTIME_ZONE_INFORMATION = "long Bias;wchar StdName[32];word StdDate[8];long StdBias;wchar DayName[32];word DayDate[8];long DayBias"
    GLOBAL CONST $TAGNMHDR = "hwnd hWndFrom;uint_ptr IDFrom;INT Code"
    GLOBAL CONST $TAGCOMBOBOXEXITEM = "uint Mask;int_ptr Item;ptr Text;int TextMax;int Image;int SelectedImage;int OverlayImage;" & "int Indent;lparam Param"
    GLOBAL CONST $TAGNMCBEDRAGBEGIN = $TAGNMHDR & ";int ItemID;ptr szText"
    GLOBAL CONST $TAGNMCBEENDEDIT = $TAGNMHDR & ";bool fChanged;int NewSelection;ptr szText;int Why"
    GLOBAL CONST $TAGNMCOMBOBOXEX = $TAGNMHDR & ";uint Mask;int_ptr Item;ptr Text;int TextMax;int Image;" & "int SelectedImage;int OverlayImage;int Indent;lparam Param"
    GLOBAL CONST $TAGDTPRANGE = "word MinYear;word MinMonth;word MinDOW;word MinDay;word MinHour;word MinMinute;" & "word MinSecond;word MinMSecond;word MaxYear;word MaxMonth;word MaxDOW;word MaxDay;word MaxHour;" & "word MaxMinute;word MaxSecond;word MaxMSecond;bool MinValid;bool MaxValid"
    GLOBAL CONST $TAGNMDATETIMECHANGE = $TAGNMHDR & ";dword Flag;" & $TA****TEMTIME
    GLOBAL CONST $TAGNMDATETIMEFORMAT = $TAGNMHDR & ";ptr Format;" & $TA****TEMTIME & ";ptr pDisplay;wchar Display[64]"
    GLOBAL CONST $TAGNMDATETIMEFORMATQUERY = $TAGNMHDR & ";ptr Format;long SizeX;long SizeY"
    GLOBAL CONST $TAGNMDATETIMEKEYDOWN = $TAGNMHDR & ";int VirtKey;ptr Format;" & $TA****TEMTIME
    GLOBAL CONST $TAGNMDATETIMESTRING = $TAGNMHDR & ";ptr UserString;" & $TA****TEMTIME & ";dword Flags"
    GLOBAL CONST $TAGEVENTLOGRECORD = "dword Length;dword Reserved;dword RecordNumber;dword TimeGenerated;dword TimeWritten;dword EventID;" & "word EventType;word NumStrings;word EventCategory;word ReservedFlags;dword ClosingRecordNumber;dword StringOffset;" & "dword UserSidLength;dword UserSidOffset;dword DataLength;dword DataOffset"
    GLOBAL CONST $TAGGDIPBITMAPDATA = "uint Width;uint Height;int Stride;int Format;ptr Scan0;uint_ptr Reserved"
    GLOBAL CONST $TAGGDIPENCODERPARAM = "byte GUID[16];dword Count;dword Type;ptr Values"
    GLOBAL CONST $TAGGDIPENCODERPARAMS = "dword Count;byte Params[0]"
    GLOBAL CONST $TAGGDIPRECTF = "float X;float Y;float Width;float Height"
    GLOBAL CONST $TAGGDIPSTARTUPINPUT = "uint Version;ptr Callback;bool NoThread;bool NoCodecs"
    GLOBAL CONST $TAGGDIPSTARTUPOUTPUT = "ptr HookProc;ptr UnhookProc"
    GLOBAL CONST $TAGGDIPIMAGECODECINFO = "byte CLSID[16];byte FormatID[16];ptr CodecName;ptr DllName;ptr FormatDesc;ptr FileExt;" & "ptr MimeType;dword Flags;dword Version;dword SigCount;dword SigSize;ptr SigPattern;ptr SigMask"
    GLOBAL CONST $TAGGDIPPENCODERPARAMS = "dword Count;byte Params[0]"
    GLOBAL CONST $TAGHDITEM = "uint Mask;int XY;ptr Text;handle hBMP;int TextMax;int Fmt;lparam Param;int Image;int Order;uint Type;ptr pFilter;uint State"
    GLOBAL CONST $TAGNMHDDISPINFO = $TAGNMHDR & ";int Item;uint Mask;ptr Text;int TextMax;int Image;lparam lParam"
    GLOBAL CONST $TAGNMHDFILTERBTNCLICK = $TAGNMHDR & ";int Item;" & $TAGRECT
    GLOBAL CONST $TAGNMHEADER = $TAGNMHDR & ";int Item;int Button;ptr pItem"
    GLOBAL CONST $TAGGETIPADDRESS = "byte Field4;byte Field3;byte Field2;byte Field1"
    GLOBAL CONST $TAGNMIPADDRESS = $TAGNMHDR & ";int Field;int Value"
    GLOBAL CONST $TAGLVFINDINFO = "uint Flags;ptr Text;lparam Param;" & $TAGPOINT & ";uint Direction"
    GLOBAL CONST $TAGLVHITTESTINFO = $TAGPOINT & ";uint Flags;int Item;int SubItem"
    GLOBAL CONST $TAGLVITEM = "uint Mask;int Item;int SubItem;uint State;uint StateMask;ptr Text;int TextMax;int Image;lparam Param;" & "int Indent;int GroupID;uint Columns;ptr pColumns"
    GLOBAL CONST $TAGNMLISTVIEW = $TAGNMHDR & ";int Item;int SubItem;uint NewState;uint OldState;uint Changed;" & "long ActionX;long ActionY;lparam Param"
    GLOBAL CONST $TAGNMLVCUSTOMDRAW = $TAGNMHDR & ";dword dwDrawStage;handle hdc;long Left;long Top;long Right;long Bottom;" & "dword_ptr dwItemSpec;uint uItemState;lparam lItemlParam" & ";dword clrText;dword clrTextBk;int iSubItem;dword dwItemType;dword clrFace;int iIconEffect;" & "int iIconPhase;int iPartId;int iStateId;long TextLeft;long TextTop;long TextRight;long TextBottom;uint uAlign"
    GLOBAL CONST $TAGNMLVDISPINFO = $TAGNMHDR & ";" & $TAGLVITEM
    GLOBAL CONST $TAGNMLVFINDITEM = $TAGNMHDR & ";" & $TAGLVFINDINFO
    GLOBAL CONST $TAGNMLVGETINFOTIP = $TAGNMHDR & ";dword Flags;ptr Text;int TextMax;int Item;int SubItem;lparam lParam"
    GLOBAL CONST $TAGNMITEMACTIVATE = $TAGNMHDR & ";int Index;int SubItem;uint NewState;uint OldState;uint Changed;" & $TAGPOINT & ";lparam lParam;uint KeyFlags"
    GLOBAL CONST $TAGNMLVKEYDOWN = $TAGNMHDR & ";align 1;word VKey;uint Flags"
    GLOBAL CONST $TAGNMLVSCROLL = $TAGNMHDR & ";int DX;int DY"
    GLOBAL CONST $TAGMCHITTESTINFO = "uint Size;" & $TAGPOINT & ";uint Hit;" & $TA****TEMTIME
    GLOBAL CONST $TAGMCMONTHRANGE = "word MinYear;word MinMonth;word MinDOW;word MinDay;word MinHour;word MinMinute;word MinSecond;" & "word MinMSeconds;word MaxYear;word MaxMonth;word MaxDOW;word MaxDay;word MaxHour;word MaxMinute;word MaxSecond;" & "word MaxMSeconds;short Span"
    GLOBAL CONST $TAGMCRANGE = "word MinYear;word MinMonth;word MinDOW;word MinDay;word MinHour;word MinMinute;word MinSecond;" & "word MinMSeconds;word MaxYear;word MaxMonth;word MaxDOW;word MaxDay;word MaxHour;word MaxMinute;word MaxSecond;" & "word MaxMSeconds;short MinSet;short MaxSet"
    GLOBAL CONST $TAGMCSELRANGE = "word MinYear;word MinMonth;word MinDOW;word MinDay;word MinHour;word MinMinute;word MinSecond;" & "word MinMSeconds;word MaxYear;word MaxMonth;word MaxDOW;word MaxDay;word MaxHour;word MaxMinute;word MaxSecond;" & "word MaxMSeconds"
    GLOBAL CONST $TAGNMDAYSTATE = $TAGNMHDR & ";" & $TA****TEMTIME & ";int DayState;ptr pDayState"
    GLOBAL CONST $TAGNMSELCHANGE = $TAGNMHDR & ";word BegYear;word BegMonth;word BegDOW;word BegDay;" & "word BegHour;word BegMinute;word BegSecond;word BegMSeconds;word EndYear;word EndMonth;word EndDOW;" & "word EndDay;word EndHour;word EndMinute;word EndSecond;word EndMSeconds"
    GLOBAL CONST $TAGNMOBJECTNOTIFY = $TAGNMHDR & ";int Item;ptr piid;ptr pObject;long Result"
    GLOBAL CONST $TAGNMTCKEYDOWN = $TAGNMHDR & ";word VKey;uint Flags"
    GLOBAL CONST $TAGTVITEM = "uint Mask;handle hItem;uint State;uint StateMask;ptr Text;int TextMax;int Image;int SelectedImage;" & "int Children;lparam Param"
    GLOBAL CONST $TAGTVITEMEX = $TAGTVITEM & ";int Integral"
    GLOBAL CONST $TAGNMTREEVIEW = $TAGNMHDR & ";uint Action;uint OldMask;handle OldhItem;uint OldState;uint OldStateMask;" & "ptr OldText;int OldTextMax;int OldImage;int OldSelectedImage;int OldChildren;lparam OldParam;uint NewMask;handle NewhItem;" & "uint NewState;uint NewStateMask;ptr NewText;int NewTextMax;int NewImage;int NewSelectedImage;int NewChildren;" & "lparam NewParam;long PointX;long PointY"
    GLOBAL CONST $TAGNMTVCUSTOMDRAW = $TAGNMHDR & ";dword DrawStage;handle HDC;long Left;long Top;long Right;long Bottom;" & "dword_ptr ItemSpec;uint ItemState;lparam ItemParam;dword ClrText;dword ClrTextBk;int Level"
    GLOBAL CONST $TAGNMTVDISPINFO = $TAGNMHDR & ";" & $TAGTVITEM
    GLOBAL CONST $TAGNMTVGETINFOTIP = $TAGNMHDR & ";ptr Text;int TextMax;handle hItem;lparam lParam"
    GLOBAL CONST $TAGTVHITTESTINFO = $TAGPOINT & ";uint Flags;handle Item"
    GLOBAL CONST $TAGNMTVKEYDOWN = $TAGNMHDR & ";word VKey;uint Flags"
    GLOBAL CONST $TAGNMMOUSE = $TAGNMHDR & ";dword_ptr ItemSpec;dword_ptr ItemData;" & $TAGPOINT & ";lparam HitInfo"
    GLOBAL CONST $TAGTOKEN_PRIVILEGES = "dword Count;int64 LUID;dword Attributes"
    GLOBAL CONST $TAGIMAGEINFO = "handle hBitmap;handle hMask;int Unused1;int Unused2;" & $TAGRECT
    GLOBAL CONST $TAGMENUINFO = "dword Size;INT Mask;dword Style;uint YMax;handle hBack;dword ContextHelpID;ulong_ptr MenuData"
    GLOBAL CONST $TAGMENUITEMINFO = "uint Size;uint Mask;uint Type;uint State;uint ID;handle SubMenu;handle BmpChecked;handle BmpUnchecked;" & "ulong_ptr ItemData;ptr TypeData;uint CCH;handle BmpItem"
    GLOBAL CONST $TAGREBARBANDINFO = "uint cbSize;uint fMask;uint fStyle;dword clrFore;dword clrBack;ptr lpText;uint cch;" & "int iImage;hwnd hwndChild;uint cxMinChild;uint cyMinChild;uint cx;handle hbmBack;uint wID;uint cyChild;uint cyMaxChild;" & "uint cyIntegral;uint cxIdeal;lparam lParam;uint cxHeader"
    GLOBAL CONST $TAGNMREBARAUTOBREAK = $TAGNMHDR & ";uint uBand;uint wID;lparam lParam;uint uMsg;uint fStyleCurrent;bool fAutoBreak"
    GLOBAL CONST $TAGNMRBAUTOSIZE = $TAGNMHDR & ";bool fChanged;long TargetLeft;long TargetTop;long TargetRight;long TargetBottom;" & "long ActualLeft;long ActualTop;long ActualRight;long ActualBottom"
    GLOBAL CONST $TAGNMREBAR = $TAGNMHDR & ";dword dwMask;uint uBand;uint fStyle;uint wID;laram lParam"
    GLOBAL CONST $TAGNMREBARCHEVRON = $TAGNMHDR & ";uint uBand;uint wID;lparam lParam;" & $TAGRECT & ";lparam lParamNM"
    GLOBAL CONST $TAGNMREBARCHILDSIZE = $TAGNMHDR & ";uint uBand;uint wID;long CLeft;long CTop;long CRight;long CBottom;" & "long BLeft;long BTop;long BRight;long BBottom"
    GLOBAL CONST $TAGCOLORSCHEME = "dword Size;dword BtnHighlight;dword BtnShadow"
    GLOBAL CONST $TAGNMTOOLBAR = $TAGNMHDR & ";int iItem;" & "int iBitmap;int idCommand;byte fsState;byte fsStyle;align;dword_ptr dwData;int_ptr iString" & ";int cchText;ptr pszText;" & $TAGRECT
    GLOBAL CONST $TAGNMTBHOTITEM = $TAGNMHDR & ";int idOld;int idNew;dword dwFlags"
    GLOBAL CONST $TAGTBBUTTON = "int Bitmap;int Command;byte State;byte Style;align;dword_ptr Param;int_ptr String"
    GLOBAL CONST $TAGTBBUTTONINFO = "uint Size;dword Mask;int Command;int Image;byte State;byte Style;word CX;dword_ptr Param;ptr Text;int TextMax"
    GLOBAL CONST $TAGNETRESOURCE = "dword Scope;dword Type;dword DisplayType;dword Usage;ptr LocalName;ptr RemoteName;ptr Comment;ptr Provider"
    GLOBAL CONST $TAGOVERLAPPED = "ulong_ptr Internal;ulong_ptr InternalHigh;dword Offset;dword OffsetHigh;handle hEvent"
    GLOBAL CONST $TAGOPENFILENAME = "dword StructSize;hwnd hwndOwner;handle hInstance;ptr lpstrFilter;ptr lpstrCustomFilter;" & "dword nMaxCustFilter;dword nFilterIndex;ptr lpstrFile;dword nMaxFile;ptr lpstrFileTitle;dword nMaxFileTitle;" & "ptr lpstrInitialDir;ptr lpstrTitle;dword Flags;word nFileOffset;word nFileExtension;ptr lpstrDefExt;lparam lCustData;" & "ptr lpfnHook;ptr lpTemplateName;ptr pvReserved;dword dwReserved;dword FlagsEx"
    GLOBAL CONST $TAGBITMAPINFO = "dword Size;long Width;long Height;word Planes;word BitCount;dword Compression;dword SizeImage;" & "long XPelsPerMeter;long YPelsPerMeter;dword ClrUsed;dword ClrImportant;dword RGBQuad"
    GLOBAL CONST $TAGBLENDFUNCTION = "byte Op;byte Flags;byte Alpha;byte Format"
    GLOBAL CONST $TAGGUID = "dword Data1;word Data2;word Data3;byte Data4[8]"
    GLOBAL CONST $TAGWINDOWPLACEMENT = "uint length; uint flags;uint showCmd;long ptMinPosition[2];long ptMaxPosition[2];long rcNormalPosition[4]"
    GLOBAL CONST $TAGWINDOWPOS = "hwnd hWnd;hwnd InsertAfter;int X;int Y;int CX;int CY;uint Flags"
    GLOBAL CONST $TAGSCROLLINFO = "uint cbSize;uint fMask;int nMin;int nMax;uint nPage;int nPos;int nTrackPos"
    GLOBAL CONST $TAGSCROLLBARINFO = "dword cbSize;" & $TAGRECT & ";int dxyLineButton;int xyThumbTop;" & "int xyThumbBottom;int reserved;dword rgstate[6]"
    GLOBAL CONST $TAGLOGFONT = "long Height;long Width;long Escapement;long Orientation;long Weight;byte Italic;byte Underline;" & "byte Strikeout;byte CharSet;byte OutPrecision;byte ClipPrecision;byte Quality;byte PitchAndFamily;wchar FaceName[32]"
    GLOBAL CONST $TAGKBDLLHOOKSTRUCT = "dword vkCode;dword scanCode;dword flags;dword time;ulong_ptr dwExtraInfo"
    GLOBAL CONST $TAGPROCESS_INFORMATION = "handle hProcess;handle hThread;dword ProcessID;dword ThreadID"
    GLOBAL CONST $TAGSTARTUPINFO = "dword Size;ptr Reserved1;ptr Desktop;ptr Title;dword X;dword Y;dword XSize;dword YSize;dword XCountChars;" & "dword YCountChars;dword FillAttribute;dword Flags;word ShowWindow;word Reserved2;ptr Reserved3;handle StdInput;" & "handle StdOutput;handle StdError"
    GLOBAL CONST $TAGSECURITY_ATTRIBUTES = "dword Length;ptr Descriptor;bool InheritHandle"
    GLOBAL CONST $TAGWIN32_FIND_DATA = "dword dwFileAttributes; dword ftCreationTime[2]; dword ftLastAccessTime[2]; dword ftLastWriteTime[2]; dword nFileSizeHigh; dword nFileSizeLow; dword dwReserved0; dword dwReserved1; wchar cFileName[260]; wchar cAlternateFileName[14]"
    GLOBAL CONST $PROCESS_TERMINATE = 1
    GLOBAL CONST $PROCESS_CREATE_THREAD = 2
    GLOBAL CONST $PROCESS_SET_SESSIONID = 4
    GLOBAL CONST $PROCESS_VM_OPERATION = 8
    GLOBAL CONST $PROCESS_VM_READ = 16
    GLOBAL CONST $PROCESS_VM_WRITE = 32
    GLOBAL CONST $PROCESS_DUP_HANDLE = 64
    GLOBAL CONST $PROCESS_CREATE_PROCESS = 128
    GLOBAL CONST $PROCESS_SET_QUOTA = 256
    GLOBAL CONST $PROCESS_SET_INFORMATION = 512
    GLOBAL CONST $PROCESS_QUERY_INFORMATION = 1024
    GLOBAL CONST $PROCESS_SUSPEND_RESUME = 2048
    GLOBAL CONST $PROCESS_ALL_ACCESS = 2035711
    GLOBAL CONST $ERROR_NO_TOKEN = 1008
    GLOBAL CONST $SE_ASSIGNPRIMARYTOKEN_NAME = "SeAssignPrimaryTokenPrivilege"
    GLOBAL CONST $SE_AUDIT_NAME = "SeAuditPrivilege"
    GLOBAL CONST $SE_BACKUP_NAME = "SeBackupPrivilege"
    GLOBAL CONST $SE_CHANGE_NOTIFY_NAME = "SeChangeNotifyPrivilege"
    GLOBAL CONST $SE_CREATE_GLOBAL_NAME = "SeCreateGlobalPrivilege"
    GLOBAL CONST $SE_CREATE_PAGEFILE_NAME = "SeCreatePagefilePrivilege"
    GLOBAL CONST $SE_CREATE_PERMANENT_NAME = "SeCreatePermanentPrivilege"
    GLOBAL CONST $SE_CREATE_TOKEN_NAME = "SeCreateTokenPrivilege"
    GLOBAL CONST $SE_DEBUG_NAME = "SeDebugPrivilege"
    GLOBAL CONST $SE_ENABLE_DELEGATION_NAME = "SeEnableDelegationPrivilege"
    GLOBAL CONST $SE_IMPERSONATE_NAME = "SeImpersonatePrivilege"
    GLOBAL CONST $SE_INC_BASE_PRIORITY_NAME = "SeIncreaseBasePriorityPrivilege"
    GLOBAL CONST $SE_INCREASE_QUOTA_NAME = "SeIncreaseQuotaPrivilege"
    GLOBAL CONST $SE_LOAD_DRIVER_NAME = "SeLoadDriverPrivilege"
    GLOBAL CONST $SE_LOCK_MEMORY_NAME = "SeLockMemoryPrivilege"
    GLOBAL CONST $SE_MACHINE_ACCOUNT_NAME = "SeMachineAccountPrivilege"
    GLOBAL CONST $SE_MANAGE_VOLUME_NAME = "SeManageVolumePrivilege"
    GLOBAL CONST $SE_PROF_SINGLE_PROCESS_NAME = "SeProfileSingleProcessPrivilege"
    GLOBAL CONST $SE_REMOTE_SHUTDOWN_NAME = "SeRemoteShutdownPrivilege"
    GLOBAL CONST $SE_RESTORE_NAME = "SeRestorePrivilege"
    GLOBAL CONST $SE_SECURITY_NAME = "SeSecurityPrivilege"
    GLOBAL CONST $SE_SHUTDOWN_NAME = "SeShutdownPrivilege"
    GLOBAL CONST $SE_SYNC_AGENT_NAME = "SeSyncAgentPrivilege"
    GLOBAL CONST $SE_SYSTEM_ENVIRONMENT_NAME = "SeSystemEnvironmentPrivilege"
    GLOBAL CONST $SE_SYSTEM_PROFILE_NAME = "SeSystemProfilePrivilege"
    GLOBAL CONST $SE_SYSTEMTIME_NAME = "SeSystemtimePrivilege"
    GLOBAL CONST $SE_TAKE_OWNERSHIP_NAME = "SeTakeOwnershipPrivilege"
    GLOBAL CONST $SE_TCB_NAME = "SeTcbPrivilege"
    GLOBAL CONST $SE_UNSOLICITED_INPUT_NAME = "SeUnsolicitedInputPrivilege"
    GLOBAL CONST $SE_UNDOCK_NAME = "SeUndockPrivilege"
    GLOBAL CONST $SE_PRIVILEGE_ENABLED_BY_DEFAULT = 1
    GLOBAL CONST $SE_PRIVILEGE_ENABLED = 2
    GLOBAL CONST $SE_PRIVILEGE_REMOVED = 4
    GLOBAL CONST $SE_PRIVILEGE_USED_FOR_ACCESS = - - - 2147483648
    GLOBAL CONST $TOKENUSER = 1
    GLOBAL CONST $TOKENGROUPS = 2
    GLOBAL CONST $TOKENPRIVILEGES = 3
    GLOBAL CONST $TOKENOWNER = 4
    GLOBAL CONST $TOKENPRIMARYGROUP = 5
    GLOBAL CONST $TOKENDEFAULTDACL = 6
    GLOBAL CONST $TOKENSOURCE = 7
    GLOBAL CONST $TOKENTYPE = 8
    GLOBAL CONST $TOKENIMPERSONATIONLEVEL = 9
    GLOBAL CONST $TOKENSTATISTICS = 10
    GLOBAL CONST $TOKENRESTRICTEDSIDS = 11
    GLOBAL CONST $TOKENSESSIONID = 12
    GLOBAL CONST $TOKENGROUPSANDPRIVILEGES = 13
    GLOBAL CONST $TOKENSESSIONREFERENCE = 14
    GLOBAL CONST $TOKENSANDBOXINERT = 15
    GLOBAL CONST $TOKENAUDITPOLICY = 16
    GLOBAL CONST $TOKENORIGIN = 17
    GLOBAL CONST $TOKENELEVATIONTYPE = 18
    GLOBAL CONST $TOKENLINKEDTOKEN = 19
    GLOBAL CONST $TOKENELEVATION = 20
    GLOBAL CONST $TOKENHASRESTRICTIONS = 21
    GLOBAL CONST $TOKENACCESSINFORMATION = 22
    GLOBAL CONST $TOKENVIRTUALIZATIONALLOWED = 23
    GLOBAL CONST $TOKENVIRTUALIZATIONENABLED = 24
    GLOBAL CONST $TOKENINTEGRITYLEVEL = 25
    GLOBAL CONST $TOKENUIACCESS = 26
    GLOBAL CONST $TOKENMANDATORYPOLICY = 27
    GLOBAL CONST $TOKENLOGONSID = 28
    GLOBAL CONST $TOKEN_ASSIGN_PRIMARY = 1
    GLOBAL CONST $TOKEN_DUPLICATE = 2
    GLOBAL CONST $TOKEN_IMPERSONATE = 4
    GLOBAL CONST $TOKEN_QUERY = 8
    GLOBAL CONST $TOKEN_QUERY_SOURCE = 16
    GLOBAL CONST $TOKEN_ADJUST_PRIVILEGES = 32
    GLOBAL CONST $TOKEN_ADJUST_GROUPS = 64
    GLOBAL CONST $TOKEN_ADJUST_DEFAULT = 128
    GLOBAL CONST $TOKEN_ADJUST_SESSIONID = 256
    GLOBAL CONST $FC_NOOVERWRITE = 0
    GLOBAL CONST $FC_OVERWRITE = 1
    GLOBAL CONST $FT_MODIFIED = 0
    GLOBAL CONST $FT_CREATED = 1
    GLOBAL CONST $FT_ACCESSED = 2
    GLOBAL CONST $FO_READ = 0
    GLOBAL CONST $FO_APPEND = 1
    GLOBAL CONST $FO_OVERWRITE = 2
    GLOBAL CONST $FO_BINARY = 16
    GLOBAL CONST $FO_UNICODE = 32
    GLOBAL CONST $FO_UTF16_LE = 32
    GLOBAL CONST $FO_UTF16_BE = 64
    GLOBAL CONST $FO_UTF8 = 128
    GLOBAL CONST $FO_UTF8_NOBOM = 256
    GLOBAL CONST $EOF = -1
    GLOBAL CONST $FD_FILEMUSTEXIST = 1
    GLOBAL CONST $FD_PATHMUSTEXIST = 2
    GLOBAL CONST $FD_MULTISELECT = 4
    GLOBAL CONST $FD_PROMPTCREATENEW = 8
    GLOBAL CONST $FD_PROMPTOVERWRITE = 16
    GLOBAL CONST $CREATE_NEW = 1
    GLOBAL CONST $CREATE_ALWAYS = 2
    GLOBAL CONST $OPEN_EXISTING = 3
    GLOBAL CONST $OPEN_ALWAYS = 4
    GLOBAL CONST $TRUNCATE_EXISTING = 5
    GLOBAL CONST $INVALID_SET_FILE_POINTER = -1
    GLOBAL CONST $FILE_BEGIN = 0
    GLOBAL CONST $FILE_CURRENT = 1
    GLOBAL CONST $FILE_END = 2
    GLOBAL CONST $FILE_ATTRIBUTE_READONLY = 1
    GLOBAL CONST $FILE_ATTRIBUTE_HIDDEN = 2
    GLOBAL CONST $FILE_ATTRIBUTE_SYSTEM = 4
    GLOBAL CONST $FILE_ATTRIBUTE_DIRECTORY = 16
    GLOBAL CONST $FILE_ATTRIBUTE_ARCHIVE = 32
    GLOBAL CONST $FILE_ATTRIBUTE_DEVICE = 64
    GLOBAL CONST $FILE_ATTRIBUTE_NORMAL = 128
    GLOBAL CONST $FILE_ATTRIBUTE_TEMPORARY = 256
    GLOBAL CONST $FILE_ATTRIBUTE_SPARSE_FILE = 512
    GLOBAL CONST $FILE_ATTRIBUTE_REPARSE_POINT = 1024
    GLOBAL CONST $FILE_ATTRIBUTE_COMPRESSED = 2048
    GLOBAL CONST $FILE_ATTRIBUTE_OFFLINE = 4096
    GLOBAL CONST $FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 8192
    GLOBAL CONST $FILE_ATTRIBUTE_ENCRYPTED = 16384
    GLOBAL CONST $FILE_SHARE_READ = 1
    GLOBAL CONST $FILE_SHARE_WRITE = 2
    GLOBAL CONST $FILE_SHARE_DELETE = 4
    GLOBAL CONST $GENERIC_ALL = 268435456
    GLOBAL CONST $GENERIC_EXECUTE = 536870912
    GLOBAL CONST $GENERIC_WRITE = 1073741824
    GLOBAL CONST $GENERIC_READ = - - - 2147483648
    FUNC _SENDMESSAGE($HWND, $IMSG, $WPARAM = 0, $LPARAM = 0, $IRETURN = 0, $WPARAMTYPE = "wparam", $LPARAMTYPE = "lparam", $SRETURNTYPE = "lresult")
    LOCAL $ARESULT = DLLCALL("user32.dll", $SRETURNTYPE, "SendMessageW", "hwnd", $HWND, "uint", $IMSG, $WPARAMTYPE, $WPARAM, $LPARAMTYPE, $LPARAM)
    IF @error THEN RETURN SETERROR @error, @extendED, "")
    IF $IRETURN >= 0 AND $IRETURN <= 4 THEN RETURN $ARESULT[$IRETURN]
    RETURN $ARESULT
    ENDFUNC ;==>_SENDMESSAGE
    FUNC _SENDMESSAGEA($HWND, $IMSG, $WPARAM = 0, $LPARAM = 0, $IRETURN = 0, $WPARAMTYPE = "wparam", $LPARAMTYPE = "lparam", $SRETURNTYPE = "lresult")
    LOCAL $ARESULT = DLLCALL("user32.dll", $SRETURNTYPE, "SendMessageA", "hwnd", $HWND, "uint", $IMSG, $WPARAMTYPE, $WPARAM, $LPARAMTYPE, $LPARAM)
    IF @error THEN RETURN SETERROR @error, @extendED, "")
    IF $IRETURN >= 0 AND $IRETURN <= 4 THEN RETURN $ARESULT[$IRETURN]
    RETURN $ARESULT
    ENDFUNC ;==>_SENDMESSAGEA
    GLOBAL $__GAINPROCESS_WINAPI[64][2] = [[0, 0]]
    GLOBAL $__GAWINLIST_WINAPI[64][2] = [[0, 0]]
    GLOBAL CONST $__WINAPICONSTANT_WM_SETFONT = 48
    GLOBAL CONST $__WINAPICONSTANT_FW_NORMAL = 400
    GLOBAL CONST $__WINAPICONSTANT_DEFAULT_CHARSET = 1
    GLOBAL CONST $__WINAPICONSTANT_OUT_DEFAULT_PRECIS = 0
    GLOBAL CONST $__WINAPICONSTANT_CLIP_DEFAULT_PRECIS = 0
    GLOBAL CONST $__WINAPICONSTANT_DEFAULT_QUALITY = 0
    GLOBAL CONST $__WINAPICONSTANT_FORMAT_MESSAGE_ALLOCATE_BUFFER = 256
    GLOBAL CONST $__WINAPICONSTANT_FORMAT_MESSAGE_FROM_SYSTEM = 4096
    GLOBAL CONST $__WINAPICONSTANT_LOGPIXELSX = 88
    GLOBAL CONST $__WINAPICONSTANT_LOGPIXELSY = 90
    GLOBAL CONST $HGDI_ERROR = PTR(-1)
    GLOBAL CONST $INVALID_HANDLE_VALUE = PTR(-1)
    GLOBAL CONST $CLR_INVALID = -1
    GLOBAL CONST $__WINAPICONSTANT_FLASHW_CAPTION = 1
    GLOBAL CONST $__WINAPICONSTANT_FLASHW_TRAY = 2
    GLOBAL CONST $__WINAPICONSTANT_FLASHW_TIMER = 4
    GLOBAL CONST $__WINAPICONSTANT_FLASHW_TIMERNOFG = 12
    GLOBAL CONST $__WINAPICONSTANT_GW_HWNDNEXT = 2
    GLOBAL CONST $__WINAPICONSTANT_GW_CHILD = 5
    GLOBAL CONST $__WINAPICONSTANT_DI_MASK = 1
    GLOBAL CONST $__WINAPICONSTANT_DI_IMAGE = 2
    GLOBAL CONST $__WINAPICONSTANT_DI_NORMAL = 3
    GLOBAL CONST $__WINAPICONSTANT_DI_COMPAT = 4
    GLOBAL CONST $__WINAPICONSTANT_DI_DEFAULTSIZE = 8
    GLOBAL CONST $__WINAPICONSTANT_DI_NOMIRROR = 16
    GLOBAL CONST $__WINAPICONSTANT_DISPLAY_DEVICE_ATTACHED_TO_DESKT OP = 1
    GLOBAL CONST $__WINAPICONSTANT_DISPLAY_DEVICE_PRIMARY_DEVICE = 4
    GLOBAL CONST $__WINAPICONSTANT_DISPLAY_DEVICE_MIRRORING_DRIVER = 8
    GLOBAL CONST $__WINAPICONSTANT_DISPLAY_DEVICE_VGA_COMPATIBLE = 16
    GLOBAL CONST $__WINAPICONSTANT_DISPLAY_DEVICE_REMOVABLE = 32
    GLOBAL CONST $__WINAPICONSTANT_DISPLAY_DEVICE_MODESPRUNED = 134217728
    GLOBAL CONST $NULL_BRUSH = 5
    GLOBAL CONST $NULL_PEN = 8
    GLOBAL CONST $BLACK_BRUSH = 4
    GLOBAL CONST $DKGRAY_BRUSH = 3
    GLOBAL CONST $DC_BRUSH = 18
    GLOBAL CONST $GRAY_BRUSH = 2
    GLOBAL CONST $HOLLOW_BRUSH = $NULL_BRUSH
    GLOBAL CONST $LTGRAY_BRUSH = 1
    GLOBAL CONST $WHITE_BRUSH = 0
    GLOBAL CONST $BLACK_PEN = 7
    GLOBAL CONST $DC_PEN = 19
    GLOBAL CONST $WHITE_PEN = 6
    GLOBAL CONST $ANSI_FIXED_FONT = 11
    GLOBAL CONST $ANSI_VAR_FONT = 12
    GLOBAL CONST $DEVICE_DEFAULT_FONT = 14
    GLOBAL CONST $DEFAULT_GUI_FONT = 17
    GLOBAL CONST $OEM_FIXED_FONT = 10
    GLOBAL CONST $SYSTEM_FONT = 13
    GLOBAL CONST $SYSTEM_FIXED_FONT = 16
    GLOBAL CONST $DEFAULT_PALETTE = 15
    GLOBAL CONST $MB_PRECOMPOSED = 1
    GLOBAL CONST $MB_COMPOSITE = 2
    GLOBAL CONST $MB_USEGLYPHCHARS = 4
    GLOBAL CONST $ULW_ALPHA = 2
    GLOBAL CONST $ULW_COLORKEY = 1
    GLOBAL CONST $ULW_OPAQUE = 4
    GLOBAL CONST $WH_CALLWNDPROC = 4
    GLOBAL CONST $WH_CALLWNDPROCRET = 12
    GLOBAL CONST $WH_CBT = 5
    GLOBAL CONST $WH_DEBUG = 9
    GLOBAL CONST $WH_FOREGROUNDIDLE = 11
    GLOBAL CONST $WH_GETMESSAGE = 3
    GLOBAL CONST $WH_JOURNALPLAYBACK = 1
    GLOBAL CONST $WH_JOURNALRECORD = 0
    GLOBAL CONST $WH_KEYBOARD = 2
    GLOBAL CONST $WH_KEYBOARD_LL = 13
    GLOBAL CONST $WH_MOUSE = 7
    GLOBAL CONST $WH_MOUSE_LL = 14
    GLOBAL CONST $WH_MSGFILTER = -1
    GLOBAL CONST $WH_SHELL = 10
    GLOBAL CONST $WH_SYSMSGFILTER = 6
    GLOBAL CONST $WPF_ASYNCWINDOWPLACEMENT = 4
    GLOBAL CONST $WPF_RESTORETOMAXIMIZED = 2
    GLOBAL CONST $WPF_SETMINPOSITION = 1
    GLOBAL CONST $KF_EXTENDED = 256
    GLOBAL CONST $KF_ALTDOWN = 8192
    GLOBAL CONST $KF_UP = 32768
    GLOBAL CONST $LLKHF_EXTENDED = BITSHIFT($KF_EXTENDED, 8)
    GLOBAL CONST $LLKHF_INJECTED = 16
    GLOBAL CONST $LLKHF_ALTDOWN = BITSHIFT($KF_ALTDOWN, 8)
    GLOBAL CONST $LLKHF_UP = BITSHIFT($KF_UP, 8)
    GLOBAL CONST $OFN_ALLOWMULTISELECT = 512
    GLOBAL CONST $OFN_CREATEPROMPT = 8192
    GLOBAL CONST $OFN_DONTADDTORECENT = 33554432
    GLOBAL CONST $OFN_ENABLEHOOK = 32
    GLOBAL CONST $OFN_ENABLEINCLUDENOTIFY = 4194304
    GLOBAL CONST $OFN_ENABLESIZING = 8388608
    GLOBAL CONST $OFN_ENABLETEMPLATE = 64
    GLOBAL CONST $OFN_ENABLETEMPLATEHANDLE = 128
    GLOBAL CONST $OFN_EXPLORER = 524288
    GLOBAL CONST $OFN_EXTENSIONDIFFERENT = 1024
    GLOBAL CONST $OFN_FILEMUSTEXIST = 4096
    GLOBAL CONST $OFN_FORCESHOWHIDDEN = 268435456
    GLOBAL CONST $OFN_HIDEREADONLY = 4
    GLOBAL CONST $OFN_LONGNAMES = 2097152
    GLOBAL CONST $OFN_NOCHANGEDIR = 8
    GLOBAL CONST $OFN_NODEREFERENCELINKS = 1048576
    GLOBAL CONST $OFN_NOLONGNAMES = 262144
    GLOBAL CONST $OFN_NONETWORKBUTTON = 131072
    GLOBAL CONST $OFN_NOREADONLYRETURN = 32768
    GLOBAL CONST $OFN_NOTESTFILECREATE = 65536
    GLOBAL CONST $OFN_NOVALIDATE = 256
    GLOBAL CONST $OFN_OVERWRITEPROMPT = 2
    GLOBAL CONST $OFN_PATHMUSTEXIST = 2048
    GLOBAL CONST $OFN_READONLY = 1
    GLOBAL CONST $OFN_SHAREAWARE = 16384
    GLOBAL CONST $OFN_SHOWHELP = 16
    GLOBAL CONST $OFN_EX_NOPLACESBAR = 1
    GLOBAL CONST $TAGCURSORINFO = "dword Size;dword Flags;handle hCursor;" & $TAGPOINT
    GLOBAL CONST $TAGDISPLAY_DEVICE = "dword Size;wchar Name[32];wchar String[128];dword Flags;wchar ID[128];wchar Key[128]"
    GLOBAL CONST $TAGFLASHWINFO = "uint Size;hwnd hWnd;dword Flags;uint Count;dword TimeOut"
    GLOBAL CONST $TAGICONINFO = "bool Icon;dword XHotSpot;dword YHotSpot;handle hMask;handle hColor"
    GLOBAL CONST $TAGMEMORYSTATUSEX = "dword Length;dword MemoryLoad;" & "uint64 TotalPhys;uint64 AvailPhys;uint64 TotalPageFile;uint64 AvailPageFile;" & "uint64 TotalVirtual;uint64 AvailVirtual;uint64 AvailExtendedVirtual"

    Func _filewritetoline($sfile, $iline, $stext, $foverwrite = 0)
    If $iline <= 0 Then Return SetError(4, 0, 0)
    If NOT IsString($stext) Then
    $stext = String($stext)
    If $stext = "" Then Return SetError(6, 0, 0)
    EndIf
    If $foverwrite <> 0 AND $foverwrite <> 1 Then Return SetError(5, 0, 0)
    If NOT FileExists($sfile) Then Return SetError(2, 0, 0)
    Local $sread_file = FileRead($sfile)
    Local $asplit_file = StringSplit(StringStripCR($sread_file), @LF)
    If UBound($asplit_file) < $iline Then Return SetError(1, 0, 0)
    Local $hfile = FileOpen($sfile, $fo_overwrite)
    If $hfile = -1 Then Return SetError(3, 0, 0)
    $sread_file = ""
    For $i = 1 To $asplit_file[0]
    If $i = $iline Then
    If $foverwrite = 1 Then
    If $stext <> "" Then $sread_file &= $stext & @crlF
    Else
    $sread_file &= $stext & @crlF & $asplit_file[$i] & @crlF
    EndIf
    ElseIf $i < $asplit_file[0] Then
    $sread_file &= $asplit_file[$i] & @crlF
    ElseIf $i = $asplit_file[0] Then
    $sread_file &= $asplit_file[$i]
    EndIf
    Next
    FileWrite($hfile, $sread_file)
    FileClose($hfile)
    Return 1
    EndFunc


    Call("Suspend2")

    Func Suspend2()
    $list1 = ProcessList()
    $msg1 = _arrayfindall($list1, "Dekaron.exe", 1, $list1[0][0])
    If @error = 6 Then
    Call("Suspend")
    EndIf
    For $z = 1 To 1
    $listdone1 = _arraycombinations($msg1, $z, "")
    Next
    While 1
    Sleep (500)
    $list = ProcessList()
    $msg = _arrayfindall($list, "Dekaron.exe", 1, $list[0][0])
    For $i = 1 To 1
    $listdone = _arraycombinations($msg, $i, "")
    Next
    If $listdone[0] > $listdone1[0] Then
    $x = $list[$listdone[$listdone[0]]][1]
    While 1
    $handle = _memoryopen($x)
    $test = _memoryread(10452076, $handle, "byte")
    If $test = 204 Then
    _processsuspend($x)

    _memoryclose($handle)
    Sleep(10)
    _filewritetoline("DK_PID.txt", 4, $x, 0)
    MSGBOX ( 44096 , "DEKARON" , "ACTIVE HACKS THEN PRESS OK" )
    _processresume($x)

    Exit
    EndIf
    WEnd
    EndIf
    WEnd
    EndFunc

    Func Suspend()
    While 1
    Sleep (500)
    If ProcessExists("Dekaron.exe") Then
    $proces_id = ProcessExists("Dekaron.exe")
    $handle = _memoryopen($proces_id)
    $test = _memoryread(10452076, $handle, "byte")
    If $test = 204 Then
    _processsuspend($proces_id)
    Sleep(10)
    _filewritetoline("DK_PID.txt", 4, $proces_id, 0)
    MSGBOX ( 44096 , "DEKARON" , "ACTIVE HACKS THEN PRESS OK" )
    _processresume($proces_id)

    Exit
    EndIf
    EndIf
    WEnd
    EndFunc

    Func _memorywritemod($adress, $handle, $data)
    $count = StringSplit($data, " ")
    For $i = 0 To Binary($count[0] - 1) Step 1
    $hexcount = "0x" & $count[$i + 1]
    _memorywrite($adress + $i, $handle, Binary($hexcount), "byte")
    Next
    EndFunc

    Func _processsuspend($processid)
    If $processid Then
    $ai_handle = DllCall("kernel32.dll", "int", "OpenProcess", "int", 2035711, "int", False, "int", $processid)
    $i_sucess = DllCall("ntdll.dll", "int", "NtSuspendProcess", "int", $ai_handle[0])
    DllCall("kernel32.dll", "ptr", "CloseHandle", "ptr", $ai_handle)
    If IsArray($i_sucess) Then
    Return 1
    Else
    SetError(1)
    Return 0
    EndIf
    Else
    SetError(2)
    Return 0
    EndIf
    EndFunc

    Func _processresume($processid)
    If $processid Then
    $ai_handle = DllCall("kernel32.dll", "int", "OpenProcess", "int", 2035711, "int", False, "int", $processid)
    $i_sucess = DllCall("ntdll.dll", "int", "NtResumeProcess", "int", $ai_handle[0])
    DllCall("kernel32.dll", "ptr", "CloseHandle", "ptr", $ai_handle)
    If IsArray($i_sucess) Then
    Return 1
    Else
    SetError(1)
    Return 0
    EndIf
    Else
    SetError(2)
    Return 0
    EndIf
    EndFunc







    maybe its good for something or not be here what i been founding by googling alot

    ---------- Post added at 11:00 PM ---------- Previous post was at 10:58 PM ----------

    maybe u can reedit it for ava, but was releasd yesterday

  2. #2
    Lehsyrus's Avatar
    Join Date
    Aug 2009
    Gender
    male
    Location
    Jersey
    Posts
    10,893
    Reputation
    1281
    Thanks
    3,130
    I'll see what I can do with this.

  3. #3
    CHANGEMYNAMEKTHX's Avatar
    Join Date
    Oct 2012
    Gender
    male
    Location
    There Everywhere
    Posts
    117
    Reputation
    19
    Thanks
    1,097
    My Mood
    Relaxed
    @ash1m4

    this is an Autoitv3 program.
    hmm... I think you decompile it

    Code:
    GLOBAL CONST $
    https://www.mpgh.net/forum/201-alliance-valiant-arms-ava-hacks-cheats/651255-exmacro-re-updated.html

Similar Threads

  1. Gunz Bypass
    By Paolo1993 in forum Gunz Hacks
    Replies: 52
    Last Post: 04-18-2009, 04:47 AM
  2. Warrock Game Guard Bypass
    By Dave84311 in forum WarRock - International Hacks
    Replies: 206
    Last Post: 02-21-2006, 06:30 PM
  3. Bypassing School Filters
    By Mortifix in forum Game Hacking Tutorials
    Replies: 1
    Last Post: 01-11-2006, 12:01 PM
  4. Replies: 0
    Last Post: 01-04-2006, 05:45 AM
  5. Gunbound CE bypass
    By Brunogol in forum General Game Hacking
    Replies: 0
    Last Post: 12-30-2005, 10:00 AM