Function at 0x4580f0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x6c
mov ebx, dword [esp + 0x80]
lea eax, [esp + 0x4f]
mov dword [esp + 4], 0x10
mov dword [esp + 8], 0
mov dword [esp + 0xc], ebx
mov dword [esp], eax
call fcn.0045a310
test eax, eax
je 0x4581e0
cmp eax, 0x10
je 0x458140
xor ebp, ebp
add esp, 0x6c
mov eax, ebp
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp + 0xc], 1
mov dword [esp + 4], 0xfffffff0
mov dword [esp + 8], 0xffffffff
mov dword [esp], ebx
call fcn.0045a860
test eax, eax
jne 0x45812b
mov eax, dword [esp + 0x4f]
mov edx, dword [esp + 0x53]
xor eax, 0x532e5f5f
xor edx, 0x45444d59
or eax, edx
je 0x458220
mov eax, dword [esp + 0x4f]
mov edx, dword [esp + 0x53]
xor eax, 0x532e5f5f
xor edx, 0x45444d59
or eax, edx
je 0x458250
mov eax, dword [esp + 0x4f]
mov edx, dword [esp + 0x53]
xor eax, 0x2020202f
xor edx, 0x20202020
or eax, edx
je 0x458270
mov eax, dword [esp + 0x4f]
mov edx, dword [esp + 0x53]
xor eax, 0x4d59532f
xor edx, 0x202f3436
or eax, edx
je 0x4581f0
mov dword [ebx + 0x98], 0
lea esi, cs:[esi]
nop
mov ebp, 1
jmp 0x45812d
mov eax, dword [esp + 0x57]
mov edx, dword [esp + 0x5b]
xor eax, 0x20202020
xor edx, 0x20202020
or eax, edx
jne 0x4581cc
mov dword [esp], ebx
call fcn.004657c0
mov ebp, eax
jmp 0x45812d
mov eax, dword [esp + 0x57]
mov edx, dword [esp + 0x5b]
xor eax, 0x20202046
xor edx, 0x20202020
or eax, edx
jne 0x45817f
mov eax, ebx
call fcn.004572c0
mov ebp, eax
jmp 0x45812d
mov eax, dword [esp + 0x57]
mov edx, dword [esp + 0x5b]
xor eax, 0x20202f46
xor edx, 0x20202020
or eax, edx
jne 0x45819a
jmp 0x45823b
mov eax, dword [esp + 0x57]
mov edx, dword [esp + 0x5b]
xor eax, 0x20202020
xor edx, 0x20202020
or eax, edx
jne 0x4581b5
mov eax, dword [ebx + 0xa4]
xor ebp, ebp
mov dword [esp + 0x24], eax
mov eax, dword [ebx + 8]
mov dword [esp], ebx
call dword [eax + 0xe0]
test eax, eax
je 0x45812d
mov edi, dword [eax + 4]
mov dword [esp + 4], eax
lea esi, [esp + 0x4b]
mov dword [esp], ebx
call fcn.00404e10
mov dword [esp + 0xc], ebx
mov dword [esp + 4], 4
mov dword [esp + 8], 0
mov dword [esp], esi
call fcn.0045a310
xor eax, 4
or eax, edx
je 0x458300
call fcn.00402b80
cmp eax, 1
je 0x45812d
mov dword [esp], 0xa
call fcn.00402b90
jmp 0x45812d
mov dword [esp], esi
call fcn.00404020
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], edx
shld edx, eax, 2
shl eax, 2
mov dword [esp + 0x18], eax
mov eax, edi
mov dword [esp + 0x1c], edx
xor edx, edx
add eax, 0xfffffffc
adc edx, 0xffffffff
mov dword [esp + 0x30], eax
sub eax, dword [esp + 0x18]
mov dword [esp + 0x34], edx
sbb edx, dword [esp + 0x1c]
mov ecx, edx
mov dword [esp + 0x28], eax
mov edx, eax
mov eax, 0xfffff
cmp eax, edx
mov eax, ebp
mov dword [esp + 0x2c], ecx
sbb eax, ecx
jb 0x4585a4
mov dword [esp + 0x38], fcn.00404020
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x14]
mov dword [esp], ebx
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x2c]
shld edi, esi, 4
shl esi, 4
add eax, 1
mov dword [esp + 0x30], esi
adc edx, 0
add eax, esi
mov dword [esp + 0x34], edi
adc edx, edi
mov dword [esp + 4], eax
mov dword [esp + 8], edx
call fcn.00404d80
mov ecx, dword [esp + 0x24]
mov esi, eax
mov dword [ecx + 0x10], eax
test eax, eax
je 0x45812d
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
mov dword [esp], ebx
mov dword [esp + 4], edx
mov dword [esp + 8], ecx
call fcn.00404cf0
mov dword [esp + 0x3c], eax
test eax, eax
je 0x45858c
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
mov dword [esp + 0xc], ebx
mov dword [esp], eax
mov dword [esp + 8], ecx
mov dword [esp + 4], edx
call fcn.0045a310
mov edi, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
xor eax, edi
xor edx, ecx
or eax, edx
jne 0x458566
mov edi, dword [esp + 0x30]
mov eax, dword [esp + 0x28]
mov dword [esp + 0xc], ebx
mov edx, dword [esp + 0x2c]
add edi, esi
mov dword [esp + 4], eax
mov dword [esp + 8], edx
mov dword [esp], edi
call fcn.0045a310
mov ecx, eax
mov dword [esp + 0x30], edx
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x2c]
xor eax, ecx
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x18]
xor ecx, edx
or eax, ecx
jne 0x458566
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
test edx, edx
jne 0x458454
test eax, eax
je 0x4584b8
xor edx, edx
mov dword [esp + 0x80], ebx
mov ebp, dword [esp + 0x3c]
mov dword [esp + 0x18], edx
mov dword [esp + 0x1c], edx
mov dword [esp], ebp
mov eax, dword [esp + 0x38]
add esi, 0x10
add ebp, 4
call eax
mov dword [esi - 0x10], edi
mov dword [esi - 4], edx
mov dword [esi - 8], eax
mov dword [esp], edi
call sub.msvcrt.dll_strlen
add dword [esp + 0x18], 1
mov ecx, dword [esp + 0x18]
adc dword [esp + 0x1c], 0
mov edx, dword [esp + 0x14]
lea edi, [edi + eax + 1]
mov ebx, ecx
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x1c]
xor eax, ebx
xor edx, ecx
or eax, edx
jne 0x458469
mov ebx, dword [esp + 0x80]
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x10]
mov byte [edi], 0
mov dword [eax + 0x14], ecx
mov dword [esp], ebx
call fcn.0045a6d0
mov esi, eax
mov edi, edx
and eax, 1
and edx, 0x80000000
jns 0x4584ec
add eax, 0xffffffff
or edx, 0xffffffff
or eax, 0xfffffffe
add eax, 1
adc edx, 0
add eax, esi
mov esi, dword [esp + 0x24]
adc edx, edi
mov dword [esi], eax
mov eax, dword [esp + 0x3c]
mov dword [esi + 4], edx
mov dword [ebx + 0x98], 1
mov dword [esp + 4], eax
mov dword [esp], ebx
call fcn.00404e10
xor eax, eax
mov dword [esp + 0xc], eax
mov eax, dword [esi]
mov edx, dword [esi + 4]
mov dword [esp], ebx
mov dword [esp + 4], eax
mov dword [esp + 8], edx
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], edx
call fcn.0045a860
mov eax, dword [ebx + 8]
mov dword [esp], ebx
call dword [eax + 0xe0]
test eax, eax
je 0x4581e0
mov edx, dword [eax]
cmp byte [edx], 0x2f
je 0x458602
mov dword [esp + 4], eax
mov dword [esp], ebx
call fcn.00404e10
jmp 0x4581e0
call fcn.00402b80
cmp eax, 1
je 0x45857c
mov dword [esp], 0xa
call fcn.00402b90
mov eax, dword [esp + 0x3c]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00404e10
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x10]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.00404e10
jmp 0x45812d
mov dword [esp], ebx
call fcn.00402920
cmp eax, 4
jne 0x458356
mov eax, dword [ebx + 8]
cmp dword [eax + 4], 2
jne 0x458356
mov dword [esp], esi
call fcn.00404030
mov esi, dword [esp + 0x30]
mov edi, dword [esp + 0x34]
mov dword [esp + 0x38], fcn.00404030
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], edx
shld edx, eax, 2
shl eax, 2
sub esi, eax
mov dword [esp + 0x18], eax
sbb edi, edx
mov dword [esp + 0x1c], edx
mov dword [esp + 0x28], esi
mov dword [esp + 0x2c], edi
jmp 0x45835e
cmp byte [edx + 1], 0x20
jne 0x458555
mov ecx, dword [eax + 4]
lea edx, [ecx + 0x3d]
mov ecx, dword [esp + 0x24]
and edx, 0xfffffffe
add dword [ecx], edx
adc dword [ecx + 4], 0
jmp 0x458555