Function at 0x53583c
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffe8
push ebx
push esi
push edi
xor ebx, ebx
mov dword [ebp - 4], ebx
mov dword [ebp - 8], ebx
mov dword [ebp - 0xc], ebx
mov dword [ebp - 0x10], ecx
mov ebx, edx
mov edi, eax
xor eax, eax
push ebp
push 0x535a6c
push dword fs:[eax]
mov dword fs:[eax], esp
cmp byte [0x77aac8], 0
jne 0x53587a
mov byte [0x77aac8], 1
call fcn.00403a68
test edi, edi
jne 0x535888
test bl, bl
je 0x535888
mov byte [ebp - 0x12], 0
jmp 0x53588b
mov byte [ebp - 0x12], bl
mov eax, pe_nt_image_headers32
call fcn.00403a90
mov ebx, eax
mov eax, 0x10
call fcn.00403a90
add al, 5
mov byte [ebp - 0x11], al
mov eax, edi
test eax, eax
je 0x5358b1
sub eax, 4
mov eax, dword [eax]
lea edx, [eax + 2]
movzx eax, byte [ebp - 0x11]
add edx, eax
lea eax, [ebp - 4]
call fcn.0040650c
cmp byte [ebp - 0x12], 2
jne 0x5358dc
lea eax, [ebp - 4]
call fcn.004062dc
movzx edx, byte [ebp - 0x11]
mov cl, 0x80
sub cl, dl
mov byte [eax], cl
jmp 0x535926
cmp byte [ebp - 0x12], 1
jne 0x5358f2
lea eax, [ebp - 4]
call fcn.004062dc
movzx edx, byte [ebp - 0x11]
mov byte [eax], dl
jmp 0x535926
cmp byte [ebp - 0x12], 0
jne 0x53591d
test edi, edi
jne 0x535909
lea eax, [ebp - 4]
call fcn.004062dc
mov byte [eax], 0
jmp 0x535926
lea eax, [ebp - 4]
call fcn.004062dc
movzx edx, byte [ebp - 0x11]
mov cl, 0xff
sub cl, dl
mov byte [eax], cl
jmp 0x535926
xor edx, edx
xor eax, eax
call fcn.0041c98c
lea eax, [ebp - 4]
call fcn.004062dc
mov byte [eax + 1], bl
lea eax, [ebp - 4]
call fcn.004062dc
lea esi, [eax + 2]
test edi, edi
je 0x535955
mov eax, edi
test eax, eax
je 0x53594b
sub eax, 4
mov eax, dword [eax]
mov edx, esi
mov ecx, edi
xchg ecx, eax
call fcn.0040d904
mov eax, edi
test eax, eax
je 0x535960
sub eax, 4
mov eax, dword [eax]
mov edi, eax
dec edi
test edi, edi
jl 0x535973
inc edi
movzx eax, byte [esi]
xor al, bl
mov byte [esi], al
inc esi
dec edi
jne 0x535968
movzx edi, byte [ebp - 0x11]
dec edi
test edi, edi
jl 0x53598d
inc edi
mov eax, pe_nt_image_headers32
call fcn.00403a90
mov byte [esi], al
inc esi
dec edi
jne 0x53597d
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 4]
call fcn.0047a478
mov eax, dword [ebp - 0x10]
mov eax, dword [eax]
mov dword [ebp - 0x18], eax
mov ebx, dword [ebp - 0x18]
test ebx, ebx
je 0x5359ac
sub ebx, 4
mov ebx, dword [ebx]
lea edx, [ebp - 0xc]
mov eax, ebx
call fcn.00449d7c
mov esi, dword [ebp - 0xc]
mov eax, esi
test eax, eax
je 0x5359c4
sub eax, 4
mov eax, dword [eax]
lea edx, [eax + 3]
lea eax, [ebp - 8]
call fcn.0040650c
lea eax, [ebp - 8]
call fcn.004062dc
mov byte [eax], 0x3f
lea eax, [ebp - 8]
call fcn.004062dc
mov byte [eax + 1], 0x65
mov ebx, esi
test ebx, ebx
je 0x5359f1
sub ebx, 4
mov ebx, dword [ebx]
lea eax, [ebp - 8]
call fcn.004062dc
add ebx, 2
mov byte [eax + ebx], 0x30
mov eax, esi
test eax, eax
je 0x535a0b
sub eax, 4
mov eax, dword [eax]
mov edi, eax
test edi, edi
jle 0x535a37
mov esi, 1
lea eax, [ebp - 8]
call fcn.004062dc
lea edx, [esi + 2]
mov ecx, dword [ebp - 0xc]
movzx ecx, byte [ecx + esi - 1]
sub cl, 0x30
add cl, 0x41
mov byte [eax + edx - 1], cl
inc esi
dec edi
jne 0x535a16
push dword [ebp - 8]
mov eax, dword [ebp - 0x10]
push dword [eax]
push 0x535a84
mov eax, dword [ebp - 0x10]
mov edx, 3
call fcn.00406180
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x535a73
lea eax, [ebp - 0xc]
mov edx, 3
call fcn.00405df4
ret