Function at 0x496a50
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 0x4976a0
mov ah, byte [edx + ecx]
mov dl, byte [edx + ecx + 1]
mov byte [esp + 0x10], ah
cmp ah, 8
je 0x496ac1
mov byte [esp + 0x48], ah
mov cl, dl
jmp 0x496ad9
mov al, dl
sub al, 4
cmp al, 2
ja 0x4976be
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 0x4976a0
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 0x4976a0
mov eax, 0x200
cmp word [esp + 0x1c], ax
ja 0x4976a0
cmp cl, 3
jne 0x496b68
cmp dword [edi + 0x4e4], esi
je 0x497699
cmp byte [edi + 0x4ea], 0
jmp 0x496b8e
cmp cl, 1
je 0x4976be
cmp cl, 8
jne 0x497699
cmp dword [edi + 0x488], 0
je 0x497699
cmp byte [edi + 0x48c], 0
je 0x497699
mov ecx, dword [esp + 0x2c]
call fcn.00472af0
mov ecx, eax
mov dword [edi + 0x238], ecx
test ecx, ecx
jne 0x496bb1
lea esi, [eax - 0x7d]
jmp 0x4976a5
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.0041d1d0
mov edx, edi
add esp, 0xc
cmp byte [edx + 0x4ea], 0
je 0x496e62
mov ecx, 0xa2
call fcn.00472af0
mov edi, eax
mov dword [esp + 0x4c], edi
test edi, edi
jne 0x496bf9
lea esi, [eax - 0x7d]
jmp 0x4976a9
mov ecx, dword [esp + 0x20]
lea eax, [esp + 0x50]
push 1
push eax
mov edx, edi
call fcn.00499730
mov edi, dword [esp + 0x54]
mov esi, eax
add esp, 8
test esi, esi
jne 0x49768f
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 0x496d9d
sub eax, 1
je 0x496d04
sub eax, 1
jne 0x496e48
lea eax, [esp + 0xe8]
mov dword [esp + 0x1c0], ecx
push eax
call fcn.004c5670
mov esi, eax
add esp, 4
test esi, esi
jne 0x496cfa
movzx eax, word [esp + 0x50]
test edi, edi
jne 0x496c7c
test eax, eax
jne 0x496cf5
push eax
mov edx, edi
lea ecx, [esp + 0xec]
call fcn.004c2a90
mov esi, eax
add esp, 4
test esi, esi
jne 0x496cfa
test edi, edi
je 0x496cf5
lea ecx, [esp + 0xe8]
call fcn.004c2940
mov esi, eax
test esi, esi
jne 0x496cfa
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.004c5670
add esp, 4
mov esi, eax
mov ecx, 0x40
jmp 0x496e48
mov esi, 0xffffff53
mov ecx, 0x40
jmp 0x496e48
mov dword [esp + 0x1c0], ecx
lea ecx, [esp + 0xe8]
call fcn.004c2800
mov esi, eax
test esi, esi
jne 0x496d93
test edi, edi
jne 0x496d25
test edx, edx
jne 0x496d8e
push edx
mov edx, edi
lea ecx, [esp + 0xec]
call fcn.004c2a90
mov esi, eax
add esp, 4
test esi, esi
jne 0x496d93
test edi, edi
je 0x496d8e
lea ecx, [esp + 0xe8]
call fcn.004c2940
mov esi, eax
test esi, esi
jne 0x496d93
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.004c2800
mov esi, eax
mov ecx, 0x30
jmp 0x496e48
mov esi, 0xffffff53
mov ecx, 0x30
jmp 0x496e48
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 0x496e1b
test edx, edx
je 0x496e33
jmp 0x496e43
push edx
mov edx, edi
lea ecx, [esp + 0xec]
call fcn.004c9850
mov esi, eax
add esp, 4
test esi, esi
jne 0x496e43
mov edx, edi
lea ecx, [esp + 0xe8]
call fcn.004ca090
mov esi, eax
mov ecx, 0x20
test esi, esi
cmove esi, ecx
test esi, esi
js 0x49768d
mov edx, dword [esp + 0x20]
mov word [esp + 0x50], si
xor esi, esi
jmp 0x496e66
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 0x496f56
cmp byte [edx + 0x48c], 0
je 0x496f56
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 0x496f0e
movzx eax, byte [esp + 0x10]
sub eax, 4
je 0x496edb
sub eax, 1
je 0x496ed1
sub eax, 1
je 0x496ec7
mov esi, 0xffffff53
jmp 0x496f56
mov eax, 8
lea ecx, [eax - 5]
jmp 0x496ee3
mov eax, 7
lea ecx, [eax - 5]
jmp 0x496ee3
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 0x496f2f
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.004c5da0
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 0x496f56
mov dword [esp + 0x34], esi
xor esi, esi
cmp byte [edx + 0x4ea], 0
je 0x496ff0
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.0048b1c0
mov edx, dword [esp + 0x34]
mov esi, eax
add esp, 0x14
test esi, esi
js 0x496ff2
or word [edx + 0x426], 0x40
lea eax, [edx + 0x4e4]
test eax, eax
je 0x496fe9
mov ecx, dword [eax]
test ecx, ecx
je 0x496fe9
call fcn.004a5f50
mov eax, dword [esp + 0x24]
mov ecx, dword [eax]
test ecx, ecx
je 0x496fdf
mov eax, dword [0x420ede8]
push ecx
test eax, eax
je 0x496fd3
call eax
jmp 0x496fd8
call fcn.0042a55b
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 0x49768f
cmp dword [edx + 0x488], 0
mov byte [edx + 0x432], 3
je 0x49764c
cmp byte [edx + 0x48c], 0
je 0x49764c
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.00499730
mov esi, eax
add esp, 8
test esi, esi
jne 0x49768f
cmp byte [esp + 0x49], 8
jne 0x4975ed
mov ecx, dword [esp + 0x28]
mov eax, ecx
sub eax, 4
je 0x497084
sub eax, 1
je 0x49707a
sub eax, 1
je 0x497070
mov esi, 0xffffff53
jmp 0x4976a9
mov dword [esp + 0x24], 8
jmp 0x49708c
mov dword [esp + 0x24], 7
jmp 0x49708c
mov dword [esp + 0x24], 6
movzx edx, word [esp + 0x1c]
xor eax, eax
mov esi, 0xffffff53
sub ecx, 4
je 0x4971ed
sub ecx, 1
je 0x497164
sub ecx, 1
jne 0x497298
mov dword [esp + 0x2a0], eax
lea eax, [esp + 0x1c8]
push eax
call fcn.004c5670
mov esi, eax
add esp, 4
test esi, esi
jne 0x49715a
movzx eax, word [esp + 0x1c]
lea edx, [esp + 0x2a8]
push eax
lea ecx, [esp + 0x1cc]
call fcn.004c2a90
mov esi, eax
add esp, 4
test esi, esi
jne 0x49715a
lea ecx, [esp + 0x1c8]
call fcn.004c2940
mov esi, eax
test esi, esi
jne 0x49715a
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.004c5670
add esp, 4
mov esi, eax
mov eax, 0x40
jmp 0x497298
lea ecx, [esp + 0x1c8]
mov dword [esp + 0x2a0], eax
call fcn.004c2800
mov esi, eax
test esi, esi
jne 0x4971e3
push edx
lea edx, [esp + 0x2ac]
call fcn.004c2a90
mov esi, eax
add esp, 4
test esi, esi
jne 0x4971e3
lea ecx, [esp + 0x1c8]
call fcn.004c2940
mov esi, eax
test esi, esi
jne 0x4971e3
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.004c2800
mov esi, eax
mov eax, 0x30
jmp 0x497298
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.004c9850
mov esi, eax
add esp, 4
test esi, esi
jne 0x497293
lea edx, [esp + 0x2a8]
lea ecx, [esp + 0x1c8]
call fcn.004ca090
mov esi, eax
mov eax, 0x20
test esi, esi
cmove esi, eax
test esi, esi
js 0x49768f
cmp dword [esp + 0x30], 0
mov eax, esi
mov dword [esp + 0x1c], eax
je case.0x4973ad.0
mov edx, dword [esp + 0x24]
mov ecx, 0xffffff18
jmp dword [edx*4 + 0x49771c]
mov ecx, 0xffffff53
cmp eax, ecx
jne case.0x4973ad.0
lea ecx, [esi + esi]
mov dword [esp + 0x28], ecx
cmp dword [esp + 0x34], ecx
je 0x49731b
mov esi, 0xffffff06
jmp 0x4975ed
push eax
lea eax, [esp + 0x2ac]
xorps xmm0, xmm0
push eax
lea eax, [esp + 0x70]
movq qword [esp + 0x68], xmm0
push eax
call fcn.0041d1d0
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.0041d1d0
mov ecx, dword [esp + 0x34]
add esp, 0xc
mov edx, dword [esp + 0x24]
add ecx, 8
mov eax, 0xffffff18
jmp dword [edx*4 + 0x497764]
mov eax, 0x10
jmp case.0x497362.1
mov eax, 0x14
jmp case.0x497362.1
mov eax, 0xffffff53
cmp esi, eax
jae switch.0x004973ad
mov esi, 0xffffff7c
jmp 0x4975ed
jmp dword [edx*4 + 0x4977ac]
lea eax, [esp + 0x60]
mov edx, ecx
push eax
mov ecx, eax
call fcn.004b5c40
jmp 0x497567
lea eax, [esp + 0x60]
mov edx, ecx
jmp 0x49755d
mov esi, 0xffffff18
jmp 0x4975ed
lea eax, [esp + 0x60]
mov edx, ecx
push eax
mov ecx, eax
call fcn.004b56c0
jmp 0x497567
lea eax, [esp + 0x60]
mov edx, ecx
push eax
mov ecx, eax
call fcn.004b57c0
jmp 0x497567
lea eax, [esp + 0x60]
mov edx, ecx
push eax
mov ecx, eax
call fcn.004b5850
jmp 0x497567
lea eax, [esp + 0x350]
mov dword [esp + 0x428], 0
push eax
call fcn.004c55b0
mov esi, eax
add esp, 4
test esi, esi
jne 0x49768f
mov edx, dword [esp + 0x28]
lea ecx, [esp + 0x350]
add edx, 8
push edx
lea edx, [esp + 0x64]
call fcn.004c2a90
mov esi, eax
add esp, 4
test esi, esi
jne 0x49768f
lea ecx, [esp + 0x350]
call fcn.004c2940
mov esi, eax
test esi, esi
jne 0x49768f
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.004c55b0
jmp 0x497567
lea eax, [esp + 0x430]
mov dword [esp + 0x508], 0
push eax
call fcn.004c54f0
mov esi, eax
add esp, 4
test esi, esi
jne 0x49768f
mov edx, dword [esp + 0x28]
lea ecx, [esp + 0x430]
add edx, 8
push edx
lea edx, [esp + 0x64]
call fcn.004c2a90
mov esi, eax
add esp, 4
test esi, esi
jne 0x49768f
lea ecx, [esp + 0x430]
call fcn.004c2940
mov esi, eax
test esi, esi
jne 0x49768f
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.004c54f0
jmp 0x497567
lea eax, [esp + 0x60]
mov edx, ecx
push eax
mov ecx, eax
call fcn.004b5c40
mov esi, eax
add esp, 4
test esi, esi
jne 0x49768f
mov edx, dword [esp + 0x28]
lea eax, [esp + 0x70]
lea edx, [edx + 8]
push eax
lea ecx, [esp + 0x64]
call fcn.004b5750
mov esi, eax
add esp, 4
test esi, esi
jne 0x49768f
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 0x4975a9
nop dword [eax + eax]
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x4975ae
mov eax, dword [esp + 0x1c]
add ecx, 4
add edx, 4
sub eax, 4
mov dword [esp + 0x1c], eax
jae 0x497590
cmp eax, 0xfffffffc
je 0x4975ed
mov al, byte [ecx]
cmp al, byte [edx]
jne 0x4975e1
cmp dword [esp + 0x1c], 0xfffffffd
je 0x4975ed
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x4975e1
cmp dword [esp + 0x1c], 0xfffffffe
je 0x4975ed
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x4975e1
cmp dword [esp + 0x1c], 0xffffffff
je 0x4975ed
mov al, byte [ecx + 3]
cmp al, byte [edx + 3]
je 0x4975ed
mov esi, 0xffffff3f
jmp 0x4975ed
mov esi, 0xffffff53
test esi, esi
jne 0x49768f
mov edx, dword [esp + 0x20]
lea eax, [edx + 0x488]
mov byte [edx + 0x48c], 0
test eax, eax
je 0x497644
mov ecx, dword [eax]
test ecx, ecx
je 0x497644
call fcn.004c8800
mov edx, dword [esp + 0x2c]
mov eax, dword [edx]
test eax, eax
je 0x497636
mov ecx, dword [0x420ede8]
push eax
test ecx, ecx
je 0x49762e
call ecx
jmp 0x497633
call fcn.0042a55b
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 0x49768b
mov byte [edx + 0x42b], 6
test esi, esi
je 0x4976c7
cmp esi, 0xfffffe57
je 0x4976c7
jmp 0x4976a9
mov esi, 0xffffff1b
jmp 0x4976a5
mov esi, 0xfffffeb8
mov edi, dword [esp + 0x4c]
mov ecx, dword [esp + 0x20]
mov edx, 2
push 0x33
call fcn.004928a0
add esp, 4
jmp 0x4976c7
mov edi, dword [esp + 0x4c]
mov esi, 0xfffffe57
test edi, edi
je 0x4976e1
mov eax, dword [0x420ede8]
push edi
test eax, eax
je 0x4976d9
call eax
jmp 0x4976de
call fcn.0042a55b
add esp, 4
mov edi, dword [esp + 0x20]
mov ecx, edi
call fcn.0048a790
mov eax, dword [edi + 0x9c]
test eax, eax
je 0x497712
mov ecx, dword [eax]
test ecx, ecx
je 0x497712
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