Function at 0x504a80
Capabilities:
Authenticate hmac

Disassembly:
add byte [ecx], 0x53
dec ebp
inc ecx
push eax
pop edi
push ebx
jb 0x504a61
jb 0x5049ef
add byte [eax], dl
add byte [ecx], 0x4e
adc byte [eax + 0x72694e01], al
push ebx
imul esi, dword [edx + 0x53], 0x2074666f
outsd dx, dword [esi]
je 0x504a1a
inc esi
jb 0x504a62
ja 0x504a61
jb 0x504a67
add dword [eax], eax
or eax, dword [eax + 0x72696e01]
jae 0x504a7b
je 0x504a3d
outsb dx, byte [esi]
je 0x504a14
add byte [eax], dh
add byte [ecx], 0x59
popal
outsb dx, byte [esi]
xor byte [eax + 0x6e615901], al
js 0x504a7a
pop ecx
popal
outsb dx, byte [esi]
js 0x504a67
jb 0x504a96
ja 0x504a9c
jb 0x504a88
jae 0x504a93
jb 0x504a50
inc esp
popal
je 0x504a95
pop esp
inc esp
popaw
jne 0x504aa7
je 0x504a99
dec esp
outsd dx, dword [esi]
imul ebp, dword [bp + 0x20], 0x61746144
add dword [eax], eax
add byte es:[ecx], 0x4f
jo 0x504ab4
jb 0x504ab2
popal
and byte [ebx + 0x6f], dl
je 0x504ace
popal
jb 0x504abf
pop esp
dec edi
jo 0x504ac3
jb 0x504ac1
and byte [ebx + 0x74], dl
popal
push ebx
je 0x504ac5
bound ebp, qword [ebp + 0x5c]
pop esp
dec esp
outsd dx, dword [esi]
imul ebp, dword [bp + 0x20], 0x61746144
add dword [eax], eax
xor byte [eax + 0x70704101], al
insb byte es:[edi], dx
imul esp, dword [ebx + 0x61], 0x6e6f6974
and byte [ecx + 0x74], al
popal
pop esp
inc edi
outsd dx, dword [esi]
outsd dx, dword [esi]
insb byte es:[di], dx
pop esp
inc ebx
push 0x656d6f72
insd dword es:[edi], dx
and byte gs:[ebx + 0x78], dl
and byte [ebx + 0x78], dl
push ebx
js 0x504aec
push ebx
pop esp
push ebp
jae 0x504b02
jb 0x504abf
jb 0x504abf
inc esp
popal
je 0x504b04
pop esp
sub ch, byte [esi]
sub al, byte [ecx]
add byte [esi], dh
add byte [ecx], 0x53
add dword [eax], eax
add byte ss:[ecx], 0x53
inc ebp
dec esp
inc ebp
inc ebx
push esp
and byte [ecx + 0x74], ch
insd dword es:[edi], dx
je 0x504b1b
insd dword es:[edi], dx
xor dword [ecx + ebp*2], ebp
je 0x504b21
insd dword es:[edi], dx
xor ah, byte [eax]
inc esi
push edx
dec edi
dec ebp
and byte [ebp + 0x65], ch
je 0x504b29
je 0x504b29
popal
je 0x504b2d
and byte [edi + 0x48], dl
dec eax
inc ebp
push edx
inc ebp
and byte [ecx + 0x64], ch
and byte [0x61702720], bh
jae 0x504b50
ja 0x504b4e
jb 0x504b45
daa
add byte [eax], al
js 0x504b31
add dword [eax], eax
or eax, dword [eax]
or eax, dword [eax]
or eax, dword [eax]
and dword [ebx], esp
inc ecx
dec esp
inc esi
cmp dl, byte [edx + esi*2 + 0x6f]
push 0x61
outsb dx, byte [esi]
cmp dl, byte [edi + 0x69]
outsb dx, byte [esi]
xor esi, dword [edx]
das
inc edi
jne 0x504b50
outsd dx, dword [esi]
popal
jb 0x504b38
inc ecx
push ebx
xor dword [edx], esi
and dword [ebp + 0x54], ecx
inc edx
add byte [ecx], al
add byte [eax], bl
add dword [ecx], 0x67697645
push 0x62736465
push 0x62736465
insb byte es:[edi], dx
outsd dx, dword [esi]
insd dword es:[edi], dx
jae 0x504b9a
jb 0x504b97
cmp dword gs:[ebx], esi
imul ebp, dword cs:[esi + 0x69], 0x811d0001
imul ebp, dword [esi + 0x69], 0x811d0001
add byte [0x72540181], bl
push 0x65
add dword [edx + esi*2 + 0x65], edx
push 0x65
jb 0x504b9f
jae 0x504ba7
outsd dx, dword [esi]
jb 0x504ba6
jb 0x504bb4
outsb dx, byte [esi]
imul ebp, dword fs:[esi + 0x67], 0x656e7265
push ebx
outsd dx, dword [esi]
add dword gs:[eax], eax
push cs
add dword [ecx], 0x6e6b6e75
outsd dx, dword [esi]
ja 0x504bcc
insb byte es:[edi], dx
insb byte es:[edi], dx
jo 0x504bc8
bound eax, qword [ecx]
add byte [edi], cl
add dword [ecx], 0x436c6c44
popal
outsb dx, byte [esi]
push ebp
outsb dx, byte [esi]
insb byte es:[edi], dx
outsd dx, dword [esi]
popal
dec esi
outsd dx, dword [esi]
ja 0x504b7b
add byte [ecx], dl
add dword [ecx], 0x476c6c44
adc dword [ecx + 0x6c6c4401], eax
inc edi
je 0x504bc8
insb byte es:[edi], dx
popal
jae 0x504bfc
dec edi
bound ebp, qword [edx + 0x65]
arpl word [ecx + eax], si
adc dword [ecx + 0x6c6c4401], eax
push edx
imul esi, dword gs:[bp + di + 0x74], 0x65537265
imul esi, dword [ebx + 0x74], 0x65537265
push ebx
jb 0x504c19
jb 0x504c19
jb 0x504ba7
add byte [ebx], dl
add dword [ecx], 0x556c6c44
adc eax, dword [ecx + 0x6c6c4401]
push ebp
outsb dx, byte [esi]
jb 0x504c16
imul esi, dword [bp + di + 0x74], 0x65537265
jb 0x504c31
je 0x504c1b
jb 0x504c0b
jb 0x504c31
jb 0x504bbf
add byte [ecx], ah
add dword [ecx], 0x24302030
xor byte [eax], ch
and dword [ecx + 0x30203001], eax
and al, 0x30
sub byte [eax], dh
sub al, 0x30
xor byte [eax + esi], ch
xor byte [eax], dh
xor al, 0x30
xor byte [eax + esi], dh
cmp byte [eax], dh
cmp al, 0x30
inc eax
xor byte [eax + esi + 0x48], al
xor byte [eax + esi + 0x50], cl
xor byte [eax + esi + 0x58], dl
xor byte [eax + esi + 1], bl
add byte [edi], cl
add dword [ecx], 0x68306430
xor byte [eax + esi + 0x70], ch
xor byte [eax + esi + 0x78], dh
xor byte [eax + esi + 1], bh
add byte [ecx], ah
add dword [ecx], 0x24312031
xor dword [eax], ebp
xor dword [ecx + esi], ebp
xor dword [eax], esp
xor dword [ecx + esi], esp
sub byte [ecx], dh
sub al, 0x31
xor byte [ecx], dh
xor al, 0x31
cmp byte [ecx], dh
cmp al, 0x31
inc eax
xor dword [ecx + esi + 0x48], eax
xor dword [ecx + esi + 0x50], ecx
xor dword [ecx + esi + 0x58], edx
pop eax
xor dword [ecx + esi + 1], ebx
pop esp
xor dword [ecx], eax
add byte [edi], cl
add dword [ecx], 0x68316431
xor dword [ecx + esi + 0x70], ebp
xor dword [ecx + esi + 0x78], esi
xor dword [ecx + esi], edi
add byte [eax + 0x4b], bh
add byte [eax], al
js 0x504c80
add dword [eax], eax
or al, 0
or al, 0
or al, 0
and dword [ebx], esp
inc ecx
dec esp
inc esi
cmp dl, byte [edx + esi*2 + 0x6f]
push 0x61
outsb dx, byte [esi]
cmp dl, byte [edi + 0x69]
outsb dx, byte [esi]
xor esi, dword [edx]
das
push eax
push 0x797a6e6f
dec ebp
inc edx
and dword [ebp + 0x54], ecx
inc edx
add byte [ecx], al
add byte [eax], bl
add dword [eax + eax + 0x69], esp
add byte [edi], ch
jne 0x504c6a
js 0x504c6c
pop eax
add byte [ebp], ah
inc ebp
add byte [esi], ah
add byte [bx], al
jae 0x504c7a
add dword [eax], eax
sbb al, byte [ecx]
dec eax
add byte [edi], cl
push esp
add byte [ebx], cl
inc ebp
add byte [ecx], bl
push eax
add byte [edx], dl
inc ebp
add byte [ebx], dl
push ebx
add byte [ebp], al
inc esp
add byte [ecx], al
dec edi
add byte [eax + eax + 0x4b], dl
add byte [ebp], al
pop ecx
add byte [eax], dl
push edx
add byte [ebp], al
push ebx
add byte [ebx], dl
inc ebp
add byte [eax + eax + 1], al
add byte [edx], dl
add dword [edx], eax
inc ecx
add byte [ebx], al
dec ebx
add byte [ebx], dl
push eax
add byte [ecx], al
inc ebx
add byte [ebp], al
add dword [eax], eax
or al, 1
inc esp
add byte [ebp], al
dec esp
add byte [ebp], al
push esp
add byte [ebp], al
add dword [eax], eax
or al, byte [ecx]
inc ebp
add byte [esi], cl
push esp
add byte [ebp], al
push edx
add byte [ecx], al
add byte [esi], ah
add dword [edi], ebp
add byte [ecx], al
jne 0x504cd6
je 0x504cd8
outsd dx, dword [esi]
add byte [ecx], cl
je 0x504cde
xor eax, dword [eax]
dec edi
add byte [ebp], dh
je 0x504ce6
jo 0x504ce8
jne 0x504cea
je 0x504cec
inc esp
add byte [ebp], ah
bound eax, qword [eax]
jne 0x504cf4
add byte [bx + di], al
add byte [esi], cl
add dword [edi], edx
dec ecx
add byte [esi], cl
dec ebx
add byte [ecx], cl
dec esp
add byte [eax + eax + 1], cl
add byte [edx], bl
add dword [ebx], edx
arpl word [eax], ax
jb 0x504d12
imul eax, dword [eax], 0x740070
and byte [eax], al
push eax
add byte [ecx], ah
jne 0x504d20
jae 0x504d22
add byte gs:[eax + eax + 1], ah
add byte [eax], dl
add dword [edx + 0x65], esi
jbe 0x504d93
jb 0x504da3
and byte gs:[ebp + 0x6e], ah
imul ebp, dword [bp + 0x65], 0x17265
adc al, byte [ecx]
push edi
jb 0x504daa
je 0x504da8
push eax
jb 0x504db5
arpl word [ebp + 0x73], sp
jae 0x504d98
insd dword es:[edi], dx
outsd dx, dword [esi]
jb 0x504dc9
add dword [eax], eax
sbb byte [ecx], al
inc ebx
jb 0x504dbc
popal
je 0x504dbf
push esp
outsd dx, dword [esi]
outsd dx, dword [esi]
insb byte es:[edi], dx
push 0x33706c65
xor dl, byte [ebx + 0x6e]
popal
jo 0x504ddc
push 0x1746f
adc byte [ecx], al
inc edi
je 0x504dbf
jns 0x504dd9
outsd dx, dword [esi]
popal
jb 0x504ddf
push ebx
je 0x504ddf
je 0x504de5
add byte [eax], al
js 0x504dcf
add dword [eax], eax
push cs
add byte [esi], cl
add byte [esi], cl
add byte [ecx], ah
and eax, dword [ecx + 0x4c]
inc esi
cmp dl, byte [edx + esi*2 + 0x6f]
jb 0x504e04
push 0x61
outsb dx, byte [esi]
cmp cl, byte [ebp + 0x53]
dec ecx
dec esp
das
inc ecx
outsb dx, byte gs:[si]
je 0x504df8
push esp
jae 0x504e13
popal
inc ebx
inc ebp
and dword [ebp + 0x54], ecx
inc edx
add byte [ecx], al
add byte [edi], cl
add dword [ecx], 0x6e6a6952
popal
insb byte es:[edi], dx
push edx
imul ebp, dword [edx + 0x6e], 0x6c656164
insb byte es:[edi], dx
dec ebp
popal
outsb dx, byte [esi]
popal
add dword fs:[bx + si], eax
adc al, byte [ecx + 0x6d795301]
push ebx
jns 0x504e39
insd dword es:[edi], dx
je 0x504e42
jb 0x504e3a
imul esp, dword [ebx + 0x41], 0x726f676c
imul esi, dword [eax + ebp*2 + 0x6d], 0x810f0001
arpl word [ecx + 0x6c], ax
outsd dx, dword [si]
jb 0x504e41
je 0x504e42
push 0xf00016d
insd dword es:[edi], dx
add dword [eax], eax
jno 0x65c290e4
add byte [edi], cl
add dword [ecx], 0x61657243
add dword [ebx + 0x72], eax
popal
popal
je 0x504e4b
inc esp
inc esp
arpl word gs:[edx + 0x79], si
jo 0x504e61
outsd dx, dword [esi]
jb 0x504df1
add byte [eax], dl
add dword [ecx], 0x79724349
adc byte [ecx + 0x72434901], al
jns 0x504e69
jo 0x504e6e
je 0x504e6a
outsd dx, dword [esi]
push esp
jb 0x504e5f
outsb dx, byte [esi]
jae 0x504e67
outsd dx, dword [esi]
jb 0x504e71
add dword [eax], eax
adc al, 0x81
add dword [ebx + 0x4d], ecx
push ebx
inc ebp
dec esp
inc esp
dec ecx
dec ebp
jns 0x504e42
push edx
push edx
jae 0x504e87
jne 0x504e8c
arpl word [ebp + 0x73], sp
add dword [eax], eax
or al, 0x81
add dword [ebx + 0x72], eax
jns 0x504e96
je 0x504e97
jb 0x504e8c
jo 0x504e95
jns 0x504e30
add byte [ecx], cl
add dword [ecx], 0x4d746547
or dword [ecx + 0x74654701], eax
dec ebp
je 0x504ea2
push 0x1646f
outsd dx, dword [esi]
add dword fs:[eax], eax
or eax, 0x48530181
push ebx
dec eax
inc ecx
xor dh, byte [0x6e614d36]
popal
add dword fs:[bx + si], eax
or dword [ecx + 0x61655201], eax
inc edx
jns 0x504ece
jae 0x504e5e
add byte [eax], dl
adc byte [ecx + 0x79724301], al
add dword [ecx], 0x70797243
je 0x504ed6
inc ebx
jb 0x504edd
jo 0x504eda
outsd dx, dword [esi]
push ebx
je 0x504edc
jb 0x504ed0
popal
popal
insd dword es:[edi], dx
dec ebp
outsd dx, dword [esi]
add dword gs:[eax], eax
add dword [eax], eax
push cs
add dword [ecx], 0x61657243
je 0x504ee1
dec ecx
outsb dx, byte [esi]
jae 0x504ef4
popal
outsb dx, byte [esi]
arpl word [ebp + 1], sp
add byte [ecx], bl
add dword [ecx], 0x67726154
je 0x504ed9
je 0x504ed9
outsb dx, byte [esi]
jbe 0x504f02
arpl word [ecx + 0x74], sp
je 0x504f00
imul ebp, dword [edi + 0x6e], 0x65637845
jo 0x504f13
outsd dx, dword [esi]
outsb dx, byte [esi]
inc ebp
js 0x504eff
jo 0x504f13
imul ebp, dword [edi + 0x6e], 0x81100001
add dword [edi + 0x6e], ecx
inc ebx
add dword [eax], eax
adc byte [ecx + 0x436e4f01], al
jb 0x504f11
popal
je 0x504f14
dec ebp
popal
imul ebp, dword [esi + 0x46], 0x16d726f
add byte [ebx], dl
add dword [ecx], 0x75736956
popal
insb byte es:[edi], dx
inc edx
popal
jae 0x504f2f
arpl word [esi], bp
inc esp
jbe 0x504f35
arpl word [ebp + 0x73], sp
add byte [eax], al
js 0x504f1e
jae 0x504ed0
add byte [eax + 0x4b], bh
add dword [eax], eax
push ss
add byte [esi], dl
add byte [ebx], cl
or eax, dword [eax]
and dword [ebx], esp
add byte [ecx], ah
and eax, dword [ecx + 0x4c]
inc ecx
dec esp
inc esi
cmp dl, byte [edx + esi*2 + 0x6f]
push esp
jb 0x504f53
push 0x61
outsb dx, byte [esi]
cmp cl, byte [ebp + 0x53]
dec ecx
dec esp
das
dec esp
outsd dx, dword [esi]
imul ebp, dword [ecx + 0x62], 0x6f
je 0x504f23
inc ebp
inc ebp
inc esi
and dword [ebp + 0x54], ecx
inc edx
add byte [eax + eax], dl
and eax, 0x37342400
add byte [esp + esi], ah
and al, 0x34
aaa
popal
xor al, 0x36
cmp word [ebx + 0x2d], sp
xor eax, 0x342d6539
xor byte [eax], bh
xor byte [0x32383362], ch
cmp byte [eax], dh
sub eax, 0x32383362
bound esi, qword [ebx]
cmp byte [edx], dh
sub eax, 0x61306566
xor al, 0x63
xor al, 0x66
arpl word [esi], si
popal
xor eax, 0x16337
sbb al, 0x81
aaa
arpl word [ecx], ax
add byte [ecx + eax*4], bl
add dword [ebp + 0x62], eax
jne 0x504f96
jb 0x504f81
outsd dx, dword [esi]
outsb dx, byte [esi]
push ebp
jae 0x504f9d
jb 0x504f7d
outsd dx, dword [esi]
inc ecx
je 0x504fb4
jb 0x504fab
bound esi, qword [ebp + 0x74]
add dword gs:[eax], eax
sbb al, byte [ecx + 0x62654401]
jne 0x504fb7
jb 0x504f96
inc edx
jb 0x504fc5
ja 0x504fcb
popal
bound ebp, qword [ebp + 0x41]
je 0x504fd3
jb 0x504fca
bound esi, qword [ebp + 0x74]
add dword gs:[eax], eax
sbb al, 0x81
add dword [ebp + 0x62], eax
jne 0x504fd6
jb 0x504fc6
je 0x504fda
jo 0x504fcb
push 0x67756f72
push 0x72747441
inc ecx
je 0x504ff4
jb 0x504feb
imul esp, dword [edx + 0x75], 0x16574
bound esi, qword [ebp + 0x74]
add dword gs:[eax], eax
push ss
add dword [ecx], 0x75626544
jb 0x504fd6
jb 0x505005
ja 0x50500b
popal
bound ebp, qword [ebp + 0x53]
je 0x505000
je 0x505006
add dword [eax], eax
pop ss
add dword [ecx], 0x75626544
jb 0x504ff7
jb 0x504ff7
imul esp, dword [esp + 0x65], 0x7474416e
inc ecx
je 0x50502b
jb 0x505022
bound esi, qword [ebp + 0x74]
add dword gs:[eax], eax
adc eax, dword [ecx + 0x62654401]
jne 0x50502e
popal
popal
bound ebp, qword [ebp + 0x41]
insb byte es:[edi], dx
inc ecx
je 0x505043
jb 0x50503a
bound esi, qword [ebp + 0x74]
add dword gs:[eax], eax
je 0x50503a
add dword [eax], eax
add byte [esi], cl
push cs
add dword [ecx], 0x75626544
imul ebp, dword [bp + 0x67], 0x65646f4d
inc esp
bound esi, qword gs:[ebp + 0x67]
imul ebp, dword [bp + 0x67], 0x65646f4d
jae 0x504fea
add byte [eax], dl
adc byte [ecx + 0x6f724601], al
insd dword es:[edi], dx
add dword [ecx], 0x6d6f7246
inc edx
popal
jae 0x50505a
xor al, 0x53
xor al, 0x53
push ebx
je 0x50506c
imul ebp, dword [esi + 0x67], 0x810e0001
add dword [ebx + 0x72], eax
popal
add dword [ecx], 0x61657243
popal
je 0x50506d
dec ecx
outsb dx, byte [esi]
jae 0x505080
je 0x50506e
popal
outsb dx, byte [esi]
arpl word [ebp + 1], sp
add byte [ecx], cl
add dword [ecx], 0x69746341
jbe 0x50507c
je 0x50508c
jb 0x50501f
add byte [eax + 0x4b], bh
add dword [eax], eax
cmp al, 0
or al, byte [eax]
add eax, dword [eax]
and dword [ebx], esp
inc ecx
dec esp
add byte [ecx], ah
and eax, dword [ecx + 0x4c]
inc esi
cmp dl, byte [edx + esi*2 + 0x6f]
push 0x61
outsb dx, byte [esi]
inc esp
outsd dx, dword [esi]
ja 0x5050a8
insb byte es:[edi], dx
outsd dx, dword [esi]
popal
jb 0x50507b
push edi
imul ebp, dword [esi + 0x33], 0x45522f32
outsb dx, byte [esi]
xor esi, dword [edx]
das
push edx
inc ebp
outsb dx, byte [esi]
je 0x50509f
push ebx
dec ecx
inc edx
inc edx
and dword [ebp + 0x54], ecx
inc edx
add byte [0x8a026000], al
or byte [eax + 0x8558b0a], cl
mov cl, byte [eax]
mov byte [edx], cl
mov edx, dword [ebp + 8]
add edx, dword [ebp - 0x70]
add dword [ecx], eax
mov al, byte [ebp - 0x70]
add dword [ecx], eax
mov byte [edx], al
add dl, byte [eax - 0x6fba74e8]
add dword [ecx], eax
nop
sbb byte [ebx + 0x1019045], cl
add eax, 0xffffff90
add dword [ecx], eax
mov dword [ebp - 0x70], eax
nop
sbb eax, dword [ebx]
mov ecx, dword [ebp - 0x70]
nop
sbb eax, dword [eax]
sub ecx, 0xffffff90
add dword [ecx], eax
mov dword [ebp - 0x70], ecx
sbb eax, dword [eax]
mov edx, dword [ebp - 0x70]
sbb eax, dword [ebx]
add byte [ebx + 0x31b9055], cl
cmp edx, dword [ebp - 0x70]
sbb eax, dword [eax]
jge 0x505029
add dword [ecx], eax
mov eax, dword [ebp + 8]
add eax, dword [ebp - 0x70]
inc ebp
nop
sbb eax, dword [ebx]
movsx ecx, byte [eax]
mov dword [ebp - 0x70], ecx
nop
sbb eax, dword [ecx]
mov edx, dword [ebp + 8]
add edx, dword [ebp - 0x70]
sbb eax, dword [ebx]
mov eax, dword [ebp + 8]
add eax, dword [ebp - 0x70]
add byte [0x8b022a00], al
push ebp
or byte [edi], cl
mov esi, 0x74c08502
nop
add dword [ecx], eax
mov ecx, dword [ebp + 8]
mov dl, byte [ecx]
add dl, 0x90
add dword [ecx], eax
mov eax, dword [ebp + 8]
mov byte [eax], dl
nop
sbb byte [ebx - 0x3e7cf7b3], cl
nop
add dword [ecx], eax
mov dword [ebp + 8], ecx
nop
add byte [edx], dh
add byte [ecx - 0x77ee75fe], al
adc eax, 0xc7040190
inc ebp
nop
add dword [ecx], eax
nop
add dword [edi + ecx], eax
mov dh, 5
nop
sbb eax, dword [eax]
xor eax, 0xffffff90
add dword [ecx], eax
mov dword [ebp - 0x70], eax
add dword [ecx], eax
mov dword [ebp - 0x70], 0x101
add byte [eax], al
nop
sbb byte [ebx + 0x61b9055], cl
cmp edx, dword [0x73040190]
nop
add dword [ecx], eax
mov eax, dword [0x3040190]
inc ebp
nop
sbb eax, dword [esi]
movzx ecx, byte [eax]