Function at 0x4e2e70
Capabilities:
Check os version
Encode data using base64

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xd0
mov esi, esp
mov dword [esi + 0xb8], ebp
mov dword [esi + 0xbc], esp
mov dword [esi + 0xc8], 0xffffffff
mov dword [esi + 0xc4], 0x539120
mov dword [esi + 0x98], ecx
lea eax, [esi + 0xc0]
mov dword [esi + 0x14], edx
mov ecx, dword fs:[0]
mov dword [esi + 0xc0], ecx
mov dword fs:[0], eax
mov eax, dword [edx]
mov ecx, dword [edx + 4]
mov dword [esi + 0x18], eax
mov eax, dword [eax + 0x50]
mov dword [esi + 8], ecx
mov ecx, dword [edx + 8]
test eax, eax
mov dword [esi + 0x30], eax
mov dword [esi], ecx
je 0x4e2eff
mov ecx, dword [esi]
sub ecx, eax
jbe 0x4e2efd
mov edx, dword [esi + 8]
cmp byte [edx + eax], 0xc0
jge 0x4e2eff
mov ecx, dword [esi + 8]
mov edx, dword [esi]
push 0x55946c
push edx
push eax
call fcn.0053c0c0
jne 0x4e2eec
test ecx, ecx
je 0x4e4264
mov ecx, dword [esi + 8]
movzx ebx, byte [ecx + eax]
movzx ecx, bl
test bl, bl
jns 0x4e2f66
mov edx, dword [esi + 8]
and ecx, 0x1f
movzx edi, byte [edx + eax + 1]
and edi, 0x3f
cmp bl, 0xdf
jbe 0x4e30ac
movzx edx, byte [edx + eax + 2]
shl edi, 6
and edx, 0x3f
or edx, edi
cmp bl, 0xf0
jb 0x4e30c6
mov edi, dword [esi + 8]
and ecx, 7
shl edx, 6
shl ecx, 0x12
movzx edi, byte [edi + eax + 3]
and edi, 0x3f
or edi, edx
or ecx, edi
cmp ecx, 0x110000
je 0x4e4264
cmp ecx, 0x70
je 0x4e2f82
mov ecx, dword [esi + 8]
mov edx, dword [esi]
push eax
call fcn.004d36c0
add esp, 4
cmp eax, 0x50
jne 0x4e439e
mov eax, dword [esi + 0x18]
cmp dword [eax + 0x40], 0
jne 0x4e42cc
mov dword [eax + 0x40], 0xffffffff
mov dword [eax + 0x4c], 0
mov ecx, dword [eax + 0x50]
mov eax, ecx
mov eax, dword [esi]
test ecx, ecx
mov dword [esi + 0x30], ecx
mov dword [esi + 4], ecx
je 0x4e2fe7
mov eax, dword [esi]
mov edx, dword [esi + 4]
sub eax, edx
jbe 0x4e2fe5
mov ecx, dword [esi + 8]
cmp byte [ecx + edx], 0xc0
jge 0x4e2fe7
mov ecx, dword [esi + 8]
mov edx, dword [esi]
mov dword [esi + 0xc8], 0
push 0x55946c
push edx
push dword [esi + 4]
call fcn.0053c0c0
add esp, 0xc
jmp 0x4e44d9
jne 0x4e2fc0
test eax, eax
je 0x4e3061
mov eax, dword [esi + 8]
mov ecx, dword [esi + 4]
movzx ecx, byte [eax + ecx]
movzx eax, cl
test cl, cl
mov dword [esi + 0x24], eax
jns 0x4e30e4
mov eax, dword [esi + 8]
mov ebx, dword [esi + 4]
mov edi, dword [esi + 0x24]
movzx edx, byte [eax + ebx + 1]
and edi, 0x1f
and edx, 0x3f
cmp cl, 0xdf
jbe 0x4e30bf
mov dword [esi + 0x24], edi
mov edi, eax
movzx eax, byte [eax + ebx + 2]
shl edx, 6
and eax, 0x3f
or eax, edx
cmp cl, 0xf0
jb 0x4e30d9
movzx ecx, byte [edi + ebx + 3]
shl eax, 6
and ecx, 0x3f
or ecx, eax
mov eax, dword [esi + 0x24]
and eax, 7
shl eax, 0x12
or eax, ecx
cmp eax, 0x110000
mov dword [esi + 0x24], eax
jne 0x4e30e4
lea ecx, [esi + 0x34]
lea eax, [esi + 0x30]
mov dword [esi + 0x48], 0x559494
mov dword [esi + 0x4c], 1
mov dword [esi + 0x58], 0
mov edx, 0x55949c
mov dword [esi + 0xc8], 0
mov dword [esi + 0x50], ecx
lea ecx, [esi + 0x48]
mov dword [esi + 0x34], eax
mov dword [esi + 0x38], 0x453380
mov dword [esi + 0x54], 1
call fcn.0053ba80
jmp 0x4e44d9
shl ecx, 6
or ecx, edi
cmp ecx, 0x70
je 0x4e2f82
jmp 0x4e2f6b
shl edi, 6
or edi, edx
jmp 0x4e30e1
shl ecx, 0xc
or ecx, edx
cmp ecx, 0x70
jne 0x4e2f6b
jmp 0x4e2f82
mov edi, dword [esi + 0x24]
shl edi, 0xc
or edi, eax
mov dword [esi + 0x24], edi
mov edi, dword [esi + 4]
mov eax, dword [esi + 0x18]
cmp dword [esi], edi
lea eax, [eax + 0x50]
mov dword [esi + 0x28], eax
je 0x4e31e8
mov eax, dword [esi + 0x18]
mov edx, dword [esi]
mov ecx, dword [eax + 0x54]
mov eax, dword [eax + 0x58]
mov dword [esi + 0xc8], 0
mov dword [esi + 0x10], ecx
mov ecx, dword [esi + 8]
mov dword [esi + 0xc], eax
push edi
call fcn.004d36c0
add esp, 4
cmp eax, 0xa
jne 0x4e313f
inc dword [esi + 0x10]
mov dword [esi + 0xc], 1
jne 0x4e3148
mov ecx, 0x5594ac
call fcn.0053bf10
jmp 0x4e44d9
inc dword [esi + 0xc]
je 0x4e43e9
mov eax, dword [esi + 0x28]
mov ecx, dword [esi + 8]
mov edx, dword [esi]
push dword [eax]
call fcn.004d36c0
add esp, 4
mov edi, 1
cmp eax, 0x80
jb 0x4e317f
mov edi, 2
cmp eax, 0x800
jb 0x4e317f
cmp eax, 0x10000
mov edi, 4
sbb edi, 0
add edi, dword [esi + 4]
mov eax, dword [esi + 0x18]
mov ecx, dword [esi + 0x10]
mov edx, dword [esi + 0xc]
mov dword [eax + 0x50], edi
mov dword [eax + 0x54], ecx
mov dword [eax + 0x58], edx
mov eax, dword [esi]
je 0x4e31c2
mov eax, dword [esi]
sub eax, edi
jbe 0x4e31c0
mov ecx, dword [esi + 8]
cmp byte [ecx + edi], 0xbf
jg 0x4e31c2
mov ecx, dword [esi + 8]
mov edx, dword [esi]
push 0x5594cc
push edx
push edi
call fcn.0053c0c0
add esp, 0xc
jmp 0x4e44d9
jne 0x4e31a7
test eax, eax
je 0x4e31e8
mov eax, dword [esi + 8]
movzx eax, byte [eax + edi]
test al, al
jns 0x4e31d3
cmp al, 0xe0
mov ecx, dword [esi + 0x14]
call fcn.004d2a50
mov eax, dword [esi + 0x28]
mov eax, dword [eax]
cmp eax, dword [esi]
jne 0x4e32a8
mov ecx, dword [esi + 0x28]
cmp dword [esi], 0
mov eax, dword [ecx + 8]
mov dword [esi + 0x5c], eax
movsd xmm0, qword [ecx]
movsd qword [esi + 0x54], xmm0
movsd xmm0, qword [ecx]
movsd qword [esi + 0x48], xmm0
mov eax, dword [ecx + 8]
mov dword [esi + 0x50], eax
je 0x4e3247
js 0x4e438a
movzx eax, byte [0x5b9430]
mov ebx, dword [esi]
xor ecx, ecx
mov edx, ebx
call fcn.0051b940
mov edi, eax
test eax, eax
jne 0x4e324e
mov ecx, 1
mov edx, ebx
mov dword [esi + 0xc8], 0
call fcn.0053b730
jmp 0x4e44d9
mov ebx, dword [esi]
mov edi, 1
push ebx
push dword [esi + 8]
push edi
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
movsd xmm1, qword [esi + 0x50]
mov eax, dword [esi + 0x98]
movsd xmm0, qword [esi + 0x48]
movsd qword [eax + 0x30], xmm1
movsd xmm1, qword [esi + 0x58]
movsd qword [eax + 0x28], xmm0
movsd qword [eax + 0x38], xmm1
mov dword [eax], 0xa
mov dword [eax + 0x1c], ebx
mov dword [eax + 0x20], edi
mov dword [eax + 0x24], ebx
mov eax, dword [esi + 0x18]
inc dword [eax + 0x40]
mov eax, dword [esi + 0xc0]
mov dword fs:[0], eax
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, dword [esi + 8]
mov edx, dword [esi]
push eax
call fcn.004d36c0
add esp, 4
mov ecx, dword [esi + 0x28]
cmp eax, 0x7b
mov edi, dword [ecx]
mov dword [esi + 0xa8], edi
jne 0x4e36ab
mov ecx, dword [esi + 8]
mov edx, dword [esi]
push edi
call fcn.004d36c0
add esp, 4
mov ecx, 1
cmp eax, 0x80
jb 0x4e32fd
mov ecx, 2
cmp eax, 0x800
jb 0x4e32fd
cmp eax, 0x10000
mov ecx, 4
sbb ecx, 0
mov eax, dword [esi + 0xa8]
add eax, ecx
jb 0x4e43f8
mov dword [esi + 0xa8], eax
mov eax, dword [esi + 0x18]
mov ecx, dword [eax + 0x58]
inc ecx
mov dword [esi + 0x94], ecx
je 0x4e4407
mov ecx, dword [eax + 0x54]
mov edx, dword [esi]
mov dword [esi + 0xa4], ecx
mov ecx, dword [esi + 8]
push dword [eax + 0x50]
call fcn.004d36c0
add esp, 4
mov edx, dword [esi + 0x94]
xor ecx, ecx
cmp eax, 0xa
mov eax, 1
sete cl
cmove edx, eax
mov eax, dword [esi + 0x18]
add dword [esi + 0xa4], ecx
mov dword [esi + 0x94], edx
add eax, 0x44
mov dword [esi + 0x20], eax
jmp 0x4e3380
mov ecx, dword [esi + 0x18]
mov eax, dword [ecx + 0x48]
mov ebx, dword [esi + 4]
mov byte [eax + edx], bl
inc edx
mov dword [ecx + 0x4c], edx
mov eax, dword [esi + 0x28]
mov edx, dword [esi]
mov edi, dword [eax]
cmp edi, edx
je 0x4e3826
mov eax, dword [esi + 0x18]
mov dword [esi + 0x10], edi
mov ecx, dword [eax + 0x54]
mov eax, dword [eax + 0x58]
mov dword [esi + 0xc], ecx
mov ecx, dword [esi + 8]
mov dword [esi + 4], eax
push edi
call fcn.004d36c0
add esp, 4
cmp eax, 0xa
jne 0x4e33d0
inc dword [esi + 0xc]
mov dword [esi + 4], 1
jne 0x4e33d9
jmp 0x4e43cb
inc dword [esi + 4]
je 0x4e43da
mov eax, dword [esi + 0x28]
mov ecx, dword [esi + 8]
mov edx, dword [esi]
push dword [eax]
call fcn.004d36c0
add esp, 4
mov edi, 1
cmp eax, 0x80
jb 0x4e3410
mov edi, 2
cmp eax, 0x800
jb 0x4e3410
cmp eax, 0x10000
mov edi, 4
sbb edi, 0
add edi, dword [esi + 0x10]
mov eax, dword [esi + 0x18]
mov ecx, dword [esi + 0xc]
mov edx, dword [esi + 4]
mov dword [eax + 0x50], edi
mov dword [eax + 0x54], ecx
mov dword [eax + 0x58], edx
mov eax, dword [esi]
je 0x4e3443
mov eax, dword [esi]
sub eax, edi
jbe 0x4e343d
mov ecx, dword [esi + 8]
cmp byte [ecx + edi], 0xbf
jg 0x4e3443
jmp 0x4e43b2
jne 0x4e43b2
test eax, eax
je 0x4e381c
mov eax, dword [esi + 8]
movzx eax, byte [eax + edi]
test al, al
jns 0x4e3458
cmp al, 0xe0
mov ecx, dword [esi + 0x14]
call fcn.004d2a50
mov eax, dword [esi + 0x28]
mov edx, dword [esi]
mov edi, dword [eax]
cmp edx, edi
je 0x4e3826
test edi, edi
mov eax, edx
mov dword [esi + 0x30], edi
je 0x4e348f
mov eax, dword [esi]
sub eax, edi
jbe 0x4e42d6
mov ecx, dword [esi + 8]
cmp byte [ecx + edi], 0xc0
jl 0x4e42d6
test eax, eax
je 0x4e4308
mov ecx, dword [esi + 8]
movzx edx, byte [ecx + edi]
movzx eax, dl
test dl, dl
jns 0x4e3500
movzx ebx, byte [ecx + edi + 1]
and eax, 0x1f
and ebx, 0x3f
cmp dl, 0xdf
jbe 0x4e34f6
mov dword [esi + 0xc], ebx
movzx ebx, byte [ecx + edi + 2]
mov dword [esi + 4], ebx
mov ebx, dword [esi + 0xc]
and dword [esi + 4], 0x3f
shl ebx, 6
add dword [esi + 4], ebx
cmp dl, 0xf0
mov ebx, dword [esi + 4]
jb 0x4e34fb
movzx edx, byte [ecx + edi + 3]
and eax, 7
shl ebx, 6
shl eax, 0x12
and edx, 0x3f
or edx, ebx
or eax, edx
cmp eax, 0x110000
jne 0x4e3500
jmp 0x4e4308
shl eax, 6
jmp 0x4e34fe
shl eax, 0xc
or eax, ebx
cmp eax, 0x7d
je 0x4e381c
mov eax, dword [esi]
test edi, edi
mov dword [esi + 0x30], edi
je 0x4e3529
mov eax, dword [esi]
sub eax, edi
jbe 0x4e42ef
mov ecx, dword [esi + 8]
cmp byte [ecx + edi], 0xc0
jl 0x4e42ef
test eax, eax
je 0x4e4349
mov ebx, dword [esi + 8]
movzx ecx, byte [ebx + edi]
movzx edx, cl
test cl, cl
jns 0x4e3596
movzx eax, byte [ebx + edi + 1]
and edx, 0x1f
and eax, 0x3f
cmp cl, 0xdf
jbe 0x4e35bb
mov dword [esi + 4], edx
movzx edx, byte [ebx + edi + 2]
shl eax, 6
and edx, 0x3f
or edx, eax
cmp cl, 0xf0
mov eax, edx
jb 0x4e35f1
movzx ecx, byte [ebx + edi + 3]
mov edx, dword [esi + 4]
shl eax, 6
and edx, 7
and ecx, 0x3f
shl edx, 0x12
or ecx, eax
or edx, ecx
cmp edx, 0x110000
je 0x4e4349
cmp edx, 0x80
jae 0x4e35c8
mov eax, dword [esi + 0x18]
mov dword [esi + 4], edx
mov edx, dword [eax + 0x4c]
cmp edx, dword [eax + 0x44]
jne 0x4e3370
mov ecx, dword [esi + 0x20]
call fcn.00414cc0
mov ecx, dword [esi + 0x18]
mov edx, dword [ecx + 0x4c]
jmp 0x4e3373
shl edx, 6
or edx, eax
cmp edx, 0x80
jb 0x4e3596
mov eax, edx
cmp edx, 0x800
mov dword [esi + 0x48], 0
jae 0x4e3603
shr eax, 6
and dl, 0x3f
mov ebx, 2
or al, 0xc0
or dl, 0x80
mov byte [esi + 0x48], al
mov byte [esi + 0x49], dl
jmp 0x4e365d
mov edx, dword [esi + 4]
shl edx, 0xc
or edx, eax
cmp edx, 0x80
jb 0x4e3596
jmp 0x4e35c8
cmp edx, 0x10000
jae 0x4e362f
shr eax, 0xc
mov ebx, 3
or al, 0xe0
mov byte [esi + 0x48], al
mov eax, edx
and dl, 0x3f
shr eax, 6
or dl, 0x80
and al, 0x3f
or al, 0x80
mov byte [esi + 0x49], al
mov byte [esi + 0x4a], dl
jmp 0x4e365d
shr eax, 0x12
mov ebx, 4
or al, 0xf0
mov byte [esi + 0x48], al
mov eax, edx
shr eax, 0xc
and al, 0x3f
or al, 0x80
mov byte [esi + 0x49], al
mov eax, edx
and dl, 0x3f
shr eax, 6
or dl, 0x80
and al, 0x3f
or al, 0x80
mov byte [esi + 0x4a], al
mov byte [esi + 0x4b], dl
mov ecx, dword [esi + 0x18]
mov dword [esi + 4], ebx
mov eax, dword [ecx + 0x44]
mov edi, dword [ecx + 0x4c]
sub eax, edi
cmp eax, ebx
jae 0x4e3685
mov ecx, dword [esi + 0x20]
mov edx, edi
push ebx
call fcn.0053b370
add esp, 4
mov eax, dword [esi + 0x18]
mov edi, dword [eax + 0x4c]
jmp 0x4e3688
mov eax, dword [esi + 0x18]
mov eax, dword [eax + 0x48]
mov ebx, dword [esi + 4]
add eax, edi
push ebx
lea ecx, [esi + 0x48]
push ecx
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov eax, dword [esi + 0x18]
add edi, ebx
mov dword [eax + 0x4c], edi
jmp 0x4e3380
mov eax, dword [esi + 0x18]
mov edx, dword [esi]
mov ecx, dword [eax + 0x54]
mov eax, dword [eax + 0x58]
mov dword [esi + 0xa4], ecx
mov ecx, dword [esi + 8]
mov dword [esi + 0x94], eax
push edi
call fcn.004d36c0
add esp, 4
mov dword [esi + 4], eax
cmp dword [esi + 4], 0x5c
jne 0x4e37fa
mov eax, dword [esi + 0x28]
mov ecx, dword [esi + 8]
mov edx, dword [esi]
mov eax, dword [eax]
mov dword [esi + 4], eax
push eax
call fcn.004d36c0
add esp, 4
mov ecx, 1
cmp eax, 0x80
jb 0x4e3716
mov ecx, 2
cmp eax, 0x800
jb 0x4e3716
cmp eax, 0x10000
mov ecx, 4
sbb ecx, 0
mov eax, dword [esi + 4]
add eax, ecx
jb 0x4e4416
mov dword [esi + 4], eax
mov eax, dword [esi + 0x18]
mov ecx, dword [eax + 0x58]
inc ecx
mov dword [esi + 0x24], ecx
je 0x4e4425
mov ecx, dword [eax + 0x54]
mov edx, dword [esi]
mov dword [esi + 0x14], ecx
mov ecx, dword [esi + 8]
push dword [eax + 0x50]
call fcn.004d36c0
add esp, 4
mov ecx, dword [esi + 0x28]
xor edx, edx
cmp eax, 0xa
mov edi, dword [esi + 0x24]
mov ebx, dword [esi]
sete byte [esi + 0xc]
mov eax, dword [ecx + 8]
mov dword [esi + 0x50], eax
movsd xmm0, qword [ecx]
mov ecx, 1
cmove edi, ecx
test ebx, ebx
mov dword [esi + 0x24], edi
movsd qword [esi + 0x48], xmm0
je 0x4e37a0
js 0x4e443e
movzx eax, byte [0x5b9430]
mov ebx, dword [esi]
xor ecx, ecx
mov edx, ebx
call fcn.0051b940
mov ecx, eax
test eax, eax
mov edx, 0
je 0x4e4448
movzx eax, byte [esi + 0xc]
mov edi, dword [esi + 0x14]
mov dword [esi], ecx
mov dl, al
add edi, edx
push ebx
push dword [esi + 8]
push ecx
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov eax, dword [esi + 0x50]
mov ecx, dword [esi + 0x98]
movsd xmm0, qword [esi + 0x48]
mov edx, dword [esi + 0x24]
mov dword [ecx + 0x30], eax
mov eax, dword [esi]
movsd qword [ecx + 0x28], xmm0
mov dword [ecx], 0x1f
mov dword [ecx + 0x1c], ebx
mov dword [ecx + 0x20], eax
mov eax, dword [esi + 4]
mov dword [ecx + 0x24], ebx
mov dword [ecx + 0x34], eax
mov eax, 0x3c
mov dword [ecx + 0x38], edi
mov dword [ecx + eax], edx
jmp 0x4e328e
mov ecx, dword [esi + 0x14]
call fcn.004d37a0
test al, al
mov dword [esi + 0xc], 0x80000000
je 0x4e3815
mov ecx, dword [esi + 0x14]
call fcn.004d2a50
mov dword [esi], ecx
jmp 0x4e3f69
mov edx, dword [esi]
cmp edi, edx
jne 0x4e38cb
mov ecx, dword [esi + 0x28]
test edx, edx
mov eax, dword [ecx + 8]
mov dword [esi + 0x5c], eax
movsd xmm0, qword [ecx]
movsd qword [esi + 0x54], xmm0
movsd xmm0, qword [ecx]
movsd qword [esi + 0x48], xmm0
mov eax, dword [ecx + 8]
mov dword [esi + 0x50], eax
je 0x4e387a
js 0x4e4434
movzx eax, byte [0x5b9430]
mov ebx, dword [esi]
xor ecx, ecx
mov edx, ebx
call fcn.0051b940
mov edi, eax
test eax, eax
jne 0x4e3881
mov ecx, 1
mov edx, ebx
call fcn.0053b730
jmp 0x4e44d9
mov ebx, dword [esi]
mov edi, 1
push ebx
push dword [esi + 8]
push edi
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
movsd xmm1, qword [esi + 0x50]
mov ecx, dword [esi + 0x98]
movsd xmm0, qword [esi + 0x48]
mov eax, 0x24
movsd qword [ecx + 0x30], xmm1
movsd xmm1, qword [esi + 0x58]
movsd qword [ecx + 0x28], xmm0
movsd qword [ecx + 0x38], xmm1
mov dword [ecx], 0xa
mov dword [ecx + 0x1c], ebx
mov dword [ecx + 0x20], edi
mov dword [ecx + eax], ebx
jmp 0x4e328e
mov ecx, dword [esi + 8]
push edi
call fcn.004d36c0
add esp, 4
cmp eax, 0x7d
mov dword [esi + 0x34], eax
jne 0x4e4459
mov ecx, dword [esi + 0x14]
call fcn.004d37a0
mov eax, dword [esi + 0x18]
lea ecx, [esi + 0x48]
mov edx, dword [eax + 0x48]
mov eax, dword [eax + 0x4c]
mov dword [esi + 0x1c], edx
push 2
push 0x559acc
mov dword [esi + 0xc], eax
push eax
call fcn.00458840
add esp, 0xc
cmp dword [esi + 0x48], 0
je 0x4e3a7e
mov ecx, dword [esi + 0x6c]
mov eax, dword [esi + 0x84]
mov edi, dword [esi + 0x78]
mov ebx, dword [esi + 0x7c]
mov dword [esi + 0x10], ecx
cmp ecx, 0xffffffff
mov ecx, dword [esi + 0x80]
lea edx, [eax - 1]
mov dword [esi + 0x20], eax
mov dword [esi], ebx
mov dword [esi + 0x14], edi
mov dword [esi + 0xa0], edx
mov dword [esi + 8], ecx
je 0x4e3ac9
mov ecx, dword [esi + 0x64]
mov eax, ecx
mov dword [esi + 4], ecx
add ecx, edx
cmp ecx, ebx
jae 0x4e3d99
mov eax, dword [esi + 0x50]
mov edx, ebx
mov ebx, dword [esi + 0x20]
mov dword [esi + 0x90], eax
mov eax, dword [esi + 0x54]
mov dword [esi + 0x8c], eax
mov eax, dword [esi + 0x60]
sub ebx, eax
mov dword [esi + 0x40], eax
mov dword [esi + 0x9c], ebx
mov ebx, dword [esi + 0x58]
mov dword [esi + 0x44], ebx
movzx ecx, byte [edi + ecx]
mov edi, 1
xor eax, eax
mov ebx, 1
shld eax, ebx, cl
shl edi, cl
test cl, 0x20
mov ecx, 0
cmovne eax, edi
cmovne edi, ecx
and eax, dword [esi + 0x8c]
and edi, dword [esi + 0x90]
or edi, eax
je 0x4e3a11
mov eax, dword [esi + 0x10]
mov ecx, dword [esi + 0x44]
mov edi, dword [esi + 0x20]
mov ebx, dword [esi + 4]
cmp ecx, eax
cmova eax, ecx
mov ecx, dword [esi + 0x14]
cmp eax, edi
mov dword [esi + 0x2c], eax
cmova edi, eax
lea edx, [ecx + ebx]
mov ecx, eax
cmp edi, ecx
je 0x4e3a3a
mov eax, ecx
add ecx, ebx
cmp ecx, dword [esi]
jae 0x4e4127
mov ebx, dword [esi + 8]
lea ecx, [eax + 1]
movzx ebx, byte [ebx + eax]
cmp bl, byte [edx + eax]
mov ebx, dword [esi + 4]
je 0x4e39dd
sub ebx, dword [esi + 0x44]
mov edx, dword [esi]
mov dword [esi + 0x10], 0
lea ebx, [ebx + eax + 1]
jmp 0x4e3a1e
mov ebx, dword [esi + 4]
mov dword [esi + 0x10], 0
add ebx, dword [esi + 0x20]
mov edi, dword [esi + 0x14]
mov eax, dword [esi + 0xa0]
mov dword [esi + 4], ebx
lea ecx, [ebx + eax]
cmp ecx, edx
jb 0x4e3989
jmp 0x4e3d99
mov ecx, dword [esi + 0x44]
mov edx, dword [esi]
cmp dword [esi + 0x10], ecx
jae 0x4e3c8b
dec ecx
cmp ecx, dword [esi + 0x20]
jae 0x4e414f
lea edi, [ecx + ebx]
cmp edi, edx
jae 0x4e416e
mov eax, dword [esi + 8]
mov edx, dword [esi + 0x14]
movzx eax, byte [eax + ecx]
cmp al, byte [edx + edi]
mov edi, edx
mov edx, dword [esi]
je 0x4e3a3f
mov eax, dword [esi + 0x9c]
add ebx, dword [esi + 0x40]
mov dword [esi + 0x10], eax
jmp 0x4e3a21
cmp byte [esi + 0x56], 0
jne 0x4e3d99
mov ebx, dword [esi + 0x4c]
mov edx, dword [esi + 0x7c]
mov edi, dword [esi + 0x78]
movzx eax, byte [esi + 0x54]
test ebx, ebx
mov ecx, edx
je 0x4e3c16
mov ecx, edx
sub ecx, ebx
jbe 0x4e3c10
cmp byte [edi + ebx], 0xc0
jge 0x4e3c16
mov ecx, edi
push 0x5a3a70
push edx
push ebx
call fcn.0053c0c0
add esp, 0xc
jmp 0x4e44d9
mov ecx, dword [esi + 0x64]
mov eax, ecx
mov dword [esi + 4], ecx
add ecx, edx
cmp ecx, ebx
jae 0x4e3d99
mov edx, dword [esi + 0x58]
mov eax, dword [esi + 0x20]
cmp edx, eax
mov ebx, eax
mov dword [esi + 0x2c], edx
cmova ebx, edx
mov dword [esi + 0x10], ebx
lea ebx, [edx - 1]
mov dword [esi + 0x40], ebx
mov ebx, 1
sub ebx, edx
mov edx, dword [esi + 0x40]
mov dword [esi + 0xac], ebx
mov ebx, dword [esi + 0x54]
cmp edx, eax
mov eax, dword [esi + 0x50]
mov dword [esi + 0x8c], ebx
mov dword [esi + 0x90], eax
jae 0x4e41ac
mov eax, dword [esi + 0x60]
mov dword [esi + 0xb4], eax
mov eax, dword [esi + 8]
add eax, edx
mov dword [esi + 0x9c], eax
jmp 0x4e3b52
mov ebx, dword [esi + 4]
mov edi, edx
mov edx, dword [esi]
add ebx, dword [esi + 0x20]
mov eax, dword [esi + 0xa0]
mov dword [esi + 4], ebx
lea ecx, [ebx + eax]
cmp ecx, edx
jae 0x4e3d99
movzx ecx, byte [edi + ecx]
mov ebx, 1
xor eax, eax
mov edx, 1
shld eax, edx, cl
shl ebx, cl
test cl, 0x20
mov ecx, 0
mov edx, edi
cmovne eax, ebx
cmovne ebx, ecx
and eax, dword [esi + 0x8c]
and ebx, dword [esi + 0x90]
or ebx, eax
je 0x4e3b34
mov ebx, dword [esi + 4]
mov edi, dword [esi + 0x2c]
lea ecx, [edx + ebx]
cmp dword [esi + 0x10], edi
je 0x4e3bc3
lea edx, [ebx + edi]
mov eax, edi
cmp edx, dword [esi]
jae 0x4e423b
mov edx, dword [esi + 8]
lea edi, [eax + 1]
movzx edx, byte [edx + eax]
cmp dl, byte [ecx + eax]
je 0x4e3b90
add ebx, dword [esi + 0xac]
mov edx, dword [esi]
mov edi, dword [esi + 0x14]
add ebx, eax
jmp 0x4e3b3e
mov eax, dword [esi + 0x40]
mov edi, dword [esi + 0x9c]
mov edx, dword [esi + 0x2c]
lea ecx, [eax + ebx]
mov eax, dword [esi]
sub edx, 1
jb 0x4e3c8b
cmp ecx, eax
jae 0x4e418e
movzx eax, byte [edi]
dec edi
mov byte [esi + 0x44], al
mov eax, dword [esi + 0x14]
movzx ebx, byte [esi + 0x44]
cmp bl, byte [eax + ecx]
mov eax, dword [esi]
lea ecx, [ecx - 1]
je 0x4e3bd4
mov ebx, dword [esi + 4]
mov edi, dword [esi + 0x14]
mov edx, eax
add ebx, dword [esi + 0xb4]
jmp 0x4e3b3e
jne 0x4e3ab3
test ecx, ecx
mov dword [esi + 4], ebx
je 0x4e3c6b
mov ah, byte [edi + ebx]
mov dword [esi], edi
movzx ecx, ah
test ah, ah
jns 0x4e3c83
movzx ebx, byte [edi + ebx + 1]
and ecx, 0x1f
and ebx, 0x3f
cmp ah, 0xe0
jb 0x4e3c74
mov dword [esi + 8], edx
mov edx, dword [esi + 4]
shl ebx, 6
movzx edx, byte [edi + edx + 2]
and edx, 0x3f
or edx, ebx
cmp ah, 0xf0
jb 0x4e3c7b
mov ebx, dword [esi + 4]
and ecx, 7
shl edx, 6
shl ecx, 0x12
movzx ebx, byte [edi + ebx + 3]
and ebx, 0x3f
or ebx, edx
or ecx, ebx
jmp 0x4e3c80
test al, al
jne 0x4e3c8b
jmp 0x4e3d99
shl ecx, 6
or ecx, ebx
jmp 0x4e3c83
shl ecx, 0xc
or ecx, edx
mov edx, dword [esi + 8]
test al, al
je 0x4e3d8d
mov edi, dword [esi + 4]
test edi, edi
je 0x4e3cc4
cmp edi, dword [esi + 0xc]
mov ebx, dword [esi + 0x1c]
jae 0x4e3cce
cmp byte [ebx + edi], 0xbf
jg 0x4e3cd0
mov edx, dword [esi + 0xc]
mov dword [esi + 0xc8], 0
mov ecx, ebx
push 0x559ad0
push edi
push 0
call fcn.0053c0c0
add esp, 0xc
jmp 0x4e44d9
mov ebx, dword [esi + 0x1c]
mov eax, 1
jmp 0x4e3cf0
jne 0x4e3ca0
test edi, edi
js 0x4e44a1
movzx eax, byte [0x5b9430]
xor ecx, ecx
mov edx, edi
call fcn.0051b940
test eax, eax
je 0x4e44b2
push edi
push ebx
mov dword [esi + 0x10], eax
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov eax, ebx
mov ebx, dword [esi + 0xc]
add edi, 2
cmp ebx, edi
jbe 0x4e3d33
cmp byte [eax + edi], 0xbf
jg 0x4e3d35
mov ecx, dword [esi + 0x1c]
mov dword [esi + 0xc8], 3
mov edx, ebx
push 0x559ae0
push ebx
push edi
call fcn.0053c0c0
add esp, 0xc
jmp 0x4e44d9
jne 0x4e3d10
sub ebx, edi
je 0x4e3d6e
js 0x4e44ca
movzx eax, byte [0x5b9430]
xor ecx, ecx
mov edx, ebx
call fcn.0051b940
test eax, eax
jne 0x4e3d73
mov ecx, 1
mov edx, ebx
mov dword [esi + 0xc8], 3
call fcn.0053b730
jmp 0x4e44d9
mov eax, 1
mov ecx, dword [esi + 0x1c]
add ecx, edi
push ebx
push ecx
mov dword [esi + 8], eax
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov al, 2
jmp 0x4e3f5b
cmp ecx, 0x110000
jne 0x4e40bb
mov eax, dword [esi + 0x1c]
mov ecx, dword [esi + 0xc]
lea edx, [esi + 0x48]
mov dword [esi + 0xc8], 0
mov dword [esi + 0x4c], eax
mov dword [esi + 0x50], ecx
mov dword [esi + 0x54], 0
mov dword [esi + 0x58], ecx
lea ecx, [esi + 0x34]
mov dword [esi + 0x48], 0x3a
mov dword [esi + 0x5c], 1
mov dword [esi + 0x60], 0x3a
call fcn.004e51c0
cmp dword [esi + 0x34], 0
je 0x4e3e1a
mov edi, dword [esi + 0x38]
mov ebx, dword [esi + 0x1c]
test edi, edi
je 0x4e3e95
cmp edi, dword [esi + 0xc]
jae 0x4e3e9c
cmp byte [ebx + edi], 0xbf
jg 0x4e3ea2
mov edx, dword [esi + 0xc]
mov ecx, ebx
push 0x559af0
push edi
push 0
call fcn.0053c0c0
add esp, 0xc
jmp 0x4e44d9
mov eax, dword [esi + 0x1c]
mov ecx, dword [esi + 0xc]
lea edx, [esi + 0x48]
mov dword [esi + 0x4c], eax
mov dword [esi + 0x50], ecx
mov dword [esi + 0x54], 0
mov dword [esi + 0x58], ecx
lea ecx, [esi + 0x34]
mov dword [esi + 0x48], 0x3d
mov dword [esi + 0x5c], 1
mov dword [esi + 0x60], 0x3d
call fcn.004e51c0
cmp dword [esi + 0x34], 0
je 0x4e3fe7
mov edi, dword [esi + 0x38]
mov edx, dword [esi + 0xc]
test edi, edi
je 0x4e401e
cmp edi, edx
jae 0x4e4018
mov eax, dword [esi + 0x1c]
cmp byte [eax + edi], 0xbf
jg 0x4e401e
mov ecx, dword [esi + 0x1c]
push 0x559b10
push edi
push 0
call fcn.0053c0c0
add esp, 0xc
jmp 0x4e44d9
mov eax, 1
jmp 0x4e3ec2
jne 0x4e3e00
test edi, edi
js 0x4e447b
movzx eax, byte [0x5b9430]
xor ecx, ecx
mov edx, edi
call fcn.0051b940
test eax, eax
je 0x4e4482
push edi
push ebx
mov dword [esi + 0x10], eax
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov eax, ebx
mov ebx, dword [esi + 0xc]
mov dword [esi + 4], edi
inc edi
cmp ebx, edi
jbe 0x4e3f06
cmp byte [eax + edi], 0xbf
jg 0x4e3f08
mov ecx, dword [esi + 0x1c]
mov dword [esi + 0xc8], 2
mov edx, ebx
push 0x559b00
push ebx
push edi
call fcn.0053c0c0
add esp, 0xc
jmp 0x4e44d9
jne 0x4e3ee3
sub ebx, edi
je 0x4e3f41
js 0x4e4490
movzx eax, byte [0x5b9430]
xor ecx, ecx
mov edx, ebx
call fcn.0051b940
test eax, eax
jne 0x4e3f46
mov ecx, 1
mov edx, ebx
mov dword [esi + 0xc8], 2
call fcn.0053b730
jmp 0x4e44d9
mov eax, 1
mov ecx, dword [esi + 0x1c]
add ecx, edi
push ebx
push ecx
mov dword [esi + 8], eax
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov al, 1
mov dword [esi], eax
mov eax, dword [esi + 4]
mov edi, dword [esi + 0x10]
mov dword [esi + 0xc], ebx
mov dword [esi + 0x14], ebx
movzx ecx, word [esi + 0xb1]
mov edx, dword [esi + 0x98]
mov ebx, dword [esi + 0x28]
cmp dword [esi + 0x24], 0x50
mov word [edx + 0x1d], cx
movzx ecx, byte [esi + 0xb3]
mov byte [edx + 0x1f], cl
mov ecx, dword [ebx + 8]
mov dword [edx + 0x34], ecx
mov ecx, dword [esi + 4]
movsd xmm0, qword [ebx]
movsd qword [edx + 0x2c], xmm0
mov dword [edx + 4], ecx
mov dword [edx + 8], edi
mov dword [edx + 0xc], eax
mov ecx, dword [esi + 0xc]
mov eax, dword [esi + 8]
mov edi, dword [esi + 0xa4]
mov dword [edx + 0x10], ecx
mov dword [edx + 0x14], eax
mov eax, dword [esi + 0x14]
mov ecx, dword [esi + 0xa8]
mov dword [edx + 0x18], eax
mov eax, dword [esi]
mov byte [edx + 0x1c], al
mov dword [edx + 0x20], ecx
mov ecx, dword [esi + 0x94]
mov dword [edx + 0x24], edi
mov dword [edx + 0x28], ecx
sete byte [edx + 0x38]
mov dword [edx], 0x22
jmp 0x4e328e
mov ecx, dword [esi + 0xc]
call fcn.00414b40
mov dword [esi + 4], eax
mov ebx, dword [esi + 0xc]
push ebx
push dword [esi + 0x1c]
mov edi, edx
push edx
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov dword [esi], 0
mov eax, ebx
mov dword [esi + 0xc], 0x80000001
jmp 0x4e3f69
jne 0x4e3e7d
mov ecx, edi
mov dword [esi + 0x20], edi
call fcn.00414b40
mov dword [esi + 4], eax
mov dword [esi + 0x10], edx
mov ebx, dword [esi + 0x20]
push ebx
mov edi, dword [esi + 0x1c]
push edi
push dword [esi + 0x10]
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
inc ebx
mov dword [esi], ebx
jne 0x4e404b
mov ecx, dword [esi + 0xc]
jmp 0x4e407e
mov edx, dword [esi + 0xc]
mov ecx, edx
sub ecx, ebx
jbe 0x4e407c
cmp byte [edi + ebx], 0xbf
jg 0x4e407e
mov ecx, dword [esi + 0x1c]
mov dword [esi + 0xc8], 1
push 0x559b20
push edx
push dword [esi]
call fcn.0053c0c0
add esp, 0xc
jmp 0x4e44d9
jne 0x4e405a
mov dword [esi + 0xc8], 1
mov dword [esi + 0x14], ecx
call fcn.00414b40
mov dword [esi + 0xc], eax
mov dword [esi + 8], edx
mov eax, dword [esi + 0x1c]
add eax, dword [esi]
push dword [esi + 0x14]
push eax
push dword [esi + 8]
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov edi, dword [esi + 0x10]
mov eax, dword [esi + 0x20]
mov dword [esi], 0
jmp 0x4e3f69
mov eax, 1
cmp ecx, 0x80
jb 0x4e40e3
mov eax, 2
cmp ecx, 0x800
jb 0x4e40e3
cmp ecx, 0x10000
mov eax, 4
sbb eax, 0
mov ebx, dword [esi + 4]
add ebx, eax
je 0x4e40fd
mov ecx, dword [esi]
mov eax, edx
sub eax, ebx
jbe 0x4e4103
cmp byte [ecx + ebx], 0xbf
jg 0x4e4109
jmp 0x4e3ab5
mov ecx, dword [esi]
mov eax, edx
jmp 0x4e4109
jne 0x4e3ab5
test eax, eax
mov dword [esi + 4], ebx
je 0x4e3c8b
movzx eax, byte [ecx + ebx]
test al, al
jns 0x4e3c8b
cmp al, 0xe0
jmp 0x4e3c8b
mov ecx, dword [esi + 0x2c]
mov edx, dword [esi]
mov dword [esi + 0xc8], 0
add ecx, ebx
cmp edx, ecx
cmova ecx, edx
push 0x5a3574
call fcn.0053bb10
add esp, 4
jmp 0x4e44d9
mov edx, dword [esi + 0x20]
mov dword [esi + 0xc8], 0
push 0x5a3554
call fcn.0053bb10
add esp, 4
jmp 0x4e44d9
mov edx, dword [esi]
mov dword [esi + 0xc8], 0
mov ecx, edi
push 0x5a3564
call fcn.0053bb10
add esp, 4
jmp 0x4e44d9
mov edx, dword [esi]
mov dword [esi + 0xc8], 0
push 0x5a3564
call fcn.0053bb10
add esp, 4
jmp 0x4e44d9
xor ebx, ebx
movzx ecx, byte [edi + ecx]
mov edi, 1
xor eax, eax
mov edx, 1
shld eax, edx, cl
shl edi, cl
test cl, 0x20
cmovne eax, edi
cmovne edi, ebx
and eax, dword [esi + 0x8c]
and edi, dword [esi + 0x90]
or edi, eax
je 0x4e421a
mov eax, dword [esi + 4]
mov ecx, dword [esi + 0x14]
mov edi, dword [esi + 0x2c]
add ecx, eax
cmp dword [esi + 0x10], edi
je 0x4e42a0
mov edx, dword [esi + 4]
mov eax, edi
add edx, edi
cmp edx, dword [esi]
jae 0x4e423b
mov edx, dword [esi + 8]
lea edi, [eax + 1]
movzx edx, byte [edx + eax]
cmp dl, byte [ecx + eax]
je 0x4e41e7
mov ecx, dword [esi + 4]
add ecx, dword [esi + 0xac]
add ecx, eax
mov dword [esi + 4], ecx
jmp 0x4e4220
mov eax, dword [esi + 0x20]
add dword [esi + 4], eax
mov eax, dword [esi + 4]
mov ecx, dword [esi + 0xa0]
mov edi, dword [esi + 0x14]
add ecx, eax
cmp ecx, dword [esi]
jb 0x4e41ae
jmp 0x4e3d99
mov ecx, dword [esi + 4]
mov edx, dword [esi]
mov dword [esi + 0xc8], 0
add ecx, dword [esi + 0x2c]
cmp edx, ecx
cmova ecx, edx
push 0x5a3574
call fcn.0053bb10
add esp, 4
jmp 0x4e44d9
lea ecx, [esi + 0x34]
lea eax, [esi + 0x30]
mov dword [esi + 0x48], 0x559494
mov dword [esi + 0x4c], 1
mov dword [esi + 0x58], 0
mov edx, 0x55949c
mov dword [esi + 0x50], ecx
lea ecx, [esi + 0x48]
mov dword [esi + 0x34], eax
mov dword [esi + 0x38], 0x453380
mov dword [esi + 0x54], 1
call fcn.0053ba80
cmp dword [esi + 0x2c], 0
je 0x4e3c8b
mov ecx, dword [esi + 0x40]
mov edx, dword [esi + 0x20]
mov dword [esi + 0xc8], 0
push 0x5a3554
call fcn.0053bb10
add esp, 4
jmp 0x4e44d9
mov ecx, 0x559b40
call fcn.0053bdf0
mov ecx, dword [esi + 8]
mov edx, dword [esi]
push 0x55946c
push edx
push edi
call fcn.0053c0c0
add esp, 0xc
jmp 0x4e44d9
mov ecx, dword [esi + 8]
mov edx, dword [esi]
push 0x55946c
push edx
push edi
call fcn.0053c0c0
add esp, 0xc
jmp 0x4e44d9
lea ecx, [esi + 0x34]
lea eax, [esi + 0x30]
mov dword [esi + 0x48], 0x559494
mov dword [esi + 0x4c], 1
mov dword [esi + 0x58], 0
mov edx, 0x55949c
mov dword [esi + 0x50], ecx
lea ecx, [esi + 0x48]
mov dword [esi + 0x34], eax
mov dword [esi + 0x38], 0x453380
mov dword [esi + 0x54], 1
call fcn.0053ba80
jmp 0x4e44d9
lea ecx, [esi + 0x34]
lea eax, [esi + 0x30]
mov dword [esi + 0x48], 0x559494
mov dword [esi + 0x4c], 1
mov dword [esi + 0x58], 0
mov edx, 0x55949c
mov dword [esi + 0x50], ecx
lea ecx, [esi + 0x48]
mov dword [esi + 0x34], eax
mov dword [esi + 0x38], 0x453380
mov dword [esi + 0x54], 1
call fcn.0053ba80
jmp 0x4e44d9
mov dword [esi + 0xc8], 0
call fcn.0044e3c0
jmp 0x4e44d9
mov ecx, str.assertion_failed:_self.char____p__self.char____P
mov edx, 0x3a
push 0x559b8c
call fcn.0053bbd0
mov ecx, dword [esi + 8]
mov edx, dword [esi]
push 0x5594cc
push edx
push edi
call fcn.0053c0c0
add esp, 0xc
jmp 0x4e44d9
mov ecx, 0x5594ac
call fcn.0053bf10
jmp 0x4e44d9
mov ecx, 0x5594bc
call fcn.0053bf10
jmp 0x4e44d9
mov ecx, 0x5594bc
call fcn.0053bf10
jmp 0x4e44d9
mov ecx, 0x55952c
call fcn.0053bf10
jmp 0x4e44d9
mov ecx, 0x55953c
call fcn.0053bf10
jmp 0x4e44d9
mov ecx, 0x55952c
call fcn.0053bf10
jmp 0x4e44d9
mov ecx, 0x55953c
call fcn.0053bf10
jmp 0x4e44d9
call fcn.0044e3c0
jmp 0x4e44d9
call fcn.0044e3c0
jmp 0x4e44d9
mov ecx, 1
mov edx, ebx
call fcn.0053b730
jmp 0x4e44d9
mov dword [esi + 0x48], 0
lea ecx, [esi + 0x34]
mov edx, 0x5599ac
push 0x559b30
lea eax, [esi + 0x48]
push eax
call fcn.00545330
add esp, 8
jmp 0x4e44d9
call fcn.0044e3c0
jmp 0x4e44d9
mov ecx, 1
mov edx, edi
call fcn.0053b730
jmp 0x4e44d9
mov dword [esi + 0xc8], 2
call fcn.0044e3c0
jmp 0x4e44d9
mov dword [esi + 0xc8], 0
call fcn.0044e3c0
jmp 0x4e44d9
mov ecx, 1
mov edx, edi
mov dword [esi + 0xc8], 0
call fcn.0053b730
jmp 0x4e44d9
mov dword [esi + 0xc8], 3
call fcn.0044e3c0
ud2