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

Disassembly:
sub esp, 0x74
push ebx
push ebp
mov ebp, dword [esp + 0xa0]
push esi
mov esi, dword [esp + 0x94]
mov ebx, ecx
push edi
lea eax, [esp + 0xa0]
push ebp
lea ecx, [esp + 0xa0]
push eax
push ecx
lea edx, [esp + 0xa0]
push esi
lea eax, [esp + 0xa0]
push edx
lea ecx, [esp + 0xa0]
push eax
lea edx, [esp + 0xa0]
push ecx
push edx
mov ecx, ebx
mov dword [esp + 0x64], ebx
call fcn.004b3500
mov edx, dword [esp + 0x90]
test edx, edx
je 0x4c2c0a
mov edi, dword [esp + 0x94]
test edi, edi
je 0x4c2c0a
test ebp, ebp
mov dword [esp + 0x18], 0
je 0x4c2267
cmp dword [ebp], 0
je 0x4c2267
lea eax, [esp + 0x1c]
mov ecx, ebp
push eax
call fcn.004bf2b0
mov ecx, dword [eax]
mov eax, dword [esp + 0x1c]
test eax, eax
mov dword [esp + 0x18], ecx
je 0x4c223a
mov ecx, dword [eax + 0x24]
dec ecx
mov dword [eax + 0x24], ecx
mov ecx, dword [esp + 0x1c]
mov eax, dword [ecx + 0x24]
test eax, eax
jg 0x4c223a
test ecx, ecx
je 0x4c223a
mov edx, dword [ecx]
push 1
call dword [edx]
add ebp, 4
mov edi, dword [esp + 0x94]
mov eax, dword [ebp]
mov dword [esp + 0x64], eax
mov ecx, dword [ebp + 4]
mov dword [esp + 0x68], ecx
mov edx, dword [ebp + 8]
mov dword [esp + 0x6c], edx
mov edx, dword [esp + 0x90]
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x70], eax
mov eax, dword [ebx + 0xc]
cmp eax, 8
jne 0x4c22e3
mov ecx, dword [esi + 0x10]
test ecx, ecx
jne 0x4c22e3
mov eax, dword [esp + 0x18]
test eax, eax
je 0x4c22be
mov eax, dword [esp + 0x8c]
mov ebp, dword [esp + 0x68]
mov ecx, eax
push 0
sub ecx, ebp
mov ebp, dword [esp + 0x68]
push 0
push ecx
mov ecx, dword [esp + 0x94]
mov esi, ecx
sub esi, ebp
push esi
mov esi, dword [esp + 0x28]
push 0xffffffffffffffff
push esi
push edi
push edx
push eax
push ecx
mov ecx, ebx
call fcn.004c4040
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x74
ret 0x24
mov eax, dword [esp + 0x88]
push 0xffffffffffffffff
push edi
push edx
mov edx, dword [esp + 0x98]
mov ecx, ebx
push edx
push eax
call fcn.004c42e0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x74
ret 0x24
cmp eax, 8
mov dword [esp + 0x40], 0
je 0x4c2354
cmp dword [esi + 0xc], 0x18
jge 0x4c2354
mov ecx, dword [esp + 0xa0]
mov eax, dword [esp + 0x9c]
mov dword [esp + 0x78], ecx
add edi, ecx
lea ecx, [esp + 0x74]
mov dword [esp + 0x74], eax
add edx, eax
xor eax, eax
push ecx
push 0x18
mov ecx, esi
mov dword [esp + 0x84], edx
mov dword [esp + 0x88], edi
mov dword [esp + 0xa8], eax
mov dword [esp + 0xa4], eax
call fcn.004e67f0
mov edi, dword [esp + 0x94]
mov esi, eax
mov dword [esp + 0x98], esi
mov dword [esp + 0x40], 1
mov eax, dword [ebx + 0xc]
cmp eax, 8
jne 0x4c2366
mov dword [esp + 0x20], 0x10
jmp 0x4c23a4
mov ecx, dword [esi + 0x10]
xor edx, edx
cmp ecx, 2
mov ecx, dword [ebx + 0x10]
setne dl
sub ecx, 2
neg ecx
sbb ecx, ecx
and ecx, 2
add edx, ecx
mov ecx, dword [esp + 0x18]
neg ecx
sbb ecx, ecx
and ecx, 8
add edx, ecx
mov ecx, dword [esp + 0xa4]
neg ecx
sbb ecx, ecx
and ecx, 0xfffffffc
add ecx, 4
add edx, ecx
mov dword [esp + 0x20], edx
cdq
and edx, 7
xor ebp, ebp
add eax, edx
mov dword [esp + 0x3c], ebp
sar eax, 3
mov dword [esp + 0x14], eax
mov eax, dword [esi + 0xc]
cdq
and edx, 7
add eax, edx
sar eax, 3
test edi, edi
mov dword [esp + 0x10], eax
jle 0x4c2bf6
jmp 0x4c23d5
mov ebx, dword [esp + 0x44]
mov edx, dword [esp + 0x8c]
mov eax, dword [esp + 0x14]
imul eax, dword [esp + 0x88]
lea edi, [edx + ebp]
mov edx, dword [esi]
imul edi, dword [ebx + 0x14]
add edi, eax
mov eax, dword [ebx + 0x1c]
add edi, eax
mov eax, dword [esp + 0xa0]
lea ecx, [eax + ebp]
push ecx
mov ecx, esi
call dword [edx + 8]
mov edx, dword [esp + 0x10]
xor ecx, ecx
imul edx, dword [esp + 0x9c]
add eax, edx
mov edx, dword [esp + 0x18]
test edx, edx
je 0x4c244d
mov edx, dword [esp + 0x68]
mov ecx, ebp
mov ebp, dword [esp + 0x8c]
sub ecx, edx
mov edx, dword [esp + 0x18]
add ecx, ebp
mov esi, dword [esp + 0x64]
imul ecx, dword [edx + 0x14]
mov ebx, dword [edx + 0x1c]
mov edx, dword [esp + 0x88]
add ecx, ebx
sub ecx, esi
add ecx, edx
mov edx, dword [esp + 0x20]
cmp edx, 0x10
ja case.default.0x4c245a
jmp dword [edx*4 + 0x4c2c14]
mov edx, dword [esp + 0x90]
push ecx
mov ecx, dword [esp + 0xa8]
push ecx
push edx
push eax
push edi
call fcn.004c1d20
add esp, 0x14
jmp case.default.0x4c245a
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0xa4]
push ecx
mov ecx, dword [esp + 0x94]
push edx
push ecx
push eax
push edi
call fcn.004c1f80
add esp, 0x14
jmp case.default.0x4c245a
mov edx, dword [esp + 0x14]
mov ebx, eax
mov eax, dword [esp + 0x90]
mov esi, ecx
add edx, 0xfffffffd
mov dword [esp + 0x2c], esi
test eax, eax
mov dword [esp + 0x4c], edx
jle case.default.0x4c245a
mov dword [esp + 0x30], eax
test esi, esi
je 0x4c24f9
xor ecx, ecx
xor eax, eax
mov cl, byte [ebx + 3]
mov al, byte [esi]
imul ecx, eax
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
inc esi
mov byte [esp + 0x24], dl
mov dword [esp + 0x2c], esi
jmp 0x4c2500
mov dl, byte [ebx + 3]
mov byte [esp + 0x24], dl
test dl, dl
jne 0x4c2512
mov ecx, dword [esp + 0x14]
add edi, ecx
add ebx, 4
jmp 0x4c25f3
mov ebp, dword [esp + 0x24]
mov eax, 0xff
and ebp, 0xff
mov dword [esp + 0x28], 3
sub eax, ebp
mov dword [esp + 0x38], ebp
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0xa4]
xor edx, edx
mov dl, byte [edi]
cmp eax, 1
mov esi, edx
jne 0x4c2561
xor ecx, ecx
mov eax, 0x80808081
mov cl, byte [ebx]
imul ecx, esi
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
jmp 0x4c25b4
cmp eax, 2
jne 0x4c258e
xor ecx, ecx
mov eax, 0x80808081
mov cl, byte [ebx]
mov ebp, ecx
imul ebp, esi
imul ebp
add edx, ebp
mov ebp, dword [esp + 0x38]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
sub ecx, edx
add ecx, esi
mov edx, ecx
jmp 0x4c25b4
cmp eax, 3
jne 0x4c259f
xor edx, edx
mov dl, byte [ebx]
cmp edx, esi
jl 0x4c25b4
mov edx, esi
jmp 0x4c25b4
cmp eax, 4
jne 0x4c25b0
xor edx, edx
mov dl, byte [ebx]
cmp edx, esi
jg 0x4c25b4
mov edx, esi
jmp 0x4c25b4
xor edx, edx
mov dl, byte [ebx]
mov ecx, dword [esp + 0x48]
mov eax, ebp
imul ecx, esi
imul eax, edx
add ecx, eax
mov eax, 0x80808081
imul ecx
add edx, ecx
mov eax, dword [esp + 0x28]
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
mov byte [edi], dl
inc edi
inc ebx
dec eax
mov dword [esp + 0x28], eax
jne 0x4c2533
mov ecx, dword [esp + 0x4c]
mov esi, dword [esp + 0x2c]
add edi, ecx
inc ebx
mov eax, dword [esp + 0x30]
dec eax
mov dword [esp + 0x30], eax
jne 0x4c24cb
jmp case.default.0x4c245a
mov edx, dword [esp + 0x14]
mov ebp, eax
mov eax, dword [esp + 0x10]
add edx, 0xfffffffd
add eax, 0xfffffffd
mov dword [esp + 0x4c], edx
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x90]
test eax, eax
jle case.default.0x4c245a
mov esi, dword [esp + 0xa4]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], 3
xor ebx, ebx
xor ecx, ecx
mov bl, byte [edi]
mov cl, byte [ebp]
cmp esi, 1
jne 0x4c2669
imul ecx, ebx
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
mov ecx, edx
jmp 0x4c26a9
cmp esi, 2
jne 0x4c2693
mov esi, ecx
mov eax, 0x80808081
imul esi, ebx
imul esi
add edx, esi
mov esi, dword [esp + 0xa4]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
sub ecx, edx
add ecx, ebx
jmp 0x4c26a9
cmp esi, 3
jne 0x4c269e
cmp ecx, ebx
jl 0x4c26a9
jmp 0x4c26a7
cmp esi, 4
jne 0x4c26a9
cmp ecx, ebx
jg 0x4c26a9
mov ecx, ebx
mov eax, dword [esp + 0x30]
mov byte [edi], cl
inc edi
inc ebp
dec eax
mov dword [esp + 0x30], eax
jne 0x4c2641
mov edx, dword [esp + 0x4c]
mov ecx, dword [esp + 0x48]
mov eax, dword [esp + 0x2c]
add edi, edx
add ebp, ecx
dec eax
mov dword [esp + 0x2c], eax
jne 0x4c2639
jmp case.default.0x4c245a
mov ecx, dword [esp + 0x90]
test ecx, ecx
jle case.default.0x4c245a
mov esi, ecx
mov ecx, dword [esp + 0x10]
cmp ecx, 4
jne 0x4c26fc
mov edx, dword [eax]
or edx, 0xff000000
jmp 0x4c271a
xor edx, edx
xor ebx, ebx
mov dl, byte [eax + 2]
mov bl, byte [eax + 1]
or edx, 0xffffff00
shl edx, 8
or edx, ebx
xor ebx, ebx
mov bl, byte [eax]
shl edx, 8
or edx, ebx
mov dword [edi], edx
add edi, 4
add eax, ecx
dec esi
jne 0x4c26ed
jmp case.default.0x4c245a
mov ebp, eax
mov eax, dword [esp + 0x14]
add eax, 0xfffffffd
mov ebx, ecx
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x90]
test eax, eax
mov dword [esp + 0x28], ebx
mov esi, edi
jle case.default.0x4c245a
mov dword [esp + 0x38], eax
test ebx, ebx
je 0x4c277f
xor ecx, ecx
xor edx, edx
mov cl, byte [ebp + 3]
mov dl, byte [ebx]
imul ecx, edx
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
inc ebx
mov byte [esp + 0x34], dl
mov dword [esp + 0x28], ebx
jmp 0x4c2786
mov dl, byte [ebp + 3]
mov byte [esp + 0x34], dl
cmp dl, 0xff
jne 0x4c27ab
mov cl, byte [ebp]
mov byte [esi], cl
mov dl, byte [ebp + 1]
inc esi
inc ebp
mov ecx, dword [esp + 0x2c]
mov byte [esi], dl
mov al, byte [ebp + 1]
inc esi
inc ebp
add ebp, 2
mov byte [esi], al
lea esi, [esi + ecx + 1]
jmp 0x4c2811
test dl, dl
jne 0x4c27ba
mov ecx, dword [esp + 0x14]
add esi, ecx
add ebp, 4
jmp 0x4c2811
mov edi, dword [esp + 0x34]
mov ebx, 0xff
and edi, 0xff
mov dword [esp + 0x30], 3
sub ebx, edi
xor ecx, ecx
xor edx, edx
mov cl, byte [esi]
mov dl, byte [ebp]
imul ecx, ebx
imul edx, edi
add ecx, edx
mov eax, 0x80808081
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, dword [esp + 0x30]
mov byte [esi], dl
inc esi
inc ebp
dec eax
mov dword [esp + 0x30], eax
jne 0x4c27d3
mov ecx, dword [esp + 0x2c]
mov ebx, dword [esp + 0x28]
add esi, ecx
inc ebp
mov eax, dword [esp + 0x38]
dec eax
mov dword [esp + 0x38], eax
jne 0x4c2751
jmp case.default.0x4c245a
mov esi, dword [esp + 0x14]
mov ebp, dword [esp + 0x10]
cmp esi, ebp
jne 0x4c2850
mov ecx, esi
mov esi, eax
imul ecx, dword [esp + 0x90]
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp case.default.0x4c245a
mov ecx, dword [esp + 0x90]
test ecx, ecx
jle case.default.0x4c245a
add edi, 2
add eax, 2
mov dl, byte [eax - 2]
mov byte [edi - 2], dl
mov dl, byte [eax - 1]
mov byte [edi - 1], dl
mov dl, byte [eax]
mov byte [edi], dl
add edi, esi
add eax, ebp
dec ecx
jne 0x4c2865
jmp case.default.0x4c245a
mov ebp, eax
mov eax, dword [esp + 0x10]
add eax, 0xfffffffd
mov edx, ecx
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x90]
test eax, eax
mov esi, edi
jle case.default.0x4c245a
mov dword [esp + 0x28], eax
mov bl, byte [esi + 3]
xor ecx, ecx
mov cl, byte [edx]
inc edx
test bl, bl
mov dword [esp + 0x5c], edx
mov byte [esp + 0x50], bl
jne 0x4c28dc
mov cl, byte [ebp]
mov byte [esi], cl
mov al, byte [ebp + 1]
inc esi
inc ebp
mov byte [esi], al
mov cl, byte [ebp + 1]
mov eax, dword [esp + 0x2c]
inc esi
inc ebp
mov byte [esi], cl
add esi, 2
lea ebp, [eax + ebp + 1]
jmp 0x4c2a39
test ecx, ecx
jne 0x4c28ee
mov eax, dword [esp + 0x10]
add esi, 4
add ebp, eax
jmp 0x4c2a39
mov eax, dword [esp + 0x50]
mov edi, ecx
and eax, 0xff
mov dword [esp + 0x30], 3
imul edi, eax
mov dword [esp + 0x38], eax
mov eax, 0x80808081
imul edi
add edx, edi
mov edi, dword [esp + 0x38]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, ecx
sub bl, dl
add bl, cl
shl eax, 8
mov byte [esp + 0x54], bl
sub eax, ecx
mov ecx, dword [esp + 0x54]
mov byte [esi + 3], bl
cdq
and ecx, 0xff
mov ebx, dword [esp + 0xa4]
idiv ecx
mov ecx, 0xff
sub ecx, edi
mov dword [esp + 0x4c], ecx
mov ecx, 0xff
sub ecx, eax
mov dword [esp + 0x48], eax
mov dword [esp + 0x58], ecx
xor ecx, ecx
cmp ebx, 1
mov cl, byte [ebp]
jne 0x4c2989
xor edx, edx
mov eax, 0x80808081
mov dl, byte [esi]
mov edi, edx
imul edi, ecx
imul edi
mov eax, edx
add eax, edi
sar eax, 7
mov edx, eax
shr edx, 0x1f
add eax, edx
jmp 0x4c29d7
cmp ebx, 2
jne 0x4c29b9
xor ebx, ebx
mov edi, ecx
mov bl, byte [esi]
mov eax, 0x80808081
imul edi, ebx
imul edi
add edx, edi
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, ecx
sub eax, edx
add eax, ebx
mov ebx, dword [esp + 0xa4]
jmp 0x4c29d7
cmp ebx, 3
jne 0x4c29c8
xor eax, eax
mov al, byte [esi]
cmp ecx, eax
jl 0x4c29d5
jmp 0x4c29d7
cmp ebx, 4
jne 0x4c29d5
xor eax, eax
mov al, byte [esi]
cmp ecx, eax
jle 0x4c29d7
mov eax, ecx
imul ecx, dword [esp + 0x4c]
imul eax, dword [esp + 0x38]
add ecx, eax
mov eax, 0x80808081
imul ecx
add edx, ecx
mov eax, 0x80808081
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
mov ecx, edx
xor edx, edx
mov dl, byte [esi]
imul ecx, dword [esp + 0x48]
imul edx, dword [esp + 0x58]
add ecx, edx
imul ecx
add edx, ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, dword [esp + 0x30]
mov byte [esi], dl
inc esi
inc ebp
dec eax
mov dword [esp + 0x30], eax
jne 0x4c295f
mov eax, dword [esp + 0x2c]
mov edx, dword [esp + 0x5c]
inc esi
add ebp, eax
mov eax, dword [esp + 0x28]
dec eax
mov dword [esp + 0x28], eax
jne 0x4c28a5
jmp case.default.0x4c245a
mov edx, dword [esp + 0x14]
mov ebp, eax
mov eax, dword [esp + 0x10]
add edx, 0xfffffffd
add eax, 0xfffffffd
mov dword [esp + 0x4c], edx
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x90]
test eax, eax
jle case.default.0x4c245a
mov dword [esp + 0x30], eax
mov al, byte [ecx]
inc ecx
test al, al
mov byte [esp + 0x60], al
mov dword [esp + 0x2c], ecx
jne 0x4c2a98
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
add edi, edx
add ebp, eax
jmp 0x4c2b7a
mov eax, dword [esp + 0x60]
mov ebx, dword [esp + 0xa4]
and eax, 0xff
mov ecx, 0xff
sub ecx, eax
mov dword [esp + 0x58], eax
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x38], 3
xor ecx, ecx
mov cl, byte [ebp]
mov esi, ecx
xor ecx, ecx
mov cl, byte [edi]
cmp ebx, 1
jne 0x4c2af2
mov ebx, ecx
mov eax, 0x80808081
imul ebx, esi
imul ebx
mov eax, edx
add eax, ebx
mov ebx, dword [esp + 0xa4]
sar eax, 7
mov edx, eax
shr edx, 0x1f
add eax, edx
jmp 0x4c2b38
cmp ebx, 2
jne 0x4c2b1e
mov ebx, ecx
mov eax, 0x80808081
imul ebx, esi
imul ebx
add edx, ebx
mov ebx, dword [esp + 0xa4]
sar edx, 7
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, ecx
sub eax, edx
add eax, esi
jmp 0x4c2b38
cmp ebx, 3
jne 0x4c2b2b
cmp esi, ecx
jl 0x4c2b36
mov eax, ecx
jmp 0x4c2b38
cmp ebx, 4
jne 0x4c2b36
cmp esi, ecx
mov eax, ecx
jle 0x4c2b38
mov eax, esi
imul ecx, dword [esp + 0x5c]
imul eax, dword [esp + 0x58]
add ecx, eax
mov eax, 0x80808081
imul ecx
add edx, ecx
mov eax, dword [esp + 0x38]
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
mov byte [edi], dl
inc edi
inc ebp
dec eax
mov dword [esp + 0x38], eax
jne 0x4c2abf
mov ecx, dword [esp + 0x4c]
mov eax, dword [esp + 0x48]
add edi, ecx
mov ecx, dword [esp + 0x2c]
add ebp, eax
mov eax, dword [esp + 0x30]
dec eax
mov dword [esp + 0x30], eax
jne 0x4c2a78
jmp case.default.0x4c245a
mov edx, dword [esp + 0x10]
push ecx
mov ecx, dword [esp + 0x94]
push edx
push ecx
push eax
push edi
call fcn.004c2c60
add esp, 0x14
jmp case.default.0x4c245a
mov edx, dword [esp + 0x10]
push ecx
mov ecx, dword [esp + 0x18]
push edx
mov edx, dword [esp + 0x98]
push ecx
push edx
push eax
push edi
call fcn.004c2d70
add esp, 0x18
jmp case.default.0x4c245a
push ecx
mov ecx, dword [esp + 0x94]
push ecx
push eax
push edi
call fcn.004c20e0
add esp, 0x10
mov ebp, dword [esp + 0x3c]
mov eax, dword [esp + 0x94]
mov esi, dword [esp + 0x98]
inc ebp
cmp ebp, eax
mov dword [esp + 0x3c], ebp
jl 0x4c23d1
mov eax, dword [esp + 0x40]
test eax, eax
je 0x4c2c0a
test esi, esi
je 0x4c2c0a
mov edx, dword [esi]
push 1
mov ecx, esi
call dword [edx]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x74
ret 0x24