Function at 0x559460
Capabilities:
Authenticate hmac
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x324
call fcn.005e28b0
mov eax, dword [0x6c4e10]
xor eax, esp
mov dword [esp + 0x320], eax
cmp dword [ebp + 0x18], 0x100000
mov eax, dword [ebp + 8]
push ebx
mov dword [esp + 0x2c], edx
mov edx, dword [ebp + 0x10]
push esi
mov dword [esp + 0x54], ecx
mov ecx, dword [ebp + 0xc]
mov dword [esp + 0x34], edx
mov edx, dword [ebp + 0x1c]
mov ebx, 0x28
push edi
mov dword [esp + 0x74], eax
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x50], edx
mov edi, 0x40
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x1c], 8
mov byte [esp + 0xe], 1
jae 0x559c70
test eax, eax
je 0x5594d3
mov eax, dword [eax]
mov eax, dword [eax]
cmp eax, 0x2a0
jg 0x559588
je 0x55955a
cmp eax, 4
je 0x55951e
cmp eax, 0x40
jne 0x559595
lea esi, [esp + 0x80]
call fcn.0045a850
test eax, eax
jle 0x559c70
mov dword [esp + 0x28], 0x559240
mov dword [esp + 0x10], 0x45a6e0
mov esi, 0x14
jmp 0x55963b
lea esi, [esp + 0x80]
call fcn.004196f0
test eax, eax
jle 0x559c70
mov ebx, 0x30
mov dword [esp + 0x28], 0x5591c0
mov dword [esp + 0x10], 0x4195b0
mov esi, 0x10
mov dword [esp + 0x4c], ebx
mov byte [esp + 0xe], 0
jmp 0x55963b
lea esi, [esp + 0x80]
call fcn.0047f4b0
test eax, eax
jle 0x559c70
mov dword [esp + 0x28], 0x5592e0
mov dword [esp + 0x10], 0x47f790
mov esi, 0x20
jmp 0x55963b
sub eax, 0x2a1
je 0x559601
dec eax
je 0x5595e5
dec eax
je 0x5595ba
test ecx, ecx
je 0x559c70
mov dword [ecx], 0
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x320]
xor ecx, esp
call fcn.005dbf5a
mov esp, ebp
pop ebp
ret
lea esi, [esp + 0x80]
call fcn.0047f450
test eax, eax
jle 0x559c70
mov dword [esp + 0x28], 0x5592e0
mov dword [esp + 0x10], 0x47f790
mov esi, 0x1c
jmp 0x55963b
lea eax, [esp + 0x80]
push eax
call fcn.0047ea30
add esp, 4
test eax, eax
jle 0x559c70
mov esi, edi
jmp 0x55961e
lea ecx, [esp + 0x80]
push ecx
call fcn.0047e990
add esp, 4
test eax, eax
jle 0x559c70
mov esi, 0x30
mov dword [esp + 0x1c], 0x10
mov edi, 0x80
mov dword [esp + 0x10], 0x47f340
mov dword [esp + 0x28], 0x5593d0
cmp byte [ebp + 0x24], 0
mov ecx, 0xd
mov dword [esp + 0x14], esi
mov dword [esp + 0x30], ecx
je 0x559660
mov edx, dword [ebp + 0x20]
lea ecx, [ebx + edx + 0xb]
mov dword [esp + 0x30], ecx
mov ebx, 2
jmp 0x55966e
lea eax, [esi + edi + 0xff]
xor edx, edx
div edi
lea ebx, [eax + 1]
mov eax, dword [esp + 0x1c]
sub ecx, esi
lea edx, [ecx + eax]
mov eax, dword [ebp + 0x18]
add edx, edi
lea eax, [edx + eax - 1]
xor edx, edx
div edi
add ecx, dword [ebp + 0x14]
xor edx, edx
mov dword [esp + 0x24], ebx
mov esi, eax
xor eax, eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x20], eax
mov eax, ecx
div edi
mov dword [esp + 0x48], edx
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x1c]
xor edx, edx
add eax, ecx
div edi
xor edx, edx
cmp byte [ebp + 0x24], dl
setne dl
add edx, ebx
mov dword [esp + 0x60], eax
cmp esi, edx
jbe 0x5596d0
sub esi, ebx
mov eax, esi
mov dword [esp + 0x2c], eax
imul eax, edi
mov dword [esp + 0x20], eax
cmp byte [ebp + 0x24], 0
lea ebx, [ecx*8]
jne 0x559744
push edi
lea eax, [esp + 0x1ac]
push 0
push eax
lea ebx, [ebx + edi*8]
call fcn.005dc9c0
mov eax, dword [ebp + 0x20]
add esp, 0xc
cmp eax, 0x80
ja 0x559c70
mov ecx, dword [esp + 0x50]
push eax
push ecx
lea edx, [esp + 0x1b0]
push edx
call fcn.005e02e0
add esp, 0xc
xor eax, eax
test edi, edi
je 0x55972d
lea ecx, [ecx]
xor byte [esp + eax + 0x1a8], 0x36
inc eax
cmp eax, edi
jb 0x559720
lea eax, [esp + 0x1a8]
push eax
lea ecx, [esp + 0x84]
push ecx
call dword [esp + 0x18]
add esp, 8
cmp byte [esp + 0xe], 0
mov esi, dword [esp + 0x1c]
je 0x559789
lea edx, [esi - 4]
push edx
lea eax, [esp + 0x15c]
push 0
push eax
call fcn.005dc9c0
lea eax, [esp + esi + 0x164]
mov ecx, ebx
shr ecx, 0x18
mov byte [eax - 4], cl
mov edx, ebx
shr edx, 0x10
mov ecx, ebx
add esp, 0xc
shr ecx, 8
mov byte [eax - 3], dl
mov byte [eax - 2], cl
mov byte [eax - 1], bl
jmp 0x5597be
push esi
lea edx, [esp + 0x15c]
push 0
push edx
call fcn.005dc9c0
lea eax, [esp + esi + 0x164]
mov ecx, ebx
shr ecx, 0x18
mov byte [eax - 5], cl
mov edx, ebx
shr edx, 0x10
mov ecx, ebx
add esp, 0xc
shr ecx, 8
mov byte [eax - 6], dl
mov byte [eax - 7], cl
mov byte [eax - 8], bl
mov ebx, dword [esp + 0x20]
test ebx, ebx
je 0x5598f5
cmp byte [ebp + 0x24], 0
je 0x55986f
cmp dword [esp + 0x30], edi
jbe 0x559c70
mov edx, dword [esp + 0x34]
mov esi, dword [esp + 0x30]
mov ebx, dword [esp + 0x10]
push edx
lea eax, [esp + 0x84]
push eax
sub esi, edi
call ebx
mov ecx, dword [esp + 0x3c]
push esi
add ecx, edi
push ecx
lea edx, [esp + 0x238]
push edx
call fcn.005e02e0
mov ecx, dword [esp + 0x4c]
mov eax, edi
sub eax, esi
push eax
push ecx
lea edx, [esp + esi + 0x244]
push edx
call fcn.005e02e0
lea eax, [esp + 0x248]
push eax
lea ecx, [esp + 0xa4]
push ecx
call ebx
mov eax, dword [esp + 0x48]
xor edx, edx
div edi
add esp, 0x28
dec eax
cmp eax, 1
jbe 0x5598f5
mov ebx, dword [esp + 0x38]
sub ebx, esi
add ebx, edi
lea esi, [eax - 1]
lea edx, [esp + 0x80]
push ebx
push edx
call dword [esp + 0x18]
add esp, 8
add ebx, edi
dec esi
jne 0x559855
jmp 0x5598f5
mov eax, dword [esp + 0x34]
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov esi, dword [esp + 0x38]
mov dword [esp + 0x228], ecx
mov ecx, dword [eax + 8]
mov dword [esp + 0x22c], edx
mov dl, byte [eax + 0xc]
lea eax, [edi - 0xd]
push eax
mov dword [esp + 0x234], ecx
lea ecx, [esp + 0x239]
push esi
push ecx
mov byte [esp + 0x240], dl
call fcn.005e02e0
lea edx, [esp + 0x234]
push edx
lea eax, [esp + 0x90]
push eax
call dword [esp + 0x24]
xor edx, edx
mov eax, ebx
div edi
add esp, 0x14
cmp eax, 1
jbe 0x5598f5
lea ebx, [esi + edi - 0xd]
lea esi, [eax - 1]
lea esp, [esp]
lea ecx, [esp + 0x80]
push ebx
push ecx
call dword [esp + 0x18]
add esp, 8
add ebx, edi
dec esi
jne 0x5598e0
push 0x40
lea edx, [esp + 0x16c]
push 0
push edx
call fcn.005dc9c0
mov ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x30]
add eax, ecx
add esp, 0xc
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x7c], eax
cmp ecx, eax
ja 0x559af8
mov ecx, dword [esp + 0x2c]
mov eax, ecx
xor eax, dword [esp + 0x54]
xor esi, esi
lea edx, [eax - 1]
not eax
shr eax, 0x1f
shr edx, 0x1f
and dl, al
mov eax, ecx
xor eax, dword [esp + 0x60]
neg dl
lea ebx, [eax - 1]
shr ebx, 0x1f
not eax
shr eax, 0x1f
and bl, al
neg bl
mov byte [esp + 0x1b], dl
mov byte [esp + 0xe], bl
test edi, edi
je 0x559a95
mov ebx, dword [esp + 0x48]
movzx ecx, dl
mov dword [esp + 0x6c], ecx
lea ecx, [ebx + 1]
shr ecx, 0x1f
mov dword [esp + 0x68], ecx
mov cl, byte [esp + 0xe]
not cl
or cl, dl
mov edx, dword [esp + 0x1c]
mov byte [esp + 0x1a], cl
mov ecx, edi
sub ecx, edx
mov dword [esp + 0x78], ecx
mov eax, ebx
mov ecx, ebx
shr eax, 0x1f
neg ecx
sub edx, edi
lea edx, [esp + edx + 0x158]
mov dword [esp + 0x70], eax
mov dword [esp + 0x40], ecx
mov dword [esp + 0x24], edx
jmp 0x5599b4
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x30]
mov byte [esp + 0xf], 0
cmp ecx, edx
jae 0x5599d2
mov edx, dword [esp + 0x34]
mov cl, byte [edx + ecx]
mov byte [esp + 0xf], cl
jmp 0x5599e8
mov ebx, dword [ebp + 0x18]
add ebx, edx
cmp ecx, ebx
jae 0x5599e8
mov ebx, dword [esp + 0x38]
sub ebx, edx
mov dl, byte [ebx + ecx]
mov byte [esp + 0xf], dl
mov edx, dword [esp + 0x40]
shr edx, 0x1f
xor dl, al
mov ecx, esi
shr ecx, 0x1f
mov bl, cl
xor bl, al
or dl, bl
xor dl, cl
dec dl
movzx eax, dl
and eax, dword [esp + 0x6c]
inc dword [esp + 0x20]
mov dword [esp + 0x44], eax
not eax
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x3c]
and al, byte [esp + 0xf]
mov edx, dword [esp + 0x44]
and dl, 0x80
or al, dl
mov edx, dword [esp + 0x48]
inc edx
mov ebx, esi
sub ebx, edx
mov dl, byte [esp + 0x68]
shr ebx, 0x1f
xor bl, dl
xor dl, cl
or bl, dl
xor bl, cl
dec bl
and bl, byte [esp + 0x1b]
mov edx, 1
not bl
and bl, byte [esp + 0x1a]
and al, bl
cmp esi, dword [esp + 0x78]
jb 0x559a78
movzx ecx, byte [esp + 0xe]
mov ebx, dword [esp + 0x24]
mov dword [esp + 0x3c], ecx
not ecx
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x44]
and cl, al
mov eax, dword [esp + 0x3c]
and al, byte [ebx]
or al, cl
add dword [esp + 0x40], edx
add dword [esp + 0x24], edx
mov byte [esp + esi + 0x2a8], al
add esi, edx
cmp esi, edi
jb 0x5599b0
mov bl, byte [esp + 0xe]
lea ecx, [esp + 0x2a8]
push ecx
lea edx, [esp + 0x84]
push edx
call dword [esp + 0x18]
lea eax, [esp + 0x2b0]
push eax
lea ecx, [esp + 0x8c]
push ecx
call dword [esp + 0x38]
mov esi, dword [esp + 0x24]
add esp, 0x10
xor eax, eax
test esi, esi
je 0x559ae5
lea ebx, [ebx]
mov dl, byte [esp + eax + 0x2a8]
and dl, bl
or byte [esp + eax + 0x168], dl
inc eax
cmp eax, esi
jb 0x559ad0
mov eax, dword [esp + 0x2c]
inc eax
mov dword [esp + 0x2c], eax
cmp eax, dword [esp + 0x7c]
jbe 0x559923
call fcn.004176e0
mov esi, eax
test esi, esi
je 0x559b92
mov eax, dword [esp + 0x74]
test eax, eax
je 0x559b11
mov eax, dword [eax]
push 0
push eax
push esi
call fcn.00417790
add esp, 0xc
test eax, eax
jle 0x559b92
cmp byte [ebp + 0x24], 0
je 0x559bd7
mov edi, dword [esp + 0x4c]
push edi
lea eax, [esp + 0x1ac]
push 0x5c
push eax
call fcn.005dc9c0
mov eax, dword [ebp + 0x20]
add esp, 0xc
test eax, eax
je 0x559b5c
mov ecx, dword [esp + 0x50]
mov edx, dword [esi + 0x14]
push eax
push ecx
push esi
call edx
add esp, 0xc
test eax, eax
jle 0x559b92
lea eax, [esp + 0x1a8]
push edi
push eax
mov ecx, esi
call fcn.004179e0
add esp, 8
test eax, eax
jle 0x559b92
mov ecx, dword [esp + 0x14]
push ecx
lea edx, [esp + 0x16c]
push edx
mov ecx, esi
call fcn.004179e0
add esp, 8
test eax, eax
jg 0x559c29
push esi
call fcn.00417660
mov eax, dword [fcn.00413ef0]
add esp, 4
test eax, eax
je 0x559c67
cmp eax, fcn.00413ef0
je 0x559c67
push 0x39
push str.....cryptoevpdigest.c
push esi
call eax
add esp, 0xc
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x320]
xor ecx, esp
call fcn.005dbf5a
mov esp, ebp
pop ebp
ret
xor eax, eax
test edi, edi
je 0x559c07
lea ecx, [ecx]
xor byte [esp + eax + 0x1a8], 0x6a
inc eax
cmp eax, edi
jb 0x559be0
test edi, edi
je 0x559c07
mov ecx, dword [esi + 0x14]
push edi
lea eax, [esp + 0x1ac]
push eax
push esi
call ecx
add esp, 0xc
test eax, eax
jle 0x559b92
mov eax, dword [esp + 0x14]
test eax, eax
je 0x559c29
push eax
mov eax, dword [esi + 0x14]
lea edx, [esp + 0x16c]
push edx
push esi
call eax
add esp, 0xc
test eax, eax
jle 0x559b92
mov ecx, dword [esp + 0x58]
lea edi, [esp + 0x64]
call fcn.00417a10
test eax, eax
je 0x559c48
mov eax, dword [esp + 0x5c]
test eax, eax
je 0x559c48
mov ecx, dword [esp + 0x64]
mov dword [eax], ecx
call fcn.00417740
mov eax, 1
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x320]
xor ecx, esp
call fcn.005dbf5a
mov esp, ebp
pop ebp
ret
push esi
call fcn.005dc555
add esp, 4
mov ecx, dword [esp + 0x32c]
pop edi
pop esi
pop ebx
xor ecx, esp
xor eax, eax
call fcn.005dbf5a
mov esp, ebp
pop ebp
ret