Function at 0x1003f576
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x10066229
call fcn.100651e0
sub esp, 0x58
push ebx
push esi
push edi
mov dword [ebp - 0x10], esp
mov dword [ebp - 0x3c], ecx
lea ecx, [ebp - 0x4c]
push 2
mov dword [ebp - 0x40], edx
call fcn.1001d532
xor esi, esi
xor edi, edi
mov dword [ebp - 4], esi
inc edi
mov dword [ebp - 0x24], 0xffff
mov dword [ebp - 0x1c], 0x2956
cmp dword [ebp - 0x1c], 0x2ca4
jle 0x1003f5fe
mov ebx, esi
mov eax, esi
mov dword [ebp - 0x20], esi
xor eax, ebx
lea ecx, [ebp - 0x64]
cdq
push edx
push eax
call fcn.1000d93a
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x1003f5d6
mov eax, dword [eax]
push eax
call fcn.10050266
pop ecx
push esi
push edi
lea ecx, [ebp - 0x64]
call fcn.1001d982
mov eax, dword [ebp - 0x20]
inc eax
mov dword [ebp - 0x20], eax
cmp eax, 0x1dba
jl 0x1003f5bf
inc ebx
cmp ebx, 0x626c
jl 0x1003f5ba
mov dword [ebp - 0x20], 0x5e3d1aa1
cmp dword [ebp - 0x1c], 0x262b
jge 0x1003f619
push 0x1000b748
call fcn.10050266
pop ecx
mov dword [ebp - 4], esi
mov dword [ebp - 0x18], edi
mov dword [ebp - 0x1c], 0xffffffff
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x2c], 0xbc75
mov dword [ebp - 0x20], esi
jmp 0x1003f645
mov ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x4c]
mov dword [eax + ecx*4], 0xfffffff7
inc dword [ebp - 0x20]
cmp dword [ebp - 0x20], 2
jl 0x1003f635
mov eax, dword [ebp - 0x4c]
mov dword [eax], 4
mov eax, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x24]
mov eax, dword [ebp - 0x4c]
sub ecx, dword [eax]
xor eax, eax
cmp ecx, 0xc4e
setne al
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x20]
cmp dword [ebp - 0x24], 0xffff
mov eax, dword [ebp - 0x4c]
sbb ecx, ecx
xor edx, edx
inc ecx
cmp ecx, dword [eax + 4]
mov eax, dword [ebp - 0x24]
setl dl
xor ebx, ebx
cmp edx, 0x7273
setle bl
xor ecx, ecx
cmp ebx, eax
setge cl
mov dword [ebp - 0x18], ecx
cmp dword [ebp - 0x18], edi
mov eax, dword [ebp - 0x24]
sbb ecx, ecx
xor ebx, ebx
inc ecx
sub eax, ecx
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x20], eax
cmp dword [ebp - 0x18], ebx
je 0x1003f7b4
mov dword [ebp - 0x20], 9
mov dword [ebp - 0x30], 0x75dd
cmp dword [ebp - 0x30], 0x7889
jle 0x1003f733
mov dword [ebp - 0x28], ebx
mov edi, ebx
mov ecx, ebx
mov dword [ebp - 0x24], ebx
mov eax, edi
mov dword [ebp - 0x34], esi
cdq
idiv ecx
mov dword [ebp - 0x38], ebx
mov ecx, edx
shl esi, cl
mov eax, esi
mov ecx, 0x1060f618
xor eax, ebx
cdq
push edx
push eax
call fcn.1001d301
inc ebx
cmp ebx, 0x115a
jl 0x1003f6ec
mov ecx, dword [ebp - 0x24]
mov esi, dword [ebp - 0x28]
inc ecx
mov dword [ebp - 0x24], ecx
push 0
pop ebx
cmp ecx, 0x3cc3
jl 0x1003f6dd
inc edi
cmp edi, 0x1ec
jl 0x1003f6d8
inc esi
mov dword [ebp - 0x28], esi
cmp esi, 0x2b87
jl 0x1003f6d6
xor edi, edi
inc edi
cmp dword [ebp - 0x20], 0x6ac116e0
jne 0x1003f770
cmp dword [ebp - 0x20], ebx
je 0x1003f744
mov eax, dword [ebp - 0x20]
mov eax, dword [ebp - 0x20]
xor edx, edx
mov eax, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x20]
sub ecx, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x20]
cmp ecx, eax
setl dl
imul edx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x1c]
add eax, 0xfffffffa
add eax, edx
cmp eax, dword [ebp - 0x20]
mov eax, edi
jge 0x1003f772
mov eax, ebx
mov dword [ebp - 0x1c], eax
mov byte [ebp - 4], 3
cmp dword [ebp - 0x30], 0x74f8
jge 0x1003f800
mov edx, 0x1000b784
mov ecx, 0x1060f618
call fcn.1001f80c
jmp 0x1003f800
mov dword [ebp - 0x18], ebx
jmp 0x1003f7fb
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x4c]
cmp dword [eax + ecx*4], ebx
jne 0x1003f800
mov dword [ebp - 0x20], ebx
jmp 0x1003f7f3
mov dword [ebp - 0x1c], ebx
jmp 0x1003f7eb
mov byte [ebp - 0x11], bl
cmp byte [ebp - 0x11], bl
je 0x1003f7dd
push ebx
call dword [sym.imp.ole32.dll_CoTaskMemFree]
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x4c]
cmp dword [eax + ecx*4], ebx
jne 0x1003f7f0
inc dword [ebp - 0x1c]
cmp dword [ebp - 0x1c], edi
jle 0x1003f7ce
inc dword [ebp - 0x20]
cmp dword [ebp - 0x20], edi
jle 0x1003f7c9
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], edi
jle 0x1003f7b9
lea ecx, [ebp - 0x4c]
call fcn.1001d5b4
mov edx, dword [ebp - 0x3c]
mov dword [edx], ebx
cmp dword [edx], edi
jge 0x1003f825
mov esi, dword [ebp - 0x40]
mov ecx, dword [edx]
mov eax, dword [esi]
mov dword [eax + ecx*4], 0x3f4f46db
inc dword [edx]
cmp dword [edx], edi
jl 0x1003f814
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret