Function at 0x408ae0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x60
mov eax, dword [0x68cc00]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0x10]
mov ecx, eax
push ebx
mov ebx, dword [ebp + 8]
push esi
mov esi, dword [ebp + 0xc]
mov dword [ebp - 0x60], eax
call fcn.0042c920
test ebx, ebx
je 0x408fa4
test esi, esi
je 0x408fa4
mov ecx, esi
lea edx, [ecx + 1]
nop word [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x408b20
sub ecx, edx
cmp ecx, 8
jb 0x408fa4
mov ecx, ebx
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x408b37
sub ecx, edx
cmp ecx, 9
jb 0x408fa4
push edi
push 0x10
lea eax, [ebp - 0x1c]
push esi
push eax
call fcn.0040e410
movsx edx, byte [ebx]
add esp, 0xc
movsx ecx, byte [ebx + 1]
mov esi, edx
movsx edi, byte [ebx + 2]
sub esi, ecx
mov eax, ecx
mov dword [ebp - 0x20], ecx
sub eax, edx
mov dword [ebp - 0x38], edx
mov dword [ebp - 0x34], edi
cmovns esi, eax
mov byte [ebp - 0xc], 0
neg esi
mov eax, edi
sub eax, ecx
sub ecx, edi
test eax, eax
cmovns ecx, eax
mov eax, esi
sub eax, ecx
test esi, esi
lea edx, [ecx + esi]
movsx esi, byte [ebx + 3]
cmovns edx, eax
mov dword [ebp - 0x24], esi
mov eax, esi
mov ecx, edi
sub ecx, esi
sub eax, edi
movsx edi, byte [ebx + 4]
cmovns ecx, eax
mov dword [ebp - 0x2c], edi
mov eax, edx
sub eax, ecx
test edx, edx
lea esi, [ecx + edx]
mov ecx, dword [ebp - 0x24]
cmovns esi, eax
mov eax, edi
sub eax, ecx
sub ecx, edi
test eax, eax
cmovns ecx, eax
mov eax, esi
sub eax, ecx
test esi, esi
lea edx, [ecx + esi]
movsx esi, byte [ebx + 5]
cmovns edx, eax
mov dword [ebp - 0x3c], esi
mov ecx, edi
mov eax, esi
sub ecx, esi
sub eax, edi
cmovns ecx, eax
mov eax, edx
sub eax, ecx
test edx, edx
lea edi, [ecx + edx]
movsx edx, byte [ebx + 6]
cmovns edi, eax
mov dword [ebp - 0x28], edx
mov ecx, esi
mov eax, edx
sub ecx, edx
sub eax, esi
cmovns ecx, eax
mov eax, edi
sub eax, ecx
test edi, edi
lea esi, [ecx + edi]
movsx edi, byte [ebx + 7]
cmovns esi, eax
mov dword [ebp - 0x40], edi
mov eax, edi
mov ecx, esi
sub eax, edx
sub edx, edi
test eax, eax
cmovns edx, eax
sub ecx, edx
test esi, esi
lea eax, [edx + esi]
cmovns eax, ecx
cdq
xor eax, edx
sub eax, edx
lea ecx, [eax + 0x30]
cmp ecx, 0x30
jl 0x408c40
cmp ecx, 0x39
jle 0x408c7e
cmp ecx, 0x61
jl 0x408c4a
cmp ecx, 0x7a
jle 0x408c7e
cmp ecx, 0x41
jl 0x408c54
cmp ecx, 0x5a
jle 0x408c7e
mov ecx, 0x7a
sub ecx, eax
cmp ecx, 0x30
jl 0x408c65
cmp ecx, 0x39
jle 0x408c7e
cmp ecx, 0x61
jl 0x408c6f
cmp ecx, 0x7a
jle 0x408c7e
cmp ecx, 0x41
jl 0x408c79
cmp ecx, 0x5a
jle 0x408c7e
mov ecx, 0x78
mov eax, dword [ebp - 0x38]
xor eax, dword [ebp - 0x20]
xor eax, dword [ebp - 0x34]
mov dl, byte [ebp - 0x1c]
mov byte [ebp - 0x14], cl
movsx ecx, byte [ebx + 8]
xor eax, ecx
mov dword [ebp - 0x54], ecx
xor eax, edi
xor eax, dword [ebp - 0x28]
xor eax, dword [ebp - 0x3c]
xor eax, dword [ebp - 0x24]
xor eax, dword [ebp - 0x2c]
cmp eax, 0x30
jge 0x408cad
movsx eax, dl
inc eax
mov cl, byte [ebp - 0x1b]
cmp eax, 0x7a
jle 0x408cb9
movsx eax, cl
inc eax
cmp eax, 0x30
jl 0x408cc3
cmp eax, 0x39
jle 0x408cdc
cmp eax, 0x61
jl 0x408ccd
cmp eax, 0x7a
jle 0x408cdc
cmp eax, 0x41
jl 0x408cd7
cmp eax, 0x5a
jle 0x408cdc
mov eax, 0x52
mov byte [ebp - 0x13], al
movsx ecx, cl
mov eax, ecx
movsx edi, dl
movsx edx, byte [ebp - 0x1a]
mov esi, edi
sub esi, ecx
mov dword [ebp - 0x58], ecx
sub eax, edi
mov dword [ebp - 0x48], edx
cmovns esi, eax
mov eax, edx
sub eax, ecx
neg esi
sub ecx, edx
test eax, eax
cmovns ecx, eax
mov eax, esi
sub eax, ecx
test esi, esi
lea edx, [ecx + esi]
movsx esi, byte [ebp - 0x19]
cmovns edx, eax
mov ecx, dword [ebp - 0x48]
mov eax, esi
mov dword [ebp - 0x4c], esi
sub eax, ecx
sub ecx, esi
test eax, eax
cmovns ecx, eax
mov eax, edx
sub eax, ecx
test edx, edx
lea esi, [ecx + edx]
movsx edx, byte [ebp - 0x18]
mov ecx, dword [ebp - 0x4c]
cmovns esi, eax
mov eax, edx
mov dword [ebp - 0x30], edx
sub eax, ecx
sub ecx, edx
test eax, eax
cmovns ecx, eax
mov eax, esi
sub eax, ecx
test esi, esi
lea edx, [ecx + esi]
movsx esi, byte [ebp - 0x17]
mov ecx, dword [ebp - 0x30]
cmovns edx, eax
mov eax, esi
mov dword [ebp - 0x44], esi
sub eax, ecx
sub ecx, esi
test eax, eax
cmovns ecx, eax
mov eax, edx
sub eax, ecx
test edx, edx
lea esi, [ecx + edx]
movsx edx, byte [ebp - 0x16]
mov ecx, dword [ebp - 0x44]
cmovns esi, eax
mov eax, edx
mov dword [ebp - 0x50], edx
sub eax, ecx
sub ecx, edx
test eax, eax
cmovns ecx, eax
mov eax, esi
sub eax, ecx
test esi, esi
lea edx, [ecx + esi]
movsx esi, byte [ebp - 0x15]
mov ecx, dword [ebp - 0x50]
cmovns edx, eax
mov eax, esi
mov dword [ebp - 0x5c], esi
sub eax, ecx
sub ecx, esi
test eax, eax
cmovns ecx, eax
mov esi, dword [ebp - 0x34]
mov eax, edx
sub eax, ecx
add ecx, edx
test edx, edx
mov edx, dword [ebp - 0x38]
cmovns ecx, eax
mov eax, esi
sub eax, edx
sub edx, esi
test eax, eax
cmovns edx, eax
mov eax, ecx
sub eax, edx
add edx, ecx
test ecx, ecx
mov ecx, dword [ebp - 0x24]
cmovns edx, eax
mov eax, ecx
sub eax, dword [ebp - 0x20]
sub dword [ebp - 0x20], ecx
test eax, eax
mov ecx, dword [ebp - 0x20]
cmovns ecx, eax
mov eax, edx
sub eax, ecx
add ecx, edx
test edx, edx
cmovns ecx, eax
mov eax, dword [ebp - 0x2c]
sub eax, esi
sub esi, dword [ebp - 0x2c]
test eax, eax
cmovns esi, eax
mov eax, ecx
sub eax, esi
test ecx, ecx
lea edx, [esi + ecx]
mov esi, dword [ebp - 0x3c]
cmovns edx, eax
mov ecx, dword [ebp - 0x24]
mov eax, esi
sub eax, ecx
sub ecx, esi
test eax, eax
cmovns ecx, eax
mov eax, edx
sub eax, ecx
add ecx, edx
test edx, edx
mov edx, dword [ebp - 0x2c]
cmovns ecx, eax
mov eax, dword [ebp - 0x28]
sub eax, edx
sub edx, dword [ebp - 0x28]
test eax, eax
cmovns edx, eax
mov eax, ecx
sub eax, edx
add edx, ecx
test ecx, ecx
cmovns edx, eax
mov eax, dword [ebp - 0x40]
sub eax, esi
sub esi, dword [ebp - 0x40]
test eax, eax
cmovns esi, eax
mov eax, edx
sub eax, esi
test edx, edx
lea ecx, [esi + edx]
mov edx, dword [ebp - 0x28]
cmovns ecx, eax
mov eax, dword [ebp - 0x54]
sub eax, edx
sub edx, dword [ebp - 0x54]
test eax, eax
cmovns edx, eax
mov eax, ecx
sub eax, edx
mov esi, dword [ebp - 0x40]
add edx, ecx
test ecx, ecx
cmovns edx, eax
movsx eax, byte [ebx + 9]
mov ecx, eax
sub ecx, esi
sub esi, eax
test ecx, ecx
cmovns esi, ecx
mov ecx, edx
sub ecx, esi
test edx, edx
lea eax, [esi + edx]
cmovns eax, ecx
cdq
xor eax, edx
sub eax, edx
lea ecx, [eax + 0x30]
cmp ecx, 0x30
jl 0x408ea5
cmp ecx, 0x39
jle 0x408ee3
cmp ecx, 0x61
jl 0x408eaf
cmp ecx, 0x7a
jle 0x408ee3
cmp ecx, 0x41
jl 0x408eb9
cmp ecx, 0x5a
jle 0x408ee3
mov ecx, 0x7a
sub ecx, eax
cmp ecx, 0x30
jl 0x408eca
cmp ecx, 0x39
jle 0x408ee3
cmp ecx, 0x61
jl 0x408ed4
cmp ecx, 0x7a
jle 0x408ee3
cmp ecx, 0x41
jl 0x408ede
cmp ecx, 0x5a
jle 0x408ee3
mov ecx, 0x6e
mov byte [ebp - 0x12], cl
xor edx, edx
xor ecx, ecx
nop word [eax + eax]
movsx eax, byte [ebx + ecx]
add ecx, 2
xor edx, eax
cmp ecx, 0xa
jl 0x408ef0
xor edi, dword [ebp - 0x58]
mov eax, dword [ebp - 0x44]
xor edi, eax
mov ecx, dword [ebp - 0x48]
add eax, 0x14
mov esi, dword [ebp - 0x4c]
xor edi, ecx
xor edi, esi
xor edi, dword [ebp - 0x30]
xor edi, dword [ebp - 0x50]
xor edi, dword [ebp - 0x5c]
xor edx, edi
cmp edx, 0x30
pop edi
cmovge eax, edx
add ecx, 0xfffffff6
cmp eax, 0x7a
cmovle ecx, eax
lea eax, [esi + 0x14]
cmp ecx, 0x30
cmovge eax, ecx
mov ecx, dword [ebp - 0x30]
add ecx, 0xfffffff6
cmp eax, 0x7a
cmovle ecx, eax
cmp ecx, 0x30
jl 0x408f4f
mov eax, ecx
cmp ecx, 0x39
jle 0x408f6c
cmp ecx, 0x61
jl 0x408f5b
mov eax, ecx
cmp ecx, 0x7a
jle 0x408f6c
cmp ecx, 0x41
jl 0x408f67
mov eax, ecx
cmp ecx, 0x5a
jle 0x408f6c
mov eax, 0x47
mov esi, dword [ebp - 0x60]
mov ecx, esi
push ebx
mov byte [ebp - 0x11], al
mov byte [ebp - 0x10], 0
call fcn.0042ade0
push 0x5f
mov ecx, esi
call fcn.0042b100
lea eax, [ebp - 0x1c]
mov ecx, esi
push eax
call fcn.0042ade0
pop esi
mov al, 1
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.005af5a8
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 4]
xor al, al
pop esi
xor ecx, ebp
pop ebx
call fcn.005af5a8
mov esp, ebp
pop ebp
ret