Function at 0x496770
Capabilities:
Hash data using sha256
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x508
cmp dword [ebp + 0xc], 2
xorps xmm0, xmm0
push esi
push edi
mov edi, ecx
movaps xmmword [esp + 0x40], xmm0
mov ecx, dword [ebp + 8]
mov dword [esp + 0x28], edx
mov dword [esp + 0x20], edi
mov byte [edi + 0x432], 0
mov ecx, dword [ecx]
movaps xmmword [esp + 0x30], xmm0
mov dword [esp + 0x50], 0
mov word [esp + 0x48], 2
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x40], ecx
mov byte [edi + 0x432], 1
jb 0x4973c0
mov ah, byte [edx + ecx]
mov dl, byte [edx + ecx + 1]
mov byte [esp + 0x10], ah
cmp ah, 8
je 0x4967e1
mov byte [esp + 0x48], ah
mov cl, dl
jmp 0x4967f9
mov al, dl
sub al, 4
cmp al, 2
ja 0x4973de
mov al, dl
mov cl, ah
mov byte [esp + 0x10], al
mov byte [esp + 0x48], al
mov edx, dword [esp + 0x2c]
xor esi, esi
cmp dword [ebp + 0xc], 4
mov byte [esp + 0x49], cl
lea eax, [edx + 2]
mov dword [esp + 0x40], eax
jb 0x4973c0
mov edi, dword [esp + 0x28]
movzx eax, byte [eax + edi + 1]
mov word [esp + 0x1c], ax
movzx eax, byte [edx + edi + 2]
lea edi, [edx + 4]
shl ax, 8
or word [esp + 0x1c], ax
mov ax, word [esp + 0x1c]
mov dword [esp + 0x40], edi
movzx edi, ax
mov word [esp + 0x38], ax
movzx eax, ax
sub eax, edx
mov dword [esp + 0x2c], edi
add eax, dword [esp + 0x40]
mov edi, dword [esp + 0x20]
cmp eax, dword [ebp + 0xc]
ja 0x4973c0
mov eax, 0x200
cmp word [esp + 0x1c], ax
ja 0x4973c0
cmp cl, 3
jne 0x496888
cmp dword [edi + 0x4e4], esi
je 0x4973b9
cmp byte [edi + 0x4ea], 0
jmp 0x4968ae
cmp cl, 1
je 0x4973de
cmp cl, 8
jne 0x4973b9
cmp dword [edi + 0x488], 0
je 0x4973b9
cmp byte [edi + 0x48c], 0
je 0x4973b9
mov ecx, dword [esp + 0x2c]
call fcn.00472840
mov ecx, eax
mov dword [edi + 0x238], ecx
test ecx, ecx
jne 0x4968d1
lea esi, [eax - 0x7d]
jmp 0x4973c5
mov eax, dword [esp + 0x2c]
push eax
mov dword [edi + 0x23c], eax
mov eax, dword [esp + 0x2c]
add eax, dword [esp + 0x44]
push eax
push ecx
call fcn.0041d170
mov edx, edi
add esp, 0xc
cmp byte [edx + 0x4ea], 0
je 0x496b82
mov ecx, 0xa2
call fcn.00472840
mov edi, eax
mov dword [esp + 0x4c], edi
test edi, edi
jne 0x496919
lea esi, [eax - 0x7d]
jmp 0x4973c9
mov ecx, dword [esp + 0x20]
lea eax, [esp + 0x50]
push 1
push eax
mov edx, edi
call fcn.00499450
mov edi, dword [esp + 0x54]
mov esi, eax
add esp, 8
test esi, esi
jne 0x4973af
mov al, byte [esp + 0x48]
xor ecx, ecx
movzx edx, word [esp + 0x50]
mov esi, 0xffffff53
mov byte [esp + 0x10], al
movzx eax, al
sub eax, 4
je 0x496abd
sub eax, 1
je 0x496a24
sub eax, 1
jne 0x496b68
lea eax, [esp + 0xe8]
mov dword [esp + 0x1c0], ecx
push eax
call fcn.004c53f0
mov esi, eax
add esp, 4
test esi, esi
jne 0x496a1a
movzx eax, word [esp + 0x50]
test edi, edi
jne 0x49699c
test eax, eax
jne 0x496a15
push eax
mov edx, edi
lea ecx, [esp + 0xec]
call fcn.004c2810
mov esi, eax
add esp, 4
test esi, esi
jne 0x496a1a
test edi, edi
je 0x496a15
lea ecx, [esp + 0xe8]
call fcn.004c26c0
mov esi, eax
test esi, esi
jne 0x496a1a
movups xmm0, xmmword [esp + 0xe8]
lea eax, [esp + 0xe8]
push eax
movups xmmword [edi], xmm0
movups xmm0, xmmword [esp + 0xfc]
movups xmmword [edi + 0x10], xmm0
movups xmm0, xmmword [esp + 0x10c]
movups xmmword [edi + 0x20], xmm0
movups xmm0, xmmword [esp + 0x11c]
movups xmmword [edi + 0x30], xmm0
call fcn.004c53f0
add esp, 4
mov esi, eax
mov ecx, 0x40
jmp 0x496b68
mov esi, 0xffffff53
mov ecx, 0x40
jmp 0x496b68
mov dword [esp + 0x1c0], ecx
lea ecx, [esp + 0xe8]
call fcn.004c2580
mov esi, eax
test esi, esi
jne 0x496ab3
test edi, edi
jne 0x496a45
test edx, edx
jne 0x496aae
push edx
mov edx, edi
lea ecx, [esp + 0xec]
call fcn.004c2810
mov esi, eax
add esp, 4
test esi, esi
jne 0x496ab3
test edi, edi
je 0x496aae
lea ecx, [esp + 0xe8]
call fcn.004c26c0
mov esi, eax
test esi, esi
jne 0x496ab3
movups xmm0, xmmword [esp + 0xe8]
lea ecx, [esp + 0xe8]
movups xmmword [edi], xmm0
movups xmm0, xmmword [esp + 0xf8]
movups xmmword [edi + 0x10], xmm0
movups xmm0, xmmword [esp + 0x108]
movups xmmword [edi + 0x20], xmm0
call fcn.004c2580
mov esi, eax
mov ecx, 0x30
jmp 0x496b68
mov esi, 0xffffff53
mov ecx, 0x30
jmp 0x496b68
mov dword [esp + 0xe8], 0x6a09e667
mov dword [esp + 0xec], 0xbb67ae85
mov dword [esp + 0xf0], 0x3c6ef372
mov dword [esp + 0xf4], 0xa54ff53a
mov dword [esp + 0xf8], 0x510e527f
mov dword [esp + 0xfc], 0x9b05688c
mov dword [esp + 0x100], 0x1f83d9ab
mov dword [esp + 0x104], 0x5be0cd19
mov dword [esp + 0x148], ecx
mov dword [esp + 0x14c], ecx
mov dword [esp + 0x150], ecx
mov dword [esp + 0x154], ecx
test edi, edi
jne 0x496b3b
test edx, edx
je 0x496b53
jmp 0x496b63
push edx
mov edx, edi
lea ecx, [esp + 0xec]
call fcn.004c95d0
mov esi, eax
add esp, 4
test esi, esi
jne 0x496b63
mov edx, edi
lea ecx, [esp + 0xe8]
call fcn.004c9e10
mov esi, eax
mov ecx, 0x20
test esi, esi
cmove esi, ecx
test esi, esi
js 0x4973ad
mov edx, dword [esp + 0x20]
mov word [esp + 0x50], si
xor esi, esi
jmp 0x496b86
mov edi, dword [esp + 0x4c]
lea eax, [edx + 0x488]
mov byte [edx + 0x432], 2
mov dword [esp + 0x2c], eax
mov eax, dword [eax]
test eax, eax
je 0x496c76
cmp byte [edx + 0x48c], 0
je 0x496c76
cmp byte [esp + 0x49], 8
mov ecx, dword [edx + 0x23c]
mov esi, dword [edx + 0x238]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x1c], esi
jne 0x496c2e
movzx eax, byte [esp + 0x10]
sub eax, 4
je 0x496bfb
sub eax, 1
je 0x496bf1
sub eax, 1
je 0x496be7
mov esi, 0xffffff53
jmp 0x496c76
mov eax, 8
lea ecx, [eax - 5]
jmp 0x496c03
mov eax, 7
lea ecx, [eax - 5]
jmp 0x496c03
mov eax, 6
lea ecx, [eax - 5]
mov edx, dword [esp + 0x2c]
mov esi, dword [edx]
mov edx, dword [esp + 0x24]
push dword [esi + 0x2094]
push 0xffffffffffffffff
sub esp, 8
push ecx
mov ecx, dword [esp + 0x30]
push eax
push 2
push 1
push 1
push esi
lea eax, [esp + 0x58]
push eax
push edx
push ecx
jmp 0x496c4f
push dword [eax + 0x2094]
mov edx, ecx
push 0
sub esp, 8
push 0
push 0
push 0
push 1
push 1
push eax
lea eax, [esp + 0x58]
push eax
push ecx
push esi
mov ecx, esi
call fcn.004c5b20
mov edi, dword [esp + 0x80]
mov esi, eax
mov al, byte [esp + 0x7c]
add esp, 0x34
mov edx, dword [esp + 0x20]
mov byte [esp + 0x10], al
test esi, esi
js 0x496c76
mov dword [esp + 0x34], esi
xor esi, esi
cmp byte [edx + 0x4ea], 0
je 0x496d10
lea eax, [edx + 0x4e4]
mov edx, dword [esp + 0x40]
push ecx
push dword [eax]
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x2c], eax
movzx eax, word [esp + 0x58]
push eax
movzx eax, word [esp + 0x44]
push edi
push eax
mov eax, dword [esp + 0x3c]
lea edx, [edx + eax]
call fcn.0048aee0
mov edx, dword [esp + 0x34]
mov esi, eax
add esp, 0x14
test esi, esi
js 0x496d12
or word [edx + 0x426], 0x40
lea eax, [edx + 0x4e4]
test eax, eax
je 0x496d09
mov ecx, dword [eax]
test ecx, ecx
je 0x496d09
call fcn.004a5c60
mov eax, dword [esp + 0x24]
mov ecx, dword [eax]
test ecx, ecx
je 0x496cff
mov eax, dword [0x55587c]
push ecx
test eax, eax
je 0x496cf3
call eax
jmp 0x496cf8
call fcn.0042a4fb
mov eax, dword [esp + 0x28]
add esp, 4
mov edx, dword [esp + 0x20]
mov dword [eax], 0
mov byte [edx + 0x4ea], 0
test esi, esi
jne 0x4973af
cmp dword [edx + 0x488], 0
mov byte [edx + 0x432], 3
je 0x49736c
cmp byte [edx + 0x48c], 0
je 0x49736c
movzx eax, byte [esp + 0x10]
lea edx, [esp + 0x2a8]
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x28], eax
lea eax, [esp + 0x1c]
push 1
push eax
call fcn.00499450
mov esi, eax
add esp, 8
test esi, esi
jne 0x4973af
cmp byte [esp + 0x49], 8
jne 0x49730d
mov ecx, dword [esp + 0x28]
mov eax, ecx
sub eax, 4
je 0x496da4
sub eax, 1
je 0x496d9a
sub eax, 1
je 0x496d90
mov esi, 0xffffff53
jmp 0x4973c9
mov dword [esp + 0x24], 8
jmp 0x496dac
mov dword [esp + 0x24], 7
jmp 0x496dac
mov dword [esp + 0x24], 6
movzx edx, word [esp + 0x1c]
xor eax, eax
mov esi, 0xffffff53
sub ecx, 4
je 0x496f0d
sub ecx, 1
je 0x496e84
sub ecx, 1
jne 0x496fb8
mov dword [esp + 0x2a0], eax
lea eax, [esp + 0x1c8]
push eax
call fcn.004c53f0
mov esi, eax
add esp, 4
test esi, esi
jne 0x496e7a
movzx eax, word [esp + 0x1c]
lea edx, [esp + 0x2a8]
push eax
lea ecx, [esp + 0x1cc]
call fcn.004c2810
mov esi, eax
add esp, 4
test esi, esi
jne 0x496e7a
lea ecx, [esp + 0x1c8]
call fcn.004c26c0
mov esi, eax
test esi, esi
jne 0x496e7a
movups xmm0, xmmword [esp + 0x1c8]
lea eax, [esp + 0x1c8]
push eax
movups xmmword [esp + 0x2ac], xmm0
movups xmm0, xmmword [esp + 0x1dc]
movups xmmword [esp + 0x2bc], xmm0
movups xmm0, xmmword [esp + 0x1ec]
movups xmmword [esp + 0x2cc], xmm0
movups xmm0, xmmword [esp + 0x1fc]
movups xmmword [esp + 0x2dc], xmm0
call fcn.004c53f0
add esp, 4
mov esi, eax
mov eax, 0x40
jmp 0x496fb8
lea ecx, [esp + 0x1c8]
mov dword [esp + 0x2a0], eax
call fcn.004c2580
mov esi, eax
test esi, esi
jne 0x496f03
push edx
lea edx, [esp + 0x2ac]
call fcn.004c2810
mov esi, eax
add esp, 4
test esi, esi
jne 0x496f03
lea ecx, [esp + 0x1c8]
call fcn.004c26c0
mov esi, eax
test esi, esi
jne 0x496f03
movups xmm0, xmmword [esp + 0x1c8]
lea ecx, [esp + 0x1c8]
movups xmmword [esp + 0x2a8], xmm0
movups xmm0, xmmword [esp + 0x1d8]
movups xmmword [esp + 0x2b8], xmm0
movups xmm0, xmmword [esp + 0x1e8]
movups xmmword [esp + 0x2c8], xmm0
call fcn.004c2580
mov esi, eax
mov eax, 0x30
jmp 0x496fb8
push edx
lea edx, [esp + 0x2ac]
mov dword [esp + 0x1cc], 0x6a09e667
lea ecx, [esp + 0x1cc]
mov dword [esp + 0x1d0], 0xbb67ae85
mov dword [esp + 0x1d4], 0x3c6ef372
mov dword [esp + 0x1d8], 0xa54ff53a
mov dword [esp + 0x1dc], 0x510e527f
mov dword [esp + 0x1e0], 0x9b05688c
mov dword [esp + 0x1e4], 0x1f83d9ab
mov dword [esp + 0x1e8], 0x5be0cd19
mov dword [esp + 0x22c], eax
mov dword [esp + 0x230], eax
mov dword [esp + 0x234], eax
mov dword [esp + 0x238], eax
call fcn.004c95d0
mov esi, eax
add esp, 4
test esi, esi
jne 0x496fb3
lea edx, [esp + 0x2a8]
lea ecx, [esp + 0x1c8]
call fcn.004c9e10
mov esi, eax
mov eax, 0x20
test esi, esi
cmove esi, eax
test esi, esi
js 0x4973af
cmp dword [esp + 0x30], 0
mov eax, esi
mov dword [esp + 0x1c], eax
je case.0x4970cd.0
mov edx, dword [esp + 0x24]
mov ecx, 0xffffff18
jmp dword [edx*4 + 0x49743c]
mov ecx, 0xffffff53
cmp eax, ecx
jne case.0x4970cd.0
lea ecx, [esi + esi]
mov dword [esp + 0x28], ecx
cmp dword [esp + 0x34], ecx
je 0x49703b
mov esi, 0xffffff06
jmp 0x49730d
push eax
lea eax, [esp + 0x2ac]
xorps xmm0, xmm0
push eax
lea eax, [esp + 0x70]
movq qword [esp + 0x68], xmm0
push eax
call fcn.0041d170
mov esi, dword [esp + 0x28]
lea eax, [esp + 0x74]
add esp, 0xc
add eax, esi
push esi
push dword [esp + 0x34]
push eax
call fcn.0041d170
mov ecx, dword [esp + 0x34]
add esp, 0xc
mov edx, dword [esp + 0x24]
add ecx, 8
mov eax, 0xffffff18
jmp dword [edx*4 + 0x497484]
mov eax, 0x10
jmp case.0x497082.1
mov eax, 0x14
jmp case.0x497082.1
mov eax, 0xffffff53
cmp esi, eax
jae switch.0x004970cd
mov esi, 0xffffff7c
jmp 0x49730d
jmp dword [edx*4 + 0x4974cc]
lea eax, [esp + 0x60]
mov edx, ecx
push eax
mov ecx, eax
call fcn.004b59d0
jmp 0x497287
lea eax, [esp + 0x60]
mov edx, ecx
jmp 0x49727d
mov esi, 0xffffff18
jmp 0x49730d
lea eax, [esp + 0x60]
mov edx, ecx
push eax
mov ecx, eax
call fcn.004b5450
jmp 0x497287
lea eax, [esp + 0x60]
mov edx, ecx
push eax
mov ecx, eax
call fcn.004b5550
jmp 0x497287
lea eax, [esp + 0x60]
mov edx, ecx
push eax
mov ecx, eax
call fcn.004b55e0
jmp 0x497287
lea eax, [esp + 0x350]
mov dword [esp + 0x428], 0
push eax
call fcn.004c5330
mov esi, eax
add esp, 4
test esi, esi
jne 0x4973af
mov edx, dword [esp + 0x28]
lea ecx, [esp + 0x350]
add edx, 8
push edx
lea edx, [esp + 0x64]
call fcn.004c2810
mov esi, eax
add esp, 4
test esi, esi
jne 0x4973af
lea ecx, [esp + 0x350]
call fcn.004c26c0
mov esi, eax
test esi, esi
jne 0x4973af
movups xmm0, xmmword [esp + 0x350]
mov eax, dword [esp + 0x368]
mov dword [esp + 0x78], eax
lea eax, [esp + 0x350]
movups xmmword [esp + 0x60], xmm0
push eax
movq xmm0, qword [esp + 0x364]
movq qword [esp + 0x74], xmm0
call fcn.004c5330
jmp 0x497287
lea eax, [esp + 0x430]
mov dword [esp + 0x508], 0
push eax
call fcn.004c5270
mov esi, eax
add esp, 4
test esi, esi
jne 0x4973af
mov edx, dword [esp + 0x28]
lea ecx, [esp + 0x430]
add edx, 8
push edx
lea edx, [esp + 0x64]
call fcn.004c2810
mov esi, eax
add esp, 4
test esi, esi
jne 0x4973af
lea ecx, [esp + 0x430]
call fcn.004c26c0
mov esi, eax
test esi, esi
jne 0x4973af
movups xmm0, xmmword [esp + 0x430]
lea eax, [esp + 0x430]
push eax
movups xmmword [esp + 0x64], xmm0
movups xmm0, xmmword [esp + 0x444]
movups xmmword [esp + 0x74], xmm0
call fcn.004c5270
jmp 0x497287
lea eax, [esp + 0x60]
mov edx, ecx
push eax
mov ecx, eax
call fcn.004b59d0
mov esi, eax
add esp, 4
test esi, esi
jne 0x4973af
mov edx, dword [esp + 0x28]
lea eax, [esp + 0x70]
lea edx, [edx + 8]
push eax
lea ecx, [esp + 0x64]
call fcn.004b54e0
mov esi, eax
add esp, 4
test esi, esi
jne 0x4973af
mov eax, dword [esp + 0x1c]
lea ecx, [esp + 0x60]
mov edx, dword [esp + 0x30]
add edx, eax
sub eax, 4
mov dword [esp + 0x1c], eax
jb 0x4972c9
nop dword [eax + eax]
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x4972ce
mov eax, dword [esp + 0x1c]
add ecx, 4
add edx, 4
sub eax, 4
mov dword [esp + 0x1c], eax
jae 0x4972b0
cmp eax, 0xfffffffc
je 0x49730d
mov al, byte [ecx]
cmp al, byte [edx]
jne 0x497301
cmp dword [esp + 0x1c], 0xfffffffd
je 0x49730d
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x497301
cmp dword [esp + 0x1c], 0xfffffffe
je 0x49730d
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x497301
cmp dword [esp + 0x1c], 0xffffffff
je 0x49730d
mov al, byte [ecx + 3]
cmp al, byte [edx + 3]
je 0x49730d
mov esi, 0xffffff3f
jmp 0x49730d
mov esi, 0xffffff53
test esi, esi
jne 0x4973af
mov edx, dword [esp + 0x20]
lea eax, [edx + 0x488]
mov byte [edx + 0x48c], 0
test eax, eax
je 0x497364
mov ecx, dword [eax]
test ecx, ecx
je 0x497364
call fcn.004c8580
mov edx, dword [esp + 0x2c]
mov eax, dword [edx]
test eax, eax
je 0x497356
mov ecx, dword [0x55587c]
push eax
test ecx, ecx
je 0x49734e
call ecx
jmp 0x497353
call fcn.0042a4fb
add esp, 4
mov eax, dword [esp + 0x2c]
mov edx, dword [esp + 0x20]
mov dword [eax], 0
or word [edx + 0x426], 0x40
movzx eax, word [esp + 0x38]
mov ecx, dword [esp + 0x40]
or word [edx + 0x424], 1
add ecx, eax
mov eax, dword [ebp + 8]
mov dword [eax], ecx
mov eax, dword [edx + 0x408]
add eax, ecx
mov ecx, dword [ebp + 8]
mov dword [ecx], eax
mov al, byte [edx + 0x420]
and al, 0x60
mov byte [edx + 0x432], 5
cmp al, 0x20
jne 0x4973ab
mov byte [edx + 0x42b], 6
test esi, esi
je 0x4973e7
cmp esi, 0xfffffe57
je 0x4973e7
jmp 0x4973c9
mov esi, 0xffffff1b
jmp 0x4973c5
mov esi, 0xfffffeb8
mov edi, dword [esp + 0x4c]
mov ecx, dword [esp + 0x20]
mov edx, 2
push 0x33
call fcn.004925c0
add esp, 4
jmp 0x4973e7
mov edi, dword [esp + 0x4c]
mov esi, 0xfffffe57
test edi, edi
je 0x497401
mov eax, dword [0x55587c]
push edi
test eax, eax
je 0x4973f9
call eax
jmp 0x4973fe
call fcn.0042a4fb
add esp, 4
mov edi, dword [esp + 0x20]
mov ecx, edi
call fcn.0048a4b0
mov eax, dword [edi + 0x9c]
test eax, eax
je 0x497432
mov ecx, dword [eax]
test ecx, ecx
je 0x497432
add eax, 4
push eax
push edi
call ecx
mov eax, dword [edi + 0x9c]
add esp, 8
mov dword [eax], 0
pop edi
mov eax, esi
pop esi
mov esp, ebp
pop ebp
ret