Function at 0x40fd18
Capabilities:
Authenticate hmac

Disassembly:
mov dx, word [0x42b904]
sub esp, 0x214
mov eax, 0x6cfa
add ax, dx
mov word [0x42b8c4], ax
mov eax, 0x2237
push ebx
push ebp
push esi
mov esi, ecx
and dx, ax
push edi
movzx ecx, dx
mov word [0x42b904], dx
cmp byte [esi + 2], 0
jne 0x40fd72
cmp byte [esi + 1], 0
jne 0x40fd72
cmp byte [esi + 4], 0
jne 0x40fd72
cmp byte [esi + 6], 0
jne 0x40fd72
cmp byte [esi + 3], 0
jne 0x40fd72
cmp byte [esi], 0
je 0x410155
mov eax, ecx
and cl, 0x46
xor eax, 0x5209
mov byte [0x42b8a2], cl
mov word [0x42b8b4], ax
xor ecx, ecx
movzx eax, ax
sub eax, 0x10467a0e
mov dword [0x42b89c], eax
call fcn.0041e241
mov ebp, eax
mov dword [esp + 0x1c], ebp
test ebp, ebp
je 0x410135
mov bx, word [0x42b8b4]
mov edx, 0xdbc7
and dword [esp + 0x18], 0
mov al, bl
movzx ecx, bx
xor al, 0x5b
imul edx, ecx
mov byte [0x42b8a2], al
movzx ecx, dx
add ecx, 0x6745d052
mov word [0x42b904], dx
cmp byte [esi + 6], 0
mov dword [0x42b89c], ecx
je 0x40fe19
and ecx, 0x1f51
or edx, 0x860c
mov word [0x42b8b4], cx
push 2
pop ecx
mov word [0x42b8c4], dx
call fcn.0041e241
mov ecx, dword [0x42b89c]
mov bx, word [0x42b8b4]
mov dword [esp + 0x18], eax
xor ecx, 0x50cb
mov word [0x42b8c4], cx
movzx ecx, bl
imul ecx, ecx, 0x5f
push 0x1000
mov byte [0x42b8a2], cl
call fcn.0040570b
mov dl, byte [0x42b8a2]
mov edi, eax
movzx eax, dl
pop ecx
mov ecx, eax
mov ebx, eax
and ecx, 0xf5ef
or ecx, 0xe5cb
mov word [0x42b904], cx
mov ecx, 0xbd1d
or cx, word [0x42b8b4]
mov word [0x42b8f8], cx
test edi, edi
je 0x410111
mov edx, dword [0x42b89c]
and dword [esp + 0x14], 0
or edx, 0x17cddaeb
push 0x7c
pop ecx
mov word [esp + 0x10], cx
add edx, 0x526ac2a
xor ecx, ecx
mov dword [0x42b89c], edx
mov word [esp + 0x12], cx
xor dl, 0xeb
lea ecx, [eax + 0x61ea]
mov byte [0x42b8a2], dl
imul eax, ecx, 0x9c46
mov word [0x42b8f8], cx
mov word [0x42b904], ax
lea eax, [ebx - 0x913]
mov word [0x42b8b4], ax
lea eax, [esp + 0x14]
push eax
lea eax, [esp + 0x14]
push eax
push ebp
call fcn.004057dc
movzx edx, word [0x42b8b4]
mov ecx, 0xd26e
imul edx, ecx
mov ebx, eax
mov cl, byte [0x42b904]
add esp, 0xc
xor cl, 0x36
mov byte [0x42b8a2], cl
mov word [0x42b8c4], dx
test ebx, ebx
je 0x4100e7
mov ebp, dword [esp + 0x18]
movzx eax, cl
mov edx, 0xf89245cb
mov ecx, 0x6c07
xor ax, cx
movzx ecx, word [0x42b89c]
mov word [0x42b904], ax
mov al, byte [0x42b8f8]
and al, 0x50
mov byte [0x42b8a2], al
mov eax, ecx
and eax, 0xb731
mov word [0x42b8c4], ax
lea eax, [ecx - 0x5b35]
mov word [0x42b8f8], ax
xor ecx, ecx
lea eax, [esp + 0x20]
inc ecx
push ebx
push eax
call fcn.00415084
call eax
mov al, byte [0x42b8b4]
mov ecx, 0x661d
sub al, 0x50
mov byte [0x42b8a2], al
mov ax, word [0x42b8f8]
and ax, cx
mov word [0x42b8c4], ax
lea eax, [esp + 0x14]
push eax
lea eax, [esp + 0x14]
push eax
push 0
call fcn.004057dc
mov cx, word [0x42b8b4]
add esp, 0xc
mov edx, 0x4e4d
sub cx, dx
mov edx, 0x5060ff33
mov word [0x42b8c4], cx
or cl, 0x94
mov byte [0x42b8a2], cl
xor ecx, ecx
push 0x800
push edi
push eax
inc ecx
call fcn.00415084
call eax
test eax, eax
je 0x410098
mov dx, word [0x42b904]
mov al, dl
or al, 0x6d
movzx ecx, al
mov byte [0x42b8a2], al
mov eax, 0x45f2
imul ecx, eax
mov eax, 0x53ab
xor ax, dx
push edi
mov word [0x42b8f8], ax
mov word [0x42b8c4], cx
call fcn.0040581e
mov edx, eax
mov eax, 0x33c2
pop ecx
mov cx, word [0x42b8c4]
add cx, ax
movzx eax, word [edi + edx*2 - 2]
movzx ebx, cx
mov word [0x42b8c4], cx
cmp eax, 0x5c
je 0x410045
cmp eax, 0x2f
je 0x410045
mov eax, dword [0x42b89c]
jmp 0x41006d
mov ax, word [0x42b904]
mov ecx, 0x52cd
sub ax, cx
mov word [0x42b8f8], ax
mov eax, ebx
imul eax, eax, 0xc3039bf9
xor ecx, ecx
mov word [edi + edx*2 - 2], cx
mov dword [0x42b89c], eax
movzx eax, al
lea edx, [esp + 0x20]
imul eax, eax, 0x74
mov ecx, 0x303c
push ebp
push edi
mov byte [0x42b8a2], al
movzx eax, al
add ax, cx
mov ecx, esi
mov word [0x42b8b4], ax
call fcn.00410160
pop ecx
pop ecx
movzx eax, word [0x42b904]
movzx ecx, word [0x42b8b4]
or eax, 0x2ac2d5b5
mov dword [0x42b89c], eax
mov eax, 0xe71e
imul ecx, eax
lea eax, [esp + 0x14]
push eax
lea eax, [esp + 0x14]
push eax
push 0
mov word [0x42b904], cx
call fcn.004057dc
mov cl, byte [0x42b8a2]
mov ebx, eax
add esp, 0xc
test ebx, ebx
jne 0x40ff1a
mov ebp, dword [esp + 0x1c]
mov eax, 0x6eab
xor word [0x42b8f8], ax
movzx eax, cl
mov ecx, 0x2168
or ax, cx
push edi
mov word [0x42b904], ax
call fcn.004056f0
mov dl, byte [0x42b8a2]
pop ecx
add dl, 0x3a
mov eax, 0x99b4
movzx ecx, dl
imul ecx, eax
push ebp
mov byte [0x42b8a2], dl
mov word [0x42b8b4], cx
call fcn.004056f0
pop ecx
jmp 0x410155
movzx ecx, word [0x42b89c]
lea eax, [ecx + 0x6a12]
and ecx, 0x382d
mov word [0x42b8f8], ax
mov word [0x42b8b4], cx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x214
ret