Function at 0x485760
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xd4
mov eax, dword [0x4e3f80]
xor eax, esp
mov dword [esp + 0xd0], eax
push ebx
push esi
mov esi, ecx
push edi
mov edi, dword [ebp + 8]
mov dword [esp + 0x18], esi
call dword [sym.imp.KERNEL32.dll_GetTickCount]
add eax, 0x2710
mov dword [esi + 0x130], eax
cmp byte [edi], 2
je 0x4857c3
push str.buf___STX_r_n
call fcn.00477b80
add esp, 4
or eax, 0xffffffff
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xd0]
xor ecx, esp
call fcn.0049dc2a
mov esp, ebp
pop ebp
ret 8
movzx ecx, byte [edi + 1]
movzx eax, byte [edi + 2]
shl ecx, 8
or eax, ecx
movzx ecx, byte [edi + 3]
shl eax, 8
or ecx, eax
cmp ecx, dword [ebp + 0xc]
jbe 0x485805
push str.length___bufInLen_r_n
call fcn.00477b80
add esp, 4
or eax, 0xffffffff
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xd0]
xor ecx, esp
call fcn.0049dc2a
mov esp, ebp
pop ebp
ret 8
mov bl, byte [edi + ecx - 1]
xor dl, dl
xor eax, eax
add ecx, 0xffffffff
je 0x48581a
xor dl, byte [edi + eax]
inc eax
cmp eax, ecx
jb 0x485812
cmp dl, bl
je 0x485845
push str.genCheckSum___checkSum_r_n
call fcn.00477b80
add esp, 4
or eax, 0xffffffff
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xd0]
xor ecx, esp
call fcn.0049dc2a
mov esp, ebp
pop ebp
ret 8
mov al, byte [edi + 4]
mov bl, byte [edi + 5]
mov byte [esp + 0xf], bl
cmp al, 1
jne 0x48587e
push 0
mov eax, str.WRONG_PRINTER
mov ebx, 0xd
call fcn.0040dea0
or eax, 0xffffffff
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xd0]
xor ecx, esp
call fcn.0049dc2a
mov esp, ebp
pop ebp
ret 8
cmp al, 2
jne 0x485c27
mov eax, dword [0x4ee750]
test eax, eax
je 0x485963
mov eax, dword [eax + 0x1c]
mov ecx, dword [eax + 0x5c]
cmp ecx, 1
jl 0x4858aa
cmp ecx, 0xff
jle 0x485963
cmp bl, 0x15
je 0x485963
cmp bl, 0x11
je 0x485963
call fcn.00483dd0
test eax, eax
je 0x485963
xor ebx, ebx
xor esi, esi
lea ecx, [ecx]
push esi
lea eax, [esp + 0x5c]
push str.PRINTER_d_AVAILABLE
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
lea eax, [esp + 0x58]
call fcn.0046cca0
test eax, eax
je 0x4858f2
inc ebx
inc esi
cmp esi, 0x20
jl 0x4858d0
test ebx, ebx
jne 0x48594d
mov ecx, dword [0x4ee750]
mov edx, dword [ecx + 0x1c]
mov eax, dword [edx + 0x5c]
cmp eax, 1
jl 0x485914
cmp eax, 0xff
jle 0x48594d
mov esi, dword [esp + 0x18]
mov eax, dword [esi + 0x234]
push eax
push 0x4cd37c
lea edx, [esp + 0x3c]
call fcn.0040a1c0
mov ecx, dword [esi + 0x174]
mov eax, dword [0x4ee750]
mov esi, dword [eax + 0x1c]
add esp, 8
push ecx
push 1
lea edx, [esp + 0x3c]
push edx
xor ecx, ecx
call fcn.00482530
mov ecx, dword [0x4ee750]
mov eax, dword [ecx + 0x1c]
call fcn.00483df0
mov esi, dword [esp + 0x18]
mov bl, byte [esp + 0xf]
movzx eax, bl
sub eax, 1
je 0x485abb
sub eax, 0x10
je 0x485a94
sub eax, 4
jne 0x485c27
push 0x11
call fcn.00490828
mov ebx, eax
mov eax, dword [edi + 6]
mov dword [ebx], eax
mov ecx, dword [edi + 0xa]
mov dword [ebx + 4], ecx
mov edx, dword [edi + 0xe]
add esp, 4
mov dword [ebx + 8], edx
mov eax, dword [edi + 0x12]
push ebx
push str.Seen__S_r_n
mov dword [ebx + 0xc], eax
mov byte [ebx + 0x10], 0
call fcn.00477b80
mov edi, dword [esp + 0x20]
add edi, 0x238
add esp, 8
lea esi, [esp + 0x1c]
mov dword [esp + 0x10], edi
call fcn.00486e10
lea esi, [esp + 0x2c]
call fcn.00486e30
mov esi, eax
lea edi, [esp + 0x1c]
call fcn.00486f10
test al, al
je 0x485a43
lea esi, [esp + 0x1c]
call fcn.00486eb0
mov ecx, dword [eax]
mov ecx, dword [ecx + 4]
mov eax, ebx
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x485a15
test dl, dl
je 0x485a11
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x485a15
add eax, 2
add ecx, 2
test dl, dl
jne 0x4859f5
xor eax, eax
jmp 0x485a1a
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x485a71
lea esi, [esp + 0x1c]
call fcn.00486ee0
mov edi, dword [esp + 0x10]
lea esi, [esp + 0x2c]
call fcn.00486e30
mov esi, eax
lea edi, [esp + 0x1c]
call fcn.00486f10
test al, al
jne 0x4859e5
push 0x18
call fcn.004907ee
mov edi, dword [esp + 0x14]
mov dword [eax + 4], ebx
xor ecx, ecx
mov dword [eax + 0xc], ecx
mov dword [eax + 8], ecx
mov dword [eax + 0x10], ecx
mov dword [eax + 0x14], ecx
add esp, 4
lea ebx, [esp + 0x1c]
mov dword [esp + 0x1c], eax
mov dword [eax], ecx
call fcn.00486e50
mov eax, dword [esp + 0x18]
inc dword [eax + 0x250]
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xd0]
xor ecx, esp
call fcn.0049dc2a
mov esp, ebp
pop ebp
ret 8
mov byte [esi + 0x254], 1
mov byte [esi + 0x255], 1
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xd0]
xor ecx, esp
call fcn.0049dc2a
mov esp, ebp
pop ebp
ret 8
mov edx, dword [ebp + 0xc]
push edx
push edi
mov ecx, esi
call fcn.0047ad50
lea ebx, [esi + 0x238]
lea esi, [esp + 0x10]
mov edi, ebx
mov dword [esp + 0x1c], eax
call fcn.00486e10
lea esi, [esp + 0x24]
call fcn.00486e30
mov esi, eax
lea edi, [esp + 0x10]
call fcn.00486f10
test al, al
je 0x485c0c
jmp 0x485b00
lea esi, [esp + 0x10]
call fcn.00486eb0
mov eax, dword [eax]
mov edi, dword [esp + 0x18]
mov ecx, dword [eax + 4]
mov eax, dword [edi + 0x234]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x485b38
test dl, dl
je 0x485b34
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x485b38
add eax, 2
add ecx, 2
test dl, dl
jne 0x485b18
xor eax, eax
jmp 0x485b3d
sbb eax, eax
sbb eax, 0xffffffff
lea esi, [esp + 0x10]
test eax, eax
je 0x485b7f
call fcn.00486ee0
lea esi, [esp + 0x24]
mov edi, ebx
call fcn.00486e30
mov esi, eax
lea edi, [esp + 0x10]
call fcn.00486f10
test al, al
jne 0x485b00
mov eax, dword [esp + 0x1c]
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xd0]
xor ecx, esp
call fcn.0049dc2a
mov esp, ebp
pop ebp
ret 8
call fcn.00486eb0
mov esi, eax
push edi
mov eax, str.VIEWPRINTS
call fcn.00480bc0
mov ecx, dword [esi]
lea esi, [esp + 0x10]
mov dword [ecx + 0xc], eax
call fcn.00486eb0
mov esi, eax
push edi
mov eax, str.PRINTINGOFF
call fcn.00480bc0
mov edx, dword [esi]
lea esi, [esp + 0x10]
mov dword [edx + 8], eax
call fcn.00486eb0
mov eax, dword [eax]
cmp dword [eax + 0x10], 0
je 0x485bd5
call fcn.00486eb0
mov ecx, dword [eax]
mov eax, dword [ecx + 0x10]
push eax
call fcn.0049081d
add esp, 4
lea esi, [esp + 0x10]
call fcn.00486eb0
mov esi, eax
push str.VIEWMESSAGE
mov eax, edi
call fcn.00480b20
mov edx, dword [esi]
lea esi, [esp + 0x10]
mov dword [edx + 0x10], eax
call fcn.00486eb0
mov esi, eax
push edi
mov eax, str.PRINT_ERRORCODE
call fcn.00480bc0
mov ecx, dword [esi]
mov dword [ecx + 0x14], eax
mov eax, dword [esp + 0x1c]
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xd0]
xor ecx, esp
call fcn.0049dc2a
mov esp, ebp
pop ebp
ret 8
cmp byte [esi + 0x254], 0
je 0x485c53
mov edx, dword [ebp + 0xc]
push edx
push edi
mov ecx, esi
call fcn.0047ad50
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xd0]
xor ecx, esp
call fcn.0049dc2a
mov esp, ebp
pop ebp
ret 8
mov ecx, dword [esp + 0xdc]
pop edi
pop esi
pop ebx
xor ecx, esp
mov eax, 6
call fcn.0049dc2a
mov esp, ebp
pop ebp
ret 8