Function at 0x4c20d0
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.004b3c20
mov edx, dword [esp + 0x90]
test edx, edx
je 0x4c2b5a
mov edi, dword [esp + 0x94]
test edi, edi
je 0x4c2b5a
test ebp, ebp
mov dword [esp + 0x18], 0
je 0x4c21b7
cmp dword [ebp], 0
je 0x4c21b7
lea eax, [esp + 0x1c]
mov ecx, ebp
push eax
call fcn.004bfa70
mov ecx, dword [eax]
mov eax, dword [esp + 0x1c]
test eax, eax
mov dword [esp + 0x18], ecx
je 0x4c218a
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 0x4c218a
test ecx, ecx
je 0x4c218a
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 0x4c2233
mov ecx, dword [esi + 0x10]
test ecx, ecx
jne 0x4c2233
mov eax, dword [esp + 0x18]
test eax, eax
je 0x4c220e
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.004c3f90
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.004c4230
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x74
ret 0x24
cmp eax, 8
mov dword [esp + 0x40], 0
je 0x4c22a4
cmp dword [esi + 0xc], 0x18
jge 0x4c22a4
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.004e6c60
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 0x4c22b6
mov dword [esp + 0x20], 0x10
jmp 0x4c22f4
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 0x4c2b46
jmp 0x4c2325
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 0x4c239d
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.0x4c23aa
jmp dword [edx*4 + 0x4c2b64]
mov edx, dword [esp + 0x90]
push ecx
mov ecx, dword [esp + 0xa8]
push ecx
push edx
push eax
push edi
call fcn.004c1c70
add esp, 0x14
jmp case.default.0x4c23aa
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.004c1ed0
add esp, 0x14
jmp case.default.0x4c23aa
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.0x4c23aa
mov dword [esp + 0x30], eax
test esi, esi
je 0x4c2449
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 0x4c2450
mov dl, byte [ebx + 3]
mov byte [esp + 0x24], dl
test dl, dl
jne 0x4c2462
mov ecx, dword [esp + 0x14]
add edi, ecx
add ebx, 4
jmp 0x4c2543
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 0x4c24b1
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 0x4c2504
cmp eax, 2
jne 0x4c24de
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 0x4c2504
cmp eax, 3
jne 0x4c24ef
xor edx, edx
mov dl, byte [ebx]
cmp edx, esi
jl 0x4c2504
mov edx, esi
jmp 0x4c2504
cmp eax, 4
jne 0x4c2500
xor edx, edx
mov dl, byte [ebx]
cmp edx, esi
jg 0x4c2504
mov edx, esi
jmp 0x4c2504
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 0x4c2483
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 0x4c241b
jmp case.default.0x4c23aa
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.0x4c23aa
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 0x4c25b9
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 0x4c25f9
cmp esi, 2
jne 0x4c25e3
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 0x4c25f9
cmp esi, 3
jne 0x4c25ee
cmp ecx, ebx
jl 0x4c25f9
jmp 0x4c25f7
cmp esi, 4
jne 0x4c25f9
cmp ecx, ebx
jg 0x4c25f9
mov ecx, ebx
mov eax, dword [esp + 0x30]
mov byte [edi], cl
inc edi
inc ebp
dec eax
mov dword [esp + 0x30], eax
jne 0x4c2591
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 0x4c2589
jmp case.default.0x4c23aa
mov ecx, dword [esp + 0x90]
test ecx, ecx
jle case.default.0x4c23aa
mov esi, ecx
mov ecx, dword [esp + 0x10]
cmp ecx, 4
jne 0x4c264c
mov edx, dword [eax]
or edx, 0xff000000
jmp 0x4c266a
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 0x4c263d
jmp case.default.0x4c23aa
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.0x4c23aa
mov dword [esp + 0x38], eax
test ebx, ebx
je 0x4c26cf
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 0x4c26d6
mov dl, byte [ebp + 3]
mov byte [esp + 0x34], dl
cmp dl, 0xff
jne 0x4c26fb
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 0x4c2761
test dl, dl
jne 0x4c270a
mov ecx, dword [esp + 0x14]
add esi, ecx
add ebp, 4
jmp 0x4c2761
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 0x4c2723
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 0x4c26a1
jmp case.default.0x4c23aa
mov esi, dword [esp + 0x14]
mov ebp, dword [esp + 0x10]
cmp esi, ebp
jne 0x4c27a0
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.0x4c23aa
mov ecx, dword [esp + 0x90]
test ecx, ecx
jle case.default.0x4c23aa
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 0x4c27b5
jmp case.default.0x4c23aa
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.0x4c23aa
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 0x4c282c
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 0x4c2989
test ecx, ecx
jne 0x4c283e
mov eax, dword [esp + 0x10]
add esi, 4
add ebp, eax
jmp 0x4c2989
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 0x4c28d9
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 0x4c2927
cmp ebx, 2
jne 0x4c2909
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 0x4c2927
cmp ebx, 3
jne 0x4c2918
xor eax, eax
mov al, byte [esi]
cmp ecx, eax
jl 0x4c2925
jmp 0x4c2927
cmp ebx, 4
jne 0x4c2925
xor eax, eax
mov al, byte [esi]
cmp ecx, eax
jle 0x4c2927
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 0x4c28af
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 0x4c27f5
jmp case.default.0x4c23aa
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.0x4c23aa
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 0x4c29e8
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
add edi, edx
add ebp, eax
jmp 0x4c2aca
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 0x4c2a42
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 0x4c2a88
cmp ebx, 2
jne 0x4c2a6e
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 0x4c2a88
cmp ebx, 3
jne 0x4c2a7b
cmp esi, ecx
jl 0x4c2a86
mov eax, ecx
jmp 0x4c2a88
cmp ebx, 4
jne 0x4c2a86
cmp esi, ecx
mov eax, ecx
jle 0x4c2a88
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 0x4c2a0f
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 0x4c29c8
jmp case.default.0x4c23aa
mov edx, dword [esp + 0x10]
push ecx
mov ecx, dword [esp + 0x94]
push edx
push ecx
push eax
push edi
call fcn.004c2bb0
add esp, 0x14
jmp case.default.0x4c23aa
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.004c2cc0
add esp, 0x18
jmp case.default.0x4c23aa
push ecx
mov ecx, dword [esp + 0x94]
push ecx
push eax
push edi
call fcn.004c2030
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 0x4c2321
mov eax, dword [esp + 0x40]
test eax, eax
je 0x4c2b5a
test esi, esi
je 0x4c2b5a
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