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

Disassembly:
mov eax, 0x6736e7
call fcn.006313fc
sub esp, 0x9c
push ebx
push ebp
mov ebx, ecx
xor ebp, ebp
push esi
push edi
cmp dword [ebx + 0x140], ebp
je case.0x4e2646.10
mov edi, dword [ebx + 0x2b0]
push 1
call fcn.00476fcc
mov al, byte [eax]
movzx eax, al
cmp eax, 0x14
ja case.0x4e2646.10
jmp dword [eax*4 + 0x4e303b]
cmp edi, 1
jne case.0x4e2646.10
test dword [0x763794], 0x40000000
je 0x4e266f
push str.Got_Choke
push ebx
call fcn.004e66e2
pop ecx
pop ecx
push dword [esp + 0xc4]
push dword [esp + 0xc4]
push 1
mov ecx, ebx
call fcn.004e5519
jmp 0x4e29d5
cmp edi, 1
jne case.0x4e2646.10
test dword [0x763794], 0x40000000
je 0x4e26ad
push str.Got_Unchoke
push ebx
call fcn.004e66e2
pop ecx
pop ecx
push dword [esp + 0xc4]
push dword [esp + 0xc4]
push ebp
jmp 0x4e267f
cmp edi, 1
jne case.0x4e2646.10
test dword [0x763794], 0x40000000
je 0x4e26e0
push str.Got_Interested
push ebx
call fcn.004e66e2
pop ecx
pop ecx
mov eax, dword [ebx + 0x148]
cmp eax, dword [ebx + 0x14c]
setne al
movzx eax, al
push eax
mov ecx, ebx
call fcn.004e569d
jmp 0x4e29d5
cmp edi, 1
jne case.0x4e2646.10
test dword [0x763794], 0x40000000
je 0x4e2721
push str.Got_Not_Interested
push ebx
call fcn.004e66e2
pop ecx
pop ecx
push ebp
jmp 0x4e26f3
cmp edi, 5
jne case.0x4e2646.10
push 4
mov ecx, ebx
call fcn.00476fcc
push eax
call fcn.0047236a
mov edx, eax
mov dword [esp + 0x10], edx
cmp edx, dword [ebx + 0x148]
jb 0x4e27ad
mov ecx, dword [ebx + 0x140]
mov edx, dword [ecx]
call dword [edx + 0x4c]
test al, al
jne case.0x4e2646.10
mov esi, dword [esp + 0x10]
cmp esi, 0x10000
jae case.0x4e2646.10
mov edi, dword [ebx + 0x148]
lea eax, [esi + 1]
lea esi, [eax + 7]
mov dword [ebx + 0x148], eax
shr esi, 3
add edi, 7
push esi
push dword [ebx + 0x144]
shr edi, 3
call fcn.0045d973
sub esi, edi
mov dword [ebx + 0x144], eax
push esi
add eax, edi
push ebp
push eax
call fcn.00635a30
mov edx, dword [esp + 0x1c]
add esp, 0xc
mov eax, dword [ebx + 0x144]
mov edi, edx
shr edi, 3
mov cl, dl
and cl, 7
mov byte [esp + 0x17], cl
mov al, byte [edi + eax]
shr al, cl
test al, 1
jne 0x4e28a7
test dword [0x763794], 0x8000
je 0x4e27e9
push edx
push str.Got_Have__d
push ebx
call fcn.004e66e2
add esp, 0xc
mov esi, dword [esp + 0x10]
mov al, 1
mov edx, dword [ebx + 0x144]
mov ecx, esi
and ecx, 7
shl al, cl
or byte [edx + edi], al
mov ecx, dword [ebx + 0x140]
mov eax, dword [ecx]
call dword [eax + 0x4c]
test al, al
je 0x4e29d5
mov edx, dword [ebx + 0x140]
mov cl, byte [esp + 0x17]
mov eax, dword [edx + 0xfc]
mov al, byte [edi + eax]
shr al, cl
test al, 1
jne 0x4e2831
inc dword [ebx + 0x370]
push esi
mov ecx, edx
call fcn.004ae4e1
test byte [ebx + 0x16b], 0x40
jne 0x4e2881
mov edx, dword [ebx + 0x140]
mov cl, byte [esp + 0x17]
mov eax, dword [edx + 0x100]
mov al, byte [edi + eax]
shr al, cl
test al, 1
je 0x4e2881
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0x15c]
test al, 0x20
jne 0x4e2881
mov ecx, dword [ebx + 0x140]
call fcn.004b108c
test al, al
jne 0x4e2881
push 1
mov ecx, ebx
call fcn.004e533f
mov ecx, dword [ebx + 0x140]
push esi
mov ecx, dword [ecx + 0xd8]
call fcn.004fd89c
add dword [ebx + 0x2b8], eax
mov eax, dword [ebx + 0x14c]
push ebp
inc eax
push eax
jmp 0x4e2da1
test dword [0x763794], 0x10000
je 0x4e29d5
push edx
push str.Got_Bad_Have__d
push ebx
call fcn.004e66e2
add esp, 0xc
jmp 0x4e29d5
mov ecx, dword [ebx + 0x140]
mov eax, dword [ecx]
call dword [eax + 0x4c]
test al, al
je 0x4e28ef
mov eax, dword [ebx + 0x148]
add eax, 7
shr eax, 3
inc eax
cmp edi, eax
jne case.0x4e2646.10
test byte [ebx + 0x154], 4
jne 0x4e28ff
or byte [ebx + 0x156], 1
test byte [ebx + 0x156], 1
je 0x4e290f
mov byte [ebx + 0x1ba], 0x32
mov ecx, dword [ebx + 0x140]
mov eax, dword [ecx]
call dword [eax + 0x4c]
test al, al
je 0x4e2931
mov ecx, dword [ebx + 0x140]
push 0xffffffffffffffff
push dword [ebx + 0x144]
call fcn.004aee7d
lea esi, [edi - 1]
mov ecx, ebx
push esi
call fcn.00476fcc
mov ecx, dword [ebx + 0x140]
mov ebp, eax
mov edx, dword [ecx]
call dword [edx + 0x4c]
test al, al
jne 0x4e297e
push 1
push dword [ebx + 0x144]
call fcn.0045d916
lea eax, [edi*8 - 8]
mov dword [ebx + 0x148], eax
add eax, 0x1f
shr eax, 5
push 1
shl eax, 2
push eax
call fcn.0045d8f0
mov dword [ebx + 0x144], eax
push esi
push ebp
push dword [ebx + 0x144]
call fcn.00467fde
mov ecx, dword [ebx + 0x148]
test cl, 7
je 0x4e29ac
mov edx, dword [ebx + 0x144]
neg ecx
and ecx, 7
mov eax, 0xff
sar eax, cl
and byte [edx + edi - 2], al
mov ecx, dword [ebx + 0x140]
mov eax, dword [ecx]
call dword [eax + 0x4c]
test al, al
je 0x4e29d3
mov ecx, ebx
call fcn.004e358a
push 1
mov ecx, ebx
call fcn.004df2ee
push eax
mov ecx, ebx
call fcn.004e541f
xor ebp, ebp
mov ecx, dword [ebx + 0x140]
test ecx, ecx
je 0x4e2cdf
mov eax, dword [ecx]
call dword [eax + 0x4c]
test al, al
je 0x4e2cdf
mov eax, dword [ebx + 0x14c]
cmp eax, dword [ebx + 0x148]
jne 0x4e2cdf
push ebp
call fcn.004919d8
mov ecx, dword [ebx + 0x140]
mov dword [ecx + 0x11c], eax
mov dword [ecx + 0x120], edx
jmp 0x4e2cdf
cmp edi, 0xd
jne case.0x4e2646.10
push 0xc
mov ecx, ebx
call fcn.00476fcc
mov esi, eax
lea ecx, [esi + 8]
push ecx
call fcn.0047236a
push eax
lea ecx, [esi + 4]
push ecx
call fcn.0047236a
push eax
push esi
call fcn.0047236a
push eax
mov ecx, ebx
call fcn.004e0f12
jmp 0x4e3024
cmp edi, 9
jb case.0x4e2646.10
push 8
mov ecx, ebx
call fcn.00476fcc
mov esi, eax
push esi
call fcn.0047236a
lea ecx, [esi + 4]
mov ebp, eax
push ecx
call fcn.0047236a
mov esi, eax
add edi, 0xfffffff7
je 0x4e29d3
movzx ecx, word [ebx + 0x1bc]
mov edx, edi
sub edx, ecx
add dword [ebx + 0x380], edx
cmp dword [0x7641a4], 0
je 0x4e2ad0
cmp byte [0x75f218], 0
je 0x4e2ad0
mov ecx, dword [ebx + 0x13c]
push 1
push edi
mov al, byte [ecx + 0x4d]
shr al, 6
and al, 1
movzx eax, al
push eax
mov eax, dword [ecx + 0x5e]
shr eax, 0x1c
push eax
call fcn.005375ee
jmp 0x4e2ad8
push 1
push edi
call fcn.00537647
xor eax, eax
and dword [esp + 0x10], eax
mov word [ebx + 0x1bc], ax
and dword [esp + 0xb4], eax
push edi
call fcn.004c8bfb
mov dword [esp + 0x10], eax
push edi
push eax
mov ecx, ebx
mov dword [esp + 0xbc], 1
call fcn.0047708c
lea eax, [esp + 0x10]
mov ecx, ebx
push eax
push edi
push esi
push ebp
call fcn.004e0672
or dword [esp + 0xb4], 0xffffffff
mov bl, al
cmp dword [esp + 0x10], 0
je 0x4e2b33
push dword [esp + 0x10]
call fcn.004c8c33
mov al, bl
jmp 0x4e3024
cmp edi, 0xd
jne case.0x4e2646.10
push 0xc
mov ecx, ebx
call fcn.00476fcc
mov esi, eax
lea ecx, [esi + 8]
push ecx
call fcn.0047236a
push eax
lea ecx, [esi + 4]
push ecx
call fcn.0047236a
push eax
push esi
call fcn.0047236a
push eax
mov ecx, ebx
call fcn.004df92b
jmp 0x4e3024
cmp edi, 3
jne case.0x4e2646.10
push 2
mov ecx, ebx
call fcn.00476fcc
movzx ecx, byte [eax + 1]
movzx eax, byte [eax]
shl ax, 8
or cx, ax
movzx eax, cx
mov ecx, ebx
push eax
call fcn.004dfa7e
jmp 0x4e3024
cmp edi, 5
jne case.0x4e2646.10
push 4
mov ecx, ebx
call fcn.00476fcc
push eax
call fcn.0047236a
mov ecx, dword [ebx + 0x140]
mov esi, eax
mov dword [esp + 0x18], esi
mov dword [esp + 0x10], esi
mov edx, dword [ecx]
call dword [edx + 0x4c]
test al, al
je 0x4e2be2
cmp esi, dword [ebx + 0x148]
jae case.0x4e2646.10
test dword [0x763794], 0x40000000
je 0x4e2bfd
push esi
push str.Got_Suggest_Piece__d
push ebx
call fcn.004e66e2
add esp, 0xc
mov ecx, dword [ebx + 0x140]
mov eax, dword [ecx]
call dword [eax + 0x4c]
test al, al
je 0x4e2c32
mov ecx, dword [ebx + 0x140]
mov eax, dword [ecx]
call dword [eax + 0x20]
mov edx, dword [esp + 0x18]
mov ecx, edx
shr ecx, 3
and dl, 7
mov al, byte [eax + ecx]
mov cl, dl
shr al, cl
test al, 1
jne 0x4e29d5
mov edi, dword [ebx + 0x28c]
cmp edi, 0x1e
jbe 0x4e2c7f
lea esi, [ebx + 0x27c]
call fcn.0046818d
xor edx, edx
mov ecx, esi
div edi
lea eax, [esp + 0x7c]
push edx
push eax
lea eax, [esp + 0x3c]
push eax
call fcn.0041fe38
mov ecx, eax
call fcn.00420557
sub esp, 0xc
mov ecx, esp
push eax
call fcn.0041f689
lea eax, [esp + 0xa0]
mov ecx, esi
push eax
call fcn.004e642c
lea eax, [esp + 0x10]
push eax
lea esi, [ebx + 0x27c]
push esi
call fcn.004dd5b8
mov edi, eax
cmp edi, dword [ebx + 0x28c]
je 0x4e2caa
push edi
mov ecx, esi
call fcn.0041f637
mov ecx, dword [eax]
cmp ecx, dword [esp + 0x10]
je 0x4e2cdf
lea eax, [esp + 0x10]
mov ecx, esi
push eax
push edi
lea eax, [esp + 0x54]
push eax
lea eax, [esp + 0x28]
push eax
call fcn.0041fe38
mov ecx, eax
call fcn.00420557
sub esp, 0xc
mov ecx, esp
push eax
call fcn.0041f689
lea ecx, [esp + 0x74]
push ecx
mov ecx, esi
call fcn.004e68a9
mov al, 1
jmp 0x4e3024
cmp edi, 1
jne case.0x4e2646.10
mov al, byte [ebx + 0x154]
test al, 4
jne 0x4e2d00
or byte [ebx + 0x156], 1
test byte [ebx + 0x156], 1
je 0x4e2d10
mov byte [ebx + 0x1ba], 0x32
mov ecx, dword [ebx + 0x140]
or al, 0x20
mov byte [ebx + 0x154], al
mov eax, dword [ecx]
call dword [eax + 0x4c]
test al, al
jne 0x4e2d45
push 1
push dword [ebx + 0x144]
mov dword [ebx + 0x148], ebp
call fcn.0045d916
mov dword [ebx + 0x144], ebp
jmp 0x4e29d5
mov ecx, dword [ebx + 0x140]
push 0xffffffffffffffff
push dword [ebx + 0x144]
call fcn.004aee7d
mov esi, dword [ebx + 0x148]
add esi, 7
shr esi, 3
push esi
push 0xff
push dword [ebx + 0x144]
call fcn.00635a30
mov ecx, dword [ebx + 0x148]
add esp, 0xc
test cl, 7
je 0x4e2d99
mov eax, dword [ebx + 0x144]
neg ecx
and ecx, 7
mov edx, 0xff
sar edx, cl
and byte [eax + esi - 1], dl
push 1
push dword [ebx + 0x148]
mov ecx, ebx
call fcn.004e541f
jmp 0x4e29d5
cmp edi, 1
jne case.0x4e2646.10
test byte [ebx + 0x154], 4
jne 0x4e2dc6
or byte [ebx + 0x156], 1
test byte [ebx + 0x156], 1
je 0x4e2dd6
mov byte [ebx + 0x1ba], 0x32
mov ecx, dword [ebx + 0x140]
mov eax, dword [ecx]
call dword [eax + 0x4c]
test al, al
je 0x4e2df8
mov ecx, dword [ebx + 0x140]
push 0xffffffffffffffff
push dword [ebx + 0x144]
call fcn.004aee7d
mov ecx, dword [ebx + 0x140]
and byte [ebx + 0x154], 0xdf
mov eax, dword [ecx]
call dword [eax + 0x4c]
test al, al
je 0x4e2d27
mov esi, dword [ebx + 0x148]
add esi, 7
shr esi, 3
push esi
push ebp
push dword [ebx + 0x144]
call fcn.00635a30
mov ecx, dword [ebx + 0x148]
add esp, 0xc
test cl, 7
je 0x4e2e4f
mov edx, dword [ebx + 0x144]
neg ecx
and ecx, 7
mov eax, 0xff
sar eax, cl
and byte [edx + esi - 1], al
push 1
push ebp
jmp 0x4e2da1
test byte [ebx + 0x154], 0x10
je case.0x4e2646.10
cmp edi, 0xd
jne case.0x4e2646.10
push 0xc
mov ecx, ebx
call fcn.00476fcc
mov esi, eax
lea ecx, [esi + 8]
push ecx
call fcn.0047236a
push eax
lea ecx, [esi + 4]
push ecx
call fcn.0047236a
push eax
push esi
call fcn.0047236a
push eax
mov ecx, ebx
call fcn.004e0ca5
jmp 0x4e3024
test byte [ebx + 0x154], 0x10
je case.0x4e2646.10
cmp edi, 5
jne case.0x4e2646.10
push 4
mov ecx, ebx
call fcn.00476fcc
push eax
call fcn.0047236a
mov ecx, dword [ebx + 0x140]
mov esi, eax
mov dword [esp + 0x18], esi
mov dword [esp + 0x10], esi
mov edx, dword [ecx]
call dword [edx + 0x4c]
test al, al
je 0x4e2ee9
cmp esi, dword [ebx + 0x148]
jae case.0x4e2646.10
test dword [0x763794], 0x40000000
je 0x4e2f04
push esi
push str.Got_Allowed_Fast__d
push ebx
call fcn.004e66e2
add esp, 0xc
mov ecx, dword [ebx + 0x140]
mov eax, dword [ecx]
call dword [eax + 0x4c]
test al, al
je 0x4e2f39
mov ecx, dword [ebx + 0x140]
mov eax, dword [ecx]
call dword [eax + 0x20]
mov edx, dword [esp + 0x18]
mov ecx, edx
shr ecx, 3
and dl, 7
mov al, byte [eax + ecx]
mov cl, dl
shr al, cl
test al, 1
jne 0x4e29d5
mov edi, dword [ebx + 0x278]
cmp edi, 0x1e
jbe 0x4e2f83
lea esi, [ebx + 0x268]
call fcn.0046818d
xor edx, edx
mov ecx, esi
div edi
lea eax, [esp + 0x28]
push edx
push eax
lea eax, [esp + 0x48]
push eax
call fcn.0041fe38
mov ecx, eax
call fcn.00420557
sub esp, 0xc
mov ecx, esp
push eax
call fcn.0041f689
lea eax, [esp + 0x64]
mov ecx, esi
push eax
call fcn.004e642c
lea eax, [esp + 0x10]
push eax
lea esi, [ebx + 0x268]
push esi
call fcn.004dd5b8
mov edi, eax
cmp edi, dword [ebx + 0x278]
je 0x4e2fb2
push edi
mov ecx, esi
call fcn.0041f637
mov ecx, dword [eax]
cmp ecx, dword [esp + 0x10]
je 0x4e29d5
lea eax, [esp + 0x10]
mov ecx, esi
push eax
push edi
lea eax, [esp + 0x78]
push eax
lea eax, [esp + 0x94]
push eax
call fcn.0041fe38
mov ecx, eax
call fcn.00420557
sub esp, 0xc
mov ecx, esp
push eax
call fcn.0041f689
lea eax, [esp + 0xb0]
mov ecx, esi
push eax
call fcn.004e68a9
jmp 0x4e29d5
mov al, byte [ebx + 0x154]
test al, 2
je case.0x4e2646.10
cmp edi, 2
jb case.0x4e2646.10
or al, 4
mov ecx, ebx
mov byte [ebx + 0x154], al
lea eax, [edi - 1]
push eax
call fcn.00476fcc
lea ecx, [edi - 1]
push ecx
push eax
mov ecx, ebx
call fcn.004dfaca
jmp 0x4e3024
xor al, al
mov ecx, dword [esp + 0xac]
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
pop ebx
leave
ret 8