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

Disassembly:
push ecx
push esi
push dword [esp + 0x24]
push dword [esp + 0x24]
push dword [esp + 0x24]
push dword [esp + 0x24]
push dword [esp + 0x24]
push dword [esp + 0x24]
push dword [esp + 0x24]
call 0x4fbf60
mov esi, eax
add esp, 0x1c
cmp esi, 0xffffffd2
jne 0x42cca2
mov ecx, 0x888c1c
call fcn.0042c180
mov ecx, eax
call fcn.0046bf70
test eax, eax
jne 0x42cca0
push 4
call fcn.00520ff7
push 0
mov esi, eax
push 0x80000
push 0x8000
mov dword [esp + 0x14], esi
call fcn.00517fc0
add esp, 0x10
mov dword [esi], eax
mov ecx, 0x888c1c
call fcn.0042c180
push esi
mov ecx, eax
call fcn.0046bff0
pop esi
add esp, 4
jmp 0x4fbf60
mov eax, esi
pop esi
pop ecx
ret
mov eax, 0x5178
call fcn.00521040
mov eax, dword [0x8870bc]
xor eax, esp
mov dword [esp + 0x5174], eax
mov eax, dword [esp + 0x5194]
mov edx, dword [esp + 0x5188]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x517c]
push ebx
mov ecx, dword [esp + 0x5194]
xor ebx, ebx
mov dword [esp + 8], eax
mov eax, dword [esp + 0x5188]
push ebp
mov ebp, dword [esp + 0x5188]
mov dword [esp + 0x24], eax
push esi
push edi
mov edi, eax
mov dword [esp + 0x28], ecx
xor eax, eax
mov dword [esp + 0x20], ebp
mov dword [esp + 0x44], eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x5c], eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], eax
mov dword [esp + 0x38], eax
lea eax, [edx + edx]
mov dword [esp + 0x84], eax
add eax, ebp
mov esi, eax
mov dword [esp + 0x8c], eax
mov dword [esp + 0x34], edx
mov dword [esp + 0x48], 0
lea eax, [esi - 2]
mov dword [esp + 0x60], eax
lea eax, [esp + 0x184]
mov dword [esp + 0xe8], eax
mov eax, edi
cmp eax, 0xffffffff
jne 0x4fc02a
push ebp
call fcn.0051bc00
mov ecx, dword [esp + 0x2c]
add esp, 4
mov dword [esp + 0x2c], eax
xor edx, edx
lea eax, [eax*2]
cmp edi, 0xffffffff
sete dl
add eax, ebp
test dword [esp + 0x519c], 0x1fff9fc0
mov dword [esp + 0x74], edx
mov edx, dword [esp + 0x34]
mov dword [esp + 0x10], eax
mov dword [esp + 0x70], eax
jne 0x4fd2f1
cmp dword [esp + 0x14], ebx
je 0x4fd2ea
test ebp, ebp
je 0x4fd2ea
test ecx, ecx
je 0x4fd2ea
cmp edx, dword [esp + 0x2c]
jbe 0x4fc086
mov eax, 0xffffffdf
jmp 0x4fd2f6
mov ebp, dword [esp + 0x14]
cmp dword [ebp + 0x38], 0x50435245
je 0x4fc09d
mov eax, 0xffffffe1
jmp 0x4fd2f6
mov ecx, dword [ebp + 0x48]
mov eax, ecx
and al, 7
cmp al, 2
je 0x4fc0b2
mov eax, 0xffffffe0
jmp 0x4fd2f6
mov eax, dword [esp + 0x519c]
shr ecx, 0xe
and ecx, 0xc
or eax, ecx
mov dword [esp + 0x519c], eax
cmp dword [ebp + 0x10], ebx
je 0x4fc0db
test eax, 0xbfffbfc0
jne 0x4fc0db
mov edi, 1
jmp 0x4fc0dd
xor edi, edi
mov ebp, dword [ebp + 0x40]
mov ecx, ebp
shr ecx, 0x13
and ecx, 1
mov dword [esp + 0x18], ecx
test al, 0x20
je 0x4fc0f7
mov eax, 2
jmp 0x4fc0fd
shr eax, 4
and eax, 1
movzx eax, ax
mov word [esp + 0x11c], ax
test ax, ax
je 0x4fc121
mov eax, ebp
or eax, dword [esp + 0x519c]
test eax, 0x20000000
jne 0x4fd2f1
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x4fc141
cmp dword [eax + 0x24], 0xffffffff
je 0x4fc141
test ebp, 0x800000
jne 0x4fc141
mov eax, 0xffffffc8
jmp 0x4fd2f6
mov eax, dword [esp + 0x28]
test byte [eax + 0x25], 1
je 0x4fc169
push dword [eax + 8]
push dword [eax + 0x10]
mov eax, dword [eax + 4]
call eax
mov eax, dword [esp + 0x30]
add esp, 8
mov edx, dword [esp + 0x34]
mov ecx, dword [esp + 0x18]
and byte [eax + 0x25], 0xfe
mov dword [eax + 0x10], ebx
add eax, 0x20
mov dword [esp + 0x58], eax
mov dword [esp + 0x4c], 0xfc00
mov dword [esp + 0x50], 0xdc00
mov dword [eax], ebx
test edi, edi
je 0x4fc2cc
test ecx, ecx
je 0x4fc24b
test dword [esp + 0x519c], 0x40000000
jne 0x4fc24b
test ebp, 0x4000000
jne 0x4fc24b
mov ebx, 0xfc00
mov edi, 0xdc00
cmp esi, dword [esp + 0x10]
jae 0x4fc1df
mov ax, word [esi]
and ax, bx
cmp ax, di
jne 0x4fc1df
test edx, edx
jne 0x4fc48a
mov eax, 0xffffffe6
jmp 0x4fd2f6
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x20]
movzx ecx, word [eax + 0x64]
test ecx, ecx
je 0x4fc217
nop
cmp esi, edx
jbe 0x4fc217
sub esi, 2
cmp esi, edx
jbe 0x4fc212
nop dword [eax + eax]
mov ax, word [esi]
and ax, bx
cmp ax, di
jne 0x4fc212
sub esi, 2
cmp esi, edx
ja 0x4fc200
sub ecx, 1
jne 0x4fc1f0
mov eax, dword [esp + 0x2c]
mov edi, esi
mov ebx, dword [esp + 0x58]
sub edi, edx
sar edi, 1
push ebx
sub eax, edi
push eax
push esi
call fcn.0051ec60
mov ecx, dword [esp + 0x34]
add esp, 0xc
mov dword [ecx + 0x28], eax
test eax, eax
je 0x4fc244
add dword [ebx], edi
jmp 0x4fd2f6
mov ebx, 1
jmp 0x4fc24f
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x1c]
push eax
push ecx
push dword [esp + 0x51a4]
push dword [esp + 0x40]
push dword [esp + 0x3c]
push dword [esp + 0x34]
push dword [esp + 0x2c]
call fcn.00517e20
mov edi, eax
add esp, 0x1c
cmp edi, 0xffffffd3
je 0x4fc2cc
test edi, edi
js 0x4fc2c5
test dword [esp + 0x519c], 0x4000
je 0x4fc2c5
mov eax, dword [esp + 0x2c]
mov esi, dword [esp + 0x74]
mov ebx, dword [esp + 0x28]
lea esi, [esi + eax]
push dword [ebx + 8]
mov eax, dword [ebx]
add esi, esi
push esi
call eax
add esp, 8
mov dword [ebx + 0x10], eax
test eax, eax
je 0x4fd2dc
push esi
push dword [esp + 0x24]
push eax
call fcn.005229c0
add esp, 0xc
or byte [ebx + 0x25], 1
mov eax, edi
jmp 0x4fd2f6
cmp dword [esp + 0x18], 0
mov edx, dword [esp + 0x20]
mov dword [esp + 0x130], edx
je 0x4fc4a6
test ebx, ebx
jne 0x4fc4a6
test dword [esp + 0x519c], 0x40000000
je 0x4fc303
test ebp, 0x4000000
je 0x4fc4a6
mov edi, dword [esp + 0x10]
mov eax, ebp
xor ecx, ecx
and eax, 0x4000000
cmp esi, edi
jae 0x4fc33d
mov edx, 0xfc00
test eax, eax
je 0x4fc46c
mov ebx, 0xdc00
mov ax, word [esi]
and ax, dx
cmp ax, bx
jne 0x4fc33d
add esi, 2
mov ecx, 1
cmp esi, edi
jb 0x4fc326
mov ebx, dword [esp + 0x20]
mov edx, esi
mov dword [esp + 0x130], edx
test ecx, ecx
jne 0x4fc394
mov eax, dword [esp + 0x14]
movzx ecx, word [eax + 0x64]
test ecx, ecx
je 0x4fc394
nop word [eax + eax]
cmp edx, ebx
jbe 0x4fc394
sub edx, 2
mov dword [esp + 0x130], edx
cmp edx, ebx
jbe 0x4fc38f
mov ax, word [edx]
and ax, word [esp + 0x4c]
cmp ax, word [esp + 0x50]
jne 0x4fc38f
sub edx, 2
mov dword [esp + 0x130], edx
cmp edx, ebx
ja 0x4fc372
sub ecx, 1
jne 0x4fc360
push dword [esp + 0x58]
mov eax, dword [esp + 0x30]
mov ecx, edx
sub ecx, ebx
sar ecx, 1
sub eax, ecx
push eax
push edx
call fcn.0051ec60
mov edx, dword [esp + 0x34]
add esp, 0xc
mov dword [edx + 0x28], eax
test eax, eax
je 0x4fc453
nop dword [eax]
mov ecx, dword [esp + 0x130]
mov eax, dword [edx + 0x20]
sub ecx, ebx
sar ecx, 1
add eax, ecx
lea ecx, [edx + 0x20]
mov dword [ecx], eax
test ebp, 0x4000000
je 0x4fc49e
cmp dword [edx + 0x28], 0
jg 0x4fc49e
lea edi, [ebx + eax*2]
mov dword [esp + 0x10], edi
cmp edi, esi
jae 0x4fc494
lea edx, [edi + 2]
mov dword [esp + 0x130], edx
cmp edx, esi
jae 0x4fc42d
nop dword [eax + eax]
mov ax, word [edx]
and ax, word [esp + 0x4c]
cmp ax, word [esp + 0x50]
jne 0x4fc42d
add edx, 2
mov dword [esp + 0x130], edx
cmp edx, esi
jb 0x4fc410
mov eax, dword [esp + 0x2c]
push ecx
mov ecx, edx
sub ecx, ebx
sar ecx, 1
sub eax, ecx
push eax
push edx
call fcn.0051ec60
mov edx, dword [esp + 0x34]
add esp, 0xc
mov dword [edx + 0x28], eax
test eax, eax
jne 0x4fc3c0
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x14]
test eax, eax
jne 0x4fc4ac
movq xmm0, qword [ecx]
mov ebp, dword [ecx + 8]
jmp 0x4fc4b3
mov ax, word [esi]
and ax, dx
mov edx, 0xdc00
cmp ax, dx
jne 0x4fc33d
cmp dword [esp + 0x34], ecx
jbe 0x4fc1d5
mov eax, 0xffffffdc
jmp 0x4fd2f6
mov dword [esp + 0x48], 2
jmp 0x4fc453
mov eax, dword [edx + 0x28]
jmp 0x4fd2f6
mov edi, dword [esp + 0x10]
jmp 0x4fc457
movq xmm0, qword [eax]
mov ebp, dword [eax + 8]
mov ecx, dword [ecx + 0x40]
test eax, eax
mov ebx, 0x845764
mov dword [esp + 0xd8], ebp
cmovne ebx, eax
movq qword [esp + 0xd0], xmm0
mov eax, ecx
or eax, dword [esp + 0x519c]
shr eax, 0x1f
mov dword [esp + 0x1c], eax
mov eax, ecx
shr eax, 8
and eax, 1
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x14]
mov eax, dword [eax + 0x48]
mov dword [esp + 0x54], eax
mov eax, dword [ebx + 0x24]
cmp eax, 0xffffffff
jne 0x4fc505
mov eax, dword [esp + 0x70]
jmp 0x4fc508
lea eax, [edx + eax*2]
mov dword [esp + 0x64], eax
lea eax, [esp + 0x90]
mov dword [esp + 0x178], eax
mov eax, edi
sub eax, edx
mov dword [esp + 0xa8], edx
sar eax, 1
mov dword [esp + 0xac], eax
mov eax, dword [ebx + 0x14]
mov dword [esp + 0x180], eax
mov eax, dword [ebx + 0x18]
mov dword [esp + 0x17c], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x114], eax
mov dword [esp + 0x12c], edx
mov edx, dword [esp + 0x54]
mov eax, edx
shr eax, 0xc
and eax, 1
mov dword [esp + 0x90], 2
mov dword [esp + 0x100], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0xcc], 0
mov dword [esp + 0x134], edi
cmp word [eax + 0x64], 0
ja 0x4fc59b
test edx, 0x2000
jne 0x4fc59b
xor eax, eax
jmp 0x4fc5a0
mov eax, 1
mov dword [esp + 0x104], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x15c], ecx
mov dword [esp + 0x164], 0
mov dword [esp + 0x148], 0
movzx edx, word [eax + 0x6e]
lea edi, [eax + 0x70]
movzx eax, word [eax + 0x6c]
mov word [esp + 0x122], ax
imul eax, edx
mov dword [esp + 0x124], edi
mov dword [esp + 0x144], 0
mov word [esp + 0x120], dx
mov dword [esp + 0x168], 0
lea eax, [edi + eax*2]
mov edi, dword [esp + 0x14]
mov dword [esp + 0x128], eax
mov ax, word [edi + 0x60]
mov word [esp + 0x11e], ax
movzx eax, word [edi + 0x62]
dec eax
cmp eax, 5
ja case.default.0x4fc62b
jmp dword [eax*4 + 0x4fd310]
mov eax, 0xd
mov dword [esp + 0x16c], 1
mov word [esp + 0x170], ax
jmp 0x4fc6ad
mov eax, 0xa
mov dword [esp + 0x16c], 1
mov word [esp + 0x170], ax
jmp 0x4fc6ad
xor eax, eax
mov dword [esp + 0x16c], 1
mov word [esp + 0x170], ax
jmp 0x4fc6ad
mov dword [esp + 0x16c], 2
mov dword [esp + 0x170], 0xa000d
jmp 0x4fc6ad
mov dword [esp + 0x168], 1
jmp 0x4fc6ad
mov dword [esp + 0x168], 2
mov edx, dword [ebx + 0x28]
cmp edx, dword [edi + 0x4c]
mov ecx, dword [ebx + 0x2c]
cmovae edx, dword [edi + 0x4c]
cmp ecx, dword [edi + 0x50]
movzx eax, word [edi + 0x68]
cmovae ecx, dword [edi + 0x50]
mov dword [esp + 0xf0], ecx
mov ecx, dword [ebx + 0x30]
cmp ecx, dword [edi + 0x54]
lea eax, [eax*8 + 0x54]
mov ebx, eax
mov dword [esp + 0x68], eax
cmovae ecx, dword [edi + 0x54]
mov dword [esp + 0xec], edx
mov dword [esp + 0xf4], ecx
cmp ebx, 0x800
ja 0x4fc71d
mov ecx, 0x5000
mov edi, dword [esp + 0xe8]
mov eax, ecx
mov dword [esp + 0xe0], edi
xor edx, edx
div ebx
sub ecx, edx
mov dword [esp + 0xdc], ecx
jmp 0x4fc778
lea ecx, [ebx + ebx*4]
add ecx, ecx
mov eax, ecx
mov dword [esp + 0xdc], ecx
shr eax, 0xa
cmp eax, edx
jbe 0x4fc754
mov ecx, edx
shl ecx, 0xa
cmp ebx, ecx
jbe 0x4fc745
mov eax, 0xffffffc1
jmp 0x4fd2f6
mov eax, ecx
xor edx, edx
div ebx
sub ecx, edx
mov dword [esp + 0xdc], ecx
push ebp
push ecx
call dword [esp + 0xd8]
mov edi, eax
add esp, 8
mov dword [esp + 0xe0], edi
test edi, edi
je 0x4fd2dc
mov ecx, dword [esp + 0xdc]
mov eax, dword [esp + 0x14]
add ecx, edi
mov dword [esp + 0xe4], ecx
movzx eax, word [eax + 0x68]
shl eax, 3
push eax
lea eax, [edi + 0x54]
push 0xff
push eax
call fcn.005234c0
mov edx, dword [esp + 0x20]
add esp, 0xc
mov eax, dword [edx + 0xc]
mov ebx, dword [edx + 0x48]
mov dword [esp + 0x108], eax
lea edi, [eax + 0x100]
add eax, 0x340
mov dword [esp + 0x10c], edi
mov dword [esp + 0x110], eax
test bl, 0x10
je 0x4fc8f3
movzx ebp, word [edx + 0x58]
mov dword [esp + 0x3c], ebp
movzx eax, bp
movzx ebp, bp
mov dword [esp + 0x24], 1
mov dword [esp + 0x30], ebp
test bl, 0x20
je 0x4fc914
mov ecx, eax
mov eax, 0xff
mov edx, ecx
cmp word [esp + 0x3c], ax
ja 0x4fc80c
movzx eax, byte [ecx + edi]
mov dword [esp + 0x3c], eax
mov ebp, dword [esp + 0x18]
and edx, 0x7f
mov eax, dword [esp + 0x30]
test ebp, ebp
je 0x4fc854
cmp ax, 0x7f
jbe 0x4fc854
shr ecx, 7
movzx eax, word [ecx*2 + 0x84aa30]
shl eax, 7
add eax, edx
movzx eax, word [eax*2 + 0x84ee30]
lea eax, [eax + eax*2]
mov ax, word [eax*4 + 0x847d3c]
add ax, word [esp + 0x30]
movzx eax, ax
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x30]
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x3c]
movzx ecx, cx
movzx eax, ax
mov dword [esp + 0x80], ecx
mov dword [esp + 0x7c], eax
test bl, bl
jns 0x4fc921
movzx ecx, word [edx + 0x5c]
mov dword [esp + 0x38], ecx
movzx eax, cx
movzx ecx, cx
mov dword [esp + 0x5c], 1
mov dword [esp + 0x40], ecx
test ebx, 0x100
je 0x4fc927
mov ecx, eax
mov eax, 0xff
mov edx, ecx
cmp word [esp + 0x38], ax
ja 0x4fc8b3
movzx eax, byte [edi + ecx]
mov dword [esp + 0x38], eax
mov ebx, dword [esp + 0x40]
and edx, 0x7f
test ebp, ebp
je 0x4fc92b
cmp bx, 0x7f
jbe 0x4fc92b
shr ecx, 7
movzx eax, word [ecx*2 + 0x84aa30]
shl eax, 7
add eax, edx
movzx eax, word [eax*2 + 0x84ee30]
lea eax, [eax + eax*2]
mov ax, word [eax*4 + 0x847d3c]
add ax, bx
movzx eax, ax
mov dword [esp + 0x38], eax
jmp 0x4fc92b
test dword [esp + 0x54], 0x200
mov ebp, dword [esp + 0x18]
jne 0x4fc90d
test bl, 0x40
je 0x4fc90d
lea eax, [edx + 0x14]
mov dword [esp + 0x44], eax
xor eax, eax
jmp 0x4fc858
mov ebp, dword [esp + 0x18]
mov eax, dword [esp + 0x30]
jmp 0x4fc858
xor ebx, ebx
xor eax, eax
jmp 0x4fc92b
mov ebx, dword [esp + 0x40]
mov edi, dword [esp + 0x10]
movzx eax, bx
mov dword [esp + 0x88], eax
nop dword [eax]
mov ebp, dword [esp + 0x16c]
xor ecx, ecx
mov edx, dword [esp + 0x168]
mov dword [esp + 0x78], ecx
mov dword [esp + 0x34], ecx
mov dword [esp + 0xfc], ecx
mov ecx, dword [esp + 0x14]
test dword [ecx + 0x40], 0x10000
jne 0x4fcf4f
cmp dword [esp + 0x6c], 0
je 0x4fcabc
mov ebx, dword [esp + 0x10]
mov edi, esi
cmp esi, ebx
jae 0x4fcab8
mov ecx, dword [esp + 0x18]
test ecx, ecx
je 0x4fca42
mov ecx, ebx
mov ebx, edi
test edx, edx
je 0x4fc9d7
mov eax, dword [esp + 0x134]
cmp edi, eax
jae 0x4fca17
push dword [esp + 0x18]
lea ecx, [esp + 0x170]
push ecx
push eax
push edx
push edi
call fcn.0051d430
mov ebp, dword [esp + 0x180]
add esp, 0x14
test eax, eax
jne 0x4fcab8
mov edx, dword [esp + 0x168]
jmp 0x4fca13
mov ecx, dword [esp + 0x134]
lea eax, [ebp*2]
sub ecx, eax
cmp edi, ecx
ja 0x4fca13
mov ax, word [edi]
cmp ax, word [esp + 0x170]
jne 0x4fca13
cmp ebp, 1
je 0x4fcab8
mov ax, word [edi + 2]
cmp ax, word [esp + 0x172]
je 0x4fcab8
mov ecx, dword [esp + 0x10]
add edi, 2
cmp edi, ecx
jae 0x4fcab8
mov ax, word [edi]
and ax, word [esp + 0x4c]
cmp ax, word [esp + 0x50]
cmovne edi, ebx
add edi, 2
cmp edi, ecx
jae 0x4fcab8
jmp 0x4fc997
test edx, edx
je 0x4fca79
mov eax, dword [esp + 0x134]
cmp edi, eax
jae 0x4fcab1
push ecx
lea ecx, [esp + 0x170]
push ecx
push eax
push edx
push edi
call fcn.0051d430
mov ebp, dword [esp + 0x180]
add esp, 0x14
test eax, eax
jne 0x4fcab8
mov edx, dword [esp + 0x168]
jmp 0x4fcaad
mov ecx, dword [esp + 0x134]
lea eax, [ebp*2]
sub ecx, eax
cmp edi, ecx
ja 0x4fcaad
mov ax, word [edi]
cmp ax, word [esp + 0x170]
jne 0x4fcaad
cmp ebp, 1
je 0x4fcab8
mov ax, word [edi + 2]
cmp ax, word [esp + 0x172]
je 0x4fcab8
mov ecx, dword [esp + 0x18]
add edi, 2
cmp edi, ebx
jb 0x4fca42
mov dword [esp + 0x10], edi
mov ebx, dword [esp + 0x1c]
test ebx, ebx
je 0x4fcb37
mov ebp, dword [esp + 0x24]
mov ebx, dword [esp + 0x44]
test ebp, ebp
jne 0x4fcad4
test ebx, ebx
je 0x4fcb2b
cmp esi, edi
sbb eax, eax
neg eax
cmp esi, edi
jae 0x4fcb23
movzx eax, word [esi]
test ebp, ebp
je 0x4fcaf3
cmp ax, word [esp + 0x30]
je 0x4fcb2b
cmp ax, word [esp + 0x3c]
je 0x4fcb2b
test ebx, ebx
je case.0x4fd01a.997
mov ecx, 0xff
cmp ax, cx
cmova eax, ecx
movzx edx, ax
mov eax, 1
mov ecx, edx
shr edx, 3
and ecx, 7
shl eax, cl
test byte [edx + ebx], al
mov eax, 0
setne al
test eax, eax
je case.0x4fd01a.997
mov eax, dword [esp + 0x134]
jmp 0x4fcdba
cmp dword [esp + 0x24], 0
je 0x4fcba1
cmp esi, edi
jae 0x4fcb7e
mov eax, dword [esp + 0x7c]
cmp ax, word [esp + 0x80]
je 0x4fcb6e
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x3c]
movzx eax, word [esi]
cmp ax, cx
je 0x4fcb7e
cmp ax, dx
je 0x4fcb7e
add esi, 2
cmp esi, edi
jb 0x4fcb58
jmp 0x4fcb7e
mov eax, dword [esp + 0x30]
cmp word [esi], ax
je 0x4fcb7e
add esi, 2
cmp esi, edi
jb 0x4fcb72
cmp word [esp + 0x11c], 0
mov eax, dword [esp + 0x134]
jne 0x4fcb98
cmp esi, eax
jae case.0x4fd01a.997
mov ebp, dword [esp + 0x24]
jmp 0x4fcdbe
test dword [esp + 0x54], 0x200
je 0x4fcd5c
mov eax, dword [esp + 0x84]
mov edi, dword [esp + 0x12c]
add eax, edi
cmp esi, eax
jbe 0x4fcf24
cmp esi, dword [esp + 0x10]
jae 0x4fcd18
mov ecx, dword [esp + 0x18]
test ecx, ecx
je 0x4fcc90
nop dword [eax]
mov eax, dword [esp + 0x168]
mov ebx, esi
test eax, eax
je 0x4fcc1d
cmp esi, edi
jbe 0x4fcc5b
push ecx
lea ecx, [esp + 0x170]
push ecx
push edi
push eax
push esi
call fcn.0051d4e0
add esp, 0x14
test eax, eax
jne 0x4fcd18
mov ebp, dword [esp + 0x16c]
mov edi, dword [esp + 0x12c]
jmp 0x4fcc57
lea edx, [ebp*2]
lea eax, [edi + edx]
cmp esi, eax
jb 0x4fcc5b
mov ecx, esi
sub ecx, edx
mov ax, word [ecx]
cmp ax, word [esp + 0x170]
jne 0x4fcc57
cmp ebp, 1
je 0x4fcd18
mov ax, word [ecx + 2]
cmp ax, word [esp + 0x172]
je 0x4fcd18
mov ecx, dword [esp + 0x18]
add esi, 2
cmp esi, dword [esp + 0x10]
jae 0x4fcd18
mov ax, word [esi]
mov edx, 0xfc00
and ax, dx
mov edx, 0xdc00
cmp ax, dx
cmovne esi, ebx
add esi, 2
cmp esi, dword [esp + 0x10]
jae 0x4fcd18
jmp 0x4fcbe0
mov ebx, dword [esp + 0x168]
mov eax, dword [esp + 0x10]
nop dword [eax + eax]
test ebx, ebx
je 0x4fccd7
cmp esi, edi
jbe 0x4fcd11
push ecx
lea eax, [esp + 0x170]
push eax
push edi
push ebx
push esi
call fcn.0051d4e0
mov ebx, dword [esp + 0x17c]
add esp, 0x14
test eax, eax
jne 0x4fcd1f
mov ebp, dword [esp + 0x16c]
mov edi, dword [esp + 0x12c]
jmp 0x4fcd09
lea edx, [ebp*2]
lea eax, [edi + edx]
cmp esi, eax
jb 0x4fcd0d
mov ecx, esi
sub ecx, edx
mov ax, word [ecx]
cmp ax, word [esp + 0x170]
jne 0x4fcd09
cmp ebp, 1
je 0x4fcd1f
mov ax, word [ecx + 2]
cmp ax, word [esp + 0x172]
je 0x4fcd1f
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x10]
add esi, 2
cmp esi, eax
jb 0x4fcca0
mov ebx, dword [esp + 0x168]
cmp word [esi - 2], 0xd
jne 0x4fcf18
cmp ebx, 1
je 0x4fcd38
cmp ebx, 2
jne 0x4fcf18
cmp esi, dword [esp + 0x10]
jae 0x4fcf18
cmp word [esi], 0xa
mov eax, dword [esp + 0x134]
mov ebx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x24]
jne 0x4fcdbe
add esi, 2
jmp 0x4fcdbe
mov ebx, dword [esp + 0x44]
test ebx, ebx
je 0x4fcf18
cmp esi, edi
jae 0x4fcd9c
nop dword [eax]
movzx edx, word [esi]
mov eax, 0xff
cmp edx, 0xff
cmova edx, eax
mov eax, 1
mov ecx, edx
shr edx, 3
and ecx, 7
shl eax, cl
test byte [edx + ebx], al
jne 0x4fcd9c
add esi, 2
cmp esi, edi
jb 0x4fcd70
cmp word [esp + 0x11c], 0
mov eax, dword [esp + 0x134]
jne 0x4fcdb6
cmp esi, eax
jae case.0x4fd01a.997
mov ebp, dword [esp + 0x24]
mov ebx, dword [esp + 0x1c]
cmp word [esp + 0x11c], 0
mov edi, eax
mov dword [esp + 0x10], edi
jne 0x4fcf4b
mov eax, dword [esp + 0x14]
mov edx, edi
sub edx, esi
sar edx, 1
movzx eax, word [eax + 0x66]
cmp edx, eax
jl case.0x4fd01a.997
cmp dword [esp + 0x5c], 0
lea ecx, [esi + ebp*2]
je 0x4fcf4b
cmp ecx, dword [esp + 0x60]
jbe 0x4fcf4b
cmp edx, 0x7d0
jb 0x4fce1d
test ebx, ebx
jne 0x4fcf4b
cmp edx, 0x1e8480
jae 0x4fcf4b
mov edx, dword [esp + 0x134]
cmp ecx, edx
jae case.0x4fd01a.997
mov ebx, dword [esp + 0x38]
mov ebp, dword [esp + 0x40]
movzx eax, bx
cmp word [esp + 0x88], ax
je 0x4fd021
movzx eax, word [ecx]
mov edi, ecx
add ecx, 2
mov edx, eax
cmp ax, bp
je 0x4fcf34
cmp dx, bx
je 0x4fcf34
cmp ecx, dword [esp + 0x134]
jb 0x4fce41
mov edi, dword [esp + 0x10]
xor ebx, ebx
cmp dword [esp + 0x18], 0
je 0x4fceb8
mov ebp, dword [esp + 0x70]
cmp edi, ebp
je 0x4fceb8
test ebx, ebx
je 0x4fce84
cmp ebx, 0xfffffffe
jne 0x4fceb8
mov ebx, dword [esp + 0x58]
lea esi, [edi + 2]
cmp esi, ebp
jae 0x4fceb6
mov ecx, 0xfc00
mov edx, 0xdc00
nop dword [eax]
mov ax, word [esi]
and ax, cx
cmp ax, dx
jne 0x4fd188
add esi, 2
cmp esi, ebp
jb 0x4fcea0
xor ebx, ebx
mov eax, dword [esp + 0xe0]
cmp eax, dword [esp + 0xe8]
je 0x4fceda
push dword [esp + 0xd8]
push eax
call dword [esp + 0xdc]
add esp, 8
mov ebp, dword [esp + 0x28]
mov eax, dword [esp + 0x14]
mov dword [ebp + 0xc], eax
mov eax, dword [esp + 0x144]
mov dword [ebp + 0x14], eax
mov byte [ebp + 0x24], 0
cmp ebx, 1
jne 0x4fd285
movzx eax, word [ebp + 0x26]
mov ecx, dword [esp + 0x118]
add eax, eax
cmp ecx, eax
jl 0x4fd1f1
xor edx, edx
jmp 0x4fd1fb
mov eax, dword [esp + 0x134]
jmp 0x4fcdb6
mov eax, dword [esp + 0x134]
mov ebp, dword [esp + 0x24]
jmp 0x4fcdbe
mov edx, dword [esp + 0x134]
cmp edi, edx
jae 0x4fce66
mov dword [esp + 0x60], edi
mov edi, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
cmp esi, dword [esp + 0x64]
ja case.0x4fd01a.997
mov eax, esi
or dword [esp + 0xcc], 1
sub eax, dword [esp + 0x20]
sar eax, 1
mov dword [esp + 0xb0], eax
mov eax, dword [esp + 0x48]
or eax, dword [esp + 0x519c]
mov dword [esp + 0x158], eax
lea eax, [esp + 0xd0]
push eax
movzx eax, word [ecx + 0x68]
push dword [esp + 0x6c]
mov ecx, dword [esp + 0x30]
push eax
mov dword [esp + 0x148], esi
mov dword [esp + 0x14c], esi
movzx eax, word [ecx + 0x26]
push eax
lea eax, [ecx + 0x2c]
mov dword [esp + 0x108], 0
push eax
push dword [esp + 0x13c]
mov dword [esp + 0x130], 0
push esi
mov dword [esp + 0x17c], 0
call fcn.004f2cc0
add esp, 0x1c
mov ebx, eax
cmp dword [esp + 0xfc], 0
je 0x4fd001
cmp dword [esp + 0x34], 0
jne 0x4fd001
mov eax, dword [esp + 0x13c]
mov dword [esp + 0x34], eax
mov dword [esp + 0x78], esi
test ebx, ebx
jg case.default.0x4fd01a
je case.0x4fd01a.996
lea eax, [ebx + 0x3e5]
cmp eax, 4
ja case.default.0x4fd01a
jmp dword [eax*4 + 0x4fd328]
movzx eax, word [ecx]
mov edi, ecx
add ecx, 2
cmp ax, bp
je 0x4fcf3b
cmp ecx, edx
jb 0x4fd021
jmp 0x4fce66
mov eax, dword [esp + 0x160]
mov edi, esi
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x164], eax
jmp 0x4fd096
mov edi, dword [esp + 0x150]
cmp edi, esi
jbe case.0x4fd01a.996
mov ecx, dword [esp + 0x18]
jmp 0x4fd096
mov ecx, dword [esp + 0x18]
lea edi, [esi + 2]
mov dword [esp + 0x164], 0
test ecx, ecx
je 0x4fd096
cmp edi, dword [esp + 0x10]
jae 0x4fd096
mov ax, word [edi]
mov edx, 0xfc00
and ax, dx
mov edx, 0xdc00
cmp ax, dx
jne 0x4fd096
add edi, 2
mov edx, dword [esp + 0x168]
xor ebx, ebx
cmp dword [esp + 0x6c], ebx
je 0x4fd0db
mov eax, dword [esp + 0x134]
test edx, edx
je 0x4fd143
cmp esi, eax
jae 0x4fd0db
push ecx
lea ecx, [esp + 0x170]
push ecx
push eax
push edx
push esi
call fcn.0051d430
add esp, 0x14
test eax, eax
jne case.default.0x4fd01a
mov edx, dword [esp + 0x168]
mov ebp, dword [esp + 0x16c]
mov esi, edi
cmp dword [esp + 0x1c], ebx
jne case.default.0x4fd01a
mov eax, dword [esp + 0x10]
cmp edi, eax
ja case.default.0x4fd01a
mov ecx, dword [esp + 0x14]
cmp edi, dword [esp + 0x8c]
jbe 0x4fd133
cmp word [edi - 2], 0xd
jne 0x4fd133
cmp edi, eax
jae 0x4fd133
cmp word [edi], 0xa
jne 0x4fd133
test dword [ecx + 0x48], 0x800
jne 0x4fd133
cmp edx, 1
je 0x4fd130
cmp edx, 2
je 0x4fd130
cmp ebp, 2
jne 0x4fd133
lea esi, [edi + 2]
mov edi, dword [esp + 0x10]
mov dword [esp + 0x144], ebx
jmp 0x4fc963
mov ebp, dword [esp + 0x16c]
lea ecx, [ebp*2]
sub eax, ecx
cmp esi, eax
ja 0x4fd0e2
mov ax, word [esi]
cmp ax, word [esp + 0x170]
jne 0x4fd0e2
cmp ebp, 1
je case.default.0x4fd01a
mov ax, word [esi + 2]
cmp ax, word [esp + 0x172]
jne 0x4fd0e2
mov edi, dword [esp + 0x10]
jmp 0x4fce6c
mov eax, dword [esp + 0x2c]
mov ecx, esi
sub ecx, dword [esp + 0x20]
sar ecx, 1
push ebx
sub eax, ecx
mov dword [esp + 0x134], esi
push eax
push esi
call fcn.0051ec60
add esp, 0xc
test eax, eax
je 0x4fd1d7
jns 0x4fce88
mov eax, dword [ebx]
lea edi, [esi + eax*2]
mov dword [esp + 0x10], edi
mov dword [esp + 0x134], edi
cmp edi, esi
jbe 0x4fce88
mov dword [esp + 0x48], 3
jmp 0x4fc940
mov edi, ebp
mov dword [esp + 0x134], ebp
mov dword [esp + 0x10], edi
mov dword [esp + 0x48], 1
jmp 0x4fc940
mov eax, ecx
cdq
sub eax, edx
mov edx, eax
sar edx, 1
inc edx
mov ebx, dword [esp + 0x20]
sub esi, ebx
mov eax, dword [esp + 0x13c]
mov ecx, dword [esp + 0x138]
sub eax, ebx
sar esi, 1
sar eax, 1
cmp dword [esp + 0x140], ecx
mov dword [ebp + 0x28], edx
cmova ecx, dword [esp + 0x140]
sub ecx, ebx
mov dword [ebp + 0x20], esi
sar ecx, 1
test dword [esp + 0x519c], 0x4000
mov dword [ebp + 0x18], eax
mov dword [ebp + 0x1c], ecx
je 0x4fd27e
mov eax, dword [esp + 0x2c]
mov esi, dword [esp + 0x74]
push dword [ebp + 8]
lea esi, [esi + eax]
mov eax, dword [ebp]
add esi, esi
push esi
call eax
add esp, 8
mov dword [ebp + 0x10], eax
test eax, eax
je 0x4fd2dc
push esi
push ebx
push eax
call fcn.005229c0
mov edx, dword [ebp + 0x28]
add esp, 0xc
or byte [ebp + 0x25], 1
mov eax, edx
jmp 0x4fd2f6
mov dword [ebp + 0x10], ebx
mov eax, edx
jmp 0x4fd2f6
mov eax, dword [esp + 0x148]
mov dword [ebp + 0x14], eax
test ebx, ebx
je 0x4fd298
cmp ebx, 0xfffffffe
jne 0x4fd2d5
mov ecx, dword [esp + 0x78]
test ecx, ecx
je 0x4fd2d2
mov eax, dword [esp + 0x20]
mov ebx, 0xfffffffe
sub ecx, eax
mov dword [ebp + 0x10], eax
sar ecx, 1
sub edi, eax
mov dword [ebp + 0x2c], ecx
sar edi, 1
mov dword [ebp + 0x30], edi
mov dword [ebp + 0x20], ecx
mov ecx, dword [esp + 0x34]
sub ecx, eax
mov dword [ebp + 0x1c], edi
sar ecx, 1
mov eax, ebx
mov dword [ebp + 0x18], ecx
mov dword [ebp + 0x28], ebx
jmp 0x4fd2f6
or ebx, 0xffffffff
mov dword [ebp + 0x28], ebx
mov eax, ebx
jmp 0x4fd2f6
mov eax, 0xffffffd0
jmp 0x4fd2f6
mov eax, 0xffffffd4
jmp 0x4fd2f6
mov eax, 0xffffffcd
jmp 0x4fd2f6
mov eax, 0xffffffde
mov ecx, dword [esp + 0x5184]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.00520afb
add esp, 0x5178
ret