Function at 0x4858bc
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
mov ecx, 0xf
push 0
push 0
dec ecx
jne 0x4858c4
push ecx
push ebx
push esi
push edi
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x485f59
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [0x4a49ec]
call fcn.0042ec6c
xor ecx, ecx
push ebp
push 0x485f2a
push dword fs:[ecx]
mov dword fs:[ecx], esp
lea eax, [ebp - 0xc]
mov ecx, 0x485f70
mov edx, dword [0x48cf30]
call fcn.00404ba8
mov eax, dword [ebp - 0xc]
call fcn.0040a940
test al, al
jne 0x48591f
mov eax, dword [ebp - 0xc]
call fcn.0040a964
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x320]
mov edx, dword [eax]
call dword [edx + 0xd8]
mov eax, 0x48cf34
call fcn.0040489c
xor eax, eax
mov dword [0x48cf38], eax
lea eax, [ebp - 8]
mov ecx, 0x485f84
mov edx, dword [0x48cf30]
call fcn.00404ba8
mov eax, dword [ebp - 8]
call fcn.0040a930
test al, al
je 0x485c3b
mov dl, 1
mov eax, dword [0x418ef8]
call fcn.00403a34
mov dword [ebp - 0x30], eax
xor eax, eax
push ebp
push 0x485996
push dword fs:[eax]
mov dword fs:[eax], esp
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 0x30]
call fcn.0041db84
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x4859a0
mov eax, dword [ebp - 0x30]
mov edx, dword [eax]
call dword [edx]
cmp edx, 0
jne 0x4859b7
cmp eax, 0
jbe 0x485c33
jmp 0x4859bd
jle 0x485c33
mov eax, 0x48cf34
call fcn.0040489c
xor eax, eax
mov dword [0x48cf38], eax
mov eax, dword [ebp - 0x30]
mov edx, dword [eax]
call dword [edx]
mov edx, eax
mov eax, dword [ebp - 0x30]
mov eax, dword [eax + 4]
mov dword [ebp - 0x28], eax
mov eax, 0x786ddddd
xor eax, 0xffffffff
cmp edx, 8
jl 0x485af5
mov ecx, dword [ebp - 0x28]
movzx ecx, byte [ecx]
xor ecx, eax
and ecx, 0xff
mov ecx, dword [ecx*4 + 0x48cf44]
shr eax, 8
xor ecx, eax
mov eax, ecx
inc dword [ebp - 0x28]
mov ecx, dword [ebp - 0x28]
movzx ecx, byte [ecx]
xor ecx, eax
and ecx, 0xff
mov ecx, dword [ecx*4 + 0x48cf44]
shr eax, 8
xor ecx, eax
mov eax, ecx
inc dword [ebp - 0x28]
mov ecx, dword [ebp - 0x28]
movzx ecx, byte [ecx]
xor ecx, eax
and ecx, 0xff
mov ecx, dword [ecx*4 + 0x48cf44]
shr eax, 8
xor ecx, eax
mov eax, ecx
inc dword [ebp - 0x28]
mov ecx, dword [ebp - 0x28]
movzx ecx, byte [ecx]
xor ecx, eax
and ecx, 0xff
mov ecx, dword [ecx*4 + 0x48cf44]
shr eax, 8
xor ecx, eax
mov eax, ecx
inc dword [ebp - 0x28]
mov ecx, dword [ebp - 0x28]
movzx ecx, byte [ecx]
xor ecx, eax
and ecx, 0xff
mov ecx, dword [ecx*4 + 0x48cf44]
shr eax, 8
xor ecx, eax
mov eax, ecx
inc dword [ebp - 0x28]
mov ecx, dword [ebp - 0x28]
movzx ecx, byte [ecx]
xor ecx, eax
and ecx, 0xff
mov ecx, dword [ecx*4 + 0x48cf44]
shr eax, 8
xor ecx, eax
mov eax, ecx
inc dword [ebp - 0x28]
mov ecx, dword [ebp - 0x28]
movzx ecx, byte [ecx]
xor ecx, eax
and ecx, 0xff
mov ecx, dword [ecx*4 + 0x48cf44]
shr eax, 8
xor ecx, eax
mov eax, ecx
inc dword [ebp - 0x28]
mov ecx, dword [ebp - 0x28]
movzx ecx, byte [ecx]
xor ecx, eax
and ecx, 0xff
mov ecx, dword [ecx*4 + 0x48cf44]
shr eax, 8
xor ecx, eax
mov eax, ecx
inc dword [ebp - 0x28]
sub edx, 8
cmp edx, 8
jge 0x4859f1
test edx, edx
je 0x485b1d
mov ecx, dword [ebp - 0x28]
movzx ecx, byte [ecx]
xor ecx, eax
and ecx, 0xff
mov ecx, dword [ecx*4 + 0x48cf44]
shr eax, 8
xor ecx, eax
mov eax, ecx
inc dword [ebp - 0x28]
dec edx
test edx, edx
jne 0x485af9
xor eax, 0xffffffff
mov dword [0x48cf38], eax
mov eax, dword [ebp - 0x30]
mov edx, dword [eax]
call dword [edx]
mov dword [0x48cf3c], eax
mov word [ebp - 0x48], 0x64
mov dword [ebp - 0x44], 0x13461c4
mov eax, dword [ebp - 0x30]
mov edx, dword [eax]
call dword [edx]
mov edx, eax
mov eax, dword [ebp - 0x30]
mov eax, dword [eax + 4]
call fcn.00481668
mov dword [ebp - 0x40], eax
mov eax, dword [ebp - 0x30]
mov edx, dword [eax]
call dword [edx]
mov dword [ebp - 0x3c], eax
mov eax, dword [0x48cf38]
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x40]
mov dword [0x48cf40], eax
push 0x485f9c
lea ecx, [ebp - 0x4c]
lea eax, [ebp - 0x48]
mov edx, 0x14
call fcn.0046974c
push dword [ebp - 0x4c]
mov eax, dword [ebp - 0x30]
mov edx, dword [eax]
call dword [edx]
mov edx, eax
lea ecx, [ebp - 0x50]
mov eax, dword [ebp - 0x30]
mov eax, dword [eax + 4]
call fcn.0046974c
push dword [ebp - 0x50]
push 0x485fa8
mov eax, 0x48cf34
mov edx, 4
call fcn.00404c1c
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x320]
mov eax, dword [eax + 0x22c]
call fcn.00478410
mov ebx, eax
xor edx, edx
mov eax, ebx
call fcn.00477f60
mov edx, 0x485fb4
mov eax, ebx
call fcn.00477eb0
call fcn.0040c0b8
add esp, 0xfffffff8
fstp qword [esp]
wait
lea eax, [ebp - 0x54]
call fcn.0040cd4c
mov edx, dword [ebp - 0x54]
mov eax, dword [ebx + 8]
mov ecx, dword [eax]
call dword [ecx + 0x38]
mov eax, dword [0x48cf40]
xor edx, edx
push edx
push eax
lea eax, [ebp - 0x58]
call fcn.0040a514
mov edx, dword [ebp - 0x58]
mov eax, dword [ebx + 8]
mov ecx, dword [eax]
call dword [ecx + 0x38]
lea edx, [ebp - 0x5c]
mov eax, dword [0x48cf3c]
call fcn.0040a428
mov edx, dword [ebp - 0x5c]
mov eax, dword [ebx + 8]
mov ecx, dword [eax]
call dword [ecx + 0x38]
mov eax, dword [ebp - 0x30]
call fcn.00403a64
mov dl, 1
mov eax, dword [0x418c08]
call fcn.00403a34
mov dword [ebp - 0x14], eax
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 0xc]
call fcn.00485438
mov eax, dword [0x4a49e8]
mov eax, dword [eax + 8]
dec eax
test eax, eax
jl 0x485c93
inc eax
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x1c], 0
mov edx, dword [ebp - 0x1c]
mov eax, dword [0x4a49e8]
call fcn.0041ae88
mov dword [ebp - 0x20], eax
mov edx, dword [0x4816d0]
mov eax, dword [ebp - 0x20]
call fcn.0040565c
inc dword [ebp - 0x1c]
dec dword [ebp - 0x34]
jne 0x485c6d
mov eax, dword [0x4a49e8]
mov edx, dword [eax]
call dword [edx + 8]
mov dl, 1
mov eax, dword [0x418c08]
call fcn.00403a34
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x14]
mov edx, dword [eax]
call dword [edx + 0x14]
dec eax
test eax, eax
jl 0x485f02
inc eax
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x1c], 0
xor eax, eax
push ebp
push 0x485cf9
push dword fs:[eax]
mov dword fs:[eax], esp
lea ecx, [ebp - 0x60]
mov edx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x14]
mov ebx, dword [eax]
call dword [ebx + 0xc]
mov edx, dword [ebp - 0x60]
mov eax, dword [ebp - 0x18]
mov ecx, dword [eax]
call dword [ecx + 0x68]
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x485d03
mov eax, dword [ebp - 0x18]
mov edx, dword [eax]
call dword [edx + 0x14]
test eax, eax
jle 0x485ef6
mov edx, dword [0x4816d0]
mov eax, 0x20
call fcn.00405648
mov dword [ebp - 0x20], eax
lea ecx, [ebp - 0x64]
mov edx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x14]
mov ebx, dword [eax]
call dword [ebx + 0xc]
mov edx, dword [ebp - 0x64]
mov eax, dword [ebp - 0x20]
add eax, 4
call fcn.004048f0
call fcn.0040c0b8
mov eax, dword [ebp - 0x20]
fstp qword [eax + 0x18]
wait
lea edx, [ebp - 0x68]
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 4]
call fcn.0040ac04
mov edx, dword [ebp - 0x68]
mov eax, dword [ebp - 0x20]
call fcn.004048f0
lea edx, [ebp - 0x10]
mov eax, dword [ebp - 0x18]
mov ecx, dword [eax]
call dword [ecx + 0x1c]
mov eax, dword [ebp - 0x10]
call fcn.00481670
mov edx, dword [ebp - 0x20]
mov dword [edx + 0xc], eax
mov eax, dword [ebp - 0x10]
call fcn.00404b5c
mov edx, dword [ebp - 0x20]
mov dword [edx + 0x10], eax
xor eax, eax
mov dword [ebp - 0x24], eax
xor eax, eax
mov dword [ebp - 0x2c], eax
xor eax, eax
push ebp
push 0x485ddb
push dword fs:[eax]
mov dword fs:[eax], esp
lea eax, [ebp - 0x2c]
push eax
mov eax, dword [ebp - 0x10]
call fcn.00404b5c
push eax
lea eax, [ebp - 0x10]
call fcn.00404db4
lea ecx, [ebp - 0x24]
pop edx
call fcn.00464c7c
mov edx, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x24]
call fcn.00481668
mov ebx, eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x485df1
cmp dword [ebp - 0x24], 0
jne 0x485e0a
mov edx, dword [0x4816d0]
mov eax, dword [ebp - 0x20]
call fcn.0040565c
jmp 0x485ef6
mov word [ebp - 0x48], 0x65
mov dword [ebp - 0x44], 0x13461c4
mov dword [ebp - 0x40], ebx
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x3c], eax
xor eax, eax
mov dword [ebp - 0x38], eax
push 0x485f9c
lea ecx, [ebp - 0x6c]
lea eax, [ebp - 0x48]
mov edx, 0x14
call fcn.0046974c
push dword [ebp - 0x6c]
lea ecx, [ebp - 0x70]
mov edx, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x24]
call fcn.0046974c
push dword [ebp - 0x70]
push 0x485fa8
mov eax, dword [ebp - 0x20]
add eax, 8
mov edx, 4
call fcn.00404c1c
mov eax, dword [ebp - 0x24]
call fcn.00402da0
mov edx, dword [ebp - 0x20]
mov eax, dword [0x4a49e8]
call fcn.0041ad18
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x320]
mov eax, dword [eax + 0x22c]
call fcn.00478410
mov ebx, eax
mov edx, dword [ebp - 0x20]
mov eax, ebx
call fcn.00477f60
mov eax, dword [ebp - 0x20]
mov edx, dword [eax]
mov eax, ebx
call fcn.00477eb0
mov eax, dword [ebp - 0x20]
push dword [eax + 0x1c]
push dword [eax + 0x18]
lea eax, [ebp - 0x74]
call fcn.0040cd4c
mov edx, dword [ebp - 0x74]
mov eax, dword [ebx + 8]
mov ecx, dword [eax]
call dword [ecx + 0x38]
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0xc]
xor edx, edx
push edx
push eax
lea eax, [ebp - 0x78]
call fcn.0040a514
mov edx, dword [ebp - 0x78]
mov eax, dword [ebx + 8]
mov ecx, dword [eax]
call dword [ecx + 0x38]
lea edx, [ebp - 0x7c]
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x10]
call fcn.0040a428
mov edx, dword [ebp - 0x7c]
mov eax, dword [ebx + 8]
mov ecx, dword [eax]
call dword [ecx + 0x38]
inc dword [ebp - 0x1c]
dec dword [ebp - 0x34]
jne 0x485cc8
mov eax, dword [ebp - 0x14]
call fcn.00403a64
mov eax, dword [ebp - 0x18]
call fcn.00403a64
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x485f31
mov eax, dword [0x4a49ec]
call fcn.0042ec74
ret