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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0xc0
mov dword [esp + 0x10], 0xfb44f92a
mov dword [esp + 0x14], 0xff59fd6b
mov dword [esp + 0x18], 0xf36cf15d
mov dword [esp + 0x1c], 0xf7b3f592
mov dword [esp + 0x20], 0xeb7ce97e
mov dword [esp + 0x24], 0xef72ed4d
mov dword [esp + 0x28], 0xe37be17b
mov dword [esp + 0x2c], 0xe77ae573
mov dword [esp + 0x30], 0xdb6dd986
mov dword [esp + 0x34], 0xdf48dd7d
mov dword [esp + 0x38], 0xd34bd14a
mov dword [esp + 0x3c], 0xd74dd54c
mov dword [esp + 0x40], 0xcb64c943
mov word [esp + 0x44], 0xcdca
mov dword [esp + 0x46], 0
mov dword [esp + 0x4a], 0
mov dword [esp + 0x4e], 0
mov dword [esp + 0x52], 0
mov dword [esp + 0x56], 0
mov dword [esp + 0x5a], 0
mov byte [esp + 0x5e], 0
mov dword [esp + 0x84], 0
mov eax, dword [esp + 0x84]
cmp eax, 0x4e
ja 0x41750c
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x84]
mov ecx, dword [esp + 0x84]
movzx ecx, byte [esp + ecx + 0x10]
mov edx, eax
and edx, 0xc833b6bf
xor eax, 0x4833b6bf
lea edx, [eax + edx*2]
lea eax, [edx + ecx]
and edx, ecx
add edx, edx
sub eax, edx
add al, 0xc7
mov ecx, dword [esp + 0x84]
mov byte [esp + ecx + 0x10], al
inc dword [esp + 0x84]
mov eax, dword [esp + 0x84]
cmp eax, 0x4f
jb 0x4174c0
mov esi, dword [ebp + 0xc]
movzx ecx, word [esp + 0x10]
lea eax, [esp + 0x84]
test cx, cx
je 0x417541
lea edx, [esp + 0x12]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x417530
mov ecx, dword [ebp + 0x10]
mov word [eax], 0
mov esi, dword [esi + 4]
mov eax, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [esi + eax + 2], 0
lea eax, [eax + 2]
jne 0x417560
sar eax, 1
mov edi, dword [ecx]
mov ecx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [edi + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x417580
sar ecx, 1
lea edx, [eax + ecx]
add edx, 0x1b
test edx, edx
jns 0x41759e
mov eax, 0xffffffff
jmp 0x4175a5
add eax, ecx
add eax, eax
add eax, 0x36
push eax
call fcn.00430260
add esp, 4
movzx ecx, word [esi]
mov ebx, eax
test cx, cx
je 0x4175d1
add esi, 2
mov ebx, eax
nop
nop
nop
mov word [ebx], cx
add ebx, 2
movzx ecx, word [esi]
add esi, 2
test cx, cx
jne 0x4175c0
mov dword [esp + 0x64], eax
mov word [ebx], 0
movzx ecx, word [esp + 0x84]
test cx, cx
je 0x417601
lea edx, [esp + 0x86]
nop
nop
mov word [ebx], cx
add ebx, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x4175f0
mov word [ebx], 0
movzx ecx, word [edi]
test cx, cx
je 0x417631
add edi, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [ebx], cx
add ebx, 2
movzx ecx, word [edi]
add edi, 2
test cx, cx
jne 0x417620
mov word [ebx], 0
mov dword [esp + 0x10], 0x3377316f
mov dword [esp + 0x14], 0x37a235bc
mov dword [esp + 0x18], 0x2bb4298d
mov dword [esp + 0x1c], 0x2fb72dbf
mov dword [esp + 0x20], 0x23bc21bf
mov dword [esp + 0x24], 0x277925b7
mov word [esp + 0x28], 0x1918
mov dword [esp + 0x2a], 0
mov dword [esp + 0x2e], 0
mov dword [esp + 0x32], 0
mov byte [esp + 0x36], 0
mov dword [esp + 0x68], 0
mov eax, dword [esp + 0x68]
cmp eax, 0x26
ja 0x4176e0
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x68]
movzx ecx, byte [esp + ecx + 0x10]
mov edx, eax
and edx, 0xc7386b88
xor eax, 0x47386b88
lea eax, [eax + edx*2]
mov edx, eax
and edx, ecx
not ecx
or ecx, eax
add ecx, edx
sub eax, ecx
add al, 0x47
mov ecx, dword [esp + 0x68]
mov byte [esp + ecx + 0x10], al
inc dword [esp + 0x68]
mov eax, dword [esp + 0x68]
cmp eax, 0x27
jb 0x4176a0
movzx ecx, word [esp + 0x10]
test cx, cx
mov edi, dword [ebp + 0xc]
lea eax, [esp + 0x68]
je 0x417711
lea edx, [esp + 0x12]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x417700
mov word [eax], 0
mov esi, dword [edi]
mov eax, 0xfffffffe
nop
nop
nop
cmp word [esi + eax + 2], 0
lea eax, [eax + 2]
jne 0x417720
mov ebx, dword [edi + 8]
mov ecx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [ebx + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x417740
mov edx, dword [ebp + 0x10]
mov edi, dword [edx + 4]
mov edx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [edi + edx + 2], 0
lea edx, [edx + 2]
jne 0x417760
sar eax, 1
sar ecx, 1
sar edx, 1
add ecx, eax
lea eax, [edx + ecx]
add eax, 0xe
test eax, eax
jns 0x417784
mov eax, 0xffffffff
jmp 0x41778c
add ecx, edx
lea eax, [ecx + ecx]
add eax, 0x1c
push eax
call fcn.00430260
add esp, 4
movzx edx, word [esi]
mov ecx, eax
test dx, dx
je 0x4177c1
add esi, 2
mov ecx, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [ecx], dx
add ecx, 2
movzx edx, word [esi]
add esi, 2
test dx, dx
jne 0x4177b0
mov word [ecx], 0x2f
add ecx, 2
movzx edx, word [ebx]
test dx, dx
je 0x4177f1
add ebx, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [ecx], dx
add ecx, 2
movzx edx, word [ebx]
add ebx, 2
test dx, dx
jne 0x4177e0
mov word [ecx], 0
movzx edx, word [esp + 0x68]
test dx, dx
je 0x417821
lea esi, [esp + 0x6a]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [ecx], dx
add ecx, 2
movzx edx, word [esi]
add esi, 2
test dx, dx
jne 0x417810
mov word [ecx], 0
movzx edx, word [edi]
test dx, dx
je 0x417851
add edi, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [ecx], dx
add ecx, 2
movzx edx, word [edi]
add edi, 2
test dx, dx
jne 0x417840
mov word [ecx], 0
mov byte [esp + 0x24], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0x9b9a99f2
mov dword [esp + 0xc], 0
mov ecx, dword [esp + 0xc]
cmp ecx, 0x14
ja 0x4178eb
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0xc]
movzx esi, byte [esp + edx + 0x10]
lea edi, [ecx - 0x343e91c4]
lea edx, [ecx + esi]
add edx, 0xcbc16e3c
add ecx, 0x3c
or ecx, edi
and edi, esi
and ecx, esi
add ecx, edi
mov esi, ecx
xor esi, edx
not ecx
and ecx, edx
add ecx, ecx
sub ecx, esi
add cl, 0x5c
mov edx, dword [esp + 0xc]
mov byte [esp + edx + 0x10], cl
inc dword [esp + 0xc]
mov ecx, dword [esp + 0xc]
cmp ecx, 0x15
jb 0x4178a0
lea ecx, [esp + 0x10]
push 0
push 0xc00000
push ecx
push dword [esp + 0x70]
push eax
push dword [ebp + 8]
call fcn.00418450
add esp, 0x18
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret