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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
push ebx
mov ebx, ecx
mov eax, edx
mov dword [ebp - 8], eax
push esi
push edi
test ebx, ebx
je case.0x1003b395.5
cmp dword [ebp + 8], 0
jne 0x1003b308
cmp dword [ebp + 0xc], 0
jne case.0x1003b395.5
cmp eax, 3
je 0x1003b33e
cmp eax, 4
je 0x1003b33e
cmp eax, 5
je 0x1003b33e
cmp eax, 6
je 0x1003b33e
cmp eax, 7
je 0x1003b33e
cmp eax, 8
je 0x1003b33e
cmp eax, 0xa
je 0x1003b33e
cmp eax, 0xb
je 0x1003b33e
cmp eax, 0xc
je 0x1003b33e
cmp eax, 0xd
jne case.0x1003b395.5
cmp byte [ebx + 0x224], 0
je 0x1003b34f
call fcn.1003bb40
mov eax, dword [ebp - 8]
push ecx
mov edx, eax
mov byte [ebx + 0x225], 0
mov ecx, ebx
mov byte [ebx + 0x224], al
call fcn.1003b1a0
mov edi, eax
add esp, 4
test edi, edi
jne 0x1003b67b
lea eax, [ebx + 0x160]
mov dword [ebp - 8], eax
lea esi, [ebx + 0xe0]
movzx eax, byte [ebx + 0x224]
add eax, 0xfffffffd
cmp eax, 5
ja case.0x1003b395.5
jmp dword [eax*4 + 0x1003b690]
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp + 8]
mov dword [ebp - 4], 0x40
cmp ecx, 0x40
jbe 0x1003b50e
push ecx
mov ecx, ebx
call fcn.10070fd0
mov edi, eax
add esp, 4
test edi, edi
jne 0x1003b67b
mov edx, esi
mov ecx, ebx
call fcn.10071100
mov edi, eax
test edi, edi
jne 0x1003b67b
lea ecx, [eax + 0x10]
lea eax, [edi + 0x40]
jmp 0x1003b59e
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp + 8]
mov dword [ebp - 4], 0x40
cmp ecx, 0x40
jbe 0x1003b50e
push ecx
mov ecx, ebx
call fcn.1005f810
mov edi, eax
add esp, 4
test edi, edi
jne 0x1003b67b
mov edx, esi
mov ecx, ebx
call fcn.1005f990
mov edi, eax
test edi, edi
jne 0x1003b67b
lea ecx, [eax + 0x14]
lea eax, [edi + 0x40]
jmp 0x1003b59e
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp + 8]
mov dword [ebp - 4], 0x40
cmp ecx, 0x40
jbe 0x1003b50e
test edx, edx
je 0x1003b676
push ecx
mov ecx, ebx
call fcn.1006d0f0
mov edi, eax
add esp, 4
test edi, edi
jne 0x1003b67b
mov edx, esi
mov ecx, ebx
call fcn.1006d270
mov edi, eax
test edi, edi
jne 0x1003b67b
lea ecx, [eax + 0x20]
lea eax, [edi + 0x40]
jmp 0x1003b59e
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp + 8]
mov dword [ebp - 4], 0x80
cmp ecx, 0x80
jbe 0x1003b50e
test edx, edx
je 0x1003b676
push ecx
mov ecx, ebx
call fcn.100643a0
mov edi, eax
add esp, 4
test edi, edi
jne 0x1003b67b
test esi, esi
je 0x1003b676
mov ecx, ebx
call fcn.10064570
mov edi, eax
test edi, edi
jne 0x1003b67b
movups xmm0, xmmword [ebx]
mov ecx, ebx
movups xmmword [esi], xmm0
movups xmm0, xmmword [ebx + 0x10]
movups xmmword [esi + 0x10], xmm0
movups xmm0, xmmword [ebx + 0x20]
movups xmmword [esi + 0x20], xmm0
call fcn.10064730
mov edi, eax
test edi, edi
jne 0x1003b67b
lea ecx, [eax + 0x30]
jmp 0x1003b599
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp + 8]
mov dword [ebp - 4], 0x80
cmp ecx, 0x80
ja 0x1003b52d
test edx, edx
je 0x1003b520
push ecx
push edx
push esi
call fcn.1007e990
mov ecx, dword [ebp + 0xc]
add esp, 0xc
mov eax, dword [ebp - 4]
cmp ecx, eax
jae 0x1003b5af
jmp 0x1003b59e
test edx, edx
je 0x1003b676
push ecx
mov ecx, ebx
call fcn.100643a0
mov edi, eax
add esp, 4
test edi, edi
jne 0x1003b67b
test esi, esi
je 0x1003b676
mov ecx, ebx
call fcn.10064570
mov edi, eax
test edi, edi
jne 0x1003b67b
movups xmm0, xmmword [ebx]
push ebx
movups xmmword [esi], xmm0
movups xmm0, xmmword [ebx + 0x10]
movups xmmword [esi + 0x10], xmm0
movups xmm0, xmmword [ebx + 0x20]
movups xmmword [esi + 0x20], xmm0
movups xmm0, xmmword [ebx + 0x30]
movups xmmword [esi + 0x30], xmm0
call fcn.10060c70
mov edi, eax
add esp, 4
test edi, edi
jne 0x1003b67b
mov ecx, 0x40
mov eax, 0x80
sub eax, ecx
push eax
lea eax, [esi + ecx]
push 0
push eax
call fcn.1007d2d0
add esp, 0xc
mov ecx, dword [ebp - 4]
xor edx, edx
mov eax, dword [ebp - 8]
dec eax
add eax, ecx
lea ebx, [ecx - 1]
add ebx, esi
cmp esi, eax
mov eax, dword [ebp - 8]
ja 0x1003b5f0
cmp ebx, eax
jb 0x1003b5f0
xor eax, eax
cmp eax, ecx
jae 0x1003b67b
mov al, byte [esi]
lea esi, [esi + 1]
xor al, 0x5c
mov byte [esi + 0x7f], al
xor byte [esi - 1], 0x36
sub ecx, 1
jne 0x1003b5d4
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
movaps xmm2, xmmword [0x100acac0]
add eax, 0x30
movaps xmm3, xmmword [0x100aca90]
add esi, 0x10
movups xmm1, xmmword [esi - 0x10]
add edx, 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 edx, ecx
jb 0x1003b604
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
pop edi
pop esi
mov eax, 0xffffff53
pop ebx
mov esp, ebp
pop ebp
ret