Function at 0x408b50
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.0042c990
test ebx, ebx
je 0x409014
test esi, esi
je 0x409014
mov ecx, esi
lea edx, [ecx + 1]
nop word [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x408b90
sub ecx, edx
cmp ecx, 8
jb 0x409014
mov ecx, ebx
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x408ba7
sub ecx, edx
cmp ecx, 9
jb 0x409014
push edi
push 0x10
lea eax, [ebp - 0x1c]
push esi
push eax
call fcn.0040e470
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 0x408cb0
cmp ecx, 0x39
jle 0x408cee
cmp ecx, 0x61
jl 0x408cba
cmp ecx, 0x7a
jle 0x408cee
cmp ecx, 0x41
jl 0x408cc4
cmp ecx, 0x5a
jle 0x408cee
mov ecx, 0x7a
sub ecx, eax
cmp ecx, 0x30
jl 0x408cd5
cmp ecx, 0x39
jle 0x408cee
cmp ecx, 0x61
jl 0x408cdf
cmp ecx, 0x7a
jle 0x408cee
cmp ecx, 0x41
jl 0x408ce9
cmp ecx, 0x5a
jle 0x408cee
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 0x408d1d
movsx eax, dl
inc eax
mov cl, byte [ebp - 0x1b]
cmp eax, 0x7a
jle 0x408d29
movsx eax, cl
inc eax
cmp eax, 0x30
jl 0x408d33
cmp eax, 0x39
jle 0x408d4c
cmp eax, 0x61
jl 0x408d3d
cmp eax, 0x7a
jle 0x408d4c
cmp eax, 0x41
jl 0x408d47
cmp eax, 0x5a
jle 0x408d4c
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 0x408f15
cmp ecx, 0x39
jle 0x408f53
cmp ecx, 0x61
jl 0x408f1f
cmp ecx, 0x7a
jle 0x408f53
cmp ecx, 0x41
jl 0x408f29
cmp ecx, 0x5a
jle 0x408f53
mov ecx, 0x7a
sub ecx, eax
cmp ecx, 0x30
jl 0x408f3a
cmp ecx, 0x39
jle 0x408f53
cmp ecx, 0x61
jl 0x408f44
cmp ecx, 0x7a
jle 0x408f53
cmp ecx, 0x41
jl 0x408f4e
cmp ecx, 0x5a
jle 0x408f53
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 0x408f60
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 0x408fbf
mov eax, ecx
cmp ecx, 0x39
jle 0x408fdc
cmp ecx, 0x61
jl 0x408fcb
mov eax, ecx
cmp ecx, 0x7a
jle 0x408fdc
cmp ecx, 0x41
jl 0x408fd7
mov eax, ecx
cmp ecx, 0x5a
jle 0x408fdc
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.0042ae50
push 0x5f
mov ecx, esi
call fcn.0042b170
lea eax, [ebp - 0x1c]
mov ecx, esi
push eax
call fcn.0042ae50
pop esi
mov al, 1
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.005af618
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 4]
xor al, al
pop esi
xor ecx, ebp
pop ebx
call fcn.005af618
mov esp, ebp
pop ebp
ret