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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x60
mov edi, dword [esp + 0x88]
mov edx, dword [esp + 0x80]
mov ebx, dword [esp + 0x74]
xor esi, esi
mov ebp, 0
test ebx, ebx
je 0x4f5f96
mov eax, ebx
mov ebp, 0
and eax, 3
jne 0x4f5f96
push 0x4014
push 0
push ebx
mov ebp, edx
call sub.msvcrt.dll_memset
mov edx, ebp
add esp, 0xc
mov ebp, ebx
mov ebx, dword [esp + 0x84]
test edi, edi
mov eax, 1
cmovg eax, edi
cmp eax, 0x10001
mov ecx, 0x10001
cmovb ecx, eax
mov dword [esp + 0x44], ecx
cmp edx, 0x7e000000
ja 0x4f5fd6
mov ecx, 0x80808081
mov eax, edx
mov edi, edx
mul ecx
shr edx, 7
lea esi, [edi + edx]
add esi, 0x10
mov edx, edi
mov ecx, dword [esp + 0x78]
cmp esi, ebx
mov dword [esp + 0x1c], ebp
jle 0x4f6612
mov edi, ebx
cmp edx, 0x1000a
mov esi, dword [esp + 0x44]
jg 0x4f6678
xor eax, eax
cmp edx, 0x7e000000
ja 0x4f7c08
test edx, edx
je 0x4f73e1
mov eax, dword [ebp + 0x4000]
mov edx, dword [esp + 0x7c]
add edi, edx
mov dword [esp + 0xc], edi
mov ecx, dword [esp + 0x80]
add dword [ebp + 0x4010], ecx
mov ecx, dword [esp + 0x80]
add ecx, eax
mov dword [ebp + 0x4000], ecx
mov edi, dword [esp + 0x78]
mov dword [ebp + 0x4004], 3
mov ecx, dword [esp + 0x80]
mov ebx, edi
cmp ecx, 0xd
jb 0x4f79f6
mov edx, eax
neg edx
mov ebx, edi
sub ebx, eax
mov dword [esp + 8], ebx
lea ebx, [edi + ecx]
add ebx, 0xfffffff5
mov dword [esp + 0x34], ebx
lea ebx, [edi + ecx]
add ebx, 0xfffffffb
imul ecx, dword [edi], 0x9e3779b1
shr ecx, 0x13
mov word [ebp + ecx*2], ax
shl esi, 6
lea eax, [ebx - 3]
mov dword [esp + 0x30], eax
mov dword [esp + 0x50], ebx
lea eax, [ebx - 1]
mov dword [esp + 0x4c], eax
add edx, edi
mov dword [esp + 0x54], edx
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x10], eax
mov eax, esi
mov dword [esp + 0x44], esi
lea ecx, [edi + 1]
mov dword [esp + 0x18], edi
mov edx, dword [edi + 1]
mov dword [esp + 0x14], edx
mov edi, 1
mov edx, eax
nop word cs:[eax + eax]
nop dword [eax]
mov ebx, ecx
mov ecx, edi
add ecx, ebx
cmp ecx, dword [esp + 0x34]
ja 0x4f7c1d
imul edi, dword [esp + 0x14], 0x9e3779b1
shr edi, 0x13
movzx eax, word [ebp + edi*2]
mov dword [esp], eax
mov ebp, ebx
mov esi, dword [esp + 8]
sub ebp, esi
mov eax, dword [ecx]
mov dword [esp + 0x14], eax
mov dword [esp + 4], ebx
mov ebx, dword [esp + 0x1c]
mov word [ebx + edi*2], bp
mov ebx, dword [esp + 4]
mov edi, edx
shr edi, 6
add edx, 1
mov eax, dword [esp]
mov ebp, dword [esi + eax]
cmp ebp, dword [ebx]
mov ebp, dword [esp + 0x1c]
jne 0x4f60d0
mov esi, eax
add esi, dword [esp + 0x54]
mov dword [esp], esi
mov ecx, ebx
mov eax, dword [esp + 0x18]
sub ecx, eax
lea esi, [ecx - 0xf]
lea edi, [ebx + 0xef]
mov dh, al
shl dh, 4
mov dl, bl
shl dl, 4
sub dl, dh
xor ebp, ebp
mov dword [esp + 0x40], edi
mov dword [esp + 0x3c], esi
nop word [eax + eax]
mov dword [esp + 0x20], esi
mov dword [esp + 0x48], edi
mov byte [esp + 0x38], dl
mov dword [esp + 0x28], ecx
mov eax, dword [esp]
add eax, ebp
mov ecx, dword [esp + 4]
mov dword [esp + 0x2c], ebp
lea ebx, [ecx + ebp]
mov dword [esp + 0x24], eax
cmp eax, dword [esp + 0x78]
mov dword [esp + 0x14], ebx
jbe 0x4f61cc
cmp ebx, dword [esp + 0x18]
jbe 0x4f61cc
mov eax, dword [esp + 4]
mov ebx, dword [esp + 0x2c]
mov dh, byte [eax + ebx - 1]
lea ebp, [ebx - 1]
mov eax, dword [esp + 0x20]
lea esi, [eax - 1]
mov eax, dword [esp + 0x48]
lea edi, [eax - 1]
mov dl, byte [esp + 0x38]
add dl, 0xf0
mov eax, dword [esp + 0x28]
lea ecx, [eax - 1]
mov eax, dword [esp]
cmp dh, byte [eax + ebx - 1]
mov ebx, dword [esp + 0x14]
je 0x4f6160
mov esi, dword [esp + 0x10]
mov eax, esi
mov edi, dword [esp + 0x18]
sub eax, edi
mov ecx, dword [esp + 0x40]
lea ebp, [eax + ecx]
add ebp, 0xffffff11
mov eax, dword [esp + 0x28]
mov edx, 0x80808081
mul edx
shr edx, 7
add edx, ebp
mov ebp, dword [esp + 0x2c]
lea eax, [edx + ebp]
add eax, 9
cmp eax, dword [esp + 0xc]
ja 0x4f7c10
lea eax, [ecx - 0xef]
sub eax, edi
add eax, ebp
lea ecx, [esi + 1]
cmp eax, 0xf
mov edx, edi
jb 0x4f62b9
mov eax, dword [esp + 0x3c]
add eax, ebp
mov byte [esi], 0xf0
cmp eax, 0xff
jl 0x4f62ae
mov edi, dword [esp + 0x20]
cmp edi, 0x1fd
mov dword [esp + 0x10], esi
mov esi, ebp
mov eax, 0x1fd
cmovge edi, eax
mov ebp, dword [esp + 4]
sub ebp, edx
mov eax, ebp
sub eax, edi
add eax, esi
add eax, 0xef
mov edx, 0x80808081
mul edx
shr edx, 7
mov dword [esp], edx
lea eax, [edx + 1]
push eax
push 0xff
push ecx
call sub.msvcrt.dll_memset
add esp, 0xc
add edi, dword [esp + 0x18]
mov eax, dword [esp + 0x48]
sub eax, edi
mov ecx, 0x80808081
mul ecx
shr edx, 7
mov eax, edx
shl eax, 8
sub edx, eax
add edx, ebp
mov eax, dword [esp + 0x10]
mov ecx, dword [esp]
add ecx, eax
add ecx, 2
lea eax, [esi + edx]
add eax, 0xfffffef2
mov edx, dword [esp + 0x18]
mov edi, dword [esp + 0x40]
mov byte [ecx], al
add ecx, 1
jmp 0x4f62c3
mov al, byte [esp + 0x38]
mov byte [esi], al
mov edi, dword [esp + 0x40]
sub edi, edx
add edi, ecx
mov eax, dword [esp + 4]
sub eax, edx
add eax, ecx
mov esi, dword [esp + 0x2c]
add eax, esi
lea edx, [ecx + 8]
cmp eax, edx
mov ebp, edx
cmova ebp, eax
add esi, edi
add esi, 0xffffff11
mov edi, ecx
not edi
add ebp, edi
cmp ebp, 0x18
jae 0x4f6303
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x18]
mov edi, dword [esp + 0x24]
jmp 0x4f6400
mov dword [esp + 4], ebp
cmp eax, edx
mov dword [esp], edx
cmovbe eax, edx
add eax, edi
and eax, 0xfffffff8
mov edx, dword [esp + 0x18]
lea ebp, [edx + eax]
add ebp, 8
cmp ecx, ebp
jae 0x4f633d
lea ebx, [ecx + eax]
add ebx, 8
cmp edx, ebx
jae 0x4f633d
mov eax, dword [esp + 0x10]
mov ebx, dword [esp + 0x14]
mov edi, dword [esp + 0x24]
jmp 0x4f6400
mov ebp, dword [esp + 4]
shr ebp, 3
add ebp, 1
mov dword [esp + 4], ebp
and ebp, 0xfffffffc
lea ebx, [ebp - 4]
mov eax, ebx
shr eax, 2
add eax, 1
mov dword [esp + 0x2c], eax
test ebx, ebx
je 0x4f63c0
mov eax, dword [esp + 0x28]
add eax, ecx
mov edx, dword [esp]
cmp eax, edx
cmovbe eax, edx
add edi, eax
shr edi, 3
add edi, 1
and edi, 0xfffffffc
add edi, 0xfffffffc
shr edi, 2
add edi, 1
and edi, 0xfffffffe
xor eax, eax
mov ebx, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
movups xmm0, xmmword [edx + eax*8]
movups xmm1, xmmword [edx + eax*8 + 0x10]
movups xmmword [ecx + eax*8], xmm0
movups xmmword [ecx + eax*8 + 0x10], xmm1
movups xmm0, xmmword [edx + eax*8 + 0x20]
movups xmm1, xmmword [edx + eax*8 + 0x30]
movups xmmword [ecx + eax*8 + 0x20], xmm0
movups xmmword [ecx + eax*8 + 0x30], xmm1
add eax, 8
add edi, 0xfffffffe
jne 0x4f6390
jmp 0x4f63ca
xor eax, eax
mov ebx, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
test byte [esp + 0x2c], 1
je 0x4f63e3
movups xmm0, xmmword [edx + eax*8]
movups xmm1, xmmword [edx + eax*8 + 0x10]
movups xmmword [ecx + eax*8], xmm0
movups xmmword [ecx + eax*8 + 0x10], xmm1
cmp dword [esp + 4], ebp
mov eax, dword [esp + 0x10]
mov edi, dword [esp + 0x24]
je 0x4f6412
lea edx, [edx + ebp*8]
lea ecx, [ecx + ebp*8]
nop word [eax + eax]
movsd xmm0, qword [edx]
movsd qword [ecx], xmm0
add ecx, 8
add edx, 8
cmp ecx, esi
jb 0x4f6400
mov ebp, dword [esp + 0x1c]
nop word cs:[eax + eax]
mov dword [esp + 0x10], eax
mov eax, ebx
sub eax, edi
mov word [esi], ax
lea eax, [ebx + 4]
lea ecx, [edi + 4]
cmp dword [esp + 0x30], eax
mov dword [esp + 0x14], ebx
jbe 0x4f65ed
mov edx, dword [eax]
xor edx, dword [ecx]
je 0x4f6450
bsf ebx, edx
shr ebx, 3
jmp 0x4f64b8
add ebx, 8
add edi, 8
mov ecx, edi
cmp ebx, dword [esp + 0x30]
jae 0x4f6485
mov edx, ebx
sub edx, dword [esp + 0x14]
add edx, 0xfffffffc
nop word [eax + eax]
mov edi, dword [ebx]
xor edi, dword [ecx]
jne 0x4f64b0
add ebx, 4
add ecx, 4
add edx, 4
cmp ebx, dword [esp + 0x30]
jb 0x4f6470
cmp ebx, dword [esp + 0x4c]
jae 0x4f65d1
movzx edx, word [ecx]
cmp dx, word [ebx]
mov edi, dword [esp + 0xc]
jne 0x4f65d5
add ebx, 2
add ecx, 2
jmp 0x4f65d5
bsf ebx, edi
shr ebx, 3
add ebx, edx
mov edi, dword [esp + 0xc]
lea eax, [ebx + 0xf0]
mov ecx, 0x80808081
mul ecx
shr edx, 7
lea eax, [esi + edx]
add eax, 8
cmp eax, edi
ja 0x4f7c10
lea eax, [esi + 2]
mov edx, dword [esp + 0x10]
mov cl, byte [edx]
cmp ebx, 0xf
jb 0x4f6560
add cl, 0xf
mov byte [edx], cl
lea ecx, [ebx - 0xf]
mov dword [eax], 0xffffffff
cmp ecx, 0x3fc
jb 0x4f6541
lea eax, [ebx - 0x40b]
mov ecx, 0x80808081
mul ecx
mov ebp, edx
lea eax, [esi + 6]
shr ebp, 9
lea ecx, [ebp*4 + 4]
push ecx
push 0xff
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
lea eax, [esi + ebp*4]
add eax, 6
imul ecx, ebp, 0xfffffc04
mov ebp, dword [esp + 0x1c]
add ecx, ebx
add ecx, 0xfffffbf5
movzx edx, cx
imul edx, edx, 0x8081
shr edx, 0x17
add ecx, edx
mov byte [eax + edx], cl
add eax, edx
add eax, 1
jmp 0x4f6564
add cl, bl
mov byte [edx], cl
mov edi, dword [esp + 0x14]
add edi, ebx
add edi, 4
cmp edi, dword [esp + 0x34]
jae 0x4f79e7
mov dword [esp], eax
lea ecx, [edi - 2]
imul edx, dword [edi - 2], 0x9e3779b1
shr edx, 0x13
mov eax, edi
mov ebx, dword [esp + 8]
sub ecx, ebx
mov word [ebp + edx*2], cx
imul ecx, dword [edi], 0x9e3779b1
shr ecx, 0x13
movzx edx, word [ebp + ecx*2]
mov dword [esp + 4], edx
mov esi, edi
sub esi, ebx
lea edi, [ebx + edx]
mov edx, ebp
mov word [ebp + ecx*2], si
mov ecx, dword [esp + 4]
mov ecx, dword [ebx + ecx]
mov ebx, eax
cmp ecx, dword [eax]
jne 0x4f65fe
mov eax, dword [esp]
lea esi, [eax + 1]
mov byte [eax], 0
mov ebp, edx
jmp 0x4f6420
mov edi, dword [esp + 0xc]
cmp ebx, dword [esp + 0x50]
jae 0x4f65e6
mov cl, byte [ecx]
xor edx, edx
cmp cl, byte [ebx]
sete dl
add ebx, edx
sub ebx, eax
jmp 0x4f64bc
mov ebx, eax
cmp ebx, dword [esp + 0x30]
jb 0x4f645e
jmp 0x4f6485
mov eax, dword [esp]
mov dword [esp + 0x10], eax
mov edi, ebx
mov eax, dword [esp + 0x44]
mov ebp, edx
jmp 0x4f60ad
cmp edx, 0x1000a
mov esi, dword [esp + 0x44]
jg 0x4f66d4
xor eax, eax
cmp edx, 0x7e000000
ja 0x4f7c08
test edx, edx
je 0x4f73e9
mov eax, dword [ebp + 0x4000]
lea edi, [ecx + edx]
mov dword [esp + 0x54], edi
add dword [ebp + 0x4010], edx
mov edi, edx
mov edx, ecx
lea ecx, [eax + edi]
mov dword [ebp + 0x4000], ecx
mov dword [ebp + 0x4004], 3
cmp edi, 0xd
jae 0x4f73fa
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x24], eax
jmp 0x4f7970
xor eax, eax
cmp edx, 0x7e000000
ja 0x4f7c08
cmp ecx, 0x10000
mov esi, ecx
mov ecx, 2
adc ecx, 0xffffffff
mov eax, dword [ebp + 0x4000]
add dword [ebp + 0x4010], edx
mov ebx, edx
add edx, eax
mov dword [ebp + 0x4000], edx
mov edx, ebx
mov dword [ebp + 0x4004], ecx
imul ecx, dword [esi], 0x9e3779b1
shr ecx, 0x14
add ebx, esi
add ebx, 0xfffffffb
mov dword [esp + 0x3c], ebx
cmp esi, 0x10000
jb 0x4f6737
mov dword [ebp + ecx*4], esi
jmp 0x4f673b
xor eax, eax
cmp edx, 0x7e000000
ja 0x4f7c08
cmp ecx, 0x10000
mov esi, ecx
mov ecx, 2
adc ecx, 0xffffffff
mov eax, dword [ebp + 0x4000]
add dword [ebp + 0x4010], edx
mov edi, edx
add edx, eax
mov dword [ebp + 0x4000], edx
mov edx, edi
mov dword [ebp + 0x4004], ecx
imul ecx, dword [esi], 0x9e3779b1
shr ecx, 0x14
add edi, esi
add edi, 0xfffffffb
mov dword [esp + 0x3c], edi
cmp esi, 0x10000
jb 0x4f6db5
mov dword [ebp + ecx*4], esi
jmp 0x4f6db9
mov dword [ebp + ecx*4], eax
mov ecx, esi
sub ecx, eax
mov dword [esp + 0x34], ecx
lea eax, [esi + edx]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x7c]
add edi, eax
lea ecx, [esi + edx]
add ecx, 0xfffffff5
mov dword [esp + 4], ecx
mov edx, dword [esp + 0x44]
shl edx, 6
mov ecx, dword [esp + 0x3c]
lea ebx, [ecx - 3]
mov dword [esp + 0x30], ebx
add ecx, 0xffffffff
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x54], edx
lea ecx, [edx + 1]
mov dword [esp + 0x40], ecx
mov dword [esp + 0x10], eax
mov edx, esi
mov dword [esp + 0xc], edi
imul ecx, dword [edx + 1], 0x9e3779b1
lea ebx, [edx + 1]
shr ecx, 0x14
lea eax, [edx + 2]
cmp esi, 0xffff
mov dword [esp + 8], edx
jbe 0x4f6801
cmp eax, dword [esp + 4]
ja 0x4f7b4a
mov edx, dword [esp + 0x54]
jmp 0x4f67df
mov eax, edx
sar eax, 6
shr edi, 0x14
add eax, esi
add edx, 1
mov ecx, edi
mov ebx, esi
cmp eax, dword [esp + 4]
mov ebp, dword [esp + 0x1c]
ja 0x4f7b42
mov esi, eax
imul edi, dword [eax], 0x9e3779b1
mov eax, dword [ebp + ecx*4]
mov dword [ebp + ecx*4], ebx
lea ecx, [eax + 0xffff]
cmp ecx, ebx
jb 0x4f67c0
mov ecx, dword [eax]
cmp ecx, dword [ebx]
jne 0x4f67c0
jmp 0x4f6865
mov esi, dword [esp + 0x44]
mov edx, dword [esp + 0x40]
jmp 0x4f6828
shr ebp, 0x14
mov eax, dword [esp]
mov ebx, dword [esp + 0x14]
add eax, ebx
lea ecx, [edx + 1]
shr edx, 6
mov esi, edx
mov edx, ecx
mov ecx, ebp
cmp eax, dword [esp + 4]
ja 0x4f7b42
mov dword [esp], esi
mov edi, ebx
sub ebx, dword [esp + 0x34]
mov dword [esp + 0x14], eax
imul ebp, dword [eax], 0x9e3779b1
mov esi, dword [esp + 0x1c]
mov eax, dword [esi + ecx*4]
mov dword [esi + ecx*4], ebx
lea ecx, [eax + 0xffff]
cmp ecx, ebx
jb 0x4f6810
mov ebx, edi
add eax, dword [esp + 0x34]
mov ecx, dword [eax]
cmp ecx, dword [edi]
jne 0x4f6810
mov edi, ebx
mov ecx, dword [esp + 8]
sub edi, ecx
lea ebp, [edi - 0xf]
lea esi, [ebx + 0xef]
mov edx, ebx
shl dl, 4
mov dh, cl
mov ecx, edi
shl dh, 4
sub dl, dh
xor edi, edi
mov dword [esp + 0x24], ebp
nop word [eax + eax]
mov dword [esp + 0x48], ebp
mov dword [esp + 0x38], esi
mov byte [esp + 0x28], dl
mov dword [esp + 0x2c], ecx
lea edx, [eax + edi]
mov dword [esp], edi
lea ecx, [ebx + edi]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], edx
cmp edx, dword [esp + 0x78]
jbe 0x4f68f9
mov ecx, dword [esp + 0x14]
cmp ecx, dword [esp + 8]
jbe 0x4f68f9
mov esi, ebx
mov ebx, dword [esp]
mov dh, byte [esi + ebx - 1]
lea edi, [ebx - 1]
mov ecx, dword [esp + 0x48]
lea ebp, [ecx - 1]
mov ecx, dword [esp + 0x38]
add ecx, 0xffffffff
mov dword [esp + 0x20], ecx
mov dl, byte [esp + 0x28]
add dl, 0xf0
mov ecx, dword [esp + 0x2c]
add ecx, 0xffffffff
cmp dh, byte [eax + ebx - 1]
mov ebx, esi
mov esi, dword [esp + 0x20]
je 0x4f6890
sub ebx, dword [esp + 8]
mov esi, dword [esp + 0x10]
mov eax, dword [esp + 0x2c]
mov edx, 0x80808081
mul edx
shr edx, 7
add edx, esi
add edx, ebx
mov edi, dword [esp]
lea eax, [edi + edx]
add eax, 9
cmp eax, dword [esp + 0xc]
ja 0x4f7c10
mov dword [esp + 0x20], ebx
lea eax, [ebx + edi]
lea ecx, [esi + 1]
cmp eax, 0xf
mov ebp, dword [esp + 0x1c]
mov edx, dword [esp + 0x24]
jb 0x4f69cb
add edx, edi
mov byte [esi], 0xf0
cmp edx, 0xff
jl 0x4f69d5
mov ebx, esi
mov edi, dword [esp + 0x48]
cmp edi, 0x1fd
mov eax, 0x1fd
cmovge edi, eax
mov esi, dword [esp + 0x20]
mov eax, esi
sub eax, edi
mov edx, dword [esp]
add eax, edx
add eax, 0xef
mov edx, 0x80808081
mul edx
shr edx, 7
mov dword [esp + 0x28], edx
lea eax, [edx + 1]
push eax
push 0xff
push ecx
call sub.msvcrt.dll_memset
add esp, 0xc
add edi, dword [esp + 8]
mov eax, dword [esp + 0x38]
sub eax, edi
mov ecx, 0x80808081
mul ecx
shr edx, 7
mov eax, edx
shl eax, 8
sub edx, eax
mov eax, dword [esp]
mov ecx, dword [esp + 0x28]
add ecx, ebx
add ecx, 2
add edx, esi
add edx, eax
add edx, 0xfffffef2
jmp 0x4f69d7
mov al, byte [esp + 0x28]
mov byte [esi], al
mov eax, edi
jmp 0x4f69dc
mov eax, edi
mov byte [ecx], dl
add ecx, 1
mov edi, dword [esp + 0x20]
add edi, ecx
lea esi, [edi + eax]
lea eax, [ecx + 8]
cmp esi, eax
mov ebx, eax
cmova eax, esi
mov edx, ecx
not edx
add eax, edx
mov dword [esp + 0x28], eax
cmp eax, 0x18
jb 0x4f6a26
add edi, dword [esp]
mov eax, ebx
cmp edi, ebx
cmovbe edi, ebx
add edi, edx
and edi, 0xfffffff8
mov ebx, dword [esp + 8]
add ebx, edi
add ebx, 8
cmp ecx, ebx
jae 0x4f6a5b
lea ebx, [ecx + edi]
add ebx, 8
cmp dword [esp + 8], ebx
jae 0x4f6a5b
mov edi, dword [esp + 0xc]
mov eax, dword [esp + 8]
mov ebx, dword [esp + 0x18]
nop word cs:[eax + eax]
nop dword [eax]
movsd xmm0, qword [eax]
movsd qword [ecx], xmm0
add ecx, 8
add eax, 8
cmp ecx, esi
jb 0x4f6a40
mov edx, dword [esp + 0x14]
jmp 0x4f6b3a
mov dword [esp + 0x38], eax
mov edi, dword [esp + 0x28]
shr edi, 3
add edi, 1
mov eax, edi
and eax, 0xfffffffc
mov dword [esp], eax
lea ebp, [eax - 4]
mov ebx, ebp
shr ebx, 2
add ebx, 1
test ebp, ebp
je 0x4f6da1
mov eax, edi
mov edi, dword [esp + 0x2c]
add edi, ecx
mov ebp, dword [esp + 0x38]
cmp edi, ebp
cmovbe edi, ebp
add edx, edi
mov edi, eax
shr edx, 3
add edx, 1
and edx, 0xfffffffc
add edx, 0xfffffffc
shr edx, 2
add edx, 1
and edx, 0xfffffffe
xor ebp, ebp
mov eax, dword [esp + 8]
nop word cs:[eax + eax]
nop
movups xmm0, xmmword [eax + ebp*8]
movups xmm1, xmmword [eax + ebp*8 + 0x10]
movups xmmword [ecx + ebp*8], xmm0
movups xmmword [ecx + ebp*8 + 0x10], xmm1
movups xmm0, xmmword [eax + ebp*8 + 0x20]
movups xmm1, xmmword [eax + ebp*8 + 0x30]
movups xmmword [ecx + ebp*8 + 0x20], xmm0
movups xmmword [ecx + ebp*8 + 0x30], xmm1
add ebp, 8
add edx, 0xfffffffe
jne 0x4f6ac0
test bl, 1
je 0x4f6b05
movups xmm0, xmmword [eax + ebp*8]
movups xmm1, xmmword [eax + ebp*8 + 0x10]
movups xmmword [ecx + ebp*8], xmm0
movups xmmword [ecx + ebp*8 + 0x10], xmm1
mov edx, dword [esp]
cmp edi, edx
mov ebx, dword [esp + 0x18]
jne 0x4f6d8e
mov edx, dword [esp + 0x14]
mov ebp, dword [esp + 0x1c]
mov edi, dword [esp + 0xc]
jmp 0x4f6b3a
mov eax, dword [esp + 0x10]
lea esi, [eax + 1]
mov byte [eax], 0
mov dword [esp + 8], edx
mov eax, edx
sub eax, ebx
mov word [esi], ax
lea eax, [edx + 4]
lea ecx, [ebx + 4]
cmp dword [esp + 0x30], eax
jbe 0x4f6d57
mov edx, dword [eax]
xor edx, dword [ecx]
je 0x4f6b70
bsf ebx, edx
shr ebx, 3
jmp 0x4f6bdc
mov ecx, dword [esp + 8]
mov edx, ebx
lea ebx, [ecx + 8]
add edx, 8
mov ecx, edx
cmp ebx, dword [esp + 0x30]
jae 0x4f6ba5
mov edx, ebx
sub edx, dword [esp + 8]
add edx, 0xfffffffc
nop dword [eax]
mov edi, dword [ebx]
xor edi, dword [ecx]
jne 0x4f6bd0
add ebx, 4
add ecx, 4
add edx, 4
cmp ebx, dword [esp + 0x30]
jb 0x4f6b90
cmp ebx, dword [esp + 0x4c]
jae 0x4f6d3b
movzx edx, word [ecx]
cmp dx, word [ebx]
mov edi, dword [esp + 0xc]
jne 0x4f6d3f
add ebx, 2
add ecx, 2
jmp 0x4f6d3f
bsf ebx, edi
shr ebx, 3
add ebx, edx
mov edi, dword [esp + 0xc]
lea eax, [ebx + 0xf0]
mov ecx, 0x80808081
mul ecx
shr edx, 7
lea eax, [esi + edx]
add eax, 8
cmp eax, edi
ja 0x4f7c10
lea eax, [esi + 2]
mov edx, dword [esp + 0x10]
mov cl, byte [edx]
cmp ebx, 0xf
jb 0x4f6ca0
add cl, 0xf
mov byte [edx], cl
lea ecx, [ebx - 0xf]
mov dword [eax], 0xffffffff
cmp ecx, 0x3fc
jb 0x4f6c65
lea eax, [ebx - 0x40b]
mov ecx, 0x80808081
mul ecx
mov edi, edx
lea eax, [esi + 6]
shr edi, 9
lea ecx, [edi*4 + 4]
push ecx
push 0xff
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
lea eax, [esi + edi*4]
add eax, 6
imul ecx, edi, 0xfffffc04
mov edi, dword [esp + 0xc]
add ecx, ebx
add ecx, 0xfffffbf5
movzx edx, cx
imul edx, edx, 0x8081
shr edx, 0x17
add ecx, edx
lea esi, [eax + edx]
add esi, 1
mov dword [esp + 0x10], esi
mov byte [eax + edx], cl
mov edx, dword [esp + 8]
add edx, ebx
add edx, 4
cmp edx, dword [esp + 4]
jb 0x4f6cbb
jmp 0x4f7b4a
add cl, bl
mov byte [edx], cl
mov dword [esp + 0x10], eax
mov edx, dword [esp + 8]
add edx, ebx
add edx, 4
cmp edx, dword [esp + 4]
jae 0x4f7b4a
lea eax, [edx - 2]
imul ecx, dword [edx - 2], 0x9e3779b1
shr ecx, 0x14
cmp dword [esp + 0x78], 0x10000
jb 0x4f6d00
mov dword [ebp + ecx*4], eax
imul eax, dword [edx], 0x9e3779b1
shr eax, 0x14
mov ebx, dword [ebp + eax*4]
mov dword [ebp + eax*4], edx
lea eax, [ebx + 0xffff]
cmp eax, edx
jb 0x4f6d68
mov eax, dword [ebx]
cmp eax, dword [edx]
je 0x4f6b30
jmp 0x4f6d7c
mov esi, dword [esp + 0x34]
sub eax, esi
mov dword [ebp + ecx*4], eax
imul eax, dword [edx], 0x9e3779b1
shr eax, 0x14
mov ecx, dword [ebp + eax*4]
mov ebx, edx
sub edx, esi
add esi, ecx
mov dword [ebp + eax*4], edx
add ecx, 0xffff
cmp ecx, edx
jb 0x4f6d71
mov eax, dword [esi]
cmp eax, dword [ebx]
mov edx, ebx
mov ebx, esi
je 0x4f6b30
jmp 0x4f6d85
mov edi, dword [esp + 0xc]
cmp ebx, dword [esp + 0x3c]
jae 0x4f6d50
mov cl, byte [ecx]
xor edx, edx
cmp cl, byte [ebx]
sete dl
add ebx, edx
sub ebx, eax
jmp 0x4f6bdc
mov ebx, eax
cmp ebx, dword [esp + 0x30]
jb 0x4f6b84
jmp 0x4f6ba5
mov esi, dword [esp + 0x78]
jmp 0x4f6788
mov esi, dword [esp + 0x78]
mov edx, ebx
jmp 0x4f6788
mov esi, dword [esp + 0x78]
jmp 0x4f6788
mov esi, dword [esp + 0x78]
jmp 0x4f6788
lea eax, [eax + edx*8]
lea ecx, [ecx + edx*8]
mov ebp, dword [esp + 0x1c]
mov edi, dword [esp + 0xc]
jmp 0x4f6a40
xor ebp, ebp
mov eax, dword [esp + 8]
test bl, 1
jne 0x4f6af3
jmp 0x4f6b05
mov dword [ebp + ecx*4], eax
mov ecx, esi
sub ecx, eax
mov dword [esp + 0x34], ecx
lea eax, [esi + edx]
mov dword [esp + 0x50], eax
lea eax, [esi + edx]
add eax, 0xfffffff5
mov dword [esp + 4], eax
mov ecx, dword [esp + 0x44]
shl ecx, 6
mov eax, dword [esp + 0x3c]
lea edx, [eax - 3]
mov dword [esp + 0x30], edx
add eax, 0xffffffff
mov dword [esp + 0x4c], eax
mov dword [esp + 0x54], ecx
lea eax, [ecx + 1]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x20], eax
mov edx, esi
imul ecx, dword [edx + 1], 0x9e3779b1
lea ebx, [edx + 1]
shr ecx, 0x14
lea eax, [edx + 2]
cmp esi, 0xffff
mov dword [esp + 0x18], edx
jbe 0x4f6e71
cmp eax, dword [esp + 4]
ja 0x4f7abe
mov edx, dword [esp + 0x54]
jmp 0x4f6e4f
mov eax, edx
sar eax, 6
shr edi, 0x14
add eax, esi
add edx, 1
mov ecx, edi
mov ebx, esi
cmp eax, dword [esp + 4]
mov ebp, dword [esp + 0x1c]
ja 0x4f7aba
mov esi, eax
imul edi, dword [eax], 0x9e3779b1
mov eax, dword [ebp + ecx*4]
mov dword [ebp + ecx*4], ebx
lea ecx, [eax + 0xffff]
cmp ecx, ebx
jb 0x4f6e30
mov ecx, dword [eax]
cmp ecx, dword [ebx]
jne 0x4f6e30
jmp 0x4f6ed5
mov esi, dword [esp + 0x44]
mov edx, dword [esp + 0x40]
jmp 0x4f6e98
shr ebp, 0x14
mov eax, dword [esp]
mov ebx, dword [esp + 0x14]
add eax, ebx
lea ecx, [edx + 1]
shr edx, 6
mov esi, edx
mov edx, ecx
mov ecx, ebp
cmp eax, dword [esp + 4]
ja 0x4f7aba
mov dword [esp], esi
mov edi, ebx
sub ebx, dword [esp + 0x34]
mov dword [esp + 0x14], eax
imul ebp, dword [eax], 0x9e3779b1
mov esi, dword [esp + 0x1c]
mov eax, dword [esi + ecx*4]
mov dword [esi + ecx*4], ebx
lea ecx, [eax + 0xffff]
cmp ecx, ebx
jb 0x4f6e80
mov ebx, edi
add eax, dword [esp + 0x34]
mov ecx, dword [eax]
cmp ecx, dword [edi]
jne 0x4f6e80
mov dword [esp], ebx
mov esi, ebx
mov ebx, dword [esp + 0x18]
sub esi, ebx
lea ebp, [esi - 0xf]
mov edx, dword [esp]
lea ecx, [edx + 0xef]
mov edx, dword [esp]
mov dh, dl
shl dh, 4
mov dl, bl
mov ebx, dword [esp]
shl dl, 4
sub dh, dl
xor edi, edi
mov dword [esp + 0x24], ebp
nop word cs:[eax + eax]
nop
mov dword [esp + 0x10], ebp
mov dword [esp + 0x2c], ecx
mov dl, dh
mov dword [esp + 0x28], esi
lea ecx, [eax + edi]
mov dword [esp + 0x14], edi
lea esi, [ebx + edi]
mov dword [esp + 8], esi
mov dword [esp + 0xc], ecx
cmp ecx, dword [esp + 0x78]
jbe 0x4f6f86
mov ecx, dword [esp + 8]
cmp ecx, dword [esp + 0x18]
jbe 0x4f6f86
mov ecx, dword [esp]
mov ebx, dword [esp + 0x14]
movzx ecx, byte [ecx + ebx - 1]
mov byte [esp + 0x38], cl
lea edi, [ebx - 1]
mov ecx, dword [esp + 0x10]
lea ebp, [ecx - 1]
mov ecx, dword [esp + 0x2c]
add ecx, 0xffffffff
mov dword [esp + 0x48], ecx
mov dh, dl
add dh, 0xf0
mov ecx, dword [esp + 0x28]
lea esi, [ecx - 1]
mov ecx, edx
mov dl, byte [esp + 0x38]
cmp dl, byte [eax + ebx - 1]
mov dl, cl
mov ecx, dword [esp + 0x48]
mov ebx, dword [esp]
je 0x4f6f10
sub ebx, dword [esp + 0x18]
mov esi, dword [esp + 0x14]
lea eax, [ebx + esi]
mov edi, dword [esp + 0x20]
lea ecx, [edi + 1]
cmp eax, 0xf
jb 0x4f7036
mov eax, dword [esp + 0x24]
add eax, esi
mov byte [edi], 0xf0
mov dword [esp + 0x24], eax
cmp eax, 0xff
mov ebp, dword [esp + 0x1c]
mov edx, esi
jl 0x4f7046
mov esi, dword [esp + 0x10]
cmp esi, 0x1fd
mov eax, 0x1fd
cmovge esi, eax
mov eax, ebx
sub eax, esi
add eax, edx
add eax, 0xef
mov edx, 0x80808081
mul edx
shr edx, 7
mov dword [esp], edx
lea eax, [edx + 1]
push eax
push 0xff
push ecx
call sub.msvcrt.dll_memset
add esp, 0xc
add esi, dword [esp + 0x18]
mov eax, dword [esp + 0x2c]
sub eax, esi
mov ecx, 0x80808081
mul ecx
shr edx, 7
mov eax, edx
shl eax, 8
sub edx, eax
mov eax, dword [esp]
lea ecx, [edi + eax]
add ecx, 2
mov eax, ebx
add edx, ebx
mov esi, dword [esp + 0x14]
lea ebx, [esi + edx]
add ebx, 0xfffffef2
mov edx, dword [esp + 0x14]
jmp 0x4f704c
mov eax, ebx
mov byte [edi], dl
mov ebp, dword [esp + 0x1c]
mov ebx, dword [esp + 0xc]
mov edx, esi
jmp 0x4f7055
mov eax, ebx
mov ebx, dword [esp + 0x24]
mov byte [ecx], bl
add ecx, 1
mov ebx, dword [esp + 0xc]
mov edi, eax
add edi, ecx
lea esi, [edi + edx]
lea eax, [ecx + 8]
cmp esi, eax
mov dword [esp], eax
cmova eax, esi
mov edx, ecx
not edx
add eax, edx
mov dword [esp + 0x10], eax
cmp eax, 0x18
jae 0x4f707f
mov eax, dword [esp + 0x18]
jmp 0x4f7180
add edi, dword [esp + 0x14]
mov eax, dword [esp]
cmp edi, eax
cmovbe edi, eax
add edi, edx
and edi, 0xfffffff8
mov eax, dword [esp + 0x18]
lea ebx, [eax + edi]
add ebx, 8
cmp ecx, ebx
jae 0x4f70b1
lea ebx, [ecx + edi]
add ebx, 8
cmp eax, ebx
jae 0x4f70b1
mov ebx, dword [esp + 0xc]
jmp 0x4f7180
mov edi, dword [esp + 0x10]
shr edi, 3
add edi, 1
mov eax, edi
and eax, 0xfffffffc
mov dword [esp + 0x14], eax
lea ebp, [eax - 4]
mov ebx, ebp
shr ebx, 2
add ebx, 1
test ebp, ebp
je 0x4f73cd
mov eax, edi
mov edi, dword [esp + 0x28]
add edi, ecx
mov ebp, dword [esp]
cmp edi, ebp
cmovbe edi, ebp
add edx, edi
mov edi, eax
shr edx, 3
add edx, 1
and edx, 0xfffffffc
add edx, 0xfffffffc
shr edx, 2
add edx, 1
and edx, 0xfffffffe
xor ebp, ebp
mov eax, dword [esp + 0x18]
nop word cs:[eax + eax]
movups xmm0, xmmword [eax + ebp*8]
movups xmm1, xmmword [eax + ebp*8 + 0x10]
movups xmmword [ecx + ebp*8], xmm0
movups xmmword [ecx + ebp*8 + 0x10], xmm1
movups xmm0, xmmword [eax + ebp*8 + 0x20]
movups xmm1, xmmword [eax + ebp*8 + 0x30]
movups xmmword [ecx + ebp*8 + 0x20], xmm0
movups xmmword [ecx + ebp*8 + 0x30], xmm1
add ebp, 8
add edx, 0xfffffffe
jne 0x4f7110
test bl, 1
je 0x4f7155
movups xmm0, xmmword [eax + ebp*8]
movups xmm1, xmmword [eax + ebp*8 + 0x10]
movups xmmword [ecx + ebp*8], xmm0
movups xmmword [ecx + ebp*8 + 0x10], xmm1
mov edx, dword [esp + 0x14]
cmp edi, edx
mov ebx, dword [esp + 0xc]
jne 0x4f716b
mov edx, dword [esp + 8]
mov ebp, dword [esp + 0x1c]
jmp 0x4f71a8
lea eax, [eax + edx*8]
lea ecx, [ecx + edx*8]
mov ebp, dword [esp + 0x1c]
nop word cs:[eax + eax]
nop
movsd xmm0, qword [eax]
movsd qword [ecx], xmm0
add ecx, 8
add eax, 8
cmp ecx, esi
jb 0x4f7180
mov edx, dword [esp + 8]
jmp 0x4f71a8
mov eax, esi
add esi, 1
mov byte [eax], 0
mov eax, edx
sub eax, ebx
mov word [esi], ax
lea eax, [esi + 2]
mov dword [esp], eax
mov eax, edx
lea ecx, [edx + 4]
lea edx, [ebx + 4]
cmp dword [esp + 0x30], ecx
jbe 0x4f73a0
mov edi, dword [ecx]
xor edi, dword [edx]
je 0x4f71f0
bsf ebx, edi
shr ebx, 3
mov ecx, ebx
or ecx, 4
mov edx, eax
add edx, ecx
mov eax, dword [esp + 0x20]
mov cl, byte [eax]
jmp 0x4f72d0
mov edx, eax
mov edi, ebx
lea ebx, [eax + 8]
add edi, 8
mov edx, edi
nop dword [eax]
cmp ebx, dword [esp + 0x30]
jae 0x4f7369
mov edi, dword [ebx]
xor edi, dword [edx]
jne 0x4f7220
add ebx, 4
add edx, 4
jmp 0x4f7200
bsf edx, edi
shr edx, 3
add ebx, edx
sub ebx, ecx
mov edx, eax
lea edx, [ebx + eax]
add edx, 4
mov eax, dword [esp + 0x20]
mov cl, byte [eax]
cmp ebx, 0xf
jb 0x4f72d0
mov edi, edx
add cl, 0xf
mov byte [eax], cl
lea ecx, [ebx - 0xf]
mov eax, dword [esp]
mov dword [eax], 0xffffffff
cmp ecx, 0x3fc
jb 0x4f729f
lea eax, [ebx - 0x40b]
mov ecx, 0x80808081
mul ecx
mov ebp, edx
lea eax, [esi + 6]
shr ebp, 9
lea ecx, [ebp*4 + 4]
push ecx
push 0xff
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
lea eax, [esi + ebp*4]
add eax, 6
imul ecx, ebp, 0xfffffc04
mov ebp, dword [esp + 0x1c]
add ecx, ebx
add ecx, 0xfffffbf5
movzx edx, cx
imul edx, edx, 0x8081
shr edx, 0x17
add ecx, edx
lea esi, [eax + edx]
add esi, 1
mov byte [eax + edx], cl
mov edx, edi
cmp edx, dword [esp + 4]
jb 0x4f72e1
jmp 0x4f7ac2
add bl, cl
mov byte [eax], bl
mov esi, dword [esp]
cmp edx, dword [esp + 4]
jae 0x4f7ac2
lea eax, [edx - 2]
imul ecx, dword [edx - 2], 0x9e3779b1
shr ecx, 0x14
cmp dword [esp + 0x78], 0x10000
mov dword [esp + 0x20], esi
jb 0x4f7330
mov dword [ebp + ecx*4], eax
imul eax, dword [edx], 0x9e3779b1
shr eax, 0x14
mov ebx, dword [ebp + eax*4]
mov dword [ebp + eax*4], edx
lea eax, [ebx + 0xffff]
cmp eax, edx
jb 0x4f73a7
mov eax, dword [ebx]
cmp eax, dword [edx]
je 0x4f71a0
jmp 0x4f73bb
mov ebx, dword [esp + 0x34]
sub eax, ebx
mov dword [ebp + ecx*4], eax
imul eax, dword [edx], 0x9e3779b1
shr eax, 0x14
mov ecx, dword [ebp + eax*4]
mov edi, edx
sub edx, ebx
add ebx, ecx
mov dword [ebp + eax*4], edx
add ecx, 0xffff
cmp ecx, edx
jb 0x4f73b0
mov eax, dword [ebx]
cmp eax, dword [edi]
mov edx, edi
je 0x4f71a0
jmp 0x4f73c4
cmp ebx, dword [esp + 0x4c]
jae 0x4f737d
movzx edi, word [edx]
cmp di, word [ebx]
jne 0x4f737d
add ebx, 2
add edx, 2
cmp ebx, dword [esp + 0x3c]
jae 0x4f7228
mov dl, byte [edx]
mov byte [esp + 0x14], dl
mov dl, byte [esp + 0x14]
cmp dl, byte [ebx]
mov edx, 0
sete dl
jmp 0x4f7226
mov ebx, ecx
jmp 0x4f7200
mov esi, dword [esp + 0x78]
jmp 0x4f6e00
mov esi, dword [esp + 0x78]
mov edx, edi
jmp 0x4f6e00
mov esi, dword [esp + 0x78]
jmp 0x4f6e00
mov esi, dword [esp + 0x78]
jmp 0x4f6e00
xor ebp, ebp
mov eax, dword [esp + 0x18]
test bl, 1
jne 0x4f7143
jmp 0x4f7155
test edi, edi
jle 0x4f7c08
mov eax, dword [esp + 0x7c]
mov byte [eax], 0
mov eax, 1
jmp 0x4f7c08
mov ebx, eax
neg ebx
mov ecx, edx
sub ecx, eax
mov dword [esp + 0x34], ecx
lea ecx, [edx + edi]
add ecx, 0xfffffff5
mov dword [esp + 0x14], ecx
add edi, edx
add edi, 0xfffffffb
imul ecx, dword [edx], 0x9e3779b1
shr ecx, 0x13
mov word [ebp + ecx*2], ax
shl esi, 6
lea eax, [edi - 3]
mov dword [esp + 0x30], eax
mov dword [esp + 0x5c], edi
lea eax, [edi - 1]
mov dword [esp + 0x58], eax
add ebx, edx
mov dword [esp + 0x50], ebx
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x24], eax
mov ecx, edx
mov dword [esp + 0x44], esi
lea edx, [ecx + 1]
mov dword [esp + 0xc], ecx
mov eax, dword [ecx + 1]
mov dword [esp], eax
mov ebx, 1
nop
mov eax, edx
mov edx, ebx
add edx, eax
cmp edx, dword [esp + 0x14]
ja 0x4f7c14
imul ebx, dword [esp], 0x9e3779b1
shr ebx, 0x13
movzx edi, word [ebp + ebx*2]
mov ebp, eax
mov dword [esp + 4], eax
mov eax, dword [esp + 0x34]
sub ebp, eax
mov ecx, dword [edx]
mov dword [esp], ecx
mov ecx, dword [esp + 0x1c]
mov word [ecx + ebx*2], bp
mov ebx, esi
shr ebx, 6
add esi, 1
mov ebp, dword [eax + edi]
mov eax, dword [esp + 4]
cmp ebp, dword [eax]
mov ebp, dword [esp + 0x1c]
jne 0x4f7460
mov ecx, edi
mov esi, edi
add esi, dword [esp + 0x50]
mov ecx, eax
mov ebx, eax
mov eax, dword [esp + 0xc]
sub ecx, eax
mov dword [esp + 0x3c], ecx
lea ebp, [ecx - 0xf]
lea ecx, [ebx + 0xef]
mov edx, eax
shl dl, 4
mov dh, bl
shl dh, 4
sub dh, dl
mov dword [esp + 0x10], ecx
sub ecx, eax
mov dword [esp + 0x40], ecx
lea ebx, [ecx - 0xef]
xor edi, edi
mov dword [esp + 0x4c], ebp
mov dword [esp + 0x2c], esi
nop word cs:[eax + eax]
nop
mov dword [esp + 0x28], ebp
mov eax, dword [esp + 0x10]
mov dword [esp + 0x38], eax
mov dl, dh
mov dword [esp + 0x48], ebx
lea ecx, [esi + edi]
mov dword [esp + 8], edi
mov eax, dword [esp + 4]
add eax, edi
mov dword [esp], ecx
cmp ecx, dword [esp + 0x78]
jbe 0x4f757a
cmp eax, dword [esp + 0xc]
jbe 0x4f757a
mov esi, dword [esp + 8]
mov ecx, dword [esp + 4]
movzx ecx, byte [ecx + esi - 1]
mov byte [esp + 0x20], cl
lea edi, [esi - 1]
mov ecx, dword [esp + 0x28]
lea ebp, [ecx - 1]
mov ecx, dword [esp + 0x38]
add ecx, 0xffffffff
mov dword [esp + 0x10], ecx
mov dh, dl
add dh, 0xf0
mov ecx, dword [esp + 0x48]
lea ebx, [ecx - 1]
mov ecx, dword [esp + 0x2c]
mov byte [esp + 0x18], dl
mov dl, byte [esp + 0x20]
cmp dl, byte [ecx + esi - 1]
mov dl, byte [esp + 0x18]
mov esi, dword [esp + 0x2c]
je 0x4f7500
mov dword [esp + 4], eax
mov esi, dword [esp + 0x40]
mov ebx, dword [esp + 8]
lea eax, [esi + ebx]
add eax, 0xffffff11
mov edi, dword [esp + 0x24]
lea ecx, [edi + 1]
cmp eax, 0xf
jb 0x4f763a
mov edx, dword [esp + 0x4c]
add edx, ebx
mov byte [edi], 0xf0
mov eax, edx
cmp edx, 0xff
mov ebp, dword [esp + 0x1c]
mov edx, ebx
jl 0x4f7648
mov esi, dword [esp + 0x28]
cmp esi, 0x1fd
mov eax, 0x1fd
cmovge esi, eax
mov ebx, dword [esp + 0x3c]
mov eax, ebx
sub eax, esi
add eax, edx
add eax, 0xef
mov edx, 0x80808081
mul edx
shr edx, 7
mov dword [esp + 0x10], edx
lea eax, [edx + 1]
push eax
push 0xff
push ecx
call sub.msvcrt.dll_memset
add esp, 0xc
add esi, dword [esp + 0xc]
mov eax, dword [esp + 0x38]
sub eax, esi
mov ecx, 0x80808081
mul ecx
mov esi, dword [esp + 0x40]
shr edx, 7
mov eax, edx
shl eax, 8
sub edx, eax
mov eax, dword [esp + 0x10]
lea ecx, [edi + eax]
add ecx, 2
mov edi, ebx
add edx, ebx
mov eax, dword [esp + 8]
add eax, edx
add eax, 0xfffffef2
mov edx, dword [esp + 8]
jmp 0x4f764c
mov byte [edi], dl
mov ebp, dword [esp + 0x1c]
mov edi, dword [esp + 0x3c]
mov edx, ebx
jmp 0x4f7651
mov edi, dword [esp + 0x3c]
mov byte [ecx], al
add ecx, 1
add esi, ecx
add edi, ecx
add edi, edx
lea ebx, [ecx + 8]
cmp edi, ebx
mov eax, ebx
cmova eax, edi
lea edx, [edx + esi - 0xef]
mov dword [esp + 8], edx
mov edx, ecx
not edx
add eax, edx
cmp eax, 0x18
jb 0x4f76a4
cmp edi, ebx
cmovbe edi, ebx
add edi, edx
and edi, 0xfffffff8
mov esi, edi
mov edi, dword [esp + 0xc]
add edi, esi
add edi, 8
cmp ecx, edi
jae 0x4f78ae
lea edi, [ecx + esi]
add edi, 8
cmp dword [esp + 0xc], edi
jae 0x4f78ae
mov esi, dword [esp + 0xc]
mov ebx, dword [esp + 8]
nop dword [eax]
movsd xmm0, qword [esi]
movsd qword [ecx], xmm0
add ecx, 8
add esi, 8
cmp ecx, ebx
jb 0x4f76b0
mov esi, dword [esp + 0x24]
mov ecx, dword [esp + 4]
nop word [eax + eax]
mov eax, ecx
mov edi, dword [esp]
sub eax, edi
mov word [ebx], ax
lea eax, [ebx + 2]
mov edx, ecx
mov dword [esp + 4], ecx
add ecx, 4
lea edx, [edi + 4]
cmp dword [esp + 0x30], ecx
jbe 0x4f7896
mov edi, dword [ecx]
xor edi, dword [edx]
je 0x4f7710
bsf ebx, edi
shr ebx, 3
mov ecx, ebx
or ecx, 4
add dword [esp + 4], ecx
mov cl, byte [esi]
jmp 0x4f77f0
mov dword [esp + 8], ebx
mov edx, dword [esp + 4]
lea ebx, [edx + 8]
mov edx, dword [esp]
add edx, 8
nop word cs:[eax + eax]
nop dword [eax + eax]
cmp ebx, dword [esp + 0x30]
jae 0x4f7861
mov edi, dword [ebx]
xor edi, dword [edx]
jne 0x4f7750
add ebx, 4
add edx, 4
jmp 0x4f7730
bsf edx, edi
shr edx, 3
add ebx, edx
sub ebx, ecx
mov ecx, dword [esp + 4]
add ecx, ebx
add ecx, 4
mov dword [esp + 4], ecx
mov cl, byte [esi]
cmp ebx, 0xf
jb 0x4f77f0
add cl, 0xf
mov byte [esi], cl
lea ecx, [ebx - 0xf]
mov dword [eax], 0xffffffff
cmp ecx, 0x3fc
jb 0x4f77cf
lea eax, [ebx - 0x40b]
mov ecx, 0x80808081
mul ecx
mov ebp, edx
mov esi, dword [esp + 8]
lea eax, [esi + 6]
shr ebp, 9
lea ecx, [ebp*4 + 4]
push ecx
push 0xff
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
lea eax, [esi + ebp*4]
add eax, 6
imul ecx, ebp, 0xfffffc04
mov ebp, dword [esp + 0x1c]
add ecx, ebx
add ecx, 0xfffffbf5
movzx edx, cx
imul edx, edx, 0x8081
shr edx, 0x17
add ecx, edx
mov byte [eax + edx], cl
add eax, edx
add eax, 1
jmp 0x4f77f4
add bl, cl
mov byte [esi], bl
mov ecx, dword [esp + 4]
cmp ecx, dword [esp + 0x14]
jae 0x4f796a
mov ecx, dword [esp + 4]
add ecx, 0xfffffffe
mov edx, dword [esp + 4]
imul edx, dword [edx - 2], 0x9e3779b1
shr edx, 0x13
mov edi, dword [esp + 0x34]
sub ecx, edi
mov word [ebp + edx*2], cx
mov ecx, dword [esp + 4]
imul ecx, dword [ecx], 0x9e3779b1
shr ecx, 0x13
movzx edx, word [ebp + ecx*2]
mov esi, dword [esp + 4]
sub esi, edi
lea ebx, [edi + edx]
mov dword [esp], ebx
mov word [ebp + ecx*2], si
mov ecx, dword [edi + edx]
mov edx, dword [esp + 4]
cmp ecx, dword [edx]
mov ecx, dword [esp + 4]
jne 0x4f78a1
lea ebx, [eax + 1]
mov byte [eax], 0
mov esi, eax
jmp 0x4f76d0
cmp ebx, dword [esp + 0x58]
jae 0x4f7875
movzx edi, word [edx]
cmp di, word [ebx]
jne 0x4f7875
add ebx, 2
add edx, 2
cmp ebx, dword [esp + 0x5c]
jae 0x4f7758
mov dl, byte [edx]
mov byte [esp], dl
mov dl, byte [esp]
cmp dl, byte [ebx]
mov edx, 0
sete dl
jmp 0x4f7756
mov dword [esp + 8], ebx
mov ebx, ecx
jmp 0x4f7730
mov dword [esp + 0x24], eax
mov esi, dword [esp + 0x44]
jmp 0x4f744c
shr eax, 3
add eax, 1
mov edi, eax
and edi, 0xfffffffc
lea ebp, [edi - 4]
mov esi, ebp
shr esi, 2
add esi, 1
mov dword [esp + 0x10], esi
test ebp, ebp
je 0x4f7930
mov esi, dword [esp + 0x48]
add esi, ecx
cmp esi, ebx
cmovbe esi, ebx
add edx, esi
shr edx, 3
add edx, 1
and edx, 0xfffffffc
add edx, 0xfffffffc
shr edx, 2
add edx, 1
and edx, 0xfffffffe
xor ebp, ebp
mov esi, dword [esp + 0xc]
mov ebx, dword [esp + 8]
nop dword [eax + eax]
movups xmm0, xmmword [esi + ebp*8]
movups xmm1, xmmword [esi + ebp*8 + 0x10]
movups xmmword [ecx + ebp*8], xmm0
movups xmmword [ecx + ebp*8 + 0x10], xmm1
movups xmm0, xmmword [esi + ebp*8 + 0x20]
movups xmm1, xmmword [esi + ebp*8 + 0x30]
movups xmmword [ecx + ebp*8 + 0x20], xmm0
movups xmmword [ecx + ebp*8 + 0x30], xmm1
add ebp, 8
add edx, 0xfffffffe
jne 0x4f7900
jmp 0x4f793a
xor ebp, ebp
mov esi, dword [esp + 0xc]
mov ebx, dword [esp + 8]
test byte [esp + 0x10], 1
je 0x4f7953
movups xmm0, xmmword [esi + ebp*8]
movups xmm1, xmmword [esi + ebp*8 + 0x10]
movups xmmword [ecx + ebp*8], xmm0
movups xmmword [ecx + ebp*8 + 0x10], xmm1
cmp eax, edi
mov ebp, dword [esp + 0x1c]
je 0x4f76c2
lea esi, [esi + edi*8]
lea ecx, [ecx + edi*8]
jmp 0x4f76b0
mov dword [esp + 0x24], eax
mov edx, ecx
mov edi, dword [esp + 0x54]
mov ebp, edx
sub edi, edx
cmp edi, 0xf
jb 0x4f79d5
lea eax, [edi - 0xf]
mov ebx, dword [esp + 0x24]
mov byte [ebx], 0xf0
lea ecx, [ebx + 1]
cmp eax, 0xff
jb 0x4f7a85
lea eax, [edi - 0x10e]
mov edx, 0x80808081
mul edx
mov esi, edx
shr esi, 7
lea eax, [esi + 1]
push eax
push 0xff
push ecx
call sub.msvcrt.dll_memset
add esp, 0xc
mov eax, esi
shl eax, 8
lea ecx, [esi + ebx]
add ecx, 2
sub esi, eax
mov ebx, edi
lea eax, [edi + esi]
add eax, 0xfffffef2
jmp 0x4f7a87
mov ebx, edi
mov eax, ebx
shl al, 4
mov esi, dword [esp + 0x24]
mov byte [esi], al
jmp 0x4f7a8b
mov edx, eax
mov ebx, edi
mov edi, dword [esp + 0x78]
mov ecx, dword [esp + 0x80]
add edi, ecx
mov dword [esp + 0x18], ebx
sub edi, ebx
lea eax, [edi + 0xf0]
mov ecx, 0x80808081
mov ebp, edx
mul ecx
lea eax, [edi + ebp]
shr edx, 7
add eax, edx
add eax, 1
cmp eax, dword [esp + 0xc]
mov eax, 0
ja 0x4f7c08
mov ecx, edi
mov esi, ebp
cmp edi, 0xf
jb 0x4f7aa4
lea eax, [ecx - 0xf]
mov byte [esi], 0xf0
mov ebx, ecx
lea ecx, [esi + 1]
cmp eax, 0xff
jb 0x4f7a7d
lea eax, [ebx - 0x10e]
mov ebp, esi
mov edx, 0x80808081
mul edx
mov esi, edx
shr esi, 7
lea eax, [esi + 1]
push eax
push 0xff
push ecx
call sub.msvcrt.dll_memset
add esp, 0xc
mov eax, esi
shl eax, 8
lea ecx, [esi + ebp]
add ecx, 2
sub esi, eax
lea eax, [ebx + esi]
add eax, 0xfffffef2
mov byte [ecx], al
mov edx, ecx
mov ecx, edi
jmp 0x4f7aad
mov ebx, edi
mov byte [ecx], al
mov esi, ecx
lea eax, [esi + 1]
push ebx
push ebp
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
lea eax, [esi + ebx]
add eax, 1
jmp 0x4f7c04
mov eax, ecx
shl al, 4
mov edx, esi
mov byte [esi], al
lea eax, [edx + 1]
push ecx
push dword [esp + 0x1c]
jmp 0x4f7bf1
mov edx, dword [esp + 0x18]
mov esi, dword [esp + 0x20]
mov ecx, dword [esp + 0x50]
sub ecx, edx
cmp ecx, 0xf
jb 0x4f7b20
mov ebx, edx
lea eax, [ecx - 0xf]
mov byte [esi], 0xf0
mov edi, ecx
lea ecx, [esi + 1]
cmp eax, 0xff
jb 0x4f7b29
lea eax, [edi - 0x10e]
mov edx, 0x80808081
mul edx
mov ebp, esi
mov esi, edx
shr esi, 7
lea eax, [esi + 1]
push eax
push 0xff
push ecx
call sub.msvcrt.dll_memset
add esp, 0xc
mov eax, esi
shl eax, 8
lea ecx, [esi + ebp]
add ecx, 2
sub esi, eax
mov edx, edi
lea eax, [edi + esi]
add eax, 0xfffffef2
jmp 0x4f7b2b
mov eax, ecx
shl al, 4
mov byte [esi], al
jmp 0x4f7b33
mov edx, edi
mov byte [ecx], al
mov esi, ecx
mov ecx, edx
mov edx, ebx
lea eax, [esi + 1]
push ecx
push edx
push eax
mov edi, esi
mov esi, ecx
jmp 0x4f7bf6
mov edi, dword [esp + 0xc]
mov edx, dword [esp + 8]
mov esi, dword [esp + 0x50]
mov ebx, edx
sub esi, edx
lea eax, [esi + 0xf0]
mov ecx, 0x80808081
mul ecx
mov eax, dword [esp + 0x10]
add eax, esi
shr edx, 7
add eax, edx
add eax, 1
cmp eax, edi
mov eax, 0
ja 0x4f7c08
mov ecx, esi
cmp esi, 0xf
jb 0x4f7bd5
lea eax, [ecx - 0xf]
mov ebp, dword [esp + 0x10]
mov byte [ebp], 0xf0
mov esi, ecx
lea ecx, [ebp + 1]
cmp eax, 0xff
jb 0x4f7be2
lea eax, [esi - 0x10e]
mov edx, 0x80808081
mul edx
mov edi, edx
shr edi, 7
lea eax, [edi + 1]
push eax
push 0xff
push ecx
call sub.msvcrt.dll_memset
add esp, 0xc
mov eax, edi
shl eax, 8
lea ecx, [edi + ebp]
add ecx, 2
sub edi, eax
mov edx, esi
lea eax, [esi + edi]
add eax, 0xfffffef2
jmp 0x4f7be4
mov eax, ecx
shl al, 4
mov edx, dword [esp + 0x10]
mov byte [edx], al
jmp 0x4f7bec
mov edx, esi
mov byte [ecx], al
mov eax, ecx
mov ecx, edx
mov edx, eax
lea eax, [edx + 1]
push ecx
push ebx
push eax
mov esi, ecx
mov edi, edx
call sub.msvcrt.dll_memcpy
add esp, 0xc
lea eax, [edi + esi]
add eax, 1
sub eax, dword [esp + 0x7c]
add esp, 0x60
pop esi
pop edi
pop ebx
pop ebp
ret
xor eax, eax
jmp 0x4f7c08
mov edx, dword [esp + 0xc]
jmp 0x4f7970
mov edi, dword [esp + 0x78]
mov ecx, dword [esp + 0x80]
mov edx, dword [esp + 0x10]
mov ebx, dword [esp + 0x18]
jmp 0x4f79f6