Ребят посмогите разобрать код...
Код:
Func Fn002E($Arg00, $Arg01, $Arg02, $ArgOpt03 = 1)
If $Arg00 <> 0 And $Arg00 <> 1 Then
SetError(1)
Return ""
ElseIf $Arg01 = "" Or $Arg02 = "" Then
SetError(1)
Return ""
Else
If Number($ArgOpt03) <= 0 Or Int($ArgOpt03) <> $ArgOpt03 Then $ArgOpt03 = 1
Local $Var0317
Local $Var0318
Local $Var0319
Local $Var031A
Local $Local002C[0x0100][2]
Local $Var031B
Local $Var031C
Local $Var031D
Local $Var031E
Local $Var031F
Local $Var0320
Local $Var0321
If $Arg00 = 1 Then
For $Var0322 = 0 To $ArgOpt03 Step 1
$Var0319 = ""
$Var0318 = ""
$Var0317 = ""
For $Var0319 = 1 To StringLen($Arg01)
If $Var0318 = StringLen($Arg02) Then
$Var0318 = 1
Else
$Var0318 += 1
EndIf
$Var0317 = $Var0317 & Chr(BitXOR(Asc(StringMid($Arg01, $Var0319, 1)), Asc(StringMid($Arg02, $Var0318, 1)), 0x00FF))
Next
$Arg01 = $Var0317
$Var031B = ""
$Var031C = 0
$Var031D = ""
$Var031E = ""
$Var031F = ""
$Var0321 = ""
$Var0320 = ""
$Var031A = ""
$Local002C = ""
Local $Local002C[0x0100][2]
For $Var031B = 0 To 0x00FF
$Local002C[$Var031B][1] = Asc(StringMid($Arg02, Mod($Var031B, StringLen($Arg02)) + 1, 1))
$Local002C[$Var031B][0] = $Var031B
Next
For $Var031B = 0 To 0x00FF
$Var031C = Mod(($Var031C + $Local002C[$Var031B][0] + $Local002C[$Var031B][1]), 0x0100)
$Var031A = $Local002C[$Var031B][0]
$Local002C[$Var031B][0] = $Local002C[$Var031C][0]
$Local002C[$Var031C][0] = $Var031A
Next
For $Var031B = 1 To StringLen($Arg01)
$Var031D = Mod(($Var031D + 1), 0x0100)
$Var031E = Mod(($Var031E + $Local002C[$Var031D][0]), 0x0100)
$Var031F = $Local002C[Mod(($Local002C[$Var031D][0] + $Local002C[$Var031E][0]), 0x0100)][0]
$Var0321 = BitXOR(Asc(StringMid($Arg01, $Var031B, 1)), $Var031F)
$Var0320 &= Hex($Var0321, 2)
Next
$Arg01 = $Var0320
Next
Else
For $Var0322 = 0 To $ArgOpt03 Step 1
$Var031C = 0
$Var031D = ""
$Var031E = ""
$Var031F = ""
$Var0321 = ""
$Var0320 = ""
$Var031A = ""
$Local002C = ""
Local $Local002C[0x0100][2]
For $Var031B = 0 To 0x00FF
$Local002C[$Var031B][1] = Asc(StringMid($Arg02, Mod($Var031B, StringLen($Arg02)) + 1, 1))
$Local002C[$Var031B][0] = $Var031B
Next
For $Var031B = 0 To 0x00FF
$Var031C = Mod(($Var031C + $Local002C[$Var031B][0] + $Local002C[$Var031B][1]), 0x0100)
$Var031A = $Local002C[$Var031B][0]
$Local002C[$Var031B][0] = $Local002C[$Var031C][0]
$Local002C[$Var031C][0] = $Var031A
Next
For $Var031B = 1 To StringLen($Arg01) Step 2
$Var031D = Mod(($Var031D + 1), 0x0100)
$Var031E = Mod(($Var031E + $Local002C[$Var031D][0]), 0x0100)
$Var031F = $Local002C[Mod(($Local002C[$Var031D][0] + $Local002C[$Var031E][0]), 0x0100)][0]
$Var0321 = BitXOR(Dec(StringMid($Arg01, $Var031B, 2)), $Var031F)
$Var0320 = $Var0320 & Chr($Var0321)
Next
$Arg01 = $Var0320
$Var0319 = ""
$Var0318 = ""
$Var0317 = ""
For $Var0319 = 1 To StringLen($Arg01)
If $Var0318 = StringLen($Arg02) Then
$Var0318 = 1
Else
$Var0318 += 1
EndIf
$Var0317 &= Chr(BitXOR(Asc(StringMid($Arg01, $Var0319, 1)), Asc(StringMid($Arg02, $Var0318, 1)), 0x00FF))
Next
$Arg01 = $Var0317
Next
EndIf
Return $Arg01
EndIf
EndFunc