Function at 0x422690
Capabilities:
Authenticate hmac

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x300
mov esi, esp
mov edi, dword [ebp + 8]
lea eax, [0x450234]
mov dword [esi + 0x28c], eax
mov al, byte [esi + 0xac]
mov byte [esi + 0xb0], al
mov byte [esi + 0x4c], 0xab
mov byte [esi + 0x4d], 0x41
mov byte [esi + 0x4e], 0xa7
mov byte [esi + 0x4f], 0x43
mov byte [esi + 0x50], 0xdd
mov byte [esi + 0x51], 0x45
mov byte [esi + 0x52], 0x92
mov byte [esi + 0x53], 0x47
mov byte [esi + 0x54], 0x66
mov byte [esi + 0x55], 0x49
mov byte [esi + 0x56], 0xae
mov byte [esi + 0x57], 0x4b
mov byte [esi + 0x58], 0xae
mov byte [esi + 0x59], 0x4d
mov byte [esi + 0x5a], 0x4e
mov byte [esi + 0x5b], 0x4f
mov dword [esi + 0x18], 0
mov eax, dword [esi + 0x18]
cmp eax, 0x10
jae 0x422738
mov eax, dword [esi + 0x18]
mov ecx, dword [esi + 0x18]
movzx ecx, byte [esi + ecx + 0x4c]
sub esp, 8
mov dword [esp + 4], eax
mov dword [esp], ecx
call fcn.00424590
add esp, 8
mov ecx, dword [esi + 0x18]
mov byte [esi + ecx + 0x4c], al
mov eax, dword [esi + 0x18]
inc eax
mov dword [esi + 0x18], eax
jmp 0x422703
lea eax, [esi + 0x4c]
sub esp, 0xc
mov dword [esp], edi
mov ecx, dword [ebp + 0xc]
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
call fcn.0041c720
add esp, 0xc
and al, 1
movzx ebx, al
mov al, byte [esi + 0xa8]
mov byte [esi + 0xb4], al
mov byte [esi + 0x158], 0x29
mov byte [esi + 0x159], 0x87
mov byte [esi + 0x15a], 0x29
mov byte [esi + 0x15b], 0x81
mov byte [esi + 0x15c], 0x32
mov byte [esi + 0x15d], 0x83
mov byte [esi + 0x15e], 0x3e
mov byte [esi + 0x15f], 0x8d
mov byte [esi + 0x160], 0x77
mov byte [esi + 0x161], 0x8f
mov byte [esi + 0x162], pe_nt_image_headers32
mov byte [esi + 0x163], 0x89
mov byte [esi + 0x164], 0x24
mov byte [esi + 0x165], 0x8b
mov byte [esi + 0x166], 0x28
mov byte [esi + 0x167], 0x95
mov byte [esi + 0x168], 0x94
mov byte [esi + 0x169], 0x97
mov eax, 0x12
mov byte [esi + eax + 0x158], 0
add eax, 1
cmp eax, 0x15
jne 0x4227e8
mov dword [esi + 0x1c], 0
mov eax, dword [esi + 0x1c]
cmp eax, 0x15
jae 0x42283a
mov eax, dword [esi + 0x1c]
mov ecx, dword [esi + 0x1c]
movzx ecx, byte [esi + ecx + 0x158]
sub esp, 8
mov dword [esp + 4], eax
mov dword [esp], ecx
call fcn.00424610
add esp, 8
mov ecx, dword [esi + 0x1c]
mov byte [esi + ecx + 0x158], al
mov eax, dword [esi + 0x1c]
inc eax
mov dword [esi + 0x1c], eax
jmp 0x4227ff
lea eax, [esi + 0x158]
sub esp, 0xc
mov dword [esp], edi
mov ecx, dword [ebp + 0xc]
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
call fcn.0041c720
add esp, 0xc
and al, 1
movzx eax, al
mov ecx, eax
and ecx, ebx
xor ecx, 0xffffffff
add ebx, eax
add ebx, 1
add ebx, ecx
cmp ebx, 0
setne bl
mov al, byte [esi + 0xa4]
mov byte [esi + 0xb8], al
mov byte [esi + 0x108], 0x56
mov byte [esi + 0x109], 0xcb
mov byte [esi + 0x10a], 0x5b
mov byte [esi + 0x10b], 0xc9
mov byte [esi + 0x10c], 0x46
mov byte [esi + 0x10d], 0xc7
mov byte [esi + 0x10e], 0x55
mov byte [esi + 0x10f], 0xc5
mov byte [esi + 0x110], 0x5c
mov byte [esi + 0x111], 0xc3
mov byte [esi + 0x112], 0x55
mov byte [esi + 0x113], 0xc1
mov byte [esi + 0x114], 0x4d
mov byte [esi + 0x115], 0xbf
mov byte [esi + 0x116], 0x32
mov byte [esi + 0x117], 0xbd
mov byte [esi + 0x118], 0x2d
mov byte [esi + 0x119], 0xbb
mov byte [esi + 0x11a], 0x34
mov byte [esi + 0x11b], 0xb9
mov byte [esi + 0x11c], 0x3f
mov byte [esi + 0x11d], 0xb7
mov byte [esi + 0x11e], 0x64
mov byte [esi + 0x11f], 0xb5
mov byte [esi + 0x120], 0x39
mov byte [esi + 0x121], 0xb3
mov byte [esi + 0x122], 0x3d
mov byte [esi + 0x123], 0xb1
mov byte [esi + 0x124], 0x24
mov byte [esi + 0x125], 0xaf
mov byte [esi + 0x126], 0x39
mov byte [esi + 0x127], 0xad
mov byte [esi + 0x128], 0x20
mov byte [esi + 0x129], 0xab
mov byte [esi + 0x12a], 0x31
mov byte [esi + 0x12b], 0xa9
mov byte [esi + 0x12c], 0xa8
mov byte [esi + 0x12d], 0xa7
mov eax, 0x26
mov byte [esi + eax + 0x108], 0
add eax, 1
cmp eax, 0x2b
jne 0x42298d
mov dword [esi + 0x20], 0
mov eax, dword [esi + 0x20]
cmp eax, 0x2b
jae 0x4229df
mov eax, dword [esi + 0x20]
mov ecx, dword [esi + 0x20]
movzx ecx, byte [esi + ecx + 0x108]
sub esp, 8
mov dword [esp + 4], eax
mov dword [esp], ecx
call fcn.004246a0
add esp, 8
mov ecx, dword [esi + 0x20]
mov byte [esi + ecx + 0x108], al
mov eax, dword [esi + 0x20]
inc eax
mov dword [esi + 0x20], eax
jmp 0x4229a4
lea eax, [esi + 0x108]
sub esp, 0xc
mov dword [esp], edi
mov ecx, dword [ebp + 0xc]
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
call fcn.0041c720
add esp, 0xc
and al, 1
movzx eax, al
and bl, 1
movzx ecx, bl
or ecx, eax
cmp ecx, 0
setne bl
mov al, byte [esi + 0xa0]
mov byte [esi + 0xbc], al
mov byte [esi + 0x134], 0x61
mov byte [esi + 0x135], 0xbb
mov byte [esi + 0x136], 0x2b
mov byte [esi + 0x137], 0xb9
mov byte [esi + 0x138], 0x29
mov byte [esi + 0x139], 0xbf
mov byte [esi + 0x13a], 0x23
mov byte [esi + 0x13b], 0xbd
mov byte [esi + 0x13c], 0x23
mov byte [esi + 0x13d], 0xb3
mov byte [esi + 0x13e], 0x29
mov byte [esi + 0x13f], 0xb1
mov byte [esi + 0x140], 0x25
mov byte [esi + 0x141], 0xb7
mov byte [esi + 0x142], 0x64
mov byte [esi + 0x143], 0xb5
mov byte [esi + 0x144], 0x21
mov byte [esi + 0x145], 0xab
mov byte [esi + 0x146], 0x3d
mov byte [esi + 0x147], 0xa9
mov byte [esi + 0x148], 0x34
mov byte [esi + 0x149], 0xaf
mov byte [esi + 0x14a], 0x31
mov byte [esi + 0x14b], 0xad
mov byte [esi + 0x14c], 0x38
mov byte [esi + 0x14d], 0xa3
mov byte [esi + 0x14e], 0x39
mov byte [esi + 0x14f], 0xa1
mov byte [esi + 0x150], 0xa0
mov byte [esi + 0x151], 0xa7
mov eax, 0x1e
mov byte [esi + eax + 0x134], 0
add eax, 1
cmp eax, 0x23
jne 0x422af4
mov dword [esi + 0x24], 0
mov eax, dword [esi + 0x24]
cmp eax, 0x23
jae 0x422b46
mov eax, dword [esi + 0x24]
mov ecx, dword [esi + 0x24]
movzx ecx, byte [esi + ecx + 0x134]
sub esp, 8
mov dword [esp + 4], eax
mov dword [esp], ecx
call fcn.00424710
add esp, 8
mov ecx, dword [esi + 0x24]
mov byte [esi + ecx + 0x134], al
mov eax, dword [esi + 0x24]
inc eax
mov dword [esi + 0x24], eax
jmp 0x422b0b
lea eax, [esi + 0x134]
sub esp, 0xc
mov dword [esp], edi
mov ecx, dword [ebp + 0xc]
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
call fcn.0041c720
add esp, 0xc
and al, 1
movzx eax, al
and bl, 1
movzx ecx, bl
or ecx, eax
cmp ecx, 0
setne bl
mov al, byte [esi + 0x9c]
mov byte [esi + 0xc0], al
mov byte [esi + 0x5c], 0x18
mov byte [esi + 0x5d], 0xbb
mov byte [esi + 0x5e], 0x2b
mov byte [esi + 0x5f], 0xb9
mov byte [esi + 0x60], 0x21
mov byte [esi + 0x61], 0xbf
mov byte [esi + 0x62], 0x21
mov byte [esi + 0x63], 0xbd
mov byte [esi + 0x64], 0x2e
mov byte [esi + 0x65], 0xb3
mov byte [esi + 0x66], 0x27
mov byte [esi + 0x67], 0xb1
mov byte [esi + 0x68], 0xe2
mov byte [esi + 0x69], 0xb7
mov byte [esi + 0x6a], 0x28
mov byte [esi + 0x6b], 0xb5
mov byte [esi + 0x6c], 0x21
mov byte [esi + 0x6d], 0xab
mov byte [esi + 0x6e], 0x3b
mov byte [esi + 0x6f], 0xa9
mov byte [esi + 0x70], 0x3a
mov byte [esi + 0x71], 0xaf
mov byte [esi + 0x72], 0xae
mov byte [esi + 0x73], 0xad
mov dword [esi + 0x28], 0
mov eax, dword [esi + 0x28]
cmp eax, 0x18
jae 0x422c20
mov eax, dword [esi + 0x28]
mov ecx, dword [esi + 0x28]
movzx ecx, byte [esi + ecx + 0x5c]
sub esp, 8
mov dword [esp + 4], eax
mov dword [esp], ecx
call fcn.00424770
add esp, 8
mov ecx, dword [esi + 0x28]
mov byte [esi + ecx + 0x5c], al
mov eax, dword [esi + 0x28]
inc eax
mov dword [esi + 0x28], eax
jmp 0x422beb
lea eax, [esi + 0x5c]
sub esp, 0xc
mov dword [esp], edi
mov ecx, dword [ebp + 0xc]
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
call fcn.0041c720
add esp, 0xc
and al, 1
movzx eax, al
and bl, 1
movzx edx, bl
mov ecx, edx
xor ecx, 0xffffffff
xor edx, 0xffffffff
or ecx, edx
and eax, eax
xor eax, 0xffffffff
xor ecx, 0xffffffff
xor eax, 0xffffffff
or ecx, eax
cmp ecx, 0
setne bl
mov al, byte [esi + 0x98]
mov byte [esi + 0xc4], al
mov byte [esi + 0x74], 0x14
mov byte [esi + 0x75], 0x6b
mov byte [esi + 0x76], 6
mov byte [esi + 0x77], 0x69
mov byte [esi + 0x78], 0xf
mov byte [esi + 0x79], 0x6f
mov byte [esi + 0x7a], 0xb
mov byte [esi + 0x7b], 0x6d
mov byte [esi + 0x7c], 7
mov byte [esi + 0x7d], 0x73
mov byte [esi + 0x7e], 7
mov byte [esi + 0x7f], 0x71
mov byte [esi + 0x80], 0x42
mov byte [esi + 0x81], 0x77
mov byte [esi + 0x82], 3
mov byte [esi + 0x83], 0x75
mov byte [esi + 0x84], 3
mov byte [esi + 0x85], 0x7b
mov byte [esi + 0x86], 0x16
mov byte [esi + 0x87], 0x79
mov byte [esi + 0x88], 0x17
mov byte [esi + 0x89], 0x7f
mov byte [esi + 0x8a], 0xa
mov byte [esi + 0x8b], 0x7d
mov byte [esi + 0x8c], 0x17
mov byte [esi + 0x8d], 0x83
mov byte [esi + 0x8e], 0x82
mov byte [esi + 0x8f], 0x81
mov dword [esi + 0x2c], 0
mov eax, dword [esi + 0x2c]
cmp eax, 0x1c
jae 0x422d4c
mov eax, dword [esi + 0x2c]
mov ecx, dword [esi + 0x2c]
movzx ecx, byte [esi + ecx + 0x74]
sub esp, 8
mov dword [esp + 4], eax
mov dword [esp], ecx
call fcn.004247e0
add esp, 8
mov ecx, dword [esi + 0x2c]
mov byte [esi + ecx + 0x74], al
mov eax, dword [esi + 0x2c]
inc eax
mov dword [esi + 0x2c], eax
jmp 0x422d17
sub esp, 0xc
lea eax, [esi + 0x74]
mov dword [esp + 8], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], eax
mov dword [esp], edi
call fcn.0041c720
add esp, 0xc
movzx eax, al
xor edx, edx
mov dl, bl
mov ecx, edx
not ecx
or edx, eax
not edx
or ecx, 0xfffffffe
not eax
and ecx, eax
or edx, ecx
not edx
mov dword [esi + 0x90], edx
test edx, edx
setne al
xor ecx, ecx
cmp dword [ebp + 0x10], 0
sete cl
mov dword [esi + 0x288], ecx
mov ecx, dword [esi + 0x28c]
mov edx, dword [esi + 0x288]
mov ecx, dword [ecx + edx*4]
mov dword [esi + 0x1b0], ecx
push eax
mov ecx, esp
mov dword [esi + 0x1a0], ecx
mov dword [ecx], 0x450090
push eax
mov edx, esp
mov dword [edx], 0x39
push eax
mov edi, esp
mov dword [edi], 0x45023c
push eax
mov dword [esi + 0x1ac], esp
push eax
mov ebx, esp
mov dword [esi + 0x1c8], ebx
mov dword [ebx], 0x450244
push eax
mov dword [esi + 0x1bc], esp
push eax
mov ebx, esp
mov dword [esi + 0x1c4], ebx
mov dword [ebx], 0x45024c
push eax
mov dword [esi + 0x1b8], esp
push eax
mov ebx, esp
mov dword [esi + 0x1c0], ebx
mov dword [ebx], 0x450254
push eax
mov dword [esi + 0x1b4], esp
push eax
mov ebx, esp
mov dword [esi + 0x1e8], ebx
mov dword [ebx], 0x45025c
push eax
mov dword [esi + 0x1d4], esp
push eax
mov ebx, esp
mov dword [esi + 0x1dc], ebx
mov dword [ebx], 0x450264
push eax
mov dword [esi + 0x1d0], esp
push eax
mov ebx, esp
mov dword [esi + 0x1ec], ebx
mov dword [ebx], 0x450090
push eax
mov ebx, esp
mov dword [esi + 0x1d8], ebx
mov dword [ebx], 0x25
push eax
mov ebx, esp
mov dword [esi + 0x1e0], ebx
mov dword [ebx], 0x450090
push eax
mov ebx, esp
mov dword [esi + 0x1cc], ebx
mov dword [ebx], 0x26
push eax
mov ebx, esp
mov dword [esi + 0x1f0], ebx
mov dword [ebx], 0x45026c
push eax
mov dword [esi + 0x1e4], esp
push eax
mov ebx, esp
mov dword [esi + 0x204], ebx
mov dword [ebx], 0x450274
push eax
mov dword [esi + 0x1fc], esp
push eax
mov ebx, esp
mov dword [esi + 0x200], ebx
mov dword [ebx], 0x450090
push eax
mov ebx, esp
mov dword [esi + 0x1f8], ebx
mov dword [ebx], 0x29
push eax
mov ebx, esp
mov dword [esi + 0x26c], ebx
mov dword [ebx], 0x45027c
push eax
mov dword [esi + 0x260], esp
push eax
mov ebx, esp
mov dword [esi + 0x25c], ebx
mov dword [ebx], 0x450090
push eax
mov ebx, esp
mov dword [esi + 0x258], ebx
mov dword [ebx], 0x31
push eax
mov ebx, esp
mov dword [esi + 0x254], ebx
mov dword [ebx], 0x450284
push eax
mov dword [esi + 0x250], esp
push eax
mov ebx, esp
mov dword [esi + 0x24c], ebx
mov dword [ebx], 0x450090
push eax
mov ebx, esp
mov dword [esi + 0x248], ebx
mov dword [ebx], 0x30
push eax
mov ebx, esp
mov dword [esi + 0x244], ebx
mov dword [ebx], 0x45028c
push eax
mov dword [esi + 0x240], esp
push eax
mov ebx, esp
mov dword [esi + 0x23c], ebx
mov dword [ebx], 0x450090
push eax
mov ebx, esp
mov dword [esi + 0x238], ebx
mov dword [ebx], 0x2f
push eax
mov ebx, esp
mov dword [esi + 0x234], ebx
mov dword [ebx], 0x450090
push eax
mov ebx, esp
mov dword [esi + 0x230], ebx
mov dword [ebx], 0x30
push eax
mov ebx, esp
mov dword [esi + 0x22c], ebx
mov dword [ebx], 0x450090
push eax
mov ebx, esp
mov dword [esi + 0x224], ebx
mov dword [ebx], 0x29
push eax
mov ebx, esp
mov dword [esi + 0x228], ebx
mov dword [ebx], 0x450090
push eax
mov ebx, esp
mov dword [esi + 0x218], ebx
mov dword [ebx], 0x32
push eax
mov ebx, esp
mov dword [esi + 0x220], ebx
mov dword [ebx], 0x450294
push eax
mov dword [esi + 0x214], esp
push eax
mov ebx, esp
mov dword [esi + 0x21c], ebx
mov dword [ebx], 0x450090
push eax
mov ebx, esp
mov dword [esi + 0x210], ebx
mov dword [ebx], 0x34
push eax
mov ebx, esp
mov dword [esi + 0x20c], ebx
mov dword [ebx], 0x450090
push eax
mov ebx, esp
mov dword [esi + 0x208], ebx
mov dword [ebx], 0x35
push eax
mov ebx, esp
mov dword [esi + 0x284], ebx
mov dword [ebx], 0x450090
push eax
mov ebx, esp
mov dword [esi + 0x274], ebx
mov dword [ebx], 0x36
push eax
mov ebx, esp
mov dword [esi + 0x27c], ebx
mov dword [ebx], 0x45029c
push eax
mov dword [esi + 0x268], esp
push eax
mov ebx, esp
mov dword [esi + 0x278], ebx
mov dword [ebx], 0x450090
push eax
mov ebx, esp
mov dword [esi + 0x264], ebx
mov dword [ebx], 0x38
push eax
mov ebx, esp
mov dword [esi + 0x280], ebx
mov dword [ebx], 0x450090
push eax
mov ebx, esp
mov dword [esi + 0x270], ebx
mov dword [ebx], 0x39
push eax
mov ecx, esp
mov dword [esi + 0x19c], ecx
mov dword [ecx], 0x450090
push eax
mov ecx, esp
mov dword [esi + 0x198], ecx
mov dword [ecx], 0x1f
push eax
mov ebx, esp
mov dword [ebx], 0x450090
push eax
mov ecx, esp
mov dword [esi + 0x1a4], ecx
mov dword [ecx], 0x22
jmp dword [esi + 0x1b0]