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

Disassembly:
sub esp, 0x48
mov edx, dword [esp + 0x4c]
push ebx
push ebp
push esi
mov ebx, dword [edx]
push edi
mov edi, dword [esp + 0x64]
mov dword [esp + 0x24], ebx
mov esi, dword [ebx + 8]
mov dword [esp + 0x38], esi
mov ebp, dword [edi + 0x4c]
mov dword [esp + 0x18], ebp
mov ecx, dword [esi + 0x74]
mov dword [esp + 0x34], ecx
cmp dword [esi + 0x78], ecx
jg 0x4e793a
push 0
push 0
push 0
push 0x11
push esi
call fcn.004c7840
mov edx, dword [esp + 0x70]
add esp, 0x14
mov dword [esp + 0x34], eax
jmp 0x4e7970
lea eax, [ecx + 1]
mov dword [esi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x70]
mov dword [eax + ecx*4], 0x11
mov dword [eax + ecx*4 + 4], 0
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
lea ecx, [ecx]
push edi
push edx
push ebx
call fcn.00524be0
dec dword [ebx + 0x38]
add esp, 0xc
mov eax, dword [ebx + 0x38]
mov dword [esp + 0x30], eax
mov eax, dword [edi + 4]
mov dword [esp + 0x10], eax
mov eax, dword [ebx + 0x2c]
inc eax
mov dword [ebx + 0x2c], eax
mov dword [edi + 0x34], eax
mov dword [esp + 0x20], eax
movzx eax, byte [edi + 0x38]
lea ecx, [eax + eax*8]
mov eax, dword [esp + 0x5c]
mov eax, dword [eax + 4]
mov eax, dword [eax + ecx*8 + 0x18]
mov ecx, 0xa
movzx eax, word [eax + 0x26]
cwde
cdq
idiv ecx
mov ecx, eax
mov eax, edx
cdq
movzx ecx, cx
mov edi, eax
test edx, edx
jne 0x4e79da
cmp edi, 5
jae 0x4e79da
test edx, edx
jne 0x4e79d5
cmp edi, 1
jb 0x4e79e0
add edi, 0xffffffff
jmp 0x4e79dd
add edi, 0xfffffffe
adc edx, 0xffffffff
cmp cx, 0x3c
jg 0x4e7a3b
cmp cx, 3
jl 0x4e7a01
movsx ecx, cx
sub ecx, 3
add edi, 8
mov eax, edi
adc edx, 0
call fcn.0041ee30
jmp 0x4e7a18
movsx eax, cx
mov ecx, 3
sub ecx, eax
add edi, 8
mov eax, edi
adc edx, 0
call fcn.0041ef60
mov edi, eax
test edx, edx
ja 0x4e7a3b
jb 0x4e7a28
cmp edi, 0x2710
jae 0x4e7a2f
mov edi, 0x2710
jmp 0x4e7a40
test edx, edx
jne 0x4e7a3b
cmp edi, 0x989680
jbe 0x4e7a48
mov edi, 0x989680
mov dword [esp + 0x2c], 0
mov ecx, dword [esi + 0x74]
mov edx, dword [esp + 0x20]
cmp dword [esi + 0x78], ecx
jg 0x4e7a65
push 0
push edx
push edi
push 0x4c
push esi
call fcn.004c7840
add esp, 0x14
jmp 0x4e7a90
lea eax, [ecx + 1]
mov dword [esi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x70]
mov dword [eax + ecx*4], 0x4c
mov dword [eax + ecx*4 + 4], edi
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [esi + 0x74]
mov dword [esp + 0x20], ecx
cmp dword [esi + 0x78], ecx
jg 0x4e7ab9
push 0
push 0
push dword [esp + 0x18]
push 0x26
push esi
call fcn.004c7840
mov edx, dword [esp + 0x24]
add esp, 0x14
mov dword [esp + 0x20], eax
jmp 0x4e7aec
mov edx, dword [esp + 0x10]
lea eax, [ecx + 1]
mov dword [esi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x70]
mov dword [eax + ecx*4], 0x26
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esp + 0x5c]
mov edi, dword [eax + 0x70]
mov eax, dword [eax + 0x64]
lea eax, [eax + eax*2]
shl eax, 4
add eax, edi
cmp edi, eax
jae 0x4e7b6c
mov esi, dword [esp + 0x10]
mov ebp, eax
test byte [edi + 0xa], 2
mov eax, dword [edi]
jne 0x4e7b59
mov dword [esp + 0x40], fcn.004b11e0
mov ecx, 3
mov word [esp + 0x50], cx
mov dword [esp + 0x44], 0x50ce20
mov dword [esp + 0x54], esi
test eax, eax
je 0x4e7b48
push eax
lea eax, [esp + 0x40]
push eax
call fcn.00532c40
add esp, 8
cmp word [esp + 0x50], 0
je 0x4e7b59
push 0x10
push dword [esp + 0x34]
push dword [edi]
push ebx
call fcn.004ef900
add esp, 0x10
add edi, 0x30
cmp edi, ebp
jb 0x4e7b08
mov esi, dword [esp + 0x38]
mov ebp, dword [esp + 0x18]
mov edx, dword [esp + 0x10]
test dword [ebp + 0x2c], 0x100
je 0x4e7c65
mov al, byte [ebx + 0x13]
test al, al
jne 0x4e7b88
inc dword [ebx + 0x2c]
mov edi, dword [ebx + 0x2c]
jmp 0x4e7b97
dec al
mov byte [ebx + 0x13], al
movzx eax, al
mov edi, dword [ebx + eax*4 + 0x98]
mov ecx, dword [esi + 0x74]
cmp dword [esi + 0x78], ecx
jg 0x4e7bb6
push 0
push edi
push dword [esp + 0x18]
push 0x86
push esi
call fcn.004c7840
add esp, 0x14
jmp 0x4e7be5
mov ebx, dword [esp + 0x24]
lea eax, [ecx + 1]
mov dword [esi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x70]
mov dword [eax + ecx*4], 0x86
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], edi
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esp + 0x64]
mov edx, dword [esi + 0x74]
mov eax, dword [eax + 0x34]
mov dword [esp + 0x28], eax
cmp dword [esi + 0x78], edx
jg 0x4e7c0e
push edi
push 0
push eax
push 0xb2
push esi
call fcn.004c7840
add esp, 0x14
mov edx, eax
jmp 0x4e7c41
mov ebp, dword [esp + 0x28]
lea eax, [edx + 1]
mov dword [esi + 0x74], eax
lea ecx, [edx + edx*4]
mov eax, dword [esi + 0x70]
mov dword [eax + ecx*4 + 4], ebp
mov ebp, dword [esp + 0x18]
mov dword [eax + ecx*4], 0xb2
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], edi
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esi]
cmp byte [eax + 0x57], 0
jne 0x4e7d94
mov eax, dword [esi + 0x70]
lea ecx, [edx + edx*4]
mov byte [eax + ecx*4 + 1], 0xfd
mov dword [eax + ecx*4 + 0x10], 1
jmp 0x4e7d94
movzx ecx, word [ebp + 0x18]
mov edx, dword [ebp + 0x20]
mov dword [esp + 0x28], edx
mov dword [esp + 0x1c], ecx
cmp ecx, 1
jne 0x4e7ca5
mov al, byte [ebx + 0x13]
test al, al
jne 0x4e7c8e
inc dword [ebx + 0x2c]
xor edi, edi
mov eax, dword [ebx + 0x2c]
mov dword [esp + 0x14], eax
jmp 0x4e7cd9
dec al
xor edi, edi
mov byte [ebx + 0x13], al
movzx eax, al
mov eax, dword [ebx + eax*4 + 0x98]
mov dword [esp + 0x14], eax
jmp 0x4e7cd9
mov edi, dword [ebx + 0x1c]
mov edx, dword [ebx + 0x20]
mov dword [esp + 0x14], edx
cmp ecx, edi
jg 0x4e7cc0
lea eax, [edx + ecx]
sub edi, ecx
mov dword [ebx + 0x20], eax
mov dword [ebx + 0x1c], edi
jmp 0x4e7ccf
mov eax, dword [ebx + 0x2c]
lea edx, [eax + 1]
add eax, ecx
mov dword [esp + 0x14], edx
mov dword [ebx + 0x2c], eax
xor edi, edi
test ecx, ecx
jle 0x4e7d0e
mov edx, dword [esp + 0x28]
mov ebx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x14]
lea eax, [edi + ebp]
push eax
mov eax, dword [edx + 4]
movsx eax, word [eax + edi*2]
push eax
push dword [esp + 0x18]
push dword [edx + 0xc]
push esi
call fcn.004ecd30
mov edx, dword [esp + 0x3c]
inc edi
add esp, 0x14
cmp edi, ebx
jl 0x4e7ce1
mov ebx, dword [esp + 0x24]
mov ebp, dword [esp + 0x18]
mov eax, dword [esp + 0x64]
mov edx, dword [esi + 0x74]
mov eax, dword [eax + 0x34]
mov dword [esp + 0x28], eax
cmp dword [esi + 0x78], edx
jg 0x4e7d3b
mov edi, dword [esp + 0x14]
push edi
push 0
push eax
push 0xb2
push esi
call fcn.004c7840
add esp, 0x14
mov edx, eax
jmp 0x4e7d6e
mov edi, dword [esp + 0x28]
lea eax, [edx + 1]
mov dword [esi + 0x74], eax
lea ecx, [edx + edx*4]
mov eax, dword [esi + 0x70]
mov dword [eax + ecx*4 + 4], edi
mov edi, dword [esp + 0x14]
mov dword [eax + ecx*4], 0xb2
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], edi
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esi]
cmp byte [eax + 0x57], 0
jne 0x4e7d8b
mov eax, dword [esi + 0x70]
lea ecx, [edx + edx*4]
mov edx, dword [esp + 0x1c]
mov byte [eax + ecx*4 + 1], 0xfd
mov dword [eax + ecx*4 + 0x10], edx
jmp 0x4e7d8f
mov edx, dword [esp + 0x1c]
cmp edx, 1
jne 0x4e7dae
test edi, edi
je 0x4e7db9
mov al, byte [ebx + 0x13]
cmp al, 8
jae 0x4e7db9
movzx eax, al
mov dword [ebx + eax*4 + 0x98], edi
inc byte [ebx + 0x13]
jmp 0x4e7db9
cmp edx, dword [ebx + 0x1c]
jle 0x4e7db9
mov dword [ebx + 0x1c], edx
mov dword [ebx + 0x20], edi
mov ecx, dword [esi + 0xc]
mov edx, dword [esp + 0x30]
not edx
mov eax, dword [ecx + 0x3c]
add eax, dword [ecx + 0x38]
jns 0x4e7dd7
push edx
push esi
push ecx
call fcn.004d98e0
add esp, 0xc
jmp 0x4e7de0
mov ecx, dword [ecx + 0x40]
mov eax, dword [esi + 0x74]
mov dword [ecx + edx*4], eax
mov eax, dword [esp + 0x64]
mov edx, dword [esp + 0x20]
mov ecx, dword [esi + 0x74]
inc edx
mov edi, dword [eax + 4]
cmp dword [esi + 0x78], ecx
jg 0x4e7e05
push 0
push edx
push edi
push 5
push esi
call fcn.004c7840
add esp, 0x14
jmp 0x4e7e34
mov ebp, dword [esp + 0x18]
lea eax, [ecx + 1]
mov dword [esi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x70]
mov dword [eax + ecx*4], 5
mov dword [eax + ecx*4 + 4], edi
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [esp + 0x20]
mov edx, dword [esi + 0x74]
test ecx, ecx
jns 0x4e7e42
lea ecx, [edx - 1]
mov eax, dword [esi]
cmp byte [eax + 0x57], 0
je 0x4e7e51
mov eax, 0x610b1c
jmp 0x4e7e5a
mov eax, dword [esi + 0x70]
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*4]
mov dword [eax + 8], edx
and dword [ebp + 0x2c], 0xffbfffff
mov eax, dword [ebx]
test dword [eax + 0x50], 0x100000
jne 0x4e7f08
mov edx, dword [esp + 0x5c]
mov eax, dword [esp + 0x60]
inc eax
mov dword [esp + 0x60], eax
movzx edi, byte [edx + 0x30]
cmp eax, edi
jge 0x4e7efe
mov ecx, dword [edx + 4]
mov ebx, eax
imul eax, ebx, 0x58
add edx, 0x34c
mov dword [esp + 0x30], ecx
add edx, eax
lea esp, [esp]
lea eax, [edx - 0x4c]
mov dword [esp + 0x64], eax
movzx eax, byte [edx - 0x14]
lea eax, [eax + eax*8]
test byte [ecx + eax*8 + 0x2c], 8
jne 0x4e7ee0
mov ebp, dword [edx]
test ebp, ebp
je 0x4e7ee0
mov ecx, dword [ebp]
mov eax, dword [ebp + 4]
and ecx, dword [esp + 0x68]
and eax, dword [esp + 0x6c]
or ecx, eax
jne 0x4e7edc
mov eax, dword [ebp + 0x2c]
and eax, 0x400004
cmp eax, 0x400000
je 0x4e7ee8
mov ecx, dword [esp + 0x30]
inc ebx
add edx, 0x58
cmp ebx, edi
jl 0x4e7ea0
mov edx, dword [esp + 0x5c]
mov dword [esp + 0x60], ebx
mov eax, dword [esp + 0x60]
cmp eax, edi
mov ebx, dword [esp + 0x24]
mov dword [esp + 0x18], ebp
mov edi, dword [esp + 0x64]
jl 0x4e7970
mov ecx, dword [esp + 0x34]
mov edx, dword [esi + 0x74]
test ecx, ecx
jns 0x4e7f16
lea ecx, [edx - 1]
mov eax, dword [esi]
cmp byte [eax + 0x57], 0
je 0x4e7f2c
pop edi
pop esi
pop ebp
mov dword [0x610b24], edx
pop ebx
add esp, 0x48
ret
mov eax, dword [esi + 0x70]
lea ecx, [ecx + ecx*4]
pop edi
pop esi
pop ebp
mov dword [eax + ecx*4 + 8], edx
pop ebx
add esp, 0x48
ret