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

Disassembly:
mov ecx, dword fs:[0x14]
mov ecx, dword [ecx]
cmp esp, dword [ecx + 8]
jbe 0x4c5b04
sub esp, 0x7c
mov eax, dword [esp + 0x94]
test eax, eax
sete dl
mov ebx, dword [esp + 0x98]
test ebx, ebx
xchg ebp, ebx
sete bl
xchg ebp, ebx
and ebp, edx
xchg ebp, eax
test al, al
xchg ebp, eax
je 0x4c5201
xor ecx, ecx
jmp 0x4c5208
mov ecx, dword [esp + 0x9c]
mov dword [esp + 0x60], ecx
mov edx, dword [esp + 0xa0]
mov edx, dword [edx]
add edx, 0xffffffc4
neg edx
cmp edx, 0x20
sbb ebp, ebp
lea esi, [edx - 0x20]
mov dword [esp + 0x5c], esi
cmp esi, 0x20
sbb edi, edi
xchg esi, ebx
neg ebx
xchg esi, ebx
cmp esi, 0x20
sbb ebx, ebx
mov dword [esp + 0x58], ebx
mov ecx, dword [esp + 0x5c]
shl eax, cl
mov ecx, edx
mov ebx, dword [esp + 0x94]
shl ebx, cl
and ebx, ebp
and eax, edi
mov ecx, esi
mov edi, dword [esp + 0x94]
shr edi, cl
mov esi, dword [esp + 0x58]
and edi, esi
mov ecx, edx
mov edx, dword [esp + 0x98]
shl edx, cl
and edx, ebp
or edx, edi
or edx, eax
mov eax, dword [esp + 0x60]
jmp 0x4c5285
shl edx, 1
mov ebp, ebx
shr ebx, 0x1f
or edx, ebx
shl ebp, 1
dec eax
mov ebx, ebp
test ebx, ebx
xchg ebp, ebx
setne bl
xchg ebp, ebx
test edx, edx
xchg esi, ebx
setne bl
xchg esi, ebx
or esi, ebp
xchg esi, eax
test al, al
xchg esi, eax
je 0x4c52b5
test edx, 0x10000000
xchg ebp, ebx
sete bl
xchg ebp, ebx
and ebp, 1
xchg ebp, eax
test al, al
xchg ebp, eax
jne 0x4c5277
mov ebp, dword [esp + 0x8c]
cmp ebp, 0xf
jae 0x4c5424
mov dword [esp + 0x54], ebx
mov dword [esp + 0x50], eax
mov dword [esp + 0x4c], edx
shl ebp, 2
cmp ebp, 0x20
sbb edi, edi
mov dword [esp + 0x5c], edi
lea ecx, [ebp - 0x20]
mov dword [esp + 0x58], ecx
cmp ecx, 0x20
sbb esi, esi
mov dword [esp + 0x48], esi
neg ecx
cmp ecx, 0x20
sbb eax, eax
lea esi, [ebp - 0x3c]
xchg esi, ebx
neg ebx
xchg esi, ebx
cmp esi, 0x20
sbb edi, edi
mov dword [esp + 0x44], edi
lea edi, [esi - 0x20]
mov dword [esp + 0x40], edi
xchg edi, ebx
neg ebx
xchg edi, ebx
mov dword [esp + 0x3c], edi
cmp edi, 0x20
sbb edi, edi
mov dword [esp + 0x38], edi
mov edi, dword [esp + 0x40]
cmp edi, 0x20
sbb edi, edi
mov dword [esp + 0x34], edi
shr ebx, cl
and ebx, eax
mov ecx, ebp
mov eax, edx
shl edx, cl
mov edi, dword [esp + 0x5c]
and edx, edi
or edx, ebx
mov ecx, dword [esp + 0x58]
mov ebx, dword [esp + 0x54]
shl ebx, cl
mov ecx, eax
mov eax, dword [esp + 0x48]
and ebx, eax
or ebx, edx
and ebx, 0xfffffff
cmp ebx, 0x8000000
seta al
mov byte [esp + 0x27], al
sete dl
mov byte [esp + 0x26], dl
mov ebx, ecx
mov ecx, ebp
mov eax, dword [esp + 0x54]
mov ebp, eax
shl eax, cl
and eax, edi
mov ecx, esi
shr ebp, cl
mov ecx, dword [esp + 0x3c]
mov edi, ebx
shl ebx, cl
mov edx, dword [esp + 0x38]
and ebx, edx
mov edx, dword [esp + 0x44]
and ebp, edx
or ebx, ebp
mov ecx, dword [esp + 0x40]
shr edi, cl
mov ebp, dword [esp + 0x34]
and edi, ebp
or ebx, edi
mov edi, ebx
and ebx, 1
or ebx, eax
test ebx, ebx
seta al
mov ebx, ecx
mov ecx, esi
mov ebp, dword [esp + 0x4c]
shr ebp, cl
and ebp, edx
movzx edx, byte [esp + 0x26]
and edx, eax
movzx eax, byte [esp + 0x27]
or edx, eax
test dl, dl
je 0x4c53d3
add edi, 1
adc ebp, 0
mov ecx, ebx
mov eax, edi
shl edi, cl
mov edx, dword [esp + 0x34]
and edi, edx
mov ecx, dword [esp + 0x3c]
mov edx, eax
shr eax, cl
mov ebx, dword [esp + 0x38]
and eax, ebx
mov ecx, esi
shl ebp, cl
mov ebx, dword [esp + 0x44]
and ebp, ebx
or eax, ebp
or eax, edi
shl edx, cl
and edx, ebx
test eax, 0x20000000
je 0x4c541a
shr edx, 1
mov ecx, eax
shl eax, 0x1f
or edx, eax
shr ecx, 1
mov ebx, dword [esp + 0x50]
lea eax, [ebx + 1]
jmp 0x4c5420
mov ecx, eax
mov eax, dword [esp + 0x50]
mov ebx, edx
mov edx, ecx
mov dword [esp + 0x5c], edx
mov dword [esp + 0x60], eax
mov dword [esp + 0x58], ebx
call fcn.004caa90
mov eax, dword [esp]
mov ecx, dword [esp + 4]
movzx edx, byte [esp + 0x90]
cmp dl, 0x58
jne 0x4c545d
call fcn.004cadb0
mov eax, dword [esp]
mov ecx, dword [esp + 4]
movzx edx, byte [esp + 0x90]
mov dword [esp + 0x28], ecx
mov dword [esp + 0x74], eax
movzx ebx, byte [esp + 0x91]
test bl, bl
je 0x4c54dd
mov ebx, dword [esp + 0x84]
inc ebx
mov ebp, dword [esp + 0x88]
cmp ebp, ebx
jb 0x4c548d
mov esi, dword [esp + 0x80]
jmp 0x4c54d6
mov eax, dword [esp + 0x80]
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], ebp
mov dword [esp + 0xc], 1
lea eax, [0x5b0a60]
mov dword [esp + 0x10], eax
call fcn.0043f150
mov eax, dword [esp + 0x14]
mov ebx, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
movzx edx, byte [esp + 0x90]
mov esi, eax
mov ebp, ecx
mov eax, dword [esp + 0x74]
mov ecx, dword [esp + 0x28]
mov byte [ebx + esi - 1], 0x2d
jmp 0x4c54f2
mov ebp, dword [esp + 0x88]
mov esi, dword [esp + 0x80]
mov ebx, dword [esp + 0x84]
add ebx, 3
cmp ebp, ebx
jae 0x4c5537
mov dword [esp], esi
mov dword [esp + 4], ebx
mov dword [esp + 8], ebp
mov dword [esp + 0xc], 3
lea eax, [0x5b0a60]
mov dword [esp + 0x10], eax
call fcn.0043f150
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0x18]
mov ebp, dword [esp + 0x1c]
mov eax, dword [esp + 0x74]
mov ecx, dword [esp + 0x28]
movzx edx, byte [esp + 0x90]
mov dword [esp + 0x78], esi
mov byte [ebx + esi - 3], 0x30
mov byte [ebx + esi - 2], dl
mov edi, dword [esp + 0x5c]
shr edi, 0x1c
and edi, 1
add edi, 0x30
xchg edi, eax
mov byte [ebx + esi - 1], al
xchg edi, eax
mov edi, dword [esp + 0x5c]
shl edi, 4
mov edx, dword [esp + 0x58]
shr edx, 0x1c
or edi, edx
mov dword [esp + 0x5c], edi
mov edx, dword [esp + 0x58]
shl edx, 4
mov dword [esp + 0x58], edx
mov esi, dword [esp + 0x8c]
test esi, esi
jge 0x4c55f8
test edi, edi
xchg edi, ebx
setne bl
xchg edi, ebx
test edx, edx
setne dl
or edx, edi
test dl, dl
je 0x4c55ee
lea edx, [ebx + 1]
cmp ebp, edx
jb 0x4c55a2
mov esi, dword [esp + 0x78]
jmp 0x4c55dc
mov eax, dword [esp + 0x78]
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], ebp
mov dword [esp + 0xc], 1
lea eax, [0x5b0a60]
mov dword [esp + 0x10], eax
call fcn.0043f150
mov esi, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
mov ebp, dword [esp + 0x1c]
mov eax, dword [esp + 0x74]
mov ecx, dword [esp + 0x28]
mov byte [edx + esi - 1], 0x2e
mov ebx, dword [esp + 0x58]
mov edi, dword [esp + 0x5c]
jmp 0x4c5a64
test esi, esi
mov edx, dword [esp + 0x58]
mov edi, dword [esp + 0x5c]
jle 0x4c5668
inc ebx
cmp ebp, ebx
jae 0x4c564c
mov eax, dword [esp + 0x78]
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], ebp
mov dword [esp + 0xc], 1
lea eax, [0x5b0a60]
mov dword [esp + 0x10], eax
call fcn.0043f150
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0x18]
mov ebp, dword [esp + 0x1c]
mov eax, dword [esp + 0x74]
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x58]
mov edi, dword [esp + 0x5c]
mov dword [esp + 0x78], esi
mov esi, dword [esp + 0x8c]
mov esi, dword [esp + 0x78]
mov byte [ebx + esi - 1], 0x2e
mov dword [esp + 0x6c], eax
xor eax, eax
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x6c]
jmp 0x4c59a4
mov eax, dword [esp + 0x78]
nop
movzx ecx, byte [esp + 0x90]
mov edx, ecx
or ecx, 0x20
cmp dl, cl
jne 0x4c5685
mov ecx, 0x70
jmp 0x4c568a
mov ecx, 0x50
lea edx, [ebx + 1]
cmp ebp, edx
jae 0x4c56c8
mov byte [esp + 0x23], cl
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], ebp
mov dword [esp + 0xc], 1
lea eax, [0x5b0a60]
mov dword [esp + 0x10], eax
call fcn.0043f150
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
mov ebp, dword [esp + 0x1c]
movzx ecx, byte [esp + 0x23]
mov byte [edx + eax - 1], cl
mov ecx, dword [esp + 0x60]
test ecx, ecx
jge 0x4c56dd
neg ecx
mov ebx, 0x2d
jmp 0x4c56e2
mov ebx, 0x2b
mov dword [esp + 0x60], ecx
inc edx
cmp ebp, edx
jae 0x4c5726
mov byte [esp + 0x23], bl
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], ebp
mov dword [esp + 0xc], 1
lea eax, [0x5b0a60]
mov dword [esp + 0x10], eax
call fcn.0043f150
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
mov ebp, dword [esp + 0x1c]
mov ecx, dword [esp + 0x60]
movzx ebx, byte [esp + 0x23]
mov byte [edx + eax - 1], bl
cmp ecx, 0x64
jge 0x4c57a9
add edx, 2
mov ebx, eax
mov eax, 0xcccccccd
mov esi, edx
imul ecx
add edx, ecx
sar edx, 3
mov edi, ecx
sar ecx, 0x1f
sub edx, ecx
lea ecx, [edx + edx*4]
shl ecx, 1
sub edi, ecx
cmp ebp, esi
jae 0x4c5796
mov dword [esp + 0x60], edx
mov dword [esp + 0x50], edi
mov dword [esp], ebx
mov dword [esp + 4], esi
mov dword [esp + 8], ebp
mov dword [esp + 0xc], 2
lea eax, [0x5b0a60]
mov dword [esp + 0x10], eax
call fcn.0043f150
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
mov ebp, dword [esp + 0x1c]
mov edi, dword [esp + 0x50]
mov esi, edx
mov ebx, eax
mov edx, dword [esp + 0x60]
lea eax, [edx + 0x30]
mov byte [esi + ebx - 2], al
lea eax, [edi + 0x30]
mov byte [esi + ebx - 1], al
jmp 0x4c5955
cmp ecx, 0x3e8
jge 0x4c586d
add edx, 3
mov ebx, eax
mov eax, 0xcccccccd
mov esi, edx
imul ecx
add edx, ecx
mov edi, edx
sar edx, 3
mov dword [esp + 0x50], edx
mov eax, 0xcccccccd
imul edx
mov eax, ebx
mov ebx, dword [esp + 0x50]
add edx, ebx
sar edx, 3
sar edi, 0x1f
sub edx, edi
lea edx, [edx + edx*4]
shl edx, 1
mov edi, ebx
sub ebx, edx
lea edx, [edi + edi*4]
shl edx, 1
mov edi, ecx
sub ecx, edx
cmp ebp, esi
jae 0x4c583f
mov dword [esp + 0x50], ebx
mov dword [esp + 0x30], ecx
mov dword [esp], eax
mov dword [esp + 4], esi
mov dword [esp + 8], ebp
mov dword [esp + 0xc], 3
lea eax, [0x5b0a60]
mov dword [esp + 0x10], eax
call fcn.0043f150
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
mov ebp, dword [esp + 0x1c]
mov ecx, dword [esp + 0x30]
mov ebx, dword [esp + 0x50]
mov edi, dword [esp + 0x60]
mov esi, edx
mov dword [esp + 0x78], eax
mov eax, 0x51eb851f
imul edi
sar edx, 5
add edx, 0x30
mov edi, dword [esp + 0x78]
mov byte [esi + edi - 3], dl
lea edx, [ebx + 0x30]
mov byte [esi + edi - 2], dl
add ecx, 0x30
mov byte [esi + edi - 1], cl
mov ebx, edi
jmp 0x4c5955
mov ebx, eax
mov eax, 0xcccccccd
mov esi, edx
imul ecx
add edx, ecx
mov edi, edx
sar edx, 3
mov dword [esp + 0x50], edx
mov eax, ebx
lea ebx, [edx + edx*4]
shl ebx, 1
sub ecx, ebx
mov dword [esp + 0x30], ecx
lea ebx, [esi + 4]
mov esi, eax
mov eax, 0x51eb851f
mov ecx, dword [esp + 0x60]
imul ecx
sar edx, 5
mov eax, ecx
movzx ecx, dl
imul ecx, ecx, 0x19a
shr ecx, 0xc
lea ecx, [ecx + ecx*4]
shl ecx, 1
sub edx, ecx
mov byte [esp + 0x25], dl
mov ecx, eax
mov eax, 0xcccccccd
mov edx, dword [esp + 0x50]
imul edx
mov eax, ecx
mov ecx, dword [esp + 0x50]
add edx, ecx
sar edx, 3
sar edi, 0x1f
sub edx, edi
lea edx, [edx + edx*4]
shl edx, 1
sub ecx, edx
cmp ebp, ebx
jae 0x4c5920
mov dword [esp + 0x50], ecx
mov dword [esp], esi
mov dword [esp + 4], ebx
mov dword [esp + 8], ebp
mov dword [esp + 0xc], 4
lea eax, [0x5b0a60]
mov dword [esp + 0x10], eax
call fcn.0043f150
mov eax, dword [esp + 0x14]
mov ebx, dword [esp + 0x18]
mov ebp, dword [esp + 0x1c]
mov ecx, dword [esp + 0x50]
mov esi, eax
mov eax, dword [esp + 0x60]
mov edx, 0x4189374c
imul edx
sar edx, 8
add edx, 0x30
mov byte [ebx + esi - 4], dl
movzx edx, byte [esp + 0x25]
add edx, 0x30
mov byte [ebx + esi - 3], dl
add ecx, 0x30
mov byte [ebx + esi - 2], cl
mov ecx, dword [esp + 0x30]
add ecx, 0x30
mov byte [ebx + esi - 1], cl
mov eax, esi
mov esi, ebx
mov ebx, eax
mov dword [esp + 0xa4], ebx
mov dword [esp + 0xa8], esi
mov dword [esp + 0xac], ebp
add esp, 0x7c
ret
mov eax, dword [esp + 0x78]
xchg edi, ecx
mov byte [ebx + eax - 1], cl
xchg edi, ecx
inc esi
mov edi, dword [esp + 0x58]
shl edi, 4
mov ecx, dword [esp + 0x5c]
shr ecx, 0x1c
or edi, ecx
mov ecx, dword [esp + 0x5c]
shl ecx, 4
mov eax, dword [esp + 0x74]
mov dword [esp + 0x2c], esi
mov edx, ecx
mov esi, dword [esp + 0x78]
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x78], esi
mov dword [esp + 0x5c], edx
mov edx, dword [esp + 0x8c]
mov esi, dword [esp + 0x2c]
cmp edx, esi
jle 0x4c5a2b
mov dword [esp + 0x58], edi
shr edi, 0x1c
and edi, 0xf
cmp ecx, edi
jbe 0x4c5a34
inc ebx
movzx edi, byte [eax + edi]
cmp ebp, ebx
jae 0x4c596e
xchg edi, eax
mov byte [esp + 0x24], al
xchg edi, eax
mov eax, dword [esp + 0x78]
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], ebp
mov dword [esp + 0xc], 1
lea eax, [0x5b0a60]
mov dword [esp + 0x10], eax
call fcn.0043f150
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0x18]
mov ebp, dword [esp + 0x1c]
mov eax, dword [esp + 0x74]
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x8c]
movzx edi, byte [esp + 0x24]
mov dword [esp + 0x78], esi
mov esi, dword [esp + 0x2c]
jmp 0x4c596e
mov eax, dword [esp + 0x78]
jmp 0x4c566c
mov eax, edi
call fcn.004520b0
xchg esi, eax
mov byte [edx + edi - 1], al
xchg esi, eax
shl ebx, 4
mov esi, dword [esp + 0x5c]
shr esi, 0x1c
or ebx, esi
mov esi, dword [esp + 0x5c]
shl esi, 4
mov dword [esp + 0x64], eax
mov eax, edi
mov edi, ebx
mov ebx, esi
mov esi, eax
mov eax, dword [esp + 0x64]
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x78], esi
test edi, edi
xchg esi, ebx
setne bl
xchg esi, ebx
test ebx, ebx
setne bl
or esi, ebx
xchg esi, eax
test al, al
xchg esi, eax
je 0x4c5af1
mov ebx, edi
shr edi, 0x1c
and edi, 0xf
cmp ecx, edi
jbe 0x4c5afc
inc edx
movzx esi, byte [eax + edi]
cmp ebp, edx
jb 0x4c5a9d
mov edi, dword [esp + 0x78]
jmp 0x4c5a3b
xchg esi, eax
mov byte [esp + 0x24], al
xchg esi, eax
mov dword [esp + 0x58], ebx
mov eax, dword [esp + 0x78]
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], ebp
mov dword [esp + 0xc], 1
lea eax, [0x5b0a60]
mov dword [esp + 0x10], eax
call fcn.0043f150
mov esi, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
mov ebp, dword [esp + 0x1c]
mov eax, dword [esp + 0x74]
mov ecx, dword [esp + 0x28]
mov ebx, dword [esp + 0x58]
mov edi, esi
movzx esi, byte [esp + 0x24]
jmp 0x4c5a3b
mov eax, dword [esp + 0x78]
mov ebx, edx
jmp 0x4c566c
mov eax, edi
call fcn.004520b0
nop
call fcn.00450c10
jmp fcn.004c51c0