Function at 0x40fc80
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x45bff8
mov eax, dword fs:[0]
push eax
sub esp, 0x4d4
mov eax, dword [0x4720bc]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
mov dword [ebp - 0x4dc], eax
mov dword [ebp - 0x18], eax
cmp dword [ebp + 0x20], 0x10
lea ecx, [ebp + 0xc]
mov eax, dword [ebp + 0x1c]
cmovae ecx, dword [ebp + 0xc]
add eax, ecx
mov dword [ebp - 4], 0
cmp dword [ebp + 0x20], 0x10
lea ecx, [ebp + 0xc]
push eax
cmovae ecx, dword [ebp + 0xc]
push ecx
call fcn.004598e0
mov ebx, dword [ebp + 0x20]
lea edi, [ebp + 0xc]
mov esi, dword [ebp + 0xc]
lea ecx, [ebp + 0xc]
mov edx, dword [ebp + 0x1c]
add esp, 8
cmp ebx, 0x10
cmovae edi, esi
cmovae ecx, esi
add edi, edx
cmp ecx, edi
je 0x40fd33
mov al, byte [ecx]
cmp al, 0x41
jl 0x40fd0e
cmp al, 0x5a
jle 0x40fd2e
cmp al, 0x61
jl 0x40fd16
cmp al, 0x7a
jle 0x40fd2e
cmp al, 0x30
jl 0x40fd1e
cmp al, 0x39
jle 0x40fd2e
cmp al, 0x2b
je 0x40fd2e
cmp al, 0x2f
je 0x40fd2e
cmp al, 0x3d
jne 0x40fed9
inc ecx
cmp ecx, edi
jne 0x40fd04
xor ecx, ecx
test edx, edx
je 0x40fd76
mov edi, dword [ebp + 0x20]
cmp ebx, 0x10
setae bl
cmp edi, 0x10
lea eax, [ebp + 0xc]
cmovae eax, esi
cmp byte [eax + ecx], 0x3d
jne 0x40fd71
lea eax, [edx - 2]
cmp ecx, eax
jb 0x40fed9
jne 0x40fd71
test bl, bl
lea eax, [ebp + 0xc]
cmovne eax, esi
cmp byte [eax + ecx + 1], 0x3d
jne 0x40fed9
inc ecx
cmp ecx, edx
jb 0x40fd42
lea eax, [ebp + 0xc]
push eax
lea eax, [ebp - 0x48]
push eax
call fcn.00401930
mov ebx, dword [ebp - 0x38]
mov byte [ebp - 4], 1
lea esi, [ebx + 1]
push esi
call fcn.0045a2e1
cmp dword [ebp - 0x34], 0x10
mov ecx, eax
lea eax, [ebp - 0x48]
mov dword [ebp - 0x18], ecx
cmovae eax, dword [ebp - 0x48]
push esi
push eax
push ecx
call sub.VCRUNTIME140.dll_memcpy
lea eax, [ebx + 1]
push eax
call fcn.0045a2e1
cmp dword [ebp - 0x34], 0x10
mov edi, eax
lea eax, [ebp - 0x48]
cmovae eax, dword [ebp - 0x48]
push esi
push eax
push edi
call sub.VCRUNTIME140.dll_memcpy
add esp, 0x28
lea ecx, [ebp - 0x4d4]
call fcn.0040e3f0
mov edx, dword [0x472588]
mov ecx, edx
mov byte [ebp - 4], 2
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40fde6
sub ecx, esi
lea eax, [ebp - 0x60]
push ecx
push edx
push eax
call fcn.00401b80
add esp, 0xc
mov ecx, eax
mov dword [ebp - 0x30], 0
mov edx, 0x10
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x1c], 0
cmp dword [ecx + 0x10], edx
mov byte [ebp - 4], 3
cmovb edx, dword [ecx + 0x10]
cmp dword [ecx + 0x14], 0x10
jb 0x40fe2c
mov ecx, dword [ecx]
push edx
push ecx
lea ecx, [ebp - 0x30]
call fcn.00402080
cmp dword [ebp - 0x1c], 0x10
lea eax, [ebp - 0x30]
push 0x10
cmovae eax, dword [ebp - 0x30]
lea ecx, [ebp - 0x4d4]
push 0x10
push eax
push dword [0x472588]
mov byte [ebp - 4], 4
call fcn.0040f490
mov ecx, dword [ebp - 0x1c]
mov byte [ebp - 4], 3
cmp ecx, 0x10
jb 0x40fe8f
mov edx, dword [ebp - 0x30]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x40fe85
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40fed3
push ecx
push edx
call fcn.00459a6a
add esp, 8
mov ecx, dword [ebp - 0x4c]
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x1c], 0xf
mov byte [ebp - 0x30], 0
mov byte [ebp - 4], 2
cmp ecx, 0x10
jb 0x40ff57
mov edx, dword [ebp - 0x60]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x40ff4d
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x40ff4d
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
mov dword [ebp - 0x18], 0x8182f1fc
xor ecx, ecx
mov word [ebp - 0x14], 0x100
lea eax, [ecx - 0x4e]
xor byte [ebp + ecx - 0x18], al
inc ecx
cmp ecx, 4
jb 0x40fee8
mov esi, dword [ebp - 0x4dc]
lea eax, [ebp - 0x4d5]
push eax
lea eax, [ebp - 0x14]
mov byte [ebp - 0x13], 0
push eax
lea eax, [ebp - 0x18]
mov ecx, esi
push eax
call fcn.00403020
mov ecx, dword [ebp + 0x20]
cmp ecx, 0x10
jb 0x410096
mov edx, dword [ebp + 0xc]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x41008c
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x41008c
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
push ecx
push edx
call fcn.00459a6a
add esp, 8
push 1
push ebx
push edi
push dword [ebp - 0x18]
lea ecx, [ebp - 0x4d4]
call fcn.0040e460
movsx esi, byte [edi + ebx - 1]
lea ecx, [ebx - 1]
mov edx, ebx
sub edx, esi
cmp ecx, edx
jb 0x40ff9f
nop dword [eax]
movsx eax, byte [ecx + edi]
cmp eax, esi
jne 0x40ff93
mov byte [ecx + edi], 0
dec ecx
cmp ecx, edx
jae 0x40ff80
jmp 0x40ff9f
push ebx
push 0
push edi
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
mov ecx, edi
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x1c], 0
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40ffc0
sub ecx, edx
push ecx
push edi
lea ecx, [ebp - 0x30]
call fcn.00402080
push dword [ebp - 0x18]
mov byte [ebp - 4], 5
call fcn.0045a2ea
push edi
call fcn.0045a2ea
sub esp, 0x10
lea eax, [ebp - 0x30]
mov ecx, esp
push eax
call fcn.00402320
mov esi, dword [ebp - 0x4dc]
push esi
call fcn.0040dc40
mov ecx, dword [ebp - 0x1c]
add esp, 0x1c
cmp ecx, 0x10
jb 0x410036
mov edx, dword [ebp - 0x30]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x41002c
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40ff47
push ecx
push edx
call fcn.00459a6a
add esp, 8
lea ecx, [ebp - 0x4d4]
call fcn.0040e420
mov ecx, dword [ebp - 0x34]
cmp ecx, 0x10
jb 0x410075
mov edx, dword [ebp - 0x48]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x41006b
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40ff47
push ecx
push edx
call fcn.00459a6a
add esp, 8
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x34], 0xf
mov byte [ebp - 0x48], 0
jmp 0x40ff15
push ecx
push edx
call fcn.00459a6a
add esp, 8
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00459a78
mov esp, ebp
pop ebp
ret 0x1c