Function at 0x423630
Capabilities:
Authenticate hmac

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x2f8
mov esi, esp
mov edi, dword [ebp + 0xc]
lea eax, [0x44b800]
mov dword [esi + 0x284], eax
mov al, byte [esi + 0xe4]
mov byte [esi + 0xfc], al
mov byte [esi + 0xe8], 0xeb
mov byte [esi + 0xe9], 0x41
mov byte [esi + 0xea], 0xe7
mov byte [esi + 0xeb], 0x43
mov byte [esi + 0xec], 0xdd
mov byte [esi + 0xed], 0x45
mov byte [esi + 0xee], 0x12
mov byte [esi + 0xef], 0x47
mov byte [esi + 0xf0], 0x26
mov byte [esi + 0xf1], 0x49
mov byte [esi + 0xf2], 0xee
mov byte [esi + 0xf3], 0x4b
mov byte [esi + 0xf4], 0xee
mov byte [esi + 0xf5], 0x4d
mov byte [esi + 0xf6], 0x4e
mov byte [esi + 0xf7], 0x4f
mov eax, 0x10
mov byte [esi + eax + 0xe8], 0
add eax, 1
cmp eax, 0x14
jne 0x4236d1
xor eax, eax
cmp eax, 0x14
jae 0x42372b
movzx edx, byte [esi + eax + 0xe8]
mov ecx, eax
add ecx, 0x67bc38f0
mov edi, edx
xor edi, 0xffffffff
and ecx, edi
mov edi, 0xf
sub edi, eax
and edi, edx
or ecx, edi
mov edi, dword [ebp + 0xc]
add ecx, 0xf952e34f
mov edx, ecx
shl edx, 1
and edx, 2
xor ecx, 1
add ecx, edx
mov byte [esi + eax + 0xe8], cl
add eax, 1
jmp 0x4236e3
lea eax, [esi + 0xe8]
sub esp, 0xc
mov ecx, dword [ebp + 8]
mov dword [esp], ecx
mov dword [esp + 4], edi
mov dword [esp + 8], eax
call fcn.0041c7f0
add esp, 0xc
and al, 1
movzx ebx, al
mov al, byte [esi + 0xe0]
mov byte [esi + 0x100], al
mov byte [esi + 0x38], 0x7f
mov byte [esi + 0x39], 0x99
mov byte [esi + 0x3a], 0x7b
mov byte [esi + 0x3b], 0x9f
mov byte [esi + 0x3c], 0x6a
mov byte [esi + 0x3d], 0x9d
mov byte [esi + 0x3e], 0x56
mov byte [esi + 0x3f], 0xa3
mov byte [esi + 0x40], 0x99
mov byte [esi + 0x41], 0xa1
mov byte [esi + 0x42], 0x94
mov byte [esi + 0x43], 0xa7
mov byte [esi + 0x44], 0x40
mov byte [esi + 0x45], 0xa5
mov byte [esi + 0x46], 0x4c
mov byte [esi + 0x47], 0xab
mov byte [esi + 0x48], 0xa8
mov byte [esi + 0x49], 0xa9
mov eax, 0x12
mov byte [esi + eax + 0x38], 0
add eax, 1
cmp eax, 0x14
jne 0x4237a8
xor eax, eax
cmp eax, 0x14
jae 0x4237f5
movzx edx, byte [esi + eax + 0x38]
mov edi, eax
xor edi, 0x2d07f126
mov ecx, eax
shl ecx, 1
and ecx, 0xa5f01db2
sub ecx, edi
mov edi, dword [ebp + 0xc]
xor ecx, edx
mov edx, ecx
shl edx, 1
and edx, 0x7a
xor ecx, 0xbd
add ecx, edx
add cl, 1
mov byte [esi + eax + 0x38], cl
add eax, 1
jmp 0x4237b7
lea eax, [esi + 0x38]
sub esp, 0xc
mov ecx, dword [ebp + 8]
mov dword [esp], ecx
mov dword [esp + 4], edi
mov dword [esp + 8], eax
call fcn.0041c7f0
add esp, 0xc
and al, 1
movzx eax, al
or ebx, eax
cmp ebx, 0
setne bl
mov al, byte [esi + 0xdc]
mov byte [esi + 0x104], al
mov byte [esi + 0x4c], 0x36
mov byte [esi + 0x4d], 0x8b
mov byte [esi + 0x4e], 0x3b
mov byte [esi + 0x4f], 0x89
mov byte [esi + 0x50], 6
mov byte [esi + 0x51], 0x87
mov byte [esi + 0x52], 0x35
mov byte [esi + 0x53], 0x85
mov byte [esi + 0x54], 0x3c
mov byte [esi + 0x55], 0x83
mov byte [esi + 0x56], 0x35
mov byte [esi + 0x57], 0x81
mov byte [esi + 0x58], 0xd
mov byte [esi + 0x59], 0x9f
mov byte [esi + 0x5a], 0x12
mov byte [esi + 0x5b], 0x9d
mov byte [esi + 0x5c], 0x2d
mov byte [esi + 0x5d], 0x9b
mov byte [esi + 0x5e], 0x14
mov byte [esi + 0x5f], 0x99
mov byte [esi + 0x60], 0x1f
mov byte [esi + 0x61], 0x97
mov byte [esi + 0x62], 0xe4
mov byte [esi + 0x63], 0x95
mov byte [esi + 0x64], 0x19
mov byte [esi + 0x65], 0x93
mov byte [esi + 0x66], 0x1d
mov byte [esi + 0x67], 0x91
mov byte [esi + 0x68], 0x24
mov byte [esi + 0x69], 0xef
mov byte [esi + 0x6a], 0x59
mov byte [esi + 0x6b], 0xed
mov byte [esi + 0x6c], 0x60
mov byte [esi + 0x6d], 0xeb
mov byte [esi + 0x6e], 0x51
mov byte [esi + 0x6f], 0xe9
mov byte [esi + 0x70], 0xe8
mov byte [esi + 0x71], 0xe7
mov eax, 0x26
mov byte [esi + eax + 0x4c], 0
add eax, 1
cmp eax, 0x28
jne 0x4238c7
xor eax, eax
cmp eax, 0x28
jae 0x42391e
movzx edx, byte [esi + eax + 0x4c]
mov ecx, eax
add ecx, 0x1c4ecea3
mov edi, edx
xor edi, 0xffffffff
and ecx, edi
mov edi, 0x5c
sub edi, eax
and edi, edx
or ecx, edi
mov edx, ecx
shl edx, 1
and edx, 2
mov edi, ecx
shl edi, 1
and edi, 2
add ecx, 0xd1
sub ecx, edi
mov edi, dword [ebp + 0xc]
add ecx, edx
mov byte [esi + eax + 0x4c], cl
add eax, 1
jmp 0x4238d6
lea eax, [esi + 0x4c]
sub esp, 0xc
mov ecx, dword [ebp + 8]
mov dword [esp], ecx
mov dword [esp + 4], edi
mov dword [esp + 8], eax
call fcn.0041c7f0
add esp, 0xc
and al, 1
movzx eax, al
and bl, 1
movzx ecx, bl
or ecx, eax
cmp ecx, 0
setne byte [esi + 0x2b]
mov al, byte [esi + 0xd8]
mov byte [esi + 0x108], al
mov byte [esi + 0x130], 0x69
mov byte [esi + 0x131], 0xcf
mov byte [esi + 0x132], 0x7f
mov byte [esi + 0x133], 0xd1
mov byte [esi + 0x134], 0x61
mov byte [esi + 0x135], 0xd3
mov byte [esi + 0x136], 0x7f
mov byte [esi + 0x137], 0xd5
mov byte [esi + 0x138], 0x7f
mov byte [esi + 0x139], 0xd7
mov byte [esi + 0x13a], 0x71
mov byte [esi + 0x13b], 0xd9
mov byte [esi + 0x13c], 0x6d
mov byte [esi + 0x13d], 0xdb
mov byte [esi + 0x13e], 0x34
mov byte [esi + 0x13f], 0xdd
mov byte [esi + 0x140], 0x69
mov byte [esi + 0x141], 0xdf
mov byte [esi + 0x142], 0x6d
mov byte [esi + 0x143], 0xa1
mov byte [esi + 0x144], 0xc
mov byte [esi + 0x145], 0xa3
mov byte [esi + 0x146], 9
mov byte [esi + 0x147], 0xa5
mov byte [esi + 0x148], 0x10
mov byte [esi + 0x149], 0xa7
mov byte [esi + 0x14a], 1
mov byte [esi + 0x14b], 0xa9
mov byte [esi + 0x14c], 0xa8
mov byte [esi + 0x14d], 0xab
mov eax, 0x1e
mov byte [esi + eax + 0x130], 0
add eax, 1
cmp eax, 0x24
jne 0x423a31
xor eax, eax
cmp eax, 0x24
jae 0x423a9b
movzx ebx, byte [esi + eax + 0x130]
mov edx, eax
add edx, 0xad
mov ecx, ebx
add ecx, 1
mov edi, ebx
xor edi, 0xffffffff
or edx, edi
mov edi, dword [ebp + 0xc]
add edx, ecx
shl edx, 1
mov ecx, eax
add ecx, 0xc429dfad
add ecx, ebx
sub ecx, edx
add ecx, 0x2b2ea19e
mov edx, ecx
xor edx, 0xd1
shl ecx, 1
and ecx, 0x5c
sub ecx, edx
add cl, 0xd2
mov byte [esi + eax + 0x130], cl
add eax, 1
jmp 0x423a43
lea eax, [esi + 0x130]
sub esp, 0xc
mov ecx, dword [ebp + 8]
mov dword [esp], ecx
mov dword [esp + 4], edi
mov dword [esp + 8], eax
call fcn.0041c7f0
add esp, 0xc
and al, 1
movzx eax, al
mov cl, byte [esi + 0x2b]
and cl, 1
movzx ecx, cl
mov edx, ecx
and edx, eax
xor ecx, eax
or edx, ecx
cmp edx, 0
setne bl
mov al, byte [esi + 0xb8]
mov byte [esi + 0x10c], al
mov byte [esi + 0xbc], 0xf8
mov byte [esi + 0xbd], 0x5b
mov byte [esi + 0xbe], 0xeb
mov byte [esi + 0xbf], 0x59
mov byte [esi + 0xc0], 0xe1
mov byte [esi + 0xc1], 0x5f
mov byte [esi + 0xc2], 0xe1
mov byte [esi + 0xc3], 0x5d
mov byte [esi + 0xc4], 0xee
mov byte [esi + 0xc5], 0x53
mov byte [esi + 0xc6], 0xe7
mov byte [esi + 0xc7], 0x51
mov byte [esi + 0xc8], 0x22
mov byte [esi + 0xc9], 0x57
mov byte [esi + 0xca], 0xe8
mov byte [esi + 0xcb], 0x55
mov byte [esi + 0xcc], 0xe1
mov byte [esi + 0xcd], 0xab
mov byte [esi + 0xce], 0x1b
mov byte [esi + 0xcf], 0xa9
mov byte [esi + 0xd0], 0x1a
mov byte [esi + 0xd1], 0xaf
mov byte [esi + 0xd2], 0xae
mov byte [esi + 0xd3], 0xad
mov eax, 0x18
mov byte [esi + eax + 0xbc], 0
add eax, 1
cmp eax, 0x1a
jne 0x423b8f
xor eax, eax
cmp eax, 0x1a
jae 0x423bc3
mov cl, byte [esi + eax + 0xbc]
mov dl, al
add dl, 0x6f
xor dl, cl
add dl, 0xd5
mov byte [esi + eax + 0xbc], dl
add eax, 1
jmp 0x423ba1
lea eax, [esi + 0xbc]
sub esp, 0xc
mov ecx, dword [ebp + 8]
mov dword [esp], ecx
mov dword [esp + 4], edi
mov dword [esp + 8], eax
call fcn.0041c7f0
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 + 0x94]
mov byte [esi + 0x110], al
mov byte [esi + 0x98], 0xa8
mov byte [esi + 0x99], 0x39
mov byte [esi + 0x9a], 0x92
mov byte [esi + 0x9b], 0x3f
mov byte [esi + 0x9c], 0x9d
mov byte [esi + 0x9d], 0x3d
mov byte [esi + 0x9e], 0x85
mov byte [esi + 0x9f], 0x23
mov byte [esi + 0xa0], 0x85
mov byte [esi + 0xa1], 0x21
mov byte [esi + 0xa2], 0xb1
mov byte [esi + 0xa3], 0x27
mov byte [esi + 0xa4], 0x76
mov byte [esi + 0xa5], 0x25
mov byte [esi + 0xa6], 0xbd
mov byte [esi + 0xa7], 0x2b
mov byte [esi + 0xa8], 0xb9
mov byte [esi + 0xa9], 0x29
mov byte [esi + 0xaa], 0x82
mov byte [esi + 0xab], 0x2f
mov byte [esi + 0xac], 0x85
mov byte [esi + 0xad], 0x2d
mov byte [esi + 0xae], 0x86
mov byte [esi + 0xaf], 0x13
mov byte [esi + 0xb0], 0xb5
mov byte [esi + 0xb1], 0x11
mov byte [esi + 0xb2], 0x16
mov byte [esi + 0xb3], 0x17
mov eax, 0x1c
mov byte [esi + eax + 0x98], 0
add eax, 1
cmp eax, 0x1f
jne 0x423cca
xor eax, eax
cmp eax, 0x1f
jae 0x423d75
mov dword [esi + 4], ebx
movzx ebx, byte [esi + eax + 0x98]
mov ecx, eax
add ecx, 0xa
mov edx, ecx
mov ecx, ebx
and ecx, 0x82
xor ecx, 0x82
mov edi, ebx
and edi, 0x82
xor edi, 0x40924782
or ecx, edi
mov edi, ebx
xor edi, 0x40924782
or ebx, 0x7d
and ebx, edi
mov edi, 0x75
sub edi, eax
and edi, 0x82
and edx, 0x7d
mov dword [esi + 0x154], edx
mov dword [esi + 0x168], eax
mov eax, ebx
xor eax, 0xffffffff
mov edx, ecx
and edx, eax
mov eax, ecx
xor eax, ebx
mov ebx, dword [esi + 4]
add ecx, eax
mov eax, dword [esi + 0x168]
sub ecx, edx
or edi, dword [esi + 0x154]
xor ecx, edi
mov edi, dword [ebp + 0xc]
add cl, 0x4e
mov byte [esi + eax + 0x98], cl
add eax, 1
jmp 0x423cdc
sub esp, 0xc
lea eax, [esi + 0x98]
mov dword [esp + 8], eax
mov dword [esp + 4], edi
mov eax, dword [ebp + 8]
mov dword [esp], eax
call fcn.0041c7f0
add esp, 0xc
or bl, al
and bl, 1
xor eax, eax
cmp dword [ebp + 0x10], 0
sete al
mov dword [esi + 0x280], eax
mov eax, dword [esi + 0x284]
mov ecx, dword [esi + 0x280]
mov eax, dword [eax + ecx*4]
mov dword [esi + 0x188], eax
push eax
mov eax, esp
mov dword [esi + 0x18c], eax
mov dword [eax], 0x44b6c0
push eax
mov eax, esp
mov dword [esi + 0x184], eax
mov dword [eax], 0x30
push eax
mov eax, esp
mov dword [esi + 0x1b4], eax
mov dword [eax], 0x44b808
push eax
mov dword [esi + 0x1ac], esp
push eax
mov eax, esp
mov dword [esi + 0x1b0], eax
mov dword [eax], 0x44b6c0
push eax
mov eax, esp
mov dword [esi + 0x1a4], eax
mov dword [eax], 0x15
push eax
mov eax, esp
mov dword [esi + 0x1a8], eax
mov dword [eax], 0x44b6c0
push eax
mov eax, esp
mov dword [esi + 0x198], eax
mov dword [eax], 0x16
push eax
mov eax, esp
mov dword [esi + 0x194], eax
mov dword [eax], 0x44b6c0
push eax
mov eax, esp
mov dword [esi + 0x190], eax
mov dword [eax], 0x17
push eax
mov eax, esp
mov dword [esi + 0x1a0], eax
mov dword [eax], 0x44b810
push eax
mov dword [esi + 0x19c], esp
push eax
mov eax, esp
mov dword [esi + 0x1c4], eax
mov dword [eax], 0x44b818
push eax
mov dword [esi + 0x1bc], esp
push eax
mov eax, esp
mov dword [esi + 0x1c0], eax
mov dword [eax], 0x44b820
push eax
mov dword [esi + 0x1b8], esp
push eax
mov eax, esp
mov dword [esi + 0x1dc], eax
mov dword [eax], 0x44b828
push eax
mov dword [esi + 0x1d4], esp
push eax
mov eax, esp
mov dword [esi + 0x1d8], eax
mov dword [eax], 0x44b830
push eax
mov dword [esi + 0x1cc], esp
push eax
mov eax, esp
mov dword [esi + 0x1d0], eax
mov dword [eax], 0x44b6c0
push eax
mov eax, esp
mov dword [esi + 0x1c8], eax
mov dword [eax], 0x1d
push eax
mov eax, esp
mov dword [esi + 0x264], eax
mov dword [eax], 0x44b838
push eax
mov dword [esi + 0x24c], esp
push eax
mov eax, esp
mov dword [esi + 0x244], eax
mov dword [eax], 0x44b6c0
push eax
mov eax, esp
mov dword [esi + 0x240], eax
mov dword [eax], 0x25
push eax
mov eax, esp
mov dword [esi + 0x23c], eax
mov dword [eax], 0x44b840
push eax
mov dword [esi + 0x238], esp
push eax
mov eax, esp
mov dword [esi + 0x230], eax
mov dword [eax], 0x44b6c0
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], 0x44b848
push eax
mov dword [esi + 0x220], esp
push eax
mov eax, esp
mov dword [esi + 0x21c], eax
mov dword [eax], 0x44b6c0
push eax
mov eax, esp
mov dword [esi + 0x218], eax
mov dword [eax], 0x23
push eax
mov eax, esp
mov dword [esi + 0x214], eax
mov dword [eax], 0x44b6c0
push eax
mov eax, esp
mov dword [esi + 0x210], eax
mov dword [eax], 0x24
push eax
mov eax, esp
mov dword [esi + 0x20c], eax
mov dword [eax], 0x44b6c0
push eax
mov eax, esp
mov dword [esi + 0x204], eax
mov dword [eax], 0x1d
push eax
mov eax, esp
mov dword [esi + 0x208], eax
mov dword [eax], 0x44b6c0
push eax
mov eax, esp
mov dword [esi + 0x1f8], eax
mov dword [eax], 0x26
push eax
mov eax, esp
mov dword [esi + 0x200], eax
mov dword [eax], 0x44b850
push eax
mov dword [esi + 0x1f4], esp
push eax
mov eax, esp
mov dword [esi + 0x1fc], eax
mov dword [eax], 0x44b6c0
push eax
mov eax, esp
mov dword [esi + 0x1f0], eax
mov dword [eax], 0x28
push eax
mov eax, esp
mov dword [esi + 0x1ec], eax
mov dword [eax], 0x44b6c0
push eax
mov eax, esp
mov dword [esi + 0x1e8], eax
mov dword [eax], 0x29
push eax
mov eax, esp
mov dword [esi + 0x1e4], eax
mov dword [eax], 0x44b6c0
push eax
mov eax, esp
mov dword [esi + 0x1e0], eax
mov dword [eax], 0x2a
push eax
mov eax, esp
mov dword [esi + 0x26c], eax
mov dword [eax], 0x44b6c0
push eax
mov eax, esp
mov dword [esi + 0x258], eax
mov dword [eax], 0x2b
push eax
mov eax, esp
mov dword [esi + 0x260], eax
mov dword [eax], 0x44b858
push eax
mov dword [esi + 0x250], esp
push eax
mov eax, esp
mov dword [esi + 0x254], eax
mov dword [eax], 0x44b860
push eax
mov dword [esi + 0x248], esp
push eax
mov eax, esp
mov dword [esi + 0x27c], eax
mov dword [eax], 0x44b868
push eax
mov dword [esi + 0x274], esp
push eax
mov eax, esp
mov dword [esi + 0x270], eax
mov dword [eax], 0x44b6c0
push eax
mov eax, esp
mov dword [esi + 0x25c], eax
mov dword [eax], 0x2f
push eax
mov eax, esp
mov dword [eax], 0x44b6c0
push eax
mov edx, esp
mov dword [esi + 0x268], edx
mov dword [edx], 0x30
push eax
mov ecx, esp
mov dword [esi + 0x180], ecx
mov dword [ecx], 0x44b6c0
push eax
mov ecx, esp
mov dword [esi + 0x17c], ecx
mov dword [ecx], 0x1a
push eax
mov edx, esp
mov dword [edx], 0x44b6c0
push eax
mov ecx, esp
mov dword [esi + 0x22c], ecx
mov dword [ecx], 0x2d
jmp dword [esi + 0x188]