Function at 0x6656b0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
and esp, 0xfffffff0
sub esp, 0x20
mov edi, dword [ebp + 8]
mov eax, dword [0x905e64]
test edi, edi
jne 0x6656d0
test eax, eax
jne 0x665d80
mov dword [esp], 0x80d712
call fcn.007101e8
mov dword [esp + 8], 0
mov dword [esp + 4], 0x7300012
mov dword [esp], eax
call fcn.00561570
mov dword [0x905e68], eax
mov esi, eax
mov dword [esp], 0x80d9bc
call fcn.007101e8
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], str.DrvCmdTimeOpt
mov dword [esp + 8], 0x7734e4
mov dword [esp + 4], eax
mov dword [esp], 0x50
call fcn.00561450
mov dword [esp], esi
mov dword [esp + 4], eax
call fcn.005615c0
mov byte [eax + 0xb8], 1
mov ebx, eax
mov dword [eax + 0xbc], 0
mov dword [eax + 0x30], 1
mov dword [esp], 0x80d9ec
call fcn.007101e8
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], eax
mov dword [esp], 0x10
call fcn.00561450
mov dword [esp], esi
mov dword [esp + 4], eax
call fcn.005615c0
mov dword [eax + 0x18], 1
mov dword [eax + 0x38], ebx
mov dword [esp], 0x80da43
call fcn.007101e8
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], str.DrvCmdTimeThres1CD
mov dword [esp + 8], 0x7734f0
mov dword [esp + 4], eax
mov dword [esp], 0x30
call fcn.00561450
mov dword [esp], esi
mov dword [esp + 4], eax
call fcn.005615c0
movdqu xmm0, xmmword [0x80f140]
mov dword [0x905ec4], eax
movups xmmword [eax + 0xb8], xmm0
mov dword [eax + 0x18], 1
mov dword [eax + 0x38], ebx
mov dword [eax + 0x64], fcn.00663530
mov dword [esp], 0x80da55
call fcn.007101e8
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], str.DrvCmdTimeThres2CD
mov dword [esp + 8], 0x7734ec
mov dword [esp + 4], eax
mov dword [esp], 0x30
call fcn.00561450
mov dword [esp], esi
mov dword [esp + 4], eax
call fcn.005615c0
movdqu xmm0, xmmword [0x80f140]
mov dword [0x905ec0], eax
movups xmmword [eax + 0xb8], xmm0
mov dword [eax + 0x18], 1
mov dword [eax + 0x38], ebx
mov dword [eax + 0x64], fcn.00663530
mov dword [esp], 0x80da67
call fcn.007101e8
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], str.DrvCmdTimeThres3CD
mov dword [esp + 8], 0x7734e8
mov dword [esp + 4], eax
mov dword [esp], 0x30
call fcn.00561450
mov dword [esp], esi
mov dword [esp + 4], eax
call fcn.005615c0
movdqu xmm0, xmmword [0x80f140]
mov dword [0x905ebc], eax
movups xmmword [eax + 0xb8], xmm0
mov dword [eax + 0x18], 1
mov dword [eax + 0x38], ebx
mov dword [eax + 0x64], fcn.00663530
mov dword [esp], 0x80da7c
call fcn.007101e8
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], eax
mov dword [esp], 0x10
call fcn.00561450
mov dword [esp], esi
mov dword [esp + 4], eax
call fcn.005615c0
mov dword [eax + 0x18], 1
mov dword [eax + 0x38], ebx
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x80dafd
mov dword [esp], 0x10
call fcn.00561450
mov dword [esp], esi
mov dword [esp + 4], eax
call fcn.005615c0
mov dword [0x905eb8], eax
mov dword [eax + 0x18], 1
mov dword [eax + 0x38], ebx
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], str.DrvCmdTimeOpt
mov dword [esp + 8], 0x7734e4
mov dword [esp + 4], 0x80dafd
mov dword [esp], 0x50
call fcn.00561450
mov dword [esp], esi
mov dword [esp + 4], eax
call fcn.005615c0
mov dword [0x905eb4], eax
mov dword [eax + 0x18], 1
mov dword [eax + 0x38], ebx
mov byte [eax + 0xb8], 1
mov dword [eax + 0xbc], 1
mov byte [eax + 0xc2], 1
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], str.DrvCmdTimeGood12
mov dword [esp + 8], 0x7734e0
mov dword [esp + 4], 0
mov dword [esp], 0x30
call fcn.00561450
mov dword [esp], esi
mov dword [esp + 4], eax
call fcn.005615c0
movdqu xmm0, xmmword [0x80f150]
mov dword [eax + 0x18], 1
movups xmmword [eax + 0xb8], xmm0
mov dword [eax + 0x38], ebx
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], str.DrvCmdTimeOpt
mov dword [esp + 8], 0x7734e4
mov dword [esp + 4], 0x80dafd
mov dword [esp], 0x50
call fcn.00561450
mov dword [esp], esi
mov dword [esp + 4], eax
call fcn.005615c0
mov dword [0x905eb0], eax
mov dword [eax + 0x18], 1
mov dword [eax + 0x38], ebx
mov byte [eax + 0xb8], 1
mov dword [eax + 0xbc], 2
mov byte [eax + 0xc2], 1
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], str.DrvCmdTimeGood23
mov dword [esp + 8], 0x7734dc
mov dword [esp + 4], 0
mov dword [esp], 0x30
call fcn.00561450
mov dword [esp], esi
mov dword [esp + 4], eax
call fcn.005615c0
movdqu xmm0, xmmword [0x80f150]
mov dword [eax + 0x18], 1
movups xmmword [eax + 0xb8], xmm0
mov dword [eax + 0x38], ebx
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], str.DrvCmdTimeOpt
mov dword [esp + 8], 0x7734e4
mov dword [esp + 4], 0x80dafd
mov dword [esp], 0x50
call fcn.00561450
mov dword [esp], esi
mov dword [esp + 4], eax
call fcn.005615c0
mov dword [0x905eac], eax
mov dword [eax + 0x18], 1
mov dword [eax + 0x38], ebx
mov byte [eax + 0xb8], 1
mov dword [eax + 0xbc], 3
mov byte [eax + 0xc2], 1
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], str.DrvCmdTimeGood3p
mov dword [esp + 8], 0x901e90
mov dword [esp + 4], 0
mov dword [esp], 0x30
call fcn.00561450
mov dword [esp], esi
mov dword [esp + 4], eax
call fcn.005615c0
movdqu xmm0, xmmword [0x80f150]
mov dword [eax + 0x18], 1
mov dword [eax + 0x38], ebx
movups xmmword [eax + 0xb8], xmm0
test edi, edi
je 0x665cc0
mov dword [esp + 4], esi
mov dword [esp], edi
call fcn.00561650
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp], 0x80d712
call fcn.007101e8
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0x7300012
mov dword [esp + 4], eax
mov eax, dword [0x905e68]
mov dword [esp], eax
call fcn.00562950
mov dword [0x905e64], eax
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.00663530
mov dword [esp + 8], 1
mov dword [esp + 4], 0
mov eax, dword [0x905e64]
mov dword [esp], eax
call fcn.005633a0
cmp eax, 1
jne 0x665cb7
mov eax, dword [0x905e64]
mov dword [esp], eax
call fcn.005637d0
cmp byte [0x773789], 0
je 0x665cb7
mov dword [ebp + 8], 0
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
jmp fcn.005129e0
mov dword [esp + 4], 0
mov dword [esp], eax
call fcn.00562b30
jmp 0x665d12