Function at 0x4220b0
Capabilities:
Authenticate hmac

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x330
mov esi, esp
mov edi, dword [ebp + 0xc]
lea eax, [0x44b930]
mov dword [esi + 0x2bc], eax
mov al, byte [esi + 0x8c]
mov byte [esi + 0xa4], al
mov byte [esi + 0x90], 0x6b
mov byte [esi + 0x91], 0xf1
mov byte [esi + 0x92], 0x6f
mov byte [esi + 0x93], 0xf3
mov byte [esi + 0x94], 0x65
mov byte [esi + 0x95], 0xed
mov byte [esi + 0x96], 0x22
mov byte [esi + 0x97], 0xef
mov byte [esi + 0x98], 0x3e
mov byte [esi + 0x99], 0xe9
mov byte [esi + 0x9a], 0x76
mov byte [esi + 0x9b], 0xeb
mov byte [esi + 0x9c], 6
mov byte [esi + 0x9d], 0xe5
mov byte [esi + 0x9e], 0xe6
mov byte [esi + 0x9f], 0xe7
mov eax, 0x10
mov byte [esi + eax + 0x90], 0
add eax, 1
cmp eax, 0x11
jne 0x422151
xor eax, eax
cmp eax, 0x11
jae 0x422191
mov dl, byte [esi + eax + 0x90]
mov edi, eax
xor edi, 0x54
mov ecx, eax
shl ecx, 1
and ecx, 0x56
sub ecx, edi
mov edi, dword [ebp + 0xc]
xor cl, dl
add cl, 0xa4
mov byte [esi + eax + 0x90], cl
add eax, 1
jmp 0x422163
lea eax, [esi + 0x90]
sub esp, 0xc
mov ecx, dword [ebp + 8]
mov dword [esp], ecx
mov dword [esp + 4], edi
mov dword [esp + 8], eax
call fcn.0041c750
add esp, 0xc
and al, 1
movzx ebx, al
mov al, byte [esi + 0x88]
mov byte [esi + 0xa8], al
mov byte [esi + 0x158], 0x69
mov byte [esi + 0x159], 0x8f
mov byte [esi + 0x15a], 0x69
mov byte [esi + 0x15b], 0xb1
mov byte [esi + 0x15c], 0x22
mov byte [esi + 0x15d], 0xb3
mov byte [esi + 0x15e], 0x26
mov byte [esi + 0x15f], 0xb5
mov byte [esi + 0x160], 0x6f
mov byte [esi + 0x161], 0xb7
mov byte [esi + 0x162], 0x98
mov byte [esi + 0x163], 0xb9
mov byte [esi + 0x164], 0x5c
mov byte [esi + 0x165], 0xbb
mov byte [esi + 0x166], 0x58
mov byte [esi + 0x167], 0xbd
mov byte [esi + 0x168], 0xbc
mov byte [esi + 0x169], 0xbf
mov eax, 0x12
mov byte [esi + eax + 0x158], 0
add eax, 1
cmp eax, 0x15
jne 0x422244
xor eax, eax
cmp eax, 0x15
jae 0x422278
mov cl, byte [esi + eax + 0x158]
mov dl, al
add dl, 0x5d
xor dl, cl
add dl, 0x2f
mov byte [esi + eax + 0x158], dl
add eax, 1
jmp 0x422256
lea eax, [esi + 0x158]
sub esp, 0xc
mov ecx, dword [ebp + 8]
mov dword [esp], ecx
mov dword [esp + 4], edi
mov dword [esp + 8], eax
call fcn.0041c750
add esp, 0xc
and al, 1
movzx eax, al
or ebx, eax
cmp ebx, 0
setne byte [esi + 0xa]
mov al, byte [esi + 0x84]
mov byte [esi + 0xac], al
mov byte [esi + 0x108], 0x36
mov byte [esi + 0x109], 0x8b
mov byte [esi + 0x10a], 0x3b
mov byte [esi + 0x10b], 0x89
mov byte [esi + 0x10c], 6
mov byte [esi + 0x10d], 0x87
mov byte [esi + 0x10e], 0x35
mov byte [esi + 0x10f], 0x85
mov byte [esi + 0x110], 0x3c
mov byte [esi + 0x111], 0x83
mov byte [esi + 0x112], 0x35
mov byte [esi + 0x113], 0x81
mov byte [esi + 0x114], 0xd
mov byte [esi + 0x115], 0x9f
mov byte [esi + 0x116], 0x12
mov byte [esi + 0x117], 0x9d
mov byte [esi + 0x118], 0x2d
mov byte [esi + 0x119], 0x9b
mov byte [esi + 0x11a], 0x14
mov byte [esi + 0x11b], 0x99
mov byte [esi + 0x11c], 0x1f
mov byte [esi + 0x11d], 0x97
mov byte [esi + 0x11e], 0x64
mov byte [esi + 0x11f], 0x95
mov byte [esi + 0x120], 0x19
mov byte [esi + 0x121], 0x93
mov byte [esi + 0x122], 0x1d
mov byte [esi + 0x123], 0x91
mov byte [esi + 0x124], 0x24
mov byte [esi + 0x125], 0x6f
mov byte [esi + 0x126], 0xd9
mov byte [esi + 0x127], 0x6d
mov byte [esi + 0x128], 0xe0
mov byte [esi + 0x129], 0x6b
mov byte [esi + 0x12a], 0xd1
mov byte [esi + 0x12b], 0x69
mov byte [esi + 0x12c], 0x68
mov byte [esi + 0x12d], 0x67
mov eax, 0x26
mov byte [esi + eax + 0x108], 0
add eax, 1
cmp eax, 0x2c
jne 0x4223c0
xor eax, eax
cmp eax, 0x2c
jae 0x422411
movzx edi, byte [esi + eax + 0x108]
mov ecx, 0x1c
sub ecx, eax
or ecx, edi
mov edx, 0x1c
sub edx, eax
mov ebx, 0x1c
sub ebx, eax
or edx, ebx
xor ecx, 0xffffffff
and edx, edi
mov edi, dword [ebp + 0xc]
or edx, ecx
add dl, 0x91
mov byte [esi + eax + 0x108], dl
add eax, 1
jmp 0x4223d2
lea eax, [esi + 0x108]
sub esp, 0xc
mov ecx, dword [ebp + 8]
mov dword [esp], ecx
mov dword [esp + 4], edi
mov dword [esp + 8], eax
call fcn.0041c750
add esp, 0xc
and al, 1
movzx eax, al
mov cl, byte [esi + 0xa]
and cl, 1
movzx ecx, cl
or ecx, eax
cmp ecx, 0
setne bl
mov al, byte [esi + 0x80]
mov byte [esi + 0xb0], al
mov byte [esi + 0x134], 0x69
mov byte [esi + 0x135], 0xc7
mov byte [esi + 0x136], 0x57
mov byte [esi + 0x137], 0xc1
mov byte [esi + 0x138], 0x51
mov byte [esi + 0x139], 0xc3
mov byte [esi + 0x13a], 0x57
mov byte [esi + 0x13b], 0xcd
mov byte [esi + 0x13c], 0x67
mov byte [esi + 0x13d], 0xcf
mov byte [esi + 0x13e], 0x61
mov byte [esi + 0x13f], 0xc9
mov byte [esi + 0x140], 0x55
mov byte [esi + 0x141], 0xcb
mov byte [esi + 0x142], 0x1c
mov byte [esi + 0x143], 0xb5
mov byte [esi + 0x144], 0x29
mov byte [esi + 0x145], 0xb7
mov byte [esi + 0x146], 0x25
mov byte [esi + 0x147], 0xb1
mov byte [esi + 0x148], 0x24
mov byte [esi + 0x149], 0xb3
mov byte [esi + 0x14a], 0x19
mov byte [esi + 0x14b], 0xbd
mov byte [esi + 0x14c], 0x20
mov byte [esi + 0x14d], 0xbf
mov byte [esi + 0x14e], 0x11
mov byte [esi + 0x14f], 0xb9
mov byte [esi + 0x150], 0xb8
mov byte [esi + 0x151], 0xbb
mov eax, 0x1e
mov byte [esi + eax + 0x134], 0
add eax, 1
cmp eax, 0x21
jne 0x422529
xor eax, eax
cmp eax, 0x21
jae 0x42255d
mov cl, byte [esi + eax + 0x134]
mov dl, al
add dl, 0x31
xor dl, cl
add dl, 0xb
mov byte [esi + eax + 0x134], dl
add eax, 1
jmp 0x42253b
lea eax, [esi + 0x134]
sub esp, 0xc
mov ecx, dword [ebp + 8]
mov dword [esp], ecx
mov dword [esp + 4], edi
mov dword [esp + 8], eax
call fcn.0041c750
add esp, 0xc
and al, 1
movzx ecx, al
and bl, 1
movzx eax, bl
mov edx, ecx
and edx, eax
xor edx, 0xffffffff
add eax, ecx
add eax, 1
add eax, edx
cmp eax, 0
setne byte [esi + 0xb]
mov al, byte [esi + 0x60]
mov byte [esi + 0xb4], al
mov byte [esi + 0x64], 0xec
mov byte [esi + 0x65], 1
mov byte [esi + 0x66], 0xed
mov byte [esi + 0x67], 3
mov byte [esi + 0x68], 0xe3
mov byte [esi + 0x69], 5
mov byte [esi + 0x6a], 0xef
mov byte [esi + 0x6b], 7
mov byte [esi + 0x6c], 0xe6
mov byte [esi + 0x6d], 9
mov byte [esi + 0x6e], 0xf9
mov byte [esi + 0x6f], 0xb
mov byte [esi + 0x70], 0x22
mov byte [esi + 0x71], 0xd
mov byte [esi + 0x72], 0xe4
mov byte [esi + 0x73], 0xf
mov byte [esi + 0x74], 0xe3
mov byte [esi + 0x75], 0x11
mov byte [esi + 0x76], 0xfd
mov byte [esi + 0x77], 0x13
mov byte [esi + 0x78], 0xfa
mov byte [esi + 0x79], 0x15
mov byte [esi + 0x7a], 0x16
mov byte [esi + 0x7b], 0x17
mov eax, 0x18
mov byte [esi + eax + 0x64], 0
add eax, 1
cmp eax, 0x19
jne 0x42260a
xor eax, eax
cmp eax, 0x19
jae 0x422671
movzx edx, byte [esi + eax + 0x64]
mov edi, eax
shl edi, 1
and edi, 0xe73e0a80
mov ecx, eax
xor ecx, 0xf39f0540
add ecx, edi
mov edi, ecx
and edi, edx
shl edi, 1
add ecx, edx
mov edx, ecx
sub edx, edi
add edx, 0x3de4e5bf
mov edi, edx
shl edi, 1
and edi, 2
mov ebx, edx
and ebx, 0xfe
and ecx, 1
or ecx, ebx
and edx, edi
shl edx, 1
xor ecx, edi
mov edi, dword [ebp + 0xc]
add ecx, edx
mov byte [esi + eax + 0x64], cl
add eax, 1
jmp 0x422619
lea eax, [esi + 0x64]
sub esp, 0xc
mov ecx, dword [ebp + 8]
mov dword [esp], ecx
mov dword [esp + 4], edi
mov dword [esp + 8], eax
call fcn.0041c750
add esp, 0xc
and al, 1
movzx ecx, al
mov al, byte [esi + 0xb]
and al, 1
movzx eax, al
mov edx, ecx
and edx, eax
xor edx, 0xffffffff
add eax, ecx
add eax, 1
add eax, edx
cmp eax, 0
setne bh
mov al, byte [esi + 0x3c]
mov byte [esi + 0xb8], al
mov byte [esi + 0x40], 0x3c
mov byte [esi + 0x41], 0x8b
mov byte [esi + 0x42], 0x3e
mov byte [esi + 0x43], 0x89
mov byte [esi + 0x44], 0x37
mov byte [esi + 0x45], 0x87
mov byte [esi + 0x46], 0x3b
mov byte [esi + 0x47], 0x85
mov byte [esi + 0x48], 0x3f
mov byte [esi + 0x49], 0x83
mov byte [esi + 0x4a], 0xf
mov byte [esi + 0x4b], 0x81
mov byte [esi + 0x4c], 0xf2
mov byte [esi + 0x4d], 0x9f
mov byte [esi + 0x4e], 0x13
mov byte [esi + 0x4f], 0x9d
mov byte [esi + 0x50], 0x13
mov byte [esi + 0x51], 0x9b
mov byte [esi + 0x52], 0x2e
mov byte [esi + 0x53], 0x99
mov byte [esi + 0x54], 0x2f
mov byte [esi + 0x55], 0x97
mov byte [esi + 0x56], 0x1a
mov byte [esi + 0x57], 0x95
mov byte [esi + 0x58], 0x2f
mov byte [esi + 0x59], 0x93
mov byte [esi + 0x5a], 0x92
mov byte [esi + 0x5b], 0x91
mov eax, 0x1c
mov byte [esi + eax + 0x40], 0
add eax, 1
cmp eax, 0x1d
jne 0x42272c
xor eax, eax
cmp eax, 0x1d
jae 0x42276c
mov dl, byte [esi + eax + 0x40]
movzx edi, dl
mov ecx, eax
add ecx, 0xe69893a3
mov dh, bh
mov ebx, ecx
and ebx, edi
mov edi, dword [ebp + 0xc]
shl ebx, 1
sub ecx, ebx
mov bh, dh
add cl, dl
add cl, 0xd1
mov byte [esi + eax + 0x40], cl
add eax, 1
jmp 0x42273b
sub esp, 0xc
lea eax, [esi + 0x40]
mov dword [esp + 8], eax
mov dword [esp + 4], edi
mov eax, dword [ebp + 8]
mov dword [esp], eax
call fcn.0041c750
add esp, 0xc
or bh, al
and bh, 1
xor eax, eax
cmp dword [ebp + 0x10], 0
sete al
mov dword [esi + 0x2b8], eax
mov eax, dword [esi + 0x2bc]
mov ecx, dword [esi + 0x2b8]
mov eax, dword [eax + ecx*4]
mov dword [esi + 0x19c], eax
push eax
mov eax, esp
mov dword [esi + 0x1a0], eax
mov dword [eax], 0x44b7d0
push eax
mov eax, esp
mov dword [esi + 0x198], eax
mov dword [eax], 0x32
push eax
mov eax, esp
mov dword [esi + 0x1a8], eax
mov dword [eax], 0x44b938
push eax
mov dword [esi + 0x1a4], esp
push eax
mov eax, esp
mov dword [esi + 0x1b4], eax
mov dword [eax], 0x44b940
push eax
mov dword [esi + 0x1ac], esp
push eax
mov eax, esp
mov dword [esi + 0x1c8], eax
mov dword [eax], 0x44b948
push eax
mov dword [esi + 0x1c4], esp
push eax
mov eax, esp
mov dword [esi + 0x1d8], eax
mov dword [eax], 0x44b950
push eax
mov dword [esi + 0x1d0], esp
push eax
mov eax, esp
mov dword [esi + 0x1d4], eax
mov dword [eax], 0x44b7d0
push eax
mov eax, esp
mov dword [esi + 0x1cc], eax
mov dword [eax], 0x17
push eax
mov eax, esp
mov dword [esi + 0x28c], eax
mov dword [eax], 0x44b958
push eax
mov dword [esi + 0x288], esp
push eax
mov eax, esp
mov dword [esi + 0x284], eax
mov dword [eax], 0x44b7d0
push eax
mov eax, esp
mov dword [esi + 0x280], eax
mov dword [eax], 0x28
push eax
mov eax, esp
mov dword [esi + 0x27c], eax
mov dword [eax], 0x44b7d0
push eax
mov eax, esp
mov dword [esi + 0x278], eax
mov dword [eax], 0x1a
push eax
mov eax, esp
mov dword [esi + 0x274], eax
mov dword [eax], 0x44b960
push eax
mov dword [esi + 0x270], esp
push eax
mov eax, esp
mov dword [esi + 0x26c], eax
mov dword [eax], 0x44b968
push eax
mov dword [esi + 0x268], esp
push eax
mov eax, esp
mov dword [esi + 0x264], eax
mov dword [eax], 0x44b7d0
push eax
mov eax, esp
mov dword [esi + 0x260], eax
mov dword [eax], 0x1d
push eax
mov eax, esp
mov dword [esi + 0x25c], eax
mov dword [eax], 0x44b7d0
push eax
mov eax, esp
mov dword [esi + 0x258], eax
mov dword [eax], 0x1e
push eax
mov eax, esp
mov dword [esi + 0x254], eax
mov dword [eax], 0x44b970
push eax
mov dword [esi + 0x250], esp
push eax
mov eax, esp
mov dword [esi + 0x24c], eax
mov dword [eax], 0x44b978
push eax
mov dword [esi + 0x248], esp
push eax
mov eax, esp
mov dword [esi + 0x244], eax
mov dword [eax], 0x44b980
push eax
mov dword [esi + 0x240], esp
push eax
mov eax, esp
mov dword [esi + 0x23c], eax
mov dword [eax], 0x44b7d0
push eax
mov eax, esp
mov dword [esi + 0x238], eax
mov dword [eax], 0x27
push eax
mov eax, esp
mov dword [esi + 0x234], eax
mov dword [eax], 0x44b7d0
push eax
mov eax, esp
mov dword [esi + 0x230], eax
mov dword [eax], 0x23
push eax
mov eax, esp
mov dword [esi + 0x22c], eax
mov dword [eax], 0x44b7d0
push eax
mov eax, esp
mov dword [esi + 0x228], eax
mov dword [eax], 0x24
push eax
mov eax, esp
mov dword [esi + 0x224], eax
mov dword [eax], 0x44b988
push eax
mov dword [esi + 0x220], esp
push eax
mov eax, esp
mov dword [esi + 0x21c], eax
mov dword [eax], 0x44b7d0
push eax
mov eax, esp
mov dword [esi + 0x218], eax
mov dword [eax], 0x26
push eax
mov eax, esp
mov dword [esi + 0x214], eax
mov dword [eax], 0x44b7d0
push eax
mov eax, esp
mov dword [esi + 0x20c], eax
mov dword [eax], 0x27
push eax
mov eax, esp
mov dword [esi + 0x208], eax
mov dword [eax], 0x44b7d0
push eax
mov eax, esp
mov dword [esi + 0x200], eax
mov dword [eax], 0x17
push eax
mov eax, esp
mov dword [esi + 0x204], eax
mov dword [eax], 0x44b7d0
push eax
mov eax, esp
mov dword [esi + 0x1f4], eax
mov dword [eax], 0x29
push eax
mov eax, esp
mov dword [esi + 0x1fc], eax
mov dword [eax], 0x44b990
push eax
mov dword [esi + 0x1f0], esp
push eax
mov eax, esp
mov dword [esi + 0x1f8], eax
mov dword [eax], 0x44b7d0
push eax
mov eax, esp
mov dword [esi + 0x1ec], eax
mov dword [eax], 0x2b
push eax
mov eax, esp
mov dword [esi + 0x1e8], eax
mov dword [eax], 0x44b7d0
push eax
mov eax, esp
mov dword [esi + 0x1e0], eax
mov dword [eax], 0x2c
push eax
mov eax, esp
mov dword [esi + 0x1e4], eax
mov dword [eax], 0x44b998
push eax
mov dword [esi + 0x1dc], esp
push eax
mov eax, esp
mov dword [esi + 0x2b4], eax
mov dword [eax], 0x44b9a0
push eax
mov dword [esi + 0x2b0], esp
push eax
mov eax, esp
mov dword [eax], 0x44b7d0
push eax
mov edx, esp
mov dword [esi + 0x29c], edx
mov dword [edx], 0x2f
push eax
mov edx, esp
mov dword [esi + 0x2a4], edx
mov dword [edx], 0x44b9a8
push eax
mov dword [esi + 0x294], esp
push eax
mov edx, esp
mov dword [esi + 0x2a0], edx
mov dword [edx], 0x44b7d0
push eax
mov edx, esp
mov dword [esi + 0x290], edx
mov dword [edx], 0x31
push eax
mov edx, esp
mov dword [esi + 0x2a8], edx
mov dword [edx], 0x44b7d0
push eax
mov edx, esp
mov dword [edx], 0x32
push eax
mov ecx, esp
mov dword [esi + 0x1c0], ecx
mov dword [ecx], 0x44b7d0
push eax
mov ecx, esp
mov dword [esi + 0x1bc], ecx
mov dword [ecx], 0x1b
push eax
mov ecx, esp
mov dword [esi + 0x1b8], ecx
mov dword [ecx], 0x44b7d0
push eax
mov ecx, esp
mov dword [esi + 0x1b0], ecx
mov dword [ecx], 0x1f
push eax
mov ecx, esp
mov dword [esi + 0x210], ecx
mov dword [ecx], 0x44b7d0
push eax
mov ecx, esp
mov dword [ecx], 0x2d
jmp dword [esi + 0x19c]