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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x98
mov esi, esp
mov dword [esi + 0x80], ebp
mov dword [esi + 0x84], esp
mov dword [esi + 0x90], 0xffffffff
mov dword [esi + 0x8c], 0x5789a0
mov dword [esi + 0x50], ecx
movzx eax, byte [ebp + 8]
mov ebx, edx
movdqa xmm0, xmmword [0x589280]
mov ecx, dword fs:[0]
mov dword [esi + 0x88], ecx
lea ecx, [esi + 0x88]
mov dword fs:[0], ecx
cmp byte [edx + 0x168], 0
setne cl
and cl, al
mov eax, dword [edx + 0x7c]
mov edx, dword [edx + 0x78]
mov byte [esi + 4], cl
mov ecx, 0xffffffff
shl eax, 4
nop dword [eax]
test eax, eax
je 0x49f51a
movdqa xmm1, xmmword [edx]
add edx, 0x10
inc ecx
add eax, 0xfffffff0
pcmpeqb xmm1, xmm0
pmovmskb edi, xmm1
cmp edi, 0xffff
jne 0x49f480
mov edx, dword [ebx + 0x88]
mov dword [esi + 0x90], 0xffffffff
cmp ecx, edx
jae 0x49fc50
mov eax, dword [ebx + 0x84]
mov edx, dword [eax + ecx*8 + 4]
push dword [eax + ecx*8]
call dword [edx + 0x20]
add esp, 4
mov edi, eax
lea eax, [esi + 0x60]
push edi
push eax
call dword [edx + 0xc]
add esp, 8
test edi, edi
je 0x49f510
mov eax, dword [esi + 0x6c]
mov ecx, dword [esi + 0x68]
mov dword [esi + 8], ebx
mov ebx, dword [esi + 0x60]
mov edx, dword [esi + 0x64]
xor ecx, 0x721300f2
xor eax, 0x48efe268
xor ebx, 0x79916b1f
xor edx, 0x5ece47c5
or ecx, ebx
mov ebx, dword [esi + 8]
or eax, edx
or eax, ecx
je 0x49f51c
mov ecx, 0x58f1dc
call fcn.0057fb10
xor edi, edi
test edi, edi
mov eax, 0x58fbd4
mov dword [esi + 0x14], 0
mov dword [esi + 0x18], 1
mov dword [esi + 0x54], ebx
mov dword [esi + 0x1c], 0
cmovne eax, edi
cmp dword [ebx + 0x104], 0x80000000
mov dword [esi + 0x58], eax
mov dword [esi + 0x5c], 0
jne 0x49f68b
cmp dword [ebx + 0x110], 0x80000000
movzx eax, byte [esi + 4]
lea edi, [esi + 0x54]
lea ecx, [esi + 0x30]
lea edx, [esi + 0x14]
mov dword [esi + 0x90], 0
jne 0x49f6c7
push eax
push edi
push ebx
call fcn.004a0ca0
add esp, 0xc
mov eax, dword [esi + 0x38]
mov edi, dword [eax + 0x4c]
test edi, edi
je 0x49f784
mov ecx, dword [eax + 0x48]
mov dword [esi + 4], eax
mov ah, byte [esi + 0x45]
imul ebx, edi, 0x11c
lea edx, [ecx + 0x108]
test ah, ah
mov byte [esi + 8], ah
jne 0x49f5d2
jmp 0x49f612
add edx, 0x11c
add ebx, 0xfffffee4
je 0x49f71c
cmp dword [edx], 0
jne 0x49f5c0
cmp dword [edx - 0xd4], 0x110000
jne 0x49f5c0
mov eax, dword [edx - 4]
test al, 4
jne 0x49f5c0
and eax, 0x2008
cmp eax, 0x2000
je 0x49f5c0
jmp 0x49f636
add edx, 0x11c
add ebx, 0xfffffee4
je 0x49f71c
cmp dword [edx], 0
jne 0x49f600
cmp dword [edx - 0xd4], 0x110000
jne 0x49f600
mov eax, dword [edx - 4]
test al, 4
jne 0x49f600
and eax, 0x1008
cmp eax, 0x1000
je 0x49f600
mov dl, 1
cmp byte [esi + 8], 0
jne 0x49f728
add ecx, 0x108
imul edi, edi, 0x11c
jmp 0x49f662
add ecx, 0x11c
add edi, 0xfffffee4
je 0x49f776
cmp dword [ecx], 0
jne 0x49f673
cmp dword [ecx - 0xd4], 0x110000
je 0x49f650
mov eax, dword [ecx - 4]
test al, 4
jne 0x49f650
and eax, 0x1008
cmp eax, 0x1000
je 0x49f650
jmp 0x49f772
mov ecx, dword [ebx + 0x108]
mov ebx, dword [ebx + 0x10c]
test ebx, ebx
je 0x49f6f4
mov dword [esi + 8], ecx
mov dword [esi + 0x90], 0
lea ecx, [esi + 0x14]
xor edx, edx
mov dword [esi + 4], ebx
push ebx
call fcn.0057bdc0
add esp, 4
mov eax, dword [esi + 0x18]
mov edi, dword [esi + 0x1c]
mov ebx, dword [esi + 4]
mov ecx, dword [esi + 8]
jmp 0x49f6fb
push eax
push edi
push ebx
mov dword [esi + 8], ebx
call fcn.004a0ca0
add esp, 0xc
mov eax, dword [esi + 8]
lea ecx, [esi + 0x30]
mov edx, dword [eax + 0x114]
push dword [eax + 0x118]
call fcn.004a0f90
add esp, 4
jmp 0x49f82a
xor edi, edi
mov eax, 1
add eax, edi
push ebx
push ecx
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
add edi, ebx
mov dword [esi + 0x90], 0
mov dword [esi + 0x1c], edi
jmp 0x49f82a
xor edx, edx
cmp byte [esi + 8], 0
je 0x49f642
add ecx, 0x108
imul edi, edi, 0x11c
jmp 0x49f74e
add ecx, 0x11c
add edi, 0xfffffee4
je 0x49f776
cmp dword [ecx], 0
jne 0x49f75f
cmp dword [ecx - 0xd4], 0x110000
je 0x49f740
mov eax, dword [ecx - 4]
test al, 4
jne 0x49f740
and eax, 0x2008
cmp eax, 0x2000
je 0x49f740
mov cl, 1
jmp 0x49f778
xor ecx, ecx
mov eax, dword [esi + 4]
mov edi, dword [eax + 0x64]
test edi, edi
jne 0x49f78f
jmp 0x49f7e9
xor edx, edx
xor ecx, ecx
mov edi, dword [eax + 0x64]
test edi, edi
je 0x49f7e9
mov eax, dword [eax + 0x60]
movdqa xmm0, xmmword [0x5896d0]
imul edi, edi, 0x16c
pxor xmm1, xmm1
add eax, 0x11c
jmp 0x49f7d7
movq xmm2, qword [eax + 0x28]
punpckldq xmm2, xmm2
pand xmm2, xmm0
pcmpeqd xmm2, xmm1
movmskpd ebx, xmm2
cmp ebx, 3
je 0x49f7fa
add eax, 0x16c
add edi, 0xfffffe94
je 0x49f7e9
cmp dword [eax + 4], 4
jne 0x49f7b0
mov ebx, dword [eax]
cmp dword [ebx], 0x706c6568
jne 0x49f7b0
jmp 0x49f7ca
or dl, cl
mov dword [esi + 0x90], 0
cmp dl, 1
jne 0x49f818
mov dword [esi + 0x90], 0
lea ecx, [esi + 0x30]
mov edx, 0x590509
push 0x51
call fcn.004a0f90
add esp, 4
jmp 0x49f82a
lea ecx, [esi + 0x30]
mov edx, 0x5904c4
push 0x45
call fcn.004a0f90
add esp, 4
mov eax, dword [esi + 0x18]
mov ecx, dword [esi + 0x1c]
lea edx, [esi + 0x30]
mov dword [esi + 0x34], eax
mov dword [esi + 0x38], ecx
mov dword [esi + 0x3c], 0
mov dword [esi + 0x40], ecx
mov dword [esi + 4], ecx
lea ecx, [esi + 0x74]
mov dword [esi + 0x30], 0xa
mov dword [esi + 0x44], 1
mov dword [esi + 0x2c], eax
mov dword [esi + 0x48], 0xa
call fcn.004a0950
cmp dword [esi + 0x74], 0
mov ecx, dword [esi + 0x2c]
je 0x49fa7e
mov edi, dword [esi + 0x78]
xor ebx, ebx
inc edi
jne 0x49f885
mov edx, dword [esi + 4]
mov edi, ecx
jmp 0x49f9f9
mov edx, dword [esi + 4]
mov eax, edx
sub eax, edi
mov dword [esi + 0x24], eax
jbe 0x49f8ac
cmp byte [ecx + edi], 0xbf
jg 0x49f8ae
push 0x58f238
push edi
push 0
call fcn.0057fc70
add esp, 0xc
jmp 0x49fc69
jne 0x49f897
add edi, ecx
xor edx, edx
mov dword [esi + 8], edi
jmp 0x49f8d8
movzx eax, bl
test byte [eax + 0x5ec140], 1
je 0x49f9da
nop word [eax + eax]
cmp ecx, edi
je 0x49f9f4
mov edi, ecx
movzx ecx, byte [ecx]
mov dword [esi + 4], edx
movzx ebx, cl
test cl, cl
js 0x49f8f0
mov eax, edx
lea ecx, [edi + 1]
jmp 0x49f960
movzx eax, byte [edi + 1]
and ebx, 0x1f
and eax, 0x3f
cmp cl, 0xdf
jbe 0x49f93c
movzx edx, byte [edi + 2]
shl eax, 6
and edx, 0x3f
or edx, eax
cmp cl, 0xf0
jb 0x49f949
movzx eax, byte [edi + 3]
and ebx, 7
shl edx, 6
mov ecx, ebx
shl ecx, 0x12
and eax, 0x3f
or eax, edx
mov ebx, eax
or ebx, ecx
lea ecx, [edi + 4]
cmp ebx, 0x110000
je 0x49fad7
mov eax, dword [esi + 4]
jmp 0x49f960
shl ebx, 6
lea ecx, [edi + 2]
or ebx, eax
mov eax, dword [esi + 4]
jmp 0x49f960
mov eax, dword [esi + 4]
shl ebx, 0xc
lea ecx, [edi + 3]
or ebx, edx
nop word cs:[eax + eax]
nop
mov edx, ecx
sub edx, edi
mov edi, dword [esi + 8]
add edx, eax
lea eax, [ebx - 9]
cmp eax, 5
jb 0x49f8d0
cmp ebx, 0x20
je 0x49f8d0
cmp ebx, 0x80
jb 0x49f9da
mov eax, ebx
mov dword [esi + 0x10], 0
shr eax, 8
cmp eax, 0x1f
jg 0x49f9b2
test eax, eax
je 0x49f8b7
cmp eax, 0x16
jne 0x49f9e1
cmp ebx, 0x1680
je 0x49f8d0
jmp 0x49f9da
cmp eax, 0x20
je 0x49f9ca
cmp eax, 0x30
jne 0x49f9e1
cmp ebx, 0x3000
je 0x49f8d0
jmp 0x49f9da
movzx eax, bl
test byte [eax + 0x5ec140], 2
jne 0x49f8d0
mov dword [esi + 0x10], 0
mov eax, dword [esi + 4]
mov dword [esi + 0xc], edx
cmp ecx, edi
jne 0x49faf3
jmp 0x49fc38
mov edx, dword [esi + 0x24]
xor ebx, ebx
xor eax, eax
cmp ebx, eax
jne 0x49fa7e
test edx, edx
je 0x49fa3d
mov dword [esi + 8], edi
js 0x49fc5a
movzx eax, byte [0x5fd2ec]
xor ecx, ecx
mov edi, edx
call fcn.0056a9f0
mov edx, edi
mov ebx, eax
test eax, eax
jne 0x49fa45
mov ecx, 1
mov dword [esi + 0x90], 0
call fcn.0057f230
jmp 0x49fc69
mov ebx, 1
mov dword [esi + 8], edi
mov edi, edx
push edx
push dword [esi + 8]
push ebx
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
cmp dword [esi + 0x14], 0
je 0x49fa6b
push dword [esi + 0x2c]
push 0
push dword [0x5fd290]
call dword [sym.imp.kernel32.dll_HeapFree]
mov dword [esi + 0x14], edi
mov dword [esi + 0x18], ebx
mov dword [esi + 0x1c], edi
mov dword [esi + 0x90], 0
lea ecx, [esi + 0x14]
mov dword [esi + 0x90], 0
call fcn.0046e8a0
mov edx, dword [esi + 0x1c]
cmp dword [esi + 0x14], edx
jne 0x49faa8
lea ecx, [esi + 0x14]
push 1
call fcn.0057bdc0
add esp, 4
mov edx, dword [esi + 0x1c]
mov eax, dword [esi + 0x18]
mov byte [eax + edx], 0xa
inc edx
mov eax, dword [esi + 0x50]
mov dword [esi + 0x1c], edx
mov ecx, dword [esi + 0x88]
movsd xmm0, qword [esi + 0x14]
mov dword [eax + 8], edx
movsd qword [eax], xmm0
mov dword fs:[0], ecx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov al, 1
mov edi, dword [esi + 8]
mov dword [esi + 0xc], 0
mov dword [esi + 0x10], eax
mov eax, dword [esi + 4]
mov edx, eax
cmp ecx, edi
je 0x49fc38
mov edi, dword [esi + 8]
mov dword [esi + 0x20], edi
jmp 0x49fb1c
movzx eax, bl
test byte [eax + 0x5ec140], 1
je 0x49fc19
nop dword [eax + eax]
cmp ecx, dword [esi + 0x20]
mov eax, dword [esi + 4]
je 0x49fc38
mov edi, dword [esi + 0x20]
movzx ebx, byte [edi - 1]
mov dword [esi + 0x28], edi
test bl, bl
js 0x49fb40
dec edi
movzx ebx, bl
mov dword [esi + 0x20], edi
jmp 0x49fbaf
movzx eax, byte [edi - 2]
cmp al, 0xc0
jge 0x49fb74
mov dword [esi + 0x4c], eax
movzx eax, byte [edi - 3]
cmp al, 0xbf
jg 0x49fb7f
mov edi, dword [esi + 0x28]
add edi, 0xfffffffc
mov dword [esi + 0x20], edi
mov edi, eax
mov eax, dword [esi + 0x28]
and edi, 0x3f
movzx eax, byte [eax - 4]
and eax, 7
shl eax, 6
or edi, eax
mov eax, edi
jmp 0x49fb88
add edi, 0xfffffffe
and eax, 0x1f
mov dword [esi + 0x20], edi
jmp 0x49fb95
add edi, 0xfffffffd
and eax, 0xf
mov dword [esi + 0x20], edi
shl eax, 6
mov edi, eax
mov eax, dword [esi + 0x4c]
and eax, 0x3f
or eax, edi
and bl, 0x3f
shl eax, 6
movzx ebx, bl
or ebx, eax
mov eax, dword [esi + 4]
cmp ebx, 0x110000
je 0x49fc38
lea eax, [ebx - 9]
cmp eax, 5
jb 0x49fb10
cmp ebx, 0x20
je 0x49fb10
cmp ebx, 0x80
jb 0x49fc19
mov eax, ebx
shr eax, 8
cmp eax, 0x1f
jg 0x49fbf1
test eax, eax
je 0x49fafb
cmp eax, 0x16
jne 0x49fc19
cmp ebx, 0x1680
je 0x49fb10
jmp 0x49fc19
cmp eax, 0x20
je 0x49fc09
cmp eax, 0x30
jne 0x49fc19
cmp ebx, 0x3000
je 0x49fb10
jmp 0x49fc19
movzx eax, bl
test byte [eax + 0x5ec140], 2
jne 0x49fb10
sub edx, ecx
mov edi, dword [esi + 8]
mov eax, dword [esi + 4]
add edx, dword [esi + 0x28]
cmp byte [esi + 0x10], 0
mov ebx, edx
mov edx, dword [esi + 0x24]
jne 0x49f9f9
jmp 0x49f9fb
cmp byte [esi + 0x10], 0
mov edx, dword [esi + 0x24]
mov edi, dword [esi + 8]
mov ebx, dword [esi + 0xc]
jne 0x49f9f9
jmp 0x49f9fb
push 0x590a6c
call fcn.0057f710
mov dword [esi + 0x90], 0
call fcn.004634e0
ud2