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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
mov dword [ebp - 8], ecx
push ebx
push esi
push edi
test ecx, ecx
je case.0x100c9b90.5
cmp dword [ebp + 8], 0
mov esi, dword [ebp + 0xc]
jne 0x100c9b15
test esi, esi
jne case.0x100c9b90.5
cmp edx, 3
je 0x100c9b4b
cmp edx, 4
je 0x100c9b4b
cmp edx, 5
je 0x100c9b4b
cmp edx, 6
je 0x100c9b4b
cmp edx, 7
je 0x100c9b4b
cmp edx, 8
je 0x100c9b4b
cmp edx, 0xa
je 0x100c9b4b
cmp edx, 0xb
je 0x100c9b4b
cmp edx, 0xc
je 0x100c9b4b
cmp edx, 0xd
jne case.0x100c9b90.5
push ecx
mov byte [ecx + 0x225], 0
mov byte [ecx + 0x224], dl
call fcn.100c99f0
mov edi, eax
add esp, 4
test edi, edi
jne 0x100c9db1
lea eax, [ecx + 0xe0]
mov dword [ebp - 4], eax
lea eax, [ecx + 0x160]
mov dword [ebp - 0xc], eax
movzx eax, byte [ecx + 0x224]
add eax, 0xfffffffd
cmp eax, 5
ja case.0x100c9b90.5
jmp dword [eax*4 + 0x100c9db8]
mov edx, dword [ebp + 8]
mov ebx, 0x40
cmp esi, ebx
jbe 0x100c9c9d
push esi
call fcn.100cfb10
mov edi, eax
add esp, 4
test edi, edi
jne 0x100c9da3
mov edx, dword [ebp - 4]
mov ecx, dword [ebp - 8]
call fcn.100cfc40
mov edi, eax
test edi, edi
jne 0x100c9da3
lea esi, [ebx - 0x30]
jmp 0x100c9ce1
mov edx, dword [ebp + 8]
mov ebx, 0x40
cmp esi, ebx
jbe 0x100c9c9d
push esi
call fcn.100be7a0
mov edi, eax
add esp, 4
test edi, edi
jne 0x100c9da3
mov edx, dword [ebp - 4]
mov ecx, dword [ebp - 8]
call fcn.100be920
mov edi, eax
test edi, edi
jne 0x100c9da3
lea esi, [ebx - 0x2c]
jmp 0x100c9ce1
mov edx, dword [ebp + 8]
mov ebx, 0x40
cmp esi, ebx
jbe 0x100c9c9d
push esi
push edx
push ecx
call fcn.100cd240
mov edi, eax
add esp, 0xc
test edi, edi
jne 0x100c9da3
push dword [ebp - 4]
push dword [ebp - 8]
call fcn.100cd270
mov edi, eax
add esp, 8
test edi, edi
jne 0x100c9da3
lea esi, [ebx - 0x20]
jmp 0x100c9ce1
mov edx, dword [ebp + 8]
mov ebx, 0x80
cmp esi, ebx
jbe 0x100c9c9d
push esi
call fcn.100c9620
mov edi, eax
add esp, 4
test edi, edi
jne 0x100c9da3
mov edx, dword [ebp - 4]
mov ecx, dword [ebp - 8]
call fcn.100c98a0
mov edi, eax
test edi, edi
jne 0x100c9da3
lea esi, [ebx - 0x50]
jmp 0x100c9ce1
mov edx, dword [ebp + 8]
mov ebx, 0x80
cmp esi, ebx
ja 0x100c9cb4
test edx, edx
je 0x100c9cae
push esi
push edx
push dword [ebp - 4]
call fcn.101ec960
add esp, 0xc
cmp esi, ebx
jae 0x100c9cf6
jmp 0x100c9ce1
push esi
call fcn.100c9620
mov edi, eax
add esp, 4
test edi, edi
jne 0x100c9da3
mov edx, dword [ebp - 4]
mov ecx, dword [ebp - 8]
call fcn.100c97a0
mov edi, eax
test edi, edi
jne 0x100c9da3
mov esi, 0x40
mov eax, ebx
sub eax, esi
push eax
mov eax, dword [ebp - 4]
add eax, esi
push 0
push eax
call fcn.101ee530
add esp, 0xc
mov esi, dword [ebp - 0xc]
xor edx, edx
mov ecx, dword [ebp - 4]
lea eax, [esi - 1]
add eax, ebx
cmp ecx, eax
ja 0x100c9d10
lea eax, [ecx - 1]
add eax, ebx
cmp eax, esi
jae 0x100c9d88
movaps xmm2, xmmword [0x1027a830]
mov eax, ecx
movaps xmm3, xmmword [0x1027a720]
movups xmm1, xmmword [eax]
lea eax, [eax + 0x40]
movaps xmm0, xmm1
pxor xmm1, xmm3
movups xmmword [eax - 0x40], xmm1
movups xmm1, xmmword [eax - 0x30]
pxor xmm0, xmm2
movups xmmword [eax + 0x40], xmm0
movaps xmm0, xmm1
pxor xmm1, xmm3
movups xmmword [eax - 0x30], xmm1
movups xmm1, xmmword [eax - 0x20]
pxor xmm0, xmm2
movups xmmword [esi + edx + 0x10], xmm0
movaps xmm0, xmm1
pxor xmm1, xmm3
movups xmmword [eax - 0x20], xmm1
movups xmm1, xmmword [eax - 0x10]
pxor xmm0, xmm2
movups xmmword [esi + edx + 0x20], xmm0
movaps xmm0, xmm1
pxor xmm1, xmm3
pxor xmm0, xmm2
movups xmmword [esi + edx + 0x30], xmm0
add edx, 0x40
movups xmmword [eax - 0x10], xmm1
cmp edx, ebx
jb 0x100c9d20
cmp edx, ebx
jae 0x100c9da3
add ecx, edx
sub ebx, edx
mov al, byte [ecx]
lea ecx, [ecx + 1]
xor al, 0x5c
mov byte [ecx + 0x7f], al
xor byte [ecx - 1], 0x36
sub ebx, 1
jne 0x100c9d90
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