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

Disassembly:
sub esp, 0x27c
mov eax, dword [0x518450]
xor eax, esp
mov dword [esp + 0x278], eax
mov eax, dword [esp + 0x280]
lea ecx, [esp + 0x50]
push ebx
push ebp
push esi
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x290]
push edi
push dword [esp + 0x298]
mov edi, dword [esp + 0x2a0]
mov dword [esp + 0x14], eax
xor eax, eax
mov ebx, eax
mov dword [esp + 0x20], edi
mov ebp, eax
mov dword [esp + 0x5c], eax
mov dword [esp + 0x1c], ebx
mov esi, eax
mov dword [esp + 0x3c], eax
mov dword [esp + 0x28], ebp
mov dword [esp + 0x34], eax
mov dword [esp + 0x54], eax
mov dword [esp + 0x48], eax
mov dword [esp + 0x40], eax
call fcn.004bae23
call fcn.004c302f
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x34]
test eax, eax
je 0x4c5ab0
test byte [eax + 0xc], 0x40
jne 0x4c5185
push eax
call fcn.004bf4a4
pop ecx
mov ecx, eax
cmp ecx, 0xffffffff
je 0x4c5149
cmp ecx, 0xfffffffe
je 0x4c5149
mov edx, ecx
sar eax, 5
and edx, 0x1f
shl edx, 6
add edx, dword [eax*4 + 0x52a778]
jmp 0x4c514e
mov edx, 0x5194c0
test byte [edx + 0x24], 0x7f
jne 0x4c5ab0
cmp ecx, 0xffffffff
je 0x4c5176
cmp ecx, 0xfffffffe
je 0x4c5176
mov eax, ecx
and ecx, 0x1f
sar eax, 5
shl ecx, 6
add ecx, dword [eax*4 + 0x52a778]
jmp 0x4c517b
mov ecx, 0x5194c0
test byte [ecx + 0x24], 0x80
jne 0x4c5ab0
mov edx, dword [esp + 0x10]
test edx, edx
je 0x4c5ab0
mov dl, byte [edx]
xor eax, eax
mov dword [esp + 0x28], eax
mov ecx, eax
mov dword [esp + 0x20], ecx
mov dword [esp + 0x40], eax
mov dword [esp + 0x4c], eax
mov byte [esp + 0x17], dl
mov byte [esp + 0x48], dl
test dl, dl
je 0x4c5a86
mov eax, dword [esp + 0x10]
inc eax
mov dword [esp + 0x10], eax
test ecx, ecx
js 0x4c5a86
lea eax, [edx - 0x20]
cmp al, 0x58
ja 0x4c51de
movsx eax, dl
movsx eax, byte [eax + 0x4ed958]
and eax, 0xf
jmp 0x4c51e0
xor eax, eax
mov edi, dword [esp + 0x40]
movsx edi, byte [edi + eax*8 + 0x4ed978]
mov eax, edi
mov dword [esp + 0x40], edi
mov edi, dword [esp + 0x1c]
sar eax, 4
mov dword [esp + 0x40], eax
cmp eax, 7
ja case.default.0x4c5206
jmp dword [eax*4 + 0x4c5ac6]
xor eax, eax
or ebp, 0xffffffff
mov ebx, eax
mov dword [esp + 0x50], eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x38], eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x18], ebx
mov dword [esp + 0x24], ebp
mov dword [esp + 0x3c], eax
jmp case.default.0x4c5206
movsx eax, dl
sub eax, 0x20
je 0x4c527d
sub eax, 3
je 0x4c5275
sub eax, 8
je 0x4c5270
dec eax
dec eax
je 0x4c5264
sub eax, 3
mov eax, dword [esp + 0x10]
jne 0x4c5a74
or ebx, 8
mov dword [esp + 0x18], ebx
jmp 0x4c5a74
or ebx, 4
mov dword [esp + 0x18], ebx
jmp case.default.0x4c5206
or ebx, 1
jmp 0x4c5267
or ebx, 0x80
jmp 0x4c5267
or ebx, 2
jmp 0x4c5267
cmp dl, 0x2a
jne 0x4c52ae
mov eax, dword [edi]
add edi, 4
mov dword [esp + 0x1c], edi
mov dword [esp + 0x38], eax
test eax, eax
jns case.default.0x4c5206
or ebx, 4
neg eax
mov dword [esp + 0x18], ebx
mov dword [esp + 0x38], eax
jmp case.default.0x4c5206
imul ecx, dword [esp + 0x38], 0xa
movsx eax, dl
add ecx, 0xffffffd0
add eax, ecx
mov dword [esp + 0x38], eax
mov ecx, dword [esp + 0x20]
jmp case.default.0x4c5206
xor eax, eax
mov ebp, eax
mov dword [esp + 0x24], ebp
jmp case.default.0x4c5206
cmp dl, 0x2a
jne 0x4c52ff
mov ebp, dword [edi]
add edi, 4
mov eax, dword [esp + 0x10]
mov dword [esp + 0x1c], edi
mov dword [esp + 0x24], ebp
test ebp, ebp
jns 0x4c5a74
or ebp, 0xffffffff
mov dword [esp + 0x24], ebp
jmp 0x4c5a74
imul ecx, ebp, 0xa
movsx ebp, dl
add ecx, 0xffffffd0
add ebp, ecx
mov dword [esp + 0x24], ebp
jmp 0x4c52bf
cmp dl, 0x49
je 0x4c5358
cmp dl, 0x68
je 0x4c5350
mov eax, dword [esp + 0x10]
cmp dl, 0x6c
je 0x4c5337
cmp dl, 0x77
jne 0x4c5a74
or ebx, 0x800
jmp 0x4c525b
cmp byte [eax], 0x6c
jne 0x4c5348
inc eax
or ebx, 0x1000
jmp 0x4c525b
or ebx, 0x10
jmp 0x4c525b
or ebx, 0x20
jmp 0x4c5267
mov eax, dword [esp + 0x10]
mov al, byte [eax]
cmp al, 0x36
jne 0x4c537c
mov edi, dword [esp + 0x10]
cmp byte [edi + 1], 0x34
jne 0x4c537c
mov eax, edi
add eax, 2
or ebx, 0x8000
jmp 0x4c525b
cmp al, 0x33
jne 0x4c539a
mov edi, dword [esp + 0x10]
cmp byte [edi + 1], 0x32
jne 0x4c539a
mov eax, edi
add eax, 2
and ebx, 0xffff7fff
jmp 0x4c525b
cmp al, 0x64
je case.default.0x4c5206
cmp al, 0x69
je case.default.0x4c5206
cmp al, 0x6f
je case.default.0x4c5206
cmp al, 0x75
je case.default.0x4c5206
cmp al, 0x78
je case.default.0x4c5206
cmp al, 0x58
je case.default.0x4c5206
xor eax, eax
mov dword [esp + 0x40], eax
jmp 0x4c53d4
xor eax, eax
mov dword [esp + 0x3c], eax
lea eax, [esp + 0x60]
push eax
movzx eax, dl
push eax
call fcn.004caf49
pop ecx
pop ecx
test eax, eax
je 0x4c5418
lea eax, [esp + 0x20]
push eax
push dword [esp + 0x38]
push dword [esp + 0x50]
call fcn.004c5ae6
mov ecx, dword [esp + 0x1c]
add esp, 0xc
mov al, byte [ecx]
inc ecx
mov byte [esp + 0x48], al
mov dword [esp + 0x10], ecx
test al, al
je 0x4c5ab0
lea eax, [esp + 0x20]
push eax
push dword [esp + 0x38]
push dword [esp + 0x50]
call fcn.004c5ae6
add esp, 0xc
jmp 0x4c52bf
movsx eax, dl
cmp eax, 0x64
jg 0x4c55f5
je 0x4c5675
cmp eax, 0x53
jg 0x4c551f
je 0x4c54bc
sub eax, 0x41
je 0x4c5464
dec eax
dec eax
je 0x4c54a1
dec eax
dec eax
je 0x4c5464
dec eax
dec eax
jne 0x4c5901
add dl, 0x20
mov dword [esp + 0x50], 1
mov byte [esp + 0x17], dl
mov eax, dword [esp + 0x24]
lea esi, [esp + 0x80]
or ebx, 0x40
mov ecx, 0x200
mov dword [esp + 0x18], ebx
mov ebp, ecx
test eax, eax
jns 0x4c56aa
mov dword [esp + 0x24], 6
jmp 0x4c56f6
test ebx, 0x830
jne 0x4c553d
or ebx, 0x800
mov dword [esp + 0x18], ebx
jmp 0x4c553d
test ebx, 0x830
jne 0x4c54ce
or ebx, 0x800
mov dword [esp + 0x18], ebx
mov esi, dword [edi]
cmp ebp, 0xffffffff
mov eax, ebp
mov ecx, 0x7fffffff
cmove eax, ecx
add edi, 4
mov dword [esp + 0x1c], edi
test ebx, 0x810
je 0x4c58e3
test esi, esi
mov dword [esp + 0x3c], 1
cmove esi, dword [str._null_]
mov ecx, esi
test eax, eax
je 0x4c5516
xor edx, edx
dec eax
cmp word [ecx], dx
je 0x4c5516
add ecx, 2
test eax, eax
jne 0x4c5509
sub ecx, esi
sar ecx, 1
jmp 0x4c58fd
sub eax, 0x58
je 0x4c57a1
dec eax
dec eax
je 0x4c5598
sub eax, 7
je 0x4c5473
dec eax
dec eax
jne 0x4c5901
add edi, 4
mov dword [esp + 0x1c], edi
test ebx, 0x810
je 0x4c557a
movzx eax, word [edi - 4]
push eax
mov eax, 0x200
push eax
lea eax, [esp + 0x88]
push eax
lea eax, [esp + 0x34]
push eax
call fcn.004cd961
add esp, 0x10
test eax, eax
je 0x4c558c
mov dword [esp + 0x44], 1
jmp 0x4c558c
mov al, byte [edi - 4]
mov byte [esp + 0x80], al
mov dword [esp + 0x28], 1
lea esi, [esp + 0x80]
jmp 0x4c5901
mov eax, dword [edi]
add edi, 4
mov dword [esp + 0x1c], edi
test eax, eax
je 0x4c55dc
mov esi, dword [eax + 4]
test esi, esi
je 0x4c55dc
movsx eax, word [eax]
test ebx, 0x800
je 0x4c55cd
cdq
sub eax, edx
mov dword [esp + 0x3c], 1
sar eax, 1
mov dword [esp + 0x28], eax
jmp 0x4c5901
xor ecx, ecx
mov dword [esp + 0x28], eax
mov dword [esp + 0x3c], ecx
jmp 0x4c5901
mov esi, dword [0x518968]
mov ecx, esi
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4c55e7
sub ecx, edx
jmp 0x4c58fd
cmp eax, 0x70
jg 0x4c57a5
je 0x4c5799
cmp eax, 0x65
jl 0x4c5901
cmp eax, 0x67
jle 0x4c5473
cmp eax, 0x69
je 0x4c5675
cmp eax, 0x6e
je 0x4c5641
cmp eax, 0x6f
jne 0x4c5901
push 8
pop ecx
mov dword [esp + 0x28], ecx
test bl, bl
jns 0x4c5683
mov eax, 0x200
or ebx, eax
mov dword [esp + 0x18], ebx
jmp 0x4c5683
add edi, 4
mov dword [esp + 0x1c], edi
mov edi, dword [edi - 4]
call fcn.004cd81d
test eax, eax
je 0x4c5ab0
mov eax, dword [esp + 0x20]
test bl, 0x20
je 0x4c5666
mov word [edi], ax
jmp 0x4c5668
mov dword [edi], eax
mov dword [esp + 0x44], 1
jmp 0x4c5a4a
or ebx, 0x40
mov dword [esp + 0x18], ebx
push 0xa
pop ecx
mov dword [esp + 0x28], ecx
test ebx, 0x8000
jne 0x4c5697
test ebx, 0x1000
je 0x4c57ed
mov ebp, dword [edi]
add edi, 8
mov dword [esp + 0x1c], edi
xor esi, esi
mov edi, dword [edi - 4]
jmp 0x4c5820
jne 0x4c56bb
cmp dl, 0x67
jne 0x4c56f6
mov dword [esp + 0x24], 1
jmp 0x4c56f6
cmp eax, ecx
cmovg eax, ecx
mov dword [esp + 0x24], eax
cmp eax, 0xa3
jle 0x4c56f6
lea edi, [eax + 0x15d]
push edi
call fcn.004c2f1d
mov dl, byte [esp + 0x1b]
mov dword [esp + 0x50], eax
pop ecx
test eax, eax
je 0x4c56ea
mov esi, eax
mov ebp, edi
jmp 0x4c56f2
mov dword [esp + 0x24], 0xa3
mov edi, dword [esp + 0x1c]
mov eax, dword [edi]
add edi, 8
mov dword [esp + 0x78], eax
mov dword [esp + 0x1c], edi
mov eax, dword [edi - 4]
mov dword [esp + 0x7c], eax
lea eax, [esp + 0x60]
push eax
push dword [esp + 0x54]
movsx eax, dl
push dword [esp + 0x2c]
push eax
push ebp
mov ebp, dword [0x518764]
lea eax, [esp + 0x8c]
push esi
push eax
push dword [0x519518]
call ebp
call eax
mov edi, ebx
add esp, 0x1c
and edi, 0x80
je 0x4c575b
cmp dword [esp + 0x24], 0
jne 0x4c575b
lea eax, [esp + 0x60]
push eax
push esi
push dword [0x519524]
call ebp
call eax
pop ecx
pop ecx
cmp byte [esp + 0x17], 0x67
jne 0x4c5778
test edi, edi
jne 0x4c5778
lea eax, [esp + 0x60]
push eax
push esi
push dword [0x519520]
call ebp
call eax
pop ecx
pop ecx
cmp byte [esi], 0x2d
jne 0x4c5788
or ebx, 0x100
inc esi
mov dword [esp + 0x18], ebx
mov ecx, esi
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4c578d
jmp 0x4c55ee
mov dword [esp + 0x24], 8
push 7
jmp 0x4c57c1
sub eax, 0x73
je 0x4c54ce
dec eax
dec eax
je 0x4c567c
sub eax, 3
jne 0x4c5901
push 0x27
pop eax
mov dword [esp + 0x58], eax
push 0x10
pop ecx
mov dword [esp + 0x28], ecx
test bl, bl
jns 0x4c5683
add al, 0x51
mov byte [esp + 0x2c], 0x30
mov byte [esp + 0x2d], al
mov dword [esp + 0x30], 2
jmp 0x4c5683
add edi, 4
xor esi, esi
mov dword [esp + 0x1c], edi
test bl, 0x20
je 0x4c580c
test bl, 0x40
je 0x4c5806
movsx eax, word [edi - 4]
jmp 0x4c5814
movzx eax, word [edi - 4]
jmp 0x4c5814
test bl, 0x40
je 0x4c581b
mov eax, dword [edi - 4]
cdq
mov ebp, eax
mov edi, edx
jmp 0x4c5820
mov ebp, dword [edi - 4]
mov edi, esi
test bl, 0x40
je 0x4c583f
cmp edi, esi
jg 0x4c583f
jl 0x4c582f
cmp ebp, esi
jae 0x4c583f
neg ebp
adc edi, esi
neg edi
or ebx, 0x100
mov dword [esp + 0x18], ebx
mov edx, dword [esp + 0x24]
test ebx, 0x9000
cmove edi, esi
test edx, edx
jns 0x4c5855
xor edx, edx
inc edx
jmp 0x4c5866
mov eax, 0x200
and ebx, 0xfffffff7
cmp edx, eax
mov dword [esp + 0x18], ebx
cmovg edx, eax
mov eax, ebp
or eax, edi
jne 0x4c5870
mov dword [esp + 0x30], esi
lea esi, [esp + 0x27f]
mov eax, edx
dec edx
mov dword [esp + 0x24], edx
test eax, eax
jg 0x4c5888
mov eax, ebp
or eax, edi
je 0x4c58b5
mov eax, ecx
cdq
push edx
push eax
push edi
push ebp
call fcn.004c1460
add ecx, 0x30
mov dword [esp + 0x74], ebx
mov ebp, eax
mov edi, edx
cmp ecx, 0x39
jle 0x4c58a8
add ecx, dword [esp + 0x58]
mov edx, dword [esp + 0x24]
mov byte [esi], cl
dec esi
mov ecx, dword [esp + 0x28]
jmp 0x4c5877
mov ebx, dword [esp + 0x18]
lea eax, [esp + 0x27f]
sub eax, esi
mov ecx, 0x200
inc esi
mov dword [esp + 0x28], eax
test ecx, ebx
je 0x4c5901
test eax, eax
je 0x4c58d9
cmp byte [esi], 0x30
je 0x4c5901
dec esi
inc dword [esp + 0x28]
mov byte [esi], 0x30
jmp 0x4c5901
test esi, esi
cmove esi, dword [0x518968]
mov ecx, esi
jmp 0x4c58f7
dec eax
cmp byte [ecx], 0
je 0x4c58fb
inc ecx
test eax, eax
jne 0x4c58f0
sub ecx, esi
mov dword [esp + 0x28], ecx
cmp dword [esp + 0x44], 0
jne 0x4c5a4a
test bl, 0x40
je 0x4c593e
test ebx, 0x100
je 0x4c5920
mov byte [esp + 0x2c], 0x2d
jmp 0x4c5936
test bl, 1
je 0x4c592c
mov byte [esp + 0x2c], 0x2b
jmp 0x4c5936
test bl, 2
je 0x4c593e
mov byte [esp + 0x2c], 0x20
mov dword [esp + 0x30], 1
mov edi, dword [esp + 0x38]
sub edi, dword [esp + 0x28]
mov eax, dword [esp + 0x30]
sub edi, eax
mov ebp, dword [esp + 0x34]
test bl, 0xc
jne 0x4c596a
lea eax, [esp + 0x20]
push eax
push ebp
push edi
push 0x20
call fcn.004c5b2e
mov eax, dword [esp + 0x40]
add esp, 0x10
push dword [esp + 0x54]
lea ecx, [esp + 0x24]
push ecx
push ebp
push eax
lea eax, [esp + 0x3c]
push eax
call fcn.004c5b5a
add esp, 0x14
test bl, 8
je 0x4c599d
test bl, 4
jne 0x4c599d
lea eax, [esp + 0x20]
push eax
push ebp
push edi
push 0x30
call fcn.004c5b2e
add esp, 0x10
cmp dword [esp + 0x3c], 0
mov ebp, dword [esp + 0x28]
je 0x4c5a12
test ebp, ebp
jle 0x4c5a12
mov ecx, esi
movzx eax, word [ecx]
dec ebp
push eax
push 6
lea eax, [esp + 0x288]
add ecx, 2
push eax
lea eax, [esp + 0x68]
mov dword [esp + 0x7c], ecx
push eax
call fcn.004cd961
add esp, 0x10
test eax, eax
jne 0x4c5a09
cmp dword [esp + 0x5c], eax
je 0x4c5a09
push dword [esp + 0x54]
lea eax, [esp + 0x24]
push eax
push dword [esp + 0x3c]
lea eax, [esp + 0x28c]
push dword [esp + 0x68]
push eax
call fcn.004c5b5a
mov ecx, dword [esp + 0x84]
add esp, 0x14
test ebp, ebp
jne 0x4c59ae
jmp 0x4c5a29
or ecx, 0xffffffff
mov dword [esp + 0x20], ecx
jmp 0x4c5a2d
push dword [esp + 0x54]
lea eax, [esp + 0x24]
push eax
push dword [esp + 0x3c]
push ebp
push esi
call fcn.004c5b5a
add esp, 0x14
mov ecx, dword [esp + 0x20]
test ecx, ecx
js 0x4c5a4e
test bl, 4
je 0x4c5a4e
lea eax, [esp + 0x20]
push eax
push dword [esp + 0x38]
push edi
push 0x20
call fcn.004c5b2e
add esp, 0x10
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x4c]
test eax, eax
je 0x4c5a6c
push eax
call fcn.004bbb16
mov ebp, dword [esp + 0x28]
xor eax, eax
pop ecx
mov dword [esp + 0x4c], eax
jmp 0x4c52bf
mov ebp, dword [esp + 0x24]
mov eax, dword [esp + 0x10]
mov dl, byte [eax]
mov byte [esp + 0x17], dl
mov byte [esp + 0x48], dl
test dl, dl
jne 0x4c51bb
mov eax, ecx
cmp byte [esp + 0x6c], 0
pop edi
pop esi
pop ebp
pop ebx
je 0x4c5a9b
mov ecx, dword [esp + 0x58]
and dword [ecx + 0x70], 0xfffffffd
mov ecx, dword [esp + 0x278]
xor ecx, esp
call fcn.004b9a6c
add esp, 0x27c
ret
call fcn.004c302f
mov dword [eax], 0x16
call fcn.004c467e
or eax, 0xffffffff
jmp 0x4c5a88