Function at 0x408c80
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x60
mov eax, dword [0x692c00]
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.0042cb70
test ebx, ebx
je 0x409144
test esi, esi
je 0x409144
mov ecx, esi
lea edx, [ecx + 1]
nop word [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x408cc0
sub ecx, edx
cmp ecx, 8
jb 0x409144
mov ecx, ebx
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x408cd7
sub ecx, edx
cmp ecx, 9
jb 0x409144
push edi
push 0x10
lea eax, [ebp - 0x1c]
push esi
push eax
call fcn.0040e5a0
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 0x408de0
cmp ecx, 0x39
jle 0x408e1e
cmp ecx, 0x61
jl 0x408dea
cmp ecx, 0x7a
jle 0x408e1e
cmp ecx, 0x41
jl 0x408df4
cmp ecx, 0x5a
jle 0x408e1e
mov ecx, 0x7a
sub ecx, eax
cmp ecx, 0x30
jl 0x408e05
cmp ecx, 0x39
jle 0x408e1e
cmp ecx, 0x61
jl 0x408e0f
cmp ecx, 0x7a
jle 0x408e1e
cmp ecx, 0x41
jl 0x408e19
cmp ecx, 0x5a
jle 0x408e1e
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 0x408e4d
movsx eax, dl
inc eax
mov cl, byte [ebp - 0x1b]
cmp eax, 0x7a
jle 0x408e59
movsx eax, cl
inc eax
cmp eax, 0x30
jl 0x408e63
cmp eax, 0x39
jle 0x408e7c
cmp eax, 0x61
jl 0x408e6d
cmp eax, 0x7a
jle 0x408e7c
cmp eax, 0x41
jl 0x408e77
cmp eax, 0x5a
jle 0x408e7c
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 0x409045
cmp ecx, 0x39
jle 0x409083
cmp ecx, 0x61
jl 0x40904f
cmp ecx, 0x7a
jle 0x409083
cmp ecx, 0x41
jl 0x409059
cmp ecx, 0x5a
jle 0x409083
mov ecx, 0x7a
sub ecx, eax
cmp ecx, 0x30
jl 0x40906a
cmp ecx, 0x39
jle 0x409083
cmp ecx, 0x61
jl 0x409074
cmp ecx, 0x7a
jle 0x409083
cmp ecx, 0x41
jl 0x40907e
cmp ecx, 0x5a
jle 0x409083
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 0x409090
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 0x4090ef
mov eax, ecx
cmp ecx, 0x39
jle 0x40910c
cmp ecx, 0x61
jl 0x4090fb
mov eax, ecx
cmp ecx, 0x7a
jle 0x40910c
cmp ecx, 0x41
jl 0x409107
mov eax, ecx
cmp ecx, 0x5a
jle 0x40910c
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.0042b030
push 0x5f
mov ecx, esi
call fcn.0042b350
lea eax, [ebp - 0x1c]
mov ecx, esi
push eax
call fcn.0042b030
pop esi
mov al, 1
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.005b34c8
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 4]
xor al, al
pop esi
xor ecx, ebp
pop ebx
call fcn.005b34c8
mov esp, ebp
pop ebp
ret