Function at 0x6ee7d0
Capabilities:
Authenticate hmac

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x58
mov edi, dword [esp + 0x70]
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x54], 0
xor esi, esi
cmp dword [eax + 8], 0
je 0x6ef156
mov ecx, 0xd5
lea eax, [eax + 4]
mov dword [esp + 0x20], eax
mov byte [esp + 0x47], al
mov byte [esp + 0x36], al
mov dword [esp + 0x4c], eax
jmp 0x6ee84c
mov eax, 0xd5
xor al, 0xa8
mov dword [esp + 0x4c], eax
movzx ebx, al
sub ebx, ecx
mov dh, bl
xor dh, 0x94
xor bl, 0x9c
mov dl, bl
add dl, 0xe0
mov al, dl
xor al, 0x36
mov byte [esp + 0x36], al
add al, 0x45
mov byte [esp + 0x47], al
mov eax, esi
not eax
and eax, 1
add eax, esi
setne al
movzx eax, al
add esi, eax
mov dword [esp + 0x50], 0
test esi, esi
jne 0x6ee87d
mov eax, 3
sub eax, esi
xor eax, esi
mov dword [esp + 0x40], eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x3c], eax
mov dword [esp + 0x38], eax
mov dword [esp + 0x48], ebp
jne 0x6ee810
jmp 0x6ee8a0
mov dword [esp + 0x40], eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x3c], eax
mov dword [esp + 0x38], eax
mov dword [esp + 0x48], ecx
nop word cs:[eax + eax]
mov byte [esp + 0x37], dh
mov byte [esp + 0x2b], dl
mov ecx, dword [esp + 0x20]
mov edi, dword [ecx]
mov ecx, dword [esp + 0x50]
lea esi, [ecx + ecx*2]
mov edx, dword [edi + esi*8]
cmp edx, 0x34
je 0x6ee920
cmp edx, 0x35
mov ebp, dword [esp + 0x70]
je 0x6ee960
mov ecx, 0x12
cmp edx, 0x36
jne 0x6ee8e5
mov ecx, 3
movzx edx, bl
cmp edx, 0x55
jne 0x6ee9c3
cmp ecx, 3
je 0x6ee8f9
imul ecx, ecx
and ecx, 3
cmp ecx, 2
jne 0x6ef0c8
mov bl, 0x34
mov ecx, dword [edi + esi*8 + 0x10]
cmp ecx, 0x13
ja 0x6ee9e1
mov eax, ecx
or eax, 2
mov edx, ecx
xor edx, 2
add edx, eax
jne 0x6eeb30
jmp 0x6ee9e1
movzx ecx, byte [esp + 0x47]
cmp ecx, 0x5c
mov ebp, dword [esp + 0x70]
je 0x6eea35
cmp ecx, 0x67
jne 0x6eea67
mov ecx, 3
mov byte [esp + 0x47], 0x23
mov edx, dword [edi + esi*8 + 0x10]
mov dword [esp + 0x24], esi
test edx, edx
je 0x6eec1c
jmp 0x6eec02
mov dword [esp + 0x1c], edi
mov ecx, dword [esp + 0x4c]
movzx edx, cl
cmp edx, 6
je 0x6eea9a
mov ecx, 0xb
cmp edx, 0x46
jne 0x6eead5
mov ecx, 0xe
mov dl, 0x7d
mov dword [esp + 0x4c], edx
mov edi, esi
mov ebp, dword [esp + 0x1c]
mov esi, dword [ebp + edi*8 + 0x10]
mov dword [esp + 0x48], esi
mov edx, esi
imul edx, edx
and edx, 3
cmp edx, 2
sete dl
movzx edx, dl
cmp esi, edx
je 0x6ef0c8
mov dword [esp + 0x24], edi
mov edi, ebp
mov ebp, dword [esp + 0x70]
jmp 0x6eeca2
mov eax, 0x1b
mov bl, 0x55
mov ecx, dword [edi + esi*8 + 0x10]
cmp ecx, 0x14
jb 0x6eed2c
xor edx, edx
test dl, dl
jne 0x6eed2c
mov eax, dword [edi + esi*8 + 0x14]
mov edx, dword [edi + esi*8 + 4]
mov dword [esp + 8], ecx
mov dword [esp + 4], eax
mov dword [esp], edx
call fcn.0068ee80
mov dword [esp + 0x54], eax
test eax, eax
jne 0x6ef16b
mov ecx, 7
mov dl, byte [esp + 0x37]
movzx edx, dl
cmp edx, 0x32
je 0x6eed3a
mov ecx, 0xf
cmp edx, 0x4c
jne 0x6eeade
mov dword [esp + 0x1c], edi
mov dword [esp + 0x24], esi
jmp 0x6eeb76
mov ecx, 5
mov byte [esp + 0x47], 0x5c
mov dword [esp + 0x24], esi
mov esi, dword [edi + esi*8 + 0x10]
mov edx, esi
imul edx, edx
and edx, 3
cmp edx, 2
sete dl
movzx edx, dl
cmp esi, edx
mov edx, esi
jne 0x6eec02
jmp 0x6eec54
mov ecx, 0x19
mov dword [esp + 0x24], esi
mov esi, dword [edi + esi*8 + 0x10]
mov dword [esp + 0x40], esi
mov edx, esi
and edx, 1
inc edx
xor edx, esi
sete dl
movzx edx, dl
cmp esi, edx
mov edx, 4
mov byte [esp + 0x47], 0x67
jne 0x6eebeb
jmp 0x6eeb07
mov ecx, 4
mov dl, 0x46
mov dword [esp + 0x4c], edx
mov edi, esi
mov edx, dword [esp + 0x1c]
mov esi, dword [edx + edi*8 + 0x10]
mov dword [esp + 0x48], esi
mov edx, esi
imul edx, edx
and edx, 3
cmp edx, 2
sete dl
movzx edx, dl
cmp esi, edx
je 0x6ef0c8
mov dword [esp + 0x24], edi
jmp 0x6eebb6
mov dword [esp + 0x24], esi
jmp 0x6eefae
mov edx, 0x10
mov byte [esp + 0x37], 0x4c
mov ecx, dword [esp + 0x20]
mov ecx, dword [ecx]
mov dword [esp + 0x3c], ecx
mov ecx, dword [ecx + esi*8 + 0x14]
mov dword [esp + 0x38], ecx
cmp dword [ecx + 0x10], 0x7661726c
jne 0x6eeb27
mov dword [esp + 0x24], esi
cmp edx, 4
je 0x6ef0c8
mov dword [esp + 0x1c], edi
xor ecx, ecx
test cl, cl
mov edi, dword [esp + 0x24]
je 0x6eeeb6
jmp 0x6ef0c8
mov dword [esp + 0x24], esi
jmp 0x6eef79
mov dword [esp + 0x24], esi
xor edx, edx
mov ecx, 0x44
add ecx, 0xffffffc3
jmp 0x6eeb59
mov eax, edx
not eax
and eax, 1
add eax, edx
setne al
movzx eax, al
add edx, eax
mov dword [esp + 0x54], 0x7000002f
mov eax, edx
and eax, 1
xor eax, edx
cmp eax, 0xffffffff
setne al
movzx esi, al
mov eax, 0x7000002f
cmp edx, esi
jb 0x6eeb40
mov dword [esp + 0x1c], edi
cmp ecx, 7
je 0x6ef16b
xor ecx, ecx
test cl, cl
jne 0x6ef16b
mov ecx, 8
mov byte [esp + 0x37], 0x3c
mov eax, dword [esp + 0x20]
mov eax, dword [eax]
mov dword [esp + 0x3c], eax
mov edx, dword [esp + 0x24]
mov eax, dword [eax + edx*8 + 0x14]
mov dword [esp + 0x38], eax
cmp dword [eax + 0x10], 0x7661726c
jne 0x6eef79
cmp ecx, 4
mov edi, dword [esp + 0x24]
jne 0x6eeeb6
jmp 0x6eeff1
mov ecx, 0xa
mov byte [esp + 0x36], 4
cmp esi, 0x14
jb 0x6eebe7
mov dword [esp + 0x40], esi
xor edx, edx
test dl, dl
je 0x6eecc0
jmp 0x6eebeb
mov dword [esp + 0x40], esi
cmp ecx, 0xa
je 0x6eee94
xor ecx, ecx
test cl, cl
mov edx, dword [esp + 0x40]
jne 0x6eee9d
mov esi, edx
mov cl, byte [esp + 0x36]
movzx edx, cl
cmp edx, 4
je 0x6eec73
mov ecx, 0xc
cmp edx, 0x22
jne 0x6eebc8
mov edx, esi
cmp ecx, 3
jne 0x6eec2a
mov dword [esp + 0x40], edx
jmp 0x6ef0c8
mov esi, 0x1c
mov byte [esp + 0x36], 0x40
cmp edx, 0x14
mov dword [esp + 0x40], edx
jb 0x6eeea6
mov ecx, 8
xor edx, edx
test dl, dl
jne 0x6eeea6
mov edx, dword [esp + 0x40]
mov dword [esp + 0x40], edx
cmp ecx, 5
jne 0x6eecc0
mov edx, ecx
or edx, 2
xor ecx, 2
add ecx, edx
mov esi, dword [esp + 0x24]
jne 0x6ef0c8
jmp 0x6eecc4
mov eax, 0x1e
mov cl, 0x22
cmp esi, 0x14
jb 0x6eef54
mov byte [esp + 0x36], 0x22
mov ecx, 0xb
mov dword [esp + 0x40], esi
mov edx, esi
imul edx, edx
and edx, 3
cmp edx, 2
je 0x6eef5e
cmp ecx, 0xb
je 0x6eecc0
mov eax, ecx
and eax, 1
inc eax
xor eax, ecx
mov esi, dword [esp + 0x24]
je 0x6eecc4
mov dword [esp + 0x1c], edi
mov edi, esi
jmp 0x6eeff1
mov esi, dword [esp + 0x24]
mov eax, dword [edi + esi*8 + 0x14]
mov ecx, dword [esp + 0x40]
mov dword [esp + 8], ecx
mov dword [esp + 4], eax
mov dword [esp], 0xfffffff9
call fcn.0068ee80
mov dword [esp + 0x54], eax
mov ecx, eax
and ecx, 1
inc ecx
xor ecx, eax
sete cl
movzx ecx, cl
cmp eax, ecx
jne 0x6eedbb
mov ecx, 0x11
mov eax, dword [esp + 0x20]
mov eax, dword [eax]
mov dword [esp + 0x30], eax
mov eax, dword [eax + esi*8 + 0x14]
mov dword [esp + 0x2c], eax
mov edx, dword [eax + 0x10]
cmp edx, 0x636f6d6c
je 0x6eed3a
mov eax, 0xe
imul edx, edx
and edx, 3
cmp edx, 2
je 0x6eed3a
cmp eax, 0xe
jne 0x6eeb30
jmp 0x6ef173
cmp ecx, 7
je 0x6eedc5
imul ecx, ecx
and ecx, 3
cmp ecx, 3
je 0x6eedc5
mov ecx, 5
mov dl, byte [esp + 0x2b]
movzx eax, dl
cmp eax, 3
je 0x6eee10
mov byte [esp + 0x2b], 3
mov eax, dword [esp + 0x30]
mov eax, dword [eax + esi*8 + 0x10]
add eax, 0xffffffec
mov ecx, dword [esp + 0x2c]
lea ecx, [ecx + 0x14]
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], ecx
mov dword [esp], ebp
mov dword [esp + 0x10], 0xfffffff9
mov dword [esp + 0xc], 0xff
mov dword [esp + 8], 1
mov dword [esp + 4], 0x34
call fcn.007855d0
mov dword [esp + 0x54], eax
test eax, eax
je 0x6ef0c8
jmp 0x6ef16b
mov ecx, 6
jmp 0x6eef1c
mov eax, 0xe
mov byte [esp + 0x37], 0x32
mov ecx, dword [esp + 0x20]
mov ecx, dword [ecx]
mov dword [esp + 0x3c], ecx
mov ecx, dword [ecx + esi*8 + 0x14]
mov dword [esp + 0x38], ecx
mov edx, dword [ecx + 0x10]
cmp edx, 0x7661726c
jne 0x6eef40
mov dword [esp + 0x24], esi
mov ecx, 6
mov esi, edx
not esi
and esi, 1
add esi, edx
je 0x6eef4a
mov dl, byte [esp + 0x2b]
mov esi, dword [esp + 0x24]
cmp ecx, 5
jne 0x6eeeac
mov eax, ecx
and eax, 1
xor eax, ecx
not eax
test eax, eax
je 0x6eeeac
mov eax, dword [esp + 0x30]
mov eax, dword [eax + esi*8 + 0x10]
add eax, 0xffffffec
mov ecx, dword [esp + 0x2c]
lea ecx, [ecx + 0x14]
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], ecx
mov dword [esp], ebp
mov dword [esp + 0x10], 0xfffffff9
mov dword [esp + 0xc], 0xff
mov dword [esp + 8], 1
mov dword [esp + 4], 0x34
call fcn.007855d0
mov dword [esp + 0x54], eax
test eax, eax
jne 0x6ef16b
mov byte [esp + 0x2b], 0x14
mov ecx, eax
or ecx, 2
mov edx, eax
xor edx, 2
add edx, ecx
jne 0x6ef0c8
jmp 0x6ef16b
mov dword [esp + 0x1c], edi
jmp 0x6eef9c
mov dword [esp + 0x1c], edi
jmp 0x6eef9c
mov dword [esp + 0x1c], edi
jmp 0x6eef2a
mov dword [esp + 0x1c], edi
mov byte [esp + 0x2b], dl
mov edi, esi
mov dword [esp + 0x24], edi
mov esi, 0x10
mov edx, dword [esp + 0x3c]
mov eax, dword [edx + edi*8 + 0x10]
add eax, 0xffffffec
mov ecx, dword [esp + 0x38]
lea ecx, [ecx + 0x14]
mov edx, dword [edx + edi*8 + 4]
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], edx
mov dword [esp], ebp
mov dword [esp + 0xc], 5
mov dword [esp + 8], 1
mov dword [esp + 4], 0x36
call fcn.007855d0
mov dword [esp + 0x54], eax
mov ecx, eax
and ecx, 1
inc ecx
xor ecx, eax
sete cl
movzx ecx, cl
cmp eax, ecx
mov ecx, 3
jne 0x6eef2a
cmp ecx, 3
je 0x6ef0c8
jmp 0x6ef16b
cmp esi, 0x10
jne 0x6eef9c
mov ecx, esi
or ecx, 2
xor esi, 2
add esi, ecx
je 0x6eef9c
jmp 0x6ef16b
mov dword [esp + 0x1c], edi
mov dword [esp + 0x24], esi
jmp 0x6eef4e
mov dword [esp + 0x1c], edi
mov cl, byte [esp + 0x36]
jmp 0x6eef64
mov dword [esp + 0x1c], edi
mov dword [esp + 0x40], esi
jmp 0x6eef64
mov dword [esp + 0x1c], edi
mov cl, 0x22
cmp eax, 0xe
jne 0x6eef98
mov byte [esp + 0x36], cl
mov ecx, eax
or ecx, 2
xor eax, 2
add eax, ecx
je 0x6eef9c
mov esi, 0xe
mov dword [esp + 0x54], 0x7000002f
mov eax, 0x7000002f
mov cl, byte [esp + 0x2b]
mov dl, byte [esp + 0x37]
jmp 0x6ef04c
mov byte [esp + 0x36], cl
mov ecx, 3
mov dword [esp + 0x54], 0x7000002f
mov eax, 0x7000002f
cmp ecx, 3
je 0x6ef16b
mov edx, ecx
and edx, 1
inc edx
xor edx, ecx
je 0x6ef16b
mov cl, 6
mov dword [esp + 0x4c], ecx
mov edi, dword [esp + 0x24]
mov ecx, dword [esp + 0x1c]
mov edx, dword [ecx + edi*8 + 0x10]
mov dword [esp + 0x48], edx
mov ecx, edx
and ecx, 1
inc ecx
xor ecx, edx
sete cl
movzx ecx, cl
cmp edx, ecx
je 0x6ef0c8
mov dword [esp + 0x24], edi
mov esi, 0xa
mov ebp, 0x1b
mov ecx, dword [esp + 0x1c]
mov eax, dword [ecx + edi*8 + 0x14]
mov ecx, dword [ecx + edi*8 + 4]
mov edx, dword [esp + 0x48]
mov dword [esp + 0xc], edx
mov dword [esp + 8], eax
mov dword [esp], ecx
mov dword [esp + 4], 0
call fcn.0068f340
mov dword [esp + 0x54], eax
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sete cl
movzx ecx, cl
cmp eax, ecx
mov cl, byte [esp + 0x2b]
mov dl, byte [esp + 0x37]
jne 0x6ef102
mov byte [esp + 0x37], dl
mov byte [esp + 0x2b], cl
cmp esi, 0xa
mov edi, dword [esp + 0x70]
je 0x6ef06c
imul esi, esi
and esi, 3
cmp esi, 2
jne 0x6ef16b
mov eax, dword [esp + 0x20]
mov eax, dword [eax]
mov esi, dword [esp + 0x24]
mov ecx, dword [eax + esi*8 + 0x10]
mov edx, dword [eax + esi*8 + 0x14]
mov eax, dword [eax + esi*8 + 4]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], eax
mov dword [esp], edi
mov dword [esp + 0xc], 2
mov dword [esp + 8], 1
mov dword [esp + 4], 0x35
call fcn.007855d0
mov dword [esp + 0x54], eax
mov ecx, eax
and ecx, 1
inc ecx
xor ecx, eax
sete cl
movzx ecx, cl
cmp eax, ecx
jne 0x6ef16b
mov ecx, dword [esp + 0x50]
mov edx, ecx
imul ecx, ecx
and ecx, 3
cmp ecx, 2
adc edx, 0
mov dword [esp + 0x50], edx
mov ecx, dword [esp + 0x6c]
cmp edx, dword [ecx + 8]
mov dl, byte [esp + 0x2b]
mov dh, byte [esp + 0x37]
jb 0x6ee8a0
mov ebp, 0xd
xor ecx, ecx
test cl, cl
jne 0x6ee8a0
xor esi, esi
cmp ebp, 0xd
mov edi, dword [esp + 0x70]
jne 0x6ef16b
jmp 0x6ef156
xor ecx, esi
setne al
movzx eax, al
add esi, eax
lea eax, [esp + 0x54]
mov dword [esp + 0x14], eax
mov dword [esp], edi
mov dword [esp + 0x18], 4
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 1
call fcn.007855d0
mov dword [esp + 0x54], eax
mov ecx, 3
sub ecx, esi
mov edx, esi
xor edx, ecx
setne dl
movzx edx, dl
cmp esi, edx
jb 0x6ef110
add esp, 0x58
pop esi
pop edi
pop ebx
pop ebp
ret
mov dword [esp + 0x54], 0x7000002f
mov eax, 0x7000002f
jmp 0x6ef16b