Function at 0x466ec0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x40
push ebx
push esi
mov esi, dword [ebp + 8]
lea eax, [ecx + 0x16c]
mov dword [ebp - 0xc], ecx
mov ebx, eax
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x10], 0
mov dword [ebp - 0x24], 1
push edi
mov edi, eax
lea edx, [edi + 0xfd6]
mov dword [ebp - 0x2c], edx
test esi, esi
je 0x4675db
mov edx, dword [ebp + 0xc]
test edx, edx
je 0x4675db
mov dword [ecx + 0x116c], 0
mov dword [ebp - 0x20], esi
mov dword [ebp - 8], 0
jle 0x4675c3
cmp edi, dword [ebp - 0x2c]
ja 0x4675af
mov dl, byte [esi]
movsx eax, dl
add eax, 0xffffffdc
mov dword [ebp - 0x14], edi
cmp eax, 0x3a
ja case.0x466e94.37
movzx eax, byte [eax + 0x467614]
jmp dword [eax*4 + 0x4675f8]
mov byte [edi], 2
inc edi
jmp 0x467452
cmp esi, dword [ebp + 8]
jne 0x466eb2
mov byte [edi], 4
inc edi
jmp 0x467452
mov byte [edi], 1
inc edi
mov al, byte [esi]
mov byte [edi], al
inc edi
jmp 0x467452
cmp byte [esi + 1], 0
jne 0x466eb2
mov byte [edi], 5
inc edi
jmp 0x467452
mov eax, dword [ebp - 8]
inc esi
mov byte [edi], 3
xor ebx, ebx
inc edi
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 0x38], edi
mov dl, byte [esi]
cmp dl, 0x5e
jne 0x466ef4
mov dl, byte [esi + 1]
inc esi
inc eax
mov byte [ebp - 1], 0xff
mov dword [ebp - 8], eax
jmp 0x466ef7
mov byte [ebp - 1], bl
inc eax
cmp dl, 0x2d
jne 0x466f11
inc esi
mov ebx, 0x2d
or byte [ecx + 0x1175], 0x20
mov dword [ebp - 0x1c], ebx
mov dl, byte [esi]
jmp 0x466f14
mov eax, dword [ebp - 8]
inc eax
mov dword [ebp - 8], eax
cmp dl, 0x5d
jne 0x466f33
inc esi
inc eax
or byte [ecx + 0x117b], 0x20
mov ebx, 0x5d
mov dword [ebp - 8], eax
mov dword [ebp - 0x1c], ebx
mov dl, byte [esi]
test dl, dl
je 0x4674bf
jmp 0x466f40
mov dword [ebp - 0x30], esi
mov al, dl
cmp dl, 0x5d
je 0x46708e
cmp dl, 0x2d
jne 0x4670bf
test ebx, ebx
jns 0x466f6f
or byte [ecx + 0x1175], 0x20
mov ebx, 0x2d
mov dword [ebp - 0x1c], ebx
jmp 0x467079
mov al, byte [esi + 1]
test al, al
je 0x4674ab
cmp al, 0x5d
je 0x466ff3
inc dword [ebp - 8]
inc esi
movzx eax, al
inc ebx
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x28], eax
cmp eax, 0x5c
jne 0x466fec
mov esi, dword [ebp - 0x30]
add esi, 2
cmp byte [esi], 0
je 0x467497
mov ecx, dword [ebp - 0xc]
lea eax, [ebp - 0x34]
push eax
push esi
call fcn.00466ae0
mov edx, dword [ebp - 8]
mov ecx, eax
add esi, dword [ebp - 0x34]
inc edx
add edx, dword [ebp - 0x34]
mov dword [ebp - 0x28], ecx
mov dword [ebp - 8], edx
mov dword [ebp - 0x20], esi
test ecx, ecx
js 0x466ff3
movzx edx, cl
mov ecx, dword [ebp - 0xc]
mov eax, edx
shr eax, 3
and edx, 7
add ecx, eax
mov al, byte [edx + 0x5af6b4]
or byte [ecx + 0x1170], al
mov eax, dword [ebp - 0x28]
mov ecx, eax
mov dword [ebp - 0x1c], ecx
jmp 0x466fef
mov ecx, dword [ebp - 0x1c]
test ecx, ecx
jns 0x467007
mov ecx, dword [ebp - 0xc]
mov ebx, 0x2d
mov dword [ebp - 0x1c], ebx
or byte [ecx + 0x1175], 0x20
jmp 0x467079
cmp ebx, eax
jg 0x467073
mov edi, dword [ebp - 0x28]
mov edi, edi
mov edx, dword [ebp - 0xc]
mov al, bl
movzx esi, al
add edx, 0x1170
mov ecx, esi
inc ebx
shr ecx, 3
and esi, 7
add edx, ecx
mov cl, byte [esi + 0x5af6b4]
or byte [edx], cl
cmp byte [ebp + 0x10], 0
jne 0x467069
lea ecx, [eax - 0x61]
cmp cl, 0x19
ja 0x467043
sub al, 0x20
jmp 0x46704d
lea ecx, [eax - 0x41]
cmp cl, 0x19
ja 0x467069
add al, 0x20
mov ecx, dword [ebp - 0xc]
movzx edx, al
mov eax, edx
and edx, 7
shr eax, 3
add ecx, eax
mov al, byte [edx + 0x5af6b4]
or byte [ecx + 0x1170], al
cmp ebx, edi
jle 0x467010
mov edi, dword [ebp - 0x38]
mov esi, dword [ebp - 0x20]
mov ebx, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 8]
mov dl, byte [esi + 1]
inc esi
inc eax
mov dword [ebp - 8], eax
mov al, dl
test dl, dl
jne 0x466f40
test al, al
je 0x4674bf
mov bl, byte [ebp - 1]
add ecx, 0x1170
mov edx, 0x20
mov al, byte [ecx]
lea ecx, [ecx + 1]
xor al, bl
mov byte [edi], al
inc edi
mov byte [ecx - 1], 0
sub edx, 1
jne 0x4670a4
mov ecx, dword [ebp - 0xc]
jmp 0x467452
cmp dl, 0x5c
jne 0x46711d
cmp byte [esi + 1], 0
mov dl, byte [esi]
je 0x46711d
lea eax, [ebp - 0x3c]
inc esi
push eax
push esi
call fcn.00466ae0
add esi, dword [ebp - 0x3c]
mov ebx, eax
mov eax, dword [ebp - 8]
inc eax
mov dword [ebp - 0x1c], ebx
add eax, dword [ebp - 0x3c]
mov dword [ebp - 8], eax
test ebx, ebx
js 0x46710f
movzx edx, bl
mov ecx, edx
and edx, 7
shr ecx, 3
mov al, byte [edx + 0x5af6b4]
mov edx, dword [ebp - 0xc]
or byte [ecx + edx + 0x1170], al
mov ecx, edx
jmp 0x467079
mov ecx, dword [ebp - 0xc]
or ebx, 0xffffffff
mov dword [ebp - 0x1c], ebx
jmp 0x46707c
movzx ebx, dl
mov eax, ebx
mov dword [ebp - 0x1c], ebx
shr eax, 3
add ecx, eax
mov eax, ebx
and eax, 7
mov al, byte [eax + 0x5af6b4]
or byte [ecx + 0x1170], al
cmp byte [ebp + 0x10], 0
jne 0x467076
lea eax, [edx - 0x61]
cmp al, 0x19
ja 0x467170
sub dl, 0x20
mov ecx, dword [ebp - 0xc]
movzx edx, dl
mov eax, edx
and edx, 7
shr eax, 3
add ecx, eax
mov al, byte [edx + 0x5af6b4]
or byte [ecx + 0x1170], al
jmp 0x467076
lea eax, [edx - 0x41]
cmp al, 0x19
ja 0x467076
add dl, 0x20
jmp 0x46714f
cmp esi, dword [ebp + 8]
je 0x4674e7
mov al, byte [ebx]
mov dword [ebp - 0x14], ebx
cmp al, 0xb
je 0x467452
cmp al, 0xd
je 0x467452
cmp al, 4
je 0x4674d3
cmp al, 5
jle 0x4671b2
cmp al, 0xa
jle 0x4674d3
cmp dl, 0x2b
jne 0x4671e1
mov eax, edi
xor ecx, ecx
sub eax, ebx
cmp edi, ebx
sbb edx, edx
not edx
and edx, eax
jbe 0x4671e1
mov esi, dword [ebp - 0x14]
lea ebx, [ebx]
mov al, byte [esi]
inc ecx
mov byte [edi], al
inc esi
inc edi
cmp ecx, edx
jb 0x4671d0
mov dword [ebp - 0x14], esi
mov esi, dword [ebp - 0x20]
mov ebx, dword [ebp - 0x14]
mov byte [edi], 0
inc edi
mov byte [edi], 0
lea edx, [edi + 1]
cmp edi, ebx
jbe 0x4671fc
mov al, byte [edi - 1]
mov byte [edi], al
dec edi
cmp edi, ebx
ja 0x4671f2
cmp byte [esi], 0x3f
jne 0x46720e
mov ecx, dword [ebp - 0xc]
mov byte [edi], 0xc
mov edi, edx
jmp 0x467455
cmp byte [esi + 1], 0x3f
mov ecx, dword [ebp - 0xc]
sete al
lea eax, [eax*2 + 0xb]
mov byte [edi], al
mov edi, edx
jmp 0x467455
mov dl, byte [esi + 1]
inc esi
inc dword [ebp - 8]
movsx eax, dl
mov dword [ebp - 0x38], eax
add eax, 0xffffffcf
cmp eax, 0xd
ja case.0x467244.58
movzx eax, byte [eax + 0x467660]
jmp dword [eax*4 + 0x467650]
mov byte [edi], 8
inc edi
jmp 0x467452
cmp byte [ebx], 8
je 0x4674fb
mov byte [edi], 9
inc edi
jmp 0x467452
mov eax, dword [ebp - 0x38]
mov edx, dword [ebp - 0x10]
add eax, 0xffffffd0
test edx, edx
jle 0x467280
cmp dword [ecx + edx*4 + 0x144], eax
je 0x46750f
cmp dword [ebp - 0x24], eax
jle 0x467523
mov ebx, dword [ebp - 0x14]
mov byte [edi], 0xa
mov byte [edi + 1], al
add edi, 2
jmp 0x467458
cmp byte [ebp + 0x14], 0
jne 0x46730b
cmp dl, 0x28
jne 0x4672d6
mov ebx, dword [ebp - 0x24]
cmp ebx, 0xa
jge 0x467537
mov edx, dword [ebp - 0x10]
invalid