Function at 0x40ad10
Capabilities:
Authenticate hmac

Disassembly:
js 0x40aabb
add al, byte gs:[eax]
das
add byte [ecx], 0x52
jne 0x40aac9
outsb dx, byte [esi]
imul ebp, dword [esi + 0x67], 0x73755320
jo 0x40aace
arpl word [ecx + 0x6f], bp
jne 0x40aadd
and byte [eax + 0x72], dl
outsd dx, dword [esi]
jb 0x40aad2
popal
insd dword es:[edi], dx
sub byte [ebx + 0x29], dh
and byte cs:[ebp + 0x78], al
imul esi, dword [ecx + ebp*2 + 0x6e], 0x72502067
jb 0x40aaf1
jb 0x40aae6
insd dword es:[edi], dx
add al, byte cs:[eax]
and al, byte [eax + 0x6c655301]
arpl word gs:[eax + 0x2a], si
and byte [esi + 0x72], ah
outsd dx, dword [esi]
insd dword es:[edi], dx
and byte [edi + 0x69], dl
outsb dx, byte [esi]
xor esi, dword [edx]
pop edi
inc ebx
outsd dx, dword [esi]
insd dword es:[edi], dx
jo 0x40ab1a
je 0x40ab0c
jb 0x40aafc
jns 0x40ab1e
je 0x40ab12
insd dword es:[edi], dx
add al, byte [eax]
add al, 0x80
add dword [ecx + 0x73], ebp
push esi
dec ebp
add byte [eax], al
js 0x40aafd
add dword [eax], eax
add byte fs:[eax + eax + 4], ah
add byte [ecx], ah
and eax, dword [ecx + 0x4c]
inc esi
cmp cl, byte [eax + 0x61]
dec eax
popal
arpl word [ebx + 0x54], bp
outsd dx, dword [esi]
outsd dx, dword [esi]
insb byte es:[edi], dx
cmp dl, byte [edi + 0x69]
outsb dx, byte [esi]
xor esi, dword [edx]
das
push eax
popal
push edi
imul ebp, dword [esi + 0x33], 0x61502f32
arpl word [ebx + 0x53], bp
push 0x412e7069
and dword [eax + ebp*2 + 0x61], esp
add byte [eax + eax - 0x7a], ah
add dword [ebx + 0x70], esi
and byte [esi + 0x6f], ah
jb 0x40ab6a
popal
jb 0x40ab5a
cmp ah, byte [0x662d2073]
and byte [eax + 0x6f], ch
jae 0x40ab75
push 0x6974736f
jo 0x40ab24
imul esi, dword [eax + 0x20], 0x74756f72
jb 0x40ab75
jne 0x40ab7c
jb 0x40ab74
jo 0x40ab2d
and byte [esi + 0x75], ch
insd dword es:[edi], dx
outsb dx, byte [esi]
jne 0x40ab7d
and byte [edi + ebp*2 + 0x63], ch
popal
insb byte es:[edi], dx
outsd dx, dword [esi]
arpl word [ecx + 0x6c], sp
push 0x6974736f
jo 0x40ab3d
imul esi, dword [eax + 0x20], 0x756f7273
je 0x40ab88
jae 0x40ab91
jb 0x40ab8f
outsd dx, dword [esi]
jne 0x40ab96
jb 0x40ab8e
jb 0x40ab8e
imul esi, dword [eax + 0x20], 0x756f7273
je 0x40ab92
jo 0x40ab47
jae 0x40ab9b
outsd dx, dword [esi]
jne 0x40aba0
jb 0x40ab9f
jb 0x40ab9f
outsd dx, dword [esi]
jb 0x40aba6
and byte [edx + esi*2 + 0x6f], ah
jne 0x40abac
jb 0x40aba4
jo 0x40ab5d
jae 0x40abb5
push 0x6974736f
jo 0x40ab68
and byte [edx + esi*2 + 0x6f], ah
jb 0x40abba
jne 0x40abc1
jb 0x40abc0
outsd dx, dword [esi]
jb 0x40abc7
and byte [ebp + 0x73], ah
je 0x40abc1
outsd dx, dword [esi]
jae 0x40abd0
jo 0x40abcd
outsd dx, dword [esi]
jb 0x40abd4
and byte [ebx + 0x70], dh
outsd dx, dword [esi]
jo 0x40abcc
outsb dx, byte [esi]
insb byte es:[edi], dx
popal
sub byte [bx + si], dh
jl 0x40aba1
sub dword [eax + eax + 0x2c], esp
add dword [edx + 0x79], esp
jo 0x40abda
bound edi, qword [ecx + 0x70]
popal
jae 0x40abee
and byte [ecx + 0x63], ah
insb byte es:[edi], dx
cmp ah, byte [0x732d2073]
and byte [eax + 0x6f], ch
popal
arpl word [edx + edi + 0x25], bp
jae 0x40aba3
sub eax, 0x6f682073
jae 0x40abfe
imul esi, dword [eax + 0x20], 0x74756f72
outsd dx, dword [esi]
jne 0x40ac05
jb 0x40abfd
jb 0x40abfd
jo 0x40abb6
imul esi, dword [eax + 0x31], 0x2e2e2e20
and byte [ecx + 0x70], ch
and byte cs:[ecx + 0x70], ch
jo 0x40abd5
xor al, 0x64
add byte [esi], dh
add byte fs:[esi], dh
add dword ss:[edx + esi*2 + 0x69], esi
add dword [edx + esi*2 + 0x69], esi
jb 0x40ac11
jb 0x40abcd
and byte [ecx + 0x63], ah
arpl word [edi + 0x75], bp
outsb dx, byte [esi]
popal
arpl word [ebx + 0x6f], sp
jne 0x40ac21
je 0x40abef
and eax, 0x742d2073
jae 0x40abd8
sub eax, 0x6f682074
and byte [eax + 0x6f], ch
jae 0x40ac33
imul esi, dword [eax + 0x20], 0x74756f72
jo 0x40abe2
and byte [edx + 0x6f], dh
jb 0x40ac33
jne 0x40ac3a
jb 0x40ac32
jb 0x40ac32
jo 0x40abeb
and byte [edx + esi*2 + 0x69], dh
je 0x40ac3f
jb 0x40ac37
imul esp, dword [edi + 0x67], 0x6c667265
jb 0x40ac39
jb 0x40ac39
insb byte es:[edi], dx
popal
sub byte [bx + si], dh
jl 0x40ac0b
sub dword [eax + eax + 0x1e], esp
add dword [edx + 0x65], esi
popal
and byte fs:[ebx + 0x65], ch
jns 0x40ac22
and eax, 0x722d2073
and byte [eax + 0x6f], ch
sub eax, 0x6f682072
push 0x6974736f
jo 0x40ac15
outsd dx, dword [esi]
jae 0x40ac66
imul esi, dword [eax + 0x20], 0x74756f72
jb 0x40ac66
jne 0x40ac6d
jb 0x40ac65
jo 0x40abfe
add byte [eax], al
js 0x40ac44
add byte [eax + 0x43], bh
add dword [eax], eax
add al, byte [eax]
add al, byte [eax]
add al, byte [eax]
and dword [ebx], esp
inc ecx
dec esp
inc esi
cmp dl, byte [edx + esi*2 + 0x6f]
outsd dx, dword [esi]
push 0x61
outsb dx, byte [esi]
cmp cl, byte [ebp + 0x53]
dec ecx
dec esp
das
inc edx
insb byte es:[edi], dx
popal
popal
bound ebp, qword [ecx + 0x6e]
imul ebp, dword [esi + 0x64], 0x49532e69
inc edx
inc ecx
outsb dx, byte [esi]
imul ebp, dword fs:[esi], 0x41424953
and dword [ebp + 0x54], ecx
inc edx
add byte [ecx], al
add byte [eax + 0xd2802], ch
add byte [edx], cl
jb 0x40abca
add ch, byte [eax]
or eax, 0x720a0000
sub byte [0x720a0000], cl
or dh, byte [edx - 0x70]
nop
add al, byte [eax + ebp]
nop
add al, byte [edi + ebp*2]
add al, 0x6f
push cs
add byte [eax], al
or dl, byte [edi + edx]
lea eax, [ecx]
add byte [eax], al
add dword [ebx], edx
nop
add dword [ecx], eax
adc dword [eax + 0x616021b], edx
mov byte [0x21b9011], al
outsd dx, dword [esi]
sldt word [eax]
or dh, byte [ecx + eax]
add byte [ebx], bl
or eax, dword [edi]
pop es
jb 0x40abf9
add al, byte [eax + ebp]
nop
add al, byte [esp + ecx]
sub byte [eax], dl
add byte [eax], al
or cl, byte [0x90281609]
add dword [edi + edx], eax
pop ss
lea eax, [ecx]
add byte [eax], al
add dword [ebx], edx
nop
add dword [ecx], eax
adc dword [eax + 0x816081b], edx
mov byte [0x81b9011], al
sub byte [ecx], dl
add byte [eax], al
or dl, byte [ebx]
nop
add dword [ecx], eax
adc dword [eax + 0x28170b1b], edx
nop
sbb eax, dword [edi]
sbb byte [esi], dl
lea eax, [ecx]
add byte [eax], al
add dword [eax], ebp
adc dword [eax], eax
add byte [edx], cl
adc edx, dword [eax - 0x72e7feff]
add dword [eax], eax
add byte [ecx], al
adc edx, dword [eax - 0x6feefeff]
sbb ecx, dword [edi]
adc edx, dword [eax - 0x6feefeff]
sbb ecx, dword [esi]
sbb byte [eax], ch
nop
sbb eax, dword [edi]
pop ss
adc dword [eax + 0x1128111b], edx
add byte [eax], al
or dl, byte [eax + 0x65000100]
add dh, byte [ebx + 0x24]
add byte [eax], al
or cl, byte [edx]
pop ds
nop
add dword [ecx], eax
lea edx, [eax + eax]
add byte [ecx], al
or esi, dword [ebx + 0x25]
add byte [eax], al
or ch, byte [eax]
add byte es:[eax], al
or al, byte [ebx]
outsd dx, dword [esi]
daa
add byte [eax], al
or ch, byte [eax]
sub byte [eax], al
add byte [edx], cl
or al, 8
push ss
pop es
push ss
pop ds
nop
add dword [ecx], eax
sub byte [ecx], ch
add byte [eax], al
add byte [edx], cl
or byte [esi], dl
pop es
pop ds
nop
add dword [ecx], eax
pop ds
nop
add dword [ecx], eax
sub byte [ecx], ch
add byte [eax], al
or al, byte [esi]
pop es
outsd dx, dword [esi]
sub al, byte [eax]
add byte [edx], cl
push es
sbb byte [edi + 0x2b], ch
add byte [eax], al
or al, byte [esi]
outsd dx, dword [esi]
sub al, 0
add byte [edx], cl
or eax, 0x2160209
mov gs, word [ecx + 0x6f]
sub eax, 0x900a0000
add byte [eax], al
add byte [eax + 0x43], bh
add dword [eax], eax
add al, byte [eax]
add al, byte [eax]
add al, 0
and dword [ebx], esp
inc ecx
dec esp
inc esi
cmp cl, byte [eax + 0x53]
push esp
push edx
cmp dl, byte [edx + 0x61]
outsb dx, byte [esi]
jae 0x40adcf
insd dword es:[edi], dx
cmp dl, byte [edi + 0x69]
outsb dx, byte [esi]
xor esi, dword [edx]
das
push ebx
outsd dx, dword [esi]
insd dword es:[edi], dx
ja 0x40adce
jb 0x40add4
push ebx
xor byte [eax], dh
xor dword [eax], eax
add dword [eax], eax
push ss
add dword [ebx - 0x743f7440], ecx
ror byte [ebx - 0x743f7440], 0xc0
mov eax, eax
mov eax, eax
mov eax, eax
mov eax, eax
mov eax, eax
add dword [eax], eax
push ebx
add eax, edi
inc ebp
cld
add dword [eax], eax
add byte [eax], al
push 0xff040190
adc eax, 0xff040190
adc eax, 0xc7040190
inc ebp
cld
add dword [eax], eax
add byte [eax], al
push 0xff040190
adc eax, 0xff040190
adc eax, 0xc7040190
inc ebp
cld
add dword [eax], eax
add byte [eax], al
push 0xff040190
adc eax, 0xff040190
adc eax, 0xc7040190
nop
add dword [edi + eax*8], eax
inc ebp
cld
add dword [eax], eax
add byte [eax], al
push 0xff040190
adc eax, 0xff040190
adc eax, 0x10090
aas
add edx, dword [ebp - 0x75]
in al, dx
sub esp, 0xffffff90
add dword [eax], edx
cld
imul edx, dword [eax - 0x6f76faff], 0x8bfc0101
nop
add dword [ecx], eax
cld
imul edx, dword [eax - 0x6f76faff], 0x8bfc0101
nop
add dword [ecx], eax
cld
imul edx, dword [eax - 0x6f76faff], 0x8bfc0101
nop
add dword [ecx], eax
cld
imul edx, dword [eax - 0x6f76faff], 0x8bfc0101
nop
add byte [ecx], al
add byte [esi + 3], bl
add esp, 8
mov edx, dword [eax - 0x6f17feff]
add dword [ecx], eax
push 0x20190
add al, ch
nop
add dword [edx], eax
add byte [eax], al
add esp, 8
mov edx, dword [eax - 0x6f17feff]
add dword [ecx], eax
push 0x20190
add al, ch
nop
add dword [edx], eax
add byte [eax], al
add esp, 8
mov edx, dword [eax - 0x6f17feff]
add dword [ecx], eax
push 0x20190
add al, ch
nop
add dword [edx], eax
add byte [eax], al
add esp, 8
mov edx, dword [eax - 0x6f17feff]
add dword [ecx], eax
push 0x20190
add al, ch
nop
add dword [edx], eax
add byte [eax], al
nop
add byte [eax], al
add byte [eax + 0x43], bh
add dword [eax], eax
add al, byte [eax]
add al, byte [eax]
add al, 0
and dword [ebx], esp
inc ecx
dec esp
inc esi
push eax
inc ebp
push edx
cmp al, byte [edx + 0x61]
arpl word [ebx + 0x64], bp
outsd dx, dword [esi]
outsd dx, dword [esi]
jb 0x40aee3
push edi
imul ebp, dword [esi + 0x33], 0x70522f32
arpl word [edx + 0x61], ax
arpl word [ebx + 0x64], bp
outsd dx, dword [esi]
outsd dx, dword [esi]
jb 0x40aee9
inc edx
and dword [eax + ebp*2 + 0x61], esp
add byte [ecx], al
add byte [ecx + 3], cl
push eax
add byte [ebp], dl
inc edx
add byte [eax + eax + 0x49], cl
add byte [eax + 0x101], dl
add byte [eax], al
add byte [eax + eax + 0x43], bl
add byte [ebp], ah
jb 0x40aedf
je 0x40aee1
push edi
add byte [esi], ch
add byte [eax + eax + 0x61], ah
add byte cs:[eax + eax + 0x61], ah
add byte [eax + eax], dh
add byte [eax], al
add byte [ebp + 0x4e], cl
je 0x40aeeb
add byte [eax], al
add byte [eax], al
dec ebp
dec esi
cmp dl, byte [edi + 0x44]
cmp dl, byte [edx + 0x53]
push edx
dec ecx
add byte [eax], al
add byte [eax], al
add byte [eax], al
dec ebp
dec esi
cmp dl, byte [edi + 0x44]
cmp dl, byte [ebx + 0x43]
push ebx
add byte [eax], al
add byte [eax], al
nop
add byte [ecx], al
add byte [esi], ah
add ebp, dword [esi]
arpl word [eax], ax
popal
add byte [eax + eax + 0x72], ch
add byte [eax + 0x63000101], dl
add byte [eax], al
add byte [ebp], dh
jo 0x40af28
outsb dx, byte [esi]
add byte [eax], dh
jb 0x40af2e
nop
add dword [ecx], eax
add byte [ebx], ah
add byte [eax], al
nop
add byte [ecx], al
add byte [ecx + eax + 0x48], cl
mov ebp, esi
dec eax
mov ecx, dword [esi + 0x18]
dec eax
adc dword [eax + 0x72100101], 3
dec eax
mov ebp, dword [esi]
dec eax
mov ebx, ebp
dec eax
cmp ecx, 0x10
jb 0x40af5a
dec eax
mov esi, dword [esi]
dec eax
add eax, esi
dec eax
mov esi, eax
dec eax
sub esi, ebp
dec eax
cmp ebp, eax
dec ecx
cmova esi, esi
dec eax
test esi, esi
je 0x40af96
nop dword [eax]
movzx eax, byte [ebx]
xor al, 0x90
add dword [ecx], eax
mov byte [esp + 0x58], al
dec eax
lea edx, [esp + 0x58]
dec eax
mov ecx, edi
call fcn.0041b01a
inc esi
add dword [eax - 0x75], ecx
cmovs eax, dword [ebp + 0x483f74c9]
mov edx, dword [edi - 0x70]
push edi
nop
add dword [ecx], eax
dec eax
sub edx, ecx
dec eax
cmp edx, 0x1000
jb 0x40afd0
dec eax
lea eax, [edx + 0x27]
dec eax
cmp eax, edx
jbe 0x40affb
dec eax
mov edx, eax
test cl, 0x1f
jne 0x40affb
dec eax
mov eax, dword [ecx - 8]
dec eax
cmp eax, ecx
jae 0x40affb
dec eax
sub ecx, eax
dec eax
sub ecx, 8
dec eax
cmp ecx, 0x1f
ja 0x40affb
dec eax
mov ecx, eax
nop
add byte [eax], al
add byte [eax + 0x43], bh
add dword [eax], eax
add eax, dword [eax]
add eax, dword [eax]
add eax, 0x4c232100
outsd dx, dword [esi]
ja 0x40b04a
imul edi, dword [edx], 0x52545348
cmp cl, byte [ecx + 0x6e]
jae 0x40b063
popal
insb byte es:[edi], dx
insb byte es:[edi], dx
inc ebx
outsd dx, dword [esi]
jb 0x40b05b
cmp dl, byte [ebp + 0x49]
add byte [ebx], al
add byte [edx], ah
add dword [ebx], esi
add byte fs:[ebx], ch
sub eax, 0x69007500
add byte [eax + eax + 0x62], bl
add byte [edx], dh
outsd dx, dword [esi]
add byte [edi], dh
jae 0x40b016
add byte gs:[esi], ch
add byte [ebx], ah
jae 0x40b01e
jae 0x40b020
add al, byte [eax]
sub al, byte [ecx]
pop esp
add byte [ecx], ch
insd dword es:[edi], dx
add byte [ecx], ah
add byte [di], ah
jae 0x40b032
pop esp
add byte [ebx], dh
jo 0x40b038
outsd dx, dword [esi]
add byte [esi], ch
jae 0x40b03e
outsd dx, dword [esi]
add byte [edx], dh
add byte gs:[eax + eax + 0x2e], ah
add byte [eax], dh
outsb dx, byte [esi]
add byte [edi], ah
add dword [eax], eax
add dword fs:[edx], edx
add byte gs:[ecx], ah
add byte fs:[ecx], ch
outsb dx, byte [esi]
add byte [edi], ah
and byte [eax], al
add byte [ecx], ch
add byte [esi], ch
add byte [bx + si], ah
add byte [esi], ah
imul eax, dword [eax], 0x650072
add byte [edi], ch
js 0x40b070
add byte [ecx], ch
jb 0x40b068
add byte gs:[esi], ah
outsd dx, dword [esi]
add byte [eax], bh
and byte [eax], al
arpl word [eax], ax
outsd dx, dword [esi]
add byte [edi], ch
imul eax, dword [eax], 0x69
add byte [ebp], ah
jae 0x40b080
and byte [eax], al
ja 0x40b084
imul eax, dword [eax], 0x680074
outsd dx, dword [esi]
add byte [ebp], dh
je 0x40b090
and byte [eax], al
jae 0x40b094
jno 0x40b096
insb byte es:[edi], dx
add byte [ecx], ch
je 0x40b09c
add byte gs:[esi], ch
add byte [eax + eax + 0x6c], ah
add byte fs:[eax + eax + 0x6c], ch
add byte [eax], ah
add byte [ebx], dh
jne 0x40b0ac
jo 0x40b0ae
jo 0x40b0b0
outsd dx, dword [esi]
add byte [edx], dh
je 0x40b0b6
add dword [eax], eax
xor byte [ecx], al
inc ecx
add byte [eax + eax + 0x64], ah
add byte [ebx], al
push 0x6f007200
add byte [ebp], ch
add byte gs:[ebx], dl
push eax
add byte [edx], bh
add byte [eax], ah
add byte [esi], ch
outsd dx, dword [esi]
add byte [eax], ah
add byte [eax], dh
jb 0x40b0de
outsd dx, dword [esi]
add byte [esi], ah
imul eax, dword [eax], 0x65006c
jae 0x40b0ea
add eax, dword [eax]
sub eax, dword [ecx]
sub ch, byte [edx]
sub ch, byte [edx]
sub ch, byte [edx]
and byte [eax + ebp*2 + 0x65], dl
jae 0x40b15f
and byte [ebx + 0x6c], ah
popal
jae 0x40b173
and byte [esi + 0x61], ch
insd dword es:[edi], dx
jae 0x40b127
popal
jb 0x40b16f
and byte [ebp + 0x73], dh
and byte fs:[ecx + 0x6e], ch
and byte [edi + 0x66], ch
jb 0x40b18c
add byte [eax], al
js 0x40b160
add dword [eax], eax
add al, 0
add al, 0
add al, 0
and dword [ebx], esp
dec eax
push ebx
push esp
push edx
cmp dl, byte [edx + esi*2 + 0x6f]
push 0x61
outsb dx, byte [esi]
cmp cl, byte [ebp + 0x53]
dec ecx
dec esp
das
inc ecx
outsb dx, byte gs:[si]
je 0x40b192
jae 0x40b1ad
popal
inc ecx
dec ebp
dec ebp
dec ecx
dec edi
xor dh, byte [ebx]
and dword ss:[ebp + 0x54], ecx
inc edx
add byte [ecx], al
add byte [esi + 1], al
inc esi
add byte [ecx], ch
insb byte es:[edi], dx
add byte [ebp], ah
inc esi
add byte [edi], ch
add byte [edx], dh
jb 0x40b162
insd dword es:[edi], dx
add byte [ecx], ah
je 0x40b168
push edi
add byte [ecx], ah
jbe 0x40b16e
add byte gs:[esi], ah
add byte [esi], ah
jb 0x40b174
add byte [edi], ch
outsb dx, byte [esi]
add byte [eax + eax + 0x2e], dh
add byte [edx], dl
outsd dx, dword [esi]
add byte [esi], ch
je 0x40b17a
add byte cs:[edx], dl
add byte gs:[ebx], dh
inc ebx
add byte [ebp], al
inc ebp
add byte [ebp], al
add byte [edi], cl
push ebx
add byte [eax + eax + 0x72], dh
add byte [ecx], ch
outsb dx, byte [esi]
add byte [edi], ah
imul eax, dword [eax], 0x67006e
xor dword [eax], eax
add dword [eax], eax
and eax, 0x35240181
xor esi, dword [ecx]
xor al, 0x35
xor byte [ecx + 0x2d], ah
popal
cmp dword [ebp + 0x37], esp