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

Disassembly:
push ebp
mov ebp, esp
sub esp, 8
push ebx
push esi
mov esi, dword [ebp + 8]
push edi
test esi, esi
je case.0x469763.5
cmp dword [ebp + 0x10], 0
mov ebx, dword [ebp + 0x14]
jne 0x469605
test ebx, ebx
jne case.0x469763.5
mov ecx, dword [ebp + 0xc]
cmp ecx, 3
je 0x469643
cmp ecx, 4
je 0x469643
cmp ecx, 5
je 0x469643
cmp ecx, 6
je 0x469643
cmp ecx, 7
je 0x469643
cmp ecx, 8
je 0x469643
cmp ecx, 0xa
je 0x469643
cmp ecx, 0xb
je 0x469643
cmp ecx, 0xc
je 0x469643
cmp ecx, 0xd
je 0x469643
cmp ecx, 0xe
jne case.0x469763.5
mov al, byte [esi + 0x224]
test al, al
je case.0x469697.5
movzx eax, al
add eax, 0xfffffffd
cmp eax, 5
ja case.0x469658.5
jmp dword [eax*4 + 0x4699d8]
push esi
call fcn.00463270
jmp 0x469685
push esi
call fcn.00464770
jmp 0x469685
push esi
call fcn.00461640
jmp 0x469685
push esi
call fcn.004684f0
jmp 0x469685
push esi
call fcn.004686e0
add esp, 4
movzx eax, byte [esi + 0x224]
add eax, 0xfffffffd
cmp eax, 5
ja case.0x469697.5
jmp dword [eax*4 + 0x4699f0]
push esi
call fcn.00463270
jmp 0x4696c4
push esi
call fcn.00464770
jmp 0x4696c4
push esi
call fcn.00461640
jmp 0x4696c4
push esi
call fcn.004684f0
jmp 0x4696c4
push esi
call fcn.004686e0
add esp, 4
mov eax, dword [ebp + 0xc]
mov byte [esi + 0x224], al
add eax, 0xfffffffd
mov byte [esi + 0x225], 0
cmp eax, 5
ja case.0x4696df.5
jmp dword [eax*4 + 0x469a08]
push esi
call fcn.00463090
add esp, 4
mov edi, eax
jmp 0x46972c
push esi
call fcn.004643c0
add esp, 4
mov edi, eax
jmp 0x46972c
push esi
call fcn.00461260
add esp, 4
mov edi, eax
jmp 0x46972c
push esi
call fcn.00468340
add esp, 4
mov edi, eax
jmp 0x46972c
push esi
call fcn.004683a0
add esp, 4
mov edi, eax
jmp 0x46972c
mov edi, 0xffffff53
mov dword [esi + 0x220], 0
test edi, edi
jne 0x4699c3
lea eax, [esi + 0x160]
mov dword [ebp - 8], eax
lea ecx, [esi + 0xe0]
movzx eax, byte [esi + 0x224]
add eax, 0xfffffffd
mov dword [ebp - 4], ecx
cmp eax, 5
ja case.0x469763.5
jmp dword [eax*4 + 0x469a20]
mov eax, dword [ebp + 0x10]
mov dword [ebp + 8], 0x40
cmp ebx, 0x40
jbe 0x4698a9
push ebx
push eax
push esi
call fcn.004633a0
mov edi, eax
add esp, 0xc
test edi, edi
jne 0x4699c3
lea eax, [esi + 0xe0]
push eax
push esi
call fcn.00463180
mov edi, eax
add esp, 8
test edi, edi
jne 0x4699c3
lea ebx, [eax + 0x10]
lea esi, [eax + 0x40]
jmp 0x4698fa
mov eax, dword [ebp + 0x10]
mov dword [ebp + 8], 0x40
cmp ebx, 0x40
jbe 0x4698a9
push ebx
push eax
push esi
call fcn.004647e0
mov edi, eax
add esp, 0xc
test edi, edi
jne 0x4699c3
lea eax, [esi + 0xe0]
push eax
push esi
call fcn.004644b0
mov edi, eax
add esp, 8
test edi, edi
jne 0x4699c3
lea ebx, [eax + 0x14]
lea esi, [eax + 0x40]
jmp 0x4698fa
mov eax, dword [ebp + 0x10]
mov dword [ebp + 8], 0x40
cmp ebx, 0x40
jbe 0x4698a9
push ebx
push eax
push esi
call fcn.004616b0
mov edi, eax
add esp, 0xc
test edi, edi
jne 0x4699c3
lea eax, [esi + 0xe0]
push eax
push esi
call fcn.004612f0
mov edi, eax
add esp, 8
test edi, edi
jne 0x4699c3
lea ebx, [eax + 0x20]
lea esi, [eax + 0x40]
jmp 0x4698fa
mov eax, dword [ebp + 0x10]
mov dword [ebp + 8], 0x80
cmp ebx, 0x80
jbe 0x4698a9
push ebx
push eax
push esi
call fcn.004685a0
mov edi, eax
add esp, 0xc
test edi, edi
jne 0x4699c3
lea eax, [esi + 0xe0]
push eax
push esi
call fcn.00468430
mov edi, eax
add esp, 8
test edi, edi
jne 0x4699c3
lea ebx, [eax + 0x30]
jmp 0x4698f5
mov eax, dword [ebp + 0x10]
mov dword [ebp + 8], 0x80
cmp ebx, 0x80
ja 0x4698c1
test eax, eax
je 0x4698b8
push ebx
push eax
push ecx
call fcn.004bc760
add esp, 0xc
mov esi, dword [ebp + 8]
cmp ebx, esi
jae 0x46990f
jmp 0x4698fa
push ebx
push eax
push esi
call fcn.004687a0
mov edi, eax
add esp, 0xc
test edi, edi
jne 0x4699c3
lea eax, [esi + 0xe0]
push eax
push esi
call fcn.00468600
mov edi, eax
add esp, 8
test edi, edi
jne 0x4699c3
mov ebx, 0x40
mov esi, 0x80
mov eax, esi
sub eax, ebx
push eax
mov eax, dword [ebp - 4]
add eax, ebx
push 0
push eax
call fcn.004bd260
add esp, 0xc
mov esi, dword [ebp - 8]
xor edx, edx
mov ebx, dword [ebp + 8]
mov ecx, dword [ebp - 4]
lea eax, [esi - 1]
add eax, ebx
cmp ecx, eax
ja 0x469930
lea eax, [ecx - 1]
add eax, ebx
cmp eax, esi
jae 0x4699a8
movaps xmm2, xmmword [0x521ce0]
mov eax, ecx
movaps xmm3, xmmword [0x521cd0]
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 0x469940
cmp edx, ebx
jae 0x4699c3
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 0x4699b0
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