Function at 0x495390
Capabilities:
Authenticate hmac
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
push ebx
mov ebx, dword [ebp + 0xc]
mov eax, ecx
mov dword [ebp - 4], eax
push esi
push edi
test eax, eax
je case.0x495432.5
cmp dword [ebp + 8], 0
jne 0x4953b7
test ebx, ebx
jne case.0x495432.5
cmp edx, 3
je 0x4953ed
cmp edx, 4
je 0x4953ed
cmp edx, 5
je 0x4953ed
cmp edx, 6
je 0x4953ed
cmp edx, 7
je 0x4953ed
cmp edx, 8
je 0x4953ed
cmp edx, 0xa
je 0x4953ed
cmp edx, 0xb
je 0x4953ed
cmp edx, 0xc
je 0x4953ed
cmp edx, 0xd
jne case.0x495432.5
push ecx
mov byte [eax + 0x225], 0
mov byte [eax + 0x224], dl
call fcn.00495260
mov edi, eax
add esp, 4
test edi, edi
jne 0x495725
mov ecx, dword [ebp - 4]
lea eax, [ecx + 0x160]
mov dword [ebp - 0xc], eax
lea esi, [ecx + 0xe0]
movzx eax, byte [ecx + 0x224]
add eax, 0xfffffffd
cmp eax, 5
ja case.0x495432.5
jmp dword [eax*4 + 0x49572c]
mov edx, dword [ebp + 8]
mov dword [ebp - 8], 0x40
cmp ebx, 0x40
ja 0x4954bc
test edx, edx
je 0x495457
push ebx
push edx
push esi
call fcn.0041d1d0
add esp, 0xc
mov eax, dword [ebp - 8]
cmp ebx, eax
jae 0x49546f
sub eax, ebx
push eax
lea eax, [esi + ebx]
push 0
push eax
call fcn.0041d750
add esp, 0xc
mov ebx, dword [ebp - 8]
xor ecx, ecx
mov eax, dword [ebp - 0xc]
dec eax
add eax, ebx
lea edx, [ebx - 1]
add edx, esi
cmp esi, eax
mov eax, dword [ebp - 0xc]
ja 0x49568a
cmp edx, eax
jb 0x49568a
xor eax, eax
cmp eax, ebx
jae 0x495717
nop dword [eax]
mov al, byte [esi]
lea esi, [esi + 1]
xor al, 0x5c
mov byte [esi + 0x7f], al
xor byte [esi - 1], 0x36
sub ebx, 1
jne 0x4954a0
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push ebx
call fcn.004cac50
mov edi, eax
add esp, 4
test edi, edi
jne 0x495717
mov ecx, dword [ebp - 4]
mov edx, esi
call fcn.004cab10
mov edi, eax
test edi, edi
jne 0x495717
lea ebx, [eax + 0x10]
lea eax, [edi + 0x40]
jmp 0x49545e
mov edx, dword [ebp + 8]
mov dword [ebp - 8], 0x40
cmp ebx, 0x40
jbe 0x495448
push ebx
call fcn.004c0eb0
mov edi, eax
add esp, 4
test edi, edi
jne 0x495717
mov ecx, dword [ebp - 4]
mov edx, esi
call fcn.004c1030
mov edi, eax
test edi, edi
jne 0x495717
lea ebx, [eax + 0x14]
lea eax, [edi + 0x40]
jmp 0x49545e
mov edx, dword [ebp + 8]
mov dword [ebp - 8], 0x40
cmp ebx, 0x40
jbe 0x495448
test edx, edx
je 0x495712
push ebx
call fcn.004c9850
mov edi, eax
add esp, 4
test edi, edi
jne 0x495717
mov ecx, dword [ebp - 4]
mov edx, esi
call fcn.004ca090
mov edi, eax
test edi, edi
jne 0x495717
lea ebx, [eax + 0x20]
lea eax, [edi + 0x40]
jmp 0x49545e
mov edx, dword [ebp + 8]
mov dword [ebp - 8], 0x80
cmp ebx, 0x80
jbe 0x495448
test edx, edx
je 0x495712
push ebx
call fcn.004c2a90
mov edi, eax
add esp, 4
test edi, edi
jne 0x495717
test esi, esi
je 0x495712
mov ecx, dword [ebp - 4]
call fcn.004c2940
mov edi, eax
test edi, edi
jne 0x495717
mov eax, dword [ebp - 4]
mov ecx, eax
movups xmm0, xmmword [eax]
movups xmmword [esi], xmm0
movups xmm0, xmmword [eax + 0x10]
movups xmmword [esi + 0x10], xmm0
movups xmm0, xmmword [eax + 0x20]
movups xmmword [esi + 0x20], xmm0
call fcn.004c2800
mov edi, eax
test edi, edi
jne 0x495717
lea ebx, [eax + 0x30]
lea eax, [ebx + 0x50]
jmp 0x49545e
mov edx, dword [ebp + 8]
mov dword [ebp - 8], 0x80
cmp ebx, 0x80
jbe 0x495448
test edx, edx
je 0x495712
push ebx
call fcn.004c2a90
mov edi, eax
add esp, 4
test edi, edi
jne 0x495717
test esi, esi
je 0x495712
mov ecx, dword [ebp - 4]
call fcn.004c2940
mov edi, eax
test edi, edi
jne 0x495717
mov eax, dword [ebp - 4]
push eax
movups xmm0, xmmword [eax]
movups xmmword [esi], xmm0
movups xmm0, xmmword [eax + 0x10]
movups xmmword [esi + 0x10], xmm0
movups xmm0, xmmword [eax + 0x20]
movups xmmword [esi + 0x20], xmm0
movups xmm0, xmmword [eax + 0x30]
movups xmmword [esi + 0x30], xmm0
call fcn.004c5670
mov edi, eax
add esp, 4
test edi, edi
jne 0x495717
lea ebx, [eax + 0x40]
lea eax, [ebx + 0x40]
jmp 0x49545e
movaps xmm2, xmmword [0x516d30]
add eax, 0x30
movaps xmm3, xmmword [str.6666666666666666]
add esi, 0x10
nop
movups xmm1, xmmword [esi - 0x10]
add ecx, 0x40
lea eax, [eax + 0x40]
lea esi, [esi + 0x40]
movaps xmm0, xmm1
pxor xmm1, xmm3
pxor xmm0, xmm2
movups xmmword [esi - 0x50], xmm1
movups xmm1, xmmword [esi - 0x40]
movups xmmword [eax - 0x70], xmm0
movaps xmm0, xmm1
pxor xmm1, xmm3
pxor xmm0, xmm2
movups xmmword [esi - 0x40], xmm1
movups xmm1, xmmword [esi - 0x30]
movups xmmword [esi + 0x40], xmm0
movaps xmm0, xmm1
pxor xmm1, xmm3
pxor xmm0, xmm2
movups xmmword [esi - 0x30], xmm1
movups xmm1, xmmword [esi - 0x20]
movups xmmword [eax - 0x50], xmm0
movaps xmm0, xmm1
pxor xmm1, xmm3
pxor xmm0, xmm2
movups xmmword [eax - 0x40], xmm0
movups xmmword [esi - 0x20], xmm1
cmp ecx, ebx
jb 0x4956a0
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov edi, 0xffffff53
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, 0xffffff53
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret