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

Disassembly:
sub esp, 0x80
push ebx
push ebp
push esi
push edi
xor ecx, ecx
xor edi, edi
xor ebp, ebp
mov dword [esp + 0x14], edi
mov dword [esp + 0x1c], ebp
cmp word [esp + 0xa4], cx
je 0x49e737
mov eax, dword [esp + 0x94]
mov eax, dword [eax]
mov eax, dword [eax]
test byte [eax + 0x4c], 0x40
jne 0x49efb9
mov eax, dword [esp + 0x98]
movzx eax, word [eax]
mov dword [esp + 0x70], eax
cmp eax, 0x3f
ja 0x49efb9
movzx ebx, ax
xor edx, edx
xor esi, esi
mov byte [esp + 0x18], 1
mov eax, ebx
mov dword [esp + 0x30], ebx
bts edx, eax
mov dword [esp + 0x50], ecx
cmp eax, 0x20
mov dword [esp + 0x54], ecx
mov dword [esp + 0x44], ecx
cmovae esi, edx
mov dword [esp + 0x48], ecx
xor edx, esi
cmp eax, 0x40
mov eax, dword [esp + 0xa0]
cmovae esi, edx
add edx, 0xffffffff
mov dword [esp + 0x64], edx
mov edx, dword [esp + 0x18]
adc esi, 0xffffffff
and eax, 0x803
mov dword [esp + 0x60], esi
neg eax
sbb eax, eax
neg eax
add eax, 0x182
xor esi, esi
movzx eax, ax
mov dword [esp + 0x5c], eax
mov dword [esp + 0x58], esi
jmp 0x49e7c0
mov eax, dword [esp + 0x60]
cmp ebp, eax
ja 0x49ef4e
jb 0x49e7d8
cmp edi, dword [esp + 0x64]
jae 0x49ef52
movzx eax, word [esp + 0xa4]
cmp esi, eax
jg 0x49ef7b
test esi, esi
jle 0x49e806
mov ebx, dword [esp + 0x44]
or ebx, dword [ecx + 8]
mov dword [esp + 0x44], ebx
mov ebx, dword [esp + 0x48]
or ebx, dword [ecx + 0xc]
mov dword [esp + 0x48], ebx
mov ebx, dword [esp + 0x30]
cmp esi, eax
jge 0x49e830
mov eax, dword [esp + 0x9c]
mov eax, dword [eax + 0x18]
mov esi, dword [eax + esi*4]
mov eax, dword [esp + 0xa0]
mov dword [esp + 0x28], esi
test eax, 0x800
je 0x49e842
mov ecx, esi
jmp 0x49ef39
mov esi, dword [esp + 0xa8]
mov eax, dword [esp + 0xa0]
mov dword [esp + 0x28], esi
mov edx, dword [esi + 0x24]
test edx, 0x400
jne 0x49ef71
and eax, 0x80
mov dword [esp + 0x68], eax
je 0x49e862
xor eax, eax
mov word [esi + 0x1e], ax
movzx eax, byte [esi + 0x10]
lea ecx, [eax + eax*8]
mov eax, dword [esp + 0x94]
mov eax, dword [eax + 4]
mov eax, dword [eax + ecx*8 + 0x34]
mov dword [esp + 0x4c], eax
xor eax, eax
mov dword [esp + 0x2c], eax
test ebx, ebx
je 0x49e984
mov ebx, dword [esp + 0x98]
add ebx, 4
mov dword [esp + 0x24], ebx
xor ebp, ebp
xor edx, edx
bts ebp, eax
cmp eax, 0x20
cmovae edx, ebp
xor ebp, edx
cmp eax, 0x40
mov ecx, ebp
cmovae edx, ebp
and ecx, edi
mov eax, edx
mov dword [esp + 0x34], edx
and eax, dword [esp + 0x1c]
or ecx, eax
jne 0x49e961
mov esi, dword [ebx]
test esi, esi
je 0x49e961
lea esp, [esp]
mov eax, dword [esi + 4]
test eax, 0x41000
je 0x49e8f2
test eax, 0x40000
je 0x49e8e9
mov eax, dword [esi + 0x14]
mov esi, dword [eax + 4]
jmp 0x49e8ec
mov esi, dword [esi + 0xc]
test esi, esi
jne 0x49e8d0
jmp 0x49e961
cmp byte [esi], 0xa6
jne 0x49e961
mov edx, dword [esp + 0x4c]
cmp dword [esi + 0x1c], edx
jne 0x49e961
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0x44]
movzx eax, ax
not ecx
push 0
push eax
mov eax, dword [esp + 0x50]
not eax
push eax
movsx eax, word [esi + 0x20]
push ecx
push eax
mov eax, dword [esp + 0xa8]
push edx
add eax, 0x50
push eax
call fcn.0048d720
mov edi, eax
add esp, 0x1c
test edi, edi
je 0x49e95d
movzx ebx, word [edi + 0xc]
cmp ebx, 1
jne 0x49e9be
mov eax, dword [esp + 0x28]
xor ecx, ecx
movzx edx, word [eax + 0x28]
test edx, edx
je 0x49e9ba
mov eax, dword [eax + 0x30]
cmp edi, dword [eax]
je 0x49e9ba
inc ecx
add eax, 4
cmp ecx, edx
jl 0x49e951
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x2c]
add dword [esp + 0x24], 0x14
inc eax
mov ebx, dword [esp + 0x24]
mov dword [esp + 0x2c], eax
cmp eax, dword [esp + 0x30]
jl 0x49e897
mov esi, dword [esp + 0x28]
mov edx, dword [esi + 0x24]
test edx, 0x1000
jne 0x49edfa
test edx, 0x100
je 0x49ea2f
mov edx, dword [esp + 0x18]
mov eax, 1
mov dword [esp + 0x3c], 0
mov dword [esp + 0x34], 0
jmp 0x49ea6c
cmp ecx, edx
jge 0x49e95d
test bl, 0x82
je 0x49ea14
cmp word [esi + 0x20], 0
jl 0x49ea14
mov eax, dword [esp + 0x94]
mov esi, dword [eax]
mov eax, dword [esp + 0x24]
push dword [eax]
push esi
call fcn.0045b260
mov ebx, eax
add esp, 8
test ebx, ebx
jne 0x49e9ed
mov eax, dword [esi]
mov ebx, dword [eax + 8]
push dword [edi]
push esi
call fcn.0045b660
add esp, 8
test eax, eax
je 0x49e95d
push dword [eax]
push dword [ebx]
call fcn.00475700
add esp, 8
test eax, eax
jne 0x49e95d
mov edi, dword [esp + 0x14]
or edi, ebp
mov ebp, dword [esp + 0x1c]
or ebp, dword [esp + 0x34]
mov dword [esp + 0x14], edi
mov dword [esp + 0x1c], ebp
jmp 0x49e961
mov ecx, dword [esi + 0x20]
mov dword [esp + 0x3c], ecx
test ecx, ecx
je 0x49efb9
test byte [ecx + 0x38], 4
jne 0x49efb9
cmp byte [ecx + 0x36], 0
movzx eax, word [ecx + 0x32]
mov dword [esp + 0x34], eax
movzx eax, word [ecx + 0x34]
je 0x49ea66
test edx, 0x8000
jne 0x49ea66
mov dl, 1
jmp 0x49ea68
xor dl, dl
mov dword [esp + 0x18], edx
movzx eax, ax
xor cl, cl
xor ebp, ebp
mov byte [esp + 0x23], 0
mov byte [esp + 0x22], 0
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x24], ebp
mov dword [esp + 0x6c], eax
test eax, eax
je 0x49edfa
mov dword [esp + 0x38], ebp
movzx edi, word [esi + 0x18]
mov bh, 1
mov byte [esp + 0x13], bh
cmp ebp, edi
jge 0x49eb02
movzx eax, word [esi + 0x2a]
cmp ebp, eax
jl 0x49eb02
mov ebx, dword [esi + 0x30]
mov eax, dword [esp + 0x5c]
mov esi, dword [ebx + ebp*4]
movzx ecx, word [esi + 0xc]
and eax, ecx
test ax, ax
je 0x49eadc
test ecx, 0x180
movzx eax, dl
mov ecx, 0
cmove ecx, eax
mov dl, cl
mov dword [esp + 0x18], edx
jmp 0x49edbb
test cl, 1
je 0x49eafe
mov esi, dword [esi]
lea edx, [ebp + 1]
cmp edx, edi
jge 0x49eafe
lea ecx, [ebp + 1]
lea ecx, [ebx + ecx*4]
mov eax, dword [ecx]
cmp dword [eax], esi
je 0x49eb2f
inc edx
add ecx, 4
cmp edx, edi
jl 0x49eaf0
mov bh, byte [esp + 0x13]
mov edx, dword [esp + 0x3c]
test edx, edx
je 0x49eb33
mov eax, dword [edx + 4]
movsx esi, word [eax + ebp*2]
mov eax, dword [edx + 0x1c]
mov dword [esp + 0x40], esi
mov cl, byte [eax + ebp]
mov eax, dword [edx + 0xc]
and cl, 1
mov byte [esp + 0x13], cl
movsx eax, word [eax + 0x28]
cmp esi, eax
jne 0x49eb3f
jmp 0x49eb38
xor bh, bh
jmp 0x49eb02
mov byte [esp + 0x13], 0
or esi, 0xffffffff
mov dword [esp + 0x40], esi
cmp byte [esp + 0x18], 0
je 0x49eb6c
test esi, esi
js 0x49eb6c
cmp ebp, edi
jl 0x49eb6c
mov eax, dword [edx + 0xc]
lea ecx, [esi + esi*4]
mov edx, dword [esp + 0x18]
xor edi, edi
movzx edx, dl
mov eax, dword [eax + 4]
cmp byte [eax + ecx*4 + 0xc], 0
cmove edx, edi
mov dword [esp + 0x18], edx
xor edi, edi
test bh, bh
je 0x49edd8
mov ebp, dword [esp + 0x98]
add ebp, 4
cmp edi, dword [esp + 0x30]
jge 0x49edd4
xor edx, edx
xor ecx, ecx
mov eax, edi
bts edx, eax
cmp eax, 0x20
cmovae ecx, edx
xor edx, ecx
cmp eax, 0x40
cmovae ecx, edx
and edx, dword [esp + 0x14]
and ecx, dword [esp + 0x1c]
or edx, ecx
jne 0x49eccb
mov eax, dword [ebp]
test eax, eax
je 0x49eccb
lea esp, [esp]
mov ecx, dword [eax + 4]
test ecx, 0x41000
je 0x49ebe7
test ecx, 0x40000
je 0x49ebdb
mov eax, dword [eax + 0x14]
mov eax, dword [eax + 4]
jmp 0x49ebde
mov eax, dword [eax + 0xc]
test eax, eax
jne 0x49ebc0
jmp 0x49eccb
mov cl, byte [esp + 0xa0]
and cl, 0xc0
neg cl
sbb cl, cl
and bh, cl
mov bl, bh
cmp esi, 0xffffffff
jl 0x49ec1c
cmp byte [eax], 0xa6
jne 0x49eccb
mov ecx, dword [esp + 0x4c]
cmp dword [eax + 0x1c], ecx
jne 0x49eccb
movsx eax, word [eax + 0x20]
cmp eax, esi
jmp 0x49ec86
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x38]
mov ecx, dword [ecx + 0x28]
mov edx, dword [ecx + edx + 4]
test edx, edx
je 0x49ec52
nop
mov ecx, dword [edx + 4]
test ecx, 0x41000
je 0x49ec52
test ecx, 0x40000
je 0x49ec4b
mov ecx, dword [edx + 0x14]
mov edx, dword [ecx + 4]
jmp 0x49ec4e
mov edx, dword [edx + 0xc]
test edx, edx
jne 0x49ec30
mov ecx, dword [eax + 4]
test ecx, 0x41000
je 0x49ec74
test ecx, 0x40000
je 0x49ec6d
mov ecx, dword [eax + 0x14]
mov eax, dword [ecx + 4]
jmp 0x49ec70
mov eax, dword [eax + 0xc]
test eax, eax
jne 0x49ec52
push dword [esp + 0x4c]
push edx
push eax
push 0
call fcn.0045b400
add esp, 0x10
test eax, eax
jne 0x49eccb
cmp esi, 0xffffffff
je 0x49ece4
mov eax, dword [esp + 0x94]
push dword [ebp]
mov esi, dword [eax]
push esi
call fcn.0045b260
mov ecx, eax
add esp, 8
test ecx, ecx
jne 0x49ecad
mov eax, dword [esi]
mov ecx, dword [eax + 8]
mov eax, dword [esp + 0x3c]
mov bh, bl
mov edx, dword [esp + 0x24]
mov eax, dword [eax + 0x20]
push dword [eax + edx*4]
push dword [ecx]
call fcn.00475700
add esp, 8
test eax, eax
je 0x49ece0
inc edi
add ebp, 0x14
test bh, bh
je 0x49edd4
mov esi, dword [esp + 0x40]
jmp 0x49eb80
mov esi, dword [esp + 0x40]
cmp word [esp + 0x68], 0
mov ebp, dword [esp + 0x24]
mov ebx, dword [esp + 0x28]
je 0x49ecfb
lea eax, [ebp + 1]
mov word [ebx + 0x1e], ax
test byte [esp + 0xa0], 0x40
jne 0x49ed64
mov ecx, dword [esp + 0x98]
lea eax, [edi + edi*4]
mov al, byte [ecx + eax*4 + 0xc]
and al, 1
cmp byte [esp + 0x23], 0
je 0x49ed2e
mov cl, byte [esp + 0x13]
xor cl, byte [esp + 0x22]
cmp cl, al
jne 0x49edd8
jmp 0x49ed64
mov dl, al
xor dl, byte [esp + 0x13]
mov byte [esp + 0x22], dl
je 0x49ed5f
mov eax, dword [esp + 0x58]
xor ecx, ecx
bts ecx, eax
xor edx, edx
cmp eax, 0x20
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
mov eax, dword [esp + 0xac]
cmovae edx, ecx
or dword [eax], ecx
or dword [eax + 4], edx
mov byte [esp + 0x23], 1
mov ecx, dword [esp + 0x98]
lea eax, [edi + edi*4]
test byte [ecx + eax*4 + 0xc], 2
je 0x49ed84
movzx eax, word [ebx + 0x18]
cmp ebp, eax
jne 0x49edd8
or dword [ebx + 0x24], 0x80000
mov edx, dword [esp + 0x2c]
cmp esi, 0xffffffff
movzx edx, dl
mov eax, 1
cmove edx, eax
xor eax, eax
xor ecx, ecx
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x18]
bts eax, edi
cmp edi, 0x20
cmovae ecx, eax
xor eax, ecx
cmp edi, 0x40
cmovae ecx, eax
or dword [esp + 0x14], eax
or dword [esp + 0x1c], ecx
add dword [esp + 0x38], 0x14
inc ebp
mov dword [esp + 0x24], ebp
cmp ebp, dword [esp + 0x6c]
jge 0x49edec
mov esi, dword [esp + 0x28]
jmp 0x49ea95
mov ebp, dword [esp + 0x24]
test ebp, ebp
je 0x49ede7
mov eax, dword [esp + 0x34]
movzx eax, ax
cmp ebp, eax
jge 0x49edec
mov byte [esp + 0x18], 0
cmp byte [esp + 0x2c], 0
je 0x49edfa
mov byte [esp + 0x18], 1
jmp 0x49ee05
cmp byte [esp + 0x18], 0
je 0x49ef67
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x50]
mov ebx, dword [esp + 0x30]
mov ebp, dword [esp + 0x1c]
or eax, dword [ecx + 8]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x54]
or eax, dword [ecx + 0xc]
mov dword [esp + 0x54], eax
xor eax, eax
mov dword [esp + 0x38], eax
test ebx, ebx
je 0x49ef31
mov ebx, dword [esp + 0x98]
add ebx, 4
mov dword [esp + 0x2c], ebx
xor esi, esi
xor edi, edi
bts esi, eax
cmp eax, 0x20
cmovae edi, esi
xor esi, edi
cmp eax, 0x40
mov ecx, esi
cmovae edi, esi
and ecx, dword [esp + 0x14]
mov eax, edi
and eax, ebp
or ecx, eax
jne 0x49ef0d
mov ebx, dword [ebx]
test ebx, ebx
je 0x49ee90
mov eax, dword [esp + 0x94]
add eax, 0x1e8
push ebx
push eax
call fcn.0048d610
add esp, 8
mov dword [esp + 0x34], edx
mov ebp, eax
mov ecx, edx
jmp 0x49ee98
xor ebp, ebp
xor ecx, ecx
mov dword [esp + 0x34], ecx
mov eax, ebp
or eax, ecx
jne 0x49eee3
mov dword [esp + 0x78], fcn.00431450
mov eax, 1
mov word [esp + 0x88], ax
mov dword [esp + 0x7c], 0x4740d0
mov dword [esp + 0x8c], 0
test ebx, ebx
je 0x49eee3
lea eax, [esp + 0x74]
push ebx
push eax
call fcn.0049b300
add esp, 8
cmp word [esp + 0x88], 0
je 0x49ef09
mov ecx, dword [esp + 0x50]
mov eax, dword [esp + 0x54]
not ecx
not eax
and ecx, ebp
and eax, dword [esp + 0x34]
or ecx, eax
mov ebp, dword [esp + 0x1c]
jne 0x49ef0d
or dword [esp + 0x14], esi
or ebp, edi
mov dword [esp + 0x1c], ebp
jmp 0x49ef0d
mov ebp, dword [esp + 0x1c]
mov eax, dword [esp + 0x38]
add dword [esp + 0x2c], 0x14
inc eax
mov ebx, dword [esp + 0x2c]
mov dword [esp + 0x38], eax
cmp eax, dword [esp + 0x30]
jl 0x49ee43
mov ecx, dword [esp + 0x28]
mov ebx, dword [esp + 0x30]
mov edi, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
mov esi, dword [esp + 0x58]
inc esi
mov dword [esp + 0x58], esi
test dl, dl
jne 0x49e7c0
mov eax, dword [esp + 0x60]
cmp edi, dword [esp + 0x64]
jne 0x49ef7b
cmp ebp, eax
jne 0x49ef7b
mov al, byte [esp + 0x70]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x80
ret
mov ecx, dword [esp + 0x28]
mov ebp, dword [esp + 0x1c]
jmp 0x49ef2d
cmp byte [esi + 0x1d], 0
je 0x49ef7b
test al, al
jns 0x49ef58
cmp byte [esp + 0x18], 0
jne 0x49efd3
dec ebx
test ebx, ebx
jle 0x49efb9
xor ecx, ecx
xor edx, edx
mov eax, ebx
bts ecx, eax
cmp eax, 0x20
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
cmovae edx, ecx
add ecx, 0xffffffff
mov eax, ecx
adc edx, 0xffffffff
and eax, edi
mov esi, edx
and esi, ebp
cmp eax, ecx
jne 0x49efb4
cmp esi, edx
je 0x49efc6
dec ebx
test ebx, ebx
jg 0x49ef87
pop edi
pop esi
pop ebp
xor al, al
pop ebx
add esp, 0x80
ret
pop edi
pop esi
pop ebp
mov al, bl
pop ebx
add esp, 0x80
ret
pop edi
pop esi
pop ebp
or al, 0xff
pop ebx
add esp, 0x80
ret