Function at 0x535b80
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x9c
mov esi, dword [esp + 0xb0]
mov eax, dword [esi + 0x1c]
mov edx, dword [esi]
mov dword [esp + 4], edx
mov ecx, dword [esi + 4]
lea ecx, [ecx + edx - 5]
mov dword [esp + 0x4c], ecx
mov ebx, dword [esi + 0x10]
mov edi, ebx
sub edi, dword [esp + 0xb4]
mov cl, byte [eax + 0x58]
mov ebp, 0xffffffff
shl ebp, cl
mov ecx, dword [esi + 0xc]
add edi, ecx
mov dword [esp], ecx
mov dword [esp + 0x38], edi
mov edx, dword [eax + 0x34]
mov edi, eax
mov dword [esp + 0x30], eax
add ecx, ebx
mov eax, dword [esp + 0xb4]
lea esi, [edx + eax]
mov dword [esp + 0x24], edx
sub ecx, esi
mov dword [esp + 0x88], ecx
sub esi, ebx
mov ecx, dword [edi + 0x2c]
lea edi, [edx + ecx]
mov dword [esp + 0x44], ecx
mov dword [esp + 0x8c], edi
add edi, eax
sub edi, ebx
add eax, ecx
sub eax, ebx
mov dword [esp + 0x34], eax
mov ecx, dword [esp]
lea eax, [ebx + ecx]
add eax, 0xfffffeff
mov dword [esp + 0x48], eax
not ebp
mov dword [esp + 0x98], ebp
mov eax, ecx
mov edx, dword [esp + 0x30]
mov cl, byte [edx + 0x5c]
mov ebp, 0xffffffff
shl ebp, cl
not ebp
mov dword [esp + 0x94], ebp
mov ebx, dword [esp + 0x24]
lea ecx, [ebx - 0x20]
mov dword [esp + 0x74], ecx
shr ecx, 5
add ecx, 1
mov ebp, ebx
and ebp, 0xffffffe0
and ebx, 0x1f
mov dword [esp + 0x6c], ebx
mov ebx, ecx
and ebx, 3
and ecx, 0xfffffffc
mov dword [esp + 0x54], ecx
sub esi, eax
mov ecx, dword [edx + 0x38]
lea edx, [esi + ecx]
add edx, 0x70
mov dword [esp + 0x64], edx
lea edx, [esi + ecx]
add edx, 0x10
mov dword [esp + 0x80], edx
sub edi, eax
lea edx, [edi + ecx]
add edx, 0x70
mov dword [esp + 0x60], edx
lea edx, [edi + ecx + 0x10]
mov dword [esp + 0x7c], edx
mov dword [esp + 0x68], ebx
mov edx, ebx
shl edx, 5
mov esi, dword [esp + 0x34]
sub esi, eax
lea eax, [esi + ecx]
add eax, 0x70
mov dword [esp + 0x78], eax
lea eax, [esi + ecx + 0x10]
mov dword [esp + 0x84], eax
mov ebx, dword [esp + 0x30]
mov eax, dword [ebx + 0x30]
mov dword [esp + 0x90], eax
mov edi, dword [ebx + 0x3c]
mov eax, dword [ebx + 0x40]
mov esi, dword [ebx + 0x50]
mov dword [esp + 0x34], esi
mov esi, dword [ebx + 0x54]
mov dword [esp + 0x50], esi
mov esi, dword [esp + 0x44]
lea esi, [ecx + esi]
mov dword [esp + 0x40], esi
mov esi, dword [esp + 0x24]
lea esi, [ecx + esi]
mov dword [esp + 0x3c], esi
mov ebx, eax
mov dword [esp + 0x70], ebp
lea eax, [ecx + ebp]
mov dword [esp + 0x5c], eax
mov ebp, edx
mov edx, dword [esp + 4]
mov dword [esp + 0x20], ecx
lea eax, [ecx + 0x10]
mov dword [esp + 0x58], eax
cmp ebx, 0xe
ja 0x535d40
movzx eax, byte [edx]
mov ecx, ebx
shl eax, cl
add eax, edi
movzx edi, byte [edx + 1]
add cl, 8
shl edi, cl
add edx, 2
mov dword [esp + 4], edx
add edi, eax
add ebx, 0x10
jmp 0x535d44
mov dword [esp + 4], edx
mov eax, edi
and eax, dword [esp + 0x98]
mov esi, dword [esp + 0x34]
movzx ecx, byte [esi + eax*4 + 1]
shr edi, cl
movzx edx, word [esi + eax*4 + 2]
mov al, byte [esi + eax*4]
sub ebx, ecx
test al, al
je 0x535dab
nop word cs:[eax + eax]
movzx eax, al
test al, 0x10
jne 0x535de0
test al, 0x40
jne 0x5368b0
mov esi, 0xffffffff
mov ecx, eax
shl esi, cl
movzx eax, dx
not esi
and esi, edi
add esi, eax
mov eax, dword [esp + 0x34]
movzx ecx, byte [eax + esi*4 + 1]
shr edi, cl
movzx edx, word [eax + esi*4 + 2]
movzx eax, byte [eax + esi*4]
sub ebx, ecx
test al, al
jne 0x535d70
mov eax, dword [esp]
mov byte [eax], dl
add eax, 1
mov dword [esp], eax
mov edx, dword [esp + 4]
cmp edx, dword [esp + 0x4c]
jae 0x5368e3
mov eax, dword [esp + 0x48]
cmp dword [esp], eax
jb 0x535d0c
jmp 0x5368e3
movzx ecx, dx
mov dword [esp + 8], ecx
test al, 0xf
je 0x535e1e
and eax, 0xf
cmp ebx, eax
jae 0x535e09
mov esi, dword [esp + 4]
movzx edx, byte [esi]
mov ecx, ebx
shl edx, cl
add esi, 1
mov dword [esp + 4], esi
add edi, edx
add ebx, 8
mov edx, 0xffffffff
mov ecx, eax
shl edx, cl
not edx
and edx, edi
add dword [esp + 8], edx
shr edi, cl
sub ebx, eax
mov edx, dword [esp + 4]
cmp ebx, 0xe
mov dword [esp + 0x1c], ebp
ja 0x535e4b
movzx eax, byte [edx]
mov ecx, ebx
shl eax, cl
add eax, edi
movzx edi, byte [edx + 1]
add cl, 8
shl edi, cl
add edx, 2
mov dword [esp + 4], edx
add edi, eax
add ebx, 0x10
jmp 0x535e4f
mov dword [esp + 4], edx
mov ebp, ebx
mov eax, edi
and eax, dword [esp + 0x94]
mov esi, dword [esp + 0x50]
movzx edx, word [esi + eax*4 + 2]
movzx ecx, byte [esi + eax*4 + 1]
shr edi, cl
mov bl, byte [esi + eax*4]
sub ebp, ecx
movzx ecx, bl
mov esi, edi
mov eax, ebp
test cl, 0x10
mov ebp, dword [esp + 8]
jne 0x535eb7
nop
test cl, 0x40
jne 0x5368c0
movzx edx, dx
mov edi, 0xffffffff
shl edi, cl
not edi
and edi, esi
add edi, edx
mov ebx, dword [esp + 0x50]
movzx edx, word [ebx + edi*4 + 2]
movzx ecx, byte [ebx + edi*4 + 1]
shr esi, cl
movzx ebx, byte [ebx + edi*4]
sub eax, ecx
movzx ecx, bl
test cl, 0x10
je 0x535e80
and bl, 0xf
movzx ecx, bl
cmp eax, ecx
jae 0x535ef5
mov dword [esp + 8], ebp
mov ebx, dword [esp + 4]
movzx edi, byte [ebx]
mov ebp, ecx
mov ecx, eax
shl edi, cl
add edi, esi
lea ecx, [eax + 8]
mov dword [esp + 0xc], ebp
cmp ecx, ebp
jae 0x535efb
movzx esi, byte [ebx + 1]
shl esi, cl
add ebx, 2
mov dword [esp + 4], ebx
add edi, esi
add eax, 0x10
mov ebx, eax
jmp 0x535f04
mov edi, esi
mov ebx, eax
jmp 0x535f0c
add ebx, 1
mov dword [esp + 4], ebx
mov ebx, ecx
mov ecx, dword [esp + 0xc]
mov ebp, dword [esp + 8]
movzx eax, dx
mov edx, 0xffffffff
shl edx, cl
not edx
and edx, edi
shr edi, cl
mov dword [esp + 0x18], eax
mov dword [esp + 0x28], edx
lea esi, [edx + eax]
sub ebx, ecx
mov eax, dword [esp]
sub eax, dword [esp + 0x38]
mov edx, esi
sub edx, eax
jbe 0x5360e8
cmp edx, dword [esp + 0x90]
jbe 0x535f54
mov eax, dword [esp + 0x30]
cmp dword [eax + 0x1bc4], 0
jne 0x536939
mov eax, dword [esp + 0x24]
test eax, eax
je 0x536175
mov ecx, eax
sub ecx, edx
jae 0x536375
mov ecx, dword [esp + 0x8c]
sub ecx, edx
add ecx, dword [esp + 0x20]
sub edx, eax
mov eax, ebp
sub eax, edx
jbe 0x536578
cmp edx, 0x20
mov dword [esp + 0xc], ebx
mov dword [esp + 0x10], esi
mov dword [esp + 0x14], eax
jb 0x5360a5
mov eax, dword [esp + 0x40]
cmp dword [esp], eax
jae 0x535fc1
mov eax, dword [esp + 0x88]
mov esi, dword [esp]
add eax, esi
mov ebp, edx
mov edx, dword [esp + 0x10]
sub edx, esi
add edx, eax
cmp ecx, edx
mov edx, ebp
jb 0x5360a5
mov dword [esp + 8], edx
and edx, 0xffffffe0
mov dword [esp + 0x2c], edx
lea eax, [edx - 0x20]
mov esi, eax
shr esi, 5
add esi, 1
mov ebp, esi
and ebp, 3
xor edx, edx
cmp eax, 0x60
jb 0x536050
and esi, 0xfffffffc
mov eax, dword [esp]
sub eax, dword [esp + 0x28]
sub eax, dword [esp + 0x18]
add eax, dword [esp + 0x60]
xor edx, edx
movups xmm0, xmmword [eax + edx - 0x70]
movups xmm1, xmmword [eax + edx - 0x60]
mov ebx, dword [esp]
movups xmmword [ebx + edx], xmm0
movups xmmword [ebx + edx + 0x10], xmm1
movups xmm0, xmmword [eax + edx - 0x50]
movups xmm1, xmmword [eax + edx - 0x40]
movups xmmword [ebx + edx + 0x20], xmm0
movups xmmword [ebx + edx + 0x30], xmm1
movups xmm0, xmmword [eax + edx - 0x30]
movups xmm1, xmmword [eax + edx - 0x20]
movups xmmword [ebx + edx + 0x40], xmm0
movups xmmword [ebx + edx + 0x50], xmm1
movups xmm0, xmmword [eax + edx - 0x10]
movups xmm1, xmmword [eax + edx]
movups xmmword [ebx + edx + 0x60], xmm0
movups xmmword [ebx + edx + 0x70], xmm1
sub edx, 0xffffff80
add esi, 0xfffffffc
jne 0x535ff7
test ebp, ebp
je 0x536089
mov esi, dword [esp]
lea eax, [edx + esi]
sub eax, dword [esp + 0x28]
sub eax, dword [esp + 0x18]
add eax, dword [esp + 0x7c]
add edx, esi
add edx, 0x10
shl ebp, 5
xor esi, esi
movups xmm0, xmmword [eax + esi - 0x10]
movups xmm1, xmmword [eax + esi]
movups xmmword [edx + esi - 0x10], xmm0
movups xmmword [edx + esi], xmm1
add esi, 0x20
cmp ebp, esi
jne 0x536070
mov ebp, dword [esp + 0x2c]
add dword [esp], ebp
mov edx, dword [esp + 8]
cmp edx, ebp
mov ebx, dword [esp + 0xc]
je 0x5366e3
and edx, 0x1f
add ecx, ebp
mov ebp, dword [esp + 4]
lea eax, [edx - 1]
mov esi, edx
and esi, 7
mov dword [esp + 8], edx
je 0x53667b
xor edx, edx
nop dword [eax]
movzx ebx, byte [ecx + edx]
mov ebp, dword [esp]
mov byte [ebp + edx], bl
add edx, 1
cmp esi, edx
jne 0x5360c0
add dword [esp], edx
sub dword [esp + 8], edx
add ecx, edx
mov edx, dword [esp + 4]
mov ebx, dword [esp + 0xc]
jmp 0x53667d
mov dword [esp + 0xc], ebx
mov ecx, dword [esp]
sub ecx, esi
neg esi
add ecx, 2
xor eax, eax
mov edx, ebp
nop word [eax + eax]
movzx ebx, byte [ecx + eax - 2]
mov ebp, dword [esp]
mov byte [ebp + eax], bl
movzx ebx, byte [ecx + eax - 1]
mov byte [ebp + eax + 1], bl
movzx ebx, byte [ecx + eax]
mov byte [ebp + eax + 2], bl
add edx, 0xfffffffd
add eax, 3
cmp edx, 2
ja 0x536100
mov ecx, eax
mov edx, dword [esp + 8]
sub ecx, edx
je 0x53616d
neg edx
lea ecx, [eax + edx]
add ecx, 1
mov ebx, dword [esp]
lea edx, [ebx + esi]
add edx, 2
mov dl, byte [edx + eax - 2]
mov byte [ebx + eax], dl
test ecx, ecx
je 0x53665f
mov edx, dword [esp]
add esi, edx
mov cl, byte [eax + esi + 1]
mov byte [edx + eax + 1], cl
lea ebp, [edx + eax]
add ebp, 2
mov dword [esp], ebp
jmp 0x53666a
add dword [esp], eax
jmp 0x53666a
mov ecx, dword [esp + 0x44]
sub ecx, edx
add ecx, dword [esp + 0x20]
mov eax, ebp
sub eax, edx
jbe 0x536578
mov dword [esp + 0x14], eax
cmp edx, 0x20
mov dword [esp + 0x10], esi
jb 0x5362b5
mov eax, dword [esp + 0x40]
cmp dword [esp], eax
jae 0x5361c0
mov eax, dword [esp + 0x38]
mov esi, dword [esp]
add eax, esi
mov ebp, edx
mov edx, dword [esp + 0x10]
sub edx, esi
add edx, eax
cmp ecx, edx
mov edx, ebp
jb 0x5362b5
mov dword [esp + 0xc], ebx
mov dword [esp + 8], edx
and edx, 0xffffffe0
mov dword [esp + 0x2c], edx
lea eax, [edx - 0x20]
mov esi, eax
shr esi, 5
add esi, 1
mov ebp, esi
and ebp, 3
xor edx, edx
cmp eax, 0x60
jb 0x536259
and esi, 0xfffffffc
mov eax, dword [esp]
sub eax, dword [esp + 0x28]
sub eax, dword [esp + 0x18]
add eax, dword [esp + 0x78]
xor edx, edx
nop word [eax + eax]
movups xmm0, xmmword [eax + edx - 0x70]
movups xmm1, xmmword [eax + edx - 0x60]
mov ebx, dword [esp]
movups xmmword [ebx + edx], xmm0
movups xmmword [ebx + edx + 0x10], xmm1
movups xmm0, xmmword [eax + edx - 0x50]
movups xmm1, xmmword [eax + edx - 0x40]
movups xmmword [ebx + edx + 0x20], xmm0
movups xmmword [ebx + edx + 0x30], xmm1
movups xmm0, xmmword [eax + edx - 0x30]
movups xmm1, xmmword [eax + edx - 0x20]
movups xmmword [ebx + edx + 0x40], xmm0
movups xmmword [ebx + edx + 0x50], xmm1
movups xmm0, xmmword [eax + edx - 0x10]
movups xmm1, xmmword [eax + edx]
movups xmmword [ebx + edx + 0x60], xmm0
movups xmmword [ebx + edx + 0x70], xmm1
sub edx, 0xffffff80
add esi, 0xfffffffc
jne 0x536200
test ebp, ebp
je 0x536299
mov esi, dword [esp]
lea eax, [edx + esi]
sub eax, dword [esp + 0x28]
sub eax, dword [esp + 0x18]
add eax, dword [esp + 0x84]
add edx, esi
add edx, 0x10
shl ebp, 5
xor esi, esi
nop dword [eax]
movups xmm0, xmmword [eax + esi - 0x10]
movups xmm1, xmmword [eax + esi]
movups xmmword [edx + esi - 0x10], xmm0
movups xmmword [edx + esi], xmm1
add esi, 0x20
cmp ebp, esi
jne 0x536280
mov ebp, dword [esp + 0x2c]
add dword [esp], ebp
mov edx, dword [esp + 8]
cmp edx, ebp
mov ebx, dword [esp + 0xc]
je 0x536563
and edx, 0x1f
add ecx, ebp
mov eax, dword [esp + 4]
lea ebp, [edx - 1]
mov esi, edx
and esi, 7
mov dword [esp + 8], edx
mov dword [esp + 0x18], ebp
je 0x536303
mov dword [esp + 0xc], ebx
xor edx, edx
nop word cs:[eax + eax]
nop dword [eax + eax]
movzx ebx, byte [ecx + edx]
mov ebp, dword [esp]
mov byte [ebp + edx], bl
add edx, 1
cmp esi, edx
jne 0x5362e0
add dword [esp], edx
sub dword [esp + 8], edx
add ecx, edx
mov eax, dword [esp + 4]
mov ebx, dword [esp + 0xc]
mov edx, dword [esp + 0x10]
mov esi, dword [esp + 0x14]
cmp dword [esp + 0x18], 7
jb 0x53656f
xor eax, eax
mov ebp, dword [esp + 8]
nop dword [eax]
movzx edx, byte [ecx + eax]
mov esi, dword [esp]
mov byte [esi + eax], dl
movzx edx, byte [ecx + eax + 1]
mov byte [esi + eax + 1], dl
movzx edx, byte [ecx + eax + 2]
mov byte [esi + eax + 2], dl
movzx edx, byte [ecx + eax + 3]
mov byte [esi + eax + 3], dl
movzx edx, byte [ecx + eax + 4]
mov byte [esi + eax + 4], dl
movzx edx, byte [ecx + eax + 5]
mov byte [esi + eax + 5], dl
movzx edx, byte [ecx + eax + 6]
mov byte [esi + eax + 6], dl
movzx edx, byte [ecx + eax + 7]
mov byte [esi + eax + 7], dl
add eax, 8
cmp ebp, eax
jne 0x536320
jmp 0x536560
add ecx, dword [esp + 0x20]
mov eax, ebp
sub eax, edx
jbe 0x536578
mov dword [esp + 0x14], eax
cmp edx, 0x20
mov dword [esp + 0x10], esi
jb 0x5364a5
mov eax, dword [esp + 0x3c]
cmp dword [esp], eax
jae 0x5363ba
mov eax, dword [esp + 0x38]
mov esi, dword [esp]
add eax, esi
mov ebp, edx
mov edx, dword [esp + 0x10]
sub edx, esi
add edx, eax
cmp ecx, edx
mov edx, ebp
jb 0x5364a5
mov dword [esp + 0xc], ebx
mov dword [esp + 8], edx
and edx, 0xffffffe0
mov dword [esp + 0x2c], edx
lea eax, [edx - 0x20]
mov esi, eax
shr esi, 5
add esi, 1
mov ebp, esi
and ebp, 3
xor edx, edx
cmp eax, 0x60
jb 0x53644d
and esi, 0xfffffffc
mov eax, dword [esp]
sub eax, dword [esp + 0x28]
sub eax, dword [esp + 0x18]
add eax, dword [esp + 0x64]
xor edx, edx
movups xmm0, xmmword [eax + edx - 0x70]
movups xmm1, xmmword [eax + edx - 0x60]
mov ebx, dword [esp]
movups xmmword [ebx + edx], xmm0
movups xmmword [ebx + edx + 0x10], xmm1
movups xmm0, xmmword [eax + edx - 0x50]
movups xmm1, xmmword [eax + edx - 0x40]
movups xmmword [ebx + edx + 0x20], xmm0
movups xmmword [ebx + edx + 0x30], xmm1
movups xmm0, xmmword [eax + edx - 0x30]
movups xmm1, xmmword [eax + edx - 0x20]
movups xmmword [ebx + edx + 0x40], xmm0
movups xmmword [ebx + edx + 0x50], xmm1
movups xmm0, xmmword [eax + edx - 0x10]
movups xmm1, xmmword [eax + edx]
movups xmmword [ebx + edx + 0x60], xmm0
movups xmmword [ebx + edx + 0x70], xmm1
sub edx, 0xffffff80
add esi, 0xfffffffc
jne 0x5363f4
test ebp, ebp
je 0x536489
mov esi, dword [esp]
lea eax, [edx + esi]
sub eax, dword [esp + 0x28]
sub eax, dword [esp + 0x18]
add eax, dword [esp + 0x80]
add edx, esi
add edx, 0x10
shl ebp, 5
xor esi, esi
movups xmm0, xmmword [eax + esi - 0x10]
movups xmm1, xmmword [eax + esi]
movups xmmword [edx + esi - 0x10], xmm0
movups xmmword [edx + esi], xmm1
add esi, 0x20
cmp ebp, esi
jne 0x536470
mov ebp, dword [esp + 0x2c]
add dword [esp], ebp
mov edx, dword [esp + 8]
cmp edx, ebp
mov ebx, dword [esp + 0xc]
je 0x536563
and edx, 0x1f
add ecx, ebp
mov eax, dword [esp + 4]
lea ebp, [edx - 1]
mov esi, edx
and esi, 7
mov dword [esp + 8], edx
mov dword [esp + 0x18], ebp
je 0x5364f3
mov dword [esp + 0xc], ebx
xor edx, edx
nop word cs:[eax + eax]
nop dword [eax + eax]
movzx ebx, byte [ecx + edx]
mov ebp, dword [esp]
mov byte [ebp + edx], bl
add edx, 1
cmp esi, edx
jne 0x5364d0
add dword [esp], edx
sub dword [esp + 8], edx
add ecx, edx
mov eax, dword [esp + 4]
mov ebx, dword [esp + 0xc]
mov edx, dword [esp + 0x10]
mov esi, dword [esp + 0x14]
cmp dword [esp + 0x18], 7
jb 0x53656f
xor eax, eax
mov ebp, dword [esp + 8]
nop dword [eax + eax]
movzx edx, byte [ecx + eax]
mov esi, dword [esp]
mov byte [esi + eax], dl
movzx edx, byte [ecx + eax + 1]
mov byte [esi + eax + 1], dl
movzx edx, byte [ecx + eax + 2]
mov byte [esi + eax + 2], dl
movzx edx, byte [ecx + eax + 3]
mov byte [esi + eax + 3], dl
movzx edx, byte [ecx + eax + 4]
mov byte [esi + eax + 4], dl
movzx edx, byte [ecx + eax + 5]
mov byte [esi + eax + 5], dl
movzx edx, byte [ecx + eax + 6]
mov byte [esi + eax + 6], dl
movzx edx, byte [ecx + eax + 7]
mov byte [esi + eax + 7], dl
add eax, 8
cmp ebp, eax
jne 0x536510
add dword [esp], eax
mov eax, dword [esp + 4]
mov edx, dword [esp + 0x10]
mov esi, dword [esp + 0x14]
mov ecx, dword [esp]
sub ecx, edx
mov edx, eax
jmp 0x53657e
mov esi, ebp
mov edx, dword [esp + 4]
cmp esi, 3
jb 0x5365b6
lea ebp, [esi - 3]
mov eax, ebp
mov edx, 0xaaaaaaab
mul edx
bt edx, 1
jae 0x5365df
mov edx, dword [esp + 4]
cmp ebp, 3
jae 0x536606
test ebp, ebp
je 0x5365bc
mov esi, edx
mov al, byte [ecx]
mov edx, dword [esp]
mov byte [edx], al
cmp ebp, 1
jne 0x5365c5
add dword [esp], 1
jmp 0x5365d4
mov ebp, esi
test ebp, ebp
jne 0x5365a2
mov ebp, dword [esp + 0x1c]
jmp 0x535dba
mov al, byte [ecx + 1]
mov ecx, dword [esp]
mov byte [ecx + 1], al
add ecx, 2
mov dword [esp], ecx
mov edx, esi
mov ebp, dword [esp + 0x1c]
jmp 0x535dba
mov al, byte [ecx]
mov edx, dword [esp]
mov byte [edx], al
mov al, byte [ecx + 1]
mov byte [edx + 1], al
mov al, byte [ecx + 2]
add ecx, 3
mov byte [edx + 2], al
add edx, 3
mov dword [esp], edx
mov esi, ebp
mov edx, dword [esp + 4]
cmp ebp, 3
jb 0x53659e
mov dword [esp + 4], edx
nop word [eax + eax]
movzx eax, byte [ecx]
mov edx, dword [esp]
mov byte [edx], al
movzx eax, byte [ecx + 1]
mov byte [edx + 1], al
movzx eax, byte [ecx + 2]
mov byte [edx + 2], al
movzx eax, byte [ecx + 3]
mov byte [edx + 3], al
movzx eax, byte [ecx + 4]
mov byte [edx + 4], al
movzx eax, byte [ecx + 5]
add ecx, 6
mov byte [edx + 5], al
add edx, 6
mov dword [esp], edx
add esi, 0xfffffffa
cmp esi, 2
ja 0x536610
mov ebp, esi
mov edx, dword [esp + 4]
test ebp, ebp
jne 0x5365a2
jmp 0x5365bc
mov ecx, dword [esp]
add ecx, eax
add ecx, 1
mov dword [esp], ecx
mov edx, dword [esp + 4]
mov ebx, dword [esp + 0xc]
mov ebp, dword [esp + 0x1c]
jmp 0x535dba
mov edx, ebp
mov ebp, dword [esp + 0x20]
cmp eax, 7
jb 0x5366eb
xor eax, eax
mov ebp, dword [esp + 8]
nop dword [eax]
movzx edx, byte [ecx + eax]
mov esi, dword [esp]
mov byte [esi + eax], dl
movzx edx, byte [ecx + eax + 1]
mov byte [esi + eax + 1], dl
movzx edx, byte [ecx + eax + 2]
mov byte [esi + eax + 2], dl
movzx edx, byte [ecx + eax + 3]
mov byte [esi + eax + 3], dl
movzx edx, byte [ecx + eax + 4]
mov byte [esi + eax + 4], dl
movzx edx, byte [ecx + eax + 5]
mov byte [esi + eax + 5], dl
movzx edx, byte [ecx + eax + 6]
mov byte [esi + eax + 6], dl
movzx edx, byte [ecx + eax + 7]
mov byte [esi + eax + 7], dl
add eax, 8
cmp ebp, eax
jne 0x536690
add dword [esp], eax
mov edx, dword [esp + 4]
mov ebp, dword [esp + 0x20]
mov esi, dword [esp + 0x14]
mov ecx, esi
mov eax, dword [esp + 0x24]
sub ecx, eax
jbe 0x536767
mov dword [esp + 0x14], ecx
cmp eax, 0x20
jb 0x536724
mov eax, dword [esp + 0x3c]
cmp dword [esp], eax
jae 0x5367e4
mov eax, dword [esp + 0x24]
mov ecx, dword [esp]
add eax, ecx
cmp ebp, eax
jae 0x5367e4
mov eax, dword [esp + 0x24]
mov ecx, ebp
mov esi, dword [esp + 0x10]
lea ebx, [eax - 1]
mov dword [esp + 8], ebx
mov ebx, eax
and ebx, 7
je 0x53676e
xor esi, esi
nop word [eax + eax]
movzx edx, byte [ecx + esi]
mov ebp, dword [esp]
mov byte [ebp + esi], dl
add esi, 1
cmp ebx, esi
jne 0x536740
add dword [esp], esi
sub eax, esi
add ecx, esi
mov edx, dword [esp + 4]
mov ebx, dword [esp + 0xc]
mov esi, dword [esp + 0x10]
jmp 0x536772
mov ecx, ebp
jmp 0x53657e
mov ebx, dword [esp + 0xc]
cmp dword [esp + 8], 7
jb 0x5368a2
xor edx, edx
nop
movzx ebx, byte [ecx + edx]
mov esi, dword [esp]
mov byte [esi + edx], bl
movzx ebx, byte [ecx + edx + 1]
mov byte [esi + edx + 1], bl
movzx ebx, byte [ecx + edx + 2]
mov byte [esi + edx + 2], bl
movzx ebx, byte [ecx + edx + 3]
mov byte [esi + edx + 3], bl
movzx ebx, byte [ecx + edx + 4]
mov byte [esi + edx + 4], bl
movzx ebx, byte [ecx + edx + 5]
mov byte [esi + edx + 5], bl
movzx ebx, byte [ecx + edx + 6]
mov byte [esi + edx + 6], bl
movzx ebx, byte [ecx + edx + 7]
mov byte [esi + edx + 7], bl
add edx, 8
cmp eax, edx
jne 0x536780
add dword [esp], edx
mov edx, dword [esp + 4]
mov ebx, dword [esp + 0xc]
mov esi, dword [esp + 0x10]
jmp 0x5368a2
xor eax, eax
cmp dword [esp + 0x74], 0x60
jb 0x53684d
xor eax, eax
mov ecx, dword [esp + 0x54]
movups xmm0, xmmword [ebp + eax]
movups xmm1, xmmword [ebp + eax + 0x10]
mov edx, dword [esp]
movups xmmword [edx + eax], xmm0
movups xmmword [edx + eax + 0x10], xmm1
movups xmm0, xmmword [ebp + eax + 0x20]
movups xmm1, xmmword [ebp + eax + 0x30]
movups xmmword [edx + eax + 0x20], xmm0
movups xmmword [edx + eax + 0x30], xmm1
movups xmm0, xmmword [ebp + eax + 0x40]
movups xmm1, xmmword [ebp + eax + 0x50]
movups xmmword [edx + eax + 0x40], xmm0
movups xmmword [edx + eax + 0x50], xmm1
movups xmm0, xmmword [ebp + eax + 0x60]
movups xmm1, xmmword [ebp + eax + 0x70]
movups xmmword [edx + eax + 0x60], xmm0
movups xmmword [edx + eax + 0x70], xmm1
sub eax, 0xffffff80
add ecx, 0xfffffffc
jne 0x5367f3
cmp dword [esp + 0x68], 0
mov ebp, dword [esp + 0x1c]
mov esi, dword [esp + 0x10]
je 0x536885
mov ecx, dword [esp + 0x58]
add ecx, eax
mov edx, dword [esp]
add eax, edx
add eax, 0x10
xor edx, edx
movups xmm0, xmmword [ecx + edx - 0x10]
movups xmm1, xmmword [ecx + edx]
movups xmmword [eax + edx - 0x10], xmm0
movups xmmword [eax + edx], xmm1
add edx, 0x20
cmp ebp, edx
jne 0x53686c
mov edx, dword [esp + 0x70]
add dword [esp], edx
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0x5c]
cmp dword [esp + 0x24], edx
mov edx, dword [esp + 4]
jne 0x53672a
mov ecx, dword [esp]
sub ecx, esi
mov esi, dword [esp + 0x14]
jmp 0x53657e
mov edx, 0x3f3f
mov ecx, str.invalid_literal_length_code
test al, 0x20
je 0x5368c9
jmp 0x5368d8
mov ecx, str.invalid_distance_code
mov edi, esi
mov ebx, eax
mov eax, dword [esp + 0xb0]
mov dword [eax + 0x18], ecx
mov edx, 0x3f51
mov eax, dword [esp + 0x30]
mov dword [eax + 4], edx
mov edx, dword [esp + 4]
mov eax, ebx
shr eax, 3
sub edx, eax
mov eax, dword [esp + 0xb0]
mov dword [eax], edx
mov ecx, dword [esp + 0x4c]
sub ecx, edx
mov edx, dword [esp]
mov dword [eax + 0xc], edx
add ecx, 5
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x48]
sub ecx, edx
add ecx, 0x101
mov dword [eax + 0x10], ecx
and ebx, 7
mov eax, 0xffffffff
mov ecx, ebx
shl eax, cl
not eax
and eax, edi
mov ecx, dword [esp + 0x30]
mov dword [ecx + 0x3c], eax
mov dword [ecx + 0x40], ebx
add esp, 0x9c
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, str.invalid_distance_too_far_back
jmp 0x5368c9