Function at 0x411fb0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0xac
lea edx, [ebp - 0x29]
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 8]
mov eax, dword [eax + 0xa0]
mov dword [ebp - 0xac], edx
mov dword [ebp - 0xa4], eax
mov dword [eax + 0x10], 0
push ecx
push 0
push 0x10
push edx
call fcn.0040d4a0
mov ecx, edx
mov edx, eax
mov ebx, ecx
add esp, 0x10
mov eax, 1
or ebx, edx
je 0x412006
mov eax, edx
xor eax, 0x10
or eax, ecx
je 0x412010
xor eax, eax
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov edx, dword [ebp + 8]
push 1
push 0xffffffffffffffff
push 0xfffffffffffffff0
push edx
call fcn.0040dba0
add esp, 0x10
test eax, eax
jne 0x412004
mov eax, 0x4a8497
mov ecx, 0x10
cld
mov esi, dword [ebp - 0xac]
mov edi, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x412062
mov eax, str._SYM64_
mov ecx, 0x10
cld
mov esi, dword [ebp - 0xac]
mov edi, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x412073
mov eax, dword [ebp + 8]
and byte [eax + 0x2b], 0xef
mov eax, 1
jmp 0x412006
sub esp, 0xc
mov eax, dword [ebp + 8]
push eax
call fcn.00408150
add esp, 0x10
jmp 0x412006
mov edx, dword [ebp + 8]
sub esp, 0xc
mov eax, dword [edx + 4]
push edx
call dword [eax + 0xec]
add esp, 0x10
test eax, eax
je 0x412004
sub esp, 0xc
mov ecx, dword [eax + 8]
mov ebx, dword [eax + 0xc]
mov dword [ebp - 0x60], ecx
push eax
mov dword [ebp - 0x5c], ebx
lea esi, [ebp - 0x18]
call fcn.004a3a08
mov eax, dword [ebp + 8]
push eax
push 0
push 8
push esi
call fcn.0040d4a0
add esp, 0x20
mov ecx, eax
xor ecx, 8
or ecx, edx
je 0x4120e0
call fcn.00404560
dec eax
je 0x412004
sub esp, 0xc
push 0xa
call fcn.00404f10
xor eax, eax
add esp, 0x10
jmp 0x412006
sub esp, 0xc
push esi
call fcn.0040b380
mov ebx, dword [ebp - 0x60]
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x54], edx
mov esi, dword [ebp - 0x5c]
shld edx, eax, 3
shl eax, 3
mov edi, dword [ebp - 0x54]
sub ebx, eax
mov dword [ebp - 0x70], eax
mov dword [ebp - 0x50], ebx
mov dword [ebp - 0x6c], edx
sbb esi, edx
add dword [ebp - 0x50], 0xfffffff8
mov dword [ebp - 0x4c], esi
mov esi, dword [ebp - 0x58]
adc dword [ebp - 0x4c], 0xffffffff
add esp, 0xc
shld edi, esi, 4
shl esi, 4
mov edx, edi
mov eax, esi
mov dword [ebp - 0x44], edi
add eax, 1
mov dword [ebp - 0x48], esi
adc edx, 0
add eax, dword [ebp - 0x50]
adc edx, dword [ebp - 0x4c]
push edx
push eax
mov eax, dword [ebp + 8]
push eax
call fcn.00409d00
mov edi, dword [ebp - 0xa4]
add esp, 0x10
mov dword [ebp - 0x68], eax
test eax, eax
mov dword [edi + 0x10], eax
je 0x412004
push eax
mov eax, dword [ebp - 0x6c]
push eax
mov edi, dword [ebp + 8]
mov eax, dword [ebp - 0x70]
push eax
push edi
call fcn.00409bc0
add esp, 0x10
mov dword [ebp - 0x64], eax
test eax, eax
je 0x4121c2
mov ecx, dword [ebp - 0x70]
mov esi, dword [ebp + 8]
mov ebx, dword [ebp - 0x6c]
push esi
push ebx
push ecx
push eax
call fcn.0040d4a0
mov ecx, dword [ebp - 0x6c]
add esp, 0x10
xor ecx, edx
mov edx, dword [ebp - 0x70]
xor eax, edx
or ecx, eax
je 0x4121e1
call fcn.00404560
dec eax
je 0x4121b0
sub esp, 0xc
push 0xa
call fcn.00404f10
add esp, 0x10
mov edx, dword [ebp - 0x64]
mov eax, dword [ebp + 8]
push ecx
push ecx
push edx
push eax
call fcn.00409ba0
add esp, 0x10
mov esi, dword [ebp - 0xa4]
push eax
push eax
mov eax, dword [esi + 0x10]
push eax
mov eax, dword [ebp + 8]
push eax
call fcn.00409ba0
xor eax, eax
add esp, 0x10
jmp 0x412006
mov eax, dword [ebp - 0x48]
mov esi, dword [ebp - 0x68]
add esi, eax
mov eax, dword [ebp + 8]
push eax
mov edi, dword [ebp - 0x50]
mov eax, dword [ebp - 0x4c]
push eax
push edi
push esi
call fcn.0040d4a0
mov ecx, dword [ebp - 0x4c]
mov ebx, dword [ebp - 0x50]
xor ecx, edx
xor eax, ebx
add esp, 0x10
or ecx, eax
jne 0x41219b
mov eax, dword [ebp - 0x54]
or eax, dword [ebp - 0x58]
je 0x412282
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x34], 0
mov dword [ebp - 0x3c], 0
sub esp, 0xc
mov eax, dword [ebp - 0x64]
mov edx, dword [ebp - 0x3c]
lea edi, [esi + 1]
add eax, edx
push eax
call fcn.0040b380
mov ecx, dword [ebp - 0x3c]
mov ebx, dword [ebp - 0x68]
mov dword [ebx + ecx*2 + 0xc], edx
mov dword [ebx + ecx*2], esi
mov dword [ebx + ecx*2 + 8], eax
mov dword [esp], esi
call sub.msvcrt.dll_strlen
mov esi, edi
add esi, eax
add esp, 0x10
add dword [ebp - 0x38], 1
adc dword [ebp - 0x34], 0
mov eax, dword [ebp - 0x3c]
add eax, 8
mov edx, dword [ebp - 0x34]
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0x54]
xor edx, eax
mov edi, dword [ebp - 0x58]
mov eax, dword [ebp - 0x38]
xor eax, edi
or edx, eax
jne 0x412229
mov byte [esi], 0
sub esp, 0xc
mov eax, dword [ebp - 0xa4]
mov edx, dword [ebp - 0x58]
mov ebx, dword [ebp + 8]
mov dword [eax + 0x14], edx
push ebx
call fcn.0040d550
mov dword [ebp - 0x94], 0
mov ecx, edx
mov dword [ebp - 0x88], edx
sar ecx, 0x1f
mov ebx, dword [ebp - 0x88]
mov dword [ebp - 0x84], ecx
mov esi, dword [ebp - 0x84]
mov esi, esi
sar esi, 0x1f
mov ebx, esi
mov dword [ebp - 0x84], esi
mov dword [ebp - 0x88], ebx
xor esi, edx
xor ebx, eax
mov dword [ebp - 0x8c], esi
mov dword [ebp - 0x90], ebx
mov esi, dword [ebp - 0x88]
sub dword [ebp - 0x90], esi
mov edi, dword [ebp - 0x84]
sbb dword [ebp - 0x8c], edi
mov edi, dword [ebp - 0x90]
and edi, 1
xor ebx, ebx
mov ecx, edi
mov dword [ebp - 0x98], edi
xor ecx, esi
mov esi, dword [ebp - 0x88]
mov dword [ebp - 0xa0], ecx
mov ecx, dword [ebp - 0x84]
xor ebx, ecx
sub dword [ebp - 0xa0], esi
mov dword [ebp - 0x9c], ebx
mov edi, dword [ebp - 0x84]
sbb dword [ebp - 0x9c], edi
mov ecx, dword [ebp - 0xa4]
add dword [ebp - 0xa0], eax
adc dword [ebp - 0x9c], edx
mov eax, dword [ebp - 0xa0]
mov edx, dword [ebp - 0x9c]
mov dword [ecx], eax
mov ebx, dword [ebp + 8]
mov dword [ecx + 4], edx
or byte [ebx + 0x2b], 0x10
pop edi
mov esi, dword [ebp - 0x64]
pop eax
push esi
push ebx
call fcn.00409ba0
mov eax, 1
add esp, 0x10
jmp 0x412006