Function at 0x404e60
Capabilities:
Authenticate hmac

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x250
push ebx
push esi
mov eax, dword [0x42f024]
add eax, 0x16
mov ecx, 0x3c
sub ecx, dword [ebp - 0x234]
and ecx, 0x15
or eax, ecx
mov byte [ebp - 0xd1], al
movzx edx, byte [ebp - 0x1a]
add edx, 0x47
and edx, dword [0x42f028]
mov dword [ebp - 0x98], edx
movzx eax, byte [ebp - 0xb5]
add eax, dword [ebp - 0x230]
mov ecx, dword [ebp - 0x230]
lea edx, [eax + ecx + 0x12]
mov word [ebp - 0x198], dx
movzx eax, byte [0x42f05d]
mov dword [0x42f028], eax
mov dword [ebp - 0x11c], 0x42
mov ecx, dword [0x42f024]
sub ecx, dword [ebp - 0x98]
and ecx, 0x2e
mov word [ebp - 0x238], cx
mov edx, dword [ebp - 0x1a4]
mov dword [ebp - 0x24c], edx
cmp dword [ebp - 0x24c], 0
je 0x404f16
cmp dword [ebp - 0x24c], 1
je 0x404f82
cmp dword [ebp - 0x24c], 2
je 0x404fcd
jmp 0x405018
mov eax, dword [ebp - 0x18c]
cmp eax, dword [str.P_K7]
jge 0x404f4e
mov ecx, 0x5c
sub ecx, dword [ebp - 0x248]
mov edx, dword [ebp - 0x1a0]
lea eax, [ecx + edx - 0x42]
and eax, 0x55
mov byte [ebp - 0xf1], al
mov ecx, dword [ebp - 0xf8]
mov dword [ebp - 0x248], ecx
movzx edx, byte [ebp - 0xf1]
mov eax, 0x15
sub eax, edx
add eax, 0x45
mov dword [ebp - 0x1ac], eax
movzx ecx, byte [ebp - 0x199]
sub ecx, 0x44
mov edx, dword [0x42f03c]
sub edx, ecx
mov dword [0x42f03c], edx
jmp 0x40503b
movzx eax, word [ebp - 0x198]
mov ecx, 0x3e
sub ecx, eax
mov word [ebp - 0x1b4], cx
mov edx, dword [ebp - 0x18c]
mov dword [ebp - 0x18c], edx
movzx eax, word [ebp - 0xec]
movzx ecx, byte [ebp - 0x106]
mov edx, 0x2c
sub edx, ecx
xor eax, edx
mov ecx, dword [ebp - 0x18c]
add ecx, 4
xor eax, ecx
mov byte [ebp - 0x1ad], al
jmp 0x40503b
mov edx, dword [0x42f050]
sub edx, 0x68
mov dword [0x42f050], edx
movzx eax, word [ebp - 0x17c]
mov ecx, 0xffffffd0
sub ecx, eax
mov byte [ebp - 7], cl
cmp dword [0x42f008], 0x2d
jl 0x405016
mov edx, dword [ebp - 0x8c]
add edx, 0xe
sub edx, dword [ebp - 0x248]
mov eax, dword [ebp - 0x1a4]
sub eax, 0x46
xor edx, eax
mov byte [ebp - 0x199], dl
jmp 0x40503b
movzx ecx, byte [ebp - 0xf1]
movzx edx, word [ebp - 0x104]
sub ecx, edx
add ecx, dword [ebp - 0x8c]
add ecx, dword [ebp - 0x1a0]
mov word [ebp - 0x188], cx
movzx eax, word [ebp - 0xcc]
mov ecx, dword [ebp - 0x1a0]
sub ecx, eax
add ecx, 0x1a
xor ecx, 0x36
mov word [ebp - 0xa8], cx
mov edx, dword [ebp - 0x1a0]
mov dword [ebp - 0x250], edx
cmp dword [ebp - 0x250], 0
je 0x405087
cmp dword [ebp - 0x250], 1
je 0x4050eb
cmp dword [ebp - 0x250], 2
je 0x405146
jmp 0x405168
cmp dword [0x42f008], 0x5f
jl 0x4050b7
movzx eax, word [ebp - 0x104]
mov ecx, 4
sub ecx, eax
movzx edx, byte [ebp - 0xb5]
sub ecx, edx
mov dword [ebp - 0x1ac], ecx
mov dword [ebp - 0x1a4], 0xc
movzx eax, byte [ebp - 0xb5]
cmp eax, 0x3d
jle 0x4050df
movzx ecx, byte [ebp - 0x241]
movzx edx, byte [ebp - 0xd1]
sub ecx, edx
add ecx, dword [ebp - 0x248]
mov dword [ebp - 0x234], ecx
mov dword [ebp - 0x1a4], 0x11
jmp 0x405168
mov eax, 0x2a
sub eax, dword [ebp - 0x10c]
movzx ecx, word [ebp - 0xc8]
sub ecx, dword [ebp - 0xf8]
and eax, ecx
mov byte [ebp - 0xd9], al
movzx edx, byte [ebp - 0xf2]
and edx, 0x23
mov byte [ebp - 0xf2], dl
movzx eax, word [ebp - 0x1b4]
movzx ecx, word [ebp - 0xac]
sub eax, ecx
movzx edx, word [ebp - 0x228]
add eax, edx
movzx ecx, word [ebp - 0xec]
sub ecx, eax
mov word [ebp - 0xec], cx
jmp 0x405168
movzx edx, word [ebp - 0x198]
or edx, 8
mov byte [ebp - 0xd9], dl
mov eax, dword [ebp - 0x1a4]
add eax, dword [ebp - 0x1a4]
mov dword [ebp - 0xf8], eax
mov byte [ebp - 0xf1], 0x3b
movzx ecx, word [ebp - 0xb4]
mov edx, 0x39
sub edx, ecx
mov dword [ebp - 0x1a0], edx
mov eax, dword [ebp - 4]
sub eax, 4
mov dword [ebp - 0x194], eax
mov ecx, dword [ebp - 0x240]
mov edx, dword [ebp - 0x18c]
lea eax, [edx + ecx - 0x31]
xor eax, 0x13
mov word [ebp - 0xcc], ax
movzx ecx, byte [ebp - 0x1a]
mov dword [ebp - 0x1a4], ecx
mov dword [ebp - 0xf8], 0x4a
movzx edx, byte [ebp - 0xd9]
sub edx, dword [ebp - 0x10c]
mov eax, dword [ebp - 0x10c]
lea ecx, [edx + eax + 0x4e]
mov word [ebp - 0xb4], cx
mov dword [ebp - 0x1a0], 0x1e
mov dword [ebp - 0x1a0], 0x3d
movzx edx, word [ebp - 0xac]
add edx, 0x27
mov word [ebp - 0x180], dx
mov eax, dword [ebp - 0xeb]
mov dword [ebp - 0x1a0], eax
mov dword [ebp - 0x1f0], 0x10
movzx ecx, byte [ebp - 0xf2]
movzx edx, byte [ebp - 0x106]
sub ecx, edx
mov eax, 0x14
sub eax, dword [ebp - 0x1a4]
and ecx, eax
mov word [ebp - 0xf0], cx
movzx ecx, byte [ebp - 0x1ad]
add ecx, 6
and ecx, 0x23
mov dword [ebp - 0x230], ecx
mov edx, dword [ebp - 0xf8]
mov dword [ebp - 0x18c], edx
movzx eax, byte [ebp - 0xf1]
mov ecx, dword [ebp - 0xe8]
sub ecx, dword [ebp - 0x248]
and eax, ecx
mov dword [ebp - 0x98], eax
mov edx, dword [ebp - 0x18c]
add edx, dword [ebp - 0x8c]
and edx, dword [ebp - 0x1a4]
mov dword [ebp - 0x194], edx
jmp 0x4052a6
call eax
shr ebx, 0x69
lea ebx, [esi - 0x96]
cmp ebx, ecx
jne 0x4052ad
mov ebx, dword [ebp + 8]
jmp 0x4052c7
lea eax, [eax - 0x89]
lea esi, [ebx]
add ebx, eax
push ebx
jmp 0x405297
mov eax, dword [0x435a60]
jmp 0x4052b7