Function at 0x4657c0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x6c
mov eax, dword [esp + 0x80]
mov esi, dword [eax + 0xa4]
mov dword [esi + 0x10], 0
mov dword [esp], eax
call fcn.0045a6d0
mov eax, dword [esp + 0x80]
mov dword [esp + 4], 0x10
mov dword [esp + 8], 0
mov dword [esp + 0xc], eax
lea eax, [esp + 0x4f]
mov dword [esp], eax
call fcn.0045a310
mov ebx, edx
mov edx, eax
or eax, ebx
je 0x46589a
xor edx, 0x10
or edx, ebx
je 0x465830
xor eax, eax
add esp, 0x6c
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [esp + 0x80]
mov dword [esp + 0xc], 1
mov dword [esp + 4], 0xfffffff0
mov dword [esp + 8], 0xffffffff
mov dword [esp], eax
call fcn.0045a860
test eax, eax
jne 0x46581d
mov eax, dword [esp + 0x4f]
mov edx, dword [esp + 0x53]
xor eax, 0x2020202f
xor edx, 0x20202020
or eax, edx
je 0x4658a8
mov eax, dword [esp + 0x4f]
mov edx, dword [esp + 0x53]
xor eax, 0x4d59532f
xor edx, 0x202f3436
or eax, edx
je 0x4658d8
mov eax, dword [esp + 0x80]
mov dword [eax + 0x98], 0
mov eax, 1
jmp 0x46581f
mov eax, dword [esp + 0x57]
mov edx, dword [esp + 0x5b]
xor eax, 0x20202020
xor edx, 0x20202020
or eax, edx
jne 0x465872
mov eax, dword [esp + 0x80]
mov dword [esp], eax
call fcn.004580f0
jmp 0x46581f
mov eax, dword [esp + 0x57]
mov edx, dword [esp + 0x5b]
xor eax, 0x20202020
xor edx, 0x20202020
or eax, edx
jne 0x465889
mov eax, dword [esp + 0x80]
mov ebx, dword [esp + 0x80]
mov eax, dword [eax + 8]
mov dword [esp], ebx
call dword [eax + 0xe0]
test eax, eax
je 0x46581d
mov edi, dword [eax + 4]
mov dword [esp + 4], eax
lea ebp, [esp + 0x47]
mov eax, dword [esp + 0x80]
mov dword [esp], eax
call fcn.00404e10
mov eax, dword [esp + 0x80]
mov dword [esp + 4], 8
mov dword [esp + 8], 0
mov dword [esp + 0xc], eax
mov dword [esp], ebp
call fcn.0045a310
xor eax, 8
or eax, edx
je 0x465980
call fcn.00402b80
cmp eax, 1
je 0x46581d
mov dword [esp], 0xa
call fcn.00402b90
xor eax, eax
jmp 0x46581f
mov dword [esp], ebp
call fcn.00404060
mov ecx, eax
mov ebx, edx
shld edx, eax, 3
shl eax, 3
mov dword [esp + 0x1c], edx
xor edx, edx
mov dword [esp + 0x18], eax
mov eax, edi
add eax, 0xfffffff8
mov dword [esp + 0x2c], ebx
adc edx, 0xffffffff
mov edi, eax
sub edi, dword [esp + 0x18]
mov dword [esp + 0x28], ecx
mov dword [esp + 0x20], edi
mov ebp, edx
mov edi, ecx
sbb ebp, dword [esp + 0x1c]
mov dword [esp + 0x24], ebp
shl edi, 4
mov ebp, ebx
mov ebx, dword [esp + 0x80]
shld ebp, ecx, 4
mov eax, edi
mov dword [esp + 0x30], edi
add eax, 1
mov edx, ebp
mov dword [esp], ebx
adc edx, 0
add eax, dword [esp + 0x20]
adc edx, dword [esp + 0x24]
mov dword [esp + 0x34], ebp
mov dword [esp + 4], eax
mov dword [esp + 8], edx
call fcn.00404d80
mov dword [esi + 0x10], eax
mov edi, eax
test eax, eax
je 0x46581d
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x80]
mov dword [esp + 4], edx
mov dword [esp + 8], ecx
mov dword [esp], ebx
call fcn.00404cf0
test eax, eax
je 0x465bc6
mov ebp, dword [esp + 0x80]
mov ecx, dword [esp + 0x1c]
mov dword [esp], eax
mov edx, dword [esp + 0x18]
mov dword [esp + 0x3c], eax
mov dword [esp + 0xc], ebp
mov dword [esp + 8], ecx
mov dword [esp + 4], edx
call fcn.0045a310
mov ecx, dword [esp + 0x18]
mov ebp, dword [esp + 0x1c]
xor ecx, eax
xor ebp, edx
or ecx, ebp
jne 0x465b99
mov edx, dword [esp + 0x80]
mov ebp, dword [esp + 0x30]
mov eax, dword [esp + 0x20]
mov dword [esp + 0xc], edx
mov edx, dword [esp + 0x24]
add ebp, edi
mov dword [esp + 4], eax
mov dword [esp + 8], edx
mov dword [esp], ebp
call fcn.0045a310
mov ebx, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
xor eax, ebx
xor edx, ecx
or eax, edx
jne 0x465b99
mov ebx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x18], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x20], ebx
mov ebx, dword [esp + 0x2c]
mov eax, ecx
or eax, ebx
je 0x465b2f
mov dword [esp + 0x30], esi
lea esi, cs:[esi]
mov esi, dword [esp + 0x20]
add edi, 0x10
mov dword [esp], esi
call fcn.00404060
mov dword [edi - 0x10], ebp
mov dword [edi - 4], edx
mov dword [edi - 8], eax
mov dword [esp], ebp
call sub.msvcrt.dll_strlen
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x2c]
lea ebp, [ebp + eax + 1]
mov eax, esi
add dword [esp + 0x18], 1
mov ebx, dword [esp + 0x18]
adc dword [esp + 0x1c], 0
add eax, 8
mov dword [esp + 0x20], eax
mov eax, edx
mov edx, ecx
mov ecx, dword [esp + 0x1c]
xor eax, ebx
xor edx, ecx
or eax, edx
jne 0x465ad8
mov esi, dword [esp + 0x30]
mov eax, dword [esp + 0x28]
mov byte [ebp], 0
mov dword [esi + 0x14], eax
mov eax, dword [esp + 0x80]
mov dword [esp], eax
call fcn.0045a6d0
mov ebp, edx
mov ecx, eax
mov ebx, edx
sar ebp, 0x1f
xor eax, ebp
sub eax, ebp
xor edx, edx
and eax, 1
xor edx, ebp
xor eax, ebp
sub eax, ebp
sbb edx, ebp
add eax, ecx
mov dword [esi], eax
mov eax, dword [esp + 0x80]
adc edx, ebx
mov dword [esi + 4], edx
mov dword [eax + 0x98], 1
mov eax, dword [esp + 0x3c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x80]
mov dword [esp], eax
call fcn.00404e10
jmp 0x46589a
call fcn.00402b80
cmp eax, 1
je 0x465baf
mov dword [esp], 0xa
call fcn.00402b90
mov eax, dword [esp + 0x3c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x80]
mov dword [esp], eax
call fcn.00404e10
mov eax, dword [esi + 0x10]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x80]
mov dword [esp], eax
call fcn.00404e10
xor eax, eax
jmp 0x46581f