Function at 0x4b01a0
Capabilities:
Authenticate hmac

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x32c
call fcn.004c03f0
mov eax, dword [0x6f33d4]
xor eax, ebp
mov dword [ebp - 0xc], eax
push ebx
mov dword [ebp - 0x248], 0x40
mov dword [ebp - 0x260], 0x28
mov dword [ebp - 0x270], 0
mov dword [ebp - 0x1c0], 8
mov byte [ebp - 0x249], 1
cmp dword [ebp + 0x20], 0x100000
sbb eax, eax
neg eax
jne 0x4b01fb
xor eax, eax
jmp 0x4b0d9c
mov ecx, dword [ebp + 8]
push ecx
call fcn.00513550
add esp, 4
push eax
call fcn.00513240
add esp, 4
mov dword [ebp - 0x328], eax
cmp dword [ebp - 0x328], 0x2a0
jg 0x4b024d
cmp dword [ebp - 0x328], 0x2a0
je 0x4b034a
cmp dword [ebp - 0x328], 4
je 0x4b0282
cmp dword [ebp - 0x328], 0x40
je 0x4b02d0
jmp 0x4b0423
cmp dword [ebp - 0x328], 0x2a1
je 0x4b0387
cmp dword [ebp - 0x328], 0x2a2
je 0x4b03d5
cmp dword [ebp - 0x328], 0x2a3
je 0x4b030d
jmp 0x4b0423
lea edx, [ebp - 0xe8]
push edx
call fcn.0050c330
add esp, 4
test eax, eax
jg 0x4b029c
xor eax, eax
jmp 0x4b0d9c
mov dword [ebp - 0x290], 0x4b0ee0
mov dword [ebp - 0x268], 0x50bfb0
mov dword [ebp - 0x130], 0x10
mov dword [ebp - 0x260], 0x30
mov byte [ebp - 0x249], 0
jmp 0x4b0439
lea eax, [ebp - 0xe8]
push eax
call fcn.005478d0
add esp, 4
test eax, eax
jg 0x4b02ea
xor eax, eax
jmp 0x4b0d9c
mov dword [ebp - 0x290], 0x4b1060
mov dword [ebp - 0x268], 0x5474e0
mov dword [ebp - 0x130], 0x14
jmp 0x4b0439
lea ecx, [ebp - 0xe8]
push ecx
call fcn.0050dfc0
add esp, 4
test eax, eax
jg 0x4b0327
xor eax, eax
jmp 0x4b0d9c
mov dword [ebp - 0x290], 0x4b12b0
mov dword [ebp - 0x268], 0x50e3a0
mov dword [ebp - 0x130], 0x1c
jmp 0x4b0439
lea edx, [ebp - 0xe8]
push edx
call fcn.0050e040
add esp, 4
test eax, eax
jg 0x4b0364
xor eax, eax
jmp 0x4b0d9c
mov dword [ebp - 0x290], 0x4b12b0
mov dword [ebp - 0x268], 0x50e3a0
mov dword [ebp - 0x130], 0x20
jmp 0x4b0439
lea eax, [ebp - 0xe8]
push eax
call fcn.00546740
add esp, 4
test eax, eax
jg 0x4b03a1
xor eax, eax
jmp 0x4b0d9c
mov dword [ebp - 0x290], 0x4b1370
mov dword [ebp - 0x268], 0x547200
mov dword [ebp - 0x130], 0x30
mov dword [ebp - 0x248], 0x80
mov dword [ebp - 0x1c0], 0x10
jmp 0x4b0439
lea ecx, [ebp - 0xe8]
push ecx
call fcn.00546810
add esp, 4
test eax, eax
jg 0x4b03ef
xor eax, eax
jmp 0x4b0d9c
mov dword [ebp - 0x290], 0x4b1370
mov dword [ebp - 0x268], 0x547200
mov dword [ebp - 0x130], 0x40
mov dword [ebp - 0x248], 0x80
mov dword [ebp - 0x1c0], 0x10
jmp 0x4b0439
cmp dword [ebp + 0x10], 0
je 0x4b0432
mov edx, dword [ebp + 0x10]
mov dword [edx], 0
xor eax, eax
jmp 0x4b0d9c
mov eax, 0x10
cmp eax, dword [ebp - 0x1c0]
sbb ecx, ecx
add ecx, 1
je 0x4b046f
mov edx, 0x80
cmp edx, dword [ebp - 0x248]
sbb eax, eax
add eax, 1
je 0x4b046f
mov ecx, 0x40
cmp ecx, dword [ebp - 0x130]
sbb edx, edx
add edx, 1
jne 0x4b0476
xor eax, eax
jmp 0x4b0d9c
mov dword [ebp - 0x25c], 0xd
movsx eax, byte [ebp + 0x2c]
test eax, eax
je 0x4b049b
mov ecx, dword [ebp - 0x260]
mov edx, dword [ebp + 0x28]
lea eax, [edx + ecx + 0xb]
mov dword [ebp - 0x25c], eax
movsx ecx, byte [ebp + 0x2c]
test ecx, ecx
je 0x4b04af
mov dword [ebp - 0x32c], 2
jmp 0x4b04d3
mov edx, dword [ebp - 0x248]
mov eax, dword [ebp - 0x130]
lea eax, [eax + edx + 0xff]
xor edx, edx
div dword [ebp - 0x248]
add eax, 1
mov dword [ebp - 0x32c], eax
mov ecx, dword [ebp - 0x32c]
mov dword [ebp - 0x1bc], ecx
mov edx, dword [ebp + 0x20]
add edx, dword [ebp - 0x25c]
mov dword [ebp - 0x258], edx
mov eax, dword [ebp - 0x258]
sub eax, dword [ebp - 0x130]
sub eax, 1
mov dword [ebp - 8], eax
mov ecx, dword [ebp - 0x1c0]
mov edx, dword [ebp - 8]
lea eax, [edx + ecx + 1]
mov ecx, dword [ebp - 0x248]
lea eax, [eax + ecx - 1]
xor edx, edx
div dword [ebp - 0x248]
mov dword [ebp - 0x254], eax
mov dword [ebp - 0x274], 0
mov dword [ebp - 0x26c], 0
mov edx, dword [ebp + 0x1c]
add edx, dword [ebp - 0x25c]
sub edx, dword [ebp - 0x130]
mov dword [ebp - 4], edx
mov eax, dword [ebp - 4]
xor edx, edx
div dword [ebp - 0x248]
mov dword [ebp - 0x28c], edx
mov eax, dword [ebp - 4]
xor edx, edx
div dword [ebp - 0x248]
mov dword [ebp - 0x12c], eax
mov eax, dword [ebp - 4]
add eax, dword [ebp - 0x1c0]
xor edx, edx
div dword [ebp - 0x248]
mov dword [ebp - 0x288], eax
movsx eax, byte [ebp + 0x2c]
neg eax
sbb eax, eax
neg eax
add eax, dword [ebp - 0x1bc]
cmp dword [ebp - 0x254], eax
jbe 0x4b05c1
mov ecx, dword [ebp - 0x254]
sub ecx, dword [ebp - 0x1bc]
mov dword [ebp - 0x274], ecx
mov edx, dword [ebp - 0x248]
imul edx, dword [ebp - 0x274]
mov dword [ebp - 0x26c], edx
mov eax, dword [ebp - 4]
shl eax, 3
mov dword [ebp - 0x250], eax
movsx ecx, byte [ebp + 0x2c]
test ecx, ecx
jne 0x4b0693
mov edx, dword [ebp - 0x248]
mov eax, dword [ebp - 0x250]
lea ecx, [eax + edx*8]
mov dword [ebp - 0x250], ecx
mov edx, dword [ebp - 0x248]
push edx
push 0
lea eax, [ebp - 0x240]
push eax
call fcn.004bee40
add esp, 0xc
mov ecx, 0x80
cmp ecx, dword [ebp + 0x28]
sbb edx, edx
add edx, 1
jne 0x4b061c
xor eax, eax
jmp 0x4b0d9c
mov eax, dword [ebp + 0x28]
push eax
mov ecx, dword [ebp + 0x24]
push ecx
lea edx, [ebp - 0x240]
push edx
call fcn.004bd990
add esp, 0xc
mov dword [ebp - 0x134], 0
jmp 0x4b064e
mov eax, dword [ebp - 0x134]
add eax, 1
mov dword [ebp - 0x134], eax
mov ecx, dword [ebp - 0x134]
cmp ecx, dword [ebp - 0x248]
jae 0x4b067c
mov edx, dword [ebp - 0x134]
movzx eax, byte [ebp + edx - 0x240]
xor eax, 0x36
mov ecx, dword [ebp - 0x134]
mov byte [ebp + ecx - 0x240], al
jmp 0x4b063f
lea edx, [ebp - 0x240]
push edx
lea eax, [ebp - 0xe8]
push eax
call dword [ebp - 0x268]
add esp, 8
movsx ecx, byte [ebp - 0x249]
test ecx, ecx
je 0x4b0710
mov edx, dword [ebp - 0x1c0]
sub edx, 4
push edx
push 0
lea eax, [ebp - 0x284]
push eax
call fcn.004bee40
add esp, 0xc
mov ecx, dword [ebp - 0x250]
shr ecx, 0x18
mov edx, dword [ebp - 0x1c0]
mov byte [ebp + edx - 0x288], cl
mov eax, dword [ebp - 0x250]
shr eax, 0x10
mov ecx, dword [ebp - 0x1c0]
mov byte [ebp + ecx - 0x287], al
mov edx, dword [ebp - 0x250]
shr edx, 8
mov eax, dword [ebp - 0x1c0]
mov byte [ebp + eax - 0x286], dl
mov ecx, dword [ebp - 0x1c0]
mov dl, byte [ebp - 0x250]
mov byte [ebp + ecx - 0x285], dl
jmp 0x4b077d
mov eax, dword [ebp - 0x1c0]
push eax
push 0
lea ecx, [ebp - 0x284]
push ecx
call fcn.004bee40
add esp, 0xc
mov edx, dword [ebp - 0x250]
shr edx, 0x18
mov eax, dword [ebp - 0x1c0]
mov byte [ebp + eax - 0x289], dl
mov ecx, dword [ebp - 0x250]
shr ecx, 0x10
mov edx, dword [ebp - 0x1c0]
mov byte [ebp + edx - 0x28a], cl
mov eax, dword [ebp - 0x250]
shr eax, 8
mov ecx, dword [ebp - 0x1c0]
mov byte [ebp + ecx - 0x28b], al
mov edx, dword [ebp - 0x1c0]
mov al, byte [ebp - 0x250]
mov byte [ebp + edx - 0x28c], al
cmp dword [ebp - 0x26c], 0
jbe 0x4b0932
movsx ecx, byte [ebp + 0x2c]
test ecx, ecx
je 0x4b0891
mov edx, dword [ebp - 0x25c]
cmp edx, dword [ebp - 0x248]
ja 0x4b07ab
xor eax, eax
jmp 0x4b0d9c
mov eax, dword [ebp - 0x25c]
sub eax, dword [ebp - 0x248]
mov dword [ebp - 0x298], eax
mov ecx, dword [ebp + 0x14]
push ecx
lea edx, [ebp - 0xe8]
push edx
call dword [ebp - 0x268]
add esp, 8
mov eax, dword [ebp - 0x298]
push eax
mov ecx, dword [ebp + 0x14]
add ecx, dword [ebp - 0x248]
push ecx
lea edx, [ebp - 0x1b8]
push edx
call fcn.004bd990
add esp, 0xc
mov eax, dword [ebp - 0x248]
sub eax, dword [ebp - 0x298]
push eax
mov ecx, dword [ebp + 0x18]
push ecx
mov edx, dword [ebp - 0x298]
lea eax, [ebp + edx - 0x1b8]
push eax
call fcn.004bd990
add esp, 0xc
lea ecx, [ebp - 0x1b8]
push ecx
lea edx, [ebp - 0xe8]
push edx
call dword [ebp - 0x268]
add esp, 8
mov dword [ebp - 0x134], 1
jmp 0x4b084a
mov eax, dword [ebp - 0x134]
add eax, 1
mov dword [ebp - 0x134], eax
mov eax, dword [ebp - 0x26c]
xor edx, edx
div dword [ebp - 0x248]
sub eax, 1
cmp dword [ebp - 0x134], eax
jae 0x4b088c
mov ecx, dword [ebp - 0x248]
imul ecx, dword [ebp - 0x134]
add ecx, dword [ebp + 0x18]
sub ecx, dword [ebp - 0x298]
push ecx
lea edx, [ebp - 0xe8]
push edx
call dword [ebp - 0x268]
add esp, 8
jmp 0x4b083b
jmp 0x4b0932
push 0xd
mov eax, dword [ebp + 0x14]
push eax
lea ecx, [ebp - 0x1b8]
push ecx
call fcn.004bd990
add esp, 0xc
mov edx, dword [ebp - 0x248]
sub edx, 0xd
push edx
mov eax, dword [ebp + 0x18]
push eax
lea ecx, [ebp - 0x1ab]
push ecx
call fcn.004bd990
add esp, 0xc
lea edx, [ebp - 0x1b8]
push edx
lea eax, [ebp - 0xe8]
push eax
call dword [ebp - 0x268]
add esp, 8
mov dword [ebp - 0x134], 1
jmp 0x4b08f5
mov ecx, dword [ebp - 0x134]
add ecx, 1
mov dword [ebp - 0x134], ecx
mov eax, dword [ebp - 0x26c]
xor edx, edx
div dword [ebp - 0x248]
cmp dword [ebp - 0x134], eax
jae 0x4b0932
mov edx, dword [ebp - 0x248]
imul edx, dword [ebp - 0x134]
mov eax, dword [ebp + 0x18]
lea ecx, [eax + edx - 0xd]
push ecx
lea edx, [ebp - 0xe8]
push edx
call dword [ebp - 0x268]
add esp, 8
jmp 0x4b08e6
push 0x40
push 0
lea eax, [ebp - 0x128]
push eax
call fcn.004bee40
add esp, 0xc
mov ecx, dword [ebp - 0x274]
mov dword [ebp - 0x134], ecx
jmp 0x4b0962
mov edx, dword [ebp - 0x134]
add edx, 1
mov dword [ebp - 0x134], edx
mov eax, dword [ebp - 0x274]
add eax, dword [ebp - 0x1bc]
cmp dword [ebp - 0x134], eax
ja 0x4b0be7
mov ecx, dword [ebp - 0x12c]
push ecx
mov edx, dword [ebp - 0x134]
push edx
call fcn.004b0e40
add esp, 8
mov byte [ebp - 0x29a], al
mov eax, dword [ebp - 0x288]
push eax
mov ecx, dword [ebp - 0x134]
push ecx
call fcn.004b0e40
add esp, 8
mov byte [ebp - 0x299], al
mov dword [ebp - 0x294], 0
jmp 0x4b09cd
mov edx, dword [ebp - 0x294]
add edx, 1
mov dword [ebp - 0x294], edx
mov eax, dword [ebp - 0x294]
cmp eax, dword [ebp - 0x248]
jae 0x4b0b55
mov byte [ebp - 0x322], 0
mov ecx, dword [ebp - 0x26c]
cmp ecx, dword [ebp - 0x25c]
jae 0x4b0a07
mov edx, dword [ebp + 0x14]
add edx, dword [ebp - 0x26c]
mov al, byte [edx]
mov byte [ebp - 0x322], al
jmp 0x4b0a30
mov ecx, dword [ebp + 0x20]
add ecx, dword [ebp - 0x25c]
cmp dword [ebp - 0x26c], ecx
jae 0x4b0a30
mov edx, dword [ebp - 0x26c]
sub edx, dword [ebp - 0x25c]
mov eax, dword [ebp + 0x18]
mov cl, byte [eax + edx]
mov byte [ebp - 0x322], cl
mov edx, dword [ebp - 0x26c]
add edx, 1
mov dword [ebp - 0x26c], edx
movzx ebx, byte [ebp - 0x29a]
mov eax, dword [ebp - 0x28c]
push eax
mov ecx, dword [ebp - 0x294]
push ecx
call fcn.004b0db0
add esp, 8
movzx edx, al
and ebx, edx
mov byte [ebp - 0x321], bl
movzx ebx, byte [ebp - 0x29a]
mov eax, dword [ebp - 0x28c]
add eax, 1
push eax
mov ecx, dword [ebp - 0x294]
push ecx
call fcn.004b0db0
add esp, 8
movzx edx, al
and ebx, edx
mov byte [ebp - 0x323], bl
movzx eax, byte [ebp - 0x322]
push eax
push 0x80
movzx ecx, byte [ebp - 0x321]
push ecx
call fcn.004b0ea0
add esp, 0xc
mov byte [ebp - 0x322], al
movzx edx, byte [ebp - 0x322]
movzx eax, byte [ebp - 0x323]
not eax
and edx, eax
mov byte [ebp - 0x322], dl
movzx ecx, byte [ebp - 0x299]
not ecx
movzx edx, byte [ebp - 0x29a]
or ecx, edx
movzx eax, byte [ebp - 0x322]
and eax, ecx
mov byte [ebp - 0x322], al
mov ecx, dword [ebp - 0x248]
sub ecx, dword [ebp - 0x1c0]
cmp dword [ebp - 0x294], ecx
jb 0x4b0b3d
movzx edx, byte [ebp - 0x322]
push edx
mov eax, dword [ebp - 0x248]
sub eax, dword [ebp - 0x1c0]
mov ecx, dword [ebp - 0x294]
sub ecx, eax
movzx edx, byte [ebp + ecx - 0x284]
push edx
movzx eax, byte [ebp - 0x299]
push eax
call fcn.004b0ea0
add esp, 0xc
mov byte [ebp - 0x322], al
mov ecx, dword [ebp - 0x294]
mov dl, byte [ebp - 0x322]
mov byte [ebp + ecx - 0x320], dl
jmp 0x4b09be
lea eax, [ebp - 0x320]
push eax
lea ecx, [ebp - 0xe8]
push ecx
call dword [ebp - 0x268]
add esp, 8
lea edx, [ebp - 0x320]
push edx
lea eax, [ebp - 0xe8]
push eax
call dword [ebp - 0x290]
add esp, 8
mov dword [ebp - 0x294], 0
jmp 0x4b0b9e
mov ecx, dword [ebp - 0x294]
add ecx, 1
mov dword [ebp - 0x294], ecx
mov edx, dword [ebp - 0x294]
cmp edx, dword [ebp - 0x130]
jae 0x4b0be2
mov eax, dword [ebp - 0x294]
movzx ecx, byte [ebp + eax - 0x320]
movzx edx, byte [ebp - 0x299]
and ecx, edx
mov eax, dword [ebp - 0x294]
movzx edx, byte [ebp + eax - 0x128]
or edx, ecx
mov eax, dword [ebp - 0x294]
mov byte [ebp + eax - 0x128], dl
jmp 0x4b0b8f
jmp 0x4b0953
call fcn.00506cf0
mov dword [ebp - 0x270], eax
cmp dword [ebp - 0x270], 0
jne 0x4b0c00
jmp 0x4b0d8b
push 0
mov ecx, dword [ebp + 8]
push ecx
call fcn.00513550
add esp, 4
push eax
mov edx, dword [ebp - 0x270]
push edx
call fcn.00506d70
add esp, 0xc
test eax, eax
jg 0x4b0c27
jmp 0x4b0d8b
movsx eax, byte [ebp + 0x2c]
test eax, eax
je 0x4b0cae
mov ecx, dword [ebp - 0x260]
push ecx
push 0x5c
lea edx, [ebp - 0x240]
push edx
call fcn.004bee40
add esp, 0xc
mov eax, dword [ebp + 0x28]
push eax
mov ecx, dword [ebp + 0x24]
push ecx
mov edx, dword [ebp - 0x270]
push edx
call fcn.00506fe0
add esp, 0xc
test eax, eax
jle 0x4b0ca4
mov eax, dword [ebp - 0x260]
push eax
lea ecx, [ebp - 0x240]
push ecx
mov edx, dword [ebp - 0x270]
push edx
call fcn.00506fe0
add esp, 0xc
test eax, eax
jle 0x4b0ca4
mov eax, dword [ebp - 0x130]
push eax
lea ecx, [ebp - 0x128]
push ecx
mov edx, dword [ebp - 0x270]
push edx
call fcn.00506fe0
add esp, 0xc
test eax, eax
jg 0x4b0ca9
jmp 0x4b0d8b
jmp 0x4b0d3b
mov dword [ebp - 0x134], 0
jmp 0x4b0cc9
mov eax, dword [ebp - 0x134]
add eax, 1
mov dword [ebp - 0x134], eax
mov ecx, dword [ebp - 0x134]
cmp ecx, dword [ebp - 0x248]
jae 0x4b0cf7
mov edx, dword [ebp - 0x134]
movzx eax, byte [ebp + edx - 0x240]
xor eax, 0x6a
mov ecx, dword [ebp - 0x134]
mov byte [ebp + ecx - 0x240], al
jmp 0x4b0cba
mov edx, dword [ebp - 0x248]
push edx
lea eax, [ebp - 0x240]
push eax
mov ecx, dword [ebp - 0x270]
push ecx
call fcn.00506fe0
add esp, 0xc
test eax, eax
jle 0x4b0d39
mov edx, dword [ebp - 0x130]
push edx
lea eax, [ebp - 0x128]
push eax
mov ecx, dword [ebp - 0x270]
push ecx
call fcn.00506fe0
add esp, 0xc
test eax, eax
jg 0x4b0d3b
jmp 0x4b0d8b
lea edx, [ebp - 0x244]
push edx
mov eax, dword [ebp + 0xc]
push eax
mov ecx, dword [ebp - 0x270]
push ecx
call fcn.00507010
add esp, 0xc
mov dword [ebp - 0x264], eax
cmp dword [ebp - 0x264], 0
je 0x4b0d75
cmp dword [ebp + 0x10], 0
je 0x4b0d75
mov edx, dword [ebp + 0x10]
mov eax, dword [ebp - 0x244]
mov dword [edx], eax
mov ecx, dword [ebp - 0x270]
push ecx
call fcn.00506d10
add esp, 4
mov eax, 1
jmp 0x4b0d9c
mov edx, dword [ebp - 0x270]
push edx
call fcn.00506d10
add esp, 4
xor eax, eax
pop ebx
mov ecx, dword [ebp - 0xc]
xor ecx, ebp
call fcn.004bec6d
mov esp, ebp
pop ebp
ret